From: Frederic Weisbecker <fweisbec@gmail.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 2/8] perf: Sanitize get_callchain_buffer()
Date: Thu, 1 Aug 2013 16:30:07 +0200 [thread overview]
Message-ID: <20130801143006.GI431@somewhere> (raw)
In-Reply-To: <20130801135102.GJ1032@krava.brq.redhat.com>
On Thu, Aug 01, 2013 at 03:51:02PM +0200, Jiri Olsa wrote:
> On Thu, Aug 01, 2013 at 03:42:28PM +0200, Frederic Weisbecker wrote:
> > On Thu, Aug 01, 2013 at 03:29:34PM +0200, Jiri Olsa wrote:
> > > On Tue, Jul 23, 2013 at 02:31:00AM +0200, Frederic Weisbecker wrote:
> > > SNIP
> > >
> > > > if (event->attach_state & PERF_ATTACH_TASK)
> > > > static_key_slow_inc(&perf_sched_events.key);
> > > > if (event->attr.mmap || event->attr.mmap_data)
> > > > @@ -6572,16 +6570,19 @@ done:
> > > > atomic_inc(&per_cpu(perf_branch_stack_events,
> > > > event->cpu));
> > > > }
> > > > - if (event->attr.sample_type & PERF_SAMPLE_CALLCHAIN) {
> > > > - err = get_callchain_buffers();
> > > > - if (err) {
> > > > - free_event(event);
> > > > - return ERR_PTR(err);
> > > > - }
> > > > - }
> > > > }
> > > >
> > > > return event;
> > > > +
> > > > +err_pmu:
> > > > + if (event->destroy)
> > > > + event->destroy(event);
> > > > +err_ns:
> > > > + if (event->ns)
> > > > + put_pid_ns(event->ns);
> > > > + kfree(event);
> > > > +
> > > > + return ERR_PTR(err);
> > >
> > > could we call __free_filter(event) here?
> >
> > Hmm, the filters are installed from ioctl time so there shouldn't be any yet. But there should be
> > an exception with inherited events. I fail to find where the filter is inherited though. Do
> > we actually inherit those?
>
> ouch.. last I checked was freeing filter before writing this... :)
>
> what I meant was the __free_event(event)
free_event() doesn't work either because we want several level of rollback depending
of where the error triggered:
+err_pmu:
if (event->destroy)
event->destroy(event);
+err_ns:
if (event->ns)
put_pid_ns(event->ns);
kfree(event);
return ERR_PTR(err)
If we fail after pmu init we want to call destroy, free pid ns and the event.
If we fail before the pmu init, we want to only free pid ns and the event, ...
_free_event() does the whole in any case, which is not what we want.
But...
OTOH it might work due to the if (event->destroy) and if (event->ns) before freeing the
resource associated.
So may be I can replace the labels with a single call to __free_event() after all as it
checks what needs to be freed. What do you think?
next prev parent reply other threads:[~2013-08-01 14:30 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 0:30 [PATCH 0/8] perf: Finer grained full dynticks handling Frederic Weisbecker
2013-07-23 0:30 ` [PATCH 1/8] perf: Fix branch stack refcount leak on callchain init failure Frederic Weisbecker
2013-07-31 8:55 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 2/8] perf: Sanitize get_callchain_buffer() Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2013-08-01 13:01 ` [PATCH 2/8] " Jiri Olsa
2013-08-01 13:28 ` Frederic Weisbecker
2013-08-01 13:32 ` Jiri Olsa
2013-08-01 13:49 ` Frederic Weisbecker
2013-08-01 13:54 ` Jiri Olsa
2013-08-01 13:57 ` Frederic Weisbecker
2013-08-01 13:29 ` Jiri Olsa
2013-08-01 13:42 ` Frederic Weisbecker
2013-08-01 13:51 ` Jiri Olsa
2013-08-01 14:30 ` Frederic Weisbecker [this message]
2013-07-23 0:31 ` [PATCH 3/8] perf: Gather event accounting code Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] perf: Factor out event accounting code to account_event()/__free_event() tip-bot for Frederic Weisbecker
2013-08-01 13:13 ` [PATCH 3/8] perf: Gather event accounting code Jiri Olsa
2013-08-01 13:30 ` Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 4/8] perf: Split per cpu " Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] perf: Split the per-cpu accounting part of the " tip-bot for Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 5/8] perf: Migrate per cpu event accounting Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 6/8] perf: Account freq events per cpu Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2013-08-01 12:46 ` [PATCH 6/8] " Jiri Olsa
2013-08-01 12:48 ` Jiri Olsa
2013-08-01 13:31 ` Peter Zijlstra
2013-08-01 13:35 ` Peter Zijlstra
2013-08-01 13:39 ` Jiri Olsa
2013-08-01 13:56 ` Peter Zijlstra
2013-08-01 13:55 ` Frederic Weisbecker
2013-08-01 14:03 ` Peter Zijlstra
2013-08-01 14:06 ` Peter Zijlstra
2013-08-01 14:21 ` Frederic Weisbecker
2013-08-01 14:40 ` Peter Zijlstra
2013-08-02 16:25 ` Frederic Weisbecker
2013-08-01 14:19 ` Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 7/8] perf: Finer grained full dynticks kick Frederic Weisbecker
2013-07-31 8:56 ` [tip:perf/core] perf: Implement finer " tip-bot for Frederic Weisbecker
2013-07-23 0:31 ` [PATCH 8/8] watchdog: Remove hack to make full dynticks working Frederic Weisbecker
2013-07-23 12:33 ` Don Zickus
2013-07-23 12:44 ` Frederic Weisbecker
2013-07-23 12:45 ` Peter Zijlstra
2013-07-31 8:57 ` [tip:perf/core] watchdog: Make it work under full dynticks tip-bot for Frederic Weisbecker
2013-07-25 9:59 ` [PATCH 0/8] perf: Finer grained full dynticks handling Peter Zijlstra
2013-07-25 14:02 ` Frederic Weisbecker
2013-07-25 16:29 ` Peter Zijlstra
2013-07-25 20:07 ` Frederic Weisbecker
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=20130801143006.GI431@somewhere \
--to=fweisbec@gmail.com \
--cc=acme@redhat.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox