lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 007/879] riscv: Initialize thread pointer before calling C functions
    Date
    From: Alexandre Ghiti <alexandre.ghiti@canonical.com>

    commit 35d33c76d68dfacc330a8eb477b51cc647c5a847 upstream.

    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>
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/riscv/kernel/head.S | 1 +
    1 file changed, 1 insertion(+)

    --- a/arch/riscv/kernel/head.S
    +++ b/arch/riscv/kernel/head.S
    @@ -297,6 +297,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

    \
     
     \ /
      Last update: 2022-06-08 00:03    [W:4.047 / U:0.544 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site