mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Release the platform_info spin lock before del_timer_sync
In qdf_mc_timer_stop_sync acquires the platform_info spinlock and call's the del_tymer_sync. del_timer_sync waits for callbacks to execute all CPU's. But callback scheduler_mc_timer_callback tries to acquire the platform_info lock to execute. This can lead to deadlock. Change-Id: Ib21ee5b57e11d1c98e1308ee5318fb47d78a6ba2 CRs-Fixed: 2453603
This commit is contained in:
parent
a8a1f93112
commit
94b9ce4320
1 changed files with 3 additions and 4 deletions
|
|
@ -745,10 +745,10 @@ QDF_STATUS qdf_mc_timer_stop(qdf_mc_timer_t *timer)
|
|||
|
||||
timer->state = QDF_TIMER_STATE_STOPPED;
|
||||
|
||||
del_timer(&(timer->platform_info.timer));
|
||||
|
||||
qdf_spin_unlock_irqrestore(&timer->platform_info.spinlock);
|
||||
|
||||
del_timer(&(timer->platform_info.timer));
|
||||
|
||||
qdf_try_allowing_sleep(timer->type);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
|
@ -787,9 +787,8 @@ QDF_STATUS qdf_mc_timer_stop_sync(qdf_mc_timer_t *timer)
|
|||
|
||||
timer->state = QDF_TIMER_STATE_STOPPED;
|
||||
|
||||
del_timer_sync(&(timer->platform_info.timer));
|
||||
|
||||
qdf_spin_unlock_irqrestore(&timer->platform_info.spinlock);
|
||||
del_timer_sync(&(timer->platform_info.timer));
|
||||
|
||||
qdf_try_allowing_sleep(timer->type);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue