The purpose of this patch is to aid in debugging the new malloc-pc interface for guest memory, by enabling the enforcing of no guest memory blocks in use at exit time.
Signed-off-by: John Snow <js...@redhat.com> --- tests/ahci-test.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/tests/ahci-test.c b/tests/ahci-test.c index dcc0748..3f92618 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -436,6 +436,7 @@ static void ahci_test_msicap(AHCIState *ahci, uint8_t offset); static void ahci_test_pmcap(AHCIState *ahci, uint8_t offset); static void get_command_header(AHCIState *ahci, uint8_t px, uint8_t cx, AHCICommand *cmd); +static void destroy_command(AHCIState *ahci, uint8_t px, uint8_t cx); /*** Utilities ***/ @@ -506,7 +507,9 @@ static void qtest_boot(const char *cmdline_fmt, ...) qtest_start(cmdline); qtest_irq_intercept_in(global_qtest, "ioapic"); - guest_malloc = pc_alloc_init(); + /* Enforce 0 leaks. */ + guest_malloc = pc_alloc_init_flags(PC_ALLOC_LEAK_ASSERT | + PC_ALLOC_PARANOID); g_free(cmdline); } @@ -516,8 +519,10 @@ static void qtest_boot(const char *cmdline_fmt, ...) */ static void qtest_shutdown(void) { - g_free(guest_malloc); - guest_malloc = NULL; + if (guest_malloc) { + pc_alloc_uninit(guest_malloc); + guest_malloc = NULL; + } qtest_end(); } @@ -547,6 +552,20 @@ static AHCIState *ahci_boot(void) */ static void ahci_shutdown(AHCIState *ahci) { + uint8_t px, cx; + + for (px = 0; px < 32; ++px) { + if (ahci->port[px].fb) { + guest_free(guest_malloc, ahci->port[px].fb); + } + if (ahci->port[px].clb) { + for (cx = 0; cx < 32; cx++) { + destroy_command(ahci, px, cx); + } + guest_free(guest_malloc, ahci->port[px].clb); + } + } + free_ahci_device(ahci->dev); g_free(ahci); qtest_shutdown(); @@ -1676,6 +1695,8 @@ static void ahci_test_identify(AHCIState *ahci) string_bswap16(&buff[23], 8); rc = memcmp(&buff[23], "version ", 8); g_assert_cmphex(rc, ==, 0); + + guest_free(guest_malloc, data_ptr); } /******************************************************************************/ -- 1.9.3