[PATCH] arm64: Don't call NULL in do_compat_alignment_fixup
Anshuman Khandual
anshuman.khandual at arm.com
Tue Apr 1 00:47:53 PDT 2025
On 4/1/25 12:28, Angelos Oikonomopoulos wrote:
> On Tue Apr 1, 2025 at 8:05 AM CEST, Anshuman Khandual wrote:
>> On 3/31/25 14:24, Angelos Oikonomopoulos wrote:
>>> do_alignment_t32_to_handler only fixes up alignment faults for specific
>>> instructions; it returns NULL otherwise. When that's the case, signal to
>>> the caller that it needs to proceed with the regular alignment fault
>>> handling (i.e. SIGBUS).
>>>
>>> Signed-off-by: Angelos Oikonomopoulos <angelos at igalia.com>
>>> ---
>>> arch/arm64/kernel/compat_alignment.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/arch/arm64/kernel/compat_alignment.c b/arch/arm64/kernel/compat_alignment.c
>>> index deff21bfa680..b68e1d328d4c 100644
>>> --- a/arch/arm64/kernel/compat_alignment.c
>>> +++ b/arch/arm64/kernel/compat_alignment.c
>>> @@ -368,6 +368,8 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)
>>> return 1;
>>> }
>>>
>>> + if (!handler)
>>> + return 1;
>>
>> do_alignment_t32_to_handler() could return NULL, returning 1 seems to be
>> the right thing to do here and consistent. Otherwise does this cause a
>> kernel crash during subsequent call into handler() ?
>
> Yes. We call a NULL pointer so we Oops.
Then the commit message should have the kernel Oops splash dump and also
might need to have Fixes: and CC: stable tags etc ?
Also wondering if handler return value should be checked inside the switch
block just after do_alignment_t32_to_handler() assignment.
handler = do_alignment_t32_to_handler()
if (!handler)
return 1
More information about the linux-arm-kernel
mailing list