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.
Signed-off-by: Miroslav Benes <[email protected]>
---
The strange thing is, I can reproduce the issue easily and reliably on
older codestreams (4.12) but not on current upstream in my testing
environment. I think the change makes sense regardless though.
tools/testing/selftests/livepatch/functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh
index 1aba83c87ad3..846c7ed71556 100644
--- a/tools/testing/selftests/livepatch/functions.sh
+++ b/tools/testing/selftests/livepatch/functions.sh
@@ -278,7 +278,7 @@ function check_result {
# help differentiate repeated testing runs. Remove them with a
# post-comparison sed filter.
- result=$(dmesg | comm -13 "$SAVED_DMESG" - | \
+ result=$(dmesg | comm --nocheck-order -13 "$SAVED_DMESG" - | \
grep -e 'livepatch:' -e 'test_klp' | \
grep -v '\(tainting\|taints\) kernel' | \
sed 's/^\[[ 0-9.]*\] //')
--
2.28.0
On Thu, Aug 27, 2020 at 01:07:09PM +0200, Miroslav Benes wrote:
> 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
>
Heh, our assumption that the timestamps would provide sorting wasn't
true after all.
> , "comm" fails with "comm: file 2 is not in sorted order". Suppress the
> order checking with --nocheck-order option.
>
> Signed-off-by: Miroslav Benes <[email protected]>
Acked-by: Joe Lawrence <[email protected]>
And not so important for selftests, but helpful for backporting efforts:
Fixes: 2f3f651f3756 ("selftests/livepatch: Use "comm" instead of "diff" for dmesg")
> ---
>
> The strange thing is, I can reproduce the issue easily and reliably on
> older codestreams (4.12) but not on current upstream in my testing
> environment. I think the change makes sense regardless though.
>
We haven't backported v5.8 changes just yet, so thanks for finding this
one and posting a fix.
-- Joe
> tools/testing/selftests/livepatch/functions.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh
> index 1aba83c87ad3..846c7ed71556 100644
> --- a/tools/testing/selftests/livepatch/functions.sh
> +++ b/tools/testing/selftests/livepatch/functions.sh
> @@ -278,7 +278,7 @@ function check_result {
> # help differentiate repeated testing runs. Remove them with a
> # post-comparison sed filter.
>
> - result=$(dmesg | comm -13 "$SAVED_DMESG" - | \
> + result=$(dmesg | comm --nocheck-order -13 "$SAVED_DMESG" - | \
> grep -e 'livepatch:' -e 'test_klp' | \
> grep -v '\(tainting\|taints\) kernel' | \
> sed 's/^\[[ 0-9.]*\] //')
> --
> 2.28.0
>
On Thu, 27 Aug 2020, Joe Lawrence wrote:
> > , "comm" fails with "comm: file 2 is not in sorted order". Suppress the
> > order checking with --nocheck-order option.
> >
> > Signed-off-by: Miroslav Benes <[email protected]>
>
> Acked-by: Joe Lawrence <[email protected]>
>
> And not so important for selftests, but helpful for backporting efforts:
>
> Fixes: 2f3f651f3756 ("selftests/livepatch: Use "comm" instead of "diff" for dmesg")
I've added the Fixes: tag and applied to for-5.9/upstream-fixes. Thanks,
--
Jiri Kosina
SUSE Labs