linux/include/asm-powerpc
David Gibson 86df864249 Correct hash flushing from huge_ptep_set_wrprotect()
As Andy Whitcroft recently pointed out, the current powerpc version of
huge_ptep_set_wrprotect() has a bug.  It just calls ptep_set_wrprotect()
which in turn calls pte_update() then hpte_need_flush() with the 'huge'
argument set to 0.  This will cause hpte_need_flush() to flush the wrong
hash entries (of any).  Andy's fix for this is already in the powerpc
tree as commit 016b33c495.

I have confirmed this is a real bug, not masked by some other
synchronization, with a new testcase for libhugetlbfs.  A process write
a (MAP_PRIVATE) hugepage mapping, fork(), then alter the mapping and
have the child incorrectly see the second write.

Therefore, this should be fixed for 2.6.26, and for the stable tree.
Here is a suitable patch for 2.6.26, which I think will also be suitable
for the stable tree (neither of the headers in question has been changed
much recently).

It is cut down slighlty from Andy's original version, in that it does
not include a 32-bit version of huge_ptep_set_wrprotect().  Currently,
hugepages are not supported on any 32-bit powerpc platform.  When they
are, a suitable 32-bit version can be added - the only 32-bit hardware
which supports hugepages does not use the conventional hashtable MMU and
so will have different needs anyway.

Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-08 09:27:58 -07:00
..
iseries [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
8xx_immap.h
8253pit.h
a.out.h
abs_addr.h
agp.h
asm-compat.h
atomic.h
auxvec.h
backlight.h
bitops.h generic: implement __fls on all 64-bit archs 2008-04-26 19:21:16 +02:00
bootx.h
btext.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
cell-pmu.h
cell-regs.h
checksum.h
clk_interface.h
compat.h
cpm1.h [POWERPC] CPM: Move opcodes common to CPM1 and CPM2 to include/asm-powerpc/cpm.h 2008-04-17 01:01:37 -05:00
cpm2.h [POWERPC] CPM: Move opcodes common to CPM1 and CPM2 to include/asm-powerpc/cpm.h 2008-04-17 01:01:37 -05:00
cpm.h [POWERPC] CPM: Move opcodes common to CPM1 and CPM2 to include/asm-powerpc/cpm.h 2008-04-17 01:01:37 -05:00
cputable.h
cputhreads.h
cputime.h
current.h
dbdma.h
dcr-mmio.h
dcr-native.h [POWERPC] 4xx: Add dcri_clrset() for locked read/modify/write functionality 2008-03-26 07:20:38 -05:00
dcr-regs.h [POWERPC] 4xx: Add PPC4xx L2-cache support (440GX) 2008-03-26 07:27:54 -05:00
dcr.h
delay.h
device.h
div64.h
dma-mapping.h
dma.h
edac.h
eeh_event.h
eeh.h
elf.h
emergency-restart.h
errno.h
exception.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
fb.h
fcntl.h
firmware.h
fixmap.h [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
floppy.h
fs_pd.h
fsl_lbc.h [POWERPC] fsl_lbc: implement few UPM routines 2008-04-17 01:01:38 -05:00
futex.h asm-*/futex.h should include linux/uaccess.h 2008-04-30 08:29:52 -07:00
gpio.h [POWERPC] Implement support for the GPIO LIB API 2008-04-17 07:46:11 +10:00
grackle.h
hardirq.h
heathrow.h
highmem.h [POWERPC] Port fixmap from x86 and use for kmap_atomic 2008-04-24 20:58:02 +10:00
hugetlb.h Correct hash flushing from huge_ptep_set_wrprotect() 2008-07-08 09:27:58 -07:00
hvcall.h
hvconsole.h
hvcserver.h
hw_irq.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
hydra.h
i8259.h
ibmebus.h
ide.h ide: remove ide_init_default_irq() macro 2008-04-18 00:46:35 +02:00
immap_86xx.h
immap_cpm2.h
immap_qe.h [POWERPC] QE: immap_qe.h should include asm/io.h 2008-04-17 01:01:39 -05:00
io-defs.h [POWERPC] cell: Generalize io-workarounds code 2008-04-24 21:08:12 +10:00
io.h [POWERPC] Add "memory" clobber to MMIO accessors 2008-05-31 17:08:28 +10:00
ioctl.h
ioctls.h
iommu.h
ipcbuf.h
ipic.h
irq_regs.h
irq.h proper __do_softirq() prototype 2008-04-29 08:06:02 -07:00
irqflags.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
Kbuild kbuild: fix a.out.h export to userspace with O= build. 2008-06-27 23:13:54 +02:00
kdebug.h
kdump.h [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
kexec.h
keylargo.h
kgdb.h
kmap_types.h
kprobes.h
kvm_asm.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
kvm_host.h KVM: ppc: Handle guest idle by emulating MSR[WE] writes 2008-05-04 14:44:44 +03:00
kvm_para.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
kvm_ppc.h KVM: ppc: Remove duplicate function 2008-06-06 21:22:09 +03:00
kvm.h KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00
libata-portmap.h
linkage.h
lmb.h [POWERPC] Use lowmem_end_addr to limit lmb allocations on ppc32 2008-04-17 07:46:13 +10:00
local.h
lppaca.h
lv1call.h
machdep.h [POWERPC] Remove unused machine call outs 2008-04-17 10:01:00 +10:00
macio.h [POWERPC] replace asm/of_device.h with linux/of_device.h in macio.h 2008-04-15 21:21:26 +10:00
mc146818rtc.h
mediabay.h [POWERPC] Build fix for drivers/macintosh/mediabay.c 2008-06-16 15:00:47 +10:00
mman.h
mmu_context.h
mmu-8xx.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-40x.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-44x.h ppc: Export tlb_44x_hwater for KVM 2008-04-27 18:21:37 +03:00
mmu-fsl-booke.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-hash32.h [POWERPC] Move phys_addr_t definition into asm/types.h 2008-04-17 07:46:14 +10:00
mmu-hash64.h [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
mmu.h
mmzone.h
module.h
mpc8xx.h
mpc52xx_psc.h
mpc52xx.h
mpc86xx.h
mpc512x.h
mpc8260.h
mpic.h [POWERPC] mpic: Fix use of uninitialized variable 2008-05-23 16:15:37 +10:00
msgbuf.h
mutex.h
namei.h
nvram.h
of_device.h
of_platform.h
ohare.h
oprofile_impl.h
paca.h [POWERPC] Raise the upper limit of NR_CPUS and move the pacas into the BSS 2008-04-24 20:58:04 +10:00
page_32.h [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
page_64.h hugetlbfs: architecture header cleanup 2008-04-28 08:58:25 -07:00
page.h [POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero) 2008-04-24 20:58:01 +10:00
param.h
parport.h
pasemi_dma.h
pci-bridge.h [POWERPC] Make pci_bus_to_host()'s struct pci_bus * argument const 2008-04-18 15:37:14 +10:00
pci.h
percpu.h
pgalloc-32.h
pgalloc-64.h
pgalloc.h
pgtable-4k.h
pgtable-64k.h
pgtable-ppc32.h [POWERPC] 4xx: Fix problem with new TLB storage attibute fields on 440x6 core 2008-05-06 10:36:20 -05:00
pgtable-ppc64.h Correct hash flushing from huge_ptep_set_wrprotect() 2008-07-08 09:27:58 -07:00
pgtable.h
phyp_dump.h [POWERPC] pseries/phyp dump: Reserve a variable amount of space at boot 2008-04-17 07:46:14 +10:00
pmac_feature.h
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h [POWERPC] remove include of asm/of_device.h from pmi.h 2008-04-15 21:21:25 +10:00
poll.h
posix_types.h
ppc4xx.h [POWERPC] 4xx: Create common ppc4xx_reset_system() in ppc4xx_soc.c 2008-04-02 20:44:56 -05:00
ppc_asm.h
ppc-pci.h
processor.h [POWERPC] Add IRQSTACKS support on ppc32 2008-04-29 15:57:34 +10:00
prom.h
ps3.h [POWERPC] PS3: Make ps3_virq_setup and ps3_virq_destroy static 2008-05-02 15:00:44 +10:00
ps3av.h
ps3fb.h
ps3stor.h
pSeries_reconfig.h
ptrace.h [POWERPC] Move stackframe definitions to common header 2008-04-18 15:37:18 +10:00
qe_ic.h
qe.h [POWERPC] QE: export qe_get_brg_clk() 2008-04-17 01:01:39 -05:00
reg_8xx.h
reg_booke.h
reg_fsl_emb.h
reg.h
resource.h
rheap.h
rio.h [RAPIDIO] Move include/asm-ppc/rio.h to asm-powerpc 2008-04-29 19:40:27 +10:00
rtas.h
rtc.h
rwsem.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
scatterlist.h
seccomp.h
sections.h
semaphore.h Generic semaphore implementation 2008-04-17 10:42:34 -04:00
sembuf.h
serial.h
setjmp.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
smu.h
socket.h
sockios.h
sparsemem.h [POWERPC] Add error return from htab_remove_mapping() 2008-04-01 20:43:08 +11:00
spinlock_types.h
spinlock.h [POWERPC] irqtrace support for 64-bit powerpc 2008-04-18 15:38:47 +10:00
spu_csa.h powerpc/spufs: remove class_0_dsisr from spu exception handling 2008-06-16 14:35:00 +10:00
spu_info.h
spu_priv1.h
spu.h powerpc/spufs: remove class_0_dsisr from spu exception handling 2008-06-16 14:35:00 +10:00
sstep.h
stat.h
statfs.h
string.h [POWERPC] Add hand-coded assembly strcmp 2008-04-07 10:03:03 +10:00
suspend.h
synch.h
syscalls.h unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
systbl.h
system.h [POWERPC] Fix rmb to order cacheable vs. noncacheable 2008-06-16 15:00:20 +10:00
tce.h
termbits.h
termios.h
thread_info.h [POWERPC] Fix kernel stack allocation alignment 2008-04-24 20:57:33 +10:00
time.h
timex.h
tlb.h
tlbflush.h
topology.h asm-generic: add node_to_cpumask_ptr macro 2008-04-19 19:44:58 +02:00
tsi108_irq.h
tsi108_pci.h
tsi108.h
types.h powerpc: types: use <asm-generic/int-*.h> for the powerpc architecture 2008-05-02 16:18:35 -07:00
uaccess.h [POWERPC] Fix uninitialized variable bug in copy_{to|from}_user 2008-05-15 20:49:52 +10:00
ucc_fast.h
ucc_slow.h
ucc.h
ucontext.h
udbg.h
uic.h
unaligned.h kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
uninorth.h
unistd.h
user.h
vdso_datapage.h
vdso.h
vga.h
vio.h
xilinx_intc.h
xmon.h
xor.h