All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] update v2 fix X86_64 procfs provide stack information for threads
@ 2009-11-03  9:22 Stefani Seibold
  2009-11-04 15:27 ` [tip:x86/urgent] x86, fs: Fix x86 procfs stack information for threads on 64-bit tip-bot for Stefani Seibold
  0 siblings, 1 reply; 2+ messages in thread
From: Stefani Seibold @ 2009-11-03  9:22 UTC (permalink / raw)
  To: linux-kernel, Andrew Morton, Americo Wang, Alexey Dobriyan,
	H. Peter Anvin, ThomasGleixner, Ingo Molnar

This patch fix two issues in the procfs stack information on X86_64
linux. 

The 32 bit loader compat_do_execve did not store stack start (this was
figured out by alexey).

The stack information on a X64_64 kernel always show 0 kbyte stack
usage, because of a miss implemented KSTK_ESP macro which always return
-1. The new implementation returns now the right value. 

The patch is against 2.6.32-rc5-git5.

Please apply this patch!

Greetings,
Stefani

Signed-off-by: Stefani Seibold <stefani@seibold.net>
---
 arch/x86/include/asm/processor.h |    2 +-
 arch/x86/kernel/process_64.c     |    6 ++++++
 fs/compat.c                      |    2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

--- x/linux-2.6.32-rc5/fs/compat.c	2009-10-16 02:41:50.000000000 +0200
+++ linux-2.6.32-rc5/fs/compat.c	2009-11-03 08:38:48.975196941 +0100
@@ -1532,6 +1532,8 @@
 	if (retval < 0)
 		goto out;
 
+	current->stack_start = current->mm->start_stack;
+
 	/* execve succeeded */
 	current->fs->in_exec = 0;
 	current->in_execve = 0;
--- x/linux-2.6.32-rc5/arch/x86/include/asm/processor.h	2009-10-16 02:41:50.000000000 +0200
+++ linux-2.6.32-rc5/arch/x86/include/asm/processor.h	2009-11-03 10:15:12.094769885 +0100
@@ -1000,7 +1000,7 @@
 #define thread_saved_pc(t)	(*(unsigned long *)((t)->thread.sp - 8))
 
 #define task_pt_regs(tsk)	((struct pt_regs *)(tsk)->thread.sp0 - 1)
-#define KSTK_ESP(tsk)		-1 /* sorry. doesn't work for syscall. */
+extern unsigned long KSTK_ESP(struct task_struct *task);
 #endif /* CONFIG_X86_64 */
 
 extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
--- x/linux-2.6.32-rc5/arch/x86/kernel/process_64.c	2009-10-16 02:41:50.000000000 +0200
+++ linux-2.6.32-rc5/arch/x86/kernel/process_64.c	2009-11-03 10:11:11.202957393 +0100
@@ -664,3 +664,9 @@
 	return do_arch_prctl(current, code, addr);
 }
 
+unsigned long KSTK_ESP(struct task_struct *task)
+{
+	return (test_tsk_thread_flag(task, TIF_IA32)) ? \
+			(task_pt_regs(task)->sp) : \
+			((task)->thread.usersp);
+}



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-11-04 15:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-03  9:22 [PATCH] update v2 fix X86_64 procfs provide stack information for threads Stefani Seibold
2009-11-04 15:27 ` [tip:x86/urgent] x86, fs: Fix x86 procfs stack information for threads on 64-bit tip-bot for Stefani Seibold

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.