summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHemant Gupta <hemantg@codeaurora.org>2017-09-13 17:35:03 +0530
committerJack He <siyuanh@google.com>2017-10-02 11:38:38 -0700
commit3d2002ad48c7a69deca8ddd54d4b32ae3c44e117 (patch)
tree19b932aa080cab75a560eed748d94c8f409a41d1
parentbe0a100f9ee1b25a35789e73bb6102054036d1b4 (diff)
downloadandroid_system_bt-3d2002ad48c7a69deca8ddd54d4b32ae3c44e117.tar.gz
android_system_bt-3d2002ad48c7a69deca8ddd54d4b32ae3c44e117.tar.bz2
android_system_bt-3d2002ad48c7a69deca8ddd54d4b32ae3c44e117.zip
HID: Free process_repage_timer to prevent leak
Usecase: 1) Perform BT on/off stress test 2) Check for memory leakage in code in subsequent BT on/off usecase Expectation No memory leak during BT on/off stress test Observed result Memory leakage in hid code where alarm process_repage_timer is not freed and only cancelled Fix: Free alarm process_repage_timer during HID Host deregstration Test: Checked with BT on/off usecase, and alarm process_repage_timer is now freed in every BT on/off usecase. Bug: 65657207 Change-Id: Iccecd126716a5660f4c37ddc917bacee84342297 (cherry picked from commit e6b15cf8251643aced0baf716939a6d0857fccfb)
-rw-r--r--stack/hid/hidh_api.cc10
1 files changed, 5 insertions, 5 deletions
diff --git a/stack/hid/hidh_api.cc b/stack/hid/hidh_api.cc
index 704426fe3..adbc93104 100644
--- a/stack/hid/hidh_api.cc
+++ b/stack/hid/hidh_api.cc
@@ -233,11 +233,6 @@ void HID_HostInit(void) {
uint8_t log_level = hh_cb.trace_level;
memset(&hh_cb, 0, sizeof(tHID_HOST_CTB));
hh_cb.trace_level = log_level;
-
- for (size_t i = 0; i < HID_HOST_MAX_DEVICES; i++) {
- hh_cb.devices[i].conn.process_repage_timer =
- alarm_new("hid_devices_conn.process_repage_timer");
- }
}
/*******************************************************************************
@@ -281,6 +276,10 @@ tHID_STATUS HID_HostRegister(tHID_HOST_DEV_CALLBACK* dev_cback) {
hh_cb.callback = dev_cback;
hh_cb.reg_flag = true;
+ for (size_t i = 0; i < HID_HOST_MAX_DEVICES; i++) {
+ hh_cb.devices[i].conn.process_repage_timer =
+ alarm_new("hid_devices_conn.process_repage_timer");
+ }
return (HID_SUCCESS);
}
@@ -299,6 +298,7 @@ tHID_STATUS HID_HostDeregister(void) {
if (!hh_cb.reg_flag) return (HID_ERR_NOT_REGISTERED);
for (i = 0; i < HID_HOST_MAX_DEVICES; i++) {
+ alarm_free(hh_cb.devices[i].conn.process_repage_timer);
HID_HostRemoveDev(i);
}