diff options
author | Alexander Gordeev <lasaine@lvk.cs.msu.su> | 2011-01-25 18:07:16 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-25 19:49:59 -0500 |
commit | cbeb4b7ad5346516d2ee726395eb5722b25a0a01 (patch) | |
tree | e9ac41dd3ec1bb14b52f6b9325cb2968f2799faf /drivers/parport/share.c | |
parent | 0766d20fdb9178b908f0268c16b464c11822c5c2 (diff) |
parport: make lockdep happy with waitlist_lock
parport_unregister_device() should never be used when interrupts are
enabled in hardware and irq handler is registered so there is no need to
disable interrupts when using waitlist_lock. But there is no way to
explain this subtle semantics to lockdep analyzer.
So disable interrupts here too to simplify things. The price is
negligible.
Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/parport/share.c')
-rw-r--r-- | drivers/parport/share.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/parport/share.c b/drivers/parport/share.c index a2d9d1e59260..a848e02e6be3 100644 --- a/drivers/parport/share.c +++ b/drivers/parport/share.c | |||
@@ -678,7 +678,7 @@ void parport_unregister_device(struct pardevice *dev) | |||
678 | 678 | ||
679 | /* Make sure we haven't left any pointers around in the wait | 679 | /* Make sure we haven't left any pointers around in the wait |
680 | * list. */ | 680 | * list. */ |
681 | spin_lock (&port->waitlist_lock); | 681 | spin_lock_irq(&port->waitlist_lock); |
682 | if (dev->waitprev || dev->waitnext || port->waithead == dev) { | 682 | if (dev->waitprev || dev->waitnext || port->waithead == dev) { |
683 | if (dev->waitprev) | 683 | if (dev->waitprev) |
684 | dev->waitprev->waitnext = dev->waitnext; | 684 | dev->waitprev->waitnext = dev->waitnext; |
@@ -689,7 +689,7 @@ void parport_unregister_device(struct pardevice *dev) | |||
689 | else | 689 | else |
690 | port->waittail = dev->waitprev; | 690 | port->waittail = dev->waitprev; |
691 | } | 691 | } |
692 | spin_unlock (&port->waitlist_lock); | 692 | spin_unlock_irq(&port->waitlist_lock); |
693 | 693 | ||
694 | kfree(dev->state); | 694 | kfree(dev->state); |
695 | kfree(dev); | 695 | kfree(dev); |