From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933019AbdGXXnb (ORCPT ); Mon, 24 Jul 2017 19:43:31 -0400 Received: from mga07.intel.com ([134.134.136.100]:17127 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756120AbdGXXk2 (ORCPT ); Mon, 24 Jul 2017 19:40:28 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,409,1496127600"; d="scan'208";a="1154925624" From: Andi Kleen To: acme@kernel.org Cc: jolsa@kernel.org, linux-kernel@vger.kernel.org, Andi Kleen Subject: [PATCH v1 02/15] perf, tools: Tighten detection of BPF events Date: Mon, 24 Jul 2017 16:40:02 -0700 Message-Id: <20170724234015.5165-3-andi@firstfloor.org> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170724234015.5165-1-andi@firstfloor.org> References: <20170724234015.5165-1-andi@firstfloor.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andi Kleen perf stat -e cpu/uops_executed.core,cmask=1/ would be detected as a BPF source event because the .c matches the .c source BPF pattern. Add lookahead to the BPF patterns and reject them if they are followed by more letters. Signed-off-by: Andi Kleen --- tools/perf/util/parse-events.l | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 660fca05bc93..7fa3f2e851b0 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -182,9 +182,13 @@ modifier_bp [rwx]{1,3} REWIND(0); } +({bpf_object}|{bpf_source})/[^a-z] { + BEGIN(INITIAL); + REWIND(1); + return PE_EVENT_NAME; + } + {event_pmu} | -{bpf_object} | -{bpf_source} | {event} { BEGIN(INITIAL); REWIND(1); @@ -307,8 +311,8 @@ r{num_raw_hex} { return raw(yyscanner); } {num_hex} { return value(yyscanner, 16); } {modifier_event} { return str(yyscanner, PE_MODIFIER_EVENT); } -{bpf_object} { return str(yyscanner, PE_BPF_OBJECT); } -{bpf_source} { return str(yyscanner, PE_BPF_SOURCE); } +{bpf_object}/[^a-z] { return str(yyscanner, PE_BPF_OBJECT); } +{bpf_source}/[^a-z] { return str(yyscanner, PE_BPF_SOURCE); } {name} { return pmu_str_check(yyscanner); } "/" { BEGIN(config); return '/'; } - { return '-'; } -- 2.9.4