mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Fabricio Akio via B4 Relay <devnull+fabricioakio.gmail.com@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	 Fabricio Akio <fabricioakio@gmail.com>
Subject: [PATCH] usb: gadget: u_serial: Dequeue the console request only when queued
Date: Mon, 28 Sep 2026 15:18:18 -0300	[thread overview]
Message-ID: <20260928-u-serial-console-dequeue-v1-1-b44d68585632@gmail.com> (raw)

From: Fabricio Akio <fabricioakio@gmail.com>

gs_console_disconnect() dequeues the console request even when it is
idle, which dwc3 reports as "request ... was not queued" on every
disconnect. Dequeue it only while req->length marks it as queued.

Signed-off-by: Fabricio Akio <fabricioakio@gmail.com>
---
Tested on a Motorola Moto X4 (XT1900-6, SDM630) with the sdm660-mainline
7.2.3 tree and the gadget serial console in use: "request ... was not
queued to ep3in" is logged on every system suspend without this patch,
and not over three consecutive cycles with it. The path where the
request is still queued at disconnect was not exercised. Applies
unchanged to next-20260928.
---
 drivers/usb/gadget/function/u_serial.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c
index cdd1dfc666c4..53a56ddec08a 100644
--- a/drivers/usb/gadget/function/u_serial.c
+++ b/drivers/usb/gadget/function/u_serial.c
@@ -1055,6 +1055,7 @@ static void gs_console_disconnect(struct gs_port *port)
 	struct gs_console *cons = port->console;
 	struct usb_request *req;
 	struct usb_ep *ep;
+	bool was_queued;
 
 	if (!cons)
 		return;
@@ -1063,6 +1064,8 @@ static void gs_console_disconnect(struct gs_port *port)
 
 	req = cons->req;
 	ep = cons->console.data;
+	/* A non-zero length marks the request as queued. */
+	was_queued = req && req->length;
 	cons->req = NULL;
 
 	spin_unlock(&cons->lock);
@@ -1070,7 +1073,8 @@ static void gs_console_disconnect(struct gs_port *port)
 	if (!req)
 		return;
 
-	usb_ep_dequeue(ep, req);
+	if (was_queued)
+		usb_ep_dequeue(ep, req);
 	gs_free_req(ep, req);
 }
 

---
base-commit: 6375e61c01e93e35ee7acd336a689ac1fae4b509
change-id: 20260928-u-serial-console-dequeue-f9790a8e87c6

Best regards,
--  
Fabricio Akio <fabricioakio@gmail.com>



                 reply	other threads:[~2026-09-28 18:18 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260928-u-serial-console-dequeue-v1-1-b44d68585632@gmail.com \
    --to=devnull+fabricioakio.gmail.com@kernel.org \
    --cc=fabricioakio@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®