From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751745AbcGRLI5 (ORCPT ); Mon, 18 Jul 2016 07:08:57 -0400 Received: from mga11.intel.com ([192.55.52.93]:59742 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751490AbcGRLIz (ORCPT ); Mon, 18 Jul 2016 07:08:55 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,383,1464678000"; d="scan'208";a="1008908870" From: Alexander Shishkin To: Mathieu Poirier Cc: peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] perf/core: fixing filename for start/stop filters In-Reply-To: <1468621541-31024-2-git-send-email-mathieu.poirier@linaro.org> References: <1468621541-31024-1-git-send-email-mathieu.poirier@linaro.org> <1468621541-31024-2-git-send-email-mathieu.poirier@linaro.org> User-Agent: Notmuch/0.21 (http://notmuchmail.org) Emacs/24.5.1 (x86_64-pc-linux-gnu) Date: Mon, 18 Jul 2016 14:08:51 +0300 Message-ID: <877fcjp5j0.fsf@ashishki-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mathieu Poirier writes: > Binary file names have to be supplied for both range and start/stop > filters but the current code only process the filename if an > address range filter is specified. This code adds processing of > the filename for start/stop filters. > > Signed-off-by: Mathieu Poirier > --- > kernel/events/core.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 912f10dfbfe5..df21611585d7 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -7852,8 +7852,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr, > goto fail; > } > > - if (token == IF_SRC_FILE) { > - filename = match_strdup(&args[2]); > + if (token == IF_SRC_FILE || token == IF_SRC_FILEADDR) { > + substring_t *fargs; > + > + fargs = (token == IF_SRC_FILEADDR ? > + &args[1] : &args[2]); > + > + filename = match_strdup(fargs); > if (!filename) { > ret = -ENOMEM; > goto fail; How about a bit shorter version: diff --git a/kernel/events/core.c b/kernel/events/core.c index e6a78ccc07..f05d89b605 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8035,8 +8035,10 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr, goto fail; } - if (token == IF_SRC_FILE) { - filename = match_strdup(&args[2]); + if (token == IF_SRC_FILE || token == IF_SRC_FILEADDR) { + int fpos = filter->range ? 2 : 1; + + filename = match_strdup(&args[fpos]); if (!filename) { ret = -ENOMEM; goto fail; Thanks, -- Alex