Driver core: Don't call put methods while holding a spinlock
authorAlan Stern <stern@rowland.harvard.edu>
Mon, 18 Sep 2006 20:28:06 +0000 (16:28 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 26 Sep 2006 04:08:40 +0000 (21:08 -0700)
commit7e9f4b2d3e21e87c26025810413ef1592834e63b
tree8fa28b786420fede1f3b656ee21289cc4927c6b2
parent81107bf531d2524afbcd61f3b4ad57a71295d591
Driver core: Don't call put methods while holding a spinlock

The klist utility routines currently call _put methods while holding a
spinlock.  This is of course illegal; a put routine could try to
unregister a device and hence need to sleep.

No problems have arisen until now because in many cases klist removals
were done synchronously, so the _put methods were never actually used.
In other cases we may simply have been lucky.

This patch (as784) reworks the klist routines so that _put methods are
called only _after_ the klist's spinlock has been released.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
lib/klist.c