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

Stefan Bader stefan.bader at canonical.com
Tue Nov 6 12:54:25 UTC 2018


On 02.11.18 20:13, Frank Heimes wrote:
> From: Claudio Imbrenda <imbrenda at linux.vnet.ibm.com
> <mailto:imbrenda at linux.vnet.ibm.com>>
> 
> BugLink: http://bugs.launchpad.net/bugs/1800849
> 
> 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: <stable at vger.kernel.org <mailto:stable at vger.kernel.org>> # 3.15+
> Signed-off-by: Claudio Imbrenda <imbrenda at linux.vnet.ibm.com
> <mailto:imbrenda at linux.vnet.ibm.com>>
> Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com
> <mailto:schwidefsky at de.ibm.com>>
> (cherry picked from commit 306d6c49ac9ded11114cb53b0925da52f2c2ada1)
> Signed-off-by: Frank Heimes <frank.heimes at canonical.com
> <mailto:frank.heimes at canonical.com>>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> 
> ---

Possibly needs real cherry pick if this multi-part html thing cannot be
seperated away.
> 
> 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))
> 
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20181106/c5851765/attachment.sig>


More information about the kernel-team mailing list