aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Horne <mhorne@FreeBSD.org>2021-04-07 19:23:46 +0000
committerMitchell Horne <mhorne@FreeBSD.org>2021-04-16 13:47:32 +0000
commit17b0a38d96feb77d4b019ab9108b2c5050273823 (patch)
tree3d953357c18a3b7dfbfc56c68e7bef819d1bd56e
parent02816ecfb93542705e73c108d4d8214450529059 (diff)
downloadsrc-17b0a38d96feb77d4b019ab9108b2c5050273823.tar.gz
src-17b0a38d96feb77d4b019ab9108b2c5050273823.zip
arm64: clear debug register state on fork
Following the analogous change for amd64 and i386 in 8223717ce62c, ensure that new processes start with these registers inactive. PR: 254661 Reported by: Michał Górny Reviewed by: kib, emaste Sponsored by: The FreeBSD Foundation (cherry picked from commit 1fd001db9c330f133708f3c04c8852f8b07cfed9)
-rw-r--r--sys/arm64/arm64/vm_machdep.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/arm64/arm64/vm_machdep.c b/sys/arm64/arm64/vm_machdep.c
index ac2a47597a8c..b2ab8bb463b0 100644
--- a/sys/arm64/arm64/vm_machdep.c
+++ b/sys/arm64/arm64/vm_machdep.c
@@ -93,6 +93,9 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags)
td2->td_pcb = pcb2;
bcopy(td1->td_pcb, pcb2, sizeof(*pcb2));
+ /* Clear the debug register state. */
+ bzero(&pcb2->pcb_dbg_regs, sizeof(pcb2->pcb_dbg_regs));
+
tf = (struct trapframe *)STACKALIGN((struct trapframe *)pcb2 - 1);
bcopy(td1->td_frame, tf, sizeof(*tf));
tf->tf_x[0] = 0;