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


Groups > linux.kernel > #1578142

[PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE

From Arnaldo Carvalho de Melo <acme@kernel.org>
Newsgroups linux.kernel
Subject [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE
Date 2017-02-10 03:50 +0100
Message-ID <t99rA-5V8-29@gated-at.bofh.it> (permalink)
References <t98vv-5lK-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Arnaldo Carvalho de Melo <acme@redhat.com>

In commit daeecbc0c431 ("perf tools: Add event_update event scale type"), the
handling of PERF_EVENT_UPDATE__SCALE cast struct event_update_event->data to a
pointer to event_update_event_scale, uses some field from this casted struct
and then ends up falling through to the handling of another event type,
PERF_EVENT_UPDATE__CPUS were it casts that ev->data to yet another type, oops,
fix it by inserting the missing break.

Noticed when building perf using gcc 7 on Fedora Rawhide:

  util/header.c: In function 'perf_event__process_event_update':
  util/header.c:3207:16: error: this statement may fall through [-Werror=implicit-fallthrough=]
     evsel->scale = ev_scale->scale;
     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
  util/header.c:3208:2: note: here
    case PERF_EVENT_UPDATE__CPUS:
    ^~~~

This wasn't noticed because probably PERF_EVENT_UPDATE__CPUS comes after
PERF_EVENT_UPDATE__SCALE, so we would just create a bogus evsel->own_cpus when
processing a PERF_EVENT_UPDATE__SCALE to then leak it and create a new cpu map
with the correct data.

Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: daeecbc0c431 ("perf tools: Add event_update event scale type")
Link: http://lkml.kernel.org/n/tip-lukcf9hdj092ax2914ss95at@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/header.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index c567d9f0aa92..3d12c16e5103 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -3205,6 +3205,7 @@ int perf_event__process_event_update(struct perf_tool *tool __maybe_unused,
 	case PERF_EVENT_UPDATE__SCALE:
 		ev_scale = (struct event_update_event_scale *) ev->data;
 		evsel->scale = ev_scale->scale;
+		break;
 	case PERF_EVENT_UPDATE__CPUS:
 		ev_cpus = (struct event_update_event_cpus *) ev->data;
 
-- 
2.9.3

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[GIT PULL 00/32] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 02:50 +0100
  [PATCH 17/32] perf vendor events intel: Add uncore events for Haswell Server processor Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 26/32] tools strfilter: Use __fallthrough Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 27/32] perf top: Use __fallthrough Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 21/32] perf vendor events intel: Add uncore events for Xeon Phi (Knights Landing) Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 28/32] perf thread_map: Correctly size buffer used with dirent->dt_name Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 15/32] tools lib traceevent: Robustify do_generate_dynamic_list_file Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 25/32] tools string: Use __fallthrough in perf_atoll() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 10/32] perf probe: Add option --symfs Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:10 +0100
  [PATCH 04/32] perf jevents: Add support for parsing uncore json files Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:40 +0100
  [PATCH 06/32] perf pmu: Support event aliases for non cpu// pmus Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:40 +0100
  [PATCH 07/32] perf list: Add debug support for outputing alias string Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:40 +0100
  [PATCH 08/32] perf sdt: Show proper hint when event not yet in place via 'perf probe' Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:40 +0100
  [PATCH 01/32] perf tools arm64: Add support for generating bpf prologue Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:40 +0100
  [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
    Re: [PATCH 24/32] tools include: Add a __fallthrough statement Joe Perches <joe@perches.com> - 2017-02-10 04:10 +0100
      Re: [PATCH 24/32] tools include: Add a __fallthrough statement Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 15:50 +0100
        [PATCH] compiler/compiler-gcc: Add __fallthrough Joe Perches <joe@perches.com> - 2017-02-10 19:00 +0100
          Re: [PATCH] compiler/compiler-gcc: Add __fallthrough Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 19:20 +0100
            Re: [PATCH] compiler/compiler-gcc: Add __fallthrough Joe Perches <joe@perches.com> - 2017-02-10 20:00 +0100
  [PATCH 03/32] perf jevents: Parse eventcode as number Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 05/32] perf pmu: Support per pmu json aliases Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 32/32] perf intel-pt: Use __fallthrough Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 20/32] perf vendor events intel: Add uncore events for Sandy Bridge Server Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 11/32] perf tools: Only increase index if perf_evsel__new_idx() succeeds Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 12/32] perf tools: Add missing check for failure in a zalloc() call Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 13/32] perf tools: Use zfree() instead of ad hoc equivalent Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 14/32] perf tools: Use zfree() to avoid keeping dangling pointers Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 02/32] perf bpf: Add missing newline in debug messages Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 22/32] perf vendor events intel: Add uncore events for Broadwell DE Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 29/32] perf header: Fix handling of PERF_EVENT_UPDATE__SCALE Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 18/32] perf vendor events intel: Add uncore events for Broadwell Server Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 03:50 +0100
  [PATCH 30/32] perf bench numa: Avoid possible truncation when using snprintf() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 04:10 +0100
  [PATCH 19/32] perf vendor events intel: Add uncore events for IvyBridge Server Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-02-10 04:50 +0100
  Re: [GIT PULL 00/32] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2017-02-10 09:20 +0100

csiph-web