There is a classic kernel programming error which goes something like
this
my_interrupt()
{
foo->ready = 1;
wake_up(&foo_pending);
}
foo_read()
{
while(!foo->ready && !signal_pending(current))
interruptible_sleep_on(&foo_pending);
}
What happens then is this
foo->ready = 0 - true
signal pending = 0 - ok
INTERRUPT
foo->ready=1
wake up
END INTERRUPT
interruptible_sleep_on(&foo_pending);
Waits forever
It could be your timings have changed so such a bug now shows up
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/