summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2014-10-16 15:33:29 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 16:34:36 -0800
commit1aa1bf1115272d22fc4c758ee8769b73d8079a79 (patch)
tree880cd64a703772ce11bae136ac50ed2330a10803 /tools
parent4ed60fc257185dbb0daea7cd3e4289d1658b11f6 (diff)
downloadop-kernel-dev-1aa1bf1115272d22fc4c758ee8769b73d8079a79.zip
op-kernel-dev-1aa1bf1115272d22fc4c758ee8769b73d8079a79.tar.gz
tty: Fix missed wakeup from packet mode status update
The pty master read() can miss the wake up for a packet mode status change. For example, CPU 0 | CPU 1 n_tty_read() | n_tty_packet_mode_flush() ... | . if (packet & link->ctrl_status) { | . /* no new ctrl_status ATM */ | . | spin_lock | ctrl_status |= TIOCPKT_FLUSHREAD | spin_unlock | wake_up(link->read_wait) } | set_current_state(TASK_INTERRUPTIBLE) | ... | The pty master read() will now sleep (assuming there is no input) having missed the read_wait wakeup. Set the task state before the condition test. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Reviewed-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud