lkml.org 
[lkml]   [2022]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.16 168/217] iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ
    Date
    From: Luca Coelho <luciano.coelho@intel.com>

    [ Upstream commit 459fc0f2c6b0f6e280bfa0f230c100c9dfe3a199 ]

    In some rare cases when the HW is in a bad state, we may get this
    interrupt when prph_info is not set yet. Then we will try to
    dereference it to check the sleep_notif element, which will cause an
    oops.

    Fix that by ignoring the interrupt if prph_info is not set yet.

    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Link: https://lore.kernel.org/r/iwlwifi.20211219132536.0537aa562313.I183bb336345b9b3da196ba9e596a6f189fbcbd09@changeid
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
    index 14602d6d6699f..8247014278f30 100644
    --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
    +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
    @@ -2266,7 +2266,12 @@ irqreturn_t iwl_pcie_irq_msix_handler(int irq, void *dev_id)
    }
    }

    - if (inta_hw & MSIX_HW_INT_CAUSES_REG_WAKEUP) {
    + /*
    + * In some rare cases when the HW is in a bad state, we may
    + * get this interrupt too early, when prph_info is still NULL.
    + * So make sure that it's not NULL to prevent crashing.
    + */
    + if (inta_hw & MSIX_HW_INT_CAUSES_REG_WAKEUP && trans_pcie->prph_info) {
    u32 sleep_notif =
    le32_to_cpu(trans_pcie->prph_info->sleep_notif);
    if (sleep_notif == IWL_D3_SLEEP_STATUS_SUSPEND ||
    --
    2.34.1
    \
     
     \ /
      Last update: 2022-01-18 03:38    [W:2.438 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site