Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1565057 > unrolled thread

[PATCH 3/4] perf session: Move an error code assignment in __perf_session__set_tracepoints_handlers()

Started bySF Markus Elfring <elfring@users.sourceforge.net>
First post2017-01-23 16:30 +0100
Last post2017-01-24 00:00 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 3/4] perf session: Move an error code assignment in  __perf_session__set_tracepoints_handlers() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-23 16:30 +0100
    Re: [PATCH 3/4] perf session: Move an error code assignment in  __perf_session__set_tracepoints_handlers() Masami Hiramatsu <mhiramat@kernel.org> - 2017-01-24 00:00 +0100

#1565057 — [PATCH 3/4] perf session: Move an error code assignment in __perf_session__set_tracepoints_handlers()

FromSF Markus Elfring <elfring@users.sourceforge.net>
Date2017-01-23 16:30 +0100
Subject[PATCH 3/4] perf session: Move an error code assignment in __perf_session__set_tracepoints_handlers()
Message-ID<t2OJc-885-27@gated-at.bofh.it>
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Mon, 23 Jan 2017 15:43:13 +0100

A local variable was set to an error code before a concrete error situation
was detected. Thus move the corresponding assignment into an if branch
to indicate a software failure there.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 tools/perf/util/session.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index f268201048a0..98605ad4affd 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -2050,10 +2050,10 @@ int __perf_session__set_tracepoints_handlers(struct perf_session *session,
 		evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name);
 		if (evsel == NULL)
 			continue;
-
-		err = -EEXIST;
-		if (evsel->handler != NULL)
+		if (evsel->handler) {
+			err = -EEXIST;
 			goto out;
+		}
 		evsel->handler = assocs[i].handler;
 	}
 
-- 
2.11.0

[toc] | [next] | [standalone]


#1565345

FromMasami Hiramatsu <mhiramat@kernel.org>
Date2017-01-24 00:00 +0100
Message-ID<t2VKG-48m-3@gated-at.bofh.it>
In reply to#1565057
On Mon, 23 Jan 2017 16:25:23 +0100
SF Markus Elfring <elfring@users.sourceforge.net> wrote:

> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Mon, 23 Jan 2017 15:43:13 +0100
> 
> A local variable was set to an error code before a concrete error situation
> was detected. Thus move the corresponding assignment into an if branch
> to indicate a software failure there.
> 
> This issue was detected by using the Coccinelle software.
> 
> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
>  tools/perf/util/session.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> index f268201048a0..98605ad4affd 100644
> --- a/tools/perf/util/session.c
> +++ b/tools/perf/util/session.c
> @@ -2050,10 +2050,10 @@ int __perf_session__set_tracepoints_handlers(struct perf_session *session,
>  		evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name);
>  		if (evsel == NULL)
>  			continue;
> -
> -		err = -EEXIST;
> -		if (evsel->handler != NULL)
> +		if (evsel->handler) {
> +			err = -EEXIST;
>  			goto out;
> +		}
>  		evsel->handler = assocs[i].handler;
>  	}

Hmm, if we cleanup this function, it might be better not to use goto as below.

int __perf_session__set_tracepoints_handlers(struct perf_session *session,
                                             const struct perf_evsel_str_handler *assocs,
                                             size_t nr_assocs)
{
        struct perf_evsel *evsel;
        size_t i;
        int err = 0;

        for (i = 0; i < nr_assocs; i++) {
                /*
                 * Adding a handler for an event not in the session,
                 * just ignore it.
                 */
                evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name);
                if (evsel == NULL)
                        continue;

                if (evsel->handler != NULL) {
                        err = -EEXIST;
                        break;
		}
                evsel->handler = assocs[i].handler;
        }

        return err;
}

Thank you,



-- 
Masami Hiramatsu <mhiramat@kernel.org>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web