git: d95fbf4e1a12 - main - riscv: save the thread pointer in both modes
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 17 Apr 2023 13:50:00 UTC
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=d95fbf4e1a12565908b04b442263fe60c9e890b4
commit d95fbf4e1a12565908b04b442263fe60c9e890b4
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2023-04-17 13:44:44 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2023-04-17 13:49:52 +0000
riscv: save the thread pointer in both modes
The contents of frame->tf_tp are uninitialized if accessed by DTrace (in
probe context), resulting in a panic when trying to access the memory
pointed to by tp. This saves the thread pointer to the trap frame when
handling both userland and kernel exceptions.
Reviewed by: markj, mhorne
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D39582
---
sys/riscv/riscv/exception.S | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sys/riscv/riscv/exception.S b/sys/riscv/riscv/exception.S
index cf06c364de46..a68e7938e537 100644
--- a/sys/riscv/riscv/exception.S
+++ b/sys/riscv/riscv/exception.S
@@ -56,6 +56,8 @@ __FBSDID("$FreeBSD$");
/* Load our pcpu */
sd tp, (TF_TP)(sp)
ld tp, (TF_SIZE)(sp)
+.else
+ sd tp, (TF_TP)(sp)
.endif
sd t0, (TF_T + 0 * 8)(sp)