From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D0C4C10F09 for ; Fri, 8 Mar 2019 13:00:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5C8722146F for ; Fri, 8 Mar 2019 13:00:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552050009; bh=ZONGwsc25RLm/pUotu47qFCcz2uqK6xfSCy+q/TQayA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=O6o2yZ5H77mrxG8K0kA+E+36ozT0wGqNfCqqariqTL/PRzIwZjArsWusZmEf3NhAg 5gX+YFEKYOsjXFkJBb1ux9P4O/9MHfIBbPpP8UG17vN6SuQY6LmFOBfOagp6i8xJOo yVo43B1XqYs72qJ5vj7rIZJX72RmetMH0cUjBVC8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726834AbfCHNAI (ORCPT ); Fri, 8 Mar 2019 08:00:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:37020 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726672AbfCHNAH (ORCPT ); Fri, 8 Mar 2019 08:00:07 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BA8E120811; Fri, 8 Mar 2019 13:00:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552050007; bh=ZONGwsc25RLm/pUotu47qFCcz2uqK6xfSCy+q/TQayA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xUvovPTZX0mh0cbryZDqnbO+Eq7W0HSzZsdXj1Q74cRww4OcCw0kNJVgCiY1vMo1I 2nWAZ++ri6IG9oEY89mzq1OfbPfvlUsB33+UOebiLMNNkWRSx7PMZVKUvFTVEYr5Gt pmmUAHbSxAIPi403oIBzcGnoNtKGPasmqZnK40fo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Tikhomirov , "Steven Rostedt (VMware)" Subject: [PATCH 4.19 55/68] tracing: Fix event filters and triggers to handle negative numbers Date: Fri, 8 Mar 2019 13:50:25 +0100 Message-Id: <20190308124913.336680043@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190308124910.696595153@linuxfoundation.org> References: <20190308124910.696595153@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Pavel Tikhomirov commit 6a072128d262d2b98d31626906a96700d1fc11eb upstream. Then tracing syscall exit event it is extremely useful to filter exit codes equal to some negative value, to react only to required errors. But negative numbers does not work: [root@snorch sys_exit_read]# echo "ret == -1" > filter bash: echo: write error: Invalid argument [root@snorch sys_exit_read]# cat filter ret == -1 ^ parse_error: Invalid value (did you forget quotes)? Similar thing happens when setting triggers. These is a regression in v4.17 introduced by the commit mentioned below, testing without these commit shows no problem with negative numbers. Link: http://lkml.kernel.org/r/20180823102534.7642-1-ptikhomirov@virtuozzo.com Cc: stable@vger.kernel.org Fixes: 80765597bc58 ("tracing: Rewrite filter logic to be simpler and faster") Signed-off-by: Pavel Tikhomirov Signed-off-by: Steven Rostedt (VMware) Signed-off-by: Greg Kroah-Hartman --- kernel/trace/trace_events_filter.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -1301,7 +1301,7 @@ static int parse_pred(const char *str, v /* go past the last quote */ i++; - } else if (isdigit(str[i])) { + } else if (isdigit(str[i]) || str[i] == '-') { /* Make sure the field is not a string */ if (is_string_field(field)) { @@ -1314,6 +1314,9 @@ static int parse_pred(const char *str, v goto err_free; } + if (str[i] == '-') + i++; + /* We allow 0xDEADBEEF */ while (isalnum(str[i])) i++;