• Christian Daudt's avatar
    brcmfmac: Fix kernel oops in failed chip_attach · b88a2e80
    Christian Daudt authored
    When chip attach fails, brcmf_sdiod_intr_unregister is being called
    but that is too early as sdiodev->settings has not been set yet
    nor has brcmf_sdiod_intr_register been called.
    Change to use oob_irq_requested + newly created sd_irq_requested
    to decide on what to unregister at intr_unregister time.
    
    Steps to reproduce problem:
    - modprobe brcmfmac using buggy FW
    - rmmod brcmfmac
    - modprobe brcmfmac again.
    
    If done with a buggy firmware, brcm_chip_attach will fail on the
    2nd modprobe triggering the call to intr_unregister and the
    kernel oops when attempting to de-reference sdiodev->settings->bus.sdio
    which has not yet been set.
    Signed-off-by: default avatarChristian Daudt <csd@broadcom.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    b88a2e80
sdio.h 11.6 KB