The patch titled Subject: proc: use down_read_killable mmap_sem for /proc/pid/smaps_rollup has been added to the -mm tree. Its filename is proc-use-down_read_killable-mmap_sem-for-proc-pid-smaps_rollup.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/proc-use-down_read_killable-mmap_sem-for-proc-pid-smaps_rollup.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/proc-use-down_read_killable-mmap_sem-for-proc-pid-smaps_rollup.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/smaps_rollup Do not remain stuck forever if something goes wrong. Using a killable lock permits cleanup of stuck tasks and simplifies investigation. Link: http://lkml.kernel.org/r/156007493429.3335.14666825072272692455.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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/fs/proc/task_mmu.c~proc-use-down_read_killable-mmap_sem-for-proc-pid-smaps_rollup +++ a/fs/proc/task_mmu.c @@ -832,7 +832,10 @@ static int show_smaps_rollup(struct seq_ memset(&mss, 0, sizeof(mss)); - down_read(&mm->mmap_sem); + ret = down_read_killable(&mm->mmap_sem); + if (ret) + goto out_put_mm; + hold_task_mempolicy(priv); for (vma = priv->mm->mmap; vma; vma = vma->vm_next) { @@ -849,8 +852,9 @@ static int show_smaps_rollup(struct seq_ release_task_mempolicy(priv); up_read(&mm->mmap_sem); - mmput(mm); +out_put_mm: + mmput(mm); out_put_task: put_task_struct(priv->task); priv->task = NULL; _ 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