git: e7f369b1c18c - main - Use the correct length when copying arm64 vfp registers
Andrew Turner
andrew at FreeBSD.org
Mon Jun 14 14:54:16 UTC 2021
The branch main has been updated by andrew:
URL: https://cgit.FreeBSD.org/src/commit/?id=e7f369b1c18ca0377bb0b016b4cab3f0de2a74c5
commit e7f369b1c18ca0377bb0b016b4cab3f0de2a74c5
Author: Andrew Turner <andrew at FreeBSD.org>
AuthorDate: 2021-06-14 11:01:46 +0000
Commit: Andrew Turner <andrew at FreeBSD.org>
CommitDate: 2021-06-14 14:53:10 +0000
Use the correct length when copying arm64 vfp registers
We passed the wrong length into memcpy in the arm64 get_fpcontext and
set_fpcontext. This caused us to copy two status registers we didn't
expect to copy.
These are safe as they exist in both the source and destination, although
in a different order, and we copy the correct values after the memcpy.
Obtained from: CheriBSD
Sponsored by: Innovate UK
---
sys/arm64/arm64/machdep.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c
index 71aa45b47d59..82a77ce184d8 100644
--- a/sys/arm64/arm64/machdep.c
+++ b/sys/arm64/arm64/machdep.c
@@ -650,7 +650,7 @@ get_fpcontext(struct thread *td, mcontext_t *mcp)
KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0,
("Non-userspace FPU flags set in get_fpcontext"));
memcpy(mcp->mc_fpregs.fp_q, curpcb->pcb_fpustate.vfp_regs,
- sizeof(mcp->mc_fpregs));
+ sizeof(mcp->mc_fpregs.fp_q));
mcp->mc_fpregs.fp_cr = curpcb->pcb_fpustate.vfp_fpcr;
mcp->mc_fpregs.fp_sr = curpcb->pcb_fpustate.vfp_fpsr;
mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags;
@@ -681,7 +681,7 @@ set_fpcontext(struct thread *td, mcontext_t *mcp)
KASSERT(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate,
("Called set_fpcontext while the kernel is using the VFP"));
memcpy(curpcb->pcb_fpustate.vfp_regs, mcp->mc_fpregs.fp_q,
- sizeof(mcp->mc_fpregs));
+ sizeof(mcp->mc_fpregs.fp_q));
curpcb->pcb_fpustate.vfp_fpcr = mcp->mc_fpregs.fp_cr;
curpcb->pcb_fpustate.vfp_fpsr = mcp->mc_fpregs.fp_sr;
curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_USERMASK;
More information about the dev-commits-src-main
mailing list