The branch main has been updated by andrew:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=4eec584d79c1e8375d863c7eec7229ac7ec3f13b

commit 4eec584d79c1e8375d863c7eec7229ac7ec3f13b
Author:     Andrew Turner <and...@freebsd.org>
AuthorDate: 2024-06-12 13:08:13 +0000
Commit:     Andrew Turner <and...@freebsd.org>
CommitDate: 2024-06-12 13:08:13 +0000

    arm64: Clear td_frame when returning to userspace
    
    When returning from an exception to userspace clear the saved td_frame.
    On the next exception this should point to the frame, however this is
    not guaranteed.
    
    To ensure the trap frame pointer is either valid or NULL clear it
    before returning to userspace in the EL0 synchronous exception handler.
    
    Reviewed by:    kib, markj
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D44807
---
 sys/arm64/arm64/exception.S | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/arm64/arm64/exception.S b/sys/arm64/arm64/exception.S
index 662684588e0c..3dff834e27a2 100644
--- a/sys/arm64/arm64/exception.S
+++ b/sys/arm64/arm64/exception.S
@@ -252,9 +252,11 @@ ENTRY(handle_el0_sync)
        KMSAN_ENTER
        ldr     x0, [x18, #PC_CURTHREAD]
        mov     x1, sp
+       mov     x22, x0
        str     x1, [x0, #TD_FRAME]
        bl      do_el0_sync
        do_ast
+       str     xzr, [x22, #TD_FRAME]
        KMSAN_LEAVE
        restore_registers 0
        ERET

Reply via email to