-----邮件原件----- 发件人: dev [mailto:[email protected]] 代表 Flavio Leitner 发送时间: 2020年10月27日 21:08 收件人: Ilya Maximets <[email protected]> 抄送: [email protected]; [email protected]; [email protected] 主题: Re: [ovs-dev] [PATCH] netdev-dpdk: fix incorrect shinfo initialization
On Tue, Oct 27, 2020 at 01:47:22PM +0100, Ilya Maximets wrote: > On 10/27/20 12:34 PM, Flavio Leitner wrote: > > On Wed, Oct 14, 2020 at 03:22:48PM +0800, [email protected] wrote: > >> From: Yi Yang <[email protected]> > >> > >> shinfo is used to store reference counter and free callback of an > >> external buffer, but it is stored in mbuf if the mbuf has tailroom > >> for it. > >> > >> This is wrong because the mbuf (and its data) can be freed before > >> the external buffer, for example: > >> > >> pkt2 = rte_pktmbuf_alloc(mp); > >> rte_pktmbuf_attach(pkt2, pkt); > >> rte_pktmbuf_free(pkt); > > How is that possible with OVS? Right now OVS doesn't support > multi-segement mbufs and will, likely, not support them in a near > future because it requires changes all other the codebase. > > Is there any other scenario that could lead to issues with current OVS > implementation? This is copying packets. The shinfo is allocated in the mbuf of the first packet which could be deleted without any references to the external buffer still using it. Fbl [Yi Yang] Yes, this is not related with multi-segment mbuf, dpdk interfaces to system interfaces communication will use it if the packet size is greater than mtu size, i.e. TSO case from veth/tap to dpdk/vhost and backward will use it, this is a wrong use of shinfo, the same fix (which is used by virtio/vhost driver)has been merged into dpdk branch. [Yi Yang] > > >> > >> After this, pkt is freed, but it still contains shinfo, which is > >> referenced by pkt2. > >> > >> Fix this by always storing shinfo at the tail of external buffer. > >> > >> Fixes: 29cf9c1b3b9c ("userspace: Add TCP Segmentation Offload > >> support") > >> Co-authored-by: Olivier Matz <[email protected]> > >> Signed-off-by: Olivier Matz <[email protected]> > >> Signed-off-by: Yi Yang <[email protected]> > >> --- > > > > Acked-by: Flavio Leitner <[email protected]> > > > > Thanks Yi, > > fbl > > > -- fbl _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
