Message ID | 20221027155908.1940624-1-ardb@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | arm64: dynamic shadow call stack support | expand |
On Thu, Oct 27, 2022 at 05:59:05PM +0200, Ard Biesheuvel wrote: > In order to allow runtimes to unwind call stacks that involve return > address signing, we track whether or not the return address is currently > signed by means of DWARF CFI directives in the unwinding metadata. This > means we can use this information to locate all PACIASP/AUTIASP > instructions in the binary, instead of having to use brute force and go > over all instructions in the entire program. > > This series implements this approach for Clang, which has been vetted > (and fixed in release 15) to ensure that the unwind metadata is 100% > accurate when it comes to PACIASP/AUTIASP occurrences. Sadly, GCC does > not always get that quite right, so this series is Clang-only for the > moment. Hi Will, Can you please pick this up for v6.2? This has been needed for a while now. :) Thanks! -Kees
On Thu, 27 Oct 2022 17:59:05 +0200, Ard Biesheuvel wrote: > Generic kernel images such as Android's GKI usually enable all available > security features, which are typically implemented in such a way that > they only take effect if the underlying hardware can support it, but > don't interfere with correct and efficient operation otherwise. > > For shadow call stack support, which is always supported by the > hardware, it means it will be enabled even if pointer authentication is > also supported, and enabled for signing return addresses stored on the > stack. The additional security provided by shadow call stack is only > marginal in this case, whereas the performance overhead is not. > > [...] Applied to arm64 (for-next/dynamic-scs), thanks! [1/3] arm64: unwind: add asynchronous unwind tables to kernel and modules https://git.kernel.org/arm64/c/68c76ad4a957 [2/3] scs: add support for dynamic shadow call stacks https://git.kernel.org/arm64/c/9beccca09840 [3/3] arm64: implement dynamic shadow call stack for Clang https://git.kernel.org/arm64/c/3b619e22c460 Cheers,