Ralf Baechle
e03b526932
[MIPS] Fixup copy_from_user_inatomic
...
From the 01408c4939 log message:
The problem is that when we write to a file, the copy from userspace to
pagecache is first done with preemption disabled, so if the source
address is not immediately available the copy fails *and* *zeros* *the*
*destination*.
This is a problem because a concurrent read (which admittedly is an odd
thing to do) might see zeros rather that was there before the write, or
what was there after, or some mixture of the two (any of these being a
reasonable thing to see).
If the copy did fail, it will immediately be retried with preemption
re-enabled so any transient problem with accessing the source won't
cause an error.
The first copying does not need to zero any uncopied bytes, and doing
so causes the problem. It uses copy_from_user_atomic rather than
copy_from_user so the simple expedient is to change copy_from_user_atomic
to *not* zero out bytes on failure.
< --- end cite --- >
This patch finally implements at least a not so pretty solution by
duplicating the relevant part of __copy_user.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2007-02-20 01:26:42 +00:00
..
arc
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
ddb5xxx
[MIPS] Make I8259A_IRQ_BASE customizable
2007-02-06 16:53:09 +00:00
dec
[TC] TURBOchannel support for the DECstation
2007-02-09 16:23:16 +00:00
emma2rh
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
ip32
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
jmr3927
[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
2006-10-08 02:38:28 +01:00
lasat
[PATCH] mips: nuke trailing whitespace
2005-09-05 00:06:07 -07:00
mach-atlas
[MIPS] Atlas: update interrupt handling
2006-09-27 13:37:42 +01:00
mach-au1x00
[MIPS] Alchemy: Fix PCI-memory access
2007-02-06 16:53:24 +00:00
mach-cobalt
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
mach-db1x00
[PATCH] Au1550/1200: add missing PSC #define's, make OSS driver use the proper ones
2006-06-23 07:42:56 -07:00
mach-dec
[PATCH] char/rtc: Handle memory-mapped chips properly
2006-07-10 13:24:25 -07:00
mach-emma2rh
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
mach-ev64120
[MIPS] Add UART IRQ number for EV64120
2006-10-01 23:16:59 +01:00
mach-excite
[MIPS] s/__ASSEMBLER__/__ASSEMBLY__/ for clarity sake.
2006-09-27 13:37:57 +01:00
mach-generic
[MIPS] Unify dma-{coherent,noncoherent.ip27,ip32}
2007-02-13 22:40:50 +00:00
mach-ip22
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
mach-ip27
[MIPS] Unify dma-{coherent,noncoherent.ip27,ip32}
2007-02-13 22:40:50 +00:00
mach-ip32
[MIPS] Unify dma-{coherent,noncoherent.ip27,ip32}
2007-02-13 22:40:50 +00:00
mach-ja
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
mach-jazz
[MIPS] Unify dma-{coherent,noncoherent.ip27,ip32}
2007-02-13 22:40:50 +00:00
mach-jmr3927
[MIPS] JMR3927 build fixes for the RTC code.
2006-04-19 04:14:20 +02:00
mach-lasat
mach-mips
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
mach-ocelot
mach-ocelot3
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
mach-pb1x00
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
mach-pnx8550
[MIPS] PNX8550 fixups
2006-10-04 18:06:15 +01:00
mach-qemu
[MIPS] Qemu does not have D-cache aliases
2006-09-27 13:37:49 +01:00
mach-rm
[MIPS] Support for several more SNI RM models.
2007-02-18 21:31:37 +00:00
mach-sibyte
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
mach-sim
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
mach-vr41xx
[MIPS] Make I8259A_IRQ_BASE customizable
2007-02-06 16:53:09 +00:00
mach-wrppmc
[MIPS] Wind River 4KC PPMC Eval Board Support
2006-06-19 17:39:18 +01:00
mach-yosemite
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
mips-boards
[MIPS] prom_free_prom_memory cleanup
2007-02-06 16:53:09 +00:00
pci
[MIPS] SN: include asm/sn/types.h for nasid_t.
2006-06-19 17:39:24 +01:00
sgi
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
sibyte
[MIPS] Fixup migration to GENERIC_TIME
2006-10-31 20:13:23 +00:00
sn
[MIPS] IP27: Move definition of nic_t to its sole user.
2006-12-12 01:46:24 +00:00
tx4927
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
tx4938
fix file specification in comments
2006-10-03 23:01:26 +02:00
vr41xx
[MIPS] Make I8259A_IRQ_BASE customizable
2007-02-06 16:53:09 +00:00
xtalk
8253pit.h
a.out.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
abi.h
[MIPS] signals: Share even more code.
2007-02-18 21:31:35 +00:00
addrspace.h
[MIPS] Use "long" for 64-bit values on 64-bit kernel.
2006-11-30 01:14:43 +00:00
asm.h
[MIPS] 16K & 64K page size fixes
2006-11-01 17:46:09 +00:00
asmmacro-32.h
[MIPS] Fix fpu_save_double on 64-bit.
2006-06-19 17:39:13 +01:00
asmmacro-64.h
[MIPS] Fix fpu_save_double on 64-bit.
2006-06-19 17:39:13 +01:00
asmmacro.h
[MIPS] Fix use of ehb instruction for non-R2 configurations.
2006-06-29 21:10:49 +01:00
atomic.h
[MIPS] Improve branch prediction in ll/sc atomic operations.
2007-02-13 22:40:50 +00:00
auxvec.h
[PATCH] auxiliary vector cleanups
2005-09-07 16:57:21 -07:00
barrier.h
[MIPS] Cleanup memory barriers for weakly ordered systems.
2006-12-04 22:43:14 +00:00
bcache.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
bitops.h
[MIPS] Use MIPS R2 instructions for bitops.
2007-02-18 21:31:35 +00:00
bootinfo.h
[MIPS] prom_free_prom_memory cleanup
2007-02-06 16:53:09 +00:00
branch.h
break.h
Allocate break code 513 to KDB.
2005-10-29 19:30:34 +01:00
bug.h
[MIPS] Use conditional traps for BUG_ON on MIPS II and better.
2006-11-30 01:14:50 +00:00
bugs.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
byteorder.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
cache.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
cachectl.h
cacheflush.h
[PATCH] Optimize D-cache alias handling on fork
2006-12-13 09:27:08 -08:00
cacheops.h
checksum.h
[MIPS] Fix wrong checksum calculation on 64-bit MIPS
2007-01-24 19:23:22 +00:00
compat-signal.h
[MIPS] signals: Share even more code.
2007-02-18 21:31:35 +00:00
compat.h
[MIPS] compat.h uses struct pt_regs so needs to include ptrace.h.
2006-12-12 01:46:24 +00:00
compiler.h
cpu-features.h
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
cpu-info.h
[MIPS] Fix alignment hole in struct cache_desc; shrink struct.
2006-11-30 01:14:45 +00:00
cpu.h
[MIPS] Use the proper technical term for naming some of the cache macros.
2006-07-13 21:26:04 +01:00
cputime.h
current.h
debug.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
delay.h
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
device.h
Driver core: add dev_archdata to struct device
2006-12-01 14:52:01 -08:00
div64.h
[MIPS] Fixup migration to GENERIC_TIME
2006-10-31 20:13:23 +00:00
dma-mapping.h
[MIPS] Don't claim we support dma_declare_coherent_memory - we don't.
2007-02-13 22:40:50 +00:00
dma.h
[MIPS] Setup min_low_pfn/max_low_pfn correctly
2007-02-06 16:53:13 +00:00
ds1216.h
[MIPS] Support for several more SNI RM models.
2007-02-18 21:31:37 +00:00
ds1286.h
ds1742.h
[MIPS] JMR3927 build fixes for the RTC code.
2006-04-19 04:14:20 +02:00
dsp.h
MIPS: DSP: Set all register masks to 0x3ff.
2006-01-10 13:39:04 +00:00
elf.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
emergency-restart.h
[PATCH] Add emergency_restart()
2005-07-26 14:35:41 -07:00
errno.h
Delete duplicate definitions.
2005-11-07 18:05:40 +00:00
fcntl.h
[MIPS] Remove F_SETSIG and F_GETSIG in favor of the asm-generic definitions.
2006-09-27 13:37:48 +01:00
fixmap.h
[MIPS] Fix aliasing bug in copy_to_user_page / copy_from_user_page
2006-10-21 23:17:35 +01:00
floppy.h
fpregdef.h
[PATCH] mips: nuke trailing whitespace
2005-09-05 00:06:07 -07:00
fpu.h
[MIPS] Make sure cpu_has_fpu is used only in atomic context
2006-10-09 23:20:48 +01:00
fpu_emulator.h
[MIPS] Unify mips_fpu_soft_struct and mips_fpu_hard_structs.
2006-06-19 17:39:18 +01:00
futex.h
[PATCH] mm: pagefault_{disable,enable}()
2006-12-07 08:39:21 -08:00
gdb-stub.h
gfx.h
gt64120.h
[MIPS] Rewrite GALILEO_INL/GALILEO_OUTL to GT_READ/GT_WRITE
2006-11-30 01:14:43 +00:00
gt64240.h
hardirq.h
hazards.h
[MIPS] vr41xx: need one more nop with mtc0_tlbw_hazard()
2007-01-24 19:23:21 +00:00
highmem.h
[PATCH] mm: k{,um}map_atomic() vs in_atomic()
2006-12-07 08:39:21 -08:00
hw_irq.h
[PATCH] genirq: add ->retrigger() irq op to consolidate hw_irq_resend()
2006-06-29 10:26:23 -07:00
i8259.h
[MIPS] Make I8259A_IRQ_BASE customizable
2007-02-06 16:53:09 +00:00
ide.h
inst.h
[MIPS] Fix rdhwr_op definition.
2006-07-13 21:26:08 +01:00
inventory.h
Reformatting, remove debugging code.
2005-10-29 19:30:57 +01:00
io.h
[MIPS] Iomap implementation.
2007-02-18 21:31:34 +00:00
ioctl.h
ioctls.h
ipc.h
ipcbuf.h
irq.h
[MIPS] Make I8259A_IRQ_BASE customizable
2007-02-06 16:53:09 +00:00
irq_cpu.h
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
irq_regs.h
[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
2006-10-08 02:38:28 +01:00
irqflags.h
[MIPS] SMTC: Instant IPI replay.
2007-01-23 18:26:47 +00:00
isadep.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
jazz.h
jazzdma.h
Kbuild
[MIPS] Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>.
2006-09-27 13:37:56 +01:00
kexec.h
[MIPS] Add support for kexec
2006-11-30 01:14:44 +00:00
kmap_types.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
kspd.h
[MIPS] kpsd and other AP/SP improvements.
2006-04-19 04:14:27 +02:00
linkage.h
[PATCH] abstract type/size specification for assembly
2006-03-24 07:33:25 -08:00
local.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
m48t35.h
m48t37.h
marvell.h
[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
2006-10-08 02:38:28 +01:00
mc146818-time.h
[PATCH] RTC: Remove RTC UIP synchronization on MIPS MC146818
2006-03-28 09:16:00 -08:00
mc146818rtc.h
mips_mt.h
[MIPS] VPE: Sprinkle device model code into code to make udev happier.
2007-02-10 22:38:42 +00:00
mipsmtregs.h
[MIPS] MT: Nuke duplicate mips_mt_regdump() prototype.
2007-02-06 16:53:24 +00:00
mipsprom.h
mipsregs.h
[MIPS] Remove unused R10000 performance counter definitions.
2006-11-30 01:14:45 +00:00
mman.h
[PATCH] Remove final references to deprecated "MAP_ANON" page protection flag
2007-02-11 10:51:17 -08:00
mmu.h
mmu_context.h
[MIPS] Reformat missformated SMTC bits.
2006-09-27 13:37:49 +01:00
mmzone.h
[PATCH] Delete unused definitions of kvaddr_to_nid
2006-06-23 07:42:52 -07:00
module.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
msc01_ic.h
[MIPS] Complete fixes after removal of pt_regs argument to int handlers.
2006-10-08 02:38:28 +01:00
msgbuf.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
mutex.h
[PATCH] mutex subsystem, add default include/asm-*/mutex.h files
2006-01-09 15:59:19 -08:00
namei.h
nile4.h
paccess.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
page.h
[MIPS] FLATMEM: introduce PHYS_OFFSET.
2007-02-06 16:53:13 +00:00
param.h
[MIPS] Make timer interrupt frequency configurable from kconfig.
2006-06-19 17:39:27 +01:00
parport.h
pci.h
[MIPS] Iomap implementation.
2007-02-18 21:31:34 +00:00
percpu.h
pgalloc.h
[MIPS] Add external declaration of pagetable_init() to pgalloc.h
2007-02-18 21:31:36 +00:00
pgtable-32.h
[MIPS] pte_offset(dir,addr): parenthesis fix
2006-12-06 20:16:08 +00:00
pgtable-64.h
[MIPS] pte_offset(dir,addr): parenthesis fix
2006-12-06 20:16:08 +00:00
pgtable-bits.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
pgtable.h
[PATCH] mm: mremap correct rmap accounting
2007-01-30 08:33:32 -08:00
pmon.h
poll.h
[PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications
2006-03-25 08:22:56 -08:00
posix_types.h
prctl.h
prefetch.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
processor.h
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
ptrace.h
[MIPS] Move die and die_if_kernel() from system.h to ptrace.h
2006-12-10 21:52:11 +00:00
qemu.h
[MIPS] Qemu system shutdown support
2006-06-19 17:39:19 +01:00
r4kcache.h
[MIPS] MT: Improved multithreading support.
2006-04-19 04:14:28 +02:00
reboot.h
[MIPS] Rename _machine_power_off to pm_power_off so the kernel builds again.
2006-02-07 13:30:22 +00:00
reg.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
regdef.h
resource.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
rm9k-ocd.h
[MIPS] Support for the RM9000-based Basler eXcite smart camera platform.
2006-06-19 17:39:26 +01:00
rtc.h
[MIPS] Fix genrtc compilation.
2006-04-19 04:14:22 +02:00
rtlx.h
[MIPS] Define MIPS_CPU_IRQ_BASE in generic header
2007-02-06 16:53:08 +00:00
scatterlist.h
sections.h
[MIPS] Remove _fdata from asm-mips/sections.h
2007-02-06 16:53:15 +00:00
segment.h
semaphore.h
[PATCH] semaphore: Remove __MUTEX_INITIALIZER()
2005-10-30 17:37:27 -08:00
sembuf.h
serial.h
[MIPS] Remove IT8172-based platforms, ITE 8172G and Globespan IVR support.
2006-10-03 17:59:17 +01:00
setup.h
[PATCH] cleanup asm/setup.h userspace visibility
2006-12-07 08:39:46 -08:00
sgialib.h
sgiarcs.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
sgidefs.h
shmbuf.h
shmparam.h
sigcontext.h
[MIPS] Fix struct sigcontext for N32 userland
2007-02-20 01:26:42 +00:00
siginfo.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
signal.h
[MIPS] signals: Share even more code.
2007-02-18 21:31:35 +00:00
sim.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
smp.h
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
smtc.h
[MIPS] MT: Improved multithreading support.
2006-04-19 04:14:28 +02:00
smtc_ipi.h
[MIPS] SMTC: Make a bunch of functions and variables static.
2007-02-06 16:53:22 +00:00
smtc_proc.h
[MIPS] MT: Improved multithreading support.
2006-04-19 04:14:28 +02:00
sni.h
[MIPS] Support for several more SNI RM models.
2007-02-18 21:31:37 +00:00
socket.h
[AF_UNIX]: Datagram getpeersec
2006-06-29 16:58:06 -07:00
sockios.h
sparsemem.h
[MIPS] Fix sparsemem support.
2006-06-06 00:15:20 +01:00
spinlock.h
[MIPS] Improve branch prediction in ll/sc atomic operations.
2007-02-13 22:40:50 +00:00
spinlock_types.h
[PATCH] spinlock consolidation
2005-09-10 10:06:21 -07:00
stackframe.h
[MIPS] Optimize and cleanup get_saved_sp, set_saved_sp
2006-10-11 19:30:59 +01:00
stacktrace.h
[MIPS] Make unwind_stack() can dig into interrupted context
2006-10-01 23:16:59 +01:00
stat.h
statfs.h
[PATCH] mips: nuke trailing whitespace
2005-09-05 00:06:07 -07:00
string.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
suspend.h
sysmips.h
system.h
[MIPS] Improve branch prediction in ll/sc atomic operations.
2007-02-13 22:40:50 +00:00
termbits.h
[PATCH] tty: preparatory structures for termios revamp
2006-12-08 08:28:56 -08:00
termios.h
[PATCH] consolidate line discipline number definitions
2007-02-11 10:51:26 -08:00
thread_info.h
[MIPS] Fix APM build
2007-01-24 19:23:21 +00:00
time.h
[MIPS] mips HPT cleanup: make clocksource_mips public
2006-11-30 01:14:49 +00:00
timex.h
[MIPS] Fix errors detected by "make headers_check"
2006-09-27 13:37:40 +01:00
titan_dep.h
[PATCH] mips: nuke trailing whitespace
2005-09-05 00:06:07 -07:00
tlb.h
tlbdebug.h
tlbflush.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
topology.h
traps.h
More AP / SP bits for the 34K, the Malta bits and things. Still wants
2005-10-29 19:31:53 +01:00
tx3912.h
types.h
[PATCH] Centralise definitions of sector_t and blkcnt_t
2006-12-04 19:41:15 -08:00
uaccess.h
[MIPS] Fixup copy_from_user_inatomic
2007-02-20 01:26:42 +00:00
ucontext.h
unaligned.h
unistd.h
[PATCH] remove kernel syscalls
2006-12-07 08:39:37 -08:00
user.h
[MIPS] Fix errors detected by "make headers_check"
2006-09-27 13:37:40 +01:00
vga.h
[PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use
2006-06-22 15:05:58 -07:00
vpe.h
[MIPS] kpsd and other AP/SP improvements.
2006-04-19 04:14:27 +02:00
war.h
[MIPS] Rename SNI_RM200_PCI to just SNI_RM preparing for more RM machines
2006-12-09 01:03:58 +00:00
watch.h
wbflush.h
Don't include linux/config.h from anywhere else in include/
2006-04-26 12:56:16 +01:00
xor.h
xxs1500.h
[PATCH] mips: nuke trailing whitespace
2005-09-05 00:06:07 -07:00