mirror_ubuntu-kernels/drivers/usb/gadget/function
Wesley Cheng 6fc1db5e62 usb: gadget: f_fs: Ensure io_completion_wq is idle during unbind
During unbind, ffs_func_eps_disable() will be executed, resulting in
completion callbacks for any pending USB requests.  When using AIO,
irrespective of the completion status, io_data work is queued to
io_completion_wq to evaluate and handle the completed requests.  Since
work runs asynchronously to the unbind() routine, there can be a
scenario where the work runs after the USB gadget has been fully
removed, resulting in accessing of a resource which has been already
freed. (i.e. usb_ep_free_request() accessing the USB ep structure)

Explicitly drain the io_completion_wq, instead of relying on the
destroy_workqueue() (in ffs_data_put()) to make sure no pending
completion work items are running.

Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/1621644261-1236-1-git-send-email-wcheng@codeaurora.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-04 13:40:46 +02:00
..
f_acm.c USB: gadget: f_acm: add support for SuperSpeed Plus 2020-12-10 16:12:20 +01:00
f_ecm.c
f_eem.c usb: gadget: function: remove redundant assignment to variable 'status' 2020-05-25 11:09:39 +03:00
f_fs.c usb: gadget: f_fs: Ensure io_completion_wq is idle during unbind 2021-06-04 13:40:46 +02:00
f_hid.c usb: gadget: Use fallthrough pseudo-keyword 2020-07-10 08:55:18 +02:00
f_loopback.c usb: Fix fall-through warnings for Clang 2020-11-23 17:46:01 +01:00
f_mass_storage.c usb: gadget: storage: Remove unused function pointer typedef fsg_routine_t 2021-03-10 09:37:15 +01:00
f_mass_storage.h
f_midi.c usb/gadget: f_midi: Replace tasklet with work 2021-01-12 12:52:28 +01:00
f_ncm.c usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets. 2020-10-02 09:57:41 +03:00
f_obex.c
f_phonet.c usb: gadget: Use fallthrough pseudo-keyword 2020-07-10 08:55:18 +02:00
f_printer.c usb: gadget: function: fix typo in f_printer.c 2021-03-10 09:37:15 +01:00
f_rndis.c USB: gadget: f_rndis: fix bitrate for SuperSpeed and above 2020-12-10 16:12:16 +01:00
f_serial.c usb: gadget: f_serial: add suspend resume callbacks 2020-05-25 11:09:39 +03:00
f_sourcesink.c usb: Fix fall-through warnings for Clang 2020-11-23 17:46:01 +01:00
f_subset.c
f_tcm.c scsi: target: usb: gadget: Convert to new submission API 2021-03-04 17:37:01 -05:00
f_uac1_legacy.c usb: gadget: function: fix missing spinlock in f_uac1_legacy 2020-07-09 10:13:07 +03:00
f_uac1.c usb: gadget: f_uac1: disable IN/OUT ep if unused 2021-03-23 12:54:56 +01:00
f_uac2.c usb: gadget: f_uac2: validate input parameters 2021-03-23 12:54:56 +01:00
f_uvc.c usb: webcam: Invalid size of Processing Unit Descriptor 2021-03-18 09:02:27 +01:00
f_uvc.h
g_zero.h
Makefile
ndis.h
rndis.c
rndis.h
storage_common.c block: remove i_bdev 2020-12-01 14:53:39 -07:00
storage_common.h
tcm.h
u_audio.c usb: gadget: u_audio: convert to strscpy 2021-03-23 12:56:08 +01:00
u_audio.h
u_ecm.h
u_eem.h
u_ether_configfs.h USB: gadget: u_ether: Fix a configfs return code 2021-03-10 09:36:12 +01:00
u_ether.c usb: gadget: u_ether: support configuring interface names. 2021-01-15 16:08:53 +01:00
u_ether.h usb: gadget: u_ether: support configuring interface names. 2021-01-15 16:08:53 +01:00
u_fs.h
u_gether.h
u_hid.h
u_midi.h
u_ncm.h
u_phonet.h
u_printer.h
u_rndis.h
u_serial.c usb: gadget: u_serial: Remove old tasklet comments 2021-01-19 13:30:52 +01:00
u_serial.h usb: gadget: u_serial.h: increase MAX_U_SERIAL_PORTS to 8 2020-06-18 10:23:22 +02:00
u_tcm.h
u_uac1_legacy.c usb: gadget: function: u_uac1_legacy: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-09 17:19:58 +02:00
u_uac1_legacy.h
u_uac1.h
u_uac2.h
u_uvc.h
uvc_configfs.c usb: gadget: uvc: Updating bcdUVC field to 0x0110 2021-03-18 09:02:27 +01:00
uvc_configfs.h
uvc_queue.c
uvc_queue.h
uvc_v4l2.c usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc_v4l2.h
uvc_video.c usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc_video.h usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc.h usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00