diff options
author | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2020-03-25 15:16:06 +0800 |
---|---|---|
committer | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2023-07-23 22:07:18 +0800 |
commit | 1981f47eabc7c8d2a6632bec12c04367ab41c3e2 (patch) | |
tree | a5dfe70fff7c9148fa25710e2c4fb1602e90e5bc | |
parent | 8de2c27c419e4a5d0ec6c540c020e0ad00fc1e33 (diff) | |
download | qca-wfi-host-cmn-android-msm-redbull-4.19-android14-qpr2-beta.tar.gz |
qcacmn: Don't destroy uncreated completion_freeq_lockandroid-u-qpr3-beta-2_r0.1android-u-qpr3-beta-1_r0.6android-u-qpr2-beta-3_r0.1android-u-qpr2-beta-3.1_r0.6android-u-qpr2-beta-1_r0.8android-14.0.0_r0.68android-14.0.0_r0.58android-14.0.0_r0.46android-14.0.0_r0.32android-14.0.0_r0.20android-msm-redbull-4.19-android14-qpr2-betaandroid-msm-redbull-4.19-android14-qpr2android-msm-redbull-4.19-android14-qpr1
Sometimes, BMI download FW fail, cause destroy this uncreated spinlock.
Because fw download fail, hif_start() not called, so
&pipe_info->completion_freeq_lock not be created.But hif_ce_stop() call
qdf_spinlock_destroy(&pipe_info->completion_freeq_lock);Cause WLAN Panic
@ qdf_lock_stats_cookie_destroy:824: Lock destroyed twice or never created
hif_state->started be set to true in hif_start( )This fixes use
hif_state->started to judge hif_start() be called or not.If false,
hif_start() not be called, so neednât destroy uncreated
completion_freeq_lock
Bug: 283948235
Test: Regression Test
CRs-Fixed: 2648188
Change-Id: Id6aae8024fe9df2ac6cf7976047ebd7a850438e4
Signed-off-by: Hsiu-Chang Chen <hsiuchangchen@google.com>
-rw-r--r-- | hif/src/ce/ce_main.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c index f4fe98b8b..599169022 100644 --- a/hif/src/ce/ce_main.c +++ b/hif/src/ce/ce_main.c @@ -2673,7 +2673,8 @@ void hif_ce_stop(struct hif_softc *scn) pipe_info = &hif_state->pipe_info[pipe_num]; if (pipe_info->ce_hdl) { - if (pipe_info->ce_hdl != ce_diag) { + if (pipe_info->ce_hdl != ce_diag && + hif_state->started) { attr = hif_state->host_ce_config[pipe_num]; if (attr.src_nentries) qdf_spinlock_destroy(&pipe_info-> |