2013-12-20 12:03:14

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATCH 1/2] android/hal-bluetooth: Free device on close()

From: Andrei Emeltchenko <[email protected]>

---
android/hal-bluetooth.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 4ef2ebe..2232ebe 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -891,6 +891,8 @@ static int close_bluetooth(struct hw_device_t *device)

cleanup();

+ free(device);
+
return 0;
}

--
1.8.3.2



2013-12-20 12:22:04

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH 1/2] android/hal-bluetooth: Free device on close()

Hi Andrei,

On Fri, Dec 20, 2013, Andrei Emeltchenko wrote:
> ---
> android/hal-bluetooth.c | 2 ++
> 1 file changed, 2 insertions(+)

Both patches have been applied. Thanks.

Johan

2013-12-20 12:03:15

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATCH 2/2] android/tester: Fix memory leak using close()

From: Andrei Emeltchenko <[email protected]>

Use device->close() to free device structure. This is the way other
Android devices are closed. Fixes following warnings:

...
==26231== 80 bytes in 1 blocks are definitely lost in loss record 25 of
31
==26231== at 0x4C2A2DB: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26231== by 0x40F153: open_bluetooth (hal-bluetooth.c:800)
==26231== by 0x40C8D8: setup (android-tester.c:835)
==26231== by 0x40CB20: setup_socket_interface_enabled
(android-tester.c:1166)
==26231== by 0x409C15: setup_callback (tester.c:373)
==26231== by 0x4E7C3B5: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==26231== by 0x4E7C707: ??? (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==26231== by 0x4E7CB09: g_main_loop_run (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==26231== by 0x40A83C: tester_run (tester.c:784)
==26231== by 0x40362A: main (android-tester.c:1643)
...
---
android/android-tester.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/android/android-tester.c b/android/android-tester.c
index fa65416..688e33c 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
@@ -109,6 +109,7 @@ struct test_data {
const void *test_data;
pid_t bluetoothd_pid;

+ struct hw_device_t *device;
const bt_interface_t *if_bluetooth;
const btsock_interface_t *if_sock;

@@ -838,6 +839,8 @@ static void setup(struct test_data *data)
return;
}

+ data->device = device;
+
data->if_bluetooth = ((bluetooth_device_t *)
device)->get_bluetooth_interface();
if (!data->if_bluetooth) {
@@ -882,6 +885,8 @@ static void teardown(const void *test_data)
data->if_bluetooth = NULL;
}

+ data->device->close(data->device);
+
if (data->bluetoothd_pid)
waitpid(data->bluetoothd_pid, NULL, 0);

--
1.8.3.2