]> git.ipfire.org Git - thirdparty/linux.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>
Fri, 17 Jan 2025 11:41:16 +0000 (12:41 +0100)
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 5413882b149812a141cc641be99e216d0b11006a..36fff45e8c9b7a5ddfa343d848bcedfeec957549 100644 (file)
@@ -1421,10 +1421,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) {
@@ -1436,6 +1432,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)