[for-next][PATCH 5/9] ktest: Run commands through list-form shell open
From: Steven Rostedt
Date: Mon Mar 16 2026 - 14:42:40 EST
From: =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= <rbm@xxxxxxxx>
run_command() currently uses string-form open():
open(CMD, "$command 2>&1 |")
That delegates parsing to the shell but also mixes the stderr redirection
into the command string. Switch to list-form open() with an explicit sh -c
wrapper so shell syntax errors are captured in the same output stream as
command output. Otherwise, important errors can not be retrieved from the
ktest LOG_FILE.
Cc: John Hawley <warthog9@xxxxxxxxxxxxxx>
Cc: Andrea Righi <arighi@xxxxxxxxxx>
Cc: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
Cc: Matthieu Baerts <matttbe@xxxxxxxxxx>
Cc: Fernando Fernandez Mancera <fmancera@xxxxxxx>
Cc: Pedro Falcato <pfalcato@xxxxxxx>
Link: https://patch.msgid.link/20260307-ktest-fixes-v1-5-565d412f4925@xxxxxxxx
Signed-off-by: Ricardo B. Marlière <rbm@xxxxxxxx>
Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
---
tools/testing/ktest/ktest.pl | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index 42bc505e14cb..9d6f50045dbd 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -1921,7 +1921,10 @@ sub run_command {
doprint("$command ... ");
$start_time = time;
- $pid = open(CMD, "$command 2>&1 |") or
+ $pid = open(CMD, "-|",
+ "sh", "-c",
+ 'command=$1; shift; exec 2>&1; eval "$command"',
+ "sh", $command) or
(fail "unable to exec $command" and return 0);
if (defined($opt{"LOG_FILE"})) {
--
2.51.0