diff options
| author | Johannes Berg <[email protected]> | 2025-06-25 09:22:30 +0000 |
|---|---|---|
| committer | Johannes Berg <[email protected]> | 2025-06-25 09:22:48 +0000 |
| commit | c73ebc0dbb6ed968cb58d04d82ede3b5fb95e8bf (patch) | |
| tree | a92d885d2c3810aa5c556f1ac793fb864ce9e6f7 /drivers/net/wireless/intel/iwlwifi/dvm/main.c | |
| parent | Merge tag 'rtw-next-2025-06-25' of https://github.com/pkshih/rtw (diff) | |
| parent | wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd() (diff) | |
| download | kernel-c73ebc0dbb6ed968cb58d04d82ede3b5fb95e8bf.tar.gz kernel-c73ebc0dbb6ed968cb58d04d82ede3b5fb95e8bf.zip | |
Merge tag 'iwlwifi-next-2025-06-25' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
Miri Korenblit says:
====================
iwlwifi-next - iwlwifi features
Mostly cleanups. A few fixes and small features.
====================
Signed-off-by: Johannes Berg <[email protected]>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/dvm/main.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/dvm/main.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/main.c b/drivers/net/wireless/intel/iwlwifi/dvm/main.c index 66211426aa3a..e015b83bb6e9 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/main.c @@ -1049,9 +1049,11 @@ static void iwl_bg_restart(struct work_struct *data) * *****************************************************************************/ -static void iwl_setup_deferred_work(struct iwl_priv *priv) +static int iwl_setup_deferred_work(struct iwl_priv *priv) { priv->workqueue = alloc_ordered_workqueue(DRV_NAME, 0); + if (!priv->workqueue) + return -ENOMEM; INIT_WORK(&priv->restart, iwl_bg_restart); INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update); @@ -1068,6 +1070,8 @@ static void iwl_setup_deferred_work(struct iwl_priv *priv) timer_setup(&priv->statistics_periodic, iwl_bg_statistics_periodic, 0); timer_setup(&priv->ucode_trace, iwl_bg_ucode_trace, 0); + + return 0; } void iwl_cancel_deferred_work(struct iwl_priv *priv) @@ -1463,7 +1467,9 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans, /******************** * 6. Setup services ********************/ - iwl_setup_deferred_work(priv); + if (iwl_setup_deferred_work(priv)) + goto out_uninit_drv; + iwl_setup_rx_handlers(priv); iwl_power_initialize(priv); @@ -1502,6 +1508,7 @@ out_destroy_workqueue: iwl_cancel_deferred_work(priv); destroy_workqueue(priv->workqueue); priv->workqueue = NULL; +out_uninit_drv: iwl_uninit_drv(priv); out_free_eeprom_blob: kfree(priv->eeprom_blob); |
