Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp4960278ybf; Wed, 4 Mar 2020 14:20:40 -0800 (PST) X-Google-Smtp-Source: ADFU+vvqlFtcJfH9Z1zdomVFDqJKOKWnJMKY17n+ysy+ETUJYSMS+CIFXg0WfgFrQ2hX31nh658B X-Received: by 2002:a05:6830:4a6:: with SMTP id l6mr4295225otd.61.1583360440730; Wed, 04 Mar 2020 14:20:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583360440; cv=none; d=google.com; s=arc-20160816; b=lNlWZg1lZTVafX33pfs2bdNaCuoF3bRwbI5ec2jp1N1GyFBRKucwkt2hlbCk8CeOqQ dSLsFGk7Pdy0j9meauYaThKYS+s3HglzQyUDy9QACI/FxPMIUPCS+sFp1Kb314ofR9oG Aw/R/sBeVO8XMqlLRHBGRkHe2MTNB5WOmheAKJ2NnGS4e7sNDbhnZDM5kRtk1tdPmHG7 kfDUHZQs92kxiDx8WI64CMtPUKc4vSlTANgHQu9WuX+yArR7tjBdd//wGnImTyTYlvE+ m4phwYQ6BNEZcQ+ITQ81yjrFizj4Oh2bWCdpU6iK1syAu1j6ceu2ht2WSzAmWTn2pxLA H07Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=Nc7dUO/rBqyY1xSIyOd1viWhwAYuBk8xy2y1ASlBMag=; b=z9kNo9EkyQc3iLrsy4eRj6vg2vE/G1rEWcvBE/2h3sydlVxhQBG80oIeSB92P1zxX6 4khROKgNGA5WnPRMUXBYGQKpMTd2rIcsPWmWMtudPv/QopIrUDSAevIPwaa4QeMh/XVs zJbd/vwTmUa1Tb2Rku+5d+emxoULAUw8zb+drOgKf4W9BPYQO5V+UFvQYlgxGgd5SqS5 GpBCkc3oWsjzzzdNZa/8u6Snccj5++lR0DLL3z9qeLfeY89ZiowbDV0h66S0tFQ4Y/O5 f5eHA3bT4g1ClEtbl6COVQNnOmiFH1qj+B9yMgv7/Mnl4yYRrTD7JHwtVTMle2q3Vuho zQgw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a1si2067905oto.87.2020.03.04.14.20.28; Wed, 04 Mar 2020 14:20:40 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388419AbgCDWUP (ORCPT + 99 others); Wed, 4 Mar 2020 17:20:15 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:45712 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388371AbgCDWUO (ORCPT ); Wed, 4 Mar 2020 17:20:14 -0500 Received: from mail-yw1-f69.google.com ([209.85.161.69]) by youngberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1j9cNA-00044u-Va for linux-kernel@vger.kernel.org; Wed, 04 Mar 2020 22:20:13 +0000 Received: by mail-yw1-f69.google.com with SMTP id r10so4872089ywa.11 for ; Wed, 04 Mar 2020 14:20:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Nc7dUO/rBqyY1xSIyOd1viWhwAYuBk8xy2y1ASlBMag=; b=OoT70GdmxCk1UlvBD25mg1pkmQcYH/Pj0eKnfKUTObby8iyeOwi36Mg5i6nWiMtGle 6eCAWaHl8Z7YWIOaUlonP80QshVv22iVwbRxCLIDUptCem3axSW7Ffp7eC9NP+/Mz0DL 1dMrD88jvfNji0apyTLfU9xDKIsUblkxa0sYGAFmRHefX9+QnlfBSunntmyahqwYb8bW IuG3r1/hLXYAlRSS9k/kAXkNEPqwu+1Xhp8wKBRJ6WyKqo0OeJp3e4GlTe49bE4WL2C8 oHsrijW2gLjFoW+f3dNDIxdm15sbDlmefN95d2hcfTmq2I++T4hcTNe5O5HUfnZCTeN9 i4ng== X-Gm-Message-State: ANhLgQ0/cpigoiaKgieGhPJ6DkYfa8j5+hRxPXSQQQjg729UsSpZWdKh KfZUGcxB5OWD4Z3nT2DglBbGeVYWTkvkQ1npn1eExzCU7mHhdh0tE74mxVo4cZ3WT2ti847pGWC 52vcdK1Gh7nzi6dNeXQOEqdANKMtDW/cgSpdVZMeKYg== X-Received: by 2002:a25:dcd3:: with SMTP id y202mr4561772ybe.520.1583360411944; Wed, 04 Mar 2020 14:20:11 -0800 (PST) X-Received: by 2002:a25:dcd3:: with SMTP id y202mr4561754ybe.520.1583360411659; Wed, 04 Mar 2020 14:20:11 -0800 (PST) Received: from localhost ([2605:a601:af9b:a120:d987:fd11:6482:bff3]) by smtp.gmail.com with ESMTPSA id y189sm11109823ywe.21.2020.03.04.14.20.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2020 14:20:10 -0800 (PST) From: Seth Forshee To: Steven Rostedt , Ingo Molnar , Shuah Khan Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] selftests/ftrace: Use printf instead of echo in kprobe syntax error tests Date: Wed, 4 Mar 2020 16:20:09 -0600 Message-Id: <20200304222009.34663-1-seth.forshee@canonical.com> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Test cases which use echo to write strings containing backslashes fail with some shells, as echo's treatment of backslashes in strings varies between shell implementations. Use printf instead, as it should behave consistently across different shells. This requires adjustments to the strings to escape \ and % characters. ftrace_errlog_check() must also re-escape these characters after processing them to remove ^ characters. Signed-off-by: Seth Forshee --- Changes in v2: - Escape backslashes for a couple of additional tests .../testing/selftests/ftrace/test.d/functions | 6 +++--- .../test.d/kprobe/kprobe_syntax_errors.tc | 20 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions index 5d4550591ff9..b38c6eb029e8 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -114,11 +114,11 @@ yield() { } ftrace_errlog_check() { # err-prefix command-with-error-pos-by-^ command-file - pos=$(echo -n "${2%^*}" | wc -c) # error position - command=$(echo "$2" | tr -d ^) + pos=$(printf "${2%^*}" | wc -c) # error position + command=$(printf "$2" | sed -e 's/\^//g' -e 's/%/%%/g' -e 's/\\/\\\\/g') echo "Test command: $command" echo > error_log - (! echo "$command" >> "$3" ) 2> /dev/null + (! printf "$command" >> "$3" ) 2> /dev/null grep "$1: error:" -A 3 error_log N=$(tail -n 1 error_log | wc -c) # " Command: " and "^\n" => 13 diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc index ef1e9bafb098..039c03d230b9 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc @@ -37,14 +37,14 @@ fi check_error 'p vfs_read ^$none_var' # BAD_VAR -check_error 'p vfs_read ^%none_reg' # BAD_REG_NAME +check_error 'p vfs_read ^%%none_reg' # BAD_REG_NAME check_error 'p vfs_read ^@12345678abcde' # BAD_MEM_ADDR check_error 'p vfs_read ^@+10' # FILE_ON_KPROBE grep -q "imm-value" README && \ -check_error 'p vfs_read arg1=\^x' # BAD_IMM +check_error 'p vfs_read arg1=\\^x' # BAD_IMM grep -q "imm-string" README && \ -check_error 'p vfs_read arg1=\"abcd^' # IMMSTR_NO_CLOSE +check_error 'p vfs_read arg1=\\"abcd^' # IMMSTR_NO_CLOSE check_error 'p vfs_read ^+0@0)' # DEREF_NEED_BRACE check_error 'p vfs_read ^+0ab1(@0)' # BAD_DEREF_OFFS @@ -80,7 +80,7 @@ check_error 'p vfs_read arg1=^' # NO_ARG_BODY # instruction boundary check is valid on x86 (at this moment) case $(uname -m) in x86_64|i[3456]86) - echo 'p vfs_read' > kprobe_events + printf 'p vfs_read' > kprobe_events if grep -q FTRACE ../kprobes/list ; then check_error 'p ^vfs_read+3' # BAD_INSN_BNDRY (only if function-tracer is enabled) fi @@ -89,13 +89,13 @@ esac # multiprobe errors if grep -q "Create/append/" README && grep -q "imm-value" README; then -echo 'p:kprobes/testevent _do_fork' > kprobe_events +printf 'p:kprobes/testevent _do_fork' > kprobe_events check_error '^r:kprobes/testevent do_exit' # DIFF_PROBE_TYPE -echo 'p:kprobes/testevent _do_fork abcd=\1' > kprobe_events -check_error 'p:kprobes/testevent _do_fork ^bcd=\1' # DIFF_ARG_TYPE -check_error 'p:kprobes/testevent _do_fork ^abcd=\1:u8' # DIFF_ARG_TYPE -check_error 'p:kprobes/testevent _do_fork ^abcd=\"foo"' # DIFF_ARG_TYPE -check_error '^p:kprobes/testevent _do_fork abcd=\1' # SAME_PROBE +printf 'p:kprobes/testevent _do_fork abcd=\\1' > kprobe_events +check_error 'p:kprobes/testevent _do_fork ^bcd=\\1' # DIFF_ARG_TYPE +check_error 'p:kprobes/testevent _do_fork ^abcd=\\1:u8' # DIFF_ARG_TYPE +check_error 'p:kprobes/testevent _do_fork ^abcd=\\"foo"'# DIFF_ARG_TYPE +check_error '^p:kprobes/testevent _do_fork abcd=\\1' # SAME_PROBE fi exit 0 -- 2.25.0