Re: 2.6.21-rc4-mm1: init hangs on tty_mutex

From: Hugh Dickins
Date: Wed Mar 21 2007 - 11:19:46 EST


On Tue, 20 Mar 2007, Eric W. Biederman wrote:
> Hugh Dickins <hugh@xxxxxxxxxxx> writes:
>
> > I get a hang at startup or shutdown: tiocsctty() holds tty_mutex, and
> > now with Eric's tty-in-tiocsctty-when-we-steal-a-tty-hang-it-up.patch
> > it can end up calling con_close(), which tries to take tty_mutex.
> > So best revert that in hot-fixes, until Eric provides a better.
>
> Well I'm confused I know I tested this, and I even added a printk and
> saw it trigger a couple of times.
>
> Hmm. Looking at the code it is clearly not safe to hold the tty_mutex
> when calling tty_vhangup. I thought the other caller in tty_io.c was doing
> that but on a second glance it is clearly not. And the hangup and close
> methods do seem to take the tty_mutex.
>
> How this worked in my testing is beyond me..

I agree there's something weird about it, and wonder whether it's
exposing some other, unrelated bug e.g. something uninitialized.

What I omitted to mention is that I reliably had init hanging on
startup with my KDB kernels (on i386 UP and i386 SMP and x86_64 SMP);
but never saw my non-KDB kernels (nor my powerpc kernel) hanging
there at startup - they would hang (in the same way) at shutdown
(every time? I can't swear to that). But I can't imagine what
KDB would have to do with it, other than shifting stuff around.

Hugh
-
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/