linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] USB: fix tty unthrottle races
@ 2019-04-25 16:05 Johan Hovold
  2019-04-25 16:05 ` [1/5] USB: serial: fix " Johan Hovold
                   ` (6 more replies)
  0 siblings, 7 replies; 29+ messages in thread
From: Johan Hovold @ 2019-04-25 16:05 UTC (permalink / raw)
  To: Alan Stern, Oliver Neukum, Greg Kroah-Hartman; +Cc: linux-usb, Johan Hovold

This series fixes a couple of long-standing issues in USB serial and
cdc-acm which essentially share the same implementation.

As noted by Oliver a few years back, read-urb completion can race with
unthrottle() running on another CPU and this can potentially lead to
memory corruption. This particular bug in cdc-acm was unfortunately
reintroduced a year later.

There's also a second race due to missing memory barriers which could
theoretically lead to the port staying throttled until reopened on
weakly ordered systems. A second set of memory barriers should address
that.

I would appreciate your keen eyes on this one to make sure I got the
barriers right.

I noticed there's some on-going discussion about the atomic memory
barriers that Alan's involved in, and I'll try to catch up on his
data-race work as well. I'm still a little concerned about whether the
smp_mb__before_atomic() is sufficient to prevent the compiler from
messing things up without adding READ_ONCE().

Note that none of these have stable tags as the issues have been there
for eight years or so without anyone noticing (besides Oliver).

Still feels good to clean up your own mess.

Note that the cdc-acm patches have so far only been compile tested.

Johan


Johan Hovold (5):
  USB: serial: fix unthrottle races
  USB: serial: clean up throttle handling
  USB: serial: generic: drop unnecessary goto
  USB: cdc-acm: fix unthrottle races
  USB: cdc-acm: clean up throttle handling

 drivers/usb/class/cdc-acm.c  | 63 +++++++++++++++---------------
 drivers/usb/class/cdc-acm.h  |  3 +-
 drivers/usb/serial/generic.c | 76 +++++++++++++++++++-----------------
 include/linux/usb/serial.h   |  5 +--
 4 files changed, 75 insertions(+), 72 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2019-05-14 12:57 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-25 16:05 [PATCH 0/5] USB: fix tty unthrottle races Johan Hovold
2019-04-25 16:05 ` [1/5] USB: serial: fix " Johan Hovold
2019-04-25 16:05   ` [PATCH 1/5] " Johan Hovold
2019-04-29  9:50   ` [1/5] " Oliver Neukum
2019-04-29  9:50     ` [PATCH 1/5] " Oliver Neukum
2019-04-29 10:03     ` [1/5] " Johan Hovold
2019-04-29 10:03       ` [PATCH 1/5] " Johan Hovold
2019-05-13 10:43   ` Johan Hovold
2019-05-13 10:56     ` Greg Kroah-Hartman
2019-05-13 11:46       ` Johan Hovold
2019-05-13 12:51         ` Greg Kroah-Hartman
2019-05-13 12:59           ` Johan Hovold
2019-05-14 12:53             ` Sasha Levin
2019-05-14 12:57               ` Johan Hovold
2019-04-25 16:05 ` [2/5] USB: serial: clean up throttle handling Johan Hovold
2019-04-25 16:05   ` [PATCH 2/5] " Johan Hovold
2019-04-25 16:05 ` [3/5] USB: serial: generic: drop unnecessary goto Johan Hovold
2019-04-25 16:05   ` [PATCH 3/5] " Johan Hovold
2019-04-25 16:05 ` [4/5] USB: cdc-acm: fix unthrottle races Johan Hovold
2019-04-25 16:05   ` [PATCH 4/5] " Johan Hovold
2019-04-29 10:09   ` [4/5] " Oliver Neukum
2019-04-29 10:09     ` [PATCH 4/5] " Oliver Neukum
2019-04-25 16:05 ` [5/5] USB: cdc-acm: clean up throttle handling Johan Hovold
2019-04-25 16:05   ` [PATCH 5/5] " Johan Hovold
2019-04-29 10:10   ` [5/5] " Oliver Neukum
2019-04-29 10:10     ` [PATCH 5/5] " Oliver Neukum
2019-04-25 20:58 ` [PATCH 0/5] USB: fix tty unthrottle races Alan Stern
2019-04-26  4:55   ` Johan Hovold
2019-04-29  9:30 ` Johan Hovold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).