diff --git a/hif/src/ce/ce_tasklet.c b/hif/src/ce/ce_tasklet.c index 30183d7006..f4ec8fe908 100644 --- a/hif/src/ce/ce_tasklet.c +++ b/hif/src/ce/ce_tasklet.c @@ -874,7 +874,7 @@ irqreturn_t ce_dispatch_interrupt(int ce_id, struct HIF_CE_state *hif_ce_state = tasklet_entry->hif_ce_state; struct hif_softc *scn = HIF_GET_SOFTC(hif_ce_state); struct hif_opaque_softc *hif_hdl = GET_HIF_OPAQUE_HDL(scn); - struct CE_state *ce_state = scn->ce_id_to_state[ce_id]; + struct CE_state *ce_state; if (tasklet_entry->ce_id != ce_id) { bool rl; @@ -895,6 +895,8 @@ irqreturn_t ce_dispatch_interrupt(int ce_id, return IRQ_NONE; } + ce_state = scn->ce_id_to_state[ce_id]; + ce_interrupt_lock(ce_state); if (ce_check_tasklet_status(ce_id, tasklet_entry)) { ce_interrupt_unlock(ce_state);