Re: [PATCH] Ensure kernel AI key is not changed on fork
From: Derrick McKee <hidden>
Date: 2021-05-20 18:24:20
Also in:
lkml
On Thu, May 20, 2021 at 12:00 PM Mark Rutland [off-list ref] wrote:
On the kernel side, we use a unique IA key per kernel thread, and while this must remain the same *for that kernel thread*, the kernel IA key should differ across kernel threads when a fork() occurs.
Thank you for the clarification.
I think you're trying to use the keys in a different way than upstream intends to, and we do not need this change as-is. So NAK to this patch as it stands.
Given the above discussion, I agree with the NAK.
quoted
--- arch/arm64/include/asm/pointer_auth.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)diff --git a/arch/arm64/include/asm/pointer_auth.h b/arch/arm64/include/asm/pointer_auth.h index d50416be99be..9748413e72fd 100644 --- a/arch/arm64/include/asm/pointer_auth.h +++ b/arch/arm64/include/asm/pointer_auth.h@@ -69,10 +69,13 @@ static inline void ptrauth_keys_init_user(struct ptrauth_keys_user *keys) ptrauth_keys_install_user(keys); } -static __always_inline void ptrauth_keys_init_kernel(struct ptrauth_keys_kernel *keys) +static __always_inline void +ptrauth_keys_init_kernel(struct ptrauth_keys_kernel *keys) { - if (system_supports_address_auth()) - get_random_bytes(&keys->apia, sizeof(keys->apia)); + if (keys->apia.lo == 0 && keys->apia.hi == 0) { + if (system_supports_address_auth()) + get_random_bytes(&keys->apia, sizeof(keys->apia)); + } } static __always_inline void ptrauth_keys_switch_kernel(struct ptrauth_keys_kernel *keys) --2.31.1
-- Derrick McKee Phone: (703) 957-9362 Email: derrick.mckee@gmail.com _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel