]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ktest: Treat undefined self-reference as empty
authorRicardo B. Marlière <rbm@suse.com>
Sat, 7 Mar 2026 22:07:58 +0000 (19:07 -0300)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 9 Mar 2026 14:32:07 +0000 (10:32 -0400)
Config variables are expanded when they are assigned. A first-time append
such as:

  VAR := ${VAR} foo

leaves the literal ${VAR} in the stored value because VAR has not been
defined yet. Later expansions then carry the self-reference forward instead
of behaving like an empty prefix.

Drop an unescaped self-reference when the variable has no current value,
and trim the outer whitespace left behind. Keep escaped \${VAR} references
unchanged so literal text still works.

Cc: John Hawley <warthog9@eaglescrag.net>
Cc: Andrea Righi <arighi@nvidia.com>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>
Cc: Matthieu Baerts <matttbe@kernel.org>
Cc: Fernando Fernandez Mancera <fmancera@suse.de>
Cc: Pedro Falcato <pfalcato@suse.de>
Link: https://patch.msgid.link/20260307-ktest-fixes-v1-3-565d412f4925@suse.com
Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl

index b7a1c8c617e02e80b5f3c2a4c29b383acee2aa44..b8fcdabffffea318c6416c68f76959f6e007f652 100755 (executable)
@@ -910,6 +910,14 @@ sub set_variable {
     if (defined($command_tmp_vars{$lvalue})) {
        return;
     }
+
+    # If a variable is undefined, treat an unescaped self-reference as empty.
+    if (!defined($variable{$lvalue})) {
+       $rvalue =~ s/(?<!\\)\$\{\Q$lvalue\E\}//g;
+       $rvalue =~ s/^\s+//;
+       $rvalue =~ s/\s+$//;
+    }
+
     if ($rvalue =~ /^\s*$/) {
        delete $variable{$lvalue};
     } else {