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.10 236/452] x86/sev: Annotate stack change in the #VC handler
    Date
    From: Lai Jiangshan <jiangshan.ljs@antgroup.com>

    [ Upstream commit c42b145181aafd59ed31ccd879493389e3ea5a08 ]

    In idtentry_vc(), vc_switch_off_ist() determines a safe stack to
    switch to, off of the IST stack. Annotate the new stack switch with
    ENCODE_FRAME_POINTER in case UNWINDER_FRAME_POINTER is used.

    A stack walk before looks like this:

    CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0-rc7+ #2
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    Call Trace:
    <TASK>
    dump_stack_lvl
    dump_stack
    kernel_exc_vmm_communication
    asm_exc_vmm_communication
    ? native_read_msr
    ? __x2apic_disable.part.0
    ? x2apic_setup
    ? cpu_init
    ? trap_init
    ? start_kernel
    ? x86_64_start_reservations
    ? x86_64_start_kernel
    ? secondary_startup_64_no_verify
    </TASK>

    and with the fix, the stack dump is exact:

    CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0-rc7+ #3
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    Call Trace:
    <TASK>
    dump_stack_lvl
    dump_stack
    kernel_exc_vmm_communication
    asm_exc_vmm_communication
    RIP: 0010:native_read_msr
    Code: ...
    < snipped regs >
    ? __x2apic_disable.part.0
    x2apic_setup
    cpu_init
    trap_init
    start_kernel
    x86_64_start_reservations
    x86_64_start_kernel
    secondary_startup_64_no_verify
    </TASK>

    [ bp: Test in a SEV-ES guest and rewrite the commit message to
    explain what exactly this does. ]

    Fixes: a13644f3a53d ("x86/entry/64: Add entry code for #VC handler")
    Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lore.kernel.org/r/20220316041612.71357-1-jiangshanlai@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/entry/entry_64.S | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
    index a24ce5905ab8..2f2d52729e17 100644
    --- a/arch/x86/entry/entry_64.S
    +++ b/arch/x86/entry/entry_64.S
    @@ -500,6 +500,7 @@ SYM_CODE_START(\asmsym)
    call vc_switch_off_ist
    movq %rax, %rsp /* Switch to new stack */

    + ENCODE_FRAME_POINTER
    UNWIND_HINT_REGS

    /* Update pt_regs */
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 19:50    [W:2.897 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site