linux-stable/lib
akpm@osdl.org c05aa51378 [PATCH] rwsem fix
We should merge this backport - it's needed to prevent deadlocks when
dio_complete() does up_read() from IRQ context.  And perhaps other places.

From: David Howells <dhowells@redhat.com>

[PATCH] rwsem: Make rwsems use interrupt disabling spinlocks

The attached patch makes read/write semaphores use interrupt disabling
spinlocks in the slow path, thus rendering the up functions and trylock
functions available for use in interrupt context.  This matches the
regular semaphore behaviour.

I've assumed that the normal down functions must be called with interrupts
enabled (since they might schedule), and used the irq-disabling spinlock
variants that don't save the flags.

Signed-Off-By: David Howells <dhowells@redhat.com>
Tested-by: Badari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-05-12 10:00:19 -07:00
..
reed_solomon 2.6.11 import 2005-05-12 09:59:06 -07:00
zlib_deflate 2.6.11 import 2005-05-12 09:59:06 -07:00
zlib_inflate 2.6.11 import 2005-05-12 09:59:06 -07:00
Kconfig 2.6.11 import 2005-05-12 09:59:06 -07:00
Kconfig.debug 2.6.11 import 2005-05-12 09:59:06 -07:00
Makefile 2.6.11 import 2005-05-12 09:59:06 -07:00
bitmap.c 2.6.11 import 2005-05-12 09:59:06 -07:00
bust_spinlocks.c 2.6.11 import 2005-05-12 09:59:06 -07:00
cmdline.c 2.6.11 import 2005-05-12 09:59:06 -07:00
crc-ccitt.c 2.6.11 import 2005-05-12 09:59:06 -07:00
crc32.c 2.6.11 import 2005-05-12 09:59:06 -07:00
crc32defs.h 2.6.11 import 2005-05-12 09:59:06 -07:00
ctype.c 2.6.11 import 2005-05-12 09:59:06 -07:00
dec_and_lock.c 2.6.11 import 2005-05-12 09:59:06 -07:00
div64.c 2.6.11 import 2005-05-12 09:59:06 -07:00
dump_stack.c 2.6.11 import 2005-05-12 09:59:06 -07:00
errno.c 2.6.11 import 2005-05-12 09:59:06 -07:00
extable.c 2.6.11 import 2005-05-12 09:59:06 -07:00
find_next_bit.c 2.6.11 import 2005-05-12 09:59:06 -07:00
gen_crc32table.c 2.6.11 import 2005-05-12 09:59:06 -07:00
idr.c 2.6.11 import 2005-05-12 09:59:06 -07:00
inflate.c 2.6.11 import 2005-05-12 09:59:06 -07:00
int_sqrt.c 2.6.11 import 2005-05-12 09:59:06 -07:00
iomap.c 2.6.11 import 2005-05-12 09:59:06 -07:00
kernel_lock.c 2.6.11 import 2005-05-12 09:59:06 -07:00
kobject.c 2.6.11 import 2005-05-12 09:59:06 -07:00
kobject_uevent.c 2.6.11 import 2005-05-12 09:59:06 -07:00
kref.c 2.6.11 import 2005-05-12 09:59:06 -07:00
libcrc32c.c 2.6.11 import 2005-05-12 09:59:06 -07:00
parser.c 2.6.11 import 2005-05-12 09:59:06 -07:00
prio_tree.c 2.6.11 import 2005-05-12 09:59:06 -07:00
radix-tree.c 2.6.11 import 2005-05-12 09:59:06 -07:00
rbtree.c 2.6.11 import 2005-05-12 09:59:06 -07:00
rwsem-spinlock.c [PATCH] rwsem fix 2005-05-12 10:00:19 -07:00
rwsem.c [PATCH] rwsem fix 2005-05-12 10:00:19 -07:00
string.c 2.6.11 import 2005-05-12 09:59:06 -07:00
vsprintf.c 2.6.11 import 2005-05-12 09:59:06 -07:00