linux-imx/drivers/usb/class
Ben Hutchings 8d272f9af5 cdc-wdm: Fix more races on the read path
commit 711c68b3c0 upstream.

We must not allow the input buffer length to change while we're
shuffling the buffer contents.  We also mustn't clear the WDM_READ
flag after more data might have arrived.  Therefore move both of these
into the spinlocked region at the bottom of wdm_read().

When reading desc->length without holding the iuspin lock, use
ACCESS_ONCE() to ensure the compiler doesn't re-read it with
inconsistent results.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Tested-by: Bjørn Mork <bjorn@mork.no>
Cc: Oliver Neukum <oliver@neukum.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-04-02 09:52:31 -07:00
..
cdc-acm.c usb: cdc-acm: Fix acm_tty_hangup() vs. acm_tty_close() race 2012-01-12 11:29:46 -08:00
cdc-acm.h USB: cdc_acm: Fix oops when Droids MuIn LCD is connected 2011-05-11 15:14:28 -07:00
cdc-wdm.c cdc-wdm: Fix more races on the read path 2012-04-02 09:52:31 -07:00
Kconfig USB: add USB test and measurement class driver 2008-10-17 14:40:51 -07:00
Makefile USB: add USB test and measurement class driver 2008-10-17 14:40:51 -07:00
usblp.c usb/class: use printk_ratelimited() instead of printk_ratelimit() 2011-07-01 14:43:24 -07:00
usbtmc.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00