From: William Lee Irwin III Not all binfmts page align ->end_code and ->start_code, so the task_mmu statistics calculations need to perform this alignment themselves. Signed-off-by: Andrew Morton --- 25-akpm/fs/proc/task_mmu.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff -puN fs/proc/task_mmu.c~fix-task_mmuc-text-size-reporting fs/proc/task_mmu.c --- 25/fs/proc/task_mmu.c~fix-task_mmuc-text-size-reporting Tue Sep 14 16:44:33 2004 +++ 25-akpm/fs/proc/task_mmu.c Tue Sep 14 16:44:33 2004 @@ -9,7 +9,7 @@ char *task_mem(struct mm_struct *mm, cha unsigned long data, text, lib; data = mm->total_vm - mm->shared_vm - mm->stack_vm; - text = (mm->end_code - mm->start_code) >> 10; + text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK)) >> 10; lib = (mm->exec_vm << (PAGE_SHIFT-10)) - text; buffer += sprintf(buffer, "VmSize:\t%8lu kB\n" @@ -36,7 +36,8 @@ int task_statm(struct mm_struct *mm, int int *data, int *resident) { *shared = mm->shared_vm; - *text = (mm->end_code - mm->start_code) >> PAGE_SHIFT; + *text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK)) + >> PAGE_SHIFT; *data = mm->total_vm - mm->shared_vm - *text; *resident = mm->rss; return mm->total_vm; _