diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2014-09-10 21:06:31 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-09-24 06:19:35 +0200 |
commit | f9e053dcfc02b0ad29daec8524fb1afe09774976 (patch) | |
tree | 2d930c2d89b011b40c03eeb13ee6f431cb602d3f /drivers/tty/pty.c | |
parent | tty: Convert tty_struct bitfield to ints (diff) | |
download | linux-f9e053dcfc02b0ad29daec8524fb1afe09774976.tar.xz linux-f9e053dcfc02b0ad29daec8524fb1afe09774976.zip |
tty: Serialize tty flow control changes with flow_lock
Without serialization, the flow control state can become inverted
wrt. the actual hardware state. For example,
CPU 0 | CPU 1
stop_tty() |
lock ctrl_lock |
tty->stopped = 1 |
unlock ctrl_lock |
| start_tty()
| lock ctrl_lock
| tty->stopped = 0
| unlock ctrl_lock
| driver->start()
driver->stop() |
In this case, the flow control state now indicates the tty has
been started, but the actual hardware state has actually been stopped.
Introduce tty->flow_lock spinlock to serialize tty flow control changes.
Split out unlocked __start_tty()/__stop_tty() flavors for use by
ioctl(TCXONC) in follow-on patch.
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/pty.c')
0 files changed, 0 insertions, 0 deletions