Messages in this thread | | | Subject | Re: [BUG][2.6.8.1] serial driver hangs SMP kernel, but not the UP kernel | From | Paul Fulghum <> | Date | Sat, 30 Oct 2004 19:26:23 -0500 |
| |
On Sat, 2004-10-30 at 17:43, Alan Cox wrote: > On Sad, 2004-10-30 at 00:40, Paul Fulghum wrote: > > Would it make sense to do something like (in tty_io.c) the following? > > Not really because it can legally occur if you flip the low latency > flag while a transaction is queued. It might work if you waited for > scheduled work to complete in the flag changing.
I don't see how having flush_to_ldisc() queued or already running (on another processor) negates the prohibition on calling tty_flip_buffer_push() with low_latency set in interrupt context.
The comments for tty_flip_buffer_push() state the function should not be called in interrupt context if low_latency is set (no exceptions are listed). Meaning flush_to_ldisc() should only be called in process context.
If flush_to_ldisc() is queued or already executing, there is no protection against calling flush_to_ldisc() again, directly in interrupt context. TTY_DONT_FLIP is no protection, that is only set in read_chan() of n_tty.c
If I'm missing something, please point it out.
-- Paul Fulghum paulkf@microgate.com
- 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/
| |