mbox series

[0/2] selftests: landlock: fix runs on older systems

Message ID 20230809170435.1312162-1-andre.przywara@arm.com (mailing list archive)
Headers show
Series selftests: landlock: fix runs on older systems | expand

Message

Andre Przywara Aug. 9, 2023, 5:04 p.m. UTC
When naively running all kselftests on some systems, it was observed
that the landlock selftest is quite picky and reports failures, even
though the system is fine.

Those two patches relax some tests to make them pass on older kernels:
- The landlock ABI version is only "3" in recent kernels, so patch 1/2
  relaxes the test to accept other numbers.
- Older kernels or some defconfig based kernels might not implement
  the landlock syscall at all. Patch 2/2 catches this.

I couldn't find an easy way to not check for the syscall availability in
*every* test in base_test.c, short of not using TEST_HARNESS_MAIN at all.
If someone has a better idea, I am all ears, especially as this approach
will get quite annoying in fs_base.c.

Cheers,
Andre

Andre Przywara (2):
  selftests: landlock: allow other ABI versions
  selftests: landlock: skip all tests without landlock syscall

 tools/testing/selftests/landlock/base_test.c | 29 +++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

Comments

Mickaël Salaün Aug. 17, 2023, 5:25 p.m. UTC | #1
Hi Andre,

On Wed, Aug 09, 2023 at 06:04:33PM +0100, Andre Przywara wrote:
> When naively running all kselftests on some systems, it was observed
> that the landlock selftest is quite picky and reports failures, even
> though the system is fine.

Indeed, the current Landlock test suite only checks for the Landlock ABI
of the same source tree as the kselftest files, hence the strict
abi_version test.

> 
> Those two patches relax some tests to make them pass on older kernels:
> - The landlock ABI version is only "3" in recent kernels, so patch 1/2
>   relaxes the test to accept other numbers.
> - Older kernels or some defconfig based kernels might not implement
>   the landlock syscall at all. Patch 2/2 catches this.
> 
> I couldn't find an easy way to not check for the syscall availability in
> *every* test in base_test.c, short of not using TEST_HARNESS_MAIN at all.
> If someone has a better idea, I am all ears, especially as this approach
> will get quite annoying in fs_base.c.

I'd like to take such changes but we need to be more generic, and if
possible avoid being too verbose.

For the more generic part, tests should be skipped according to the
Landlock ABI of the running kernel: i.e. a test should pass iff
ABI >= N.

For the verbosity improvements, we can rely on new macros as explain in
the following email.

> 
> Cheers,
> Andre
> 
> Andre Przywara (2):
>   selftests: landlock: allow other ABI versions
>   selftests: landlock: skip all tests without landlock syscall
> 
>  tools/testing/selftests/landlock/base_test.c | 29 +++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
> 
> -- 
> 2.25.1
>