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.
Maybe Matching 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