]> git.baikalelectronics.ru Git - kernel.git/commit
bnxt_en: Fix possible crash in bnxt_fw_reset_task().
authorMichael Chan <michael.chan@broadcom.com>
Wed, 26 Aug 2020 05:08:36 +0000 (01:08 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 26 Aug 2020 14:19:03 +0000 (07:19 -0700)
commit4d84fed0e91ebb49558fcf0325e9f2e7d8958a83
treec065ceea1f1f0821ec18063eb708b736e7e8480e
parent49857e107b442482521ed6434daa27b73d18e477
bnxt_en: Fix possible crash in bnxt_fw_reset_task().

bnxt_fw_reset_task() is run from a delayed workqueue.  The current
code is not cancelling the workqueue in the driver's .remove()
method and it can potentially crash if the device is removed with
the workqueue still pending.

The fix is to clear the BNXT_STATE_IN_FW_RESET flag and then cancel
the delayed workqueue in bnxt_remove_one().  bnxt_queue_fw_reset_work()
also needs to check that this flag is set before scheduling.  This
will guarantee that no rescheduling will be done after it is cancelled.

Fixes: 9e2d4614b3e9 ("bnxt_en: Handle firmware reset.")
Reviewed-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c