wifi: iwl4965: Add missing check for create_singlethread_workqueue()
[ Upstream commit 26e6775f75517ad6844fe5b79bc5f3fa8c22ee61 ]
Add the check for the return value of the create_singlethread_workqueue()
in order to avoid NULL pointer dereference.
Fixes: b481de9ca0
("[IWLWIFI]: add iwlwifi wireless drivers")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230209010748.45454-1-jiasheng@iscas.ac.cn
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
34f611204a
commit
2f85c768be
@ -6211,10 +6211,12 @@ il4965_bg_txpower_work(struct work_struct *work)
|
||||
mutex_unlock(&il->mutex);
|
||||
}
|
||||
|
||||
static void
|
||||
static int
|
||||
il4965_setup_deferred_work(struct il_priv *il)
|
||||
{
|
||||
il->workqueue = create_singlethread_workqueue(DRV_NAME);
|
||||
if (!il->workqueue)
|
||||
return -ENOMEM;
|
||||
|
||||
init_waitqueue_head(&il->wait_command_queue);
|
||||
|
||||
@ -6233,6 +6235,8 @@ il4965_setup_deferred_work(struct il_priv *il)
|
||||
timer_setup(&il->watchdog, il_bg_watchdog, 0);
|
||||
|
||||
tasklet_setup(&il->irq_tasklet, il4965_irq_tasklet);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -6617,7 +6621,10 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
goto out_disable_msi;
|
||||
}
|
||||
|
||||
il4965_setup_deferred_work(il);
|
||||
err = il4965_setup_deferred_work(il);
|
||||
if (err)
|
||||
goto out_free_irq;
|
||||
|
||||
il4965_setup_handlers(il);
|
||||
|
||||
/*********************************************
|
||||
@ -6655,6 +6662,7 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
out_destroy_workqueue:
|
||||
destroy_workqueue(il->workqueue);
|
||||
il->workqueue = NULL;
|
||||
out_free_irq:
|
||||
free_irq(il->pci_dev->irq, il);
|
||||
out_disable_msi:
|
||||
pci_disable_msi(il->pci_dev);
|
||||
|
Loading…
Reference in New Issue
Block a user