Skip to content

Commit b991645

Browse files
Kuen-Han Tsaigregkh
authored andcommitted
usb: udc: Add trace event for usb_gadget_set_state
[ Upstream commit 7bf1158 ] 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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]> Stable-dep-of: baeb66f ("usb: gadget: udc: fix use-after-free in usb_gadget_state_work") Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 723c674 commit b991645

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

drivers/usb/gadget/udc/core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,7 @@ void usb_gadget_set_state(struct usb_gadget *gadget,
11231123
{
11241124
gadget->state = state;
11251125
schedule_work(&gadget->work);
1126+
trace_usb_gadget_set_state(gadget, 0);
11261127
}
11271128
EXPORT_SYMBOL_GPL(usb_gadget_set_state);
11281129

drivers/usb/gadget/udc/trace.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ DECLARE_EVENT_CLASS(udc_log_gadget,
8181
__entry->ret)
8282
);
8383

84+
DEFINE_EVENT(udc_log_gadget, usb_gadget_set_state,
85+
TP_PROTO(struct usb_gadget *g, int ret),
86+
TP_ARGS(g, ret)
87+
);
88+
8489
DEFINE_EVENT(udc_log_gadget, usb_gadget_frame_number,
8590
TP_PROTO(struct usb_gadget *g, int ret),
8691
TP_ARGS(g, ret)

0 commit comments

Comments
 (0)