<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Mikael Pettersson &lt;mikpe@csd.uu.se&gt;

- s/perfctr_copy_thread(&amp;p-&gt;thread)/perfctr_copy_task(p, regs)/g
  Needed to access to the task struct (for setting owner in new
  perfctr state) and for accessing regs (for checking user_mode(regs))
- Add perfctr_release_task() callback in kernel/exit.c

Signed-off-by: Mikael Pettersson &lt;mikpe@csd.uu.se&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
---

 25-akpm/arch/i386/kernel/process.c   |    2 +-
 25-akpm/arch/ppc/kernel/process.c    |    2 +-
 25-akpm/arch/x86_64/kernel/process.c |    2 +-
 25-akpm/kernel/exit.c                |    2 ++
 4 files changed, 5 insertions(+), 3 deletions(-)

diff -puN arch/i386/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/i386/kernel/process.c
--- 25/arch/i386/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-12-03 20:56:27.867523680 -0800
+++ 25-akpm/arch/i386/kernel/process.c	2004-12-03 20:56:27.875522464 -0800
@@ -386,7 +386,7 @@ int copy_thread(int nr, unsigned long cl
 	savesegment(fs,p-&gt;thread.fs);
 	savesegment(gs,p-&gt;thread.gs);
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	tsk = current;
 	if (unlikely(NULL != tsk-&gt;thread.io_bitmap_ptr)) {
diff -puN arch/ppc/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/ppc/kernel/process.c
--- 25/arch/ppc/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-12-03 20:56:27.869523376 -0800
+++ 25-akpm/arch/ppc/kernel/process.c	2004-12-03 20:56:27.876522312 -0800
@@ -462,7 +462,7 @@ copy_thread(int nr, unsigned long clone_
 
 	p-&gt;thread.last_syscall = -1;
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	return 0;
 }
diff -puN arch/x86_64/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/x86_64/kernel/process.c
--- 25/arch/x86_64/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-12-03 20:56:27.870523224 -0800
+++ 25-akpm/arch/x86_64/kernel/process.c	2004-12-03 20:56:27.876522312 -0800
@@ -380,7 +380,7 @@ int copy_thread(int nr, unsigned long cl
 	asm("movl %%es,%0" : "=m" (p-&gt;thread.es));
 	asm("movl %%ds,%0" : "=m" (p-&gt;thread.ds));
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	if (unlikely(me-&gt;thread.io_bitmap_ptr != NULL)) { 
 		p-&gt;thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
diff -puN kernel/exit.c~perfctr-inheritance-2-3-kernel-updates kernel/exit.c
--- 25/kernel/exit.c~perfctr-inheritance-2-3-kernel-updates	2004-12-03 20:56:27.872522920 -0800
+++ 25-akpm/kernel/exit.c	2004-12-03 20:56:27.878522008 -0800
@@ -25,6 +25,7 @@
 #include &lt;linux/mount.h&gt;
 #include &lt;linux/proc_fs.h&gt;
 #include &lt;linux/mempolicy.h&gt;
+#include &lt;linux/perfctr.h&gt;
 #include &lt;linux/syscalls.h&gt;
 
 #include &lt;asm/uaccess.h&gt;
@@ -91,6 +92,7 @@ repeat: 
 		zap_leader = (leader-&gt;exit_signal == -1);
 	}
 
+	perfctr_release_task(p);
 	sched_exit(p);
 	write_unlock_irq(&amp;tasklist_lock);
 	spin_unlock(&amp;p-&gt;proc_lock);
_
</pre></body></html>