diff mbox

[v2,20/30] tests: fix e1000e leaks

Message ID 20170221141451.28305-21-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau Feb. 21, 2017, 2:14 p.m. UTC
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(-)

Comments

Markus Armbruster Feb. 27, 2017, 2:12 p.m. UTC | #1
Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> 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)
   {
       static const int e1000e_vendor_id = 0x8086;
       static const int e1000e_dev_id = 0x10D3;

       QPCIDevice *e1000e_dev = NULL;

       qpci_device_foreach(bus, e1000e_vendor_id, e1000e_dev_id,
           e1000e_pci_foreach_callback, &e1000e_dev);

This hunk adds an assertion.  I guess it checks that we're finding no
more than one e1000e device.  The connection to the stated purpose of
this patch isn't obvious, but I think I got it: each hit allocates, but
you have only one g_free(), below.  Okay, but explaining this briefly
the commit message wouldn't hurt.

> @@ -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();
>  }

Reviewed-by: Markus Armbruster <armbru@redhat.com>
diff mbox

Patch

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();
 }