summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGovind Singh <govinds@qti.qualcomm.com>2016-08-02 18:40:42 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-08-04 15:36:53 +0530
commit73df725f8c1a937e8ee1e6b5944b18efdbcdb5d0 (patch)
tree3dc78bf59e223a9c6794c78940bf1a29415e0fd3
parent8eb13522344ef6aa466c91ca388df204fe410d67 (diff)
qcacld-2.0: Disable wlan tasklet to avoid rescheduling during SSR
wlan_tasklet is being rescheduled recursively if rx packet pending count is greater than 0. In some cases during SSR tasklet is being rescheduled as tasklet_kill ensures synchronous execution of current running instance, it does not stops the new instance if tasklet is being rescheduled. This is causing null pointer deference of ol_softc object in softirq context which is being deleted in SSR context. Disable wlan tasklet to avoid rescheduling during SSR. Change-Id: Ic267baf5a08611e20dc0592532ae0a2f16682240 CRs-Fixed: 1049051
-rw-r--r--CORE/SERVICES/HIF/PCIe/if_pci.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index 60d0c4ffee10..8d1462a9f04b 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -3098,6 +3098,10 @@ void hif_disable_isr(void *ol_sc)
scn->MSI_magic = NULL;
scn->MSI_magic_dma = 0;
#endif
+ /* disable the tasklet to avoid recursive scheduling
+ * of tasklet if rx pending packet count is greater
+ * than 0. */
+ tasklet_disable(&hif_sc->intr_tq);
/* Cancel the pending tasklet */
tasklet_kill(&hif_sc->intr_tq);
}