Messages in this thread |  | | Subject | Fixing the tty layer was Re: any chance of 2.6.0-test*? | From | Andi Kleen <> | Date | 12 Jan 2003 10:56:37 +0100 |
| |
[forgot to cc linux-kernel in the first try, sorry if you see it twice]
Greg KH <greg@kroah.com> writes:
> On Fri, Jan 10, 2003 at 05:19:08PM +0000, Alan Cox wrote: > > The entire tty layer locking is terminally broken and nobody has even > > started fixing it. Just try a mass of parallel tty/pty activity . It > > was problematic before, pre-empt has taken it to dead, defunct and > > buried. > > I've looked into this, and wow, it's not a simple fix :(
it has to be fixed for 2.6, no argument.
I took a look at it. I think the easiest strategy would be:
- Make sure all the process context code holds BKL (most of it does, but not all - sometimes it is buggy like in disassociate_tty) I have some patches for that for tty_io.c at least
The local_irq_save in there are buggy, they need to take a lock.
- Audit the data structures that are touched by interrupts and add spinlocks. At least for n_tty.c probably just tty->read_lock needs to be extended. Perhaps some can be just "fixed" by ignoring latency and pushing softirq functions into keventd (modern CPUs should be fast enough for that)
- Possibly disable module unloading for ldiscs (seems to be rather broken, although Rusty's new unload algorithm may avoid the worst - not completely sure)
Probably all doable with some concentrated effort.
Anyone interested in helping ?
-Andi - 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/
|  |