Skip to content

Commit e3716dd

Browse files
author
Shruti Parab
committed
bnxt_en: Fix error handling path in bnxt_init_chip()
JIRA: https://issues.redhat.com/browse/RHEL-76565 commit 9ab7a70 Author: Shravya KN <shravya.k-n@broadcom.com> Date: Mon Apr 28 15:58:56 2025 -0700 bnxt_en: Fix error handling path in bnxt_init_chip() WARN_ON() is triggered in __flush_work() if bnxt_init_chip() fails because we call cancel_work_sync() on dim work that has not been initialized. WARNING: CPU: 37 PID: 5223 at kernel/workqueue.c:4201 __flush_work.isra.0+0x212/0x230 The driver relies on the BNXT_STATE_NAPI_DISABLED bit to check if dim work has already been cancelled. But in the bnxt_open() path, BNXT_STATE_NAPI_DISABLED is not set and this causes the error path to think that it needs to cancel the uninitalized dim work. Fix it by setting BNXT_STATE_NAPI_DISABLED during initialization. The bit will be cleared when we enable NAPI and initialize dim work. Fixes: 4045296 ("bnxt_en: Fix DIM shutdown") Suggested-by: Somnath Kotur <somnath.kotur@broadcom.com> Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com> Signed-off-by: Shravya KN <shravya.k-n@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
1 parent 3019632 commit e3716dd

File tree

1 file changed

+3
-0
lines changed
  • drivers/net/ethernet/broadcom/bnxt

1 file changed

+3
-0
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11469,6 +11469,9 @@ static void bnxt_init_napi(struct bnxt *bp)
1146911469
poll_fn = bnxt_poll_p5;
1147011470
else if (BNXT_CHIP_TYPE_NITRO_A0(bp))
1147111471
cp_nr_rings--;
11472+
11473+
set_bit(BNXT_STATE_NAPI_DISABLED, &bp->state);
11474+
1147211475
for (i = 0; i < cp_nr_rings; i++) {
1147311476
bnapi = bp->bnapi[i];
1147411477
netif_napi_add_config(bp->dev, &bnapi->napi, poll_fn,

0 commit comments

Comments
 (0)