diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index adacb1cfe523..170a4f1c6bb6 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -2113,6 +2113,10 @@ register_driver: CNSS_DRIVER_EVENT_REGISTER_DRIVER, CNSS_EVENT_SYNC_UNINTERRUPTIBLE, driver_ops); + if (ret == -EINTR) { + cnss_pr_dbg("Register driver work is killed\n"); + del_timer(&plat_priv->fw_boot_timer); + } return ret; } @@ -2168,6 +2172,11 @@ int cnss_pci_register_driver_hdlr(struct cnss_pci_data *pci_priv, int ret = 0; struct cnss_plat_data *plat_priv = pci_priv->plat_priv; + if (test_bit(CNSS_IN_REBOOT, &plat_priv->driver_state)) { + cnss_pr_dbg("Reboot or shutdown is in progress, ignore register driver\n"); + return -EINVAL; + } + set_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state); pci_priv->driver_ops = data;