]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: defer: Allow spaces in arguments of deferred commands
authorPetr Machata <petrm@nvidia.com>
Thu, 4 Sep 2025 17:07:24 +0000 (19:07 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 12 Sep 2025 02:02:50 +0000 (19:02 -0700)
Currently the way deferred commands are stored and invoked causes any
whitespace to act as an argument separator when the command is executed.
To make it possible to use spaces in deferred commands, store the commands
quoted, and then eval the string prior to execution.

Fixes: a6e263f125cd ("selftests: net: lib: Introduce deferred commands")
Signed-off-by: Petr Machata <petrm@nvidia.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/6c2523139a6f99103889c9c9fedcdc66a75441f4.1757004393.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/lib/sh/defer.sh

index 082f5d38321bee11b21c3b110ce3ff68ff6e3441..6c642f3d0ced6a425783c334c38d0d31dffc69a0 100644 (file)
@@ -39,7 +39,7 @@ __defer__run()
        local defer_ix=$1; shift
        local defer_key=$(__defer__defer_key $track $defer_ix)
 
-       ${__DEFER__JOBS[$defer_key]}
+       eval ${__DEFER__JOBS[$defer_key]}
        unset __DEFER__JOBS[$defer_key]
 }
 
@@ -49,7 +49,7 @@ __defer__schedule()
        local ndefers=$(__defer__ndefers $track)
        local ndefers_key=$(__defer__ndefer_key $track)
        local defer_key=$(__defer__defer_key $track $ndefers)
-       local defer="$@"
+       local defer="${@@Q}"
 
        __DEFER__JOBS[$defer_key]="$defer"
        __DEFER__NJOBS[$ndefers_key]=$((ndefers + 1))