Re: [PATCH net-next] virtio_net: check virtqueue_add_sgs() return value
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2021-07-09 11:17:57
On Fri, Jul 09, 2021 at 06:21:31PM +0800, wangyunjian wrote:
quoted hunk ↗ jump to hunk
From: Yunjian Wang <redacted> As virtqueue_add_sgs() can fail, we should check the return value. Addresses-Coverity-ID: 1464439 ("Unchecked return value") Signed-off-by: Yunjian Wang <redacted> --- v2: add warn log and remove fix tag --- drivers/net/virtio_net.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index b0b81458ca94..30a0ca2fef1a 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c@@ -1743,6 +1743,7 @@ static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd, { struct scatterlist *sgs[4], hdr, stat; unsigned out_num = 0, tmp; + int ret; /* Caller should know better */ BUG_ON(!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ));@@ -1762,7 +1763,12 @@ static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd, sgs[out_num] = &stat; BUG_ON(out_num + 1 > ARRAY_SIZE(sgs)); - virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC); + ret = virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC); + if (ret < 0) { + dev_warn(&vi->vdev->dev, + "Failed to add sgs for vq: %d\n.", ret);
That's not too clear. Pls make it clear that it's the command vq that failed.
+ return false; + } if (unlikely(!virtqueue_kick(vi->cvq))) return vi->ctrl->status == VIRTIO_NET_OK; -- 2.23.0