On Thu, 17 Oct 2013 22:44:56 -0300
"Geyslan G. Bem" <geys...@gmail.com> wrote:

> Restructures function logic conditions testing 'tracing_open_generic'
> return before the others. It avoids: unnecessary trace_array_get and
> kzalloc when tracing is disabled; and fix the possible 'dir'
> assignment after freeing it.
> 
> Centralizes the exiting, ensuring the 'trace_array_put' on error,
> in accordance to Coding Style, Chapter 7.
> 
> Signed-off-by: Geyslan G. Bem <geys...@gmail.com>
> ---
>  kernel/trace/trace_events.c | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 368a4d5..8232362 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -1108,26 +1108,28 @@ static int system_tr_open(struct inode *inode, struct 
> file *filp)
>       struct trace_array *tr = inode->i_private;
>       int ret;
>  
> -     if (trace_array_get(tr) < 0)
> -             return -ENODEV;
> +     ret = tracing_open_generic(inode, filp);
> +     if (ret)
> +             return ret;
> +
> +     ret = trace_array_get(tr);
> +     if (ret)
> +             return ret;

Hmm,

I'm thinking of just nuking the tracing_open_generic() here. The only
thing it does here is the tracing_disabled check. The assignment of
inode->i_private to filp->private_data is pointless as it just
reassigns it anyway.

We could add a tracing_is_disabled() function to test instead.

-- Steve

>  
>       /* Make a temporary dir that has no system but points to tr */
>       dir = kzalloc(sizeof(*dir), GFP_KERNEL);
>       if (!dir) {
> -             trace_array_put(tr);
> -             return -ENOMEM;
> +             ret = -ENOMEM;
> +             goto err_dir;
>       }
>  
>       dir->tr = tr;
>  
> -     ret = tracing_open_generic(inode, filp);
> -     if (ret < 0) {
> -             trace_array_put(tr);
> -             kfree(dir);
> -     }
> -
>       filp->private_data = dir;
> +     return 0;
>  
> +err_dir:
> +     trace_array_put(tr);
>       return ret;
>  }
>  

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

Reply via email to