Re: [RFC PATCH -next V3 4/6] arm64: add copy_{to, from}_user to machine check safe
From: Robin Murphy
Date: Tue Apr 12 2022 - 13:18:06 EST
On 12/04/2022 6:08 pm, Robin Murphy wrote:
[...]
@@ -62,7 +63,11 @@ SYM_FUNC_START(__arch_copy_from_user)
ret
// Exception fixups
-9997: cmp dst, dstin
+9997: mrs esr, esr_el1 // Check exception first
+ and esr, esr, #ESR_ELx_FSC
+ cmp esr, #ESR_ELx_FSC_EXTABT
Should we be checking EC to make sure it's a data abort - and thus FSC
is valid - in the first place? I'm a little fuzzy on all the possible
paths into fixup_exception(), and it's not entirely obvious whether this
is actually safe or not.
In fact, thinking some more about that, I don't think there should be
any need for this sort of logic in these handlers at all. The
fixup_exception() machinery should already know enough about the
exception that's happened and the extable entry to figure this out and
not bother calling the handler at all.
Thanks,
Robin.