From: Greg Kroah-Hartman Date: Mon, 18 Dec 2023 10:43:37 +0000 (+0100) Subject: 5.10-stable patches X-Git-Tag: v5.15.144~20 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c3eb2a5d05f83394ba19289d45b7992927a2fa7;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: usb-gadget-core-adjust-uevent-timing-on-gadget-unbind.patch --- diff --git a/queue-5.10/series b/queue-5.10/series index 97bd82e8a5b..3c5524b5378 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -64,3 +64,4 @@ tracing-update-snapshot-buffer-on-resize-if-it-is-allocated.patch ring-buffer-have-saved-event-hold-the-entire-event.patch ring-buffer-fix-writing-to-the-buffer-with-max_data_size.patch ring-buffer-fix-a-race-in-rb_time_cmpxchg-for-32-bit-archs.patch +usb-gadget-core-adjust-uevent-timing-on-gadget-unbind.patch diff --git a/queue-5.10/usb-gadget-core-adjust-uevent-timing-on-gadget-unbind.patch b/queue-5.10/usb-gadget-core-adjust-uevent-timing-on-gadget-unbind.patch new file mode 100644 index 00000000000..1f4fe225e66 --- /dev/null +++ b/queue-5.10/usb-gadget-core-adjust-uevent-timing-on-gadget-unbind.patch @@ -0,0 +1,46 @@ +From 73ea73affe8622bdf292de898da869d441da6a9d Mon Sep 17 00:00:00 2001 +From: Roy Luo +Date: Tue, 28 Nov 2023 22:17:56 +0000 +Subject: USB: gadget: core: adjust uevent timing on gadget unbind + +From: Roy Luo + +commit 73ea73affe8622bdf292de898da869d441da6a9d upstream. + +The KOBJ_CHANGE uevent is sent before gadget unbind is actually +executed, resulting in inaccurate uevent emitted at incorrect timing +(the uevent would have USB_UDC_DRIVER variable set while it would +soon be removed). +Move the KOBJ_CHANGE uevent to the end of the unbind function so that +uevent is sent only after the change has been made. + +Fixes: 2ccea03a8f7e ("usb: gadget: introduce UDC Class") +Cc: stable@vger.kernel.org +Signed-off-by: Roy Luo +Link: https://lore.kernel.org/r/20231128221756.2591158-1-royluo@google.com +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/gadget/udc/core.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/gadget/udc/core.c ++++ b/drivers/usb/gadget/udc/core.c +@@ -1353,8 +1353,6 @@ static void usb_gadget_remove_driver(str + dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", + udc->driver->function); + +- kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); +- + usb_gadget_disconnect(udc->gadget); + if (udc->gadget->irq) + synchronize_irq(udc->gadget->irq); +@@ -1363,6 +1361,8 @@ static void usb_gadget_remove_driver(str + + udc->driver = NULL; + udc->gadget->dev.driver = NULL; ++ ++ kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); + } + + /**