e74e1d5572
PAuth signs and verifies return addresses on the stack. It does so by inserting a Pointer Authentication code (PAC) into some of the unused top bits of an address. This is achieved by adding paciasp/autiasp instructions at the beginning and end of a function. This feature is partially backwards compatible with earlier versions of the ARM architecture. To coerce the compiler into emitting fully backwards compatible code the main file is compiled to target an earlier ARM version. This allows the tests to check for the feature and print meaningful error messages instead of crashing. Add a test to verify that corrupting the return address results in a SIGSEGV on return. Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Reviewed-by: Vincenzo Frascino <Vincenzo.Frascino@arm.com> Reviewed-by: Amit Daniel Kachhap <amit.kachhap@arm.com> Acked-by: Shuah Khan <skhan@linuxfoundation.org> Cc: Shuah Khan <shuah@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20200918104715.182310-2-boian4o1@gmail.com Signed-off-by: Will Deacon <will@kernel.org>
KSelfTest ARM64 =============== - These tests are arm64 specific and so not built or run but just skipped completely when env-variable ARCH is found to be different than 'arm64' and `uname -m` reports other than 'aarch64'. - Holding true the above, ARM64 KSFT tests can be run within the KSelfTest framework using standard Linux top-level-makefile targets: $ make TARGETS=arm64 kselftest-clean $ make TARGETS=arm64 kselftest or $ make -C tools/testing/selftests TARGETS=arm64 \ INSTALL_PATH=<your-installation-path> install or, alternatively, only specific arm64/ subtargets can be picked: $ make -C tools/testing/selftests TARGETS=arm64 ARM64_SUBTARGETS="tags signal" \ INSTALL_PATH=<your-installation-path> install Further details on building and running KFST can be found in: Documentation/dev-tools/kselftest.rst