All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>,
	Anton Arapov <anton@redhat.com>, Frank Eigler <fche@redhat.com>,
	Josh Stone <jistone@redhat.com>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
	"Suzuki K. Poulose" <suzuki@in.ibm.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] uprobes: Fully initialize uprobe_trace_consumer before uprobe_register()
Date: Mon, 28 Jan 2013 17:39:26 +0530	[thread overview]
Message-ID: <20130128120926.GC29865@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130127194837.GA25402@redhat.com>

* Oleg Nesterov <oleg@redhat.com> [2013-01-27 20:48:37]:

> probe_event_enable() does uprobe_register() and only after that sets
> utc->tu and tu->consumer/flags. This can race with uprobe_dispatcher()
> which can miss these assignments or see them out of order. Nothing
> really bad can happen, but this doesn't look clean/safe.
> 
> And this does not allow to use uprobe_consumer->filter() we are going
> to add, it is called by uprobe_register() and it needs utc->tu.
> 
> Change this code to initialize everything before uprobe_register(), and
> reset tu->consumer/flags if it fails. We can't race with event_disable(),
> the caller holds event_mutex, and if we could the code would be wrong
> anyway.
> 
> In fact I think uprobe_trace_consumer should die, it buys nothing but
> complicate the code. We can simply add uprobe_consumer into trace_uprobe.
> 
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>

Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>

> ---
>  kernel/trace/trace_uprobe.c |   13 +++++++------
>  1 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
> index 53afabe..94d4ea2 100644
> --- a/kernel/trace/trace_uprobe.c
> +++ b/kernel/trace/trace_uprobe.c
> @@ -552,17 +552,18 @@ static int probe_event_enable(struct trace_uprobe *tu, int flag)
>  		return -EINTR;
> 
>  	utc->cons.handler = uprobe_dispatcher;
> +	utc->tu = tu;
> +	tu->consumer = utc;
> +	tu->flags |= flag;
> +
>  	ret = uprobe_register(tu->inode, tu->offset, &utc->cons);
>  	if (ret) {
> +		tu->consumer = NULL;
> +		tu->flags &= ~flag;
>  		kfree(utc);
> -		return ret;
>  	}
> 
> -	tu->flags |= flag;
> -	utc->tu = tu;
> -	tu->consumer = utc;
> -
> -	return 0;
> +	return ret;
>  }
> 
>  static void probe_event_disable(struct trace_uprobe *tu, int flag)
> -- 
> 1.5.5.1
> 

-- 
Thanks and Regards
Srikar Dronamraju


  reply	other threads:[~2013-01-28 12:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-27 19:48 [PATCH 0/4] uprobes: Teach debug/tracing/uprobe_events to do the filtering Oleg Nesterov
2013-01-27 19:48 ` [PATCH 1/4] uprobes: Fix dentry/mount leak in create_trace_uprobe() Oleg Nesterov
2013-01-28 12:08   ` Srikar Dronamraju
2013-01-27 19:48 ` [PATCH 2/4] uprobes: Fully initialize uprobe_trace_consumer before uprobe_register() Oleg Nesterov
2013-01-28 12:09   ` Srikar Dronamraju [this message]
2013-01-27 19:48 ` [PATCH 3/4] uprobes: Teach tracing/uprobe_events to accept pid=TGID argument Oleg Nesterov
2013-01-27 19:48 ` [PATCH 4/4] uprobes: Teach uprobe_trace_consumer to support the pre-filtering Oleg Nesterov
2013-01-31 17:04 ` [PATCH 0/4] uprobes: Teach debug/tracing/uprobe_events to do the filtering Oleg Nesterov

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=20130128120926.GC29865@linux.vnet.ibm.com \
    --to=srikar@linux.vnet.ibm.com \
    --cc=anton@redhat.com \
    --cc=fche@redhat.com \
    --cc=jistone@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@elte.hu \
    --cc=oleg@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=suzuki@in.ibm.com \
    /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.