* [Qemu-devel] [PATCH 00/28] Various memory leak fixes
@ 2017-02-07 13:51 Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 01/28] qtest: fix a memory leak Marc-André Lureau
` (28 more replies)
0 siblings, 29 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Hi,
After this series removing a few memory leaks, make check with ASAN
enabled gives a "clean" run with x86_64-softmmu target (there are
warnings related to coroutine makecontext/swapcontext).
This should help spot memory related regressions when introducing one.
Note: some of these patches were sent and reviewed previously but not
yet applied, I rebased them and included them here for completeness.
Igor Mammedov (1):
pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice
Marc-André Lureau (27):
qtest: fix a memory leak
tests: fix qmp response leak
tests: fix leaks in test-io-channel-command
timer: use an inline function for free
tests: fix ptimer leaks
tests: fix endianness-test leaks
tests: fix q35-test leaks
tests: fix vhost-user-test leaks
tests: fix ide-test leaks
tests: fix hd-geo-test leaks
tests: fix bios-tables-test leak
tests: fix ipmi-kcs-test leak
tests: fix ipmi-bt-test leak
tests: fix eepro100-test leak
tests: fix tco-test leaks
tests: fix e1000-test leak
tests: fix i440fx-test leaks
tests: fix e1000e leaks
tests: fix virtio-scsi-test leak
tests: fix virtio-9p-test leaks
bus: do not unref hotplug handler
usb: replace handle_destroy with unrealize
usb: release the created buses
tests: allows to run single test in usb-hcd-ehci-test
tests: fix usb-test leaks
tests: add specialized device_find function
tests: fix virtio-blk-test leaks
include/hw/ptimer.h | 1 +
include/hw/usb.h | 5 --
include/qemu/timer.h | 5 +-
tests/libqos/usb.h | 1 +
tests/libqos/virtio-pci.h | 6 +-
hw/acpi/pcihp.c | 11 ----
hw/core/bus.c | 2 +-
hw/core/ptimer.c | 8 +++
hw/i386/acpi-build.c | 4 +-
hw/usb/bus.c | 9 +--
hw/usb/dev-audio.c | 4 +-
hw/usb/dev-bluetooth.c | 4 +-
hw/usb/dev-hid.c | 4 +-
hw/usb/dev-hub.c | 4 +-
hw/usb/dev-network.c | 4 +-
hw/usb/dev-smartcard-reader.c | 4 +-
hw/usb/dev-storage.c | 16 ++++++
hw/usb/dev-uas.c | 6 +-
hw/usb/dev-wacom.c | 4 +-
hw/usb/host-libusb.c | 4 +-
hw/usb/redirect.c | 4 +-
qemu-timer.c | 5 --
qtest.c | 1 +
tests/bios-tables-test.c | 2 +-
tests/e1000-test.c | 1 +
tests/e1000e-test.c | 6 +-
tests/eepro100-test.c | 1 +
tests/endianness-test.c | 3 +
tests/hd-geo-test.c | 47 ++++++++++------
tests/i440fx-test.c | 5 ++
tests/ide-test.c | 12 ++++
tests/ipmi-bt-test.c | 1 +
tests/ipmi-kcs-test.c | 1 +
tests/libqos/usb.c | 6 ++
tests/libqos/virtio-pci.c | 38 +++++++++++--
tests/postcopy-test.c | 2 +-
tests/ptimer-test-stubs.c | 5 ++
tests/ptimer-test.c | 122 ++++++++++++++++++++++++----------------
tests/pvpanic-test.c | 1 +
tests/q35-test.c | 3 +
tests/tco-test.c | 35 +++++++-----
tests/test-filter-mirror.c | 2 +-
tests/test-filter-redirector.c | 4 +-
tests/test-io-channel-command.c | 6 +-
tests/usb-hcd-ehci-test.c | 19 +++++--
tests/usb-hcd-uhci-test.c | 1 +
tests/vhost-user-test.c | 11 ++--
tests/virtio-9p-test.c | 2 +-
tests/virtio-blk-test.c | 29 +++++-----
tests/virtio-scsi-test.c | 2 +-
50 files changed, 316 insertions(+), 167 deletions(-)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 01/28] qtest: fix a memory leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 02/28] tests: fix qmp response leak Marc-André Lureau
` (27 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
qtest.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/qtest.c b/qtest.c
index 1446719e8d..6f4d26832a 100644
--- a/qtest.c
+++ b/qtest.c
@@ -240,6 +240,7 @@ static void GCC_FMT_ATTR(2, 3) qtest_sendf(CharBackend *chr,
va_start(ap, fmt);
buffer = g_strdup_vprintf(fmt, ap);
qtest_send(chr, buffer);
+ g_free(buffer);
va_end(ap);
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 02/28] tests: fix qmp response leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 01/28] qtest: fix a memory leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command Marc-André Lureau
` (26 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
tests/libqos/usb.c | 1 +
tests/postcopy-test.c | 2 +-
tests/pvpanic-test.c | 1 +
tests/test-filter-mirror.c | 2 +-
tests/test-filter-redirector.c | 4 ++--
tests/virtio-blk-test.c | 15 +++++++++------
6 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/tests/libqos/usb.c b/tests/libqos/usb.c
index 72d7a961fe..98408d93f3 100644
--- a/tests/libqos/usb.c
+++ b/tests/libqos/usb.c
@@ -64,4 +64,5 @@ void usb_test_hotplug(const char *hcd_id, const int port,
g_assert(response);
g_assert(qdict_haskey(response, "event"));
g_assert(!strcmp(qdict_get_str(response, "event"), "DEVICE_DELETED"));
+ QDECREF(response);
}
diff --git a/tests/postcopy-test.c b/tests/postcopy-test.c
index dafe8beba4..de35a18903 100644
--- a/tests/postcopy-test.c
+++ b/tests/postcopy-test.c
@@ -482,7 +482,7 @@ static void test_migrate(void)
usleep(10 * 1000);
} while (dest_byte_a == dest_byte_b);
- qmp("{ 'execute' : 'stop'}");
+ qmp_discard_response("{ 'execute' : 'stop'}");
/* With it stopped, check nothing changes */
qtest_memread(to, start_address, &dest_byte_c, 1);
sleep(1);
diff --git a/tests/pvpanic-test.c b/tests/pvpanic-test.c
index 3bfa678667..71ebb5c02c 100644
--- a/tests/pvpanic-test.c
+++ b/tests/pvpanic-test.c
@@ -27,6 +27,7 @@ static void test_panic(void)
data = qdict_get_qdict(response, "data");
g_assert(qdict_haskey(data, "action"));
g_assert_cmpstr(qdict_get_str(data, "action"), ==, "pause");
+ QDECREF(response);
}
int main(int argc, char **argv)
diff --git a/tests/test-filter-mirror.c b/tests/test-filter-mirror.c
index ffaaffabd0..9f84402493 100644
--- a/tests/test-filter-mirror.c
+++ b/tests/test-filter-mirror.c
@@ -57,7 +57,7 @@ static void test_mirror(void)
};
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp("{ 'execute' : 'query-status'}");
+ qmp_discard_response("{ 'execute' : 'query-status'}");
ret = iov_send(send_sock[0], iov, 2, 0, sizeof(size) + sizeof(send_buf));
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
close(send_sock[0]);
diff --git a/tests/test-filter-redirector.c b/tests/test-filter-redirector.c
index c63b68f03a..0c4b8d52ef 100644
--- a/tests/test-filter-redirector.c
+++ b/tests/test-filter-redirector.c
@@ -99,7 +99,7 @@ static void test_redirector_tx(void)
g_assert_cmpint(recv_sock, !=, -1);
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp("{ 'execute' : 'query-status'}");
+ qmp_discard_response("{ 'execute' : 'query-status'}");
struct iovec iov[] = {
{
@@ -184,7 +184,7 @@ static void test_redirector_rx(void)
send_sock = unix_connect(sock_path1, NULL);
g_assert_cmpint(send_sock, !=, -1);
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp("{ 'execute' : 'query-status'}");
+ qmp_discard_response("{ 'execute' : 'query-status'}");
ret = iov_send(send_sock, iov, 2, 0, sizeof(size) + sizeof(send_buf));
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index 0e32e416dd..10a92b410a 100644
--- a/tests/virtio-blk-test.c
+++ b/tests/virtio-blk-test.c
@@ -409,8 +409,9 @@ static void pci_config(void)
qvirtio_set_driver_ok(&dev->vdev);
- qmp("{ 'execute': 'block_resize', 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qmp_discard_response("{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_config_isr(&dev->vdev, QVIRTIO_BLK_TIMEOUT_US);
capacity = qvirtio_config_readq(&dev->vdev, 0);
@@ -458,8 +459,9 @@ static void pci_msix(void)
qvirtio_set_driver_ok(&dev->vdev);
- qmp("{ 'execute': 'block_resize', 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qmp_discard_response("{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_config_isr(&dev->vdev, QVIRTIO_BLK_TIMEOUT_US);
@@ -691,8 +693,9 @@ static void mmio_basic(void)
test_basic(&dev->vdev, alloc, vq);
- qmp("{ 'execute': 'block_resize', 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qmp_discard_response("{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_queue_isr(&dev->vdev, vq, QVIRTIO_BLK_TIMEOUT_US);
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 01/28] qtest: fix a memory leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 02/28] tests: fix qmp response leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 14:02 ` Daniel P. Berrange
2017-02-07 15:02 ` Greg Kurz
2017-02-07 13:51 ` [Qemu-devel] [PATCH 04/28] timer: use an inline function for free Marc-André Lureau
` (25 subsequent siblings)
28 siblings, 2 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrange
No need for strdup, fix leaks when socat is missing.
Spotted by ASAN.
Cc: "Daniel P. Berrange" <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/test-io-channel-command.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/tests/test-io-channel-command.c b/tests/test-io-channel-command.c
index 1d1f461bed..46ce1ff01c 100644
--- a/tests/test-io-channel-command.c
+++ b/tests/test-io-channel-command.c
@@ -29,8 +29,8 @@ static void test_io_channel_command_fifo(bool async)
#define TEST_FIFO "tests/test-io-channel-command.fifo"
QIOChannel *src, *dst;
QIOChannelTest *test;
- char *srcfifo = g_strdup_printf("PIPE:%s,wronly", TEST_FIFO);
- char *dstfifo = g_strdup_printf("PIPE:%s,rdonly", TEST_FIFO);
+ const char *srcfifo = "PIPE:" TEST_FIFO ",wronly";
+ const char *dstfifo = "PIPE:" TEST_FIFO ",rdonly";
const char *srcargv[] = {
"/bin/socat", "-", srcfifo, NULL,
};
@@ -59,8 +59,6 @@ static void test_io_channel_command_fifo(bool async)
object_unref(OBJECT(src));
object_unref(OBJECT(dst));
- g_free(srcfifo);
- g_free(dstfifo);
unlink(TEST_FIFO);
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 04/28] timer: use an inline function for free
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (2 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 16:35 ` Greg Kurz
2017-02-07 13:51 ` [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks Marc-André Lureau
` (24 subsequent siblings)
28 siblings, 1 reply; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Paolo Bonzini
Similarly to allocation, do it from an inline function. This allows
tests to only use the headers for allocation/free of timer.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/qemu/timer.h | 5 ++++-
qemu-timer.c | 5 -----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/include/qemu/timer.h b/include/qemu/timer.h
index 9abed51ae8..26e628584c 100644
--- a/include/qemu/timer.h
+++ b/include/qemu/timer.h
@@ -610,7 +610,10 @@ void timer_deinit(QEMUTimer *ts);
*
* Free a timer (it must not be on the active list)
*/
-void timer_free(QEMUTimer *ts);
+static inline void timer_free(QEMUTimer *ts)
+{
+ g_free(ts);
+}
/**
* timer_del:
diff --git a/qemu-timer.c b/qemu-timer.c
index ff620ecff7..6cf70b96f6 100644
--- a/qemu-timer.c
+++ b/qemu-timer.c
@@ -355,11 +355,6 @@ void timer_deinit(QEMUTimer *ts)
ts->timer_list = NULL;
}
-void timer_free(QEMUTimer *ts)
-{
- g_free(ts);
-}
-
static void timer_del_locked(QEMUTimerList *timer_list, QEMUTimer *ts)
{
QEMUTimer **pt, *t;
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (3 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 04/28] timer: use an inline function for free Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 14:38 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 06/28] tests: fix endianness-test leaks Marc-André Lureau
` (23 subsequent siblings)
28 siblings, 1 reply; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Paolo Bonzini
Spotted by ASAN.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/hw/ptimer.h | 1 +
hw/core/ptimer.c | 8 +++
tests/ptimer-test-stubs.c | 5 ++
tests/ptimer-test.c | 122 ++++++++++++++++++++++++++++------------------
4 files changed, 89 insertions(+), 47 deletions(-)
diff --git a/include/hw/ptimer.h b/include/hw/ptimer.h
index 48cccbdb51..eafc3f0a86 100644
--- a/include/hw/ptimer.h
+++ b/include/hw/ptimer.h
@@ -60,6 +60,7 @@ typedef struct ptimer_state ptimer_state;
typedef void (*ptimer_cb)(void *opaque);
ptimer_state *ptimer_init(QEMUBH *bh, uint8_t policy_mask);
+void ptimer_free(ptimer_state *s);
void ptimer_set_period(ptimer_state *s, int64_t period);
void ptimer_set_freq(ptimer_state *s, uint32_t freq);
uint64_t ptimer_get_limit(ptimer_state *s);
diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
index 3af82afe78..59ccb00550 100644
--- a/hw/core/ptimer.c
+++ b/hw/core/ptimer.c
@@ -12,6 +12,7 @@
#include "qemu/host-utils.h"
#include "sysemu/replay.h"
#include "sysemu/qtest.h"
+#include "block/aio.h"
#define DELTA_ADJUST 1
#define DELTA_NO_ADJUST -1
@@ -353,3 +354,10 @@ ptimer_state *ptimer_init(QEMUBH *bh, uint8_t policy_mask)
s->policy_mask = policy_mask;
return s;
}
+
+void ptimer_free(ptimer_state *s)
+{
+ qemu_bh_delete(s->bh);
+ timer_free(s->timer);
+ g_free(s);
+}
diff --git a/tests/ptimer-test-stubs.c b/tests/ptimer-test-stubs.c
index 21d4ebb0fe..8a1b0a336c 100644
--- a/tests/ptimer-test-stubs.c
+++ b/tests/ptimer-test-stubs.c
@@ -108,6 +108,11 @@ QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
return bh;
}
+void qemu_bh_delete(QEMUBH *bh)
+{
+ g_free(bh);
+}
+
void replay_bh_schedule_event(QEMUBH *bh)
{
bh->cb(bh->opaque);
diff --git a/tests/ptimer-test.c b/tests/ptimer-test.c
index b36a476483..5d1a2a8188 100644
--- a/tests/ptimer-test.c
+++ b/tests/ptimer-test.c
@@ -73,6 +73,7 @@ static void check_set_count(gconstpointer arg)
ptimer_set_count(ptimer, 1000);
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 1000);
g_assert_false(triggered);
+ ptimer_free(ptimer);
}
static void check_set_limit(gconstpointer arg)
@@ -92,6 +93,7 @@ static void check_set_limit(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 2000);
g_assert_cmpuint(ptimer_get_limit(ptimer), ==, 2000);
g_assert_false(triggered);
+ ptimer_free(ptimer);
}
static void check_oneshot(gconstpointer arg)
@@ -194,6 +196,7 @@ static void check_oneshot(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
g_assert_false(triggered);
+ ptimer_free(ptimer);
}
static void check_periodic(gconstpointer arg)
@@ -360,6 +363,7 @@ static void check_periodic(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==,
(no_round_down ? 8 : 7) + (wrap_policy ? 1 : 0));
g_assert_false(triggered);
+ ptimer_free(ptimer);
}
static void check_on_the_fly_mode_change(gconstpointer arg)
@@ -406,6 +410,7 @@ static void check_on_the_fly_mode_change(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
g_assert_true(triggered);
+ ptimer_free(ptimer);
}
static void check_on_the_fly_period_change(gconstpointer arg)
@@ -438,6 +443,7 @@ static void check_on_the_fly_period_change(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
g_assert_true(triggered);
+ ptimer_free(ptimer);
}
static void check_on_the_fly_freq_change(gconstpointer arg)
@@ -470,6 +476,7 @@ static void check_on_the_fly_freq_change(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
g_assert_true(triggered);
+ ptimer_free(ptimer);
}
static void check_run_with_period_0(gconstpointer arg)
@@ -487,6 +494,7 @@ static void check_run_with_period_0(gconstpointer arg)
g_assert_cmpuint(ptimer_get_count(ptimer), ==, 99);
g_assert_false(triggered);
+ ptimer_free(ptimer);
}
static void check_run_with_delta_0(gconstpointer arg)
@@ -591,6 +599,7 @@ static void check_run_with_delta_0(gconstpointer arg)
g_assert_true(triggered);
ptimer_stop(ptimer);
+ ptimer_free(ptimer);
}
static void check_periodic_with_load_0(gconstpointer arg)
@@ -649,6 +658,7 @@ static void check_periodic_with_load_0(gconstpointer arg)
}
ptimer_stop(ptimer);
+ ptimer_free(ptimer);
}
static void check_oneshot_with_load_0(gconstpointer arg)
@@ -682,14 +692,14 @@ static void check_oneshot_with_load_0(gconstpointer arg)
} else {
g_assert_false(triggered);
}
+
+ ptimer_free(ptimer);
}
static void add_ptimer_tests(uint8_t policy)
{
- uint8_t *ppolicy = g_malloc(1);
- char *policy_name = g_malloc0(256);
-
- *ppolicy = policy;
+ char policy_name[256] = "";
+ char *tmp;
if (policy == PTIMER_POLICY_DEFAULT) {
g_sprintf(policy_name, "default");
@@ -715,49 +725,67 @@ static void add_ptimer_tests(uint8_t policy)
g_strlcat(policy_name, "no_counter_rounddown,", 256);
}
- g_test_add_data_func(
- g_strdup_printf("/ptimer/set_count policy=%s", policy_name),
- ppolicy, check_set_count);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/set_limit policy=%s", policy_name),
- ppolicy, check_set_limit);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/oneshot policy=%s", policy_name),
- ppolicy, check_oneshot);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/periodic policy=%s", policy_name),
- ppolicy, check_periodic);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/on_the_fly_mode_change policy=%s", policy_name),
- ppolicy, check_on_the_fly_mode_change);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/on_the_fly_period_change policy=%s", policy_name),
- ppolicy, check_on_the_fly_period_change);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/on_the_fly_freq_change policy=%s", policy_name),
- ppolicy, check_on_the_fly_freq_change);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/run_with_period_0 policy=%s", policy_name),
- ppolicy, check_run_with_period_0);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/run_with_delta_0 policy=%s", policy_name),
- ppolicy, check_run_with_delta_0);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/periodic_with_load_0 policy=%s", policy_name),
- ppolicy, check_periodic_with_load_0);
-
- g_test_add_data_func(
- g_strdup_printf("/ptimer/oneshot_with_load_0 policy=%s", policy_name),
- ppolicy, check_oneshot_with_load_0);
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/set_count policy=%s", policy_name),
+ g_memdup(&policy, 1), check_set_count, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/set_limit policy=%s", policy_name),
+ g_memdup(&policy, 1), check_set_limit, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/oneshot policy=%s", policy_name),
+ g_memdup(&policy, 1), check_oneshot, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/periodic policy=%s", policy_name),
+ g_memdup(&policy, 1), check_periodic, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/on_the_fly_mode_change policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_on_the_fly_mode_change, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/on_the_fly_period_change policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_on_the_fly_period_change, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/on_the_fly_freq_change policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_on_the_fly_freq_change, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/run_with_period_0 policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_run_with_period_0, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/run_with_delta_0 policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_run_with_delta_0, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/periodic_with_load_0 policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_periodic_with_load_0, g_free);
+ g_free(tmp);
+
+ g_test_add_data_func_full(
+ tmp = g_strdup_printf("/ptimer/oneshot_with_load_0 policy=%s",
+ policy_name),
+ g_memdup(&policy, 1), check_oneshot_with_load_0, g_free);
+ g_free(tmp);
}
static void add_all_ptimer_policies_comb_tests(void)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 06/28] tests: fix endianness-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (4 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 07/28] tests: fix q35-test leaks Marc-André Lureau
` (22 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/endianness-test.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/endianness-test.c b/tests/endianness-test.c
index cf8d41b7b4..ed0bf52019 100644
--- a/tests/endianness-test.c
+++ b/tests/endianness-test.c
@@ -295,14 +295,17 @@ int main(int argc, char **argv)
path = g_strdup_printf("endianness/%s",
test_cases[i].machine);
qtest_add_data_func(path, &test_cases[i], test_endianness);
+ g_free(path);
path = g_strdup_printf("endianness/split/%s",
test_cases[i].machine);
qtest_add_data_func(path, &test_cases[i], test_endianness_split);
+ g_free(path);
path = g_strdup_printf("endianness/combine/%s",
test_cases[i].machine);
qtest_add_data_func(path, &test_cases[i], test_endianness_combine);
+ g_free(path);
}
return g_test_run();
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 07/28] tests: fix q35-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (5 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 06/28] tests: fix endianness-test leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 08/28] tests: fix vhost-user-test leaks Marc-André Lureau
` (21 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/q35-test.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/q35-test.c b/tests/q35-test.c
index 763fe3d6ae..e010d781e7 100644
--- a/tests/q35-test.c
+++ b/tests/q35-test.c
@@ -71,6 +71,9 @@ static void test_smram_lock(void)
g_assert(smram_test_bit(pcidev, MCH_HOST_BRIDGE_SMRAM_D_OPEN) == false);
smram_set_bit(pcidev, MCH_HOST_BRIDGE_SMRAM_D_OPEN, true);
g_assert(smram_test_bit(pcidev, MCH_HOST_BRIDGE_SMRAM_D_OPEN) == true);
+
+ qpci_free_pc(pcibus);
+ g_free(pcidev);
}
int main(int argc, char **argv)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 08/28] tests: fix vhost-user-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (6 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 07/28] tests: fix q35-test leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks Marc-André Lureau
` (20 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/libqos/virtio-pci.h | 2 ++
tests/libqos/virtio-pci.c | 6 ++++++
tests/vhost-user-test.c | 11 +++++++----
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/tests/libqos/virtio-pci.h b/tests/libqos/virtio-pci.h
index 38c54c63ea..0fab916cf8 100644
--- a/tests/libqos/virtio-pci.h
+++ b/tests/libqos/virtio-pci.h
@@ -34,6 +34,8 @@ extern const QVirtioBus qvirtio_pci;
void qvirtio_pci_foreach(QPCIBus *bus, uint16_t device_type,
void (*func)(QVirtioDevice *d, void *data), void *data);
QVirtioPCIDevice *qvirtio_pci_device_find(QPCIBus *bus, uint16_t device_type);
+void qvirtio_pci_device_free(QVirtioPCIDevice *dev);
+
void qvirtio_pci_device_enable(QVirtioPCIDevice *d);
void qvirtio_pci_device_disable(QVirtioPCIDevice *d);
diff --git a/tests/libqos/virtio-pci.c b/tests/libqos/virtio-pci.c
index d4bf841f23..456cccdc7b 100644
--- a/tests/libqos/virtio-pci.c
+++ b/tests/libqos/virtio-pci.c
@@ -27,6 +27,12 @@ typedef struct QVirtioPCIForeachData {
void *user_data;
} QVirtioPCIForeachData;
+void qvirtio_pci_device_free(QVirtioPCIDevice *dev)
+{
+ g_free(dev->pdev);
+ g_free(dev);
+}
+
static QVirtioPCIDevice *qpcidevice_to_qvirtiodevice(QPCIDevice *pdev)
{
QVirtioPCIDevice *vpcidev;
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index 2c45c7b29f..a61896c32d 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -139,6 +139,7 @@ enum {
};
typedef struct TestServer {
+ QPCIBus *bus;
gchar *socket_path;
gchar *mig_path;
gchar *chr_name;
@@ -160,14 +161,13 @@ static const char *root;
static void init_virtio_dev(TestServer *s)
{
- QPCIBus *bus;
QVirtioPCIDevice *dev;
uint32_t features;
- bus = qpci_init_pc(NULL);
- g_assert_nonnull(bus);
+ s->bus = qpci_init_pc(NULL);
+ g_assert_nonnull(s->bus);
- dev = qvirtio_pci_device_find(bus, VIRTIO_ID_NET);
+ dev = qvirtio_pci_device_find(s->bus, VIRTIO_ID_NET);
g_assert_nonnull(dev);
qvirtio_pci_device_enable(dev);
@@ -180,6 +180,7 @@ static void init_virtio_dev(TestServer *s)
qvirtio_set_features(&dev->vdev, features);
qvirtio_set_driver_ok(&dev->vdev);
+ qvirtio_pci_device_free(dev);
}
static void wait_for_fds(TestServer *s)
@@ -507,6 +508,8 @@ static gboolean _test_server_free(TestServer *server)
g_free(server->mig_path);
g_free(server->chr_name);
+ qpci_free_pc(server->bus);
+
g_free(server);
return FALSE;
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (7 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 08/28] tests: fix vhost-user-test leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-08 18:16 ` John Snow
2017-02-07 13:51 ` [Qemu-devel] [PATCH 10/28] tests: fix hd-geo-test leaks Marc-André Lureau
` (19 subsequent siblings)
28 siblings, 1 reply; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, John Snow
Spotted by ASAN.
Cc: John Snow <jsnow@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/ide-test.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tests/ide-test.c b/tests/ide-test.c
index fb541f88b5..2fa97bc36b 100644
--- a/tests/ide-test.c
+++ b/tests/ide-test.c
@@ -339,6 +339,7 @@ static void test_bmdma_simple_rw(void)
g_assert(memcmp(buf, cmpbuf, len) == 0);
+ free_pci_device(dev);
g_free(buf);
g_free(cmpbuf);
}
@@ -369,6 +370,7 @@ static void test_bmdma_short_prdt(void)
prdt, ARRAY_SIZE(prdt), NULL);
g_assert_cmphex(status, ==, 0);
assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
+ free_pci_device(dev);
}
static void test_bmdma_one_sector_short_prdt(void)
@@ -398,6 +400,7 @@ static void test_bmdma_one_sector_short_prdt(void)
prdt, ARRAY_SIZE(prdt), NULL);
g_assert_cmphex(status, ==, 0);
assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
+ free_pci_device(dev);
}
static void test_bmdma_long_prdt(void)
@@ -426,6 +429,7 @@ static void test_bmdma_long_prdt(void)
prdt, ARRAY_SIZE(prdt), NULL);
g_assert_cmphex(status, ==, BM_STS_INTR);
assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
+ free_pci_device(dev);
}
static void test_bmdma_no_busmaster(void)
@@ -449,6 +453,7 @@ static void test_bmdma_no_busmaster(void)
* in practice. At least we want to be aware of any changes. */
g_assert_cmphex(status, ==, BM_STS_ACTIVE | BM_STS_INTR);
assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
+ free_pci_device(dev);
}
static void test_bmdma_setup(void)
@@ -525,6 +530,7 @@ static void test_identify(void)
assert_bit_set(buf[85], 0x20);
ide_test_quit();
+ free_pci_device(dev);
}
/*
@@ -562,6 +568,7 @@ static void make_dirty(uint8_t device)
assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
g_free(buf);
+ free_pci_device(dev);
}
static void test_flush(void)
@@ -608,6 +615,7 @@ static void test_flush(void)
assert_bit_clear(data, BSY | DF | ERR | DRQ);
ide_test_quit();
+ free_pci_device(dev);
}
static void test_retry_flush(const char *machine)
@@ -658,6 +666,7 @@ static void test_retry_flush(const char *machine)
assert_bit_clear(data, BSY | DF | ERR | DRQ);
ide_test_quit();
+ free_pci_device(dev);
}
static void test_flush_nodev(void)
@@ -675,6 +684,7 @@ static void test_flush_nodev(void)
/* Just testing that qemu doesn't crash... */
+ free_pci_device(dev);
ide_test_quit();
}
@@ -741,6 +751,7 @@ static uint8_t ide_wait_clear(uint8_t flag)
while (true) {
data = qpci_io_readb(dev, ide_bar, reg_status);
if (!(data & flag)) {
+ free_pci_device(dev);
return data;
}
if (difftime(time(NULL), st) > 5.0) {
@@ -850,6 +861,7 @@ static void cdrom_pio_impl(int nblocks)
g_free(pattern);
g_free(rx);
test_bmdma_teardown();
+ free_pci_device(dev);
}
static void test_cdrom_pio(void)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 10/28] tests: fix hd-geo-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (8 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 11/28] tests: fix bios-tables-test leak Marc-André Lureau
` (18 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/hd-geo-test.c | 47 +++++++++++++++++++++++++++++++----------------
1 file changed, 31 insertions(+), 16 deletions(-)
diff --git a/tests/hd-geo-test.c b/tests/hd-geo-test.c
index 6176e81ab2..88f8d76d32 100644
--- a/tests/hd-geo-test.c
+++ b/tests/hd-geo-test.c
@@ -19,6 +19,8 @@
#include "qemu-common.h"
#include "libqtest.h"
+#define ARGV_SIZE 256
+
static char *create_test_img(int secs)
{
char *template = strdup("/tmp/qtest.XXXXXX");
@@ -66,7 +68,7 @@ static const CHST hd_chst[backend_last][mbr_last] = {
},
};
-static const char *img_file_name[backend_last];
+static char *img_file_name[backend_last];
static const CHST *cur_ide[4];
@@ -234,28 +236,34 @@ static int setup_ide(int argc, char *argv[], int argv_sz,
*/
static void test_ide_none(void)
{
- char *argv[256];
+ char **argv = g_new0(char *, ARGV_SIZE);
+ char *tmp;
- setup_common(argv, ARRAY_SIZE(argv));
- qtest_start(g_strjoinv(" ", argv));
+ setup_common(argv, ARGV_SIZE);
+ qtest_start(tmp = g_strjoinv(" ", argv));
+ g_strfreev(argv);
+ g_free(tmp);
test_cmos();
qtest_end();
}
static void test_ide_mbr(bool use_device, MBRcontents mbr)
{
- char *argv[256];
+ char **argv = g_new0(char *, ARGV_SIZE);
+ char *tmp;
int argc;
Backend i;
const char *dev;
- argc = setup_common(argv, ARRAY_SIZE(argv));
+ argc = setup_common(argv, ARGV_SIZE);
for (i = 0; i < backend_last; i++) {
cur_ide[i] = &hd_chst[i][mbr];
dev = use_device ? (is_hd(cur_ide[i]) ? "ide-hd" : "ide-cd") : NULL;
- argc = setup_ide(argc, argv, ARRAY_SIZE(argv), i, dev, i, mbr, "");
+ argc = setup_ide(argc, argv, ARGV_SIZE, i, dev, i, mbr, "");
}
- qtest_start(g_strjoinv(" ", argv));
+ qtest_start(tmp = g_strjoinv(" ", argv));
+ g_strfreev(argv);
+ g_free(tmp);
test_cmos();
qtest_end();
}
@@ -310,12 +318,13 @@ static void test_ide_device_mbr_chs(void)
static void test_ide_drive_user(const char *dev, bool trans)
{
- char *argv[256], *opts;
+ char **argv = g_new0(char *, ARGV_SIZE);
+ char *tmp, *opts;
int argc;
int secs = img_secs[backend_small];
const CHST expected_chst = { secs / (4 * 32) , 4, 32, trans };
- argc = setup_common(argv, ARRAY_SIZE(argv));
+ argc = setup_common(argv, ARGV_SIZE);
opts = g_strdup_printf("%s,%s%scyls=%d,heads=%d,secs=%d",
dev ?: "",
trans && dev ? "bios-chs-" : "",
@@ -323,11 +332,13 @@ static void test_ide_drive_user(const char *dev, bool trans)
expected_chst.cyls, expected_chst.heads,
expected_chst.secs);
cur_ide[0] = &expected_chst;
- argc = setup_ide(argc, argv, ARRAY_SIZE(argv),
+ argc = setup_ide(argc, argv, ARGV_SIZE,
0, dev ? opts : NULL, backend_small, mbr_chs,
dev ? "" : opts);
g_free(opts);
- qtest_start(g_strjoinv(" ", argv));
+ qtest_start(tmp = g_strjoinv(" ", argv));
+ g_strfreev(argv);
+ g_free(tmp);
test_cmos();
qtest_end();
}
@@ -369,18 +380,21 @@ static void test_ide_device_user_chst(void)
*/
static void test_ide_drive_cd_0(void)
{
- char *argv[256];
+ char **argv = g_new0(char *, ARGV_SIZE);
+ char *tmp;
int argc, ide_idx;
Backend i;
- argc = setup_common(argv, ARRAY_SIZE(argv));
+ argc = setup_common(argv, ARGV_SIZE);
for (i = 0; i <= backend_empty; i++) {
ide_idx = backend_empty - i;
cur_ide[ide_idx] = &hd_chst[i][mbr_blank];
- argc = setup_ide(argc, argv, ARRAY_SIZE(argv),
+ argc = setup_ide(argc, argv, ARGV_SIZE,
ide_idx, NULL, i, mbr_blank, "");
}
- qtest_start(g_strjoinv(" ", argv));
+ qtest_start(tmp = g_strjoinv(" ", argv));
+ g_strfreev(argv);
+ g_free(tmp);
test_cmos();
qtest_end();
}
@@ -418,6 +432,7 @@ int main(int argc, char **argv)
for (i = 0; i < backend_last; i++) {
if (img_file_name[i]) {
unlink(img_file_name[i]);
+ free(img_file_name[i]);
}
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 11/28] tests: fix bios-tables-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (9 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 10/28] tests: fix hd-geo-test leaks Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 12/28] tests: fix ipmi-kcs-test leak Marc-André Lureau
` (17 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
The inside array should be free too.
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/bios-tables-test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 54048050c0..d54018da73 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -144,7 +144,7 @@ static void free_test_data(test_data *data)
g_free(temp->asl_file);
}
- g_array_free(data->tables, false);
+ g_array_free(data->tables, true);
}
static uint8_t acpi_checksum(const uint8_t *data, int len)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 12/28] tests: fix ipmi-kcs-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (10 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 11/28] tests: fix bios-tables-test leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 13/28] tests: fix ipmi-bt-test leak Marc-André Lureau
` (16 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/ipmi-kcs-test.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/ipmi-kcs-test.c b/tests/ipmi-kcs-test.c
index 9cf0b34a33..178ffc1797 100644
--- a/tests/ipmi-kcs-test.c
+++ b/tests/ipmi-kcs-test.c
@@ -279,6 +279,7 @@ int main(int argc, char **argv)
cmdline = g_strdup_printf("-device ipmi-bmc-sim,id=bmc0"
" -device isa-ipmi-kcs,bmc=bmc0");
qtest_start(cmdline);
+ g_free(cmdline);
qtest_irq_intercept_in(global_qtest, "ioapic");
qtest_add_func("/ipmi/local/kcs_base", test_kcs_base);
qtest_add_func("/ipmi/local/kcs_abort", test_kcs_abort);
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 13/28] tests: fix ipmi-bt-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (11 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 12/28] tests: fix ipmi-kcs-test leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 14/28] pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice Marc-André Lureau
` (15 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/ipmi-bt-test.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/ipmi-bt-test.c b/tests/ipmi-bt-test.c
index e84dd6889b..7e21a9bbcb 100644
--- a/tests/ipmi-bt-test.c
+++ b/tests/ipmi-bt-test.c
@@ -420,6 +420,7 @@ int main(int argc, char **argv)
" -device ipmi-bmc-extern,chardev=ipmi0,id=bmc0"
" -device isa-ipmi-bt,bmc=bmc0", emu_port);
qtest_start(cmdline);
+ g_free(cmdline);
qtest_irq_intercept_in(global_qtest, "ioapic");
qtest_add_func("/ipmi/extern/connect", test_connect);
qtest_add_func("/ipmi/extern/bt_base", test_bt_base);
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 14/28] pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (12 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 13/28] tests: fix ipmi-bt-test leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 15/28] tests: fix eepro100-test leak Marc-André Lureau
` (14 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Igor Mammedov, Marc-André Lureau
From: Igor Mammedov <imammedo@redhat.com>
PCI hotplug for bridges was introduced only since 2.0 however
acpi_set_bsel()->object_property_add_uint32_ptr(bus, ACPI_PCIHP_PROP_BSEL)
didn't take in account that for legacy mode (1.7) when
PCI hotplug for bridges is unavailable and ACPI_PCIHP_PROP_BSEL property
the only bus "PCI.0' has been created earlier at acpi_pcihp_init() time.
We managed to live with it only because of error rised by adding
a duplicate property in acpi_set_bsel() has been ignored which
resulted in useless leaking of just allocated (int)bus_bsel.
Issue affects only 1.7 machine type as ACPI tables supported by
QEMU were introduced at that time, but there wasn't PCI hotplug
for bridges till the next release (2.0).
Fix it by removing duplicate ACPI_PCIHP_PROP_BSEL intialization
in acpi_pcihp_init() and doing it only in one place acpi_set_pci_info().
PS:
do not ignore error returned by object_property_add_uint32_ptr()
and abort QEMU since it's programming error which should be fixed
instead of being ignored.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reported-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <1470211497-116801-1-git-send-email-imammedo@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
[ Marc-André - Remove now unused ACPI_PCIHP_LEGACY_SIZE ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
hw/acpi/pcihp.c | 11 -----------
hw/i386/acpi-build.c | 4 ++--
2 files changed, 2 insertions(+), 13 deletions(-)
diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c
index d957d1e30d..2b0f3e1bfb 100644
--- a/hw/acpi/pcihp.c
+++ b/hw/acpi/pcihp.c
@@ -49,7 +49,6 @@
#define ACPI_PCIHP_ADDR 0xae00
#define ACPI_PCIHP_SIZE 0x0014
-#define ACPI_PCIHP_LEGACY_SIZE 0x000f
#define PCI_UP_BASE 0x0000
#define PCI_DOWN_BASE 0x0004
#define PCI_EJ_BASE 0x0008
@@ -302,16 +301,6 @@ void acpi_pcihp_init(Object *owner, AcpiPciHpState *s, PCIBus *root_bus,
s->root= root_bus;
s->legacy_piix = !bridges_enabled;
- if (s->legacy_piix) {
- unsigned *bus_bsel = g_malloc(sizeof *bus_bsel);
-
- s->io_len = ACPI_PCIHP_LEGACY_SIZE;
-
- *bus_bsel = ACPI_PCIHP_BSEL_DEFAULT;
- object_property_add_uint32_ptr(OBJECT(root_bus), ACPI_PCIHP_PROP_BSEL,
- bus_bsel, NULL);
- }
-
memory_region_init_io(&s->io, owner, &acpi_pcihp_io_ops, s,
"acpi-pci-hotplug", s->io_len);
memory_region_add_subregion(address_space_io, s->io_base, &s->io);
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 1c928abb28..f44767b9be 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -462,7 +462,7 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque)
*bus_bsel = (*bsel_alloc)++;
object_property_add_uint32_ptr(OBJECT(bus), ACPI_PCIHP_PROP_BSEL,
- bus_bsel, NULL);
+ bus_bsel, &error_abort);
}
return bsel_alloc;
@@ -471,7 +471,7 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque)
static void acpi_set_pci_info(void)
{
PCIBus *bus = find_i440fx(); /* TODO: Q35 support */
- unsigned bsel_alloc = 0;
+ unsigned bsel_alloc = ACPI_PCIHP_BSEL_DEFAULT;
if (bus) {
/* Scan all PCI buses. Set property to enable acpi based hotplug. */
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 15/28] tests: fix eepro100-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (13 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 14/28] pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 16/28] tests: fix tco-test leaks Marc-André Lureau
` (13 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/eepro100-test.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/eepro100-test.c b/tests/eepro100-test.c
index ed23258b0f..bdc8a67d57 100644
--- a/tests/eepro100-test.c
+++ b/tests/eepro100-test.c
@@ -54,6 +54,7 @@ int main(int argc, char **argv)
path = g_strdup_printf("eepro100/%s", models[i]);
qtest_add_data_func(path, models[i], test_device);
+ g_free(path);
}
return g_test_run();
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 16/28] tests: fix tco-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (14 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 15/28] tests: fix eepro100-test leak Marc-André Lureau
@ 2017-02-07 13:51 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 17/28] tests: fix e1000-test leak Marc-André Lureau
` (12 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:51 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/tco-test.c | 35 +++++++++++++++++++++--------------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/tests/tco-test.c b/tests/tco-test.c
index ef02ec5903..c4c264eb3d 100644
--- a/tests/tco-test.c
+++ b/tests/tco-test.c
@@ -42,11 +42,18 @@ typedef struct {
bool noreboot;
QPCIDevice *dev;
QPCIBar tco_io_bar;
+ QPCIBus *bus;
} TestData;
+static void test_end(TestData *d)
+{
+ g_free(d->dev);
+ qpci_free_pc(d->bus);
+ qtest_end();
+}
+
static void test_init(TestData *d)
{
- QPCIBus *bus;
QTestState *qs;
char *s;
@@ -57,8 +64,8 @@ static void test_init(TestData *d)
qtest_irq_intercept_in(qs, "ioapic");
g_free(s);
- bus = qpci_init_pc(NULL);
- d->dev = qpci_device_find(bus, QPCI_DEVFN(0x1f, 0x00));
+ d->bus = qpci_init_pc(NULL);
+ d->dev = qpci_device_find(d->bus, QPCI_DEVFN(0x1f, 0x00));
g_assert(d->dev != NULL);
qpci_device_enable(d->dev);
@@ -148,7 +155,7 @@ static void test_tco_defaults(void)
SW_IRQ_GEN_DEFAULT);
g_assert_cmpint(qpci_io_readw(d.dev, d.tco_io_bar, TCO_TMR), ==,
TCO_TMR_DEFAULT);
- qtest_end();
+ test_end(&d);
}
static void test_tco_timeout(void)
@@ -192,7 +199,7 @@ static void test_tco_timeout(void)
g_assert(ret == 1);
stop_tco(&d);
- qtest_end();
+ test_end(&d);
}
static void test_tco_max_timeout(void)
@@ -225,7 +232,7 @@ static void test_tco_max_timeout(void)
g_assert(ret == 1);
stop_tco(&d);
- qtest_end();
+ test_end(&d);
}
static QDict *get_watchdog_action(void)
@@ -262,7 +269,7 @@ static void test_tco_second_timeout_pause(void)
QDECREF(ad);
stop_tco(&td);
- qtest_end();
+ test_end(&td);
}
static void test_tco_second_timeout_reset(void)
@@ -287,7 +294,7 @@ static void test_tco_second_timeout_reset(void)
QDECREF(ad);
stop_tco(&td);
- qtest_end();
+ test_end(&td);
}
static void test_tco_second_timeout_shutdown(void)
@@ -312,7 +319,7 @@ static void test_tco_second_timeout_shutdown(void)
QDECREF(ad);
stop_tco(&td);
- qtest_end();
+ test_end(&td);
}
static void test_tco_second_timeout_none(void)
@@ -337,7 +344,7 @@ static void test_tco_second_timeout_none(void)
QDECREF(ad);
stop_tco(&td);
- qtest_end();
+ test_end(&td);
}
static void test_tco_ticks_counter(void)
@@ -365,7 +372,7 @@ static void test_tco_ticks_counter(void)
} while (!(qpci_io_readw(d.dev, d.tco_io_bar, TCO1_STS) & TCO_TIMEOUT));
stop_tco(&d);
- qtest_end();
+ test_end(&d);
}
static void test_tco1_control_bits(void)
@@ -383,7 +390,7 @@ static void test_tco1_control_bits(void)
qpci_io_writew(d.dev, d.tco_io_bar, TCO1_CNT, val);
g_assert_cmpint(qpci_io_readw(d.dev, d.tco_io_bar, TCO1_CNT), ==,
TCO_LOCK);
- qtest_end();
+ test_end(&d);
}
static void test_tco1_status_bits(void)
@@ -412,7 +419,7 @@ static void test_tco1_status_bits(void)
g_assert(ret == 1);
qpci_io_writew(d.dev, d.tco_io_bar, TCO1_STS, val);
g_assert_cmpint(qpci_io_readw(d.dev, d.tco_io_bar, TCO1_STS), ==, 0);
- qtest_end();
+ test_end(&d);
}
static void test_tco2_status_bits(void)
@@ -439,7 +446,7 @@ static void test_tco2_status_bits(void)
g_assert(ret == 1);
qpci_io_writew(d.dev, d.tco_io_bar, TCO2_STS, val);
g_assert_cmpint(qpci_io_readw(d.dev, d.tco_io_bar, TCO2_STS), ==, 0);
- qtest_end();
+ test_end(&d);
}
int main(int argc, char **argv)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 17/28] tests: fix e1000-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (15 preceding siblings ...)
2017-02-07 13:51 ` [Qemu-devel] [PATCH 16/28] tests: fix tco-test leaks Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 18/28] tests: fix i440fx-test leaks Marc-André Lureau
` (11 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/e1000-test.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/e1000-test.c b/tests/e1000-test.c
index 59cab68a60..0c5fcdcc44 100644
--- a/tests/e1000-test.c
+++ b/tests/e1000-test.c
@@ -44,6 +44,7 @@ int main(int argc, char **argv)
path = g_strdup_printf("e1000/%s", models[i]);
qtest_add_data_func(path, models[i], test_device);
+ g_free(path);
}
return g_test_run();
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 18/28] tests: fix i440fx-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (16 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 17/28] tests: fix e1000-test leak Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 19/28] tests: fix e1000e leaks Marc-André Lureau
` (10 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/i440fx-test.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/i440fx-test.c b/tests/i440fx-test.c
index da2d5a53f0..e9d05c87d1 100644
--- a/tests/i440fx-test.c
+++ b/tests/i440fx-test.c
@@ -134,6 +134,8 @@ static void test_i440fx_defaults(gconstpointer opaque)
/* 3.2.26 */
g_assert_cmpint(qpci_config_readb(dev, 0x93), ==, 0x00); /* TRC */
+ g_free(dev);
+ qpci_free_pc(bus);
qtest_end();
}
@@ -270,6 +272,9 @@ static void test_i440fx_pam(gconstpointer opaque)
/* Verify the area is not our new mask */
g_assert(!verify_area(pam_area[i].start, pam_area[i].end, 0x82));
}
+
+ g_free(dev);
+ qpci_free_pc(bus);
qtest_end();
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 19/28] tests: fix e1000e leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (17 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 18/28] tests: fix i440fx-test leaks Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak Marc-André Lureau
` (9 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/e1000e-test.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tests/e1000e-test.c b/tests/e1000e-test.c
index 8c42ca919f..c612dc64ec 100644
--- a/tests/e1000e-test.c
+++ b/tests/e1000e-test.c
@@ -99,7 +99,10 @@ static QPCIBus *test_bus;
static void e1000e_pci_foreach_callback(QPCIDevice *dev, int devfn, void *data)
{
- *(QPCIDevice **) data = dev;
+ QPCIDevice **res = data;
+
+ g_assert_null(*res);
+ *res = dev;
}
static QPCIDevice *e1000e_device_find(QPCIBus *bus)
@@ -403,6 +406,7 @@ static void data_test_clear(e1000e_device *d)
e1000e_device_clear(test_bus, d);
close(test_sockets[0]);
pc_alloc_uninit(test_alloc);
+ g_free(d->pci_dev);
qpci_free_pc(test_bus);
qtest_end();
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (18 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 19/28] tests: fix e1000e leaks Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 16:43 ` Greg Kurz
2017-02-07 13:52 ` [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks Marc-André Lureau
` (8 subsequent siblings)
28 siblings, 1 reply; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Paolo Bonzini
Spotted by ASAN.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/virtio-scsi-test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/virtio-scsi-test.c b/tests/virtio-scsi-test.c
index 69220ef07b..0eabd56fd9 100644
--- a/tests/virtio-scsi-test.c
+++ b/tests/virtio-scsi-test.c
@@ -63,7 +63,7 @@ static void qvirtio_scsi_pci_free(QVirtIOSCSI *vs)
qvirtqueue_cleanup(vs->dev->bus, vs->vq[i], vs->qs->alloc);
}
qvirtio_pci_device_disable(container_of(vs->dev, QVirtioPCIDevice, vdev));
- g_free(vs->dev);
+ qvirtio_pci_device_free((QVirtioPCIDevice *)vs->dev);
qvirtio_scsi_stop(vs->qs);
g_free(vs);
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (19 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 16:43 ` Greg Kurz
2017-02-07 13:52 ` [Qemu-devel] [PATCH 22/28] bus: do not unref hotplug handler Marc-André Lureau
` (7 subsequent siblings)
28 siblings, 1 reply; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Aneesh Kumar K.V, Greg Kurz
Spotted by ASAN.
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: Greg Kurz <groug@kaod.org>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/virtio-9p-test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/virtio-9p-test.c b/tests/virtio-9p-test.c
index 9556291567..43a1ad813f 100644
--- a/tests/virtio-9p-test.c
+++ b/tests/virtio-9p-test.c
@@ -80,7 +80,7 @@ static void qvirtio_9p_pci_stop(QVirtIO9P *v9p)
{
qvirtqueue_cleanup(v9p->dev->bus, v9p->vq, v9p->qs->alloc);
qvirtio_pci_device_disable(container_of(v9p->dev, QVirtioPCIDevice, vdev));
- g_free(v9p->dev);
+ qvirtio_pci_device_free((QVirtioPCIDevice *)v9p->dev);
qvirtio_9p_stop(v9p);
}
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 22/28] bus: do not unref hotplug handler
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (20 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 23/28] usb: replace handle_destroy with unrealize Marc-André Lureau
` (6 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Apparently, none of the bus owner give a reference to the hotplug
handler property, do not unref it on bus release.
Furthermore, a bus is allowed to be its own hotplug handler, which can
be seen in qbus_set_bus_hotplug_handler() function. However, in this
case, the reference can't be given to the property, or this will create
a cyclic dependency and the bus will never be free.
Each bus owner should manage the lifecycle of the hotplug handler.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
hw/core/bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/core/bus.c b/hw/core/bus.c
index cf383fc1af..4651f24486 100644
--- a/hw/core/bus.c
+++ b/hw/core/bus.c
@@ -197,7 +197,7 @@ static void qbus_initfn(Object *obj)
TYPE_HOTPLUG_HANDLER,
(Object **)&bus->hotplug_handler,
object_property_allow_set_link,
- OBJ_PROP_LINK_UNREF_ON_RELEASE,
+ 0,
NULL);
object_property_add_bool(obj, "realized",
bus_get_realized, bus_set_realized, NULL);
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 23/28] usb: replace handle_destroy with unrealize
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (21 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 22/28] bus: do not unref hotplug handler Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 24/28] usb: release the created buses Marc-André Lureau
` (5 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann
Curiously, unrealize() is not being used, but it seems more
appropriate than handle_destroy() together with realize(). It is more
ubiquitous destroy name in qemu code base and may throw errors.
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/hw/usb.h | 5 -----
hw/usb/bus.c | 9 +++++----
hw/usb/dev-audio.c | 4 ++--
hw/usb/dev-bluetooth.c | 4 ++--
hw/usb/dev-hid.c | 4 ++--
hw/usb/dev-hub.c | 4 ++--
hw/usb/dev-network.c | 4 ++--
hw/usb/dev-smartcard-reader.c | 4 ++--
hw/usb/dev-uas.c | 4 ++--
hw/usb/dev-wacom.c | 4 ++--
hw/usb/host-libusb.c | 4 ++--
hw/usb/redirect.c | 4 ++--
12 files changed, 25 insertions(+), 29 deletions(-)
diff --git a/include/hw/usb.h b/include/hw/usb.h
index c42b29c866..eb28655270 100644
--- a/include/hw/usb.h
+++ b/include/hw/usb.h
@@ -291,11 +291,6 @@ typedef struct USBDeviceClass {
void (*cancel_packet)(USBDevice *dev, USBPacket *p);
/*
- * Called when device is destroyed.
- */
- void (*handle_destroy)(USBDevice *dev);
-
- /*
* Attach the device
*/
void (*handle_attach)(USBDevice *dev);
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 1dcc35c8f8..efe4b8e1a6 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -136,11 +136,12 @@ USBDevice *usb_device_find_device(USBDevice *dev, uint8_t addr)
return NULL;
}
-static void usb_device_handle_destroy(USBDevice *dev)
+static void usb_device_unrealize(USBDevice *dev, Error **errp)
{
USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
- if (klass->handle_destroy) {
- klass->handle_destroy(dev);
+
+ if (klass->unrealize) {
+ klass->unrealize(dev, errp);
}
}
@@ -291,7 +292,7 @@ static void usb_qdev_unrealize(DeviceState *qdev, Error **errp)
if (dev->attached) {
usb_device_detach(dev);
}
- usb_device_handle_destroy(dev);
+ usb_device_unrealize(dev, errp);
if (dev->port) {
usb_release_port(dev);
}
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index 87cab0a3d1..343345235c 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -617,7 +617,7 @@ static void usb_audio_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void usb_audio_handle_destroy(USBDevice *dev)
+static void usb_audio_unrealize(USBDevice *dev, Error **errp)
{
USBAudioState *s = USB_AUDIO(dev);
@@ -683,7 +683,7 @@ static void usb_audio_class_init(ObjectClass *klass, void *data)
k->handle_reset = usb_audio_handle_reset;
k->handle_control = usb_audio_handle_control;
k->handle_data = usb_audio_handle_data;
- k->handle_destroy = usb_audio_handle_destroy;
+ k->unrealize = usb_audio_unrealize;
k->set_interface = usb_audio_set_interface;
}
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 91a4a0b8b9..443e3c301d 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -496,7 +496,7 @@ static void usb_bt_out_hci_packet_acl(void *opaque,
usb_bt_fifo_enqueue(&s->acl, data, len);
}
-static void usb_bt_handle_destroy(USBDevice *dev)
+static void usb_bt_unrealize(USBDevice *dev, Error **errp)
{
struct USBBtState *s = (struct USBBtState *) dev->opaque;
@@ -559,7 +559,7 @@ static void usb_bt_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = usb_bt_handle_reset;
uc->handle_control = usb_bt_handle_control;
uc->handle_data = usb_bt_handle_data;
- uc->handle_destroy = usb_bt_handle_destroy;
+ uc->unrealize = usb_bt_unrealize;
dc->vmsd = &vmstate_usb_bt;
set_bit(DEVICE_CATEGORY_NETWORK, dc->categories);
}
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index dda0bf0df0..c40019df96 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -690,7 +690,7 @@ static void usb_hid_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void usb_hid_handle_destroy(USBDevice *dev)
+static void usb_hid_unrealize(USBDevice *dev, Error **errp)
{
USBHIDState *us = USB_HID(dev);
@@ -785,7 +785,7 @@ static void usb_hid_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = usb_hid_handle_reset;
uc->handle_control = usb_hid_handle_control;
uc->handle_data = usb_hid_handle_data;
- uc->handle_destroy = usb_hid_handle_destroy;
+ uc->unrealize = usb_hid_unrealize;
uc->handle_attach = usb_desc_attach;
}
diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c
index a33f21cb38..9fe7333946 100644
--- a/hw/usb/dev-hub.c
+++ b/hw/usb/dev-hub.c
@@ -497,7 +497,7 @@ static void usb_hub_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void usb_hub_handle_destroy(USBDevice *dev)
+static void usb_hub_unrealize(USBDevice *dev, Error **errp)
{
USBHubState *s = (USBHubState *)dev;
int i;
@@ -575,7 +575,7 @@ static void usb_hub_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = usb_hub_handle_reset;
uc->handle_control = usb_hub_handle_control;
uc->handle_data = usb_hub_handle_data;
- uc->handle_destroy = usb_hub_handle_destroy;
+ uc->unrealize = usb_hub_unrealize;
set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
dc->fw_name = "hub";
dc->vmsd = &vmstate_usb_hub;
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index c0f1193ba9..85fc81bf43 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -1324,7 +1324,7 @@ static void usbnet_cleanup(NetClientState *nc)
s->nic = NULL;
}
-static void usb_net_handle_destroy(USBDevice *dev)
+static void usb_net_unrealize(USBDevice *dev, Error **errp)
{
USBNetState *s = (USBNetState *) dev;
@@ -1428,7 +1428,7 @@ static void usb_net_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = usb_net_handle_reset;
uc->handle_control = usb_net_handle_control;
uc->handle_data = usb_net_handle_data;
- uc->handle_destroy = usb_net_handle_destroy;
+ uc->unrealize = usb_net_unrealize;
set_bit(DEVICE_CATEGORY_NETWORK, dc->categories);
dc->fw_name = "network";
dc->vmsd = &vmstate_usb_net;
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index 1325ea1659..455df676c5 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -1151,7 +1151,7 @@ static void ccid_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void ccid_handle_destroy(USBDevice *dev)
+static void ccid_unrealize(USBDevice *dev, Error **errp)
{
USBCCIDState *s = USB_CCID_DEV(dev);
@@ -1458,7 +1458,7 @@ static void ccid_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = ccid_handle_reset;
uc->handle_control = ccid_handle_control;
uc->handle_data = ccid_handle_data;
- uc->handle_destroy = ccid_handle_destroy;
+ uc->unrealize = ccid_unrealize;
dc->desc = "CCID Rev 1.1 smartcard reader";
dc->vmsd = &ccid_vmstate;
dc->props = ccid_properties;
diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c
index da2fb7017e..3b26655889 100644
--- a/hw/usb/dev-uas.c
+++ b/hw/usb/dev-uas.c
@@ -891,7 +891,7 @@ static void usb_uas_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void usb_uas_handle_destroy(USBDevice *dev)
+static void usb_uas_unrealize(USBDevice *dev, Error **errp)
{
UASDevice *uas = USB_UAS(dev);
@@ -944,7 +944,7 @@ static void usb_uas_class_initfn(ObjectClass *klass, void *data)
uc->handle_reset = usb_uas_handle_reset;
uc->handle_control = usb_uas_handle_control;
uc->handle_data = usb_uas_handle_data;
- uc->handle_destroy = usb_uas_handle_destroy;
+ uc->unrealize = usb_uas_unrealize;
uc->attached_settable = true;
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
dc->fw_name = "storage";
diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
index c4702dbba0..bf70013059 100644
--- a/hw/usb/dev-wacom.c
+++ b/hw/usb/dev-wacom.c
@@ -329,7 +329,7 @@ static void usb_wacom_handle_data(USBDevice *dev, USBPacket *p)
}
}
-static void usb_wacom_handle_destroy(USBDevice *dev)
+static void usb_wacom_unrealize(USBDevice *dev, Error **errp)
{
USBWacomState *s = (USBWacomState *) dev;
@@ -364,7 +364,7 @@ static void usb_wacom_class_init(ObjectClass *klass, void *data)
uc->handle_reset = usb_wacom_handle_reset;
uc->handle_control = usb_wacom_handle_control;
uc->handle_data = usb_wacom_handle_data;
- uc->handle_destroy = usb_wacom_handle_destroy;
+ uc->unrealize = usb_wacom_unrealize;
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
dc->desc = "QEMU PenPartner Tablet";
dc->vmsd = &vmstate_usb_wacom;
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index 7791c6d520..c9876a5b0f 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -1065,7 +1065,7 @@ static void usb_host_instance_init(Object *obj)
&udev->qdev, NULL);
}
-static void usb_host_handle_destroy(USBDevice *udev)
+static void usb_host_unrealize(USBDevice *udev, Error **errp)
{
USBHostDevice *s = USB_HOST_DEVICE(udev);
@@ -1568,7 +1568,7 @@ static void usb_host_class_initfn(ObjectClass *klass, void *data)
uc->handle_data = usb_host_handle_data;
uc->handle_control = usb_host_handle_control;
uc->handle_reset = usb_host_handle_reset;
- uc->handle_destroy = usb_host_handle_destroy;
+ uc->unrealize = usb_host_unrealize;
uc->flush_ep_queue = usb_host_flush_ep_queue;
uc->alloc_streams = usb_host_alloc_streams;
uc->free_streams = usb_host_free_streams;
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 860f5c35eb..0efe62f725 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -1427,7 +1427,7 @@ static void usbredir_cleanup_device_queues(USBRedirDevice *dev)
}
}
-static void usbredir_handle_destroy(USBDevice *udev)
+static void usbredir_unrealize(USBDevice *udev, Error **errp)
{
USBRedirDevice *dev = USB_REDIRECT(udev);
Chardev *chr = qemu_chr_fe_get_driver(&dev->cs);
@@ -2513,7 +2513,7 @@ static void usbredir_class_initfn(ObjectClass *klass, void *data)
uc->realize = usbredir_realize;
uc->product_desc = "USB Redirection Device";
- uc->handle_destroy = usbredir_handle_destroy;
+ uc->unrealize = usbredir_unrealize;
uc->cancel_packet = usbredir_cancel_packet;
uc->handle_reset = usbredir_handle_reset;
uc->handle_data = usbredir_handle_data;
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 24/28] usb: release the created buses
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (22 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 23/28] usb: replace handle_destroy with unrealize Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 25/28] tests: allows to run single test in usb-hcd-ehci-test Marc-André Lureau
` (4 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann
Leaks spotted by ASAN.
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
hw/usb/dev-storage.c | 16 ++++++++++++++++
hw/usb/dev-uas.c | 2 ++
2 files changed, 18 insertions(+)
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c
index c607f7606d..74b7856278 100644
--- a/hw/usb/dev-storage.c
+++ b/hw/usb/dev-storage.c
@@ -589,6 +589,13 @@ static const struct SCSIBusInfo usb_msd_scsi_info_bot = {
.load_request = usb_msd_load_request,
};
+static void usb_msd_unrealize_storage(USBDevice *dev, Error **errp)
+{
+ MSDState *s = USB_STORAGE_DEV(dev);
+
+ object_unref(OBJECT(&s->bus));
+}
+
static void usb_msd_realize_storage(USBDevice *dev, Error **errp)
{
MSDState *s = USB_STORAGE_DEV(dev);
@@ -635,6 +642,13 @@ static void usb_msd_realize_storage(USBDevice *dev, Error **errp)
s->scsi_dev = scsi_dev;
}
+static void usb_msd_unrealize_bot(USBDevice *dev, Error **errp)
+{
+ MSDState *s = USB_STORAGE_DEV(dev);
+
+ object_unref(OBJECT(&s->bus));
+}
+
static void usb_msd_realize_bot(USBDevice *dev, Error **errp)
{
MSDState *s = USB_STORAGE_DEV(dev);
@@ -755,6 +769,7 @@ static void usb_msd_class_initfn_storage(ObjectClass *klass, void *data)
USBDeviceClass *uc = USB_DEVICE_CLASS(klass);
uc->realize = usb_msd_realize_storage;
+ uc->unrealize = usb_msd_unrealize_storage;
dc->props = msd_properties;
}
@@ -817,6 +832,7 @@ static void usb_msd_class_initfn_bot(ObjectClass *klass, void *data)
USBDeviceClass *uc = USB_DEVICE_CLASS(klass);
uc->realize = usb_msd_realize_bot;
+ uc->unrealize = usb_msd_unrealize_bot;
uc->attached_settable = true;
}
diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c
index 3b26655889..fffc424396 100644
--- a/hw/usb/dev-uas.c
+++ b/hw/usb/dev-uas.c
@@ -896,6 +896,8 @@ static void usb_uas_unrealize(USBDevice *dev, Error **errp)
UASDevice *uas = USB_UAS(dev);
qemu_bh_delete(uas->status_bh);
+
+ object_unref(OBJECT(&uas->bus));
}
static void usb_uas_realize(USBDevice *dev, Error **errp)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 25/28] tests: allows to run single test in usb-hcd-ehci-test
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (23 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 24/28] usb: release the created buses Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 26/28] tests: fix usb-test leaks Marc-André Lureau
` (3 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann
pci_init() shouldn't be a test function, but instead called before any
test. This allows to run a single test with -p /x86_64/ehci/....
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/usb-hcd-ehci-test.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/tests/usb-hcd-ehci-test.c b/tests/usb-hcd-ehci-test.c
index 57af8a034e..fba84b4bee 100644
--- a/tests/usb-hcd-ehci-test.c
+++ b/tests/usb-hcd-ehci-test.c
@@ -50,11 +50,8 @@ static void ehci_port_test(struct qhc *hc, int port, uint32_t expect)
/* tests */
-static void pci_init(void)
+static void test_init(void)
{
- if (pcibus) {
- return;
- }
pcibus = qpci_init_pc(NULL);
g_assert(pcibus != NULL);
@@ -142,7 +139,7 @@ int main(int argc, char **argv)
int ret;
g_test_init(&argc, &argv, NULL);
- qtest_add_func("/ehci/pci/init", pci_init);
+
qtest_add_func("/ehci/pci/uhci-port-1", pci_uhci_port_1);
qtest_add_func("/ehci/pci/ehci-port-1", pci_ehci_port_1);
qtest_add_func("/ehci/pci/ehci-config", pci_ehci_config);
@@ -161,6 +158,8 @@ int main(int argc, char **argv)
"-drive if=none,id=usbcdrom,media=cdrom "
"-device usb-tablet,bus=ich9-ehci-1.0,port=1,usb_version=1 "
"-device usb-storage,bus=ich9-ehci-1.0,port=2,drive=usbcdrom ");
+
+ test_init();
ret = g_test_run();
qtest_end();
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 26/28] tests: fix usb-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (24 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 25/28] tests: allows to run single test in usb-hcd-ehci-test Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 27/28] tests: add specialized device_find function Marc-André Lureau
` (2 subsequent siblings)
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Gerd Hoffmann
Fix the usb tests leaks.
Spotted by ASAN.
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/libqos/usb.h | 1 +
tests/libqos/usb.c | 5 +++++
tests/usb-hcd-ehci-test.c | 10 ++++++++++
tests/usb-hcd-uhci-test.c | 1 +
4 files changed, 17 insertions(+)
diff --git a/tests/libqos/usb.h b/tests/libqos/usb.h
index 423dcfd82f..297cfc564d 100644
--- a/tests/libqos/usb.h
+++ b/tests/libqos/usb.h
@@ -11,6 +11,7 @@ struct qhc {
void qusb_pci_init_one(QPCIBus *pcibus, struct qhc *hc,
uint32_t devfn, int bar);
void uhci_port_test(struct qhc *hc, int port, uint16_t expect);
+void uhci_deinit(struct qhc *hc);
void usb_test_hotplug(const char *bus_name, const int port,
void (*port_check)(void));
diff --git a/tests/libqos/usb.c b/tests/libqos/usb.c
index 98408d93f3..0cdfaecda7 100644
--- a/tests/libqos/usb.c
+++ b/tests/libqos/usb.c
@@ -24,6 +24,11 @@ void qusb_pci_init_one(QPCIBus *pcibus, struct qhc *hc, uint32_t devfn, int bar)
hc->bar = qpci_iomap(hc->dev, bar, NULL);
}
+void uhci_deinit(struct qhc *hc)
+{
+ g_free(hc->dev);
+}
+
void uhci_port_test(struct qhc *hc, int port, uint16_t expect)
{
uint16_t value = qpci_io_readw(hc->dev, hc->bar, 0x10 + 2 * port);
diff --git a/tests/usb-hcd-ehci-test.c b/tests/usb-hcd-ehci-test.c
index fba84b4bee..944eb1c088 100644
--- a/tests/usb-hcd-ehci-test.c
+++ b/tests/usb-hcd-ehci-test.c
@@ -61,6 +61,15 @@ static void test_init(void)
qusb_pci_init_one(pcibus, &ehci1, QPCI_DEVFN(0x1d, 7), 0);
}
+static void test_deinit(void)
+{
+ uhci_deinit(&uhci1);
+ uhci_deinit(&uhci2);
+ uhci_deinit(&uhci3);
+ uhci_deinit(&ehci1);
+ qpci_free_pc(pcibus);
+}
+
static void pci_uhci_port_1(void)
{
g_assert(pcibus != NULL);
@@ -161,6 +170,7 @@ int main(int argc, char **argv)
test_init();
ret = g_test_run();
+ test_deinit();
qtest_end();
diff --git a/tests/usb-hcd-uhci-test.c b/tests/usb-hcd-uhci-test.c
index e956b9ccb7..f25bae5e6c 100644
--- a/tests/usb-hcd-uhci-test.c
+++ b/tests/usb-hcd-uhci-test.c
@@ -28,6 +28,7 @@ static void test_port(int port)
g_assert(port > 0);
qusb_pci_init_one(qs->pcibus, &uhci, QPCI_DEVFN(0x1d, 0), 4);
uhci_port_test(&uhci, port - 1, UHCI_PORT_CCS);
+ uhci_deinit(&uhci);
}
static void test_port_1(void)
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 27/28] tests: add specialized device_find function
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (25 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 26/28] tests: fix usb-test leaks Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 28/28] tests: fix virtio-blk-test leaks Marc-André Lureau
2017-02-07 14:50 ` [Qemu-devel] [PATCH 00/28] Various memory leak fixes no-reply
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Allows to specify which slot to look for the device.
This will be used in the following patch to avoid leaking when multiple
devices exists and we want to lookup the hotplug one.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/libqos/virtio-pci.h | 4 ++--
tests/libqos/virtio-pci.c | 31 ++++++++++++++++++++++++++-----
2 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/tests/libqos/virtio-pci.h b/tests/libqos/virtio-pci.h
index 0fab916cf8..6ef19094cb 100644
--- a/tests/libqos/virtio-pci.h
+++ b/tests/libqos/virtio-pci.h
@@ -31,9 +31,9 @@ typedef struct QVirtQueuePCI {
extern const QVirtioBus qvirtio_pci;
-void qvirtio_pci_foreach(QPCIBus *bus, uint16_t device_type,
- void (*func)(QVirtioDevice *d, void *data), void *data);
QVirtioPCIDevice *qvirtio_pci_device_find(QPCIBus *bus, uint16_t device_type);
+QVirtioPCIDevice *qvirtio_pci_device_find_slot(QPCIBus *bus,
+ uint16_t device_type, int slot);
void qvirtio_pci_device_free(QVirtioPCIDevice *dev);
void qvirtio_pci_device_enable(QVirtioPCIDevice *d);
diff --git a/tests/libqos/virtio-pci.c b/tests/libqos/virtio-pci.c
index 456cccdc7b..8a0904bbf0 100644
--- a/tests/libqos/virtio-pci.c
+++ b/tests/libqos/virtio-pci.c
@@ -24,6 +24,8 @@
typedef struct QVirtioPCIForeachData {
void (*func)(QVirtioDevice *d, void *data);
uint16_t device_type;
+ bool has_slot;
+ int slot;
void *user_data;
} QVirtioPCIForeachData;
@@ -55,10 +57,11 @@ static void qvirtio_pci_foreach_callback(
QVirtioPCIForeachData *d = data;
QVirtioPCIDevice *vpcidev = qpcidevice_to_qvirtiodevice(dev);
- if (vpcidev->vdev.device_type == d->device_type) {
+ if (vpcidev->vdev.device_type == d->device_type &&
+ (!d->has_slot || vpcidev->pdev->devfn == d->slot << 3)) {
d->func(&vpcidev->vdev, d->user_data);
} else {
- g_free(vpcidev);
+ qvirtio_pci_device_free(vpcidev);
}
}
@@ -290,21 +293,39 @@ const QVirtioBus qvirtio_pci = {
.virtqueue_kick = qvirtio_pci_virtqueue_kick,
};
-void qvirtio_pci_foreach(QPCIBus *bus, uint16_t device_type,
+static void qvirtio_pci_foreach(QPCIBus *bus, uint16_t device_type,
+ bool has_slot, int slot,
void (*func)(QVirtioDevice *d, void *data), void *data)
{
QVirtioPCIForeachData d = { .func = func,
.device_type = device_type,
+ .has_slot = has_slot,
+ .slot = slot,
.user_data = data };
qpci_device_foreach(bus, PCI_VENDOR_ID_REDHAT_QUMRANET, -1,
- qvirtio_pci_foreach_callback, &d);
+ qvirtio_pci_foreach_callback, &d);
}
QVirtioPCIDevice *qvirtio_pci_device_find(QPCIBus *bus, uint16_t device_type)
{
QVirtioPCIDevice *dev = NULL;
- qvirtio_pci_foreach(bus, device_type, qvirtio_pci_assign_device, &dev);
+
+ qvirtio_pci_foreach(bus, device_type, false, 0,
+ qvirtio_pci_assign_device, &dev);
+
+ dev->vdev.bus = &qvirtio_pci;
+
+ return dev;
+}
+
+QVirtioPCIDevice *qvirtio_pci_device_find_slot(QPCIBus *bus,
+ uint16_t device_type, int slot)
+{
+ QVirtioPCIDevice *dev = NULL;
+
+ qvirtio_pci_foreach(bus, device_type, true, slot,
+ qvirtio_pci_assign_device, &dev);
dev->vdev.bus = &qvirtio_pci;
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [Qemu-devel] [PATCH 28/28] tests: fix virtio-blk-test leaks
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (26 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 27/28] tests: add specialized device_find function Marc-André Lureau
@ 2017-02-07 13:52 ` Marc-André Lureau
2017-02-07 14:50 ` [Qemu-devel] [PATCH 00/28] Various memory leak fixes no-reply
28 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 13:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
Use qvirtio_pci_device_find_slot() to avoid leaking the non-hp
device. Add assert() to avoid further leaks in the future.
Use qvirtio_pci_device_free() to correctly free QVirtioPCIDevice.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
tests/libqos/virtio-pci.c | 1 +
tests/virtio-blk-test.c | 14 +++++++-------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/tests/libqos/virtio-pci.c b/tests/libqos/virtio-pci.c
index 8a0904bbf0..7ac15c04e1 100644
--- a/tests/libqos/virtio-pci.c
+++ b/tests/libqos/virtio-pci.c
@@ -68,6 +68,7 @@ static void qvirtio_pci_foreach_callback(
static void qvirtio_pci_assign_device(QVirtioDevice *d, void *data)
{
QVirtioPCIDevice **vpcidev = data;
+ assert(!*vpcidev);
*vpcidev = (QVirtioPCIDevice *)d;
}
diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index 10a92b410a..1eee95df49 100644
--- a/tests/virtio-blk-test.c
+++ b/tests/virtio-blk-test.c
@@ -108,7 +108,7 @@ static QVirtioPCIDevice *virtio_blk_pci_init(QPCIBus *bus, int slot)
{
QVirtioPCIDevice *dev;
- dev = qvirtio_pci_device_find(bus, VIRTIO_ID_BLOCK);
+ dev = qvirtio_pci_device_find_slot(bus, VIRTIO_ID_BLOCK, slot);
g_assert(dev != NULL);
g_assert_cmphex(dev->vdev.device_type, ==, VIRTIO_ID_BLOCK);
g_assert_cmphex(dev->pdev->devfn, ==, ((slot << 3) | PCI_FN));
@@ -296,7 +296,7 @@ static void pci_basic(void)
/* End test */
qvirtqueue_cleanup(dev->vdev.bus, &vqpci->vq, qs->alloc);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
qtest_shutdown(qs);
}
@@ -389,7 +389,7 @@ static void pci_indirect(void)
/* End test */
qvirtqueue_cleanup(dev->vdev.bus, &vqpci->vq, qs->alloc);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
qtest_shutdown(qs);
}
@@ -418,7 +418,7 @@ static void pci_config(void)
g_assert_cmpint(capacity, ==, n_size / 512);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
qtest_shutdown(qs);
}
@@ -526,7 +526,7 @@ static void pci_msix(void)
qvirtqueue_cleanup(dev->vdev.bus, &vqpci->vq, qs->alloc);
qpci_msix_disable(dev->pdev);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
qtest_shutdown(qs);
}
@@ -642,7 +642,7 @@ static void pci_idx(void)
qvirtqueue_cleanup(dev->vdev.bus, &vqpci->vq, qs->alloc);
qpci_msix_disable(dev->pdev);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
qtest_shutdown(qs);
}
@@ -661,7 +661,7 @@ static void pci_hotplug(void)
dev = virtio_blk_pci_init(qs->pcibus, PCI_SLOT_HP);
g_assert(dev);
qvirtio_pci_device_disable(dev);
- g_free(dev);
+ qvirtio_pci_device_free(dev);
/* unplug secondary disk */
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
--
2.11.0.295.gd7dffce1c.dirty
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command
2017-02-07 13:51 ` [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command Marc-André Lureau
@ 2017-02-07 14:02 ` Daniel P. Berrange
2017-02-07 15:02 ` Greg Kurz
1 sibling, 0 replies; 37+ messages in thread
From: Daniel P. Berrange @ 2017-02-07 14:02 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel
On Tue, Feb 07, 2017 at 05:51:46PM +0400, Marc-André Lureau wrote:
> No need for strdup, fix leaks when socat is missing.
>
> Spotted by ASAN.
>
> Cc: "Daniel P. Berrange" <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> tests/test-io-channel-command.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
ACK, I've added this to my queue, but if this merges via a
pull request for your entire series, that's fine too.
>
> diff --git a/tests/test-io-channel-command.c b/tests/test-io-channel-command.c
> index 1d1f461bed..46ce1ff01c 100644
> --- a/tests/test-io-channel-command.c
> +++ b/tests/test-io-channel-command.c
> @@ -29,8 +29,8 @@ static void test_io_channel_command_fifo(bool async)
> #define TEST_FIFO "tests/test-io-channel-command.fifo"
> QIOChannel *src, *dst;
> QIOChannelTest *test;
> - char *srcfifo = g_strdup_printf("PIPE:%s,wronly", TEST_FIFO);
> - char *dstfifo = g_strdup_printf("PIPE:%s,rdonly", TEST_FIFO);
> + const char *srcfifo = "PIPE:" TEST_FIFO ",wronly";
> + const char *dstfifo = "PIPE:" TEST_FIFO ",rdonly";
> const char *srcargv[] = {
> "/bin/socat", "-", srcfifo, NULL,
> };
> @@ -59,8 +59,6 @@ static void test_io_channel_command_fifo(bool async)
> object_unref(OBJECT(src));
> object_unref(OBJECT(dst));
>
> - g_free(srcfifo);
> - g_free(dstfifo);
> unlink(TEST_FIFO);
> }
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks
2017-02-07 13:51 ` [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks Marc-André Lureau
@ 2017-02-07 14:38 ` Marc-André Lureau
0 siblings, 0 replies; 37+ messages in thread
From: Marc-André Lureau @ 2017-02-07 14:38 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini
Hi
On Tue, Feb 7, 2017 at 6:08 PM Marc-André Lureau <
marcandre.lureau@redhat.com> wrote:
> Spotted by ASAN.
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> include/hw/ptimer.h | 1 +
> hw/core/ptimer.c | 8 +++
> tests/ptimer-test-stubs.c | 5 ++
> tests/ptimer-test.c | 122
> ++++++++++++++++++++++++++++------------------
> 4 files changed, 89 insertions(+), 47 deletions(-)
>
> diff --git a/include/hw/ptimer.h b/include/hw/ptimer.h
> index 48cccbdb51..eafc3f0a86 100644
> --- a/include/hw/ptimer.h
> +++ b/include/hw/ptimer.h
> @@ -60,6 +60,7 @@ typedef struct ptimer_state ptimer_state;
> typedef void (*ptimer_cb)(void *opaque);
>
> ptimer_state *ptimer_init(QEMUBH *bh, uint8_t policy_mask);
> +void ptimer_free(ptimer_state *s);
> void ptimer_set_period(ptimer_state *s, int64_t period);
> void ptimer_set_freq(ptimer_state *s, uint32_t freq);
> uint64_t ptimer_get_limit(ptimer_state *s);
> diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
> index 3af82afe78..59ccb00550 100644
> --- a/hw/core/ptimer.c
> +++ b/hw/core/ptimer.c
> @@ -12,6 +12,7 @@
> #include "qemu/host-utils.h"
> #include "sysemu/replay.h"
> #include "sysemu/qtest.h"
> +#include "block/aio.h"
>
> #define DELTA_ADJUST 1
> #define DELTA_NO_ADJUST -1
> @@ -353,3 +354,10 @@ ptimer_state *ptimer_init(QEMUBH *bh, uint8_t
> policy_mask)
> s->policy_mask = policy_mask;
> return s;
> }
> +
> +void ptimer_free(ptimer_state *s)
> +{
> + qemu_bh_delete(s->bh);
> + timer_free(s->timer);
> + g_free(s);
> +}
> diff --git a/tests/ptimer-test-stubs.c b/tests/ptimer-test-stubs.c
> index 21d4ebb0fe..8a1b0a336c 100644
> --- a/tests/ptimer-test-stubs.c
> +++ b/tests/ptimer-test-stubs.c
> @@ -108,6 +108,11 @@ QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
> return bh;
> }
>
> +void qemu_bh_delete(QEMUBH *bh)
> +{
> + g_free(bh);
> +}
> +
> void replay_bh_schedule_event(QEMUBH *bh)
> {
> bh->cb(bh->opaque);
> diff --git a/tests/ptimer-test.c b/tests/ptimer-test.c
> index b36a476483..5d1a2a8188 100644
> --- a/tests/ptimer-test.c
> +++ b/tests/ptimer-test.c
> @@ -73,6 +73,7 @@ static void check_set_count(gconstpointer arg)
> ptimer_set_count(ptimer, 1000);
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 1000);
> g_assert_false(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_set_limit(gconstpointer arg)
> @@ -92,6 +93,7 @@ static void check_set_limit(gconstpointer arg)
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 2000);
> g_assert_cmpuint(ptimer_get_limit(ptimer), ==, 2000);
> g_assert_false(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_oneshot(gconstpointer arg)
> @@ -194,6 +196,7 @@ static void check_oneshot(gconstpointer arg)
>
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
> g_assert_false(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_periodic(gconstpointer arg)
> @@ -360,6 +363,7 @@ static void check_periodic(gconstpointer arg)
> g_assert_cmpuint(ptimer_get_count(ptimer), ==,
> (no_round_down ? 8 : 7) + (wrap_policy ? 1 : 0));
> g_assert_false(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_on_the_fly_mode_change(gconstpointer arg)
> @@ -406,6 +410,7 @@ static void check_on_the_fly_mode_change(gconstpointer
> arg)
>
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
> g_assert_true(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_on_the_fly_period_change(gconstpointer arg)
> @@ -438,6 +443,7 @@ static void
> check_on_the_fly_period_change(gconstpointer arg)
>
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
> g_assert_true(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_on_the_fly_freq_change(gconstpointer arg)
> @@ -470,6 +476,7 @@ static void check_on_the_fly_freq_change(gconstpointer
> arg)
>
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 0);
> g_assert_true(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_run_with_period_0(gconstpointer arg)
> @@ -487,6 +494,7 @@ static void check_run_with_period_0(gconstpointer arg)
>
> g_assert_cmpuint(ptimer_get_count(ptimer), ==, 99);
> g_assert_false(triggered);
> + ptimer_free(ptimer);
> }
>
> static void check_run_with_delta_0(gconstpointer arg)
> @@ -591,6 +599,7 @@ static void check_run_with_delta_0(gconstpointer arg)
> g_assert_true(triggered);
>
> ptimer_stop(ptimer);
> + ptimer_free(ptimer);
> }
>
> static void check_periodic_with_load_0(gconstpointer arg)
> @@ -649,6 +658,7 @@ static void check_periodic_with_load_0(gconstpointer
> arg)
> }
>
> ptimer_stop(ptimer);
> + ptimer_free(ptimer);
> }
>
> static void check_oneshot_with_load_0(gconstpointer arg)
> @@ -682,14 +692,14 @@ static void check_oneshot_with_load_0(gconstpointer
> arg)
> } else {
> g_assert_false(triggered);
> }
> +
> + ptimer_free(ptimer);
> }
>
> static void add_ptimer_tests(uint8_t policy)
> {
> - uint8_t *ppolicy = g_malloc(1);
> - char *policy_name = g_malloc0(256);
> -
> - *ppolicy = policy;
> + char policy_name[256] = "";
> + char *tmp;
>
> if (policy == PTIMER_POLICY_DEFAULT) {
> g_sprintf(policy_name, "default");
> @@ -715,49 +725,67 @@ static void add_ptimer_tests(uint8_t policy)
> g_strlcat(policy_name, "no_counter_rounddown,", 256);
> }
>
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/set_count policy=%s", policy_name),
> - ppolicy, check_set_count);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/set_limit policy=%s", policy_name),
> - ppolicy, check_set_limit);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/oneshot policy=%s", policy_name),
> - ppolicy, check_oneshot);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/periodic policy=%s", policy_name),
> - ppolicy, check_periodic);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/on_the_fly_mode_change policy=%s",
> policy_name),
> - ppolicy, check_on_the_fly_mode_change);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/on_the_fly_period_change policy=%s",
> policy_name),
> - ppolicy, check_on_the_fly_period_change);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/on_the_fly_freq_change policy=%s",
> policy_name),
> - ppolicy, check_on_the_fly_freq_change);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/run_with_period_0 policy=%s",
> policy_name),
> - ppolicy, check_run_with_period_0);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/run_with_delta_0 policy=%s",
> policy_name),
> - ppolicy, check_run_with_delta_0);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/periodic_with_load_0 policy=%s",
> policy_name),
> - ppolicy, check_periodic_with_load_0);
> -
> - g_test_add_data_func(
> - g_strdup_printf("/ptimer/oneshot_with_load_0 policy=%s",
> policy_name),
> - ppolicy, check_oneshot_with_load_0);
> + g_test_add_data_func_full(
>
This will fail to build with glib < 2.34. I'll address it in the next
iteration (moving the g_test_add_data_func_full fallback from
822e36ca358c20406c34b7cb585d1ce2456027d5 in glib-compat)
> + tmp = g_strdup_printf("/ptimer/set_count policy=%s", policy_name),
> + g_memdup(&policy, 1), check_set_count, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/set_limit policy=%s", policy_name),
> + g_memdup(&policy, 1), check_set_limit, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/oneshot policy=%s", policy_name),
> + g_memdup(&policy, 1), check_oneshot, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/periodic policy=%s", policy_name),
> + g_memdup(&policy, 1), check_periodic, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/on_the_fly_mode_change policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_on_the_fly_mode_change, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/on_the_fly_period_change
> policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_on_the_fly_period_change, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/on_the_fly_freq_change policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_on_the_fly_freq_change, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/run_with_period_0 policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_run_with_period_0, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/run_with_delta_0 policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_run_with_delta_0, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/periodic_with_load_0 policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_periodic_with_load_0, g_free);
> + g_free(tmp);
> +
> + g_test_add_data_func_full(
> + tmp = g_strdup_printf("/ptimer/oneshot_with_load_0 policy=%s",
> + policy_name),
> + g_memdup(&policy, 1), check_oneshot_with_load_0, g_free);
> + g_free(tmp);
> }
>
> static void add_all_ptimer_policies_comb_tests(void)
> --
> 2.11.0.295.gd7dffce1c.dirty
>
>
> --
Marc-André Lureau
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 00/28] Various memory leak fixes
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
` (27 preceding siblings ...)
2017-02-07 13:52 ` [Qemu-devel] [PATCH 28/28] tests: fix virtio-blk-test leaks Marc-André Lureau
@ 2017-02-07 14:50 ` no-reply
28 siblings, 0 replies; 37+ messages in thread
From: no-reply @ 2017-02-07 14:50 UTC (permalink / raw)
To: marcandre.lureau; +Cc: famz, qemu-devel
Hi,
Your series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Subject: [Qemu-devel] [PATCH 00/28] Various memory leak fixes
Message-id: 20170207135211.15870-1-marcandre.lureau@redhat.com
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=16
make docker-test-quick@centos6
make docker-test-mingw@fedora
make docker-test-build@min-glib
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
002c413 tests: fix virtio-blk-test leaks
f6c27e3 tests: add specialized device_find function
5664fd7 tests: fix usb-test leaks
3d964f6 tests: allows to run single test in usb-hcd-ehci-test
36e0e8b usb: release the created buses
a47692f usb: replace handle_destroy with unrealize
475c8c9 bus: do not unref hotplug handler
bfa841a tests: fix virtio-9p-test leaks
2d6052a tests: fix virtio-scsi-test leak
e1a1dc5 tests: fix e1000e leaks
e8dbb72 tests: fix i440fx-test leaks
2a82b1c tests: fix e1000-test leak
73f1a54 tests: fix tco-test leaks
0f8cbda tests: fix eepro100-test leak
0c93236 pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice
4f5a4b6 tests: fix ipmi-bt-test leak
04aa13a tests: fix ipmi-kcs-test leak
c79b226 tests: fix bios-tables-test leak
a8fbf7a tests: fix hd-geo-test leaks
aa070fb tests: fix ide-test leaks
dc7e6ee tests: fix vhost-user-test leaks
d15b3b8 tests: fix q35-test leaks
1190f41 tests: fix endianness-test leaks
d22a1e7 tests: fix ptimer leaks
87ba799 timer: use an inline function for free
971b81a tests: fix leaks in test-io-channel-command
b651eb4 tests: fix qmp response leak
a7a7d2e qtest: fix a memory leak
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into 'dtc'...
Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
BUILD centos6
make[1]: Entering directory `/var/tmp/patchew-tester-tmp-162t1qqh/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
gcc-4.4.7-17.el6.x86_64
git-1.7.1-4.el6_7.1.x86_64
glib2-devel-2.28.8-5.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=libfdt-devel ccache tar git make gcc g++ zlib-devel glib2-devel SDL-devel pixman-devel epel-release
HOSTNAME=9544b97b56ff
TERM=xterm
MAKEFLAGS= -j16
HISTSIZE=1000
J=16
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install/share/qemu
binary directory /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install/etc
local state directory /var/tmp/qemu-build/install/var
Manual directory /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
RDMA support no
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
GlusterFS support no
Archipelago support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
GEN x86_64-softmmu/config-devices.mak.tmp
GEN qemu-options.def
GEN aarch64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN qmp-introspect.h
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN config-all-devices.mak
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN qapi-types.c
GEN qmp-introspect.c
GEN qapi-event.c
GEN qapi-visit.c
CC qapi/qobject-output-visitor.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qmp-dispatch.o
CC qapi/qobject-input-visitor.o
CC qapi/qmp-registry.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qfloat.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/json-lexer.o
CC qobject/qobject.o
CC qobject/json-parser.o
CC qobject/json-streamer.o
CC trace/control.o
CC util/osdep.o
CC trace/qmp.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/iov.o
CC util/id.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC async.o
CC thread-pool.o
CC block.o
CC main-loop.o
CC blockjob.o
CC iohandler.o
CC qemu-timer.o
CC aio-posix.o
CC qemu-io-cmds.o
CC replication.o
CC block/qcow.o
CC block/raw-format.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/parallels.o
CC block/quorum.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-glib.o
CC crypto/desrfb.o
CC crypto/aes.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain64.o
CC crypto/ivgen-plain.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-command.o
CC io/channel-buffer.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC qemu-bridge-helper.o
CC blockdev.o
CC iothread.o
CC blockdev-nbd.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC page_cache.o
CC accel.o
CC bt-host.o
CC dma-helpers.o
CC bt-vhci.o
CC vl.o
CC tpm.o
CC device_tree.o
GEN qmp-marshal.c
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/msmouse.o
CC backends/testdev.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC hw/acpi/core.o
CC fsdev/qemu-fsdev-opts.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/aml-build.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259_common.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/apm.o
CC hw/isa/isa-bus.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/net/ne2000.o
CC hw/misc/arm11scu.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_util.o
CC hw/usb/combined-packet.o
CC hw/usb/core.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-mtp.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/qemu-file.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/tap.o
CC net/vhost-user.o
CC net/tap-linux.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-ws.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-jobs.o
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
CC qga/main.o
CC qga/guest-agent-command-state.o
CC qga/commands-posix.o
AS optionrom/multiboot.o
CC qga/channel-posix.o
AS optionrom/linuxboot.o
CC qga/qapi-generated/qga-qapi-types.o
CC optionrom/linuxboot_dma.o
CC qga/qapi-generated/qga-qapi-visit.o
AS optionrom/kvmvapic.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
CC qga/qapi-generated/qga-qmp-marshal.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/kvmvapic.img
SIGN optionrom/multiboot.bin
BUILD optionrom/kvmvapic.raw
SIGN optionrom/linuxboot.bin
BUILD optionrom/linuxboot_dma.raw
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot_dma.bin
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
AR libqemustub.a
CC qapi-event.o
CC qemu-img.o
CC qmp-marshal.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/virtio/trace.o
CC hw/net/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/mem/trace.o
CC hw/isa/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
AR libqemuutil.a
LINK qemu-ga
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-io
LINK qemu-bridge-helper
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
LINK qemu-img
GEN aarch64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/translate-common.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/cpu-exec.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
CC x86_64-softmmu/tcg-runtime.o
CC x86_64-softmmu/hax-stub.o
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/bootdevice.o
CC x86_64-softmmu/kvm-all.o
CC x86_64-softmmu/memory.o
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/translate-all.o
CC x86_64-softmmu/cputlb.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC x86_64-softmmu/migration/savevm.o
CC x86_64-softmmu/xen-common-stub.o
CC x86_64-softmmu/xen-hvm-stub.o
CC aarch64-softmmu/cpu-exec.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/translate-common.o
CC aarch64-softmmu/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/cpu/core.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/tcg-runtime.o
CC x86_64-softmmu/hw/intc/apic_common.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC aarch64-softmmu/kvm-stub.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/bootdevice.o
CC aarch64-softmmu/cputlb.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/migration/savevm.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/xen-common-stub.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/xen-hvm-stub.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/vfio/common.o
CC x86_64-softmmu/hw/vfio/pci.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/vfio/calxeda-xgmac.o
CC x86_64-softmmu/hw/vfio/amd-xgbe.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/cpu/core.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/display/dpcd.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1055: warning: ‘pch_rev_id’ may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/clock.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC x86_64-softmmu/hw/i386/kvm/apic.o
CC x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm.o
CC aarch64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:495: warning: ‘notify_method’ may be used uninitialized in this function
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o
CC aarch64-softmmu/hw/vfio/amd-xgbe.o
CC aarch64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/vhost.o
CC aarch64-softmmu/hw/virtio/vhost-backend.o
CC aarch64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
LINK x86_64-softmmu/qemu-system-x86_64
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:6369: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:8096: warning: ‘rmode’ may be used uninitialized in this function
LINK aarch64-softmmu/qemu-system-aarch64
TEST tests/qapi-schema/alternate-any.out
TEST tests/qapi-schema/alternate-array.out
TEST tests/qapi-schema/alternate-base.out
TEST tests/qapi-schema/alternate-clash.out
TEST tests/qapi-schema/alternate-conflict-dict.out
TEST tests/qapi-schema/alternate-conflict-string.out
TEST tests/qapi-schema/alternate-empty.out
TEST tests/qapi-schema/alternate-unknown.out
TEST tests/qapi-schema/alternate-nested.out
TEST tests/qapi-schema/args-any.out
TEST tests/qapi-schema/args-alternate.out
TEST tests/qapi-schema/args-array-unknown.out
TEST tests/qapi-schema/args-array-empty.out
TEST tests/qapi-schema/args-bad-boxed.out
TEST tests/qapi-schema/args-boxed-empty.out
TEST tests/qapi-schema/args-boxed-anon.out
TEST tests/qapi-schema/args-boxed-string.out
TEST tests/qapi-schema/args-int.out
TEST tests/qapi-schema/args-invalid.out
TEST tests/qapi-schema/args-member-array-bad.out
TEST tests/qapi-schema/args-member-case.out
TEST tests/qapi-schema/args-member-unknown.out
TEST tests/qapi-schema/args-name-clash.out
TEST tests/qapi-schema/args-unknown.out
TEST tests/qapi-schema/args-union.out
TEST tests/qapi-schema/bad-data.out
TEST tests/qapi-schema/bad-base.out
TEST tests/qapi-schema/bad-ident.out
TEST tests/qapi-schema/bad-type-bool.out
TEST tests/qapi-schema/bad-type-dict.out
TEST tests/qapi-schema/bad-type-int.out
TEST tests/qapi-schema/base-cycle-direct.out
TEST tests/qapi-schema/base-cycle-indirect.out
TEST tests/qapi-schema/command-int.out
TEST tests/qapi-schema/comments.out
TEST tests/qapi-schema/doc-bad-args.out
TEST tests/qapi-schema/doc-bad-symbol.out
TEST tests/qapi-schema/doc-duplicated-arg.out
TEST tests/qapi-schema/doc-duplicated-return.out
TEST tests/qapi-schema/doc-duplicated-since.out
TEST tests/qapi-schema/doc-empty-arg.out
TEST tests/qapi-schema/doc-empty-section.out
TEST tests/qapi-schema/doc-empty-symbol.out
TEST tests/qapi-schema/doc-interleaved-section.out
TEST tests/qapi-schema/doc-invalid-end.out
TEST tests/qapi-schema/doc-invalid-return.out
TEST tests/qapi-schema/doc-invalid-end2.out
TEST tests/qapi-schema/doc-invalid-section.out
TEST tests/qapi-schema/doc-invalid-start.out
TEST tests/qapi-schema/doc-missing-colon.out
TEST tests/qapi-schema/doc-missing-expr.out
TEST tests/qapi-schema/doc-missing-space.out
TEST tests/qapi-schema/doc-optional.out
TEST tests/qapi-schema/double-data.out
TEST tests/qapi-schema/duplicate-key.out
TEST tests/qapi-schema/double-type.out
TEST tests/qapi-schema/empty.out
TEST tests/qapi-schema/enum-bad-name.out
TEST tests/qapi-schema/enum-bad-prefix.out
TEST tests/qapi-schema/enum-dict-member.out
TEST tests/qapi-schema/enum-clash-member.out
TEST tests/qapi-schema/enum-int-member.out
TEST tests/qapi-schema/enum-member-case.out
TEST tests/qapi-schema/enum-missing-data.out
TEST tests/qapi-schema/enum-wrong-data.out
TEST tests/qapi-schema/escape-outside-string.out
TEST tests/qapi-schema/escape-too-big.out
TEST tests/qapi-schema/escape-too-short.out
TEST tests/qapi-schema/event-boxed-empty.out
TEST tests/qapi-schema/event-case.out
TEST tests/qapi-schema/event-nest-struct.out
TEST tests/qapi-schema/flat-union-array-branch.out
TEST tests/qapi-schema/flat-union-bad-base.out
TEST tests/qapi-schema/flat-union-bad-discriminator.out
TEST tests/qapi-schema/flat-union-base-any.out
TEST tests/qapi-schema/flat-union-base-union.out
TEST tests/qapi-schema/flat-union-clash-member.out
TEST tests/qapi-schema/flat-union-empty.out
TEST tests/qapi-schema/flat-union-incomplete-branch.out
TEST tests/qapi-schema/flat-union-inline.out
TEST tests/qapi-schema/flat-union-int-branch.out
TEST tests/qapi-schema/flat-union-invalid-branch-key.out
TEST tests/qapi-schema/flat-union-invalid-discriminator.out
TEST tests/qapi-schema/flat-union-no-base.out
TEST tests/qapi-schema/flat-union-optional-discriminator.out
TEST tests/qapi-schema/flat-union-string-discriminator.out
TEST tests/qapi-schema/funny-char.out
TEST tests/qapi-schema/ident-with-escape.out
TEST tests/qapi-schema/include-before-err.out
TEST tests/qapi-schema/include-cycle.out
TEST tests/qapi-schema/include-format-err.out
TEST tests/qapi-schema/include-nested-err.out
TEST tests/qapi-schema/include-no-file.out
TEST tests/qapi-schema/include-non-file.out
TEST tests/qapi-schema/include-relpath.out
TEST tests/qapi-schema/include-repetition.out
TEST tests/qapi-schema/include-self-cycle.out
TEST tests/qapi-schema/include-simple.out
TEST tests/qapi-schema/indented-expr.out
TEST tests/qapi-schema/leading-comma-list.out
TEST tests/qapi-schema/leading-comma-object.out
TEST tests/qapi-schema/missing-colon.out
TEST tests/qapi-schema/missing-comma-list.out
TEST tests/qapi-schema/missing-comma-object.out
TEST tests/qapi-schema/missing-type.out
TEST tests/qapi-schema/nested-struct-data.out
TEST tests/qapi-schema/non-objects.out
TEST tests/qapi-schema/quoted-structural-chars.out
TEST tests/qapi-schema/qapi-schema-test.out
TEST tests/qapi-schema/redefined-builtin.out
TEST tests/qapi-schema/redefined-command.out
TEST tests/qapi-schema/redefined-event.out
TEST tests/qapi-schema/redefined-type.out
TEST tests/qapi-schema/reserved-enum-q.out
TEST tests/qapi-schema/reserved-command-q.out
TEST tests/qapi-schema/reserved-member-has.out
TEST tests/qapi-schema/reserved-member-q.out
TEST tests/qapi-schema/reserved-member-u.out
TEST tests/qapi-schema/reserved-member-underscore.out
TEST tests/qapi-schema/reserved-type-kind.out
TEST tests/qapi-schema/reserved-type-list.out
TEST tests/qapi-schema/returns-alternate.out
TEST tests/qapi-schema/returns-array-bad.out
TEST tests/qapi-schema/returns-dict.out
TEST tests/qapi-schema/returns-unknown.out
TEST tests/qapi-schema/returns-whitelist.out
TEST tests/qapi-schema/struct-base-clash-deep.out
TEST tests/qapi-schema/struct-base-clash.out
TEST tests/qapi-schema/struct-data-invalid.out
TEST tests/qapi-schema/struct-member-invalid.out
TEST tests/qapi-schema/trailing-comma-list.out
TEST tests/qapi-schema/trailing-comma-object.out
TEST tests/qapi-schema/type-bypass-bad-gen.out
TEST tests/qapi-schema/unclosed-list.out
TEST tests/qapi-schema/unclosed-object.out
TEST tests/qapi-schema/unicode-str.out
TEST tests/qapi-schema/unclosed-string.out
TEST tests/qapi-schema/union-base-no-discriminator.out
TEST tests/qapi-schema/union-branch-case.out
TEST tests/qapi-schema/union-clash-branches.out
TEST tests/qapi-schema/union-empty.out
TEST tests/qapi-schema/union-invalid-base.out
TEST tests/qapi-schema/union-unknown.out
TEST tests/qapi-schema/union-optional-branch.out
TEST tests/qapi-schema/unknown-escape.out
CC tests/check-qdict.o
TEST tests/qapi-schema/unknown-expr-key.out
CC tests/test-char.o
CC tests/check-qint.o
CC tests/check-qfloat.o
CC tests/check-qstring.o
CC tests/check-qlist.o
CC tests/check-qnull.o
CC tests/check-qjson.o
CC tests/test-qobject-output-visitor.o
GEN tests/test-qapi-visit.c
GEN tests/test-qapi-event.c
GEN tests/test-qapi-types.c
GEN tests/test-qmp-introspect.c
CC tests/test-clone-visitor.o
CC tests/test-qobject-input-visitor.o
CC tests/test-qobject-input-strict.o
CC tests/test-qmp-commands.o
GEN tests/test-qmp-marshal.c
CC tests/test-string-input-visitor.o
CC tests/test-qmp-event.o
CC tests/test-string-output-visitor.o
CC tests/test-opts-visitor.o
CC tests/test-coroutine.o
CC tests/test-visitor-serialization.o
CC tests/test-iov.o
CC tests/test-aio.o
CC tests/test-throttle.o
CC tests/test-thread-pool.o
CC tests/test-hbitmap.o
CC tests/test-blockjob.o
CC tests/test-blockjob-txn.o
CC tests/test-x86-cpuid.o
CC tests/test-xbzrle.o
CC tests/test-vmstate.o
CC tests/test-cutils.o
CC tests/test-shift128.o
CC tests/test-mul64.o
CC tests/test-int128.o
CC tests/rcutorture.o
CC tests/test-rcu-list.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: ‘__noclone__’ attribute directive ignored
CC tests/test-qdist.o
CC tests/test-qht.o
CC tests/test-qht-par.o
CC tests/qht-bench.o
CC tests/test-bitops.o
CC tests/test-bitcnt.o
CC tests/check-qom-interface.o
CC tests/check-qom-proplist.o
CC tests/test-qemu-opts.o
CC tests/test-write-threshold.o
CC tests/test-crypto-hash.o
CC tests/test-crypto-hmac.o
CC tests/test-crypto-cipher.o
CC tests/test-crypto-secret.o
CC tests/test-qga.o
CC tests/libqtest.o
CC tests/test-timed-average.o
CC tests/test-io-task.o
CC tests/test-io-channel-socket.o
CC tests/io-channel-helpers.o
CC tests/test-io-channel-file.o
CC tests/test-io-channel-command.o
CC tests/test-io-channel-buffer.o
CC tests/test-base64.o
CC tests/test-crypto-ivgen.o
CC tests/test-crypto-afsplit.o
CC tests/test-crypto-xts.o
CC tests/test-crypto-block.o
CC tests/test-logging.o
CC tests/test-replication.o
CC tests/test-uuid.o
CC tests/test-bufferiszero.o
CC tests/ptimer-test.o
CC tests/ptimer-test-stubs.o
CC tests/vhost-user-test.o
CC tests/libqos/pci.o
CC tests/libqos/fw_cfg.o
CC tests/libqos/malloc.o
CC tests/libqos/i2c.o
CC tests/libqos/libqos.o
CC tests/libqos/malloc-spapr.o
CC tests/libqos/rtas.o
CC tests/libqos/libqos-spapr.o
CC tests/libqos/pci-spapr.o
CC tests/libqos/pci-pc.o
CC tests/libqos/malloc-pc.o
CC tests/libqos/libqos-pc.o
CC tests/libqos/ahci.o
CC tests/libqos/virtio.o
CC tests/libqos/virtio-pci.o
CC tests/libqos/virtio-mmio.o
CC tests/libqos/malloc-generic.o
CC tests/endianness-test.o
CC tests/fdc-test.o
CC tests/ide-test.o
CC tests/ahci-test.o
CC tests/hd-geo-test.o
CC tests/boot-order-test.o
CC tests/bios-tables-test.o
CC tests/boot-sector.o
CC tests/boot-serial-test.o
CC tests/pxe-test.o
CC tests/rtc-test.o
CC tests/ipmi-kcs-test.o
CC tests/ipmi-bt-test.o
CC tests/i440fx-test.o
CC tests/fw_cfg-test.o
CC tests/drive_del-test.o
CC tests/wdt_ib700-test.o
CC tests/tco-test.o
CC tests/e1000-test.o
CC tests/e1000e-test.o
CC tests/rtl8139-test.o
CC tests/pcnet-test.o
CC tests/eepro100-test.o
CC tests/ne2000-test.o
CC tests/nvme-test.o
CC tests/ac97-test.o
CC tests/es1370-test.o
CC tests/virtio-net-test.o
CC tests/virtio-balloon-test.o
CC tests/virtio-blk-test.o
/tmp/qemu-test/src/tests/ptimer-test.c: In function ‘add_ptimer_tests’:
/tmp/qemu-test/src/tests/ptimer-test.c:728: warning: implicit declaration of function ‘g_test_add_data_func_full’
/tmp/qemu-test/src/tests/ptimer-test.c:728: warning: nested extern declaration of ‘g_test_add_data_func_full’
CC tests/virtio-rng-test.o
CC tests/virtio-scsi-test.o
CC tests/virtio-serial-test.o
CC tests/virtio-console-test.o
CC tests/ipoctal232-test.o
CC tests/tpci200-test.o
CC tests/display-vga-test.o
CC tests/intel-hda-test.o
CC tests/ivshmem-test.o
CC tests/vmxnet3-test.o
CC tests/pvpanic-test.o
CC tests/i82801b11-test.o
CC tests/ioh3420-test.o
CC tests/usb-hcd-ohci-test.o
CC tests/libqos/usb.o
CC tests/usb-hcd-uhci-test.o
CC tests/usb-hcd-ehci-test.o
CC tests/usb-hcd-xhci-test.o
CC tests/pc-cpu-test.o
CC tests/q35-test.o
/tmp/qemu-test/src/tests/ide-test.c: In function ‘cdrom_pio_impl’:
/tmp/qemu-test/src/tests/ide-test.c:802: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
/tmp/qemu-test/src/tests/ide-test.c: In function ‘test_cdrom_dma’:
/tmp/qemu-test/src/tests/ide-test.c:898: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC tests/test-filter-mirror.o
CC tests/test-netfilter.o
CC tests/test-filter-redirector.o
CC tests/postcopy-test.o
CC tests/test-x86-cpuid-compat.o
CC tests/device-introspect-test.o
CC tests/qom-test.o
LINK tests/check-qdict
LINK tests/test-char
LINK tests/check-qfloat
LINK tests/check-qint
LINK tests/check-qstring
LINK tests/check-qlist
LINK tests/check-qnull
CC tests/test-qapi-visit.o
LINK tests/check-qjson
CC tests/test-qapi-event.o
CC tests/test-qapi-types.o
CC tests/test-qmp-introspect.o
CC tests/test-qmp-marshal.o
LINK tests/test-coroutine
LINK tests/test-visitor-serialization
LINK tests/test-iov
LINK tests/test-aio
LINK tests/test-throttle
LINK tests/test-thread-pool
LINK tests/test-hbitmap
LINK tests/test-blockjob
LINK tests/test-blockjob-txn
LINK tests/test-x86-cpuid
LINK tests/test-xbzrle
LINK tests/test-vmstate
LINK tests/test-cutils
LINK tests/test-shift128
LINK tests/test-mul64
LINK tests/test-int128
LINK tests/rcutorture
LINK tests/test-rcu-list
LINK tests/test-qdist
LINK tests/test-qht
LINK tests/qht-bench
LINK tests/test-bitops
LINK tests/test-bitcnt
LINK tests/check-qom-interface
LINK tests/check-qom-proplist
LINK tests/test-qemu-opts
LINK tests/test-write-threshold
LINK tests/test-crypto-hash
LINK tests/test-crypto-hmac
LINK tests/test-crypto-cipher
LINK tests/test-crypto-secret
LINK tests/test-qga
LINK tests/test-timed-average
LINK tests/test-io-task
LINK tests/test-io-channel-socket
LINK tests/test-io-channel-file
LINK tests/test-io-channel-command
LINK tests/test-io-channel-buffer
LINK tests/test-base64
LINK tests/test-crypto-ivgen
LINK tests/test-crypto-afsplit
LINK tests/test-crypto-xts
LINK tests/test-crypto-block
LINK tests/test-logging
LINK tests/test-replication
LINK tests/test-bufferiszero
LINK tests/test-uuid
LINK tests/ptimer-test
LINK tests/vhost-user-test
tests/ptimer-test.o: In function `add_ptimer_tests':
/tmp/qemu-test/src/tests/ptimer-test.c:728: undefined reference to `g_test_add_data_func_full'
/tmp/qemu-test/src/tests/ptimer-test.c:733: undefined reference to `g_test_add_data_func_full'
/tmp/qemu-test/src/tests/ptimer-test.c:738: undefined reference to `g_test_add_data_func_full'
/tmp/qemu-test/src/tests/ptimer-test.c:743: undefined reference to `g_test_add_data_func_full'
/tmp/qemu-test/src/tests/ptimer-test.c:748: undefined reference to `g_test_add_data_func_full'
tests/ptimer-test.o:/tmp/qemu-test/src/tests/ptimer-test.c:754: more undefined references to `g_test_add_data_func_full' follow
collect2: ld returned 1 exit status
make: *** [tests/ptimer-test] Error 1
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes. Stop.
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-162t1qqh/src'
make: *** [docker-run-test-quick@centos6] Error 2
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command
2017-02-07 13:51 ` [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command Marc-André Lureau
2017-02-07 14:02 ` Daniel P. Berrange
@ 2017-02-07 15:02 ` Greg Kurz
1 sibling, 0 replies; 37+ messages in thread
From: Greg Kurz @ 2017-02-07 15:02 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel
On Tue, 7 Feb 2017 17:51:46 +0400
Marc-André Lureau <marcandre.lureau@redhat.com> wrote:
> No need for strdup, fix leaks when socat is missing.
>
> Spotted by ASAN.
>
> Cc: "Daniel P. Berrange" <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> tests/test-io-channel-command.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/tests/test-io-channel-command.c b/tests/test-io-channel-command.c
> index 1d1f461bed..46ce1ff01c 100644
> --- a/tests/test-io-channel-command.c
> +++ b/tests/test-io-channel-command.c
> @@ -29,8 +29,8 @@ static void test_io_channel_command_fifo(bool async)
> #define TEST_FIFO "tests/test-io-channel-command.fifo"
> QIOChannel *src, *dst;
> QIOChannelTest *test;
> - char *srcfifo = g_strdup_printf("PIPE:%s,wronly", TEST_FIFO);
> - char *dstfifo = g_strdup_printf("PIPE:%s,rdonly", TEST_FIFO);
> + const char *srcfifo = "PIPE:" TEST_FIFO ",wronly";
> + const char *dstfifo = "PIPE:" TEST_FIFO ",rdonly";
> const char *srcargv[] = {
> "/bin/socat", "-", srcfifo, NULL,
> };
> @@ -59,8 +59,6 @@ static void test_io_channel_command_fifo(bool async)
> object_unref(OBJECT(src));
> object_unref(OBJECT(dst));
>
> - g_free(srcfifo);
> - g_free(dstfifo);
> unlink(TEST_FIFO);
> }
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 04/28] timer: use an inline function for free
2017-02-07 13:51 ` [Qemu-devel] [PATCH 04/28] timer: use an inline function for free Marc-André Lureau
@ 2017-02-07 16:35 ` Greg Kurz
0 siblings, 0 replies; 37+ messages in thread
From: Greg Kurz @ 2017-02-07 16:35 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel, Paolo Bonzini
On Tue, 7 Feb 2017 17:51:47 +0400
Marc-André Lureau <marcandre.lureau@redhat.com> wrote:
> Similarly to allocation, do it from an inline function. This allows
> tests to only use the headers for allocation/free of timer.
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> include/qemu/timer.h | 5 ++++-
> qemu-timer.c | 5 -----
> 2 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/include/qemu/timer.h b/include/qemu/timer.h
> index 9abed51ae8..26e628584c 100644
> --- a/include/qemu/timer.h
> +++ b/include/qemu/timer.h
> @@ -610,7 +610,10 @@ void timer_deinit(QEMUTimer *ts);
> *
> * Free a timer (it must not be on the active list)
> */
> -void timer_free(QEMUTimer *ts);
> +static inline void timer_free(QEMUTimer *ts)
> +{
> + g_free(ts);
> +}
>
> /**
> * timer_del:
> diff --git a/qemu-timer.c b/qemu-timer.c
> index ff620ecff7..6cf70b96f6 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -355,11 +355,6 @@ void timer_deinit(QEMUTimer *ts)
> ts->timer_list = NULL;
> }
>
> -void timer_free(QEMUTimer *ts)
> -{
> - g_free(ts);
> -}
> -
> static void timer_del_locked(QEMUTimerList *timer_list, QEMUTimer *ts)
> {
> QEMUTimer **pt, *t;
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks
2017-02-07 13:52 ` [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks Marc-André Lureau
@ 2017-02-07 16:43 ` Greg Kurz
0 siblings, 0 replies; 37+ messages in thread
From: Greg Kurz @ 2017-02-07 16:43 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel, Aneesh Kumar K.V
On Tue, 7 Feb 2017 17:52:04 +0400
Marc-André Lureau <marcandre.lureau@redhat.com> wrote:
> Spotted by ASAN.
>
> Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
> Cc: Greg Kurz <groug@kaod.org>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
I was a bit confused at first but hopefully I could find the definition of
qvirtio_pci_device_free() in patch 08/28 :)
Reviewed-by: Greg Kurz <groug@kaod.org>
> tests/virtio-9p-test.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tests/virtio-9p-test.c b/tests/virtio-9p-test.c
> index 9556291567..43a1ad813f 100644
> --- a/tests/virtio-9p-test.c
> +++ b/tests/virtio-9p-test.c
> @@ -80,7 +80,7 @@ static void qvirtio_9p_pci_stop(QVirtIO9P *v9p)
> {
> qvirtqueue_cleanup(v9p->dev->bus, v9p->vq, v9p->qs->alloc);
> qvirtio_pci_device_disable(container_of(v9p->dev, QVirtioPCIDevice, vdev));
> - g_free(v9p->dev);
> + qvirtio_pci_device_free((QVirtioPCIDevice *)v9p->dev);
> qvirtio_9p_stop(v9p);
> }
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak
2017-02-07 13:52 ` [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak Marc-André Lureau
@ 2017-02-07 16:43 ` Greg Kurz
0 siblings, 0 replies; 37+ messages in thread
From: Greg Kurz @ 2017-02-07 16:43 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel, Paolo Bonzini
On Tue, 7 Feb 2017 17:52:03 +0400
Marc-André Lureau <marcandre.lureau@redhat.com> wrote:
> Spotted by ASAN.
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> tests/virtio-scsi-test.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tests/virtio-scsi-test.c b/tests/virtio-scsi-test.c
> index 69220ef07b..0eabd56fd9 100644
> --- a/tests/virtio-scsi-test.c
> +++ b/tests/virtio-scsi-test.c
> @@ -63,7 +63,7 @@ static void qvirtio_scsi_pci_free(QVirtIOSCSI *vs)
> qvirtqueue_cleanup(vs->dev->bus, vs->vq[i], vs->qs->alloc);
> }
> qvirtio_pci_device_disable(container_of(vs->dev, QVirtioPCIDevice, vdev));
> - g_free(vs->dev);
> + qvirtio_pci_device_free((QVirtioPCIDevice *)vs->dev);
> qvirtio_scsi_stop(vs->qs);
> g_free(vs);
> }
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks
2017-02-07 13:51 ` [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks Marc-André Lureau
@ 2017-02-08 18:16 ` John Snow
0 siblings, 0 replies; 37+ messages in thread
From: John Snow @ 2017-02-08 18:16 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel
On 02/07/2017 08:51 AM, Marc-André Lureau wrote:
> Spotted by ASAN.
>
> Cc: John Snow <jsnow@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> tests/ide-test.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/tests/ide-test.c b/tests/ide-test.c
> index fb541f88b5..2fa97bc36b 100644
> --- a/tests/ide-test.c
> +++ b/tests/ide-test.c
> @@ -339,6 +339,7 @@ static void test_bmdma_simple_rw(void)
> g_assert(memcmp(buf, cmpbuf, len) == 0);
>
>
> + free_pci_device(dev);
> g_free(buf);
> g_free(cmpbuf);
> }
> @@ -369,6 +370,7 @@ static void test_bmdma_short_prdt(void)
> prdt, ARRAY_SIZE(prdt), NULL);
> g_assert_cmphex(status, ==, 0);
> assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
> + free_pci_device(dev);
> }
>
> static void test_bmdma_one_sector_short_prdt(void)
> @@ -398,6 +400,7 @@ static void test_bmdma_one_sector_short_prdt(void)
> prdt, ARRAY_SIZE(prdt), NULL);
> g_assert_cmphex(status, ==, 0);
> assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
> + free_pci_device(dev);
> }
>
> static void test_bmdma_long_prdt(void)
> @@ -426,6 +429,7 @@ static void test_bmdma_long_prdt(void)
> prdt, ARRAY_SIZE(prdt), NULL);
> g_assert_cmphex(status, ==, BM_STS_INTR);
> assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
> + free_pci_device(dev);
> }
>
> static void test_bmdma_no_busmaster(void)
> @@ -449,6 +453,7 @@ static void test_bmdma_no_busmaster(void)
> * in practice. At least we want to be aware of any changes. */
> g_assert_cmphex(status, ==, BM_STS_ACTIVE | BM_STS_INTR);
> assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
> + free_pci_device(dev);
> }
>
> static void test_bmdma_setup(void)
> @@ -525,6 +530,7 @@ static void test_identify(void)
> assert_bit_set(buf[85], 0x20);
>
> ide_test_quit();
> + free_pci_device(dev);
> }
>
> /*
> @@ -562,6 +568,7 @@ static void make_dirty(uint8_t device)
> assert_bit_clear(qpci_io_readb(dev, ide_bar, reg_status), DF | ERR);
>
> g_free(buf);
> + free_pci_device(dev);
> }
>
> static void test_flush(void)
> @@ -608,6 +615,7 @@ static void test_flush(void)
> assert_bit_clear(data, BSY | DF | ERR | DRQ);
>
> ide_test_quit();
> + free_pci_device(dev);
> }
>
> static void test_retry_flush(const char *machine)
> @@ -658,6 +666,7 @@ static void test_retry_flush(const char *machine)
> assert_bit_clear(data, BSY | DF | ERR | DRQ);
>
> ide_test_quit();
> + free_pci_device(dev);
> }
>
> static void test_flush_nodev(void)
> @@ -675,6 +684,7 @@ static void test_flush_nodev(void)
>
> /* Just testing that qemu doesn't crash... */
>
> + free_pci_device(dev);
> ide_test_quit();
> }
>
> @@ -741,6 +751,7 @@ static uint8_t ide_wait_clear(uint8_t flag)
> while (true) {
> data = qpci_io_readb(dev, ide_bar, reg_status);
> if (!(data & flag)) {
> + free_pci_device(dev);
> return data;
> }
> if (difftime(time(NULL), st) > 5.0) {
> @@ -850,6 +861,7 @@ static void cdrom_pio_impl(int nblocks)
> g_free(pattern);
> g_free(rx);
> test_bmdma_teardown();
> + free_pci_device(dev);
> }
>
> static void test_cdrom_pio(void)
>
Reviewed-by: John Snow <jsnow@redhat.com>
And since valgrind yelled at me when I went to test it, I sent a related
patch out too.
--js
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2017-02-08 18:16 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-07 13:51 [Qemu-devel] [PATCH 00/28] Various memory leak fixes Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 01/28] qtest: fix a memory leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 02/28] tests: fix qmp response leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 03/28] tests: fix leaks in test-io-channel-command Marc-André Lureau
2017-02-07 14:02 ` Daniel P. Berrange
2017-02-07 15:02 ` Greg Kurz
2017-02-07 13:51 ` [Qemu-devel] [PATCH 04/28] timer: use an inline function for free Marc-André Lureau
2017-02-07 16:35 ` Greg Kurz
2017-02-07 13:51 ` [Qemu-devel] [PATCH 05/28] tests: fix ptimer leaks Marc-André Lureau
2017-02-07 14:38 ` Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 06/28] tests: fix endianness-test leaks Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 07/28] tests: fix q35-test leaks Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 08/28] tests: fix vhost-user-test leaks Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 09/28] tests: fix ide-test leaks Marc-André Lureau
2017-02-08 18:16 ` John Snow
2017-02-07 13:51 ` [Qemu-devel] [PATCH 10/28] tests: fix hd-geo-test leaks Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 11/28] tests: fix bios-tables-test leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 12/28] tests: fix ipmi-kcs-test leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 13/28] tests: fix ipmi-bt-test leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 14/28] pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 15/28] tests: fix eepro100-test leak Marc-André Lureau
2017-02-07 13:51 ` [Qemu-devel] [PATCH 16/28] tests: fix tco-test leaks Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 17/28] tests: fix e1000-test leak Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 18/28] tests: fix i440fx-test leaks Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 19/28] tests: fix e1000e leaks Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 20/28] tests: fix virtio-scsi-test leak Marc-André Lureau
2017-02-07 16:43 ` Greg Kurz
2017-02-07 13:52 ` [Qemu-devel] [PATCH 21/28] tests: fix virtio-9p-test leaks Marc-André Lureau
2017-02-07 16:43 ` Greg Kurz
2017-02-07 13:52 ` [Qemu-devel] [PATCH 22/28] bus: do not unref hotplug handler Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 23/28] usb: replace handle_destroy with unrealize Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 24/28] usb: release the created buses Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 25/28] tests: allows to run single test in usb-hcd-ehci-test Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 26/28] tests: fix usb-test leaks Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 27/28] tests: add specialized device_find function Marc-André Lureau
2017-02-07 13:52 ` [Qemu-devel] [PATCH 28/28] tests: fix virtio-blk-test leaks Marc-André Lureau
2017-02-07 14:50 ` [Qemu-devel] [PATCH 00/28] Various memory leak fixes no-reply
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.