Messages in this thread | | | Date | Mon, 28 Sep 2020 09:22:29 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] perf parse-events: Reduce casts around bp_addr |
| |
Em Fri, Sep 25, 2020 at 03:01:03PM +0200, Jiri Olsa escreveu: > On Thu, Sep 24, 2020 at 05:39:03PM -0700, Ian Rogers wrote: > > perf_event_attr bp_addr is a u64. parse-events.y parses it as a u64, but > > casts it to a void* and then parse-events.c casts it back to a u64. > > Rather than all the casts, change the type of the address to be a u64. > > This removes an issue noted in: > > https://lore.kernel.org/lkml/20200903184359.GC3495158@kernel.org/ > > > > Signed-off-by: Ian Rogers <irogers@google.com> > > Acked-by: Jiri Olsa <jolsa@redhat.com>
Thanks, applied.
- Arnaldo
> thanks, > jirka > > > --- > > tools/perf/util/parse-events.c | 4 ++-- > > tools/perf/util/parse-events.h | 2 +- > > tools/perf/util/parse-events.y | 8 ++++---- > > 3 files changed, 7 insertions(+), 7 deletions(-) > > > > diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c > > index 667cbca1547a..f82ef1e840b2 100644 > > --- a/tools/perf/util/parse-events.c > > +++ b/tools/perf/util/parse-events.c > > @@ -940,12 +940,12 @@ do { \ > > } > > > > int parse_events_add_breakpoint(struct list_head *list, int *idx, > > - void *ptr, char *type, u64 len) > > + u64 addr, char *type, u64 len) > > { > > struct perf_event_attr attr; > > > > memset(&attr, 0, sizeof(attr)); > > - attr.bp_addr = (unsigned long) ptr; > > + attr.bp_addr = addr; > > > > if (parse_breakpoint_type(type, &attr)) > > return -EINVAL; > > diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h > > index 00cde7d2e30c..e80c9b74f2f2 100644 > > --- a/tools/perf/util/parse-events.h > > +++ b/tools/perf/util/parse-events.h > > @@ -190,7 +190,7 @@ int parse_events_add_cache(struct list_head *list, int *idx, > > struct parse_events_error *error, > > struct list_head *head_config); > > int parse_events_add_breakpoint(struct list_head *list, int *idx, > > - void *ptr, char *type, u64 len); > > + u64 addr, char *type, u64 len); > > int parse_events_add_pmu(struct parse_events_state *parse_state, > > struct list_head *list, char *name, > > struct list_head *head_config, > > diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y > > index 645bf4f1859f..d5b6aff82f21 100644 > > --- a/tools/perf/util/parse-events.y > > +++ b/tools/perf/util/parse-events.y > > @@ -511,7 +511,7 @@ PE_PREFIX_MEM PE_VALUE '/' PE_VALUE ':' PE_MODIFIER_BP sep_dc > > list = alloc_list(); > > ABORT_ON(!list); > > err = parse_events_add_breakpoint(list, &parse_state->idx, > > - (void *)(uintptr_t) $2, $6, $4); > > + $2, $6, $4); > > free($6); > > if (err) { > > free(list); > > @@ -528,7 +528,7 @@ PE_PREFIX_MEM PE_VALUE '/' PE_VALUE sep_dc > > list = alloc_list(); > > ABORT_ON(!list); > > if (parse_events_add_breakpoint(list, &parse_state->idx, > > - (void *)(uintptr_t) $2, NULL, $4)) { > > + $2, NULL, $4)) { > > free(list); > > YYABORT; > > } > > @@ -544,7 +544,7 @@ PE_PREFIX_MEM PE_VALUE ':' PE_MODIFIER_BP sep_dc > > list = alloc_list(); > > ABORT_ON(!list); > > err = parse_events_add_breakpoint(list, &parse_state->idx, > > - (void *)(uintptr_t) $2, $4, 0); > > + $2, $4, 0); > > free($4); > > if (err) { > > free(list); > > @@ -561,7 +561,7 @@ PE_PREFIX_MEM PE_VALUE sep_dc > > list = alloc_list(); > > ABORT_ON(!list); > > if (parse_events_add_breakpoint(list, &parse_state->idx, > > - (void *)(uintptr_t) $2, NULL, 0)) { > > + $2, NULL, 0)) { > > free(list); > > YYABORT; > > } > > -- > > 2.28.0.681.g6f77f65b4e-goog > > >
--
- Arnaldo
| |