aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/inode.c
diff options
context:
space:
mode:
authorJoe Korty <joe.korty@ccur.com>2008-10-16 15:27:09 +0400
committerAlexey Dobriyan <adobriyan@gmail.com>2008-10-23 13:21:29 +0400
commit7c88db0cb589df980acfb2f73c3595a0653004ec (patch)
treef3e6400704e9a9fdbaea3c8ee83026763f92627d /fs/proc/inode.c
parent2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4 (diff)
downloadkernel_samsung_smdk4412-7c88db0cb589df980acfb2f73c3595a0653004ec.zip
kernel_samsung_smdk4412-7c88db0cb589df980acfb2f73c3595a0653004ec.tar.gz
kernel_samsung_smdk4412-7c88db0cb589df980acfb2f73c3595a0653004ec.tar.bz2
proc: fix vma display mismatch between /proc/pid/{maps,smaps}
Commit 4752c369789250eafcd7813e11c8fb689235b0d2 aka "maps4: simplify interdependence of maps and smaps" broke /proc/pid/smaps, causing it to display some vmas twice and other vmas not at all. For example: grep .- /proc/1/smaps >/tmp/smaps; diff /proc/1/maps /tmp/smaps 1 25d24 2 < 7fd7e23aa000-7fd7e23ac000 rw-p 7fd7e23aa000 00:00 0 3 28a28 4 > ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] The bug has something to do with setting m->version before all the seq_printf's have been performed. show_map was doing this correctly, but show_smap was doing this in the middle of its seq_printf sequence. This patch arranges things so that the setting of m->version in show_smap is also done at the end of its seq_printf sequence. Testing: in addition to the above grep test, for each process I summed up the 'Rss' fields of /proc/pid/smaps and compared that to the 'VmRSS' field of /proc/pid/status. All matched except for Xorg (which has a /dev/mem mapping which Rss accounts for but VmRSS does not). This result gives us some confidence that neither /proc/pid/maps nor /proc/pid/smaps are any longer skipping or double-counting vmas. Signed-off-by: Joe Korty <joe.korty@ccur.com> Cc: Matt Mackall <mpm@selenic.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Diffstat (limited to 'fs/proc/inode.c')
0 files changed, 0 insertions, 0 deletions