usb: gadget: u_ether: Set is_suspend flag if remote wakeup fails
commit 17c2c87c37862c3e95b55f660681cc6e8d66660e upstream.
Currently while UDC suspends, u_ether attempts to remote wakeup
the host if there are any pending transfers. However, if remote
wakeup fails, the UDC remains suspended but the is_suspend flag
is not set. And since is_suspend flag isn't set, the subsequent
eth_start_xmit() would queue USB requests to suspended UDC.
To fix this, bail out from gether_suspend() only if remote wakeup
operation is successful.
Cc: stable <stable@kernel.org>
Fixes: 0a1af6dfa0 ("usb: gadget: f_ecm: Add suspend/resume and remote wakeup support")
Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250212100840.3812153-1-prashanth.k@oss.qualcomm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e5aac1c9b2
commit
840afbea3f
@@ -1052,8 +1052,8 @@ void gether_suspend(struct gether *link)
|
||||
* There is a transfer in progress. So we trigger a remote
|
||||
* wakeup to inform the host.
|
||||
*/
|
||||
ether_wakeup_host(dev->port_usb);
|
||||
return;
|
||||
if (!ether_wakeup_host(dev->port_usb))
|
||||
return;
|
||||
}
|
||||
spin_lock_irqsave(&dev->lock, flags);
|
||||
link->is_suspend = true;
|
||||
|
||||
Reference in New Issue
Block a user