Commit 4a142520 authored by Jakov Novak's avatar Jakov Novak Committed by Johannes Berg
Browse files

wifi: libertas: notify firmware load wait on disconnect



Currently, when the firmware is not fully loaded and if_usb_disconnect
is called, if_usb_prog_firmware gets stuck waiting for
cardp->surprise_removed or cardp->fwdnldover while lbs_remove_card
also waits for the firmware loading to be completed, which never happens.
This caused the reported syzbot bug. To address this, the wake_up
function call can be added in the if_usb_disconnect function which notifies
the if_usb_prog_firmware thread and resolves the firmware loading.

Fixes: 954ee164 ("[PATCH] libertas: reorganize and simplify init sequence")
Reported-and-tested-by: default avatar <syzbot+c99d17aa44dbdba16ad2@syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=c99d17aa44dbdba16ad2


Signed-off-by: default avatarJakov Novak <jakovnovak30@gmail.com>
Link: https://patch.msgid.link/20260504162356.17250-2-jakovnovak30@gmail.com


[fix subject]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 65493f27
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -310,6 +310,7 @@ static void if_usb_disconnect(struct usb_interface *intf)
	struct lbs_private *priv = cardp->priv;

	cardp->surprise_removed = 1;
	wake_up(&cardp->fw_wq);

	if (priv) {
		lbs_stop_card(priv);