Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1353324 > unrolled thread

Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable

Started byDavidlohr Bueso <dave@stgolabs.net>
First post2016-03-08 20:20 +0100
Last post2016-03-09 11:20 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for  mmap_sem killable Davidlohr Bueso <dave@stgolabs.net> - 2016-03-08 20:20 +0100
    Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for  mmap_sem killable Michal Hocko <mhocko@kernel.org> - 2016-03-09 11:20 +0100

#1353324 — Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable

FromDavidlohr Bueso <dave@stgolabs.net>
Date2016-03-08 20:20 +0100
SubjectRe: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable
Message-ID<ravkK-5fa-9@gated-at.bofh.it>
On Mon, 29 Feb 2016, Michal Hocko wrote:

>From: Michal Hocko <mhocko@suse.com>
>
>shmat and shmdt rely on 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.
>
>Cc: Davidlohr Bueso <dave@stgolabs.net>
>Cc: Hugh Dickins <hughd@google.com>
>Signed-off-by: Michal Hocko <mhocko@suse.com>

I have no objection to this perse, just one comment below.

Acked-by: Davidlohr Bueso <dave@stgolabs.net>

>---
> ipc/shm.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
>diff --git a/ipc/shm.c b/ipc/shm.c
>index 331fc1b0b3c7..b8cfa05940d2 100644
>--- a/ipc/shm.c
>+++ b/ipc/shm.c
>@@ -1200,7 +1200,11 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
> 	if (err)
> 		goto out_fput;
>
>-	down_write(&current->mm->mmap_sem);
>+	if (down_write_killable(&current->mm->mmap_sem)) {
>+		err = -EINVAL;
>+		goto out_fput;
>+	}

This should be EINTR, no?

Thanks,
Davidlohr

>+
> 	if (addr && !(shmflg & SHM_REMAP)) {
> 		err = -EINVAL;
> 		if (addr + size < addr)
>@@ -1271,7 +1275,8 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
> 	if (addr & ~PAGE_MASK)
> 		return retval;
>
>-	down_write(&mm->mmap_sem);
>+	if (down_write_killable(&mm->mmap_sem))
>+		return -EINTR;
>
> 	/*
> 	 * This function tries to be smart and unmap shm segments that
>-- 
>2.7.0
>

[toc] | [next] | [standalone]


#1353940

FromMichal Hocko <mhocko@kernel.org>
Date2016-03-09 11:20 +0100
Message-ID<raJnH-6qG-5@gated-at.bofh.it>
In reply to#1353324
On Tue 08-03-16 11:15:50, Davidlohr Bueso wrote:
> On Mon, 29 Feb 2016, Michal Hocko wrote:
> 
> >From: Michal Hocko <mhocko@suse.com>
> >
> >shmat and shmdt rely on 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.
> >
> >Cc: Davidlohr Bueso <dave@stgolabs.net>
> >Cc: Hugh Dickins <hughd@google.com>
> >Signed-off-by: Michal Hocko <mhocko@suse.com>
> 
> I have no objection to this perse, just one comment below.
> 
> Acked-by: Davidlohr Bueso <dave@stgolabs.net>

Thanks!

[...]
> >-	down_write(&current->mm->mmap_sem);
> >+	if (down_write_killable(&current->mm->mmap_sem)) {
> >+		err = -EINVAL;
> >+		goto out_fput;
> >+	}
> 
> This should be EINTR, no?

Of course. Thanks for catching that.
-- 
Michal Hocko
SUSE Labs

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web