Messages in this thread | | | Date | Wed, 2 Mar 2011 14:55:13 +0200 (EET) | From | Aaro Koskinen <> | Subject | Re: [PATCH] procfs: fix /proc/<pid>/maps heap check |
| |
Hi,
On Tue, 1 Mar 2011, Aaro Koskinen wrote: > The current check looks wrong and prints "[heap]" only if the mapping > matches exactly the heap. However, the heap may be merged with some > other mappings, and there may be also be multiple mappings. > > Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> > Cc: stable@kernel.org
Below is a test program and an example output showing the problem, and the correct output with the patch:
Without the patch:
# ./a.out & # cat /proc/$!/maps | head -4 00008000-00009000 r-xp 00000000 01:00 9224 /a.out 00010000-00011000 rw-p 00000000 01:00 9224 /a.out 00011000-00012000 rw-p 00000000 00:00 0 00012000-00013000 rw-p 00000000 00:00 0
With the patch:
# ./a.out & # cat /proc/$!/maps | head -4 00008000-00009000 r-xp 00000000 01:00 9228 /a.out 00010000-00011000 rw-p 00000000 01:00 9228 /a.out 00011000-00012000 rw-p 00000000 00:00 0 [heap] 00012000-00013000 rw-p 00000000 00:00 0 [heap]
The test program:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/mman.h>
int main (void) { if (sbrk(4096) == (void *)-1) { perror("first sbrk(): "); return EXIT_FAILURE; }
if (mlockall(MCL_FUTURE)) { perror("mlockall(): "); return EXIT_FAILURE; }
if (sbrk(4096) == (void *)-1) { perror("second sbrk(): "); return EXIT_FAILURE; }
while (1) sleep(1); }
| |