Skip to content

Commit 88be15a

Browse files
panny060XanClic
authored andcommitted
throttle-groups: fix memory leak in throttle_group_set_limit:
This avoid a memory leak when qom-set is called to set throttle_group limits, here is an easy way to reproduce: 1. run qemu-iotests as follow and check the result with asan: ./check -qcow2 184 Following is the asan output backtrack: Direct leak of 912 byte(s) in 3 object(s) allocated from: #0 0xffff8d7ab3c3 in __interceptor_calloc (/lib64/libasan.so.4+0xd33c3) #1 0xffff8d4c31cb in g_malloc0 (/lib64/libglib-2.0.so.0+0x571cb) #2 0x190c857 in qobject_input_start_struct /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qapi/qobject-input-visitor.c:295 #3 0x19070df in visit_start_struct /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qapi/qapi-visit-core.c:49 #4 0x1948b87 in visit_type_ThrottleLimits qapi/qapi-visit-block-core.c:3759 #5 0x17e4aa3 in throttle_group_set_limits /mnt/sdc/qemu-master/qemu-4.2.0-rc0/block/throttle-groups.c:900 #6 0x1650eff in object_property_set /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/object.c:1272 #7 0x1658517 in object_property_set_qobject /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/qom-qobject.c:26 #8 0x15880bb in qmp_qom_set /mnt/sdc/qemu-master/qemu-4.2.0-rc0/qom/qom-qmp-cmds.c:74 #9 0x157e3e3 in qmp_marshal_qom_set qapi/qapi-commands-qom.c:154 Reported-by: Euler Robot <[email protected]> Signed-off-by: PanNengyuan <[email protected]> Message-id: [email protected] Signed-off-by: Max Reitz <[email protected]>
1 parent 9592fe4 commit 88be15a

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

block/throttle-groups.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -893,8 +893,7 @@ static void throttle_group_set_limits(Object *obj, Visitor *v,
893893
{
894894
ThrottleGroup *tg = THROTTLE_GROUP(obj);
895895
ThrottleConfig cfg;
896-
ThrottleLimits arg = { 0 };
897-
ThrottleLimits *argp = &arg;
896+
ThrottleLimits *argp;
898897
Error *local_err = NULL;
899898

900899
visit_type_ThrottleLimits(v, name, &argp, &local_err);
@@ -912,6 +911,7 @@ static void throttle_group_set_limits(Object *obj, Visitor *v,
912911
unlock:
913912
qemu_mutex_unlock(&tg->lock);
914913
ret:
914+
qapi_free_ThrottleLimits(argp);
915915
error_propagate(errp, local_err);
916916
return;
917917
}

0 commit comments

Comments
 (0)