mm: nommu: correct the range of mmap_sem_read_lock in task_mem()
authorlipeifeng <lipeifeng@oppo.com>
Thu, 22 Jun 2023 04:01:52 +0000 (12:01 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 23 Jun 2023 23:59:32 +0000 (16:59 -0700)
During the seq_printf,the mmap_sem_read_lock protection is not
required.

Link: https://lkml.kernel.org/r/20230622040152.1173-1-lipeifeng@oppo.com
Signed-off-by: lipeifeng <lipeifeng@oppo.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/proc/task_nommu.c

index 0ec3507..2c8b622 100644 (file)
@@ -51,7 +51,7 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
                sbytes += kobjsize(mm);
        else
                bytes += kobjsize(mm);
-       
+
        if (current->fs && current->fs->users > 1)
                sbytes += kobjsize(current->fs);
        else
@@ -69,13 +69,13 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
 
        bytes += kobjsize(current); /* includes kernel stack */
 
+       mmap_read_unlock(mm);
+
        seq_printf(m,
                "Mem:\t%8lu bytes\n"
                "Slack:\t%8lu bytes\n"
                "Shared:\t%8lu bytes\n",
                bytes, slack, sbytes);
-
-       mmap_read_unlock(mm);
 }
 
 unsigned long task_vsize(struct mm_struct *mm)