On Sun, Jan 17, 2021 at 10:59 PM Gan Qixin <ganqi...@huawei.com> wrote:
> The adc_qom_set function didn't free "response", which caused an indirect > memory leak. So use qobject_unref() to fix it. > > ASAN shows memory leak stack: > > Indirect leak of 593280 byte(s) in 144 object(s) allocated from: > #0 0x7f9a5e7e8d4e in __interceptor_calloc > (/lib64/libasan.so.5+0x112d4e) > #1 0x7f9a5e607a50 in g_malloc0 (/lib64/libglib-2.0.so.0+0x55a50) > #2 0x55b1bebf636b in qdict_new ../qobject/qdict.c:30 > #3 0x55b1bec09699 in parse_object ../qobject/json-parser.c:318 > #4 0x55b1bec0b2df in parse_value ../qobject/json-parser.c:546 > #5 0x55b1bec0b6a9 in json_parser_parse ../qobject/json-parser.c:580 > #6 0x55b1bec060d1 in json_message_process_token > ../qobject/json-streamer.c:92 > #7 0x55b1bec16a12 in json_lexer_feed_char ../qobject/json-lexer.c:313 > #8 0x55b1bec16fbd in json_lexer_feed ../qobject/json-lexer.c:350 > #9 0x55b1bec06453 in json_message_parser_feed > ../qobject/json-streamer.c:121 > #10 0x55b1bebc2d51 in qmp_fd_receive ../tests/qtest/libqtest.c:614 > #11 0x55b1bebc2f5e in qtest_qmp_receive_dict > ../tests/qtest/libqtest.c:636 > #12 0x55b1bebc2e6c in qtest_qmp_receive ../tests/qtest/libqtest.c:624 > #13 0x55b1bebc3340 in qtest_vqmp ../tests/qtest/libqtest.c:715 > #14 0x55b1bebc3942 in qtest_qmp ../tests/qtest/libqtest.c:756 > #15 0x55b1bebbd64a in adc_qom_set ../tests/qtest/npcm7xx_adc-test.c:127 > #16 0x55b1bebbd793 in adc_write_input > ../tests/qtest/npcm7xx_adc-test.c:140 > #17 0x55b1bebbdf92 in test_convert_external > ../tests/qtest/npcm7xx_adc-test.c:246 > > Reported-by: Euler Robot <euler.ro...@huawei.com> > Signed-off-by: Gan Qixin <ganqi...@huawei.com> > Reviewed-by: Hao Wu <wuhao...@google.com> Thanks! > --- > Cc: Hao Wu <wuhao...@google.com> > Cc: Havard Skinnemoen <hskinnem...@google.com> > Cc: Tyrone Ting <kft...@nuvoton.com> > Cc: Thomas Huth <th...@redhat.com> > Cc: Laurent Vivier <lviv...@redhat.com> > --- > tests/qtest/npcm7xx_adc-test.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tests/qtest/npcm7xx_adc-test.c > b/tests/qtest/npcm7xx_adc-test.c > index f029706945..5ce8ce13b3 100644 > --- a/tests/qtest/npcm7xx_adc-test.c > +++ b/tests/qtest/npcm7xx_adc-test.c > @@ -129,6 +129,7 @@ static void adc_qom_set(QTestState *qts, const ADC > *adc, > path, name, value); > /* The qom set message returns successfully. */ > g_assert_true(qdict_haskey(response, "return")); > + qobject_unref(response); > } > > static void adc_write_input(QTestState *qts, const ADC *adc, > -- > 2.27.0 > >