wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work
authorMartin Kaistra <martin.kaistra@linutronix.de>
Thu, 11 Jan 2024 16:36:27 +0000 (17:36 +0100)
committerKalle Valo <kvalo@kernel.org>
Sun, 14 Jan 2024 19:08:01 +0000 (21:08 +0200)
The workqueue might still be running, when the driver is stopped. To
avoid a use-after-free, call cancel_work_sync() in rtl8xxxu_stop().

Fixes: e542e66b7c2e ("rtl8xxxu: add bluetooth co-existence support for single antenna")
Signed-off-by: Martin Kaistra <martin.kaistra@linutronix.de>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20240111163628.320697-2-martin.kaistra@linutronix.de
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c

index aac594093629009493951c82d00c041df1120a51..757ebd46452eb0cfa873df60e28352150d510f9a 100644 (file)
@@ -7480,6 +7480,7 @@ static void rtl8xxxu_stop(struct ieee80211_hw *hw)
        if (priv->usb_interrupts)
                rtl8xxxu_write32(priv, REG_USB_HIMR, 0);
 
+       cancel_work_sync(&priv->c2hcmd_work);
        cancel_delayed_work_sync(&priv->ra_watchdog);
 
        rtl8xxxu_free_rx_resources(priv);