69 lines
2.1 KiB
Diff
69 lines
2.1 KiB
Diff
|
|
From 37e47eef108920f6afad0c575bc658520bf5f3e2 Mon Sep 17 00:00:00 2001
|
||
|
|
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Mon, 25 Mar 2024 08:43:30 +0000
|
||
|
|
Subject: [PATCH] contrib/vhost-user-blk: Clean up deallocation of VuVirtqElement
|
||
|
|
mainline inclusion
|
||
|
|
commit a32086de4919b9affb2ab2d0112d400eaf89f607
|
||
|
|
category: bugfix
|
||
|
|
|
||
|
|
---------------------------------------------------------------
|
||
|
|
|
||
|
|
We allocate VuVirtqElement with g_malloc() in
|
||
|
|
virtqueue_alloc_element(), but free it with free() in
|
||
|
|
vhost-user-blk.c. Harmless, but use g_free() anyway.
|
||
|
|
|
||
|
|
One of the calls is guarded by a "not null" condition. Useless,
|
||
|
|
because it cannot be null (it's dereferenced right before), and even
|
||
|
|
it it could be, free() and g_free() do the right thing. Drop the
|
||
|
|
conditional.
|
||
|
|
|
||
|
|
Fixes: Coverity CID 1490290
|
||
|
|
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
||
|
|
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
|
||
|
|
Acked-by: Michael S. Tsirkin <mst@redhat.com>
|
||
|
|
Message-Id: <20220630085219.1305519-1-armbru@redhat.com>
|
||
|
|
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
|
||
|
|
|
||
|
|
Signed-off-by: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
contrib/vhost-user-blk/vhost-user-blk.c | 9 +++------
|
||
|
|
1 file changed, 3 insertions(+), 6 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/contrib/vhost-user-blk/vhost-user-blk.c b/contrib/vhost-user-blk/vhost-user-blk.c
|
||
|
|
index d14b2896bf..91c4462659 100644
|
||
|
|
--- a/contrib/vhost-user-blk/vhost-user-blk.c
|
||
|
|
+++ b/contrib/vhost-user-blk/vhost-user-blk.c
|
||
|
|
@@ -106,10 +106,7 @@ static void vub_req_complete(VubReq *req)
|
||
|
|
req->size + 1);
|
||
|
|
vu_queue_notify(vu_dev, req->vq);
|
||
|
|
|
||
|
|
- if (req->elem) {
|
||
|
|
- free(req->elem);
|
||
|
|
- }
|
||
|
|
-
|
||
|
|
+ g_free(req->elem);
|
||
|
|
g_free(req);
|
||
|
|
}
|
||
|
|
|
||
|
|
@@ -243,7 +240,7 @@ static int vub_virtio_process_req(VubDev *vdev_blk,
|
||
|
|
/* refer to hw/block/virtio_blk.c */
|
||
|
|
if (elem->out_num < 1 || elem->in_num < 1) {
|
||
|
|
fprintf(stderr, "virtio-blk request missing headers\n");
|
||
|
|
- free(elem);
|
||
|
|
+ g_free(elem);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
@@ -325,7 +322,7 @@ static int vub_virtio_process_req(VubDev *vdev_blk,
|
||
|
|
return 0;
|
||
|
|
|
||
|
|
err:
|
||
|
|
- free(elem);
|
||
|
|
+ g_free(elem);
|
||
|
|
g_free(req);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|