Re: [Regression] kdesu broken

From: Aneesh Kumar K.V
Date: Sat Jul 25 2009 - 12:19:01 EST


On Sat, Jul 25, 2009 at 01:07:03PM +0100, Alan Cox wrote:
> > > See the thread starting here: ("possible regression with pty.c commit")
> > > http://lkml.org/lkml/2009/7/11/125
> >
> > I am also facing a similar problem.
> >
> > http://bugzilla.kernel.org/show_bug.cgi?id=13815
>
> Probably something like this fixes it. I'll be working on that Monday/Tuesday
> along with various other bugs that need a review.
>
> --
>
>
> pty: ensure writes hit the reader before close
>
> From: Alan Cox <alan@xxxxxxxxxxxxxxx>
>
> Logically we move the buffering from one side to the other
> ---
>
> drivers/char/pty.c | 11 +++++++++++
> 1 files changed, 11 insertions(+), 0 deletions(-)
>
>
> diff --git a/drivers/char/pty.c b/drivers/char/pty.c
> index 6e6942c..7555890 100644
> --- a/drivers/char/pty.c
> +++ b/drivers/char/pty.c
> @@ -36,6 +36,15 @@ static struct tty_driver *ptm_driver;
> static struct tty_driver *pts_driver;
> #endif
>
> +static int pty_empty(struct tty_struct *tty)
> +{
> + if (tty->buf.memory_used == 0)
> + return 1;
> + if (test_bit(TTY_HUPPED, &tty->flags))
> + return 1;
> + return 0;
> +}
> +
> static void pty_close(struct tty_struct *tty, struct file *filp)
> {
> BUG_ON(!tty);
> @@ -47,9 +56,11 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
> }
> wake_up_interruptible(&tty->read_wait);
> wake_up_interruptible(&tty->write_wait);
> +
> tty->packet = 0;
> if (!tty->link)
> return;
> + wait_event_interruptible(tty->write_wait, pty_empty(tty->link));
> tty->link->packet = 0;
> set_bit(TTY_OTHER_CLOSED, &tty->link->flags);
> wake_up_interruptible(&tty->link->read_wait);


After applying the patch on Fedora 10 the system bootup hangs after modrpobe.
on ubuntu jaunty i have the system booting fine. But trying to recompile
the test prg on emacs gives me the error message

-UUU:%*--F1 *compilation* All (1,0) (Compilation:run Compiling)----<E> -------
A compilation process is running; kill it? (yes or no)

So i guess even though it gets the error information it cause emacs to think that
the compliation process is still running. The process details listed by emacs
Proc Status Buffer Tty Command
---- ------ ------ --- -------
compilation run *compilation* /dev/pts/2 /bin/bash -c cc -g a.c

But a ps -eaf doesn't list the command running. So something more is going on.

-aneesh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/