https://github.com/torvalds/linux
Revision 347e2233b7667e336d9f671f1a52dfa3f0416e2c authored by Trond Myklebust on 28 August 2013, 17:35:13 UTC, committed by Trond Myklebust on 28 August 2013, 19:43:43 UTC
Some architectures, such as ARM-32 do not return the same base address
when you call kmap_atomic() twice on the same page.
This causes problems for the memmove() call in the XDR helper routine
"_shift_data_right_pages()", since it defeats the detection of
overlapping memory ranges, and has been seen to corrupt memory.

The fix is to distinguish between the case where we're doing an
inter-page copy or not. In the former case of we know that the memory
ranges cannot possibly overlap, so we can additionally micro-optimise
by replacing memmove() with memcpy().

Reported-by: Mark Young <MYoung@nvidia.com>
Reported-by: Matt Craighead <mcraighead@nvidia.com>
Cc: Bruce Fields <bfields@fieldses.org>
Cc: stable@vger.kernel.org
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Tested-by: Matt Craighead <mcraighead@nvidia.com>
1 parent fa8218d
History
Tip revision: 347e2233b7667e336d9f671f1a52dfa3f0416e2c authored by Trond Myklebust on 28 August 2013, 17:35:13 UTC
SUNRPC: Fix memory corruption issue on 32-bit highmem systems
Tip revision: 347e223
File Mode Size
Kconfig -rw-r--r-- 28.8 KB
Makefile -rw-r--r-- 3.9 KB
aec62xx.c -rw-r--r-- 9.2 KB
ali14xx.c -rw-r--r-- 6.5 KB
alim15x3.c -rw-r--r-- 14.9 KB
amd74xx.c -rw-r--r-- 10.0 KB
atiixp.c -rw-r--r-- 5.5 KB
au1xxx-ide.c -rw-r--r-- 15.2 KB
buddha.c -rw-r--r-- 5.6 KB
cmd640.c -rw-r--r-- 22.4 KB
cmd64x.c -rw-r--r-- 12.0 KB
cs5520.c -rw-r--r-- 4.7 KB
cs5530.c -rw-r--r-- 8.1 KB
cs5535.c -rw-r--r-- 6.2 KB
cs5536.c -rw-r--r-- 7.7 KB
cy82c693.c -rw-r--r-- 6.3 KB
delkin_cb.c -rw-r--r-- 4.4 KB
dtc2278.c -rw-r--r-- 3.8 KB
falconide.c -rw-r--r-- 3.9 KB
gayle.c -rw-r--r-- 4.4 KB
hpt366.c -rw-r--r-- 41.9 KB
ht6560b.c -rw-r--r-- 10.4 KB
icside.c -rw-r--r-- 16.2 KB
ide-4drives.c -rw-r--r-- 1.5 KB
ide-acpi.c -rw-r--r-- 16.2 KB
ide-atapi.c -rw-r--r-- 17.7 KB
ide-cd.c -rw-r--r-- 45.9 KB
ide-cd.h -rw-r--r-- 3.5 KB
ide-cd_ioctl.c -rw-r--r-- 11.5 KB
ide-cd_verbose.c -rw-r--r-- 13.5 KB
ide-cs.c -rw-r--r-- 12.0 KB
ide-devsets.c -rw-r--r-- 3.8 KB
ide-disk.c -rw-r--r-- 19.3 KB
ide-disk.h -rw-r--r-- 666 bytes
ide-disk_ioctl.c -rw-r--r-- 957 bytes
ide-disk_proc.c -rw-r--r-- 4.6 KB
ide-dma-sff.c -rw-r--r-- 8.9 KB
ide-dma.c -rw-r--r-- 13.2 KB
ide-eh.c -rw-r--r-- 12.1 KB
ide-floppy.c -rw-r--r-- 14.4 KB
ide-floppy.h -rw-r--r-- 1.1 KB
ide-floppy_ioctl.c -rw-r--r-- 7.2 KB
ide-floppy_proc.c -rw-r--r-- 1.2 KB
ide-gd.c -rw-r--r-- 10.8 KB
ide-gd.h -rw-r--r-- 932 bytes
ide-generic.c -rw-r--r-- 3.9 KB
ide-h8300.c -rw-r--r-- 2.4 KB
ide-io-std.c -rw-r--r-- 6.4 KB
ide-io.c -rw-r--r-- 23.6 KB
ide-ioctls.c -rw-r--r-- 6.7 KB
ide-iops.c -rw-r--r-- 13.5 KB
ide-legacy.c -rw-r--r-- 1.3 KB
ide-lib.c -rw-r--r-- 4.4 KB
ide-park.c -rw-r--r-- 3.4 KB
ide-pci-generic.c -rw-r--r-- 6.0 KB
ide-pio-blacklist.c -rw-r--r-- 2.3 KB
ide-pm.c -rw-r--r-- 6.5 KB
ide-pnp.c -rw-r--r-- 2.6 KB
ide-probe.c -rw-r--r-- 37.4 KB
ide-proc.c -rw-r--r-- 19.3 KB
ide-scan-pci.c -rw-r--r-- 2.7 KB
ide-sysfs.c -rw-r--r-- 2.8 KB
ide-tape.c -rw-r--r-- 55.1 KB
ide-taskfile.c -rw-r--r-- 16.6 KB
ide-timings.c -rw-r--r-- 6.5 KB
ide-xfer-mode.c -rw-r--r-- 6.7 KB
ide.c -rw-r--r-- 10.4 KB
ide_platform.c -rw-r--r-- 3.5 KB
it8172.c -rw-r--r-- 5.1 KB
it8213.c -rw-r--r-- 5.5 KB
it821x.c -rw-r--r-- 20.4 KB
jmicron.c -rw-r--r-- 4.5 KB
macide.c -rw-r--r-- 3.0 KB
ns87415.c -rw-r--r-- 8.9 KB
opti621.c -rw-r--r-- 4.5 KB
palm_bk3710.c -rw-r--r-- 10.6 KB
pdc202xx_new.c -rw-r--r-- 14.5 KB
pdc202xx_old.c -rw-r--r-- 10.1 KB
piix.c -rw-r--r-- 14.0 KB
pmac.c -rw-r--r-- 45.7 KB
q40ide.c -rw-r--r-- 4.1 KB
qd65xx.c -rw-r--r-- 10.9 KB
qd65xx.h -rw-r--r-- 5.8 KB
rapide.c -rw-r--r-- 2.0 KB
rz1000.c -rw-r--r-- 2.3 KB
sc1200.c -rw-r--r-- 9.2 KB
scc_pata.c -rw-r--r-- 21.9 KB
serverworks.c -rw-r--r-- 12.6 KB
setup-pci.c -rw-r--r-- 16.6 KB
sgiioc4.c -rw-r--r-- 16.8 KB
siimage.c -rw-r--r-- 20.9 KB
sis5513.c -rw-r--r-- 18.1 KB
sl82c105.c -rw-r--r-- 9.4 KB
slc90e66.c -rw-r--r-- 4.8 KB
tc86c001.c -rw-r--r-- 7.5 KB
triflex.c -rw-r--r-- 3.8 KB
trm290.c -rw-r--r-- 10.8 KB
tx4938ide.c -rw-r--r-- 5.5 KB
tx4939ide.c -rw-r--r-- 17.1 KB
umc8672.c -rw-r--r-- 5.0 KB
via82cxxx.c -rw-r--r-- 14.7 KB

back to top