[linux-yocto] [PATCH 4/5] virtio-net: Check the Return Code of skb_to_sgvec()
Daniel Dragomir
daniel.dragomir at windriver.com
Tue May 14 06:23:58 PDT 2019
From: John Jacques <john.jacques at intel.com>
Signed-off-by: John Jacques <john.jacques at intel.com>
---
drivers/net/virtio_net.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 9ecc6ca..6337549 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -550,11 +550,14 @@ static int add_recvbuf_small(struct virtnet_info *vi, struct receive_queue *rq,
hdr = skb_vnet_hdr(skb);
sg_init_table(rq->sg, MAX_SKB_FRAGS + 2);
sg_set_buf(rq->sg, hdr, vi->hdr_len);
- skb_to_sgvec(skb, rq->sg + 1, 0, skb->len);
-
- err = virtqueue_add_inbuf(rq->vq, rq->sg, 2, skb, gfp);
- if (err < 0)
+ err = skb_to_sgvec(skb, rq->sg + 1, 0, skb->len);
+ if (err < 0) {
dev_kfree_skb(skb);
+ } else {
+ err = virtqueue_add_inbuf(rq->vq, rq->sg, 2, skb, gfp);
+ if (err < 0)
+ dev_kfree_skb(skb);
+ }
return err;
}
--
2.7.4
More information about the linux-yocto
mailing list