]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: udc: Add trace event for usb_gadget_set_state
authorKuen-Han Tsai <khtsai@google.com>
Tue, 2 Dec 2025 01:43:44 +0000 (20:43 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Dec 2025 21:27:40 +0000 (06:27 +0900)
[ Upstream commit 7bf1158514e410310aec975e630cec99d4e4092f ]

While the userspace program can be notified of gadget state changes,
timing issue can lead to missed transitions when reading the state
value.

Introduce a trace event for usb_gadget_set_state to reliably track state
transitions.

Signed-off-by: Kuen-Han Tsai <khtsai@google.com>
Link: https://lore.kernel.org/r/20250818082722.2952867-1-khtsai@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: baeb66fbd420 ("usb: gadget: udc: fix use-after-free in usb_gadget_state_work")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/udc/core.c
drivers/usb/gadget/udc/trace.h

index e3d63b8fa0f4c17c6d59ab9d2f2c529e98f20d45..694653761c44ceeb35c87eeebc1c222b6a70bbae 100644 (file)
@@ -1128,6 +1128,7 @@ void usb_gadget_set_state(struct usb_gadget *gadget,
 {
        gadget->state = state;
        schedule_work(&gadget->work);
+       trace_usb_gadget_set_state(gadget, 0);
 }
 EXPORT_SYMBOL_GPL(usb_gadget_set_state);
 
index 4e334298b0e8a75a925093b00875aa78708551eb..fa3e6ddf0a12809245a69808ae8f35bf67db9dfe 100644 (file)
@@ -81,6 +81,11 @@ DECLARE_EVENT_CLASS(udc_log_gadget,
                __entry->ret)
 );
 
+DEFINE_EVENT(udc_log_gadget, usb_gadget_set_state,
+       TP_PROTO(struct usb_gadget *g, int ret),
+       TP_ARGS(g, ret)
+);
+
 DEFINE_EVENT(udc_log_gadget, usb_gadget_frame_number,
        TP_PROTO(struct usb_gadget *g, int ret),
        TP_ARGS(g, ret)