Michael S. Tsirkin
2017-Mar-29 12:37 UTC
[PATCH] virtio_net: fix mergeable bufs error handling
On xdp error we try to free head_skb without having initialized it, that's clearly bogus. Fixes: f600b6905015 ("virtio_net: Add XDP support") Cc: John Fastabend <john.fastabend at gmail.com> Signed-off-by: Michael S. Tsirkin <mst at redhat.com> --- drivers/net/virtio_net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 11773d6..e0fb3707 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -570,7 +570,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, u16 num_buf; struct page *page; int offset; - struct sk_buff *head_skb, *curr_skb; + struct sk_buff *head_skb = NULL, *curr_skb; struct bpf_prog *xdp_prog; unsigned int truesize; -- MST
On 2017?03?29? 20:37, Michael S. Tsirkin wrote:> On xdp error we try to free head_skb without having > initialized it, that's clearly bogus. > > Fixes: f600b6905015 ("virtio_net: Add XDP support") > Cc: John Fastabend <john.fastabend at gmail.com> > Signed-off-by: Michael S. Tsirkin <mst at redhat.com> > --- > drivers/net/virtio_net.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 11773d6..e0fb3707 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -570,7 +570,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, > u16 num_buf; > struct page *page; > int offset; > - struct sk_buff *head_skb, *curr_skb; > + struct sk_buff *head_skb = NULL, *curr_skb; > struct bpf_prog *xdp_prog; > unsigned int truesize; >My tree (net.git HEAD is 8f1f7eeb22c16a197159cf7b35d1350695193ead) has: head_skb = NULL; just after the above codes. Thanks
From: "Michael S. Tsirkin" <mst at redhat.com> Date: Wed, 29 Mar 2017 15:37:37 +0300> @@ -570,7 +570,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, > u16 num_buf; > struct page *page; > int offset; > - struct sk_buff *head_skb, *curr_skb; > + struct sk_buff *head_skb = NULL, *curr_skb; > struct bpf_prog *xdp_prog; > unsigned int truesize; >Like Jason, I see the very next line is: head_skb = NULL; so I don't think this is necessary.
Apparently Analagous Threads
- [PATCH] virtio_net: fix mergeable bufs error handling
- [PATCH RFC] virtio_net: fix mergeable bufs error handling
- [PATCH RFC] virtio_net: fix mergeable bufs error handling
- [PATCH net 0/9] several fixups for virtio-net XDP
- [PATCH net 0/9] several fixups for virtio-net XDP