]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: libertas: fix WARNING in usb_tx_block
authorSzymon Wilczek <swilczek.lx@gmail.com>
Sun, 21 Dec 2025 15:58:06 +0000 (16:58 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Jan 2026 12:44:27 +0000 (13:44 +0100)
The function usb_tx_block() submits cardp->tx_urb without ensuring that
any previous transmission on this URB has completed. If a second call
occurs while the URB is still active (e.g. during rapid firmware loading),
usb_submit_urb() detects the active state and triggers a warning:
'URB submitted while active'.

Fix this by enforcing serialization: call usb_kill_urb() before
submitting the new request. This ensures the URB is idle and safe to reuse.

Reported-by: syzbot+67969ab6a2551c27f71b@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=67969ab6a2551c27f71b
Signed-off-by: Szymon Wilczek <swilczek.lx@gmail.com>
Link: https://patch.msgid.link/20251221155806.23925-1-swilczek.lx@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/marvell/libertas/if_usb.c

index b3c4040257a6708bba4bbb39db740a2590eab542..924ab93b7b6714b9de0879dcc46bf198500425a6 100644 (file)
@@ -426,6 +426,8 @@ static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, uint16_t nb
                goto tx_ret;
        }
 
+       usb_kill_urb(cardp->tx_urb);
+
        usb_fill_bulk_urb(cardp->tx_urb, cardp->udev,
                          usb_sndbulkpipe(cardp->udev,
                                          cardp->ep_out),