]> 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)
commit6461d31053e63645bf3b0b1096a07819b5779af4
treeaa3aa5cb506ef48c3bf34712893f26ea4566a27a
parent6a27a76c27e65aa5cae07940fe072547c052cd87
tty: Add driver unthrottle in ioctl(...,TCFLSH,..).

Regression 'tty: fix "IRQ45: nobody cared"'
Regression commit 04415af63f1a364e72d789573d5e8fedf2a4ceb6

  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