From: "Török Edwin" <edwintorok@gmail.com>
To: mingo@elte.hu
Cc: srostedt@redhat.com, a.p.zijlstra@chello.nl,
sandmann@daimi.au.dk, linux-kernel@vger.kernel.org,
viro@ZenIV.linux.org.uk, "Török Edwin" <edwintorok@gmail.com>
Subject: [PATCH 1/3] tracing/stack-tracer: fix style issues
Date: Sun, 23 Nov 2008 12:39:06 +0200 [thread overview]
Message-ID: <1227436748-17075-1-git-send-email-edwintorok@gmail.com> (raw)
In-Reply-To: <20081123085310.GF30453@elte.hu>
Signed-off-by: Török Edwin <edwintorok@gmail.com>
---
arch/x86/kernel/stacktrace.c | 51 +++++++++++++++++++++++------------------
include/linux/stacktrace.h | 2 +-
kernel/trace/trace.c | 7 ++---
3 files changed, 33 insertions(+), 27 deletions(-)
diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c
index b151530..10786af 100644
--- a/arch/x86/kernel/stacktrace.c
+++ b/arch/x86/kernel/stacktrace.c
@@ -89,7 +89,7 @@ EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
struct stack_frame {
const void __user *next_fp;
- unsigned long return_address;
+ unsigned long ret_addr;
};
static int copy_stack_frame(const void __user *fp, struct stack_frame *frame)
@@ -108,33 +108,40 @@ static int copy_stack_frame(const void __user *fp, struct stack_frame *frame)
return ret;
}
+static inline void __save_stack_trace_user(struct stack_trace *trace)
+{
+ const struct pt_regs *regs = task_pt_regs(current);
+ const void __user *fp = (const void __user *)regs->bp;
+
+ if (trace->nr_entries < trace->max_entries)
+ trace->entries[trace->nr_entries++] = regs->ip;
+
+ while (trace->nr_entries < trace->max_entries) {
+ struct stack_frame frame;
+
+ frame.next_fp = NULL;
+ frame.ret_addr = 0;
+ if (!copy_stack_frame(fp, &frame))
+ break;
+ if ((unsigned long)fp < regs->sp)
+ break;
+ if (frame.ret_addr) {
+ trace->entries[trace->nr_entries++] =
+ frame.ret_addr;
+ }
+ if (fp == frame.next_fp)
+ break;
+ fp = frame.next_fp;
+ }
+}
+
void save_stack_trace_user(struct stack_trace *trace)
{
/*
* Trace user stack if we are not a kernel thread
*/
if (current->mm) {
- const struct pt_regs *regs = task_pt_regs(current);
- const void __user *fp = (const void __user *)regs->bp;
-
- if (trace->nr_entries < trace->max_entries)
- trace->entries[trace->nr_entries++] = regs->ip;
-
- while (trace->nr_entries < trace->max_entries) {
- struct stack_frame frame;
- frame.next_fp = NULL;
- frame.return_address = 0;
- if (!copy_stack_frame(fp, &frame))
- break;
- if ((unsigned long)fp < regs->sp)
- break;
- if (frame.return_address)
- trace->entries[trace->nr_entries++] =
- frame.return_address;
- if (fp == frame.next_fp)
- break;
- fp = frame.next_fp;
- }
+ __save_stack_trace_user(trace);
}
if (trace->nr_entries < trace->max_entries)
trace->entries[trace->nr_entries++] = ULONG_MAX;
diff --git a/include/linux/stacktrace.h b/include/linux/stacktrace.h
index 68de514..fd42d68 100644
--- a/include/linux/stacktrace.h
+++ b/include/linux/stacktrace.h
@@ -25,7 +25,7 @@ extern void save_stack_trace_user(struct stack_trace *trace);
#else
# define save_stack_trace(trace) do { } while (0)
# define save_stack_trace_tsk(tsk, trace) do { } while (0)
-# define save_stack_trace_user(trace) do { } while (0)
+# define save_stack_trace_user(trace) do { } while (0)
# define print_stack_trace(trace, spaces) do { } while (0)
#endif
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 62776b7..dedf35f 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -948,9 +948,9 @@ static void ftrace_trace_userstack(struct trace_array *tr,
struct trace_array_cpu *data,
unsigned long flags, int pc)
{
+ struct ring_buffer_event *event;
struct userstack_entry *entry;
struct stack_trace trace;
- struct ring_buffer_event *event;
unsigned long irq_flags;
if (!(trace_flags & TRACE_ITER_USERSTACKTRACE))
@@ -1471,8 +1471,7 @@ static inline int seq_print_user_ip(struct trace_seq *s, struct mm_struct *mm,
if (file) {
ret = trace_seq_path(s, &file->f_path);
if (ret)
- ret = trace_seq_printf(s, "[+0x%lx]",
- ip - vmstart);
+ ret = trace_seq_printf(s, "[+0x%lx]", ip - vmstart);
}
if (ret && ((sym_flags & TRACE_ITER_SYM_ADDR) || !file))
ret = trace_seq_printf(s, " <" IP_FMT ">", ip);
@@ -1485,7 +1484,7 @@ seq_print_userip_objs(const struct userstack_entry *entry, struct trace_seq *s,
{
struct mm_struct *mm = NULL;
int ret = 1;
- unsigned i;
+ unsigned int i;
if (trace_flags & TRACE_ITER_SYM_USEROBJ) {
struct task_struct *task;
--
1.5.6.5
next prev parent reply other threads:[~2008-11-23 10:39 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-22 11:28 [PATCH 0/2] tracing: userspace stacktraces Török Edwin
2008-11-22 11:28 ` [PATCH 1/2] tracing: add support for userspace stacktraces in tracing/iter_ctrl Török Edwin
2008-11-23 8:37 ` Ingo Molnar
2008-11-23 10:39 ` Török Edwin [this message]
2008-11-23 10:39 ` [PATCH 3/3] tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT Török Edwin
2008-11-22 11:28 ` [PATCH 2/2] tracing: identify which executable object the userspace address belongs to Török Edwin
2008-11-23 8:47 ` [PATCH] vfs, seqfile: make mangle_path() global Ingo Molnar
2008-11-23 21:06 ` Randy Dunlap
2008-11-23 21:24 ` [PATCH] fix comment style on mangle_path Török Edwin
2008-11-23 21:36 ` Ingo Molnar
2008-11-28 10:05 ` [PATCH] vfs, seqfile: make mangle_path() global Al Viro
2008-11-28 17:08 ` Ingo Molnar
2008-11-23 8:53 ` [PATCH 2/2] tracing: identify which executable object the userspace address belongs to Ingo Molnar
2008-11-23 10:39 ` [PATCH 2/3] tracing/stack-tracer: fix locking Török Edwin
2008-11-23 10:52 ` Ingo Molnar
2008-11-23 10:59 ` Török Edwin
2008-11-23 11:01 ` Ingo Molnar
2008-11-23 11:04 ` Török Edwin
2008-11-23 11:07 ` Ingo Molnar
2008-11-23 11:08 ` [PATCH] tracing/stack-tracer: avoid races accessing file Török Edwin
2008-11-23 11:20 ` Ingo Molnar
2008-11-25 14:40 ` [PATCH 2/2] tracing: identify which executable object the userspace address belongs to Frank Ch. Eigler
2008-11-26 9:59 ` Török Edwin
2008-11-27 10:41 ` Peter Zijlstra
2008-11-27 12:48 ` Frank Ch. Eigler
2008-11-27 13:02 ` Peter Zijlstra
2008-11-27 13:03 ` Török Edwin
2008-11-27 14:10 ` Ingo Molnar
2008-11-27 14:27 ` Török Edwin
2008-11-27 14:51 ` Ingo Molnar
2008-12-09 19:49 ` Török Edwin
2008-11-23 8:26 ` [PATCH 0/2] tracing: userspace stacktraces Ingo Molnar
2008-11-23 9:24 ` Török Edwin
2008-11-23 9:30 ` Ingo Molnar
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=1227436748-17075-1-git-send-email-edwintorok@gmail.com \
--to=edwintorok@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sandmann@daimi.au.dk \
--cc=srostedt@redhat.com \
--cc=viro@ZenIV.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome