mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 13:11:14 +00:00
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>
This commit is contained in:
parent
d7a855bd6a
commit
f9e053dcfc
3 changed files with 36 additions and 12 deletions
|
@ -152,6 +152,8 @@
|
|||
* This routine notifies the tty driver that it should stop
|
||||
* outputting characters to the tty device.
|
||||
*
|
||||
* Called with ->flow_lock held. Serialized with start() method.
|
||||
*
|
||||
* Optional:
|
||||
*
|
||||
* Note: Call stop_tty not this method.
|
||||
|
@ -161,6 +163,8 @@
|
|||
* This routine notifies the tty driver that it resume sending
|
||||
* characters to the tty device.
|
||||
*
|
||||
* Called with ->flow_lock held. Serialized with stop() method.
|
||||
*
|
||||
* Optional:
|
||||
*
|
||||
* Note: Call start_tty not this method.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue