From: William Dean <[email protected]>
The function alloc_workqueue() in rtw_core_init() can fail, but
there is no check of its return value. To fix this bug, its return value
should be checked with new error handling code.
Fixes: fe101716c7c9d ("rtw88: replace tx tasklet with work queue")
Reported-by: Hacash Robot <[email protected]>
Signed-off-by: William Dean <[email protected]>
---
drivers/net/wireless/realtek/rtw88/main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
index efabd5b1bf5b..645ef1d01895 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -1984,6 +1984,10 @@ int rtw_core_init(struct rtw_dev *rtwdev)
timer_setup(&rtwdev->tx_report.purge_timer,
rtw_tx_report_purge_timer, 0);
rtwdev->tx_wq = alloc_workqueue("rtw_tx_wq", WQ_UNBOUND | WQ_HIGHPRI, 0);
+ if (!rtwdev->tx_wq) {
+ rtw_warn(rtwdev, "alloc_workqueue rtw_tx_wq failed\n");
+ return -ENOMEM;
+ }
INIT_DELAYED_WORK(&rtwdev->watch_dog_work, rtw_watch_dog_work);
INIT_DELAYED_WORK(&coex->bt_relink_work, rtw_coex_bt_relink_work);
--
2.25.1
> -----Original Message-----
> From: [email protected] <[email protected]>
> Sent: Saturday, July 23, 2022 2:38 PM
> To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected]; [email protected]
> Cc: William Dean <[email protected]>; Hacash Robot <[email protected]>
> Subject: [PATCH] rtw88: check the return value of alloc_workqueue()
>
> From: William Dean <[email protected]>
>
> The function alloc_workqueue() in rtw_core_init() can fail, but
> there is no check of its return value. To fix this bug, its return value
> should be checked with new error handling code.
>
> Fixes: fe101716c7c9d ("rtw88: replace tx tasklet with work queue")
> Reported-by: Hacash Robot <[email protected]>
> Signed-off-by: William Dean <[email protected]>
Reviewed-by: Ping-Ke Shih <[email protected]>
Thank you
> ---
> drivers/net/wireless/realtek/rtw88/main.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
> index efabd5b1bf5b..645ef1d01895 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.c
> +++ b/drivers/net/wireless/realtek/rtw88/main.c
> @@ -1984,6 +1984,10 @@ int rtw_core_init(struct rtw_dev *rtwdev)
> timer_setup(&rtwdev->tx_report.purge_timer,
> rtw_tx_report_purge_timer, 0);
> rtwdev->tx_wq = alloc_workqueue("rtw_tx_wq", WQ_UNBOUND | WQ_HIGHPRI, 0);
> + if (!rtwdev->tx_wq) {
> + rtw_warn(rtwdev, "alloc_workqueue rtw_tx_wq failed\n");
> + return -ENOMEM;
> + }
>
> INIT_DELAYED_WORK(&rtwdev->watch_dog_work, rtw_watch_dog_work);
> INIT_DELAYED_WORK(&coex->bt_relink_work, rtw_coex_bt_relink_work);
> --
> 2.25.1
[email protected] wrote:
> From: William Dean <[email protected]>
>
> The function alloc_workqueue() in rtw_core_init() can fail, but
> there is no check of its return value. To fix this bug, its return value
> should be checked with new error handling code.
>
> Fixes: fe101716c7c9d ("rtw88: replace tx tasklet with work queue")
> Reported-by: Hacash Robot <[email protected]>
> Signed-off-by: William Dean <[email protected]>
> Reviewed-by: Ping-Ke Shih <[email protected]>
Patch applied to wireless-next.git, thanks.
42bbf810e155 wifi: rtw88: check the return value of alloc_workqueue()
--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches