linux/arch/s390/mm
Claudio Imbrenda be1a6d7d10 s390/kvm: fix deadlock when killed by oom
commit 306d6c49ac upstream.

When the oom killer kills a userspace process in the page fault handler
while in guest context, the fault handler fails to release the mm_sem
if the FAULT_FLAG_RETRY_NOWAIT option is set. This leads to a deadlock
when tearing down the mm when the process terminates. This bug can only
happen when pfault is enabled, so only KVM clients are affected.

The problem arises in the rare cases in which handle_mm_fault does not
release the mm_sem. This patch fixes the issue by manually releasing
the mm_sem when needed.

Fixes: 24eb3a824c ("KVM: s390: Add FAULT_FLAG_RETRY_NOWAIT for guest fault")
Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-12-16 22:08:16 +00:00
..
cmm.c s390: convert use of typedef ctl_table to struct ctl_table 2013-10-28 08:36:25 +01:00
dump_pagetables.c s390/mm: cleanup page table definitions 2013-08-22 12:20:06 +02:00
extable.c s390: fix normalization bug in exception table sorting 2016-02-02 19:09:26 +00:00
extmem.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
fault.c s390/kvm: fix deadlock when killed by oom 2018-12-16 22:08:16 +00:00
gup.c s390/mm: fix write access check in gup_huge_pmd() 2018-01-01 20:51:32 +00:00
hugetlbpage.c hugetlb: restrict hugepage_migration_support() to x86_64 2014-06-04 16:53:51 -07:00
init.c s390/mm,tlb: optimize TLB flushing for zEC12 2014-04-03 14:31:00 +02:00
maccess.c s390/uaccess: remove copy_from_user_real() 2014-02-24 17:14:00 +01:00
Makefile s390/mem_detect: move memory detection code to mm folder 2013-05-02 15:50:22 +02:00
mem_detect.c s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
mmap.c s390/mmap: randomize mmap base for bottom up direction 2013-11-13 12:09:08 +09:00
page-states.c s390/cmma: remove "cmma disable" code in case of dump again 2014-05-20 08:58:42 +02:00
pageattr.c s390/mm: do not initialize storage keys 2013-10-24 17:17:00 +02:00
pgtable.c KVM: s390: Fix guest migration for huge guests resulting in panic 2017-07-18 18:40:06 +01:00
vmem.c s390/vmem: fix identity mapping 2016-08-22 22:37:57 +01:00