]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wireless: Remove redundant 'flush_workqueue()' calls
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 10 Oct 2021 07:09:11 +0000 (09:09 +0200)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:21:50 +0000 (18:21 -0400)
[ Upstream commit ff1cc2fa3055ee4c83839f38b74b4ee370a2291c ]

'destroy_workqueue()' already drains the queue before destroying it, so
there is no need to flush it explicitly.

Remove the redundant 'flush_workqueue()' calls.

This was generated with coccinelle:

@@
expression E;
@@
-  flush_workqueue(E);
destroy_workqueue(E);

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/0855d51423578ad019c0264dad3fe47a2e8af9c7.1633849511.git.christophe.jaillet@wanadoo.fr
Stable-dep-of: cb5942b77c05 ("wifi: wilc1000: prevent use-after-free on vif when cleaning up all interfaces")
Signed-off-by: Sasha Levin <sashal@kernel.org>
13 files changed:
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/ath/ath10k/sdio.c
drivers/net/wireless/intel/iwlegacy/3945-mac.c
drivers/net/wireless/intel/iwlegacy/4965-mac.c
drivers/net/wireless/intel/iwlwifi/dvm/main.c
drivers/net/wireless/marvell/mwifiex/cfg80211.c
drivers/net/wireless/marvell/mwifiex/main.c
drivers/net/wireless/microchip/wilc1000/netdev.c
drivers/net/wireless/quantenna/qtnfmac/core.c
drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
drivers/net/wireless/realtek/rtlwifi/pci.c
drivers/net/wireless/rndis_wlan.c
drivers/net/wireless/st/cw1200/bh.c

index d0967bb1f38718a9efbc2280fdec3e0f3c92e2f6..57ac80997319bb15806f38fa1f021cf57039eef4 100644 (file)
@@ -3381,13 +3381,10 @@ EXPORT_SYMBOL(ath10k_core_create);
 
 void ath10k_core_destroy(struct ath10k *ar)
 {
-       flush_workqueue(ar->workqueue);
        destroy_workqueue(ar->workqueue);
 
-       flush_workqueue(ar->workqueue_aux);
        destroy_workqueue(ar->workqueue_aux);
 
-       flush_workqueue(ar->workqueue_tx_complete);
        destroy_workqueue(ar->workqueue_tx_complete);
 
        ath10k_debug_destroy(ar);
index 0fe639710a8bb4576ff0bc3026d3aefa7534693d..9d1b0890f3105ad0a78a49bd5b6aae4d902750a7 100644 (file)
@@ -2651,7 +2651,6 @@ static void ath10k_sdio_remove(struct sdio_func *func)
 
        ath10k_core_destroy(ar);
 
-       flush_workqueue(ar_sdio->workqueue);
        destroy_workqueue(ar_sdio->workqueue);
 }
 
index ef0ac42a55a2ac0c89cdf6a5a5c10c6334cd9540..55c00a07bc4d37891c6e6978967e9333e00e168a 100644 (file)
@@ -3831,7 +3831,6 @@ il3945_pci_remove(struct pci_dev *pdev)
        il3945_unset_hw_params(il);
 
        /*netif_stop_queue(dev); */
-       flush_workqueue(il->workqueue);
 
        /* ieee80211_unregister_hw calls il3945_mac_stop, which flushes
         * il->workqueue... so we can't take down the workqueue
index 12cf22d0e9949050e23a47a2c2e9b77a7d0147b2..2549902552e1dc4a2b41a5cc78bfaf019783729a 100644 (file)
@@ -6745,7 +6745,6 @@ il4965_pci_remove(struct pci_dev *pdev)
        il_eeprom_free(il);
 
        /*netif_stop_queue(dev); */
-       flush_workqueue(il->workqueue);
 
        /* ieee80211_unregister_hw calls il_mac_stop, which flushes
         * il->workqueue... so we can't take down the workqueue
index 461af58311561d946772e434f4081b147232f7c3..6a19fc4c68604ecc8322967c75765a924e8e05e8 100644 (file)
@@ -1526,7 +1526,6 @@ static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode)
        kfree(priv->nvm_data);
 
        /*netif_stop_queue(dev); */
