From: William Lee Irwin III Account reserved memory properly as per acahalan's speecified semantics. Signed-off-by: Andrew Morton --- 25-akpm/fs/proc/task_mmu.c | 2 +- 25-akpm/include/linux/sched.h | 2 +- 25-akpm/mm/mmap.c | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff -puN fs/proc/task_mmu.c~task-statm-reserved-fix fs/proc/task_mmu.c --- 25/fs/proc/task_mmu.c~task-statm-reserved-fix 2004-08-25 00:33:54.032596216 -0700 +++ 25-akpm/fs/proc/task_mmu.c 2004-08-25 00:33:54.039595152 -0700 @@ -19,7 +19,7 @@ char *task_mem(struct mm_struct *mm, cha "VmStk:\t%8lu kB\n" "VmExe:\t%8lu kB\n" "VmLib:\t%8lu kB\n", - mm->total_vm << (PAGE_SHIFT-10), + (mm->total_vm - mm->reserved_vm) << (PAGE_SHIFT-10), mm->locked_vm << (PAGE_SHIFT-10), mm->rss << (PAGE_SHIFT-10), data << (PAGE_SHIFT-10), diff -puN include/linux/sched.h~task-statm-reserved-fix include/linux/sched.h --- 25/include/linux/sched.h~task-statm-reserved-fix 2004-08-25 00:33:54.034595912 -0700 +++ 25-akpm/include/linux/sched.h 2004-08-25 00:33:54.040595000 -0700 @@ -226,7 +226,7 @@ struct mm_struct { unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rlimit_rss, rss, total_vm, locked_vm, shared_vm; - unsigned long exec_vm, stack_vm, def_flags; + unsigned long exec_vm, stack_vm, reserved_vm, def_flags; unsigned long saved_auxv[40]; /* for /proc/PID/auxv */ diff -puN mm/mmap.c~task-statm-reserved-fix mm/mmap.c --- 25/mm/mmap.c~task-statm-reserved-fix 2004-08-25 00:33:54.036595608 -0700 +++ 25-akpm/mm/mmap.c 2004-08-25 00:33:54.042594696 -0700 @@ -750,6 +750,8 @@ void __vm_stat_account(struct mm_struct mm->stack_vm += pages; if (flags & VM_EXEC) mm->exec_vm += pages; + if (flags & (VM_RESERVED|VM_IO)) + mm->reserved_vm += pages; } #endif /* CONFIG_PROC_FS */ _