diff options
| author | Govind Singh <govinds@qti.qualcomm.com> | 2016-08-02 18:40:42 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-08-04 15:36:53 +0530 |
| commit | 73df725f8c1a937e8ee1e6b5944b18efdbcdb5d0 (patch) | |
| tree | 3dc78bf59e223a9c6794c78940bf1a29415e0fd3 | |
| parent | 8eb13522344ef6aa466c91ca388df204fe410d67 (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.c | 4 |
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); } |
