linux/arch
Thomas Gleixner b6a8b316c6 [PATCH] i386: fix file_read_actor() and pipe_read() for original i386 systems
The __copy_to_user_inatomic() calls in file_read_actor() and pipe_read()
are broken on original i386 machines, where WP-works-ok == false, as
__copy_to_user_inatomic() on such systems calls functions which might
sleep and/or contain cond_resched() calls inside of a kmap_atomic()
region.

The original check for WP-works-ok was in access_ok(), but got moved
during the 2.5 series to fix a race vs. swap.

Return the number of bytes to copy in the case where we are in an atomic
region, so the non atomic code pathes in file_read_actor() and
pipe_read() are taken.

This could be optimized to avoid the kmap_atomicby moving the check for
WP-works-ok into fault_in_pages_writeable(), but this is more intrusive
and can be done later.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-04-02 10:07:25 -07:00
..
alpha [PATCH] Dynamic kernel command-line: alpha 2007-02-12 09:48:37 -08:00
arm [ARM] Export dma_channel_active() 2007-03-31 21:36:53 +01:00
arm26 [PATCH] arch/arm26/kernel/entry.S: remove dead code 2007-03-01 14:53:35 -08:00
avr32 [PATCH] gpio_direction_output() needs an initial value 2007-03-16 19:25:04 -07:00
cris [PATCH] MSI-X: fix resume crash 2007-03-28 13:59:37 -07:00
frv [PATCH] MSI-X: fix resume crash 2007-03-28 13:59:37 -07:00
h8300 [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
i386 [PATCH] i386: fix file_read_actor() and pipe_read() for original i386 systems 2007-04-02 10:07:25 -07:00
ia64 [IA64] Fix arch/ia64/pci/pci.c:571: warning: `return' with a value 2007-03-29 15:41:37 -07:00
m32r Various typo fixes. 2007-02-17 19:07:33 +01:00
m68k [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
m68knommu [PATCH] m68knommu: remove local_bh_count 2007-03-06 18:08:38 -08:00
mips [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
parisc [PARISC] clocksource: Move update_cr16_clocksource later in boot 2007-02-26 22:21:22 -05:00
powerpc [POWERPC] qe: Fix QUICC Engine SDMA setup errors 2007-03-29 14:33:42 -05:00
ppc mv643xx_eth: Place explicit port number in mv643xx_eth_platform_data 2007-03-06 06:14:54 -05:00
s390 [S390] kprobes: Align probe address. 2007-03-26 20:43:46 +02:00
sh sh: Kill bogus GCC4 symbol exports. 2007-03-28 17:24:47 +09:00
sh64 [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
sparc [SPARC32]: Fix SMP build regression 2007-03-26 21:49:13 -07:00
sparc64 [SPARC64]: store-init needs trailing membar. 2007-03-19 13:27:33 -07:00
um [PATCH] uml: fix unreasonably long udelay 2007-04-02 10:06:08 -07:00
v850 kbuild: Replace remaining "depends" with "depends on" 2007-02-17 19:05:24 +01:00
x86_64 [PATCH] x86_64 irq: Fix comments after changing IRQ0_VECTOR from 0x20 to 0x30 2007-03-29 08:16:23 -07:00
xtensa [PATCH] Dynamic kernel command-line: xtensa 2007-02-12 09:48:39 -08:00