From: Robin Holt <holt@sgi.com>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Robin Holt <holt@sgi.com>, Stefani Seibold <stefani@seibold.net>,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Michal Simek <monstr@monstr.eu>, Ingo Molnar <mingo@elte.hu>
Subject: [Patch] Revert commit d899bf7b and its fixup commits -V1.
Date: Wed, 28 Apr 2010 10:21:18 -0500 [thread overview]
Message-ID: <20100428152118.GK5677@sgi.com> (raw)
In-Reply-To: <20100428094516.GG5677@sgi.com>
Originally, commit d899bf7b attempted to introduce a new feature for
showing where the threadstack was located and how many pages are being
utilized by the stack.
Commit c44972f1 was applied to fix the NO_MMU case.
Commit 89240ba0 was applied to fix a bug in ia32 executables being loaded.
Commit 9ebd4eba7 was applied to fix a bug which had kernel threads
printing a userland stack address.
Commit 1306d603f was then applied to revert the stack pages being used
to solve a significant performance regression.
This patch nearly undoes the effect of all these patches.
The reason for reverting these is it provides an unusable value in
field 28. For x86_64, a fork will result in the task->stack_start
value being updated to the current user top of stack and not the stack
start address. This unpredictability of the stack_start value makes
it worthless. That includes the intended use of showing how much stack
space a thread has.
Other architectures will get different values. As an example, ia64
gets 0. The do_fork() and copy_process() functions appear to treat the
stack_start and stack_size parameters as architecture specific.
I only partially reverted c44972f1. If I had completely reverted it,
I would have had to change mm/Makefile only build pagewalk.o when
CONFIG_PROC_PAGE_MONITOR is configured. Since I could not test the
builds without significant effort, I decided to not change mm/Makefile.
I only partially reverted 89240ba0. I left the KSTK_ESP() change in
place as that seemed worthwhile.
Signed-off-by: Robin Holt <holt@sgi.com>
Cc: Stefani Seibold <stefani@seibold.net>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/filesystems/proc.txt | 3 +--
fs/compat.c | 2 --
fs/exec.c | 2 --
fs/proc/array.c | 3 +--
fs/proc/task_mmu.c | 19 -------------------
include/linux/sched.h | 1 -
kernel/fork.c | 2 --
7 files changed, 2 insertions(+), 30 deletions(-)
Index: revert_stack_start_V1/Documentation/filesystems/proc.txt
===================================================================
--- revert_stack_start_V1.orig/Documentation/filesystems/proc.txt 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/Documentation/filesystems/proc.txt 2010-04-28 09:45:39.543654029 -0500
@@ -316,7 +316,7 @@ address perms offset dev in
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
0804a000-0806b000 rw-p 00000000 00:00 0 [heap]
a7cb1000-a7cb2000 ---p 00000000 00:00 0
-a7cb2000-a7eb2000 rw-p 00000000 00:00 0 [threadstack:001ff4b4]
+a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
a7eb3000-a7ed5000 rw-p 00000000 00:00 0
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
@@ -352,7 +352,6 @@ is not associated with a file:
[stack] = the stack of the main process
[vdso] = the "virtual dynamic shared object",
the kernel system call handler
- [threadstack:xxxxxxxx] = the stack of the thread, xxxxxxxx is the stack size
or if empty, the mapping is anonymous.
Index: revert_stack_start_V1/fs/compat.c
===================================================================
--- revert_stack_start_V1.orig/fs/compat.c 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/fs/compat.c 2010-04-28 09:45:39.547653405 -0500
@@ -1531,8 +1531,6 @@ int compat_do_execve(char * filename,
if (retval < 0)
goto out;
- current->stack_start = current->mm->start_stack;
-
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
Index: revert_stack_start_V1/fs/exec.c
===================================================================
--- revert_stack_start_V1.orig/fs/exec.c 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/fs/exec.c 2010-04-28 09:45:39.575649084 -0500
@@ -1387,8 +1387,6 @@ int do_execve(char * filename,
if (retval < 0)
goto out;
- current->stack_start = current->mm->start_stack;
-
/* execve succeeded */
current->fs->in_exec = 0;
current->in_execve = 0;
Index: revert_stack_start_V1/fs/proc/array.c
===================================================================
--- revert_stack_start_V1.orig/fs/proc/array.c 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/fs/proc/array.c 2010-04-28 09:45:39.611650788 -0500
@@ -81,7 +81,6 @@
#include <linux/pid_namespace.h>
#include <linux/ptrace.h>
#include <linux/tracehook.h>
-#include <linux/swapops.h>
#include <asm/pgtable.h>
#include <asm/processor.h>
@@ -495,7 +494,7 @@ static int do_task_stat(struct seq_file
rsslim,
mm ? mm->start_code : 0,
mm ? mm->end_code : 0,
- (permitted && mm) ? task->stack_start : 0,
+ (permitted && mm) ? mm->start_stack : 0,
esp,
eip,
/* The signal information here is obsolete.
Index: revert_stack_start_V1/fs/proc/task_mmu.c
===================================================================
--- revert_stack_start_V1.orig/fs/proc/task_mmu.c 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/fs/proc/task_mmu.c 2010-04-28 09:45:39.643649777 -0500
@@ -247,25 +247,6 @@ static void show_map_vma(struct seq_file
} else if (vma->vm_start <= mm->start_stack &&
vma->vm_end >= mm->start_stack) {
name = "[stack]";
- } else {
- unsigned long stack_start;
- struct proc_maps_private *pmp;
-
- pmp = m->private;
- stack_start = pmp->task->stack_start;
-
- if (vma->vm_start <= stack_start &&
- vma->vm_end >= stack_start) {
- pad_len_spaces(m, len);
- seq_printf(m,
- "[threadstack:%08lx]",
-#ifdef CONFIG_STACK_GROWSUP
- vma->vm_end - stack_start
-#else
- stack_start - vma->vm_start
-#endif
- );
- }
}
} else {
name = "[vdso]";
Index: revert_stack_start_V1/include/linux/sched.h
===================================================================
--- revert_stack_start_V1.orig/include/linux/sched.h 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/include/linux/sched.h 2010-04-28 09:45:39.691648704 -0500
@@ -1497,7 +1497,6 @@ struct task_struct {
/* bitmask of trace recursion */
unsigned long trace_recursion;
#endif /* CONFIG_TRACING */
- unsigned long stack_start;
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
struct memcg_batch_info {
int do_batch; /* incremented when batch uncharge started */
Index: revert_stack_start_V1/kernel/fork.c
===================================================================
--- revert_stack_start_V1.orig/kernel/fork.c 2010-04-28 09:45:35.711399569 -0500
+++ revert_stack_start_V1/kernel/fork.c 2010-04-28 09:45:39.715648886 -0500
@@ -1114,8 +1114,6 @@ static struct task_struct *copy_process(
p->bts = NULL;
- p->stack_start = stack_start;
-
/* Perform scheduler related setup. Assign this task to a CPU. */
sched_fork(p, clone_flags);
prev parent reply other threads:[~2010-04-28 15:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-27 18:53 Weirdness in /proc/<pid>/maps and /proc/<pid>/stat Robin Holt
2010-04-27 21:18 ` Stefani Seibold
2010-04-27 23:22 ` Robin Holt
2010-04-28 3:19 ` KOSAKI Motohiro
2010-04-28 9:45 ` Robin Holt
2010-04-28 15:21 ` Robin Holt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100428152118.GK5677@sgi.com \
--to=holt@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=monstr@monstr.eu \
--cc=stefani@seibold.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.