aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-07-31 19:47:20 +0000
committerMark Johnston <markj@FreeBSD.org>2026-07-31 19:47:20 +0000
commit1932bd20ed53f2e695a576cffd183937ed25de3f (patch)
tree84dfda0f1e2b715277499cce36c4c4df1906b802
parentea7d35526878ebf82f10080795e462d007485bf1 (diff)
ptrace: Propagate errors from set_fpregs()
Otherwise ptrace(PT_SETREGSET) will not return errors to userspace. Fixes: cef05c5a62ba ("amd64: do not allow to set reserved bits in MXCSR for ptrace(PT_SETFPREGS)") Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D58577
-rw-r--r--sys/kern/imgact_elf.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index 08e9718c4d24..b8a0e439de5c 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -2388,14 +2388,14 @@ __elfN(set_fpregset)(struct regset *rs, struct thread *td, void *buf,
{
elf_prfpregset_t *fpregset;
- fpregset = buf;
KASSERT(size == sizeof(*fpregset), ("%s: invalid size", __func__));
+
+ fpregset = buf;
#if defined(COMPAT_FREEBSD32) && __ELF_WORD_SIZE == 32
- set_fpregs32(td, fpregset);
+ return (set_fpregs32(td, fpregset) == 0);
#else
- set_fpregs(td, fpregset);
+ return (set_fpregs(td, fpregset) == 0);
#endif
- return (true);
}
static struct regset __elfN(regset_fpregset) = {