lkml.org 
[lkml]   [2022]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH V5 08/11] riscv: Support HAVE_IRQ_EXIT_ON_IRQ_STACK
    On Sun, Sep 18, 2022 at 11:52:43AM -0400, guoren@kernel.org wrote:

    > +ENTRY(call_on_stack)
    > + /* Create a frame record to save our ra and fp */
    > + addi sp, sp, -RISCV_SZPTR
    > + REG_S ra, (sp)
    > + addi sp, sp, -RISCV_SZPTR
    > + REG_S fp, (sp)
    > +
    > + /* Save sp in fp */
    > + move fp, sp
    > +
    > + /* Move to the new stack and call the function there */
    > + li a3, IRQ_STACK_SIZE
    > + add sp, a1, a3
    > + jalr a2
    > +
    > + /*
    > + * Restore sp from prev fp, and fp, ra from the frame
    > + */
    > + move sp, fp
    > + REG_L fp, (sp)
    > + addi sp, sp, RISCV_SZPTR
    > + REG_L ra, (sp)
    > + addi sp, sp, RISCV_SZPTR
    > + ret
    > +ENDPROC(call_on_stack)

    IIRC x86_64 moved away from a stack-switch function like this because it
    presents a convenient exploit gadget.

    I'm not much of an exploit writer and I've no idea how effective our
    inline stategy is, perhaps other can comment.

    \
     
     \ /
      Last update: 2022-09-19 15:46    [W:2.991 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site