From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752741AbdJMSkR (ORCPT ); Fri, 13 Oct 2017 14:40:17 -0400 Received: from mail-io0-f171.google.com ([209.85.223.171]:44181 "EHLO mail-io0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751105AbdJMSkP (ORCPT ); Fri, 13 Oct 2017 14:40:15 -0400 X-Google-Smtp-Source: AOwi7QDz9e3ncfdxl+57sRWtLVf6ekKMjs86WiyoGX2qrL+UzUL/D4fxNKcydgUTXEObv71hqLJQaw== From: Will Hawkins To: linux-kernel@vger.kernel.org, hawkinsw@gmail.com, rostedt@goodmis.org Cc: Will Hawkins Subject: [PATCH v2] trace-cmd record: Fix syntax in make_pid_filter Date: Fri, 13 Oct 2017 14:40:06 -0400 Message-Id: <1507920006-10204-1-git-send-email-hawkinsw@borlaugic.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In older versions of the kernel, event filtering by pid does not use the set_event_pid file. Instead, ftrace uses a common filter (created in make_pid_filter) to filter events based on PID. The syntax of the filter generated by this function is overly permissive. When filtering by pid, || is used where && should be (in certain cases) which means that unrelated events are captured. Signed-off-by: Will Hawkins --- trace-record.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/trace-record.c b/trace-record.c index a0b6541..741fe53 100644 --- a/trace-record.c +++ b/trace-record.c @@ -935,14 +935,16 @@ static char *make_pid_filter(char *curr_filter, const char *field) str = filter + curr_len; for (p = filter_pids; p; p = p->next) { - if (p == filter_pids) - orit = ""; - else - orit = "||"; - if (p->exclude) + if (p->exclude) { match = "!="; - else + orit = "&&"; + } else { match = "=="; + orit = "||"; + } + if (p == filter_pids) + orit = ""; + len = sprintf(str, "%s(%s%s%d)", orit, field, match, p->pid); str += len; } -- 2.7.4