linux/drivers/usb/gadget/function
John Keeping addfc5823d usb: gadget: ffs: handle I/O completion in-order
By submitting completed transfers to the system workqueue there is no
guarantee that completion events will be queued up in the correct order,
as in multi-processor systems there is a thread running for each
processor and the work items are not bound to a particular core.

This means that several completions are in the queue at the same time,
they may be processed in parallel and complete out of order, resulting
in data appearing corrupt when read by userspace.

Create a single-threaded workqueue for FunctionFS so that data completed
requests is passed to userspace in the order in which they complete.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
2017-09-28 12:37:24 +03:00
..
f_acm.c usb: gadget: acm: fix endianness in notifications 2017-03-22 11:20:52 +02:00
f_ecm.c
f_eem.c usb: gadget: prevent potenial null pointer dereference on skb->len 2016-09-06 10:44:03 +03:00
f_fs.c usb: gadget: ffs: handle I/O completion in-order 2017-09-28 12:37:24 +03:00
f_hid.c usb: gadget: f_hid: {GET,SET} PROTOCOL Support 2017-08-15 12:46:03 +03:00
f_loopback.c usb: gadget: remove variable ret and remove unnecessary if statement 2016-09-09 13:38:37 +03:00
f_mass_storage.c USB: g_mass_storage: Fix deadlock when driver is unbound 2017-09-22 18:29:00 +02:00
f_mass_storage.h USB: g_mass_storage: Fix deadlock when driver is unbound 2017-09-22 18:29:00 +02:00
f_midi.c usb: gadget: f_midi: Use snd_card_free_when_closed with refcount 2017-08-15 14:18:47 +03:00
f_ncm.c usb: gadget: f_ncm/u_ether: Move 'SKB reserve' quirk setup to u_ether 2017-08-18 12:29:10 +03:00
f_obex.c
f_phonet.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
f_printer.c usb: gadget: function: printer: avoid spinlock recursion 2017-09-20 14:57:28 +03:00
f_rndis.c usb: gadget: add RNDIS configfs options for class/subclass/protocol 2017-08-15 14:18:56 +03:00
f_serial.c
f_sourcesink.c usb: gadget: remove useless parameter in alloc_ep_req() 2016-08-25 12:13:19 +03:00
f_subset.c
f_tcm.c usb: gadget: Correct usb EP argument for BOT status request 2017-03-30 01:36:50 -07:00
f_uac1_legacy.c usb: gadget: function: make current f_uac1 implementation legacy 2017-06-19 09:22:47 +03:00
f_uac1.c usb: gadget: f_uac1: endianness fixes. 2017-07-18 09:33:16 +03:00
f_uac2.c usb: gadget: f_uac2: endianness fixes. 2017-07-18 09:33:19 +03:00
f_uvc.c usb: gadget: f_uvc: Sanity check wMaxPacketSize for SuperSpeed 2017-03-22 11:21:09 +02:00
f_uvc.h
g_zero.h
Makefile usb: gadget: add f_uac1 variant based on a new u_audio api 2017-06-19 09:22:47 +03:00
ndis.h
rndis.c networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
rndis.h usb: gadget: Fix checkpatch error for braces 2016-11-18 13:54:41 +02:00
storage_common.c usb: gadget: Add per-lun inquiry string 2016-08-25 12:13:13 +03:00
storage_common.h USB: f_mass_storage: improve memory barriers and synchronization 2017-05-16 10:38:33 +03:00
tcm.h
u_audio.c usb: gadget: make snd_pcm_hardware const 2017-08-28 11:39:33 +02:00
u_audio.h usb: gadget: f_uac2: split out audio core 2017-06-19 09:22:46 +03:00
u_ecm.h
u_eem.h
u_ether_configfs.h usb: gadget: add RNDIS configfs options for class/subclass/protocol 2017-08-15 14:18:56 +03:00
u_ether.c usb: gadget: f_ncm/u_ether: Move 'SKB reserve' quirk setup to u_ether 2017-08-18 12:29:10 +03:00
u_ether.h usb: gadget: f_ncm/u_ether: Move 'SKB reserve' quirk setup to u_ether 2017-08-18 12:29:10 +03:00
u_fs.h usb: gadget: ffs: handle I/O completion in-order 2017-09-28 12:37:24 +03:00
u_gether.h
u_hid.h
u_midi.h
u_ncm.h
u_phonet.h
u_printer.h usb: gadget: printer: Remove pnp_string static buffer 2017-01-24 11:04:08 +02:00
u_rndis.h usb: gadget: add RNDIS configfs options for class/subclass/protocol 2017-08-15 14:18:56 +03:00
u_serial.c usb: gadget: serial: fix oops when data rx'd after close 2017-08-18 12:28:50 +03:00
u_serial.h
u_tcm.h
u_uac1_legacy.c sound updates for 4.13-rc1 2017-07-06 10:56:51 -07:00
u_uac1_legacy.h usb: gadget: function: make current f_uac1 implementation legacy 2017-06-19 09:22:47 +03:00
u_uac1.h usb: gadget: add f_uac1 variant based on a new u_audio api 2017-06-19 09:22:47 +03:00
u_uac2.h usb: gadget: uac2: add req_number as parameter 2017-01-24 11:04:21 +02:00
u_uvc.h
uvc_configfs.c usb: gadget: uvc: Missing files for configfs interface 2017-04-11 10:57:59 +03:00
uvc_configfs.h
uvc_queue.c [media] vb2: replace void *alloc_ctxs by struct device *alloc_devs 2016-07-08 14:45:07 -03:00
uvc_queue.h
uvc_v4l2.c usb: gadget: Fix checkpatch error for braces 2016-11-18 13:54:41 +02:00
uvc_v4l2.h
uvc_video.c usb: gadget: composite: always set ep->mult to a sensible value 2016-10-31 11:15:33 +02:00
uvc_video.h
uvc.h usb: gadget: Fix checkpatch error for braces 2016-11-18 13:54:41 +02:00