hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/intel/iwlegacy/4965-mac.c
....@@ -6212,10 +6212,12 @@
62126212 mutex_unlock(&il->mutex);
62136213 }
62146214
6215
-static void
6215
+static int
62166216 il4965_setup_deferred_work(struct il_priv *il)
62176217 {
62186218 il->workqueue = create_singlethread_workqueue(DRV_NAME);
6219
+ if (!il->workqueue)
6220
+ return -ENOMEM;
62196221
62206222 init_waitqueue_head(&il->wait_command_queue);
62216223
....@@ -6234,6 +6236,8 @@
62346236 timer_setup(&il->watchdog, il_bg_watchdog, 0);
62356237
62366238 tasklet_setup(&il->irq_tasklet, il4965_irq_tasklet);
6239
+
6240
+ return 0;
62376241 }
62386242
62396243 static void
....@@ -6623,7 +6627,10 @@
66236627 goto out_disable_msi;
66246628 }
66256629
6626
- il4965_setup_deferred_work(il);
6630
+ err = il4965_setup_deferred_work(il);
6631
+ if (err)
6632
+ goto out_free_irq;
6633
+
66276634 il4965_setup_handlers(il);
66286635
66296636 /*********************************************
....@@ -6661,6 +6668,7 @@
66616668 out_destroy_workqueue:
66626669 destroy_workqueue(il->workqueue);
66636670 il->workqueue = NULL;
6671
+out_free_irq:
66646672 free_irq(il->pci_dev->irq, il);
66656673 out_disable_msi:
66666674 pci_disable_msi(il->pci_dev);