hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/intel/iwlegacy/3945-mac.c
....@@ -3380,10 +3380,12 @@
33803380 *
33813381 *****************************************************************************/
33823382
3383
-static void
3383
+static int
33843384 il3945_setup_deferred_work(struct il_priv *il)
33853385 {
33863386 il->workqueue = create_singlethread_workqueue(DRV_NAME);
3387
+ if (!il->workqueue)
3388
+ return -ENOMEM;
33873389
33883390 init_waitqueue_head(&il->wait_command_queue);
33893391
....@@ -3400,6 +3402,8 @@
34003402 timer_setup(&il->watchdog, il_bg_watchdog, 0);
34013403
34023404 tasklet_setup(&il->irq_tasklet, il3945_irq_tasklet);
3405
+
3406
+ return 0;
34033407 }
34043408
34053409 static void
....@@ -3721,7 +3725,10 @@
37213725 }
37223726
37233727 il_set_rxon_channel(il, &il->bands[NL80211_BAND_2GHZ].channels[5]);
3724
- il3945_setup_deferred_work(il);
3728
+ err = il3945_setup_deferred_work(il);
3729
+ if (err)
3730
+ goto out_remove_sysfs;
3731
+
37253732 il3945_setup_handlers(il);
37263733 il_power_initialize(il);
37273734
....@@ -3733,7 +3740,7 @@
37333740
37343741 err = il3945_setup_mac(il);
37353742 if (err)
3736
- goto out_remove_sysfs;
3743
+ goto out_destroy_workqueue;
37373744
37383745 il_dbgfs_register(il, DRV_NAME);
37393746
....@@ -3742,9 +3749,10 @@
37423749
37433750 return 0;
37443751
3745
-out_remove_sysfs:
3752
+out_destroy_workqueue:
37463753 destroy_workqueue(il->workqueue);
37473754 il->workqueue = NULL;
3755
+out_remove_sysfs:
37483756 sysfs_remove_group(&pdev->dev.kobj, &il3945_attribute_group);
37493757 out_release_irq:
37503758 free_irq(il->pci_dev->irq, il);