diff options
author | Hemant Gupta <hemantg@codeaurora.org> | 2017-09-13 17:35:03 +0530 |
---|---|---|
committer | Jack He <siyuanh@google.com> | 2017-10-02 11:38:38 -0700 |
commit | 3d2002ad48c7a69deca8ddd54d4b32ae3c44e117 (patch) | |
tree | 19b932aa080cab75a560eed748d94c8f409a41d1 | |
parent | be0a100f9ee1b25a35789e73bb6102054036d1b4 (diff) | |
download | android_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.cc | 10 |
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); } |