aboutsummaryrefslogtreecommitdiff
path: root/tools/testing/selftests/livepatch/functions.sh
AgeCommit message (Collapse)AuthorFilesLines
2020-08-27selftests/livepatch: Do not check order when using "comm" for dmesg checkingMiroslav Benes1-1/+1
check_result() uses "comm" to check expected results of selftests output in dmesg. Everything works fine if timestamps in dmesg are unique. If not, like in this example [ 86.844422] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 86.844422] livepatch: 'test_klp_callbacks_demo': starting unpatching transition , "comm" fails with "comm: file 2 is not in sorted order". Suppress the order checking with --nocheck-order option. Fixes: 2f3f651f3756 ("selftests/livepatch: Use "comm" instead of "diff" for dmesg") Signed-off-by: Miroslav Benes <[email protected]> Acked-by: Joe Lawrence <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
2020-07-15selftests/livepatch: adopt to newer sysctl error formatPetr Mladek1-1/+2
With procfs v3.3.16, the sysctl command doesn't print the set key and value on error. This change breaks livepatch selftest test-ftrace.sh, that tests the interaction of sysctl ftrace_enabled: Make it work with all sysctl versions using '-q' option. Explicitly print the final status on success so that it can be verified in the log. The error message is enough on failure. Reported-by: Kamalesh Babulal <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Reviewed-by: Joe Lawrence <[email protected]> Acked-by: Miroslav Benes <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2020-07-14selftests/livepatch: Use "comm" instead of "diff" for dmesgJoe Lawrence1-1/+1
BusyBox diff doesn't support the GNU diff '--LTYPE-line-format' options that were used in the selftests to filter older kernel log messages from dmesg output. Use "comm" which is more available in smaller boot environments. Reported-by: Naresh Kamboju <[email protected]> Signed-off-by: Joe Lawrence <[email protected]> Reviewed-by: Yannick Cote <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2020-06-19selftests/livepatch: add test delimiter to dmesgJoe Lawrence1-0/+1
Make it bit easier to parse the kernel logs during the selftests by adding a "===== TEST: $test =====" delimiter when each individual test begins. Suggested-by: Petr Mladek <[email protected]> Signed-off-by: Joe Lawrence <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Reviewed-by: Yannick Cote <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Acked-by: Miroslav Benes <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2020-06-19selftests/livepatch: refine dmesg 'taints' in dmesg comparisonJoe Lawrence1-1/+2
The livepatch selftests currently grep on "taints" to filter out "tainting kernel with TAINT_LIVEPATCH" messages which may be logged when loading livepatch modules. Further filter the log to drop "loading out-of-tree module taints kernel" in the rare case the klp_test modules have been built out-of-tree. Look for the longer "taints kernel" or "tainting kernel" strings to avoid inadvertent partial matching. Signed-off-by: Joe Lawrence <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Reviewed-by: Yannick Cote <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Acked-by: Miroslav Benes <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2020-06-19selftests/livepatch: Don't clear dmesg when running testsJoe Lawrence1-2/+33
Inspired by commit f131d9edc29d ("selftests/lkdtm: Don't clear dmesg when running tests"), keep a reference dmesg copy when beginning each test. This way check_result() can compare against the initial copy rather than relying upon an empty log. Signed-off-by: Joe Lawrence <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Reviewed-by: Yannick Cote <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Acked-by: Miroslav Benes <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2020-01-16selftests/livepatch: Remove unused local variable in set_ftrace_enabled()Miroslav Benes1-1/+0
set_ftrace_enabled() contains unused local variable "sysctl". Remove it. Signed-off-by: Miroslav Benes <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
2019-12-23selftests: livepatch: Fix it to do root uid check and skipShuah Khan1-1/+14
livepatch test configures the system and debug environment to run tests. Some of these actions fail without root access and test dumps several permission denied messages before it exits. Fix test-state.sh to call setup_config instead of set_dynamic_debug as suggested by Petr Mladek <[email protected]> Fix it to check root uid and exit with skip code instead. Signed-off-by: Shuah Khan <[email protected]> Acked-by: Joe Lawrence <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
2019-11-04selftests/livepatch: Test interaction with ftrace_enabledJoe Lawrence1-1/+13
Since livepatching depends upon ftrace handlers to implement "patched" code functionality, verify that the ftrace_enabled sysctl value interacts with livepatch registration as expected. At the same time, ensure that ftrace_enabled is set and part of the test environment configuration that is saved and restored when running the selftests. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Joe Lawrence <[email protected]> Signed-off-by: Miroslav Benes <[email protected]> Signed-off-by: Steven Rostedt (VMware) <[email protected]>
2019-11-04selftests/livepatch: Make dynamic debug setup and restore genericJoe Lawrence1-9/+13
Livepatch selftests currently save the current dynamic debug config and tweak it for the selftests. The config is restored at the end. Make the infrastructure generic, so that more variables can be saved and restored. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Joe Lawrence <[email protected]> Signed-off-by: Miroslav Benes <[email protected]> Signed-off-by: Steven Rostedt (VMware) <[email protected]>
2019-07-30selftests/livepatch: push and pop dynamic debug configJoe Lawrence1-6/+20
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits. Note this functionality needs to keep in sync with: - dynamic_debug input/output formatting - functions affected by set_dynamic_debug() For example, push_dynamic_debug() transforms: kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012" to the following: file kernel/livepatch/transition.c line 530 =_ Signed-off-by: Joe Lawrence <[email protected]> Tested-by: Petr Mladek <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
2019-07-24selftests/livepatch: add test skip handlingJoe Lawrence1-0/+20
Add a skip() message function that stops the test, logs an explanation, and sets the "skip" return code (4). Before loading a livepatch self-test kernel module, first verify that we've built and installed it by running a 'modprobe --dry-run'. This should catch a few environment issues, including !CONFIG_LIVEPATCH and !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new skip() function. Reported-by: Jiri Benc <[email protected]> Suggested-by: Shuah Khan <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Signed-off-by: Joe Lawrence <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
2019-02-12livepatch/selftests: use "$@" to preserve argument listJoe Lawrence1-12/+7
The livepatch selftest functions.sh library uses "$*" and an intermediate variable to extract and then pass arguments from function to function call. The effect of this combination is that the argument list is flattened into a single argument. Sometimes this is benign, but in cases like __load_mod(), the modprobe invocation will interpret all the module parameters as a single parameter. Drop the intermediate variable and use the "$@" special parameter as described in the bash manual. Link: https://www.gnu.org/software/bash/manual/bash.html#Special-Parameters Signed-off-by: Joe Lawrence <[email protected]> Reviewed-by: Kamalesh Babulal <[email protected]> Acked-by: Miroslav Benes <[email protected]> Signed-off-by: Petr Mladek <[email protected]>
2019-01-11selftests/livepatch: introduce testsJoe Lawrence1-0/+203
Add a few livepatch modules and simple target modules that the included regression suite can run tests against: - basic livepatching (multiple patches, atomic replace) - pre/post (un)patch callbacks - shadow variable API Signed-off-by: Joe Lawrence <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Tested-by: Miroslav Benes <[email protected]> Tested-by: Alice Ferrazzi <[email protected]> Acked-by: Joe Lawrence <[email protected]> Acked-by: Josh Poimboeuf <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>