linux/arch/s390/include/asm
Christian Borntraeger 2944a5c971 [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes
When running several kvm processes with lots of memory overcommitment,
we have seen an oops during process shutdown:
------------[ cut here ]------------
Kernel BUG at 0000000000193434 [verbose debug info unavailable]
addressing exception: 0005 [#1] PREEMPT SMP
Modules linked in: kvm sunrpc qeth_l2 dm_mod qeth ccwgroup
CPU: 10 Not tainted 2.6.28-rc4-kvm-bigiron-00521-g0ccca08-dirty #8
Process kuli (pid: 14460, task: 0000000149822338, ksp: 0000000024f57650)
Krnl PSW : 0704e00180000000 0000000000193434 (unmap_vmas+0x884/0xf10)
R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 EA:3
Krnl GPRS: 0000000000000002 0000000000000000 000000051008d000 000003e05e6034e0
           00000000001933f6 00000000000001e9 0000000407259e0a 00000002be88c400
           00000200001c1000 0000000407259608 0000000407259e08 0000000024f577f0
           0000000407259e09 0000000000445fa8 00000000001933f6 0000000024f577f0
Krnl Code: 0000000000193426: eb22000c000d sllg %r2,%r2,12
           000000000019342c: a7180000 lhi %r1,0
           0000000000193430: b2290012 iske %r1,%r2
          >0000000000193434: a7110002 tmll %r1,2
           0000000000193438: a7840006 brc 8,193444
           000000000019343c: 9602c000 oi 0(%r12),2
           0000000000193440: 96806000 oi 0(%r6),128
           0000000000193444: a7110004 tmll %r1,4
Call Trace:
([<00000000001933f6>] unmap_vmas+0x846/0xf10)
[<0000000000199680>] exit_mmap+0x210/0x458
[<000000000012a8f8>] mmput+0x54/0xfc
[<000000000012f714>] exit_mm+0x134/0x144
[<000000000013120c>] do_exit+0x240/0x878
[<00000000001318dc>] do_group_exit+0x98/0xc8
[<000000000013e6b0>] get_signal_to_deliver+0x30c/0x358
[<000000000010bee0>] do_signal+0xec/0x860
[<0000000000112e30>] sysc_sigpending+0xe/0x22
[<000002000013198a>] 0x2000013198a
INFO: lockdep is turned off.
Last Breaking-Event-Address:
[<00000000001a68d0>] free_swap_and_cache+0x1a0/0x1a4
<4>---[ end trace bc19f1d51ac9db7c ]---

The faulting instruction is the storage key operation (iske) in
ptep_rcp_copy (called by pte_clear, called by unmap_vmas). iske
reads dirty and reference bit information for a physical page and
requires a valid physical address. Since we are in pte_clear, we
cannot rely on the pte containing a valid address. Fortunately we
dont need these information in pte_clear - after all there is no
mapping. The best fix is to remove the needless call to ptep_rcp_copy
that contains the iske.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-11-27 11:06:57 +01:00
..
airq.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
appldata.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
atomic.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
auxvec.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
bitops.h [S390] fix ext2_find_next_bit 2008-08-21 19:46:41 +02:00
bug.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
bugs.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
byteorder.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cache.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cacheflush.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ccwdev.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ccwgroup.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
checksum.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
chpid.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
chsc.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cio.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cmb.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
compat.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cpcmd.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cpu.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
cputime.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
current.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
dasd.h [S390] Add ioctl support for EMC Symmetrix Subsystem Control I/O 2008-10-10 21:34:00 +02:00
debug.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
delay.h [S390] Move private simple udelay function to arch/s390/lib/delay.c. 2008-10-10 21:33:58 +02:00
device.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
diag.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
div64.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
dma.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ebcdic.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
elf.h [PATCH] remove unused ibcs2/PER_SVR4 in SET_PERSONALITY 2008-10-16 15:40:05 +02:00
emergency-restart.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
errno.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
etr.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
extmem.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
fb.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
fcntl.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
fcx.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
futex.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
hardirq.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
hugetlb.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
idals.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
io.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ioctl.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ioctls.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ipcbuf.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ipl.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
irq_regs.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
irq.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
irqflags.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
isc.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
itcw.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
Kbuild [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kdebug.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kexec.h kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
kmap_types.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kprobes.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kvm_host.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kvm_para.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
kvm_virtio.h [S390] s390: Fix build for !CONFIG_S390_GUEST + CONFIG_VIRTIO_CONSOLE 2008-10-28 11:12:06 +01:00
kvm.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
linkage.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
local.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
lowcore.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
mathemu.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
mman.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
mmu_context.h [S390] pgtables: Fix race in enable_sie vs. page table ops 2008-10-28 11:12:03 +01:00
mmu.h [S390] pgtables: Fix race in enable_sie vs. page table ops 2008-10-28 11:12:03 +01:00
module.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
monwriter.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
msgbuf.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
mutex.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
page.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
param.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
pci.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
percpu.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
pgalloc.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
pgtable.h [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes 2008-11-27 11:06:57 +01:00
poll.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
posix_types.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
processor.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ptrace.h [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
qdio.h [S390] qdio enhanced SIGA (iqdio) support. 2008-10-10 21:33:55 +02:00
qeth.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
reset.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
resource.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
rwsem.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
s390_ext.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
s390_rdev.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
scatterlist.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
schid.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sclp.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sections.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
segment.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sembuf.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
setup.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sfp-machine.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sfp-util.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
shmbuf.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
shmparam.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sigcontext.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
siginfo.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
signal.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sigp.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
smp.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
socket.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sockios.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
sparsemem.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
spinlock_types.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
spinlock.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
stat.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
statfs.h S390: Update comments about why we don't use <asm-generic/statfs.h> 2008-09-06 19:30:19 +01:00
string.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
suspend.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
syscall.h [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
sysinfo.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
system.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
tape390.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
termbits.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
termios.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
thread_info.h [S390] No more 4kb stacks. 2008-10-28 11:12:06 +01:00
timer.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
timex.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
tlb.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
tlbflush.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
todclk.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
topology.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
types.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
uaccess.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
ucontext.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
unaligned.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
unistd.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
user.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
vtoc.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
xor.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00
zcrypt.h [S390] move include/asm-s390 to arch/s390/include/asm 2008-08-01 20:42:05 +02:00