Commit 6260a4b0 authored by KAMEZAWA Hiroyuki's avatar KAMEZAWA Hiroyuki Committed by Linus Torvalds

/proc/pid/maps: don't show pgoff of pure ANON VMAs

Recently, it's argued that what proc/pid/maps shows is ugly when a 32bit
binary runs on 64bit host.

/proc/pid/maps outputs vma's pgoff member but vma->pgoff is of no use
information is the vma is for ANON.  With this patch, /proc/pid/maps shows
just 0 if no file backing store.

[akpm@linux-foundation.org: coding-style fixes]
[kamezawa.hiroyu@jp.fujitsu.com: coding-style fixes]
Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Mike Waychison <mikew@google.com>
Reported-by: default avatarYing Han <yinghan@google.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fafd688e
...@@ -204,6 +204,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) ...@@ -204,6 +204,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
struct file *file = vma->vm_file; struct file *file = vma->vm_file;
int flags = vma->vm_flags; int flags = vma->vm_flags;
unsigned long ino = 0; unsigned long ino = 0;
unsigned long long pgoff = 0;
dev_t dev = 0; dev_t dev = 0;
int len; int len;
...@@ -211,6 +212,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) ...@@ -211,6 +212,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
struct inode *inode = vma->vm_file->f_path.dentry->d_inode; struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
dev = inode->i_sb->s_dev; dev = inode->i_sb->s_dev;
ino = inode->i_ino; ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
} }
seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
...@@ -220,7 +222,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) ...@@ -220,7 +222,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
flags & VM_WRITE ? 'w' : '-', flags & VM_WRITE ? 'w' : '-',
flags & VM_EXEC ? 'x' : '-', flags & VM_EXEC ? 'x' : '-',
flags & VM_MAYSHARE ? 's' : 'p', flags & VM_MAYSHARE ? 's' : 'p',
((loff_t)vma->vm_pgoff) << PAGE_SHIFT, pgoff,
MAJOR(dev), MINOR(dev), ino, &len); MAJOR(dev), MINOR(dev), ino, &len);
/* /*
......
...@@ -126,6 +126,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) ...@@ -126,6 +126,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
struct file *file; struct file *file;
dev_t dev = 0; dev_t dev = 0;
int flags, len; int flags, len;
unsigned long long pgoff = 0;
flags = vma->vm_flags; flags = vma->vm_flags;
file = vma->vm_file; file = vma->vm_file;
...@@ -134,6 +135,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) ...@@ -134,6 +135,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
struct inode *inode = vma->vm_file->f_path.dentry->d_inode; struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
dev = inode->i_sb->s_dev; dev = inode->i_sb->s_dev;
ino = inode->i_ino; ino = inode->i_ino;
pgoff = (loff_t)vma->pg_off << PAGE_SHIFT;
} }
seq_printf(m, seq_printf(m,
...@@ -144,7 +146,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) ...@@ -144,7 +146,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
flags & VM_WRITE ? 'w' : '-', flags & VM_WRITE ? 'w' : '-',
flags & VM_EXEC ? 'x' : '-', flags & VM_EXEC ? 'x' : '-',
flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p', flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p',
(unsigned long long) vma->vm_pgoff << PAGE_SHIFT, pgoff,
MAJOR(dev), MINOR(dev), ino, &len); MAJOR(dev), MINOR(dev), ino, &len);
if (file) { if (file) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment