]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Jan 2025 08:17:12 +0000 (09:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 1 Feb 2025 17:22:33 +0000 (18:22 +0100)
commit 086fd062bc3883ae1ce4166cff5355db315ad879 upstream.

This reverts commit 13014969cbf07f18d62ceea40bd8ca8ec9d36cec.

It is reported to cause crashes on Tegra systems, so revert it for now.

Link: https://lore.kernel.org/r/1037c1ad-9230-4181-b9c3-167dbaa47644@nvidia.com
Reported-by: Jon Hunter <jonathanh@nvidia.com>
Cc: stable <stable@kernel.org>
Cc: Lianqin Hu <hulianqin@vivo.com>
Link: https://lore.kernel.org/r/2025011711-yippee-fever-a737@gregkh
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/u_serial.c

index 9afc6cc1af6c5545b0db08fca6991ff1da0e3db3..a2ba5ab9617c1656a3944b5293ce1203697b4362 100644 (file)
@@ -1395,10 +1395,6 @@ void gserial_disconnect(struct gserial *gser)
        /* REVISIT as above: how best to track this? */
        port->port_line_coding = gser->port_line_coding;
 
-       /* disable endpoints, aborting down any active I/O */
-       usb_ep_disable(gser->out);
-       usb_ep_disable(gser->in);
-
        port->port_usb = NULL;
        gser->ioport = NULL;
        if (port->port.count > 0) {
@@ -1410,6 +1406,10 @@ void gserial_disconnect(struct gserial *gser)
        spin_unlock(&port->port_lock);
        spin_unlock_irqrestore(&serial_port_lock, flags);
 
+       /* disable endpoints, aborting down any active I/O */
+       usb_ep_disable(gser->out);
+       usb_ep_disable(gser->in);
+
        /* finally, free any unused/unusable I/O buffers */
        spin_lock_irqsave(&port->port_lock, flags);
        if (port->port.count == 0)