Messages in this thread | | | Date | Thu, 3 Jun 2010 16:09:12 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: floppy driver assumes INITIAL_JIFFIES == 0 |
| |
On Thu, 3 Jun 2010, Stephen Hemminger wrote: > > Thank you for confirming my suspicions. Given the state of destruction > there, bug fixing is like playing Jenga.
I suspect it's fixable, but it would probably involve a lot of careful moving around of that "floppy_lock" spinlock. Add various asserts to make sure that it's held in all cases, and then for each warning you get, you add the proper spinlock until it's all properly protected.
The _original_ protection was just from irqs being atomic (UP, remember), and the block layer queueing happening from irq-safe context. You're still running it on UP, but we've even lost the irq-handler protection (and then later, the bottom-half mutual exclusion).
Linus
| |