• Sara Sharon's avatar
    iwlwifi: fix access to prph when transport is stopped · 0232d2cd
    Sara Sharon authored
    When getting HW rfkill we get stop_device being called from
    two paths.
    One path is the IRQ calling stop device, and updating op
    mode and stack.
    As a result, cfg80211 is running rfkill sync work that shuts
    down all devices (second path).
    In the second path, we eventually get to iwl_mvm_stop_device
    which calls iwl_fw_dump_conf_clear->iwl_fw_dbg_stop_recording,
    that access periphery registers.
    The device may be stopped at this point from the first path,
    which will result with a failure to access those registers.
    Simply checking for the trans status is insufficient, since
    the race will still exist, only minimized.
    Instead, move the stop from iwl_fw_dump_conf_clear (which is
    getting called only from stop path) to the transport stop
    device function, where the access is always safe.
    This has the added value, of actually stopping dbgc before
    stopping device even when the stop is initiated from the
    transport.
    
    Fixes: 1efc3843 ("iwlwifi: stop dbgc recording before stopping DMA")
    Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    0232d2cd
trans.c 92.8 KB