linux/arch
Martin Schwidefsky b6d09449d5 [PATCH] s390: pfault interrupt race
There is a race in pfault_interrupt.  That function gets called two times for
each pfault notification.  Once with a subcode of 0 to indicate that a real
page is not available and once with a subcode of 0x80 to indicate that the
page is present again.

Since the two external interrupts can be delivered on two different cpus the
order in which the two calls are made is unpredictable.  It is possible that
the subcode 0x80 interrupt is completed before the subcode 0x00 interrupt has
done the wake_up() call.

To avoid calling wake_up() on an already removed task structure proper task
structure reference counting is needed.  Increase the reference counter in the
subcode 0x00 interrupt before setting pfault_wait to zero and return the
reference after the wake_up call.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:06:28 -07:00
..
alpha [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
arm [ARM] Fix ARMv6 page table bits 2005-09-01 22:41:55 +01:00
arm26 [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
cris [PATCH] arch/cris/Kconfig.debug: use lib/Kconfig.debug 2005-09-05 00:06:19 -07:00
frv [PATCH] frv: Remove export of strtok() 2005-09-05 00:06:01 -07:00
h8300 [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
i386 [PATCH] uml: SYSEMU: slight cleanup and speedup 2005-09-05 00:06:20 -07:00
ia64 [IA64] uncached allocator: use generic (not sn2 specific) functions 2005-08-31 14:18:04 -07:00
m32r [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
m68k [PATCH] m68k: cleanup inline mem functions 2005-09-05 00:06:19 -07:00
m68knommu [PATCH] m68knommu: update defconfig for m68knommu 2005-09-02 00:57:30 -07:00
mips [PATCH] mips: fix build warnings 2005-09-05 00:06:08 -07:00
parisc [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
ppc [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
ppc64 [PATCH] ppc64: replace schedule_timeout() with msleep_interruptible() 2005-09-05 00:06:01 -07:00
s390 [PATCH] s390: pfault interrupt race 2005-09-05 00:06:28 -07:00
sh [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
sh64 [PATCH] arch/sh64/Kconfig: doesn't need it's own LOG_BUF_SHIFT 2005-09-05 00:06:09 -07:00
sparc [SPARC]: remove use of asm/segment.h 2005-08-29 12:45:44 -07:00
sparc64 [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
um [PATCH] uml: fix x86_64 page leak 2005-09-05 00:06:24 -07:00
v850 [PATCH] v850: Add show_mem 2005-09-02 00:57:31 -07:00
x86_64 [PATCH] swsusp: fix remaining u32 vs. pm_message_t confusion 2005-09-05 00:06:15 -07:00
xtensa [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00