From nobody Sun Mar 29 09:04:29 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fk7jn1mRcz6WPSy for ; Sun, 29 Mar 2026 09:04:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fk7jn10ysz3Vxr for ; Sun, 29 Mar 2026 09:04:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774775069; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z6tCNM5wAd7GAZJGM4uunsoPxDfxakBRGAspgDP4vCs=; b=PafI4CbgwjQB9+ozDENuoSvmRxsnT/H6oOly4bxZ5r8gdc8SVOUQUDH2W7gJrveS/P9lwK EwvMBhuNXsGZRIHkkDlo86CA6kZvLpwRuZoi6Lw6oW9N56jUSUmUIL4mGeEt0nGZEvwMAS rYe6nu5+A4vt9yHPgfectO68kxSz767PD7R05wflwaya56WYAjtVwploZUpIvuClfweYCP mclztfkP7SfbwXwva+dbm5oh0kCtFhu9gzfIg81RO5Kndz0mkmyZJBimhcyjzXguzFjIGG X90AyhTafsnbsr+Q6pmqTh8fnSJDExMRBEoUP9+2QMpaikdWaw9uLiFwxkBSGg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774775069; a=rsa-sha256; cv=none; b=X+T78v0rXq2zWbMmYxlFK/8vj/K7h2WUMmTACZ1YgrmqZkFKm7j5/Y3Ujvnkpwz2++aIbX KMTZSEAh4cjhamHx5Onn3HNPeh3Q7ZuT4SCGNH2FR8DSwdZ0X+JtH6XqLTtbgXCrY9/hG9 OTMwtGe8sUQ0hfa/q8h2Jy+NHT/XDj7yMUPtBM8ltMKaT6aPtl8Pa/1UYDC8geXoUW7aKU iScnsj0m5ngwtPlIRF7JZd2kQvLIV7N3Jk2Ns3FqKZEfzxHmMTNTouhWR/qYpEQNoKv4B4 bjNWF5EQitkjvwpFOrVMSgrVyIE0Z9552wWQ2y8LP9vk0RXXNDzdpP5SrPAoFw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774775069; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=z6tCNM5wAd7GAZJGM4uunsoPxDfxakBRGAspgDP4vCs=; b=dgayDK9xYbc+76/I3IHup/L4cBQTaXN2d26P4kn2uBOZNqMevdU6IO/I25ZAZEwm5fEcw3 9OrRK6rq4RwanJUmeKRm8nBaTEcGI77Z6RQbNfQxjCQ8ASCC9mHTZuzT/I3x+omrg6rCqy O+wjOU+hswmK/dUxmkLBNKxltzJ8xfku6PRhiumL2+YvQBKJWDmb+0Bzl43nr+Ci7npJkx /RyeQRvIf83Nz3H8iwlOCxQIUxuie4oADheuNeJSlJMiY/os+Dr6KpIsMyCOzdHKuDbfKQ A83kCyDDafJJmVyGulX+iT/Gqw4MDT2tzhUBug7AptxCTghrxX/xQs0BmAxp7w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fk7jn0XvMz14Zx for ; Sun, 29 Mar 2026 09:04:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 246d6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 29 Mar 2026 09:04:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 7d1285e904aa - main - amd64 sendsig(): explicitly copy registers from trapframe to ucontext List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d1285e904aa76ac821ac2a6a8eb61be598f0e88 Auto-Submitted: auto-generated Date: Sun, 29 Mar 2026 09:04:29 +0000 Message-Id: <69c8eb1d.246d6.1acc35e9@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=7d1285e904aa76ac821ac2a6a8eb61be598f0e88 commit 7d1285e904aa76ac821ac2a6a8eb61be598f0e88 Author: Konstantin Belousov AuthorDate: 2026-03-29 08:06:29 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-29 09:02:38 +0000 amd64 sendsig(): explicitly copy registers from trapframe to ucontext With the IDT event delivery, previously reserved fields in tf_cs and tf_ss are guaranteed to be zero. With FRED, these fields are not zero, which affects the values copied to userspace. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D56141 --- sys/amd64/amd64/exec_machdep.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index 7d567c561c52..f81fc5f94406 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -143,7 +143,34 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sf.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE; sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; - bcopy(regs, &sf.sf_uc.uc_mcontext.mc_rdi, sizeof(*regs)); + sf.sf_uc.uc_mcontext.mc_rdi = regs->tf_rdi; + sf.sf_uc.uc_mcontext.mc_rsi = regs->tf_rsi; + sf.sf_uc.uc_mcontext.mc_rdx = regs->tf_rdx; + sf.sf_uc.uc_mcontext.mc_rcx = regs->tf_rcx; + sf.sf_uc.uc_mcontext.mc_r8 = regs->tf_r8; + sf.sf_uc.uc_mcontext.mc_r9 = regs->tf_r9; + sf.sf_uc.uc_mcontext.mc_rax = regs->tf_rax; + sf.sf_uc.uc_mcontext.mc_rbx = regs->tf_rbx; + sf.sf_uc.uc_mcontext.mc_rbp = regs->tf_rbp; + sf.sf_uc.uc_mcontext.mc_r10 = regs->tf_r10; + sf.sf_uc.uc_mcontext.mc_r11 = regs->tf_r11; + sf.sf_uc.uc_mcontext.mc_r12 = regs->tf_r12; + sf.sf_uc.uc_mcontext.mc_r13 = regs->tf_r13; + sf.sf_uc.uc_mcontext.mc_r14 = regs->tf_r14; + sf.sf_uc.uc_mcontext.mc_r15 = regs->tf_r15; + sf.sf_uc.uc_mcontext.mc_trapno = regs->tf_trapno; + sf.sf_uc.uc_mcontext.mc_fs = regs->tf_fs; + sf.sf_uc.uc_mcontext.mc_gs = regs->tf_gs; + sf.sf_uc.uc_mcontext.mc_addr = regs->tf_addr; + sf.sf_uc.uc_mcontext.mc_flags = regs->tf_flags; + sf.sf_uc.uc_mcontext.mc_es = regs->tf_es; + sf.sf_uc.uc_mcontext.mc_ds = regs->tf_ds; + sf.sf_uc.uc_mcontext.mc_err = regs->tf_err; + sf.sf_uc.uc_mcontext.mc_rip = regs->tf_rip; + sf.sf_uc.uc_mcontext.mc_cs = regs->tf_cs; + sf.sf_uc.uc_mcontext.mc_rflags = regs->tf_rflags; + sf.sf_uc.uc_mcontext.mc_rsp = regs->tf_rsp; + sf.sf_uc.uc_mcontext.mc_ss = regs->tf_ss; sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ get_fpcontext(td, &sf.sf_uc.uc_mcontext, &xfpusave, &xfpusave_len); update_pcb_bases(pcb);