[PATCH] virtio_ring: Fix potential mem leak in virtqueue_add_indirect_packed

Jason Wang
Tue, 12 Mar 2019 08:01:05 -0000

On 2019/3/12 ??3:06, Yue Haibing wrote:
> From: YueHaibing <yuehaibing at huawei.com>
>
> 'desc' should be freed before leaving from err handing path.
>
> Fixes: 1ce9e6055fa0 ("virtio_ring: introduce packed ring
support")
> Signed-off-by: YueHaibing <yuehaibing at huawei.com>
> ---
>   drivers/virtio/virtio_ring.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index a0b07c3..9d95d9c 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -991,6 +991,7 @@ static int virtqueue_add_indirect_packed(struct
vring_virtqueue *vq,
>
>   	if (unlikely(vq->vq.num_free < 1)) {
>   		pr_debug("Can't add buf len 1 - avail = 0\n");
> +		kfree(desc);
>   		END_USE(vq);
>   		return -ENOSPC;
>   	}


Or you can move the check before the allocation.

Acked-by: Jason Wang <jasowang at redhat.com>

Please cc stable next time.

Thanks