[SRU][Bionic][PATCH 0/1] Fixes for LP1800849

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][Bionic][PATCH 0/1] Fixes for LP1800849

Frank Heimes

== SRU Justification ==

Description: kvm: fix deadlock when killed by oom
Symptom: oom killer leaves processes in a deadlock state.
Problem: The problem arises in the rare cases in which
         handle_mm_fault does not release the mm_sem.
Solution: Correct the issue by manually release the mm_sem when needed.

== Fix ==

306d6c49ac9ded11114cb53b0925da52f2c2ada1 ("s390/kvm: fix deadlock when killed by oom")

== Patch ==

commit 306d6c49ac9ded11114cb53b0925da52f2c2ada1
Author: Claudio Imbrenda <[hidden email]>
Date:   Mon Jul 16 10:38:57 2018 +0200

    s390/kvm: fix deadlock when killed by oom
    
    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: 24eb3a824c4f3 ("KVM: s390: Add FAULT_FLAG_RETRY_NOWAIT for guest fault")
    Cc: <[hidden email]> # 3.15+
    Signed-off-by: Claudio Imbrenda <[hidden email]>
    Signed-off-by: Martin Schwidefsky <[hidden email]>

== Regression Potential ==

Low and minimal, because:

- code change is s390x only
- limited to one single file: /arch/s390/mm/fault.c
- just two additional lines added (if stmt)
- Xenial and Cosmic already have this commit via upstream stable updates.
- Hence patch is just missing in Bionic.
- Test kernel was made available.

== Test Case ==

Create numerous KVM guests so that the host starts swapping
and memory becomes overcomitted and the oom killer is triggered.


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][Bionic][PATCH 1/1] s390/kvm: fix deadlock when killed by oom

Frank Heimes
From: Claudio Imbrenda <[hidden email]>


    s390/kvm: fix deadlock when killed by oom
    
    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: 24eb3a824c4f3 ("KVM: s390: Add FAULT_FLAG_RETRY_NOWAIT for guest fault")
    Cc: <[hidden email]> # 3.15+
    Signed-off-by: Claudio Imbrenda <[hidden email]>
    Signed-off-by: Martin Schwidefsky <[hidden email]>

---

diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index e074480..4cc3f06 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -502,6 +502,8 @@ static inline int do_exception(struct pt_regs *regs, int access)
        /* No reason to continue if interrupted by SIGKILL. */
        if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) {
                fault = VM_FAULT_SIGNAL;
+               if (flags & FAULT_FLAG_RETRY_NOWAIT)
+                       goto out_up;
                goto out;
        }
        if (unlikely(fault & VM_FAULT_ERROR))


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

NAK: [SRU][Bionic][PATCH 0/1] Fixes for LP1800849

Frank Heimes
In reply to this post by Frank Heimes
Did not perfectly fit to the Stable Patch Format.
Hence closing (NAK) this and will re-submit as v2 with corrections.

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team