]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: wl1251: fix memory leak in wl1251_tx_work
authorAbdun Nihaal <abdun.nihaal@gmail.com>
Sun, 30 Mar 2025 10:45:32 +0000 (16:15 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 May 2025 05:40:58 +0000 (07:40 +0200)
[ Upstream commit a0f0dc96de03ffeefc2a177b7f8acde565cb77f4 ]

The skb dequeued from tx_queue is lost when wl1251_ps_elp_wakeup fails
with a -ETIMEDOUT error. Fix that by queueing the skb back to tx_queue.

Fixes: c5483b719363 ("wl12xx: check if elp wakeup failed")
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
Reviewed-by: Michael Nemanov <michael.nemanov@ti.com>
Link: https://patch.msgid.link/20250330104532.44935-1-abdun.nihaal@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ti/wl1251/tx.c

index 98cd39619d5795b74a3912265f043617096f62ce..5771f61392efb5b13b1804cb7843a684d7c4889d 100644 (file)
@@ -342,8 +342,10 @@ void wl1251_tx_work(struct work_struct *work)
        while ((skb = skb_dequeue(&wl->tx_queue))) {
                if (!woken_up) {
                        ret = wl1251_ps_elp_wakeup(wl);
-                       if (ret < 0)
+                       if (ret < 0) {
+                               skb_queue_head(&wl->tx_queue, skb);
                                goto out;
+                       }
                        woken_up = true;
                }