-       flush_workqueue(priv->workqueue);
 
        /* ieee80211_unregister_hw calls iwlagn_mac_stop, which flushes
         * priv->workqueue... so we can't take down the workqueue
index 2f5f1ff22a601dd11d53868080c4d067c12a419b..e1196c565a62f77898dcba5507238a400443dff2 100644 (file)
@@ -3155,13 +3155,11 @@ int mwifiex_del_virtual_intf(struct wiphy *wiphy, struct wireless_dev *wdev)
                unregister_netdevice(wdev->netdev);
 
        if (priv->dfs_cac_workqueue) {
-               flush_workqueue(priv->dfs_cac_workqueue);
                destroy_workqueue(priv->dfs_cac_workqueue);
                priv->dfs_cac_workqueue = NULL;
        }
 
        if (priv->dfs_chan_sw_workqueue) {
-               flush_workqueue(priv->dfs_chan_sw_workqueue);
                destroy_workqueue(priv->dfs_chan_sw_workqueue);
                priv->dfs_chan_sw_workqueue = NULL;
        }
index 6283df5aaaf8b2e2d5a32d009e33b05c7dc2806d..b8b79fe50dbc2cdb53ce142ed101f6badad6900e 100644 (file)
@@ -498,13 +498,11 @@ static void mwifiex_free_adapter(struct mwifiex_adapter *adapter)
 static void mwifiex_terminate_workqueue(struct mwifiex_adapter *adapter)
 {
        if (adapter->workqueue) {
-               flush_workqueue(adapter->workqueue);
                destroy_workqueue(adapter->workqueue);
                adapter->workqueue = NULL;
        }
 
        if (adapter->rx_workqueue) {
-               flush_workqueue(adapter->rx_workqueue);
                destroy_workqueue(adapter->rx_workqueue);
                adapter->rx_workqueue = NULL;
        }
index c508f429984abb48fdbc5039f5abd538e4c3f48e..463f3bfc3064db577b087f0c2e105177f2d60b7c 100644 (file)
@@ -840,7 +840,6 @@ void wilc_netdev_cleanup(struct wilc *wilc)
        srcu_read_unlock(&wilc->srcu, srcu_idx);
 
        wilc_wfi_deinit_mon_interface(wilc, false);
-       flush_workqueue(wilc->hif_workqueue);
        destroy_workqueue(wilc->hif_workqueue);
 
        while (ifc_cnt < WILC_NUM_CONCURRENT_IFC) {
index bf6dbeb618423048d24c55b25c05c83fac84ccac..d39c210da68e2b45d14b3ba70d72ca4c63bbb96c 100644 (file)
@@ -816,13 +816,11 @@ void qtnf_core_detach(struct qtnf_bus *bus)
        bus->fw_state = QTNF_FW_STATE_DETACHED;
 
        if (bus->workqueue) {
-               flush_workqueue(bus->workqueue);
                destroy_workqueue(bus->workqueue);
                bus->workqueue = NULL;
        }
 
        if (bus->hprio_workqueue) {
-               flush_workqueue(bus->hprio_workqueue);
                destroy_workqueue(bus->hprio_workqueue);
                bus->hprio_workqueue = NULL;
        }
index 0f328ce47fee3aad0748da21cc9c67b482000cd3..f65eb6e5b8d593d62dbadf23c62b4d6bb5703fbc 100644 (file)
@@ -387,7 +387,6 @@ static int qtnf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        return 0;
 
 error:
-       flush_workqueue(pcie_priv->workqueue);
        destroy_workqueue(pcie_priv->workqueue);
        pci_set_drvdata(pdev, NULL);
        return ret;
@@ -416,7 +415,6 @@ static void qtnf_pcie_remove(struct pci_dev *dev)
                qtnf_core_detach(bus);
 
        netif_napi_del(&bus->mux_napi);
-       flush_workqueue(priv->workqueue);
        destroy_workqueue(priv->workqueue);
        tasklet_kill(&priv->reclaim_tq);
 
index 679ae786cf4507cd7c43b2e3c5935d67ae034e77..6d9f2a6233a2102e602c8db799f34ef8157f009f 100644 (file)
@@ -1704,7 +1704,6 @@ static void rtl_pci_deinit(struct ieee80211_hw *hw)
        tasklet_kill(&rtlpriv->works.irq_tasklet);
        cancel_work_sync(&rtlpriv->works.lps_change_work);
 
-       flush_workqueue(rtlpriv->works.rtl_wq);
        destroy_workqueue(rtlpriv->works.rtl_wq);
 }
 
index dc076d8448680d0c49e32cf4787cfc3a1c77f659..75c78e1c924b0f30af5ab4795b6089c035d86e09 100644 (file)
@@ -3497,7 +3497,6 @@ fail:
        cancel_delayed_work_sync(&priv->dev_poller_work);
        cancel_delayed_work_sync(&priv->scan_work);
        cancel_work_sync(&priv->work);
-       flush_workqueue(priv->workqueue);
        destroy_workqueue(priv->workqueue);
 
        wiphy_free(wiphy);
@@ -3514,7 +3513,6 @@ static void rndis_wlan_unbind(struct usbnet *usbdev, struct usb_interface *intf)
        cancel_delayed_work_sync(&priv->dev_poller_work);
        cancel_delayed_work_sync(&priv->scan_work);
        cancel_work_sync(&priv->work);
-       flush_workqueue(priv->workqueue);
        destroy_workqueue(priv->workqueue);
 
        rndis_unbind(usbdev, intf);
index 02efe8483cba6864403e84a90c30642d23ac714e..361fef6e1eeaa499d5509bec8dd31973c6897343 100644 (file)
@@ -88,8 +88,6 @@ void cw1200_unregister_bh(struct cw1200_common *priv)
        atomic_add(1, &priv->bh_term);
        wake_up(&priv->bh_wq);
 
-       flush_workqueue(priv->bh_workqueue);
-
        destroy_workqueue(priv->bh_workqueue);
        priv->bh_workqueue = NULL;