| #
fa552ee2 |
| 27-Nov-2020 |
Jianfeng Tan <[email protected]> |
fix use after free issue in mbuf free
Two kinds of mbuf are used in f-stack: freebsd mbuf and dpdk mbuf.
freebsd mbufs are metadata used in freebsd stack, and their data pointers (m_data) point to
fix use after free issue in mbuf free
Two kinds of mbuf are used in f-stack: freebsd mbuf and dpdk mbuf.
freebsd mbufs are metadata used in freebsd stack, and their data pointers (m_data) point to dpdk mbuf's data (buf_addr). And they have their own chain, like this:
bsd_mbuf1 -> bsd_mbuf2 -> bsd_mbuf3 \ \ \ dpdk_mbuf1 -> dpdk_mbuf2 -> dpdk_mbuf3
Considering the map relationship,
- m_freem() is corresponding to rte_pktmbuf_free(), is to free the whole chain of mbufs. - m_free() is corresponding to rte_pktmbuf_free_seg(), is to free the specified mbuf segment.
The current implementation in f-stack uses rte_pktmbuf_free() for m_free(). This leads to mbufs, which are still in use, be freed unexpectedly. For example, if the bsd_mbuf1 is trimed into zero length, bsd will invoke m_free() to free the specified segment, however, the whole mbuf chain is freed by calling rte_pktmbuf_free().
#0 rte_pktmbuf_free (m=0x22006fb480) #1 in ff_dpdk_pktmbuf_free (m=0x22006fb480) #2 in ff_mbuf_ext_free (m=0x7ffff7f82800, arg1=0x22006fb480, arg2=0x0) #3 in mb_free_ext (m=0x7ffff7f82800) #4 in m_free (m=0x7ffff7f82800) #5 in sbcompress (sb=, m=0x7ffff7f82800, n=) #6 in sbappendstream_locked (sb=, m=0x7ffff7f82800, flags=0)
The fix is straightforward. Use the correct API for segment free.
Reported-by: Yong-Hao Zou <[email protected]> Signed-off-by: Jianfeng Tan <[email protected]>
show more ...
|
| #
213fa7b3 |
| 06-May-2017 |
logwang <[email protected]> |
Support RX/TX offload according to HW's capability
RX: VLAN strip, CRC strip, IP/TCP/UDP checksum. TX: IP/TCP/UDP checksum, TSO.
Note that TSO has a problem: when enable TSO, F-Stack is much slower
Support RX/TX offload according to HW's capability
RX: VLAN strip, CRC strip, IP/TCP/UDP checksum. TX: IP/TCP/UDP checksum, TSO.
Note that TSO has a problem: when enable TSO, F-Stack is much slower(Temporarily not resolved). So TSO is disabled by default. Edit config.ini to enable it.
show more ...
|