Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea1e0a4b authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Handle race between register driver and reboot properly"

parents 9edbe4c9 a13ab959
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -2071,6 +2071,10 @@ int cnss_wlan_register_driver(struct cnss_wlan_driver *driver_ops)
				     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;
}
@@ -2126,6 +2130,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;