.. | .. |
---|
6212 | 6212 | mutex_unlock(&il->mutex); |
---|
6213 | 6213 | } |
---|
6214 | 6214 | |
---|
6215 | | -static void |
---|
| 6215 | +static int |
---|
6216 | 6216 | il4965_setup_deferred_work(struct il_priv *il) |
---|
6217 | 6217 | { |
---|
6218 | 6218 | il->workqueue = create_singlethread_workqueue(DRV_NAME); |
---|
| 6219 | + if (!il->workqueue) |
---|
| 6220 | + return -ENOMEM; |
---|
6219 | 6221 | |
---|
6220 | 6222 | init_waitqueue_head(&il->wait_command_queue); |
---|
6221 | 6223 | |
---|
.. | .. |
---|
6234 | 6236 | timer_setup(&il->watchdog, il_bg_watchdog, 0); |
---|
6235 | 6237 | |
---|
6236 | 6238 | tasklet_setup(&il->irq_tasklet, il4965_irq_tasklet); |
---|
| 6239 | + |
---|
| 6240 | + return 0; |
---|
6237 | 6241 | } |
---|
6238 | 6242 | |
---|
6239 | 6243 | static void |
---|
.. | .. |
---|
6623 | 6627 | goto out_disable_msi; |
---|
6624 | 6628 | } |
---|
6625 | 6629 | |
---|
6626 | | - il4965_setup_deferred_work(il); |
---|
| 6630 | + err = il4965_setup_deferred_work(il); |
---|
| 6631 | + if (err) |
---|
| 6632 | + goto out_free_irq; |
---|
| 6633 | + |
---|
6627 | 6634 | il4965_setup_handlers(il); |
---|
6628 | 6635 | |
---|
6629 | 6636 | /********************************************* |
---|
.. | .. |
---|
6661 | 6668 | out_destroy_workqueue: |
---|
6662 | 6669 | destroy_workqueue(il->workqueue); |
---|
6663 | 6670 | il->workqueue = NULL; |
---|
| 6671 | +out_free_irq: |
---|
6664 | 6672 | free_irq(il->pci_dev->irq, il); |
---|
6665 | 6673 | out_disable_msi: |
---|
6666 | 6674 | pci_disable_msi(il->pci_dev); |
---|