| From c132b0ec59ddda39ebb214441260a2e61b5f08e7 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 18 Jul 2021 15:36:28 -0400 |
| Subject: bnxt_en: Add missing check for BNXT_STATE_ABORT_ERR in |
| bnxt_fw_rset_task() |
| |
| From: Michael Chan <michael.chan@broadcom.com> |
| |
| [ Upstream commit 6cd657cb3ee6f4de57e635b126ffbe0e51d00f1a ] |
| |
| In the BNXT_FW_RESET_STATE_POLL_VF state in bnxt_fw_reset_task() after all |
| VFs have unregistered, we need to check for BNXT_STATE_ABORT_ERR after |
| we acquire the rtnl_lock. If the flag is set, we need to abort. |
| |
| Fixes: 230d1f0de754 ("bnxt_en: Handle firmware reset.") |
| Signed-off-by: Michael Chan <michael.chan@broadcom.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c |
| index d57fb1613cfc..07efab5bad95 100644 |
| --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c |
| +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c |
| @@ -11882,6 +11882,10 @@ static void bnxt_fw_reset_task(struct work_struct *work) |
| } |
| bp->fw_reset_timestamp = jiffies; |
| rtnl_lock(); |
| + if (test_bit(BNXT_STATE_ABORT_ERR, &bp->state)) { |
| + rtnl_unlock(); |
| + goto fw_reset_abort; |
| + } |
| bnxt_fw_reset_close(bp); |
| if (bp->fw_cap & BNXT_FW_CAP_ERR_RECOVER_RELOAD) { |
| bp->fw_reset_state = BNXT_FW_RESET_STATE_POLL_FW_DOWN; |
| -- |
| 2.30.2 |
| |