diff options
author | Badhri Jagan Sridharan <[email protected]> | 2023-04-07 03:07:40 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2023-04-20 11:16:33 +0200 |
commit | 0db213ea8eed5534a5169e807f28103cbc9d23df (patch) | |
tree | 8ce68ab0e1ed60f3f760f299240ee78ecb5143c3 /drivers/fpga/fpga-mgr.c | |
parent | 511b74e7c0b8ecd78b8175f5ee84dc0b6e014c19 (diff) |
usb: gadget: udc: core: Invoke usb_gadget_connect only when started
usb_udc_connect_control does not check to see if the udc has already
been started. This causes gadget->ops->pullup to be called through
usb_gadget_connect when invoked from usb_udc_vbus_handler even before
usb_gadget_udc_start is called. Guard this by checking for udc->started
in usb_udc_connect_control before invoking usb_gadget_connect.
Guarding udc->vbus, udc->started, gadget->connect, gadget->deactivate
related functions with connect_lock. usb_gadget_connect_locked,
usb_gadget_disconnect_locked, usb_udc_connect_control_locked,
usb_gadget_udc_start_locked, usb_gadget_udc_stop_locked are called with
this lock held as they can be simulataneously invoked from different code
paths.
Adding an additional check to make sure udc is started(udc->started)
before pullup callback is invoked.
Fixes: 628ef0d273a6 ("usb: udc: add usb_udc_vbus_handler")
Cc: [email protected]
Signed-off-by: Badhri Jagan Sridharan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'drivers/fpga/fpga-mgr.c')
0 files changed, 0 insertions, 0 deletions