833774849d
handle_pte_fault uses pte_present, pte_none and pte_file to find out the type of a pte. That is done without holding the page table lock. This clashes with the way how ptep_clear_flush removes active page table entries from the system. First the ipte instruction is used to invalidate the pte and remove all plt entries for the page. The ipte sets the hardware invalid bit without changing any other bit. After the ipte finished the pte is cleared. A concurrent fault can observe the the previously valid pte with the invalid bit set. With the current encoding of the different pte types an invalidated read-only pte can be misinterpreted as a swap-pte. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
||
---|---|---|
.. | ||
a.out.h | ||
appldata.h | ||
atomic.h | ||
auxvec.h | ||
bitops.h | ||
bug.h | ||
bugs.h | ||
byteorder.h | ||
cache.h | ||
cacheflush.h | ||
ccwdev.h | ||
ccwgroup.h | ||
checksum.h | ||
cio.h | ||
cmb.h | ||
compat.h | ||
cpcmd.h | ||
cputime.h | ||
current.h | ||
dasd.h | ||
debug.h | ||
delay.h | ||
div64.h | ||
dma-mapping.h | ||
dma.h | ||
ebcdic.h | ||
elf.h | ||
emergency-restart.h | ||
errno.h | ||
extmem.h | ||
fcntl.h | ||
futex.h | ||
hardirq.h | ||
idals.h | ||
io.h | ||
ioctl.h | ||
ioctls.h | ||
ipc.h | ||
ipcbuf.h | ||
irq_regs.h | ||
irq.h | ||
irqflags.h | ||
Kbuild | ||
kdebug.h | ||
kexec.h | ||
kmap_types.h | ||
kprobes.h | ||
linkage.h | ||
local.h | ||
lowcore.h | ||
mathemu.h | ||
mman.h | ||
mmu_context.h | ||
mmu.h | ||
module.h | ||
monwriter.h | ||
msgbuf.h | ||
mutex.h | ||
namei.h | ||
page.h | ||
param.h | ||
pci.h | ||
percpu.h | ||
pgalloc.h | ||
pgtable.h | ||
poll.h | ||
posix_types.h | ||
processor.h | ||
ptrace.h | ||
qdio.h | ||
qeth.h | ||
resource.h | ||
rwsem.h | ||
s390_ext.h | ||
s390_rdev.h | ||
scatterlist.h | ||
sections.h | ||
segment.h | ||
semaphore.h | ||
sembuf.h | ||
setup.h | ||
sfp-machine.h | ||
shmbuf.h | ||
shmparam.h | ||
sigcontext.h | ||
siginfo.h | ||
signal.h | ||
sigp.h | ||
smp.h | ||
socket.h | ||
sockios.h | ||
spinlock_types.h | ||
spinlock.h | ||
stat.h | ||
statfs.h | ||
string.h | ||
suspend.h | ||
system.h | ||
tape390.h | ||
termbits.h | ||
termios.h | ||
thread_info.h | ||
timer.h | ||
timex.h | ||
tlb.h | ||
tlbflush.h | ||
todclk.h | ||
topology.h | ||
types.h | ||
uaccess.h | ||
ucontext.h | ||
unaligned.h | ||
unistd.h | ||
user.h | ||
vtoc.h | ||
xor.h | ||
zcrypt.h |