linux/arch/parisc/kernel
James Bottomley 949a05d034 [PARISC] fix virtual aliasing issue in get_shared_area()
On Thu, 2012-11-01 at 16:45 -0700, Michel Lespinasse wrote:
> Looking at the arch/parisc/kernel/sys_parisc.c implementation of
> get_shared_area(), I do have a concern though. The function basically
> ignores the pgoff argument, so that if one creates a shared mapping of
> pages 0-N of a file, and then a separate shared mapping of pages 1-N
> of that same file, both will have the same cache offset for their
> starting address.
>
> This looks like this would create obvious aliasing issues. Am I
> misreading this ? I can't understand how this could work good enough
> to be undetected, so there must be something I'm missing here ???

This turns out to be correct and we need to pay attention to the pgoff as
well as the address when creating the virtual address for the area.
Fortunately, the bug is rarely triggered as most applications which use pgoff
tend to use large values (git being the primary one, and it uses pgoff in
multiples of 16MB) which are larger than our cache coherency modulus, so the
problem isn't often seen in practise.

Reported-by: Michel Lespinasse <walken@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2012-11-15 05:49:34 -08:00
..
.gitignore parisc: add arch/parisc/kernel/.gitignore 2008-10-10 16:32:28 +00:00
asm-offsets.c parisc: Use of align_frame provides stack frame. 2010-05-30 05:38:27 -04:00
binfmt_elf32.c [PATCH] remove unused ibcs2/PER_SVR4 in SET_PERSONALITY 2008-10-16 15:40:05 +02:00
cache.c mm: replace vma prio_tree with an interval tree 2012-10-09 16:22:39 +09:00
drivers.c parisc: Add export.h to files needing EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:00 -04:00
entry.S TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set 2012-06-01 12:58:50 -04:00
firmware.c Disintegrate asm/system.h for PA-RISC 2012-03-28 18:30:02 +01:00
ftrace.c sched_clock: Add local_clock() API and improve documentation 2010-06-09 10:34:49 +02:00
hardware.c [PARISC] add back Crestone Peak cpu 2008-03-15 19:12:19 -07:00
head.S [PARISC] only make executable areas executable 2011-04-15 12:55:18 -05:00
hpmc.S parisc: export length of os_hpmc vector 2009-01-05 19:18:27 +00:00
inventory.c Fix common misspellings 2011-03-31 11:26:23 -03:00
irq.c parisc: Use irq_to_desc() in show_interrupts() 2011-03-29 14:48:08 +02:00
Makefile parisc: Fix init_task fallout 2012-05-07 11:38:46 +02:00
module.c modules: make arch's use default loader hooks 2011-07-24 22:06:04 +09:30
pa7300lc.c
pacache.S [PARISC] fix crash in flush_icache_page_asm on PA1.1 2012-05-16 13:15:06 +01:00
parisc_ksyms.c [PARISC] update parisc to use generic strncpy_from_user() 2012-05-31 11:14:37 +01:00
pci-dma.c parisc: Add export.h to files needing EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:00 -04:00
pci.c parisc/PCI: factor out pcibios_setup() 2012-07-05 15:09:13 -06:00
pdc_chassis.c
pdc_cons.c TTY: use tty_port_link_device 2012-08-13 16:50:19 -07:00
perf_asm.S Revert "parisc: fix trivial section name warnings" 2008-06-13 10:49:45 -04:00
perf_images.h
perf.c parisc: remove big kernel lock 2010-10-16 22:43:08 +02:00
process.c vfs: define struct filename and have getname() return it 2012-10-12 20:14:55 -04:00
processor.c parisc: processor.c, fix bloated stack frame 2009-07-03 03:34:11 +00:00
ptrace.c Disintegrate asm/system.h for PA-RISC 2012-03-28 18:30:02 +01:00
real2.S parisc: move pdc_result to real2.S 2008-10-10 16:32:28 +00:00
setup.c parisc: Add export.h to files needing EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:00 -04:00
signal32.c most of set_current_blocked() callers want SIGKILL/SIGSTOP removed from set 2012-06-01 12:58:51 -04:00
signal32.h compat: move compat_siginfo_t definition to asm/compat.h 2012-10-06 03:05:16 +09:00
signal.c parisc: don't bother looping in do_signal() 2012-10-01 09:58:14 -04:00
smp.c parisc: Smp: remove call to ipi_call_lock()/ipi_call_unlock() 2012-06-05 17:27:12 +02:00
stacktrace.c parisc: add LATENCYTOP_SUPPORT and CONFIG_STACKTRACE_SUPPORT 2009-03-31 02:51:34 +00:00
sys32.h
sys_parisc32.c vfs: define struct filename and have getname() return it 2012-10-12 20:14:55 -04:00
sys_parisc.c [PARISC] fix virtual aliasing issue in get_shared_area() 2012-11-15 05:49:34 -08:00
syscall_table.S remove remaining references to nfsservctl 2011-08-29 16:31:59 -07:00
syscall.S parisc: decide whether to go to slow path (tracesys) based on thread flags 2012-10-01 09:58:14 -04:00
time.c parisc: move definition of PAGE0 to asm/page.h 2012-05-10 15:12:08 -07:00
topology.c parisc: Replace NR_CPUS in parisc code 2009-01-05 19:09:02 +00:00
traps.c Disintegrate asm/system.h for PA-RISC 2012-03-28 18:30:02 +01:00
unaligned.c arch/parisc: Removing undead ifdef CONFIG_PA20 2010-10-21 21:13:29 -04:00
unwind.c parisc: unwind - optimise linked-list searches for modules 2010-10-21 21:12:19 -04:00
vmlinux.lds.S [PARISC] fix boot failure on 32-bit systems caused by branch stubs placed before .text 2012-05-25 10:52:17 +01:00