]> git.baikalelectronics.ru Git - kernel.git/commit
kselftests/arm64: add a basic Pointer Authentication test
authorBoyan Karatotev <boyan.karatotev@arm.com>
Fri, 18 Sep 2020 10:47:12 +0000 (11:47 +0100)
committerWill Deacon <will@kernel.org>
Fri, 18 Sep 2020 13:07:20 +0000 (14:07 +0100)
commitca12b7bf8a83e94eaa11e2cc08183d5fa492e060
treeed513f9ab64382c5be64d0ab5ff995bb07a4b21c
parentbeea5f8bd9170d3d0e6476d33bde88d795ce40b0
kselftests/arm64: add a basic Pointer Authentication test

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>
tools/testing/selftests/arm64/Makefile
tools/testing/selftests/arm64/pauth/.gitignore [new file with mode: 0644]
tools/testing/selftests/arm64/pauth/Makefile [new file with mode: 0644]
tools/testing/selftests/arm64/pauth/helper.h [new file with mode: 0644]
tools/testing/selftests/arm64/pauth/pac.c [new file with mode: 0644]
tools/testing/selftests/arm64/pauth/pac_corruptor.S [new file with mode: 0644]