Re: [PATCH] tracing/filters: Defer pred allocation, fix memory leak

Frederic Weisbecker
2009-09-01T09:32:06Z

On Tue, Sep 01, 2009 at 01:31:38PM +0800, Li Zefan wrote:
> Check if we have already allocated memory for filter preds.
>
> Spotted-by: Frederic Weisbecker <fweisbec@gmail.com>
> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>

Acked-by: Frederic Weisbecker <fweisbec@gmail.com>

> ---
> kernel/trace/trace_events_filter.c | 11 ++++++-----
> 1 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
> index c6b2edf..93660fb 100644
> --- a/kernel/trace/trace_events_filter.c
> +++ b/kernel/trace/trace_events_filter.c
> @@ -409,6 +409,9 @@ static int init_preds(struct ftrace_event_call *call)
> struct filter_pred *pred;
> int i;
>
> + if (call->filter)
> + return 0;
> +
> filter = call->filter = kzalloc(sizeof(*filter), GFP_KERNEL);
> if (!call->filter)
> return -ENOMEM;
> @@ -447,11 +450,9 @@ static int init_subsystem_preds(struct event_subsystem *system)
> if (strcmp(call->system, system->name) != 0)
> continue;
>
> - if (!call->filter) {
> - err = init_preds(call);
> - if (err)
> - return err;
> - }
> + err = init_preds(call);
> + if (err)
> + return err;
> }
>
> return 0;
> --
> 1.6.3
>