[lkml]   [2009]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 1/8] tty: Fix race in the flush for some ldiscs
    From: Alan Cox <>

    If you issue an ioctl to flush a tty as the line discipline is changing or
    otherwise unplugged you can get a crash. The bug is very old but the rest
    of the BKL lock dropping and some very "good" luck on Ingo's part caught
    an example.

    Use the correct ldisc_ref form so that we wait for the ldisc change to
    complete and then flush

    Signed-off-by: Alan Cox <>

    drivers/char/tty_ioctl.c | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)

    diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c
    index a408c8e..6f4c7d0 100644
    --- a/drivers/char/tty_ioctl.c
    +++ b/drivers/char/tty_ioctl.c
    @@ -1057,7 +1057,7 @@ int tty_perform_flush(struct tty_struct *tty, unsigned long arg)
    if (retval)
    return retval;

    - ld = tty_ldisc_ref(tty);
    + ld = tty_ldisc_ref_wait(tty);
    switch (arg) {
    case TCIFLUSH:
    if (ld && ld->ops->flush_buffer)

     \ /
      Last update: 2009-01-15 14:33    [W:0.031 / U:8.616 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site