lkml.org 
[lkml]   [2012]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2] tty: Add driver unthrottle in ioctl(...,TCFLSH,..).
On Fri, 23 Nov 2012 03:02:56 +0400
Ilya Zykov <ilya@ilyx.ru> wrote:

> Regression 'tty: fix "IRQ45: nobody cared"'
> Regression commit 7b292b4bf9a9d6098440d85616d6ca4c608b8304
>
> 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.
>
> About 'tty: fix "IRQ45: nobody cared"':
> We don't call tty_unthrottle() if release last filp - ('tty->count == 0')
> In other case it must be safely.
>
> Unfortunately, many drivers indirectly invoke tty_unthrottle() before TTY LAYER
> decremented (tty->count).
> This Patch help us catch bugs in tty's drivers and invoke tty_unthrottle()
> in right moment only.

This isn't really what I meant by fixing the problem. Simply declaring
the known universe to disagree with your view and adding a WARN isn't a
fix.

Alan


\
 
 \ /
  Last update: 2012-11-23 15:21    [W:0.036 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site