From: Frederic Weisbecker <fweisbec@gmail.com>
To: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@elte.hu>,
lkml <linux-kernel@vger.kernel.org>,
systemtap <systemtap@sources.redhat.com>,
DLE <dle-develop@lists.sourceforge.net>,
Thomas Gleixner <tglx@linutronix.de>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Mike Galbraith <efault@gmx.de>, Paul Mackerras <paulus@samba.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Christoph Hellwig <hch@infradead.org>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Jim Keniston <jkenisto@us.ibm.com>,
"Frank Ch. Eigler" <fche@redhat.com>
Subject: Re: [PATCH tracing/kprobes v3 4/7] tracing/kprobes: Avoid field name confliction
Date: Mon, 12 Oct 2009 19:37:54 +0200 [thread overview]
Message-ID: <20091012173752.GB5059@nowhere> (raw)
In-Reply-To: <20091007222807.1684.26880.stgit@dhcp-100-2-132.bos.redhat.com>
On Wed, Oct 07, 2009 at 06:28:07PM -0400, Masami Hiramatsu wrote:
> Check whether the argument name is conflict with other field names.
>
> Changes in v3:
> - Check strcmp() == 0 instead of !strcmp().
>
> Changes in v2:
> - Add common_lock_depth to reserved name list.
>
> Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Mike Galbraith <efault@gmx.de>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Christoph Hellwig <hch@infradead.org>
> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
> Cc: Jim Keniston <jkenisto@us.ibm.com>
> Cc: Frank Ch. Eigler <fche@redhat.com>
> ---
>
> kernel/trace/trace_kprobe.c | 65 +++++++++++++++++++++++++++++++++++--------
> 1 files changed, 53 insertions(+), 12 deletions(-)
>
> diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
> index 030f28c..e3b824a 100644
> --- a/kernel/trace/trace_kprobe.c
> +++ b/kernel/trace/trace_kprobe.c
> @@ -38,6 +38,25 @@
> #define MAX_EVENT_NAME_LEN 64
> #define KPROBE_EVENT_SYSTEM "kprobes"
>
> +/* Reserved field names */
> +#define FIELD_STRING_IP "ip"
> +#define FIELD_STRING_NARGS "nargs"
> +#define FIELD_STRING_RETIP "ret_ip"
> +#define FIELD_STRING_FUNC "func"
> +
> +const char *reserved_field_names[] = {
> + "common_type",
> + "common_flags",
> + "common_preempt_count",
> + "common_pid",
> + "common_tgid",
> + "common_lock_depth",
> + FIELD_STRING_IP,
> + FIELD_STRING_NARGS,
> + FIELD_STRING_RETIP,
> + FIELD_STRING_FUNC,
> +};
> +
> /* currently, trace_kprobe only supports X86. */
>
> struct fetch_func {
> @@ -537,6 +556,20 @@ static int parse_probe_arg(char *arg, struct fetch_func *ff, int is_return)
> return ret;
> }
>
> +/* Return 1 if name is reserved or already used by another argument */
> +static int conflict_field_name(const char *name,
> + struct probe_arg *args, int narg)
> +{
> + int i;
> + for (i = 0; i < ARRAY_SIZE(reserved_field_names); i++)
> + if (strcmp(reserved_field_names[i], name) == 0)
> + return 1;
> + for (i = 0; i < narg; i++)
> + if (strcmp(args[i].name, name) == 0)
> + return 1;
> + return 0;
> +}
> +
> static int create_trace_probe(int argc, char **argv)
> {
> /*
> @@ -637,6 +670,12 @@ static int create_trace_probe(int argc, char **argv)
> *arg++ = '\0';
> else
> arg = argv[i];
> +
> + if (conflict_field_name(argv[i], tp->args, i)) {
> + ret = -EINVAL;
The conflict issue might not be obvious for a user desperately trying to set
a kprobe. Even for other failcases, it might not be obvious (blacklisted
symbols, syntax errors...)
May be should you improve the error granularity and print a KERN_DEBUG
message?
Thanks.
next prev parent reply other threads:[~2009-10-12 17:38 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-07 22:27 [PATCH tracing/kprobes v3 0/7] tracing/kprobes, perf: perf probe support take 3 Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 1/7] tracing/kprobes: Add $ prefix to special variables Masami Hiramatsu
2009-10-12 19:33 ` Masami Hiramatsu
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 2/7] tracing/kprobes: Remove '$ra' special variable Masami Hiramatsu
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 3/7] tracing/kprobes: Rename special variables Masami Hiramatsu
2009-10-12 21:20 ` Masami Hiramatsu
2009-10-12 21:28 ` Frederic Weisbecker
2009-10-12 21:36 ` Masami Hiramatsu
2009-10-12 21:34 ` Frederic Weisbecker
2009-10-17 10:03 ` [tip:perf/probes] tracing/kprobes: Make special variable names more self-explainable tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 4/7] tracing/kprobes: Avoid field name confliction Masami Hiramatsu
2009-10-12 10:10 ` Frédéric Weisbecker
2009-10-12 10:12 ` Frédéric Weisbecker
2009-10-12 17:37 ` Frederic Weisbecker [this message]
2009-10-12 19:13 ` Masami Hiramatsu
2009-10-12 19:48 ` Frederic Weisbecker
2009-10-12 20:22 ` Masami Hiramatsu
2009-10-12 21:16 ` Frederic Weisbecker
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 5/7] tracing/kprobes: Rename fixed field name Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] tracing/kprobes: Robustify fixed field names against variable field names conflicts tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for kprobe-event setup helper Masami Hiramatsu
2009-10-08 21:17 ` Masami Hiramatsu
2009-10-08 21:17 ` [PATCH tracing/kprobes v4] " Masami Hiramatsu
2009-10-12 10:31 ` Frédéric Weisbecker
2009-10-12 14:40 ` Masami Hiramatsu
2009-10-12 18:03 ` Frederic Weisbecker
2009-10-12 18:07 ` Frederic Weisbecker
2009-10-12 19:00 ` Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] perf: Add perf probe subcommand, a " tip-bot for Masami Hiramatsu
2009-10-08 21:17 ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for " Frederic Weisbecker
2009-10-12 19:03 ` Frederic Weisbecker
2009-10-12 19:07 ` Ingo Molnar
2009-10-12 19:31 ` Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 7/7] perf: perf probe command supports without libdwarf Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] perf probe: Add perf probe command support " tip-bot for Masami Hiramatsu
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=20091012173752.GB5059@nowhere \
--to=fweisbec@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=ananth@in.ibm.com \
--cc=dle-develop@lists.sourceforge.net \
--cc=efault@gmx.de \
--cc=fche@redhat.com \
--cc=hch@infradead.org \
--cc=jkenisto@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=rostedt@goodmis.org \
--cc=systemtap@sources.redhat.com \
--cc=tglx@linutronix.de \
/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