>The bug is that do_tty_hanghup() does a lock_kernel() in a tq_scheduler
>with a current->lock_depth > -1. So lock_kernel() does nothing there and
>so do_tty_hangup() was racing with the process that run the schedule()
>with the kernel lock just held.
It still seems that do_tty_hangup() is racing with the other CPU due
lock_kernel() that does nothing, but now I don't understand very well if
do_tty_hangup() is that's a bug or if it's the side effect of the
real bug. Maybe do_tty_hangup() was supposed to run recalled only by the
tty code and not from schedule()?
Just a question, why are we queueing the hangup task to tq_scheduler and
tq_timer? Which is the race we are avoiding doing that?
And what is the tty->link in some word? It point to a a new tty that uses
the ->other driver. And the o_tty->link point to us. But I haven't
understood more about it so far...
I hope my little information make sense and I hope to not causing you
waste of time.
Andrea Arcangeli
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/