Messages in this thread | | | Date | Mon, 10 Jan 2022 09:03:49 +0100 | Subject | Re: [PATCH v3 12/13] riscv: Initialize thread pointer before calling C functions | From | Alexandre ghiti <> |
| |
Hi Palmer,
I fell onto this issue again today, do you think you could take this patch in for-next? Because I assume it is too late now to take the sv48 patchset: if not, I can respin it today or tomorrow.
Thanks,
Alex
On 12/6/21 11:46, Alexandre Ghiti wrote: > Because of the stack canary feature that reads from the current task > structure the stack canary value, the thread pointer register "tp" must > be set before calling any C function from head.S: by chance, setup_vm > and all the functions that it calls does not seem to be part of the > functions where the canary check is done, but in the following commits, > some functions will. > > Fixes: f2c9699f65557a31 ("riscv: Add STACKPROTECTOR supported") > Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> > --- > arch/riscv/kernel/head.S | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S > index c3c0ed559770..86f7ee3d210d 100644 > --- a/arch/riscv/kernel/head.S > +++ b/arch/riscv/kernel/head.S > @@ -302,6 +302,7 @@ clear_bss_done: > REG_S a0, (a2) > > /* Initialize page tables and relocate to virtual addresses */ > + la tp, init_task > la sp, init_thread_union + THREAD_SIZE > XIP_FIXUP_OFFSET sp > #ifdef CONFIG_BUILTIN_DTB
| |