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

    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 <alan@redhat.com>
    ---

    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.019 / U:125.720 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site