<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: William Lee Irwin III &lt;wli@holomorphy.com&gt;

Not all binfmts page align -&gt;end_code and -&gt;start_code, so the task_mmu
statistics calculations need to perform this alignment themselves.

Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
---

 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-&gt;total_vm - mm-&gt;shared_vm - mm-&gt;stack_vm;
-	text = (mm-&gt;end_code - mm-&gt;start_code) &gt;&gt; 10;
+	text = (PAGE_ALIGN(mm-&gt;end_code) - (mm-&gt;start_code &amp; PAGE_MASK)) &gt;&gt; 10;
 	lib = (mm-&gt;exec_vm &lt;&lt; (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-&gt;shared_vm;
-	*text = (mm-&gt;end_code - mm-&gt;start_code) &gt;&gt; PAGE_SHIFT;
+	*text = (PAGE_ALIGN(mm-&gt;end_code) - (mm-&gt;start_code &amp; PAGE_MASK))
+								&gt;&gt; PAGE_SHIFT;
 	*data = mm-&gt;total_vm - mm-&gt;shared_vm - *text;
 	*resident = mm-&gt;rss;
 	return mm-&gt;total_vm;
_
</pre></body></html>