From: Arianna Avanzini <avanzini.arianna@gmail.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: rostedt@goodmis.org, mingo@redhat.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC] trace, blktrace: remove trace from running list only if trace is running
Date: Mon, 10 Nov 2014 11:40:32 +0100 [thread overview]
Message-ID: <20141110104031.GA941@gmail.com> (raw)
In-Reply-To: <8761env4vf.fsf@sejong.aot.lge.com>
On Mon, Nov 10, 2014 at 05:25:56PM +0900, Namhyung Kim wrote:
> Hi Arianna,
Hi Namhyung,
thank you for replying.
>
> On Sat, 8 Nov 2014 16:14:40 +0100, Arianna Avanzini wrote:
> > Currently, blktrace can be started/stopped via its ioctl-based interface
> > (used by the userspace blktrace tool) or via its ftrace interface. The
> > function blk_trace_remove_queue(), called each time an "enable" tunable
> > of the ftrace interface transitions to zero, removes unconditionally the
> > trace from the running list, even if its state is not Blktrace_running.
> > In fact, the state of a blk_trace is modified only by the ioctl-based
> > interface, and a blk_trace is added to the running list only when its
> > state transitions from Blktrace_setup or Blktrace_stopped to
> > Blktrace_running. If the ioctl-based interface is not being used, the
> > state of the blk_trace is undefined.
> > In this case, using the sysfs tunable to stop a trace would trigger a
> > removal of a blk_trace from the running list while it is not on such a
> > list, leading to a null pointer dereference. This commit attempts to fix
> > the issue by letting the blk_trace_remove_queue() function remove the
> > blk_trace from the running list only if its state is Blktrace_running.
>
> What about just getting rid of the list_del()? blk_trace_setup_queue()
> doesn't add it to running_trace_list and I think we should prevent mix
> of ioctl and sysfs usage somehow..
>
And blk_trace_remove_queue() is used only by the sysfs interface, you're
right. I'm re-sending the patch with your comment applied.
Thank you,
Arianna
> Thanks,
> Namhyung
>
>
> >
> > Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
> > ---
> > kernel/trace/blktrace.c | 8 +++++---
> > 1 file changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
> > index c1bd4ad..f58b617 100644
> > --- a/kernel/trace/blktrace.c
> > +++ b/kernel/trace/blktrace.c
> > @@ -1493,9 +1493,11 @@ static int blk_trace_remove_queue(struct request_queue *q)
> > if (atomic_dec_and_test(&blk_probes_ref))
> > blk_unregister_tracepoints();
> >
> > - spin_lock_irq(&running_trace_lock);
> > - list_del(&bt->running_list);
> > - spin_unlock_irq(&running_trace_lock);
> > + if (bt->trace_state == Blktrace_running) {
> > + spin_lock_irq(&running_trace_lock);
> > + list_del(&bt->running_list);
> > + spin_unlock_irq(&running_trace_lock);
> > + }
> > blk_trace_free(bt);
> > return 0;
> > }
--
/*
* Arianna Avanzini
* avanzini.arianna@gmail.com
* http://ava.webhop.me
*/
next prev parent reply other threads:[~2014-11-10 10:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-08 15:14 [PATCH RFC] trace, blktrace: remove trace from running list only if trace is running Arianna Avanzini
2014-11-10 8:25 ` Namhyung Kim
2014-11-10 10:40 ` Arianna Avanzini [this message]
2014-11-10 10:40 ` [PATCH RFC v2] trace, blktrace: don't let the sysfs interface remove trace from running list Arianna Avanzini
2014-11-14 2:07 ` Steven Rostedt
2014-12-09 22:00 ` Jens Axboe
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=20141110104031.GA941@gmail.com \
--to=avanzini.arianna@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
/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.