]> git.baikalelectronics.ru Git - kernel.git/commit
tty: Add driver unthrottle in ioctl(...,TCFLSH,..).
authorIlya Zykov <ilya@ilyx.ru>
Wed, 16 Jan 2013 09:07:50 +0000 (13:07 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 19 Jan 2013 00:07:34 +0000 (16:07 -0800)
commit079c73517744f6a51203b937a9fabfa19979fe1e
treeaa3aa5cb506ef48c3bf34712893f26ea4566a27a
parentb2ce7430cec4846cff08338adbb48ba059ebbbc1
tty: Add driver unthrottle in ioctl(...,TCFLSH,..).

Regression 'tty: fix "IRQ45: nobody cared"'
Regression commit f377e97dc5c5ccb3b5a0d3f3e30eae8cacdce05d

  Function reset_buffer_flags() also invoked during the ioctl(...,TCFLSH,..).
At the time of request we can have full buffers and throttled driver too.
If we don't unthrottle driver, we can get forever throttled driver, because,
after request, we will have empty buffers and throttled driver and
there is no place to unthrottle driver.
It simple reproduce with "pty" pair then one side sleep on tty->write_wait,
and other side do ioctl(...,TCFLSH,..). Then there is no place to do writers wake up.

Signed-off-by: Ilya Zykov <ilya@ilyx.ru>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_ioctl.c