The patch titled Subject: proc: use down_read_killable mmap_sem for /proc/pid/maps has been added to the -mm tree. Its filename is proc-use-down_read_killable-mmap_sem-for-proc-pid-maps.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/proc-use-down_read_killable-mmap_sem-for-proc-pid-maps.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/proc-use-down_read_killable-mmap_sem-for-proc-pid-maps.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx> Subject: proc: use down_read_killable mmap_sem for /proc/pid/maps Do not remain stuck forever if something goes wrong. Using a killable lock permits cleanup of stuck tasks and simplifies investigation. This function is also used for /proc/pid/smaps. Link: http://lkml.kernel.org/r/156007493160.3335.14447544314127417266.stgit@buzz Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx> Reviewed-by: Roman Gushchin <guro@xxxxxx> Reviewed-by: Cyrill Gorcunov <gorcunov@xxxxxxxxx> Reviewed-by: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> Cc: Alexey Dobriyan <adobriyan@xxxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: Michal Koutný <mkoutny@xxxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/proc/task_mmu.c | 6 +++++- fs/proc/task_nommu.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) --- a/fs/proc/task_mmu.c~proc-use-down_read_killable-mmap_sem-for-proc-pid-maps +++ a/fs/proc/task_mmu.c @@ -166,7 +166,11 @@ static void *m_start(struct seq_file *m, if (!mm || !mmget_not_zero(mm)) return NULL; - down_read(&mm->mmap_sem); + if (down_read_killable(&mm->mmap_sem)) { + mmput(mm); + return ERR_PTR(-EINTR); + } + hold_task_mempolicy(priv); priv->tail_vma = get_gate_vma(mm); --- a/fs/proc/task_nommu.c~proc-use-down_read_killable-mmap_sem-for-proc-pid-maps +++ a/fs/proc/task_nommu.c @@ -211,7 +211,11 @@ static void *m_start(struct seq_file *m, if (!mm || !mmget_not_zero(mm)) return NULL; - down_read(&mm->mmap_sem); + if (down_read_killable(&mm->mmap_sem)) { + mmput(mm); + return ERR_PTR(-EINTR); + } + /* start from the Nth VMA */ for (p = rb_first(&mm->mm_rb); p; p = rb_next(p)) if (n-- == 0) _ Patches currently in -mm which might be from khlebnikov@xxxxxxxxxxxxxx are proc-use-down_read_killable-mmap_sem-for-proc-pid-maps.patch proc-use-down_read_killable-mmap_sem-for-proc-pid-smaps_rollup.patch proc-use-down_read_killable-mmap_sem-for-proc-pid-pagemap.patch proc-use-down_read_killable-mmap_sem-for-proc-pid-clear_refs.patch proc-use-down_read_killable-mmap_sem-for-proc-pid-map_files.patch mm-use-down_read_killable-for-locking-mmap_sem-in-access_remote_vm.patch