linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
	linux-mm@kvack.org, "Alex Deucher" <alexander.deucher@amd.com>,
	"Alex Thorlton" <athorlton@sgi.com>,
	"Andrea Arcangeli" <aarcange@redhat.com>,
	"Andy Lutomirski" <luto@amacapital.net>,
	"Benjamin LaHaise" <bcrl@kvack.org>,
	"Christian König" <christian.koenig@amd.com>,
	"Daniel Vetter" <daniel.vetter@intel.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"David Airlie" <airlied@linux.ie>,
	"Davidlohr Bueso" <dave@stgolabs.net>,
	"David Rientjes" <rientjes@google.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	"Hugh Dickins" <hughd@google.com>,
	"Ingo Molnar" <mingo@kernel.org>,
	"Johannes Weiner" <hannes@cmpxchg.org>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	"Konstantin Khlebnikov" <koct9i@gmail.com>,
	linux-arch@vger.kernel.org, "Mel Gorman" <mgorman@suse.de>,
	"Oleg Nesterov" <oleg@redhat.com>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Petr Cermak" <petrcermak@chromium.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Michal Hocko" <mhocko@suse.com>,
	"Alexander Viro" <viro@zeniv.linux.org.uk>
Subject: [PATCH 13/18] exec: make exec path waiting for mmap_sem killable
Date: Mon, 29 Feb 2016 14:26:52 +0100	[thread overview]
Message-ID: <1456752417-9626-14-git-send-email-mhocko@kernel.org> (raw)
In-Reply-To: <1456752417-9626-1-git-send-email-mhocko@kernel.org>

From: Michal Hocko <mhocko@suse.com>

setup_arg_pages requires mmap_sem for write. If the waiting task
gets killed by the oom killer it would block oom_reaper from
asynchronous address space reclaim and reduce the chances of timely
OOM resolving. Wait for the lock in the killable mode and return with
EINTR if the task got killed while waiting. All the callers are already
handling error path and the fatal signal doesn't need any additional
treatment.

The same applies to __bprm_mm_init.

Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Michal Hocko <mhocko@suse.com>
---
 fs/exec.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/fs/exec.c b/fs/exec.c
index c4010b8207a1..29f2f22ae067 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -267,7 +267,10 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
 	if (!vma)
 		return -ENOMEM;
 
