fs/proc/task_mmu.c: fix Locked field in /proc/pid/smaps*
authorVlastimil Babka <vbabka@suse.cz>
Fri, 13 Jul 2018 23:58:56 +0000 (16:58 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 17 Jul 2018 09:39:29 +0000 (11:39 +0200)
commit e70cc2bd579e8a9d6d153762f0fe294d0e652ff0 upstream.

Thomas reports:
 "While looking around in /proc on my v4.14.52 system I noticed that all
  processes got a lot of "Locked" memory in /proc/*/smaps. A lot more
  memory than a regular user can usually lock with mlock().

  Commit 493b0e9d945f (in v4.14-rc1) seems to have changed the behavior
  of "Locked".

  Before that commit the code was like this. Notice the VM_LOCKED check.

           (vma->vm_flags & VM_LOCKED) ?
                (unsigned long)(mss.pss >> (10 + PSS_SHIFT)) : 0);

  After that commit Locked is now the same as Pss:

  (unsigned long)(mss->pss >> (10 + PSS_SHIFT)));

  This looks like a mistake."

Indeed, the commit has added mss->pss_locked with the correct value that
depends on VM_LOCKED, but forgot to actually use it.  Fix it.

Link: http://lkml.kernel.org/r/ebf6c7fb-fec3-6a26-544f-710ed193c154@suse.cz
Fixes: 493b0e9d945f ("mm: add /proc/pid/smaps_rollup")
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reported-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Daniel Colascione <dancol@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/proc/task_mmu.c

index 4cd8328e4039c72710e12c9d3bb9739ae524bdd1..6f337fff38c4acdc81a8f822fed8ddeecd5788ce 100644 (file)
@@ -850,7 +850,7 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
                           mss->private_hugetlb >> 10,
                           mss->swap >> 10,
                           (unsigned long)(mss->swap_pss >> (10 + PSS_SHIFT)),
-                          (unsigned long)(mss->pss >> (10 + PSS_SHIFT)));
+                          (unsigned long)(mss->pss_locked >> (10 + PSS_SHIFT)));
 
        if (!rollup_mode) {
                arch_show_smap(m, vma);