From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751334AbcCHTQY (ORCPT ); Tue, 8 Mar 2016 14:16:24 -0500 Received: from mx2.suse.de ([195.135.220.15]:43781 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbcCHTQP (ORCPT ); Tue, 8 Mar 2016 14:16:15 -0500 Date: Tue, 8 Mar 2016 11:15:50 -0800 From: Davidlohr Bueso To: Michal Hocko Cc: LKML , Andrew Morton , linux-mm@kvack.org, Alex Deucher , Alex Thorlton , Andrea Arcangeli , Andy Lutomirski , Benjamin LaHaise , Christian K?nig , Daniel Vetter , Dave Hansen , David Airlie , David Rientjes , "H . Peter Anvin" , Hugh Dickins , Ingo Molnar , Johannes Weiner , "Kirill A . Shutemov" , Konstantin Khlebnikov , linux-arch@vger.kernel.org, Mel Gorman , Oleg Nesterov , Peter Zijlstra , Petr Cermak , Thomas Gleixner , Michal Hocko Subject: Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable Message-ID: <20160308191550.GA4404@linux-uzut.site> Mail-Followup-To: Michal Hocko , LKML , Andrew Morton , linux-mm@kvack.org, Alex Deucher , Alex Thorlton , Andrea Arcangeli , Andy Lutomirski , Benjamin LaHaise , Christian K?nig , Daniel Vetter , Dave Hansen , David Airlie , David Rientjes , "H . Peter Anvin" , Hugh Dickins , Ingo Molnar , Johannes Weiner , "Kirill A . Shutemov" , Konstantin Khlebnikov , linux-arch@vger.kernel.org, Mel Gorman , Oleg Nesterov , Peter Zijlstra , Petr Cermak , Thomas Gleixner , Michal Hocko References: <1456752417-9626-1-git-send-email-mhocko@kernel.org> <1456752417-9626-10-git-send-email-mhocko@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <1456752417-9626-10-git-send-email-mhocko@kernel.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 29 Feb 2016, Michal Hocko wrote: >From: Michal Hocko > >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 >Cc: Hugh Dickins >Signed-off-by: Michal Hocko I have no objection to this perse, just one comment below. Acked-by: Davidlohr Bueso >--- > 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(¤t->mm->mmap_sem); >+ if (down_write_killable(¤t->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 > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Davidlohr Bueso Subject: Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable Date: Tue, 8 Mar 2016 11:15:50 -0800 Message-ID: <20160308191550.GA4404@linux-uzut.site> References: <1456752417-9626-1-git-send-email-mhocko@kernel.org> <1456752417-9626-10-git-send-email-mhocko@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Return-path: Received: from mx2.suse.de ([195.135.220.15]:43781 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbcCHTQP (ORCPT ); Tue, 8 Mar 2016 14:16:15 -0500 Content-Disposition: inline In-Reply-To: <1456752417-9626-10-git-send-email-mhocko@kernel.org> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Michal Hocko Cc: LKML , Andrew Morton , linux-mm@kvack.org, Alex Deucher , Alex Thorlton , Andrea Arcangeli , Andy Lutomirski , Benjamin LaHaise , Christian K?nig , Daniel Vetter , Dave Hansen , David Airlie , David Rientjes , "H . Peter Anvin" , Hugh Dickins , Ingo Molnar , Johannes Weiner , "Kirill A . Shutemov" , Konstantin Khlebnikov , linux-arch@vger.kernel.org, Mel Gorman , Oleg Nesterov , Peter Zijlstra , Petr Cermak On Mon, 29 Feb 2016, Michal Hocko wrote: >From: Michal Hocko > >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 >Cc: Hugh Dickins >Signed-off-by: Michal Hocko I have no objection to this perse, just one comment below. Acked-by: Davidlohr Bueso >--- > 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(¤t->mm->mmap_sem); >+ if (down_write_killable(¤t->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 > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f48.google.com (mail-wm0-f48.google.com [74.125.82.48]) by kanga.kvack.org (Postfix) with ESMTP id 5ECAD6B007E for ; Tue, 8 Mar 2016 14:16:15 -0500 (EST) Received: by mail-wm0-f48.google.com with SMTP id p65so163244513wmp.1 for ; Tue, 08 Mar 2016 11:16:15 -0800 (PST) Date: Tue, 8 Mar 2016 11:15:50 -0800 From: Davidlohr Bueso Subject: Re: [PATCH 09/18] ipc, shm: make shmem attach/detach wait for mmap_sem killable Message-ID: <20160308191550.GA4404@linux-uzut.site> References: <1456752417-9626-1-git-send-email-mhocko@kernel.org> <1456752417-9626-10-git-send-email-mhocko@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <1456752417-9626-10-git-send-email-mhocko@kernel.org> Sender: owner-linux-mm@kvack.org List-ID: To: Michal Hocko Cc: LKML , Andrew Morton , linux-mm@kvack.org, Alex Deucher , Alex Thorlton , Andrea Arcangeli , Andy Lutomirski , Benjamin LaHaise , Christian K?nig , Daniel Vetter , Dave Hansen , David Airlie , David Rientjes , "H . Peter Anvin" , Hugh Dickins , Ingo Molnar , Johannes Weiner , "Kirill A . Shutemov" , Konstantin Khlebnikov , linux-arch@vger.kernel.org, Mel Gorman , Oleg Nesterov , Peter Zijlstra , Petr Cermak , Thomas Gleixner , Michal Hocko On Mon, 29 Feb 2016, Michal Hocko wrote: >From: Michal Hocko > >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 >Cc: Hugh Dickins >Signed-off-by: Michal Hocko I have no objection to this perse, just one comment below. Acked-by: Davidlohr Bueso >--- > 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(¤t->mm->mmap_sem); >+ if (down_write_killable(¤t->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 > -- 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: email@kvack.org