From nobody Tue Sep 9 22:23:41 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D710DC0015E for ; Fri, 28 Jul 2023 00:13:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232253AbjG1ANF (ORCPT ); Thu, 27 Jul 2023 20:13:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229808AbjG1AM7 (ORCPT ); Thu, 27 Jul 2023 20:12:59 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F306C2139 for ; Thu, 27 Jul 2023 17:12:56 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-57059f90cc5so17012367b3.0 for ; Thu, 27 Jul 2023 17:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1690503176; x=1691107976; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=o6neUT/Z5ZxqZSvjTzsd3t4vT8zLu+ilqjGFbF/BwHo=; b=p3UY5OrtqjoAHr4YStHKi65rVDwgAEV7PTWNIAzOHMRRHlj/Q7SO5SS/iWoKuNGKNQ q3KH8pM5awvIVnWOT63BFHtZwwa9Eg1ijQC251g+h0PH1+pOncYTEvnlR8HJPVc1e9Zw zy2Bs+axgBATCD+3uHBG/x3UhoysgCIiCEISgdeClzUhp3C4K/PSNQXAIfZ/egs9XtIc LNUaKQbzbgSGfpDnqiWt7O2TA6OSyg3VFwMTP/o3zYgJ1HL654KUYJIiINd3H+rL9i+4 quOk3i/9iHtGRcOE3yKsB9jhMKECdvcp+GKr49ZFChLE+XmKDMnN3oxeiRt5QV5mIeUn dLyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690503176; x=1691107976; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=o6neUT/Z5ZxqZSvjTzsd3t4vT8zLu+ilqjGFbF/BwHo=; b=W/gis6keWNGhmwk0GBmsye5x0b0sDz2tqkNUxKHR9SYj0+EYVUBSRTLTXEtGV2EssP dB3lznVVUkL5Sxl8JdEOImf9nqUULPWy1aB5vcSBcSV2LQrIN0Ca2Zui4Z6G/Qp1+8Dg 2TF6a150uvVtyNngR3FHpS6cJwN1Bp5DUPVM0kePmM95XQ6tlXnrDsNWbUT3qWHwhGcI jgSJT/ODfskNu7iFMF1whtJpjvPj94ypdxBgiD/FEW0zX9qoG/Ceo9yXDtdqBT8kyvzf F1fpWY8qTBKrWJFktGSwtZhePfN7E66du+EsL2f7+/9GRRIeLXyEA1ILErBmMiVSxQB9 Ej6w== X-Gm-Message-State: ABy/qLYg9uB5OHga5LhcxTSOnj311x1KoKsdZUtTWbvJwwhqFudhRglM WvfGloE/D385zVOiHkfdaQClV90xE2mP X-Google-Smtp-Source: APBJJlEt4iXxJP8WryqVeJzhMdGPpRqxcb6Ce1vKD99ePr2ibeCxFflRmitKYAp0ZponEC0d5cc+brXqHo0W X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:3d03:ff18:af30:2dad]) (user=irogers job=sendgmr) by 2002:a05:690c:72b:b0:57a:118a:f31 with SMTP id bt11-20020a05690c072b00b0057a118a0f31mr1109ywb.7.1690503176098; Thu, 27 Jul 2023 17:12:56 -0700 (PDT) Date: Thu, 27 Jul 2023 17:12:10 -0700 In-Reply-To: <20230728001212.457900-1-irogers@google.com> Message-Id: <20230728001212.457900-2-irogers@google.com> Mime-Version: 1.0 References: <20230728001212.457900-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog Subject: [PATCH v1 1/3] perf parse-event: Avoid BPF test segv From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Eduard Zingerman , Kan Liang , Rob Herring , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Wang Nan , Wang ShaoBo , YueHaibing , He Kuang Cc: Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" loc is passed as NULL in tools/perf/tests/bpf.c do_test, meaning errors trigger a segv when trying to access. Add the missing NULL check. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 926d3ac97324..02647313c918 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -758,7 +758,7 @@ int parse_events_load_bpf_obj(struct parse_events_state= *parse_state, =20 return 0; errout: - parse_events_error__handle(parse_state->error, param.loc->first_column, + parse_events_error__handle(parse_state->error, param.loc ? param.loc->fir= st_column : 0, strdup(errbuf), strdup("(add -v to see detail)")); return err; } --=20 2.41.0.487.g6d72f3e995-goog From nobody Tue Sep 9 22:23:41 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 820EAC001E0 for ; Fri, 28 Jul 2023 00:13:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232317AbjG1ANI (ORCPT ); Thu, 27 Jul 2023 20:13:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232022AbjG1ANA (ORCPT ); Thu, 27 Jul 2023 20:13:00 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 203ABA3 for ; Thu, 27 Jul 2023 17:12:59 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-583312344e7so14704637b3.1 for ; Thu, 27 Jul 2023 17:12:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1690503178; x=1691107978; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=I2X6P0O3eO5DQvKAy3ylMNjel4qFpAR57C+PYmMuzQU=; b=Y58fZa/86hus7myw8y86G52HiOjYIdlaYA635qPWRhwD2vNtngQenxs9RIRvQMrUgc NRC27Iscw9fdzF7djOURbiRmfnafMR/LbEzenpccF2wZLu9JiYcPLldpTnkQZhgwklMN J9I5bpiMOo08+jJyWmqAfjUtJ802yYQZxtDQNufCu8ph4jbYYkoNVj9sK8hLGoJuKWJ2 Ee/tmyAWBEA9qXiEX9b1SGDZpTFdV4IL65VFg/AHzH96x3hSAtN6eH6D9Cowo2uyE5KS S9VRcVtciLxXshxUVod7FYAGujCcTk99A3IRq37Dy6R0TJTOAHQAeOevmh+oT9LRSFc5 qYpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690503178; x=1691107978; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=I2X6P0O3eO5DQvKAy3ylMNjel4qFpAR57C+PYmMuzQU=; b=DeZuONDqvM/jKy0xPFVedm4sL3lP7z9nBkysYub4Mclv6NV4JWFqXWn//9nP+8ZPvu GFIIz1SkhA5D/hv1w8cFIBRnd5Tx2tWtyFF9uNya3N/PQtG2ZTnwfnS25TrSJQCCZleY gmfWNadGItV3MT+y33OwroF+b+Uq/KCXdbPbE4H8x4OvYcgjKm6W3+ksBYQkwyoFOSyz 2Eg7yzvrdPkAX0hNfD5gwHjk2cAItYk4jpUMlMOQliEUBU0JW0Hd8nAnMlnIxOIY9EoQ ZhAZCpobkRpamz/pJoUn8PRdQEazw6aY/xGg6Z/oI4/JfeXiTpdozHLT/MOamJImyBv9 /rKQ== X-Gm-Message-State: ABy/qLZPMcAu7ZsBEBYdSCZ5mgKLM/AKNZV5bFYhkDgE82x0k/UJgQeK p8SfN6RE2jpyLg9yxjz/DngjxeyMdVa7 X-Google-Smtp-Source: APBJJlGSAV/rnlFF9CkbzbttCzE5bHg41Ew3k+XBgmlwzxDfboXGQ6bbIaw0qztWoGPiL3DK8LPTakkE2IqH X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:3d03:ff18:af30:2dad]) (user=irogers job=sendgmr) by 2002:a05:6902:1804:b0:d07:cb52:a3cf with SMTP id cf4-20020a056902180400b00d07cb52a3cfmr917ybb.5.1690503178333; Thu, 27 Jul 2023 17:12:58 -0700 (PDT) Date: Thu, 27 Jul 2023 17:12:11 -0700 In-Reply-To: <20230728001212.457900-1-irogers@google.com> Message-Id: <20230728001212.457900-3-irogers@google.com> Mime-Version: 1.0 References: <20230728001212.457900-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog Subject: [PATCH v1 2/3] perf tools: Revert enable indices setting syntax for BPF map From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Eduard Zingerman , Kan Liang , Rob Herring , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Wang Nan , Wang ShaoBo , YueHaibing , He Kuang Cc: Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reverts commit e571e029bdbf ("perf tools: Enable indices setting syntax for BPF map"). The reverted commit added a notion of arrays that could be set as event terms for BPF events. The parsing hasn't worked over multiple Linux releases. Given the broken nature of the parsing it appears the code isn't in use, nor could I find a way for it to be used to add a test. The original commit contains a test in the commit message, however, running it yields: ``` $ perf record -e './test_bpf_map_3.c/map:channel.value[0,1,2,3...5]=3D101/'= usleep 2 event syntax error: '..pf_map_3.c/map:channel.value[0,1,2,3...5]=3D101/' \___ parser error Run 'perf list' for a list of valid events Usage: perf record [] [] or: perf record [] -- [] -e, --event event selector. use 'perf list' to list available= events ``` Given the code can't be used this commit reverts and removes it. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 8 +-- tools/perf/util/parse-events.l | 11 --- tools/perf/util/parse-events.y | 122 --------------------------------- 3 files changed, 1 insertion(+), 140 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 02647313c918..0e2004511cf5 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -800,13 +800,7 @@ parse_events_config_bpf(struct parse_events_state *par= se_state, =20 parse_events_error__handle(parse_state->error, idx, strdup(errbuf), - strdup( -"Hint:\tValid config terms:\n" -" \tmap:[].value=3D[value]\n" -" \tmap:[].event=3D[event]\n" -"\n" -" \twhere is something like [0,3...5] or [all]\n" -" \t(add -v to see detail)")); + NULL); return err; } } diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 99335ec586ae..d7d084cc4140 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -175,7 +175,6 @@ do { \ %x mem %s config %x event -%x array =20 group [^,{}/]*[{][^}]*[}][^,{}/]* event_pmu [^,{}/]+[/][^/]*[/][^,{}/]* @@ -251,14 +250,6 @@ non_digit [^0-9] } } =20 -{ -"]" { BEGIN(config); return ']'; } -{num_dec} { return value(yyscanner, 10); } -{num_hex} { return value(yyscanner, 16); } -, { return ','; } -"\.\.\." { return PE_ARRAY_RANGE; } -} - { /* * Please update config_term_names when new static term is added. @@ -302,8 +293,6 @@ r0x{num_raw_hex} { return str(yyscanner, PE_RAW); } {lc_type}-{lc_op_result} { return lc_str(yyscanner, _parse_state); } {lc_type}-{lc_op_result}-{lc_op_result} { return lc_str(yyscanner, _parse_= state); } {name_minus} { return str(yyscanner, PE_NAME); } -\[all\] { return PE_ARRAY_ALL; } -"[" { BEGIN(array); return '['; } @{drv_cfg_term} { return drv_str(yyscanner, PE_DRV_CFG_TERM); } } =20 diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 454577f7aff6..5a90e7874c59 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -64,7 +64,6 @@ static void free_list_evsel(struct list_head* list_evsel) %token PE_LEGACY_CACHE %token PE_PREFIX_MEM %token PE_ERROR -%token PE_ARRAY_ALL PE_ARRAY_RANGE %token PE_DRV_CFG_TERM %token PE_TERM_HW %type PE_VALUE @@ -108,11 +107,6 @@ static void free_list_evsel(struct list_head* list_evs= el) %type groups %destructor { free_list_evsel ($$); } %type tracepoint_name -%destructor { free ($$.sys); free ($$.event); } -%type array -%type array_term -%type array_terms -%destructor { free ($$.ranges); } %type PE_TERM_HW %destructor { free ($$.str); } =20 @@ -127,7 +121,6 @@ static void free_list_evsel(struct list_head* list_evse= l) char *sys; char *event; } tracepoint_name; - struct parse_events_array array; struct hardware_term { char *str; u64 num; @@ -878,121 +871,6 @@ PE_TERM =20 $$ =3D term; } -| -name_or_raw array '=3D' name_or_legacy -{ - struct parse_events_term *term; - int err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $= 1, $4, &@1, &@4); - - if (err) { - free($1); - free($4); - free($2.ranges); - PE_ABORT(err); - } - term->array =3D $2; - $$ =3D term; -} -| -name_or_raw array '=3D' PE_VALUE -{ - struct parse_events_term *term; - int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, $= 1, $4, false, &@1, &@4); - - if (err) { - free($1); - free($2.ranges); - PE_ABORT(err); - } - term->array =3D $2; - $$ =3D term; -} -| -PE_DRV_CFG_TERM -{ - struct parse_events_term *term; - char *config =3D strdup($1); - int err; - - if (!config) - YYNOMEM; - err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, co= nfig, $1, &@1, NULL); - if (err) { - free($1); - free(config); - PE_ABORT(err); - } - $$ =3D term; -} - -array: -'[' array_terms ']' -{ - $$ =3D $2; -} -| -PE_ARRAY_ALL -{ - $$.nr_ranges =3D 0; - $$.ranges =3D NULL; -} - -array_terms: -array_terms ',' array_term -{ - struct parse_events_array new_array; - - new_array.nr_ranges =3D $1.nr_ranges + $3.nr_ranges; - new_array.ranges =3D realloc($1.ranges, - sizeof(new_array.ranges[0]) * - new_array.nr_ranges); - if (!new_array.ranges) - YYNOMEM; - memcpy(&new_array.ranges[$1.nr_ranges], $3.ranges, - $3.nr_ranges * sizeof(new_array.ranges[0])); - free($3.ranges); - $$ =3D new_array; -} -| -array_term - -array_term: -PE_VALUE -{ - struct parse_events_array array; - - array.nr_ranges =3D 1; - array.ranges =3D malloc(sizeof(array.ranges[0])); - if (!array.ranges) - YYNOMEM; - array.ranges[0].start =3D $1; - array.ranges[0].length =3D 1; - $$ =3D array; -} -| -PE_VALUE PE_ARRAY_RANGE PE_VALUE -{ - struct parse_events_array array; - - if ($3 < $1) { - struct parse_events_state *parse_state =3D _parse_state; - struct parse_events_error *error =3D parse_state->error; - char *err_str; - - if (asprintf(&err_str, "Expected '%ld' to be less-than '%ld'", $3, $1) <= 0) - err_str =3D NULL; - - parse_events_error__handle(error, @1.first_column, err_str, NULL); - YYABORT; - } - array.nr_ranges =3D 1; - array.ranges =3D malloc(sizeof(array.ranges[0])); - if (!array.ranges) - YYNOMEM; - array.ranges[0].start =3D $1; - array.ranges[0].length =3D $3 - $1 + 1; - $$ =3D array; -} =20 sep_dc: ':' | =20 --=20 2.41.0.487.g6d72f3e995-goog From nobody Tue Sep 9 22:23:41 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 486A6C0015E for ; Fri, 28 Jul 2023 00:13:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232355AbjG1ANL (ORCPT ); Thu, 27 Jul 2023 20:13:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232158AbjG1ANC (ORCPT ); Thu, 27 Jul 2023 20:13:02 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6948F2139 for ; Thu, 27 Jul 2023 17:13:01 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-cf4cb742715so1378333276.2 for ; Thu, 27 Jul 2023 17:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1690503180; x=1691107980; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=TWz7XL7DQKS0EfsO7HA2MTsxrytCVyGHUhFfdbWDZ6s=; b=IuvFR8BF5x1tWF1G6W+CDSQZV/ETHOkjlt5JLQdNIV3O6uadOqnLA7xXftF9bM1JRJ on3qOQgxzN77vfUrqRid2baZtPRCfB9sIRH5BCkItKwFeqszmlmOn5YSBgft7bE7z/6Q optwoMN3KaiZrIGku9DTaf4OIfHXFoNsmZF0uQ3EIckjvyynrnwAtaa58wWI+6s2Ig65 wVEfTqaXWXIyKp8vHk3ROuUMRureFKatzpizPZ6FYru+IrCB8wbfKnL/ZJRjTP7f7J7m PGqB7U2SoXoG1l6H6j360dMT4DCVrFFPBUho6CaHWZEJrgfmiER5JUHJS/YwGAZN4WIF wB3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690503180; x=1691107980; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TWz7XL7DQKS0EfsO7HA2MTsxrytCVyGHUhFfdbWDZ6s=; b=ezNcJLk1Q765Zreqh2I6kpzecoFFL9YHMIYWReOSvSv2eL+G4gIMd+hItRI5OS3+it 5BmSkS/q1V+Xj3AhIh3vQatu9Cium8OwuIulUUb6HjXcVrBVPDh14ctpZ6wz1RPz6EsN PAqxlbnqXi/0SYij2KeFpddPf/Bgp0CMEeWEyoa+CtytX82F8w0jNHzrqEysDEp0vl71 QMng88CzJJnAjwNdeQnhi0EUYxlSZQZcfjMEiAG05QUwEAFjC7w97lEppd1RlET7A17e w3oX3JKxIXc75kLE43mQGhBjhIjp1FwmiEgxokpHpQABirsoxrbmIFrOnivmc2PZ2AbM Iesw== X-Gm-Message-State: ABy/qLbG0LAXCRBiSTRV20KigHMeQFr1NpP1OG2oNIcM0qCecQwLNa/n fwpMik85/Y5VIDGmGFNAdPQ0foo914G+ X-Google-Smtp-Source: APBJJlFpuxfDhuyA9wPq1j8ekeU8floVzkUu1hEuEp9+trKyCpF1P2gF/EEdIZPyXLG7MeOx8eR5n175A9UL X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:3d03:ff18:af30:2dad]) (user=irogers job=sendgmr) by 2002:a05:6902:569:b0:d11:3c58:2068 with SMTP id a9-20020a056902056900b00d113c582068mr1077ybt.2.1690503180537; Thu, 27 Jul 2023 17:13:00 -0700 (PDT) Date: Thu, 27 Jul 2023 17:12:12 -0700 In-Reply-To: <20230728001212.457900-1-irogers@google.com> Message-Id: <20230728001212.457900-4-irogers@google.com> Mime-Version: 1.0 References: <20230728001212.457900-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog Subject: [PATCH v1 3/3] perf parse-events: Remove array remnants From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Eduard Zingerman , Kan Liang , Rob Herring , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Wang Nan , Wang ShaoBo , YueHaibing , He Kuang Cc: Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" parse_events_array was set up by event term parsing, which no longer exists. Remove this struct and references to it. Signed-off-by: Ian Rogers --- tools/perf/util/bpf-loader.c | 101 --------------------------------- tools/perf/util/parse-events.c | 8 --- tools/perf/util/parse-events.h | 10 ---- 3 files changed, 119 deletions(-) diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c index 44cde27d6389..108eca9ddad4 100644 --- a/tools/perf/util/bpf-loader.c +++ b/tools/perf/util/bpf-loader.c @@ -1091,16 +1091,12 @@ enum bpf_map_op_type { =20 enum bpf_map_key_type { BPF_MAP_KEY_ALL, - BPF_MAP_KEY_RANGES, }; =20 struct bpf_map_op { struct list_head list; enum bpf_map_op_type op_type; enum bpf_map_key_type key_type; - union { - struct parse_events_array array; - } k; union { u64 value; struct evsel *evsel; @@ -1116,8 +1112,6 @@ bpf_map_op__delete(struct bpf_map_op *op) { if (!list_empty(&op->list)) list_del_init(&op->list); - if (op->key_type =3D=3D BPF_MAP_KEY_RANGES) - parse_events__clear_array(&op->k.array); free(op); } =20 @@ -1196,18 +1190,6 @@ bpf_map_op_setkey(struct bpf_map_op *op, struct pars= e_events_term *term) if (!term) return 0; =20 - if (term->array.nr_ranges) { - size_t memsz =3D term->array.nr_ranges * - sizeof(op->k.array.ranges[0]); - - op->k.array.ranges =3D memdup(term->array.ranges, memsz); - if (!op->k.array.ranges) { - pr_debug("Not enough memory to alloc indices for map\n"); - return -ENOMEM; - } - op->key_type =3D BPF_MAP_KEY_RANGES; - op->k.array.nr_ranges =3D term->array.nr_ranges; - } return 0; } =20 @@ -1244,18 +1226,6 @@ bpf_map_op__clone(struct bpf_map_op *op) } =20 INIT_LIST_HEAD(&newop->list); - if (op->key_type =3D=3D BPF_MAP_KEY_RANGES) { - size_t memsz =3D op->k.array.nr_ranges * - sizeof(op->k.array.ranges[0]); - - newop->k.array.ranges =3D memdup(op->k.array.ranges, memsz); - if (!newop->k.array.ranges) { - pr_debug("Failed to alloc indices for map\n"); - free(newop); - return NULL; - } - } - return newop; } =20 @@ -1456,40 +1426,6 @@ struct bpf_obj_config__map_func bpf_obj_config__map_= funcs[] =3D { {"event", bpf_map__config_event}, }; =20 -static int -config_map_indices_range_check(struct parse_events_term *term, - struct bpf_map *map, - const char *map_name) -{ - struct parse_events_array *array =3D &term->array; - unsigned int i; - - if (!array->nr_ranges) - return 0; - if (!array->ranges) { - pr_debug("ERROR: map %s: array->nr_ranges is %d but range array is NULL\= n", - map_name, (int)array->nr_ranges); - return -BPF_LOADER_ERRNO__INTERNAL; - } - - if (!map) { - pr_debug("Map '%s' is invalid\n", map_name); - return -BPF_LOADER_ERRNO__INTERNAL; - } - - for (i =3D 0; i < array->nr_ranges; i++) { - unsigned int start =3D array->ranges[i].start; - size_t length =3D array->ranges[i].length; - unsigned int idx =3D start + length - 1; - - if (idx >=3D bpf_map__max_entries(map)) { - pr_debug("ERROR: index %d too large\n", idx); - return -BPF_LOADER_ERRNO__OBJCONF_MAP_IDX2BIG; - } - } - return 0; -} - static int bpf__obj_config_map(struct bpf_object *obj, struct parse_events_term *term, @@ -1525,12 +1461,6 @@ bpf__obj_config_map(struct bpf_object *obj, goto out; } =20 - *key_scan_pos +=3D strlen(map_opt); - err =3D config_map_indices_range_check(term, map, map_name); - if (err) - goto out; - *key_scan_pos -=3D strlen(map_opt); - for (i =3D 0; i < ARRAY_SIZE(bpf_obj_config__map_funcs); i++) { struct bpf_obj_config__map_func *func =3D &bpf_obj_config__map_funcs[i]; @@ -1579,7 +1509,6 @@ typedef int (*map_config_func_t)(const char *name, in= t map_fd, const struct bpf_map *map, struct bpf_map_op *op, void *pkey, void *arg); - static int foreach_key_array_all(map_config_func_t func, void *arg, const char *name, @@ -1600,32 +1529,6 @@ foreach_key_array_all(map_config_func_t func, return 0; } =20 -static int -foreach_key_array_ranges(map_config_func_t func, void *arg, - const char *name, int map_fd, - const struct bpf_map *map, - struct bpf_map_op *op) -{ - unsigned int i, j; - int err; - - for (i =3D 0; i < op->k.array.nr_ranges; i++) { - unsigned int start =3D op->k.array.ranges[i].start; - size_t length =3D op->k.array.ranges[i].length; - - for (j =3D 0; j < length; j++) { - unsigned int idx =3D start + j; - - err =3D func(name, map_fd, map, op, &idx, arg); - if (err) { - pr_debug("ERROR: failed to insert value to %s[%u]\n", - name, idx); - return err; - } - } - } - return 0; -} =20 static int bpf_map_config_foreach_key(struct bpf_map *map, @@ -1666,10 +1569,6 @@ bpf_map_config_foreach_key(struct bpf_map *map, err =3D foreach_key_array_all(func, arg, name, map_fd, map, op); break; - case BPF_MAP_KEY_RANGES: - err =3D foreach_key_array_ranges(func, arg, name, - map_fd, map, op); - break; default: pr_debug("ERROR: keytype for map '%s' invalid\n", name); diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 0e2004511cf5..70841b0febf3 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -2717,9 +2717,6 @@ int parse_events_term__clone(struct parse_events_term= **new, =20 void parse_events_term__delete(struct parse_events_term *term) { - if (term->array.nr_ranges) - zfree(&term->array.ranges); - if (term->type_val !=3D PARSE_EVENTS__TERM_TYPE_NUM) zfree(&term->val.str); =20 @@ -2770,11 +2767,6 @@ void parse_events_terms__delete(struct list_head *te= rms) free(terms); } =20 -void parse_events__clear_array(struct parse_events_array *a) -{ - zfree(&a->ranges); -} - void parse_events_evlist_error(struct parse_events_state *parse_state, int idx, const char *str) { diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index e59b33805886..b77ff619a623 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -81,17 +81,8 @@ enum { __PARSE_EVENTS__TERM_TYPE_NR, }; =20 -struct parse_events_array { - size_t nr_ranges; - struct { - unsigned int start; - size_t length; - } *ranges; -}; - struct parse_events_term { char *config; - struct parse_events_array array; union { char *str; u64 num; @@ -162,7 +153,6 @@ int parse_events_term__clone(struct parse_events_term *= *new, void parse_events_term__delete(struct parse_events_term *term); void parse_events_terms__delete(struct list_head *terms); void parse_events_terms__purge(struct list_head *terms); -void parse_events__clear_array(struct parse_events_array *a); int parse_events__modifier_event(struct list_head *list, char *str, bool a= dd); int parse_events__modifier_group(struct list_head *list, char *event_mod); int parse_events_name(struct list_head *list, const char *name); --=20 2.41.0.487.g6d72f3e995-goog