[PATCH] kselftest/arm64: pac: Fix skipping of tests on systems without PAC

Amit Kachhap amit.kachhap at arm.com
Fri Aug 20 00:09:39 PDT 2021



On 8/19/21 10:27 PM, Mark Brown wrote:
> The PAC tests check to see if the system supports the relevant PAC features
> but instead of skipping the tests if they can't be executed they fail the
> tests which makes things look like they're not working when they are.
> 
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
>   tools/testing/selftests/arm64/pauth/pac.c | 10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/testing/selftests/arm64/pauth/pac.c b/tools/testing/selftests/arm64/pauth/pac.c
> index 592fe538506e..b743daa772f5 100644
> --- a/tools/testing/selftests/arm64/pauth/pac.c
> +++ b/tools/testing/selftests/arm64/pauth/pac.c
> @@ -25,13 +25,15 @@
>   do { \
>   	unsigned long hwcaps = getauxval(AT_HWCAP); \
>   	/* data key instructions are not in NOP space. This prevents a SIGILL */ \
> -	ASSERT_NE(0, hwcaps & HWCAP_PACA) TH_LOG("PAUTH not enabled"); \
> +	if (!(hwcaps & HWCAP_PACA))					\
> +		SKIP(return, "PAUTH not enabled"); \
>   } while (0)
>   #define ASSERT_GENERIC_PAUTH_ENABLED() \

May be ASSERT_GENERIC_PAUTH_ENABLED can be replaced with
something like VERIFY_GENERIC_PAUTH_ENABLED

or can be modified like below and instead of failing it skips with a
message

   -	ASSERT_NE(0, hwcaps & HWCAP_PACA) TH_LOG("PAUTH not enabled"); \
   +	ASSERT_NE(0, hwcaps & HWCAP_PACA) SKIP(return, "PAUTH not 
enabled"); \					


>   do { \
>   	unsigned long hwcaps = getauxval(AT_HWCAP); \
>   	/* generic key instructions are not in NOP space. This prevents a SIGILL */ \
> -	ASSERT_NE(0, hwcaps & HWCAP_PACG) TH_LOG("Generic PAUTH not enabled"); \
> +	if (!(hwcaps & HWCAP_PACG)) \
> +		SKIP(return, "Generic PAUTH not enabled");	\
>   } while (0)
>   
>   void sign_specific(struct signatures *sign, size_t val)
> @@ -256,7 +258,7 @@ TEST(single_thread_different_keys)
>   	unsigned long hwcaps = getauxval(AT_HWCAP);
>   
>   	/* generic and data key instructions are not in NOP space. This prevents a SIGILL */
> -	ASSERT_NE(0, hwcaps & HWCAP_PACA) TH_LOG("PAUTH not enabled");
> +	ASSERT_PAUTH_ENABLED();
>   	if (!(hwcaps & HWCAP_PACG)) {
>   		TH_LOG("WARNING: Generic PAUTH not enabled. Skipping generic key checks");
>   		nkeys = NKEYS - 1;
> @@ -299,7 +301,7 @@ TEST(exec_changed_keys)
>   	unsigned long hwcaps = getauxval(AT_HWCAP);
>   
>   	/* generic and data key instructions are not in NOP space. This prevents a SIGILL */
> -	ASSERT_NE(0, hwcaps & HWCAP_PACA) TH_LOG("PAUTH not enabled");
> +	ASSERT_PAUTH_ENABLED();
>   	if (!(hwcaps & HWCAP_PACG)) {
>   		TH_LOG("WARNING: Generic PAUTH not enabled. Skipping generic key checks");
>   		nkeys = NKEYS - 1;
> 



More information about the linux-arm-kernel mailing list