[9610] wlbt: Fixed deadlock in mxlogger
authorAlbert Cano <a.canocamps@samsung.com>
Tue, 17 Jul 2018 12:40:36 +0000 (13:40 +0100)
committerhskang <hs1218.kang@samsung.com>
Fri, 17 Aug 2018 00:32:57 +0000 (20:32 -0400)
commit045724b5826584e9d621f8595e89dddf58e66804
treeab341440b058bef7b075fd9db2da9041e69d1079
parent362c6e5862bd7fdcdc6f1556cd3831edf6c62170
[9610] wlbt: Fixed deadlock in mxlogger

The following sequence leads to a deadlock when mxlogger is
deinitialzing and a log collection is triggered:

mxlogger_deinit
---> gets mutex_lock(&mxlogger->lock);
***** preemption *****
__scsc_log_collector_collect_to_file
---> gets mutex_lock(&log_status.log_mutex);
//calls
mxlogger_collect:
---> sitting in already claimed mutex_lock(&mxlogger->lock);
***** preemption *****
mxlogger_deinit
//calls
scsc_log_collector_unregister_client
---> sitting in alreaday claimed mutex_lock(&log_status.log_mutex)
DEADLOCK

To avoid the deadlock condition, the scsc_log_collector_unregister_client
calls are moved outside the mxlogger_deinit lock.

Hip4.c has also been addressed

Client registration / unregistration serialization has also been
addressed

Change-Id: I5a85de46bbd0564c4409ed6049cb9f3a8c987ae1
Signed-off-by: Albert Cano <a.canocamps@samsung.com>
drivers/misc/samsung/scsc/mxlogger.c
drivers/misc/samsung/scsc/scsc_log_collector.c
drivers/net/wireless/scsc/hip4.c