linux/drivers/usb/serial
Johan Hovold 6f6485463a USB: serial: fix race in generic write
Fix race in generic write implementation, which could lead to
temporarily degraded throughput.

The current generic write implementation introduced by commit
27c7acf220 ("USB: serial: reimplement generic fifo-based writes") has
always had this bug, although it's fairly hard to trigger and the
consequences are not likely to be noticed.

Specifically, a write() on one CPU while the completion handler is
running on another could result in only one of the two write urbs being
utilised to empty the remainder of the write fifo (unless there is a
second write() that doesn't race during that time).

Cc: stable <stable@vger.kernel.org> # 2.6.35
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-25 08:39:40 -08:00
..
aircable.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ark3116.c USB: serial: make minor allocation dynamic 2013-06-17 13:30:02 -07:00
belkin_sa.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
belkin_sa.h
bus.c Driver core patches for 3.12-rc1 2013-09-03 11:37:15 -07:00
ch341.c USB: ch341: fix TIOCMIWAIT and disconnect 2013-03-25 13:50:52 -07:00
console.c USB: console: remove unnecessary operations test 2013-07-23 16:24:32 -07:00
cp210x.c Merge 3.11-rc3 into usb-next 2013-07-29 07:43:16 -07:00
cyberjack.c USB: cyberjack: fix buggy integer overflow test 2013-10-07 00:07:18 -07:00
cypress_m8.c USB: serial: set drain delay at port probe 2013-07-23 16:21:50 -07:00
cypress_m8.h USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device 2013-06-03 10:33:10 -07:00
digi_acceleport.c USB: serial: ports: add minor and port number 2013-06-10 14:46:40 -07:00
empeg.c USB: serial: remove driver version information 2012-10-31 12:48:06 -07:00
ezusb_convert.pl
f81232.c USB: serial: set drain delay at port probe 2013-07-23 16:21:50 -07:00
ftdi_sio_ids.h USB: serial: ftdi_sio: add id for Z3X Box device 2013-11-01 09:33:56 -07:00
ftdi_sio.c USB driver update for 3.13-rc1 2013-11-07 09:19:48 +09:00
ftdi_sio.h USB: ftdi_sio: add support for FT-X series devices 2012-03-14 15:43:05 -07:00
garmin_gps.c USB: serial: ports: add minor and port number 2013-06-10 14:46:40 -07:00
generic.c USB: serial: fix race in generic write 2013-11-25 08:39:40 -08:00
io_16654.h
io_edgeport.c USB: io_edgeport: remove unused defines 2013-07-23 16:28:22 -07:00
io_edgeport.h
io_ionsp.h
io_tables.h USB: io_edgeport: switch to generic TIOCMIWAIT implementation 2013-03-25 13:50:53 -07:00
io_ti.c USB: serial: clean up attribute permissions 2013-08-25 15:12:03 -07:00
io_ti.h
io_usbvend.h
ipaq.c USB: serial: remove driver version information 2012-10-31 12:48:06 -07:00
ipw.c USB: serial: remove driver version information 2012-10-31 12:48:06 -07:00
ir-usb.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
iuu_phoenix.c USB: serial: clean up attribute permissions 2013-08-25 15:12:03 -07:00
iuu_phoenix.h
Kconfig USB: fix typo in usb serial simple driver Kconfig 2013-09-17 09:36:10 -07:00
keyspan_pda.c USB patches for 3.10-rc1 2013-04-29 12:19:23 -07:00
keyspan_usa26msg.h
keyspan_usa28msg.h
keyspan_usa49msg.h
keyspan_usa67msg.h
keyspan_usa90msg.h
keyspan.c Merge 3.11-rc6 into usb-next 2013-08-18 20:33:01 -07:00
keyspan.h USB: keyspan: fix NULL-pointer dereferences and memory leaks 2012-10-25 09:37:13 -07:00
kl5kusb105.c USB: kl5kusb105: always disable uart on close 2013-03-25 13:54:31 -07:00
kl5kusb105.h
kobil_sct.c USB: kobil_sct: use port interrupt-out urb 2013-04-17 10:05:35 -07:00
kobil_sct.h
Makefile USB: serial: move the "simple" drivers into usb-serial-simple.c 2013-08-12 12:14:52 -07:00
Makefile-keyspan_pda_fw
mct_u232.c USB: mct_u232: clean up read implementation 2013-04-17 10:05:35 -07:00
mct_u232.h
metro-usb.c USB: serial: ports: add minor and port number 2013-06-10 14:46:40 -07:00
mos7720.c tree-wide: use reinit_completion instead of INIT_COMPLETION 2013-11-15 09:32:21 +09:00
mos7840.c USB: mos7840: fix tiocmget error handling 2013-10-11 17:01:25 -07:00
navman.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
omninet.c USB: omninet: switch to generic read implementation 2013-04-17 10:05:34 -07:00
opticon.c USB: serial: make minor allocation dynamic 2013-06-17 13:30:02 -07:00
option.c USB:add new zte 3g-dongle's pid to option.c 2013-10-25 06:37:25 +01:00
oti6858.c USB: oti6858: do not call set_termios with uninitialised data 2013-07-23 16:24:33 -07:00
oti6858.h
pl2303.c Revert "USB: pl2303: restrict the divisor based baud rate encoding method to the "HX" chip type" 2013-11-01 09:19:56 -07:00
pl2303.h
qcaux.c qcaux: add Franklin U600 2013-03-11 11:09:17 -07:00
qcserial.c USB: option,qcserial: move Novatel Gobi1K IDs to qcserial 2013-06-24 16:21:53 -07:00
quatech2.c USB: quatech2: fix port DMA-buffer allocations 2013-08-14 13:51:02 -07:00
safe_serial.c USB: safe_serial: remove vendor/product module parameters 2013-07-23 16:28:23 -07:00
sierra.c USB: serial: ports: add minor and port number 2013-06-10 14:46:40 -07:00
spcp8x5.c USB: serial: set drain delay at port probe 2013-07-23 16:21:50 -07:00
ssu100.c USB: serial: make minor allocation dynamic 2013-06-17 13:30:02 -07:00
symbolserial.c USB: symbolserial: move private-data allocation to port_probe 2013-04-17 10:05:35 -07:00
ti_usb_3410_5052.c USB: serial: ti_usb_3410_5052: add Abbott strip port ID to combined table as well. 2013-10-11 16:17:51 -07:00
ti_usb_3410_5052.h USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable 2013-06-19 15:54:45 -07:00
usb_debug.c USB: serial: rework usb_serial_register/deregister_drivers() 2012-05-08 15:46:14 -07:00
usb_wwan.c USB-Serial: Fix error handling of usb_wwan 2013-08-12 13:45:26 -07:00
usb-serial-simple.c USB: serial: fix stringify operator in usb-serial-simple 2013-08-18 13:11:06 -07:00
usb-serial.c USB: serial: clean up dtr_rts 2013-07-23 16:21:50 -07:00
usb-wwan.h USB: usb-wwan: fix multiple memory leaks in error paths 2012-10-25 09:37:13 -07:00
visor.c USB: visor: fix initialisation of Treo/Kyocera devices 2013-05-29 10:47:45 +09:00
visor.h
whiteheat.c USB: serial: make minor allocation dynamic 2013-06-17 13:30:02 -07:00
whiteheat.h
wishbone-serial.c USB: serial: wishbone-serial: fix up minor sparse warning 2013-04-11 08:45:34 -07:00
xsens_mt.c usb: add driver for xsens motion trackers 2013-01-25 09:56:54 -08:00
zte_ev.c USB: option,zte_ev: move most ZTE CDMA devices to zte_ev 2013-06-06 09:06:25 -07:00