Messages in this thread | | | Date | Fri, 15 Oct 2010 20:14:52 +0200 | From | Frederic Weisbecker <> | Subject | Re: [RFC][PATCH 1/7] perf: Fix task refcount issues |
| |
On Thu, Oct 14, 2010 at 10:34:05PM +0200, Peter Zijlstra wrote: > Currently it looks like find_lively_task_by_vpid() takes a task ref > and relies on find_get_context() to drop it. > > The problem is that perf_event_create_kernel_counter() shouldn't be > dropping task refs. > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > Cc: Frederic Weisbecker <fweisbec@gmail.com> > Cc: Matt Helsley <matthltc@us.ibm.com>
Looks good.
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
> --- > kernel/perf_event.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > Index: linux-2.6/kernel/perf_event.c > =================================================================== > --- linux-2.6.orig/kernel/perf_event.c > +++ linux-2.6/kernel/perf_event.c > @@ -2124,11 +2124,9 @@ find_get_context(struct pmu *pmu, struct > } > } > > - put_task_struct(task); > return ctx; > > errout: > - put_task_struct(task); > return ERR_PTR(err); > } > > @@ -5536,7 +5534,7 @@ SYSCALL_DEFINE5(perf_event_open, > ctx = find_get_context(pmu, task, cpu); > if (IS_ERR(ctx)) { > err = PTR_ERR(ctx); > - goto err_group_fd; > + goto err_task; > } > > /* > @@ -5632,6 +5630,9 @@ SYSCALL_DEFINE5(perf_event_open, > > err_context: > put_ctx(ctx); > +err_task: > + if (task) > + put_task_struct(task); > err_group_fd: > fput_light(group_file, fput_needed); > free_event(event); > >
| |