proc: do mmput ASAP for /proc/*/map_files
authorAlexey Dobriyan <adobriyan@gmail.com>
Tue, 10 Apr 2018 23:32:05 +0000 (16:32 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Apr 2018 17:28:34 +0000 (10:28 -0700)
mm_struct is not needed while printing as all the data was already
extracted.

Link: http://lkml.kernel.org/r/20180309223120.GC3843@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/proc/base.c

index d413a13..eafa39a 100644 (file)
@@ -2211,6 +2211,7 @@ proc_map_files_readdir(struct file *file, struct dir_context *ctx)
                }
        }
        up_read(&mm->mmap_sem);
+       mmput(mm);
 
        for (i = 0; i < nr_files; i++) {
                char buf[4 * sizeof(long) + 2]; /* max: %lx-%lx\0 */
@@ -2228,7 +2229,6 @@ proc_map_files_readdir(struct file *file, struct dir_context *ctx)
        }
        if (fa)
                flex_array_free(fa);
-       mmput(mm);
 
 out_put_task:
        put_task_struct(task);