Re: [PATCH 1/2] tracing: Check total refcount before releasing bufs in profile_enable failure

From: Paul Mackerras
Date: Tue Oct 06 2009 - 23:09:53 EST


Frederic Weisbecker writes:

> When we call the profile_enable() callback of an event, we release the
> shared perf event tracing buffers unconditionnaly in the failure path.
> This is wrong because there may be other users of these. Then check the
> total refcount before doing this.

[snip]

> - kfree(trace_profile_buf_nmi);
> fail_buf_nmi:
> - kfree(trace_profile_buf);
> + if (!total_profile_count) {

A small problem here: total_profile_count will be 1, not 0, in the
case where we need to free...

> + kfree(trace_profile_buf_nmi);
> + kfree(trace_profile_buf);
> + trace_profile_buf_nmi = NULL;
> + trace_profile_buf = NULL;
> + }
> fail_buf:
> - total_profile_count--;

since we don't decrement total_profile_count until here.

Paul.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/