vhost-user-scsi: Fix memleaks in vus_proc_req()
The 'elem' is allocated memory in vu_queue_pop(), and its memory should be freed in all error branches after vu_queue_pop(). In addition, in order to free the 'elem' memory outside of while(1) loop, move the definition of 'elem' to the beginning of vus_proc_req(). Reported-by: Euler Robot <euler.robot@huawei.com> Signed-off-by: Alex Chen <alex.chen@huawei.com> Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com> Message-Id: <20201125013055.34147-1-alex.chen@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
553032db17
commit
81ee17aa46
@ -232,6 +232,7 @@ static void vus_proc_req(VuDev *vu_dev, int idx)
|
||||
VugDev *gdev;
|
||||
VusDev *vdev_scsi;
|
||||
VuVirtq *vq;
|
||||
VuVirtqElement *elem = NULL;
|
||||
|
||||
assert(vu_dev);
|
||||
|
||||
@ -248,7 +249,6 @@ static void vus_proc_req(VuDev *vu_dev, int idx)
|
||||
g_debug("Got kicked on vq[%d]@%p", idx, vq);
|
||||
|
||||
while (1) {
|
||||
VuVirtqElement *elem;
|
||||
VirtIOSCSICmdReq *req;
|
||||
VirtIOSCSICmdResp *rsp;
|
||||
|
||||
@ -288,6 +288,7 @@ static void vus_proc_req(VuDev *vu_dev, int idx)
|
||||
|
||||
free(elem);
|
||||
}
|
||||
free(elem);
|
||||
}
|
||||
|
||||
static void vus_queue_set_started(VuDev *vu_dev, int idx, bool started)
|
||||
|
Loading…
Reference in New Issue
Block a user