qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

boot-order-test: fix memleaks in boot-order-test

It's not a big deal, but 'check qtest-ppc/ppc64' runs fail if sanitizers is enabled.
The memory leak stack is as follow:

Direct leak of 128 byte(s) in 4 object(s) allocated from:
#0 0x7f11756f5970 in __interceptor_calloc (/lib64/libasan.so.5+0xef970)
#1 0x7f1174f2549d in g_malloc0 (/lib64/libglib-2.0.so.0+0x5249d)
#2 0x556af05aa7da in mm_fw_cfg_init /mnt/sdb/qemu/tests/libqos/fw_cfg.c:119
#3 0x556af059f4f5 in read_boot_order_pmac /mnt/sdb/qemu/tests/boot-order-test.c:137
#4 0x556af059efe2 in test_a_boot_order /mnt/sdb/qemu/tests/boot-order-test.c:47
#5 0x556af059f2c0 in test_boot_orders /mnt/sdb/qemu/tests/boot-order-test.c:59
#6 0x556af059f52d in test_pmac_oldworld_boot_order /mnt/sdb/qemu/tests/boot-order-test.c:152
#7 0x7f1174f46cb9 (/lib64/libglib-2.0.so.0+0x73cb9)
#8 0x7f1174f46b73 (/lib64/libglib-2.0.so.0+0x73b73)
#9 0x7f1174f46b73 (/lib64/libglib-2.0.so.0+0x73b73)
#10 0x7f1174f46f71 in g_test_run_suite (/lib64/libglib-2.0.so.0+0x73f71)
#11 0x7f1174f46f94 in g_test_run (/lib64/libglib-2.0.so.0+0x73f94)

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
Message-Id: <20200203025935.36228-1-pannengyuan@huawei.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>

authored by

Pan Nengyuan and committed by
Thomas Huth
77c24259 ab00cf4d

+5 -3
+3 -3
tests/qtest/boot-order-test.c
··· 110 110 111 111 static uint64_t read_boot_order_pmac(QTestState *qts) 112 112 { 113 - QFWCFG *fw_cfg = mm_fw_cfg_init(qts, 0xf0000510); 113 + g_autoptr(QFWCFG) fw_cfg = mm_fw_cfg_init(qts, 0xf0000510); 114 114 115 115 return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE); 116 116 } ··· 135 135 136 136 static uint64_t read_boot_order_sun4m(QTestState *qts) 137 137 { 138 - QFWCFG *fw_cfg = mm_fw_cfg_init(qts, 0xd00000510ULL); 138 + g_autoptr(QFWCFG) fw_cfg = mm_fw_cfg_init(qts, 0xd00000510ULL); 139 139 140 140 return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE); 141 141 } ··· 147 147 148 148 static uint64_t read_boot_order_sun4u(QTestState *qts) 149 149 { 150 - QFWCFG *fw_cfg = io_fw_cfg_init(qts, 0x510); 150 + g_autoptr(QFWCFG) fw_cfg = io_fw_cfg_init(qts, 0x510); 151 151 152 152 return qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_DEVICE); 153 153 }
+2
tests/qtest/libqos/fw_cfg.h
··· 49 49 io_fw_cfg_uninit(fw_cfg); 50 50 } 51 51 52 + G_DEFINE_AUTOPTR_CLEANUP_FUNC(QFWCFG, mm_fw_cfg_uninit) 53 + 52 54 #endif