-	down_write(&mm->mmap_sem);
+	if (down_write_killable(&mm->mmap_sem)) {
+		err = -EINTR;
+		goto err_free;
+	}
 	vma->vm_mm = mm;
 
 	/*
@@ -294,6 +297,7 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
 	return 0;
 err:
 	up_write(&mm->mmap_sem);
+err_free:
 	bprm->vma = NULL;
 	kmem_cache_free(vm_area_cachep, vma);
 	return err;
@@ -700,7 +704,9 @@ int setup_arg_pages(struct linux_binprm *bprm,
 		bprm->loader -= stack_shift;
 	bprm->exec -= stack_shift;
 
-	down_write(&mm->mmap_sem);
+	if (down_write_killable(&mm->mmap_sem))
+		return -EINTR;
+
 	vm_flags = VM_STACK_FLAGS;
 
 	/*
-- 
2.7.0

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2016-02-29 13:27 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-29 13:26 [PATCH 0/18] change mmap_sem taken for write killable Michal Hocko
2016-02-29 13:26 ` [PATCH 01/18] mm: Make mmap_sem for write waits killable for mm syscalls Michal Hocko
2016-02-29 13:44   ` kbuild test robot
2016-02-29 13:44   ` kbuild test robot
2016-03-10 15:47   ` Vlastimil Babka
2016-03-10 15:56     ` Michal Hocko
2016-02-29 13:26 ` [PATCH 02/18] mm: make vm_mmap killable Michal Hocko
2016-03-11  9:59   ` Vlastimil Babka
2016-03-11 12:12     ` Michal Hocko
2016-03-11 12:43       ` Vlastimil Babka
2016-03-11 12:55         ` Michal Hocko
2016-02-29 13:26 ` [PATCH 03/18] mm: make vm_munmap killable Michal Hocko
2016-03-11 10:06   ` Vlastimil Babka
2016-03-11 12:32     ` Michal Hocko
2016-02-29 13:26 ` [PATCH 04/18] mm, aout: handle vm_brk failures Michal Hocko
2016-03-11 10:32   ` Vlastimil Babka
2016-03-11 12:42     ` Michal Hocko
2016-02-29 13:26 ` [PATCH 05/18] mm, elf: handle vm_brk error Michal Hocko
2016-03-11 10:35   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 06/18] mm: make vm_brk killable Michal Hocko
2016-03-11 10:44   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 07/18] mm, proc: make clear_refs killable Michal Hocko
2016-02-29 13:47   ` kbuild test robot
2016-02-29 17:38   ` Oleg Nesterov
2016-02-29 17:53     ` Michal Hocko
2016-02-29 17:58       ` Oleg Nesterov
2016-02-29 18:02         ` Michal Hocko
2016-02-29 17:56   ` [PATCH] " Michal Hocko
2016-02-29 18:16     ` Oleg Nesterov
2016-02-29 20:25     ` kbuild test robot
2016-03-11 10:59     ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 08/18] mm, fork: make dup_mmap wait for mmap_sem for write killable Michal Hocko
2016-02-29 13:48   ` kbuild test robot
2016-02-29 17:54   ` Oleg Nesterov
2016-02-29 18:07   ` [PATCH] " Michal Hocko
2016-02-29 20:13     ` kbuild test robot
2016-03-11 11:12     ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable Michal Hocko
2016-03-08 19:15   ` Davidlohr Bueso
2016-03-09 10:16     ` Michal Hocko
2016-03-09 10:19   ` [PATCH] " Michal Hocko
2016-03-09 10:46     ` kbuild test robot
2016-03-11 11:18     ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 10/18] vdso: make arch_setup_additional_pages wait for mmap_sem for write killable Michal Hocko
2016-02-29 13:45   ` kbuild test robot
2016-02-29 13:50   ` kbuild test robot
2016-02-29 13:53   ` kbuild test robot
2016-02-29 15:41   ` Andy Lutomirski
2016-03-11 11:28   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 11/18] coredump: make coredump_wait wait for mma_sem " Michal Hocko
2016-02-29 15:57   ` Oleg Nesterov
2016-03-11 11:32   ` Vlastimil Babka
2016-03-11 11:54     ` Vlastimil Babka
2016-03-11 12:46       ` Michal Hocko
2016-02-29 13:26 ` [PATCH 12/18] aio: make aio_setup_ring killable Michal Hocko
2016-02-29 16:17   ` Jeff Moyer
2016-03-11 11:57   ` Vlastimil Babka
2016-02-29 13:26 ` Michal Hocko [this message]
2016-02-29 17:23   ` [PATCH 13/18] exec: make exec path waiting for mmap_sem killable Oleg Nesterov
2016-02-29 17:47     ` Michal Hocko
2016-02-29 18:10       ` Oleg Nesterov
2016-03-11 12:51   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 14/18] prctl: make PR_SET_THP_DISABLE wait " Michal Hocko
2016-03-11 12:54   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 15/18] uprobes: wait for mmap_sem for write killable Michal Hocko
2016-02-29 15:57   ` Oleg Nesterov
2016-02-29 16:28     ` Michal Hocko
2016-02-29 17:12       ` Oleg Nesterov
2016-02-29 17:42   ` [PATCH] " Michal Hocko
2016-02-29 17:52     ` kbuild test robot
2016-02-29 17:53     ` kbuild test robot
2016-02-29 18:11     ` Oleg Nesterov
2016-02-29 18:22       ` Michal Hocko
2016-02-29 18:38         ` Oleg Nesterov
2016-03-11 14:58     ` Vlastimil Babka
2016-03-11 15:32       ` Michal Hocko
2016-02-29 13:26 ` [PATCH 16/18] drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable Michal Hocko
2016-03-11 15:23   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 17/18] drm/radeon: make radeon_mn_get " Michal Hocko
2016-02-29 13:35   ` Christian König
2016-03-11 15:27   ` Vlastimil Babka
2016-02-29 13:26 ` [PATCH 18/18] drm/amdgpu: make amdgpu_mn_get " Michal Hocko
2016-03-11 15:29   ` Vlastimil Babka
2016-02-29 13:31 ` [PATCH 0/18] change mmap_sem taken for write killable Michal Hocko
2016-02-29 14:04 ` Kirill A. Shutemov
2016-02-29 14:16   ` Michal Hocko
2016-02-29 15:03     ` Kirill A. Shutemov
2016-04-26 12:56 [PATCH 0/18] change mmap_sem taken for write killable v2 Michal Hocko
2016-04-26 12:56 ` [PATCH 13/18] exec: make exec path waiting for mmap_sem killable Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456752417-9626-14-git-send-email-mhocko@kernel.org \
    --to=mhocko@kernel.org \
    --cc=aarcange@redhat.com \
    --cc=airlied@linux.ie \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.deucher@amd.com \
    --cc=athorlton@sgi.com \
    --cc=bcrl@kvack.org \
    --cc=christian.koenig@amd.com \
    --cc=daniel.vetter@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dave@stgolabs.net \
    --cc=hannes@cmpxchg.org \
    --cc=hpa@zytor.com \
    --cc=hughd@google.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=koct9i@gmail.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@amacapital.net \
    --cc=mgorman@suse.de \
    --cc=mhocko@suse.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=petrcermak@chromium.org \
    --cc=rientjes@google.com \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).