[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <f2pjxhk2amhubmu4vvhjqcy74u2ine55oswka2ybykgnuajh4x@eyyegw3wfrsx>
Date: Thu, 20 Nov 2025 21:17:58 +0530
From: Abdun Nihaal <abdun.nihaal@...il.com>
To: Jeff Chen <jeff.chen_1@....com>
Cc: linux-wireless@...r.kernel.org, linux-kernel@...r.kernel.org,
briannorris@...omium.org, johannes@...solutions.net, francesco@...cini.it,
tsung-hsien.hsieh@....com, s.hauer@...gutronix.de
Subject: Re: [PATCH v7 18/22] wifi: nxpwifi: add core driver implementation
On Mon, Nov 17, 2025 at 07:00:42PM +0800, Jeff Chen wrote:
> diff --git a/drivers/net/wireless/nxp/nxpwifi/main.c b/drivers/net/wireless/nxp/nxpwifi/main.c
> +
> + adapter->workqueue =
> + alloc_workqueue("NXPWIFI_WORK_QUEUE",
> + WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 0);
> + if (!adapter->workqueue) {
> + ret = -ENOMEM;
> + goto err_kmalloc;
> + }
> +
> + INIT_WORK(&adapter->main_work, nxpwifi_main_work);
> +
> + if (adapter->rx_work_enabled) {
> + adapter->rx_workqueue = alloc_workqueue("NXPWIFI_RX_WORK_QUEUE",
> + WQ_HIGHPRI |
> + WQ_MEM_RECLAIM |
> + WQ_UNBOUND, 0);
> + if (!adapter->rx_workqueue) {
> + ret = -ENOMEM;
> + goto err_kmalloc;
> + }
> +
> + INIT_WORK(&adapter->rx_work, nxpwifi_rx_work);
> + }
In nxpwifi_add_card(), if the allocation of rx_workqueue fails, then the
adapter->workqueue is not freed in the error path. The function which
frees the workqueues nxpwifi_terminate_workqueue() is on err_registerdev
Should one or both goto in the workqueue allocations error path jump to
err_registerdev label instead of err_kmalloc?
> +err_registerdev:
> + set_bit(NXPWIFI_SURPRISE_REMOVED, &adapter->work_flags);
> + nxpwifi_terminate_workqueue(adapter);
> + if (adapter->hw_status == NXPWIFI_HW_STATUS_READY) {
> + pr_debug("info: %s: shutdown nxpwifi\n", __func__);
> + nxpwifi_shutdown_drv(adapter);
> + nxpwifi_free_cmd_buffers(adapter);
> + }
> +err_kmalloc:
> + if (adapter->irq_wakeup >= 0)
> + device_init_wakeup(adapter->dev, false);
> + nxpwifi_free_adapter(adapter);
> +
> +err_init_sw:
> +
> + return ret;
> +}
Powered by blists - more mailing lists