Messages in this thread | | | From | "Phillips, Mike" <> | Subject | [Patch] Token Ring Deadlock on SMP | Date | Mon, 20 Mar 2000 16:12:37 -0500 |
| |
Attached is a patch against 2.3.99pre3-3 that fixes the deadlock on smp systems in the token ring source routing code.
There is a three way contention issue on a single lock, net tx, rx from the driver (so in_irq context) and from a timer. The attached solution works but I'm not particularly proud of it. The old code that used to work used only lock_irqsave's which is a bit extreme but worked, at some point the locks were changed to lock_bh which worked against the timer lock, but didn't work against the in_irq lock. I've simply changed a couple of the locks back to lock_irq and made the timer check that if a lock is held it just goes away and comes back another time to do its thing.
This should be sufficient for 2.4, we'll put the proper solution (the new source routing code) into effect for 2.5
Thanks Mike Phillips
<<tr_smp-2.3.99pre3-3.gz>> [unhandled content-type:application/octet-stream] | |