From nobody Mon Mar 30 09:36:32 2026 X-Original-To: dev-commits-src-branches@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 4fkmNJ51b4z6WhqQ for ; Mon, 30 Mar 2026 09:36:32 +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 4fkmNJ4WXfz3HhN for ; Mon, 30 Mar 2026 09:36:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774863392; 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=WJVb39Hhd4+kXaKgCsf99FrnVO0loICJyca+o25UKqg=; b=g/lsHU91P5MQlzaOhV4mp/WUhUzeQvWuU9Zi6OH57JGWY2a92br0CZXIA+JMJlNEJYmLNe NSWdG1qDbBxtIpD1ksKhWuVkH1lLi3qdglFWiKb8YBq1gmiOicRb1YePmadfOMKlrUx/+x IBfxdZYpQjvurOHeX57sEFaVRyfT1+G/GzFHBmmtD4PQYMDBF5aACydrD77+j8ejcvmvPQ QbeQ5fX7aqIR3Z7tvmSF+YIAGNgSMh1OHoCfQLcKJmQFDqs+GK83v1yiPEivHXwmx86XID 8KJreH09Tq1C4VwnzwKI+xrDnpWPnlNAUtJ4WiD1npRMZvDylyV1tQFHzqOYfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774863392; a=rsa-sha256; cv=none; b=RDXJDqbRNPXcHDB8+Silf4rmppz2Yf+cgavy073oX+okL3dfSlgETSSIDTZqustA6N9Jfx 27u28yHE+1CMwLNCakVyeqYbx3zo90eMRQ9IHGbzR2++UFpk48n64hT/Tsl5A+YUGtstt3 U6DQX966W/5aIVbwnwFEvlWswHrQ7boSGU7ZahwoW58dcNxfehJab2h4yUklxvBRf7lRev /IOAO366FOSZ4wKhPoN/6f+B4rDjlXg7EDI/+R/duwWZpmzRv9uUrEW8rRNpQOGodDmrWW hoUgCn0k/hhVWq1Qte0jpXBDUb+8R2VpWX05nPjnPdQYbFl9USb5KMlwwt4s2g== 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=1774863392; 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=WJVb39Hhd4+kXaKgCsf99FrnVO0loICJyca+o25UKqg=; b=u8RTL8rcm3aIXndWUpaCw+cl4wapT1agWqk8WGx7wusDOUid26UoY/aUvnxrGEA0n4+rhW bAHcaHoO1huNzJ1+42V7cEGLbWHspZ/+Ni8iedkd5Foa4Pf3uUsCLNaFzNRQzwa1JEa837 qSzpEWi6un4dUpomnKe2gX/GVkK+LJ687qcHr98QnwUKS9a7KXEwmf6dlgRu0+MFVGIwq/ UCvrQQlSEh+25CsAD1dyYf2KUj3KpTzAHgYMrtA+LxBmS3FeNnDR54aIguX8di+54z36Bu DZLaCk6p4C39C1mnJskco28yju9G91bGp331GQkvk9k1monNWXcecXyCB3TtNw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkmNJ44P3zd4S for ; Mon, 30 Mar 2026 09:36:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27eaf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 09:36:32 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 25d0c5d4456f - stable/15 - cpufreq(4): cpufreq_levels_sysctl(): Remove always false NULL test List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 25d0c5d4456f2c9b01d43bd3717d2bc2d8a3b83d Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 09:36:32 +0000 Message-Id: <69ca4420.27eaf.4e1a044d@gitrepo.freebsd.org> The branch stable/15 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=25d0c5d4456f2c9b01d43bd3717d2bc2d8a3b83d commit 25d0c5d4456f2c9b01d43bd3717d2bc2d8a3b83d Author: Olivier Certner AuthorDate: 2026-02-12 12:33:46 +0000 Commit: Olivier Certner CommitDate: 2026-03-30 09:36:02 +0000 cpufreq(4): cpufreq_levels_sysctl(): Remove always false NULL test 'sc->levels_buf' is initialized with malloc(M_WAITOK), so can never be NULL. Another sysctl handler function (cpufreq_curr_sysctl()) already relies on that. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation (cherry picked from commit 953b9164c3d93e820a53b4fdebbde7fabb7b7644) --- sys/kern/kern_cpu.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_cpu.c b/sys/kern/kern_cpu.c index 1fb3d8002c7f..03d2d38e1749 100644 --- a/sys/kern/kern_cpu.c +++ b/sys/kern/kern_cpu.c @@ -1002,16 +1002,12 @@ cpufreq_levels_sysctl(SYSCTL_HANDLER_ARGS) struct sbuf sb; int count, error, i; - sc = oidp->oid_arg1; sbuf_new(&sb, NULL, 128, SBUF_AUTOEXTEND); /* Get settings from the device and generate the output string. */ - count = CF_MAX_LEVELS; + sc = oidp->oid_arg1; levels = sc->levels_buf; - if (levels == NULL) { - sbuf_delete(&sb); - return (ENOMEM); - } + count = CF_MAX_LEVELS; error = CPUFREQ_LEVELS(sc->dev, levels, &count); if (error) { if (error == E2BIG) From nobody Mon Mar 30 09:36:33 2026 X-Original-To: dev-commits-src-branches@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 4fkmNK6VcHz6Wj0h for ; Mon, 30 Mar 2026 09:36:33 +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 4fkmNK5X16z3Ht9 for ; Mon, 30 Mar 2026 09:36:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774863393; 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=zBuYVBGkC4x8c7tR8gzcAsPSW3mvMZs+sR8iLEZ3OPM=; b=DnfH0KEKADXHcZzUM8rK/Q2P1rkKHq9Glpc81zZVogGdCkjMFS4mmcms3odNEssM2qLvCy xwmBfCaHlqcERpEG970HaXjgcQ9cNa9asv1MxMuCBfqLLqMHHzhTR62gD/l0Kscdt2HDqD dlHVpjCeIoDDWHho/bDRnpJabegF+GLMg/3A8fHkhGKv628O+Bfl3xHfnbmRwtC1i1uaA2 JRwn7dHx43Z2FUkZpf6VlvWwqyIdqj+Pl3eIjxUu6oXOWuzqQ7LDnZkqyhdwpDGbi3OOKg kWjFWMVRRLLozS/l0ZifqQFZCMxRxuV0PzvieveLBYh47Lmqr7WtmWTLLfqAIg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774863393; a=rsa-sha256; cv=none; b=K5z4LewJ2DALf+DJTkAcIOZkZAgqjOBAr2cCPPVVX+yMHl+H72MI31trojHqV0qbb6wkuM exuqMKNrxsujobroNxNptZWTYGariUA1ZMS6lPCsr/wop+RR8REBgAjNhTrK5mq6V0x7TH SAQnFXs7eZwD4b6tNKxFM8G4ZqPkjA2cAIVwEJSCFCsEK44zUnZID+EBdrzJQPUSaqm56+ 1BZPlcB29p6H0QVw4Va9yero57h58SpxUVxjeEjJLYbkZI/NnhJqUjUJiVyE02pJxiRQZ6 KTuSwMnzXeFQkY6Lj2nDpokBOzSCNlxyzVNUYmpNe3znK/iKkvyxlfEJTOM3ig== 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=1774863393; 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=zBuYVBGkC4x8c7tR8gzcAsPSW3mvMZs+sR8iLEZ3OPM=; b=wuZ2+9i4ds5wkXPRkZCF+Hlt6/G3g3OSV5sf5zqLTeqJQfkai6EoSvkDxG5kFakjqqBvKi XkOLHgPLhgeDunxxzoAIOdtKMlg02ViRHLDk48HRm15iGbUQLVIoq/5wSj+z5zYPYsfUvS nqRQZ3xER7ZhiWdwmy+TGutvLn9Rk6vWcNV35q9x3oxEpt8uswqRYG46yHYZ6gv/cjioEj WhqEUB7rVlK2KQLlLkirGbNYfwuMVC33OIzxVIGZk/RG2WKIP8lK3jeZB79vDlrrK8SJ34 qsJUJJWf0jLCxRGb846+vqO921hfW0LesjRfV2mVsyt35g3uXoIluXYXdf/7Vg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkmNK4s1VzdQ4 for ; Mon, 30 Mar 2026 09:36:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27ab6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 09:36:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 806d26e169ee - stable/15 - MAC/do: Comments: Rephrase one, fix a typo in another List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 806d26e169eea1a8eb445a65c1a883fa191122e8 Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 09:36:33 +0000 Message-Id: <69ca4421.27ab6.67ede271@gitrepo.freebsd.org> The branch stable/15 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=806d26e169eea1a8eb445a65c1a883fa191122e8 commit 806d26e169eea1a8eb445a65c1a883fa191122e8 Author: Olivier Certner AuthorDate: 2026-03-21 13:39:04 +0000 Commit: Olivier Certner CommitDate: 2026-03-30 09:36:07 +0000 MAC/do: Comments: Rephrase one, fix a typo in another No functional change. MFC after: 3 days Event: AsiaBSDCon 2026 Sponsored by: The FreeBSD Foundation (cherry picked from commit 954aaf3958e2ea0e9b1811090ddbb9d8b13a3e5a) --- sys/security/mac_do/mac_do.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 2bcff7bba973..ba49da22ce67 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -1153,13 +1153,14 @@ remove_rules(struct prison *const pr) prison_lock(pr); /* - * We go to the burden of extracting rules first instead of just letting - * osd_jail_del() calling dealloc_jail_osd() as we want to decrement - * their use count, and possibly free them, outside of the prison lock. + * We burden ourselves with extracting rules first instead of just + * letting osd_jail_del() call dealloc_jail_osd() as we want to + * decrement their use count, and possibly free them, outside of the + * prison lock. */ old_rules = osd_jail_get(pr, osd_jail_slot); error = osd_jail_set(pr, osd_jail_slot, NULL); - /* osd_set() never fails nor allocate memory when 'value' is NULL. */ + /* osd_set() never allocates memory when 'value' is NULL, nor fails. */ MPASS(error == 0); /* * This completely frees the OSD slot, but doesn't call the destructor From nobody Mon Mar 30 09:36:34 2026 X-Original-To: dev-commits-src-branches@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 4fkmNM3mfkz6Whkh for ; Mon, 30 Mar 2026 09:36:35 +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 4fkmNL672xz3HcX for ; Mon, 30 Mar 2026 09:36:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774863394; 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=OQLOYEEVFQG8ClryyB6gs6rrMDOu/DiiVGz8+HhOKnI=; b=E1g5iHX3Ly2N1EfwRd/rgiAFs/4pSUslSY+VMc37GirswC+s2rDzzT6jQbcY9n/BPOYKwd 0kHwLDoImLbMKeLEIi3nyqN4tsW0jTArJ/5+mKZ1myKddV3Ejlc2MFjC6wKgj4A5NzcJq/ FNE6o31uoX9mLreXNkp3jh9UP8cZO9BEg1u8fLQEXNnkHmSBDl1lJhIExBEyqfTW0kIVGP KxrdLjYyMgc0Kw2X0iWn/aN88oQMwrQn2BF3nobJ28E5kIvuLL19j7r7J7KkNsxkB8Ra9p 6fZQZa17iechJqKKOXZ+upb9ZAjKrQMbBqTgOtDiUkGGNNIAEB33iqgcJrYOlg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774863394; a=rsa-sha256; cv=none; b=pswJzGfiFWVzrIyqjGSZJl4PqyjhM/wlmxVhnuc1UhMRPMBWFwg1uhI/mImNDBG2GR9imX Yu9gxbWIi9jqicJOUXVvRxEfcDkdAVgm857YI/qnRZzi5vlwMTRJ69uEN8U/sPsv66POJl U87whaNz+eH8nBCBm9xTKk2EvFzHC1rI7wDine+2OXocC02K8q9zaJo5wuxtt16KZNjjG0 VtwbTBtZF6mbS3qxCDmh1J6YYfAMNIHqfxxJCLs8KKONe+dLHLFBUBjNemrz4r9H9fB/8h S9AcXhK36URTtTdXA/r3mVDTbqdo/OHeTosN6ujLJUfaFm9/A/WwwufNZW49Xg== 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=1774863394; 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=OQLOYEEVFQG8ClryyB6gs6rrMDOu/DiiVGz8+HhOKnI=; b=RNcl3opLMjWpldKRWS7JNayTPlG3oINVsehw6YpEvXkFVVMZqnt0PUBALBYuyGxhNESxKN tXBAs02dxHAhzXn4SY+lm9E0RC61hPEdPKImHUzmIC3onumGE+1IxObS0p4zQ5e3amibjD s9NBgqmnQ3vJZEZAEZV8nqdXvpf9MpTaPjIkZq6GHVyS9rYI9IeOH/K96SLfU5dIJYlycB aBlXnXkFNceHFP3bd5FV8yNoBobUYb1aMLSO4MuP+lM5NFEO7H3Ao3s4UIFKh4Pgr7QYwv pgtVWJX3WyaoQf1vzVzExEuct1Hu0E3ieOrP92JkCbYSn/3shH85/4RM4C8jhg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkmNL5jLhzdSX for ; Mon, 30 Mar 2026 09:36:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 30e04 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 09:36:34 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: dafac65367c9 - stable/15 - DEVICE_IDENTIFY.9: Fix function call to detect driver in example code List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: dafac65367c9d28e8a836a1dbeaaadbd87cdfede Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 09:36:34 +0000 Message-Id: <69ca4422.30e04.7a14ad3f@gitrepo.freebsd.org> The branch stable/15 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=dafac65367c9d28e8a836a1dbeaaadbd87cdfede commit dafac65367c9d28e8a836a1dbeaaadbd87cdfede Author: Olivier Certner AuthorDate: 2026-03-27 14:46:58 +0000 Commit: Olivier Certner CommitDate: 2026-03-30 09:36:07 +0000 DEVICE_IDENTIFY.9: Fix function call to detect driver in example code Fixes: ccabc7c2e556 ("DEVICE_IDENTIFY.9: Modernize description and use cases") MFC after: 3 days Sponsored by: The FreeBSD Foundation (cherry picked from commit c78937677c973c48fd438ea06cfb51e11cc62851) --- share/man/man9/DEVICE_IDENTIFY.9 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/man/man9/DEVICE_IDENTIFY.9 b/share/man/man9/DEVICE_IDENTIFY.9 index 31063ae60dff..564699b57a58 100644 --- a/share/man/man9/DEVICE_IDENTIFY.9 +++ b/share/man/man9/DEVICE_IDENTIFY.9 @@ -74,7 +74,7 @@ foo_identify(driver_t *driver, device_t parent) retrieve_device_information; if (devices matches one of your supported devices && - device_get_child(parent, "foo", DEVICE_UNIT_ANY) == NULL) { + device_find_child(parent, "foo", DEVICE_UNIT_ANY) == NULL) { child = BUS_ADD_CHILD(parent, 0, "foo", DEVICE_UNIT_ANY); bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1); } From nobody Mon Mar 30 11:02:19 2026 X-Original-To: dev-commits-src-branches@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 4fkpHH5HT0z6X68t for ; Mon, 30 Mar 2026 11:02:19 +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 4fkpHH2lbJz3RmY for ; Mon, 30 Mar 2026 11:02:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774868539; 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=+sp4pcnJBib9TNFVzw4tNbXoJHafVAP9prpaWdkgQpk=; b=Vx2YocsNIRFZ1deO1u8UMw6tS51Cb/3ALtEuv0tzcCfpufYeJb82J6VT8tOSLnWrLmEfSq ytzENl2cNCXEKSB9SrTTc786XZlJbomTHi29URvSXmCRIuqJww3Ozg8vshbDjTa8ppkv5s d2/+93Nd0EC0GRe+fQ/uUzPGrYxSIQs4/+eIGKoCBft1YCRdAL/nAtF95fAuCiF+LoSC/3 80ywticM4s1iBb9NRKAxkIXux835c3Z9wbV0SGoCTNjN3BezNszPVKoh1Gwm3ByRRYjAX7 cMFcNFdP1/f16TPjlEp3ejFyBRI50v/yYtJ10fIwSHEpFNilN99h12LK5UEUOw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774868539; a=rsa-sha256; cv=none; b=wYBsr0c/dGh8uP3ioCj81iihPfyQXsFsbpjr9oGVWY64Vp5yOY9GS5tP2s2kBNGVSGSW/Z r66avi3K4ZyeWk6zb5rE2qEEHRyNxAc1nFH/T08A2rR7yM3fweiSNlg1UujaJzAvrp8qBp uZlmcHVFEqYitmGPkOZ1KCElGRHD/wpwH8PZg0VfVyeeB6ZiLpN2dppMuPnUa35GJJH4VB 27rgWwcYV5PosI+cTJyYKXZRs21eWQFFcjMzedzmvaWfmidkdSlaBnYuBcZFLK5AyPoGL5 d6TBnbkhFswRvAJiL1SqgoregJ1K6iP1v0/cI+PlqMmCvLE4L6kBUmou1adpWA== 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=1774868539; 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=+sp4pcnJBib9TNFVzw4tNbXoJHafVAP9prpaWdkgQpk=; b=QF8j1EGAx47PqPNN0Enl7ebJvfi/bo59TuJj+VkUecD508xzOTdgnALJy8hn2TZsHBfmOY cQtSo6WhyEiTeIW+oFwB0kTF/JIsYZ3atVf468fpuC4BPxeiEwIQD5+GA1ginSGOnwbat6 /etrcstJQJEG0iJwkuzLDw4MvC9wQK3aIk5bzWTxFRD80Myn4wWcH+klRfOKUfkAXIYon2 PfCBtSjB4x7iUeHzFracb0rA0mIZFakzNYKMJ1ZfYFxZiaILOLzL3sgiT+b+yJEdXF9qUO hoJba6JkY2a/KbF4LcNY6kZb8NrcLenGNWByEnbqJlkJLJZKeQLTC7XWTAGoMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkpHH2KHPzg1s for ; Mon, 30 Mar 2026 11:02:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aa76 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 11:02:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: 0b2011f50cd3 - stable/15 - loader: Fix powerpc64le by working around slof bug in qemu/slof List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0b2011f50cd31ce384445ed04a554c0cf5e5300f Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 11:02:19 +0000 Message-Id: <69ca583b.3aa76.5cb47acc@gitrepo.freebsd.org> The branch stable/15 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0b2011f50cd31ce384445ed04a554c0cf5e5300f commit 0b2011f50cd31ce384445ed04a554c0cf5e5300f Author: Warner Losh AuthorDate: 2025-12-28 05:27:03 +0000 Commit: Warner Losh CommitDate: 2026-03-30 11:01:40 +0000 loader: Fix powerpc64le by working around slof bug in qemu/slof Fix powerpc 64 little endian booting by adding some padding. Due to https://gitlab.com/slof/slof/-/blob/master/lib/libelf/elf32.c?ref_type=heads#L114 https://gitlab.com/slof/slof/-/blob/master/lib/libelf/elf32.c?ref_type=heads#L150 using <= instead of <, slof used to loop over the phdrs. It overruns by 1 and so on little endian it swizzles the first 32 bytes of .text. Work around this by adding 32 bytes of padding after the headers. We should fix this in slof, but it's in the just released QEMU 10.2, so we have to pad things here for now. Now powerpc64le + qemu works. MFC After: 3 days (maybe EN too) Reviewed by: adrian, jhibbits Sponsored by: Netflix (cherry picked from commit 424089a0fc82ee9db8659b8c1099bbbde8999473) --- stand/powerpc/ofw/ppc-common.ldscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/powerpc/ofw/ppc-common.ldscript b/stand/powerpc/ofw/ppc-common.ldscript index e12dee74824a..edd37eba8fca 100644 --- a/stand/powerpc/ofw/ppc-common.ldscript +++ b/stand/powerpc/ofw/ppc-common.ldscript @@ -9,7 +9,7 @@ PHDRS SECTIONS { /* Read-only sections, merged into text segment: */ - . = 0x02c00000 + SIZEOF_HEADERS; + . = 0x02c00000 + SIZEOF_HEADERS + 32; .interp : { *(.interp) } :text .hash : { *(.hash) } .dynsym : { *(.dynsym) } From nobody Mon Mar 30 11:26:50 2026 X-Original-To: dev-commits-src-branches@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 4fkpqZ6s0cz6X8Nq for ; Mon, 30 Mar 2026 11:26:50 +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 4fkpqZ3n3dz3V2T for ; Mon, 30 Mar 2026 11:26:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774870010; 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=ToqHemqHxzq8w/a40TmNSqLoxfPgKXuYnPlqTZy3uXg=; b=ggGDZTYHdsWha2IlfHajsh3aY8xn5d5B/X3mCRcc/PfAu9h18JJ2/T5O8mVirp1heh1x+g QhVXQRX9/joe4+oC4qM/+SLaeWSD+0AusLLnaZnig91RuI0a+ZtYmhebRd7Faog25r4RNM J9AVGkRzf2GT2uaVho4JAl4TGT7Aak31C8o3icJo5M7cfcxmgOSBPYX0Sd82YoXtsGmVzi OVdFzHCHM09ajxlmXFh/jZpq9sRylps3VjNtWWN3p8oQtkbX9HqoR0IB/W+/TuMUkcb/2v HShXvyUEn13Ke0eSUUWvyd0Y47+Doq6Mwlyjf0kWVI5S0cVRPCfTvnTUEt6yCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774870010; a=rsa-sha256; cv=none; b=D/JM7/H73OTrC1qzf8DrlMQVOaJzsFiPyqGrLkQWM2USnJrUob6b0laNQ1k4KvkudUOkJJ ts8hUzJ01sney7/NQQvzoFZVEdf85WbqZa9FABRSuhikL1nyAWsDXjtCtXavGggqGdQz0U tdQMmtB7zLazwqFMhElzkAJaeHASklYR6ZhKKprq2eER5ynO9oZKZAchBEQbF/tk9Xc3WG 1jbXLj57ytakQoEYB1VuRgwqe/FHG/DtucOkKOoeLP8z/HHvJjVNiuHYw5H/lM0uKxR3If L7okiTEKy+Botr8s4r6P1+28s55Y8SiBCCjN3Tsgb3tCraUwvM+ydzNsCQDhGA== 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=1774870010; 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=ToqHemqHxzq8w/a40TmNSqLoxfPgKXuYnPlqTZy3uXg=; b=E3sqiCxzTFRbzi5PQf68oWo1V13/kMyTMpx93pzD7MXMGobXUwbfnwRSIOdkJFV//fD4bS lPf+3jyXGGxECMf2Q9c1jsWpFo11WO+baNep0jGoVOBnLXgWVWxcLBCcPmETiVppmwFJXi wE5f4d+cnNzpaDOHY/bFivwBOIPdviIgGlqRE9DL8+UBoDknq9bKaaKUk9vD7eNqJwMgnJ wxqR3JnMBXAULWCTdTABM4x2Vmqx25+aQda9VfHqd+ySymc2KB3s0MLxjQx37BhAk0v+Fp HzVsz62pk+K+P8e09RnTCJQSqAU6SDQnn+l5vx1qWsJ6F0c/IfCD7xR2bdvJNA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkpqZ35lJzgkL for ; Mon, 30 Mar 2026 11:26:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a6c1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 11:26:50 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 448cc3295c15 - stable/15 - ofed: Fix a typo in a source code comment List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 448cc3295c1526bf15cebf5967f6104f81a59b97 Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 11:26:50 +0000 Message-Id: <69ca5dfa.3a6c1.23b54895@gitrepo.freebsd.org> The branch stable/15 has been updated by gbe: URL: https://cgit.FreeBSD.org/src/commit/?id=448cc3295c1526bf15cebf5967f6104f81a59b97 commit 448cc3295c1526bf15cebf5967f6104f81a59b97 Author: Gordon Bergling AuthorDate: 2026-03-27 06:59:19 +0000 Commit: Gordon Bergling CommitDate: 2026-03-30 11:26:38 +0000 ofed: Fix a typo in a source code comment - s/refereced/referenced/ (cherry picked from commit aed3bc80fe033ab28e8f01cad49e73deb761516b) --- sys/ofed/include/rdma/ib_mad.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/ofed/include/rdma/ib_mad.h b/sys/ofed/include/rdma/ib_mad.h index 454db78dbde5..45f5ee2ff2ca 100644 --- a/sys/ofed/include/rdma/ib_mad.h +++ b/sys/ofed/include/rdma/ib_mad.h @@ -558,7 +558,7 @@ struct ib_mad_send_wc { * ib_mad_recv_buf - received MAD buffer information. * @list: Reference to next data buffer for a received RMPP MAD. * @grh: References a data buffer containing the global route header. - * The data refereced by this buffer is only valid if the GRH is + * The data referenced by this buffer is only valid if the GRH is * valid. * @mad: References the start of the received MAD. */ From nobody Mon Mar 30 11:26:49 2026 X-Original-To: dev-commits-src-branches@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 4fkpqZ1lhPz6X8Ls for ; Mon, 30 Mar 2026 11:26:50 +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 4fkpqY2jjpz3V2R for ; Mon, 30 Mar 2026 11:26:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774870009; 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=mnBVLhf/nIC2WA5tPpziPxVnfM5i7BzU+hWvp34XJ5k=; b=yAafdRqCto2GGnhodTPQZTTsIGB4R6uT409yqZVqN8b8G2TZr1zsdAGUt1MIKWCDK+SjXh AHG04p4HRU/Mxqu2ZDYqRyvNHBe9zvSCYk4pYAsrvC7uRW4iBB0vBo2dIUV0MOkcrLaJc1 OqWahI7Q1YoP8MHHFSSeB56V2u5srcVVQpBAu1TLXzXhNtsv1OtzznK1kq9kAjlmwoVheU O6R4VmU8uUEuHWq/Cvl1z4RDHP4Tkj0IbmkPK7MSpt8r9qskKiMjUThs29sZqSfg7iMyUL gqv0YYhi+E6s/rP221k1RHkonkt9yaT2bajfg9l0Tx891r91pPqoIZGxWLIOeg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774870009; a=rsa-sha256; cv=none; b=bvTfgUOZuz4GmajXvDVaQxt38lYiKDkYBHBg+Xl1m2LYj89CUO7s2bFQTzMdYca6mJ+WaW JNOnzZ50eHiqNQFkAQkhnW3zvqtCsoLL3pmdH5Tr+TmrtnOpcmCI3LKeNJIvHbT8B86yOd rmUvGlzrUS0lYeq5yPzV8yVPgXL3TxYLmgIoobdFe5+/+jsr8xBeT+rgnit2nSisLq7bt6 ajn3JtNPIKjsP7sYM9TpdxFXPFo7XEf1pP2pb7KOhggkOpZiMgp/rdam/kstELUIvxcNic UEpy4LIV6xlDuL1Yj28ir93652hOr7s1bVrLPxFRyzOacEAqFr+M/yOkRUK1rg== 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=1774870009; 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=mnBVLhf/nIC2WA5tPpziPxVnfM5i7BzU+hWvp34XJ5k=; b=F3b1a05Ncb+YSto514bFzpTSHZqFhsB4CrQLPuXoPERTaxkrOeG7OhI8Ir3tVlIGfPLmHB e9tAFC1h3yhb5vK5wCDfPlqFtD8eUN94/96HofZmguMHh4WOJVN1IV4hKEyTRFpbFDBnyA DvzzeISpgr90SbGaRAUqRacSGcbWMD9/42Y6AVtI21Vo1Q04qFgvMvt7IQE1AC2GvpzFL5 3zxVGvWk1XfZyGdSkIb2l5uShHrhUa6z8xirNIye8BkYA5GNSmjWu1o9A/1MwUM6KziAMi rHGBSxMrR6rsjda7pKFqKNKC8hIeYf8bCKP30BJSlD35PBrEru3v65E7IXcQWA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkpqY2KLtzgsp for ; Mon, 30 Mar 2026 11:26:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b3d1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 11:26:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 7748c00cccb1 - stable/15 - if_types: Fix a typo in a source code comment List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7748c00cccb1099107fae9910dd3f8e264be6e4f Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 11:26:49 +0000 Message-Id: <69ca5df9.3b3d1.2d10ca0d@gitrepo.freebsd.org> The branch stable/15 has been updated by gbe: URL: https://cgit.FreeBSD.org/src/commit/?id=7748c00cccb1099107fae9910dd3f8e264be6e4f commit 7748c00cccb1099107fae9910dd3f8e264be6e4f Author: Gordon Bergling AuthorDate: 2026-03-27 06:57:49 +0000 Commit: Gordon Bergling CommitDate: 2026-03-30 11:26:19 +0000 if_types: Fix a typo in a source code comment - s/Circiut/Circuit/ Obtained from: OpenBSD (cherry picked from commit 8bc31c88d65ad99cd510fbe511958799d3531477) --- sys/net/if_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net/if_types.h b/sys/net/if_types.h index 1d17e5c09813..45923d15175b 100644 --- a/sys/net/if_types.h +++ b/sys/net/if_types.h @@ -174,7 +174,7 @@ typedef enum { IFT_A12MPPSWITCH = 0x82, /* Avalon Parallel Processor */ IFT_TUNNEL = 0x83, /* Encapsulation interface */ IFT_COFFEE = 0x84, /* coffee pot */ - IFT_CES = 0x85, /* Circiut Emulation Service */ + IFT_CES = 0x85, /* Circuit Emulation Service */ IFT_ATMSUBINTERFACE = 0x86, /* (x) ATM Sub Interface */ IFT_L2VLAN = 0x87, /* Layer 2 Virtual LAN using 802.1Q */ IFT_L3IPVLAN = 0x88, /* Layer 3 Virtual LAN - IP Protocol */ From nobody Mon Mar 30 11:27:35 2026 X-Original-To: dev-commits-src-branches@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 4fkprS1Djnz6X8J8 for ; Mon, 30 Mar 2026 11:27:36 +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 4fkprR5q14z3VS1 for ; Mon, 30 Mar 2026 11:27:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774870055; 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=bkF8m0Fm29ulPAr5xdfCTkbj+M34DSU/5X6anZWLZBI=; b=riMF5ohtx/npw8/TX4kbubHQtqFtwxgICSQ4Y6nQAQXBvOyCTWHEchpJbHXSKLmCPM7sQo 2bcMv252AsdNlip1/lqW0rx16acT6o9deTOK0D6IMmEDENJGwoF12wnumMwI6EXU13T4Oy Vp6IMqL1GNrWOjZvhbSxyZO77fJnFpEmE30c9iwA+ac+IsO1kXCCCZkNvCmgVBw9zz9Cri WXMDm4PS8nlV+24yTBefOd3VDsW0BT1bh6p8h0RDXIzX2/OIqa4geu9mdZkTa2ppRzM0OZ Sby+cP25sU4uEKOPz2dxpiuE63khm/+A3/0zeUVHKMM/+Q6YOVvfba53aiBLRQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774870055; a=rsa-sha256; cv=none; b=jNtvuj/ooWTXeRPYznp3yYZdKTv1Jm0BVDGh+BHoSvcVTITTrUqB98CEaNE9lLxpisfCjX Jb8xXgoMzqzN5q4vzijfFkia8uU0zZ4/mA0ZPe456SQ63qhLKz5TnTnm2CXAWlxnDBet+/ yFkF3d5+0XA9kuR/3REq1P+aVWze+o6iYZKxFoIp9Ps7HO4nYjrK8y6HbPB7p/GN7i2xUO MdZFo9cFn4MSF63g+bKwUjRpsl3Vz3+jX6LvfqINWCfjdBHGIw70ts7nmXjV3KnYfrVhrx XVZdfMZTvNBRDhFk7APpy2z7Fz9FVoDrgt9OqkJf670Ffkmrm7YiL0NjWZug/g== 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=1774870055; 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=bkF8m0Fm29ulPAr5xdfCTkbj+M34DSU/5X6anZWLZBI=; b=ABZ4azw9dd6wdE5f0sCMpfoUuseVREXSQBUtz1I6UZ6EFfDSm/D4Baa2BMfxPFtsce50k1 hoPYtqcaafhQI0NFiIq/xwN6wAgwi724YECyz/sP0UNP9SYsrHFVxdv8n92vbtTqB9Ud1V XC90ep3h7GJTbp8H8OaCqJFEZzLDAGIboaa5L8F9iHfBbFDeYHv8N4TOgh+5/sxlr4N0EY Kxt7JUN6tnWKMrf8eL681sdYwVBstBY8SelTCy8wmkBUFlDvOTlbu4E4rshjrAd+SbSW+5 cdUE/+PB0Ky8O0BHnwjH03MbaJP3ukulzB5M7EQ7OnWdL1qytSZ3CLiGmA1jiA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkprR5LLhzhDR for ; Mon, 30 Mar 2026 11:27:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c354 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 11:27:35 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 71ca167e3691 - stable/14 - if_types: Fix a typo in a source code comment List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 71ca167e36915865d1bdbb672652491a6934b1cc Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 11:27:35 +0000 Message-Id: <69ca5e27.3c354.503acada@gitrepo.freebsd.org> The branch stable/14 has been updated by gbe: URL: https://cgit.FreeBSD.org/src/commit/?id=71ca167e36915865d1bdbb672652491a6934b1cc commit 71ca167e36915865d1bdbb672652491a6934b1cc Author: Gordon Bergling AuthorDate: 2026-03-27 06:57:49 +0000 Commit: Gordon Bergling CommitDate: 2026-03-30 11:27:14 +0000 if_types: Fix a typo in a source code comment - s/Circiut/Circuit/ Obtained from: OpenBSD (cherry picked from commit 8bc31c88d65ad99cd510fbe511958799d3531477) --- sys/net/if_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net/if_types.h b/sys/net/if_types.h index dee71af80a5d..6af3566d4173 100644 --- a/sys/net/if_types.h +++ b/sys/net/if_types.h @@ -176,7 +176,7 @@ typedef enum { IFT_A12MPPSWITCH = 0x82, /* Avalon Parallel Processor */ IFT_TUNNEL = 0x83, /* Encapsulation interface */ IFT_COFFEE = 0x84, /* coffee pot */ - IFT_CES = 0x85, /* Circiut Emulation Service */ + IFT_CES = 0x85, /* Circuit Emulation Service */ IFT_ATMSUBINTERFACE = 0x86, /* (x) ATM Sub Interface */ IFT_L2VLAN = 0x87, /* Layer 2 Virtual LAN using 802.1Q */ IFT_L3IPVLAN = 0x88, /* Layer 3 Virtual LAN - IP Protocol */ From nobody Mon Mar 30 11:27:36 2026 X-Original-To: dev-commits-src-branches@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 4fkprT2dNvz6X87w for ; Mon, 30 Mar 2026 11:27:37 +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 4fkprS6ycNz3VS2 for ; Mon, 30 Mar 2026 11:27:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774870057; 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=l4zzFw6PD15Dy2m/EdsCF3RwsJqHm0o6ZnvayvZDgoE=; b=WrX2bVoe+yt2yJs59RvRnClTqoRSYt2r7iAXyTvxAQgA6o/876MVsfGM+Wwac9tofXw0r1 gq4cTLk7IgCweJHur9pcJJQLqtmTRYmuCw1/0whsezvT32l7aBXbCvHPOkuZTiXGFLM2hx Bx/hrg98ampTmkN15MPhTeK1FuLCg/Vz9DK7ss6fAPd5q5/PL7zJVrZ+DHS9c1e+RS0g1w eNkfGdV3g0haSGBe6VlQe7c3kG9vBYIVEXa19mI0r7Dt/mE/IChOKzAro9IoXbd/vFs0/+ uLdSCQU0a9U7G6FuOe1WbMl1xmCr0QpVPMuMQdgyOlj8zKYBdakh05ARSZPVqw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774870057; a=rsa-sha256; cv=none; b=h9am/5frCNTx3rEE0bSlxK9sdjBbonokJi7fkiKlSQuh9KKk4rhieFG61CDlgI2cN3wHCr GXeRd2xiNEZIbSoqsq4XjivuLi5qfsnuGVx+p5iaj4ZjLwuq0NnhemZf1ta2iwep8yvw0t NPr7MLhDE0ruP5LlHJWNPlMxISKGovOs7RdqtxaUDV5Sxqod0tl9yKwakXxs5120cznPiR yZfIuPdLjnqxO6oYpMp2j0S1Bntn1dqRdwveI6oXptlBzhRohjRW3wYVFrk/kxSGISPQLV nTsiiqJ/N0PlcTbd2eU2JfeCHLWhUV/f39uhvQcQ05RaDIdB9IdegBxC5d/Zbg== 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=1774870057; 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=l4zzFw6PD15Dy2m/EdsCF3RwsJqHm0o6ZnvayvZDgoE=; b=aevpW7wzcWmV1zaliSaiYeZn2t6xVk8Lo/TrJu7W2QrXmlabP/WsMtpFJoNxLUzWhWPtLz vzjMnUDqJjeoXDYw/MEBU0uJxiN1zJ4FftwslelMLGxEd2d/U5JI77Ql2QBh9ORmkknRH9 cegufptXgR0I2F7AGzTfJIsQabRSuaUWVAh1nq2cohSwgZyQnHaXd2HoZA/TRXIKpQ/tyk u8qa+5sM9hr/OnwwxlSmx2kgF3ybwR2xdEKMeFrqORiLl9D5JCIpBQ7GtiAKKJTAxgUhGC SyPR1bBW1ExPzw17let3mo5tlleR2Zimhao8GcBGQe6pkDPDGplw37VsvhuB5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkprS6RcJzhG1 for ; Mon, 30 Mar 2026 11:27:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b54b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 11:27:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 41f69bfb5a25 - stable/14 - ofed: Fix a typo in a source code comment List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 41f69bfb5a25539a2a5baf25979a5d59e2702bfe Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 11:27:36 +0000 Message-Id: <69ca5e28.3b54b.7dfc24cc@gitrepo.freebsd.org> The branch stable/14 has been updated by gbe: URL: https://cgit.FreeBSD.org/src/commit/?id=41f69bfb5a25539a2a5baf25979a5d59e2702bfe commit 41f69bfb5a25539a2a5baf25979a5d59e2702bfe Author: Gordon Bergling AuthorDate: 2026-03-27 06:59:19 +0000 Commit: Gordon Bergling CommitDate: 2026-03-30 11:27:25 +0000 ofed: Fix a typo in a source code comment - s/refereced/referenced/ (cherry picked from commit aed3bc80fe033ab28e8f01cad49e73deb761516b) --- sys/ofed/include/rdma/ib_mad.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/ofed/include/rdma/ib_mad.h b/sys/ofed/include/rdma/ib_mad.h index 454db78dbde5..45f5ee2ff2ca 100644 --- a/sys/ofed/include/rdma/ib_mad.h +++ b/sys/ofed/include/rdma/ib_mad.h @@ -558,7 +558,7 @@ struct ib_mad_send_wc { * ib_mad_recv_buf - received MAD buffer information. * @list: Reference to next data buffer for a received RMPP MAD. * @grh: References a data buffer containing the global route header. - * The data refereced by this buffer is only valid if the GRH is + * The data referenced by this buffer is only valid if the GRH is * valid. * @mad: References the start of the received MAD. */ From nobody Mon Mar 30 15:09:15 2026 X-Original-To: dev-commits-src-branches@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 4fkvmD2Hk3z6WZx1 for ; Mon, 30 Mar 2026 15:09:16 +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 4fkvmD0jXnz40fT for ; Mon, 30 Mar 2026 15:09:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774883356; 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=T62I2lTFaqynUbJzHnpVxfSb+H6J6NUXwFuUnU+zaU8=; b=m8Vlby7BcBFdnz/k6EG+GTJfco7CEECYUqK6iUESuOG0L0v1GUxAHpUR6Qfh50aCwDJ1q+ 89660D4xgyrK2qMvssm2vOlhunaX7ZI5kJPN8wPm8AAkIb2qb2JYLCss7lZV5dKoeJbf7l a8sG/AAV7Ry971GogGKLVke3/4DY+zQySS3nouvlAHKNeE7CfeXdSfUg8L0bNZq4G8e7zb anKm02RgdKcpNBG1InRrl4I5ygIv+n7YhJNlHI8RG3cx8kD++YwlO6DEgckh7aptLqoSu6 b+zubS6o7ZQ9qRYFcKgyyjfWNmOVRCOZF27EIV8D31gefBFtQpF5wELETHJcDw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774883356; a=rsa-sha256; cv=none; b=pmoC7rqwr2wAuNVmbHLzwXfXBhSne+EX2EAp/3vmldPrq+5hdmQxeCecMXxy/9i4mHOvcp yOoIZMUJZf/PQ4RgRlrO0mjwmBZTT1lHWMDfQpb2dLyqwsjdJGq+zDqxz/3ZO7Q/7M5QG/ hYUti0J6UaGk3Xiur2yNdh/QuEiR04FuhTa2wjRSXraiOi0DmNbyGzln2c0vJgptln63hB qxs9gfRrl5/BmL/Avk+4MF8hwocK3gpyzGKWNiAaW5b+u9Z+VI3RnPHSvyZzPgP08fdQij NQTudIi7Qf9yJ7mJkQWXYutNLUYyDQCZIeOxOQ47caK8WRCIHKOl2EaKoK+Y7w== 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=1774883356; 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=T62I2lTFaqynUbJzHnpVxfSb+H6J6NUXwFuUnU+zaU8=; b=cmjZhn8S22f4CKJRtlH0s5wBoROHEusl6D80LF9Ew9NcPcP1oBZdDCLp/iZqpE3rQ1nWwn jcZoXLXQK2AomPmrqbUslppF2RTlna6CZf7gAR7NSHSed5zcSHnWSCKb7hvRLnLl0DBA03 iRojqj0qx0J2Nf3vtqjpUDBsrXhc9AmJ1SViQPk2A3OdhtkqKsFcO+s1LlptF5OAU0FmdB VWHH/pxBx4QMbsPRRpeMJbYcE7kygkr8eU4Up8wj6gNcDtNRg2yF6neXbnoPtTuMsKD+IH 9UR6NUWWJGRX83Ty8+F0x28CZUoidVT1e4Gjc0bm5uQq+NcoVIWxi9TCpoh1CA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkvmC6fwtzntM for ; Mon, 30 Mar 2026 15:09:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 33332 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 15:09:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 5b8ab97b3e4a - stable/15 - pfctl: parser must not ignore error from pfctl_optimize_ruleset() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5b8ab97b3e4abd3df9cee11d61115479fe2fc4de Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 15:09:15 +0000 Message-Id: <69ca921b.33332.18debfc@gitrepo.freebsd.org> The branch stable/15 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=5b8ab97b3e4abd3df9cee11d61115479fe2fc4de commit 5b8ab97b3e4abd3df9cee11d61115479fe2fc4de Author: Kristof Provost AuthorDate: 2026-03-22 02:50:47 +0000 Commit: Kristof Provost CommitDate: 2026-03-30 15:07:22 +0000 pfctl: parser must not ignore error from pfctl_optimize_ruleset() Ignoring the error may cause pfctl(8) to load inconsistent ruleset preventing pf(4) to enforce desired policy. Issue reported and fix suggested by berts _from_ fastmail _dot_ com 'Looks good.' @deraadt MFC after: 1 week Obtained from: OpenBSD, sashan , 9fd28a8cca Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 343ace42f82a629374af4dc3a72da5f46f2c3feb) --- sbin/pfctl/pfctl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 7865467f2ea8..1b0a342337e7 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -2095,8 +2095,9 @@ pfctl_load_ruleset(struct pfctl *pf, char *path, struct pfctl_ruleset *rs, printf("\n"); } - if (pf->optimize && rs_num == PF_RULESET_FILTER) - pfctl_optimize_ruleset(pf, rs); + if (pf->optimize && rs_num == PF_RULESET_FILTER && + (error = pfctl_optimize_ruleset(pf, rs)) != 0) + goto error; while ((r = TAILQ_FIRST(rs->rules[rs_num].active.ptr)) != NULL) { TAILQ_REMOVE(rs->rules[rs_num].active.ptr, r, entries); From nobody Mon Mar 30 15:09:15 2026 X-Original-To: dev-commits-src-branches@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 4fkvmC5N81z6WZkh for ; Mon, 30 Mar 2026 15:09:15 +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 4fkvmC4SrCz40fS for ; Mon, 30 Mar 2026 15:09:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774883355; 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=HWGLRZgC4y6aQ00A4NT53QFDvLcVk0N+elL5kxEZr8U=; b=KOmWPQf3xWcM2zbljnHRgi9+QRJBPHmonrWiwWyS55nx7LKAaIlbExM6wxvCzF8jn40lgY 7g3WKuiG3gu8V5CvK0JYGY6crRv2dnOmOrDsFasY9zur0W+YOY5eUsSreSHSCwFaNbV3CM ibrXbY9uzYwmMwCQfO0cVFPlzuOIn5V2TZD9WPUPfLXDYSkWEEfebfrO+mP/mFPNOxwTq+ tglTHhp6kKCIxE5VAfirt44T9AZUCIB0mgIjs7fjRlRtEwBl1gi+39VPZFX4TYdFr3wwje Jryv1eH7v1trOtMIgluztoGT3IOc8p/alqq8H3GRmi/LkBmTUKvEIqyz3VOAjA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774883355; a=rsa-sha256; cv=none; b=FQU9BydS9EUTbP64EDxBJXMjOozswEw2g3A9T+ty1x7bL5W6nW6GrcTj/fU+MNq8ZeLxFS 7Fqd36WDa8B+OmoBTszzo4XkelTTkxnlYpkBv9xByDS0x6L70CwPRivqJQUSCRdpI56vXL +Azv/2PIP77wLiBuhNA81vElLyHwGMbJXV+auwv+V3v8uakFm9sYdTwk17ukalgA03g0uO OlQaZixeweNXDBtrPQaJhYaogA+cQyEpsy0OfgVj/BUcXsNPj126l625KB2DjbyMfruERV 2rSIeatg6HyLIua+5bCYBPxUUPBxr+MuVFl0yCwkSabUwlfjaJVxr86yH8vGmg== 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=1774883355; 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=HWGLRZgC4y6aQ00A4NT53QFDvLcVk0N+elL5kxEZr8U=; b=bfdp7Y/minS55iTb+6foYoYViiZwIyaeZl03Bv4pbzJuKkfqnhh3sHrm56f6JPpBIedu+Y MmfL8enZ49F/WQL894pHIY//ZcYJphf4lhAbdC/4NRyzDlyXb2dHAW03RwHD+buHKf7TUs OY/mIJAsV41enIAShAYSzffIeW0+b6aqps6lFe1FEqgCW1wcTrJWZB2qract6REzsvpp/t 0+kjtb0KCqlRX0/MkD+Xk4TmiMZ9ty61/47ijZmnYVX7ZXE8APwNZ+Bvp3jEt36AsLPGdU cqi0t21VJreLgyq/j42okf9kAgiNiZIDE5wCgKiEHYI6maL3MXHqUtw4HKyvIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fkvmC3wLHznl8 for ; Mon, 30 Mar 2026 15:09:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 33e89 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 30 Mar 2026 15:09:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: c5e1dde24dac - stable/14 - pfctl: parser must not ignore error from pfctl_optimize_ruleset() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c5e1dde24dacdeb9d47684d981e17178fd7e8acf Auto-Submitted: auto-generated Date: Mon, 30 Mar 2026 15:09:15 +0000 Message-Id: <69ca921b.33e89.158535ea@gitrepo.freebsd.org> The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=c5e1dde24dacdeb9d47684d981e17178fd7e8acf commit c5e1dde24dacdeb9d47684d981e17178fd7e8acf Author: Kristof Provost AuthorDate: 2026-03-22 02:50:47 +0000 Commit: Kristof Provost CommitDate: 2026-03-30 14:32:00 +0000 pfctl: parser must not ignore error from pfctl_optimize_ruleset() Ignoring the error may cause pfctl(8) to load inconsistent ruleset preventing pf(4) to enforce desired policy. Issue reported and fix suggested by berts _from_ fastmail _dot_ com 'Looks good.' @deraadt MFC after: 1 week Obtained from: OpenBSD, sashan , 9fd28a8cca Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 343ace42f82a629374af4dc3a72da5f46f2c3feb) --- sbin/pfctl/pfctl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 518b32085565..50ed978d1a74 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -1959,8 +1959,9 @@ pfctl_load_ruleset(struct pfctl *pf, char *path, struct pfctl_ruleset *rs, } - if (pf->optimize && rs_num == PF_RULESET_FILTER) - pfctl_optimize_ruleset(pf, rs); + if (pf->optimize && rs_num == PF_RULESET_FILTER && + (error = pfctl_optimize_ruleset(pf, rs)) != 0) + goto error; while ((r = TAILQ_FIRST(rs->rules[rs_num].active.ptr)) != NULL) { TAILQ_REMOVE(rs->rules[rs_num].active.ptr, r, entries); From nobody Tue Mar 31 01:07:49 2026 X-Original-To: dev-commits-src-branches@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 4fl92t0pB9z6WTMv for ; Tue, 31 Mar 2026 01:07:50 +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 4fl92s6ZtPz3fjK for ; Tue, 31 Mar 2026 01:07:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774919269; 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=d+hmroDfmLGUsR5cwtuFoaiBr3a6h0sxIHlLXj8fIPE=; b=yDbrOwxFG+w1VsGOmtMLUDEpmFGVBq4pS1WaeKNJKzR4an7sT1Cw5/P10vL2fHiCIGYEvE pegPMkjhoK40k0gxscmmQGM61ZHetW9+nRPsc0WrHtH4zFiSPVbDpXbgm61N32QYmY2+xX 8exGKM4uHKJII1/seSxTb1b4tsTvdEaSeJbN+KMmWXZpD7bxTMLNA6/lWPTami+h0Uup96 G7MDlxcz9X2QdKED9LmhlMzxr7jpPd34Vaq9IfDe04OLn04taELaJAtRubZlbstmkdSvCE +1VmlpB3PZx2hQde+QMvEk4XDNi32hh03KGcoVAovMCNUCWXOT+/rp1EogJeag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774919269; a=rsa-sha256; cv=none; b=ECTpM/XH6j5lUAMJ9avjdC5kOwIazVY3yteVAl+c8d29aa3SOP/OerbsK5rYkEfEb/Rofo GROXyVAMl54bPoVX5B70RQf+AKZQVCblgbXbCQRu+Vmysuh7VPHQk1s89mRzMRHDSrig6L pjJp/8zGSgBWQUHhZamKJRRQQt3AuZnaLDF6kuNBA/6azS5Jc814CZ90oJlM7FGrFYODXf 5AaD9iOfn/YAV486bh+CPTxd+5f9oDVM0/mj9Z5PQ01RWpKK41kawzToA266g81f/I65Dj P2C8ase4djbRTxECLRN5NHFZT/B9oJat2cfo5Ku9ZGfp2PZex36t9OTPMqR07Q== 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=1774919269; 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=d+hmroDfmLGUsR5cwtuFoaiBr3a6h0sxIHlLXj8fIPE=; b=W/FKum6v7I8U2Rzlq4L7GVx3wyP+t/Wyv0Q83+altjoMj7woP0SibTLl2kiZun9g+erD/P Y0L5SatCzXB9EYhskZFFm5FxKjRePher4FjODwlabGsh42nIXVaTa2/Xbwjd+Wz1N0H0xI h5k4NWnk3gO38RdH+achks1FDswlXBGfvesYvbLncxZahnsQGca5Huhu3hslXsWcmdDJxF 6kYfHv2laYftyFTsEelutbcal/qSVKaMHY1yhtFv9CWYQp6ZGDjXK3gyF9xIxyG+b0Jsq2 Nh6Bg5e2qZa9VF8aNJKZrvEQlj7FzWdkd8Vmli9fyuRqWQOEaD0o4UCTzScqtA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fl92s6B6lz165Q for ; Tue, 31 Mar 2026 01:07:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1a90b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 01:07:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: cea122acd9be - stable/15 - nfs_nfsdserv.c: Fix handling of archive flag for mkdir List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: cea122acd9beeae5a815733614a77acd60a87899 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 01:07:49 +0000 Message-Id: <69cb1e65.1a90b.17a69c42@gitrepo.freebsd.org> The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=cea122acd9beeae5a815733614a77acd60a87899 commit cea122acd9beeae5a815733614a77acd60a87899 Author: Rick Macklem AuthorDate: 2026-03-16 23:22:37 +0000 Commit: Rick Macklem CommitDate: 2026-03-31 01:05:42 +0000 nfs_nfsdserv.c: Fix handling of archive flag for mkdir An NFSv4.1/4.2 client can set/clear the archive, hidden and system flags when creating non-regular files, such as directories. Without this patch, the setting of va_flags causes an EPERM failure, since they are specified for VOP_MKDIR(), VOP_MKNOD() and VOP_SYMLINK(). This patch sets va_flags == VNOVAL for the above VOP_xxx() calls and then sets/clears the flags after creation, which fixes the problem. This bug only affects the Windows NFSv4.1/4.2 client. PR: 293691 (cherry picked from commit 6580d040861dfbf6c630a93cbf41f2a2c7e7b327) --- sys/fs/nfsserver/nfs_nfsdserv.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index ed1b708187e6..bf0f638c52bb 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -1438,7 +1438,7 @@ nfsrvd_mknod(struct nfsrv_descript *nd, __unused int isdgram, vnode_t vp, dirp = NULL; nfsattrbit_t attrbits; char *bufp = NULL, *pathcp = NULL; - u_long *hashp, cnflags; + u_long *hashp, cnflags, setflags; NFSACL_T *aclp = NULL, *daclp = NULL; struct thread *p = curthread; @@ -1605,9 +1605,13 @@ nfsrvd_mknod(struct nfsrv_descript *nd, __unused int isdgram, } } + /* For NFSv4, set na_flags via nfsrv_fixattr(). */ + setflags = nva.na_flags; + nva.na_flags = VNOVAL; nd->nd_repstat = nfsvno_mknod(&named, &nva, nd->nd_cred, p); if (!nd->nd_repstat) { vp = named.ni_vp; + nva.na_flags = setflags; nfsrv_fixattr(nd, vp, &nva, aclp, daclp, p, &attrbits, false); nd->nd_repstat = nfsvno_getfh(vp, fhp, p); if ((nd->nd_flag & ND_NFSV3) && !nd->nd_repstat) @@ -2115,10 +2119,14 @@ nfsrvd_symlinksub(struct nfsrv_descript *nd, struct nameidata *ndp, int pathlen) { u_int32_t *tl; + u_long setflags; + setflags = nvap->na_flags; + nvap->na_flags = (u_long)VNOVAL; nd->nd_repstat = nfsvno_symlink(ndp, nvap, pathcp, pathlen, !(nd->nd_flag & ND_NFSV2), nd->nd_saveduid, nd->nd_cred, p, exp); if (!nd->nd_repstat && !(nd->nd_flag & ND_NFSV2)) { + nvap->na_flags = setflags; nfsrv_fixattr(nd, ndp->ni_vp, nvap, aclp, NULL, p, attrbitp, false); if (nd->nd_flag & ND_NFSV3) { @@ -2249,12 +2257,16 @@ nfsrvd_mkdirsub(struct nfsrv_descript *nd, struct nameidata *ndp, { vnode_t vp; u_int32_t *tl; + u_long setflags; + setflags = nvap->na_flags; + nvap->na_flags = (u_long)VNOVAL; NFSVNO_SETATTRVAL(nvap, type, VDIR); nd->nd_repstat = nfsvno_mkdir(ndp, nvap, nd->nd_saveduid, nd->nd_cred, p, exp); if (!nd->nd_repstat) { vp = ndp->ni_vp; + nvap->na_flags = setflags; nfsrv_fixattr(nd, vp, nvap, aclp, daclp, p, attrbitp, false); nd->nd_repstat = nfsvno_getfh(vp, fhp, p); if (!(nd->nd_flag & ND_NFSV4) && !nd->nd_repstat) From nobody Tue Mar 31 04:07:41 2026 X-Original-To: dev-commits-src-branches@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 4flF2Q0c7dz6X685 for ; Tue, 31 Mar 2026 04:07:42 +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 4flF2P5ksPz41H4 for ; Tue, 31 Mar 2026 04:07:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774930061; 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=lV6nyM7AQdreYtDKfSaasBSCTkahgQTfmNaZyykXDGw=; b=tyUeP6EyXbLerJCnLuzhAmN0ldNzM3Bbcmx5gTRwZot04qk/Epq7NPI4JqtyZ1UADcSvTJ K/0CO/7uKPp11SL4Ru0i2hXJWiWKQc1Jr3Mq5HpbkIWWksrpHK+P6aKbN+AmFDCfT8tzL+ uuF1ndWnn3KMwaVTXCwvURtLsUaRdFIMNJI8rfsh9q9EXudwEn/D6XYOxAqK3BdLaJuDxd FOgpAUWDeP61pm8niSB64P0exdvbUWlVNDjT9vP9HNApIXmN2jDJoK1k3hnChT/UbRRwKU O9DLxywINpTUVj9ZrXeNsZF20LgN98tuR+H78iZqD1njEOfJuKdQoFX+nw2ahg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774930061; a=rsa-sha256; cv=none; b=n4lYWoZvDF0gnx0FH+5NpAdQA1L+JjWBZZr/f7bbaO3x42Y7zzhkQB/TIpCZOw740pD2F6 Es4hH58O+mXK32fsUMi78U/gsVUGhpjIcRRVh093WhU4Yq0IMRTp6YdLxlLQ/nGhxVvgL2 RNKT883VbZizsdCOYWpV67A7hnDzBuQP+3dRRhP9mN+yF4snxh6DiaeKmNWoH4VYB9ImYX rLrcaWIQF4pBBUndQQ2CdTu4iYc67G148ti+Z7+QuX2AlHKu0ZyEMJA1If6Z3oAQ1q5dg4 yw240VjnVYaJtDxd4Td7JcGGtYg4LdNGn0am0wuMiuGkTgC0kdU4/wZu6I5v/A== 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=1774930061; 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=lV6nyM7AQdreYtDKfSaasBSCTkahgQTfmNaZyykXDGw=; b=Pol1kE3UNzGT6Xpzqd5b/GsH8K6/JH4QhCnB990JXvQvC8UdewqW7lYHjmvOiYuLFY7ak1 Wo6jF74x3KEzY3fdAGkfb5cu019S22sXmymcWc0LtXZAX/ieJsVYpjWWL0GhhIzhy9VOrQ YO0xaSPHoKLfBUq96e9WYJCSCLBdaDegiBmckRsP6nL/kdH0MHc4YSKy1NkB8adPf0CIZ6 jbAqZdzyXL5ChpClam3i6sU26CgEwNhL6PZVIgZpxsXht85AL6DC+B9u0uDl4QgyLsCnC/ L47ep2gfprxtCJFLugbQGYKeu5JAtNDObwMKeHo2ES34ta9PCu/LVPH5byPkcg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flF2P5JV8z1CBb for ; Tue, 31 Mar 2026 04:07:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 37c00 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 04:07:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 360ff2ca4710 - stable/15 - dup(2): document the handling of filedescriptor flags List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 360ff2ca47101240d34e1bf56cb788bd5ffb7c96 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 04:07:41 +0000 Message-Id: <69cb488d.37c00.2cd16d79@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=360ff2ca47101240d34e1bf56cb788bd5ffb7c96 commit 360ff2ca47101240d34e1bf56cb788bd5ffb7c96 Author: Konstantin Belousov AuthorDate: 2026-03-28 08:51:42 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-31 04:07:17 +0000 dup(2): document the handling of filedescriptor flags (cherry picked from commit 6cc99baea607255859ee958608e4db6e2ff24793) --- lib/libc/gen/dup3.3 | 2 ++ lib/libsys/dup.2 | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/libc/gen/dup3.3 b/lib/libc/gen/dup3.3 index 338a9ae74c64..ec89ef77cf17 100644 --- a/lib/libc/gen/dup3.3 +++ b/lib/libc/gen/dup3.3 @@ -52,6 +52,8 @@ The close-on-fork flag on the new file descriptor is determined by the bit in .Fa flags . .Pp +The resolve-beneath flag on the new file descriptor is preserved. +.Pp If .Fa oldd \*(Ne diff --git a/lib/libsys/dup.2 b/lib/libsys/dup.2 index 524fd7688670..9c1e3e8d648b 100644 --- a/lib/libsys/dup.2 +++ b/lib/libsys/dup.2 @@ -81,7 +81,10 @@ object reference to the file must be obtained by issuing an additional .Xr open 2 system call. -The close-on-exec flag on the new file descriptor is unset. +The close-on-exec and close-on-fork flags on the new file descriptor +are unset. +The resolve-beneath flag on the new file descriptor is set to the same +state as on the old file descriptor. .Pp In .Fn dup2 , From nobody Tue Mar 31 09:54:54 2026 X-Original-To: dev-commits-src-branches@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 4flNl24PDBz6WcCX for ; Tue, 31 Mar 2026 09:54:54 +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 4flNl23cDkz3jnD for ; Tue, 31 Mar 2026 09:54:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950894; 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=O58Rk7u5G7dFdCcLNf2MM5AuyFFaGHNq8Zi7FDHDfT0=; b=mxi8zstVu319PjSPgdqlVhFhdHtXk6jkTTS5hsRMBLMw5omSOnH64tEsUTbpp+/4IzsXG5 FZTRqUHlo4oA57+jv/GC916Qc83hSv8mVOb5CCuDgscLWuIeGd+jGUemeSZhocH8woKOB9 2v2ELXrEs8UubFo7l3NiTLg8+ib/IgIvEfh+byx6bRTFMSuzdellk6LjnnQkbPjeZujv3V ZN+Is+JCAEg0zdl6XmTHtlmvIbh4GZKWQbNmrydcrJzs7x+C3DnUtacCBzZXQYiglWyGMS pBjcZsCMKiJPXpq2jpjW9XB/AZNfyCZcuJfIemXnuc3ylewpF8Ny3/w2c5rpEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950894; a=rsa-sha256; cv=none; b=YtwvZ51d3Z/ZLFAm9TzIfGIfB1PBbxRtdsfEn/hL0b4Si0Mp2v15cfS7QaglZDtQSVtedR qS26pOcYabQT1C3ekgKI8294jUXRfuTMBG3Z9smLPR63sOqWtpAKkz4VnedGZjwY+xti6e YYMliKKi7CysC5a1A4dyxoYxDMGz2tRJ9SdKHGqy0mLNSA9MAehUbaPVqw6CIhrIHeht4c k97+0YKaI2NruZFoMKEEZCi9WGchoIxgTTOZYLxKVs1on/LYozXcfwdPyRqA57MHQ0OuFz +11dCFfQ0bYYHCJhYE4GVXofq626XB23JBVZsdYowvVgNP9x2DpCjWKzISvGog== 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=1774950894; 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=O58Rk7u5G7dFdCcLNf2MM5AuyFFaGHNq8Zi7FDHDfT0=; b=roAUeAkPSDGEcExRASOeL4ZqWLys7BjWR8UpbCpC5OjHgP9F9LUmwUvmDkhIGWNrqQpm3Y oJLXZLGwdvHQh8ammqNhqwTXPoD94KwtYQbP4as8oaQNcMAhmoer5c5q4MmzOb70bm/tAX YUK+2NqN9Hx5K/bp763PzY3CA9eQ3+AIylRiFfyZXWh4FpEhwbDCoO3kd/cXlzKaYim4Qe jhfAxPbafGGZOpuJCn0oPbUXzvgYC6lAsmdB2Fw1BoVDXQJD1gGXdzYFra2oW7l/smINkN pf266IGLX5yOz37IxgcsKqnzkzqopXHztyLz65IJ9/XeicVISG2jEaKnZm2dww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl22pjxz8TV for ; Tue, 31 Mar 2026 09:54:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a1bb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 847031e374c5 - stable/15 - snd_uaudio: Rename umidi_probe() to umidi_attach() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 847031e374c53b804ff09adf5f5956b0f268bedd Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:54 +0000 Message-Id: <69cb99ee.3a1bb.6340a0bd@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=847031e374c53b804ff09adf5f5956b0f268bedd commit 847031e374c53b804ff09adf5f5956b0f268bedd Author: Christos Margiolis AuthorDate: 2026-03-24 10:30:42 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:15 +0000 snd_uaudio: Rename umidi_probe() to umidi_attach() This performs an attach, not probe. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55900 (cherry picked from commit e67dbccc70046a6f6d8f34c11fd01972b22920c5) --- sys/dev/sound/usb/uaudio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c index 7f49bae9ce5e..f0c3936a503f 100644 --- a/sys/dev/sound/usb/uaudio.c +++ b/sys/dev/sound/usb/uaudio.c @@ -556,7 +556,7 @@ static int umidi_open(struct usb_fifo *, int); static int umidi_ioctl(struct usb_fifo *, u_long cmd, void *, int); static void umidi_close(struct usb_fifo *, int); static void umidi_init(device_t dev); -static int umidi_probe(device_t dev); +static int umidi_attach(device_t dev); static int umidi_detach(device_t dev); static int uaudio_hid_probe(struct uaudio_softc *sc, struct usb_attach_arg *uaa); @@ -1101,7 +1101,7 @@ uaudio_attach(device_t dev) } if (sc->sc_midi_chan.valid) { - if (umidi_probe(dev)) { + if (umidi_attach(dev)) { goto detach; } device_printf(dev, "MIDI sequencer.\n"); @@ -5987,7 +5987,7 @@ static struct usb_fifo_methods umidi_fifo_methods = { }; static int -umidi_probe(device_t dev) +umidi_attach(device_t dev) { struct uaudio_softc *sc = device_get_softc(dev); struct usb_attach_arg *uaa = device_get_ivars(dev); From nobody Tue Mar 31 09:54:55 2026 X-Original-To: dev-commits-src-branches@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 4flNl35ptgz6WcL1 for ; Tue, 31 Mar 2026 09:54:55 +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 4flNl346mbz3kCB for ; Tue, 31 Mar 2026 09:54:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950895; 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=u6lTxhcbx1y3pT1JVLhYO2suebaOeF+/nEBAyqC6InI=; b=rqqPtBkDzgMmv09+tB5OxoDqDSWMjBk+hwV+uwyZYA5YoJ5EBhmFOeSfzXVZVl465koX/X TShcuVxAW1tbL08veicIWzX/vOwCmcwJO23nqFGqpfswX8DvD+dtRzynj7JGAck251eSTL SWPpRohRg+jqoLfqXDb4NRr9G9iOAjjNoc1s03v1CsO8d3PoYk05uI5+ZP0jDQENxLYYgm yNnhIIRscTM+lk6rEz3/g47oHZIvzx706WggXlTdkC5Hh8zm6yLiNac0yhYl+EMIx+wYjx tW36X21/CKOgTPgLMRgYTim6BjzLTStSnOl6qMCpJCbH8Y1FlrBpgB31V+MbcQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950895; a=rsa-sha256; cv=none; b=KEwswnLD2qhx3gIdtcAsCzmsHwfagsXPt6WMGUts6SuqR17U4NRxQVYV5SPVyD+0n8z/RJ QgpdXDspzuA0zFajr3ngZ5gje4igdPv21Jt5FyV1A3lYoq5R0VRgtBrHPbXt4UzhT0ohjZ R45yiyTBYRnf/5JzZDbf77Q4GWWnYLtKw8O/soCN3F8aXG1SHEc/uR3qHxPquMwhobMtCH sbyB3fCT2QOwaVckD8dCgWuMdjK46LDgOkILewiGK2y1F2/TlyjtJ6dbRNVxDFgDTyK4FP /5UPeXEKBPagP0fZCijTaGNw6uhsSYcR/JrtDn7VsgcqNqjBfIHOvK2SAoz8BQ== 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=1774950895; 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=u6lTxhcbx1y3pT1JVLhYO2suebaOeF+/nEBAyqC6InI=; b=YB6qdMt+Z9hTtcI0Ma0+AFtltSYd4pVCSigRdb27Z5ol5AKvPAb9hnvOtPqW/19YtDtI6D E90xlqqv3MYBuFK9O3Al9B9YVWgyuGvNNmRG/xpxfPo4nyXnAQ2SQAzY47ZagHDNUS+9KP Haaj1N+GIUTyNn9j9sS4oKsvx7tad0nbZ+WoeBFsLlyg5jYR+lJK6SYL6Ai7SkXMqZtkIs OyLbIYzXmV2TPvJCsbfFbEVoxCkZSUlw2guQ+1XmSVVKndsPzhnhbDQ0BEH+sGcK/FHQyb xvwxTwFXLJsQswhtJAK3AmRv65mE7DQhGFgwHQMRvVJl7+cIejnv3FQJt7W2qg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl33dpHz8TW for ; Tue, 31 Mar 2026 09:54:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aebf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: c1965dff5d09 - stable/15 - snd_uaudio: Rename uaudio_hid_probe() to uaudio_hid_attach() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c1965dff5d09a3c2406cc1bdc46429dd33212963 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:55 +0000 Message-Id: <69cb99ef.3aebf.4d5fa841@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=c1965dff5d09a3c2406cc1bdc46429dd33212963 commit c1965dff5d09a3c2406cc1bdc46429dd33212963 Author: Christos Margiolis AuthorDate: 2026-03-24 10:30:51 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:15 +0000 snd_uaudio: Rename uaudio_hid_probe() to uaudio_hid_attach() This makes more sense. Sponsored by: The FreeBSD Foundation MFC after: 1 week (cherry picked from commit 0a7749d9436e111c882a16eed1531267943186b4) --- sys/dev/sound/usb/uaudio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c index f0c3936a503f..12e01599b200 100644 --- a/sys/dev/sound/usb/uaudio.c +++ b/sys/dev/sound/usb/uaudio.c @@ -558,7 +558,7 @@ static void umidi_close(struct usb_fifo *, int); static void umidi_init(device_t dev); static int umidi_attach(device_t dev); static int umidi_detach(device_t dev); -static int uaudio_hid_probe(struct uaudio_softc *sc, +static int uaudio_hid_attach(struct uaudio_softc *sc, struct usb_attach_arg *uaa); static void uaudio_hid_detach(struct uaudio_softc *sc); @@ -1138,7 +1138,7 @@ uaudio_attach(device_t dev) bus_attach_children(dev); if (uaudio_handle_hid) { - if (uaudio_hid_probe(sc, uaa) == 0) { + if (uaudio_hid_attach(sc, uaa) == 0) { device_printf(dev, "HID volume keys found.\n"); } else { device_printf(dev, "No HID volume keys found.\n"); @@ -6174,7 +6174,7 @@ tr_setup: } static int -uaudio_hid_probe(struct uaudio_softc *sc, +uaudio_hid_attach(struct uaudio_softc *sc, struct usb_attach_arg *uaa) { void *d_ptr; From nobody Tue Mar 31 09:54:56 2026 X-Original-To: dev-commits-src-branches@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 4flNl46p6gz6WcNg for ; Tue, 31 Mar 2026 09:54:56 +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 4flNl44vwWz3kCC for ; Tue, 31 Mar 2026 09:54:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950896; 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=6GvJNnmtBlQ9HHam9MXP4BPvo4Yy68G2VnwWTIJTL3Y=; b=W1rfyURortUtnqRgepIf+reFJgIdRnfNh8KJgCv01ZL3KgO3S0YCOYeec/NLBd7jvckY3X f2kv3wfdfjloMpvBbcl5SAMM7VUaqSKM0GkOjXck8AHboUD6BhPAjY8qrPMWpk4MeaHDt0 Xf291Nw2NqtzYgIsTMMuGE8mTtIF+sgV8F7RDVFh4PURkTCfV0rZSx41XKIXsbcHKdMybJ TwyRUV15SYRNa4NfH/o7grI9ZJ2RPl1YyNlf94Mv9mggum3B6pSvAaArsyv5uONGOTzFYG IkB6pJKTGyESjdrXWhl5IabzSPCl/unQg5KC1ZMB2DnBle85Q6JxBC7f61Oxfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950896; a=rsa-sha256; cv=none; b=RdCNvi0VnqDaHmpBu8Yy2GbGqzvdigB6oQJcTGfVQlx56pd/YOAU4Wc7pP0/JD0XzCS2uM Mntaa5qR0klnOmHPc9soRBdSRws2hcin0xTh9BfMP2DttylApAv36IZrgra9KLmH0S//04 h14rQ0hdWhQPwRoc7S8Lh+ia5CMpXo4GOsQXfJ8SMVkhScPHpCjTD42xYY1+bl1twZK1sk Al4O33ThH965gfqd9NC81XAzYIXeRhlL2d3tZEIS9gu7L6L0dtOJq+SQXO9kmMZn2Yv7Xs +POxfunHIbNlxAUN1HIw9gtb2nfu/q7MHWL0E1C+S7mxPi5vePmceXyXKoSHhg== 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=1774950896; 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=6GvJNnmtBlQ9HHam9MXP4BPvo4Yy68G2VnwWTIJTL3Y=; b=N7mNzupg9n5cerPNPYgjItjA3bZ3VygxnXRwFzWy28/8QNgBhl+VsUnHyjXXDE5bnRR3Cs gmV6iUvPCxSB8+TMrbwnTzUnfPTe/s7Btzmw5AYs46pXlk5iIK1I0vwSR/uL4Av4vX5J65 owX7gQCz4idUVMbA49NkuSiETy2MxwRPd0mXsn6FGj6c858lMnC7dsbUv/eOimYlXx+odY q5Vr9pW8c/pvbpvzvJawtjIu9AYDXKw27rd6zri+RMZ/s7gaoISch1NNKbR1WAmMjI7e3A +S0aUNJmgMer6pTY8J8rEJKTE61v2Gd/WwLpyk2K8M9jIu4u3fVeqAjsbRBw1Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl44WKBz7gx for ; Tue, 31 Mar 2026 09:54:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c08d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: e93c021d2276 - stable/15 - snd_uaudio: Simplify chan->curr_cable calculation in uaudio_bulk_write_callback() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e93c021d227625cd3bc2e2c5474302db2044094b Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:56 +0000 Message-Id: <69cb99f0.3c08d.7f03521c@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=e93c021d227625cd3bc2e2c5474302db2044094b commit e93c021d227625cd3bc2e2c5474302db2044094b Author: Christos Margiolis AuthorDate: 2026-03-24 10:30:58 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 snd_uaudio: Simplify chan->curr_cable calculation in uaudio_bulk_write_callback() Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55918 (cherry picked from commit 039477d3e7e72285174d83b973e58cea8de85280) --- sys/dev/sound/usb/uaudio.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c index 12e01599b200..b74cba611b24 100644 --- a/sys/dev/sound/usb/uaudio.c +++ b/sys/dev/sound/usb/uaudio.c @@ -5805,9 +5805,7 @@ tr_setup: } } - chan->curr_cable++; - if (chan->curr_cable >= chan->max_emb_jack) - chan->curr_cable = 0; + chan->curr_cable %= chan->max_emb_jack; if (chan->curr_cable == start_cable) { if (tr_any == 0) From nobody Tue Mar 31 09:54:57 2026 X-Original-To: dev-commits-src-branches@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 4flNl613XGz6WcCc for ; Tue, 31 Mar 2026 09:54:58 +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 4flNl55t04z3kFv for ; Tue, 31 Mar 2026 09:54:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950897; 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=LVxyIjVh7CU8KvDZBoP6Nb9RJvfutrccZT7wfPC5Bfw=; b=Ac4Wz8ypQ6AIvsWQgx/MzYsDTpJ3q438AEx7TxZJ8Q8il6fs8psl6OsKKGcW+ZiVUqyT5l BxNFhFbjG2dnA/9DQGUJwfkKA99kat1IXQh7wFRRHwt18F24myGwzLSE57PPRTwSm4Ps0y UVXY5jwgL8J7Zup383x5uvUa33M5+z2hy9zqe8h6Ttz+MuE2A05Y1jJlbkVpGKEor5//co fY+rbc7twijPYszgepFh+0bHGcbi5+IY42xvpEXGnWmsDzyfn7yFbH+G/f+qvSEJFadXxl hagKCfNDpufnrrK6tZ9dVcZYP/4wwF97rmHogM5nygC2n4vgfiireoWjVVlb7A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950897; a=rsa-sha256; cv=none; b=KJ40KTI0iVF6MI9srXKw+CNo6ZqP1UhaHahLLr3LeP602A6zOH8eB/DRff/bNE2ofWbRBx hbUBKL/y/WWU+0CC2w6EcTn0OeXmsHB7nVk/igCuO3e/dFV8QApV9RRw5fvut53hkCV3hZ tL+ye9vBpwtfwESi5RG0H106eplzjLgzQc2WZa7ngZNEqS6jYz0o2pPjeVdzqJ+tr7bE8T /0FBCEjmOUoW2CFE/seUuPq7vZ04Y/RGhFyPTqRj4nDqyeSL0tOVeSpItnxfNUQyJECGe2 aXPPrdKRfSSloUiKPl8UjVQYubI1vFtXcXS+HwX9s75Yq4/HVUw6XdbDpUkAyw== 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=1774950897; 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=LVxyIjVh7CU8KvDZBoP6Nb9RJvfutrccZT7wfPC5Bfw=; b=x60NyV2aaY9XQOSvh6/neUe+MCwUTViUT1nN3XpHrG11OjjsTxoyBp2mA1b27hHPRwnT16 pcSSTzV4bgoi0khnxvTDjfND8iSMDUgUhJHOhgCoCLV1LjolNWPNPwTbbDdrM0EAhz0njR hWWmR8RvFUBK4QWvbL4OxTzDSFtf8wMqdJ+S4KawvJyRynodDxYqUslzkEGPXTvWOf1GSr sb4g7nS4u3SpJk6MHiCEFfUnIjqmkpr8a4OU505kVjg5rQKGbrlPV3xE6KzGATO7mgCvaI Cv/b9MjrM1a1nJ2ngln/j5pLwtsbNhtYxSNd+sTKtLTNXj1qbPu3kOYZK153AQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl55KMDz8VD for ; Tue, 31 Mar 2026 09:54:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c50c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:57 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: a0d3a7da00d7 - stable/15 - sound: Match midi_write() return values with midi_read() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a0d3a7da00d74cdd4f60a2a15efbaefaeb2c3c01 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:57 +0000 Message-Id: <69cb99f1.3c50c.7bb85d2c@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=a0d3a7da00d74cdd4f60a2a15efbaefaeb2c3c01 commit a0d3a7da00d74cdd4f60a2a15efbaefaeb2c3c01 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:08 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Match midi_write() return values with midi_read() Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55920 (cherry picked from commit a49e925489fba23878b3004b2bff7549dc2f2bcb) --- sys/dev/sound/midi/midi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c index 4fd0e3dcf134..e70f76a44ed9 100644 --- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -421,7 +421,7 @@ midi_write(struct cdev *i_dev, struct uio *uio, int ioflag) int used; char buf[MIDI_WSIZE]; - retval = 0; + retval = EIO; if (m == NULL) goto err0; From nobody Tue Mar 31 09:54:58 2026 X-Original-To: dev-commits-src-branches@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 4flNl7234pz6WcCd for ; Tue, 31 Mar 2026 09:54:59 +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 4flNl66V6Cz3k8P for ; Tue, 31 Mar 2026 09:54:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950898; 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=onRpuwAVJCwawgWZSx9nl+ddCN6cyDouHwGDw/mvJ0w=; b=fDlQSYoTatdjtGra0RsD2fQGali1IOyIJvE5O+GxQ4iaCBdUM+iPHtIx9Au2R6FJwbV1Vy mws6G67xwa/SpAOjjsYJa43UQje3ZqIpqCbrjUcCirnRf5dxgRWBI6MByr6gz9QRfwuThm /GjzdvV8ieIzITgakTImYWW7zy3dWguzsxPVHLv075PIPGQB+9TW4PuN1J9HUXHxdaLojK oz0dWg7LX1ZaPt8iWA6xGIec6DRx1QUDjtYIAfafYPOXxIiUQrLIwNRORp8+vWXo+8VITC 31bUl0i4DoVtwZYlfvvKK473EJVaCWoVsqXLPiVb2t5FjN1ffn8gQuEVGx0POA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950898; a=rsa-sha256; cv=none; b=mXaM9RXsDNnBywllti5gm2eogDzSNfuX9N3aDFn+x43XCNPV0V6x7NEhdkUpCOpOsZanwu M1h17VV3zzMYaZFWKlzqK767ado8XM30BCoKy/3SIy0RMc40h9scAC4rVma1PYKUGx/UR/ uzf561SSOiftveMMeklA+8pVZb22OHh/v5EG+LBZAZehFiO2FFtn68kN1rREMo4Vrk2Sa1 MDwX4MzPS5NfckGaP2ezf8Eef/DnQr94hbRTmAyRHIktmou/CXujCuOnQZ/EtJmfjMXYNe dvssBNxiI+G/643tAbc6UUZTd/ennIOuw5UKi4M4J1pS7LOsPz33vMeFMMAM5w== 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=1774950898; 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=onRpuwAVJCwawgWZSx9nl+ddCN6cyDouHwGDw/mvJ0w=; b=d9ev9YvIHsdsR87qURF1UVjNpl685VLLPOhz0aIbDjy+YFTyP3dA8J4FKIxYBx4qUC2Qi4 hAWxui2Ukfk+BU4T7OlDkAQb8ZbIaFDRDYYqW1J+s9Ly+R1w4FQG78S5ze8H0qmBrknW0R rJdVhf91FYwwr1K9DMTbDdfRQKO1Vm+jht9Gx+TuF41wruZbwjunNOdT1e2t3IsQb0Xoro rCKgrf4sGZczQ7LzTKYVhyplkJYWa/hssscTngaX0MfVEWzcsKBv86du5Ku6qIC6fBGv+8 +whBlE7ZLVkDSkBQPjPgw3jETQmr01G6j6473BQK2r3IIC7UXmvMkCQSPVYGfw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl65sphz8K1 for ; Tue, 31 Mar 2026 09:54:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cdbf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:58 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 5c358d5a792d - stable/15 - snd_uaudio: Retire UAUDIO_MAX_CHAN() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5c358d5a792d4ee76af2fa06cd17b8e3a0d3a772 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:58 +0000 Message-Id: <69cb99f2.3cdbf.c039caf@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=5c358d5a792d4ee76af2fa06cd17b8e3a0d3a772 commit 5c358d5a792d4ee76af2fa06cd17b8e3a0d3a772 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:12 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 snd_uaudio: Retire UAUDIO_MAX_CHAN() It's a no-op. Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55924 (cherry picked from commit a2fd964a95829c0225031fb317202d4acc2d6ce9) --- sys/dev/sound/usb/uaudio.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c index b74cba611b24..dd8aa8c9fafe 100644 --- a/sys/dev/sound/usb/uaudio.c +++ b/sys/dev/sound/usb/uaudio.c @@ -155,7 +155,6 @@ SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, debug, CTLFLAG_RWTUN, #define MAKE_WORD(h,l) (((h) << 8) | (l)) #define BIT_TEST(bm,bno) (((bm)[(bno) / 8] >> (7 - ((bno) % 8))) & 1) -#define UAUDIO_MAX_CHAN(x) (x) #define MIX(sc) ((sc)->sc_mixer_node) union uaudio_asid { @@ -1993,7 +1992,7 @@ uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb_device *udev, uint16_t wFormat; wFormat = UGETW(asid.v1->wFormatTag); - bChannels = UAUDIO_MAX_CHAN(asf1d.v1->bNrChannels); + bChannels = asf1d.v1->bNrChannels; bBitResolution = asf1d.v1->bSubFrameSize * 8; if (asf1d.v1->bSamFreqType == 0) { @@ -2074,8 +2073,7 @@ uaudio_chan_fill_info_sub(struct uaudio_softc *sc, struct usb_device *udev, else chan_alt->usb_cfg = uaudio_cfg_play; - chan_alt->sample_size = (UAUDIO_MAX_CHAN(channels) * - p_fmt->bPrecision) / 8; + chan_alt->sample_size = (channels * p_fmt->bPrecision) / 8; chan_alt->channels = channels; if (ep_dir == UE_DIR_IN && From nobody Tue Mar 31 09:54:59 2026 X-Original-To: dev-commits-src-branches@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 4flNl82GLxz6WcCk for ; Tue, 31 Mar 2026 09:55:00 +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 4flNl80Ystz3kCS for ; Tue, 31 Mar 2026 09:55:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950900; 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=W9w3lvRdciZyfgey4T5tASKSAWqGg80Iq0zuTSW9Wj8=; b=OG2zym0UFoxTAs6Gka5sLhf601oBGhtt/Edhw9B5eIaM5INqESt26S1Uxh8XxNOW4VPsZU V3vEAlqpiMvNG/moBu9uTJYuvZRXpaixKRZiCS8f7cZK6yeeD/i40tguQhYCTEZX4vxp4C SCHTllPVscEduF4rRpQVvqSYW+uF6GppYgaI/F08ra1y4XSG1I6l/b8KBSwfG7A6VE63c4 1bRkAAS1/vVkgKpv7SoDsKfMwJDVYNC4DwRY0qYRdvEB8Uel1oBmn/3Ma8L1QsR/lEGuv5 HfB18OmAe+TWRCFnFt51uS2c/p1n9dSvIEkSXlWsJJXiCetGCpOadWB8iREuaw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950900; a=rsa-sha256; cv=none; b=NgYajepoSNhBdKBN18wuiVbAolavFetxr/M690TGAVqxlJKtgZWHclvhoeb9mNtA5xlzvI m/7Cw0jhnkxgs4Dee36wTWxHwQ4Q95mJfeouoW6xr0M1llvb0NctACH/vZs5jlEdbK6umU 8YWNKmKeZahpNmB6if12D8/j7EWAUUlUpyduibWyYwm7VjrG6GqrTAGK9f+WaYYdGWODcS gnS1atSQTPdNSThRAEYfzNzGhjSAIhOzslnIL0ozWoK5Y5J0TUBN9ySRTymQrfP6qOSZfy F2Mnx2FL/OtvE/sttKunbsMDHJ3JytlB2Xuk12mJBVJZ6cPC8gUSP98UFbEnIA== 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=1774950900; 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=W9w3lvRdciZyfgey4T5tASKSAWqGg80Iq0zuTSW9Wj8=; b=JWQDxfquvgtCyw6nItUOK23HSr8LAaDDtBEGteQHQf4dx2S1BsdovzclOQmTXG/xvORHau ihEOe0EnCVeqlwJT10IB8o4g8MnMbjMUaB7EubCMxkDF23fZZEonLsb/vUl3olU2xf96RB QM0w26UwxkJ9D54Bd56Uo6esBg9j5feJZLnlPgdhq749M/TsS8rzzo+0JfXY8oWKZH+/r8 CJqSRKsYGX0JqlZ/Os1D+XzRQ/WcrSUibF/XuMGmfZwHjHCWzjg+eRcQ0Z6KQrD3zb436k ovlKNxIEZdzdiMelhk34a13FAkDknT0Oqe63tXpcIK9B9YwDJv7bI6v/1rHbow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl76d7rz8VG for ; Tue, 31 Mar 2026 09:54:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c00f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:54:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: e6da66073052 - stable/15 - sound: Retire SND_DEBUG List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e6da6607305265f842a4bb211d24d481495ca311 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:54:59 +0000 Message-Id: <69cb99f3.3c00f.2e484aba@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=e6da6607305265f842a4bb211d24d481495ca311 commit e6da6607305265f842a4bb211d24d481495ca311 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:17 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Retire SND_DEBUG Not useful anymore. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55932 (cherry picked from commit 5d311c75324a205f3cd8a8a404a25ebdadb18b54) --- sys/conf/NOTES | 5 ----- sys/conf/options | 1 - sys/dev/sound/pcm/feeder_chain.c | 2 +- sys/dev/sound/pcm/feeder_mixer.c | 16 ---------------- 4 files changed, 1 insertion(+), 23 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 714f88ff2b80..c66abd138b10 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2156,10 +2156,6 @@ envvar hint.gusc.0.flags="0x13" # # Following options are intended for debugging/testing purposes: # -# SND_DEBUG Enable extra debugging code that includes -# sanity checking and possible increase of -# verbosity. -# # SND_DIAGNOSTIC Similar in a spirit of INVARIANTS/DIAGNOSTIC, # zero tolerance against inconsistencies. # @@ -2181,7 +2177,6 @@ envvar hint.gusc.0.flags="0x13" # SND_OLDSTEREO Only 2 channels are allowed, effectively # disabling multichannel processing. # -options SND_DEBUG options SND_DIAGNOSTIC options SND_FEEDER_MULTIFORMAT options SND_FEEDER_FULL_MULTIFORMAT diff --git a/sys/conf/options b/sys/conf/options index 9e9cb6aeb6b3..744da1e394de 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -919,7 +919,6 @@ CFI_ARMEDANDDANGEROUS opt_cfi.h CFI_HARDWAREBYTESWAP opt_cfi.h # Sound options -SND_DEBUG opt_snd.h SND_DIAGNOSTIC opt_snd.h SND_FEEDER_MULTIFORMAT opt_snd.h SND_FEEDER_FULL_MULTIFORMAT opt_snd.h diff --git a/sys/dev/sound/pcm/feeder_chain.c b/sys/dev/sound/pcm/feeder_chain.c index 4ec50d810253..8129d7e90bfd 100644 --- a/sys/dev/sound/pcm/feeder_chain.c +++ b/sys/dev/sound/pcm/feeder_chain.c @@ -126,7 +126,7 @@ static uint32_t *feeder_chain_formats[FEEDER_CHAIN_LAST] = { static int feeder_chain_mode = FEEDER_CHAIN_DEFAULT; -#if defined(_KERNEL) && defined(SND_DEBUG) && defined(SND_FEEDER_FULL_MULTIFORMAT) +#if defined(_KERNEL) && defined(SND_FEEDER_FULL_MULTIFORMAT) SYSCTL_INT(_hw_snd, OID_AUTO, feeder_chain_mode, CTLFLAG_RWTUN, &feeder_chain_mode, 0, "feeder chain mode " diff --git a/sys/dev/sound/pcm/feeder_mixer.c b/sys/dev/sound/pcm/feeder_mixer.c index 8c58e1c8ef33..13342094966b 100644 --- a/sys/dev/sound/pcm/feeder_mixer.c +++ b/sys/dev/sound/pcm/feeder_mixer.c @@ -174,14 +174,6 @@ feed_mixer_rec(struct pcm_channel *c) CHN_UNLOCK(ch); continue; } -#ifdef SND_DEBUG - if ((c->flags & CHN_F_DIRTY) && VCHAN_SYNC_REQUIRED(ch)) { - if (vchan_sync(ch) != 0) { - CHN_UNLOCK(ch); - continue; - } - } -#endif bs = ch->bufsoft; if (ch->flags & CHN_F_MMAP) sndbuf_dispose(bs, NULL, sndbuf_getready(bs)); @@ -270,14 +262,6 @@ feed_mixer_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, CHN_UNLOCK(ch); continue; } -#ifdef SND_DEBUG - if ((c->flags & CHN_F_DIRTY) && VCHAN_SYNC_REQUIRED(ch)) { - if (vchan_sync(ch) != 0) { - CHN_UNLOCK(ch); - continue; - } - } -#endif if ((ch->flags & CHN_F_MMAP) && !(ch->flags & CHN_F_CLOSING)) sndbuf_acquire(ch->bufsoft, NULL, sndbuf_getfree(ch->bufsoft)); From nobody Tue Mar 31 09:55:01 2026 X-Original-To: dev-commits-src-branches@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 4flNl95Bt5z6Wc9B for ; Tue, 31 Mar 2026 09:55:01 +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 4flNl91dJ6z3k8k for ; Tue, 31 Mar 2026 09:55:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950901; 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=ZYNGLk55qOKgGlm7y/pCJvQx21NAO8dXkBdPVs1+wAg=; b=XwZDkMGAudC/cKz7bsHurt6bp8WMuyIfcJMRZNDSCMO7edLwQDuwGWHhMb+zCW6j8qI5zl uUbo+mWEq7nhVjqVi+Bnp0P1Fw7fcCeYtW3TASWFtYQuZ2HBeCLwj3BHr83ihsd7ysSkOj kXcle4K5pHAAdChBKFt1MU6X2HjTE/eUsRQoSQagN2YrmzMx1vC15UxaVLdH3junkoa4/P zgFhzfud07ChmDlzHdXMaBAuHBYUeoq9eV3NN/QsDj15bfgdriq8aNO3KozY06m66JWpCf /iU4jqVqcfp36BsBdZ40IhOLW7eGXsWH+PjF59SPCfDU71rcnPB/iJeAolDYig== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950901; a=rsa-sha256; cv=none; b=Ubtl9JFM2PVriBb07q6ql2fJE64jFN7jfiqBzDurYwRRok7DMpZV1cwueG5P3GgLKPFNEz WCEq3wa5z/MC/qvjRawdqmJFVNbvqkqocn2G6WqKkvLPrhSxRBAr1iB1L20QmtcqfEYziI CeHb9gbasvJX6Wn7MZgUZMSNiCQbF4xVVpsgoV0ka2nwRfKik3/vPf37YzFgcNCAhlfcXx /O0DCwiF4oFstfQUzGdPQToRp79nivA5QPvbGgZ7hoL4ZjD682iD10+H72XCUPBsV9mvJN s0lJOaOC+NtIbvAyHXiMpznwjkksOCU5v4/he4Nxfw2m29kKnAP+DFx9nn54aQ== 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=1774950901; 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=ZYNGLk55qOKgGlm7y/pCJvQx21NAO8dXkBdPVs1+wAg=; b=pkcMkyKUZnqcI7iy2iBRT3K4fxhBBRXsV4pXJI+iYkcXTXtzVpXAUyDOkO9K8Ee6xwvHCD vYznDYWDxGJpjd93zhOm3jW9Jpf51ov/KzKroaA1qmjPtFmH0l2nRD4KcRhjzmVNRhKG+L xxqWQUPNGiX5KVpl548XDnGrRk2rsnMxUIf0QvXLscn1++cbVL88yuheCK8qICdRHZ6ntu 7wku41KWP83HmMO6tYCiVk2+sFiMODpnPRmSNSZkvMvV9FgUrOVwZHemLpzzkPxTXNdDXD LQlMm1R4BOfX/m7MhWQEJ1rvcshf3H2oFWCQG7WKiaLKQYXmf47RNqnCEEoWtw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNl90HDWz7tS for ; Tue, 31 Mar 2026 09:55:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c10b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: ea4182876ac5 - stable/15 - sound: Retire SND_OLDSTEREO List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ea4182876ac56ce5d9e27914392a078593b04c3e Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:01 +0000 Message-Id: <69cb99f5.3c10b.34a730da@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=ea4182876ac56ce5d9e27914392a078593b04c3e commit ea4182876ac56ce5d9e27914392a078593b04c3e Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:22 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Retire SND_OLDSTEREO This is a legacy option and does not serve a good purpose anymore. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55933 (cherry picked from commit bf0e5d987ecd2cbec2200e100bad6d6e724e9315) --- sys/conf/NOTES | 4 ---- sys/conf/options | 1 - sys/dev/sound/pcm/matrix.h | 3 --- 3 files changed, 8 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index c66abd138b10..e27ee07ff7c1 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2174,15 +2174,11 @@ envvar hint.gusc.0.flags="0x13" # integer/arithmetic. Slight increase of dynamic # range at a cost of possible slowdown. # -# SND_OLDSTEREO Only 2 channels are allowed, effectively -# disabling multichannel processing. -# options SND_DIAGNOSTIC options SND_FEEDER_MULTIFORMAT options SND_FEEDER_FULL_MULTIFORMAT options SND_FEEDER_RATE_HP options SND_PCM_64 -options SND_OLDSTEREO # # Cardbus diff --git a/sys/conf/options b/sys/conf/options index 744da1e394de..8f5465cac832 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -924,7 +924,6 @@ SND_FEEDER_MULTIFORMAT opt_snd.h SND_FEEDER_FULL_MULTIFORMAT opt_snd.h SND_FEEDER_RATE_HP opt_snd.h SND_PCM_64 opt_snd.h -SND_OLDSTEREO opt_snd.h X86BIOS diff --git a/sys/dev/sound/pcm/matrix.h b/sys/dev/sound/pcm/matrix.h index e2798c651536..ff5f05e477e4 100644 --- a/sys/dev/sound/pcm/matrix.h +++ b/sys/dev/sound/pcm/matrix.h @@ -29,10 +29,7 @@ #ifndef _SND_MATRIX_H_ #define _SND_MATRIX_H_ -#undef SND_MULTICHANNEL -#ifndef SND_OLDSTEREO #define SND_MULTICHANNEL 1 -#endif /* * XXX = unused, but part of the definition (will be used someday, maybe). From nobody Tue Mar 31 09:55:02 2026 X-Original-To: dev-commits-src-branches@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 4flNlB60DVz6WcNw for ; Tue, 31 Mar 2026 09:55:02 +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 4flNlB2GgNz3jkD for ; Tue, 31 Mar 2026 09:55:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950902; 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=47ZLgEs3fZ31TXnZLnH/EIz3WubPxLpkkpQ0YqD9gmg=; b=cLM5dK5B8HUhZgMz1sZmuH6iklEnzrVUfy7i3/0bBivf1mLEJWM4O20cxCCwLH4YyIiML+ cgG1LOCkDQlONCbgHGEP2+Mo4o2l0JbA+ROjXoeaOtAbS19/zH4iN5727ebf3jrUZXKd6v RgaeRoLApgEcm3yMhrBOGakONFmbleSKAaDcBeGkKD+zk4WWYgK+H5b+uOWE1cq/SMUUDA IKLjHXpDPQ7KrPCzw1cXOiDalR6vjkjh7RySaaLuMdhaozOrReuY5FJ0JplZ1qHPlAogrl 0oAhiZ4EHmM3h+56Ptk+/lN9beVU8i9nhoB7OcF2+58Ybjv1OZ/OZJL8XKKKsg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950902; a=rsa-sha256; cv=none; b=gd4Q7rLtcFMNf/o9/Ji4qlxqMvscdUWOU0kL+f9lm1vmoKmAysKJ8VkkEdTJ9l+FVXo/CM 8bf1LJQPmtPXqRzyC4cJ1TkL85BYUi2yJBhj4zMMRF3ZqKzlS7mj+AvYk0SLrB5xZPA5OO nmUg4PCKMA5Wu/YuZbzUSzs6VAQH0f/tsjBZJbfD/TsJa3frwjZHQ3v/sbr7c7z1r5sh3W +NFo/MXqTJvkcSajGHqxlhPyoU9EapfnmYePND4X2fnWlPBrq8QZOvwT4RnuUROt7Dmts9 CPLHOuejTQrw2W4fSZP/p7zbsV3Geri/tahmP3LrhEeEcLRh9IDcH7xzeCng6g== 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=1774950902; 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=47ZLgEs3fZ31TXnZLnH/EIz3WubPxLpkkpQ0YqD9gmg=; b=uS+xT95grTgUOcc7ccPTAH/4PRwYpPXh0R7hWG5HoxFp+NaJtXnjwaM8ImP1zrBb/Qi9Ff 3ifxQJNW7qHHWCAO1SG7G74oCYR71XU43YjZIlORk8FYkSacrmQxwmiUWud7vlIOSco224 W/8RcLitIPCvNgQTJ7XI1yYgDV72YiKcpXV6xaE856r5BPe36/GCMOZmItgngRaEw3FIUA a9AuIf3s4f6NYrXBQfRRxouI3AXeFbw8MSmol3cfnf0mVcq0iMD0Aq4x+WTHXppPSaPjwG gRfh6QmwZ7xYMLrjGl6YhW25wmgNiuDcNN70k/rwAP1G699xAFfFLhEOqJJUyg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlB12rlz810 for ; Tue, 31 Mar 2026 09:55:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c826 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:02 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: d6b36b860770 - stable/15 - sound: Retire SND_MULTICHANNEL List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d6b36b860770cc9ca4b4cb9669a8639248fd3c93 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:02 +0000 Message-Id: <69cb99f6.3c826.45c541c@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=d6b36b860770cc9ca4b4cb9669a8639248fd3c93 commit d6b36b860770cc9ca4b4cb9669a8639248fd3c93 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:26 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Retire SND_MULTICHANNEL SND_MULTICHANNEL is always defined, so SND_CHN_MAX will also always be 8. Apart from the fact that there is no other place in the code that touches SND_MULTICHANNEL, there is also no good reason nowadays to set SND_CHN_MAX to 2. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55934 (cherry picked from commit 712bd9b2750a71ad7f8b6bebc5177c47d33a6364) --- sys/dev/sound/pcm/matrix.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sys/dev/sound/pcm/matrix.h b/sys/dev/sound/pcm/matrix.h index ff5f05e477e4..f4a79fdc3b30 100644 --- a/sys/dev/sound/pcm/matrix.h +++ b/sys/dev/sound/pcm/matrix.h @@ -29,8 +29,6 @@ #ifndef _SND_MATRIX_H_ #define _SND_MATRIX_H_ -#define SND_MULTICHANNEL 1 - /* * XXX = unused, but part of the definition (will be used someday, maybe). */ @@ -173,12 +171,7 @@ #define SND_CHN_T_END SND_CHN_T_TBR #define SND_CHN_T_STEP 1 #define SND_CHN_MIN 1 - -#ifdef SND_MULTICHANNEL #define SND_CHN_MAX 8 -#else -#define SND_CHN_MAX 2 -#endif /* * Multichannel interleaved volume matrix. Each calculated value relative From nobody Tue Mar 31 09:55:03 2026 X-Original-To: dev-commits-src-branches@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 4flNlC4Kr4z6WcHr for ; Tue, 31 Mar 2026 09:55:03 +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 4flNlC2CCwz3kKc for ; Tue, 31 Mar 2026 09:55:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950903; 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=40sgGpnJM0xh1qoo8AwaTbw7X3Uvkxj0C0+iFXKif8c=; b=S5nWs1ya8ONHaxGaD1Zea10HMTgEDWW4mYBcPaE4v6OcxpAM8watAoSW5dCkQrzz3Y1Pvw aDU60ItR1ANpn1PrK4+3plsZ/IuNfw9jDkuREoOm8KukVIgneTCFDMTp81RQFvDIh2JN07 +hFkALpHPV6bfQRrtFkXj5Sl6x9wFwSm9LWLf7HYPsFTO9co9h0p8BP/8c5JqSTu7ZpmEb oETgkLJPCIWaeekjL2xWWxLDhj76zY5T1UI1UYDbYU400i+pnxrFZ3N4SBljBS0aIZzpkX ZDmsPU0df8Io1wdi+Tb2+/ggr5aWCxFVZ9TP4t8UPqYDSZX3fppWXfpaM0dUBw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950903; a=rsa-sha256; cv=none; b=Ef+O6m0VEWL1/QdCAHCJV/DjUKL4rIq+knufK5a4GvLy10Rst644H1nP/WXD0K8y8i9NcK UP1eATzqu87QgKe7zxOrF/mIyPfiWqJPUCVJPACDhslceKzFbGGuBducoV5PF6OhQ8qY2u MRbAy9y3kIDMF14xaVAKy6XD7ic0/37XdCLxbNVbs7I49ckw+UywaSU2qhjavUYosLt7vV 8l7Hk15jHFIYHJH0jSF4trQOsDQ8c0M2UCzOpk6wZDwFI8STWs+YYSJpd3zxAixK7vBbg1 EHwIGDUtsOqKrPEXAh8EJIsc997U+BXXiJfCE3pQ7yjHeYG5oVZnLGiOgr+s8A== 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=1774950903; 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=40sgGpnJM0xh1qoo8AwaTbw7X3Uvkxj0C0+iFXKif8c=; b=tsAHy7Dr1grEefLALZ26XvNfMSomV682IjwHzKwx+UyznlJvyQeVB+3q1zjyQP7Z6W/51D QpnrbUux74dl1t5Hzua818HCim9/UMog820PEJCHcBWHrbBVEuijRAOKZMuK1/5x8dXtQW LOK6QyNakunfMoZXfoUTuqP8eLOWiCPpcxAwKQzuAAPc8nWhde2ruwrIGM3h4hFok5cvIP hm6AHdaz7sFMv60Ykgw/Uyw95BbHXPl3AfhAq7w2gebpRaQ4AikTwBrywY8JKDvfIrnkIz +E5gPW9et8quXKF7dZdTH/17OX+MLs5PKj0kVQUZqEdz84dous7UKwJJAgNlAw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlC1pdCz7tT for ; Tue, 31 Mar 2026 09:55:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bea1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: cf4199e44604 - stable/15 - sound: Retire unused Z_MULTIFORMAT List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: cf4199e446044ae1e7de0f95739d885f48ff07b6 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:03 +0000 Message-Id: <69cb99f7.3bea1.3ef799e4@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=cf4199e446044ae1e7de0f95739d885f48ff07b6 commit cf4199e446044ae1e7de0f95739d885f48ff07b6 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:29 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Retire unused Z_MULTIFORMAT Sponsored by: The FreeBSD Foundation MFC after: 1 week (cherry picked from commit 12633057f5914a533df81030b553d6bd47681d87) --- sys/dev/sound/pcm/feeder_rate.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index aee164840c4a..66b846e5c6df 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -102,8 +102,6 @@ #define Z_PARANOID 1 -#define Z_MULTIFORMAT 1 - #ifdef _KERNEL #undef Z_USE_ALPHADRIFT #define Z_USE_ALPHADRIFT 1 From nobody Tue Mar 31 09:55:04 2026 X-Original-To: dev-commits-src-branches@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 4flNlD6Kyfz6WcTT for ; Tue, 31 Mar 2026 09:55:04 +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 4flNlD3x0fz3kQP for ; Tue, 31 Mar 2026 09:55:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950904; 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=Pf0qxMwAttQ7vhFbfMB5ysZj0UOB2y0Esj3vEYc1Q4Y=; b=bmrC/frpv17lCVfw9yZsrl+HHBbIaF6b+VzFWp3vhHRfL2So7GJfskacjLtNI5IMGGf4UC yIMNefub69zG4aLS05VdkM6nFKnX4tBEgls8T/ONo1LVdEtGP2SFa0bG17iv94Zo1+ols0 HFu35H/ftKTfojWpcI2AyTmiXAVZ96ntpiyuFoHfFsiDHhqWFrPGdXawGoiN/rZBR+rjUQ gknd4BpVsZrjjr9ohFb+HNkpmpR19YTSm9hyBoZuUl82lsKZVGPmsCL9NJ/lwd172MVaSv H3ZtmSdndOrpt+Oo8qlB/sJSEYYO8PMRRa9bhd2x+X+35mJfWKs1L/MTyfOoEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950904; a=rsa-sha256; cv=none; b=pIgalqCqkWzjtSuMq3Ph6VkBifyWLLGYEtxreCUJPfr5v2H/i1njmeesnHcteOkSNtQwFA gasQ1xzCb8pSJL/ntzLnGSSZYAWInKjYVPuD5uNM9ICO5FKtRVwD47QXaetUaSviSu8F25 KdQHADndWnz5fJaV7awH1IYtCgssxeT3wZ3DRXzp3eNRIAcYbqG7FD2ieRPaQBpoovL0kV qPwMeWsUC1hDnYf6UDiloHXclPCdedqeAGL5emFvx3DXf9Sw3+Ct/SpkVJbD2rP6qBKOCm fFxWeOuZofUD7kwgr4WSz74yQHGF96rWPVPAbRPNdj4hsw/i9AFwt4TTXdVGzg== 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=1774950904; 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=Pf0qxMwAttQ7vhFbfMB5ysZj0UOB2y0Esj3vEYc1Q4Y=; b=Dsp1FZhfOHrbQXj8XQdkWAAcmnNyxtEsdXNZv7RSz/4BrV67ny2q0g4DxU1C5FxgoU6c9e rhtXYdaKRG5xMWwKGRFvnlcvBiPZ6jNM63EpU7/9xrbiJrX/Vhfw3bHunsd5iSn7sX4DZ2 p+2hpY+IsQOhVowxZ/ulRXmr/ZA/5IXd5Ibu2dyyl0SP6QgCI6Z/VwN8ht+fbGNauiO777 Y+oyXqC3KKbTuZ+kc2YYkQDuRCNvkK/TiOmTBufB6T0za+gpkIvQk7smDbB5e+OctXKkwI 2hTWr0BXNnQabasod5di+63GGaiAPGcjYX956o7+a0N6usJ6ZwuikpGz4EAQeA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlD2jQ8z7tV for ; Tue, 31 Mar 2026 09:55:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3be23 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 5289aa5bd63e - stable/15 - sound: Retire SND_FEEDER_MULTIFORMAT and SND_FEEDER_FULL_MULTIFORMAT List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5289aa5bd63e5f63a35896eb74f6f50203488563 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:04 +0000 Message-Id: <69cb99f8.3be23.6336d8d1@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=5289aa5bd63e5f63a35896eb74f6f50203488563 commit 5289aa5bd63e5f63a35896eb74f6f50203488563 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:34 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Retire SND_FEEDER_MULTIFORMAT and SND_FEEDER_FULL_MULTIFORMAT There is no reason to have these legacy controls anymore, all these formats can be handled just fine nowadays. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55937 (cherry picked from commit 9318336f2af134b26adcb217f78f70bfdcf5f222) --- sys/conf/NOTES | 8 -------- sys/conf/options | 2 -- sys/dev/sound/pcm/feeder.h | 18 ------------------ sys/dev/sound/pcm/feeder_chain.c | 12 +----------- sys/dev/sound/pcm/feeder_mixer.c | 3 --- sys/dev/sound/pcm/feeder_rate.c | 12 ++++-------- sys/dev/sound/pcm/feeder_volume.c | 12 ++++-------- 7 files changed, 9 insertions(+), 58 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index e27ee07ff7c1..08a3b33224c1 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2159,12 +2159,6 @@ envvar hint.gusc.0.flags="0x13" # SND_DIAGNOSTIC Similar in a spirit of INVARIANTS/DIAGNOSTIC, # zero tolerance against inconsistencies. # -# SND_FEEDER_MULTIFORMAT By default, only 16/32 bit feeders are compiled -# in. This options enable most feeder converters -# except for 8bit. WARNING: May bloat the kernel. -# -# SND_FEEDER_FULL_MULTIFORMAT Ditto, but includes 8bit feeders as well. -# # SND_FEEDER_RATE_HP (feeder_rate) High precision 64bit arithmetic # as much as possible (the default trying to # avoid it). Possible slowdown. @@ -2175,8 +2169,6 @@ envvar hint.gusc.0.flags="0x13" # range at a cost of possible slowdown. # options SND_DIAGNOSTIC -options SND_FEEDER_MULTIFORMAT -options SND_FEEDER_FULL_MULTIFORMAT options SND_FEEDER_RATE_HP options SND_PCM_64 diff --git a/sys/conf/options b/sys/conf/options index 8f5465cac832..c09727c8b6af 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -920,8 +920,6 @@ CFI_HARDWAREBYTESWAP opt_cfi.h # Sound options SND_DIAGNOSTIC opt_snd.h -SND_FEEDER_MULTIFORMAT opt_snd.h -SND_FEEDER_FULL_MULTIFORMAT opt_snd.h SND_FEEDER_RATE_HP opt_snd.h SND_PCM_64 opt_snd.h diff --git a/sys/dev/sound/pcm/feeder.h b/sys/dev/sound/pcm/feeder.h index 1f106787ee83..834df463295d 100644 --- a/sys/dev/sound/pcm/feeder.h +++ b/sys/dev/sound/pcm/feeder.h @@ -163,21 +163,3 @@ int feeder_matrix_oss_get_channel_order(struct pcmchan_matrix *, unsigned long long *); int feeder_matrix_oss_set_channel_order(struct pcmchan_matrix *, unsigned long long *); - -/* - * By default, various feeders only deal with sign 16/32 bit native-endian - * since it should provide the fastest processing path. Processing 8bit samples - * is too noisy due to limited dynamic range, while 24bit is quite slow due to - * unnatural per-byte read/write. However, for debugging purposes, ensuring - * implementation correctness and torture test, the following can be defined: - * - * SND_FEEDER_MULTIFORMAT - Compile all type of converters, but force - * 8bit samples to be converted to 16bit - * native-endian for better dynamic range. - * Process 24bit samples natively. - * SND_FEEDER_FULL_MULTIFORMAT - Ditto, but process 8bit samples natively. - */ -#ifdef SND_FEEDER_FULL_MULTIFORMAT -#undef SND_FEEDER_MULTIFORMAT -#define SND_FEEDER_MULTIFORMAT 1 -#endif diff --git a/sys/dev/sound/pcm/feeder_chain.c b/sys/dev/sound/pcm/feeder_chain.c index 8129d7e90bfd..4fc846f77496 100644 --- a/sys/dev/sound/pcm/feeder_chain.c +++ b/sys/dev/sound/pcm/feeder_chain.c @@ -66,13 +66,7 @@ struct feeder_chain_desc { #define FEEDER_CHAIN_FULLMULTI 4 #define FEEDER_CHAIN_LAST 5 -#if defined(SND_FEEDER_FULL_MULTIFORMAT) #define FEEDER_CHAIN_DEFAULT FEEDER_CHAIN_FULLMULTI -#elif defined(SND_FEEDER_MULTIFORMAT) -#define FEEDER_CHAIN_DEFAULT FEEDER_CHAIN_MULTI -#else -#define FEEDER_CHAIN_DEFAULT FEEDER_CHAIN_LEAN -#endif /* * List of preferred formats that might be required during @@ -126,7 +120,7 @@ static uint32_t *feeder_chain_formats[FEEDER_CHAIN_LAST] = { static int feeder_chain_mode = FEEDER_CHAIN_DEFAULT; -#if defined(_KERNEL) && defined(SND_FEEDER_FULL_MULTIFORMAT) +#if defined(_KERNEL) SYSCTL_INT(_hw_snd, OID_AUTO, feeder_chain_mode, CTLFLAG_RWTUN, &feeder_chain_mode, 0, "feeder chain mode " @@ -589,12 +583,8 @@ feeder_chain(struct pcm_channel *c) case FEEDER_CHAIN_LEAN: case FEEDER_CHAIN_16: case FEEDER_CHAIN_32: -#if defined(SND_FEEDER_MULTIFORMAT) || defined(SND_FEEDER_FULL_MULTIFORMAT) case FEEDER_CHAIN_MULTI: -#endif -#if defined(SND_FEEDER_FULL_MULTIFORMAT) case FEEDER_CHAIN_FULLMULTI: -#endif break; default: feeder_chain_mode = FEEDER_CHAIN_DEFAULT; diff --git a/sys/dev/sound/pcm/feeder_mixer.c b/sys/dev/sound/pcm/feeder_mixer.c index 13342094966b..be78b0cffb64 100644 --- a/sys/dev/sound/pcm/feeder_mixer.c +++ b/sys/dev/sound/pcm/feeder_mixer.c @@ -43,9 +43,6 @@ #include "snd_fxdiv_gen.h" #endif -#undef SND_FEEDER_MULTIFORMAT -#define SND_FEEDER_MULTIFORMAT 1 - struct feed_mixer_info { uint32_t format; uint32_t channels; diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 66b846e5c6df..4431d9bfe6ed 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -620,15 +620,14 @@ z_feed_sinc_polyphase_##SIGN##BIT##ENDIAN(struct z_info *info, uint8_t *dst) \ Z_DECLARE_SINC(SIGN, BIT, ENDIAN) \ Z_DECLARE_SINC_POLYPHASE(SIGN, BIT, ENDIAN) -#if BYTE_ORDER == LITTLE_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == LITTLE_ENDIAN Z_DECLARE(S, 16, LE) Z_DECLARE(S, 32, LE) #endif -#if BYTE_ORDER == BIG_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == BIG_ENDIAN Z_DECLARE(S, 16, BE) Z_DECLARE(S, 32, BE) #endif -#ifdef SND_FEEDER_MULTIFORMAT Z_DECLARE(S, 8, NE) Z_DECLARE(S, 24, LE) Z_DECLARE(S, 24, BE) @@ -641,7 +640,6 @@ Z_DECLARE(U, 24, BE) Z_DECLARE(U, 32, BE) Z_DECLARE(F, 32, LE) Z_DECLARE(F, 32, BE) -#endif enum { Z_RESAMPLER_ZOH, @@ -670,15 +668,14 @@ static const struct { uint32_t format; z_resampler_t resampler[Z_RESAMPLER_LAST]; } z_resampler_tab[] = { -#if BYTE_ORDER == LITTLE_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == LITTLE_ENDIAN Z_RESAMPLER_ENTRY(S, 16, LE), Z_RESAMPLER_ENTRY(S, 32, LE), #endif -#if BYTE_ORDER == BIG_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == BIG_ENDIAN Z_RESAMPLER_ENTRY(S, 16, BE), Z_RESAMPLER_ENTRY(S, 32, BE), #endif -#ifdef SND_FEEDER_MULTIFORMAT Z_RESAMPLER_ENTRY(S, 8, NE), Z_RESAMPLER_ENTRY(S, 24, LE), Z_RESAMPLER_ENTRY(S, 24, BE), @@ -691,7 +688,6 @@ static const struct { Z_RESAMPLER_ENTRY(U, 32, BE), Z_RESAMPLER_ENTRY(F, 32, LE), Z_RESAMPLER_ENTRY(F, 32, BE), -#endif }; #define Z_RESAMPLER_TAB_SIZE \ diff --git a/sys/dev/sound/pcm/feeder_volume.c b/sys/dev/sound/pcm/feeder_volume.c index e43b2594c7e0..ba3c14f4769e 100644 --- a/sys/dev/sound/pcm/feeder_volume.c +++ b/sys/dev/sound/pcm/feeder_volume.c @@ -74,15 +74,14 @@ feed_volume_##SIGN##BIT##ENDIAN(int *vol, int *matrix, \ } while (--count != 0); \ } -#if BYTE_ORDER == LITTLE_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == LITTLE_ENDIAN FEEDVOLUME_DECLARE(S, 16, LE) FEEDVOLUME_DECLARE(S, 32, LE) #endif -#if BYTE_ORDER == BIG_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == BIG_ENDIAN FEEDVOLUME_DECLARE(S, 16, BE) FEEDVOLUME_DECLARE(S, 32, BE) #endif -#ifdef SND_FEEDER_MULTIFORMAT FEEDVOLUME_DECLARE(S, 8, NE) FEEDVOLUME_DECLARE(S, 24, LE) FEEDVOLUME_DECLARE(S, 24, BE) @@ -95,7 +94,6 @@ FEEDVOLUME_DECLARE(U, 24, BE) FEEDVOLUME_DECLARE(U, 32, BE) FEEDVOLUME_DECLARE(F, 32, LE) FEEDVOLUME_DECLARE(F, 32, BE) -#endif struct feed_volume_info { uint32_t bps, channels; @@ -115,15 +113,14 @@ static const struct { uint32_t format; feed_volume_t apply; } feed_volume_info_tab[] = { -#if BYTE_ORDER == LITTLE_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == LITTLE_ENDIAN FEEDVOLUME_ENTRY(S, 16, LE), FEEDVOLUME_ENTRY(S, 32, LE), #endif -#if BYTE_ORDER == BIG_ENDIAN || defined(SND_FEEDER_MULTIFORMAT) +#if BYTE_ORDER == BIG_ENDIAN FEEDVOLUME_ENTRY(S, 16, BE), FEEDVOLUME_ENTRY(S, 32, BE), #endif -#ifdef SND_FEEDER_MULTIFORMAT FEEDVOLUME_ENTRY(S, 8, NE), FEEDVOLUME_ENTRY(S, 24, LE), FEEDVOLUME_ENTRY(S, 24, BE), @@ -136,7 +133,6 @@ static const struct { FEEDVOLUME_ENTRY(U, 32, BE), FEEDVOLUME_ENTRY(F, 32, LE), FEEDVOLUME_ENTRY(F, 32, BE), -#endif }; #define FEEDVOLUME_TAB_SIZE ((int32_t) \ From nobody Tue Mar 31 09:55:05 2026 X-Original-To: dev-commits-src-branches@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 4flNlG00W3z6WcRB for ; Tue, 31 Mar 2026 09:55:06 +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 4flNlF3zgwz3kJ4 for ; Tue, 31 Mar 2026 09:55:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950905; 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=9fJn8Uxr5/kWqAjsc+o8CHv4/oqG1FqmI2fqqJPrlz0=; b=OHvJe9qTSzmmn3bqmVsaYT9N5Wqj3Wpk40MWio5ziIXoW1gSsuwEjH5ELTdIQX+RrShTkh /VgxsQB7uYVIDu9CJdZp6E3ixxqZnd5LbX6D78bMTLOww7OWfCd6INpH4Hyn9GuicDgUtA Q/bxJv7kKk6+/3cC0WGebXN/93BYa/odowsuetYJEaA5eInwsKCMQsloqge4wxC7tDB1Qt 4CJKT39lHsQhFPBquPmlbyiqsAzOegRogJBxTd+BdmF2gfg2u1agB931W7aagNS9j0xCWG FL3DTiFWIAUn375VdTNUPlWncd4jdVqdKFY0nN/RFA8ea8w+U0WUwU6b72B5uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950905; a=rsa-sha256; cv=none; b=NjG9Gl+/Q+RfvYRbALByKLplzn5tNJiDsZDidJasneqVKyBjsU9jmDfHJylApi6CSX1uwZ hJRz9zmKLWkIenHbtVziIUI9acnbNOUJsMhFSqM+aJtfw+vwoEm6HQ9iPjNWYhuLpCzoJe NpXt9Gi9iIGzNU+LK+/lfPyNrk6uAbGeQFc0MINkRNWWxh+KK/vjYoIhrbE2EjuWyzu1ZE ijucqTYwm1WO4Ad8F8JXlabzpOnN9b2zTtTbOoeBRgAYx8Ab5f0NTR/YnnexrQ1co8aIPI 6tR/JkRn9jHuqS9WMlHt6TZd+U/gIQAKxYrStE/dJkbgGuG0EM3vJOsypGfB4w== 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=1774950905; 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=9fJn8Uxr5/kWqAjsc+o8CHv4/oqG1FqmI2fqqJPrlz0=; b=w0pmboS5cabgf3t/z0vvRagpffEcgh85cq03wdirXZbzh1W3rJ7fXY2DLcpyP66z078Jep 6yuMv6vbHUQ9WQpajYkkc34BmYBpfAKPfEi47D0WA5jwFDZMimn1FrgIhnAyAt/jinUM+8 cDTLomGTWY9qNN9F7jqNC0az/Pg1jBa+GNnCl3fh4ozT8aZ26jE5McizxYJg1hl5NdkMil 0oWCgfzeBPLHCMwt/SZN7LvEpWS8qUjLIrwOkyl54hpvIOBnQiLIjC1RVtFIS7UoM2apy2 0Ohx2cZ1TR8QC4qQcxwZTHL49g3fd4D5k6Ya29l4zyhuM6rgFlwyZ8vBvfeoMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlF3MGGz7tX for ; Tue, 31 Mar 2026 09:55:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a1bf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: db18e522a028 - stable/15 - sound: Remove endianness checks for format table declarations List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: db18e522a028864f4638707ff9dac1ac32200ce4 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:05 +0000 Message-Id: <69cb99f9.3a1bf.a9eb88@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=db18e522a028864f4638707ff9dac1ac32200ce4 commit db18e522a028864f4638707ff9dac1ac32200ce4 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:39 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Remove endianness checks for format table declarations This a legacy thing that is not needed anymore. We can support all of them just fine. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55939 (cherry picked from commit 6755f558c1d7d22cac5b123082fdb2ac080c228d) --- sys/dev/sound/pcm/feeder_rate.c | 8 -------- sys/dev/sound/pcm/feeder_volume.c | 8 -------- 2 files changed, 16 deletions(-) diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 4431d9bfe6ed..03bdbbc789bd 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -620,14 +620,10 @@ z_feed_sinc_polyphase_##SIGN##BIT##ENDIAN(struct z_info *info, uint8_t *dst) \ Z_DECLARE_SINC(SIGN, BIT, ENDIAN) \ Z_DECLARE_SINC_POLYPHASE(SIGN, BIT, ENDIAN) -#if BYTE_ORDER == LITTLE_ENDIAN Z_DECLARE(S, 16, LE) Z_DECLARE(S, 32, LE) -#endif -#if BYTE_ORDER == BIG_ENDIAN Z_DECLARE(S, 16, BE) Z_DECLARE(S, 32, BE) -#endif Z_DECLARE(S, 8, NE) Z_DECLARE(S, 24, LE) Z_DECLARE(S, 24, BE) @@ -668,14 +664,10 @@ static const struct { uint32_t format; z_resampler_t resampler[Z_RESAMPLER_LAST]; } z_resampler_tab[] = { -#if BYTE_ORDER == LITTLE_ENDIAN Z_RESAMPLER_ENTRY(S, 16, LE), Z_RESAMPLER_ENTRY(S, 32, LE), -#endif -#if BYTE_ORDER == BIG_ENDIAN Z_RESAMPLER_ENTRY(S, 16, BE), Z_RESAMPLER_ENTRY(S, 32, BE), -#endif Z_RESAMPLER_ENTRY(S, 8, NE), Z_RESAMPLER_ENTRY(S, 24, LE), Z_RESAMPLER_ENTRY(S, 24, BE), diff --git a/sys/dev/sound/pcm/feeder_volume.c b/sys/dev/sound/pcm/feeder_volume.c index ba3c14f4769e..5f40816b4065 100644 --- a/sys/dev/sound/pcm/feeder_volume.c +++ b/sys/dev/sound/pcm/feeder_volume.c @@ -74,14 +74,10 @@ feed_volume_##SIGN##BIT##ENDIAN(int *vol, int *matrix, \ } while (--count != 0); \ } -#if BYTE_ORDER == LITTLE_ENDIAN FEEDVOLUME_DECLARE(S, 16, LE) FEEDVOLUME_DECLARE(S, 32, LE) -#endif -#if BYTE_ORDER == BIG_ENDIAN FEEDVOLUME_DECLARE(S, 16, BE) FEEDVOLUME_DECLARE(S, 32, BE) -#endif FEEDVOLUME_DECLARE(S, 8, NE) FEEDVOLUME_DECLARE(S, 24, LE) FEEDVOLUME_DECLARE(S, 24, BE) @@ -113,14 +109,10 @@ static const struct { uint32_t format; feed_volume_t apply; } feed_volume_info_tab[] = { -#if BYTE_ORDER == LITTLE_ENDIAN FEEDVOLUME_ENTRY(S, 16, LE), FEEDVOLUME_ENTRY(S, 32, LE), -#endif -#if BYTE_ORDER == BIG_ENDIAN FEEDVOLUME_ENTRY(S, 16, BE), FEEDVOLUME_ENTRY(S, 32, BE), -#endif FEEDVOLUME_ENTRY(S, 8, NE), FEEDVOLUME_ENTRY(S, 24, LE), FEEDVOLUME_ENTRY(S, 24, BE), From nobody Tue Mar 31 09:55:06 2026 X-Original-To: dev-commits-src-branches@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 4flNlH0dBPz6WcCw for ; Tue, 31 Mar 2026 09:55:07 +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 4flNlG4X9gz3jr2 for ; Tue, 31 Mar 2026 09:55:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950906; 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=QZ2gHAb1e9h+82cRmfL39rs/0y6mGcTdINlR49YvGeQ=; b=OAF6+Rlk6JfyGMSL/YaXZAVEVhK7KbTcXi/jbKeBbS2rpGB9cmbmuYvOcU52cmJSq78ufc 6aVjHDTGT3CFisHoDSegwvWLZYPzRkjw/Kzlb/ew98NWAP25kT556RTsnTuTfeAqaoeTPD yfp2FtFAHOIfQBYlORBQ3f7myYUQpHnJA4I8PfgHD+PxEm0qs00sJ/pzZLlBCLDInmI3JP aPgCRkfEArL24NYrHPnZk5LXaJ9TyI7KTXUuPm0AZOWqgaX49fWO5wI054MZaojnamCJoB PPuiU6IBn4GULYPAIQQL39I2mrN+Xjh6xim7QK8fZTwNqJnyU7MmeW0JljGqZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950906; a=rsa-sha256; cv=none; b=LQJ0hxbq76PYF7dH95rBuEN65Oa8Zn+Epx8d++8+CPSu6ER5cIz2qjM9h0+RqVy1qApWuw bu2FZLs0gE97zrpOQOol4YchuRec9NjwVD9qQ0oxXwfpsmCAnfgbHmcBnBiWqOKddrAPmk 30cE4aqzPdDzHhn9aNkCUSl+M8YIwRVaHW+UrWvAkQXv48SpSBCe6rZFdzjD01dP7rui+0 WEaXKthNH3hZjKIAWYuT08drOu7Rh3ZQ3UsAKMto5n3zGx/1P3PawX0D4E8s3hiU1GNKB0 GbJ84J+xrqBhyaG0Uy0TrDk0TbEoU3xxxsgV5Uc4MyWY/4K6Fuls/CWD2Eogdg== 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=1774950906; 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=QZ2gHAb1e9h+82cRmfL39rs/0y6mGcTdINlR49YvGeQ=; b=q2AJi52J26TRPfFH34SkdIT6Vm2qOpipBK42zfeFwwQ7g4+vGMzNdcRkmW2bgibAs03lX3 N5uM7QNe7+Fs8dIQw2ukrPdZU1GvDMG+FcRoTgKr7anEEjuzuW//kbmUmBLy68Tw5A9vzY m6vw9Th7XGB63q7Yr0oYRP/qG3+iiZqx8adJEAl3mpDRvXtPREKZwf9V0W3fJVs/jQIgdy HsGYZqhTuOIhnK0BH7MHO71OKFEO1y6FVuXywBLsDbaTjPv8LMzgCnJtlVYPB0OH4JOMri 2XnVV+PY7I4rZPbe8jdM6f+LeTpA4Ytye4/ScAR+GsH3qFznA2Uobm+fY9kdNw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlG44Y2z8TX for ; Tue, 31 Mar 2026 09:55:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39a75 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 7c483aa01363 - stable/15 - sound: Do not create root feeder in chn_init() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7c483aa01363901498a495d95e303d605cca5e53 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:06 +0000 Message-Id: <69cb99fa.39a75.26d0836a@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=7c483aa01363901498a495d95e303d605cca5e53 commit 7c483aa01363901498a495d95e303d605cca5e53 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:43 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Do not create root feeder in chn_init() The feeder chain gets destroyed when feeder_chain() is called, which is after the chn_reset() call in chn_init() further down for primary chans, or vchan_create() for vchans. This makes the root feeder creation in chn_init() essentially a no-op. Remove it altogether and let feeder_chain() after chn_reset() take care of creating the feeder properly. It creates the root one as well. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55941 (cherry picked from commit b9f9fc473eb56273978df4d4c889acba2862b21c) --- sys/dev/sound/pcm/channel.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index b74f76fd21ca..5e7c5772af01 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -1144,7 +1144,6 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, int dir, void *devinfo) { struct pcm_channel *c; - struct feeder_class *fc; struct snd_dbuf *b, *bs; char buf[CHN_NAMELEN]; int err, i, direction, *vchanrate, *vchanformat; @@ -1217,17 +1216,6 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, chn_vpc_reset(c, SND_VOL_C_PCM, 1); CHN_UNLOCK(c); - fc = feeder_getclass(FEEDER_ROOT); - if (fc == NULL) { - device_printf(d->dev, "%s(): failed to get feeder class\n", - __func__); - goto fail; - } - if (feeder_add(c, fc, NULL)) { - device_printf(d->dev, "%s(): failed to add feeder\n", __func__); - goto fail; - } - b = sndbuf_create(c, "primary"); bs = sndbuf_create(c, "secondary"); if (b == NULL || bs == NULL) { From nobody Tue Mar 31 09:55:07 2026 X-Original-To: dev-commits-src-branches@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 4flNlJ2n5Pz6Wc9X for ; Tue, 31 Mar 2026 09:55:08 +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 4flNlH5RtFz3kLN for ; Tue, 31 Mar 2026 09:55:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950907; 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=V6avpiD9wuOj+0wZydPtuVkkcJxIQ7sUufcfdMFe/QA=; b=xf6WbSprP5ri6Iat+7ktYnED/b0WmWAyzyhSbSek3xKt93aoFdr1lv3h26Z3csbz36RL8W Ervz/vM5jxzANiDloi/wR3sWVKgWTiVqq53yf2McjvDtsUAF2/2GZgZobaPucECHMMep+/ k9ir3xpy+RHXnATYfbFkt6hJKoIiuPe/3yOL3ha4+KOYkKzA4FD0avN+97aFgMTNHRCJ2K AcU0C5bA9OgibDTYzDiJ7aJfPe2drhD3c0SQ5iYnK6JFBjtb9gBu+IjUay06qL2KfG2kRW C8ToIx2qqmfVkORl2sNM9FsK0u+8NbFxXq70FLSXm7HnFrC0R1AeiewR3TJd+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950907; a=rsa-sha256; cv=none; b=GVi6a6GrwKN/tWwyIi2X1CXyFLNSUPvhnT3SHbNmtR2TkYaVSxGb7SJ3VK/3st9o3W3+AL JumoxxXqf8bfuuQPapvW/irOgLkqRHHMphL5HURVDg2RqLi3Sk2h0aPSxRBRnDt9zefkj0 6OJeGNwfhQHH02fot1hBs6niM65WFdPEj+zpPfEFQOlRdGX8s/csMuOblZp/zc+rol8qrm GwB4lqY0FOeWnQNsjlf178t+fhvnvmbyk653zEaa+DckgBoE6p8lIXnBWEOhA/AAtC4NqI AybQQWZKuBpfrOsa5a8aTLAOuw1MGBfKG6oDq/bFyn+D20ImpL+07UnUzAjrpA== 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=1774950907; 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=V6avpiD9wuOj+0wZydPtuVkkcJxIQ7sUufcfdMFe/QA=; b=S6rsS//TyN1AfXzHKQmz3m/28WKkJBzN/xxtN+FnlwB7w2Kn25zorJvos3Rmyr/mIR3jL2 ZfsJ9Fu21TznqxsCE3syhT8Rf5tKiyfwA9Yyb2H2P3jcjnTp5Y18I/eXi62WvX/4eaN+Pl 4RkPA1Ed4iV1k/vxxUHwg5ssrL5/2UVj7UHwmOaGjarl2UM9tKLGXyFyPDO810Z97RSNU1 qurrc2UEl/sOyvwByw+lQmEhtDQ0J2LYEgj+ugLao4o6eDJOkGDriRyonsGG60ViQxpY3h 8SLcm6Wd550Nc0r53za/oKKv2jMgR2WzxyJrj127tpYo/+AC4hFWdIP5tKvpQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlH4WsMz8Hb for ; Tue, 31 Mar 2026 09:55:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cdc3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 1edf301bbb97 - stable/15 - sound: Remove SND_DIAGNOSTIC section in buffer.c List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1edf301bbb97dca6b22c13d566ee4fa3d15988c8 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:07 +0000 Message-Id: <69cb99fb.3cdc3.77e14853@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=1edf301bbb97dca6b22c13d566ee4fa3d15988c8 commit 1edf301bbb97dca6b22c13d566ee4fa3d15988c8 Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:48 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Remove SND_DIAGNOSTIC section in buffer.c The purpose of this has not been documented, but it seems like it makes it possible to view the maximum number of bytes that passed to sndbuf_feed(), as well as the maximum number of cycles taken inside its main loop. These do not seem particularly useful anymore. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55989 (cherry picked from commit 4324e0fa71f85f274013100d912584a042c9909e) --- sys/dev/sound/pcm/buffer.c | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/sys/dev/sound/pcm/buffer.c b/sys/dev/sound/pcm/buffer.c index 1db9e5661dc8..0c574ae2908c 100644 --- a/sys/dev/sound/pcm/buffer.c +++ b/sys/dev/sound/pcm/buffer.c @@ -506,29 +506,11 @@ sndbuf_dispose(struct snd_dbuf *b, u_int8_t *to, unsigned int count) return 0; } -#ifdef SND_DIAGNOSTIC -static uint32_t snd_feeder_maxfeed = 0; -SYSCTL_UINT(_hw_snd, OID_AUTO, feeder_maxfeed, CTLFLAG_RD, - &snd_feeder_maxfeed, 0, "maximum feeder count request"); - -static uint32_t snd_feeder_maxcycle = 0; -SYSCTL_UINT(_hw_snd, OID_AUTO, feeder_maxcycle, CTLFLAG_RD, - &snd_feeder_maxcycle, 0, "maximum feeder cycle"); -#endif - /* count is number of bytes we want added to destination buffer */ int sndbuf_feed(struct snd_dbuf *from, struct snd_dbuf *to, struct pcm_channel *channel, struct pcm_feeder *feeder, unsigned int count) { unsigned int cnt, maxfeed; -#ifdef SND_DIAGNOSTIC - unsigned int cycle; - - if (count > snd_feeder_maxfeed) - snd_feeder_maxfeed = count; - - cycle = 0; -#endif KASSERT(count > 0, ("can't feed 0 bytes")); @@ -544,16 +526,8 @@ sndbuf_feed(struct snd_dbuf *from, struct snd_dbuf *to, struct pcm_channel *chan break; sndbuf_acquire(to, to->tmpbuf, cnt); count -= cnt; -#ifdef SND_DIAGNOSTIC - cycle++; -#endif } while (count != 0); -#ifdef SND_DIAGNOSTIC - if (cycle > snd_feeder_maxcycle) - snd_feeder_maxcycle = cycle; -#endif - return (0); } From nobody Tue Mar 31 09:55:08 2026 X-Original-To: dev-commits-src-branches@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 4flNlK09fVz6Wc9Y for ; Tue, 31 Mar 2026 09:55:09 +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 4flNlJ5hQtz3kYl for ; Tue, 31 Mar 2026 09:55:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950908; 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=OhaUr0tDPrmPylCBK+ofnI98J/6dVrCTBdIQ0XE6c48=; b=mP7jQhw9pNUS3mCv3hAITGTXR2hyjt38lsyUAG+wczFMpBUR2alb//xFCwIUMYpCK2iRCa 8sA4/YyX5SpZzKaA18tZTnLeKjhByywnh2W3GRjMRE3nrC9ItF8ax0GS6tq85nHFwhkZXO wfiXYMNXAQsCVr6izVyhxTptuLK2zeqzsVkfPbzdIaHAxazNWdmP1amLm71d4CtwsGrHj5 fk1pcRhCO2y8NEs8XZ4cm/ab/b08tGPK0YZuBKryBm8LArHzPnkobp9DOcbYiS2s39wqbt /haKh1VV9l6yAHJrPc8llH6ORDOUsqu+CHcxgF8RdifNED2ZUQsPl+qaQo7JYg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950908; a=rsa-sha256; cv=none; b=TWJ2fBhYtdvnx3jC9km7xDSz8M7+SpQAWXNvnHxqWW8X72dvLPCUSHkxdV/hip5FRyicS9 dZKv6QyyAJS6OMO0OcwREst+/Evt0lSfM3tgBZuo7R9wOiTe03hXjryMtlgBlOrlYicw+8 C3hBSRRzl2DWy7aN6ik0y1K3C821IZGcxglbW2M86AuezSlk6tmn1TKPZTEB93qUdOGAFy takVgX3UTFf9BCXu6Vev4HRQgldqOaTgWLNNLuhD3nuEkp6TqRTYV0ibDmiX7vFv4COaod /nporyfq0NwPiqnFOzTCG6MqcqJ6l5ANAb65D2XfYLIxdh8VGBuwRCmGuRy62w== 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=1774950908; 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=OhaUr0tDPrmPylCBK+ofnI98J/6dVrCTBdIQ0XE6c48=; b=nem+n/w1lTapsXTkTlaaJhy/NOmMpaPNyPau8u/b0Z2KJr5TXx2YBtmCxStYqRFksaCXOi wtafxk8d+knj6R2rLSUV8aTyVqg35RV5kiFHBJHqzfMKL8zxqze+Na3Fh860xcB/4VP7+U fgyTTDvX3q/XhHS6t44e+vL4GP9Hiu6it4TDKtYAMq+FCJAh5BGVMmmUa0ZMGhNjba98pz uMMf7zpdR8yEct8wewlRmQU1FIomPkLO8R27E1VSlovmaNe4bQwez58nN7rEnq99OivrQU QBfVpLYIo3HLRYzRUi3S3s1HcngAe5IltZdeCbrFDfKRz10pNjXHM9EuuxtGCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlJ5J1Yz8K3 for ; Tue, 31 Mar 2026 09:55:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c10f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: a7c0ee909528 - stable/15 - sound: Always use chn_getvolume_matrix() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a7c0ee90952868a5148b9cc05339b1a2d20c00eb Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:08 +0000 Message-Id: <69cb99fc.3c10f.70782ccf@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=a7c0ee90952868a5148b9cc05339b1a2d20c00eb commit a7c0ee90952868a5148b9cc05339b1a2d20c00eb Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:53 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:16 +0000 sound: Always use chn_getvolume_matrix() There is no reason not to use it. We do it already with CHN_SETVOLUME(). chn_getvolume_matrix() is the same as the non-INVARIANTS CHN_GETVOLUME(), just without the additional KASSERT chn_getvolume_matrix() provides. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55990 (cherry picked from commit 0b7f9597024a0061b1e6c544d78bc2ed9392bd89) --- sys/dev/sound/pcm/channel.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h index 6415f5c88984..0ccce2971c3a 100644 --- a/sys/dev/sound/pcm/channel.h +++ b/sys/dev/sound/pcm/channel.h @@ -307,11 +307,7 @@ int chn_getrates(struct pcm_channel *c, int **rates); int chn_syncdestroy(struct pcm_channel *c); #define CHN_SETVOLUME(...) chn_setvolume_matrix(__VA_ARGS__) -#if defined(SND_DIAGNOSTIC) || defined(INVARIANTS) #define CHN_GETVOLUME(...) chn_getvolume_matrix(__VA_ARGS__) -#else -#define CHN_GETVOLUME(x, y, z) ((x)->volume[y][z]) -#endif #define CHN_GETMUTE(x, y, z) ((x)->muted[y][z]) From nobody Tue Mar 31 09:55:09 2026 X-Original-To: dev-commits-src-branches@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 4flNlL1nMVz6WcJB for ; Tue, 31 Mar 2026 09:55:10 +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 4flNlK6b31z3kLh for ; Tue, 31 Mar 2026 09:55:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950909; 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=U3NHexz864+gQoRMMBDGjglsbX0cGZPGpwej64kTDfM=; b=kDoQe3dfy/bbdl9n5nT5ML6+6H5/PCQ/FbazIEhFlv2QxI0YD/cq4hAOOs4tBPnevppqe2 p96veumSvZxlq4wCZhkDT7z82RA1sJt7DbkSrkeS53YmoDxPy8zHWHa8V9Me6DHiqywDNg gIND2Xz67cLDx+QLqXnl30XWytr9twxiLwulLzDSy5OKR4S8DBsEoFTp3jqd+wxGsPMIjA 0u26RIl4fPRqCiiJ0MwxofVo4eHHxBAxnAFoPpRl9ZtvOVJB7BMQfkH2RpVtC8auZG6UcW 2ThnHI9JuHeHSKzsWXZmy+eNC3vnV3B+zR8SQM/32PT39OarSR1pMZpCKaxH8Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950909; a=rsa-sha256; cv=none; b=DQywRPy6ldpSoj/gokFs1rR0dD18rbSTJ4egzYyLBZuYkS8swMp9K7ahSacoYDdbDVaHmW TUKggSemHryeYHFW+zoV3BcPSg9QO/E9dnXPcspcheXCX90aybPD877Rv9xZlb1gK+00iN C92NSEv1Oor7MQqXcCcU6mIgyGEM4itbiX9pWhvmSnqH7tbhce0drc/+YnMHWd4pxtkLBY htRmwqQnENApopqOnaTrCuUBbROll5PUJtXemRTT0+V2M5atiKAYDHZv9xSg8kXo4B8ikz y+2Jv3fIZyuFADrwh8Rlc2Mpzz+yysbGkEGQXA4GbRCD+zTgLnb2dqCyMLjVCg== 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=1774950909; 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=U3NHexz864+gQoRMMBDGjglsbX0cGZPGpwej64kTDfM=; b=uFLqwGwNnlZ7hpU/Ksf1A+0nIUCITxEq6AA/nwa7JqvnjtEK/v9FmiEhSMVvj7a3vQEOyc Nehjv68cg6cNJFSu1WXxrVE6Dm6WIK/b7A+gtEKICHgW9750901PJYAcab5KeX+HJkvg16 1TiFzRzOqab7nqn+txJvpJFhQ5VDoefnqyO0D6pmGMIJG2RdJn4UUlcgHbs3u/TJejk2cF xpphgCAxd2FaBUHSgpCdhJE1imI5x6/v+2o6ugb9L6K0mQStVtuXugVgSP0MZ5TGiTR4up P0JkwzcTIaU5nYydk4wTlEoVFzfcekzkonQyuibkNVRIVtpZDWErrkoSmUk1mQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlK677wz8K4 for ; Tue, 31 Mar 2026 09:55:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bea5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 9b322a2c39bf - stable/15 - sound: Retire CHN_GETVOLUME() and use chn_getvolume_matrix() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9b322a2c39bf753ab1b6b80911f9f5aee8e9d0ab Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:09 +0000 Message-Id: <69cb99fd.3bea5.53abff89@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=9b322a2c39bf753ab1b6b80911f9f5aee8e9d0ab commit 9b322a2c39bf753ab1b6b80911f9f5aee8e9d0ab Author: Christos Margiolis AuthorDate: 2026-03-24 10:31:59 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:17 +0000 sound: Retire CHN_GETVOLUME() and use chn_getvolume_matrix() CHN_GETVOLUME() is just a wrapped around chn_getvolume_matrix() anyway, so use it directly. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55991 (cherry picked from commit f190fad18c385c184cb3600b7e24a362858a1911) --- sys/dev/sound/pcm/channel.h | 1 - sys/dev/sound/pcm/dsp.c | 8 ++++---- sys/dev/sound/pcm/mixer.c | 4 ++-- sys/dev/sound/sndstat.c | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h index 0ccce2971c3a..22c2bf5a4d3e 100644 --- a/sys/dev/sound/pcm/channel.h +++ b/sys/dev/sound/pcm/channel.h @@ -307,7 +307,6 @@ int chn_getrates(struct pcm_channel *c, int **rates); int chn_syncdestroy(struct pcm_channel *c); #define CHN_SETVOLUME(...) chn_setvolume_matrix(__VA_ARGS__) -#define CHN_GETVOLUME(...) chn_getvolume_matrix(__VA_ARGS__) #define CHN_GETMUTE(x, y, z) ((x)->muted[y][z]) diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index c1e836691ac7..4af0430feca9 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -618,17 +618,17 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *ch, case SOUND_MIXER_PCM: if (ch->direction != PCMDIR_PLAY) break; - *(int *)arg = CHN_GETVOLUME(ch, + *(int *)arg = chn_getvolume_matrix(ch, SND_VOL_C_PCM, SND_CHN_T_FL); - *(int *)arg |= CHN_GETVOLUME(ch, + *(int *)arg |= chn_getvolume_matrix(ch, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; break; case SOUND_MIXER_RECLEV: if (ch->direction != PCMDIR_REC) break; - *(int *)arg = CHN_GETVOLUME(ch, + *(int *)arg = chn_getvolume_matrix(ch, SND_VOL_C_PCM, SND_CHN_T_FL); - *(int *)arg |= CHN_GETVOLUME(ch, + *(int *)arg |= chn_getvolume_matrix(ch, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; break; case SOUND_MIXER_DEVMASK: diff --git a/sys/dev/sound/pcm/mixer.c b/sys/dev/sound/pcm/mixer.c index 55b61ccb4911..6ed2d0c3ce5c 100644 --- a/sys/dev/sound/pcm/mixer.c +++ b/sys/dev/sound/pcm/mixer.c @@ -1142,9 +1142,9 @@ mixer_ioctl_channel_proc: center = (left + right) >> 1; chn_setvolume_multi(c, SND_VOL_C_PCM, left, right, center); } else if ((cmd & ~0xff) == MIXER_READ(0)) { - *(int *)arg = CHN_GETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_FL); + *(int *)arg = chn_getvolume_matrix(c, SND_VOL_C_PCM, SND_CHN_T_FL); *(int *)arg |= - CHN_GETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; + chn_getvolume_matrix(c, SND_VOL_C_PCM, SND_CHN_T_FR) << 8; } CHN_UNLOCK(c); diff --git a/sys/dev/sound/sndstat.c b/sys/dev/sound/sndstat.c index b0ac7f7d0824..c28a932c784e 100644 --- a/sys/dev/sound/sndstat.c +++ b/sys/dev/sound/sndstat.c @@ -487,9 +487,9 @@ sndstat_build_sound4_nvlist(struct snddev_info *d, nvlist_t **dip) c->feedcount); nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_XRUNS, c->xruns); nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_LEFTVOL, - CHN_GETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_FL)); + chn_getvolume_matrix(c, SND_VOL_C_PCM, SND_CHN_T_FL)); nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_RIGHTVOL, - CHN_GETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_FR)); + chn_getvolume_matrix(c, SND_VOL_C_PCM, SND_CHN_T_FR)); nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_FORMAT, c->bufhard->fmt); nvlist_add_number(cdi, SNDST_DSPS_SOUND4_CHAN_HWBUF_RATE, From nobody Tue Mar 31 09:55:10 2026 X-Original-To: dev-commits-src-branches@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 4flNlM3JkJz6WcLj for ; Tue, 31 Mar 2026 09:55:11 +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 4flNlM0Nhdz3kM1 for ; Tue, 31 Mar 2026 09:55:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950911; 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=p0F8YsEUgdWR2T+QZx6qCTpKgDOlGYssG7GcZV8WPD4=; b=c/p4MZsZJxqNk1pWJGqurd+2dfkrJ5We2DBbgzKv+hOABw10Gnq9BEVqrsL8UNxILSxbf2 dKjBWq9Mt24SCFZEZsyNSVeJOVWDU8WuAXUtWOiAL7PvR/5RQiHcjaJM9HiCKKAo0NJkEX NXWvKM5ZVDQuLnzNg7+//D+w4HCgmqGtV1sXxmpPUUty7XIkCt2jBwdoaDAYhKbiseFKt0 w7qowgfUGQS2NFh9xliYZf7uNVyKT5UFHWQCiQCWmZq0FrAqK2Hcn1jQWWE1geD1PnnMXP v74OZu01q8/1u0dvSThGHtMias25Td1/yZ3AD3YgoEimWrpbvhTkREhMOHCKvg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950911; a=rsa-sha256; cv=none; b=KFbJGXhLgMSvQySYjhR3+4K7LI3vX7obYvDbt3fJpwdmNm6g7Ybky8HTydibgc75sN3e+g 9D1g4NQr0htELNm8szfGZVftTREw2Iih07SWNtc2iewU94uuuZwyxDpUTVL3OiYlhaIWMU 8FJpWcx3PxFQG0/mMeOPeJdEfLpJVagcXehNs0lz59SitQFzHJNfZ0POtElPaPp9Se6OH6 2ldSFed76Fg6XdeKPpI9yYGyofeRzat6MAicjwbChIOlFpYP8xE/o538tKJQN1QYu4PuqZ xdpxC+NaajQx2F57EHqHGZJPBQwxTGe1wLOrBtBnL8XVBEapCagJgTKDuyHSvg== 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=1774950911; 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=p0F8YsEUgdWR2T+QZx6qCTpKgDOlGYssG7GcZV8WPD4=; b=SPaA36IFyIRwf1XKN63NNgn0qHu1huo4voTtlGgglub6rm4LLvFE0yJq4u11MwDhVqwfzW mNwHIbekQy3LCrwC6GJdwCD5w3aSe5YVcyQJdygjHtrKwdLGPN8uILgeAB2d1BjlKSkdEG ERl3WutKy7B/TKSCcyl7noGO7qfqQB3X0Lv/ylaG7yZkEaJsuKpr9NHoyuQHiHfj+XswiY 4xWyTJoaDfk391+n2X6Stw9T+gXon3llE8lCB5uwyCYX0lfqlFyW6RJxBtpFaY71uqzUIU YOYBsLNrACp7/heV0hpL4aChTH2BecDmlHhg/7IDtEq8hdpKGdGAAX2w+XFQ9g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlL6wnwz8VJ for ; Tue, 31 Mar 2026 09:55:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3be27 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 668167682a2e - stable/15 - sound: Retire CHN_SETVOLUME() and use chn_setvolume_matrix() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 668167682a2e20e8b6de6d374683d2c19849d7fc Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:10 +0000 Message-Id: <69cb99fe.3be27.11b3c58a@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=668167682a2e20e8b6de6d374683d2c19849d7fc commit 668167682a2e20e8b6de6d374683d2c19849d7fc Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:04 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:17 +0000 sound: Retire CHN_SETVOLUME() and use chn_setvolume_matrix() CHN_SETVOLUME() is just a wrapped around chn_setvolume_matrix() anyway, so use it directly. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55992 (cherry picked from commit 127aa056fea0714116952efb7664956e0f2b69cd) --- sys/dev/sound/pcm/channel.c | 4 ++-- sys/dev/sound/pcm/channel.h | 2 -- sys/dev/sound/pcm/matrix.h | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 5e7c5772af01..67bbfba28177 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -143,7 +143,7 @@ chn_vpc_proc(int reset, int db) PCM_ACQUIRE(d); CHN_FOREACH(c, d, channels.pcm) { CHN_LOCK(c); - CHN_SETVOLUME(c, SND_VOL_C_PCM, SND_CHN_T_VOL_0DB, db); + chn_setvolume_matrix(c, SND_VOL_C_PCM, SND_CHN_T_VOL_0DB, db); if (reset != 0) chn_vpc_reset(c, SND_VOL_C_PCM, 1); CHN_UNLOCK(c); @@ -1635,7 +1635,7 @@ chn_vpc_reset(struct pcm_channel *c, int vc, int force) return; for (i = SND_CHN_T_BEGIN; i <= SND_CHN_T_END; i += SND_CHN_T_STEP) - CHN_SETVOLUME(c, vc, i, c->volume[vc][SND_CHN_T_VOL_0DB]); + chn_setvolume_matrix(c, vc, i, c->volume[vc][SND_CHN_T_VOL_0DB]); } static u_int32_t diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h index 22c2bf5a4d3e..0375bbfb006d 100644 --- a/sys/dev/sound/pcm/channel.h +++ b/sys/dev/sound/pcm/channel.h @@ -306,8 +306,6 @@ int chn_notify(struct pcm_channel *c, u_int32_t flags); int chn_getrates(struct pcm_channel *c, int **rates); int chn_syncdestroy(struct pcm_channel *c); -#define CHN_SETVOLUME(...) chn_setvolume_matrix(__VA_ARGS__) - #define CHN_GETMUTE(x, y, z) ((x)->muted[y][z]) #ifdef OSSV4_EXPERIMENT diff --git a/sys/dev/sound/pcm/matrix.h b/sys/dev/sound/pcm/matrix.h index f4a79fdc3b30..ffac162f41a1 100644 --- a/sys/dev/sound/pcm/matrix.h +++ b/sys/dev/sound/pcm/matrix.h @@ -176,8 +176,7 @@ /* * Multichannel interleaved volume matrix. Each calculated value relative * to master and 0db will be stored in each CLASS + 1 as long as - * chn_setvolume_matrix() or the equivalent CHN_SETVOLUME() macros is - * used (see channel.c). + * chn_setvolume_matrix() is used (see channel.c). */ #define SND_VOL_C_MASTER 0 #define SND_VOL_C_PCM 1 From nobody Tue Mar 31 09:55:12 2026 X-Original-To: dev-commits-src-branches@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 4flNlN4DLcz6WcLk for ; Tue, 31 Mar 2026 09:55:12 +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 4flNlN1BsXz3kZT for ; Tue, 31 Mar 2026 09:55:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950912; 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=PYTb9X+6pYHcd5eXIhZOlYPuAnTI7w/Jiex77GikNPY=; b=bx5UZUcRpf6aExdgJ1NY0cWr/EulbVEjbZfMAAKxJmmsUeSbZr0dYuSW3alwMHMImkdhhH M9HUjI3gmZxzmI6czLSIoJlgjNb7NZkqB+VD6E0/6qloIApQYsEwstHBHKohEvN11iq9kp v6qhNMKfHQRaCtM8ZUAA66mif5eYerUWZsWFrSnCy9MtTVwl3926tpbwYyGRRohFTfYZ3o mnG8htMUuqo+O8PEV18ZO3/W7ZlUfxtWVwba7jlBRP8dRiKk5CKgM0vGKZ2j8eyL9Q9Oj1 JS+d3n50hlwMDcdgrDqJ0VDEHE/4aoZ4vXMqD7ZfxGMktAZbrqfisAZXd/yszw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950912; a=rsa-sha256; cv=none; b=YKOQmRwwT+sthWDiUyAsQFJJ1BSszM4PUHqiYcGOVk+ZqvjZTFP+qBA2gccJBwo8fqfxrD 3jzI6VNd7yK8ET3LUVWGMgOAWCP2W/Imx2h/HMnC3qA34w//BjR4IELS63fbfAiq56mtO3 fkh+CH3ukN36QxLaEkpEcacPzRjRiLpEsLWNae5hjMV8CN8Gmfm1/lXjP8J82gyaTtUFf9 Cua+S651Apji6NWuMZKFkDsw1PdqTABhm+quBsI068Sze1XNrfV9QzEm707zXk/S01e76d Q1XUNlPM/3kJm24a+SbkBxMlsEQs3N/hkqhfUTFW5lov2AMrftSUHBHBShb9fw== 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=1774950912; 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=PYTb9X+6pYHcd5eXIhZOlYPuAnTI7w/Jiex77GikNPY=; b=hO4I0qzsKEhfRtSr5PmTz6Fw+EGt+xIvELafTUk+TsTV2ouXrgqJRDN+4XxivJMFyoSPjl qpCXjNyHHKLOb7l51h6q5oYGFTrrwX2doKMb929yFfZs4hgiQ8m2rT3cWDq4cJIk7DEBpL bucXBR0nwwJe8gJrmw2Lj/YWTZQSZKF8ujsh6QeKhYM2PVgQIvwLmaTa+USMjX0hrjBXi8 9qGGC90OtxGlBnHAZcItjZU45gU0UsXUNv64+V5Ox+JdFXsBnCc4CkQyKSu410K+INtU9H aJPx5GiJeNSq2G7vO/N839ogpnCJlPPhv0o+jSc2iQUdtcM2qukmSIHGyId1FA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlN0f7Tz8K5 for ; Tue, 31 Mar 2026 09:55:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bdaa by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:12 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 901d6fd8787d - stable/15 - sound: Retire CHN_GETMUTE() and use chn_getmute_matrix() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 901d6fd8787de5dda492519238f2ce8f01d4919a Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:12 +0000 Message-Id: <69cb9a00.3bdaa.494e8951@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=901d6fd8787de5dda492519238f2ce8f01d4919a commit 901d6fd8787de5dda492519238f2ce8f01d4919a Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:08 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:53:17 +0000 sound: Retire CHN_GETMUTE() and use chn_getmute_matrix() chn_getmute_matrix() does what CHN_GETMUTE() does, but with a few additional checks. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55993 (cherry picked from commit d171d5b8b5acb145efb41a57a2a8f3cded59a484) --- sys/dev/sound/pcm/channel.h | 2 -- sys/dev/sound/pcm/dsp.c | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h index 0375bbfb006d..dbacbdd894f9 100644 --- a/sys/dev/sound/pcm/channel.h +++ b/sys/dev/sound/pcm/channel.h @@ -306,8 +306,6 @@ int chn_notify(struct pcm_channel *c, u_int32_t flags); int chn_getrates(struct pcm_channel *c, int **rates); int chn_syncdestroy(struct pcm_channel *c); -#define CHN_GETMUTE(x, y, z) ((x)->muted[y][z]) - #ifdef OSSV4_EXPERIMENT int chn_getpeaks(struct pcm_channel *c, int *lpeak, int *rpeak); #endif diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index 4af0430feca9..797bfba81023 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -607,8 +607,9 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *ch, case MIXER_READ(0): switch (j) { case SOUND_MIXER_MUTE: - mute = CHN_GETMUTE(ch, SND_VOL_C_PCM, SND_CHN_T_FL) || - CHN_GETMUTE(ch, SND_VOL_C_PCM, SND_CHN_T_FR); + mute = chn_getmute_matrix(ch, + SND_VOL_C_PCM, SND_CHN_T_FL) || + chn_getmute_matrix(ch, SND_VOL_C_PCM, SND_CHN_T_FR); if (ch->direction == PCMDIR_REC) { *(int *)arg = mute << SOUND_MIXER_RECLEV; } else { From nobody Tue Mar 31 09:55:13 2026 X-Original-To: dev-commits-src-branches@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 4flNlP5kcSz6WcWP for ; Tue, 31 Mar 2026 09:55:13 +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 4flNlP3Mmhz3kMR for ; Tue, 31 Mar 2026 09:55:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950913; 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=trAdcioYhjU6KD1QrTutI05oLVVfdGnGUYyAsvgxlOQ=; b=eR/5n2Mzco9RynLzWukVC6ZwSHuCMtbkM0OghcuhEOjdO7C0YwvKDrcT/MKbLcqhWz81JR tiWxaO7iNn8mzKeYIIt/YX/757E820dIC7CabaWwuKctjkYAE317qYeXJv59KYhmuVAdnx rrK0MTJ7/mVl6JXrnspMIgJ7rnt9F8yyRdcuPwKW78t1aU2Q3fPdR5ERnkv7pS7X7li2ph GbKoRtbxuf7/qhGyXVuRHu8JcO/12ahXx3oYETVWPZjTgJR8sBidfjdYZYo3rUUshdhZ3G pTZZyBM/paIUVf+ZPrbUQrWAqNXj3g7PHvkx4A41GEquv3O34O8744OdJUWtxg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950913; a=rsa-sha256; cv=none; b=vnhgH+VDbqULiC2sGaie5aEKHlN6dtEZizPL4ENnYwVhxhm183hzk7LjJ3EsS6I90WMYDw kt7/+PgdBW2ir+hjD0CAPrMlEnCdxIIQwtC13w0w0PZZBbYpAnG1WFrgFSGs0nxIIFiwG+ bmHFKgheIYG4qH55x3pdB6EE/z00cKLFbV+vQBoY2v9Helms1PweK7vYBaqkHBIzSqoNFW jc3IN4KWJwwBG11ZV5Riza27Fc20n7qEjZF1ry6a641rVG2m2R1Xi/qayGmvWiZjS6qmvj aqbDhqcX4lqwxYQlLFSDYd/AFw0odAfyzwRhgkIfDcli4vrQ8lsbsS7zMiR8SA== 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=1774950913; 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=trAdcioYhjU6KD1QrTutI05oLVVfdGnGUYyAsvgxlOQ=; b=lF92D5vN28lFAbBOApVhTNd3QJxhAabAR+GM8HddfS+EW7DG884RvlSfny+eKyAXZtWbgH 7qG9OOL/iaKVhbGqVBVzG1p4G1b+oW0RKKgEISCd7IFh4GobJ8IElroZqD0dqhct93B9Yc VCHPp4jw1+znFghLBWb+QVJIpMlqu1wczbPYdppNPSlFlAdW9KhTTg+YHPUMs+z9B/op+p zToSfo1g0S0v9AgmsMlhDJ1Loy9iAlJZSpXTJYz23SWk22JUIxRDKgISqTzWgE0hJ323KR mp/rYWRKCsvPSgy4UWnm9vjtnoqni/MnjUU+fJpb3r2g/3299mYXw5ne7erhWA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlP1Sw4z7tc for ; Tue, 31 Mar 2026 09:55:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b579 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 4b7b7a73bdc4 - stable/15 - snd_dummy: Add to sys/conf/files and sys/conf/NOTES List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 4b7b7a73bdc4db859a0125ba543a15235289bccb Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:13 +0000 Message-Id: <69cb9a01.3b579.7eaa1cec@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=4b7b7a73bdc4db859a0125ba543a15235289bccb commit 4b7b7a73bdc4db859a0125ba543a15235289bccb Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:13 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:35 +0000 snd_dummy: Add to sys/conf/files and sys/conf/NOTES Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56040 (cherry picked from commit 72e85a4d977eff23fcd2b12a3513f0e8fd2ac332) (cherry picked from commit 82a066b8593a14e0bbf8e1fcdc75fd9ecf0d9e62) --- sys/conf/NOTES | 2 ++ sys/conf/files | 1 + 2 files changed, 3 insertions(+) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 08a3b33224c1..293087b02a43 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2088,6 +2088,7 @@ device sound # snd_cs4281: Crystal Semiconductor CS4281 PCI. # snd_csa: Crystal Semiconductor CS461x/428x PCI. (except # 4281) +# snd_dummy: Dummy testing driver. # snd_emu10k1: Creative EMU10K1 PCI and EMU10K2 (Audigy) PCI. # snd_emu10kx: Creative SoundBlaster Live! and Audigy # snd_envy24: VIA Envy24 and compatible, needs snd_spicds. @@ -2117,6 +2118,7 @@ device snd_atiixp device snd_cmi device snd_cs4281 device snd_csa +device snd_dummy device snd_emu10k1 device snd_emu10kx device snd_envy24 diff --git a/sys/conf/files b/sys/conf/files index e8c9476f29a8..12c7485d197b 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -3193,6 +3193,7 @@ dev/sound/midi/mpu401.c optional sound dev/sound/midi/mpu_if.m optional sound dev/sound/midi/mpufoi_if.m optional sound dev/sound/sndstat.c optional sound +dev/sound/dummy.c optional snd_dummy sound dev/spibus/acpi_spibus.c optional acpi spibus dev/spibus/ofw_spibus.c optional fdt spibus dev/spibus/spibus.c optional spibus \ From nobody Tue Mar 31 09:55:14 2026 X-Original-To: dev-commits-src-branches@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 4flNlQ5kj9z6WcTm for ; Tue, 31 Mar 2026 09:55:14 +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 4flNlQ2pkcz3kV5 for ; Tue, 31 Mar 2026 09:55:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950914; 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=D8ArgG4rHpLjQEhxtFWK5nxrU5fhU9GYaPO7wsjw+Jw=; b=WAP4uVAx+BszD0b4wN40kD7sMYLRI6xXS4O8He7ybhYpJo86Z7tnPTMTOHDMak3vngGI83 DraeoC0hRSl2SiVqTxajsxyr6YPDxFahNj6hAJVa7B74Dec7Sti58HZroi93tHuoLPngZf oPSWjaJv+m6vlmTFJiXjcRDdScs8Y6esVvW51wEz+Rk+ahrXcZxYDm8UQmv7PoMpnjJWxf lsfDSLKUQJGD6BLz5ZI8lZzXf0QBW4FINW7ago3eE/6bf6CbJxkpILYJspwPD9xpPfD5aX zIMJGXgH7DAZoHxBxzGRTsB70BR0lqaQe/oIE/2UhPOJ/E8NUCFYVDH2d699Bw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950914; a=rsa-sha256; cv=none; b=ekqXUcP2+Tc3qoTGjhAeoP3mH0aCqA+D9J294IL+vMjOX22FJGbWIK7Rush4Psp8yXBrDj ZIiw53StHyboi2mphH1/+v2RDnxHrONKlK0JYX3s06j079IQlTj74No196nu29myxhZuxY szcfRVM9GD6znSP1dnUHKyd9ind4+MXDcZbrM9uMDEMH5VWUDzDYkKWKY2v2oXyQk00FdS 0/XzrkwGwofx4msZy7UuRAYjrpMERbvby11C/P90IDLQn/KrePKzeu1ZpESk27jpgwFzPQ RLV9/+pWWkToXmwnaq65vly52gD0O+tdnztEu412lQpajipwmXD+pig6f5ZOTQ== 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=1774950914; 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=D8ArgG4rHpLjQEhxtFWK5nxrU5fhU9GYaPO7wsjw+Jw=; b=m6VdLlCT+B6BVB2fjZ88+qs68IDPRYROtebyf89UFaTW/gBoX8eU94KcOJBiqhJtSuI6rt hQQPMBE3wii2fGgTNT3J60W5jtRlDTOIF+uM/WWo3PkDMpqEoR/60evVHTs2wmrMKY5gDB 1liCvxWAo7R8zTg3uxEOTZtHtsg2PdEzlb1yMFgaKF2eCgXIZPQzr0hx4STNpLksrrVzW3 rMX7pGMEP910kNLk9IH44uYQFtD7A6qzf295VGxMQycdopS/9/bcP/lS9W6K3P9MvWvzX9 sC1ieopiCAuVhFkbl992fBOO9Q5HeVElXpwSJko1IbaVdOWq3k/FKC6/yoWjdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlQ25w3z8K6 for ; Tue, 31 Mar 2026 09:55:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b1dd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 02c9c1a2a611 - stable/15 - sound: Remove most Z_RATE_* aliases List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 02c9c1a2a611d42ffca007175aaa0fb8096b0940 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:14 +0000 Message-Id: <69cb9a02.3b1dd.af63169@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=02c9c1a2a611d42ffca007175aaa0fb8096b0940 commit 02c9c1a2a611d42ffca007175aaa0fb8096b0940 Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:17 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:44 +0000 sound: Remove most Z_RATE_* aliases They introduce an extra level of abstraction for no reason at all. Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56041 (cherry picked from commit 0ee95151931688e3d321ea7fb13e037b211a40ba) --- sys/dev/sound/pcm/feeder_rate.c | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 03bdbbc789bd..8c69f0b4f3c2 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -89,17 +89,6 @@ #define Z_RATE_DEFAULT 48000 -#define Z_RATE_MIN FEEDRATE_RATEMIN -#define Z_RATE_MAX FEEDRATE_RATEMAX -#define Z_ROUNDHZ FEEDRATE_ROUNDHZ -#define Z_ROUNDHZ_MIN FEEDRATE_ROUNDHZ_MIN -#define Z_ROUNDHZ_MAX FEEDRATE_ROUNDHZ_MAX - -#define Z_RATE_SRC FEEDRATE_SRC -#define Z_RATE_DST FEEDRATE_DST -#define Z_RATE_QUALITY FEEDRATE_QUALITY -#define Z_RATE_CHANNELS FEEDRATE_CHANNELS - #define Z_PARANOID 1 #ifdef _KERNEL @@ -149,9 +138,9 @@ struct z_info { z_resampler_t z_resample; }; -int feeder_rate_min = Z_RATE_MIN; -int feeder_rate_max = Z_RATE_MAX; -int feeder_rate_round = Z_ROUNDHZ; +int feeder_rate_min = FEEDRATE_RATEMIN; +int feeder_rate_max = FEEDRATE_RATEMAX; +int feeder_rate_round = FEEDRATE_ROUNDHZ; int feeder_rate_quality = Z_QUALITY_DEFAULT; static int feeder_rate_polyphase_max = Z_POLYPHASE_MAX; @@ -220,10 +209,10 @@ sysctl_hw_snd_feeder_rate_round(SYSCTL_HANDLER_ARGS) if (err != 0 || req->newptr == NULL || val == feeder_rate_round) return (err); - if (val < Z_ROUNDHZ_MIN || val > Z_ROUNDHZ_MAX) + if (val < FEEDRATE_ROUNDHZ_MIN || val > FEEDRATE_ROUNDHZ_MAX) return (EINVAL); - feeder_rate_round = val - (val % Z_ROUNDHZ); + feeder_rate_round = val - (val % FEEDRATE_ROUNDHZ); return (0); } @@ -1408,21 +1397,21 @@ z_resampler_set(struct pcm_feeder *f, int what, int32_t value) info = f->data; switch (what) { - case Z_RATE_SRC: + case FEEDRATE_SRC: if (value < feeder_rate_min || value > feeder_rate_max) return (E2BIG); if (value == info->rsrc) return (0); info->rsrc = value; break; - case Z_RATE_DST: + case FEEDRATE_DST: if (value < feeder_rate_min || value > feeder_rate_max) return (E2BIG); if (value == info->rdst) return (0); info->rdst = value; break; - case Z_RATE_QUALITY: + case FEEDRATE_QUALITY: if (value < Z_QUALITY_MIN || value > Z_QUALITY_MAX) return (EINVAL); if (value == info->quality) @@ -1439,7 +1428,7 @@ z_resampler_set(struct pcm_feeder *f, int what, int32_t value) return (0); info->quality = oquality; break; - case Z_RATE_CHANNELS: + case FEEDRATE_CHANNELS: if (value < SND_CHN_MIN || value > SND_CHN_MAX) return (EINVAL); if (value == info->channels) @@ -1461,13 +1450,13 @@ z_resampler_get(struct pcm_feeder *f, int what) info = f->data; switch (what) { - case Z_RATE_SRC: + case FEEDRATE_SRC: return (info->rsrc); - case Z_RATE_DST: + case FEEDRATE_DST: return (info->rdst); - case Z_RATE_QUALITY: + case FEEDRATE_QUALITY: return (info->quality); - case Z_RATE_CHANNELS: + case FEEDRATE_CHANNELS: return (info->channels); } From nobody Tue Mar 31 09:55:15 2026 X-Original-To: dev-commits-src-branches@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 4flNlS0dBRz6WcYs for ; Tue, 31 Mar 2026 09:55:16 +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 4flNlR2sLfz3kbF for ; Tue, 31 Mar 2026 09:55:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950915; 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=slQe1gyNdE0xoGRh1alc+ubVrhg8VP6G1vdsyU1gu2w=; b=uCZ7KcMW0nazhpu6IPF14MQRDV3aiEky6OPVNmNbEB73n74Wm8dXdg0vV3jkCvGK0tUZXG o4WoHzAdKWJ8Fg9auZ63uqZnvdJsEJXa+tNJIyfqSp4oM5D+136AejMvCBtamzfq8N6bfC 7262FtKW4yxuR75DqUWtMVOUngRoDDi0azvrp/PurXV/pvHqmvi/UoYDr/RNl0EAPQPF7Q MMb+6GMwQq1LGkYmLDbrqEsYoYUPTExsxChRxZpF1xqI9PfbHW5/vM/7VmUVDIZK8mX8/0 +5Aijt5mJDryVfiI7k2MoPWbyGaiVgcPLUkZt0us7CtO6HRgNMTAAYc5iHvvsg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950915; a=rsa-sha256; cv=none; b=A6SOUVgQT0vgT88JLJj58tHhID6Gf6HPoJlyyxjhm9L1/OIm5jBJ5KkfqsyG1lVeEQ6FJb 6gjRmUb0GNUTJa/qyR5az67wxXDhsyz0Q7ADwVmJhNNg+6FJOsjPFiSe7ef/resHSJDd5y aX9uLCpi2P1U4+v/u7SXrYH6UJH/3A/qWkAxskcBwiBYjlbDp1QUOpxgp4495Nka+dKSXl qdZh66b91qkLy9jVV6FYthfLoyBtDm0raHOJ/esO9V00bBew3RYz7N+TZS1TWx9tuj9UQx c+71/5nWEUa+4PfCN7vK4SEI9ogX9i6PdWXPJRvm/pK31A/3DYY/FzUxyI7img== 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=1774950915; 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=slQe1gyNdE0xoGRh1alc+ubVrhg8VP6G1vdsyU1gu2w=; b=wn+i4sxG+/Vlex9YMMXubq8chfGFAouDvVt2ttP3XINpZtdvtpjlXFyDIMaUh4G79auRHI HeoCPort0XstsDjk4g5WtIto6LuIjKzQ0NKDRZBfIcN/SJ1g1KPjQzaDm+JCcve7Dy1yF+ 57sHuBDudo5YwPapyclts0bN4TaWNlk8A6n7vM+HT9oLS2CXzCN8yfqLcz0lZC8KhZd+F+ E/0OvtCR/uBYkYUfwce3STa/zBzVJ14RUutaAZ3Z0DK5CGH1pagd8LSPJeDzIM8Ozpxsg3 To//X3r894stBUus0tJgoVeBsBIGpe8oW6yh5PXoD0GGWad7ysUjfAYGLHBtKA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlR2Phmz814 for ; Tue, 31 Mar 2026 09:55:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39a79 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 332c78231870 - stable/15 - sound: Retire Z_PARANOID List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 332c78231870f6a8b17632f9a4bcbbe2c1ba23e3 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:15 +0000 Message-Id: <69cb9a03.39a79.dbb8340@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=332c78231870f6a8b17632f9a4bcbbe2c1ba23e3 commit 332c78231870f6a8b17632f9a4bcbbe2c1ba23e3 Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:22 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:44 +0000 sound: Retire Z_PARANOID It is always defined. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56042 (cherry picked from commit 6b91c8d5d2c35c4c6231eb172b514f95ce6e10d7) --- sys/dev/sound/pcm/feeder_rate.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 8c69f0b4f3c2..173f7811f547 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -89,8 +89,6 @@ #define Z_RATE_DEFAULT 48000 -#define Z_PARANOID 1 - #ifdef _KERNEL #undef Z_USE_ALPHADRIFT #define Z_USE_ALPHADRIFT 1 @@ -703,7 +701,6 @@ z_resampler_reset(struct z_info *info) info->quality = Z_QUALITY_MAX; } -#ifdef Z_PARANOID static int32_t z_resampler_sinc_len(struct z_info *info) { @@ -741,9 +738,6 @@ z_resampler_sinc_len(struct z_info *info) return (len); } -#else -#define z_resampler_sinc_len(i) (Z_IS_SINC(i) ? Z_SINC_LEN(i) : 1) -#endif #define Z_POLYPHASE_COEFF_SHIFT 0 From nobody Tue Mar 31 09:55:16 2026 X-Original-To: dev-commits-src-branches@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 4flNlS5LXHz6WcWW for ; Tue, 31 Mar 2026 09:55:16 +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 4flNlS3l32z3kg7 for ; Tue, 31 Mar 2026 09:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950916; 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=rSoRgn26WhsmS/AnbeB/WU8IodVibe2DqecTC6PCOY8=; b=klSV4OPVEycGvKO+fN5qUS3RMaOEBCxvDx52aeT3C7vPA3oNE++zQX8JBlwVMJQsYC40cD hXnarpo26tD7Cv0ns5nhL5uMu0qyKu5qt5QToSdlFLRj73w1MWfvittM292AS3B4wMlGbX 3Z/f1z4DwEiHnHX0TBWtIthVvXuhNA6r0TQy2DNZhwExaHM2UKYRnHGiqj6m/b0lur806B mllPG/KygG+sY4aEYLLC8GJJhRROVsZ/EPbogBkNTlxo5nBrAOo8utoJz5OIESFx+TZb9C OkhjRfvcPLYLQHZZ2S3O4r25nT2i9FInH6NPHZPUJXYaSziWM3Z8p6uAI10nGg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950916; a=rsa-sha256; cv=none; b=P2X0xmnOQYxbUDIrhORAT3k6OZphEdNCHYN0A6F+NcYgSj88SK6XJvguSOrpwllwczoIGk 0zEzL3JRCVRFjkwGVJbNc7k8Fqes4sdhxcm26y/SNTkgLIJop4VhYXXespSGIXkWyhpbZg QuTBdqMURB/6UHusDzKmT3qkkDRR/qNqxk+Ja1p6FFk9qnVADrNIvlpZSAFl/q4/ya4REk dqb5MX3eizhaJ8LZV4Fy4jcsFYw037t13bijo2kwWSrx/4QKPimIpV9PJ9PVqJjzjK8D5K hImHzyfgjItyXh4xtmO6ub0X8rHbnaCBaJL9d7JR2eu+WO1Qo2N4yo5vkxXZNg== 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=1774950916; 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=rSoRgn26WhsmS/AnbeB/WU8IodVibe2DqecTC6PCOY8=; b=FsxwPWKF79ACnJnWeSOeJmD1jjuN7/GyrGZfWOqKoMy48dzCmMEamLcteWkjjDOoHgJrk5 nUIDfi82hEoHZg9Xq9M8rasQSwwRwxnp86wgvXBfj7k1fp16XrBN1LAAMbSPsEethi8Iv9 PAZjsY+mNt4HCqMrexTPZcR7LRl4wS7Pp6iyRMvuhYsReWcLYi+5hkH8/VTCeaqhCAg6S5 r1wnAgNOB2f066kKAz2vn4C30IstUqy2zQtvIEH1Xd+7qGTmkDEe3dAuxSy7hvf3UCkMxw FW3sHEEb8hGPKmDg/nzfHOYh8He6bSPC2S8UaR5X4uqP5fuBomekwtKnaoCibA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlS3Bq0z8K7 for ; Tue, 31 Mar 2026 09:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a1c3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: dfcbb9c9da8a - stable/15 - sound: Retire unused emu10k1-mkalsa.sh List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: dfcbb9c9da8a209ce581a24930f0d22b69ef531b Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:16 +0000 Message-Id: <69cb9a04.3a1c3.595f3516@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=dfcbb9c9da8a209ce581a24930f0d22b69ef531b commit dfcbb9c9da8a209ce581a24930f0d22b69ef531b Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:26 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:44 +0000 sound: Retire unused emu10k1-mkalsa.sh It is a legacy script which is no longer used. Its utility is also unknown. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56043 (cherry picked from commit 71c46c8c901be2a6e0708c912f0d766d49e5b335) --- sys/tools/sound/emu10k1-mkalsa.sh | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/sys/tools/sound/emu10k1-mkalsa.sh b/sys/tools/sound/emu10k1-mkalsa.sh deleted file mode 100644 index c6a2ba462560..000000000000 --- a/sys/tools/sound/emu10k1-mkalsa.sh +++ /dev/null @@ -1,20 +0,0 @@ - -GREP=${GREP:-grep} -CC=${CC:-cc} -AWK=${AWK:-awk} -MV=${MV:=mv} -RM=${RM:=rm} -IN=$1 -OUT=$2 - -trap "${RM} -f $OUT.tmp" EXIT - -$GREP -v '#include' $IN | \ -$CC -E -D__KERNEL__ -dM - | \ -$AWK -F"[ (]" ' -/define/ { - print "#ifndef " $2; - print; - print "#endif"; -}' > $OUT.tmp -${MV} -f $OUT.tmp $OUT From nobody Tue Mar 31 09:55:17 2026 X-Original-To: dev-commits-src-branches@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 4flNlT747vz6WcJb for ; Tue, 31 Mar 2026 09:55:17 +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 4flNlT4kSFz3kdK for ; Tue, 31 Mar 2026 09:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950917; 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=L89Do0yscMFW3gAChekiHaEOLiKRP8rH5ATo+oHY4cc=; b=qxsUl/05cTBbNQkHiIRDAEYTaYaO2fI0KlJFBvhC/QqLgOyTUDBGbxNAnLQL1Zc5dT53m6 ddgqXR30eVWBglIsGYjfdfDSfyJteinnLPURmlQITjfArcDmd89YXhE6MnwEVQqeEmhH9/ bWkeYS0TvcQLnUFqFmyKAeP3f0u6AhcWfDGra1urwmkKLO1xML8H8weS7U7IPf+RdXdcDu BxzG+RFPaIGCVVIdjo5ToWCgvRpvpY2guYy14wn9nqd+2c8G1q91YppsxPikxvxVkyRkhl 7KKuKmRqX6zWIuvGdynw+7mqMT5GbaNDRYuexw5s49yE5m5HD/DGJgaQ8aTJ2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950917; a=rsa-sha256; cv=none; b=Mt5oTzWdPwkXp0uE4eF8Af6KCbaPXRhOHemVB1Lsc/EdfdWPSfQ8fZM1QDXU5GkrTzz3mg nOS6I83jYDYEv8dZJgiNc/bvLzRmhP3B7qyyC99AZe0M40pqrQIWZD/zxjROZEQNcg+ESH LnQlsyc11q0DamRBKfaxRF4pFcjixBV2YmaEfsJh21kYEBevBe506e4gUmhDw7mEcMGXQd svvzHde+APJnWhbGA0068Om56vY10W9mzi9V6Q8sxgbSHs8AHrkatMHy9sylMgVQhwfGTN S6OYlJvn0+HdzjlX5Sh83wMxr9t8Y3h6OxU22Xb1DpEl40KFSStReshv4A8PUA== 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=1774950917; 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=L89Do0yscMFW3gAChekiHaEOLiKRP8rH5ATo+oHY4cc=; b=xhAJ6rNUdn/DL8GPstkd7r/L7hviCAyVLrNDQkQWThA2C4UbEtBLb5kQq2ZB+uJAMW0ino xuz4uZpXl7hxLtZ/cFwKAJ0wtxETDLAhctH/3ZZqw3nKras+qqxtVsfZ/gpzXnw6q6TiDM VlfFNh/R4mVMt7g8oRSAzkuD4SASQ4Qe9qzRFTkIqpPloAtltz98LrmIUXfaan8tYtVxWY ssY3al6TNqAPUiLy1CbeGXw/Sp9LBKH8NyQRfRnB5aJqYAGJyrtJ+4XRe5lL8TmCwdkdVQ snTc6BBQXQcQQ349N/6/jkKN7WGgTIC1KlUmjkBvYM2ScYrcMgxxXzG3pL0hcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlT42lTz84v for ; Tue, 31 Mar 2026 09:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c82a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:17 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: d89987b786a8 - stable/15 - sound: Address some XXX comments regarding AC'97 IDs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d89987b786a81ecde0d8cf247bb0d571892bfb54 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:17 +0000 Message-Id: <69cb9a05.3c82a.59c5c4c8@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=d89987b786a81ecde0d8cf247bb0d571892bfb54 commit d89987b786a81ecde0d8cf247bb0d571892bfb54 Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:31 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:44 +0000 sound: Address some XXX comments regarding AC'97 IDs These seem harmless to address. Not sure why the original author did not just assign the appropriate names if he knew they were wrong. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56044 (cherry picked from commit edad981e1e8673b6dd14656fe75b9f239fb777ce) --- sys/dev/sound/pcm/ac97.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/sys/dev/sound/pcm/ac97.c b/sys/dev/sound/pcm/ac97.c index 14ff2f6a62ab..85f1f7ccf4d0 100644 --- a/sys/dev/sound/pcm/ac97.c +++ b/sys/dev/sound/pcm/ac97.c @@ -125,12 +125,7 @@ static const struct ac97_vendorid ac97vendorid[] = { { 0x57454300, "Winbond" }, { 0x574d4c00, "Wolfson" }, { 0x594d4800, "Yamaha" }, - /* - * XXX This is a fluke, really! The real vendor - * should be SigmaTel, not this! This should be - * removed someday! - */ - { 0x01408300, "Creative" }, + { 0x01408300, "SigmaTel" }, { 0x00000000, NULL } }; @@ -238,12 +233,7 @@ static struct ac97_codecid ac97codecid[] = { { 0x594d4800, 0x00, 0, "YMF743", 0 }, { 0x594d4802, 0x00, 0, "YMF752", 0 }, { 0x594d4803, 0x00, 0, "YMF753", 0 }, - /* - * XXX This is a fluke, really! The real codec - * should be STAC9704, not this! This should be - * removed someday! - */ - { 0x01408384, 0x00, 0, "EV1938", 0 }, + { 0x01408384, 0x00, 0, "STAC9704", 0 }, { 0, 0, 0, NULL, 0 } }; From nobody Tue Mar 31 09:55:18 2026 X-Original-To: dev-commits-src-branches@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 4flNlV717dz6WcPg for ; Tue, 31 Mar 2026 09:55:18 +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 4flNlV5JDzz3kgc for ; Tue, 31 Mar 2026 09:55:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950918; 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=EtlPs5Z6ET2dZh3KdZ8OTYUv6MH4icSS08IAMDSCw0U=; b=ey8SVZ2HurV9tcSdrsqNuXVo8qmlztVjcsUFP/GqbqpMBlQ5G8UpR2bIs8fREU07kbcbFp 6Pz6EbVxM+GM4JsyYuykEgNSmPM7sP5/GtD23La/sIc05rjnIUc41LNNE811FKISZ1jRtv yx9F+QupJH/we59fdP1EQWcb7EBHSPX16x03Rd4TAn6A/3MMnnnp1IzAuqrw/5C56Q+yTo 9+XFLCujzES1jHGHP2JTEzTZ5c1ZiE5xGTyGC4bmWVNsZBYvfq0aFUi0RLpvTZkTu/poaR yQsU6HMNalfLzFwJWgh/IS2jXhufv4vov6kZET17IMMPMP0p2jTNbVS6bdq90Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950918; a=rsa-sha256; cv=none; b=oX3ZKlx3e73m1ga5JmAAVC544U/agISQLN1JUpCiOXJCF0o35rKrSfj/lkubu5PL6xPquA UUsDuc9+VZUYFKr+f1FsncR7UYSuKlSd6EmtIyDdbhlsD4B18OiiAC0OLjKjenmIpHS8fH ZBXVD8H90FplXlN7E0FCWt1XsO0OmWlelwC2H24fGws+0RwfuiOfEpqaV1aKFFeXzPpGhZ 7wfn22wxHmHXlutcp3O06SdBdPGr03O/Clm9HpO9vaRBVXpfPjP9GUpglUJdPic6LnIpHG oa5ucEbyOp0xeZSJsj4Q29ZRmoPwLBLN7uFhweNLztSv8Bs332Xn+iTIrBbqvQ== 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=1774950918; 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=EtlPs5Z6ET2dZh3KdZ8OTYUv6MH4icSS08IAMDSCw0U=; b=DCy9T4eUvr/Us2Re1HkGFSSg4L1nbMIIlzdcD+Vm4hjPsTRAT7Tbyv59n5H62YeF6z6Kri heva1HtjqKFZy5yab0vVPBGHzqysKOZzCo90xOBpUsJkfHGc3b2tQQBaxvfLrhw2UxMgQL 4REn5v1nNrxl/MtEDWlkTzdPp5OfIR/30tpYC1srwKrU9z9PvPtGd8d5gYM4F8ypJ/C7ud 69S5WcZqhYmzjo93NRGuHXkp2qkXZwBiFBFRU10wCGtO+aS/1XgIsyO8/mNh9f8PccubZl wfRD0E94fOkdG/FzOn1+ZyvP0BDCHOYPtc4N+Uq5KKoYbc8IRAtwmtuoGuzLUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlV4pldz7h6 for ; Tue, 31 Mar 2026 09:55:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b1e1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 9990340f6c9d - stable/15 - sound: Remove dead code in pcm/ac97.c List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9990340f6c9d035ab8a4ba821d7bf851c8689342 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:18 +0000 Message-Id: <69cb9a06.3b1e1.1f9a1c73@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=9990340f6c9d035ab8a4ba821d7bf851c8689342 commit 9990340f6c9d035ab8a4ba821d7bf851c8689342 Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:36 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:44 +0000 sound: Remove dead code in pcm/ac97.c ac97_uninitmixer() does not exist also. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56045 (cherry picked from commit d048cec5fb41cf9529dd0b637a51c7ee72b59b3b) --- sys/dev/sound/pcm/ac97.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sys/dev/sound/pcm/ac97.c b/sys/dev/sound/pcm/ac97.c index 85f1f7ccf4d0..73a1e0280e56 100644 --- a/sys/dev/sound/pcm/ac97.c +++ b/sys/dev/sound/pcm/ac97.c @@ -1094,10 +1094,6 @@ ac97mix_uninit(struct snd_mixer *m) if (codec == NULL) return -1; - /* - if (ac97_uninitmixer(codec)) - return -1; - */ ac97_destroy(codec); return 0; } From nobody Tue Mar 31 09:55:19 2026 X-Original-To: dev-commits-src-branches@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 4flNlX5Xmrz6WcWg for ; Tue, 31 Mar 2026 09:55:20 +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 4flNlX29nQz3kdp for ; Tue, 31 Mar 2026 09:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774950920; 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=R9mfge9WRCN54vlrbZ8kWqBAWp1+7f9OIGyapwXNN1g=; b=ksKOdwV1CfPDBrhpMwGaswwSaQMw2ddIe0qQaimW5MZjjtKmrw4RoKZxnc5BZ60emVdJWG vw9b/1WaGmeHmCJz5+1AtXOTFpBJUOyeDiy5Rxgoq3rRXRg8FTlo5LEK/ltQTPgEQwK/zu hPvBEXZ2EXbbaZFUkLLMhDoVBc2ix3A9kidWyADqFVkjV532hFudjDdaNgALWmJY89I74R EcYluj82bMpFrGkSqMbzNKdZDeAquvOYpifK54uA/zmFLCOTRbduMQb5NdToyj9YSzxxK5 Ev0xZ+3lk5KQaNmdkWpT+3X+/bRtu3RTWqKviD8i7cczOD17stBh8EpbdZN1RA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774950920; a=rsa-sha256; cv=none; b=cOztFpoonh2bbRDIyydUCOSjhiN29NGunMCxlpcSpPBiKT8rxYa+P3yyPDMoicTb2Y/tRF KUEuGT5qMjfWYeZtc4GiJg0emzh/FeBgulq2txookY55iZ52/Ex+Mn0kWfEAP3FHDcBNgn h2OqSEVcbmXE4zUOIc8Wt/ISjoqfwceBvf33+IoOBZnjxgkysU4csIWMf1JLTn+0BkzgRR iX3owdDZo+5y0s8ROZXKUjJt6OlMGRtzVhRr08uAo82d02XhizmRAi0Ip2m1o29aOSjEN+ 80gLGC0+wzIDhFTLpkXYn0vmHhGkdvaFJLUkui+vF0I+02z/tVZUD8HQzjv6pA== 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=1774950920; 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=R9mfge9WRCN54vlrbZ8kWqBAWp1+7f9OIGyapwXNN1g=; b=LW5m0o0xsvCNQ1K1LbH7nu549zIcBQjhMk4wqHFwU6tS0fmNX4WMmWEfefrDtQpQRG69xG mTRAF9O6UiHGNkZbYqSf1SJ8ib6ev9WQFXLpBn0ECHfixwMI4s5OIVR+usQo66DtZ5MyhN gcyIXRDQTDubUr82UsDUgualINMcEgnGwT0Vb+tf8Jv+ktbfq3JDRF9umHqJ6fH0dK/HpU 8igsAmSR97XBEUbz3cUSGGIW4VzEi6QL5WDSxLCRoMWtZv3iGrMXoYF7EjASuYInnYMf9+ 1gC1Ns6/VUKVJi+X8ORfGcXWeN5tpLVdw+m63XuNdhf++q3D6GrSu2xmZBU5Rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flNlW5c3Bz84w for ; Tue, 31 Mar 2026 09:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c82e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 09:55:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 3d85a2a7a8a9 - stable/15 - sound: Remove unimplemented chn_reinit() definition List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 3d85a2a7a8a9342a9426c2ad9d07e0a81bf190c0 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 09:55:19 +0000 Message-Id: <69cb9a07.3c82e.54189cb0@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=3d85a2a7a8a9342a9426c2ad9d07e0a81bf190c0 commit 3d85a2a7a8a9342a9426c2ad9d07e0a81bf190c0 Author: Christos Margiolis AuthorDate: 2026-03-24 10:32:38 +0000 Commit: Christos Margiolis CommitDate: 2026-03-31 09:54:45 +0000 sound: Remove unimplemented chn_reinit() definition Sponsored by: The FreeBSD Foundation MFC after: 1 week (cherry picked from commit 2e1cf242292a33a71839c512d222115d36f8fd40) --- sys/dev/sound/pcm/channel.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h index dbacbdd894f9..f964480369a1 100644 --- a/sys/dev/sound/pcm/channel.h +++ b/sys/dev/sound/pcm/channel.h @@ -255,7 +255,6 @@ struct pcm_channel { #include "channel_if.h" -int chn_reinit(struct pcm_channel *c); int chn_write(struct pcm_channel *c, struct uio *buf); int chn_read(struct pcm_channel *c, struct uio *buf); u_int32_t chn_start(struct pcm_channel *c, int force); From nobody Tue Mar 31 15:58:36 2026 X-Original-To: dev-commits-src-branches@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 4flXph3V3lz6WDqM for ; Tue, 31 Mar 2026 15:58:36 +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 4flXph23fjz3gZl for ; Tue, 31 Mar 2026 15:58:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972716; 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=2ZzODA2PxHfMIiOqXZgGh9bh+Sb6Vf0EuhKW+leDzLU=; b=v3+rfI0iCc4wM/+lfqi+FlqV9+Z8AE/ybAlzkVkBDLDzoFIlu5xMwRDNRd+PyWAEg+y19T FEp2fPnsEMlkGvGHi4oX7jZGBLm7CjoZ+DdJ7ZeTSNInitg7JaGxzuaucC74gumK6tt9a2 2AU0jaSmqOVDf4XsDuG0/jCkfjYzfeQrhcnwnfiS/5/+NGGYSZPxF0cOXLmdI0uOVxEDMt kc6SqaeNe5K9hUVbqrLbmkdSXTuvWMjZLrdEXdSvsKL+WLRtADpmblQNuPx5yXPjd1SxYE 8A/e9I4wTgUF47FkK/vDoYZNh2Xm7+byDi8Xgb554YvZLSsAH5ua4nMSike1cg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972716; a=rsa-sha256; cv=none; b=C7XfLDQtpEzTXcIHO7S/G74SROefKMGYzYXFz88XTW6FBYV5K83UCXNNzxJNGVgVqJJM+z Bs8SJLWl4XPwAyGPuYPJAiXmTiiKQmiZZovIIh/F4wNAWVTOb18VFycejhe9zOTyfUkG7x FMYjRfyggDH3QoF4+jwBDD/w5yEZ6PxqaGPeFz05BsNWR9roFmLb+JmMwMOcdF0k6JUIih oR5sZdOCyegPVQK78fDA+s78+kiPs5SOhhnm14dujTOpJuo8cA5/mj+bs/p3ypHJZm4Ovu fJ5CAh0GVKEPFV3Uy2dEcyfBWc/PYwrv0IRUlxOzLhRAC9eWkZOXmwAItgF4yw== 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=1774972716; 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=2ZzODA2PxHfMIiOqXZgGh9bh+Sb6Vf0EuhKW+leDzLU=; b=BfdDV8CuQqt31NNHUFlZFpwhr/lfCua5+76SsO07QliLFH6HMHSwGA4XDefNaNw9MqXsTu 3DqP50dLWKvnVHksAtXmddO31Z48soGX+7zuM5E5xXJ9q0cpI4djuJA3Lt45RabQAs4v3L 8jZ0OwU89LBZHxKBfnCEk7YMbgQMXZRPKyq8wjPuuWqWcrjY7oPbT1WscsnZlHg4c8tZAH sxm+Z4igzayYnJPqBn/UMpqS1390eOuiiYamweTjFRJjvrhcRHesdrTqTcCFUsm99JhR58 X6Px11fedo+DawV+GHD0IfCwbQRr0kn6qsF3F/cmvdXndHjsLsR7X8Vu9dhl3Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXph1cjCzcLD for ; Tue, 31 Mar 2026 15:58:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39fac by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 451b2c0a1274 - stable/15 - asan: Use memset_early() to fill shadow memory List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 451b2c0a12744beb8c26214bdc0ca6a325ce134c Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:36 +0000 Message-Id: <69cbef2c.39fac.44630378@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=451b2c0a12744beb8c26214bdc0ca6a325ce134c commit 451b2c0a12744beb8c26214bdc0ca6a325ce134c Author: Mark Johnston AuthorDate: 2026-02-10 13:53:52 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 asan: Use memset_early() to fill shadow memory __builtin_memset() calls are replaced with calls to memset(), but that can't be used before ifunc relocations are processed if the implementation is selected at boot time. Meanwhile, the sanitizer may emit calls to __asan_set_shadow_*() as soon as locore jumps into C code, before ifuncs are selected. Just unconditionally use memset_early() to work around this. Reported by: andrew MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55079 (cherry picked from commit 4c23a98ba3af3a00004fd7ef54e6330b4d665d55) --- sys/kern/subr_asan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_asan.c b/sys/kern/subr_asan.c index fee6c1a844e2..867d232198b9 100644 --- a/sys/kern/subr_asan.c +++ b/sys/kern/subr_asan.c @@ -241,7 +241,7 @@ kasan_shadow_Nbyte_fill(const void *addr, size_t size, uint8_t code) shad = (void *)kasan_md_addr_to_shad((uintptr_t)addr); size = size >> KASAN_SHADOW_SCALE_SHIFT; - __builtin_memset(shad, code, size); + memset_early(shad, code, size); } /* @@ -1168,7 +1168,7 @@ __asan_handle_no_return(void) void __asan_set_shadow_##byte(void *, size_t); \ void __asan_set_shadow_##byte(void *addr, size_t size) \ { \ - __builtin_memset((void *)addr, 0x##byte, size); \ + memset_early((void *)addr, 0x##byte, size); \ } ASAN_SET_SHADOW(00); From nobody Tue Mar 31 15:58:37 2026 X-Original-To: dev-commits-src-branches@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 4flXpj424Bz6WF4y for ; Tue, 31 Mar 2026 15:58:37 +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 4flXpj2wZWz3gMB for ; Tue, 31 Mar 2026 15:58:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972717; 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=PvdA8f/EU6CWxNJcdkix8kft3+e2AXdsxcCAgzlNteQ=; b=IWoVifqdJ4f3c1hxcD4daTNMvDx9UiBuNRD+5nhdYJpFJGU9SGko5xOvVufMWgAIswnOxE H/G/suKnqON0+BgNecf088EDfhz7Fj52BrzUKLc9T2t9jR5EWzSjgwRjQYM/wOF5Dhi911 F58dqPCJyDonz6Tle8T/1J3IXy63ek6HhrjZTvy7ZDOhHkiv39ziBpgbppkbNvD/gyOVUE dgF9REX9BkfoCU+VDnU5j+384DgucA+l/HK5aunk/4/Y2uxFa4Z0eWUcvMugNcjzP1Crkx 0Q22c+qYKq51jHPU5Gp+ibUGx9lfThewOLXBl0Eg3H3TmJUU1/cFPiAaxfnvyg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972717; a=rsa-sha256; cv=none; b=pGrF9ERr7McBV2UgpoYUTuLZ65jI8p8a0sWir1GglGfnJ6roFtc0t9zl4voxOeRTr+3JEe ZCpUTOPbdQDEIyl6C3OCedz7mfVreuw+jfnXsPBwNVRL+1sAJmJUjWg4HgFVOR4ZvLH1I/ EstajG1f1eK1+S8ONZQTHIogcW3iDeT4DtUzAbyMIo5UdHa1sxlU40A43ceP1CEOrL7jqP ZCbv1beb5NxqjIHoXaMN5Zu9Omzw5kWIVz2CEkqlzLm92nFs8M+h4uUl9c8ugdGqciCFPJ u8qX2H5O9alSRxMh5KovLDIhf+ZDoILms2f5rHITOKsU2o14PueLOSGbPckWGQ== 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=1774972717; 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=PvdA8f/EU6CWxNJcdkix8kft3+e2AXdsxcCAgzlNteQ=; b=uvpDvajd+QbXspR75uwbV+EnBQWzjtjyp7Yhi1LXqr/WyeCt0ONSzLyyLZqPyCyFlABCG1 yzx9BX9/9BtbiUDEDXtJwqGHiaLdi2eAEJhRZQ6Za8F5Zkz2pIOP8FHioDPIpGZcUV5qLJ IiOAL9wAh3da6BYZLP5Sx9ohqGntE+yoiwOTV0eKw6eDHx7U+8DvOnf5QkMvfpyzYDc5wE /JO/6YFp/BaXnOcmnWvgEUBvfL9STO9UepTvvl/66VZdp9AIhtV9eBIcDbEb0dwEYNI62O XcYYDHRb8Ak3G0sRocp4nm7R+0xv8r94kh/WiufPyfa7to1Icox594szF+Hm8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpj27VnzcFP for ; Tue, 31 Mar 2026 15:58:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a834 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:37 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: e5cf3437275f - stable/15 - pf: Pass v6 packets to the divert socket List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e5cf3437275f9fec24cc0a0655a33830ed6f7388 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:37 +0000 Message-Id: <69cbef2d.3a834.5fb29ed5@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e5cf3437275f9fec24cc0a0655a33830ed6f7388 commit e5cf3437275f9fec24cc0a0655a33830ed6f7388 Author: Mark Johnston AuthorDate: 2026-01-27 13:48:09 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 pf: Pass v6 packets to the divert socket There is no particular limitation of divert sockets with respect to IPv6, and the pf.conf man page does not mention the restriction to IPv4. Extend the divert-to regression tests to exercise the v6 case. Reviewed by: igoro, kp, glebius MFC after: 3 weeks Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D54847 (cherry picked from commit b0d99709502294812b11c139f64b0b78f5d2d457) --- sys/netpfil/pf/pf.c | 6 +- tests/sys/netpfil/common/divapp.c | 2 +- tests/sys/netpfil/pf/divert-to.sh | 249 ++++++++++++++++++++++++++++---------- 3 files changed, 189 insertions(+), 68 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 8b0fca69827e..6349e922387b 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -11231,8 +11231,7 @@ done: pf_is_loopback(af, pd.dst)) pd.m->m_flags |= M_SKIP_FIREWALL; - if (af == AF_INET && action == PF_PASS && r->divert.port && - !PACKET_LOOPED(&pd)) { + if (action == PF_PASS && r->divert.port && !PACKET_LOOPED(&pd)) { mtag = m_tag_alloc(MTAG_PF_DIVERT, 0, sizeof(struct pf_divert_mtag), M_NOWAIT | M_ZERO); if (__predict_true(mtag != NULL && ip_divert_ptr != NULL)) { @@ -11280,9 +11279,6 @@ done: "pf: divert(4) is not loaded"); } } - /* XXX: Anybody working on it?! */ - if (af == AF_INET6 && r->divert.port) - printf("pf: divert(9) is not supported for IPv6\n"); /* this flag will need revising if the pkt is forwarded */ if (pd.pf_mtag) diff --git a/tests/sys/netpfil/common/divapp.c b/tests/sys/netpfil/common/divapp.c index d0f4b345b14c..b1c38fdc87b4 100644 --- a/tests/sys/netpfil/common/divapp.c +++ b/tests/sys/netpfil/common/divapp.c @@ -135,7 +135,7 @@ main(int argc, char *argv[]) if (c.divert_back) send_pkt(&c); npkt++; - if (npkt >= 10) + if (npkt >= 20) break; } diff --git a/tests/sys/netpfil/pf/divert-to.sh b/tests/sys/netpfil/pf/divert-to.sh index 2e0f6920db27..bc4222c2bd03 100644 --- a/tests/sys/netpfil/pf/divert-to.sh +++ b/tests/sys/netpfil/pf/divert-to.sh @@ -73,16 +73,20 @@ in_div_body() epair=$(vnet_mkepair) vnet_mkjail div ${epair}b - ifconfig ${epair}a 192.0.2.1/24 up - jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad + atf_check jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec div ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec div pfctl -e pft_set_rules div \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2000" + "pass all" \ + "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2000" \ + "pass in inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 2000" jexec div $(atf_get_srcdir)/../common/divapp 2000 & divapp_pid=$! @@ -93,6 +97,16 @@ in_div_body() atf_check -s not-exit:0 -o ignore ping -c1 -t1 192.0.2.2 wait $divapp_pid + + jexec div $(atf_get_srcdir)/../common/divapp 2000 & + divapp_pid=$! + # Wait for the divapp to be ready + sleep 1 + + # divapp is expected to "eat" the packet + atf_check -s not-exit:0 -o ignore ping -c1 -t1 2001:db8::2 + + wait $divapp_pid } in_div_cleanup() { @@ -112,16 +126,20 @@ in_div_in_body() epair=$(vnet_mkepair) vnet_mkjail div ${epair}b - ifconfig ${epair}a 192.0.2.1/24 up - jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad + atf_check jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec div ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec div pfctl -e pft_set_rules div \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2000 no state" + "pass all" \ + "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2000 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 2000 no state" jexec div $(atf_get_srcdir)/../common/divapp 2000 divert-back & divapp_pid=$! @@ -132,6 +150,16 @@ in_div_in_body() atf_check -s exit:0 -o ignore ping -c1 192.0.2.2 wait $divapp_pid + + jexec div $(atf_get_srcdir)/../common/divapp 2000 divert-back & + divapp_pid=$! + # Wait for the divapp to be ready + sleep 1 + + # divapp is expected to "eat" the packet + atf_check -s exit:0 -o ignore ping -c1 -t1 2001:db8::2 + + wait $divapp_pid } in_div_in_cleanup() { @@ -151,17 +179,22 @@ out_div_body() epair=$(vnet_mkepair) vnet_mkjail div ${epair}b - ifconfig ${epair}a 192.0.2.1/24 up - jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad + atf_check jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec div ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec div pfctl -e pft_set_rules div \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq no state" \ - "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2000 no state" + "pass all" \ + "pass in inet proto icmp icmp-type echoreq no state" \ + "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2000 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq no state" \ + "pass out inet6 proto icmp6 icmp6-type echorep divert-to ::1 port 2000 no state" jexec div $(atf_get_srcdir)/../common/divapp 2000 & divapp_pid=$! @@ -172,6 +205,16 @@ out_div_body() atf_check -s not-exit:0 -o ignore ping -c1 -t1 192.0.2.2 wait $divapp_pid + + jexec div $(atf_get_srcdir)/../common/divapp 2000 & + divapp_pid=$! + # Wait for the divapp to be ready + sleep 1 + + # divapp is expected to "eat" the packet + atf_check -s not-exit:0 -o ignore ping -c1 -t1 2001:db8::2 + + wait $divapp_pid } out_div_cleanup() { @@ -191,17 +234,22 @@ out_div_out_body() epair=$(vnet_mkepair) vnet_mkjail div ${epair}b - ifconfig ${epair}a 192.0.2.1/24 up - jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad + atf_check jexec div ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec div ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec div pfctl -e pft_set_rules div \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq no state" \ - "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2000 no state" + "pass all" \ + "pass in inet proto icmp icmp-type echoreq no state" \ + "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2000 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq no state" \ + "pass out inet6 proto icmp6 icmp6-type echorep divert-to ::1 port 2000 no state" jexec div $(atf_get_srcdir)/../common/divapp 2000 divert-back & divapp_pid=$! @@ -212,6 +260,16 @@ out_div_out_body() atf_check -s exit:0 -o ignore ping -c1 192.0.2.2 wait $divapp_pid + + jexec div $(atf_get_srcdir)/../common/divapp 2000 divert-back & + divapp_pid=$! + # Wait for the divapp to be ready + sleep 1 + + # divapp is NOT expected to "eat" the packet + atf_check -s exit:0 -o ignore ping -c1 2001:db8::2 + + wait $divapp_pid } out_div_out_cleanup() { @@ -234,40 +292,63 @@ in_div_in_fwd_out_div_out_body() epair1=$(vnet_mkepair) vnet_mkjail router ${epair0}b ${epair1}a - ifconfig ${epair0}a 192.0.2.1/24 up - jexec router sysctl net.inet.ip.forwarding=1 - jexec router ifconfig ${epair0}b 192.0.2.2/24 up - jexec router ifconfig ${epair1}a 198.51.100.1/24 up + atf_check ifconfig ${epair0}a 192.0.2.1/24 up + atf_check ifconfig ${epair0}a inet6 2001:db8::1/64 no_dad + atf_check -o ignore jexec router sysctl net.inet.ip.forwarding=1 + atf_check -o ignore jexec router sysctl net.inet6.ip6.forwarding=1 + atf_check jexec router ifconfig ${epair0}b 192.0.2.2/24 up + atf_check jexec router ifconfig ${epair0}b inet6 2001:db8::2/64 no_dad + atf_check jexec router ifconfig ${epair1}a 198.51.100.1/24 up + atf_check jexec router ifconfig ${epair1}a inet6 2001:db9::1/64 no_dad vnet_mkjail site ${epair1}b jexec site ifconfig ${epair1}b 198.51.100.2/24 up + jexec site ifconfig ${epair1}b inet6 2001:db9::2/64 no_dad jexec site route add default 198.51.100.1 + jexec site route -6 add default 2001:db9::1 - route add -net 198.51.100.0/24 192.0.2.2 + atf_check -o ignore route add -net 198.51.100.0/24 192.0.2.2 + atf_check -o ignore route -6 add -net 2001:db9::/64 2001:db8::2 # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 # Should be routed without pf - atf_check -s exit:0 -o ignore ping -c3 198.51.100.2 + atf_check -o ignore ping -c3 198.51.100.2 + atf_check -o ignore ping -c3 2001:db9::2 jexec router pfctl -e pft_set_rules router \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2001 no state" \ - "pass out inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2002 no state" + "pass all" \ + "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2001 no state" \ + "pass out inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2002 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 2001 no state" \ + "pass out inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 2002 no state" jexec router $(atf_get_srcdir)/../common/divapp 2001 divert-back & indivapp_pid=$! jexec router $(atf_get_srcdir)/../common/divapp 2002 divert-back & outdivapp_pid=$! - # Wait for the divappS to be ready + # Wait for the divapps to be ready sleep 1 - # Both divappS are NOT expected to "eat" the packet + # Both divapps are NOT expected to "eat" the packet atf_check -s exit:0 -o ignore ping -c1 198.51.100.2 wait $indivapp_pid && wait $outdivapp_pid + + jexec router $(atf_get_srcdir)/../common/divapp 2001 divert-back & + indivapp_pid=$! + jexec router $(atf_get_srcdir)/../common/divapp 2002 divert-back & + outdivapp_pid=$! + # Wait for the divapps to be ready + sleep 1 + + # Both divapps are NOT expected to "eat" the packet + atf_check -o ignore ping -c1 2001:db9::2 + + wait $indivapp_pid && wait $outdivapp_pid } in_div_in_fwd_out_div_out_cleanup() { @@ -287,12 +368,15 @@ in_dn_in_div_in_out_div_out_dn_out_body() epair=$(vnet_mkepair) vnet_mkjail alcatraz ${epair}b - ifconfig ${epair}a 192.0.2.1/24 up - ifconfig ${epair}a ether 02:00:00:00:00:01 - jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad + atf_check ifconfig ${epair}a ether 02:00:00:00:00:01 + atf_check jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec alcatraz ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 # a) ping should time out due to very narrow dummynet pipes { @@ -301,17 +385,19 @@ in_dn_in_div_in_out_div_out_dn_out_body() jexec alcatraz pfctl -e pft_set_rules alcatraz \ - "ether pass in from 02:00:00:00:00:01 l3 all dnpipe 1001" \ - "ether pass out to 02:00:00:00:00:01 l3 all dnpipe 1002 " \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 1001 no state" \ - "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 1002 no state" + "ether pass in from 02:00:00:00:00:01 l3 all dnpipe 1001" \ + "ether pass out to 02:00:00:00:00:01 l3 all dnpipe 1002 " \ + "pass all" \ + "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 1001 no state" \ + "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 1002 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 1001 no state" \ + "pass out inet6 proto icmp6 icmp6-type echorep divert-to ::1 port 1002 no state" jexec alcatraz $(atf_get_srcdir)/../common/divapp 1001 divert-back & indivapp_pid=$! jexec alcatraz $(atf_get_srcdir)/../common/divapp 1002 divert-back & outdivapp_pid=$! - # Wait for the divappS to be ready + # Wait for the divapps to be ready sleep 1 atf_check -s not-exit:0 -o ignore ping -c1 -s56 -t1 192.0.2.2 @@ -321,6 +407,20 @@ in_dn_in_div_in_out_div_out_dn_out_body() wait $outdivapp_pid atf_check_not_equal 0 $? + jexec alcatraz $(atf_get_srcdir)/../common/divapp 1001 divert-back & + indivapp_pid=$! + jexec alcatraz $(atf_get_srcdir)/../common/divapp 1002 divert-back & + outdivapp_pid=$! + # Wait for the divapps to be ready + sleep 1 + + atf_check -s not-exit:0 -o ignore ping -c1 -s56 -t1 2001:db8::2 + + wait $indivapp_pid + atf_check_not_equal 0 $? + wait $outdivapp_pid + atf_check_not_equal 0 $? + # } # b) ping should NOT time out due to wide enough dummynet pipes { @@ -330,20 +430,36 @@ in_dn_in_div_in_out_div_out_dn_out_body() jexec alcatraz pfctl -e pft_set_rules alcatraz \ - "ether pass in from 02:00:00:00:00:01 l3 all dnpipe 2001" \ - "ether pass out to 02:00:00:00:00:01 l3 all dnpipe 2002 " \ - "pass all" \ - "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2001 no state" \ - "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2002 no state" + "ether pass in from 02:00:00:00:00:01 l3 all dnpipe 2001" \ + "ether pass out to 02:00:00:00:00:01 l3 all dnpipe 2002 " \ + "pass all" \ + "pass in inet proto icmp icmp-type echoreq divert-to 127.0.0.1 port 2001 no state" \ + "pass out inet proto icmp icmp-type echorep divert-to 127.0.0.1 port 2002 no state" \ + "pass in inet6 proto icmp6 icmp6-type echoreq divert-to ::1 port 2001 no state" \ + "pass out inet6 proto icmp6 icmp6-type echorep divert-to ::1 port 2002 no state" jexec alcatraz $(atf_get_srcdir)/../common/divapp 2001 divert-back & indivapp_pid=$! jexec alcatraz $(atf_get_srcdir)/../common/divapp 2002 divert-back & outdivapp_pid=$! - # Wait for the divappS to be ready + # Wait for the divapps to be ready sleep 1 - atf_check -s exit:0 -o ignore ping -c1 -s56 -t1 192.0.2.2 + atf_check -o ignore ping -c1 -s56 -t1 192.0.2.2 + + wait $indivapp_pid + atf_check_equal 0 $? + wait $outdivapp_pid + atf_check_equal 0 $? + + jexec alcatraz $(atf_get_srcdir)/../common/divapp 2001 divert-back & + indivapp_pid=$! + jexec alcatraz $(atf_get_srcdir)/../common/divapp 2002 divert-back & + outdivapp_pid=$! + # Wait for the divapps to be ready + sleep 1 + + atf_check -o ignore ping -c1 -s56 -t1 2001:db8::2 wait $indivapp_pid atf_check_equal 0 $? @@ -364,20 +480,22 @@ pr260867_head() atf_set require.user root atf_set require.kmods ipdivert } - pr260867_body() { pft_init epair=$(vnet_mkepair) - ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad vnet_mkjail alcatraz ${epair}b - jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec alcatraz ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec alcatraz /usr/sbin/inetd -p ${PWD}/inetd-echo.pid $(atf_get_srcdir)/echo_inetd.conf jexec alcatraz $(atf_get_srcdir)/../common/divapp 1001 divert-back & @@ -388,10 +506,14 @@ pr260867_body() reply=$(echo "foo" | nc -N 192.0.2.2 7) if [ "${reply}" != "foo" ]; then - atf_fail "Did not receive echo reply" + atf_fail "Did not receive v4 echo reply" fi -} + reply=$(echo "foo" | nc -N -6 2001:db8::2 7) + if [ "${reply}" != "foo" ]; then + atf_fail "Did not receive v6 echo reply" + fi +} pr260867_cleanup() { pft_cleanup @@ -404,7 +526,6 @@ pr260867_icmp_head() atf_set require.user root atf_set require.kmods ipdivert } - pr260867_icmp_body() { pft_init @@ -412,22 +533,26 @@ pr260867_icmp_body() epair=$(vnet_mkepair) atf_check ifconfig ${epair}a 192.0.2.1/24 up + atf_check ifconfig ${epair}a inet6 2001:db8::1/64 no_dad vnet_mkjail alcatraz ${epair}b - jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up + atf_check jexec alcatraz ifconfig ${epair}b inet6 2001:db8::2/64 no_dad # Sanity check - atf_check -s exit:0 -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 192.0.2.2 + atf_check -o ignore ping -c3 2001:db8::2 jexec alcatraz $(atf_get_srcdir)/../common/divapp 1001 divert-back & jexec alcatraz pfctl -e pft_set_rules alcatraz \ - "pass in on ${epair}b proto icmp from any to any divert-to 0.0.0.0 port 1001" + "pass in on ${epair}b proto icmp from any to any divert-to 0.0.0.0 port 1001" \ + "pass in on ${epair}b proto icmp6 from any to any divert-to :: port 1001" atf_check -o ignore ping -c 3 192.0.2.2 + atf_check -o ignore ping -c 3 2001:db8::2 } - pr260867_icmp_cleanup() { pft_cleanup From nobody Tue Mar 31 15:58:38 2026 X-Original-To: dev-commits-src-branches@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 4flXpk5nq6z6WDyZ for ; Tue, 31 Mar 2026 15:58:38 +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 4flXpk3S7dz3glm for ; Tue, 31 Mar 2026 15:58:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972718; 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=jv5bz9SuCdrz2V3cFQwl0EH62A4GCg2XhaBUBGejBw0=; b=bDdV1GxflVGoIskjXjt9RzBUXrF7/i10FvrWRAawixvQir29397/NMV3S0WVhU9b2aZ+Ik waQaz42fIqM2CJsrgKRY0xv4+SG30Lu8PxGvQqS4ugyXwJooMzIByugeWo2s8YxSTO8X2J aalRkZIoi6GBsxcoB+Dw0sFB8CywRZwnlhK3qaJ9HdgPd7zxITz2PtB9Mcg2iHiMAAZ+u8 XWxUHDY60H/9RHLX8m0Pj3QQtxVaengqHPGuayk9iYSpppaJtLUg9ZAQNsdb1cv1mn81Q3 /BXzHxKOrfOXFVQDb4Zd5TvxmxLKmOWM+BBU3YAHeCssXduF4im0euG+jojzCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972718; a=rsa-sha256; cv=none; b=ggKAFL83dYtYjNa2o/viTLqbHW20BwIKJUSrofahMOC+SHwhQ6uQYqqjJ2fEayTfzqjzxv 3kBNMj6GDnQuzDBIm62NsP0RCkb8+lsKlSWrDqUTXE/3DMSwm9TtF7YQ+GmILOt8dcBWUJ GU6PY/cJs3gEeywWH48HhBYwrygalVTXgRFpmLSgS9Iv1S08wc+ETirjv4J7xX4eVjgfUi VRdRs0BxUUAI57ukmdvNiU1Ow5ge5nCs8vBnsTIBy5tujNQEryJVx58vb8YguIL0cmimsG VufUtsnHpeOr5+lbiCeWBLo0JSqSKL56DX0iOwGcOKIelKgmExbr5iSUeMFCEg== 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=1774972718; 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=jv5bz9SuCdrz2V3cFQwl0EH62A4GCg2XhaBUBGejBw0=; b=WfU4YQadMZmxUO2PfhFZU+jYKwtg9M0gd67c2f2CXgF8XaOmtrfrtjaAyhRN/FIDTZjbVh oG2oY3Xxl+xszlJdopiNgz7zJkc4MoP00+rLcb4IEl34cMLz0waY9qK5CV6jIBerXCUvIG DNocgN/yONOwfg8WTitxmHzXVjaygAfRXhDeGCw0WAOmJZyKzgel91euApX6P/OV2b8tXe Tf8nSmkoOc4L8HD3L+4Z8KVjtPiJ8LKVzgrT0Rk3v41V7En3GncYat4UaH2DFUceH4QO/R VnS6cS45AZ+a26l8BPvNNMbX6WNNLMkZvf6UK/HLOiNEQNTJyxxg4LavWbWJ4w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpk2w1hzcFQ for ; Tue, 31 Mar 2026 15:58:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a3cd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 8a84a3c42054 - stable/15 - netinet6: Add a struct socket declaration to ip6_var.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8a84a3c42054cb131800ab927d620c0e21c7080e Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:38 +0000 Message-Id: <69cbef2e.3a3cd.1e24e2a4@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=8a84a3c42054cb131800ab927d620c0e21c7080e commit 8a84a3c42054cb131800ab927d620c0e21c7080e Author: Mark Johnston AuthorDate: 2026-02-12 13:59:40 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 netinet6: Add a struct socket declaration to ip6_var.h MFC after: 1 week Reported by: Ian FREISLICH (cherry picked from commit be393b6f0497f374c679c31e746705515eb9a554) --- sys/netinet6/ip6_var.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/netinet6/ip6_var.h b/sys/netinet6/ip6_var.h index db1631736c4a..7e40f5811e6d 100644 --- a/sys/netinet6/ip6_var.h +++ b/sys/netinet6/ip6_var.h @@ -374,9 +374,10 @@ VNET_DECLARE(bool, ip6_log_cannot_forward); #define V_ip6_log_cannot_forward VNET(ip6_log_cannot_forward) extern struct pr_usrreqs rip6_usrreqs; -struct sockopt; struct inpcb; +struct socket; +struct sockopt; struct ucred; int icmp6_ctloutput(struct socket *, struct sockopt *sopt); From nobody Tue Mar 31 15:58:39 2026 X-Original-To: dev-commits-src-branches@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 4flXpm0gpPz6WDk2 for ; Tue, 31 Mar 2026 15:58:40 +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 4flXpl4MD2z3gln for ; Tue, 31 Mar 2026 15:58:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972719; 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=hUenkQRAefJSPC77vIF0nLulwPwA8Yig7XcbXzKGvgw=; b=Lj8bJWDrOStkOqS188iv8xczEP0IR/u0afYm+JPxb3533Enn8A9Y1f5htmUlRz6l1VXNtl +qm/CVK0vXPKU46a/1wxiWgvVwyY5fxiFIIUECe5ypY/WXkUSbu4KLap5PaIxh6RnKKq9v nv4rwwZ0S8lj46pfAoXZqFjTNjcZ4ukIuqhy2Gp853y1JPkqDGDCZ7TQGeT6GkVjFZTpsa 57RekxwLezOGBOdXY+vD+WLV/cqMDqtRZcIB8s45z9Hzo3IDt+IOj3n16DUSjCxtC3nzgx BVaUMS2rLp7DP7zvAsqNkzIfhllndkIeXRCbaU6qnjI8nwkL7SzVUxlmWQLzVA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972719; a=rsa-sha256; cv=none; b=UKm/84VItYT/eEi7hiFzgBffy7SuSN/sQM3tC4AmYM05Bw8baRPwl3jBSYAa/hblzPxk/e bmiq7fFsnqg/2bYkc917d5cDP+S5c2YFMie9zPfu6MdKca5oet+mWfK0RUu0VnUVHUJ7my g6Nhqv8LIhqJoBVc3bbTRRlJE8RYUsPfPPGpWjubGsYifEwodMXsk59/Ku2gKwzta6CeQj JLiCFvi/QU6jhRBCfiS540yrzatlQIOEhmmXO0Us3hAksTLLW549qxiVv/g6tiAYMHfvF8 WjMGbTpsUoq7ZpCpIKb42csn+1u566mMP35vOzGJ/7TT2zzpvGcrjeehxzLsZQ== 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=1774972719; 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=hUenkQRAefJSPC77vIF0nLulwPwA8Yig7XcbXzKGvgw=; b=njEQH6qArUpV+yszwWyAB46gc/rQ/srhYAq7TLyoqeQ8WJj/R1BejC4ObdETBrTnfpryGu 7CWs8goKE+WGrW1PFcrtO3ire4OcSoXZT/SRTKhlTVbkDK+gCYpx0mnyWESFEFIUYLd5dk Z50n1WYfhpsc3xUa4NGuF0kSeM81On82nKs/yZh33lccBCMYA9fBCBldLaJcklgU35EE6R j5g4+qylDreH1UQ198XM4esO1mvdc5x+KoHwQfajMVqyUTZxYELai50H9chlXwNQ2xFrzx MS7KCpBMLhqINI2S0EBWHCJ2TJIZXZDO90A0849rtJQ51xv4IlNuDF0wmT2TSg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpl3jvyzcHP for ; Tue, 31 Mar 2026 15:58:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a0b5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: a37658808b6c - stable/15 - rpc: Improve socket locking in svc_vc_accept() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a37658808b6c6bd9a0cb585501fb3fb125b9d069 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:39 +0000 Message-Id: <69cbef2f.3a0b5.3c3b7d50@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a37658808b6c6bd9a0cb585501fb3fb125b9d069 commit a37658808b6c6bd9a0cb585501fb3fb125b9d069 Author: Mark Johnston AuthorDate: 2026-02-12 14:00:43 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 rpc: Improve socket locking in svc_vc_accept() so_state modifications must be synchronized by the socket lock. For the listening socket this probably doesn't matter but for the child socket I think it's possible that this unlocked update clobbers a state transition if the nascent connection is being disconnected for some reason. Also fix the line which potentially clears SS_NBIO in the listening socket. It is unclear whether this code is used at all. Reviewed by: glebius MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55247 (cherry picked from commit 7c1c0e94363db09af0c260d9292160cdd2230f23) --- sys/rpc/svc_vc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/rpc/svc_vc.c b/sys/rpc/svc_vc.c index 7e30582c59e0..848109704ad0 100644 --- a/sys/rpc/svc_vc.c +++ b/sys/rpc/svc_vc.c @@ -389,12 +389,15 @@ svc_vc_accept(struct socket *head, struct socket **sop) SOLISTEN_LOCK(head); nbio = head->so_state & SS_NBIO; head->so_state |= SS_NBIO; - error = solisten_dequeue(head, &so, 0); - head->so_state &= (nbio & ~SS_NBIO); + error = solisten_dequeue(head, &so, nbio ? SOCK_NONBLOCK : 0); + if (nbio == 0) { + SOLISTEN_LOCK(head); + head->so_state &= ~SS_NBIO; + SOLISTEN_UNLOCK(head); + } if (error) goto done; - so->so_state |= nbio; *sop = so; /* connection has been removed from the listen queue */ From nobody Tue Mar 31 15:58:40 2026 X-Original-To: dev-commits-src-branches@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 4flXpm6v39z6WF3s for ; Tue, 31 Mar 2026 15:58:40 +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 4flXpm4vCyz3gVv for ; Tue, 31 Mar 2026 15:58:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cCJHOwDxqZdAwMTl/gsyjzzA8g64SpcfbVW8/I6D8OA=; b=lqIDnDQBxO76N93Q/630hhJNYFZERSDjbH4Eit0cPtVeZPYvXEZN7TVrqn4bLEkxQ46ADT jKTa/jQ1CJLZvQXSo9eD74vVhF3mZPgOtHiBLrUDj31ismVUduqOx8Y/1xs5I/0XJm8HR1 FxQCrwFb4Oghz1gyfb03g8DdvkQklTu1KWAUzqQVztsH6rbbwxtRi6oLIJgPuchT6J/3oE RLxDTVtb1GjbE1QBWgmKAymz2J+VrLyzjDVFRtJny0xCOhfXRLnQ+zfqho26MlrmZOaNmY id7iTfJxMTvqzqNxgIruLqZS4QnGCe/gtY6p5h24GgEY+mbO1fqSYZKKk8ILvg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972720; a=rsa-sha256; cv=none; b=ePfKrxMmfhv+6d87Gz6+mYlauRi3vpQdsoJuf1Vo+PbbcsFag5icsLmFXOkNT5P5+E4ptE 89NkGuio8CnODu2dAzxi3IpwbP5D6Ob7iQ8f49yBk7wX83PCwKgX2riQBjpu4e7EXn46qs iyPQjo2sTerKfsx5MLHDmjD9blh/v/RpWgqUqhqbZ62ncYj4Ubn9E7IqpbsiE7Ax7N5b+9 WzdoohF/mpZ4+xiUG/HXgX5XAR1Zx96EhzkVNheMaBVNFm18tcRNIqwYU5YWZnO2zktQRg XZLIaw8TiClQ7xFOyXeTOrfbpPbc2YUnaqz0GbUmfXPRNbo5sYi1sg4j+dC20w== 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=1774972720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cCJHOwDxqZdAwMTl/gsyjzzA8g64SpcfbVW8/I6D8OA=; b=bDIpuk1oGQXZbNmylDE02Y9LDoEc77COtc5eU3UMwsnJZFy+mBIUjpyKLqd+E3DgXy6P7i fhTCiAzV64GxafGzBL1E1l9REdrS+N2llAos7PaXLCGP9A0ifnn4loSfqIlDgv2F2tfEYj keffYOGVVYddDsgqf+SDuzTOmyX5z8G5IdVhcM+0lvsjP/YAkA/OmToB58Mq0TcLkAHNfK 6t8Gkaq5fZuj0tGSlWYQO6GfqDE9KBj7n6DEEwyVDelI0NyiJhtrmSwSEMWVb8mTmHlyiB DTlhyaFSflH51YcXkLZzVC9YkBTwCLXN5m3S4ccy+DPXUVFNeWtl/SOvNR5f0w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpm4TSgzcLF for ; Tue, 31 Mar 2026 15:58:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a838 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Kristof Provost From: Mark Johnston Subject: git: 44f5154a97da - stable/15 - atf_python: support setting interface mtu List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 44f5154a97daf5fe08648be26e24000bce95b554 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:40 +0000 Message-Id: <69cbef30.3a838.67aa4d0b@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=44f5154a97daf5fe08648be26e24000bce95b554 commit 44f5154a97daf5fe08648be26e24000bce95b554 Author: Kristof Provost AuthorDate: 2025-12-21 10:28:29 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 atf_python: support setting interface mtu Teach the vnet support code to set interface MTU. Some tests make use of this, so have the framework handle it. Adapt a few pf tests to use this. Reviewed by: melifaro Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D54333 (cherry picked from commit 4f35a84b32412f5cf54e08cd97cd6eee407fb30e) --- tests/atf_python/sys/net/vnet.py | 6 ++++++ tests/sys/netpfil/pf/frag6.py | 3 +-- tests/sys/netpfil/pf/icmp.py | 8 +------- tests/sys/netpfil/pf/nat66.py | 7 +------ 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/tests/atf_python/sys/net/vnet.py b/tests/atf_python/sys/net/vnet.py index 3d431685836a..a6e620b49d59 100644 --- a/tests/atf_python/sys/net/vnet.py +++ b/tests/atf_python/sys/net/vnet.py @@ -109,6 +109,9 @@ class VnetInterface(object): ret.append(if2); return ret + def set_mtu(self, mtu): + run_cmd("/sbin/ifconfig {} mtu {}".format(self.name, mtu)) + def setup_addr(self, _addr: str): addr = ipaddress.ip_interface(_addr) if addr.version == 6: @@ -371,6 +374,7 @@ class VnetTestTemplate(BaseTest): idx = iface_map.vnet_aliases.index(vnet.alias) prefixes6 = topo[iface.alias].get("prefixes6", []) prefixes4 = topo[iface.alias].get("prefixes4", []) + mtu = topo[iface.alias].get("mtu", 0) if prefixes6 or prefixes4: ipv6_ifaces.append(iface) iface.turn_up() @@ -379,6 +383,8 @@ class VnetTestTemplate(BaseTest): for prefix in prefixes6 + prefixes4: if prefix[idx]: iface.setup_addr(prefix[idx]) + if mtu != 0: + iface.set_mtu(mtu) for iface in ipv6_ifaces: while iface.has_tentative(): time.sleep(0.1) diff --git a/tests/sys/netpfil/pf/frag6.py b/tests/sys/netpfil/pf/frag6.py index 26ae7af7c90c..ca2d231edccb 100644 --- a/tests/sys/netpfil/pf/frag6.py +++ b/tests/sys/netpfil/pf/frag6.py @@ -226,7 +226,7 @@ class TestFrag6_RouteTo(VnetTestTemplate): "vnet2": {"ifaces": ["if1", "if2"]}, "vnet3": {"ifaces": ["if2"]}, "if1": {"prefixes6": [("2001:db8::1/64", "2001:db8::2/64")]}, - "if2": {"prefixes6": [("2001:db8:1::1/64", "2001:db8:1::2/64")]}, + "if2": {"prefixes6": [("2001:db8:1::1/64", "2001:db8:1::2/64")], "mtu": 1300}, } def vnet2_handler(self, vnet): @@ -238,7 +238,6 @@ class TestFrag6_RouteTo(VnetTestTemplate): "pass in route-to (%s 2001:db8:1::2) from 2001:db8::1 to 2001:db8:666::1" % if2name, ]) - ToolsHelper.print_output("/sbin/ifconfig %s mtu 1300" % if2name) ToolsHelper.print_output("/sbin/sysctl net.inet6.ip6.forwarding=1") def vnet3_handler(self, vnet): diff --git a/tests/sys/netpfil/pf/icmp.py b/tests/sys/netpfil/pf/icmp.py index c5e945d60e99..93daf33e5201 100644 --- a/tests/sys/netpfil/pf/icmp.py +++ b/tests/sys/netpfil/pf/icmp.py @@ -43,13 +43,10 @@ class TestICMP(VnetTestTemplate): "vnet2": {"ifaces": ["if1", "if2"]}, "vnet3": {"ifaces": ["if2"]}, "if1": {"prefixes4": [("192.0.2.2/24", "192.0.2.1/24")]}, - "if2": {"prefixes4": [("198.51.100.1/24", "198.51.100.2/24")]}, + "if2": {"prefixes4": [("198.51.100.1/24", "198.51.100.2/24")], "mtu": 1492}, } def vnet2_handler(self, vnet): - ifname = vnet.iface_alias_map["if1"].name - if2name = vnet.iface_alias_map["if2"].name - ToolsHelper.print_output("/sbin/pfctl -e") ToolsHelper.pf_rules([ "set reassemble yes", @@ -61,8 +58,6 @@ class TestICMP(VnetTestTemplate): ToolsHelper.print_output("/sbin/sysctl net.inet.ip.forwarding=1") ToolsHelper.print_output("/sbin/pfctl -x loud") - ToolsHelper.print_output("/sbin/ifconfig %s mtu 1492" % if2name) - def vnet3_handler(self, vnet): # Import in the correct vnet, so at to not confuse Scapy import scapy.all as sp @@ -70,7 +65,6 @@ class TestICMP(VnetTestTemplate): ifname = vnet.iface_alias_map["if2"].name ToolsHelper.print_output("/sbin/route add default 198.51.100.1") ToolsHelper.print_output("/sbin/ifconfig %s inet alias 198.51.100.3/24" % ifname) - ToolsHelper.print_output("/sbin/ifconfig %s mtu 1492" % ifname) def checkfn(packet): icmp = packet.getlayer(sp.ICMP) diff --git a/tests/sys/netpfil/pf/nat66.py b/tests/sys/netpfil/pf/nat66.py index 16b4ef3dd02b..339895b253ae 100644 --- a/tests/sys/netpfil/pf/nat66.py +++ b/tests/sys/netpfil/pf/nat66.py @@ -39,13 +39,11 @@ class TestNAT66(VnetTestTemplate): "vnet1": {"ifaces": ["if1"]}, "vnet2": {"ifaces": ["if1", "if2"]}, "vnet3": {"ifaces": ["if2"]}, - "if1": {"prefixes6": [("2001:db8::2/64", "2001:db8::1/64")]}, + "if1": {"prefixes6": [("2001:db8::2/64", "2001:db8::1/64")], "mtu": 9000}, "if2": {"prefixes6": [("2001:db8:1::1/64", "2001:db8:1::2/64")]}, } def vnet2_handler(self, vnet): - ifname = vnet.iface_alias_map["if1"].name - ToolsHelper.print_output("/sbin/ifconfig %s mtu 9000" % ifname) outifname = vnet.iface_alias_map["if2"].name ToolsHelper.print_output("/sbin/pfctl -e") @@ -130,8 +128,6 @@ class TestNAT66(VnetTestTemplate): @pytest.mark.require_progs(["scapy"]) def test_npt_icmp(self): cl_vnet = self.vnet_map["vnet1"] - ifname = cl_vnet.iface_alias_map["if1"].name - ToolsHelper.print_output("/sbin/ifconfig %s mtu 9000" % ifname) ToolsHelper.print_output("/sbin/route add -6 2001:db8:1::/64 2001:db8::1") @@ -160,7 +156,6 @@ class TestNAT66(VnetTestTemplate): def test_npt_route_to_icmp(self): cl_vnet = self.vnet_map["vnet1"] ifname = cl_vnet.iface_alias_map["if1"].name - ToolsHelper.print_output("/sbin/ifconfig %s mtu 9000" % ifname) ToolsHelper.print_output("/sbin/ifconfig %s inet6 alias 2001:db8::3/64" % ifname) ToolsHelper.print_output("/sbin/route add -6 2001:db8:1::/64 2001:db8::1") From nobody Tue Mar 31 15:58:41 2026 X-Original-To: dev-commits-src-branches@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 4flXpp0tLbz6WDyb for ; Tue, 31 Mar 2026 15:58:42 +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 4flXpn6PmHz3gW1 for ; Tue, 31 Mar 2026 15:58:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972721; 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=qN9CF6MWMKsB/VP0FshwUo6d3dzH9ADEleWCi/yU02U=; b=h22LU5FzW5nD08VS0fH6ziE1aqJdaJF6d8BJq4Jtuym5fR8I4W/bTzsPKKw/0zAx8SgnvZ yOBFX4CSXnPDbp+BIXLCajWcu3q1G7Ds86OpTLDzcgQCKkjp/SNyoDS5F7u1aGk93q5JCg CrrqsTfP1SO4n8FBhSC3riQh0Bs3lg+zjRK2eCoZ8JoY23+ljkmPxDDXerql8U6tEYzVrl 3ze4VRSwnIAkPMAL7TYfTsSOHRvJrF3oVJYr/8B8C1toGuUiV10oeLipj9D14ufsili/lV ZoFDxDMsfMGTo9xSSLZwlwXaUbI6BeQE0dnj/k0bcyitoc72t7nlYA9nvJOyiQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972721; a=rsa-sha256; cv=none; b=BRq0tMuFc6WGlq4D65m5iDmzEniAPnP/tGNlDOF+D2YcJ9hazJ9krlt/q6EetUTbjO4+Ml kfY/lLyNzm0Wz1ZNJuYbQsvxsQI+hehPVna5BsXSWMgUAeJ8PWJaOLZntj8tWDnwV6TfIa JZFazKYcYDAk0eI+FM1yL38r05echwKg/0nbzHoEiVFIEhWajz4SBFOxxVM/G0MpRxJwum 7WJMUL5IgRsgSKfGZfI9fdlCRRDMkjDewhA9ILHBHIeT5oA2NsYorskBzHawKYDFVtTC9J 8FhC86XmmRtjGGoAji7aUhA8PGvXk9PZD6Vpqp6f5KQXsNZKKN5j54sUdTe+sw== 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=1774972721; 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=qN9CF6MWMKsB/VP0FshwUo6d3dzH9ADEleWCi/yU02U=; b=N+F44pQB+3AJNPT/YNNLrBOyz13/4fXzTBMrX1QSef4nmSa9zLHCI8HOAExreoMRaaEn/E w5zSkHypM0H5mw86YAzJy+GU35Sz+Bqu5u52EuygbRuWq2ct2bWCw2gxxuqCPOa6He62lK ZtYxQ39OUNmkWEiFJxKFZSCHt5GZ4rfxGm1HI0rWr9dwJAgZ8J8KZZcKjPk1u7LzLJFDbM jYFSVESP4WEJbY1R1Q95UzgIJTfHzjtgPq+a0CUfYtszmkowXktqDFLkW9VIyi1CJjZqSk h5XGMFgK9S8++hujuGgFN+PB0z1TxWMXBPlMhwwqf8wGq8IHyn9oeZ8FKSKSVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpn5CqLzcFT for ; Tue, 31 Mar 2026 15:58:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a345 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: aefe776d6246 - stable/15 - atf_python/vnet: Make it possible to set the FIB of vnet interfaces List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: aefe776d62462abd96a77bfbf7110fe7748912aa Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:41 +0000 Message-Id: <69cbef31.3a345.56f1e63b@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=aefe776d62462abd96a77bfbf7110fe7748912aa commit aefe776d62462abd96a77bfbf7110fe7748912aa Author: Mark Johnston AuthorDate: 2026-02-13 15:50:39 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:27 +0000 atf_python/vnet: Make it possible to set the FIB of vnet interfaces Reviewed by: zlei, ngie MFC after: 1 week Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D54972 (cherry picked from commit a8b8feced998c8c74f9a572f069bcb689cabd09d) --- tests/atf_python/sys/net/vnet.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/atf_python/sys/net/vnet.py b/tests/atf_python/sys/net/vnet.py index a6e620b49d59..029813fbc587 100644 --- a/tests/atf_python/sys/net/vnet.py +++ b/tests/atf_python/sys/net/vnet.py @@ -57,6 +57,7 @@ class VnetInterface(object): self.addr_map: Dict[str, Dict] = {"inet6": {}, "inet": {}} self.prefixes4: List[List[str]] = [] self.prefixes6: List[List[str]] = [] + self.fib: int if iface_name.startswith("lo"): self.iftype = self.IFT_LOOP else: @@ -106,7 +107,7 @@ class VnetInterface(object): run_cmd("/sbin/ifconfig {} -txcsum -txcsum6".format(name)) if2 = cls(alias_name, name[:-1] + "b") if1.epairb = if2 - ret.append(if2); + ret.append(if2) return ret def set_mtu(self, mtu): @@ -141,6 +142,10 @@ class VnetInterface(object): cmd = "/sbin/ifconfig {} up".format(self.name) self.run_cmd(cmd) + def setfib(self, fib: int): + cmd = "/sbin/ifconfig {} fib {}".format(self.name, fib) + self.run_cmd(cmd) + def enable_ipv6(self): cmd = "/usr/sbin/ndp -i {} -- -disabled".format(self.name) self.run_cmd(cmd) @@ -375,6 +380,9 @@ class VnetTestTemplate(BaseTest): prefixes6 = topo[iface.alias].get("prefixes6", []) prefixes4 = topo[iface.alias].get("prefixes4", []) mtu = topo[iface.alias].get("mtu", 0) + if "fib" in topo[iface.alias]: + fib = topo[iface.alias]["fib"] + iface.setfib(fib[idx]) if prefixes6 or prefixes4: ipv6_ifaces.append(iface) iface.turn_up() @@ -423,16 +431,22 @@ class VnetTestTemplate(BaseTest): for obj_name, obj_data in topo.items(): if obj_name.startswith("vnet"): vnet_ifaces = [] + maxfib = 0 for iface_alias in obj_data["ifaces"]: # epair creates 2 interfaces, grab first _available_ # and map it to the VNET being created idx = len(iface_map[iface_alias].vnet_aliases) iface_map[iface_alias].vnet_aliases.append(obj_name) vnet_ifaces.append(iface_map[iface_alias].ifaces[idx]) + fib = topo[iface_alias].get("fib", (0, 0)) + maxfib = max(maxfib, fib[idx]) opts = [] if "opts" in obj_data: opts = obj_data["opts"] vnet = vnet_factory.create_vnet(obj_name, vnet_ifaces, opts) + if maxfib != 0: + # Make sure the VNET has enough FIBs. + vnet.run_vnet_cmd("/sbin/sysctl net.fibs={}".format(maxfib + 1)) vnet_map[obj_name] = vnet # Allow reference to VNETs as attributes setattr(self, obj_name, vnet) From nobody Tue Mar 31 15:58:42 2026 X-Original-To: dev-commits-src-branches@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 4flXpq2MHPz6WDyl for ; Tue, 31 Mar 2026 15:58:43 +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 4flXpp6N1tz3gp9 for ; Tue, 31 Mar 2026 15:58:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972722; 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=Tu1ZQU0LVHbFyLfbsXLXptowZSD2kezMFCUvVo/IQa8=; b=a73yDY1f1KyDQvjavXvCzzAPXCUd8QtmdpfbwggMfntEkSQkMuBf24aYl0joMzIPjdgCBK G58CIrkEd9Pfx4p1aUZ8CLA59Tqls6No6C0dMGVyrBiWnEIcTvF9CgFfcN96cPByuo8ULh K7PMkt6nHPPTb2Td/oQQ1iLn1MR7UcIP+al0CXkVVJTZ7Z1e1VVVo4aZSTuZHEYTAuQ9u9 OJgSFdZ5hyRgSbTAzeGwM+s/rBuXHwLii0aH9IAcNfDBFlDNrMZGKWvHOtUpkfcogSCIjo aAs59xI3BERuE1DK8yPsWcU+e5mYyVho8BbkW0JDK8JNxtpR348vYDAR9RRPvA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972722; a=rsa-sha256; cv=none; b=yI+G8gXH3ol3hrnTRsJvJ2FzZulqdns43VnBGFX00o5GA256wLJvtf6WMm1kufTlauADeo AswH9WtvGlsoM9FKpShfzh4GK6Mph3dTeiz238B8IHVSF/CJx2ZysGc76EBOQuCkZf1CoW o5U46UQYQ380GF9LEvUtVaexg8Kgj8w8lZfXBxN59H8+deMzJH3ZwRakh7U0cu6J/Thtzs 2Lus3lemMbNHmtUY9zRUr8L6mXSm+fr9EFoqpK2Zoc+RncppkUttO4nxpmpA49iwXKqJ8K rLooAH94jjU0VBFxyul7Q0sSGelVauTWn+L49C90MD7i58uHjE0+l0hSLZBk/Q== 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=1774972722; 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=Tu1ZQU0LVHbFyLfbsXLXptowZSD2kezMFCUvVo/IQa8=; b=qvrk2G39qUXmrq8cuYn6SSeYEsQdfCAOLlqT8v5ySqLnSXGK1sFfjwGreOSvMCw2g/ftp/ W2VDhQugmELqdhJfvhq/K6wTZDBJ58IsLYaziIFYFsP3M4yQWOPovi3b3LnobtGzt4K/5j InK76CMVrLZDD0+xLSCIa5P0iIINgFrEMZOKJepBrpV2eberRrg4fBbDZWhbzJZttsx1SM mensxTvIiIlvPIsuLLINpM2/Av9lLvMhKSdgBCo14sRRm+xcEZLeHWJau8Gln56HeuxIOr xtQxXjy6SI1qS9lWgyq4S8m+Y2am2iVVsYvlwTQRolqVUocaOT0go12Szw7+CQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpp5pMszcbw for ; Tue, 31 Mar 2026 15:58:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 395e7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f4b45d9e9a95 - stable/15 - bhyve: Simplify passthru_msix_addr() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f4b45d9e9a95e0ad5d96c7ad8fb709f3af6df687 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:42 +0000 Message-Id: <69cbef32.395e7.12878bc0@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f4b45d9e9a95e0ad5d96c7ad8fb709f3af6df687 commit f4b45d9e9a95e0ad5d96c7ad8fb709f3af6df687 Author: Mark Johnston AuthorDate: 2026-02-06 15:30:56 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 bhyve: Simplify passthru_msix_addr() It can use the passthru_mmio_map() helper function. Make that change, and also make passthru_mmio_map() use EPRINTLN to fix formatting when the guest console is stdio. Reviewed by: corvink, jhb MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55067 (cherry picked from commit 86150ed98b7903feaba942f01619e74894cd23c4) --- usr.sbin/bhyve/pci_passthru.c | 80 ++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 54 deletions(-) diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 8ddcd8bd56e8..662390413dbc 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -1310,58 +1310,6 @@ passthru_read(struct pci_devinst *pi, int baridx, uint64_t offset, int size) return (val); } -static void -passthru_msix_addr(struct pci_devinst *pi, int baridx, int enabled, - uint64_t address) -{ - struct passthru_softc *sc; - size_t remaining; - uint32_t table_size, table_offset; - - sc = pi->pi_arg; - table_offset = rounddown2(pi->pi_msix.table_offset, 4096); - if (table_offset > 0) { - if (!enabled) { - if (vm_unmap_pptdev_mmio(pi->pi_vmctx, - sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - table_offset) != 0) - warnx("pci_passthru: unmap_pptdev_mmio failed"); - } else { - if (vm_map_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - table_offset, - sc->psc_bar[baridx].addr) != 0) - warnx("pci_passthru: map_pptdev_mmio failed"); - } - } - table_size = pi->pi_msix.table_offset - table_offset; - table_size += pi->pi_msix.table_count * MSIX_TABLE_ENTRY_SIZE; - table_size = roundup2(table_size, 4096); - remaining = pi->pi_bar[baridx].size - table_offset - table_size; - if (remaining > 0) { - address += table_offset + table_size; - if (!enabled) { - if (vm_unmap_pptdev_mmio(pi->pi_vmctx, - sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - remaining) != 0) - warnx("pci_passthru: unmap_pptdev_mmio failed"); - } else { - if (vm_map_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - remaining, - sc->psc_bar[baridx].addr + - table_offset + table_size) != 0) - warnx("pci_passthru: map_pptdev_mmio failed"); - } - } -} - static int passthru_mmio_map(struct pci_devinst *pi, int baridx, int enabled, uint64_t address, uint64_t off, uint64_t size) @@ -1373,14 +1321,16 @@ passthru_mmio_map(struct pci_devinst *pi, int baridx, int enabled, if (vm_unmap_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, sc->psc_sel.pc_dev, sc->psc_sel.pc_func, address + off, size) != 0) { - warnx("pci_passthru: unmap_pptdev_mmio failed"); + EPRINTLN("pci_passthru: unmap_pptdev_mmio failed: %s", + strerror(errno)); return (-1); } } else { if (vm_map_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, sc->psc_sel.pc_dev, sc->psc_sel.pc_func, address + off, size, sc->psc_bar[baridx].addr + off) != 0) { - warnx("pci_passthru: map_pptdev_mmio failed"); + EPRINTLN("pci_passthru: map_pptdev_mmio failed: %s", + strerror(errno)); return (-1); } } @@ -1388,6 +1338,28 @@ passthru_mmio_map(struct pci_devinst *pi, int baridx, int enabled, return (0); } +static void +passthru_msix_addr(struct pci_devinst *pi, int baridx, int enabled, + uint64_t address) +{ + size_t remaining; + uint32_t table_size, table_offset; + + table_offset = rounddown2(pi->pi_msix.table_offset, 4096); + if (table_offset > 0) { + (void)passthru_mmio_map(pi, baridx, enabled, address, 0, + table_offset); + } + table_size = pi->pi_msix.table_offset - table_offset; + table_size += pi->pi_msix.table_count * MSIX_TABLE_ENTRY_SIZE; + table_size = roundup2(table_size, 4096); + remaining = pi->pi_bar[baridx].size - table_offset - table_size; + if (remaining > 0) { + (void)passthru_mmio_map(pi, baridx, enabled, address, + table_offset + table_size, remaining); + } +} + static void passthru_mmio_addr(struct pci_devinst *pi, int baridx, int enabled, uint64_t address) From nobody Tue Mar 31 15:58:44 2026 X-Original-To: dev-commits-src-branches@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 4flXps3SfKz6WDyq for ; Tue, 31 Mar 2026 15:58:45 +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 4flXps0Tzhz3gbB for ; Tue, 31 Mar 2026 15:58:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972725; 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=oXUeus4gMx462TV/+TwZHysSmUgEsuU5hxzaGJrU8UY=; b=uvWSCiUV0SNThae9UukkcAQZlDggGtEiwFslmKFeMb8sKiqz7gDpLonqiJxf5AKTQbDP0k kTVkm3isu8jq4x48p150e1araVX/54ArlR+5AFhJX3CoKhaJlvR1RTG/7fh1ZpVpFxaTCF +AAhLSBDFyriOEqEIvlK578qzuLwCEHxE9wzfwFRWQ4+XGwpKOKxwssnmMhhQxZP2HH4iy IPezuY6rp7bfs+CzI/3u03ROz0pTu/4Lww/0V9yMwmG2+X3wWi/It4O2TvAtSDQnJBk9Nm XegWhK3jLbbDYriKmCay6WzxasOq7+9Wp/d0X3IxxzlUdPz8bfwtXPc2v7wvfA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972725; a=rsa-sha256; cv=none; b=VaBgGeE5X1M+wCaT8RhAoVY6b1FIfMJ2IZ1o+E/m5J+ICUTB2oJ2fIeK4NMec9vEdJ2hK5 VXfnEqiU1kulvUdbYAcY6cdZMY/UTnzp14mzY5kUmDBHlsgsuPriqNp7MnhSHe4xHd1c3t 91XAJdb136b/duF9kSdkzSwZ0lrG00WvOohhi0LLJH1l3BEoNeToao2+8XlmP8aIMYY0Fv oJM0neqj1ZIstODY5kT77Gu2Po4GkHP+UmNYCHozuJQD6bNSXIIFlwO/UwFZAjyqd0taIN FrT5rVpe34Z3n5faTitrNN5ED731c99KfFMClaVo6WBMW8UgWfWs1fSIXrQ/QA== 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=1774972725; 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=oXUeus4gMx462TV/+TwZHysSmUgEsuU5hxzaGJrU8UY=; b=smBjoPuTcI6NY6I3ATS24ISraLzxaL6g5InqEM3ZEHFndkP8p6n/vnPAXye9ECpFhrYniJ KVK3LJax59R0M+iWgWsVnjCN7Hc4VZ0OT1Iz6eA9wAwcx4lc0m9Jb3djPmdwxgs12+7fmR ildRFYR4dAf+xnvVSeeJqa5l5kWZV38vXtfGX3WPVfwV0OovNR6U9ChddUS6USu4c7QHTE cRW+2cZopu3XUsRPJKIKsOMrnN/gXyVPGGkvD0Syj3ETeUFHVLYiXeXHH2FNnx6aayvi/P 8g2WK7BeGtwDXps6qSMpc1p/8Op1AGNl+bgJX0rUHGq6zAQEhtFi9EKAmy+A5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpr6xzQzcby for ; Tue, 31 Mar 2026 15:58:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b007 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:44 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 633c7915b3d4 - stable/15 - amd64/vmm: Lock global PCI passthrough structures List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 633c7915b3d4fc6cee456250d79ac2cff0d41674 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:44 +0000 Message-Id: <69cbef34.3b007.62784eac@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=633c7915b3d4fc6cee456250d79ac2cff0d41674 commit 633c7915b3d4fc6cee456250d79ac2cff0d41674 Author: Mark Johnston AuthorDate: 2026-02-06 15:29:22 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 amd64/vmm: Lock global PCI passthrough structures There is a global list of ppt-claimed devices, accessed via several vmm ioctls. The ioctls are locked by per-VM locks, but this isn't sufficient to prevent multiple VMs from trying to bind a given device. Add a sleepable lock and use that to synchronize all access to ppt devices. Reviewed by: corvink, jhb MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55065 (cherry picked from commit 36b855f1892575cbfe1cd5455b989bfc8ae07502) --- sys/amd64/vmm/io/ppt.c | 162 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 111 insertions(+), 51 deletions(-) diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c index 6feac5dcbbed..b522e18e3b24 100644 --- a/sys/amd64/vmm/io/ppt.c +++ b/sys/amd64/vmm/io/ppt.c @@ -28,13 +28,15 @@ #include #include +#include #include +#include #include #include -#include #include #include #include +#include #include #include @@ -67,6 +69,12 @@ MALLOC_DEFINE(M_PPTMSIX, "pptmsix", "Passthru MSI-X resources"); +static struct sx ppt_mtx; +SX_SYSINIT(ppt_mtx, &ppt_mtx, "ppt_mtx"); +#define PPT_LOCK() sx_xlock(&ppt_mtx) +#define PPT_UNLOCK() sx_xunlock(&ppt_mtx) +#define PPT_ASSERT_LOCKED() sx_assert(&ppt_mtx, SA_XLOCKED) + struct pptintr_arg { /* pptintr(pptintr_arg) */ struct pptdev *pptdev; uint64_t addr; @@ -156,17 +164,20 @@ ppt_attach(device_t dev) ppt = device_get_softc(dev); + PPT_LOCK(); cmd1 = cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd &= ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); pci_write_config(dev, PCIR_COMMAND, cmd, 2); error = iommu_remove_device(iommu_host_domain(), dev, pci_get_rid(dev)); if (error != 0) { pci_write_config(dev, PCIR_COMMAND, cmd1, 2); + PPT_UNLOCK(); return (error); } num_pptdevs++; TAILQ_INSERT_TAIL(&pptdev_list, ppt, next); ppt->dev = dev; + PPT_UNLOCK(); if (bootverbose) device_printf(dev, "attached\n"); @@ -180,22 +191,26 @@ ppt_detach(device_t dev) struct pptdev *ppt; int error; + error = 0; ppt = device_get_softc(dev); - if (ppt->vm != NULL) - return (EBUSY); + PPT_LOCK(); + if (ppt->vm != NULL) { + error = EBUSY; + goto out; + } if (iommu_host_domain() != NULL) { error = iommu_add_device(iommu_host_domain(), dev, pci_get_rid(dev)); - } else { - error = 0; + if (error != 0) + goto out; } - if (error != 0) - return (error); num_pptdevs--; TAILQ_REMOVE(&pptdev_list, ppt, next); +out: + PPT_UNLOCK(); - return (0); + return (error); } static device_method_t ppt_methods[] = { @@ -216,6 +231,8 @@ ppt_find(struct vm *vm, int bus, int slot, int func, struct pptdev **pptp) struct pptdev *ppt; int b, s, f; + PPT_ASSERT_LOCKED(); + TAILQ_FOREACH(ppt, &pptdev_list, next) { dev = ppt->dev; b = pci_get_bus(dev); @@ -406,10 +423,11 @@ ppt_assign_device(struct vm *vm, int bus, int slot, int func) int error; uint16_t cmd; + PPT_LOCK(); /* Passing NULL requires the device to be unowned. */ error = ppt_find(NULL, bus, slot, func, &ppt); - if (error) - return (error); + if (error != 0) + goto out; pci_save_state(ppt->dev); ppt_pci_reset(ppt->dev); @@ -417,12 +435,14 @@ ppt_assign_device(struct vm *vm, int bus, int slot, int func) error = iommu_add_device(vm_iommu_domain(vm), ppt->dev, pci_get_rid(ppt->dev)); if (error != 0) - return (error); + goto out; ppt->vm = vm; cmd = pci_read_config(ppt->dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_BUSMASTEREN | ppt_bar_enables(ppt); pci_write_config(ppt->dev, PCIR_COMMAND, cmd, 2); - return (0); +out: + PPT_UNLOCK(); + return (error); } int @@ -432,9 +452,10 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, int func) int error; uint16_t cmd; + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); - if (error) - return (error); + if (error != 0) + goto out; cmd = pci_read_config(ppt->dev, PCIR_COMMAND, 2); cmd &= ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); @@ -448,6 +469,8 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, int func) error = iommu_remove_device(vm_iommu_domain(vm), ppt->dev, pci_get_rid(ppt->dev)); ppt->vm = NULL; +out: + PPT_UNLOCK(); return (error); } @@ -500,13 +523,17 @@ ppt_map_mmio(struct vm *vm, int bus, int slot, int func, hpa % PAGE_SIZE != 0 || gpa + len < gpa || hpa + len < hpa) return (EINVAL); + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); if (error) - return (error); + goto out; - if (!ppt_valid_bar_mapping(ppt, hpa, len)) - return (EINVAL); + if (!ppt_valid_bar_mapping(ppt, hpa, len)) { + error = EINVAL; + goto out; + } + error = ENOSPC; for (i = 0; i < MAX_MMIOSEGS; i++) { seg = &ppt->mmio[i]; if (seg->len == 0) { @@ -515,10 +542,12 @@ ppt_map_mmio(struct vm *vm, int bus, int slot, int func, seg->gpa = gpa; seg->len = len; } - return (error); + break; } } - return (ENOSPC); +out: + PPT_UNLOCK(); + return (error); } int @@ -529,10 +558,12 @@ ppt_unmap_mmio(struct vm *vm, int bus, int slot, int func, struct pptseg *seg; struct pptdev *ppt; + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); if (error) - return (error); + goto out; + error = ENOENT; for (i = 0; i < MAX_MMIOSEGS; i++) { seg = &ppt->mmio[i]; if (seg->gpa == gpa && seg->len == len) { @@ -541,9 +572,11 @@ ppt_unmap_mmio(struct vm *vm, int bus, int slot, int func, seg->gpa = 0; seg->len = 0; } - return (error); + break; } } +out: + PPT_UNLOCK(); return (ENOENT); } @@ -586,19 +619,22 @@ ppt_setup_msi(struct vm *vm, int bus, int slot, int func, if (numvec < 0 || numvec > MAX_MSIMSGS) return (EINVAL); + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); if (error) - return (error); + goto out; /* Reject attempts to enable MSI while MSI-X is active. */ - if (ppt->msix.num_msgs != 0 && numvec != 0) - return (EBUSY); + if (ppt->msix.num_msgs != 0 && numvec != 0) { + error = EBUSY; + goto out; + } /* Free any allocated resources */ ppt_teardown_msi(ppt); if (numvec == 0) /* nothing more to do */ - return (0); + goto out; flags = RF_ACTIVE; msi_count = pci_msi_count(ppt->dev); @@ -613,8 +649,10 @@ ppt_setup_msi(struct vm *vm, int bus, int slot, int func, * The device must be capable of supporting the number of vectors * the guest wants to allocate. */ - if (numvec > msi_count) - return (EINVAL); + if (numvec > msi_count) { + error = EINVAL; + goto out; + } /* * Make sure that we can allocate all the MSI vectors that are needed @@ -624,10 +662,11 @@ ppt_setup_msi(struct vm *vm, int bus, int slot, int func, tmp = numvec; error = pci_alloc_msi(ppt->dev, &tmp); if (error) - return (error); + goto out; else if (tmp != numvec) { pci_release_msi(ppt->dev); - return (ENOSPC); + error = ENOSPC; + goto out; } else { /* success */ } @@ -662,10 +701,12 @@ ppt_setup_msi(struct vm *vm, int bus, int slot, int func, if (i < numvec) { ppt_teardown_msi(ppt); - return (ENXIO); + error = ENXIO; } - return (0); +out: + PPT_UNLOCK(); + return (error); } int @@ -677,17 +718,22 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, int numvec, alloced, rid, error; size_t res_size, cookie_size, arg_size; + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); if (error) - return (error); + goto out; /* Reject attempts to enable MSI-X while MSI is active. */ - if (ppt->msi.num_msgs != 0) - return (EBUSY); + if (ppt->msi.num_msgs != 0) { + error = EBUSY; + goto out; + } dinfo = device_get_ivars(ppt->dev); - if (!dinfo) - return (ENXIO); + if (dinfo == NULL) { + error = ENXIO; + goto out; + } /* * First-time configuration: @@ -697,8 +743,10 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, */ if (ppt->msix.num_msgs == 0) { numvec = pci_msix_count(ppt->dev); - if (numvec <= 0) - return (EINVAL); + if (numvec <= 0) { + error = EINVAL; + goto out; + } ppt->msix.startrid = 1; ppt->msix.num_msgs = numvec; @@ -718,7 +766,8 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, if (ppt->msix.msix_table_res == NULL) { ppt_teardown_msix(ppt); - return (ENOSPC); + error = ENOSPC; + goto out; } ppt->msix.msix_table_rid = rid; @@ -730,7 +779,8 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, if (ppt->msix.msix_pba_res == NULL) { ppt_teardown_msix(ppt); - return (ENOSPC); + error = ENOSPC; + goto out; } ppt->msix.msix_pba_rid = rid; } @@ -739,12 +789,16 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, error = pci_alloc_msix(ppt->dev, &alloced); if (error || alloced != numvec) { ppt_teardown_msix(ppt); - return (error == 0 ? ENOSPC: error); + if (error == 0) + error = ENOSPC; + goto out; } } - if (idx >= ppt->msix.num_msgs) - return (EINVAL); + if (idx >= ppt->msix.num_msgs) { + error = EINVAL; + goto out; + } if ((vector_control & PCIM_MSIX_VCTRL_MASK) == 0) { /* Tear down the IRQ if it's already set up */ @@ -755,8 +809,10 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, rid = ppt->msix.startrid + idx; ppt->msix.res[idx] = bus_alloc_resource_any(ppt->dev, SYS_RES_IRQ, &rid, RF_ACTIVE); - if (ppt->msix.res[idx] == NULL) - return (ENXIO); + if (ppt->msix.res[idx] == NULL) { + error = ENXIO; + goto out; + } ppt->msix.arg[idx].pptdev = ppt; ppt->msix.arg[idx].addr = addr; @@ -767,19 +823,20 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func, INTR_TYPE_NET | INTR_MPSAFE, pptintr, NULL, &ppt->msix.arg[idx], &ppt->msix.cookie[idx]); - if (error != 0) { bus_release_resource(ppt->dev, SYS_RES_IRQ, rid, ppt->msix.res[idx]); ppt->msix.cookie[idx] = NULL; ppt->msix.res[idx] = NULL; - return (ENXIO); + error = ENXIO; + goto out; } } else { /* Masked, tear it down if it's already been set up */ ppt_teardown_msix_intr(ppt, idx); } - - return (0); +out: + PPT_UNLOCK(); + return (error); } int @@ -788,10 +845,13 @@ ppt_disable_msix(struct vm *vm, int bus, int slot, int func) struct pptdev *ppt; int error; + PPT_LOCK(); error = ppt_find(vm, bus, slot, func, &ppt); - if (error) + if (error != 0) { + PPT_UNLOCK(); return (error); - + } ppt_teardown_msix(ppt); + PPT_UNLOCK(); return (0); } From nobody Tue Mar 31 15:58:43 2026 X-Original-To: dev-commits-src-branches@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 4flXpr5DcGz6WDsW for ; Tue, 31 Mar 2026 15:58:44 +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 4flXpq6vL2z3gfw for ; Tue, 31 Mar 2026 15:58:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972724; 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=AyTBvsukTXIH9Awym2+gHzlMAADBLtQREAh4dJHZiA0=; b=AtXI+OA5wQBJ7wA2wjZmrCxHhu3f2Ki9S3DnyObdZUH8FbA3jCUl4+H+GkizR+ma4DvAXV vJiQOZfNiG1kKROAWvwH4hcBVY3NKoQYET0epIpMmEa0w6WnD657kxIGR21LRtOZJnW2zV Vry1/qjU/I5EymqitNeAOvi3sSYQnuToY9qUUzdoNdPJbXGKc9eKBsx05p7guyLEKSxQ3g nLlslgjkxz79mY4uShHHWl3rpp+fGp4Ge399cgOrD2OaSxtU7MsG5JGC/eBM7584Z1uoKj j2DfnqqqClZzBlqHQc4eMNRMkLHfisgATtQFkQYvgVXrv4mT0luqSDFJwU0aVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972724; a=rsa-sha256; cv=none; b=c6y0L0gLdTGf+ch6VWQ+BqujyAUdZtq4h88hSCxGEro+RCB4IbXMEIfPWJTLUSqRYK9mnb oR1KoFAgDPUbFXj+N+n6RyvoAcvffr2AAS95igf7yo+Ri0Gd2/R1lpk+yKTlO+2kAPoban bblAcc8RfqWuYQHPwjOjBhBEAxfkaRIQtlov8GdkHvnt3epclCBk9gpKwO3S1c1cgEH52R mHPKND8+6/B/vOs5Ug+Ak2yDu0ESsLOy1Tj1g0p7Ta2I4BlZ3T4qG5n/dpmzZMwQ3Koyk+ 1AtOiXhzPuXvJZIc7T00nuSMYT5GPaMxl31NYopYmQZEccHD7lme5BMbdKVGnA== 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=1774972724; 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=AyTBvsukTXIH9Awym2+gHzlMAADBLtQREAh4dJHZiA0=; b=X52e8CFM+d6buiJAiHdnPmCAxm+ZSrD2ztIWp1Xt4074k1OWj+o4CG/skh3LuTV5Pa1mAl uRhcelLlfJDZwB8JIHUFF9Q3DGCIvFso6Vic0fHJxOQ+nahVLfS9HxXZii5UlF6B9/8wpe eBTjAw/NppUOX8/BlNo2dpwa27bKIMm6cu38ftCHE6VMahZrbg1Y176/x5mFo8iFtIMCJu ngzTRxRdKNpg6zUOlRwumAqCHR17o0lFB2RxBl3c61oLmnFFdtM6HEPZomR+SJkmtMAXk8 swovLtmKymE39LIalGqoj+eF94tQiJja4LKxYca6RlIpwyVMAsQnncprJhGpPw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpq6MDqzc3Z for ; Tue, 31 Mar 2026 15:58:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a9ec by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 2696698681a9 - stable/15 - kmsan: Implement __msan_test_shadow() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2696698681a9150c8b3216cc36dab9bd911b5f8f Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:43 +0000 Message-Id: <69cbef33.3a9ec.4dc33b77@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=2696698681a9150c8b3216cc36dab9bd911b5f8f commit 2696698681a9150c8b3216cc36dab9bd911b5f8f Author: Mark Johnston AuthorDate: 2026-02-13 15:42:19 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 kmsan: Implement __msan_test_shadow() This is needed when building OpenZFS with KMSAN enabled, as the bundled zstd uses it. MFC after: 1 week (cherry picked from commit bf149f2e88cb3836e02ddabd9944eb58650a72ae) --- sys/kern/subr_msan.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sys/kern/subr_msan.c b/sys/kern/subr_msan.c index 883dbd2b7604..dd69375f4ed1 100644 --- a/sys/kern/subr_msan.c +++ b/sys/kern/subr_msan.c @@ -662,6 +662,7 @@ void __msan_poison_alloca(const void *, uint64_t, const char *); void __msan_unpoison_alloca(const void *, uint64_t); void __msan_warning(msan_orig_t); msan_tls_t *__msan_get_context_state(void); +intptr_t __msan_test_shadow(const void *, size_t); void __msan_instrument_asm_store(const void *addr, size_t size) @@ -726,6 +727,23 @@ __msan_get_context_state(void) return (&mtd->tls[mtd->ctx]); } +intptr_t +__msan_test_shadow(const void *addr, size_t len) +{ + uint8_t *shad; + + if (__predict_false(!kmsan_enabled)) + return (-1); + if (__predict_false(kmsan_md_unsupported((vm_offset_t)addr))) + return (-1); + + shad = (uint8_t *)kmsan_md_addr_to_shad((vm_offset_t)addr); + for (size_t i = 0; i < len; i++) + if (shad[i] != 0) + return (i); + return (-1); +} + /* -------------------------------------------------------------------------- */ /* From nobody Tue Mar 31 15:58:47 2026 X-Original-To: dev-commits-src-branches@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 4flXpx0S4vz6WF7j for ; Tue, 31 Mar 2026 15:58:49 +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 4flXpw0Bvfz3gbc for ; Tue, 31 Mar 2026 15:58:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972728; 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=K8kAGF09+BHLc9HDAun/lZyG2r5vhRhaqK5Mgq3LcvY=; b=uhEF8Rm2MZt4ImcUUwaIP0oIidRykZfZz7P4l9CuQkzO7rK86bEisIXv3IB9lmO+qTCovD yA9VzKZXnJrGjxLmmqN+E9XMpaweA4l4Dqm5orB//8dOPLdvQUhkRfmRZIM2xr+idVY6tA EqcNcEQCccjHgTPxSgAZ3SBM4XkIyV2WqMgtyT8NMXVS8QUQpi13fDzW3A7D0/gOIVitPu BynFQeldT6vlKM/6U52Xta6aw+jTGdW7PLAVpveYeazM8X/jx8rFRVfDRCwceuVimz5q+F Z4e6UsxR7jov34lnUqptm9fBMZbLuB7tw3PxBmOMwBKipa1WC2qGcKMoY1V4oA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972728; a=rsa-sha256; cv=none; b=YholUGt6iSLOocs6IhNpMo+aFETYgE/oY6a4eDY+MY6m0jIHOkBwdyRPJa5g+R1Wu2nYRu euKM9FCQJzvUFzw7tFGcWxMr7yjSJq36pT5WRKuBBzBCqqVeR4VrXEr/gbkIZrKHpVrk0W 0i+F4zYEywo9yw8MLHUp4+NTZ42qns7gs18QRAjrN0hQaLvEJcP8aduMn7KmuLCVeTwUWX 1bxM2fOoesm5yov6VBkIdqR16aYudy3gCd54+nwSpA7ygvyx4oHed4RzR6Vli1pcBjNOjh iOjgid6Fsz+AVojgW8Y7QMqUiix3C92iWgXY7q5UZ91M4ombA3ZGTQQ2znbs7A== 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=1774972728; 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=K8kAGF09+BHLc9HDAun/lZyG2r5vhRhaqK5Mgq3LcvY=; b=gecApOjcPkHZBLDglx8SgVQ8jG2AR+wWuX7LwVTc4FSCAMdn8EAGC5AYs7ttxvlcgG3uTD tDG2A3F/zwk9HjxeULQ3xjw/RNVki7xiKACd3LAOQyXJQ4vuhjHWJSxavAVB/l6qMjeE0O l2KAXmv/IWeukwPv4FOlbrl3mvrpW7sNmpELs03C/sKaRg6kd0TCB62VYa05VOCttTfovX OgS+9C3ewZ0o/4UQBfH4pOaTAhPFeE6GIgUvqNjgONaPhowbrJ6qMpkpKXBytmH8kbwzUE eGB4kXpivaKoa9NGYeBPOJH3ecVfUpR8TzR2bmVbwxHc8GGq8e/KTGjQ47caxQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpv0vj4zcFW for ; Tue, 31 Mar 2026 15:58:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 395eb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: db1f74000b55 - stable/15 - bhyve: Move the slirp backend out into a separate process List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: db1f74000b552b635f7308e32346f61db457f9ce Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:47 +0000 Message-Id: <69cbef37.395eb.3be30b84@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=db1f74000b552b635f7308e32346f61db457f9ce commit db1f74000b552b635f7308e32346f61db457f9ce Author: Mark Johnston AuthorDate: 2025-11-19 16:02:21 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 bhyve: Move the slirp backend out into a separate process The previous implementation implemented hostfwd rules which would allow the host to connect to the guest via a NATed TCP connection. libslirp also permits NAT in the other direction, but this was prevented by bhyve's capsicum sandbox. To make the slirp backend more useful, split the backend out into a separate process which does not enter capability mode if outbound connections are permitted (enabled by setting the new "open" keyword). The process communicates with the bhyve network frontend (typically a virtio network interface) using a unix SOCK_SEQPACKET socket pair. If the bhyve process exits, the helper will automatically exit. Aside from this restructuring, there is not much actual change. Many slirp parameters are still hard-coded for now, though this may change. The "restricted" feature is toggled by the new "open" keyword; in particular, the backend is restricted by default for compatibility with 15.0 and 14.3. Each packet now has to traverse an extra socket, but this overhead should be acceptable given that the slirp backend cannot be said to provide high-performance networking. With iperf3 I can get 4Gbps from the guest to the host on a Zen 4 system. MFC after: 1 month Sponsored by: CHERI Research Centre (EPSRC grant UKRI3001) Differential Revision: https://reviews.freebsd.org/D53454 (cherry picked from commit 0e62ebd20172f67283bac9526c2aaeaffeb41b45) --- usr.sbin/bhyve/Makefile | 2 + usr.sbin/bhyve/bhyve.8 | 11 +- usr.sbin/bhyve/net_backend_slirp.c | 622 +++++----------------------------- usr.sbin/bhyve/slirp/Makefile | 11 + usr.sbin/bhyve/{ => slirp}/libslirp.h | 0 usr.sbin/bhyve/slirp/slirp-helper.c | 570 +++++++++++++++++++++++++++++++ 6 files changed, 677 insertions(+), 539 deletions(-) diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile index 12844ec83b27..25fb71b5768f 100644 --- a/usr.sbin/bhyve/Makefile +++ b/usr.sbin/bhyve/Makefile @@ -77,6 +77,8 @@ SRCS+= snapshot.c .include "${MACHINE_CPUARCH}/Makefile.inc" +SUBDIR+= slirp + .if defined(BHYVE_FDT_SUPPORT) LIBADD+= fdt CFLAGS+= -I${SRCTOP}/sys/contrib/libfdt diff --git a/usr.sbin/bhyve/bhyve.8 b/usr.sbin/bhyve/bhyve.8 index 811b19149f9a..ee1b3b3b38b3 100644 --- a/usr.sbin/bhyve/bhyve.8 +++ b/usr.sbin/bhyve/bhyve.8 @@ -532,7 +532,9 @@ considered unconnected. .Xc .It .Xo -.Cm slirp,hostfwd= Ar proto : Ar hostaddr : Ar hostport - Ar guestaddr : Ar guestport +.Cm slirp +.Op Cm \&,open +.Op Cm \&,hostfwd= Ar proto : Ar hostaddr : Ar hostport - Ar guestaddr : Ar guestport .Xc .El .Sm on @@ -599,6 +601,12 @@ configuration on the host system. It depends on the .Pa net/libslirp port. +If the +.Cm open +keyword is set, the guest will be able to make outbound network +connections, and +.Nm +will transparently handle the necessary address translation. The .Cm hostfwd option takes a 5-tuple describing how connections from the host are to be @@ -606,6 +614,7 @@ forwarded to the guest. Multiple rules can be specified, separated by semicolons. Note that semicolons must be escaped or quoted to prevent the shell from interpreting them. +The backend will provide DHCP and DNS service to the guest. .Ss Block storage device backends: .Bl -bullet .Sm off diff --git a/usr.sbin/bhyve/net_backend_slirp.c b/usr.sbin/bhyve/net_backend_slirp.c index 171c5b5bdbbd..c98e54b2ee88 100644 --- a/usr.sbin/bhyve/net_backend_slirp.c +++ b/usr.sbin/bhyve/net_backend_slirp.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2023 Mark Johnston + * Copyright (c) 2023, 2025 Mark Johnston * * This software was developed by the University of Cambridge Computer * Laboratory (Department of Computer Science and Technology) under Innovate @@ -31,13 +31,15 @@ */ /* - * The slirp backend enables unprivileged networking via libslirp, which must be - * installed on the host system via pkg or the ports tree. bhyve dlopen()s - * libslirp.so upon instantiating the slirp backend. Various network parameters - * are hard-coded in _slirp_init(). + * The slirp backend enables unprivileged userspace networking via libslirp, + * which must be installed on the host system via pkg or the ports tree. + * libslirp.so is dlopen()ed into a helper process with which this backend + * communicates. * * Packets received from the guest (i.e., transmitted by the frontend, such as a - * virtio NIC device model) are injected into the slirp backend via slirp_send(). + * virtio NIC device model) are injected into the slirp backend via slirp_send(), + * which sends the packet to the helper process. + * * Packets to be transmitted to the guest (i.e., inserted into the frontend's * receive buffers) are buffered in a per-interface socket pair and read by the * mevent loop. Sockets instantiated by libslirp are monitored by a thread @@ -46,14 +48,12 @@ */ #include +#include #include -#include -#include #include -#include -#include -#include +#include +#include #include #include #include @@ -61,537 +61,92 @@ #include "config.h" #include "debug.h" -#include "libslirp.h" #include "mevent.h" #include "net_backends.h" #include "net_backends_priv.h" -typedef int (*slirp_add_hostxfwd_p_t)(Slirp *, - const struct sockaddr *, socklen_t, const struct sockaddr *, socklen_t, - int); -typedef void (*slirp_cleanup_p_t)(Slirp *); -typedef void (*slirp_input_p_t)(Slirp *, const uint8_t *, int); -typedef Slirp *(*slirp_new_p_t)(const SlirpConfig *, const SlirpCb *, void *); -typedef void (*slirp_pollfds_fill_p_t)(Slirp *, uint32_t *timeout, - SlirpAddPollCb, void *); -typedef void (*slirp_pollfds_poll_p_t)(Slirp *, int, SlirpGetREventsCb, void *); - -/* Function pointer table, initialized by slirp_init_once(). */ -static slirp_add_hostxfwd_p_t slirp_add_hostxfwd_p; -static slirp_cleanup_p_t slirp_cleanup_p; -static slirp_input_p_t slirp_input_p; -static slirp_new_p_t slirp_new_p; -static slirp_pollfds_fill_p_t slirp_pollfds_fill_p; -static slirp_pollfds_poll_p_t slirp_pollfds_poll_p; - -static void -checked_close(int *fdp) -{ - int error; - - if (*fdp != -1) { - error = close(*fdp); - assert(error == 0); - *fdp = -1; - } -} - -static int -slirp_init_once(void) -{ - static void *handle = NULL; - - if (handle != NULL) - return (0); - handle = dlopen("libslirp.so.0", RTLD_LAZY); - if (handle == NULL) { - EPRINTLN("Unable to open libslirp.so.0: %s", dlerror()); - return (-1); - } - -#define IMPORT_SYM(sym) do { \ - sym##_p = (sym##_p_t)dlsym(handle, #sym); \ - if (sym##_p == NULL) { \ - EPRINTLN("failed to resolve %s", #sym); \ - goto err; \ - } \ -} while (0) - IMPORT_SYM(slirp_add_hostxfwd); - IMPORT_SYM(slirp_cleanup); - IMPORT_SYM(slirp_input); - IMPORT_SYM(slirp_new); - IMPORT_SYM(slirp_pollfds_fill); - IMPORT_SYM(slirp_pollfds_poll); -#undef IMPORT_SYM - - /* - * libslirp uses glib, which uses tzdata to format log messages. Help - * it out. - * - * XXX-MJ glib will also look for charset files, not sure what we can do - * about that... - */ - caph_cache_tzdata(); - - return (0); - -err: - dlclose(handle); - handle = NULL; - return (-1); -} +#define SLIRP_MTU 2048 struct slirp_priv { - Slirp *slirp; - -#define SLIRP_MTU 2048 + int s; + pid_t helper; struct mevent *mevp; - int pipe[2]; /* used to buffer data sent to the guest */ - int wakeup[2]; /* used to wake up the pollfd thread */ - - pthread_t pollfd_td; - struct pollfd *pollfds; - size_t npollfds; - - /* Serializes libslirp calls. */ - pthread_mutex_t mtx; -}; - -static void -slirp_priv_init(struct slirp_priv *priv) -{ - int error; - - memset(priv, 0, sizeof(*priv)); - priv->pipe[0] = priv->pipe[1] = -1; - priv->wakeup[0] = priv->wakeup[1] = -1; - error = pthread_mutex_init(&priv->mtx, NULL); - assert(error == 0); -} - -static void -slirp_priv_cleanup(struct slirp_priv *priv) -{ - int error; - - checked_close(&priv->pipe[0]); - checked_close(&priv->pipe[1]); - checked_close(&priv->wakeup[0]); - checked_close(&priv->wakeup[1]); - if (priv->mevp) - mevent_delete(priv->mevp); - if (priv->slirp != NULL) - slirp_cleanup_p(priv->slirp); - error = pthread_mutex_destroy(&priv->mtx); - assert(error == 0); -} - -static int64_t -slirp_cb_clock_get_ns(void *param __unused) -{ - struct timespec ts; - int error; - - error = clock_gettime(CLOCK_MONOTONIC, &ts); - assert(error == 0); - return ((int64_t)(ts.tv_sec * 1000000000L + ts.tv_nsec)); -} - -static void -slirp_cb_notify(void *param) -{ - struct slirp_priv *priv; - - /* Wake up the poll thread. We assume that priv->mtx is held here. */ - priv = param; - (void)write(priv->wakeup[1], "M", 1); -} - -static void -slirp_cb_register_poll_fd(int fd, void *param __unused) -{ - const int one = 1; - - (void)setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &one, sizeof(int)); -} - -static ssize_t -slirp_cb_send_packet(const void *buf, size_t len, void *param) -{ - struct slirp_priv *priv; - ssize_t n; - - priv = param; - - assert(len <= SLIRP_MTU); - n = send(priv->pipe[1], buf, len, 0); - if (n < 0) { - EPRINTLN("slirp_cb_send_packet: send: %s", strerror(errno)); - return (n); - } - assert((size_t)n == len); - - return (n); -} - -static void -slirp_cb_unregister_poll_fd(int fd __unused, void *opaque __unused) -{ -} - -/* Callbacks invoked from within libslirp. */ -static const struct SlirpCb slirp_cbs = { - .clock_get_ns = slirp_cb_clock_get_ns, - .notify = slirp_cb_notify, - .register_poll_fd = slirp_cb_register_poll_fd, - .send_packet = slirp_cb_send_packet, - .unregister_poll_fd = slirp_cb_unregister_poll_fd, }; static int -slirpev2pollev(int events) -{ - int ret; - - ret = 0; - if (events & SLIRP_POLL_IN) - ret |= POLLIN; - if (events & SLIRP_POLL_OUT) - ret |= POLLOUT; - if (events & SLIRP_POLL_PRI) - ret |= POLLPRI; - if (events & SLIRP_POLL_ERR) - ret |= POLLERR; - if (events & SLIRP_POLL_HUP) - ret |= POLLHUP; - return (ret); -} - -static int -pollev2slirpev(int events) -{ - int ret; - - ret = 0; - if (events & POLLIN) - ret |= SLIRP_POLL_IN; - if (events & POLLOUT) - ret |= SLIRP_POLL_OUT; - if (events & POLLPRI) - ret |= SLIRP_POLL_PRI; - if (events & POLLERR) - ret |= SLIRP_POLL_ERR; - if (events & POLLHUP) - ret |= SLIRP_POLL_HUP; - return (ret); -} - -static int -slirp_addpoll_cb(int fd, int events, void *param) -{ - struct slirp_priv *priv; - struct pollfd *pollfd, *pollfds; - size_t i; - - priv = param; - - for (i = 0; i < priv->npollfds; i++) - if (priv->pollfds[i].fd == -1) - break; - if (i == priv->npollfds) { - const size_t POLLFD_GROW = 4; - - priv->npollfds += POLLFD_GROW; - pollfds = realloc(priv->pollfds, - sizeof(*pollfds) * priv->npollfds); - if (pollfds == NULL) - return (-1); - for (i = priv->npollfds - POLLFD_GROW; i < priv->npollfds; i++) - pollfds[i].fd = -1; - priv->pollfds = pollfds; - - i = priv->npollfds - POLLFD_GROW; - } - pollfd = &priv->pollfds[i]; - pollfd->fd = fd; - pollfd->events = slirpev2pollev(events); - pollfd->revents = 0; - - return ((int)i); -} - -static int -slirp_poll_revents(int idx, void *param) -{ - struct slirp_priv *priv; - struct pollfd *pollfd; - short revents; - - priv = param; - assert(idx >= 0); - assert((unsigned int)idx < priv->npollfds); - pollfd = &priv->pollfds[idx]; - assert(pollfd->fd != -1); - - /* The kernel may report POLLHUP even if we didn't ask for it. */ - revents = pollfd->revents; - if ((pollfd->events & POLLHUP) == 0) - revents &= ~POLLHUP; - return (pollev2slirpev(revents)); -} - -static void * -slirp_pollfd_td_loop(void *param) -{ - struct slirp_priv *priv; - struct pollfd *pollfds; - size_t npollfds; - uint32_t timeout; - int error; - - pthread_set_name_np(pthread_self(), "slirp pollfd"); - priv = param; - - pthread_mutex_lock(&priv->mtx); - for (;;) { - int wakeup; - - for (size_t i = 0; i < priv->npollfds; i++) - priv->pollfds[i].fd = -1; - - /* Register for notifications from slirp_cb_notify(). */ - wakeup = slirp_addpoll_cb(priv->wakeup[0], POLLIN, priv); - - timeout = UINT32_MAX; - slirp_pollfds_fill_p(priv->slirp, &timeout, slirp_addpoll_cb, - priv); - - pollfds = priv->pollfds; - npollfds = priv->npollfds; - pthread_mutex_unlock(&priv->mtx); - error = poll(pollfds, npollfds, timeout); - if (error == -1 && errno != EINTR) { - EPRINTLN("poll: %s", strerror(errno)); - exit(1); - } - pthread_mutex_lock(&priv->mtx); - slirp_pollfds_poll_p(priv->slirp, error == -1, - slirp_poll_revents, priv); - - /* - * If we were woken up by the notify callback, mask the - * interrupt. - */ - if ((pollfds[wakeup].revents & POLLIN) != 0) { - ssize_t n; - - do { - uint8_t b; - - n = read(priv->wakeup[0], &b, 1); - } while (n == 1); - if (n != -1 || errno != EAGAIN) { - EPRINTLN("read(wakeup): %s", strerror(errno)); - exit(1); - } - } - } -} - -static int -parse_addr(char *addr, struct sockaddr_in *sinp) -{ - char *port; - int error, porti; - - memset(sinp, 0, sizeof(*sinp)); - sinp->sin_family = AF_INET; - sinp->sin_len = sizeof(struct sockaddr_in); - - port = strchr(addr, ':'); - if (port == NULL) - return (EINVAL); - *port++ = '\0'; - - if (strlen(addr) > 0) { - error = inet_pton(AF_INET, addr, &sinp->sin_addr); - if (error != 1) - return (error == 0 ? EPFNOSUPPORT : errno); - } else { - sinp->sin_addr.s_addr = htonl(INADDR_ANY); - } - - porti = strlen(port) > 0 ? atoi(port) : 0; - if (porti < 0 || porti > UINT16_MAX) - return (EINVAL); - sinp->sin_port = htons(porti); - - return (0); -} - -static int -parse_hostfwd_rule(const char *descr, int *is_udp, struct sockaddr *hostaddr, - struct sockaddr *guestaddr) -{ - struct sockaddr_in *hostaddrp, *guestaddrp; - const char *proto; - char *p, *host, *guest; - int error; - - error = 0; - *is_udp = 0; - - p = strdup(descr); - if (p == NULL) - return (ENOMEM); - - host = strchr(p, ':'); - if (host == NULL) { - error = EINVAL; - goto out; - } - *host++ = '\0'; - - proto = p; - *is_udp = strcmp(proto, "udp") == 0; - - guest = strchr(host, '-'); - if (guest == NULL) { - error = EINVAL; - goto out; - } - *guest++ = '\0'; - - hostaddrp = (struct sockaddr_in *)hostaddr; - error = parse_addr(host, hostaddrp); - if (error != 0) - goto out; - - guestaddrp = (struct sockaddr_in *)guestaddr; - error = parse_addr(guest, guestaddrp); - if (error != 0) - goto out; - -out: - free(p); - return (error); -} - -static int -config_one_hostfwd(struct slirp_priv *priv, const char *rule) -{ - struct sockaddr hostaddr, guestaddr; - int error, is_udp; - - error = parse_hostfwd_rule(rule, &is_udp, &hostaddr, &guestaddr); - if (error != 0) { - EPRINTLN("Unable to parse hostfwd rule '%s': %s", - rule, strerror(error)); - return (error); - } - - error = slirp_add_hostxfwd_p(priv->slirp, &hostaddr, hostaddr.sa_len, - &guestaddr, guestaddr.sa_len, is_udp ? SLIRP_HOSTFWD_UDP : 0); - if (error != 0) { - EPRINTLN("Unable to add hostfwd rule '%s': %s", - rule, strerror(errno)); - return (error); - } - - return (0); -} - -static int -_slirp_init(struct net_backend *be, const char *devname __unused, +slirp_init(struct net_backend *be, const char *devname __unused, nvlist_t *nvl, net_be_rxeof_t cb, void *param) { + extern char **environ; struct slirp_priv *priv = NET_BE_PRIV(be); - SlirpConfig config = { - .version = 4, - .if_mtu = SLIRP_MTU, - .restricted = true, - .in_enabled = true, - .vnetwork.s_addr = htonl(0x0a000200), /* 10.0.2.0/24 */ - .vnetmask.s_addr = htonl(0xffffff00), - .vdhcp_start.s_addr = htonl(0x0a00020f),/* 10.0.2.15 */ - .vhost.s_addr = htonl(0x0a000202), /* 10.0.2.2 */ - .enable_emu = false, - }; - const char *hostfwd; - int error, sndbuf; - - error = slirp_init_once(); - if (error != 0) - return (error); - - slirp_priv_init(priv); + nvlist_t *config; + posix_spawn_file_actions_t fa; + pid_t child; + const char **argv; + char sockname[32]; + int error, s[2]; + + if (socketpair(PF_LOCAL, SOCK_SEQPACKET | SOCK_NONBLOCK, 0, s) != 0) { + EPRINTLN("socketpair"); + return (-1); + } - priv->slirp = slirp_new_p(&config, &slirp_cbs, priv); - if (priv->slirp == NULL) { - EPRINTLN("Unable to create slirp instance"); + /* + * The child will exit once its connection goes away, so make sure only + * one end is inherited by the child. + */ + if (posix_spawn_file_actions_init(&fa) != 0) { + EPRINTLN("posix_spawn_file_actions_init"); goto err; } - - hostfwd = get_config_value_node(nvl, "hostfwd"); - if (hostfwd != NULL) { - char *rules, *tofree; - const char *rule; - - tofree = rules = strdup(hostfwd); - if (rules == NULL) - goto err; - while ((rule = strsep(&rules, ";")) != NULL) { - error = config_one_hostfwd(priv, rule); - if (error != 0) { - free(tofree); - goto err; - } - } - free(tofree); + if (posix_spawn_file_actions_addclose(&fa, s[0]) != 0) { + EPRINTLN("posix_spawn_file_actions_addclose"); + posix_spawn_file_actions_destroy(&fa); + goto err; } - error = socketpair(PF_LOCAL, SOCK_DGRAM | SOCK_CLOEXEC, 0, priv->pipe); + (void)snprintf(sockname, sizeof(sockname), "%d", s[1]); + argv = (const char *[]){ + "/usr/libexec/bhyve-slirp-helper", "-S", sockname, NULL + }; + error = posix_spawn(&child, "/usr/libexec/bhyve-slirp-helper", + &fa, NULL, __DECONST(char **, argv), environ); + posix_spawn_file_actions_destroy(&fa); if (error != 0) { - EPRINTLN("Unable to create pipe: %s", strerror(errno)); + EPRINTLN("posix_spawn(bhyve-slirp-helper): %s", + strerror(error)); goto err; } - error = pipe2(priv->wakeup, O_CLOEXEC | O_NONBLOCK); - if (error != 0) { - EPRINTLN("Unable to create wakeup pipe: %s", strerror(errno)); + config = nvlist_clone(nvl); + if (config == NULL) { + EPRINTLN("nvlist_clone"); goto err; } - - /* - * Try to avoid dropping buffered packets in slirp_cb_send_packet(). - */ - sndbuf = 1024 * 1024; - error = setsockopt(priv->pipe[1], SOL_SOCKET, SO_SNDBUF, &sndbuf, - sizeof(sndbuf)); + nvlist_add_string(config, "vmname", get_config_value("name")); + error = nvlist_send(s[0], config); + nvlist_destroy(config); if (error != 0) { - EPRINTLN("Could not set socket buffer size: %s", - strerror(errno)); + EPRINTLN("nvlist_send"); goto err; } - be->fd = priv->pipe[0]; + be->fd = s[0]; priv->mevp = mevent_add_disabled(be->fd, EVF_READ, cb, param); if (priv->mevp == NULL) { EPRINTLN("Could not register event"); goto err; } - error = pthread_create(&priv->pollfd_td, NULL, slirp_pollfd_td_loop, - priv); - if (error != 0) { - EPRINTLN("Unable to create pollfd thread: %s", strerror(error)); - goto err; - } + priv->helper = child; + priv->s = s[0]; + (void)close(s[1]); return (0); err: - slirp_priv_cleanup(priv); + (void)close(s[0]); + (void)close(s[1]); return (-1); } @@ -599,52 +154,43 @@ static ssize_t slirp_send(struct net_backend *be, const struct iovec *iov, int iovcnt) { struct slirp_priv *priv = NET_BE_PRIV(be); + struct msghdr hdr; - if (iovcnt == 1) { - /* We can avoid copying if there's a single segment. */ - pthread_mutex_lock(&priv->mtx); - slirp_input_p(priv->slirp, iov->iov_base, - (int)iov->iov_len); - pthread_mutex_unlock(&priv->mtx); - return (iov[0].iov_len); - } else { - uint8_t *pkt; - size_t pktlen; - - pktlen = 0; - for (int i = 0; i < iovcnt; i++) - pktlen += iov[i].iov_len; - pkt = malloc(pktlen); - if (pkt == NULL) - return (-1); - pktlen = 0; - for (int i = 0; i < iovcnt; i++) { - memcpy(pkt + pktlen, iov[i].iov_base, iov[i].iov_len); - pktlen += iov[i].iov_len; - } - pthread_mutex_lock(&priv->mtx); - slirp_input_p(priv->slirp, pkt, (int)pktlen); - pthread_mutex_unlock(&priv->mtx); - free(pkt); - return (pktlen); - } + memset(&hdr, 0, sizeof(hdr)); + hdr.msg_iov = __DECONST(struct iovec *, iov); + hdr.msg_iovlen = iovcnt; + return (sendmsg(priv->s, &hdr, MSG_EOR)); } static void -_slirp_cleanup(struct net_backend *be) +slirp_cleanup(struct net_backend *be) { struct slirp_priv *priv = NET_BE_PRIV(be); - slirp_priv_cleanup(priv); + if (priv->helper > 0) { + int status; + + if (kill(priv->helper, SIGKILL) != 0) { + EPRINTLN("kill(bhyve-slirp-helper): %s", + strerror(errno)); + return; + } + (void)waitpid(priv->helper, &status, 0); + } } static ssize_t slirp_peek_recvlen(struct net_backend *be) { struct slirp_priv *priv = NET_BE_PRIV(be); + uint8_t buf[SLIRP_MTU]; ssize_t n; - n = recv(priv->pipe[0], NULL, 0, MSG_PEEK | MSG_DONTWAIT | MSG_TRUNC); + /* + * Copying into the buffer is totally unnecessary, but we don't + * implement MSG_TRUNC for SEQPACKET sockets. + */ + n = recv(priv->s, buf, sizeof(buf), MSG_PEEK | MSG_DONTWAIT); if (n < 0) return (errno == EWOULDBLOCK ? 0 : -1); assert((size_t)n <= SLIRP_MTU); @@ -665,7 +211,7 @@ slirp_recv(struct net_backend *be, const struct iovec *iov, int iovcnt) hdr.msg_control = NULL; hdr.msg_controllen = 0; hdr.msg_flags = 0; - n = recvmsg(priv->pipe[0], &hdr, MSG_DONTWAIT); + n = recvmsg(priv->s, &hdr, MSG_DONTWAIT); if (n < 0) { if (errno == EWOULDBLOCK) return (0); @@ -707,8 +253,8 @@ slirp_set_cap(struct net_backend *be __unused, uint64_t features __unused, static struct net_backend slirp_backend = { .prefix = "slirp", .priv_size = sizeof(struct slirp_priv), - .init = _slirp_init, - .cleanup = _slirp_cleanup, + .init = slirp_init, + .cleanup = slirp_cleanup, .send = slirp_send, .peek_recvlen = slirp_peek_recvlen, .recv = slirp_recv, diff --git a/usr.sbin/bhyve/slirp/Makefile b/usr.sbin/bhyve/slirp/Makefile new file mode 100644 index 000000000000..da76fda45e86 --- /dev/null +++ b/usr.sbin/bhyve/slirp/Makefile @@ -0,0 +1,11 @@ +.PATH: ${.CURDIR}/../ + +PROG= bhyve-slirp-helper +SRCS= slirp-helper.c config.c +CFLAGS+= -I${.CURDIR}/../ +LIBADD= nv +MAN= + +BINDIR?= /usr/libexec + +.include diff --git a/usr.sbin/bhyve/libslirp.h b/usr.sbin/bhyve/slirp/libslirp.h similarity index 100% rename from usr.sbin/bhyve/libslirp.h rename to usr.sbin/bhyve/slirp/libslirp.h diff --git a/usr.sbin/bhyve/slirp/slirp-helper.c b/usr.sbin/bhyve/slirp/slirp-helper.c new file mode 100644 index 000000000000..ee62dd212369 --- /dev/null +++ b/usr.sbin/bhyve/slirp/slirp-helper.c @@ -0,0 +1,570 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2023, 2025 Mark Johnston + * + * This software was developed by the University of Cambridge Computer + * Laboratory (Department of Computer Science and Technology) under Innovate + * UK project 105694, "Digital Security by Design (DSbD) Technology Platform + * Prototype". + */ + +/* + * A helper process which lets bhyve's libslirp-based network backend work + * outside bhyve's Capsicum sandbox. We are started with a SOCK_SEQPACKET + * socket through which we pass and receive packets from the guest's frontend. + * + * At initialization time, we receive an nvlist over the socket which describes + * the desired slirp configuration. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "libslirp.h" + +#define SLIRP_MTU 2048 + +struct slirp_priv { + Slirp *slirp; /* libslirp handle */ + int sock; /* data and control socket */ + int wakeup[2]; /* used to wake up the pollfd thread */ + struct pollfd *pollfds; + size_t npollfds; + size_t lastpollfd; +}; + +typedef int (*slirp_add_hostxfwd_p_t)(Slirp *, + const struct sockaddr *, socklen_t, const struct sockaddr *, socklen_t, + int); +typedef void (*slirp_cleanup_p_t)(Slirp *); +typedef void (*slirp_input_p_t)(Slirp *, const uint8_t *, int); +typedef Slirp *(*slirp_new_p_t)(const SlirpConfig *, const SlirpCb *, void *); +typedef void (*slirp_pollfds_fill_p_t)(Slirp *, uint32_t *timeout, + SlirpAddPollCb, void *); +typedef void (*slirp_pollfds_poll_p_t)(Slirp *, int, SlirpGetREventsCb, void *); + +/* Function pointer table, initialized by libslirp_init(). */ +static slirp_add_hostxfwd_p_t slirp_add_hostxfwd_p; +static slirp_cleanup_p_t slirp_cleanup_p; +static slirp_input_p_t slirp_input_p; +static slirp_new_p_t slirp_new_p; +static slirp_pollfds_fill_p_t slirp_pollfds_fill_p; +static slirp_pollfds_poll_p_t slirp_pollfds_poll_p; + +static int64_t +slirp_cb_clock_get_ns(void *param __unused) +{ + struct timespec ts; + int error; + + error = clock_gettime(CLOCK_MONOTONIC, &ts); + assert(error == 0); + return ((int64_t)(ts.tv_sec * 1000000000L + ts.tv_nsec)); +} + +static void +slirp_cb_notify(void *param) +{ + struct slirp_priv *priv; + + /* Wake up the poll thread. We assume that priv->mtx is held here. */ + priv = param; + (void)write(priv->wakeup[1], "M", 1); +} + +static void +slirp_cb_register_poll_fd(int fd, void *param __unused) +{ + const int one = 1; + + (void)setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &one, sizeof(int)); +} + +static ssize_t +slirp_cb_send_packet(const void *buf, size_t len, void *param) +{ + struct slirp_priv *priv; + ssize_t n; + + priv = param; + + assert(len <= SLIRP_MTU); + n = send(priv->sock, buf, len, MSG_EOR); + if (n < 0) { + warn("slirp_cb_send_packet: send"); + return (n); + } + assert((size_t)n == len); + + return (n); +} + +static void +slirp_cb_unregister_poll_fd(int fd __unused, void *opaque __unused) +{ +} + +/* Callbacks invoked from within libslirp. */ +static const struct SlirpCb slirp_cbs = { + .clock_get_ns = slirp_cb_clock_get_ns, + .notify = slirp_cb_notify, + .register_poll_fd = slirp_cb_register_poll_fd, + .send_packet = slirp_cb_send_packet, + .unregister_poll_fd = slirp_cb_unregister_poll_fd, *** 441 LINES SKIPPED *** From nobody Tue Mar 31 15:58:46 2026 X-Original-To: dev-commits-src-branches@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 4flXpv5Nrfz6WF5W for ; Tue, 31 Mar 2026 15:58:47 +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 4flXpt28BFz3gmQ for ; Tue, 31 Mar 2026 15:58:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972726; 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=vPGw7Sy/aiJwEFsT7k91HNkBptNmlVgMiA0T1qiC2O0=; b=gVWhbX9ggIkqNiJx+2O6NUipozrBiuqxHmifptxTILKo0scHzXWi4TA4FHWFoWPU4ehyZW 5O9K/MK9cdTwbqafF+NBSat4Pp4wx4lEqa/wuu9Dpkxn/z2yW4Kz0Z858L679x8w/d5iNu THA8pakx3bEjFIgcNYYs/ZK0RoIQCZA7PNSA5OvDnT774caspmX9l4hGq7TVNPn7T9UkIi erN62pRy1oL6ct+2syZCotT6RmrA/cKXR/xA9l+xRnObPzHbuMdciVwgVy0KxdBZC9sQX8 UxTROM0eEVzb5XliOsH7Z1wmEgIzXLByVCnnEh5RaDHAi8UAHM1UHtS2DhKbzA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972726; a=rsa-sha256; cv=none; b=CktTOIffwl29P/JL55EwShkiLyY/gjUV0TWNyIO2HI1xuYXzegHQee85AEopZAVBPxsuCP N6BsCLyMHjV8YLGdxEsvN5w/327W3tG93tK35eC3DNP1QwJKUaNJ6qcM+TT+OJPSbCOhAC U3J4JmxVJmNJmh8N/NvGBZaBdr9EPOLvtsv2CT/NRMZt9oMzyb94/DP+xGmFrpTpYE+1Er 2PBOykSi6suZb++xemMVgMfK0RNgB1utWWtO/1lBHGZiF6mwHnTDuSQ0ojaeo3EUH0OeEl izHJkURNr3322ZhCWgRmppgMqb+HeyEdaZDHwCU9z9bz1OQK9JxOw64VqZoR0w== 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=1774972726; 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=vPGw7Sy/aiJwEFsT7k91HNkBptNmlVgMiA0T1qiC2O0=; b=TywnvuIejMwtlVGA8u4t0TrOHeeTfky6jYhpD6Wj10N5wrVsdB1vco8ycytL1+EKgCjLqE nOpIloJMQS4jCZJiFuynfLspwxksmgD1ry0d6MWJiqxQHNFHyajo/nfp2MSqUbhrynUY27 rEnx/HFdCBGW366H+fJFK2psFdNbxqprNJct8rX4LBnNYzbMa0xlhLZf9ro+PyKUbK6rUJ lY3O3IsRhhEzL6NLzascUfhK6XfC1CNCgAlmL8O7bSTNCsypP0tWo342YvRfcKWwat+XNn 27drd13EZdc6u+6tRI7O9EqjvW31RgI/Eacjr2d9SUS67+0y0zXLnB3kgQbp3A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpt0JXpzcfV for ; Tue, 31 Mar 2026 15:58:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39efb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:46 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 29ca1bfe773f - stable/15 - vmm: Fix routines which create maps of the guest physical address space List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 29ca1bfe773fbcac6aa2de0473fb88ee244c3054 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:46 +0000 Message-Id: <69cbef36.39efb.1741e73c@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=29ca1bfe773fbcac6aa2de0473fb88ee244c3054 commit 29ca1bfe773fbcac6aa2de0473fb88ee244c3054 Author: Mark Johnston AuthorDate: 2025-10-28 20:15:13 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 vmm: Fix routines which create maps of the guest physical address space In vm_mmap_memseg(), use vm_map_insert() instead of vm_map_find(). Existing callers expect to map the GPA that they passed, whereas vm_map_find() merely treats the GPA as a hint. Also check for overflow and remove a test for first < 0 since "first" is unsigned. In vmm_mmio_alloc(), return an error number instead of an object pointer, since the sole caller doesn't need the pointer. As in vm_mmap_memseg(), use vm_map_insert() instead of vm_map_find() and validate parameters. This function is not directly reachable via ioctl(), but we ought to be careful anyway. Reviewed by: corvink, kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53246 (cherry picked from commit 20a38e847251076b12c173d7aa0b37eef261fd32) --- sys/amd64/vmm/vmm.c | 7 +---- sys/amd64/vmm/vmm_mem.h | 5 ++-- sys/amd64/vmm/vmm_mem_machdep.c | 61 +++++++++++++++++++++++------------------ sys/dev/vmm/vmm_mem.c | 13 +++++---- 4 files changed, 46 insertions(+), 40 deletions(-) diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index 5cb2776fe917..f3f9717129c9 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -629,12 +629,7 @@ vm_name(struct vm *vm) int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hpa) { - vm_object_t obj; - - if ((obj = vmm_mmio_alloc(vm_vmspace(vm), gpa, len, hpa)) == NULL) - return (ENOMEM); - else - return (0); + return (vmm_mmio_alloc(vm_vmspace(vm), gpa, len, hpa)); } int diff --git a/sys/amd64/vmm/vmm_mem.h b/sys/amd64/vmm/vmm_mem.h index 41b9bf07c4fc..d905fd37001d 100644 --- a/sys/amd64/vmm/vmm_mem.h +++ b/sys/amd64/vmm/vmm_mem.h @@ -30,10 +30,9 @@ #define _VMM_MEM_H_ struct vmspace; -struct vm_object; -struct vm_object *vmm_mmio_alloc(struct vmspace *, vm_paddr_t gpa, size_t len, - vm_paddr_t hpa); +int vmm_mmio_alloc(struct vmspace *, vm_paddr_t gpa, size_t len, + vm_paddr_t hpa); void vmm_mmio_free(struct vmspace *, vm_paddr_t gpa, size_t size); vm_paddr_t vmm_mem_maxaddr(void); diff --git a/sys/amd64/vmm/vmm_mem_machdep.c b/sys/amd64/vmm/vmm_mem_machdep.c index e96c9e4bdc66..afb3a0274e2a 100644 --- a/sys/amd64/vmm/vmm_mem_machdep.c +++ b/sys/amd64/vmm/vmm_mem_machdep.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -45,40 +46,48 @@ #include "vmm_mem.h" -vm_object_t +int vmm_mmio_alloc(struct vmspace *vmspace, vm_paddr_t gpa, size_t len, - vm_paddr_t hpa) + vm_paddr_t hpa) { - int error; - vm_object_t obj; struct sglist *sg; + vm_object_t obj; + int error; + + if (gpa + len < gpa || hpa + len < hpa || (gpa & PAGE_MASK) != 0 || + (hpa & PAGE_MASK) != 0 || (len & PAGE_MASK) != 0) + return (EINVAL); sg = sglist_alloc(1, M_WAITOK); error = sglist_append_phys(sg, hpa, len); KASSERT(error == 0, ("error %d appending physaddr to sglist", error)); obj = vm_pager_allocate(OBJT_SG, sg, len, VM_PROT_RW, 0, NULL); - if (obj != NULL) { - /* - * VT-x ignores the MTRR settings when figuring out the - * memory type for translations obtained through EPT. - * - * Therefore we explicitly force the pages provided by - * this object to be mapped as uncacheable. - */ - VM_OBJECT_WLOCK(obj); - error = vm_object_set_memattr(obj, VM_MEMATTR_UNCACHEABLE); - VM_OBJECT_WUNLOCK(obj); - if (error != KERN_SUCCESS) { - panic("vmm_mmio_alloc: vm_object_set_memattr error %d", - error); - } - error = vm_map_find(&vmspace->vm_map, obj, 0, &gpa, len, 0, - VMFS_NO_SPACE, VM_PROT_RW, VM_PROT_RW, 0); - if (error != KERN_SUCCESS) { - vm_object_deallocate(obj); - obj = NULL; - } + if (obj == NULL) + return (ENOMEM); + + /* + * VT-x ignores the MTRR settings when figuring out the memory type for + * translations obtained through EPT. + * + * Therefore we explicitly force the pages provided by this object to be + * mapped as uncacheable. + */ + VM_OBJECT_WLOCK(obj); + error = vm_object_set_memattr(obj, VM_MEMATTR_UNCACHEABLE); + VM_OBJECT_WUNLOCK(obj); + if (error != KERN_SUCCESS) + panic("vmm_mmio_alloc: vm_object_set_memattr error %d", error); + + vm_map_lock(&vmspace->vm_map); + error = vm_map_insert(&vmspace->vm_map, obj, 0, gpa, gpa + len, + VM_PROT_RW, VM_PROT_RW, 0); + vm_map_unlock(&vmspace->vm_map); + if (error != KERN_SUCCESS) { + error = vm_mmap_to_errno(error); + vm_object_deallocate(obj); + } else { + error = 0; } /* @@ -94,7 +103,7 @@ vmm_mmio_alloc(struct vmspace *vmspace, vm_paddr_t gpa, size_t len, */ sglist_free(sg); - return (obj); + return (error); } void diff --git a/sys/dev/vmm/vmm_mem.c b/sys/dev/vmm/vmm_mem.c index 9df31c9ba133..5ae944713c81 100644 --- a/sys/dev/vmm/vmm_mem.c +++ b/sys/dev/vmm/vmm_mem.c @@ -279,8 +279,10 @@ vm_mmap_memseg(struct vm *vm, vm_paddr_t gpa, int segid, vm_ooffset_t first, if (seg->object == NULL) return (EINVAL); + if (first + len < first || gpa + len < gpa) + return (EINVAL); last = first + len; - if (first < 0 || first >= last || last > seg->len) + if (first >= last || last > seg->len) return (EINVAL); if ((gpa | first | last) & PAGE_MASK) @@ -298,11 +300,12 @@ vm_mmap_memseg(struct vm *vm, vm_paddr_t gpa, int segid, vm_ooffset_t first, return (ENOSPC); vmmap = &mem->mem_vmspace->vm_map; - error = vm_map_find(vmmap, seg->object, first, &gpa, len, 0, - VMFS_NO_SPACE, prot, prot, 0); + vm_map_lock(vmmap); + error = vm_map_insert(vmmap, seg->object, first, gpa, gpa + len, + prot, prot, 0); + vm_map_unlock(vmmap); if (error != KERN_SUCCESS) - return (EFAULT); - + return (vm_mmap_to_errno(error)); vm_object_reference(seg->object); if (flags & VM_MEMMAP_F_WIRED) { From nobody Tue Mar 31 15:58:48 2026 X-Original-To: dev-commits-src-branches@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 4flXpz3nmpz6WF5t for ; Tue, 31 Mar 2026 15:58:51 +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 4flXpw37F0z3gsQ for ; Tue, 31 Mar 2026 15:58:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+aQLkQ07uexuCDh+Yq4oSSG5j7nDiEX7t3lnM70/hfQ=; b=VDrpxsLj4ua8WzIiToUjnYgtBmuzfLfNuMKTazvMUg1nxDZAOABYsfZK1XrNzd1rHVt0up b+NyM841BHRzihAGFxef+3asu3K/gK16JALkhT0XsBKithWmD46q5R1PBODfase4qIiybM DmuyIajGDNvxXgcvHGbCHWDSY5LwFGib6YXUHPDa3wMhDy+14UoWcjQ6pFC1qc2GqurkfL wfU9LQcOD0+zHGbIG5dela7m1aolW6/4B0Q+pMH6ck6NdA/+Y6XXN17mz352BENAULs9qz hPYdQCoEuVNWQGUU6dZILiBgHCZItJCyV50Net+ch/pebNW/E6hSj+Yl70/+Ag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972728; a=rsa-sha256; cv=none; b=VJk1P8g2wbwGa5mKlJI+UOVJzBXRtgz92sczOygb/xOl8p6/kf91SidYqt8EJCzG6TgwaV lgpKovhgNiJklSl5jWjO3cq2nqmscDTi4HStZGOdq+LdSR8vAZgcw4ct6CxuFE22uD0+DQ +KXf7pWgVAq7rxibpglb3YHoGsm38IaeetVtKRIjYoYaVHV68VapFKy9JDNRbM895ZpxsU +Oea5AUV4DGnDtGVneTJPKeZZ7JkutmxAmYBs87+S1ZtimZ5eyo/ulpAzyeXP4S4fGSWUH vLBZGwo90/r09Eu9QNzu6nvpaePpvjspSSC1htOl6R8XF3yedbvpZC5bQXLyTw== 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=1774972728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+aQLkQ07uexuCDh+Yq4oSSG5j7nDiEX7t3lnM70/hfQ=; b=EyoN2ID5TvxxqXDHqXL32opT3T8WNn6dXR+HlHRTNGcF8M5G4i2JqOg9JgkInQkCXSAac0 fGGt47Gm4u1zJwkuh91aSmkfKm0mgnONce+51++8OvolRf67CDoCHMoS51gIZ+gMHhN+nQ sA5qn7u+8S4jg1+SgwHjjnBIoKr5ZRGZGL4fXEe+10kPJpIAww/7rMQWa/oqzxReIRMDRS 9JHkGTh+9sF0Hlh+JKS10yt0Ajcx6kjkMp/9yUTnRseHc3fI748f4w9WQJCE4IKx69FCU6 x5ZKEyUrWzlgiLG+k6MfmM0RK0i8naReUzDmupsKTr9ZKks0mM+53jF69Gow3A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpw1RrzzcLK for ; Tue, 31 Mar 2026 15:58:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 395ef by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:48 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Roman Bogorodskiy From: Mark Johnston Subject: git: a98abd72bb83 - stable/15 - bhyve: support MTU configuration for SLIRP net backend List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a98abd72bb83d9d812f23644d26a6df1cdef84cc Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:48 +0000 Message-Id: <69cbef38.395ef.309d728d@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a98abd72bb83d9d812f23644d26a6df1cdef84cc commit a98abd72bb83d9d812f23644d26a6df1cdef84cc Author: Roman Bogorodskiy AuthorDate: 2025-12-08 17:37:09 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 bhyve: support MTU configuration for SLIRP net backend Support configuring MTU for the SLIRP net backend, for example: -s 1:0,virtio-net,slirp,mtu=2048,open Update the manual page accordingly. While here, also document MAC address configuration. Reviewed by: markj Approved by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D54133 (cherry picked from commit 90b9a77ebeb8019fbd22b3cf992370cd9b0004a2) --- usr.sbin/bhyve/bhyve.8 | 4 +++- usr.sbin/bhyve/net_backend_slirp.c | 35 ++++++++++++++++++++++++++++++----- usr.sbin/bhyve/slirp/slirp-helper.c | 22 ++++++++++++++-------- 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/usr.sbin/bhyve/bhyve.8 b/usr.sbin/bhyve/bhyve.8 index ee1b3b3b38b3..ad3f6305cd08 100644 --- a/usr.sbin/bhyve/bhyve.8 +++ b/usr.sbin/bhyve/bhyve.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 30, 2025 +.Dd January 5, 2026 .Dt BHYVE 8 .Os .Sh NAME @@ -535,6 +535,8 @@ considered unconnected. .Cm slirp .Op Cm \&,open .Op Cm \&,hostfwd= Ar proto : Ar hostaddr : Ar hostport - Ar guestaddr : Ar guestport +.Op Cm \&,mac= Ar xx:xx:xx:xx:xx:xx +.Op Cm \&,mtu= Ar N .Xc .El .Sm on diff --git a/usr.sbin/bhyve/net_backend_slirp.c b/usr.sbin/bhyve/net_backend_slirp.c index c98e54b2ee88..f565ecaee4f3 100644 --- a/usr.sbin/bhyve/net_backend_slirp.c +++ b/usr.sbin/bhyve/net_backend_slirp.c @@ -62,15 +62,18 @@ #include "config.h" #include "debug.h" #include "mevent.h" +#include "net_utils.h" #include "net_backends.h" #include "net_backends_priv.h" -#define SLIRP_MTU 2048 +#define DEFAULT_MTU 2048 struct slirp_priv { int s; pid_t helper; struct mevent *mevp; + size_t mtu; + uint8_t *buf; }; static int @@ -85,6 +88,8 @@ slirp_init(struct net_backend *be, const char *devname __unused, const char **argv; char sockname[32]; int error, s[2]; + const char *mtu_value; + size_t mtu; if (socketpair(PF_LOCAL, SOCK_SEQPACKET | SOCK_NONBLOCK, 0, s) != 0) { EPRINTLN("socketpair"); @@ -123,6 +128,25 @@ slirp_init(struct net_backend *be, const char *devname __unused, EPRINTLN("nvlist_clone"); goto err; } + + mtu_value = get_config_value_node(config, "mtu"); + if (mtu_value != NULL) { + if (net_parsemtu(mtu_value, &mtu)) { + EPRINTLN("Could not parse MTU"); + goto err; + } + } else { + mtu = DEFAULT_MTU; + } + nvlist_add_number(config, "mtui", mtu); + + priv->mtu = mtu; + priv->buf = malloc(mtu); + if (priv->buf == NULL) { + EPRINTLN("Could not allocate buffer"); + goto err; + } + nvlist_add_string(config, "vmname", get_config_value("name")); error = nvlist_send(s[0], config); nvlist_destroy(config); @@ -145,6 +169,7 @@ slirp_init(struct net_backend *be, const char *devname __unused, return (0); err: + free(priv->buf); (void)close(s[0]); (void)close(s[1]); return (-1); @@ -167,6 +192,8 @@ slirp_cleanup(struct net_backend *be) { struct slirp_priv *priv = NET_BE_PRIV(be); + free(priv->buf); + if (priv->helper > 0) { int status; @@ -183,17 +210,15 @@ static ssize_t slirp_peek_recvlen(struct net_backend *be) { struct slirp_priv *priv = NET_BE_PRIV(be); - uint8_t buf[SLIRP_MTU]; ssize_t n; /* * Copying into the buffer is totally unnecessary, but we don't * implement MSG_TRUNC for SEQPACKET sockets. */ - n = recv(priv->s, buf, sizeof(buf), MSG_PEEK | MSG_DONTWAIT); + n = recv(priv->s, priv->buf, priv->mtu, MSG_PEEK | MSG_DONTWAIT); if (n < 0) return (errno == EWOULDBLOCK ? 0 : -1); - assert((size_t)n <= SLIRP_MTU); return (n); } @@ -217,7 +242,7 @@ slirp_recv(struct net_backend *be, const struct iovec *iov, int iovcnt) return (0); return (-1); } - assert(n <= SLIRP_MTU); + assert((size_t)n <= priv->mtu); return (n); } diff --git a/usr.sbin/bhyve/slirp/slirp-helper.c b/usr.sbin/bhyve/slirp/slirp-helper.c index ee62dd212369..5ad941524e19 100644 --- a/usr.sbin/bhyve/slirp/slirp-helper.c +++ b/usr.sbin/bhyve/slirp/slirp-helper.c @@ -38,8 +38,6 @@ #include "config.h" #include "libslirp.h" -#define SLIRP_MTU 2048 - struct slirp_priv { Slirp *slirp; /* libslirp handle */ int sock; /* data and control socket */ @@ -47,6 +45,8 @@ struct slirp_priv { struct pollfd *pollfds; size_t npollfds; size_t lastpollfd; + size_t mtu; + uint8_t *buf; }; typedef int (*slirp_add_hostxfwd_p_t)(Slirp *, @@ -104,7 +104,7 @@ slirp_cb_send_packet(const void *buf, size_t len, void *param) priv = param; - assert(len <= SLIRP_MTU); + assert(len <= priv->mtu); n = send(priv->sock, buf, len, MSG_EOR); if (n < 0) { warn("slirp_cb_send_packet: send"); @@ -289,16 +289,14 @@ slirp_pollfd_loop(struct slirp_priv *priv) ssize_t n; do { - uint8_t buf[SLIRP_MTU]; - - n = recv(priv->sock, buf, sizeof(buf), + n = recv(priv->sock, priv->buf, priv->mtu, MSG_DONTWAIT); if (n < 0) { if (errno == EWOULDBLOCK) break; err(1, "recv"); } - slirp_input_p(priv->slirp, buf, (int)n); + slirp_input_p(priv->slirp, priv->buf, (int)n); } while (n >= 0); } } @@ -464,6 +462,7 @@ main(int argc, char **argv) const char *hostfwd, *vmname; int ch, fd, sd; bool restricted; + size_t mtu; sd = -1; while ((ch = getopt(argc, argv, "S:")) != -1) { @@ -512,6 +511,13 @@ main(int argc, char **argv) config = nvlist_recv(sd, 0); if (config == NULL) err(1, "nvlist_recv"); + + mtu = nvlist_get_number(config, "mtui"); + priv.mtu = mtu; + priv.buf = malloc(mtu); + if (priv.buf == NULL) + err(1, "malloc"); + vmname = get_config_value_node(config, "vmname"); if (vmname != NULL) setproctitle("%s", vmname); @@ -519,7 +525,7 @@ main(int argc, char **argv) slirpconfig = (SlirpConfig){ .version = 4, - .if_mtu = SLIRP_MTU, + .if_mtu = mtu, .restricted = restricted, .in_enabled = true, .vnetwork.s_addr = htonl(0x0a000200), /* 10.0.2.0/24 */ From nobody Tue Mar 31 15:58:49 2026 X-Original-To: dev-commits-src-branches@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 4flXpx5l3fz6WFDV for ; Tue, 31 Mar 2026 15:58:49 +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 4flXpx3Kj0z3gmy for ; Tue, 31 Mar 2026 15:58:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972729; 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=8tqhSk+kSNTF/A2R7DfcUtq/iBGn0KMC4EBEuy6464c=; b=BNGysWMt4HUBTUYUGJZzv3PbuB3dfW+c7vCosyC5Av7lMXqEIDGJRQECdctz/2RY5EJ3dO hOC7Uz1HuuVwnvE95tVddeL3mEBfAaSFxy3+izPmllIGkwJJV0nptmrnTEX6tvekQ4Lwxd Kx2DmiMBDLCC1IywIwYV7bf923JotMUTWZfxShVmDTzx/FnpD1uMM6dFb39EyV6fB34M2C 0wuONiCaQrv5cMQrH/2cvleaFHjXNrMMIhM94ePxwBFC7+Sy5lQGwsAYZ9qge6VI0CKvzo bB2bm2fLwXQZuvsuTiDSlMGpfBi294jZGZwwHnWLsF2g/xJw3PtfdESUaTYWcw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972729; a=rsa-sha256; cv=none; b=LOGW87L3D+Nc1mr71//Xh/MaDYnqL9LiExZh8Y9v25NSwqZ3l3E/aYplYZLub4FK/cedJw ocnD8k0G5Jh0LuQAnUrSvGVoLtT9QwkBXz8ueYp5pzZtPuweLyawSLF1YwKom+YmWA8Tl0 pkk6CLVb8B834CCNMkllARqP/XmyT0yLviYA62g/5Wmao12ksQWhiP/uPpZ9geHnkaPZ75 oI/NQOEosUbt8z/8h3VPUAhP7qjBIWtJR3ExDmAoW1prjpRRBMksuATj7AzvDCp8HOD7uK /O/roNFh1ccvWM3C7STkoPXCl5KOCNcbgKgaluGG671tNsZFvc8gUBqCjbrHVg== 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=1774972729; 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=8tqhSk+kSNTF/A2R7DfcUtq/iBGn0KMC4EBEuy6464c=; b=m0hZQgca7RyhCAzLp+tgIPynV7bHRyyeAjiBdVut4v/bJUmjUUWmW5gf5eMaS2x5/QM/+Y M1tErk4Egbdaepj1oitk4dUHEL7csZsB8K8j5Xsnks0wvy6T2TFhvs9BFc6kO4xZnlOXJP j2woLrRe7V0bFN1fVPCQAQO4J90uaMM5By/7I8pEWOkpg5snIlVaZlN61cqbd5vn3l3pSA NOSpv2SCuY+cQoNTn6DwWlk4ga3is3HcbWvhbRH8HrLmzYb4dExef4qJNvDUGSpvpOrrYV E5IUbbWpTjAesLfeUSINpt1cGd/C947PVgOigNXTE+4C8JX4voX9QGDtUHbwNw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpx1pSpzcfW for ; Tue, 31 Mar 2026 15:58:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 395f4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 0edafb4cfbbd - stable/15 - syslogd: Improve handling of configuration errors List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0edafb4cfbbd43ae9f5c4758a2872df1794e208e Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:49 +0000 Message-Id: <69cbef39.395f4.78a2da24@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=0edafb4cfbbd43ae9f5c4758a2872df1794e208e commit 0edafb4cfbbd43ae9f5c4758a2872df1794e208e Author: Mark Johnston AuthorDate: 2026-02-16 19:50:45 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 syslogd: Improve handling of configuration errors Make parse_selector() print a warning to stderr and continue parsing the config if it encounters an invalid facility or priority. Note that because the parsing is done from a casper service, there isn't a good mechanism to log errors; the warnings are visible only when syslogd is started in debug mode. Reported by: Doug Hardie MFC after: 1 week Fixes: f4b4a10abb26 ("syslogd: Move selector parsing into its own function") Reviewed by: jfree, jlduran, eugen, delphij Differential Revision: https://reviews.freebsd.org/D55033 (cherry picked from commit 29ec3907f193e205a1c2118c182ec43e51baf717) --- usr.sbin/syslogd/syslogd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 972b64ed732e..20051bb4fa00 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -2930,8 +2930,9 @@ parse_selector(const char *p, struct filed *f) pri = decode(buf, prioritynames); if (pri < 0) { - dprintf("unknown priority name \"%s\"", buf); - return (NULL); + warnx("unknown priority name \"%s\", setting to 'info'", + buf); + pri = LOG_INFO; } } if (!pri_cmp) @@ -2953,11 +2954,12 @@ parse_selector(const char *p, struct filed *f) } else { i = decode(buf, facilitynames); if (i < 0) { - dprintf("unknown facility name \"%s\"", buf); - return (NULL); + warnx("unknown facility name \"%s\", ignoring", + buf); + } else { + f->f_pmask[i >> 3] = pri; + f->f_pcmp[i >> 3] = pri_cmp; } - f->f_pmask[i >> 3] = pri; - f->f_pcmp[i >> 3] = pri_cmp; } while (*p == ',' || *p == ' ') p++; From nobody Tue Mar 31 15:58:50 2026 X-Original-To: dev-commits-src-branches@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 4flXq10dK8z6WFBK for ; Tue, 31 Mar 2026 15:58:53 +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 4flXpy4wTtz3gfQ for ; Tue, 31 Mar 2026 15:58:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972730; 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=7jF1xenxsB7n618iDQCGuz1e5mgbx+CB5ADyYEKa6Wk=; b=NGy2taxxZmiX/09SCRIRh8Z+ETIHU/wE+5N8NuGY3zRTjSrx94W/IPIHVSxwO0Q/hNpX8z 24yFpbXzmKf5wDtFT13v//dnVcD8c3Ht7YICoJ33s+7LrxBDGUQwUBNk5e8hoNIVLcHGRf uJs5VLtC0+HU85KAVGOEy9Ep3tWHNuUgyq/bFdbCavHKXksEdsmTekctuw2mYKkOIFzhnO yqRd7Q3JFApfc6s139lEPIU5HwFod7X0rr1Yl9ksJ/u34MLy3IGsRMQFYRTsXmUZpgqltL 3esZTvuUhfh9yeYRfbA+YPhBAuXss8qiW/IV5xiniKlLATQ07WtPrs1ROSaHLQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972730; a=rsa-sha256; cv=none; b=jwSeB/EzvJcvofcCLU4KNdvGVlThj3mNxuMCqF8nwkfqgYbrZS5eLtVIakTkRq31QeHlL3 IQOhdk5FQ7NgB1qja0aZ3jNaT8AW1LG1eRq/U8ks1+esoWtJf+ygnR0YlRVXHiVkucfJc7 L/qyeG8/bpVIInm7r5UzqSFno+hdCsZKanl9Tmwkv08e+DZiGRZY1PWQsjszyB9geW+w45 336jgQths+GskWmvMmlogt2NYueWasxhKn2ieh19doPhdPqrRQI5A3HUWiEZSeDrcEhOwn +N5UC+4NP29ff637QNQSSouEp6NQxak+VcZ5cwPMdIaOLRjbXtDmNILg1asLlw== 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=1774972730; 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=7jF1xenxsB7n618iDQCGuz1e5mgbx+CB5ADyYEKa6Wk=; b=X3yuleMaWZO2o72cqzXD47OaAB5xSvu4Qu+mnrMMCiCAMjbZC/0xkKWi4dGnIfVJTCWH+s xR0T5zemVGJPzzYqoK+ta7XbXY8ogUTSx+M3WOug/I69OEH5cf0XEUcyZrXYA/WLKTk4UE ERXaXryXT2e6f6TLAeCE8Nq7QDjpM14QIk++KDmdhMUEA0C57EGmMTE0VZImZ4RA7dkKp0 vVqotxgMWivFvT4/p0ciw3xhJpxtqIzK2nhNCnUzfI9hWjoMMQhjpll3lzbkfcXwDsmAQ0 YIe3yiWq9JecdzPpVksGhvnB3YjFWAm1hyLCb5Y3VdT1bM2X2TbkwwbZms60bg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpy3TPXzcLM for ; Tue, 31 Mar 2026 15:58:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 394f3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:50 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f5e8a3897529 - stable/15 - krb5: Make the build a bit quieter List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f5e8a389752959ef0f60604be98d9a3994725a78 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:50 +0000 Message-Id: <69cbef3a.394f3.1ee80e4d@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f5e8a389752959ef0f60604be98d9a3994725a78 commit f5e8a389752959ef0f60604be98d9a3994725a78 Author: Mark Johnston AuthorDate: 2026-02-17 14:45:50 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 krb5: Make the build a bit quieter compile_et.sh is run during buildworld and prints a bunch of debug output. It's intrusive and probably not needed, at least by default, so let's make the build output a bit cleaner. This is an upstream script, but it hasn't been modified in 15 years so the local modification is unlikely to cause any pain. Also remove a print that shows up in buildworld -s output. Reviewed by: cy MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55317 (cherry picked from commit 4c247f120492d999ac90efcfc73e5fea29206d1f) --- crypto/krb5/src/util/et/compile_et.sh | 2 +- krb5/lib/gssapi/generic/Makefile.inc | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/crypto/krb5/src/util/et/compile_et.sh b/crypto/krb5/src/util/et/compile_et.sh index f17ddba71247..9da3cf1bd21d 100755 --- a/crypto/krb5/src/util/et/compile_et.sh +++ b/crypto/krb5/src/util/et/compile_et.sh @@ -30,7 +30,7 @@ fi ROOT=`echo $1 | sed -e s/.et$//` BASE=`echo "$ROOT" | sed -e 's;.*/;;'` -set -ex +set -e $AWK -f ${DIR}/et_h.awk "outfile=${BASE}.h" "$ROOT.et" $AWK -f ${DIR}/et_c.awk "outfile=${BASE}.c" "textdomain=$TEXTDOMAIN" \ "localedir=$LOCALEDIR" "$ROOT.et" diff --git a/krb5/lib/gssapi/generic/Makefile.inc b/krb5/lib/gssapi/generic/Makefile.inc index f449ab15c379..47f2961db979 100644 --- a/krb5/lib/gssapi/generic/Makefile.inc +++ b/krb5/lib/gssapi/generic/Makefile.inc @@ -42,7 +42,6 @@ CLEANFILES+= gssapi.h ${GGEN} ${GGENI} INCLUDE_XOM= echo "/* no xom.h */" gssapi.h: gssapi.hin - echo "Creating gssapi.h" ; \ h=gss$$$$; rm -f $$h; \ (echo "/* This is the gssapi.h prologue. */"; \ ${INCLUDE_XOM} && \ From nobody Tue Mar 31 15:58:51 2026 X-Original-To: dev-commits-src-branches@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 4flXq44fgwz6WF89 for ; Tue, 31 Mar 2026 15:58:56 +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 4flXpz43bgz3gkk for ; Tue, 31 Mar 2026 15:58:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972731; 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=CK8xhnhBoZ1dSkb6urI9msll3BUumuh4vCVdSEZUW2E=; b=uFZ0Z9V9n5sSFLWg8wjHujfZRVoQun0r0Ejx1xfjD9awKZcXUHdpyGNOPii+mhAyinvQwb dd2gma204QJkdgrCeHH8Pvxxw2GxEeJH+KPUTxUWfu+BqETBNxJN1QpWPFlA5B4NzV6vTT znQC3vGe6R3xSCGGv7PxE6BM/B6ZEJYozu6ZLgyJnZvv4F7j8rttFnNhUIgGLAzHe5vmbF p7EzjZzYyQHZs/o+Bm6YP1r8zt1prWBpbycOaa4RFu4n1iEwMIUbewIuRoaBNByvCRhPWn vqLl9q/xzCnH6k2rFfUStWIaOqDJLpMT2uT3sPr9UFiSfSoUh98yQqyo/fGRiQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972731; a=rsa-sha256; cv=none; b=GLzn/wakBLBsy4+fAf8B1yuOptQPe4JgVXun42xZKraK0NQkoHoshIXpU/oqDSpS4WuGc6 LqygZtnCngdytdRkV5ANj5R9lBk4/6Yf4kVxbTOT8Jels7evwkD3ThQU0qAOxpiZmhCpT7 /DNuw1lU3TOIPrp8X1CuB/ciWBev/+yNqrYD0F5Ka7LaSnzPDfSkEjvi5ynA6fjdUZa/5i L6g8wqGEBxLX2bFP9PkI9JF2mGr0kvFpp+vyi0yJB6He27BNMjzuq0WmQcmC3M00U5J0oS jSZv3UpOJy8PdgK6isJ5mfnkws82uEgZDRJuBFKHfXglXoiROBxdWUQkLZJOOw== 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=1774972731; 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=CK8xhnhBoZ1dSkb6urI9msll3BUumuh4vCVdSEZUW2E=; b=rgAcWgM3lf1KGtMTVLcR/2VIR+1rwIOjJUIVmX45ErO/+9crl3NDtvbIa3awvSXLnK72/V Cv1MXA016ncvvbWu+4sfdTiBJaEMitP71yK1p6WOrR1leUzu4G3rT9Zzn6Julr2ylGsNlH 7zqFjfyR1nT6fmoHaJ5Ym9V0JV6MLmjCqLLVafBsU4wvzM3Ma3nRz+kRbREHWPyXuhhX3G uIj7Mw2iNKosdeGRAZCxESZQHh7X4UJkK6AJ594D1+DGTSqQkYAIhbXgg4WjorSWy/Kv/x seHpTC1dHykjhIuXnwXIc3CJFOBfhef4TKIoIgvqOBdzdySK73FfIWs8FvRx2g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXpz32wbzcNG for ; Tue, 31 Mar 2026 15:58:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a121 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 1a0776342682 - stable/15 - ndp tests: Fix an assertion in ndp_prefix_lifetime_extend List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1a0776342682a666b033588321dafad0987a5d42 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:51 +0000 Message-Id: <69cbef3b.3a121.3e581af3@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1a0776342682a666b033588321dafad0987a5d42 commit 1a0776342682a666b033588321dafad0987a5d42 Author: Mark Johnston AuthorDate: 2026-02-17 17:08:34 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ndp tests: Fix an assertion in ndp_prefix_lifetime_extend Here we have two interface addresses sharing a v6 prefix with finite lifetime. The intent was to make sure that adding the second address didn't cause the prefix's valid lifetime to drop from 20s to 10s, but of course, while the test is running it may drop from 20s to 19s, causing the test to fail spuriously. Relax the check a bit to avoid this. PR: 293152 Fixes: 74999aac5eff ("in6: Modify address prefix lifetimes when updating address lifetimes") MFC after: 1 week Sponsored by: Klara, Inc. (cherry picked from commit eb425dfab19be8720cf29d560b4e778fc3531106) --- tests/sys/netinet6/ndp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sys/netinet6/ndp.sh b/tests/sys/netinet6/ndp.sh index 433dd81a121b..b4c8179bcd13 100755 --- a/tests/sys/netinet6/ndp.sh +++ b/tests/sys/netinet6/ndp.sh @@ -319,8 +319,8 @@ ndp_prefix_lifetime_extend_body() { atf_fail "Unexpected lifetimes: ${t}" fi ex3=$(prefix_expiry ${prefix}/64) - if [ "${ex3}" -lt "${ex2}" ]; then - atf_fail "Expiry time was shortened: ${ex2} <= ${ex3}" + if [ "${ex3}" -le 10 -o "${ex3}" -gt 20 ]; then + atf_fail "Unexpected expiry time: ${ex3}" fi } From nobody Tue Mar 31 15:59:01 2026 X-Original-To: dev-commits-src-branches@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 4flXqC4dzWz6WFCP for ; Tue, 31 Mar 2026 15:59:03 +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 4flXqB6ybSz3gwX for ; Tue, 31 Mar 2026 15:59:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=na06nIFGXmCDUXhORjiXD4cjt4LC4XZp/tcmcRWf7LY=; b=LzFIrgKTZe8WESyjJPF5Qttv6PqohGmXxYTfmLOED3aXJ1+pWnOt/FMTvkiYfE3XdHSb1H XcF9cNghyKKR4t+TQZ+nhTE6lJb0qh5wvyKid55upJIxVsVnoxpwOY5eb1QpbZC/CcdISa kB6Pt0WwT7hFdqLwrvPvUuccArFIPN73bvp4TMSYVGLOsvDBeBGfglh78HpXZDkyC1kH2I lAkQhinteaOafNt0TRNHPf26oOFBNMKGfcf4GGiUPo36i+G3AlCVqxJXzeGLGfNXUInxOS hKuiFzPeq/P9UuapByzkqcMV3hxIYev6LWgX7hFDJFBXd0AW0765OrygqAmoMQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972743; a=rsa-sha256; cv=none; b=pYmvSCAJ1e5VC9+Hw7KFYHvPVa+lvs+VgcjK69mGse15UCxNWl9IRihD33/TW25RDuwB0Z WbDRgZK1R1lam5mWweC5vhU2l5BWYt5VYeKQ8D4H6Zz2ZLy8Cyd0Csx2SpDIRuywNun8Wr w33yeqN5WQCRDLwOswWosMVTnoYbaXZOWeL6XHguWoD3rzMlXiB7+Z3G4VB/hSK2l9MYiS PvNKYFvBE8OqkmmlhFlA54sYVR/9ljPRZB42Q1zCK1JTe2u3H47MWBJaph+8FLj1jtgqKM 8FrdOn+bBfvqloftTYbSwg5zXqpuZllymLzNDSFTLpbnC1J5Y4tvhcSm6t10aw== 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=1774972743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=na06nIFGXmCDUXhORjiXD4cjt4LC4XZp/tcmcRWf7LY=; b=S28J2eh3maeizRT316roNf3pHEuWKpeQs0y/ZRLpbDyHeOSGr5wPdeLMqVtTwIm9fPPZoN iewF/pb28qjubYj8Mf7ifC7g06uYNhKaYO2xJKhGupkNFmJ1rHZ3mDsiFgX7csdc4pFUzr j0MgiJ5dNv/eRNKrfKVtKrPbCM+yNbly6GYFelObPHIAuuKLNrdEKja7amSI4xZq2VwIBX GygHzu7Z5DjZc/j+/CMWaYXe+/ozLJahQOYHA/9qSIWqOYrWpbUZxTu/Wo6avyCx9WVbC+ 2AbZ/7expk1FOk92f013dtf1zaEoKxfzvQ9LIAkZs2IBohlNcl5cUS39qpPcNg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq91SF7zcc5 for ; Tue, 31 Mar 2026 15:59:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aa71 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Hayzam Sherif From: Mark Johnston Subject: git: 61a6418ad703 - stable/15 - bhyve: Propagate errors from rfb_recv_* functions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 61a6418ad703ebe5945d56911572b67e61743b01 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:01 +0000 Message-Id: <69cbef45.3aa71.2b1c08e9@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=61a6418ad703ebe5945d56911572b67e61743b01 commit 61a6418ad703ebe5945d56911572b67e61743b01 Author: Hayzam Sherif AuthorDate: 2026-02-16 17:46:35 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 bhyve: Propagate errors from rfb_recv_* functions Update rfb_recv_* functions to return -1 on failure and 0 on success. Update rfb_handle to check these return values and drop the connection if an error occurs. Signed-off-by: Hayzam Sherif Reviewed by: markj MFC after: 2 weeks Sponsored by: The FreeBSD Foundation (cherry picked from commit 757b0bf5cf46230bcbeeb298f734b9bb7cde1817) --- usr.sbin/bhyve/rfb.c | 101 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 25 deletions(-) diff --git a/usr.sbin/bhyve/rfb.c b/usr.sbin/bhyve/rfb.c index 716e191e2fc0..6e03d2860b7d 100644 --- a/usr.sbin/bhyve/rfb.c +++ b/usr.sbin/bhyve/rfb.c @@ -334,16 +334,19 @@ rfb_send_extended_keyevent_update_msg(struct rfb_softc *rc, int cfd) stream_write(cfd, &srect_hdr, sizeof(struct rfb_srvr_rect_hdr)); } -static void +static int rfb_recv_set_pixfmt_msg(struct rfb_softc *rc __unused, int cfd) { struct rfb_pixfmt_msg pixfmt_msg; uint8_t red_shift, green_shift, blue_shift; uint16_t red_max, green_max, blue_max; bool adjust_pixels = true; + int len; - (void)stream_read(cfd, (uint8_t *)&pixfmt_msg + 1, + len = stream_read(cfd, (uint8_t *)&pixfmt_msg + 1, sizeof(pixfmt_msg) - 1); + if (len <= 0) + return (-1); /* * The framebuffer is fixed at 32 bit and orders the colors @@ -355,7 +358,7 @@ rfb_recv_set_pixfmt_msg(struct rfb_softc *rc __unused, int cfd) WPRINTF(("rfb: pixfmt unsupported bitdepth bpp: %d " "truecolor: %d", pixfmt_msg.pixfmt.bpp, pixfmt_msg.pixfmt.truecolor)); - return; + return (0); } red_max = ntohs(pixfmt_msg.pixfmt.red_max); @@ -367,7 +370,7 @@ rfb_recv_set_pixfmt_msg(struct rfb_softc *rc __unused, int cfd) WPRINTF(("rfb: pixfmt unsupported max values " "r: %d g: %d b: %d", red_max, green_max, blue_max)); - return; + return (0); } red_shift = pixfmt_msg.pixfmt.red_shift; @@ -381,7 +384,7 @@ rfb_recv_set_pixfmt_msg(struct rfb_softc *rc __unused, int cfd) WPRINTF(("rfb: pixfmt unsupported shift values " "r: %d g: %d b: %d", red_shift, green_shift, blue_shift)); - return; + return (0); } if (red_shift == PIXEL_RED_SHIFT && @@ -399,19 +402,27 @@ rfb_recv_set_pixfmt_msg(struct rfb_softc *rc __unused, int cfd) /* Notify the write thread to update */ rc->update_pixfmt = true; + + return (0); } -static void +static int rfb_recv_set_encodings_msg(struct rfb_softc *rc, int cfd) { struct rfb_enc_msg enc_msg; int i; uint32_t encoding; + int len; - (void)stream_read(cfd, (uint8_t *)&enc_msg + 1, sizeof(enc_msg) - 1); + len = stream_read(cfd, (uint8_t *)&enc_msg + 1, sizeof(enc_msg) - 1); + if (len <= 0) + return (-1); for (i = 0; i < htons(enc_msg.numencs); i++) { - (void)stream_read(cfd, &encoding, sizeof(encoding)); + len = stream_read(cfd, &encoding, sizeof(encoding)); + if (len <= 0) + return (-1); + switch (htonl(encoding)) { case RFB_ENCODING_RAW: rc->enc_raw_ok = true; @@ -430,6 +441,8 @@ rfb_recv_set_encodings_msg(struct rfb_softc *rc, int cfd) break; } } + + return (0); } /* @@ -842,12 +855,16 @@ done: } -static void +static int rfb_recv_update_msg(struct rfb_softc *rc, int cfd) { struct rfb_updt_msg updt_msg; + int len; - (void)stream_read(cfd, (uint8_t *)&updt_msg + 1 , sizeof(updt_msg) - 1); + len = stream_read(cfd, (uint8_t *)&updt_msg + 1, + sizeof(updt_msg) - 1); + if (len <= 0) + return (-1); if (rc->enc_extkeyevent_ok && (!rc->enc_extkeyevent_send)) { rfb_send_extended_keyevent_update_msg(rc, cfd); @@ -857,48 +874,68 @@ rfb_recv_update_msg(struct rfb_softc *rc, int cfd) rc->pending = true; if (!updt_msg.incremental) rc->update_all = true; + + return (0); } -static void +static int rfb_recv_key_msg(struct rfb_softc *rc, int cfd) { struct rfb_key_msg key_msg; + int len; - (void)stream_read(cfd, (uint8_t *)&key_msg + 1, sizeof(key_msg) - 1); + len = stream_read(cfd, (uint8_t *)&key_msg + 1, + sizeof(key_msg) - 1); + if (len <= 0) + return (-1); console_key_event(key_msg.down, htonl(key_msg.sym), htonl(0)); rc->input_detected = true; + + return (0); } -static void +static int rfb_recv_client_msg(struct rfb_softc *rc, int cfd) { struct rfb_client_msg client_msg; struct rfb_extended_key_msg extkey_msg; + int len; - (void)stream_read(cfd, (uint8_t *)&client_msg + 1, + len = stream_read(cfd, (uint8_t *)&client_msg + 1, sizeof(client_msg) - 1); + if (len <= 0) + return (-1); if (client_msg.subtype == RFB_CLIENTMSG_EXT_KEYEVENT) { - (void)stream_read(cfd, (uint8_t *)&extkey_msg + 2, + len = stream_read(cfd, (uint8_t *)&extkey_msg + 2, sizeof(extkey_msg) - 2); + if (len <= 0) + return (-1); console_key_event((int)extkey_msg.down, htonl(extkey_msg.sym), htonl(extkey_msg.code)); rc->input_detected = true; } + + return (0); } -static void +static int rfb_recv_ptr_msg(struct rfb_softc *rc, int cfd) { struct rfb_ptr_msg ptr_msg; + int len; - (void)stream_read(cfd, (uint8_t *)&ptr_msg + 1, sizeof(ptr_msg) - 1); + len = stream_read(cfd, (uint8_t *)&ptr_msg + 1, sizeof(ptr_msg) - 1); + if (len <= 0) + return (-1); console_ptr_event(ptr_msg.button, htons(ptr_msg.x), htons(ptr_msg.y)); rc->input_detected = true; + + return (0); } -static void +static int rfb_recv_cuttext_msg(struct rfb_softc *rc __unused, int cfd) { struct rfb_cuttext_msg ct_msg; @@ -906,12 +943,19 @@ rfb_recv_cuttext_msg(struct rfb_softc *rc __unused, int cfd) int len; len = stream_read(cfd, (uint8_t *)&ct_msg + 1, sizeof(ct_msg) - 1); + if (len <= 0) + return (-1); + ct_msg.length = htonl(ct_msg.length); while (ct_msg.length > 0) { len = stream_read(cfd, buf, ct_msg.length > sizeof(buf) ? sizeof(buf) : ct_msg.length); + if (len <= 0) + return (-1); ct_msg.length -= len; } + + return (0); } static int64_t @@ -1168,25 +1212,32 @@ report_and_done: switch (buf[0]) { case CS_SET_PIXEL_FORMAT: - rfb_recv_set_pixfmt_msg(rc, cfd); + if (rfb_recv_set_pixfmt_msg(rc, cfd) < 0) + goto done; break; case CS_SET_ENCODINGS: - rfb_recv_set_encodings_msg(rc, cfd); + if (rfb_recv_set_encodings_msg(rc, cfd) < 0) + goto done; break; case CS_UPDATE_MSG: - rfb_recv_update_msg(rc, cfd); + if (rfb_recv_update_msg(rc, cfd) < 0) + goto done; break; case CS_KEY_EVENT: - rfb_recv_key_msg(rc, cfd); + if (rfb_recv_key_msg(rc, cfd) < 0) + goto done; break; case CS_POINTER_EVENT: - rfb_recv_ptr_msg(rc, cfd); + if (rfb_recv_ptr_msg(rc, cfd) < 0) + goto done; break; case CS_CUT_TEXT: - rfb_recv_cuttext_msg(rc, cfd); + if (rfb_recv_cuttext_msg(rc, cfd) < 0) + goto done; break; case CS_MSG_CLIENT_QEMU: - rfb_recv_client_msg(rc, cfd); + if (rfb_recv_client_msg(rc, cfd) < 0) + goto done; break; default: WPRINTF(("rfb unknown cli-code %d!", buf[0] & 0xff)); From nobody Tue Mar 31 15:59:00 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2rj3z6WFG2 for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq81vwPz3gl8 for ; Tue, 31 Mar 2026 15:59:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972740; 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=87OKIzqpkGpfdFn8mz4hTttRBhH6U90R3XaqIhyDmNI=; b=CtEd5WOntbzdSk+08+n76PTVcW5TjchhzNmeRwvGhAQ8mxa4pu5/AZxG+FUqwJQi6pT6Ao gUynzgvM/3HK9a7BcexQTHWIsj1WxiwNKAOGblPI7oWD55XKyt2idaWRDzoftG70SFa8DT baGkjM6ltvLp10cUPdSEc2JoKdJemeo3vYDWgH+f6i7CxD0JhkSjtrjsH1r35CtTzfpxQl 9IB2KW8bm/r1QeXK9XJc9Da5bDNYQD/f7dkCDpBFKiwWp44y6pmFRHiBgN7tDLonJ3rrJb C9Yj5EYOWhcCee/LKQhfjoYYgZ10sPDp0OPX5wdrKlxlsrnUDasHE1sQj8DhFw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972740; a=rsa-sha256; cv=none; b=Pq9VlcQkmT+JzpoEsmkWQO/kUr6pkZoSyNBvoDCWwE2XpyDdiM6+SCxLp94Dl8mrcdnxRQ FZdxkT5ckx5Keu2xNMoIixqEwQPMsiJsG7Pxtdgx3c1/XCqyKm+gkJPoEND18cTVzJxMC6 hW9Km6hjrqXXrgLBA1PkVppK9Jc97vCH5T+56kb7+uwV7rwV1FcptYrM+MiAYJ5wbwRnoc +ch1HVK1pQPyLoFoy1FicvjNOmh+o10TaasfkF6COVdrmPYTBQKN8Hqm+A5Vrz2hn1tT82 kuePiw0pMi4E2Wp2A2b5gnLFnyBepZY1sWnI0BbQ1qhE9GGGRo7xLyVIaDlMLQ== 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=1774972740; 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=87OKIzqpkGpfdFn8mz4hTttRBhH6U90R3XaqIhyDmNI=; b=QsT13yFaliFEZcaW8ekwARy4htCBn8F0kAotK82DkFKFx87lzTmE6vOsKhe43xOoqL1R6j p+k2ovmE3p4RGHfXyTtGVmxUj5Wc2zbCzNQUw4g3UHxGiYzrW2zoS80Qy9jndXDlUpN7FI kPbWQxt/qciKK2GaHCQHJlojLQV7KeE7ZlGm1R8vfLHcGS8O2kBhCXTQK4If72ZXI0/LI8 VsbpRp4u2hoOApYJvmJkall6SPpZtvfH92d7mjJlqnU95/qPXA07Q0WwmX+Bj403eFF+IE 8XMV/8XZDKaSHrJdFb+jKO0dISWg0gpp9Wq5qI+WsSIO7Pk14lrV0HeqmA/S8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq80f9PzcLR for ; Tue, 31 Mar 2026 15:59:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39eff by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: c589d6a09f5e - stable/15 - buf: Relax an assertion in BUF_UNLOCK List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c589d6a09f5ec9096784d14a4a0fb136ea3de208 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:00 +0000 Message-Id: <69cbef44.39eff.4b1acaa7@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c589d6a09f5ec9096784d14a4a0fb136ea3de208 commit c589d6a09f5ec9096784d14a4a0fb136ea3de208 Author: Mark Johnston AuthorDate: 2026-02-22 19:26:17 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 buf: Relax an assertion in BUF_UNLOCK The BUF_UNLOCK macro asserts that B_REMFREE is not set, as it is up to the lock owner to complete the dequeue from the free list before releasing the lock. However, if the thread has acquired the lock multiple times, then releasing the recursive lock should be ok. Modify the assertion to reflect this. This was triggered by an out-of-tree filesystem. Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55418 (cherry picked from commit eaeb356ce3491f05b6a99ccd485180a42df22c46) --- sys/sys/buf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/buf.h b/sys/sys/buf.h index f08f05e6d50f..85ff5f3dfdc1 100644 --- a/sys/sys/buf.h +++ b/sys/sys/buf.h @@ -321,7 +321,7 @@ struct buf { * it has been handed off to biodone. */ #define BUF_UNLOCK(bp) do { \ - KASSERT(((bp)->b_flags & B_REMFREE) == 0, \ + KASSERT(((bp)->b_flags & B_REMFREE) == 0 || BUF_LOCKRECURSED(bp), \ ("BUF_UNLOCK %p while B_REMFREE is still set.", (bp))); \ \ BUF_UNLOCK_RAW((bp)); \ From nobody Tue Mar 31 15:58:57 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2kMpz6WFLM for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq71kV3z3gqV for ; Tue, 31 Mar 2026 15:58:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972739; 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=QeY7UpHUtksxYib07vj9oCaQY04A5ZHZgfhMB9Y/pCU=; b=Pf14pPq1290r9IArtyLxOAxX/10b0au5isRaMxdpWAkMGhHCwOnLyAkqGJJOPAx/pX8U0a WIMcBErqZl6iKrr7xm325tbOSa+thSGdwf0foEyqkZmhptam4Avd8o46muqGDVvhmJfySN hGoEh0rnKJY7Y7Zv6/Mf39eL89JzBcP1BbsonI+fiugcpGZwwlU3vekQsY9tn4wdAtkB5U unOcv/krCvq0BjqbhyrUXfn3XAt8aI+QeHCrdog1ODbOwJ4Cab+l8T02AaVXIZHJEYV3wg D6njQgMMglCVUzDqQ2cAlePgM7UYjZ2d4IhEZotGE3EsGC9aANJ1acLQMeJ3rQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972739; a=rsa-sha256; cv=none; b=TJejESagBtUMCg2zsITuye8S2T8+zOBBjMNnYHhDTCTkLEYdon0JpwyZZhFrMj18Nq13nC r1DxYVSzflbX1djXk6L/A8bjXyEpRYC33VsGajCWXKpKwYYDVwc5giongtVwMizLRboaMD avL/Bn+6v4+NGEHXwhUxNnbqCcTokBR42DeDVia1ULPHHq9KYw+ntYFLX3ozBVQWf6vwyS Z8VG9Ju6OmyADe57OKxDPPLBFm0d/3QE+Rjhch9+TBAk8h+3TEo9GIE1J7JfKYVaArmY1C 7WsS8JF+6ClzRNYsQreCSJXtetz3BI9LEZEGyx2Grm16FyDSCDMSJvXt6GllGA== 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=1774972739; 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=QeY7UpHUtksxYib07vj9oCaQY04A5ZHZgfhMB9Y/pCU=; b=SBUKhLh0aJ12P0amey4SIcrkJMl/0yUvDVaBZBaG+BgsoZDvht3mffTUD2W+wkQzNw4eZ0 YVz9B87lZStyqX7e01vQklGzzr/jbc5GduBmINm1kLXa6IU6SAp+s9avkTHnaxYeBuJn9s 3LWPTwv7BgXt2wWkceuAoj/jYd3SYccMYASzpMsvwCD4W1TpUr45PTmCt8CDQC0jSBk3hd o0UocKE+vScbzkg0Tj1+6adJ+1uI0mOWVCr18fVMtyhYdl5xYvrdMoKwBVNXOtlwMHk2d/ VdasZSlxZ1wrw0IMGuE9BRXBw12Upz1VeaGeOefQB4gDxyNKNWBw5Mp6R1xJ+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq56Ynzzc3g for ; Tue, 31 Mar 2026 15:58:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39f40 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:57 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 00412df3265e - stable/15 - dtrace: Implement ustackdepth for arm64 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 00412df3265ecaf52482b46883fe7cf74c8de22f Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:57 +0000 Message-Id: <69cbef41.39f40.7992d75f@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=00412df3265ecaf52482b46883fe7cf74c8de22f commit 00412df3265ecaf52482b46883fe7cf74c8de22f Author: Mark Johnston AuthorDate: 2026-02-17 17:37:42 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 dtrace: Implement ustackdepth for arm64 MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D52475 (cherry picked from commit afd64316c869eb00dde4d6b4af61bca0cb2197f1) --- sys/cddl/dev/dtrace/aarch64/dtrace_isa.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c index ff0e068006bd..037d4734659e 100644 --- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c @@ -228,10 +228,22 @@ zero: int dtrace_getustackdepth(void) { + proc_t *p = curproc; + struct trapframe *tf; + uintptr_t pc, fp; + int n = 0; - printf("IMPLEMENT ME: %s\n", __func__); + if (p == NULL || (tf = curthread->td_frame) == NULL) + return (0); + + if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_FAULT)) + return (-1); + + pc = tf->tf_elr; + fp = tf->tf_x[29]; + n += dtrace_getustack_common(NULL, 0, pc, fp); - return (0); + return (n); } void From nobody Tue Mar 31 15:58:59 2026 X-Original-To: dev-commits-src-branches@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 4flXqB6ZPvz6WFFv for ; Tue, 31 Mar 2026 15:59:02 +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 4flXq74YBZz3h1Y for ; Tue, 31 Mar 2026 15:58:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972739; 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=d6z/K7dXL0RW1nYxahS4ukWt37hWn9w1ekzs7QHl2rc=; b=MqHw8nJE1CHGMYeM46aJVm37fRKuxlRLyG3K1MnF4J4UVDDqbXEcboObVIl8htxUUs1PjH p4yIGvsGEi2b3V0GuyVwczgmqoI0ltOkCocmoXAvxqblLwSYU1bLnH2Trw8sGR0Hq7ejxH tNIs8E6qIe/ppGssnX6x96+U0BokWbzDM1F0zyopY0sIWGUeYO1CYee5PFtMcIwmywv4rp RcFEZF2wr6d1FJEcvpO7FYwYmCsYh+gaiDABfcTJC0NrhVjyojksBz1TE4MZisrJ6s89ZP 81np5vL5T2iF51uuM8PN3P/KmMBm+EApH4ecYB4zWK62TCcqf9MfAUhZFGkdAA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972739; a=rsa-sha256; cv=none; b=wcOpWElwlmcARaA+TxNOkVBb8ekUXkpAKeTXGeX8k5ueJQfVUnSc8ZObKGxHHUVzQsTb4z esJE11fEBi9PBfsUuFcngz8ezcXIoLg4z0S4oogzChDa54sSinhDBET0P/eULvUkdSGTLa t2A0YtR/y4X5ze2VxQDl6JlosbQohnM2ranqjyfSLHKM9fz7LPne8qs4F86Cs538EkYK1n PqdXPW9Avq6OJTvtH1+zs6mOutKnkQt/Il0tzkbgadUlU9tdwX0fjqudUp2543IAtTRdeN VhNsr60goAbdTkfsQi+IKADv1uh6hF1TT84ZpWH7EqqKAx/JLtCCnpo2qIVHng== 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=1774972739; 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=d6z/K7dXL0RW1nYxahS4ukWt37hWn9w1ekzs7QHl2rc=; b=sY6l0m2K+G7cUxOSpYcmJeuGVRJzriTvpiir/05rcKq3X8QDJW/rI/KJJMSqbiwvp6YjcQ Wmh1ejzcnFQQW3CZ9uigeORPHWokFPN/7LL6y14javyH33gQIoWm0Q6oGOD9RV+OkSzd18 3uDS0e0on2XHCFw2kvCyWHawT80nVuXZzYRRJjarC+th2ldGKhfRSBHYbVa8210CEtK5fB z+nSFzL8jAiWYvmXvrbuxy488LhhI+qfgqkWf+6hzhEV7oBnNB02JqNco1iPzb8cmB018p kMOddu5hyLmlsp03lyA3YprMNyHkhagjrUygJf0y0dgHgNpCJepthGyLR4CgVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq703cszc3h for ; Tue, 31 Mar 2026 15:58:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a0c1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: d86a85e9b5ec - stable/15 - nullfs: Fix handling of doomed vnodes in nullfs_unlink_lowervp() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d86a85e9b5ecc59754616edcd915e7d9eae9bab1 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:59 +0000 Message-Id: <69cbef43.3a0c1.41d1bf93@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d86a85e9b5ecc59754616edcd915e7d9eae9bab1 commit d86a85e9b5ecc59754616edcd915e7d9eae9bab1 Author: Mark Johnston AuthorDate: 2026-02-25 15:31:30 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 nullfs: Fix handling of doomed vnodes in nullfs_unlink_lowervp() nullfs_unlink_lowervp() is called with the lower vnode locked, so the nullfs vnode is locked too. The following can occur: 1. the vunref() call decrements the usecount 2->1, 2. a different thread calls vrele() on the vnode, decrements the usecount 0->1, then blocks on the vnode lock, 3. the first thread tests vp->v_usecount == 0 and observes that it is true, 4. the first thread incorrectly unlocks the lower vnode. Fix this by testing VN_IS_DOOMED directly. Since nullfs_unlink_lowervp() holds the vnode lock, the value of the VIRF_DOOMED flag is stable. Thanks to leres@ for patiently helping to track this down. PR: 288345 MFC after: 1 week Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D55446 (cherry picked from commit 8b64d46fab87af3ae062901312187f3a04ad2d67) --- sys/fs/nullfs/null_vfsops.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/sys/fs/nullfs/null_vfsops.c b/sys/fs/nullfs/null_vfsops.c index 170a3dd51cd8..c3eec727aeea 100644 --- a/sys/fs/nullfs/null_vfsops.c +++ b/sys/fs/nullfs/null_vfsops.c @@ -461,16 +461,12 @@ nullfs_unlink_lowervp(struct mount *mp, struct vnode *lowervp) vhold(vp); vunref(vp); - if (vp->v_usecount == 0) { + if (VN_IS_DOOMED(vp)) { /* - * If vunref() dropped the last use reference on the - * nullfs vnode, it must be reclaimed, and its lock - * was split from the lower vnode lock. Need to do - * extra unlock before allowing the final vdrop() to - * free the vnode. + * If the vnode is doomed, its lock was split from the lower + * vnode lock. Therefore we need to do an extra unlock before + * allowing the final vdrop() to free the vnode. */ - KASSERT(VN_IS_DOOMED(vp), - ("not reclaimed nullfs vnode %p", vp)); VOP_UNLOCK(vp); } else { /* @@ -480,8 +476,6 @@ nullfs_unlink_lowervp(struct mount *mp, struct vnode *lowervp) * relevant for future reclamations. */ ASSERT_VOP_ELOCKED(vp, "unlink_lowervp"); - KASSERT(!VN_IS_DOOMED(vp), - ("reclaimed nullfs vnode %p", vp)); xp->null_flags &= ~NULLV_NOUNLOCK; } vdrop(vp); From nobody Tue Mar 31 15:58:54 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2H0Lz6WFHm for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq35N4tz3ghD for ; Tue, 31 Mar 2026 15:58:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972735; 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=6YdupILDXtwIIjpaMkfF4pBK9LKfPakaORbLlq6ItZI=; b=MyAXsHWkGhYXPKifqQvolcE6HSAkwY0Fky80wL3AXFMkwccLz+deiZpRcvEV5Y71fIKAHu eqanviZPwFkJjywEM5oNJp5gH2GZSnPa0A5Yc/dNcX4Tpqb7Jx/Ayasb5IvfYVeqJZ3e8h rBUkwxi2lETiG0+SHhZ2CK4NMcc3jt8tPQ/j9e5AviFZE0UPp2C3WLc+xsw+C2T3jIUSWo FfyOBtGgFnv6Bkx2kurGki8yLnOV1HIO03V/RyIkur2gLM35zaoSSEQWbdmU6wdVNdV1/T R3VujbO5vdtn4i2i/Q3W3oJBTZanY/nwvKrLq+9lcD/a6HdpmBfCnPCLHNBnWg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972735; a=rsa-sha256; cv=none; b=UKjNhOTvNHfmH/WNCzzd8lQlYKxDmY2uUJPlGLMDmtMgNQXvMcEybgEZa779Jh5NzkrIjm pqWt6mICNOoCWt7OGMGv9Qg/oq+wbLYgFUxclf7ETwrAHB7tyC4DRXdt8XOtbznmiuAN8G uaBcCL+nBww6ZxzfHN19fR19Me9BDzVFG1WgPv133CaWu1PLtea9BvAW4VM3H6LCA2+NvE AH7ehhNS4tuFTIvH0hlMaBl5eyoQQGTQ24U//zh0F7tW4kAvXyWHCVEzeWsXiuyMGsF85H 9H13LNFJhaHAFrHBi0gHBiiwmQwsxaJPP6iGpDZszeTJQa5DiE1AFHvrSi7Avw== 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=1774972735; 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=6YdupILDXtwIIjpaMkfF4pBK9LKfPakaORbLlq6ItZI=; b=BCzsfi99llWDutxu6OGD12Qnaqcs5dtvyKama96tUmrwpf9FkNeG/BCYk7522JmsbuI9Y3 yFpL6tCbbVQY2ITYIEGUupX5pETZQXfWanQH9M1wUljtwttSjz9PAlPAQvlTQm/d6oyG63 GIUGDViuP7xBoHW5bjSn6kTMFI9Pipuk890Lz7cB7gAFA1t6VqdZ18ofnoB7EEOEWXWWBf m0GbYxMkyU2D0n12OLzOfhxuw17anMdMpIja2KogU5CQgZGMpMmOFaY63Gs5515BVKlh8M yyNYMQKso+tLIgqestWZZIop3ABFKyE+BPxBP1ZLKcXykHsRsluASA6AS166Rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq24Qt9zcHV for ; Tue, 31 Mar 2026 15:58:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a83d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 58c649f857ed - stable/15 - ip_mroute: Use a local variable to store a VIF pointer List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 58c649f857ed20ae4a53ba13f5a8ca3991947d24 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:54 +0000 Message-Id: <69cbef3e.3a83d.15fcc6c2@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=58c649f857ed20ae4a53ba13f5a8ca3991947d24 commit 58c649f857ed20ae4a53ba13f5a8ca3991947d24 Author: Mark Johnston AuthorDate: 2026-02-09 22:51:55 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ip_mroute: Use a local variable to store a VIF pointer This is cleaner and will make it a bit easier to add some more indirection to the VIF table, specifically, to add per-FIB tables. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55057 (cherry picked from commit 0a757ef9a79d101bb4b7429ab5802579888dce98) --- sys/netinet/ip_mroute.c | 51 ++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index c69f3cc8b41e..efd63f239d9a 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -594,7 +594,10 @@ get_sg_cnt(struct sioc_sg_req *req) static int get_vif_cnt(struct sioc_vif_req *req) { - vifi_t vifi = req->vifi; + struct vif *vif; + vifi_t vifi; + + vifi = req->vifi; MRW_RLOCK(); if (vifi >= V_numvifs) { @@ -602,12 +605,13 @@ get_vif_cnt(struct sioc_vif_req *req) return EINVAL; } - mtx_lock(&V_viftable[vifi].v_mtx); - req->icount = V_viftable[vifi].v_pkt_in; - req->ocount = V_viftable[vifi].v_pkt_out; - req->ibytes = V_viftable[vifi].v_bytes_in; - req->obytes = V_viftable[vifi].v_bytes_out; - mtx_unlock(&V_viftable[vifi].v_mtx); + vif = &V_viftable[vifi]; + mtx_lock(&vif->v_mtx); + req->icount = vif->v_pkt_in; + req->ocount = vif->v_pkt_out; + req->ibytes = vif->v_bytes_in; + req->obytes = vif->v_bytes_out; + mtx_unlock(&vif->v_mtx); MRW_RUNLOCK(); return 0; @@ -1574,6 +1578,7 @@ static int ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) { struct ip *ip = mtod(m, struct ip *); + struct vif *vif; vifi_t vifi; int plen = ntohs(ip->ip_len); @@ -1598,9 +1603,10 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) * Don't forward if it didn't arrive from the parent vif for its origin. */ vifi = rt->mfc_parent; - if ((vifi >= V_numvifs) || (V_viftable[vifi].v_ifp != ifp)) { + vif = &V_viftable[vifi]; + if (vifi >= V_numvifs || vif->v_ifp != ifp) { CTR4(KTR_IPMF, "%s: rx on wrong ifp %p (vifi %d, v_ifp %p)", - __func__, ifp, (int)vifi, V_viftable[vifi].v_ifp); + __func__, ifp, (int)vifi, vif->v_ifp); MRTSTAT_INC(mrts_wrong_if); ++rt->mfc_wrong_if; /* @@ -1612,7 +1618,7 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) * of the iif (broadcast media, GRE tunnel, etc). */ if (V_pim_assert_enabled && (vifi < V_numvifs) && - V_viftable[vifi].v_ifp) { + vif->v_ifp != NULL) { if (ifp == V_multicast_register_if) PIMSTAT_INC(pims_rcv_registers_wrongiif); @@ -1655,15 +1661,15 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) } /* If I sourced this packet, it counts as output, else it was input. */ - mtx_lock(&V_viftable[vifi].v_mtx); - if (in_hosteq(ip->ip_src, V_viftable[vifi].v_lcl_addr)) { - V_viftable[vifi].v_pkt_out++; - V_viftable[vifi].v_bytes_out += plen; + mtx_lock(&vif->v_mtx); + if (in_hosteq(ip->ip_src, vif->v_lcl_addr)) { + vif->v_pkt_out++; + vif->v_bytes_out += plen; } else { - V_viftable[vifi].v_pkt_in++; - V_viftable[vifi].v_bytes_in += plen; + vif->v_pkt_in++; + vif->v_bytes_in += plen; } - mtx_unlock(&V_viftable[vifi].v_mtx); + mtx_unlock(&vif->v_mtx); rt->mfc_pkt_cnt++; rt->mfc_byte_cnt += plen; @@ -1676,12 +1682,13 @@ ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) */ for (vifi = 0; vifi < V_numvifs; vifi++) if ((rt->mfc_ttls[vifi] > 0) && (ip->ip_ttl > rt->mfc_ttls[vifi])) { - V_viftable[vifi].v_pkt_out++; - V_viftable[vifi].v_bytes_out += plen; - if (V_viftable[vifi].v_flags & VIFF_REGISTER) - pim_register_send(ip, V_viftable + vifi, m, rt); + vif = &V_viftable[vifi]; + vif->v_pkt_out++; + vif->v_bytes_out += plen; + if (vif->v_flags & VIFF_REGISTER) + pim_register_send(ip, vif, m, rt); else - phyint_send(ip, V_viftable + vifi, m); + phyint_send(ip, vif, m); } /* From nobody Tue Mar 31 15:58:55 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2pPNz6WF6n for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq44XZNz3h1T for ; Tue, 31 Mar 2026 15:58:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972736; 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=BCZO9MahO+u+6/S5iO+xybcPMVYf001GEJkzSNRgBGw=; b=sAeBFrO2SA0+dW6wRCzTixoEtHnhMo1WTR6VdL6yIevo+fz+dJxVZSalpSNJLm4z+lOpC2 YYiu/wse/iz99KT3AJ3IfmwCl/zGGSTvmT6YoB/pDC5E1onmiT/2qBueghVefv8hzCxjhU T+jGUahWQvW8LuxRlnaZL4kjHPFbEaU6G92wFrWVK8ijkjtO1afvzXpwjuW/NnJXHD4fXb fIH4RIgHZelwvzRKTkarvjq9cvqA5RYj+NAN+KTiRIf/bBx4tGLAWxXelnWFDNIzEvQtib RjiyUpnMbQH4afOA1at0+01evENrUO9oYgSvrFZCZXq0kmxyS3EBuOOJw5fzuw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972736; a=rsa-sha256; cv=none; b=MDWvtrPa06KOg4nsdrF9XG05+ty3h07C2NCmiO5aJiyzS/bX33eJxzU2U5Yo/6yw+8hyV/ WS7dPwU1wdSVlWkXN4wJIA4Ak4hcHfDZIAGBaya4qB+NlW8YIU5g+lFYUoU2yhmT+/4ESW 9D0ym5AfZud8T6TJj7bSgkywhQFyZ4gyBXm3EZstZpO1relGhIVbH6Q/KW7iEotq/0U6sd sYCBour46aL7piuKQo4v/rBATvij9kxQ4ld/lNTyTF5/nOw5spqOvwN68lGXtfluWMHBgt PRMtEspaPK1GhNF1WjgdaSyZp48Auo7znvybz+OAweTZKe0inx78VLKFgMlkfA== 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=1774972736; 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=BCZO9MahO+u+6/S5iO+xybcPMVYf001GEJkzSNRgBGw=; b=TfVVOVl2e8WKrVx4VzV6wczEAwqGQWrZgp6jwa/R6OQ/gmKRuLVBbteats0HfpxrJwYla1 4XLnPKoX3u7VccABCr6pb3+yMfEZ1sa8xXJ06+9FXWdEQ1tvC409zG8vXOubrf7TcrG8eW JdmbhL/Y6a2j4obKeC62Rj72p2CqkJOhCZ5L1Ofbv8FOFL/CJppplZzQD7ZOzemoN9F0Qi gnU/dmXAzH5xqqnbK7Z0QoYZGVOyIKjE8GQA6Ra0WDlxi2sKWx+SmuSsHB8qw3yl6eE0cy z+QBeboT5WWgPzfLarLbrBz5Am5JDkFSKpbmPiKxhvZkg+ifh68ePeYnWMXc0Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq358ZnzcQX for ; Tue, 31 Mar 2026 15:58:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a0bd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: d94862ceb2b0 - stable/15 - ip_mroute: Try to make function pointer declarations more consistent List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d94862ceb2b02c0b2848979572b7434dea396fae Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:55 +0000 Message-Id: <69cbef3f.3a0bd.7e05a564@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d94862ceb2b02c0b2848979572b7434dea396fae commit d94862ceb2b02c0b2848979572b7434dea396fae Author: Mark Johnston AuthorDate: 2026-02-09 22:52:08 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ip_mroute: Try to make function pointer declarations more consistent The ip_mroute and ip6_mroute modules hook into the network stack via several function pointers. Declarations for these pointers are scattered around several headers. Put them all in the same place, ip(6)_mroute.h. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55058 (cherry picked from commit 9df6a7f9a60b76eda2ac82826528487ca43edf46) --- sys/netinet/igmp.c | 1 + sys/netinet/in_mcast.c | 1 + sys/netinet/ip_input.c | 1 + sys/netinet/ip_mroute.h | 21 ++++++++++++++++++--- sys/netinet/ip_output.c | 1 + sys/netinet/ip_var.h | 10 ---------- sys/netinet6/ip6_input.c | 1 + sys/netinet6/ip6_mroute.h | 14 ++++++++++++++ sys/netinet6/ip6_output.c | 1 + sys/netinet6/ip6_var.h | 2 -- sys/netinet6/mld6.c | 1 + 11 files changed, 39 insertions(+), 15 deletions(-) diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index 299f3c2e02bb..da0b4910b9da 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -80,6 +80,7 @@ #include #include #include +#include #include diff --git a/sys/netinet/in_mcast.c b/sys/netinet/in_mcast.c index f5b20c49ffd2..6f8920aa69b8 100644 --- a/sys/netinet/in_mcast.c +++ b/sys/netinet/in_mcast.c @@ -66,6 +66,7 @@ #include #include #include +#include #ifndef KTR_IGMPV3 #define KTR_IGMPV3 KTR_INET diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index 4d614dfeb0a2..3832a21847c0 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -83,6 +83,7 @@ #include #include #include +#include #ifdef SCTP #include #endif diff --git a/sys/netinet/ip_mroute.h b/sys/netinet/ip_mroute.h index ed98e59a7c77..6f09006ec9e2 100644 --- a/sys/netinet/ip_mroute.h +++ b/sys/netinet/ip_mroute.h @@ -356,14 +356,29 @@ struct bw_meter { }; #ifdef _KERNEL +VNET_DECLARE(struct socket *, ip_mrouter); /* multicast routing daemon */ +#define V_ip_mrouter VNET(ip_mrouter) +struct ifnet; +struct ip; +struct ip_moptions; +struct mbuf; +struct socket; struct sockopt; -extern int (*ip_mrouter_set)(struct socket *, struct sockopt *); -extern int (*ip_mrouter_get)(struct socket *, struct sockopt *); +extern u_long (*ip_mcast_src)(int); +extern int (*ip_mforward)(struct ip *, struct ifnet *, struct mbuf *, + struct ip_moptions *); extern int (*ip_mrouter_done)(void); -extern int (*mrt_ioctl)(u_long, caddr_t, int); +extern int (*ip_mrouter_get)(struct socket *, struct sockopt *); +extern int (*ip_mrouter_set)(struct socket *, struct sockopt *); + +extern void (*ip_rsvp_force_done)(struct socket *); +extern int (*ip_rsvp_vif)(struct socket *, struct sockopt *); +extern int (*legal_vif_num)(int); +extern int (*mrt_ioctl)(u_long, caddr_t, int); +extern int (*rsvp_input_p)(struct mbuf **, int *, int); #endif /* _KERNEL */ #endif /* _NETINET_IP_MROUTE_H_ */ diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index bd87e9f2d6a6..6a9c85a83e65 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -79,6 +79,7 @@ #include #include #include +#include #include #include diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h index c113484079a3..934ca80a083d 100644 --- a/sys/netinet/ip_var.h +++ b/sys/netinet/ip_var.h @@ -199,9 +199,6 @@ VNET_DECLARE(int, ipsendredirects); VNET_DECLARE(int, ipstealth); /* stealth forwarding */ #endif VNET_DECLARE(struct socket *, ip_rsvpd); /* reservation protocol daemon*/ -VNET_DECLARE(struct socket *, ip_mrouter); /* multicast routing daemon */ -extern int (*legal_vif_num)(int); -extern u_long (*ip_mcast_src)(int); VNET_DECLARE(int, rsvp_on); VNET_DECLARE(int, drop_redirect); VNET_DECLARE(int, ip_random_id); @@ -214,7 +211,6 @@ VNET_DECLARE(int, ip_random_id); #define V_ipstealth VNET(ipstealth) #endif #define V_ip_rsvpd VNET(ip_rsvpd) -#define V_ip_mrouter VNET(ip_mrouter) #define V_rsvp_on VNET(rsvp_on) #define V_drop_redirect VNET(drop_redirect) #define V_ip_random_id VNET(ip_random_id) @@ -227,9 +223,6 @@ int ip_ctloutput(struct socket *, struct sockopt *sopt); int ip_fragment(struct ip *ip, struct mbuf **m_frag, int mtu, u_long if_hwassist_flags); void ip_forward(struct mbuf *m, int srcrt); -extern int - (*ip_mforward)(struct ip *, struct ifnet *, struct mbuf *, - struct ip_moptions *); int ip_output(struct mbuf *, struct mbuf *, struct route *, int, struct ip_moptions *, struct inpcb *); @@ -244,9 +237,6 @@ int rsvp_input(struct mbuf **, int *, int); int ip_rsvp_init(struct socket *); int ip_rsvp_done(void); -extern int (*ip_rsvp_vif)(struct socket *, struct sockopt *); -extern void (*ip_rsvp_force_done)(struct socket *); -extern int (*rsvp_input_p)(struct mbuf **, int *, int); typedef int ipproto_input_t(struct mbuf **, int *, int); struct icmp; diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c index 99dad1e7c309..bd3042fc54c5 100644 --- a/sys/netinet6/ip6_input.c +++ b/sys/netinet6/ip6_input.c @@ -119,6 +119,7 @@ #include #include #include +#include #ifdef SCTP #include #include diff --git a/sys/netinet6/ip6_mroute.h b/sys/netinet6/ip6_mroute.h index dd23196c799a..2f298df6a1ce 100644 --- a/sys/netinet6/ip6_mroute.h +++ b/sys/netinet6/ip6_mroute.h @@ -270,10 +270,24 @@ struct rtdetq { /* XXX: rtdetq is also defined in ip_mroute.h */ #endif #define MAX_UPQ6 4 /* max. no of pkts in upcall Q */ +#endif /* _KERNEL || KERNEL */ +#ifdef _KERNEL +VNET_DECLARE(struct socket *, ip6_mrouter); /* multicast routing daemon */ +#define V_ip6_mrouter VNET(ip6_mrouter) + +struct ifnet; +struct ip6_hdr; +struct mbuf; +struct socket; +struct sockopt; + +extern int (*ip6_mforward)(struct ip6_hdr *, struct ifnet *, + struct mbuf *); extern int (*ip6_mrouter_set)(struct socket *so, struct sockopt *sopt); extern int (*ip6_mrouter_get)(struct socket *so, struct sockopt *sopt); extern int (*ip6_mrouter_done)(void); + extern int (*mrt6_ioctl)(u_long, caddr_t); #endif /* _KERNEL */ diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index 6e256b1105bf..10e38c317ad2 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -111,6 +111,7 @@ #include #include #include +#include #include #if defined(SCTP) || defined(SCTP_SUPPORT) diff --git a/sys/netinet6/ip6_var.h b/sys/netinet6/ip6_var.h index 7e40f5811e6d..b3790c21d8da 100644 --- a/sys/netinet6/ip6_var.h +++ b/sys/netinet6/ip6_var.h @@ -309,7 +309,6 @@ VNET_DECLARE(int, ip6_v6only); #define V_ip6_mcast_pmtu VNET(ip6_mcast_pmtu) #define V_ip6_v6only VNET(ip6_v6only) -VNET_DECLARE(struct socket *, ip6_mrouter); /* multicast routing daemon */ VNET_DECLARE(int, ip6_sendredirects); /* send IP redirects when forwarding? */ VNET_DECLARE(int, ip6_accept_rtadv); /* Acts as a host not a router */ VNET_DECLARE(int, ip6_no_radr); /* No defroute from RA */ @@ -320,7 +319,6 @@ VNET_DECLARE(int, ip6_rfc6204w3); /* Accept defroute from RA even when VNET_DECLARE(int, ip6_hdrnestlimit); /* upper limit of # of extension * headers */ VNET_DECLARE(int, ip6_dad_count); /* DupAddrDetectionTransmits */ -#define V_ip6_mrouter VNET(ip6_mrouter) #define V_ip6_sendredirects VNET(ip6_sendredirects) #define V_ip6_accept_rtadv VNET(ip6_accept_rtadv) #define V_ip6_no_radr VNET(ip6_no_radr) diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 5dfe48908a4f..d3757627116c 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -91,6 +91,7 @@ #include #include #include +#include #include #include From nobody Tue Mar 31 15:58:53 2026 X-Original-To: dev-commits-src-branches@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 4flXqB6cHqz6WFHc for ; Tue, 31 Mar 2026 15:59:02 +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 4flXq20ZW2z3gsy for ; Tue, 31 Mar 2026 15:58:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972734; 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=DLWm6YBFebXnRdLkX5gmtsJCYJakRn9j+POl76PijE0=; b=FbYOJmJjH/MAmlPrtzwahP5RDDAP3pZ5yQ6u03jbn7Ko+COwgwDJKItnQCdYRXk0yFwan9 NxPcTUW+T779/qZP8mU05geK6t8ENIqAFxJVPqqH27AyVq54JyPm0eF1c2xV1GU0e+Pev2 gsCJY9ShkYmwkXjF4Yr4CldmjQe0I4+sPI1UxFD0APJclAOzPhDYqgY6QC0IzOxxzdgq3W FLgFDuNPPdKKVn44Z/o4+ct/kSRjGU8B+Ym5sR9GhDExBXnfIUNLK0lkJ5C2M5ATECSLpN OjlPVaKzlDGv9LA4+GgFRVl7+1uyuuNP6bllhLW9hUHTI7Aa2iKBCGWyuvh44g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972734; a=rsa-sha256; cv=none; b=cxShgNUVv6D4sCDWbPrmckf21w7oaX6Mcn4j9ndV5xTFkPWT6N2qu3D7EF1/VS6z0hjhqV M02G+iJve7rqqSPatrHprsrxds34ReCvmCnLVXtCm5BlOmtru4Z3a448gK4YSGJ8tRu7LH FcG2wtt5Ud4jv+y9is6rraj6ba+gdXmxljXFU59cX4hprGRjzsU0vD/X2Kcs9zCxpCO044 bh7SDrpTmI8JYX280qQOz7kQ05+QlZjZFwM+CW0DhehR/KzuAUcO14lavyPcHHIJkt5Bxm 5HgluqcXbb+Tpudm1cTRwE0lgDmg8vtw5wcja2221C8mCxhQh0jAxcDNFy0rLg== 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=1774972734; 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=DLWm6YBFebXnRdLkX5gmtsJCYJakRn9j+POl76PijE0=; b=lBNHnOah/2Gx5tsyGT4dnFm7AZlzsb1orGtTXPUZ6XSoq1EQBODxGH0OiINom9vTFrpe9+ bauQCNUoZi2R2DUzwK/AmC0krOoJtI9j5pj0JFtvGQj1qlWysmv7K6bMYTcE2Vwus6m+s7 BfBIx6Qo+2dhMdChA9cymJfMO6J3pEahgt2pCeGWRgreexBKJ04DX3YnQPqukWHUD2lTbP cdGf4hq9ifeH0j8TSZrc+O0NUdEvmmqsyGi+lsdOI71axAxuDAzTMloJ0LE0Rp1RPTqAIJ OqmpZm/kk5CqcCFcPbhuFj4hVz1vF6uHNWoc9PLKuufcSMkW9dAKvO9RzXtUSg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq14fqXzcFb for ; Tue, 31 Mar 2026 15:58:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a95e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 421c44123f46 - stable/15 - ip6_mroute: Deindent some code in ip6_mdq() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:53 +0000 Message-Id: <69cbef3d.3a95e.68b2497a@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 commit 421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 Author: Mark Johnston AuthorDate: 2026-02-09 22:52:20 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ip6_mroute: Deindent some code in ip6_mdq() Deal with the mifi >= nummifs case early so that we can de-indent the rest of the code. This also ensures that the debug log (compiled out by default) doesn't perform an out-of-bounds access. Remove a bogus NULL test in an inner loop while here. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55059 (cherry picked from commit d8f7a7b44a951368d637bbbdc06c28ffd6331d76) --- sys/netinet6/ip6_mroute.c | 134 +++++++++++++++++++++++----------------------- 1 file changed, 68 insertions(+), 66 deletions(-) diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c index 7dd87a07340c..7c2bdfeaeaec 100644 --- a/sys/netinet6/ip6_mroute.c +++ b/sys/netinet6/ip6_mroute.c @@ -1363,96 +1363,98 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct mf6c *rt) * for its origin. */ mifi = rt->mf6c_parent; - if ((mifi >= nummifs) || (mif6table[mifi].m6_ifp != ifp)) { - /* came in the wrong interface */ - MRT6_DLOG(DEBUG_FORWARD, - "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, - mifi, mif6table[mifi].m6_ifp->if_index); + if (mifi >= nummifs || mif6table[mifi].m6_ifp != ifp) { MRT6STAT_INC(mrt6s_wrong_if); rt->mf6c_wrong_if++; + if (mifi >= nummifs) + return (0); + + mifp = &mif6table[mifi]; + MRT6_DLOG(DEBUG_FORWARD, + "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, + mifi, mifp->m6_ifp->if_index); + /* * If we are doing PIM processing, and we are forwarding * packets on this interface, send a message to the * routing daemon. */ /* have to make sure this is a valid mif */ - if (mifi < nummifs && mif6table[mifi].m6_ifp) - if (V_pim6 && (m->m_flags & M_LOOP) == 0) { - /* - * Check the M_LOOP flag to avoid an - * unnecessary PIM assert. - * XXX: M_LOOP is an ad-hoc hack... - */ - static struct sockaddr_in6 sin6 = - { sizeof(sin6), AF_INET6 }; + if (mifp->m6_ifp && V_pim6 && (m->m_flags & M_LOOP) == 0) { + /* + * Check the M_LOOP flag to avoid an + * unnecessary PIM assert. + * XXX: M_LOOP is an ad-hoc hack... + */ + static struct sockaddr_in6 sin6 = + { sizeof(sin6), AF_INET6 }; - struct mbuf *mm; - struct mrt6msg *im; + struct mbuf *mm; + struct mrt6msg *im; #ifdef MRT6_OINIT - struct omrt6msg *oim; + struct omrt6msg *oim; #endif - mm = m_copym(m, 0, sizeof(struct ip6_hdr), - M_NOWAIT); - if (mm && - (!M_WRITABLE(mm) || - mm->m_len < sizeof(struct ip6_hdr))) - mm = m_pullup(mm, sizeof(struct ip6_hdr)); - if (mm == NULL) - return (ENOBUFS); + mm = m_copym(m, 0, sizeof(struct ip6_hdr), + M_NOWAIT); + if (mm && + (!M_WRITABLE(mm) || + mm->m_len < sizeof(struct ip6_hdr))) + mm = m_pullup(mm, sizeof(struct ip6_hdr)); + if (mm == NULL) + return (ENOBUFS); #ifdef MRT6_OINIT - oim = NULL; + oim = NULL; #endif - im = NULL; - switch (V_ip6_mrouter_ver) { + im = NULL; + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim = mtod(mm, struct omrt6msg *); - oim->im6_msgtype = MRT6MSG_WRONGMIF; - oim->im6_mbz = 0; - break; + case MRT6_OINIT: + oim = mtod(mm, struct omrt6msg *); + oim->im6_msgtype = MRT6MSG_WRONGMIF; + oim->im6_mbz = 0; + break; #endif - case MRT6_INIT: - im = mtod(mm, struct mrt6msg *); - im->im6_msgtype = MRT6MSG_WRONGMIF; - im->im6_mbz = 0; - break; - default: - m_freem(mm); - return (EINVAL); - } + case MRT6_INIT: + im = mtod(mm, struct mrt6msg *); + im->im6_msgtype = MRT6MSG_WRONGMIF; + im->im6_mbz = 0; + break; + default: + m_freem(mm); + return (EINVAL); + } - for (mifp = mif6table, iif = 0; - iif < nummifs && mifp && - mifp->m6_ifp != ifp; - mifp++, iif++) - ; + for (mifp = mif6table, iif = 0; + iif < nummifs && mifp->m6_ifp != ifp; + mifp++, iif++) + ; - switch (V_ip6_mrouter_ver) { + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim->im6_mif = iif; - sin6.sin6_addr = oim->im6_src; - break; + case MRT6_OINIT: + oim->im6_mif = iif; + sin6.sin6_addr = oim->im6_src; + break; #endif - case MRT6_INIT: - im->im6_mif = iif; - sin6.sin6_addr = im->im6_src; - break; - } + case MRT6_INIT: + im->im6_mif = iif; + sin6.sin6_addr = im->im6_src; + break; + } - MRT6STAT_INC(mrt6s_upcalls); + MRT6STAT_INC(mrt6s_upcalls); - if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { - MRT6_DLOG(DEBUG_ANY, - "ip6_mrouter socket queue full"); - MRT6STAT_INC(mrt6s_upq_sockfull); - return (ENOBUFS); - } /* if socket Q full */ - } /* if PIM */ + if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { + MRT6_DLOG(DEBUG_ANY, + "ip6_mrouter socket queue full"); + MRT6STAT_INC(mrt6s_upq_sockfull); + return (ENOBUFS); + } + } return (0); - } /* if wrong iif */ + } /* If I sourced this packet, it counts as output, else it was input. */ if (m->m_pkthdr.rcvif == NULL) { From nobody Tue Mar 31 15:58:56 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2kVyz6WFCH for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq61Cf8z3gw5 for ; Tue, 31 Mar 2026 15:58:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972738; 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=yr470j1vWkEAcQZnDsQUdvT2YseKZ1lWlaGgFPOfBJ8=; b=s3YAXdFOED3zsKH00wH5je4dGWlf/z8oQvoSKAHwYJsR7QlOA/DDC6L3q/nkg3QnGM1VMg 0/rli5mbDLtMlg7Ue5VbY8KEn9YPGilkYWqKJIxkyx4WzeZ5gm8GZpse+Q19v9xfa2oBmH qcQxhSRucyQiVSVoYtu8FPXE+qz74X1CuCABEWp3YEUJj6gQSY/dQV9FKxwCW5DFPTb4bJ we6mBN8H/obKd1WamF+Ex21BphT745D0oHotEnSU/B2CBYs/nihRuTLjrJ9IfmnGSeQ4X/ WjNTtbzx2EwUk752nILUSvghKpOmnESOUt0Jmn7ICs5KYXHNIkj5RxaZXuLnMQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972738; a=rsa-sha256; cv=none; b=rxYbIlbvBBhI7668ZW/dCtSUP2mk2TJ0OmVj+x6pjAUkTjagzlYSHkez6P+x/Jee5fb5W2 5WfNEThakYGq5i61+a249s5q+aku0Trt0vRkIpBR2QEQFiszgbKZIUnFioDLjXoK8JraDd sfQ5y6ExULHTyR0oYXnImKBgi5phhrd7pprG++j/yobxChPPoLHHcL2IbUCO1k+bTfC2Lf 7biHUf2Pkx7et078IDumP22mzMYxFcGvYFG9vRr9tv06icVjCg04jwflrA6fnibs6YtA/p ZPriRkr2y18uSfCaf1SuvYPcfrcFz/zt1aUERz50EHuqBkjMLY2f75sGojBUUA== 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=1774972738; 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=yr470j1vWkEAcQZnDsQUdvT2YseKZ1lWlaGgFPOfBJ8=; b=QIT9DPvUMXARdHPl9VuTieM2BE8LeYsLfaPQceLm6meGoqXCday1GYi0XMLR2f4FnOYYxT +YfqroTvMzsID2A/G7BlPrpQZkal9zGpuAusFNrW6jEH3SXDD/E5KCkDIoL55o1xwPc+Xl 8rqrUWrMx+zpjRJQir7/TAoUSywItSmF2HGCI2d3LHTWkS0q5BnLiLUbFD9uiWhXxtRBKI pqUyMY6t+3VwxNkV2DLqCcIZrFQ/+ol186+1q/eDnPlf+hr9p+72iHFdv061xIKhdGp/e+ zUAzPKe7+mJlOFUKt/GDal/cjq1XqRLUXRofENHcPqQrkppiwC+EqH2LQkwm3Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq45s3MzcHX for ; Tue, 31 Mar 2026 15:58:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a6bd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 6bdeab190345 - stable/15 - ip_mroute: Make the routing socket private List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 6bdeab19034539668cdd610c7dcbdec01c58c642 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:56 +0000 Message-Id: <69cbef40.3a6bd.6d1a7fa9@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=6bdeab19034539668cdd610c7dcbdec01c58c642 commit 6bdeab19034539668cdd610c7dcbdec01c58c642 Author: Mark Johnston AuthorDate: 2026-02-13 16:50:18 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ip_mroute: Make the routing socket private I have some patches which make ip_mroute and ip6_mroute multi-FIB-aware. This enables running per-FIB routing daemons, each of which has a separate routing socket. Several places in the network stack check whether multicast routing is configured by checking whether the multicast routing socket is non-NULL. This doesn't directly translate in my proposed scheme, as each FIB would have its own socket. I'd like to modify the ip(6)_mroute code to store all state, including the socket, in a per-FIB structure. So, take a step towards that and 1) hide the socket, 2) add a boolean flag which indicates whether a multicast router is registered. Reviewed by: pouria, zlei, glebius, adrian MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55236 (cherry picked from commit d19fd2f349226116f7effb281baa1eb32b8292e7) --- sys/netinet/igmp.c | 2 +- sys/netinet/ip_input.c | 3 ++- sys/netinet/ip_mroute.c | 29 +++++++++++++++-------------- sys/netinet/ip_mroute.h | 6 +++--- sys/netinet/ip_output.c | 3 ++- sys/netinet/raw_ip.c | 10 +++++----- sys/netinet6/ip6_input.c | 2 +- sys/netinet6/ip6_mroute.c | 35 ++++++++++++++++++++--------------- sys/netinet6/ip6_mroute.h | 6 +++--- sys/netinet6/ip6_output.c | 3 ++- sys/netinet6/mld6.c | 2 +- sys/netinet6/raw_ip6.c | 8 ++++---- 12 files changed, 59 insertions(+), 50 deletions(-) diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c index da0b4910b9da..63a44bbcfb7a 100644 --- a/sys/netinet/igmp.c +++ b/sys/netinet/igmp.c @@ -3490,7 +3490,7 @@ igmp_intr(struct mbuf *m) imo.imo_multicast_ttl = 1; imo.imo_multicast_vif = -1; - imo.imo_multicast_loop = (V_ip_mrouter != NULL); + imo.imo_multicast_loop = V_ip_mrouting_enabled; /* * If the user requested that IGMP traffic be explicitly diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index 3832a21847c0..652aa4a99e79 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -758,7 +758,8 @@ passin: * RFC 3927 2.7: Do not forward multicast packets from * IN_LINKLOCAL. */ - if (V_ip_mrouter && !IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { + if (V_ip_mrouting_enabled && + !IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { /* * If we are acting as a multicast router, all * incoming multicast packets are passed to the diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index efd63f239d9a..b4456d44f11c 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -170,6 +170,9 @@ SYSCTL_VNET_PCPUSTAT(_net_inet_ip, OID_AUTO, mrtstat, struct mrtstat, mrtstat, "IPv4 Multicast Forwarding Statistics (struct mrtstat, " "netinet/ip_mroute.h)"); +VNET_DEFINE_STATIC(struct socket *, ip_mrouter); +#define V_ip_mrouter VNET(ip_mrouter) + VNET_DEFINE_STATIC(u_long, mfchash); #define V_mfchash VNET(mfchash) #define MFCHASH(a, g) \ @@ -306,7 +309,7 @@ VNET_DEFINE_STATIC(struct ifnet *, multicast_register_if); static u_long X_ip_mcast_src(int); static int X_ip_mforward(struct ip *, struct ifnet *, struct mbuf *, struct ip_moptions *); -static int X_ip_mrouter_done(void); +static void X_ip_mrouter_done(struct socket *); static int X_ip_mrouter_get(struct socket *, struct sockopt *); static int X_ip_mrouter_set(struct socket *, struct sockopt *); static int X_legal_vif_num(int); @@ -436,7 +439,7 @@ X_ip_mrouter_set(struct socket *so, struct sockopt *sopt) error = ip_mrouter_init(so, optval); break; case MRT_DONE: - error = ip_mrouter_done(); + ip_mrouter_done(so); break; case MRT_ADD_VIF: error = sooptcopyin(sopt, &vifc, sizeof vifc, sizeof vifc); @@ -625,8 +628,7 @@ if_detached_event(void *arg __unused, struct ifnet *ifp) struct ifnet *free_ptr, *multi_leave; MRW_WLOCK(); - - if (V_ip_mrouter == NULL) { + if (!V_ip_mrouting_enabled) { MRW_WUNLOCK(); return; } @@ -741,6 +743,7 @@ ip_mrouter_init(struct socket *so, int version) curvnet); V_ip_mrouter = so; + V_ip_mrouting_enabled = true; atomic_add_int(&ip_mrouter_cnt, 1); /* This is a mutex required by buf_ring init, but not used internally */ @@ -757,8 +760,8 @@ ip_mrouter_init(struct socket *so, int version) /* * Disable multicast forwarding. */ -static int -X_ip_mrouter_done(void) +static void +X_ip_mrouter_done(struct socket *so) { struct ifnet **ifps; int nifp; @@ -767,22 +770,22 @@ X_ip_mrouter_done(void) struct bw_upcall *bu; MRW_TEARDOWN_WLOCK(); - - if (V_ip_mrouter == NULL) { + if (so != V_ip_mrouter) { MRW_TEARDOWN_WUNLOCK(); - return (EINVAL); + return; } /* * Detach/disable hooks to the reset of the system. */ V_ip_mrouter = NULL; + V_ip_mrouting_enabled = false; atomic_subtract_int(&ip_mrouter_cnt, 1); V_mrt_api_config = 0; /* - * Wait for all epoch sections to complete to ensure - * V_ip_mrouter = NULL is visible to others. + * Wait for all epoch sections to complete to ensure the new value of + * V_ip_mrouting_enabled is visible to others. */ NET_EPOCH_WAIT(); @@ -857,8 +860,6 @@ X_ip_mrouter_done(void) free(ifps, M_TEMP); CTR1(KTR_IPMF, "%s: done", __func__); - - return 0; } /* @@ -2873,7 +2874,7 @@ ip_mroute_modevent(module_t mod, int type, void *unused) MRW_WLOCK(); if (ip_mrouter_cnt != 0) { MRW_WUNLOCK(); - return (EINVAL); + return (EBUSY); } ip_mrouter_unloading = 1; MRW_WUNLOCK(); diff --git a/sys/netinet/ip_mroute.h b/sys/netinet/ip_mroute.h index 6f09006ec9e2..5c2527ea64e5 100644 --- a/sys/netinet/ip_mroute.h +++ b/sys/netinet/ip_mroute.h @@ -356,8 +356,8 @@ struct bw_meter { }; #ifdef _KERNEL -VNET_DECLARE(struct socket *, ip_mrouter); /* multicast routing daemon */ -#define V_ip_mrouter VNET(ip_mrouter) +VNET_DECLARE(bool, ip_mrouting_enabled); +#define V_ip_mrouting_enabled VNET(ip_mrouting_enabled) struct ifnet; struct ip; @@ -369,7 +369,7 @@ struct sockopt; extern u_long (*ip_mcast_src)(int); extern int (*ip_mforward)(struct ip *, struct ifnet *, struct mbuf *, struct ip_moptions *); -extern int (*ip_mrouter_done)(void); +extern void (*ip_mrouter_done)(struct socket *); extern int (*ip_mrouter_get)(struct socket *, struct sockopt *); extern int (*ip_mrouter_set)(struct socket *, struct sockopt *); diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 6a9c85a83e65..a3fefba26c5e 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -611,7 +611,8 @@ again: * above, will be forwarded by the ip_input() routine, * if necessary. */ - if (V_ip_mrouter && (flags & IP_FORWARDING) == 0) { + if (V_ip_mrouting_enabled && + (flags & IP_FORWARDING) == 0) { /* * If rsvp daemon is not running, do not * set ip_moptions. This ensures that the packet diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index bfe608be6b36..e0e7aed04cd0 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -106,16 +106,16 @@ int (*ng_ipfw_input_p)(struct mbuf **, struct ip_fw_args *, bool); */ /* - * The socket used to communicate with the multicast routing daemon. + * A per-VNET flag indicating whether multicast routing is enabled. */ -VNET_DEFINE(struct socket *, ip_mrouter); +VNET_DEFINE(bool, ip_mrouting_enabled); /* * The various mrouter and rsvp functions. */ int (*ip_mrouter_set)(struct socket *, struct sockopt *); int (*ip_mrouter_get)(struct socket *, struct sockopt *); -int (*ip_mrouter_done)(void); +void (*ip_mrouter_done)(struct socket *); int (*ip_mforward)(struct ip *, struct ifnet *, struct mbuf *, struct ip_moptions *); int (*mrt_ioctl)(u_long, caddr_t, int); @@ -860,8 +860,8 @@ rip_detach(struct socket *so) ("rip_detach: not closed")); /* Disable mrouter first */ - if (so == V_ip_mrouter && ip_mrouter_done) - ip_mrouter_done(); + if (ip_mrouter_done != NULL) + ip_mrouter_done(so); INP_WLOCK(inp); INP_HASH_WLOCK(&V_ripcbinfo); diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c index bd3042fc54c5..e826cc45cf8f 100644 --- a/sys/netinet6/ip6_input.c +++ b/sys/netinet6/ip6_input.c @@ -884,7 +884,7 @@ passin: /* * Forward if desirable. */ - if (V_ip6_mrouter && + if (V_ip6_mrouting_enabled && IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) { /* * If we are acting as a multicast router, all diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c index 7c2bdfeaeaec..195a240fef00 100644 --- a/sys/netinet6/ip6_mroute.c +++ b/sys/netinet6/ip6_mroute.c @@ -173,6 +173,9 @@ static struct sx mrouter6_mtx; #define MROUTER6_LOCK_INIT() sx_init(MROUTER6_LOCKPTR(), "mrouter6") #define MROUTER6_LOCK_DESTROY() sx_destroy(MROUTER6_LOCKPTR()) +VNET_DEFINE_STATIC(struct socket *, ip6_mrouter); +#define V_ip6_mrouter VNET(ip6_mrouter) + static struct mf6c *mf6ctable[MF6CTBLSIZ]; SYSCTL_OPAQUE(_net_inet6_ip6, OID_AUTO, mf6ctable, CTLFLAG_RD, &mf6ctable, sizeof(mf6ctable), "S,*mf6ctable[MF6CTBLSIZ]", @@ -336,7 +339,7 @@ static int get_sg_cnt(struct sioc_sg_req6 *); static struct callout expire_upcalls_ch; static int X_ip6_mforward(struct ip6_hdr *, struct ifnet *, struct mbuf *); -static int X_ip6_mrouter_done(void); +static void X_ip6_mrouter_done(struct socket *); static int X_ip6_mrouter_set(struct socket *, struct sockopt *); static int X_ip6_mrouter_get(struct socket *, struct sockopt *); static int X_mrt6_ioctl(u_long, caddr_t); @@ -384,7 +387,7 @@ X_ip6_mrouter_set(struct socket *so, struct sockopt *sopt) error = ip6_mrouter_init(so, optval, sopt->sopt_name); break; case MRT6_DONE: - error = X_ip6_mrouter_done(); + X_ip6_mrouter_done(so); break; case MRT6_ADD_MIF: error = sooptcopyin(sopt, &mifc, sizeof(mifc), sizeof(mifc)); @@ -557,6 +560,8 @@ ip6_mrouter_init(struct socket *so, int v, int cmd) return (EADDRINUSE); } + MFC6_LOCK(); + V_ip6_mrouting_enabled = true; V_ip6_mrouter = so; V_ip6_mrouter_ver = cmd; @@ -569,6 +574,7 @@ ip6_mrouter_init(struct socket *so, int v, int cmd) callout_reset(&expire_upcalls_ch, EXPIRE_TIMEOUT, expire_upcalls, NULL); + MFC6_UNLOCK(); MROUTER6_UNLOCK(); MRT6_DLOG(DEBUG_ANY, "finished"); @@ -579,8 +585,8 @@ ip6_mrouter_init(struct socket *so, int v, int cmd) /* * Disable IPv6 multicast forwarding. */ -static int -X_ip6_mrouter_done(void) +static void +X_ip6_mrouter_done(struct socket *so) { mifi_t mifi; u_long i; @@ -589,9 +595,9 @@ X_ip6_mrouter_done(void) MROUTER6_LOCK(); - if (V_ip6_mrouter == NULL) { + if (V_ip6_mrouter != so) { MROUTER6_UNLOCK(); - return (EINVAL); + return; } /* @@ -604,6 +610,7 @@ X_ip6_mrouter_done(void) if_allmulti(mif6table[mifi].m6_ifp, 0); } } + MFC6_LOCK(); bzero((caddr_t)mif6table, sizeof(mif6table)); nummifs = 0; @@ -612,7 +619,6 @@ X_ip6_mrouter_done(void) /* * Free all multicast forwarding cache entries. */ - MFC6_LOCK(); for (i = 0; i < MF6CTBLSIZ; i++) { rt = mf6ctable[i]; while (rt) { @@ -631,6 +637,10 @@ X_ip6_mrouter_done(void) } } bzero((caddr_t)mf6ctable, sizeof(mf6ctable)); + + V_ip6_mrouter = NULL; + V_ip6_mrouting_enabled = false; + V_ip6_mrouter_ver = 0; MFC6_UNLOCK(); callout_drain(&expire_upcalls_ch); @@ -645,13 +655,8 @@ X_ip6_mrouter_done(void) multicast_register_if6 = NULL; } - V_ip6_mrouter = NULL; - V_ip6_mrouter_ver = 0; - MROUTER6_UNLOCK(); MRT6_DLOG(DEBUG_ANY, "finished"); - - return (0); } static struct sockaddr_in6 sin6 = { sizeof(sin6), AF_INET6 }; @@ -1904,14 +1909,14 @@ ip6_mroute_modevent(module_t mod, int type, void *unused) break; case MOD_UNLOAD: - if (V_ip6_mrouter != NULL) - return EINVAL; + if (V_ip6_mrouting_enabled) + return (EBUSY); if (pim6_encap_cookie) { ip6_encap_detach(pim6_encap_cookie); pim6_encap_cookie = NULL; } - X_ip6_mrouter_done(); + ip6_mforward = NULL; ip6_mrouter_done = NULL; ip6_mrouter_get = NULL; diff --git a/sys/netinet6/ip6_mroute.h b/sys/netinet6/ip6_mroute.h index 2f298df6a1ce..fda8c4308e86 100644 --- a/sys/netinet6/ip6_mroute.h +++ b/sys/netinet6/ip6_mroute.h @@ -273,8 +273,8 @@ struct rtdetq { /* XXX: rtdetq is also defined in ip_mroute.h */ #endif /* _KERNEL || KERNEL */ #ifdef _KERNEL -VNET_DECLARE(struct socket *, ip6_mrouter); /* multicast routing daemon */ -#define V_ip6_mrouter VNET(ip6_mrouter) +VNET_DECLARE(bool, ip6_mrouting_enabled); +#define V_ip6_mrouting_enabled VNET(ip6_mrouting_enabled) struct ifnet; struct ip6_hdr; @@ -286,7 +286,7 @@ extern int (*ip6_mforward)(struct ip6_hdr *, struct ifnet *, struct mbuf *); extern int (*ip6_mrouter_set)(struct socket *so, struct sockopt *sopt); extern int (*ip6_mrouter_get)(struct socket *so, struct sockopt *sopt); -extern int (*ip6_mrouter_done)(void); +extern void (*ip6_mrouter_done)(struct socket *so); extern int (*mrt6_ioctl)(u_long, caddr_t); #endif /* _KERNEL */ diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index 10e38c317ad2..5e395cc63525 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -904,7 +904,8 @@ nonh6lookup: * above, will be forwarded by the ip6_input() routine, * if necessary. */ - if (V_ip6_mrouter && (flags & IPV6_FORWARDING) == 0) { + if (V_ip6_mrouting_enabled && + (flags & IPV6_FORWARDING) == 0) { /* * XXX: ip6_mforward expects that rcvif is NULL * when it is called from the originating path. diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index d3757627116c..e78376b925e4 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -3092,7 +3092,7 @@ mld_dispatch_packet(struct mbuf *m) } im6o.im6o_multicast_hlim = 1; - im6o.im6o_multicast_loop = (V_ip6_mrouter != NULL); + im6o.im6o_multicast_loop = V_ip6_mrouting_enabled; im6o.im6o_multicast_ifp = ifp; if (m->m_flags & M_MLDV1) { diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 7deb605c07a2..f3153b5435e2 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -137,14 +137,14 @@ VNET_PCPUSTAT_SYSUNINIT(rip6stat); /* * The socket used to communicate with the multicast routing daemon. */ -VNET_DEFINE(struct socket *, ip6_mrouter); +VNET_DEFINE(bool, ip6_mrouting_enabled); /* * The various mrouter functions. */ int (*ip6_mrouter_set)(struct socket *, struct sockopt *); int (*ip6_mrouter_get)(struct socket *, struct sockopt *); -int (*ip6_mrouter_done)(void); +void (*ip6_mrouter_done)(struct socket *); int (*ip6_mforward)(struct ip6_hdr *, struct ifnet *, struct mbuf *); int (*mrt6_ioctl)(u_long, caddr_t); @@ -694,8 +694,8 @@ rip6_detach(struct socket *so) inp = sotoinpcb(so); KASSERT(inp != NULL, ("rip6_detach: inp == NULL")); - if (so == V_ip6_mrouter && ip6_mrouter_done) - ip6_mrouter_done(); + if (ip6_mrouter_done != NULL) + ip6_mrouter_done(so); /* xxx: RSVP */ INP_WLOCK(inp); free(inp->in6p_icmp6filt, M_PCB); From nobody Tue Mar 31 15:59:02 2026 X-Original-To: dev-commits-src-branches@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 4flXqC2Qr8z6WF6h for ; Tue, 31 Mar 2026 15:59:03 +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 4flXqB4z2Nz3gtN for ; Tue, 31 Mar 2026 15:59:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972742; 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=TPdU3UHH0yZGEHqS8wo5ySbHtaL3Uo2uAhQ8k2PzfDM=; b=kaX3AiVZlAKcQ4FxWPMAiKNW4+5aEl+6VjnTBuWUTBv7ppYKGfcpuGQ7pCoPaOxDIquNSX DssyMR63JoLHGUpxs2By3rB9wrXk83gQ0JgSw4kVHajesRq91jBrK2g972bJ3rg45bPWLG 1R/lKdHzvApgLEmejUprZRi9Ks2NXSeU//rVqkJz0Wx4BkPOofWXmICsFQ25h/Sep6NIAk YA7tOCpBaMViePAwQqHNEmOxi/pJVTte1Kj0coBmzUgw0xVM1Pc3BU1Js2HjCLBZKpRWO+ zOY1dIQAXU1a4TzMy7OVLZ8Ndy5w/TLtsEYagcrtAI6JnC00zDSwdoZhuoiI3A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972742; a=rsa-sha256; cv=none; b=n/7bFEDjwHq37Vj7VU4An3f8yd92qGmmXzWid8NUqnqcVyZQnykjpnkZ5jVWVa3BgYtrLa GnFoSay+m+q0WyV/zMs79XooE/uYE4K7Cz2qpeZTk1QvgZDp1a6ZfuITuSptSZsQ2xO2HL 8qOCJfe4yXE/Q+4yHAgXm8CL8FiBK6qNrGrgoXMhY02tiACPoLj4i6a8ztCQFTzX5k3YBW lVgL7IhDVn3GYBcr20fsguUC3HYQFzdeZ37hEzX/Fw/uK1kelNV5zr/JE/D7TH/eB1UUrI vaQLjaIaVCubhxmXzxV019kcDecpr9PAoK4n/58fX5AM+GehYKxo1ZxEJNkpPA== 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=1774972742; 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=TPdU3UHH0yZGEHqS8wo5ySbHtaL3Uo2uAhQ8k2PzfDM=; b=en5Hsk3B+crPs83Db4x4TONtFJN4WL2miSqLXSbU3nxn9ZpoqUOvt4uAIDBR/SRuSoCiQ1 HnjxmBmKP4iLFSdC5chCzDhnaM6ZGDv6DHjRcPufGAfTZ9X2sVGNwDvbQWlZE/u/PcpGea Ql0pF4OKiASNK1/T3i2xfZrH8bOFW5B8+jRQ1HrYU+nENTXjiZoflcWyZh6LixcYPtk6VO eOY2lUPUNL8w2Kt9nlq6z7rYIbhMx568b1yNKdSHTZkldhN9R6auNHV2fsv2tLJjU5hfm3 rUHwWzE08jVnQXl7JR2hls+Jo5jGhL5L6knex90yCzZISJ6QpUNNcfpxESaVMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqB2DWdzcNK for ; Tue, 31 Mar 2026 15:59:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a962 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:02 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 1befa93683a3 - stable/15 - bhyve: Fix a misleading error message List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1befa93683a362f75722db1fd5d2adc589fb70ca Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:02 +0000 Message-Id: <69cbef46.3a962.24e01fee@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1befa93683a362f75722db1fd5d2adc589fb70ca commit 1befa93683a362f75722db1fd5d2adc589fb70ca Author: Mark Johnston AuthorDate: 2026-02-16 14:56:39 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 bhyve: Fix a misleading error message The ioctl might fail because it's run in a jail which doesn't have permission to invoke ppt ioctls. Reviewed by: jhb MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55070 (cherry picked from commit 7ab5e3f29a50bc9294a139cc0e8e661a7c036ba3) --- usr.sbin/bhyve/pci_passthru.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 662390413dbc..e38dc327fdff 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -987,8 +987,13 @@ passthru_init(struct pci_devinst *pi, nvlist_t *nvl) } if (vm_assign_pptdev(pi->pi_vmctx, bus, slot, func) != 0) { - warnx("PCI device at %d/%d/%d is not using the ppt(4) driver", - bus, slot, func); + if (errno == ENOENT) { + EPRINTLN( + "PCI device at %d/%d/%d is not using the ppt driver", + bus, slot, func); + } else { + EPRINTLN("vm_assign_pptdev: %s", strerror(errno)); + } goto done; } From nobody Tue Mar 31 15:58:52 2026 X-Original-To: dev-commits-src-branches@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 4flXqC1RZ6z6WFHh for ; Tue, 31 Mar 2026 15:59:03 +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 4flXq070x6z3gkp for ; Tue, 31 Mar 2026 15:58:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972733; 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=ZAKnP+oi3hCjUUWfwp6BDdw1fSiSGwckqzaU8dNqMAY=; b=NhU4DPRqqPTyinFuaZmh6PpLfpbAAPzZvlz9ycbN5MNodPZnFWSLU2CeyEL7VJGKqgQeHG Bx4YrB6ZS5SES8Armk4gcFEcWpxqRQRsfqB0f+1LKJZoRwY8M7YSIGWafrc2Q4TdOKng5I oyQT/oa4XarR8WF0gdUDQBNvJDI3bfdjaHref6VT8zVdcYHdUX1LDBHcVOE1JapU0hh9S2 Ig1uA3/4lFiAVR2xb3gPWCmdOThIV94/UqqCpD7dyDwgWKg//yYtGxJ3bUvgcNcfe67ICT xiDPEo+bH811zSfjQ4MCvfdhzSr3JdZdIvGG6nPG/uK/g9NRcZNr61JjO6DFwg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972733; a=rsa-sha256; cv=none; b=CgxEITLUkOmPwUpFaEXrPHGpNS0rVcCxr5J/xVCWVEjkAOyC1dx4ik5EEdgucG70ev1h/q EyLKdcYhRdu2L6NCTE+qg6BfemsQ7pYLkBRMkB7kcXg4xSC1bqDCMYRSvdMCDEyE3jlQmk rVuWWx0EnBlO09Nb90Fflw5f1uLCkDy/29oZ4bZci7I54gEXT/M31kXJJBEd6YCO1HxeZJ 1SP/nw2Szf7C83Mif73qnnbXE1e5Q+TROURB/LeeporDxhEDeWmSJCsGEZaPapKGnaBj2j Nr3VGKfYL8HhWH8hmtVPv7MvJEAU4TE5aq0q5eJqCBPnW0Kvq4iHeEo30srI1g== 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=1774972733; 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=ZAKnP+oi3hCjUUWfwp6BDdw1fSiSGwckqzaU8dNqMAY=; b=MKtiquqw95+8276/hd1yAyYpJbrHudiPX45xL2hJH9/89gVN9oa0jLKW7LZzG4WI78dNmG hQqLqVyRu1IiUQ2LkJCtHy7em5JscruEUv4eeMzi8kiKA+QEaUjvBtnreIDObdm59ShQJn jShJCiwMOtBIzq2lxwjqZ2wthfLKtdGObHaSWwXjjpF2bOMsCvc0/OGZ3pz+ABI8RQdq0h +dNgfBjHaFwWEvGyCfBlGj/Dtj6YA1fIGJWM04L2K1RJnpMo7tv+7zMpmVJpMVvFnmIDb7 n18zxt0TWfOldV8fjGYvuXvHu8eebxGcDF9DcVh/JT17d4rVWPN7P8H92oG5nw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq03VdYzcLN for ; Tue, 31 Mar 2026 15:58:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a0b9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: ba0c7fecb600 - stable/15 - ndp tests: Fix flakiness in ndp_slaac_default_route List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ba0c7fecb60024bbf3189fc05f8e0f50e4b5634f Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:52 +0000 Message-Id: <69cbef3c.3a0b9.4a26d178@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ba0c7fecb60024bbf3189fc05f8e0f50e4b5634f commit ba0c7fecb60024bbf3189fc05f8e0f50e4b5634f Author: Mark Johnston AuthorDate: 2026-02-17 19:03:35 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ndp tests: Fix flakiness in ndp_slaac_default_route The test sends RAs in order to test SLAAC handling in another host. The router needs to also set net.inet6.ip6.forwarding=1, otherwise NAs sent from it have the ROUTER flag clear, and upon receiving such an NA the host will automatically delete routes learned from the router. Fixes: feda329622bc ("netinet6 tests: Add a regression test for default router handling") MFC after: 1 week Sponsored by: Klara, Inc. (cherry picked from commit 1eb727727a9acb5f1e66e3f70b0146e7c9c5f710) --- tests/sys/netinet6/ndp.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/sys/netinet6/ndp.sh b/tests/sys/netinet6/ndp.sh index b4c8179bcd13..e16e28cbf54b 100755 --- a/tests/sys/netinet6/ndp.sh +++ b/tests/sys/netinet6/ndp.sh @@ -152,7 +152,10 @@ ndp_slaac_default_route_body() { ndp_if_up ${epair0}b atf_check jexec ${jname} ifconfig ${epair0}a inet6 accept_rtadv - # Send an RA advertising a prefix. + # Make sure that NAs from us are flagged as coming from a router. + atf_check -o ignore sysctl net.inet6.ip6.forwarding=1 + + # Send an RA advertising a prefix. atf_check -e ignore python3 $(atf_get_srcdir)/ra.py \ --sendif ${epair0}b \ --dst $(ndp_if_lladdr ${epair0}a ${jname}) \ @@ -167,7 +170,7 @@ ndp_slaac_default_route_body() { jexec ${jname} netstat -rn -6 # Get rid of the default route. - jexec ${jname} route -6 flush + atf_check -o ignore jexec ${jname} route -6 flush atf_check -o not-match:"^default[[:space:]]+fe80:" \ jexec ${jname} netstat -rn -6 From nobody Tue Mar 31 15:59:03 2026 X-Original-To: dev-commits-src-branches@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 4flXqD1BZsz6WFNg for ; Tue, 31 Mar 2026 15:59:04 +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 4flXqC4lHDz3gql for ; Tue, 31 Mar 2026 15:59:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972743; 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=DjMX6+5uHeEfmZBWIKMxg+L7WuOlURiXrBVgZolMdgU=; b=B1jAJUN7d+bMjTd4CJATfunAjO5zZM69WFfK4JQ+5/F0+z+mWSAeFdZsC/r1jGV8g8CPVd 25lVeKaD141HvGQvjkKPtIukCKxdWgLK0HeqV1LeLwjoRU/b5VWpfb3FhueN03hlhurZDR 3Mur4UoYIeKbYqZwSUO0C1E8AAjCvyqpJ1Iltluwstr96pebMuNS23GNOEfRu12XOz95eF xb7aFc0XILS1Y3v/mgradUa5Ci5HgZJPcrZEkAl5TX3zTH9ghbfzqPCchwjlEhNoZ2NQAt h8bl0Jz4kIED7DMSb/ki/huujeFUiwYUg65oH+LA4NMfI2Q22MHuKBNpv/9eiA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972743; a=rsa-sha256; cv=none; b=poWjGKPRn2bewXR1zJjGERPd8wcxDqvrpbC8q1Rdwn3OmwSQRXrGw83Ix0a8Qyl39KlbIs 8rozcksuMDiASy2KIt2g6MkGNuMXOr1+cMaXrNn1nofFdnuLlaQ64rz2jzmw+2Q6TMa29s uwg2nF6MZWr2st+bBDtP1XWR1H8q1CXJP+ARcldgbVz1bffos84PlzAhbAnxNsAsZQ01Zb eBTorBe+p4cBiEHKX4J/8iUMpEstIY5bIktIlVDIJDOcqJxqbjHrcJRU6vcnjyenaoENKd YCSLz9Pd2CbfcFD7w0g9IHmq3c08RKsVK9erN1u1mSeTnS19kCuP05juTuKLxQ== 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=1774972743; 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=DjMX6+5uHeEfmZBWIKMxg+L7WuOlURiXrBVgZolMdgU=; b=Fnul6WLq6/VjF86BZzQDaLsAWe0uoXpT4ydvZHzB9CtVRqC7gzSaBHbE5WsgDYWFt6StSR mXTZFYLKlOPamDwBg57Z2q1xBj6yphF5VENRaYPB4cwf9VpZEEDZ3lY9SXfC+NQMkfRGct Fm5EJxw6AUkVHPwttsh2jtEP5YF0HlH2doN95/chsv8a63aLNO+cOd7ArqVdJl56sCAUnK I/utFgxItUQQmFffOBoFs48D0amsvAcAUsqbFfa29SfhlFFinfVhoo/3e0Pfw4P6rVO8vK LUlxDvileYTEPYK3nn7hz0UoCroZof41AwFctzT5RFTNIjgPd6pfDR6zO2efdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqC35GLzcQc for ; Tue, 31 Mar 2026 15:59:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ab5f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 94066f9a07ad - stable/15 - vmm: Allow the use of PCI passthrough in a jail List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 94066f9a07adda0efbcec6df05bbb25bc977ca8d Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:03 +0000 Message-Id: <69cbef47.3ab5f.78b5a2bb@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=94066f9a07adda0efbcec6df05bbb25bc977ca8d commit 94066f9a07adda0efbcec6df05bbb25bc977ca8d Author: Mark Johnston AuthorDate: 2026-02-16 14:56:25 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 vmm: Allow the use of PCI passthrough in a jail After commit e11768e94787 ("vmm: Add PRIV_DRIVER checks for passthru ioctls"), it is not possible to use PCI passthru from jails, as PRIV_DRIVER is not granted to jails. Apparently some users expect this to work, understanding that jailing bhyve provides little security benefit in this configuration. I believe we should disable ppt access in jails even when allow.vmm is configured. To provide an escape hatch for users, add a new allow.vmm_ppt jail configuration knob, and check it when handling ppt ioctls in jails. Also add a new PRIV_VMM_PPTDEV to replace the use of PRIV_DRIVER. PR: 292750 Reviewed by: corvink MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55066 (cherry picked from commit c71354030a26900e564f0c80a8abdff7e77b3c9e) --- sys/amd64/vmm/vmm_dev_machdep.c | 14 +++++++------- sys/dev/vmm/vmm_dev.c | 20 +++++++++++++------- sys/dev/vmm/vmm_dev.h | 2 +- sys/kern/kern_jail.c | 7 +++++++ sys/sys/priv.h | 7 ++++++- usr.sbin/jail/jail.8 | 11 +++++++++++ 6 files changed, 45 insertions(+), 16 deletions(-) diff --git a/sys/amd64/vmm/vmm_dev_machdep.c b/sys/amd64/vmm/vmm_dev_machdep.c index b84be809ea24..55fccf8f25b2 100644 --- a/sys/amd64/vmm/vmm_dev_machdep.c +++ b/sys/amd64/vmm/vmm_dev_machdep.c @@ -125,15 +125,15 @@ const struct vmmdev_ioctl vmmdev_machdep_ioctls[] = { VMMDEV_IOCTL(VM_BIND_PPTDEV, VMMDEV_IOCTL_XLOCK_MEMSEGS | VMMDEV_IOCTL_LOCK_ALL_VCPUS | - VMMDEV_IOCTL_PRIV_CHECK_DRIVER), + VMMDEV_IOCTL_PPT), VMMDEV_IOCTL(VM_UNBIND_PPTDEV, VMMDEV_IOCTL_XLOCK_MEMSEGS | VMMDEV_IOCTL_LOCK_ALL_VCPUS | - VMMDEV_IOCTL_PRIV_CHECK_DRIVER), + VMMDEV_IOCTL_PPT), VMMDEV_IOCTL(VM_MAP_PPTDEV_MMIO, VMMDEV_IOCTL_LOCK_ALL_VCPUS | - VMMDEV_IOCTL_PRIV_CHECK_DRIVER), + VMMDEV_IOCTL_PPT), VMMDEV_IOCTL(VM_UNMAP_PPTDEV_MMIO, VMMDEV_IOCTL_LOCK_ALL_VCPUS | - VMMDEV_IOCTL_PRIV_CHECK_DRIVER), + VMMDEV_IOCTL_PPT), #ifdef BHYVE_SNAPSHOT #ifdef COMPAT_FREEBSD13 VMMDEV_IOCTL(VM_SNAPSHOT_REQ_13, VMMDEV_IOCTL_LOCK_ALL_VCPUS), @@ -151,9 +151,9 @@ const struct vmmdev_ioctl vmmdev_machdep_ioctls[] = { VMMDEV_IOCTL(VM_LAPIC_LOCAL_IRQ, VMMDEV_IOCTL_MAYBE_ALLOC_VCPU), - VMMDEV_IOCTL(VM_PPTDEV_MSI, VMMDEV_IOCTL_PRIV_CHECK_DRIVER), - VMMDEV_IOCTL(VM_PPTDEV_MSIX, VMMDEV_IOCTL_PRIV_CHECK_DRIVER), - VMMDEV_IOCTL(VM_PPTDEV_DISABLE_MSIX, VMMDEV_IOCTL_PRIV_CHECK_DRIVER), + VMMDEV_IOCTL(VM_PPTDEV_MSI, VMMDEV_IOCTL_PPT), + VMMDEV_IOCTL(VM_PPTDEV_MSIX, VMMDEV_IOCTL_PPT), + VMMDEV_IOCTL(VM_PPTDEV_DISABLE_MSIX, VMMDEV_IOCTL_PPT), VMMDEV_IOCTL(VM_LAPIC_MSI, 0), VMMDEV_IOCTL(VM_IOAPIC_ASSERT_IRQ, 0), VMMDEV_IOCTL(VM_IOAPIC_DEASSERT_IRQ, 0), diff --git a/sys/dev/vmm/vmm_dev.c b/sys/dev/vmm/vmm_dev.c index 6e7be320234c..f5eb72de79d8 100644 --- a/sys/dev/vmm/vmm_dev.c +++ b/sys/dev/vmm/vmm_dev.c @@ -84,7 +84,7 @@ static bool vmm_initialized = false; static SLIST_HEAD(, vmmdev_softc) head; -static unsigned pr_allow_flag; +static unsigned int pr_allow_vmm_flag, pr_allow_vmm_ppt_flag; static struct sx vmmdev_mtx; SX_SYSINIT(vmmdev_mtx, &vmmdev_mtx, "vmm device mutex"); @@ -103,7 +103,7 @@ static int vmm_priv_check(struct ucred *ucred) { if (jailed(ucred) && - !(ucred->cr_prison->pr_allow & pr_allow_flag)) + (ucred->cr_prison->pr_allow & pr_allow_vmm_flag) == 0) return (EPERM); return (0); @@ -479,8 +479,11 @@ vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag, if (ioctl == NULL) return (ENOTTY); - if ((ioctl->flags & VMMDEV_IOCTL_PRIV_CHECK_DRIVER) != 0) { - error = priv_check(td, PRIV_DRIVER); + if ((ioctl->flags & VMMDEV_IOCTL_PPT) != 0) { + if (jailed(td->td_ucred) && (td->td_ucred->cr_prison->pr_allow & + pr_allow_vmm_ppt_flag) == 0) + return (EPERM); + error = priv_check(td, PRIV_VMM_PPTDEV); if (error != 0) return (error); } @@ -1127,9 +1130,12 @@ vmmdev_init(void) sx_xlock(&vmmdev_mtx); error = make_dev_p(MAKEDEV_CHECKNAME, &vmmctl_cdev, &vmmctlsw, NULL, UID_ROOT, GID_WHEEL, 0600, "vmmctl"); - if (error == 0) - pr_allow_flag = prison_add_allow(NULL, "vmm", NULL, - "Allow use of vmm in a jail."); + if (error == 0) { + pr_allow_vmm_flag = prison_add_allow(NULL, "vmm", NULL, + "Allow use of vmm in a jail"); + pr_allow_vmm_ppt_flag = prison_add_allow(NULL, "vmm_ppt", NULL, + "Allow use of vmm with ppt devices in a jail"); + } sx_xunlock(&vmmdev_mtx); return (error); diff --git a/sys/dev/vmm/vmm_dev.h b/sys/dev/vmm/vmm_dev.h index f14176c8afad..b56a1730710e 100644 --- a/sys/dev/vmm/vmm_dev.h +++ b/sys/dev/vmm/vmm_dev.h @@ -48,7 +48,7 @@ struct vmmdev_ioctl { #define VMMDEV_IOCTL_LOCK_ALL_VCPUS 0x08 #define VMMDEV_IOCTL_ALLOC_VCPU 0x10 #define VMMDEV_IOCTL_MAYBE_ALLOC_VCPU 0x20 -#define VMMDEV_IOCTL_PRIV_CHECK_DRIVER 0x40 +#define VMMDEV_IOCTL_PPT 0x40 int flags; }; diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index f803be76a70e..9f6916a433a1 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -4583,6 +4583,13 @@ prison_priv_check(struct ucred *cred, int priv) else return (EPERM); + case PRIV_VMM_PPTDEV: + /* + * Allow jailed root to manage passthrough devices. vmm(4) also + * checks for the dynamically added allow.vmm_ppt. + */ + return (0); + default: /* * In all remaining cases, deny the privilege request. This diff --git a/sys/sys/priv.h b/sys/sys/priv.h index 9c493629f7cf..1ad6a4882ffc 100644 --- a/sys/sys/priv.h +++ b/sys/sys/priv.h @@ -535,10 +535,15 @@ #define PRIV_VERIEXEC_NOVERIFY 701 /* Can override O_VERIFY */ #define PRIV_VERIEXEC_CONTROL 702 /* Can configure veriexec */ +/* + * vmm privileges. + */ +#define PRIV_VMM_PPTDEV 710 /* Can manipulate ppt devices. */ + /* * Track end of privilege list. */ -#define _PRIV_HIGHEST 703 +#define _PRIV_HIGHEST 711 /* * Validate that a named privilege is known by the privilege system. Invalid diff --git a/usr.sbin/jail/jail.8 b/usr.sbin/jail/jail.8 index 3cefc60b2632..aab3f9003f3f 100644 --- a/usr.sbin/jail/jail.8 +++ b/usr.sbin/jail/jail.8 @@ -824,6 +824,17 @@ The jail may access This flag is only available when the .Xr vmm 4 kernel module is loaded. +.It Va allow.vmm_ppt +The jail may configure PCI passtrough devices for use by +.Xr vmm 4 +virtual machine guests. +This allows privileged users inside the jail to manipulate physical devices +claimed by the +.Dv ppt +driver, and thus must not be configured in untrusted jails. +This flag is only available when the +.Xr vmm 4 +kernel module is loaded. .It Va linux Determine how a jail's Linux emulation environment appears. A value of From nobody Tue Mar 31 15:59:04 2026 X-Original-To: dev-commits-src-branches@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 4flXqF4qHBz6WF6y for ; Tue, 31 Mar 2026 15:59:05 +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 4flXqD60mtz3h6C for ; Tue, 31 Mar 2026 15:59:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972744; 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=EoZbmWczbxL9+tXFo+790eYZstjjqJMRL4PS3XWuCS0=; b=E6Qi6S0LMTLKnpPWbMePwm1Ht1QsDiEFJkvjbQkhSZ26KaIOAuU8YBr7570YjlkZZqkkr3 injo6J4GXprolhX2ojI1RLudiCVMsgkAU1UCNC2KHmbpcOv2Tyt1p9vbvy4n3WpRGxVm+F 2KIl8e4juLxS08fZ5jP/PP99UNI4WMng5ZJW6z/E6Ghj9G1Z3D73waD8Pd8gsIQc16H3F+ zDa0F3JnJyKKKOcdlx/Fnq9GS2KA5heermqIigY6ImGzK9ax72h6BzLsdas6dMhe4CGtGw an5L8xzDeXOr4iJW3tknNq3FKVz9x8cVIjsHHxRNzT/P2/K9BLtS9lZmNYpYuA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972744; a=rsa-sha256; cv=none; b=a2jFcMx2KdqImLjRnwUW6CAKej35kAz1bnluvXauE9WvvElWl+Q9akEmXdcwcWdkBKAEkS d4/5gJpog3zHEkPC3O5UZFiCSC8B6BUvL5MLIk1716C74f5o1PkL0RfP+NMQJzltuh2faq bPwQP96uNn0EhF5IHzvSWMvd1ea7VDGneuHZmRTvzLgl9thPWRHTP9FU74T1Cn9npBhJjp t+843DjkLLDmGBljJrplPEf8PGIA4WgDpRRLF3TjEbBi0Jv+bymC5DO3sjHA7H5clUqp6f gKm9/gOQuIy5DRYnQRGclntkRUnQufnaYQQjxK6ayRBqCzSoWE+HMqn1DypmLg== 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=1774972744; 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=EoZbmWczbxL9+tXFo+790eYZstjjqJMRL4PS3XWuCS0=; b=I2zDUCLXwwruAPQE5zxjlU0GxaAoPH9aA7MVNC7eXE1UpCiQbLUjWQkSR2nT4RBeE0OlK9 AWP94lloDB1tnFJGrLLCkDx/SMbd6U+B931nUMUdH/6/smFPDxWbd3DDGd+rRY+NqZuPNI 3Q4QEmmaQKw9SJRk25TNC5naOBEO99qJhTbKikSLIa07MdY+6KilFY4cH5XwYKmKHG/YoP 0hCYthzMDlj+U6UZ3gl5t/Z0Hp9QPI38nU4tm13nxtsEl6zZ76dtS/+jOVSPmDGiHz1m1P 5KcZu8mrhNs5JTG4rcKb/ycysfyx5s0dqnBCx18G4yo6WFDCqfkyr0P1QllzAA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqD3RdtzcHZ for ; Tue, 31 Mar 2026 15:59:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a125 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 132d9d5df64d - stable/15 - sysctl: Avoid calling priv_check() unnecessarily List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 132d9d5df64d440467d5a20cf7082a761c80bb1e Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:04 +0000 Message-Id: <69cbef48.3a125.15dfaf32@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=132d9d5df64d440467d5a20cf7082a761c80bb1e commit 132d9d5df64d440467d5a20cf7082a761c80bb1e Author: Mark Johnston AuthorDate: 2026-02-21 16:16:32 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 sysctl: Avoid calling priv_check() unnecessarily After commit 7d1d9cc440f80 we only serialize large sysctl requests for non-root users, but we should avoid calling priv_check() unless the request actually is large, as that's not the common case. In particular, priv_check() might not be cheap to evaluate if MAC hooks are installed. Reviewed by: olce, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55377 (cherry picked from commit 0fa6ce255661acc984a45deaf2d710149b957ce6) --- sys/kern/kern_sysctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index be0acb0a4a55..4adbd71fae24 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -2573,8 +2573,8 @@ userland_sysctl(struct thread *td, int *name, u_int namelen, void *old, ktrsysctl(name, namelen); #endif memlocked = false; - if (priv_check(td, PRIV_SYSCTL_MEMLOCK) != 0 && - req.oldptr != NULL && req.oldlen > 4 * PAGE_SIZE) { + if (req.oldptr != NULL && req.oldlen > 4 * PAGE_SIZE && + priv_check(td, PRIV_SYSCTL_MEMLOCK) != 0) { memlocked = true; sx_xlock(&sysctlmemlock); } From nobody Tue Mar 31 15:59:06 2026 X-Original-To: dev-commits-src-branches@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 4flXqH26v1z6WF9L for ; Tue, 31 Mar 2026 15:59:07 +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 4flXqG6wR7z3gx1 for ; Tue, 31 Mar 2026 15:59:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ls013XhMrZlk0elqLlBiT5MjqccP8jVe9B5Pt6glYsg=; b=aou5kBhEYeHAqQzoZAluskPZdiUDP5oZSaREx7/AKKCrll+aVwEyjfK6tunBWaFLrmVEAQ alBOmCQA8mAUjtCsCl/8XvV389WziMyBuxSOWT8bGtCvGYWp7oY2nGM5hGKpJa3NY8zDiI pgMiZAU0vksD+EmfrCROUKTywlUG0qdpCCPS3Ju6sXOxuxP9jmHlYxe/kstqVBRMKv2cBA 5m14qOywK5XnzzbivE4U/a15v1Op4hADbMaIq3lw3o8lGfpMPyCENOWwbupECWYbHhs5qE Z+8MHRirVMBejRJqe4RKu1A6ufz+YJKQ9EBkscuhRczdiwTshNqSjvc/DOv3qg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972747; a=rsa-sha256; cv=none; b=Em0sYZMPNniep/u2PwOQMg8wMT+Rkfj89YkEq4xWH3XXB+eIUML5KQSL30J0EF3HOMS+kl PVZnQ7DPHFwO6kylBLefGXeFEKakaYKX1DxZtizK2nEE4oFsadWGcDTk3GP2BkWvGOGbi5 mMzWMNQgMnmKglTAbDkP4metIDaPKM1SJcYAmbwUpRB/7c37Ej2cF7MwAfr3xZH+a2Cfcb enKTWeW83Hb6yB54JAP7DT684JhT1TxCn98/Ac1ZYnKcwTCJ50QzSd//COGBN3V+jYCCf/ 2+W4KG7a8U5lLsw454PKvqhEBeOX+zH+a4VnZJFjFFCuFgvoXjlGv+j6cQ+1qQ== 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=1774972747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ls013XhMrZlk0elqLlBiT5MjqccP8jVe9B5Pt6glYsg=; b=tkW5B5eP9Am6TsLbrqC9qzekcEGxF8isJQdZBKxUS3SsyqDCi1q/B+eTmMvhUP/C8IYVJ6 kQoOKILi7NsFm3rauH4SntcY1M3G6Knzyto4p/Hc/Wcu2W3BCFiGzs7+pz1ko9BEE768Ru 7LNkn+fNbFZUgaaq85J3esFwSmH3eqtlshT9cEkN4dvuLnijPn/ya1p2YbnVlYQiPOLd3q RkGWFuflOEChoyBd/Foo2YT0fY7VYZBjZWwqexyzx4eKhkzpjxffClh8Y8EBjatlSYH+e9 54BXtRHx7s1qh03ahk0EDDkmlJPjnwc2HH7gfUNFBh5ZdDt9g7cz/kRZ6a9xKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqG576lzcLS for ; Tue, 31 Mar 2026 15:59:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a349 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Hayzam Sherif From: Mark Johnston Subject: git: d4420113e49d - stable/15 - bhyve: Fix unchecked stream I/O in RFB handler List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d4420113e49d0259c36da62175ed9d0a052abecc Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:06 +0000 Message-Id: <69cbef4a.3a349.4838d928@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d4420113e49d0259c36da62175ed9d0a052abecc commit d4420113e49d0259c36da62175ed9d0a052abecc Author: Hayzam Sherif AuthorDate: 2026-02-19 19:24:02 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 bhyve: Fix unchecked stream I/O in RFB handler Convert rfb_send_* helpers to return status codes and check their results. Add missing checks for stream_read() and stream_write() returns during the handshake in rfb_handle() to avoid acting on failed I/O. Signed-off-by: Hayzam Sherif Reviewed by: markj MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D55343 (cherry picked from commit 818971cc403e78d42b77eb6c18a2d2a073e5541f) --- usr.sbin/bhyve/rfb.c | 76 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/usr.sbin/bhyve/rfb.c b/usr.sbin/bhyve/rfb.c index 6e03d2860b7d..7a1b5a7bee3f 100644 --- a/usr.sbin/bhyve/rfb.c +++ b/usr.sbin/bhyve/rfb.c @@ -264,7 +264,7 @@ struct rfb_cuttext_msg { uint32_t length; }; -static void +static int rfb_send_server_init_msg(struct rfb_softc *rc, int cfd) { struct bhyvegc_image *gc_image; @@ -288,11 +288,14 @@ rfb_send_server_init_msg(struct rfb_softc *rc, int cfd) sinfo.pixfmt.pad[1] = 0; sinfo.pixfmt.pad[2] = 0; sinfo.namelen = htonl(rc->fbnamelen); - (void)stream_write(cfd, &sinfo, sizeof(sinfo)); - (void)stream_write(cfd, rc->fbname, rc->fbnamelen); + if (stream_write(cfd, &sinfo, sizeof(sinfo)) <= 0) + return (-1); + if (stream_write(cfd, rc->fbname, rc->fbnamelen) <= 0) + return (-1); + return (0); } -static void +static int rfb_send_resize_update_msg(struct rfb_softc *rc, int cfd) { struct rfb_srvr_updt_msg supdt_msg; @@ -302,7 +305,8 @@ rfb_send_resize_update_msg(struct rfb_softc *rc, int cfd) supdt_msg.type = 0; supdt_msg.pad = 0; supdt_msg.numrects = htons(1); - stream_write(cfd, &supdt_msg, sizeof(struct rfb_srvr_updt_msg)); + if (stream_write(cfd, &supdt_msg, sizeof(struct rfb_srvr_updt_msg)) <= 0) + return (-1); /* Rectangle header */ srect_hdr.x = htons(0); @@ -310,10 +314,12 @@ rfb_send_resize_update_msg(struct rfb_softc *rc, int cfd) srect_hdr.width = htons(rc->width); srect_hdr.height = htons(rc->height); srect_hdr.encoding = htonl(RFB_ENCODING_RESIZE); - stream_write(cfd, &srect_hdr, sizeof(struct rfb_srvr_rect_hdr)); + if (stream_write(cfd, &srect_hdr, sizeof(struct rfb_srvr_rect_hdr)) <= 0) + return (-1); + return (0); } -static void +static int rfb_send_extended_keyevent_update_msg(struct rfb_softc *rc, int cfd) { struct rfb_srvr_updt_msg supdt_msg; @@ -323,7 +329,8 @@ rfb_send_extended_keyevent_update_msg(struct rfb_softc *rc, int cfd) supdt_msg.type = 0; supdt_msg.pad = 0; supdt_msg.numrects = htons(1); - stream_write(cfd, &supdt_msg, sizeof(struct rfb_srvr_updt_msg)); + if (stream_write(cfd, &supdt_msg, sizeof(struct rfb_srvr_updt_msg)) <= 0) + return (-1); /* Rectangle header */ srect_hdr.x = htons(0); @@ -331,7 +338,9 @@ rfb_send_extended_keyevent_update_msg(struct rfb_softc *rc, int cfd) srect_hdr.width = htons(rc->width); srect_hdr.height = htons(rc->height); srect_hdr.encoding = htonl(RFB_ENCODING_EXT_KEYEVENT); - stream_write(cfd, &srect_hdr, sizeof(struct rfb_srvr_rect_hdr)); + if (stream_write(cfd, &srect_hdr, sizeof(struct rfb_srvr_rect_hdr)) <= 0) + return (-1); + return (0); } static int @@ -727,7 +736,10 @@ rfb_send_screen(struct rfb_softc *rc, int cfd) rc->width = gc_image->width; rc->height = gc_image->height; if (rc->enc_resize_ok) { - rfb_send_resize_update_msg(rc, cfd); + if (rfb_send_resize_update_msg(rc, cfd) < 0) { + retval = -1; + goto done; + } rc->update_all = true; goto done; } @@ -818,7 +830,10 @@ rfb_send_screen(struct rfb_softc *rc, int cfd) goto done; } - rfb_send_update_header(rc, cfd, changes); + if (rfb_send_update_header(rc, cfd, changes) <= 0) { + retval = -1; + goto done; + } /* Go through all cells, and send only changed ones */ crc_p = rc->crc_tmp; @@ -867,7 +882,8 @@ rfb_recv_update_msg(struct rfb_softc *rc, int cfd) return (-1); if (rc->enc_extkeyevent_ok && (!rc->enc_extkeyevent_send)) { - rfb_send_extended_keyevent_update_msg(rc, cfd); + if (rfb_send_extended_keyevent_update_msg(rc, cfd) < 0) + return (-1); rc->enc_extkeyevent_send = true; } @@ -1044,7 +1060,8 @@ rfb_handle(struct rfb_softc *rc, int cfd) rc->cfd = cfd; /* 1a. Send server version */ - stream_write(cfd, vbuf, strlen(vbuf)); + if (stream_write(cfd, vbuf, strlen(vbuf)) <= 0) + goto done; /* 1b. Read client version */ len = stream_read(cfd, buf, VERSION_LENGTH); @@ -1079,10 +1096,14 @@ rfb_handle(struct rfb_softc *rc, int cfd) case CVERS_3_8: buf[0] = 1; buf[1] = auth_type; - stream_write(cfd, buf, 2); + if (stream_write(cfd, buf, 2) <= 0) + goto done; /* 2b. Read agreed security type */ len = stream_read(cfd, buf, 1); + if (len <= 0) + goto done; + if (buf[0] != auth_type) { /* deny */ sres = htonl(1); @@ -1093,7 +1114,8 @@ rfb_handle(struct rfb_softc *rc, int cfd) case CVERS_3_3: default: be32enc(buf, auth_type); - stream_write(cfd, buf, 4); + if (stream_write(cfd, buf, 4) <= 0) + goto done; break; } @@ -1127,10 +1149,13 @@ rfb_handle(struct rfb_softc *rc, int cfd) /* Initialize a 16-byte random challenge */ arc4random_buf(challenge, sizeof(challenge)); - stream_write(cfd, challenge, AUTH_LENGTH); + if (stream_write(cfd, challenge, AUTH_LENGTH) <= 0) + goto done; /* Receive the 16-byte challenge response */ - stream_read(cfd, buf, AUTH_LENGTH); + len = stream_read(cfd, buf, AUTH_LENGTH); + if (len <= 0) + goto done; memcpy(crypt_expected, challenge, AUTH_LENGTH); @@ -1163,14 +1188,17 @@ rfb_handle(struct rfb_softc *rc, int cfd) case CVERS_3_8: report_and_done: /* 2d. Write back a status */ - stream_write(cfd, &sres, 4); + if (stream_write(cfd, &sres, 4) <= 0) + goto done; if (sres) { /* 3.7 does not want string explaining cause */ if (client_ver == CVERS_3_8) { be32enc(buf, strlen(message)); - stream_write(cfd, buf, 4); - stream_write(cfd, message, strlen(message)); + if (stream_write(cfd, buf, 4) <= 0) + goto done; + if (stream_write(cfd, message, strlen(message)) <= 0) + goto done; } goto done; } @@ -1180,7 +1208,8 @@ report_and_done: /* for VNC auth case send status */ if (auth_type == SECURITY_TYPE_VNC_AUTH) { /* 2d. Write back a status */ - stream_write(cfd, &sres, 4); + if (stream_write(cfd, &sres, 4) <= 0) + goto done; } if (sres) { goto done; @@ -1189,9 +1218,12 @@ report_and_done: } /* 3a. Read client shared-flag byte */ len = stream_read(cfd, buf, 1); + if (len <= 0) + goto done; /* 4a. Write server-init info */ - rfb_send_server_init_msg(rc, cfd); + if (rfb_send_server_init_msg(rc, cfd) < 0) + goto done; if (!rc->zbuf) { rc->zbuf = malloc(RFB_ZLIB_BUFSZ + 16); From nobody Tue Mar 31 15:59:05 2026 X-Original-To: dev-commits-src-branches@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 4flXqG3r2wz6WF71 for ; Tue, 31 Mar 2026 15:59:06 +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 4flXqF6ZRRz3gwv for ; Tue, 31 Mar 2026 15:59:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972746; 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=SKvJ2BgdDPlYqp+ffE8geSncnfWgDSZ03J1t+DIQsyw=; b=Ax9EHXH7mMesqoPT0RvlfT7cfhbrcutLk0yGuf7zMIwmAQMxcbNK8C3ngxw77gVWm8O23+ GTi1oaWQhMCAcW2MfdxL4m+dioHL0b1SV3YTNVV06jawJDCiuI4wviBWN4pg/VCc4XV/a5 cCrjmm8MTS++yqo4VgKZOKEKw1Ck17dQk1vicnDEc5jhSl8OlpzKUrQLqihPtd6LAGbInM 4JJ4ur2jCpaUzGbRApN2YRqO3GEYLSE+/RyOtkmWAVU55ldP8Rcs0dqQNF5nodJbUfwKka sfZZUnL3oY/6BGg2/ZBKh7ZgbaMBxoPP47fqHV7cn2xkj8UUG5GoE5SIUCG5dw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972746; a=rsa-sha256; cv=none; b=FfGUwgqpgp/TEwB2tvdUX79r+noKKGYAuK/aTebRD+PJGT1zejAdsYWhp3H4pxjpqjY28z iART4Uhv1xNQwCuzU0Iy2G+CrXqep74ICALIfpetKwJ+D1LJlsN4r0AT7OdOsDwZJ8KtLA BHGJOFx3NP8f/ZygN1ce3hW/q+A9KCVARaAk2IXZwzHlntGHVX/0fAwtZutWMJUJvWcBRm DtTqMx/oJi1Ayv66K2a6sZMcigS5uSDXO2pPDTC6yRMP06W8HFM+HLMXFT70BbTrtYtbzz u4KOz7Xxzez2Id4YJd5HIa1SofrZLkRQgzHOoexxPonJ2FYrvBngN3eJM/5DdQ== 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=1774972746; 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=SKvJ2BgdDPlYqp+ffE8geSncnfWgDSZ03J1t+DIQsyw=; b=G1M7O32LnnI46f8MB0hWfdSUc2irr5bh+lr6k6u8GD1FGHznG4R99+eV8R30Zu5H3OL6zN SrmP5S09492s4SvQn04lfHgbriUfMvE97vBkLaQifxEOkK/xe2/mYWorQB2oKBa+D8BwyZ zDvDzD7cJhW1ZDwiC0du5+strkB0n2jaVgeUh2WYd7yWdqyPiOXpQfZBWnjZtmZtY7F67D 16Q4a5aRnX3/Mi9qReDLbhg11AmiTmG7R8ZL70HrwHH+6qIslF9XyoPcMdTk83x1wjrcVQ zbYyaLLlCwPZ9BBAPi3EULwKGfUhxdSnMGbvvNFwCY4rHHgrcEAJp6LLwbeYKA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqF4G0Vzcc6 for ; Tue, 31 Mar 2026 15:59:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 395f8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 5f7525c0210c - stable/15 - pipe: Avoid unnecessary priv_check() calls in pipespace_new() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5f7525c0210c9ef8e06b7b3c7e6049e356fad009 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:05 +0000 Message-Id: <69cbef49.395f8.44cb96b1@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=5f7525c0210c9ef8e06b7b3c7e6049e356fad009 commit 5f7525c0210c9ef8e06b7b3c7e6049e356fad009 Author: Mark Johnston AuthorDate: 2026-02-21 16:28:49 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 pipe: Avoid unnecessary priv_check() calls in pipespace_new() Running out of pipe map KVA is a rare case, so reorder checks accordingly, presuming that calling priv_check() is more expensive than the calculation. In particular, priv_check() might not be cheap to evaluate if MAC hooks are installed. Reviewed by: olce, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55378 (cherry picked from commit fa77660a3ccbd5f30e88093703b0f93892ef35d7) --- sys/kern/sys_pipe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index b319f0ac9c53..e5a49ef3a526 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -600,8 +600,8 @@ retry: } vm_map_lock(pipe_map); - if (priv_check(curthread, PRIV_PIPEBUF) != 0 && maxpipekva / 100 * - (100 - pipebuf_reserv) < amountpipekva + size) { + if (maxpipekva / 100 * (100 - pipebuf_reserv) < amountpipekva + size && + priv_check(curthread, PRIV_PIPEBUF) != 0) { vm_map_unlock(pipe_map); chgpipecnt(cpipe->pipe_pair->pp_owner->cr_ruidinfo, -size, 0); if (cpipe->pipe_buffer.buffer == NULL && From nobody Tue Mar 31 15:59:08 2026 X-Original-To: dev-commits-src-branches@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 4flXqK3s92z6WFGY for ; Tue, 31 Mar 2026 15:59:09 +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 4flXqK1H0hz3grZ for ; Tue, 31 Mar 2026 15:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p1JF6FMtbbAfHXNWqqaX+OAcFhdRjG05kimsJxCRtLM=; b=JNYFhaAgdleQVxhMb09V0R6YQpiE4N065h6aih0DouctrFY1QfDNj4spePCsgMYQzSx83A 4O0MdVHcOCSDDvY6NYzW+FAdL16V5LYTGk6vYeAeeKOrMYpI1xMbxS0yhKJnQ3yDCHka3c zITkOj5TiYOj8j/f4sJHbwBXepQ3nAhfLFdQdqRZ4pYpNm7Q/nlOzWkxnkm7BYoPAFAm/F preJDZKrOV5DQh8u8JQcSAcIrYtC6dsClmS7ebrpk3ER3byJCGWuZM7z558JY+nWQIEnH6 Th5QAxF4iaq89PscsUA+c5SQocm5M264+OLHP3Gslbp5s+IFM8VFRPcP89ByFg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972749; a=rsa-sha256; cv=none; b=doOrkP6IhTOopNosAwrIq8FaCAfaMK1dGZ/H8dSb1DvPMra1cIpbcLeDXT8YpKNRCBxmk1 E2BHOIRKlP4c+d6Osw8Q8rQmWCvGFu+5ieSsCXyJ2IeEENG4sG09227hoROFX7jE8jprPi 8i9Ll2SzanBuSKDNz+TZymwbmTSarLMf4hgY0S3XUmnMT9lmvtLSKslQwCHTIwQfa6VxXN sa7vzsxZFYyxytHgWWuaJVV51vgdLM3Z3lG4iRVYs0dWxroQy2jsKGvycDQHsnnlGJlR9y WsWPQTPCq1t9OPnlQhL6nZBAIdZWcY/Pcjd6PBigd/fnMiRPeDHJBDBMY87m0A== 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=1774972749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p1JF6FMtbbAfHXNWqqaX+OAcFhdRjG05kimsJxCRtLM=; b=vMjILGJf4OZU8SZJSwoJo9fiGLgmSjpGe2wFAQpft/CRoEJE22yf4knj1hOFOMdsk3/ePe b0r9U+2+LhEwZuIIGgaEHGxMqIAJ/EnRxDVJOq9w6RcTeX1DDyQ1tS3wcqCQkdjoSj3vFi giYHHsbe2wuSYj0sYVhR0Rb95lnAxlMbL1HEhEFc149OzJAO1V7lnjvwaQF2w2VU/rLTVS nQHjgyzUSqa83cP7N3RFSqShtyPXklS4BWbFHGR5gIChUMAdI8wSiOGXhsIrNVQrP4F4uc T8eXFmgmVzRoRIL9DpstAnAbm4i8OXv9KMAxY9SwQzTBt90AL3wm0cB0Ir1U5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqJ6wgjzc3l for ; Tue, 31 Mar 2026 15:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a216 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Artem Bunichev From: Mark Johnston Subject: git: 560f75dc844f - stable/15 - OptionalObsoleteFiles: Don't mark /usr/lib/debug/boot directory obsolete List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 560f75dc844f8a0cb39d168d2679cd6c72a88ddf Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:08 +0000 Message-Id: <69cbef4c.3a216.7b88c3f9@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=560f75dc844f8a0cb39d168d2679cd6c72a88ddf commit 560f75dc844f8a0cb39d168d2679cd6c72a88ddf Author: Artem Bunichev AuthorDate: 2026-02-19 19:09:48 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 OptionalObsoleteFiles: Don't mark /usr/lib/debug/boot directory obsolete The intent of the currect code is to ignore anything under /usr/lib/debug/boot/*. But we also should make sure that /usr/lib/debug/boot directory is also ignored and is not marked obsolete. If we don't do that, `make DBATCH_DELETE_OLD_FILES delete-old` will try to rmdir(1) this directory, which will cause an error, since /usr/lib/debug/boot may have nested directories like kernel/ and modules/. Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55077 (cherry picked from commit c8191c3d613928d8bd6060aa2f7da349b4090cc1) --- tools/build/mk/OptionalObsoleteFiles.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index b0d80ab26211..bea969b77457 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1443,8 +1443,8 @@ OLD_DIRS+=usr/include/fs/cuse .if ${MK_DEBUG_FILES} == no .if exists(${DESTDIR}/usr/lib/debug) -DEBUG_DIRS!=find ${DESTDIR}/usr/lib/debug -mindepth 1 \ - -type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \ +DEBUG_DIRS!=find -E ${DESTDIR}/usr/lib/debug -mindepth 1 \ + -type d \! -regex "${DESTDIR}/usr/lib/debug/boot(/.*)?" \ | sed -e 's,^${DESTDIR}/,,'; echo DEBUG_FILES!=find ${DESTDIR}/usr/lib/debug \ \! -type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \! -name "lib*.so*" \ From nobody Tue Mar 31 15:59:11 2026 X-Original-To: dev-commits-src-branches@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 4flXqR5bQHz6WFT9 for ; Tue, 31 Mar 2026 15:59:15 +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 4flXqM4p5pz3h7H for ; Tue, 31 Mar 2026 15:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972751; 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=ndsMv2jCOy8C5dFKNrhfujAp5ggx2K5xc7g+WVedyes=; b=we1a4gAmMRr84KQ/Tl6k1eBX/xGiI735vJdErwk/FW80+zNEFP1DJhDoup2m2ADJbli/Ip 4cWGxEA4VWfpJKUZpbb1nrdWYPXY+DPT0HM9EYOg/M0eHV5/qIdk/YMFBNNvg1IKt9r3/Q graRjFXKZ0BspvokzTy99W5Se/aDttxCsEbs8RhQ80QEmws/8iZob1FLe1D6VMSR40Cb0M ze+7tRVUTGghkiFIw/nW1XuKbsJNWrz7ga2S4rKAy+l64zMJQ+5bp5k7QqeGid0AhzGsiF fFsRheFwwr6SaSxMr1xQJfTOJFsNWG44GfC7CQqlb/wBKP0+KxZzmJPWw1NP4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972751; a=rsa-sha256; cv=none; b=MwU3kaZAYCtPq8fI8M5kC4MKMa5cyEv+eGD2rQO8c7aUpaXwRh2ijS/nPIJD1lIIJtoYWo dgrCMN7NgewtAUFTvaEeQWnQzlRwmiHb1b0wTcqBxedUO1pLiwZhqZ5tojgTgrLWFfSTUw qsqmTBzuNJ0Z45FntU2epAN0MwWVKMgMXzsUXE42ujREJkZpNMCVa3KRu2xPsKh4f33s7M ztFFp7Wftlsxlu/HsxbHTp6FbzuFkkVf1b1tSBcZehX1s4I1RAMewapqWl423sPkJpcmSi 4UXxucF+Ca12CsZpK/GjxSOMnevyPOQ8XXsIrBvIZrnQowbuLEapjKekOs3eSQ== 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=1774972751; 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=ndsMv2jCOy8C5dFKNrhfujAp5ggx2K5xc7g+WVedyes=; b=BxNNSnZDVRRHoFX7CkNDT2crj106UsucvExsJDK6ghuMCP09156HMcfOLuWsv8uSR3sQ1Y 9V4LQcHbKBQrkvDPPeIALkfmlISRPbvZRANT2OcU6nP9JhWP0O1dyJQ21oOBEekOUPM0YD 0EL13kaMxytbsTQ9QWmzEoAgv1JnwuFCBq7ShAFm0nadeupXG7mgB8YqGfzbaM6LmpD9yt DrZh87TcTcrJg2keHvSGBrQonANKvYhmkn6vuCL6he/l1GNY3ujamzRRIWlzDbWUoG675C t4gawBqOq2TAgMI2w2mZhKLWHUTkad35ty2McNiVsrqq7w2p9AK+wcNk9skW+w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqM2J5JzcQj for ; Tue, 31 Mar 2026 15:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b00b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: ddd241d221a2 - stable/15 - vmm: Deduplicate VM and vCPU state management code List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ddd241d221a2e454fe77144dd48a802cb41691cd Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:11 +0000 Message-Id: <69cbef4f.3b00b.10669f8c@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ddd241d221a2e454fe77144dd48a802cb41691cd commit ddd241d221a2e454fe77144dd48a802cb41691cd Author: Mark Johnston AuthorDate: 2026-01-08 21:54:06 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 vmm: Deduplicate VM and vCPU state management code Now that the machine-independent fields of struct vm and struct vcpu are available in a header, we can move lots of duplicated code into sys/dev/vmm/vmm_vm.c. This change does exactly that. No functional change intended. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53585 (cherry picked from commit ed85203fb7a0334041db6da07e45ddda4caef13d) --- sys/amd64/include/vmm.h | 37 ---- sys/amd64/vmm/io/vioapic.c | 1 + sys/amd64/vmm/io/vlapic.c | 1 + sys/amd64/vmm/vmm.c | 483 +-------------------------------------------- sys/amd64/vmm/vmm_lapic.c | 1 + sys/amd64/vmm/x86.c | 1 + sys/arm64/include/vmm.h | 26 --- sys/arm64/vmm/io/vgic_v3.c | 1 + sys/arm64/vmm/vmm.c | 317 +---------------------------- sys/dev/vmm/vmm_dev.c | 32 --- sys/dev/vmm/vmm_vm.c | 476 ++++++++++++++++++++++++++++++++++++++++++++ sys/dev/vmm/vmm_vm.h | 49 ++++- sys/modules/vmm/Makefile | 3 +- sys/riscv/include/vmm.h | 28 +-- sys/riscv/vmm/vmm.c | 317 +---------------------------- sys/riscv/vmm/vmm_aplic.c | 1 + sys/riscv/vmm/vmm_sbi.c | 2 + sys/riscv/vmm/vmm_vtimer.c | 2 + 18 files changed, 551 insertions(+), 1227 deletions(-) diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h index e1df85aa91b6..baf2cf42ad6c 100644 --- a/sys/amd64/include/vmm.h +++ b/sys/amd64/include/vmm.h @@ -233,19 +233,7 @@ struct vmm_ops { extern const struct vmm_ops vmm_ops_intel; extern const struct vmm_ops vmm_ops_amd; -int vm_create(const char *name, struct vm **retvm); -struct vcpu *vm_alloc_vcpu(struct vm *vm, int vcpuid); -void vm_disable_vcpu_creation(struct vm *vm); -void vm_lock_vcpus(struct vm *vm); -void vm_unlock_vcpus(struct vm *vm); -void vm_destroy(struct vm *vm); -int vm_reinit(struct vm *vm); const char *vm_name(struct vm *vm); -uint16_t vm_get_maxcpus(struct vm *vm); -void vm_get_topology(struct vm *vm, uint16_t *sockets, uint16_t *cores, - uint16_t *threads, uint16_t *maxcpus); -int vm_set_topology(struct vm *vm, uint16_t sockets, uint16_t cores, - uint16_t threads, uint16_t maxcpus); int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hpa); int vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len); @@ -259,7 +247,6 @@ int vm_get_seg_desc(struct vcpu *vcpu, int reg, int vm_set_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *desc); int vm_run(struct vcpu *vcpu); -int vm_suspend(struct vm *vm, enum vm_suspend_how how); int vm_inject_nmi(struct vcpu *vcpu); int vm_nmi_pending(struct vcpu *vcpu); void vm_nmi_clear(struct vcpu *vcpu); @@ -277,9 +264,6 @@ int vm_set_capability(struct vcpu *vcpu, int type, int val); int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *state); int vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state); int vm_apicid2vcpuid(struct vm *vm, int apicid); -int vm_activate_cpu(struct vcpu *vcpu); -int vm_suspend_cpu(struct vm *vm, struct vcpu *vcpu); -int vm_resume_cpu(struct vm *vm, struct vcpu *vcpu); int vm_restart_instruction(struct vcpu *vcpu); struct vm_exit *vm_exitinfo(struct vcpu *vcpu); cpuset_t *vm_exitinfo_cpuset(struct vcpu *vcpu); @@ -292,24 +276,6 @@ int vm_snapshot_req(struct vm *vm, struct vm_snapshot_meta *meta); int vm_restore_time(struct vm *vm); #ifdef _SYS__CPUSET_H_ -/* - * Rendezvous all vcpus specified in 'dest' and execute 'func(arg)'. - * The rendezvous 'func(arg)' is not allowed to do anything that will - * cause the thread to be put to sleep. - * - * The caller cannot hold any locks when initiating the rendezvous. - * - * The implementation of this API may cause vcpus other than those specified - * by 'dest' to be stalled. The caller should not rely on any vcpus making - * forward progress when the rendezvous is in progress. - */ -typedef void (*vm_rendezvous_func_t)(struct vcpu *vcpu, void *arg); -int vm_smp_rendezvous(struct vcpu *vcpu, cpuset_t dest, - vm_rendezvous_func_t func, void *arg); - -cpuset_t vm_active_cpus(struct vm *vm); -cpuset_t vm_debug_cpus(struct vm *vm); -cpuset_t vm_suspended_cpus(struct vm *vm); cpuset_t vm_start_cpus(struct vm *vm, const cpuset_t *tostart); void vm_await_start(struct vm *vm, const cpuset_t *waiting); #endif /* _SYS__CPUSET_H_ */ @@ -341,8 +307,6 @@ vcpu_reqidle(struct vm_eventinfo *info) return (*info->iptr); } -int vcpu_debugged(struct vcpu *vcpu); - /* * Return true if device indicated by bus/slot/func is supposed to be a * pci passthrough device. @@ -354,7 +318,6 @@ bool vmm_is_pptdev(int bus, int slot, int func); void *vm_iommu_domain(struct vm *vm); void *vcpu_stats(struct vcpu *vcpu); -void vcpu_notify_event(struct vcpu *vcpu); void vcpu_notify_lapic(struct vcpu *vcpu); struct vm_mem *vm_mem(struct vm *vm); struct vatpic *vm_atpic(struct vm *vm); diff --git a/sys/amd64/vmm/io/vioapic.c b/sys/amd64/vmm/io/vioapic.c index 7df6193d6dc0..a3956785d049 100644 --- a/sys/amd64/vmm/io/vioapic.c +++ b/sys/amd64/vmm/io/vioapic.c @@ -43,6 +43,7 @@ #include #include +#include #include "vmm_lapic.h" #include "vlapic.h" diff --git a/sys/amd64/vmm/io/vlapic.c b/sys/amd64/vmm/io/vlapic.c index afd5045de574..6849ef7aa589 100644 --- a/sys/amd64/vmm/io/vlapic.c +++ b/sys/amd64/vmm/io/vlapic.c @@ -47,6 +47,7 @@ #include #include +#include #include "vmm_lapic.h" #include "vmm_stat.h" diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index 4b93e020f8dc..b0712c3eb6ac 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -161,8 +161,7 @@ static MALLOC_DEFINE(M_VM, "vm", "vm"); /* statistics */ static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcpu total runtime"); -SYSCTL_NODE(_hw, OID_AUTO, vmm, CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, - NULL); +SYSCTL_DECL(_hw_vmm); /* * Halt the guest if all vcpus are executing a HLT instruction with @@ -173,10 +172,6 @@ SYSCTL_INT(_hw_vmm, OID_AUTO, halt_detection, CTLFLAG_RDTUN, &halt_detection_enabled, 0, "Halt VM if all vcpus execute HLT with interrupts disabled"); -static int vmm_ipinum; -SYSCTL_INT(_hw_vmm, OID_AUTO, ipinum, CTLFLAG_RD, &vmm_ipinum, 0, - "IPI vector used for vcpu notifications"); - static int trace_guest_exceptions; SYSCTL_INT(_hw_vmm, OID_AUTO, trace_guest_exceptions, CTLFLAG_RDTUN, &trace_guest_exceptions, 0, @@ -186,8 +181,6 @@ static int trap_wbinvd; SYSCTL_INT(_hw_vmm, OID_AUTO, trap_wbinvd, CTLFLAG_RDTUN, &trap_wbinvd, 0, "WBINVD triggers a VM-exit"); -static void vcpu_notify_event_locked(struct vcpu *vcpu); - /* global statistics */ VMM_STAT(VCPU_MIGRATIONS, "vcpu migration across host cpus"); VMM_STAT(VMEXIT_COUNT, "total number of vm exits"); @@ -284,7 +277,6 @@ vcpu_init(struct vcpu *vcpu) int vcpu_trace_exceptions(struct vcpu *vcpu) { - return (trace_guest_exceptions); } @@ -364,14 +356,6 @@ vm_init(struct vm *vm, bool create) } } -void -vm_disable_vcpu_creation(struct vm *vm) -{ - sx_xlock(&vm->vcpus_init_lock); - vm->dying = true; - sx_xunlock(&vm->vcpus_init_lock); -} - struct vcpu * vm_alloc_vcpu(struct vm *vm, int vcpuid) { @@ -402,18 +386,6 @@ vm_alloc_vcpu(struct vm *vm, int vcpuid) return (vcpu); } -void -vm_lock_vcpus(struct vm *vm) -{ - sx_xlock(&vm->vcpus_init_lock); -} - -void -vm_unlock_vcpus(struct vm *vm) -{ - sx_unlock(&vm->vcpus_init_lock); -} - int vm_create(const char *name, struct vm **retvm) { @@ -443,35 +415,6 @@ vm_create(const char *name, struct vm **retvm) return (0); } -void -vm_get_topology(struct vm *vm, uint16_t *sockets, uint16_t *cores, - uint16_t *threads, uint16_t *maxcpus) -{ - *sockets = vm->sockets; - *cores = vm->cores; - *threads = vm->threads; - *maxcpus = vm->maxcpus; -} - -uint16_t -vm_get_maxcpus(struct vm *vm) -{ - return (vm->maxcpus); -} - -int -vm_set_topology(struct vm *vm, uint16_t sockets, uint16_t cores, - uint16_t threads, uint16_t maxcpus __unused) -{ - /* Ignore maxcpus. */ - if ((sockets * cores * threads) > vm->maxcpus) - return (EINVAL); - vm->sockets = sockets; - vm->cores = cores; - vm->threads = threads; - return(0); -} - static void vm_cleanup(struct vm *vm, bool destroy) { @@ -520,23 +463,11 @@ vm_destroy(struct vm *vm) free(vm, M_VM); } -int -vm_reinit(struct vm *vm) +void +vm_reset(struct vm *vm) { - int error; - - /* - * A virtual machine can be reset only if all vcpus are suspended. - */ - if (CPU_CMP(&vm->suspended_cpus, &vm->active_cpus) == 0) { - vm_cleanup(vm, false); - vm_init(vm, false); - error = 0; - } else { - error = EBUSY; - } - - return (error); + vm_cleanup(vm, false); + vm_init(vm, false); } const char * @@ -810,210 +741,6 @@ save_guest_fpustate(struct vcpu *vcpu) static VMM_STAT(VCPU_IDLE_TICKS, "number of ticks vcpu was idle"); -/* - * Invoke the rendezvous function on the specified vcpu if applicable. Return - * true if the rendezvous is finished, false otherwise. - */ -static bool -vm_rendezvous(struct vcpu *vcpu) -{ - struct vm *vm = vcpu->vm; - int vcpuid; - - mtx_assert(&vcpu->vm->rendezvous_mtx, MA_OWNED); - KASSERT(vcpu->vm->rendezvous_func != NULL, - ("vm_rendezvous: no rendezvous pending")); - - /* 'rendezvous_req_cpus' must be a subset of 'active_cpus' */ - CPU_AND(&vm->rendezvous_req_cpus, &vm->rendezvous_req_cpus, - &vm->active_cpus); - - vcpuid = vcpu->vcpuid; - if (CPU_ISSET(vcpuid, &vm->rendezvous_req_cpus) && - !CPU_ISSET(vcpuid, &vm->rendezvous_done_cpus)) { - VMM_CTR0(vcpu, "Calling rendezvous func"); - (*vm->rendezvous_func)(vcpu, vm->rendezvous_arg); - CPU_SET(vcpuid, &vm->rendezvous_done_cpus); - } - if (CPU_CMP(&vm->rendezvous_req_cpus, - &vm->rendezvous_done_cpus) == 0) { - VMM_CTR0(vcpu, "Rendezvous completed"); - CPU_ZERO(&vm->rendezvous_req_cpus); - vm->rendezvous_func = NULL; - wakeup(&vm->rendezvous_func); - return (true); - } - return (false); -} - -static void -vcpu_wait_idle(struct vcpu *vcpu) -{ - KASSERT(vcpu->state != VCPU_IDLE, ("vcpu already idle")); - - vcpu->reqidle = 1; - vcpu_notify_event_locked(vcpu); - VMM_CTR1(vcpu, "vcpu state change from %s to " - "idle requested", vcpu_state2str(vcpu->state)); - msleep_spin(&vcpu->state, &vcpu->mtx, "vmstat", hz); -} - -static int -vcpu_set_state_locked(struct vcpu *vcpu, enum vcpu_state newstate, - bool from_idle) -{ - int error; - - vcpu_assert_locked(vcpu); - - /* - * State transitions from the vmmdev_ioctl() must always begin from - * the VCPU_IDLE state. This guarantees that there is only a single - * ioctl() operating on a vcpu at any point. - */ - if (from_idle) { - while (vcpu->state != VCPU_IDLE) - vcpu_wait_idle(vcpu); - } else { - KASSERT(vcpu->state != VCPU_IDLE, ("invalid transition from " - "vcpu idle state")); - } - - if (vcpu->state == VCPU_RUNNING) { - KASSERT(vcpu->hostcpu == curcpu, ("curcpu %d and hostcpu %d " - "mismatch for running vcpu", curcpu, vcpu->hostcpu)); - } else { - KASSERT(vcpu->hostcpu == NOCPU, ("Invalid hostcpu %d for a " - "vcpu that is not running", vcpu->hostcpu)); - } - - /* - * The following state transitions are allowed: - * IDLE -> FROZEN -> IDLE - * FROZEN -> RUNNING -> FROZEN - * FROZEN -> SLEEPING -> FROZEN - */ - switch (vcpu->state) { - case VCPU_IDLE: - case VCPU_RUNNING: - case VCPU_SLEEPING: - error = (newstate != VCPU_FROZEN); - break; - case VCPU_FROZEN: - error = (newstate == VCPU_FROZEN); - break; - default: - error = 1; - break; - } - - if (error) - return (EBUSY); - - VMM_CTR2(vcpu, "vcpu state changed from %s to %s", - vcpu_state2str(vcpu->state), vcpu_state2str(newstate)); - - vcpu->state = newstate; - if (newstate == VCPU_RUNNING) - vcpu->hostcpu = curcpu; - else - vcpu->hostcpu = NOCPU; - - if (newstate == VCPU_IDLE) - wakeup(&vcpu->state); - - return (0); -} - -/* - * Try to lock all of the vCPUs in the VM while taking care to avoid deadlocks - * with vm_smp_rendezvous(). - * - * The complexity here suggests that the rendezvous mechanism needs a rethink. - */ -int -vcpu_set_state_all(struct vm *vm, enum vcpu_state newstate) -{ - cpuset_t locked; - struct vcpu *vcpu; - int error, i; - uint16_t maxcpus; - - KASSERT(newstate != VCPU_IDLE, - ("vcpu_set_state_all: invalid target state %d", newstate)); - - error = 0; - CPU_ZERO(&locked); - maxcpus = vm->maxcpus; - - mtx_lock(&vm->rendezvous_mtx); -restart: - if (vm->rendezvous_func != NULL) { - /* - * If we have a pending rendezvous, then the initiator may be - * blocked waiting for other vCPUs to execute the callback. The - * current thread may be a vCPU thread so we must not block - * waiting for the initiator, otherwise we get a deadlock. - * Thus, execute the callback on behalf of any idle vCPUs. - */ - for (i = 0; i < maxcpus; i++) { - vcpu = vm_vcpu(vm, i); - if (vcpu == NULL) - continue; - vcpu_lock(vcpu); - if (vcpu->state == VCPU_IDLE) { - (void)vcpu_set_state_locked(vcpu, VCPU_FROZEN, - true); - CPU_SET(i, &locked); - } - if (CPU_ISSET(i, &locked)) { - /* - * We can safely execute the callback on this - * vCPU's behalf. - */ - vcpu_unlock(vcpu); - (void)vm_rendezvous(vcpu); - vcpu_lock(vcpu); - } - vcpu_unlock(vcpu); - } - } - - /* - * Now wait for remaining vCPUs to become idle. This may include the - * initiator of a rendezvous that is currently blocked on the rendezvous - * mutex. - */ - CPU_FOREACH_ISCLR(i, &locked) { - if (i >= maxcpus) - break; - vcpu = vm_vcpu(vm, i); - if (vcpu == NULL) - continue; - vcpu_lock(vcpu); - while (vcpu->state != VCPU_IDLE) { - mtx_unlock(&vm->rendezvous_mtx); - vcpu_wait_idle(vcpu); - vcpu_unlock(vcpu); - mtx_lock(&vm->rendezvous_mtx); - if (vm->rendezvous_func != NULL) - goto restart; - vcpu_lock(vcpu); - } - error = vcpu_set_state_locked(vcpu, newstate, true); - vcpu_unlock(vcpu); - if (error != 0) { - /* Roll back state changes. */ - CPU_FOREACH_ISSET(i, &locked) - (void)vcpu_set_state(vcpu, VCPU_IDLE, false); - break; - } - CPU_SET(i, &locked); - } - mtx_unlock(&vm->rendezvous_mtx); - return (error); -} - static void vcpu_require_state(struct vcpu *vcpu, enum vcpu_state newstate) { @@ -1032,37 +759,6 @@ vcpu_require_state_locked(struct vcpu *vcpu, enum vcpu_state newstate) panic("Error %d setting state to %d", error, newstate); } -static int -vm_handle_rendezvous(struct vcpu *vcpu) -{ - struct vm *vm; - struct thread *td; - - td = curthread; - vm = vcpu->vm; - - mtx_lock(&vm->rendezvous_mtx); - while (vm->rendezvous_func != NULL) { - if (vm_rendezvous(vcpu)) - break; - - VMM_CTR0(vcpu, "Wait for rendezvous completion"); - mtx_sleep(&vm->rendezvous_func, &vm->rendezvous_mtx, 0, - "vmrndv", hz); - if (td_ast_pending(td, TDA_SUSPEND)) { - int error; - - mtx_unlock(&vm->rendezvous_mtx); - error = thread_check_susp(td, true); - if (error != 0) - return (error); - mtx_lock(&vm->rendezvous_mtx); - } - } - mtx_unlock(&vm->rendezvous_mtx); - return (0); -} - /* * Emulate a guest 'hlt' by sleeping until the vcpu is ready to run. */ @@ -1386,33 +1082,6 @@ vm_handle_db(struct vcpu *vcpu, struct vm_exit *vme, bool *retu) return (0); } -int -vm_suspend(struct vm *vm, enum vm_suspend_how how) -{ - int i; - - if (how <= VM_SUSPEND_NONE || how >= VM_SUSPEND_LAST) - return (EINVAL); - - if (atomic_cmpset_int(&vm->suspend, 0, how) == 0) { - VM_CTR2(vm, "virtual machine already suspended %d/%d", - vm->suspend, how); - return (EALREADY); - } - - VM_CTR1(vm, "virtual machine successfully suspended %d", how); - - /* - * Notify all active vcpus that they are now suspended. - */ - for (i = 0; i < vm->maxcpus; i++) { - if (CPU_ISSET(i, &vm->active_cpus)) - vcpu_notify_event(vm_vcpu(vm, i)); - } - - return (0); -} - void vm_exit_suspended(struct vcpu *vcpu, uint64_t rip) { @@ -2039,107 +1708,6 @@ vm_iommu_domain(struct vm *vm) return (vm->iommu); } -int -vcpu_set_state(struct vcpu *vcpu, enum vcpu_state newstate, bool from_idle) -{ - int error; - - vcpu_lock(vcpu); - error = vcpu_set_state_locked(vcpu, newstate, from_idle); - vcpu_unlock(vcpu); - - return (error); -} - -enum vcpu_state -vcpu_get_state(struct vcpu *vcpu, int *hostcpu) -{ - enum vcpu_state state; - - vcpu_lock(vcpu); - state = vcpu->state; - if (hostcpu != NULL) - *hostcpu = vcpu->hostcpu; - vcpu_unlock(vcpu); - - return (state); -} - -int -vm_activate_cpu(struct vcpu *vcpu) -{ - struct vm *vm = vcpu->vm; - - if (CPU_ISSET(vcpu->vcpuid, &vm->active_cpus)) - return (EBUSY); - - VMM_CTR0(vcpu, "activated"); - CPU_SET_ATOMIC(vcpu->vcpuid, &vm->active_cpus); - return (0); -} - -int -vm_suspend_cpu(struct vm *vm, struct vcpu *vcpu) -{ - if (vcpu == NULL) { - vm->debug_cpus = vm->active_cpus; - for (int i = 0; i < vm->maxcpus; i++) { - if (CPU_ISSET(i, &vm->active_cpus)) - vcpu_notify_event(vm_vcpu(vm, i)); - } - } else { - if (!CPU_ISSET(vcpu->vcpuid, &vm->active_cpus)) - return (EINVAL); - - CPU_SET_ATOMIC(vcpu->vcpuid, &vm->debug_cpus); - vcpu_notify_event(vcpu); - } - return (0); -} - -int -vm_resume_cpu(struct vm *vm, struct vcpu *vcpu) -{ - - if (vcpu == NULL) { - CPU_ZERO(&vm->debug_cpus); - } else { - if (!CPU_ISSET(vcpu->vcpuid, &vm->debug_cpus)) - return (EINVAL); - - CPU_CLR_ATOMIC(vcpu->vcpuid, &vm->debug_cpus); - } - return (0); -} - -int -vcpu_debugged(struct vcpu *vcpu) -{ - - return (CPU_ISSET(vcpu->vcpuid, &vcpu->vm->debug_cpus)); -} - -cpuset_t -vm_active_cpus(struct vm *vm) -{ - - return (vm->active_cpus); -} - -cpuset_t -vm_debug_cpus(struct vm *vm) -{ - - return (vm->debug_cpus); -} - -cpuset_t -vm_suspended_cpus(struct vm *vm) -{ - - return (vm->suspended_cpus); -} - /* * Returns the subset of vCPUs in tostart that are awaiting startup. * These vCPUs are also marked as no longer awaiting startup. @@ -2192,47 +1760,6 @@ vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state) return (0); } -/* - * This function is called to ensure that a vcpu "sees" a pending event - * as soon as possible: - * - If the vcpu thread is sleeping then it is woken up. - * - If the vcpu is running on a different host_cpu then an IPI will be directed - * to the host_cpu to cause the vcpu to trap into the hypervisor. - */ -static void -vcpu_notify_event_locked(struct vcpu *vcpu) -{ - int hostcpu; - - hostcpu = vcpu->hostcpu; - if (vcpu->state == VCPU_RUNNING) { - KASSERT(hostcpu != NOCPU, ("vcpu running on invalid hostcpu")); - if (hostcpu != curcpu) { - ipi_cpu(hostcpu, vmm_ipinum); - } else { - /* - * If the 'vcpu' is running on 'curcpu' then it must - * be sending a notification to itself (e.g. SELF_IPI). - * The pending event will be picked up when the vcpu - * transitions back to guest context. - */ - } - } else { - KASSERT(hostcpu == NOCPU, ("vcpu state %d not consistent " - "with hostcpu %d", vcpu->state, hostcpu)); - if (vcpu->state == VCPU_SLEEPING) - wakeup_one(vcpu); - } -} - -void -vcpu_notify_event(struct vcpu *vcpu) -{ - vcpu_lock(vcpu); - vcpu_notify_event_locked(vcpu); - vcpu_unlock(vcpu); -} - void vcpu_notify_lapic(struct vcpu *vcpu) { diff --git a/sys/amd64/vmm/vmm_lapic.c b/sys/amd64/vmm/vmm_lapic.c index 63bdee69bb59..44bae5da31e5 100644 --- a/sys/amd64/vmm/vmm_lapic.c +++ b/sys/amd64/vmm/vmm_lapic.c @@ -34,6 +34,7 @@ #include #include +#include #include #include "vmm_lapic.h" diff --git a/sys/amd64/vmm/x86.c b/sys/amd64/vmm/x86.c index 2e2224595ab4..f32107124eb8 100644 --- a/sys/amd64/vmm/x86.c +++ b/sys/amd64/vmm/x86.c @@ -39,6 +39,7 @@ #include #include +#include #include "vmm_host.h" #include "vmm_util.h" diff --git a/sys/arm64/include/vmm.h b/sys/arm64/include/vmm.h index 16292dd42f28..14b4d1be10a3 100644 --- a/sys/arm64/include/vmm.h +++ b/sys/arm64/include/vmm.h @@ -181,24 +181,11 @@ DECLARE_VMMOPS_FUNC(int, restore_tsc, (void *vcpui, uint64_t now)); #endif #endif -int vm_create(const char *name, struct vm **retvm); -struct vcpu *vm_alloc_vcpu(struct vm *vm, int vcpuid); -void vm_disable_vcpu_creation(struct vm *vm); -void vm_lock_vcpus(struct vm *vm); -void vm_unlock_vcpus(struct vm *vm); -void vm_destroy(struct vm *vm); -int vm_reinit(struct vm *vm); const char *vm_name(struct vm *vm); -uint16_t vm_get_maxcpus(struct vm *vm); -void vm_get_topology(struct vm *vm, uint16_t *sockets, uint16_t *cores, - uint16_t *threads, uint16_t *maxcpus); -int vm_set_topology(struct vm *vm, uint16_t sockets, uint16_t cores, - uint16_t threads, uint16_t maxcpus); int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval); int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val); int vm_run(struct vcpu *vcpu); -int vm_suspend(struct vm *vm, enum vm_suspend_how how); void* vm_get_cookie(struct vm *vm); int vcpu_vcpuid(struct vcpu *vcpu); void *vcpu_get_cookie(struct vcpu *vcpu); @@ -206,9 +193,6 @@ struct vm *vcpu_vm(struct vcpu *vcpu); struct vcpu *vm_vcpu(struct vm *vm, int cpu); int vm_get_capability(struct vcpu *vcpu, int type, int *val); int vm_set_capability(struct vcpu *vcpu, int type, int val); -int vm_activate_cpu(struct vcpu *vcpu); -int vm_suspend_cpu(struct vm *vm, struct vcpu *vcpu); -int vm_resume_cpu(struct vm *vm, struct vcpu *vcpu); int vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far); int vm_attach_vgic(struct vm *vm, struct vm_vgic_descr *descr); int vm_assert_irq(struct vm *vm, uint32_t irq); @@ -218,13 +202,8 @@ int vm_raise_msi(struct vm *vm, uint64_t msg, uint64_t addr, int bus, int slot, struct vm_exit *vm_exitinfo(struct vcpu *vcpu); void vm_exit_suspended(struct vcpu *vcpu, uint64_t pc); void vm_exit_debug(struct vcpu *vcpu, uint64_t pc); -void vm_exit_rendezvous(struct vcpu *vcpu, uint64_t pc); void vm_exit_astpending(struct vcpu *vcpu, uint64_t pc); -cpuset_t vm_active_cpus(struct vm *vm); -cpuset_t vm_debug_cpus(struct vm *vm); -cpuset_t vm_suspended_cpus(struct vm *vm); - static __inline int vcpu_rendezvous_pending(struct vm_eventinfo *info) { @@ -239,14 +218,9 @@ vcpu_suspended(struct vm_eventinfo *info) return (*info->sptr); } -int vcpu_debugged(struct vcpu *vcpu); - void *vcpu_stats(struct vcpu *vcpu); -void vcpu_notify_event(struct vcpu *vcpu); struct vm_mem *vm_mem(struct vm *vm); -enum vm_reg_name vm_segment_name(int seg_encoding); - struct vm_copyinfo { uint64_t gpa; size_t len; diff --git a/sys/arm64/vmm/io/vgic_v3.c b/sys/arm64/vmm/io/vgic_v3.c index d78a674ab0c9..199749c12b9f 100644 --- a/sys/arm64/vmm/io/vgic_v3.c +++ b/sys/arm64/vmm/io/vgic_v3.c @@ -69,6 +69,7 @@ #include #include +#include #include "vgic.h" #include "vgic_v3.h" diff --git a/sys/arm64/vmm/vmm.c b/sys/arm64/vmm/vmm.c index 75f7f2fcaaf7..92500aa9febc 100644 --- a/sys/arm64/vmm/vmm.c +++ b/sys/arm64/vmm/vmm.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -74,20 +73,11 @@ #include "io/vgic.h" #include "io/vtimer.h" -static int vm_handle_wfi(struct vcpu *vcpu, - struct vm_exit *vme, bool *retu); - static MALLOC_DEFINE(M_VMM, "vmm", "vmm"); /* statistics */ static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcpu total runtime"); -SYSCTL_NODE(_hw, OID_AUTO, vmm, CTLFLAG_RW, NULL, NULL); - -static int vmm_ipinum; -SYSCTL_INT(_hw_vmm, OID_AUTO, ipinum, CTLFLAG_RD, &vmm_ipinum, 0, - "IPI vector used for vcpu notifications"); - struct vmm_regs { uint64_t id_aa64afr0; uint64_t id_aa64afr1; @@ -142,8 +132,6 @@ static const struct vmm_regs vmm_arch_regs_masks = { /* Host registers masked by vmm_arch_regs_masks. */ static struct vmm_regs vmm_arch_regs; -static void vcpu_notify_event_locked(struct vcpu *vcpu); - /* global statistics */ VMM_STAT(VMEXIT_COUNT, "total number of vm exits"); VMM_STAT(VMEXIT_UNKNOWN, "number of vmexits for the unknown exception"); @@ -294,14 +282,6 @@ vm_init(struct vm *vm, bool create) } } -void -vm_disable_vcpu_creation(struct vm *vm) -{ - sx_xlock(&vm->vcpus_init_lock); - vm->dying = true; - sx_xunlock(&vm->vcpus_init_lock); -} - struct vcpu * vm_alloc_vcpu(struct vm *vm, int vcpuid) { @@ -338,18 +318,6 @@ vm_alloc_vcpu(struct vm *vm, int vcpuid) return (vcpu); } -void -vm_lock_vcpus(struct vm *vm) -{ - sx_xlock(&vm->vcpus_init_lock); -} - -void -vm_unlock_vcpus(struct vm *vm) -{ - sx_unlock(&vm->vcpus_init_lock); -} - int vm_create(const char *name, struct vm **retvm) { @@ -363,6 +331,7 @@ vm_create(const char *name, struct vm **retvm) return (error); } strcpy(vm->name, name); + mtx_init(&vm->rendezvous_mtx, "vm rendezvous lock", 0, MTX_DEF); sx_init(&vm->vcpus_init_lock, "vm vcpus"); vm->sockets = 1; @@ -379,35 +348,6 @@ vm_create(const char *name, struct vm **retvm) return (0); } -void -vm_get_topology(struct vm *vm, uint16_t *sockets, uint16_t *cores, - uint16_t *threads, uint16_t *maxcpus) -{ - *sockets = vm->sockets; - *cores = vm->cores; - *threads = vm->threads; - *maxcpus = vm->maxcpus; -} - -uint16_t -vm_get_maxcpus(struct vm *vm) -{ - return (vm->maxcpus); -} - -int -vm_set_topology(struct vm *vm, uint16_t sockets, uint16_t cores, - uint16_t threads, uint16_t maxcpus) -{ - /* Ignore maxcpus. */ - if ((sockets * cores * threads) > vm->maxcpus) - return (EINVAL); - vm->sockets = sockets; - vm->cores = cores; - vm->threads = threads; - return(0); -} - static void vm_cleanup(struct vm *vm, bool destroy) { @@ -452,23 +392,11 @@ vm_destroy(struct vm *vm) free(vm, M_VMM); } -int -vm_reinit(struct vm *vm) +void +vm_reset(struct vm *vm) { - int error; - - /* - * A virtual machine can be reset only if all vcpus are suspended. - */ - if (CPU_CMP(&vm->suspended_cpus, &vm->active_cpus) == 0) { - vm_cleanup(vm, false); - vm_init(vm, false); - error = 0; - } else { - error = EBUSY; - } - - return (error); + vm_cleanup(vm, false); + vm_init(vm, false); } const char * @@ -765,33 +693,6 @@ out_user: return (0); } *** 1407 LINES SKIPPED *** From nobody Tue Mar 31 15:59:07 2026 X-Original-To: dev-commits-src-branches@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 4flXqJ2ZRSz6WFLs for ; Tue, 31 Mar 2026 15:59:08 +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 4flXqH6lgzz3h2W for ; Tue, 31 Mar 2026 15:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972748; 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=KcFbbySV2eI7KOIJCQrwFG8b0DkMP+qx+ibmG1hEeO0=; b=YkTSUnOqMl83kewMoBU5+8zdpZxAI2h4b9/XCpnqES/1ohFnzc+pyao8BdxY/5dZfqttOB zzao9LPDbsmXdzQ2XU8AjC1ZFH/8Umb4t1yteLCnp5+nzVSqH5q646wGEj6G/xHxRmLrfx n2ke5IXSgRoBlAGo/gUDTXsFMQUT+9YgFC5TEoLdIUp4ENu60PIa5pNtqNowdlXqVZsEF1 NWWXv05NooVdqb2wiA0GoMUZHzA8UAVFSsxyJSMSSf+PsSDVr6D+2LDquyUj1q5LnqXZJu tiwOY79BpIDvfryGMepHIveEB0nt0FqIZet4jsCrexhkqoCTzw/rPhKhof55OQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972748; a=rsa-sha256; cv=none; b=h6ONTGsV4fmkQJ1EVURELg4YjN2mKgji1+IabTfwbIs04AYgHhft8mGPmoTDnIDVTDYF6W ArYKS9axUE1xOC/42uHpC5Tx74gfk7NxgYJPoBU3E6vQ2yb01w8zuiLGKVkAoOzTXmsj2/ RyhVvaaMPCcomD0nwqAI4N1r5OE7Txe+tYg40kjiOzwWTWr20QX9GY7Esz0sNqWPHE3mS/ W/p+Ho4sZoAVjZH7bVL98sxRQ3NBrgAF5qR0UhHrvHBQkOFR41VipSOJI4G6DVgMh4cTqX Mq1xQMcuQ+uXu1vvRRJH0V2tgDIa3RCR9RhM7JHsQVxl+QTByBI4yqSa4I5vVg== 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=1774972748; 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=KcFbbySV2eI7KOIJCQrwFG8b0DkMP+qx+ibmG1hEeO0=; b=HS+d/HMbUE+RUBVZKSotoqDSRVgNRJqhb4LuCSVucirusU3ovx8bkf2SSNe2F7voDdENnm /mppEIQ/DgPq8qTOjwzB83tujjkkKuUIZWsmtJUFXrkwfoz158pdXDDNe2gylOTOlkqnwz gWjxOMcRgTtRROffYxlCAux+1xiY54sP93HJIFYIKVCuf9dxcFjWnqFI/fnnMMH30f9uOO /19elXomgWk6MyL8AiZo++57OWTkh/T6hOWhgBGQWuFbO/FDt0n2rJh7A9x++lfm61Jrjm cfvvQQBDtSfRPhWVLiy7NCDZ8VywuSTVWhRQGlFSJHPe48yPmUVAdfXOgVKNxg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqH67bRzcQf for ; Tue, 31 Mar 2026 15:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a212 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: a426ae1e411e - stable/15 - divert: Use a better source identifier for netisr_queue_src() calls List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a426ae1e411ee315682964dc1a423eb023f7341d Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:07 +0000 Message-Id: <69cbef4b.3a212.79070f1e@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a426ae1e411ee315682964dc1a423eb023f7341d commit a426ae1e411ee315682964dc1a423eb023f7341d Author: Mark Johnston AuthorDate: 2026-02-26 20:25:35 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 divert: Use a better source identifier for netisr_queue_src() calls These opaque IDs are used by netisr to distribute work among threads. The mapping function is simply SourceID % numthreads, so using socket addresses as source IDs isn't going to distribute packets well due to alignment. Use the divert socket's generation number instead, as that suits this purpose much better. Reviewed by: zlei, glebius MFC after: 1 week Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55537 (cherry picked from commit 5547a7bb39accd8f151b53e90b41d13b55f84c95) --- sys/netinet/ip_divert.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index f98a599e7554..75371c7dacb3 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -503,8 +503,10 @@ static int div_output_inbound(int family, struct socket *so, struct mbuf *m, struct sockaddr_in *sin) { + struct divcb *dcb; struct ifaddr *ifa; + dcb = so->so_pcb; if (m->m_pkthdr.rcvif == NULL) { /* * No luck with the name, check by IP address. @@ -541,14 +543,14 @@ div_output_inbound(int family, struct socket *so, struct mbuf *m, m->m_flags |= M_MCAST; else if (in_ifnet_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) m->m_flags |= M_BCAST; - netisr_queue_src(NETISR_IP, (uintptr_t)so, m); + netisr_queue_src(NETISR_IP, (uintptr_t)dcb->dcb_gencnt, m); DIVSTAT_INC(inbound); break; } #endif #ifdef INET6 case AF_INET6: - netisr_queue_src(NETISR_IPV6, (uintptr_t)so, m); + netisr_queue_src(NETISR_IPV6, (uintptr_t)dcb->dcb_gencnt, m); DIVSTAT_INC(inbound); break; #endif From nobody Tue Mar 31 15:59:10 2026 X-Original-To: dev-commits-src-branches@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 4flXqS0pbnz6WFQr for ; Tue, 31 Mar 2026 15:59:16 +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 4flXqL3g4yz3h75 for ; Tue, 31 Mar 2026 15:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972750; 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=SMssD3PrZUtZhLK77/CjR702Z3VjoM7FGNx+yPCM7sA=; b=YlzmEFFUrmUKKBqUWi7M5kD3vjXWPrNnQLt260xRss8arBVcMHY53HB/1FYAZaj3LekRj2 CkAsqqZeGVNnxaGLlDiU+VwtzPMdWo5yC79F+Q/84LYpc+/h/CUHvlWk0PqQFBpGh0N06U cT5EOYS4sCEh3V2dp8Ed4sZYnqg8zfqjWlcNLK2OIsaQGseVyLtivqL/pQ8dPMeUTgWg/l qiv/J/8/0OG+XmmGQURA1f5B/7JyA10X508vbdXVtJMPTU7f7CmvRlEV8ttDffVknmjQUV rteg/gqRmNFM2m9ELZxIJFLjOt0j5TGrwRA+alrkR8DkPLLtcBTTRaNG6m5mTQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972750; a=rsa-sha256; cv=none; b=cS9d6yV5atHwrO7PUf++UNy1leY1nOGCT+HxCVzccZz6Z/RJH2F242KtRNKZ9zcuFgW6jg A1Pvk/uGvv0ZhQKQT1X9+2SJcWGmMX4eD6Yl/qdOO+mLlcwMuRnVaiCLPH3wMYmvJFN/hJ kWMplQobzDIHX11vyjExXRsqy/7g+EKIAmpOpDrCNjNU07l3mUNimWJJgvJhtCLBTCDPHP zYsFbkTUgSMgN3DQHurLd0C2EyfQviDWCkPpja/C1rZaKvEIuefEn5xO0NDlp0ki1sOmQU cRyR41FLnTn6yCRDDjJI6XFVkJMcqLGi2oJqHNh8OtZ7sQmID45MSvLKizCgeQ== 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=1774972750; 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=SMssD3PrZUtZhLK77/CjR702Z3VjoM7FGNx+yPCM7sA=; b=GpL3eeqA2IGXke2MuJvicepOIYUqRQUiOkF4/CqFP78tsqDqIYAVV4du7Nc9Gv8OaR6WdJ z5lN3nXpp8q+iB9fKcSnif2Vsrs76tNF8qZEwtlD1Zq0bvmRSj1xBrws8qm4gFA6RxgfOj f7GpeFKt4jYEfI4wWhnjCMZpBTmguNEvdbHAwM1GWJgq4OLcC/sUrtK2SBf4/ob0hCZJOj +dycwRfQoOtYqKTDPOPrHzzYBSeTfO4/n4dOZ7WFUbRJLBEmewiejNY29q39eT8SSkNjCQ Oe+CW+dSqF1fxAONhyfq/H6DucAUNBBuwO2zRKnRXEGfOtmJeb0AALW4rTZMRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqL0znVzcQg for ; Tue, 31 Mar 2026 15:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aa77 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: e8573985e607 - stable/15 - vmm: Consolidate vm and vcpu definitions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e8573985e60718b53900216ca8697ef2d84da05e Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:10 +0000 Message-Id: <69cbef4e.3aa77.2857c347@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e8573985e60718b53900216ca8697ef2d84da05e commit e8573985e60718b53900216ca8697ef2d84da05e Author: Mark Johnston AuthorDate: 2026-01-08 21:53:31 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 vmm: Consolidate vm and vcpu definitions There is quite a lot of duplication of code between amd64, arm64 and riscv with respect to VM and vCPU state management. This is a bit tricky to resolve since struct vm and struct vcpu are private to vmm.c and both structures contain a mix of machine-dependent and machine-independent fields. To allow deduplication without also introducing a lot of churn, follow the approach of struct pcpu and 1) lift the definitions of those structures into a new header, sys/dev/vmm/vmm_vm.h, and 2) define machine-dependent macros, VMM_VM_MD_FIELDS and VMM_VCPU_MD_FIELDS which lay out the machine-dependent fields. One disadvantage of this approach is that the two structures are no longer private to vmm.c, but I think this is acceptable. No functional change intended. A follow-up change will move a good deal of machine/vmm/vmm.c into sys/dev/vmm/vmm_vm.c. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53584 (cherry picked from commit a6411f6b7df46edc7167a7844ed443db7a91a031) --- sys/amd64/include/vmm.h | 55 +++++++------- sys/amd64/vmm/amd/svm.c | 2 +- sys/amd64/vmm/intel/vmx.c | 2 +- sys/amd64/vmm/io/vhpet.c | 3 +- sys/amd64/vmm/vmm.c | 83 +-------------------- sys/arm64/include/vmm.h | 71 +++++++++--------- sys/arm64/include/vmm_instruction_emul.h | 8 ++ sys/arm64/vmm/io/vgic_v3.c | 3 +- sys/arm64/vmm/vmm.c | 67 +---------------- sys/arm64/vmm/vmm_arm64.c | 2 +- sys/dev/vmm/vmm_dev.c | 1 + sys/dev/vmm/vmm_mem.c | 1 + sys/dev/vmm/vmm_mem.h | 3 + sys/dev/vmm/vmm_vm.h | 121 +++++++++++++++++++++++++++++++ sys/riscv/include/vmm.h | 44 +++++------ sys/riscv/include/vmm_instruction_emul.h | 6 ++ sys/riscv/vmm/vmm.c | 56 +------------- sys/riscv/vmm/vmm_aplic.c | 3 +- sys/riscv/vmm/vmm_fence.c | 8 +- sys/riscv/vmm/vmm_riscv.c | 2 +- 20 files changed, 239 insertions(+), 302 deletions(-) diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h index 5cf1ae2d769c..e1df85aa91b6 100644 --- a/sys/amd64/include/vmm.h +++ b/sys/amd64/include/vmm.h @@ -123,6 +123,33 @@ enum x2apic_state { #define VM_INTINFO_SWINTR (4 << 8) #ifdef _KERNEL +#define VMM_VCPU_MD_FIELDS \ + struct vlapic *vlapic; /* (i) APIC device model */ \ + enum x2apic_state x2apic_state; /* (i) APIC mode */ \ + uint64_t exitintinfo; /* (i) events pending at VM exit */ \ + int nmi_pending; /* (i) NMI pending */ \ + int extint_pending; /* (i) INTR pending */ \ + int exception_pending; /* (i) exception pending */ \ + int exc_vector; /* (x) exception collateral */ \ + int exc_errcode_valid; \ + uint32_t exc_errcode; \ + struct savefpu *guestfpu; /* (a,i) guest fpu state */ \ + uint64_t guest_xcr0; /* (i) guest %xcr0 register */ \ + struct vm_exit exitinfo; /* (x) exit reason and collateral */ \ + cpuset_t exitinfo_cpuset; /* (x) storage for vmexit handlers */ \ + uint64_t nextrip; /* (x) next instruction to execute */ \ + uint64_t tsc_offset /* (o) TSC offsetting */ + +#define VMM_VM_MD_FIELDS \ + cpuset_t startup_cpus; /* (i) [r] waiting for startup */ \ + void *iommu; /* (x) iommu-specific data */ \ + struct vioapic *vioapic; /* (i) virtual ioapic */ \ + struct vatpic *vatpic; /* (i) virtual atpic */ \ + struct vatpit *vatpit; /* (i) virtual atpit */ \ + struct vpmtmr *vpmtmr; /* (i) virtual ACPI PM timer */ \ + struct vrtc *vrtc; /* (o) virtual RTC */ \ + struct vhpet *vhpet /* (i) virtual HPET */ + struct vm; struct vm_exception; struct vm_mem; @@ -326,34 +353,6 @@ bool vmm_is_pptdev(int bus, int slot, int func); void *vm_iommu_domain(struct vm *vm); -enum vcpu_state { - VCPU_IDLE, - VCPU_FROZEN, - VCPU_RUNNING, - VCPU_SLEEPING, -}; - -int vcpu_set_state(struct vcpu *vcpu, enum vcpu_state state, bool from_idle); -int vcpu_set_state_all(struct vm *vm, enum vcpu_state state); -enum vcpu_state vcpu_get_state(struct vcpu *vcpu, int *hostcpu); - -static int __inline -vcpu_is_running(struct vcpu *vcpu, int *hostcpu) -{ - return (vcpu_get_state(vcpu, hostcpu) == VCPU_RUNNING); -} - -#ifdef _SYS_PROC_H_ -static int __inline -vcpu_should_yield(struct vcpu *vcpu) -{ - struct thread *td; - - td = curthread; - return (td->td_ast != 0 || td->td_owepreempt != 0); -} -#endif - void *vcpu_stats(struct vcpu *vcpu); void vcpu_notify_event(struct vcpu *vcpu); void vcpu_notify_lapic(struct vcpu *vcpu); diff --git a/sys/amd64/vmm/amd/svm.c b/sys/amd64/vmm/amd/svm.c index 2fe6a5bc3584..37c950cfbc5f 100644 --- a/sys/amd64/vmm/amd/svm.c +++ b/sys/amd64/vmm/amd/svm.c @@ -50,12 +50,12 @@ #include #include #include -#include #include #include #include #include +#include #include "vmm_lapic.h" #include "vmm_stat.h" diff --git a/sys/amd64/vmm/intel/vmx.c b/sys/amd64/vmm/intel/vmx.c index 4189c1214b40..7a2d0de6beff 100644 --- a/sys/amd64/vmm/intel/vmx.c +++ b/sys/amd64/vmm/intel/vmx.c @@ -53,13 +53,13 @@ #include #include -#include #include #include #include #include #include +#include #include "vmm_lapic.h" #include "vmm_host.h" diff --git a/sys/amd64/vmm/io/vhpet.c b/sys/amd64/vmm/io/vhpet.c index 88063f2952e5..cdeb5e059128 100644 --- a/sys/amd64/vmm/io/vhpet.c +++ b/sys/amd64/vmm/io/vhpet.c @@ -38,10 +38,11 @@ #include #include -#include #include #include + +#include #include #include "vmm_lapic.h" diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index f3f9717129c9..4b93e020f8dc 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -71,6 +71,7 @@ #include #include #include +#include #include "vmm_ioport.h" #include "vmm_host.h" @@ -91,88 +92,6 @@ struct vlapic; -/* - * Initialization: - * (a) allocated when vcpu is created - * (i) initialized when vcpu is created and when it is reinitialized - * (o) initialized the first time the vcpu is created - * (x) initialized before use - */ -struct vcpu { - struct mtx mtx; /* (o) protects 'state' and 'hostcpu' */ - enum vcpu_state state; /* (o) vcpu state */ - int vcpuid; /* (o) */ - int hostcpu; /* (o) vcpu's host cpu */ - int reqidle; /* (i) request vcpu to idle */ - struct vm *vm; /* (o) */ - void *cookie; /* (i) cpu-specific data */ - struct vlapic *vlapic; /* (i) APIC device model */ - enum x2apic_state x2apic_state; /* (i) APIC mode */ - uint64_t exitintinfo; /* (i) events pending at VM exit */ - int nmi_pending; /* (i) NMI pending */ - int extint_pending; /* (i) INTR pending */ - int exception_pending; /* (i) exception pending */ - int exc_vector; /* (x) exception collateral */ - int exc_errcode_valid; - uint32_t exc_errcode; - struct savefpu *guestfpu; /* (a,i) guest fpu state */ - uint64_t guest_xcr0; /* (i) guest %xcr0 register */ - void *stats; /* (a,i) statistics */ - struct vm_exit exitinfo; /* (x) exit reason and collateral */ - cpuset_t exitinfo_cpuset; /* (x) storage for vmexit handlers */ - uint64_t nextrip; /* (x) next instruction to execute */ - uint64_t tsc_offset; /* (o) TSC offsetting */ -}; - -#define vcpu_lock_init(v) mtx_init(&((v)->mtx), "vcpu lock", 0, MTX_SPIN) -#define vcpu_lock_destroy(v) mtx_destroy(&((v)->mtx)) -#define vcpu_lock(v) mtx_lock_spin(&((v)->mtx)) -#define vcpu_unlock(v) mtx_unlock_spin(&((v)->mtx)) -#define vcpu_assert_locked(v) mtx_assert(&((v)->mtx), MA_OWNED) - -/* - * Initialization: - * (o) initialized the first time the VM is created - * (i) initialized when VM is created and when it is reinitialized - * (x) initialized before use - * - * Locking: - * [m] mem_segs_lock - * [r] rendezvous_mtx - * [v] reads require one frozen vcpu, writes require freezing all vcpus - */ -struct vm { - void *cookie; /* (i) cpu-specific data */ - void *iommu; /* (x) iommu-specific data */ - struct vhpet *vhpet; /* (i) virtual HPET */ - struct vioapic *vioapic; /* (i) virtual ioapic */ - struct vatpic *vatpic; /* (i) virtual atpic */ - struct vatpit *vatpit; /* (i) virtual atpit */ - struct vpmtmr *vpmtmr; /* (i) virtual ACPI PM timer */ - struct vrtc *vrtc; /* (o) virtual RTC */ - volatile cpuset_t active_cpus; /* (i) active vcpus */ - volatile cpuset_t debug_cpus; /* (i) vcpus stopped for debug */ - cpuset_t startup_cpus; /* (i) [r] waiting for startup */ - int suspend; /* (i) stop VM execution */ - bool dying; /* (o) is dying */ - volatile cpuset_t suspended_cpus; /* (i) suspended vcpus */ - volatile cpuset_t halted_cpus; /* (x) cpus in a hard halt */ - cpuset_t rendezvous_req_cpus; /* (x) [r] rendezvous requested */ - cpuset_t rendezvous_done_cpus; /* (x) [r] rendezvous finished */ - void *rendezvous_arg; /* (x) [r] rendezvous func/arg */ - vm_rendezvous_func_t rendezvous_func; - struct mtx rendezvous_mtx; /* (o) rendezvous lock */ - struct vm_mem mem; /* (i) [m+v] guest memory */ - char name[VM_MAX_NAMELEN+1]; /* (o) virtual machine name */ - struct vcpu **vcpu; /* (o) guest vcpus */ - /* The following describe the vm cpu topology */ - uint16_t sockets; /* (o) num of sockets */ - uint16_t cores; /* (o) num of cores/socket */ - uint16_t threads; /* (o) num of threads/core */ - uint16_t maxcpus; /* (o) max pluggable cpus */ - struct sx vcpus_init_lock; /* (o) */ -}; - #define VMM_CTR0(vcpu, format) \ VCPU_CTR0((vcpu)->vm, (vcpu)->vcpuid, format) diff --git a/sys/arm64/include/vmm.h b/sys/arm64/include/vmm.h index e67540eac66d..16292dd42f28 100644 --- a/sys/arm64/include/vmm.h +++ b/sys/arm64/include/vmm.h @@ -107,14 +107,33 @@ enum vm_reg_name { #define VM_GUEST_BASE_IPA 0x80000000UL /* Guest kernel start ipa */ #ifdef _KERNEL -struct vm; -struct vm_exception; -struct vm_exit; -struct vm_run; -struct vm_object; -struct vm_guest_paging; -struct vm_vgic_descr; -struct pmap; +#include + +#define VMM_VCPU_MD_FIELDS \ + struct vm_exit exitinfo; \ + uint64_t nextpc; /* (x) next instruction to execute */ \ + struct vfpstate *guestfpu /* (a,i) guest fpu state */ + +#define VMM_VM_MD_FIELDS \ + struct vmm_mmio_region mmio_region[VM_MAX_MMIO_REGIONS]; \ + struct vmm_special_reg special_reg[VM_MAX_SPECIAL_REGS] + +struct vmm_mmio_region { + uint64_t start; + uint64_t end; + mem_region_read_t read; + mem_region_write_t write; +}; +#define VM_MAX_MMIO_REGIONS 4 + +struct vmm_special_reg { + uint32_t esr_iss; + uint32_t esr_mask; + reg_read_t reg_read; + reg_write_t reg_write; + void *arg; +}; +#define VM_MAX_SPECIAL_REGS 16 struct vm_eventinfo { void *rptr; /* rendezvous cookie */ @@ -125,6 +144,15 @@ struct vm_eventinfo { #define DECLARE_VMMOPS_FUNC(ret_type, opname, args) \ ret_type vmmops_##opname args +struct vm; +struct vm_exception; +struct vm_exit; +struct vm_run; +struct vm_object; +struct vm_guest_paging; +struct vm_vgic_descr; +struct pmap; + DECLARE_VMMOPS_FUNC(int, modinit, (int ipinum)); DECLARE_VMMOPS_FUNC(int, modcleanup, (void)); DECLARE_VMMOPS_FUNC(void *, init, (struct vm *vm, struct pmap *pmap)); @@ -213,33 +241,6 @@ vcpu_suspended(struct vm_eventinfo *info) int vcpu_debugged(struct vcpu *vcpu); -enum vcpu_state { - VCPU_IDLE, - VCPU_FROZEN, - VCPU_RUNNING, - VCPU_SLEEPING, -}; - -int vcpu_set_state(struct vcpu *vcpu, enum vcpu_state state, bool from_idle); -enum vcpu_state vcpu_get_state(struct vcpu *vcpu, int *hostcpu); - -static int __inline -vcpu_is_running(struct vcpu *vcpu, int *hostcpu) -{ - return (vcpu_get_state(vcpu, hostcpu) == VCPU_RUNNING); -} - -#ifdef _SYS_PROC_H_ -static int __inline -vcpu_should_yield(struct vcpu *vcpu) -{ - struct thread *td; - - td = curthread; - return (td->td_ast != 0 || td->td_owepreempt != 0); -} -#endif - void *vcpu_stats(struct vcpu *vcpu); void vcpu_notify_event(struct vcpu *vcpu); struct vm_mem *vm_mem(struct vm *vm); diff --git a/sys/arm64/include/vmm_instruction_emul.h b/sys/arm64/include/vmm_instruction_emul.h index a295f7cce127..dc281f442543 100644 --- a/sys/arm64/include/vmm_instruction_emul.h +++ b/sys/arm64/include/vmm_instruction_emul.h @@ -27,6 +27,14 @@ #ifndef _VMM_INSTRUCTION_EMUL_H_ #define _VMM_INSTRUCTION_EMUL_H_ +#include + +struct vcpu; +struct vm; +struct vie; +struct vre; +struct vm_guest_paging; + /* * Callback functions to read and write memory regions. */ diff --git a/sys/arm64/vmm/io/vgic_v3.c b/sys/arm64/vmm/io/vgic_v3.c index 6699f948d42c..d78a674ab0c9 100644 --- a/sys/arm64/vmm/io/vgic_v3.c +++ b/sys/arm64/vmm/io/vgic_v3.c @@ -57,7 +57,6 @@ #include #include #include -#include #include #include @@ -69,6 +68,8 @@ #include #include +#include + #include "vgic.h" #include "vgic_v3.h" #include "vgic_v3_reg.h" diff --git a/sys/arm64/vmm/vmm.c b/sys/arm64/vmm/vmm.c index 31d2fb3f516b..75f7f2fcaaf7 100644 --- a/sys/arm64/vmm/vmm.c +++ b/sys/arm64/vmm/vmm.c @@ -61,10 +61,12 @@ #include #include + #include #include #include #include +#include #include "arm64.h" #include "mmu.h" @@ -72,71 +74,6 @@ #include "io/vgic.h" #include "io/vtimer.h" -struct vcpu { - int flags; - enum vcpu_state state; - struct mtx mtx; - int hostcpu; /* host cpuid this vcpu last ran on */ - int vcpuid; - void *stats; - struct vm_exit exitinfo; - uint64_t nextpc; /* (x) next instruction to execute */ - struct vm *vm; /* (o) */ - void *cookie; /* (i) cpu-specific data */ - struct vfpstate *guestfpu; /* (a,i) guest fpu state */ -}; - -#define vcpu_lock_init(v) mtx_init(&((v)->mtx), "vcpu lock", 0, MTX_SPIN) -#define vcpu_lock_destroy(v) mtx_destroy(&((v)->mtx)) -#define vcpu_lock(v) mtx_lock_spin(&((v)->mtx)) -#define vcpu_unlock(v) mtx_unlock_spin(&((v)->mtx)) -#define vcpu_assert_locked(v) mtx_assert(&((v)->mtx), MA_OWNED) - -struct vmm_mmio_region { - uint64_t start; - uint64_t end; - mem_region_read_t read; - mem_region_write_t write; -}; -#define VM_MAX_MMIO_REGIONS 4 - -struct vmm_special_reg { - uint32_t esr_iss; - uint32_t esr_mask; - reg_read_t reg_read; - reg_write_t reg_write; - void *arg; -}; -#define VM_MAX_SPECIAL_REGS 16 - -/* - * Initialization: - * (o) initialized the first time the VM is created - * (i) initialized when VM is created and when it is reinitialized - * (x) initialized before use - */ -struct vm { - void *cookie; /* (i) cpu-specific data */ - volatile cpuset_t active_cpus; /* (i) active vcpus */ - volatile cpuset_t debug_cpus; /* (i) vcpus stopped for debug */ - int suspend; /* (i) stop VM execution */ - bool dying; /* (o) is dying */ - volatile cpuset_t suspended_cpus; /* (i) suspended vcpus */ - volatile cpuset_t halted_cpus; /* (x) cpus in a hard halt */ - struct vm_mem mem; /* (i) guest memory */ - char name[VM_MAX_NAMELEN + 1]; /* (o) virtual machine name */ - struct vcpu **vcpu; /* (i) guest vcpus */ - struct vmm_mmio_region mmio_region[VM_MAX_MMIO_REGIONS]; - /* (o) guest MMIO regions */ - struct vmm_special_reg special_reg[VM_MAX_SPECIAL_REGS]; - /* The following describe the vm cpu topology */ - uint16_t sockets; /* (o) num of sockets */ - uint16_t cores; /* (o) num of cores/socket */ - uint16_t threads; /* (o) num of threads/core */ - uint16_t maxcpus; /* (o) max pluggable cpus */ - struct sx vcpus_init_lock; /* (o) */ -}; - static int vm_handle_wfi(struct vcpu *vcpu, struct vm_exit *vme, bool *retu); diff --git a/sys/arm64/vmm/vmm_arm64.c b/sys/arm64/vmm/vmm_arm64.c index 5a7654ab250f..6643d32684d8 100644 --- a/sys/arm64/vmm/vmm_arm64.c +++ b/sys/arm64/vmm/vmm_arm64.c @@ -52,12 +52,12 @@ #include #include #include -#include #include #include #include #include +#include #include "mmu.h" #include "arm64.h" diff --git a/sys/dev/vmm/vmm_dev.c b/sys/dev/vmm/vmm_dev.c index f5eb72de79d8..055e991e8991 100644 --- a/sys/dev/vmm/vmm_dev.c +++ b/sys/dev/vmm/vmm_dev.c @@ -32,6 +32,7 @@ #include #include #include +#include #ifdef __amd64__ #ifdef COMPAT_FREEBSD12 diff --git a/sys/dev/vmm/vmm_mem.c b/sys/dev/vmm/vmm_mem.c index 5ae944713c81..5a73cbf7fc5b 100644 --- a/sys/dev/vmm/vmm_mem.c +++ b/sys/dev/vmm/vmm_mem.c @@ -23,6 +23,7 @@ #include #include +#include static void vm_free_memmap(struct vm *vm, int ident); diff --git a/sys/dev/vmm/vmm_mem.h b/sys/dev/vmm/vmm_mem.h index f3d22058c7b8..64bb29352a55 100644 --- a/sys/dev/vmm/vmm_mem.h +++ b/sys/dev/vmm/vmm_mem.h @@ -34,7 +34,10 @@ enum { #include #include +struct domainset; +struct vcpu; struct vm; +struct vm_guest_paging; struct vm_object; struct vmspace; diff --git a/sys/dev/vmm/vmm_vm.h b/sys/dev/vmm/vmm_vm.h new file mode 100644 index 000000000000..23f40e079da4 --- /dev/null +++ b/sys/dev/vmm/vmm_vm.h @@ -0,0 +1,121 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2011 NetApp, Inc. + * All rights reserved. + */ + +#ifndef _DEV_VMM_VM_H_ +#define _DEV_VMM_VM_H_ + +#ifdef _KERNEL + +#include + +#include +#include + +struct vcpu; + +enum vcpu_state { + VCPU_IDLE, + VCPU_FROZEN, + VCPU_RUNNING, + VCPU_SLEEPING, +}; + +/* + * Initialization: + * (a) allocated when vcpu is created + * (i) initialized when vcpu is created and when it is reinitialized + * (o) initialized the first time the vcpu is created + * (x) initialized before use + */ +struct vcpu { + struct mtx mtx; /* (o) protects 'state' and 'hostcpu' */ + enum vcpu_state state; /* (o) vcpu state */ + int vcpuid; /* (o) */ + int hostcpu; /* (o) vcpu's host cpu */ + int reqidle; /* (i) request vcpu to idle */ + struct vm *vm; /* (o) */ + void *cookie; /* (i) cpu-specific data */ + void *stats; /* (a,i) statistics */ + + VMM_VCPU_MD_FIELDS; +}; + +#define vcpu_lock_init(v) mtx_init(&((v)->mtx), "vcpu lock", 0, MTX_SPIN) +#define vcpu_lock_destroy(v) mtx_destroy(&((v)->mtx)) +#define vcpu_lock(v) mtx_lock_spin(&((v)->mtx)) +#define vcpu_unlock(v) mtx_unlock_spin(&((v)->mtx)) +#define vcpu_assert_locked(v) mtx_assert(&((v)->mtx), MA_OWNED) + +int vcpu_set_state(struct vcpu *vcpu, enum vcpu_state state, bool from_idle); +#ifdef __amd64__ +int vcpu_set_state_all(struct vm *vm, enum vcpu_state state); +#endif +enum vcpu_state vcpu_get_state(struct vcpu *vcpu, int *hostcpu); + +static int __inline +vcpu_is_running(struct vcpu *vcpu, int *hostcpu) +{ + return (vcpu_get_state(vcpu, hostcpu) == VCPU_RUNNING); +} + +#ifdef _SYS_PROC_H_ +static int __inline +vcpu_should_yield(struct vcpu *vcpu) +{ + struct thread *td; + + td = curthread; + return (td->td_ast != 0 || td->td_owepreempt != 0); +} +#endif + +typedef void (*vm_rendezvous_func_t)(struct vcpu *vcpu, void *arg); + +/* + * Initialization: + * (o) initialized the first time the VM is created + * (i) initialized when VM is created and when it is reinitialized + * (x) initialized before use + * + * Locking: + * [m] mem_segs_lock + * [r] rendezvous_mtx + * [v] reads require one frozen vcpu, writes require freezing all vcpus + */ +struct vm { + void *cookie; /* (i) cpu-specific data */ + struct vcpu **vcpu; /* (o) guest vcpus */ + struct vm_mem mem; /* (i) [m+v] guest memory */ + + char name[VM_MAX_NAMELEN + 1]; /* (o) virtual machine name */ + struct sx vcpus_init_lock; /* (o) */ + + bool dying; /* (o) is dying */ + int suspend; /* (i) stop VM execution */ + + volatile cpuset_t active_cpus; /* (i) active vcpus */ + volatile cpuset_t debug_cpus; /* (i) vcpus stopped for debug */ + volatile cpuset_t suspended_cpus; /* (i) suspended vcpus */ + volatile cpuset_t halted_cpus; /* (x) cpus in a hard halt */ + + cpuset_t rendezvous_req_cpus; /* (x) [r] rendezvous requested */ + cpuset_t rendezvous_done_cpus; /* (x) [r] rendezvous finished */ + void *rendezvous_arg; /* (x) [r] rendezvous func/arg */ + vm_rendezvous_func_t rendezvous_func; + struct mtx rendezvous_mtx; /* (o) rendezvous lock */ + + uint16_t sockets; /* (o) num of sockets */ + uint16_t cores; /* (o) num of cores/socket */ + uint16_t threads; /* (o) num of threads/core */ + uint16_t maxcpus; /* (o) max pluggable cpus */ + + VMM_VM_MD_FIELDS; +}; + +#endif /* _KERNEL */ + +#endif /* !_DEV_VMM_VM_H_ */ diff --git a/sys/riscv/include/vmm.h b/sys/riscv/include/vmm.h index 361140834805..a7318294464c 100644 --- a/sys/riscv/include/vmm.h +++ b/sys/riscv/include/vmm.h @@ -104,6 +104,15 @@ enum vm_reg_name { #define VM_INTINFO_SWINTR (4 << 8) #ifdef _KERNEL +#include + +#define VMM_VCPU_MD_FIELDS \ + struct vm_exit exitinfo; \ + uint64_t nextpc; /* (x) next instruction to execute */ \ + struct fpreg *guestfpu /* (a,i) guest fpu state */ + +#define VMM_VM_MD_FIELDS \ + struct vmm_mmio_region mmio_region[VM_MAX_MMIO_REGIONS] struct vm; struct vm_exception; @@ -114,6 +123,14 @@ struct vm_guest_paging; struct vm_aplic_descr; struct pmap; +struct vmm_mmio_region { + uint64_t start; + uint64_t end; + mem_region_read_t read; + mem_region_write_t write; +}; +#define VM_MAX_MMIO_REGIONS 4 + struct vm_eventinfo { void *rptr; /* rendezvous cookie */ int *sptr; /* suspend cookie */ @@ -203,33 +220,6 @@ vcpu_suspended(struct vm_eventinfo *info) int vcpu_debugged(struct vcpu *vcpu); -enum vcpu_state { - VCPU_IDLE, - VCPU_FROZEN, - VCPU_RUNNING, - VCPU_SLEEPING, -}; - -int vcpu_set_state(struct vcpu *vcpu, enum vcpu_state state, bool from_idle); -enum vcpu_state vcpu_get_state(struct vcpu *vcpu, int *hostcpu); - -static int __inline -vcpu_is_running(struct vcpu *vcpu, int *hostcpu) -{ - return (vcpu_get_state(vcpu, hostcpu) == VCPU_RUNNING); -} - -#ifdef _SYS_PROC_H_ -static int __inline -vcpu_should_yield(struct vcpu *vcpu) -{ - struct thread *td; - - td = curthread; - return (td->td_ast != 0 || td->td_owepreempt != 0); -} -#endif - void *vcpu_stats(struct vcpu *vcpu); void vcpu_notify_event(struct vcpu *vcpu); struct vm_mem *vm_mem(struct vm *vm); diff --git a/sys/riscv/include/vmm_instruction_emul.h b/sys/riscv/include/vmm_instruction_emul.h index bee63d2f86ba..5041b10569f5 100644 --- a/sys/riscv/include/vmm_instruction_emul.h +++ b/sys/riscv/include/vmm_instruction_emul.h @@ -29,6 +29,12 @@ #ifndef _VMM_INSTRUCTION_EMUL_H_ #define _VMM_INSTRUCTION_EMUL_H_ +struct vcpu; +struct vie; +struct vre; +struct vm; +struct vm_guest_paging; + /* * Callback functions to read and write memory regions. */ diff --git a/sys/riscv/vmm/vmm.c b/sys/riscv/vmm/vmm.c index 23b57ad3b7aa..fea6421962dc 100644 --- a/sys/riscv/vmm/vmm.c +++ b/sys/riscv/vmm/vmm.c @@ -71,67 +71,13 @@ #include #include #include +#include #include "vmm_stat.h" #include "riscv.h" #include "vmm_aplic.h" -struct vcpu { - int flags; - enum vcpu_state state; - struct mtx mtx; - int hostcpu; /* host cpuid this vcpu last ran on */ - int vcpuid; - void *stats; - struct vm_exit exitinfo; - uint64_t nextpc; /* (x) next instruction to execute */ - struct vm *vm; /* (o) */ - void *cookie; /* (i) cpu-specific data */ - struct fpreg *guestfpu; /* (a,i) guest fpu state */ -}; - -#define vcpu_lock_init(v) mtx_init(&((v)->mtx), "vcpu lock", 0, MTX_SPIN) -#define vcpu_lock_destroy(v) mtx_destroy(&((v)->mtx)) -#define vcpu_lock(v) mtx_lock_spin(&((v)->mtx)) -#define vcpu_unlock(v) mtx_unlock_spin(&((v)->mtx)) -#define vcpu_assert_locked(v) mtx_assert(&((v)->mtx), MA_OWNED) - -struct vmm_mmio_region { - uint64_t start; - uint64_t end; - mem_region_read_t read; - mem_region_write_t write; -}; -#define VM_MAX_MMIO_REGIONS 4 - -/* - * Initialization: - * (o) initialized the first time the VM is created - * (i) initialized when VM is created and when it is reinitialized - * (x) initialized before use - */ -struct vm { - void *cookie; /* (i) cpu-specific data */ - volatile cpuset_t active_cpus; /* (i) active vcpus */ - volatile cpuset_t debug_cpus; /* (i) vcpus stopped for debug*/ - int suspend; /* (i) stop VM execution */ - bool dying; /* (o) is dying */ - volatile cpuset_t suspended_cpus; /* (i) suspended vcpus */ - volatile cpuset_t halted_cpus; /* (x) cpus in a hard halt */ - struct vm_mem mem; /* (i) [m+v] guest memory */ - char name[VM_MAX_NAMELEN + 1]; /* (o) virtual machine name */ - struct vcpu **vcpu; /* (i) guest vcpus */ - struct vmm_mmio_region mmio_region[VM_MAX_MMIO_REGIONS]; - /* (o) guest MMIO regions */ - /* The following describe the vm cpu topology */ - uint16_t sockets; /* (o) num of sockets */ - uint16_t cores; /* (o) num of cores/socket */ - uint16_t threads; /* (o) num of threads/core */ - uint16_t maxcpus; /* (o) max pluggable cpus */ - struct sx vcpus_init_lock; /* (o) */ -}; - static MALLOC_DEFINE(M_VMM, "vmm", "vmm"); /* statistics */ diff --git a/sys/riscv/vmm/vmm_aplic.c b/sys/riscv/vmm/vmm_aplic.c index 74cb4fef4273..eaf2caa4d313 100644 --- a/sys/riscv/vmm/vmm_aplic.c +++ b/sys/riscv/vmm/vmm_aplic.c @@ -46,7 +46,8 @@ #include #include -#include + +#include MALLOC_DEFINE(M_APLIC, "RISC-V VMM APLIC", "RISC-V AIA APLIC"); diff --git a/sys/riscv/vmm/vmm_fence.c b/sys/riscv/vmm/vmm_fence.c index f8b69aac77a9..ff7eabdb3d50 100644 --- a/sys/riscv/vmm/vmm_fence.c +++ b/sys/riscv/vmm/vmm_fence.c @@ -39,6 +39,10 @@ #include #include +#include + +#include + #include "riscv.h" #include "vmm_fence.h" @@ -145,7 +149,6 @@ vmm_fence_add(struct vm *vm, cpuset_t *cpus, struct vmm_fence *fence) struct vcpu *vcpu; uint16_t maxcpus; int hostcpu; - int state; bool enq; int i; @@ -193,8 +196,7 @@ vmm_fence_add(struct vm *vm, cpuset_t *cpus, struct vmm_fence *fence) mb(); - state = vcpu_get_state(vcpu, &hostcpu); - if (state == VCPU_RUNNING) + if (vcpu_is_running(vcpu, &hostcpu)) CPU_SET(hostcpu, &running_cpus); } diff --git a/sys/riscv/vmm/vmm_riscv.c b/sys/riscv/vmm/vmm_riscv.c index 5d39c96c682a..fe2ca5c07789 100644 --- a/sys/riscv/vmm/vmm_riscv.c +++ b/sys/riscv/vmm/vmm_riscv.c @@ -59,7 +59,6 @@ #include #include #include -#include #include #include #include @@ -67,6 +66,7 @@ #include #include +#include #include "riscv.h" #include "vmm_aplic.h" From nobody Tue Mar 31 15:59:12 2026 X-Original-To: dev-commits-src-branches@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 4flXqS3CM3z6WFQs for ; Tue, 31 Mar 2026 15:59:16 +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 4flXqQ0lJmz3h9W for ; Tue, 31 Mar 2026 15:59:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972754; 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=W+OdpPTdZTxwVJ80E+izF1qv+CN4gQI+v9Yl2tzU2fU=; b=jhJMZvZdXn4mK2I6eeaXyc0D2dGC2u86EHLRUDil9R2LDimOGNtQm8k0Hins5sk5lXkJpC uhAZwj+yiXgpdfTxuWIN2eJPvGds4+vXEAONXaV1o8Bu1Y3SwonM8X5lx/0xNUbH4m73T2 z6Mttp/0e4Mnp6q711QhhRRFvF6/48Mz5Th6KBcZL+c9qfXeOzJUraeCP4PldJ+IgRNC6H Tc3YltuWL8wLTff4rKSEBU6QjGqsxnQnCrSGdiupwGPeZ0qRffuWDZlCMZcbYStqRcdHQ8 gw9tyR9VVYSiXGM8AkF5TfV5k7PtXJOqJPligqcI2Mzw+SNgc0HrV5XP/X3wEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972754; a=rsa-sha256; cv=none; b=apqhjaz3wB1sD1Ae3AQMuHlK6ICeptB2cu18i4LtHXP9fmdClwMQhqIBBqQmBHFpzc7L9c BcnVWHnd6oy4oeM7CZ3VRnwG3HbW6e4cJ4/cSOAJq6xn67L6a4Iz/RtelcyYCUMrvGTrdo rfKLRHWodoYTyTvONCXwYTgO+jIN6nCO9x5JhHhnhBlGuetuVKWdMTvFVyvyeN0cid+p00 ksnNUTZxKA0+YbuhCLFuzp2YmYpd2/nzFmv2Kh3nyt0LkUc0OO4Ox2G91EZS36q09Mm2jm zZPB5if9oin/G9ficfLKNMnVPBO0AhKmn9Obc0u7yccZ4Hj0ay9dIHnOdtti1g== 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=1774972754; 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=W+OdpPTdZTxwVJ80E+izF1qv+CN4gQI+v9Yl2tzU2fU=; b=b2awHuAp9RXimCct0Muo33ja04e7MWfEdUA9XlmVzMLpe7ouIPx442oC4oHpM4w/3bwLCb QsX00gbF62vuNHJoFLLqjVVpgqglKIWs0gVp5YVTl32YcaLhPx3gkU7X/JN1aN1gs5/oGZ uXi2bGbMNj+PQ7595xR7UXAu6yzkxGHt8F2JitRGRa2EW5o22XyBmyjjLY2cUjK1i74S86 0vHPYsItw0uQUW6HQ14oNb3/Oh56ZapSZqFuSngcba/w/jcG6OtCqZXmruSUyDsCrHqMfd hIN7ynTxYp3ovXr3PRpOmtvIYWrDtoToc0H9UnYSYKzWWo0JEPePeQ9Wa/JIMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXqN4VYtzcNN for ; Tue, 31 Mar 2026 15:59:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a34f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:59:12 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 7c0d94051b65 - stable/15 - vmm: Move common accessors and vm_eventinfo into sys/dev/vmm List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7c0d94051b658a0f3dd09cdcb1708d88f938a535 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:59:12 +0000 Message-Id: <69cbef50.3a34f.4b729c56@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=7c0d94051b658a0f3dd09cdcb1708d88f938a535 commit 7c0d94051b658a0f3dd09cdcb1708d88f938a535 Author: Mark Johnston AuthorDate: 2026-01-08 21:54:16 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:29 +0000 vmm: Move common accessors and vm_eventinfo into sys/dev/vmm Now that struct vm and struct vcpu are defined in headers, provide inline accessors. We could just remove the accessors outright, but they don't hurt and it would result in unneeded churn. As a part of this, consolidate definitions related to struct vm_eventinfo as well. I'm not sure if struct vm_eventinfo is really needed anymore, now that vmmops_run implementations can directly access vm and vcpu fields, but this can be resolved later. No functional change intended. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53586 (cherry picked from commit 5f13d6b60740c021951ae0e4d096903cfa1679e2) --- sys/amd64/include/vmm.h | 41 +--------------------------- sys/amd64/vmm/io/vhpet.c | 1 + sys/amd64/vmm/vmm.c | 37 ------------------------- sys/amd64/vmm/vmm_ioport.c | 1 + sys/arm64/include/vmm.h | 29 +------------------- sys/arm64/vmm/io/vtimer.c | 2 ++ sys/arm64/vmm/vmm.c | 37 ------------------------- sys/arm64/vmm/vmm_reset.c | 2 ++ sys/dev/vmm/vmm_stat.h | 2 ++ sys/dev/vmm/vmm_vm.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++ sys/riscv/include/vmm.h | 30 +-------------------- sys/riscv/vmm/vmm.c | 40 --------------------------- 12 files changed, 78 insertions(+), 211 deletions(-) diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h index baf2cf42ad6c..eef8e6760fd6 100644 --- a/sys/amd64/include/vmm.h +++ b/sys/amd64/include/vmm.h @@ -160,17 +160,12 @@ struct vhpet; struct vioapic; struct vlapic; struct vmspace; +struct vm_eventinfo; struct vm_object; struct vm_guest_paging; struct pmap; enum snapshot_req; -struct vm_eventinfo { - cpuset_t *rptr; /* rendezvous cookie */ - int *sptr; /* suspend cookie */ - int *iptr; /* reqidle cookie */ -}; - #define DECLARE_VMMOPS_FUNC(ret_type, opname, args) \ typedef ret_type (*vmmops_##opname##_t) args; \ ret_type vmmops_##opname args @@ -233,8 +228,6 @@ struct vmm_ops { extern const struct vmm_ops vmm_ops_intel; extern const struct vmm_ops vmm_ops_amd; -const char *vm_name(struct vm *vm); - int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hpa); int vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len); int vm_assign_pptdev(struct vm *vm, int bus, int slot, int func); @@ -253,9 +246,6 @@ void vm_nmi_clear(struct vcpu *vcpu); int vm_inject_extint(struct vcpu *vcpu); int vm_extint_pending(struct vcpu *vcpu); void vm_extint_clear(struct vcpu *vcpu); -int vcpu_vcpuid(struct vcpu *vcpu); -struct vm *vcpu_vm(struct vcpu *vcpu); -struct vcpu *vm_vcpu(struct vm *vm, int cpu); struct vlapic *vm_lapic(struct vcpu *vcpu); struct vioapic *vm_ioapic(struct vm *vm); struct vhpet *vm_hpet(struct vm *vm); @@ -280,33 +270,6 @@ cpuset_t vm_start_cpus(struct vm *vm, const cpuset_t *tostart); void vm_await_start(struct vm *vm, const cpuset_t *waiting); #endif /* _SYS__CPUSET_H_ */ -static __inline int -vcpu_rendezvous_pending(struct vcpu *vcpu, struct vm_eventinfo *info) -{ - /* - * This check isn't done with atomic operations or under a lock because - * there's no need to. If the vcpuid bit is set, the vcpu is part of a - * rendezvous and the bit won't be cleared until the vcpu enters the - * rendezvous. On rendezvous exit, the cpuset is cleared and the vcpu - * will see an empty cpuset. So, the races are harmless. - */ - return (CPU_ISSET(vcpu_vcpuid(vcpu), info->rptr)); -} - -static __inline int -vcpu_suspended(struct vm_eventinfo *info) -{ - - return (*info->sptr); -} - -static __inline int -vcpu_reqidle(struct vm_eventinfo *info) -{ - - return (*info->iptr); -} - /* * Return true if device indicated by bus/slot/func is supposed to be a * pci passthrough device. @@ -317,9 +280,7 @@ bool vmm_is_pptdev(int bus, int slot, int func); void *vm_iommu_domain(struct vm *vm); -void *vcpu_stats(struct vcpu *vcpu); void vcpu_notify_lapic(struct vcpu *vcpu); -struct vm_mem *vm_mem(struct vm *vm); struct vatpic *vm_atpic(struct vm *vm); struct vatpit *vm_atpit(struct vm *vm); struct vpmtmr *vm_pmtmr(struct vm *vm); diff --git a/sys/amd64/vmm/io/vhpet.c b/sys/amd64/vmm/io/vhpet.c index cdeb5e059128..b01736a56c00 100644 --- a/sys/amd64/vmm/io/vhpet.c +++ b/sys/amd64/vmm/io/vhpet.c @@ -44,6 +44,7 @@ #include #include +#include #include "vmm_lapic.h" #include "vatpic.h" diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index b0712c3eb6ac..6312fafa2975 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -470,12 +470,6 @@ vm_reset(struct vm *vm) vm_init(vm, false); } -const char * -vm_name(struct vm *vm) -{ - return (vm->name); -} - int vm_map_mmio(struct vm *vm, vm_paddr_t gpa, size_t len, vm_paddr_t hpa) { @@ -1621,24 +1615,6 @@ vm_set_capability(struct vcpu *vcpu, int type, int val) return (vmmops_setcap(vcpu->cookie, type, val)); } -struct vm * -vcpu_vm(struct vcpu *vcpu) -{ - return (vcpu->vm); -} - -int -vcpu_vcpuid(struct vcpu *vcpu) -{ - return (vcpu->vcpuid); -} - -struct vcpu * -vm_vcpu(struct vm *vm, int vcpuid) -{ - return (vm->vcpu[vcpuid]); -} - struct vlapic * vm_lapic(struct vcpu *vcpu) { @@ -1732,13 +1708,6 @@ vm_await_start(struct vm *vm, const cpuset_t *waiting) mtx_unlock(&vm->rendezvous_mtx); } -void * -vcpu_stats(struct vcpu *vcpu) -{ - - return (vcpu->stats); -} - int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *state) { @@ -1771,12 +1740,6 @@ vcpu_notify_lapic(struct vcpu *vcpu) vcpu_unlock(vcpu); } -struct vm_mem * -vm_mem(struct vm *vm) -{ - return (&vm->mem); -} - int vm_apicid2vcpuid(struct vm *vm, int apicid) { diff --git a/sys/amd64/vmm/vmm_ioport.c b/sys/amd64/vmm/vmm_ioport.c index 8aab28f5e68e..65710c8de717 100644 --- a/sys/amd64/vmm/vmm_ioport.c +++ b/sys/amd64/vmm/vmm_ioport.c @@ -33,6 +33,7 @@ #include #include +#include #include "vatpic.h" #include "vatpit.h" diff --git a/sys/arm64/include/vmm.h b/sys/arm64/include/vmm.h index 14b4d1be10a3..f076bd07f323 100644 --- a/sys/arm64/include/vmm.h +++ b/sys/arm64/include/vmm.h @@ -135,16 +135,11 @@ struct vmm_special_reg { }; #define VM_MAX_SPECIAL_REGS 16 -struct vm_eventinfo { - void *rptr; /* rendezvous cookie */ - int *sptr; /* suspend cookie */ - int *iptr; /* reqidle cookie */ -}; - #define DECLARE_VMMOPS_FUNC(ret_type, opname, args) \ ret_type vmmops_##opname args struct vm; +struct vm_eventinfo; struct vm_exception; struct vm_exit; struct vm_run; @@ -181,16 +176,11 @@ DECLARE_VMMOPS_FUNC(int, restore_tsc, (void *vcpui, uint64_t now)); #endif #endif -const char *vm_name(struct vm *vm); - int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval); int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val); int vm_run(struct vcpu *vcpu); void* vm_get_cookie(struct vm *vm); -int vcpu_vcpuid(struct vcpu *vcpu); void *vcpu_get_cookie(struct vcpu *vcpu); -struct vm *vcpu_vm(struct vcpu *vcpu); -struct vcpu *vm_vcpu(struct vm *vm, int cpu); int vm_get_capability(struct vcpu *vcpu, int type, int *val); int vm_set_capability(struct vcpu *vcpu, int type, int val); int vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far); @@ -204,23 +194,6 @@ void vm_exit_suspended(struct vcpu *vcpu, uint64_t pc); void vm_exit_debug(struct vcpu *vcpu, uint64_t pc); void vm_exit_astpending(struct vcpu *vcpu, uint64_t pc); -static __inline int -vcpu_rendezvous_pending(struct vm_eventinfo *info) -{ - - return (*((uintptr_t *)(info->rptr)) != 0); -} - -static __inline int -vcpu_suspended(struct vm_eventinfo *info) -{ - - return (*info->sptr); -} - -void *vcpu_stats(struct vcpu *vcpu); -struct vm_mem *vm_mem(struct vm *vm); - struct vm_copyinfo { uint64_t gpa; size_t len; diff --git a/sys/arm64/vmm/io/vtimer.c b/sys/arm64/vmm/io/vtimer.c index 7c7fbb49e691..d1c489463882 100644 --- a/sys/arm64/vmm/io/vtimer.c +++ b/sys/arm64/vmm/io/vtimer.c @@ -47,6 +47,8 @@ #include +#include + #include "vgic.h" #include "vtimer.h" diff --git a/sys/arm64/vmm/vmm.c b/sys/arm64/vmm/vmm.c index 92500aa9febc..031400f3f1d0 100644 --- a/sys/arm64/vmm/vmm.c +++ b/sys/arm64/vmm/vmm.c @@ -399,12 +399,6 @@ vm_reset(struct vm *vm) vm_init(vm, false); } -const char * -vm_name(struct vm *vm) -{ - return (vm->name); -} - int vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging, uint64_t gla, int prot, uint64_t *gpa, int *is_fault) @@ -720,19 +714,6 @@ vm_exit_debug(struct vcpu *vcpu, uint64_t pc) vmexit->exitcode = VM_EXITCODE_DEBUG; } -void * -vcpu_stats(struct vcpu *vcpu) -{ - - return (vcpu->stats); -} - -struct vm_mem * -vm_mem(struct vm *vm) -{ - return (&vm->mem); -} - static void restore_guest_fpustate(struct vcpu *vcpu) { @@ -805,30 +786,12 @@ vm_set_capability(struct vcpu *vcpu, int type, int val) return (vmmops_setcap(vcpu->cookie, type, val)); } -struct vm * -vcpu_vm(struct vcpu *vcpu) -{ - return (vcpu->vm); -} - -int -vcpu_vcpuid(struct vcpu *vcpu) -{ - return (vcpu->vcpuid); -} - void * vcpu_get_cookie(struct vcpu *vcpu) { return (vcpu->cookie); } -struct vcpu * -vm_vcpu(struct vm *vm, int vcpuid) -{ - return (vm->vcpu[vcpuid]); -} - int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval) { diff --git a/sys/arm64/vmm/vmm_reset.c b/sys/arm64/vmm/vmm_reset.c index a2752b5c66cb..fd3414ecd066 100644 --- a/sys/arm64/vmm/vmm_reset.c +++ b/sys/arm64/vmm/vmm_reset.c @@ -34,6 +34,8 @@ #include #include +#include + #include "arm64.h" #include "reset.h" diff --git a/sys/dev/vmm/vmm_stat.h b/sys/dev/vmm/vmm_stat.h index 471afd0dd827..469d8ef54829 100644 --- a/sys/dev/vmm/vmm_stat.h +++ b/sys/dev/vmm/vmm_stat.h @@ -32,6 +32,8 @@ #ifndef _DEV_VMM_STAT_H_ #define _DEV_VMM_STAT_H_ +#include + struct vm; #define MAX_VMM_STAT_ELEMS 64 /* arbitrary */ diff --git a/sys/dev/vmm/vmm_vm.h b/sys/dev/vmm/vmm_vm.h index 053eeb11d843..66d3545d1dd5 100644 --- a/sys/dev/vmm/vmm_vm.h +++ b/sys/dev/vmm/vmm_vm.h @@ -62,6 +62,24 @@ void vcpu_notify_event(struct vcpu *vcpu); void vcpu_notify_event_locked(struct vcpu *vcpu); int vcpu_debugged(struct vcpu *vcpu); +static inline void * +vcpu_stats(struct vcpu *vcpu) +{ + return (vcpu->stats); +} + +static inline struct vm * +vcpu_vm(struct vcpu *vcpu) +{ + return (vcpu->vm); +} + +static inline int +vcpu_vcpuid(struct vcpu *vcpu) +{ + return (vcpu->vcpuid); +} + static int __inline vcpu_is_running(struct vcpu *vcpu, int *hostcpu) { @@ -161,6 +179,55 @@ void vm_get_topology(struct vm *vm, uint16_t *sockets, uint16_t *cores, uint16_t *threads, uint16_t *maxcpus); int vm_set_topology(struct vm *vm, uint16_t sockets, uint16_t cores, uint16_t threads, uint16_t maxcpus); + +static inline const char * +vm_name(struct vm *vm) +{ + return (vm->name); +} + +static inline struct vm_mem * +vm_mem(struct vm *vm) +{ + return (&vm->mem); +} + +static inline struct vcpu * +vm_vcpu(struct vm *vm, int vcpuid) +{ + return (vm->vcpu[vcpuid]); +} + +struct vm_eventinfo { + cpuset_t *rptr; /* rendezvous cookie */ + int *sptr; /* suspend cookie */ + int *iptr; /* reqidle cookie */ +}; + +static inline int +vcpu_rendezvous_pending(struct vcpu *vcpu, struct vm_eventinfo *info) +{ + /* + * This check isn't done with atomic operations or under a lock because + * there's no need to. If the vcpuid bit is set, the vcpu is part of a + * rendezvous and the bit won't be cleared until the vcpu enters the + * rendezvous. On rendezvous exit, the cpuset is cleared and the vcpu + * will see an empty cpuset. So, the races are harmless. + */ + return (CPU_ISSET(vcpu_vcpuid(vcpu), info->rptr)); +} + +static inline int +vcpu_suspended(struct vm_eventinfo *info) +{ + return (*info->sptr); +} + +static inline int +vcpu_reqidle(struct vm_eventinfo *info) +{ + return (*info->iptr); +} #endif /* _KERNEL */ #endif /* !_DEV_VMM_VM_H_ */ diff --git a/sys/riscv/include/vmm.h b/sys/riscv/include/vmm.h index 3f321a1a285a..c346f09cc28c 100644 --- a/sys/riscv/include/vmm.h +++ b/sys/riscv/include/vmm.h @@ -115,6 +115,7 @@ enum vm_reg_name { struct vmm_mmio_region mmio_region[VM_MAX_MMIO_REGIONS] struct vm; +struct vm_eventinfo; struct vm_exception; struct vm_exit; struct vm_run; @@ -131,12 +132,6 @@ struct vmm_mmio_region { }; #define VM_MAX_MMIO_REGIONS 4 -struct vm_eventinfo { - void *rptr; /* rendezvous cookie */ - int *sptr; /* suspend cookie */ - int *iptr; /* reqidle cookie */ -}; - #define DECLARE_VMMOPS_FUNC(ret_type, opname, args) \ ret_type vmmops_##opname args @@ -160,16 +155,11 @@ DECLARE_VMMOPS_FUNC(struct vmspace *, vmspace_alloc, (vm_offset_t min, vm_offset_t max)); DECLARE_VMMOPS_FUNC(void, vmspace_free, (struct vmspace *vmspace)); -const char *vm_name(struct vm *vm); - int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval); int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val); int vm_run(struct vcpu *vcpu); void *vm_get_cookie(struct vm *vm); -int vcpu_vcpuid(struct vcpu *vcpu); void *vcpu_get_cookie(struct vcpu *vcpu); -struct vm *vcpu_vm(struct vcpu *vcpu); -struct vcpu *vm_vcpu(struct vm *vm, int cpu); int vm_get_capability(struct vcpu *vcpu, int type, int *val); int vm_set_capability(struct vcpu *vcpu, int type, int val); int vm_inject_exception(struct vcpu *vcpu, uint64_t scause); @@ -182,24 +172,6 @@ struct vm_exit *vm_exitinfo(struct vcpu *vcpu); void vm_exit_suspended(struct vcpu *vcpu, uint64_t pc); void vm_exit_debug(struct vcpu *vcpu, uint64_t pc); void vm_exit_astpending(struct vcpu *vcpu, uint64_t pc); - -static __inline int -vcpu_rendezvous_pending(struct vm_eventinfo *info) -{ - - return (*((uintptr_t *)(info->rptr)) != 0); -} - -static __inline int -vcpu_suspended(struct vm_eventinfo *info) -{ - - return (*info->sptr); -} - -void *vcpu_stats(struct vcpu *vcpu); -struct vm_mem *vm_mem(struct vm *vm); - #endif /* _KERNEL */ #define VM_DIR_READ 0 diff --git a/sys/riscv/vmm/vmm.c b/sys/riscv/vmm/vmm.c index b3ba626962f3..1546bde87b41 100644 --- a/sys/riscv/vmm/vmm.c +++ b/sys/riscv/vmm/vmm.c @@ -272,12 +272,6 @@ vm_reset(struct vm *vm) vm_init(vm, false); } -const char * -vm_name(struct vm *vm) -{ - return (vm->name); -} - int vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging, uint64_t gla, int prot, uint64_t *gpa, int *is_fault) @@ -393,19 +387,6 @@ vm_exit_debug(struct vcpu *vcpu, uint64_t pc) vmexit->exitcode = VM_EXITCODE_DEBUG; } -void * -vcpu_stats(struct vcpu *vcpu) -{ - - return (vcpu->stats); -} - -struct vm_mem * -vm_mem(struct vm *vm) -{ - return (&vm->mem); -} - static void restore_guest_fpustate(struct vcpu *vcpu) { @@ -478,20 +459,6 @@ vm_set_capability(struct vcpu *vcpu, int type, int val) return (vmmops_setcap(vcpu->cookie, type, val)); } -struct vm * -vcpu_vm(struct vcpu *vcpu) -{ - - return (vcpu->vm); -} - -int -vcpu_vcpuid(struct vcpu *vcpu) -{ - - return (vcpu->vcpuid); -} - void * vcpu_get_cookie(struct vcpu *vcpu) { @@ -499,13 +466,6 @@ vcpu_get_cookie(struct vcpu *vcpu) return (vcpu->cookie); } -struct vcpu * -vm_vcpu(struct vm *vm, int vcpuid) -{ - - return (vm->vcpu[vcpuid]); -} - int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval) { From nobody Tue Mar 31 20:28:09 2026 X-Original-To: dev-commits-src-branches@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 4flfnj6V2Qz6Y0Gs for ; Tue, 31 Mar 2026 20:28:09 +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 4flfnj6Fg6z3Ql1 for ; Tue, 31 Mar 2026 20:28:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988889; 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=jc6DlyP5JqmXHfWEtqUSjUY1XVHMle2GlqB2QnbwPS8=; b=fGPJv3W/iIL0kwWKuwdBRkqy+/0AUNQVNmo4Q6xVabeo1wdKf6q/m0ZeH84zVCcb/D9x4r cTZcH3v9tKHw+owcBXn5JsAzP79/Vd5UIiMdWo3f4atCdvnfv+rjU1jwq6w3+jQ8hAg9SX caYQZMpuqNWz6FLs9mwACe69KpXyY+ZzDJXHJshxOqcTlueYqfRGj60NQx3jf2AjWuWFOm ShZSLMhSx7lQwS/y3AEahaBfnAwm1xLzaw5dCq9zuAYQu/NW61mnEDPRnPAshPlbomn8fq P+6z7HB568yoT7sxUxtG1bNy17O2tFtRxVNJb17J2oodvl+Gv421f4bI61j/tA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988889; a=rsa-sha256; cv=none; b=pO4Oxeq3t6KM3EI+xYKZDw9q1IDNVytUMyfO0hgNa/v6bK0TcfoijUDaQQk2PabyYwZ1Po aGrBi//cnaAAp3t6glpziOiU0oGoSbuSzcsy3x0vLEWjFQFXsakSF5UIb5Z4R5bi1XzW2E UtNmFfZOjl0PTVXlgnAwjqcJq3UP7m725DjEJM+wZJ9ndG8iSQ6Np1+EDoqSnFtPXwI64n qOOlMZqUPOJcfJ4Hxwyso3eyXkKXHe1RZGgu0i/LfZRo7qzC9YD0lRxEzIWL4i3pXC/KS6 rBsz406cwZ8ijFxTy9uwUf4K8H9GWRaRwIQoUS3DO9SO9EV47ArKRGXjG1gL+A== 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=1774988889; 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=jc6DlyP5JqmXHfWEtqUSjUY1XVHMle2GlqB2QnbwPS8=; b=Nzst/5+VDH4JabOqNX2HOeyPxqD6FKciDNlszbzp0eEZ/iIvemNji/QELjkKY8JVh5Yc55 bm6abd8bowj6gz37BZJYSni5lSBLgIj5udrWpJ+xzRInMaUoj73oesPZWLJFNaExHTRz1+ 5FkpxgwNLf4tKP+89oPfNex7J4TeJCOcjUWG+fRn/4UEVzd6BDr7rKBsbO06pRKfZ8piOb 9AL9NxqLDJF8DFreUiD871cUN6KE2sm+nFYZ7VKmilLa+ma9oVvPPLuL+tGaAIrW66YG9E Af9VyHcgwRBTaUdG3wc8hok1E18965Q/3o3hJgHEifjuf9Ks563CvydOVqT0VA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnj5m21zl15 for ; Tue, 31 Mar 2026 20:28:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 249d8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: ea86e32c7ad8 - stable/15 - ath11k: update Atheros/QCA's ath11k driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ea86e32c7ad857460fdfd5707e45937257e57ee3 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:09 +0000 Message-Id: <69cc2e59.249d8.1b95f165@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=ea86e32c7ad857460fdfd5707e45937257e57ee3 commit ea86e32c7ad857460fdfd5707e45937257e57ee3 Author: Bjoern A. Zeeb AuthorDate: 2026-03-19 23:30:11 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:19:30 +0000 ath11k: update Atheros/QCA's ath11k driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 ( tag: v6.19-rc6 ). Sponsored by: The FreeBSD Foundation (cherry picked from commit 187d8a3ce55a4e2d41fbe61465d5ff4ac0fc6bd5) (cherry picked from commit 3c4eef5d838b906e8dc30e29ca98b2c4025e2bb2) --- sys/contrib/dev/athk/ath11k/hal.h | 38 ++-- sys/contrib/dev/athk/ath11k/mac.c | 455 ++++++++++++++++++++++++++------------ sys/contrib/dev/athk/ath11k/pci.c | 56 ++++- sys/contrib/dev/athk/ath11k/pci.h | 18 +- sys/contrib/dev/athk/ath11k/qmi.c | 2 +- sys/contrib/dev/athk/ath11k/wmi.c | 22 +- sys/contrib/dev/athk/ath11k/wmi.h | 18 +- 7 files changed, 415 insertions(+), 194 deletions(-) diff --git a/sys/contrib/dev/athk/ath11k/hal.h b/sys/contrib/dev/athk/ath11k/hal.h index 839095af9267..82603a389bb9 100644 --- a/sys/contrib/dev/athk/ath11k/hal.h +++ b/sys/contrib/dev/athk/ath11k/hal.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #ifndef ATH11K_HAL_H @@ -43,14 +43,14 @@ struct ath11k_base; #define HAL_SEQ_WCSS_UMAC_OFFSET 0x00a00000 #define HAL_SEQ_WCSS_UMAC_REO_REG 0x00a38000 #define HAL_SEQ_WCSS_UMAC_TCL_REG 0x00a44000 -#define HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(x) \ - (ab->hw_params.regs->hal_seq_wcss_umac_ce0_src_reg) -#define HAL_SEQ_WCSS_UMAC_CE0_DST_REG(x) \ - (ab->hw_params.regs->hal_seq_wcss_umac_ce0_dst_reg) -#define HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(x) \ - (ab->hw_params.regs->hal_seq_wcss_umac_ce1_src_reg) -#define HAL_SEQ_WCSS_UMAC_CE1_DST_REG(x) \ - (ab->hw_params.regs->hal_seq_wcss_umac_ce1_dst_reg) +#define HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) \ + ((ab)->hw_params.regs->hal_seq_wcss_umac_ce0_src_reg) +#define HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) \ + ((ab)->hw_params.regs->hal_seq_wcss_umac_ce0_dst_reg) +#define HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) \ + ((ab)->hw_params.regs->hal_seq_wcss_umac_ce1_src_reg) +#define HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) \ + ((ab)->hw_params.regs->hal_seq_wcss_umac_ce1_dst_reg) #define HAL_SEQ_WCSS_UMAC_WBM_REG 0x00a34000 #define HAL_CE_WFSS_CE_REG_BASE 0x01b80000 @@ -209,10 +209,10 @@ struct ath11k_base; #define HAL_REO_STATUS_HP(ab) ab->hw_params.regs->hal_reo_status_hp /* WBM Idle R0 address */ -#define HAL_WBM_IDLE_LINK_RING_BASE_LSB(x) \ - (ab->hw_params.regs->hal_wbm_idle_link_ring_base_lsb) -#define HAL_WBM_IDLE_LINK_RING_MISC_ADDR(x) \ - (ab->hw_params.regs->hal_wbm_idle_link_ring_misc) +#define HAL_WBM_IDLE_LINK_RING_BASE_LSB(ab) \ + ((ab)->hw_params.regs->hal_wbm_idle_link_ring_base_lsb) +#define HAL_WBM_IDLE_LINK_RING_MISC_ADDR(ab) \ + ((ab)->hw_params.regs->hal_wbm_idle_link_ring_misc) #define HAL_WBM_R0_IDLE_LIST_CONTROL_ADDR 0x00000048 #define HAL_WBM_R0_IDLE_LIST_SIZE_ADDR 0x0000004c #define HAL_WBM_SCATTERED_RING_BASE_LSB 0x00000058 @@ -227,17 +227,17 @@ struct ath11k_base; #define HAL_WBM_IDLE_LINK_RING_HP 0x000030b0 /* SW2WBM R0 release address */ -#define HAL_WBM_RELEASE_RING_BASE_LSB(x) \ - (ab->hw_params.regs->hal_wbm_release_ring_base_lsb) +#define HAL_WBM_RELEASE_RING_BASE_LSB(ab) \ + ((ab)->hw_params.regs->hal_wbm_release_ring_base_lsb) /* SW2WBM R2 release address */ #define HAL_WBM_RELEASE_RING_HP 0x00003018 /* WBM2SW R0 release address */ -#define HAL_WBM0_RELEASE_RING_BASE_LSB(x) \ - (ab->hw_params.regs->hal_wbm0_release_ring_base_lsb) -#define HAL_WBM1_RELEASE_RING_BASE_LSB(x) \ - (ab->hw_params.regs->hal_wbm1_release_ring_base_lsb) +#define HAL_WBM0_RELEASE_RING_BASE_LSB(ab) \ + ((ab)->hw_params.regs->hal_wbm0_release_ring_base_lsb) +#define HAL_WBM1_RELEASE_RING_BASE_LSB(ab) \ + ((ab)->hw_params.regs->hal_wbm1_release_ring_base_lsb) /* WBM2SW R2 release address */ #define HAL_WBM0_RELEASE_RING_HP 0x000030c0 diff --git a/sys/contrib/dev/athk/ath11k/mac.c b/sys/contrib/dev/athk/ath11k/mac.c index 0e41b5a91d66..3276fe443502 100644 --- a/sys/contrib/dev/athk/ath11k/mac.c +++ b/sys/contrib/dev/athk/ath11k/mac.c @@ -2235,9 +2235,9 @@ static void ath11k_peer_assoc_h_vht(struct ath11k *ar, arg->peer_nss = min(sta->deflink.rx_nss, max_nss); arg->rx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.rx_highest); arg->rx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.rx_mcs_map); + arg->rx_mcs_set = ath11k_peer_assoc_h_vht_limit(arg->rx_mcs_set, vht_mcs_mask); arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest); - arg->tx_mcs_set = ath11k_peer_assoc_h_vht_limit( - __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map), vht_mcs_mask); + arg->tx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map); /* In IPQ8074 platform, VHT mcs rate 10 and 11 is enabled by default. * VHT mcs rate 10 and 11 is not supported in 11ac standard. @@ -2522,10 +2522,10 @@ static void ath11k_peer_assoc_h_he(struct ath11k *ar, he_tx_mcs = v; } v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160); + v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask); arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v; v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160); - v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask); arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v; arg->peer_he_mcs_count++; @@ -2535,10 +2535,10 @@ static void ath11k_peer_assoc_h_he(struct ath11k *ar, default: v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80); + v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask); arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v; v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80); - v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask); arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v; arg->peer_he_mcs_count++; @@ -4028,6 +4028,150 @@ static int ath11k_start_scan(struct ath11k *ar, return 0; } +static void ath11k_mac_fw_stats_reset(struct ath11k *ar) +{ + spin_lock_bh(&ar->data_lock); + ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); + ath11k_fw_stats_vdevs_free(&ar->fw_stats.vdevs); + ar->fw_stats.num_vdev_recvd = 0; + ar->fw_stats.num_bcn_recvd = 0; + spin_unlock_bh(&ar->data_lock); +} + +int ath11k_mac_fw_stats_request(struct ath11k *ar, + struct stats_request_params *req_param) +{ + struct ath11k_base *ab = ar->ab; + unsigned long time_left; + int ret; + + lockdep_assert_held(&ar->conf_mutex); + + ath11k_mac_fw_stats_reset(ar); + + reinit_completion(&ar->fw_stats_complete); + reinit_completion(&ar->fw_stats_done); + + ret = ath11k_wmi_send_stats_request_cmd(ar, req_param); + + if (ret) { + ath11k_warn(ab, "could not request fw stats (%d)\n", + ret); + return ret; + } + + time_left = wait_for_completion_timeout(&ar->fw_stats_complete, 1 * HZ); + if (!time_left) + return -ETIMEDOUT; + + /* FW stats can get split when exceeding the stats data buffer limit. + * In that case, since there is no end marking for the back-to-back + * received 'update stats' event, we keep a 3 seconds timeout in case, + * fw_stats_done is not marked yet + */ + time_left = wait_for_completion_timeout(&ar->fw_stats_done, 3 * HZ); + if (!time_left) + return -ETIMEDOUT; + + return 0; +} + +static int ath11k_mac_get_fw_stats(struct ath11k *ar, u32 pdev_id, + u32 vdev_id, u32 stats_id) +{ + struct ath11k_base *ab = ar->ab; + struct stats_request_params req_param; + int ret; + + lockdep_assert_held(&ar->conf_mutex); + + if (ar->state != ATH11K_STATE_ON) + return -ENETDOWN; + + req_param.pdev_id = pdev_id; + req_param.vdev_id = vdev_id; + req_param.stats_id = stats_id; + + ret = ath11k_mac_fw_stats_request(ar, &req_param); + if (ret) + ath11k_warn(ab, "failed to request fw stats: %d\n", ret); + + ath11k_dbg(ab, ATH11K_DBG_WMI, + "debug get fw stat pdev id %d vdev id %d stats id 0x%x\n", + pdev_id, vdev_id, stats_id); + + return ret; +} + +static int ath11k_mac_handle_get_txpower(struct ath11k *ar, + struct ieee80211_vif *vif, + int *dbm) +{ + struct ath11k_base *ab = ar->ab; + struct ath11k_fw_stats_pdev *pdev; + int ret; + + /* Final Tx power is minimum of Target Power, CTL power, Regulatory + * Power, PSD EIRP Power. We just know the Regulatory power from the + * regulatory rules obtained. FW knows all these power and sets the min + * of these. Hence, we request the FW pdev stats in which FW reports + * the minimum of all vdev's channel Tx power. + */ + lockdep_assert_held(&ar->conf_mutex); + + /* Firmware doesn't provide Tx power during CAC hence no need to fetch + * the stats. + */ + if (test_bit(ATH11K_CAC_RUNNING, &ar->dev_flags)) + return -EAGAIN; + + ret = ath11k_mac_get_fw_stats(ar, ar->pdev->pdev_id, 0, + WMI_REQUEST_PDEV_STAT); + if (ret) { + ath11k_warn(ab, "failed to request fw pdev stats: %d\n", ret); + goto err_fallback; + } + + spin_lock_bh(&ar->data_lock); + pdev = list_first_entry_or_null(&ar->fw_stats.pdevs, + struct ath11k_fw_stats_pdev, list); + if (!pdev) { + spin_unlock_bh(&ar->data_lock); + goto err_fallback; + } + + /* tx power is set as 2 units per dBm in FW. */ + *dbm = pdev->chan_tx_power / 2; + + spin_unlock_bh(&ar->data_lock); + + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "txpower from firmware %d, reported %d dBm\n", + pdev->chan_tx_power, *dbm); + return 0; + +err_fallback: + /* We didn't get txpower from FW. Hence, relying on vif->bss_conf.txpower */ + *dbm = vif->bss_conf.txpower; + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "txpower from firmware NaN, reported %d dBm\n", + *dbm); + return 0; +} + +static int ath11k_mac_op_get_txpower(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + unsigned int link_id, + int *dbm) +{ + struct ath11k *ar = hw->priv; + int ret; + + mutex_lock(&ar->conf_mutex); + ret = ath11k_mac_handle_get_txpower(ar, vif, dbm); + mutex_unlock(&ar->conf_mutex); + + return ret; +} + static int ath11k_mac_op_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_scan_request *hw_req) @@ -6107,6 +6251,159 @@ static void ath11k_mgmt_over_wmi_tx_purge(struct ath11k *ar) ath11k_mgmt_over_wmi_tx_drop(ar, skb); } +static int ath11k_mac_mgmt_action_frame_fill_elem_data(struct ath11k_vif *arvif, + struct sk_buff *skb) +{ + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + u8 category, *buf, iv_len, action_code, dialog_token; + int cur_tx_power, max_tx_power; + struct ath11k *ar = arvif->ar; + struct cfg80211_chan_def def; + struct ath11k_skb_cb *skb_cb; + struct ieee80211_mgmt *mgmt; + unsigned int remaining_len; + bool has_protected; + + lockdep_assert_held(&ar->conf_mutex); + + /* make sure category field is present */ + if (skb->len < IEEE80211_MIN_ACTION_SIZE) + return -EINVAL; + + remaining_len = skb->len - IEEE80211_MIN_ACTION_SIZE; + has_protected = ieee80211_has_protected(hdr->frame_control); + + /* In case of SW crypto and hdr protected (PMF), packet will already be encrypted, + * we can't put in data in this case + */ + if (test_bit(ATH11K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags) && + has_protected) + return 0; + + mgmt = (struct ieee80211_mgmt *)hdr; + buf = (u8 *)&mgmt->u.action; + + /* FCTL_PROTECTED frame might have extra space added for HDR_LEN. Offset that + * many bytes if it is there + */ + if (has_protected) { + skb_cb = ATH11K_SKB_CB(skb); + + switch (skb_cb->cipher) { + /* Cipher suite having flag %IEEE80211_KEY_FLAG_GENERATE_IV_MGMT set in + * key needs to be processed. See ath11k_install_key() + */ + case WLAN_CIPHER_SUITE_CCMP: + case WLAN_CIPHER_SUITE_CCMP_256: + case WLAN_CIPHER_SUITE_GCMP: + case WLAN_CIPHER_SUITE_GCMP_256: + iv_len = IEEE80211_CCMP_HDR_LEN; + break; + case WLAN_CIPHER_SUITE_TKIP: + iv_len = 0; + break; + default: + return -EINVAL; + } + + if (remaining_len < iv_len) + return -EINVAL; + + buf += iv_len; + remaining_len -= iv_len; + } + + category = *buf++; + /* category code is already taken care in %IEEE80211_MIN_ACTION_SIZE hence + * no need to adjust remaining_len + */ + + switch (category) { + case WLAN_CATEGORY_RADIO_MEASUREMENT: + /* need action code and dialog token */ + if (remaining_len < 2) + return -EINVAL; + + /* Packet Format: + * Action Code | Dialog Token | Variable Len (based on Action Code) + */ + action_code = *buf++; + dialog_token = *buf++; + remaining_len -= 2; + + if (ath11k_mac_vif_chan(arvif->vif, &def)) + return -ENOENT; + + cur_tx_power = arvif->vif->bss_conf.txpower; + max_tx_power = min(def.chan->max_reg_power, (int)ar->max_tx_power / 2); + ath11k_mac_handle_get_txpower(ar, arvif->vif, &cur_tx_power); + + switch (action_code) { + case WLAN_RM_ACTION_LINK_MEASUREMENT_REQUEST: + /* need variable fields to be present in len */ + if (remaining_len < 2) + return -EINVAL; + + /* Variable length format as defined in IEEE 802.11-2024, + * Figure 9-1187-Link Measurement Request frame Action field + * format. + * Transmit Power | Max Tx Power + * We fill both of these. + */ + *buf++ = cur_tx_power; + *buf = max_tx_power; + + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, + "RRM: Link Measurement Req dialog_token %u cur_tx_power %d max_tx_power %d\n", + dialog_token, cur_tx_power, max_tx_power); + break; + case WLAN_RM_ACTION_LINK_MEASUREMENT_REPORT: + /* need variable fields to be present in len */ + if (remaining_len < 3) + return -EINVAL; + + /* Variable length format as defined in IEEE 802.11-2024, + * Figure 9-1188-Link Measurement Report frame Action field format + * TPC Report | Variable Fields + * + * TPC Report Format: + * Element ID | Len | Tx Power | Link Margin + * + * We fill Tx power in the TPC Report (2nd index) + */ + buf[2] = cur_tx_power; + + /* TODO: At present, Link margin data is not present so can't + * really fill it now. Once it is available, it can be added + * here + */ + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, + "RRM: Link Measurement Report dialog_token %u cur_tx_power %d\n", + dialog_token, cur_tx_power); + break; + default: + return -EINVAL; + } + break; + default: + /* nothing to fill */ + return 0; + } + + return 0; +} + +static int ath11k_mac_mgmt_frame_fill_elem_data(struct ath11k_vif *arvif, + struct sk_buff *skb) +{ + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + + if (!ieee80211_is_action(hdr->frame_control)) + return 0; + + return ath11k_mac_mgmt_action_frame_fill_elem_data(arvif, skb); +} + static void ath11k_mgmt_over_wmi_tx_work(struct work_struct *work) { struct ath11k *ar = container_of(work, struct ath11k, wmi_mgmt_tx_work); @@ -6126,6 +6423,19 @@ static void ath11k_mgmt_over_wmi_tx_work(struct work_struct *work) arvif = ath11k_vif_to_arvif(skb_cb->vif); mutex_lock(&ar->conf_mutex); if (ar->allocated_vdev_map & (1LL << arvif->vdev_id)) { + /* Fill in the data which is required to be filled by the driver + * For example: Max Tx power in Link Measurement Request/Report + */ + ret = ath11k_mac_mgmt_frame_fill_elem_data(arvif, skb); + if (ret) { + /* If we couldn't fill the data due to any reason, + * let's not discard transmitting the packet. + */ + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, + "Failed to fill the required data for the mgmt packet err %d\n", + ret); + } + ret = ath11k_mac_mgmt_tx_wmi(ar, arvif, skb); if (ret) { ath11k_warn(ar->ab, "failed to tx mgmt frame, vdev_id %d :%d\n", @@ -9079,81 +9389,6 @@ static void ath11k_mac_put_chain_rssi(struct station_info *sinfo, } } -static void ath11k_mac_fw_stats_reset(struct ath11k *ar) -{ - spin_lock_bh(&ar->data_lock); - ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); - ath11k_fw_stats_vdevs_free(&ar->fw_stats.vdevs); - ar->fw_stats.num_vdev_recvd = 0; - ar->fw_stats.num_bcn_recvd = 0; - spin_unlock_bh(&ar->data_lock); -} - -int ath11k_mac_fw_stats_request(struct ath11k *ar, - struct stats_request_params *req_param) -{ - struct ath11k_base *ab = ar->ab; - unsigned long time_left; - int ret; - - lockdep_assert_held(&ar->conf_mutex); - - ath11k_mac_fw_stats_reset(ar); - - reinit_completion(&ar->fw_stats_complete); - reinit_completion(&ar->fw_stats_done); - - ret = ath11k_wmi_send_stats_request_cmd(ar, req_param); - - if (ret) { - ath11k_warn(ab, "could not request fw stats (%d)\n", - ret); - return ret; - } - - time_left = wait_for_completion_timeout(&ar->fw_stats_complete, 1 * HZ); - if (!time_left) - return -ETIMEDOUT; - - /* FW stats can get split when exceeding the stats data buffer limit. - * In that case, since there is no end marking for the back-to-back - * received 'update stats' event, we keep a 3 seconds timeout in case, - * fw_stats_done is not marked yet - */ - time_left = wait_for_completion_timeout(&ar->fw_stats_done, 3 * HZ); - if (!time_left) - return -ETIMEDOUT; - - return 0; -} - -static int ath11k_mac_get_fw_stats(struct ath11k *ar, u32 pdev_id, - u32 vdev_id, u32 stats_id) -{ - struct ath11k_base *ab = ar->ab; - struct stats_request_params req_param; - int ret; - - lockdep_assert_held(&ar->conf_mutex); - - if (ar->state != ATH11K_STATE_ON) - return -ENETDOWN; - - req_param.pdev_id = pdev_id; - req_param.vdev_id = vdev_id; - req_param.stats_id = stats_id; - - ret = ath11k_mac_fw_stats_request(ar, &req_param); - if (ret) - ath11k_warn(ab, "failed to request fw stats: %d\n", ret); - - ath11k_dbg(ab, ATH11K_DBG_WMI, - "debug get fw stat pdev id %d vdev id %d stats id 0x%x\n", - pdev_id, vdev_id, stats_id); - - return ret; -} - static void ath11k_mac_op_sta_statistics(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta, @@ -9539,66 +9774,6 @@ exit: return ret; } -static int ath11k_mac_op_get_txpower(struct ieee80211_hw *hw, - struct ieee80211_vif *vif, - unsigned int link_id, - int *dbm) -{ - struct ath11k *ar = hw->priv; - struct ath11k_base *ab = ar->ab; - struct ath11k_fw_stats_pdev *pdev; - int ret; - - /* Final Tx power is minimum of Target Power, CTL power, Regulatory - * Power, PSD EIRP Power. We just know the Regulatory power from the - * regulatory rules obtained. FW knows all these power and sets the min - * of these. Hence, we request the FW pdev stats in which FW reports - * the minimum of all vdev's channel Tx power. - */ - mutex_lock(&ar->conf_mutex); - - /* Firmware doesn't provide Tx power during CAC hence no need to fetch - * the stats. - */ - if (test_bit(ATH11K_CAC_RUNNING, &ar->dev_flags)) { - mutex_unlock(&ar->conf_mutex); - return -EAGAIN; - } - - ret = ath11k_mac_get_fw_stats(ar, ar->pdev->pdev_id, 0, - WMI_REQUEST_PDEV_STAT); - if (ret) { - ath11k_warn(ab, "failed to request fw pdev stats: %d\n", ret); - goto err_fallback; - } - - spin_lock_bh(&ar->data_lock); - pdev = list_first_entry_or_null(&ar->fw_stats.pdevs, - struct ath11k_fw_stats_pdev, list); - if (!pdev) { - spin_unlock_bh(&ar->data_lock); - goto err_fallback; - } - - /* tx power is set as 2 units per dBm in FW. */ - *dbm = pdev->chan_tx_power / 2; - - spin_unlock_bh(&ar->data_lock); - mutex_unlock(&ar->conf_mutex); - - ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "txpower from firmware %d, reported %d dBm\n", - pdev->chan_tx_power, *dbm); - return 0; - -err_fallback: - mutex_unlock(&ar->conf_mutex); - /* We didn't get txpower from FW. Hence, relying on vif->bss_conf.txpower */ - *dbm = vif->bss_conf.txpower; - ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "txpower from firmware NaN, reported %d dBm\n", - *dbm); - return 0; -} - static int ath11k_mac_station_add(struct ath11k *ar, struct ieee80211_vif *vif, struct ieee80211_sta *sta) @@ -10368,6 +10543,8 @@ static int __ath11k_mac_register(struct ath11k *ar) ar->hw->wiphy->features |= NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE | NL80211_FEATURE_AP_SCAN; + ar->hw->wiphy->features |= NL80211_FEATURE_TX_POWER_INSERTION; + ar->max_num_stations = TARGET_NUM_STATIONS(ab); ar->max_num_peers = TARGET_NUM_PEERS_PDEV(ab); diff --git a/sys/contrib/dev/athk/ath11k/pci.c b/sys/contrib/dev/athk/ath11k/pci.c index 5db3a5a2ff64..a0d6db543c06 100644 --- a/sys/contrib/dev/athk/ath11k/pci.c +++ b/sys/contrib/dev/athk/ath11k/pci.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #include @@ -209,6 +209,19 @@ static inline void ath11k_pci_select_static_window(struct ath11k_pci *ab_pci) #endif } +static void ath11k_pci_restore_window(struct ath11k_base *ab) +{ + struct ath11k_pci *ab_pci = ath11k_pci_priv(ab); + + spin_lock_bh(&ab_pci->window_lock); + + iowrite32(ATH11K_PCI_WINDOW_ENABLE_BIT | ab_pci->register_window, + ab->mem + ATH11K_PCI_WINDOW_REG_ADDRESS); + ioread32(ab->mem + ATH11K_PCI_WINDOW_REG_ADDRESS); + + spin_unlock_bh(&ab_pci->window_lock); +} + static void ath11k_pci_soc_global_reset(struct ath11k_base *ab) { u32 val, delay; @@ -233,6 +246,11 @@ static void ath11k_pci_soc_global_reset(struct ath11k_base *ab) val = ath11k_pcic_read32(ab, PCIE_SOC_GLOBAL_RESET); if (val == 0xffffffff) ath11k_warn(ab, "link down error during global reset\n"); + + /* Restore window register as its content is cleared during + * hardware global reset, such that it aligns with host cache. + */ + ath11k_pci_restore_window(ab); } static void ath11k_pci_clear_dbg_registers(struct ath11k_base *ab) @@ -1269,9 +1287,39 @@ static __maybe_unused int ath11k_pci_pm_resume(struct device *dev) return ret; } -static SIMPLE_DEV_PM_OPS(ath11k_pci_pm_ops, - ath11k_pci_pm_suspend, - ath11k_pci_pm_resume); +static __maybe_unused int ath11k_pci_pm_suspend_late(struct device *dev) +{ + struct ath11k_base *ab = dev_get_drvdata(dev); + int ret; + + ret = ath11k_core_suspend_late(ab); + if (ret) + ath11k_warn(ab, "failed to late suspend core: %d\n", ret); + + /* Similar to ath11k_pci_pm_suspend(), we return success here + * even error happens, to allow system suspend/hibernation survive. + */ + return 0; +} + +static __maybe_unused int ath11k_pci_pm_resume_early(struct device *dev) +{ + struct ath11k_base *ab = dev_get_drvdata(dev); + int ret; + + ret = ath11k_core_resume_early(ab); + if (ret) + ath11k_warn(ab, "failed to early resume core: %d\n", ret); + + return ret; +} + +static const struct dev_pm_ops __maybe_unused ath11k_pci_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(ath11k_pci_pm_suspend, + ath11k_pci_pm_resume) + SET_LATE_SYSTEM_SLEEP_PM_OPS(ath11k_pci_pm_suspend_late, + ath11k_pci_pm_resume_early) +}; #endif static struct pci_driver ath11k_pci_driver = { diff --git a/sys/contrib/dev/athk/ath11k/pci.h b/sys/contrib/dev/athk/ath11k/pci.h index c33c7865145c..1e3005a4b64c 100644 --- a/sys/contrib/dev/athk/ath11k/pci.h +++ b/sys/contrib/dev/athk/ath11k/pci.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022,2024 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #ifndef _ATH11K_PCI_H #define _ATH11K_PCI_H @@ -35,18 +35,18 @@ #define PCIE_SMLH_REQ_RST_LINK_DOWN 0x2 #define PCIE_INT_CLEAR_ALL 0xffffffff -#define PCIE_QSERDES_COM_SYSCLK_EN_SEL_REG(x) \ - (ab->hw_params.regs->pcie_qserdes_sysclk_en_sel) +#define PCIE_QSERDES_COM_SYSCLK_EN_SEL_REG(ab) \ + ((ab)->hw_params.regs->pcie_qserdes_sysclk_en_sel) #define PCIE_QSERDES_COM_SYSCLK_EN_SEL_VAL 0x10 #define PCIE_QSERDES_COM_SYSCLK_EN_SEL_MSK 0xffffffff -#define PCIE_PCS_OSC_DTCT_CONFIG1_REG(x) \ - (ab->hw_params.regs->pcie_pcs_osc_dtct_config_base) +#define PCIE_PCS_OSC_DTCT_CONFIG1_REG(ab) \ + ((ab)->hw_params.regs->pcie_pcs_osc_dtct_config_base) #define PCIE_PCS_OSC_DTCT_CONFIG1_VAL 0x02 -#define PCIE_PCS_OSC_DTCT_CONFIG2_REG(x) \ - (ab->hw_params.regs->pcie_pcs_osc_dtct_config_base + 0x4) +#define PCIE_PCS_OSC_DTCT_CONFIG2_REG(ab) \ + ((ab)->hw_params.regs->pcie_pcs_osc_dtct_config_base + 0x4) #define PCIE_PCS_OSC_DTCT_CONFIG2_VAL 0x52 -#define PCIE_PCS_OSC_DTCT_CONFIG4_REG(x) \ - (ab->hw_params.regs->pcie_pcs_osc_dtct_config_base + 0xc) +#define PCIE_PCS_OSC_DTCT_CONFIG4_REG(ab) \ + ((ab)->hw_params.regs->pcie_pcs_osc_dtct_config_base + 0xc) #define PCIE_PCS_OSC_DTCT_CONFIG4_VAL 0xff #define PCIE_PCS_OSC_DTCT_CONFIG_MSK 0x000000ff diff --git a/sys/contrib/dev/athk/ath11k/qmi.c b/sys/contrib/dev/athk/ath11k/qmi.c index 268960c507fb..86682c9727bf 100644 --- a/sys/contrib/dev/athk/ath11k/qmi.c +++ b/sys/contrib/dev/athk/ath11k/qmi.c @@ -3219,7 +3219,7 @@ static int ath11k_qmi_ops_new_server(struct qmi_handle *qmi_hdl, sq->sq_node = service->node; sq->sq_port = service->port; - ret = kernel_connect(qmi_hdl->sock, (struct sockaddr *)sq, + ret = kernel_connect(qmi_hdl->sock, (struct sockaddr_unsized *)sq, sizeof(*sq), 0); if (ret) { ath11k_warn(ab, "failed to connect to qmi remote service: %d\n", ret); diff --git a/sys/contrib/dev/athk/ath11k/wmi.c b/sys/contrib/dev/athk/ath11k/wmi.c index b3ee86b1875b..55f8f0c912b8 100644 --- a/sys/contrib/dev/athk/ath11k/wmi.c +++ b/sys/contrib/dev/athk/ath11k/wmi.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BSD-3-Clause-Clear /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #include #include @@ -1903,6 +1903,8 @@ int ath11k_wmi_bcn_tmpl(struct ath11k *ar, u32 vdev_id, dev_kfree_skb(skb); } + ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "cmd bcn tmpl"); + return ret; } @@ -2172,10 +2174,13 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, cmd->peer_bw_rxnss_override |= param->peer_bw_rxnss_override; if (param->vht_capable) { - mcs->rx_max_rate = param->rx_max_rate; - mcs->rx_mcs_set = param->rx_mcs_set; - mcs->tx_max_rate = param->tx_max_rate; - mcs->tx_mcs_set = param->tx_mcs_set; + /* firmware interprets mcs->tx_mcs_set field as peer's + * RX capability + */ + mcs->tx_max_rate = param->rx_max_rate; + mcs->tx_mcs_set = param->rx_mcs_set; + mcs->rx_max_rate = param->tx_max_rate; + mcs->rx_mcs_set = param->tx_mcs_set; } /* HE Rates */ @@ -2207,8 +2212,11 @@ int ath11k_wmi_send_peer_assoc_cmd(struct ath11k *ar, FIELD_PREP(WMI_TLV_LEN, sizeof(*he_mcs) - TLV_HDR_SIZE); - he_mcs->rx_mcs_set = param->peer_he_tx_mcs_set[i]; - he_mcs->tx_mcs_set = param->peer_he_rx_mcs_set[i]; + /* firmware interprets mcs->rx_mcs_set field as peer's + * RX capability + */ + he_mcs->rx_mcs_set = param->peer_he_rx_mcs_set[i]; + he_mcs->tx_mcs_set = param->peer_he_tx_mcs_set[i]; ptr += sizeof(*he_mcs); } diff --git a/sys/contrib/dev/athk/ath11k/wmi.h b/sys/contrib/dev/athk/ath11k/wmi.h index 9b13eb3b62b8..6cab0c20829d 100644 --- a/sys/contrib/dev/athk/ath11k/wmi.h +++ b/sys/contrib/dev/athk/ath11k/wmi.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #ifndef ATH11K_WMI_H @@ -3466,20 +3466,6 @@ struct scan_cancel_param { u32 pdev_id; }; -struct wmi_bcn_send_from_host_cmd { - u32 tlv_header; - u32 vdev_id; - u32 data_len; - union { - u32 frag_ptr; - u32 frag_ptr_lo; - }; - u32 frame_ctrl; - u32 dtim_flag; - u32 bcn_antenna; - u32 frag_ptr_hi; -}; - #define WMI_CHAN_INFO_MODE GENMASK(5, 0) #define WMI_CHAN_INFO_HT40_PLUS BIT(6) #define WMI_CHAN_INFO_PASSIVE BIT(7) @@ -4136,8 +4122,10 @@ struct wmi_rate_set { struct wmi_vht_rate_set { u32 tlv_header; u32 rx_max_rate; + /* MCS at which the peer can transmit */ u32 rx_mcs_set; u32 tx_max_rate; + /* MCS at which the peer can receive */ u32 tx_mcs_set; u32 tx_max_mcs_nss; } __packed; From nobody Tue Mar 31 20:28:10 2026 X-Original-To: dev-commits-src-branches@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 4flfnl2mTMz6Y0KN for ; Tue, 31 Mar 2026 20:28:11 +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 4flfnl0CYGz3Qhw for ; Tue, 31 Mar 2026 20:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988891; 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=kLWal8+aWz/Xhh/00i6hTBk9kpRw+Q89/IBz4rvGM1k=; b=BrfK0ESdoVhrQzxty1nJ2L81GaW9G2mfptDb5WfnVlwWmqIebOt3ERLtKMnmvn0DX3KEQ5 SnTKVDTL6Jk39g7OIHLu+lpI4PN3aut1psnKg+qA0lM1pD9DFxtLU73PEuCz35xMuhd43c S36Kfq4R8zoavWpl71xOZRAPQGAE1qYGJ+bgZhHl37gjEGjk15tUifEiMCW/8toyjmCUVz eXrmnqlQt0k0gWDgaicIanhbW7nm2J4IH/XOW49TxUTtlpuxcezdW9e5ACl8ay6bTdWuix 52PgiHl0m3VCvVghSynTIRPj6Wk6+fYscgV+8lxYn3jZAcD1S+7IDZCnjTaVJA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988891; a=rsa-sha256; cv=none; b=uG0Su+9ccnBplvulWMxuBEbBrWPsTrIf7yV1u89cabvmH+/gZCvhModJ8yUWTfQTW0by+1 7EjZG5F/jU3jBYX+22KFPcqtMDyUWD9yk9Pt0BovLLNFu6x7lovT+fFtkO52xY7WpKcAco vlJVjeND6IVaEUBJwf2PL13J1wBx9zxxVwleDGqqhJMuyu36pm2vStje/FeETFqNqUWhXH IHGes/d5lp90+gmkJGAlFn60Wd1/JQbbZnA1ilFoSTKqzxvoPYtjAi6HDZqwmDO/Be1/KL cUzOAELXGDTB9mOUxzUbPfBCiCPAniY1NRkL3+LQ+Bcyq+CALxJ5XET3RVilmQ== 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=1774988891; 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=kLWal8+aWz/Xhh/00i6hTBk9kpRw+Q89/IBz4rvGM1k=; b=tl+MePHObf1N2hNQQYRJon05+jesOJAWxlT1I5atdQ7Fq11/aD3xNbFmVf8D3y5reOpYMG KwfhDLxsVnh6Q6qAIYIVandyqly3+c2JnPADlaq1tK5Pj1zvB0eABcOq/l/rpfBx06EBGQ WsLGTSuG/ml8qx8mQhb8gJj9ldr2kyKbYp2nQV/N8Rw5raP7q7wdBgykZYAa9G2Os6rtUe vxg9yGB/XgngmA7HwQ47/6B4QPBDc4MGoC8tN6q9wyPibnBf+RDLngzjlB3iUM+pKbYwD1 fcpmjPrvpls2ShBwSVb6fQP09UeHh9Bgf5hJSGOoVDM4ZIFMbr3FcmUdgi1T+w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnk6ZCrzld1 for ; Tue, 31 Mar 2026 20:28:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26d0f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 5a35d505bf0c - stable/15 - ath11k: update module Makefile after vendor import of v6.19[-rc6] List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5a35d505bf0c4d16ef94477bfcbc85b9a87b2c0c Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:10 +0000 Message-Id: <69cc2e5a.26d0f.a66fc94@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=5a35d505bf0c4d16ef94477bfcbc85b9a87b2c0c commit 5a35d505bf0c4d16ef94477bfcbc85b9a87b2c0c Author: Bjoern A. Zeeb AuthorDate: 2026-03-12 20:24:39 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:19:44 +0000 ath11k: update module Makefile after vendor import of v6.19[-rc6] Sponsored by: The FreeBSD Foundation (cherry picked from commit 09cacabd8ca0cc89c8d46b2f4c1dcdd6bb1e1cab) --- sys/modules/ath11k/Makefile | 63 +++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/sys/modules/ath11k/Makefile b/sys/modules/ath11k/Makefile index 42aa9b9936cd..d17e76255802 100644 --- a/sys/modules/ath11k/Makefile +++ b/sys/modules/ath11k/Makefile @@ -2,30 +2,62 @@ DEVATH11KDIR= ${SRCTOP}/sys/contrib/dev/athk/ath11k .PATH: ${DEVATH11KDIR} -WITH_DEBUGFS= 0 # Does not yet compile -WITH_CONFIG_PM= 0 +ATH11K_DEBUGFS= 0 +ATH11K_TRACE= 0 +ATH11K_THERMAL= 0 +ATH11K_SPECTRAL= 0 +ATH11K_PM= 0 +ATH11K_DEV_COREDUMP= 0 KMOD= if_ath11k SRCS+= core.c hal.c hal_tx.c hal_rx.c SRCS+= wmi.c mac.c reg.c htc.c qmi.c SRCS+= dp.c dp_tx.c dp_rx.c debug.c -SRCS+= ce.c peer.c dbring.c hw.c -SRCS+= coredump.c fw.c p2p.c +SRCS+= ce.c peer.c dbring.c hw.c pcic.c +SRCS+= fw.c p2p.c -SRCS+= mhi.c pci.c pcic.c +# PCI +SRCS+= mhi.c pci.c -.if defined(WITH_CONFIG_PM) && ${WITH_CONFIG_PM} > 0 -CFLAGS+= -DCONFIG_PM=${WITH_CONFIG_PM} +# AHB +#SRCS+= ahb.c + +.if defined(ATH11K_DEBUGFS) && ${ATH11K_DEBUGFS} > 0 +SRCS+= debugfs.c debugfs_htt_stats.c debugfs_sta.c +CFLAGS+= -DCONFIG_ATH11K_DEBUGFS +CFLAGS+= -DCONFIG_MAC80211_DEBUGFS +.endif + +.if defined(ATH11K_TRACE) && ${ATH11K_TRACE} > 0 +SRCS+= trace.c +CFLAGS+= -DCONFIG_ATH11K_TRACING +.endif + +.if defined(ATH11K_THERMAL) && ${ATH11K_THERMAL} > 0 +SRCS+= thermal.c +CFLAGS+= -DCONFIG_ATH11K_THERMAL +.endif + +.if defined(ATH11K_SPECTRAL) && ${ATH11K_SPECTRAL} > 0 +SRCS+= spectral.c +CFLAGS+= -DCONFIG_ATH11K_SPECTRAL +.endif + +.if defined(ATH11K_PM) && ${ATH11K_PM} > 0 +CFLAGS+= -DCONFIG_PM SRCS+= wow.c .endif +.if defined(ATH11K_DEV_COREDUMP) && ${ATH11K_DEV_COREDUMP} > 0 +CFLAGS+= -DCONFIG_DEV_COREDUMP +SRCS+= coredump.c +.endif + # Other SRCS+= ${LINUXKPI_GENSRCS} SRCS+= opt_wlan.h opt_inet6.h opt_inet.h opt_acpi.h -CFLAGS+= -DKBUILD_MODNAME='"ath11k"' - CFLAGS+= -I${DEVATH11KDIR} CFLAGS+= -I${DEVATH11KDIR}/.. CFLAGS+= ${LINUXKPI_INCLUDES} @@ -34,16 +66,7 @@ CFLAGS+= ${LINUXKPI_INCLUDES} CFLAGS+= -DCONFIG_ATH11K_DEBUG -.if defined(WITH_DEBUGFS) && ${WITH_DEBUGFS} > 0 -SRCS+= debugfs.c debugfs_htt_stats.c debugfs_sta.c -CFLAGS+= -DCONFIG_ATH11K_DEBUGFS=${WITH_DEBUGFS} -CFLAGS+= -DCONFIG_MAC80211_DEBUGFS=${WITH_DEBUGFS} -.endif - -#CFLAGS+= -DCONFIG_ATH11K_SPECTRAL -#CFLAGS+= -DCONFIG_ATH11K_TRACING -#CFLAGS+= -DCONFIG_NL80211_TESTMODE -#CFLAGS+= -DCONFIG_PM -#CFLAGS+= -DCONFIG_THERMAL +CFLAGS+= -DKBUILD_MODNAME='"ath11k"' +CFLAGS+= -DLINUXKPI_VERSION=61900 .include From nobody Tue Mar 31 20:28:12 2026 X-Original-To: dev-commits-src-branches@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 4flfnn0JXRz6Y0BF for ; Tue, 31 Mar 2026 20:28:13 +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 4flfnm4cBgz3QlL for ; Tue, 31 Mar 2026 20:28:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988892; 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=RCHxgPDZ2sc5bGYQtM1n9UwbpNl0VMO86xopi8vOA38=; b=l7Ew40p3BqkVKJQY8U7/HNyzg/gQQ0OsGYAGQh++njNjIMx7GjcAz4s1a1AN0rhltugLwK rCwewrQfTWjhdYS5PsqufUefHuipoad2X3YHo0SvN0zjfXnZNE6zHPZ0CuYmCOOrN3FsUO iu2aoR+Dewveatkr+IHOv69d4UWIo2vBOniraz1QTzc35xPcujMN+Douoc5pWs1tg59mlZ AgKPin2J9LAAI2fLNemjhAp2JqVIVWK0YQ0HHbaVWOc/BIejWfD+RsF+8OP2jMeT4HYr3b s6yqcgcxPl3j5Je+1STEz6UXeQKrfas3LwwjTNW6YuIkx1AHWrYD1AluWSul3A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988892; a=rsa-sha256; cv=none; b=H4gyaWc7avrtToyXpIPPmB8I+kIqhOUn/iJTJeAjnUG23GNYNdDXWiDOr/+9JT3chtc8C9 3/9rAoHLBD2msKWIfw1mg8j/hHWGKZUx/JcRJiCWBIQ7nn+ZbKcIbTMShOyYjZs0BRRjJX TuSIjWMjkkBP3yTv7+ztST067NVc/Q1gINapVrkuWtaptsd9swP/MYdwvOE6h/kmBIZ9E2 AboWBoXoNzfkOHwmC5AamflWcpB0hLLIIxxGC89UcLPqfFHV1sOLTxmFG53I1McQ5QZpCj 65wkVzLu1a7gDAczeagUA/NkZxlfY7KZa7s9wDvbPi3b8zWcSLXAHETtykuuQw== 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=1774988892; 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=RCHxgPDZ2sc5bGYQtM1n9UwbpNl0VMO86xopi8vOA38=; b=xeoQdACn/584MJ3KNG+CV7+nUKs1qbNdMNIy3GsmcNSbxMdt9ypPB6p23JAJI0hQ1GpThp f8WU1/Ps0pp6cZZr78mZhGx9u5DbtYIS9TpwwUD8kC89Zdz8tUB60Zofmk4vmHgEDOrJ+e 1IheH/zBoBF31ollDPp5CXknPemijoYjdX03BnM7CGaDfV56c0B71BZY57Og3PPBTsHeeu rDp6S8Kimaao6oViekZM+5C72Ob3AxPiRhT6VA3ruamxT4EftnRFtFrCWv6gBrWONXvAL6 CAQEpawaGQsBwZQg2GinxGzMU1sCfotu+cxxxrRuSntC9XhfyjEKu6IpuJ5BUw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnm42zKzl9q for ; Tue, 31 Mar 2026 20:28:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26c71 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:12 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 931b526c68f5 - stable/15 - ath12k: update Atheros/QCA's ath12k driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 931b526c68f5ea054bf9d3e12b1e16d34de1e4df Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:12 +0000 Message-Id: <69cc2e5c.26c71.700f20c1@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=931b526c68f5ea054bf9d3e12b1e16d34de1e4df commit 931b526c68f5ea054bf9d3e12b1e16d34de1e4df Author: Bjoern A. Zeeb AuthorDate: 2026-03-19 23:33:40 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:22:50 +0000 ath12k: update Atheros/QCA's ath12k driver This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 05f7e89ab9731565d8a62e3b5d1ec206485eeb0b ( tag: v6.19 ). Sponsored by: The FreeBSD Foundation (cherry picked from commit a96550206e4bde15bf615ff2127b80404a7ec41f) --- sys/contrib/dev/athk/ath12k/Kconfig | 30 +- sys/contrib/dev/athk/ath12k/Makefile | 10 +- sys/contrib/dev/athk/ath12k/acpi.c | 510 + sys/contrib/dev/athk/ath12k/acpi.h | 114 + sys/contrib/dev/athk/ath12k/ahb.c | 1156 +++ sys/contrib/dev/athk/ath12k/ahb.h | 80 + sys/contrib/dev/athk/ath12k/ce.c | 121 +- sys/contrib/dev/athk/ath12k/ce.h | 27 +- sys/contrib/dev/athk/ath12k/core.c | 1826 +++- sys/contrib/dev/athk/ath12k/core.h | 817 +- sys/contrib/dev/athk/ath12k/coredump.c | 54 + sys/contrib/dev/athk/ath12k/coredump.h | 81 + sys/contrib/dev/athk/ath12k/dbring.c | 5 +- sys/contrib/dev/athk/ath12k/debug.c | 19 +- sys/contrib/dev/athk/ath12k/debug.h | 17 +- sys/contrib/dev/athk/ath12k/debugfs.c | 1515 +++ sys/contrib/dev/athk/ath12k/debugfs.h | 147 + sys/contrib/dev/athk/ath12k/debugfs_htt_stats.c | 6178 ++++++++++++ sys/contrib/dev/athk/ath12k/debugfs_htt_stats.h | 2076 ++++ sys/contrib/dev/athk/ath12k/debugfs_sta.c | 337 + sys/contrib/dev/athk/ath12k/debugfs_sta.h | 24 + sys/contrib/dev/athk/ath12k/dp.c | 536 +- sys/contrib/dev/athk/ath12k/dp.h | 276 +- sys/contrib/dev/athk/ath12k/dp_mon.c | 2853 +++++- sys/contrib/dev/athk/ath12k/dp_mon.h | 19 +- sys/contrib/dev/athk/ath12k/dp_rx.c | 1970 ++-- sys/contrib/dev/athk/ath12k/dp_rx.h | 88 +- sys/contrib/dev/athk/ath12k/dp_tx.c | 866 +- sys/contrib/dev/athk/ath12k/dp_tx.h | 10 +- sys/contrib/dev/athk/ath12k/fw.c | 178 + sys/contrib/dev/athk/ath12k/fw.h | 37 + sys/contrib/dev/athk/ath12k/hal.c | 589 +- sys/contrib/dev/athk/ath12k/hal.h | 127 +- sys/contrib/dev/athk/ath12k/hal_desc.h | 116 +- sys/contrib/dev/athk/ath12k/hal_rx.c | 159 +- sys/contrib/dev/athk/ath12k/hal_rx.h | 535 +- sys/contrib/dev/athk/ath12k/hal_tx.h | 12 +- sys/contrib/dev/athk/ath12k/hif.h | 45 +- sys/contrib/dev/athk/ath12k/htc.c | 10 +- sys/contrib/dev/athk/ath12k/hw.c | 671 +- sys/contrib/dev/athk/ath12k/hw.h | 104 +- sys/contrib/dev/athk/ath12k/mac.c | 11535 ++++++++++++++++++---- sys/contrib/dev/athk/ath12k/mac.h | 149 +- sys/contrib/dev/athk/ath12k/mhi.c | 193 +- sys/contrib/dev/athk/ath12k/mhi.h | 7 +- sys/contrib/dev/athk/ath12k/p2p.c | 147 + sys/contrib/dev/athk/ath12k/p2p.h | 24 + sys/contrib/dev/athk/ath12k/pci.c | 682 +- sys/contrib/dev/athk/ath12k/pci.h | 18 +- sys/contrib/dev/athk/ath12k/peer.c | 244 +- sys/contrib/dev/athk/ath12k/peer.h | 60 +- sys/contrib/dev/athk/ath12k/qmi.c | 1207 ++- sys/contrib/dev/athk/ath12k/qmi.h | 91 +- sys/contrib/dev/athk/ath12k/reg.c | 666 +- sys/contrib/dev/athk/ath12k/reg.h | 36 +- sys/contrib/dev/athk/ath12k/rx_desc.h | 133 +- sys/contrib/dev/athk/ath12k/testmode.c | 395 + sys/contrib/dev/athk/ath12k/testmode.h | 40 + sys/contrib/dev/athk/ath12k/trace.h | 41 +- sys/contrib/dev/athk/ath12k/wmi.c | 5991 +++++++++-- sys/contrib/dev/athk/ath12k/wmi.h | 2084 +++- sys/contrib/dev/athk/ath12k/wow.c | 1029 ++ sys/contrib/dev/athk/ath12k/wow.h | 62 + sys/modules/ath11k/Makefile | 63 +- 64 files changed, 43310 insertions(+), 5932 deletions(-) diff --git a/sys/contrib/dev/athk/ath12k/Kconfig b/sys/contrib/dev/athk/ath12k/Kconfig index 4f9c514c13e7..1ea1af1b8f6c 100644 --- a/sys/contrib/dev/athk/ath12k/Kconfig +++ b/sys/contrib/dev/athk/ath12k/Kconfig @@ -2,11 +2,12 @@ config ATH12K tristate "Qualcomm Technologies Wi-Fi 7 support (ath12k)" depends on MAC80211 && HAS_DMA && PCI - depends on CRYPTO_MICHAEL_MIC + select CRYPTO_MICHAEL_MIC select QCOM_QMI_HELPERS select MHI_BUS select QRTR select QRTR_MHI + select PCI_PWRCTRL_PWRSEQ if HAVE_PWRCTRL help Enable support for Qualcomm Technologies Wi-Fi 7 (IEEE 802.11be) family of chipsets, for example WCN7850 and @@ -14,6 +15,14 @@ config ATH12K If you choose to build a module, it'll be called ath12k. +config ATH12K_AHB + bool "QTI ath12k AHB support" + depends on ATH12K && REMOTEPROC + select QCOM_MDT_LOADER + select QCOM_SCM + help + Enable support for Ath12k AHB bus chipsets, example IPQ5332. + config ATH12K_DEBUG bool "ath12k debugging" depends on ATH12K @@ -24,6 +33,15 @@ config ATH12K_DEBUG If unsure, say Y to make it easier to debug problems. But if you want optimal performance choose N. +config ATH12K_DEBUGFS + bool "QTI ath12k debugfs support" + depends on ATH12K && MAC80211_DEBUGFS + help + Enable ath12k debugfs support + + If unsure, say Y to make it easier to debug problems. But if + you want optimal performance choose N. + config ATH12K_TRACING bool "ath12k tracing support" depends on ATH12K && EVENT_TRACING @@ -32,3 +50,13 @@ config ATH12K_TRACING If unsure, say Y to make it easier to debug problems. But if you want optimal performance choose N. + +config ATH12K_COREDUMP + bool "ath12k coredump" + depends on ATH12K + select WANT_DEV_COREDUMP + help + Enable ath12k coredump collection + + If unsure, say Y to make it easier to debug problems. But if + dump collection not required choose N. diff --git a/sys/contrib/dev/athk/ath12k/Makefile b/sys/contrib/dev/athk/ath12k/Makefile index 62c52e733b5e..d95ee525a6cd 100644 --- a/sys/contrib/dev/athk/ath12k/Makefile +++ b/sys/contrib/dev/athk/ath12k/Makefile @@ -19,9 +19,17 @@ ath12k-y += core.o \ hw.o \ mhi.o \ pci.o \ - dp_mon.o + dp_mon.o \ + fw.o \ + p2p.o +ath12k-$(CONFIG_ATH12K_AHB) += ahb.o +ath12k-$(CONFIG_ATH12K_DEBUGFS) += debugfs.o debugfs_htt_stats.o debugfs_sta.o +ath12k-$(CONFIG_ACPI) += acpi.o ath12k-$(CONFIG_ATH12K_TRACING) += trace.o +ath12k-$(CONFIG_PM) += wow.o +ath12k-$(CONFIG_ATH12K_COREDUMP) += coredump.o +ath12k-$(CONFIG_NL80211_TESTMODE) += testmode.o # for tracing framework to find trace.h CFLAGS_trace.o := -I$(src) diff --git a/sys/contrib/dev/athk/ath12k/acpi.c b/sys/contrib/dev/athk/ath12k/acpi.c new file mode 100644 index 000000000000..d81367ce6929 --- /dev/null +++ b/sys/contrib/dev/athk/ath12k/acpi.c @@ -0,0 +1,510 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +/* + * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include "core.h" +#include "acpi.h" +#include "debug.h" + +static int ath12k_acpi_dsm_get_data(struct ath12k_base *ab, int func) +{ + union acpi_object *obj; + acpi_handle root_handle; + int ret, i; + + root_handle = ACPI_HANDLE(ab->dev); + if (!root_handle) { + ath12k_dbg(ab, ATH12K_DBG_BOOT, "invalid acpi handler\n"); + return -EOPNOTSUPP; + } + + obj = acpi_evaluate_dsm(root_handle, ab->hw_params->acpi_guid, 0, func, + NULL); + + if (!obj) { + ath12k_dbg(ab, ATH12K_DBG_BOOT, "acpi_evaluate_dsm() failed\n"); + return -ENOENT; + } + + if (obj->type == ACPI_TYPE_INTEGER) { + switch (func) { + case ATH12K_ACPI_DSM_FUNC_SUPPORT_FUNCS: + ab->acpi.func_bit = obj->integer.value; + break; + case ATH12K_ACPI_DSM_FUNC_DISABLE_FLAG: + ab->acpi.bit_flag = obj->integer.value; + break; + } + } else if (obj->type == ACPI_TYPE_STRING) { + switch (func) { + case ATH12K_ACPI_DSM_FUNC_BDF_EXT: + if (obj->string.length <= ATH12K_ACPI_BDF_ANCHOR_STRING_LEN || + obj->string.length > ATH12K_ACPI_BDF_MAX_LEN || + memcmp(obj->string.pointer, ATH12K_ACPI_BDF_ANCHOR_STRING, + ATH12K_ACPI_BDF_ANCHOR_STRING_LEN)) { + ath12k_warn(ab, "invalid ACPI DSM BDF size: %d\n", + obj->string.length); + ret = -EINVAL; + goto out; + } + + memcpy(ab->acpi.bdf_string, obj->string.pointer, + obj->buffer.length); + + break; + } + } else if (obj->type == ACPI_TYPE_BUFFER) { + switch (func) { + case ATH12K_ACPI_DSM_FUNC_SUPPORT_FUNCS: + if (obj->buffer.length < ATH12K_ACPI_DSM_FUNC_MIN_BITMAP_SIZE || + obj->buffer.length > ATH12K_ACPI_DSM_FUNC_MAX_BITMAP_SIZE) { + ath12k_warn(ab, "invalid ACPI DSM func size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + ab->acpi.func_bit = 0; + for (i = 0; i < obj->buffer.length; i++) + ab->acpi.func_bit += obj->buffer.pointer[i] << (i * 8); + + break; + case ATH12K_ACPI_DSM_FUNC_TAS_CFG: + if (obj->buffer.length != ATH12K_ACPI_DSM_TAS_CFG_SIZE) { + ath12k_warn(ab, "invalid ACPI DSM TAS config size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.tas_cfg, obj->buffer.pointer, + obj->buffer.length); + + break; + case ATH12K_ACPI_DSM_FUNC_TAS_DATA: + if (obj->buffer.length != ATH12K_ACPI_DSM_TAS_DATA_SIZE) { + ath12k_warn(ab, "invalid ACPI DSM TAS data size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.tas_sar_power_table, obj->buffer.pointer, + obj->buffer.length); + + break; + case ATH12K_ACPI_DSM_FUNC_BIOS_SAR: + if (obj->buffer.length != ATH12K_ACPI_DSM_BIOS_SAR_DATA_SIZE) { + ath12k_warn(ab, "invalid ACPI BIOS SAR data size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.bios_sar_data, obj->buffer.pointer, + obj->buffer.length); + + break; + case ATH12K_ACPI_DSM_FUNC_GEO_OFFSET: + if (obj->buffer.length != ATH12K_ACPI_DSM_GEO_OFFSET_DATA_SIZE) { + ath12k_warn(ab, "invalid ACPI GEO OFFSET data size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.geo_offset_data, obj->buffer.pointer, + obj->buffer.length); + + break; + case ATH12K_ACPI_DSM_FUNC_INDEX_CCA: + if (obj->buffer.length != ATH12K_ACPI_DSM_CCA_DATA_SIZE) { + ath12k_warn(ab, "invalid ACPI DSM CCA data size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.cca_data, obj->buffer.pointer, + obj->buffer.length); + + break; + case ATH12K_ACPI_DSM_FUNC_INDEX_BAND_EDGE: + if (obj->buffer.length != ATH12K_ACPI_DSM_BAND_EDGE_DATA_SIZE) { + ath12k_warn(ab, "invalid ACPI DSM band edge data size: %d\n", + obj->buffer.length); + ret = -EINVAL; + goto out; + } + + memcpy(&ab->acpi.band_edge_power, obj->buffer.pointer, + obj->buffer.length); + + break; + } + } else { + ath12k_warn(ab, "ACPI DSM method returned an unsupported object type: %d\n", + obj->type); + ret = -EINVAL; + goto out; + } + + ret = 0; + +out: + ACPI_FREE(obj); + return ret; +} + +static int ath12k_acpi_set_power_limit(struct ath12k_base *ab) +{ + const u8 *tas_sar_power_table = ab->acpi.tas_sar_power_table; + int ret; + + if (tas_sar_power_table[0] != ATH12K_ACPI_TAS_DATA_VERSION || + tas_sar_power_table[1] != ATH12K_ACPI_TAS_DATA_ENABLE) { + ath12k_warn(ab, "latest ACPI TAS data is invalid\n"); + return -EINVAL; + } + + ret = ath12k_wmi_set_bios_cmd(ab, WMI_BIOS_PARAM_TAS_DATA_TYPE, + tas_sar_power_table, + ATH12K_ACPI_DSM_TAS_DATA_SIZE); + if (ret) { + ath12k_warn(ab, "failed to send ACPI TAS data table: %d\n", ret); + return ret; + } + + return ret; +} + +static int ath12k_acpi_set_bios_sar_power(struct ath12k_base *ab) +{ + int ret; + + if (ab->acpi.bios_sar_data[0] != ATH12K_ACPI_POWER_LIMIT_VERSION || + ab->acpi.bios_sar_data[1] != ATH12K_ACPI_POWER_LIMIT_ENABLE_FLAG) { + ath12k_warn(ab, "invalid latest ACPI BIOS SAR data\n"); + return -EINVAL; + } + + ret = ath12k_wmi_set_bios_sar_cmd(ab, ab->acpi.bios_sar_data); + if (ret) { + ath12k_warn(ab, "failed to set ACPI BIOS SAR table: %d\n", ret); + return ret; + } + + return 0; +} + +static void ath12k_acpi_dsm_notify(acpi_handle handle, u32 event, void *data) +{ + int ret; + struct ath12k_base *ab = data; + + if (event == ATH12K_ACPI_NOTIFY_EVENT) { + ath12k_warn(ab, "unknown acpi notify %u\n", event); + return; + } + + if (!ab->acpi.acpi_tas_enable) { + ath12k_dbg(ab, ATH12K_DBG_BOOT, "acpi_tas_enable is false\n"); + return; + } + + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_TAS_DATA); + if (ret) { + ath12k_warn(ab, "failed to update ACPI TAS data table: %d\n", ret); + return; + } + + ret = ath12k_acpi_set_power_limit(ab); + if (ret) { + ath12k_warn(ab, "failed to set ACPI TAS power limit data: %d", ret); + return; + } + + if (!ab->acpi.acpi_bios_sar_enable) + return; + + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_BIOS_SAR); + if (ret) { + ath12k_warn(ab, "failed to update BIOS SAR: %d\n", ret); + return; + } + + ret = ath12k_acpi_set_bios_sar_power(ab); + if (ret) { + ath12k_warn(ab, "failed to set BIOS SAR power limit: %d\n", ret); + return; + } +} + +static int ath12k_acpi_set_bios_sar_params(struct ath12k_base *ab) +{ + int ret; + + ret = ath12k_wmi_set_bios_sar_cmd(ab, ab->acpi.bios_sar_data); + if (ret) { + ath12k_warn(ab, "failed to set ACPI BIOS SAR table: %d\n", ret); + return ret; + } + + ret = ath12k_wmi_set_bios_geo_cmd(ab, ab->acpi.geo_offset_data); + if (ret) { + ath12k_warn(ab, "failed to set ACPI BIOS GEO table: %d\n", ret); + return ret; + } + + return 0; +} + +static int ath12k_acpi_set_tas_params(struct ath12k_base *ab) +{ + int ret; + + ret = ath12k_wmi_set_bios_cmd(ab, WMI_BIOS_PARAM_TAS_CONFIG_TYPE, + ab->acpi.tas_cfg, + ATH12K_ACPI_DSM_TAS_CFG_SIZE); + if (ret) { + ath12k_warn(ab, "failed to send ACPI TAS config table parameter: %d\n", + ret); + return ret; + } + + ret = ath12k_wmi_set_bios_cmd(ab, WMI_BIOS_PARAM_TAS_DATA_TYPE, + ab->acpi.tas_sar_power_table, + ATH12K_ACPI_DSM_TAS_DATA_SIZE); + if (ret) { + ath12k_warn(ab, "failed to send ACPI TAS data table parameter: %d\n", + ret); + return ret; + } + + return 0; +} + +bool ath12k_acpi_get_disable_rfkill(struct ath12k_base *ab) +{ + return ab->acpi.acpi_disable_rfkill; +} + +bool ath12k_acpi_get_disable_11be(struct ath12k_base *ab) +{ + return ab->acpi.acpi_disable_11be; +} + +void ath12k_acpi_set_dsm_func(struct ath12k_base *ab) +{ + int ret; + u8 *buf; + + if (!ab->hw_params->acpi_guid) + /* not supported with this hardware */ + return; + + if (ab->acpi.acpi_tas_enable) { + ret = ath12k_acpi_set_tas_params(ab); + if (ret) { + ath12k_warn(ab, "failed to send ACPI TAS parameters: %d\n", ret); + return; + } + } + + if (ab->acpi.acpi_bios_sar_enable) { + ret = ath12k_acpi_set_bios_sar_params(ab); + if (ret) { + ath12k_warn(ab, "failed to send ACPI BIOS SAR: %d\n", ret); + return; + } + } + + if (ab->acpi.acpi_cca_enable) { + buf = ab->acpi.cca_data + ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET; + ret = ath12k_wmi_set_bios_cmd(ab, + WMI_BIOS_PARAM_CCA_THRESHOLD_TYPE, + buf, + ATH12K_ACPI_CCA_THR_OFFSET_LEN); + if (ret) { + ath12k_warn(ab, "failed to set ACPI DSM CCA threshold: %d\n", + ret); + return; + } + } + + if (ab->acpi.acpi_band_edge_enable) { + ret = ath12k_wmi_set_bios_cmd(ab, + WMI_BIOS_PARAM_TYPE_BANDEDGE, + ab->acpi.band_edge_power, + sizeof(ab->acpi.band_edge_power)); + if (ret) { + ath12k_warn(ab, + "failed to set ACPI DSM band edge channel power: %d\n", + ret); + return; + } + } +} + +int ath12k_acpi_start(struct ath12k_base *ab) +{ + acpi_status status; + int ret; + + ab->acpi.acpi_tas_enable = false; + ab->acpi.acpi_disable_11be = false; + ab->acpi.acpi_disable_rfkill = false; + ab->acpi.acpi_bios_sar_enable = false; + ab->acpi.acpi_cca_enable = false; + ab->acpi.acpi_band_edge_enable = false; + ab->acpi.acpi_enable_bdf = false; + ab->acpi.bdf_string[0] = '\0'; + + if (!ab->hw_params->acpi_guid) + /* not supported with this hardware */ + return 0; + + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_SUPPORT_FUNCS); + if (ret) { + ath12k_dbg(ab, ATH12K_DBG_BOOT, "failed to get ACPI DSM data: %d\n", ret); + return ret; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_DISABLE_FLAG)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_DISABLE_FLAG); + if (ret) { + ath12k_warn(ab, "failed to get ACPI DISABLE FLAG: %d\n", ret); + return ret; + } + + if (ATH12K_ACPI_CHEK_BIT_VALID(ab->acpi, + ATH12K_ACPI_DSM_DISABLE_11BE_BIT)) + ab->acpi.acpi_disable_11be = true; + + if (!ATH12K_ACPI_CHEK_BIT_VALID(ab->acpi, + ATH12K_ACPI_DSM_DISABLE_RFKILL_BIT)) + ab->acpi.acpi_disable_rfkill = true; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_BDF_EXT)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_BDF_EXT); + if (ret || ab->acpi.bdf_string[0] == '\0') { + ath12k_warn(ab, "failed to get ACPI BDF EXT: %d\n", ret); + return ret; + } + + ab->acpi.acpi_enable_bdf = true; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_TAS_CFG)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_TAS_CFG); + if (ret) { + ath12k_warn(ab, "failed to get ACPI TAS config table: %d\n", ret); + return ret; + } + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_TAS_DATA)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_TAS_DATA); + if (ret) { + ath12k_warn(ab, "failed to get ACPI TAS data table: %d\n", ret); + return ret; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_TAS_CFG) && + ab->acpi.tas_sar_power_table[0] == ATH12K_ACPI_TAS_DATA_VERSION && + ab->acpi.tas_sar_power_table[1] == ATH12K_ACPI_TAS_DATA_ENABLE) + ab->acpi.acpi_tas_enable = true; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_BIOS_SAR)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_BIOS_SAR); + if (ret) { + ath12k_warn(ab, "failed to get ACPI bios sar data: %d\n", ret); + return ret; + } + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_GEO_OFFSET)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_GEO_OFFSET); + if (ret) { + ath12k_warn(ab, "failed to get ACPI geo offset data: %d\n", ret); + return ret; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_BIOS_SAR) && + ab->acpi.bios_sar_data[0] == ATH12K_ACPI_POWER_LIMIT_VERSION && + ab->acpi.bios_sar_data[1] == ATH12K_ACPI_POWER_LIMIT_ENABLE_FLAG && + !ab->acpi.acpi_tas_enable) + ab->acpi.acpi_bios_sar_enable = true; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, ATH12K_ACPI_FUNC_BIT_CCA)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_INDEX_CCA); + if (ret) { + ath12k_warn(ab, "failed to get ACPI DSM CCA threshold configuration: %d\n", + ret); + return ret; + } + + if (ab->acpi.cca_data[0] == ATH12K_ACPI_CCA_THR_VERSION && + ab->acpi.cca_data[ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET] == + ATH12K_ACPI_CCA_THR_ENABLE_FLAG) + ab->acpi.acpi_cca_enable = true; + } + + if (ATH12K_ACPI_FUNC_BIT_VALID(ab->acpi, + ATH12K_ACPI_FUNC_BIT_BAND_EDGE_CHAN_POWER)) { + ret = ath12k_acpi_dsm_get_data(ab, ATH12K_ACPI_DSM_FUNC_INDEX_BAND_EDGE); + if (ret) { + ath12k_warn(ab, "failed to get ACPI DSM band edge channel power: %d\n", + ret); + return ret; + } + + if (ab->acpi.band_edge_power[0] == ATH12K_ACPI_BAND_EDGE_VERSION && + ab->acpi.band_edge_power[1] == ATH12K_ACPI_BAND_EDGE_ENABLE_FLAG) + ab->acpi.acpi_band_edge_enable = true; + } + + status = acpi_install_notify_handler(ACPI_HANDLE(ab->dev), + ACPI_DEVICE_NOTIFY, + ath12k_acpi_dsm_notify, ab); + if (ACPI_FAILURE(status)) { + ath12k_warn(ab, "failed to install DSM notify callback: %d\n", status); + return -EIO; + } + + ab->acpi.started = true; + + return 0; +} + +int ath12k_acpi_check_bdf_variant_name(struct ath12k_base *ab) +{ + size_t max_len = sizeof(ab->qmi.target.bdf_ext); + + if (!ab->acpi.acpi_enable_bdf) + return -ENODATA; + + if (strscpy(ab->qmi.target.bdf_ext, ab->acpi.bdf_string + 4, max_len) < 0) + ath12k_dbg(ab, ATH12K_DBG_BOOT, + "acpi bdf variant longer than the buffer (variant: %s)\n", + ab->acpi.bdf_string); + + return 0; +} + +void ath12k_acpi_stop(struct ath12k_base *ab) +{ + if (!ab->acpi.started) + return; + + acpi_remove_notify_handler(ACPI_HANDLE(ab->dev), + ACPI_DEVICE_NOTIFY, + ath12k_acpi_dsm_notify); + + memset(&ab->acpi, 0, sizeof(ab->acpi)); +} diff --git a/sys/contrib/dev/athk/ath12k/acpi.h b/sys/contrib/dev/athk/ath12k/acpi.h new file mode 100644 index 000000000000..3a26fea6af1a --- /dev/null +++ b/sys/contrib/dev/athk/ath12k/acpi.h @@ -0,0 +1,114 @@ +/* SPDX-License-Identifier: BSD-3-Clause-Clear */ +/* + * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ +#ifndef ATH12K_ACPI_H +#define ATH12K_ACPI_H + +#include + +#define ATH12K_ACPI_DSM_FUNC_SUPPORT_FUNCS 0 +#define ATH12K_ACPI_DSM_FUNC_DISABLE_FLAG 2 +#define ATH12K_ACPI_DSM_FUNC_BDF_EXT 3 +#define ATH12K_ACPI_DSM_FUNC_BIOS_SAR 4 +#define ATH12K_ACPI_DSM_FUNC_GEO_OFFSET 5 +#define ATH12K_ACPI_DSM_FUNC_INDEX_CCA 6 +#define ATH12K_ACPI_DSM_FUNC_TAS_CFG 8 +#define ATH12K_ACPI_DSM_FUNC_TAS_DATA 9 +#define ATH12K_ACPI_DSM_FUNC_INDEX_BAND_EDGE 10 + +#define ATH12K_ACPI_FUNC_BIT_DISABLE_FLAG BIT(1) +#define ATH12K_ACPI_FUNC_BIT_BDF_EXT BIT(2) +#define ATH12K_ACPI_FUNC_BIT_BIOS_SAR BIT(3) +#define ATH12K_ACPI_FUNC_BIT_GEO_OFFSET BIT(4) +#define ATH12K_ACPI_FUNC_BIT_CCA BIT(5) +#define ATH12K_ACPI_FUNC_BIT_TAS_CFG BIT(7) +#define ATH12K_ACPI_FUNC_BIT_TAS_DATA BIT(8) +#define ATH12K_ACPI_FUNC_BIT_BAND_EDGE_CHAN_POWER BIT(9) + +#define ATH12K_ACPI_NOTIFY_EVENT 0x86 +#define ATH12K_ACPI_FUNC_BIT_VALID(_acdata, _func) (((_acdata).func_bit) & (_func)) +#define ATH12K_ACPI_CHEK_BIT_VALID(_acdata, _func) (((_acdata).bit_flag) & (_func)) + +#define ATH12K_ACPI_TAS_DATA_VERSION 0x1 +#define ATH12K_ACPI_TAS_DATA_ENABLE 0x1 +#define ATH12K_ACPI_POWER_LIMIT_VERSION 0x1 +#define ATH12K_ACPI_POWER_LIMIT_ENABLE_FLAG 0x1 +#define ATH12K_ACPI_CCA_THR_VERSION 0x1 +#define ATH12K_ACPI_CCA_THR_ENABLE_FLAG 0x1 +#define ATH12K_ACPI_BAND_EDGE_VERSION 0x1 +#define ATH12K_ACPI_BAND_EDGE_ENABLE_FLAG 0x1 + +#define ATH12K_ACPI_GEO_OFFSET_DATA_OFFSET 1 +#define ATH12K_ACPI_DBS_BACKOFF_DATA_OFFSET 2 +#define ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET 5 +#define ATH12K_ACPI_BIOS_SAR_DBS_BACKOFF_LEN 10 +#define ATH12K_ACPI_POWER_LIMIT_DATA_OFFSET 12 +#define ATH12K_ACPI_BIOS_SAR_GEO_OFFSET_LEN 18 +#define ATH12K_ACPI_BIOS_SAR_TABLE_LEN 22 +#define ATH12K_ACPI_CCA_THR_OFFSET_LEN 36 + +#define ATH12K_ACPI_DSM_TAS_DATA_SIZE 69 +#define ATH12K_ACPI_DSM_BAND_EDGE_DATA_SIZE 100 +#define ATH12K_ACPI_DSM_TAS_CFG_SIZE 108 + +#define ATH12K_ACPI_DSM_FUNC_MIN_BITMAP_SIZE 1 +#define ATH12K_ACPI_DSM_FUNC_MAX_BITMAP_SIZE 4 + +#define ATH12K_ACPI_DSM_DISABLE_11BE_BIT BIT(0) +#define ATH12K_ACPI_DSM_DISABLE_RFKILL_BIT BIT(2) + +#define ATH12K_ACPI_BDF_ANCHOR_STRING_LEN 3 +#define ATH12K_ACPI_BDF_ANCHOR_STRING "BDF" +#define ATH12K_ACPI_BDF_MAX_LEN 100 + +#define ATH12K_ACPI_DSM_GEO_OFFSET_DATA_SIZE (ATH12K_ACPI_GEO_OFFSET_DATA_OFFSET + \ + ATH12K_ACPI_BIOS_SAR_GEO_OFFSET_LEN) +#define ATH12K_ACPI_DSM_BIOS_SAR_DATA_SIZE (ATH12K_ACPI_POWER_LIMIT_DATA_OFFSET + \ + ATH12K_ACPI_BIOS_SAR_TABLE_LEN) +#define ATH12K_ACPI_DSM_CCA_DATA_SIZE (ATH12K_ACPI_CCA_THR_OFFSET_DATA_OFFSET + \ + ATH12K_ACPI_CCA_THR_OFFSET_LEN) + +#ifdef CONFIG_ACPI + +int ath12k_acpi_start(struct ath12k_base *ab); +void ath12k_acpi_stop(struct ath12k_base *ab); +bool ath12k_acpi_get_disable_rfkill(struct ath12k_base *ab); +bool ath12k_acpi_get_disable_11be(struct ath12k_base *ab); +void ath12k_acpi_set_dsm_func(struct ath12k_base *ab); +int ath12k_acpi_check_bdf_variant_name(struct ath12k_base *ab); + +#else + +static inline int ath12k_acpi_start(struct ath12k_base *ab) +{ + return 0; +} + +static inline void ath12k_acpi_stop(struct ath12k_base *ab) +{ +} + +static inline bool ath12k_acpi_get_disable_rfkill(struct ath12k_base *ab) +{ + return false; +} + +static inline bool ath12k_acpi_get_disable_11be(struct ath12k_base *ab) +{ + return false; +} + +static inline void ath12k_acpi_set_dsm_func(struct ath12k_base *ab) +{ +} + +static inline int ath12k_acpi_check_bdf_variant_name(struct ath12k_base *ab) +{ + return 0; +} + +#endif /* CONFIG_ACPI */ + +#endif /* ATH12K_ACPI_H */ diff --git a/sys/contrib/dev/athk/ath12k/ahb.c b/sys/contrib/dev/athk/ath12k/ahb.c new file mode 100644 index 000000000000..b30527c402f6 --- /dev/null +++ b/sys/contrib/dev/athk/ath12k/ahb.c @@ -0,0 +1,1156 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +/* + * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "ahb.h" +#include "debug.h" +#include "hif.h" + +static const struct of_device_id ath12k_ahb_of_match[] = { + { .compatible = "qcom,ipq5332-wifi", + .data = (void *)ATH12K_HW_IPQ5332_HW10, + }, + { } +}; + +MODULE_DEVICE_TABLE(of, ath12k_ahb_of_match); + +#define ATH12K_IRQ_CE0_OFFSET 4 +#define ATH12K_MAX_UPDS 1 +#define ATH12K_UPD_IRQ_WRD_LEN 18 +static const char ath12k_userpd_irq[][9] = {"spawn", + "ready", + "stop-ack"}; + +static const char *irq_name[ATH12K_IRQ_NUM_MAX] = { + "misc-pulse1", + "misc-latch", + "sw-exception", + "watchdog", + "ce0", + "ce1", + "ce2", + "ce3", + "ce4", + "ce5", + "ce6", + "ce7", + "ce8", + "ce9", + "ce10", + "ce11", + "host2wbm-desc-feed", + "host2reo-re-injection", + "host2reo-command", + "host2rxdma-monitor-ring3", + "host2rxdma-monitor-ring2", + "host2rxdma-monitor-ring1", + "reo2ost-exception", + "wbm2host-rx-release", + "reo2host-status", + "reo2host-destination-ring4", + "reo2host-destination-ring3", + "reo2host-destination-ring2", + "reo2host-destination-ring1", + "rxdma2host-monitor-destination-mac3", + "rxdma2host-monitor-destination-mac2", + "rxdma2host-monitor-destination-mac1", + "ppdu-end-interrupts-mac3", + "ppdu-end-interrupts-mac2", + "ppdu-end-interrupts-mac1", + "rxdma2host-monitor-status-ring-mac3", + "rxdma2host-monitor-status-ring-mac2", + "rxdma2host-monitor-status-ring-mac1", + "host2rxdma-host-buf-ring-mac3", + "host2rxdma-host-buf-ring-mac2", + "host2rxdma-host-buf-ring-mac1", + "rxdma2host-destination-ring-mac3", + "rxdma2host-destination-ring-mac2", + "rxdma2host-destination-ring-mac1", + "host2tcl-input-ring4", + "host2tcl-input-ring3", + "host2tcl-input-ring2", + "host2tcl-input-ring1", + "wbm2host-tx-completions-ring4", + "wbm2host-tx-completions-ring3", + "wbm2host-tx-completions-ring2", + "wbm2host-tx-completions-ring1", + "tcl2host-status-ring", +}; + +enum ext_irq_num { + host2wbm_desc_feed = 16, + host2reo_re_injection, + host2reo_command, + host2rxdma_monitor_ring3, + host2rxdma_monitor_ring2, + host2rxdma_monitor_ring1, + reo2host_exception, + wbm2host_rx_release, + reo2host_status, + reo2host_destination_ring4, + reo2host_destination_ring3, + reo2host_destination_ring2, + reo2host_destination_ring1, + rxdma2host_monitor_destination_mac3, + rxdma2host_monitor_destination_mac2, + rxdma2host_monitor_destination_mac1, + ppdu_end_interrupts_mac3, + ppdu_end_interrupts_mac2, + ppdu_end_interrupts_mac1, + rxdma2host_monitor_status_ring_mac3, + rxdma2host_monitor_status_ring_mac2, + rxdma2host_monitor_status_ring_mac1, + host2rxdma_host_buf_ring_mac3, + host2rxdma_host_buf_ring_mac2, + host2rxdma_host_buf_ring_mac1, + rxdma2host_destination_ring_mac3, + rxdma2host_destination_ring_mac2, + rxdma2host_destination_ring_mac1, + host2tcl_input_ring4, + host2tcl_input_ring3, + host2tcl_input_ring2, + host2tcl_input_ring1, + wbm2host_tx_completions_ring4, + wbm2host_tx_completions_ring3, + wbm2host_tx_completions_ring2, + wbm2host_tx_completions_ring1, + tcl2host_status_ring, +}; + +static u32 ath12k_ahb_read32(struct ath12k_base *ab, u32 offset) +{ + if (ab->ce_remap && offset < HAL_SEQ_WCSS_CMEM_OFFSET) + return ioread32(ab->mem_ce + offset); + return ioread32(ab->mem + offset); +} + +static void ath12k_ahb_write32(struct ath12k_base *ab, u32 offset, + u32 value) +{ + if (ab->ce_remap && offset < HAL_SEQ_WCSS_CMEM_OFFSET) + iowrite32(value, ab->mem_ce + offset); + else + iowrite32(value, ab->mem + offset); +} + +static void ath12k_ahb_cancel_workqueue(struct ath12k_base *ab) +{ + int i; + + for (i = 0; i < ab->hw_params->ce_count; i++) { + struct ath12k_ce_pipe *ce_pipe = &ab->ce.ce_pipe[i]; + + if (ath12k_ce_get_attr_flags(ab, i) & CE_ATTR_DIS_INTR) + continue; + + cancel_work_sync(&ce_pipe->intr_wq); + } +} + +static void ath12k_ahb_ext_grp_disable(struct ath12k_ext_irq_grp *irq_grp) +{ + int i; + + for (i = 0; i < irq_grp->num_irq; i++) + disable_irq_nosync(irq_grp->ab->irq_num[irq_grp->irqs[i]]); +} + +static void __ath12k_ahb_ext_irq_disable(struct ath12k_base *ab) +{ + int i; + + for (i = 0; i < ATH12K_EXT_IRQ_GRP_NUM_MAX; i++) { *** 61938 LINES SKIPPED *** From nobody Tue Mar 31 20:28:13 2026 X-Original-To: dev-commits-src-branches@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 4flfnn6BqYz6Y08Y for ; Tue, 31 Mar 2026 20:28:13 +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 4flfnn52PLz3Qt5 for ; Tue, 31 Mar 2026 20:28:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988893; 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=kUltUQYey5NrzKCEoYKqFoJYd1m7Zl89NK3UhiVewuY=; b=eLjYuuXl1Hp6uE+WpLq1nOAmtsc8AZp6pOUJSYqkRIE4tIAIm7fdVsNO5MGXpcvqLVnJC4 SIr1ZyTBwb2JQ26bQQ3K2TIyPwSEhEvApYslIKJYnJRNnCQ+iXIJfUBaJ5g2lQYbbnP26g nkLYfT5gvXgdVy9In149Z9M/nkjTMQqeW30G7thgCWj+FT+e1Y60zI8veMxtQMpbU0MzoN FeZh78Y7wyE6NfZbM1TzNes24DoN8jwWdHb0REtlt7YtUnerbBs6QhEQzHlP38fLqFLStd Yhv/M2vt4IfwK4qfeEqXW18OrzZci7OXGIe5fbOJ0d1hAr4AzOOmXwi4gxC9/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988893; a=rsa-sha256; cv=none; b=xaqwVjkObdcaIcVj6Q3lz9JQZoBFqiExT5vE1ln0bBghi2yMGCykfOqMjjMVm8YeizWO8x j3C5CAt9Y5pE3vfdWLxtTi2nbfxkmtJzERkLYrdk0r4dINg4MqBQ2MouX4UmsEx9/zp+Jd SzaIIlB74YhtIOcq1wHRck9Cnvspa2PjXtd69oNTFim6e/ywCX8II8ou5W1O3CxEM3k10G geVGlvyzZqpr+URH61xQv6lsKzPECgMxAp9DLr1XRr2WMOq0CCm+LzfFL7k3MFJaae4jCX 8dL/klZucK9Kar6fjW6TPBGxXlBlqcHyiRu+GT1xz37XvjRj43Bn0wGFFEtkdg== 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=1774988893; 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=kUltUQYey5NrzKCEoYKqFoJYd1m7Zl89NK3UhiVewuY=; b=v0ApAkhdt5/UKheCnRWzCZHGsufCfHWrCUaeGrZsS6BsRuTqzVbcQtQxss4/y0sFL9h/7b YZIDx9z/FuOF3/kw2t5zxtSS72i6w7AAtQAisJnaZSgzAWsMjm1rX9Fm87cQqWqVeAUu5n Kr+hsQP72cvcl/YXUGw/wNTrhbKLdjAsF3C8eLeYoz1eK0i/Sgg4bpTKiq4glNCudNSzIT ilm9GVJXH4bG0ruOduZPo71+q6KC7wIsTGZR5Ng8N1TtstR1a06PoNfN5Mvp5hR01oqCmk ygecPHB1s8ZE8XBl+H3XxtyAU3zyqtnn5mIsy/Q7l36Y9HWYVkW6/ZSpTB3+/g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnn4cYRzlF3 for ; Tue, 31 Mar 2026 20:28:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26a8b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: ff68a58546ee - stable/15 - ath12k: update module Makefile after vendor import of v6.19 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ff68a58546ee7d7270daf7c5d373de47a71161b9 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:13 +0000 Message-Id: <69cc2e5d.26a8b.6acb5c12@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=ff68a58546ee7d7270daf7c5d373de47a71161b9 commit ff68a58546ee7d7270daf7c5d373de47a71161b9 Author: Bjoern A. Zeeb AuthorDate: 2026-03-12 15:47:55 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:22:51 +0000 ath12k: update module Makefile after vendor import of v6.19 Sponsored by: The FreeBSD Foundation (cherry picked from commit 03ba27c194ca5937478502cb52a0eda8146f9be1) --- sys/modules/ath12k/Makefile | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/sys/modules/ath12k/Makefile b/sys/modules/ath12k/Makefile index 674a68e12813..ff61769bd99e 100644 --- a/sys/modules/ath12k/Makefile +++ b/sys/modules/ath12k/Makefile @@ -2,28 +2,51 @@ DEVATH12KDIR= ${SRCTOP}/sys/contrib/dev/athk/ath12k .PATH: ${DEVATH12KDIR} -WITH_CONFIG_ATH12K_TRACING= 0 +ATH12K_ACPI= 0 +ATH12K_AHB= 0 +ATH12K_COREDUMP= 0 +ATH12K_DEBUGFS= 0 +ATH12K_PM= 0 +ATH12K_TRACING= 0 KMOD= if_ath12k SRCS+= core.c hal.c hal_tx.c hal_rx.c SRCS+= wmi.c mac.c reg.c htc.c qmi.c SRCS+= dp.c dp_tx.c dp_rx.c dp_mon.c debug.c -SRCS+= ce.c peer.c dbring.c hw.c +SRCS+= ce.c peer.c dbring.c hw.c fw.c p2p.c SRCS+= mhi.c pci.c -.if defined(WITH_CONFIG_ATH12K_TRACING) && ${WITH_CONFIG_ATH12K_TRACING} > 0 -CFLAGS+= -DCONFIG_ATH12K_TRACING=${WITH_CONFIG_ATH12K_TRACING} +.if defined(ATH12K_AHB) && ${ATH12K_AHB} > 0 +CFLAGS+= -DCONFIG_ATH12K_AHB +SRCS+= ahb.c +.endif +.if defined(ATH12K_DEBUGFS) && ${ATH12K_DEBUGFS} > 0 +CFLAGS+= -DCONFIG_ATH12K_DEBUGFS +SRCS+= debugfs.c debugfs_htt_stats.c debugfs_sta.c +.endif +.if defined(ATH12K_ACPI) && ${ATH12K_ACPI} > 0 +CFLAGS+= -DCONFIG_ATH12K_ACPI +SRCS+= acpi.c +.endif +.if defined(ATH12K_TRACING) && ${ATH12K_TRACING} > 0 +CFLAGS+= -DCONFIG_ATH12K_TRACING SRCS+= trace.c .endif +.if defined(ATH12K_PM) && ${ATH12K_PM} > 0 +CFLAGS+= -DCONFIG_PM +SRCS+= wow.c +.endif +.if defined(ATH12K_COREDUMP) && ${ATH12K_COREDUMP} > 0 +CFLAGS+= -DCONFIG_ATH12K_COREDUMP +SRCS+= coredump.c +.endif # Other SRCS+= ${LINUXKPI_GENSRCS} SRCS+= opt_wlan.h opt_inet6.h opt_inet.h opt_acpi.h -CFLAGS+= -DKBUILD_MODNAME='"ath12k"' - CFLAGS+= -I${DEVATH12KDIR} CFLAGS+= -I${DEVATH12KDIR}/.. CFLAGS+= ${LINUXKPI_INCLUDES} @@ -32,4 +55,7 @@ CFLAGS+= ${LINUXKPI_INCLUDES} CFLAGS+= -DCONFIG_ATH12K_DEBUG +CFLAGS+= -DKBUILD_MODNAME='"ath12k"' +CFLAGS+= -DLINUXKPI_VERSION=61900 + .include From nobody Tue Mar 31 20:28:14 2026 X-Original-To: dev-commits-src-branches@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 4flfnq2zMKz6Y0KZ for ; Tue, 31 Mar 2026 20:28:15 +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 4flfnp65KNz3QjC for ; Tue, 31 Mar 2026 20:28:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988894; 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=qNnhv8LrheaV/f0Am0oLDoduT0u9UVAZukYtYDyCm10=; b=PHfTGR3qxeFL2t9POlMVbMjHkDWscofEh4+7q8SbTqHCVgEj0keFH/vNaewtszWKWKoBwN vLBvVr0JRlwKzdzZz80SIcfm7Evd5iF7FmJpkZqPqfJkVLteQFzQ1iWhvlZgHoJbYLb8aP t36mikyw+20uVWRkJmB22+/CKT/lg/m+iPZNlfMqLcp0PeRbYfqnj5ZcLLeutyI4I4sEMV Y3Xle0M2LZ0peKvK8aXb7xW/v/rPGKR8jpgpiw03k1n+FW9djlLtdDNE4+/dazvqIBDqmu wJL7Xf6+2bRJ9NPVqTmAimfVgBkmR+v8Cpl7J9ocv48QTtBxxDZxSQSilRlkdQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988894; a=rsa-sha256; cv=none; b=xula8U+ECgBCX2mEP8uvbdGyjwnUmDpoF5M4cBMHUaojNUOiv1qR72ShjuNKA3tQo0hXnL YPytZzrL3UwS4uoK9wQZwf/fZZxaxZuETv8YhNKAa5WaVL3qZuyVS264hu03YC4LY8owXi laIjJkUX9e3TPJk8hAnR3DyeSaCCibFW+i9jsItlnZgIuu66xdVurkQRvD/PLPAiQeMClG lWiQsMx3dy+OuwqWk/IbBkJwSQ2xcnb55dNnN+Kf0htBQYYAyecnGfH9XsR0eJIk4DzzMM xrkGfrmLK8H7YXUBTQZYOmHLgYHTHYUs3/YqNMsu5MPcDLCR977eKUgOS0SA7w== 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=1774988894; 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=qNnhv8LrheaV/f0Am0oLDoduT0u9UVAZukYtYDyCm10=; b=qAsW0dwm4zJNvbBE+oTXB0XcFzyhAp4+qRStwo6sUbTvks1dyxqaybGOeToR9JzaXWr1pT lCqKsM7f7dTxuyo93a5lmmQLRGERGEURbvfKPQKu4mnUel7CGJMHftNsA47TSFQC/l8XfK vQ46i2oK7VQGJDhH+pJ5lMZc1Jis2sngCVJuQJTCE7seshyPpE0YE18TE9mmSE4l6JtASf d8wfWTcwD8aoBCoNS6HMyJtpw9szi8FwPmuo2pO1ZsPvf+6a3cgG5a1l4uh3dAEELEQToT aBn3e9LTPCY2g4d+Z+hmkn82QRvl0GvJs5ywEW1TRxBNg0kqnLTIuTzH2+oHoQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnp5NvPzkbk for ; Tue, 31 Mar 2026 20:28:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 245d7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 40be04834308 - stable/15 - sbuf: make assertion message a lot more useable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 40be04834308e3aa1e1cf411f87f16a34f4ff130 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:14 +0000 Message-Id: <69cc2e5e.245d7.3f60af2@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=40be04834308e3aa1e1cf411f87f16a34f4ff130 commit 40be04834308e3aa1e1cf411f87f16a34f4ff130 Author: Bjoern A. Zeeb AuthorDate: 2026-03-18 14:43:15 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:22:51 +0000 sbuf: make assertion message a lot more useable Saying that we are called with an (un)finished or corrupted sbuf is like saying "error" (though [un]finished is an extra hint). Add the pointer to the sbuf so one could easily check it, add the flags we are checking so one could see quickly about a possible state mismatch. Given we already dereference the pointer in the KASSERT there is no extra harm adding it to the message. Found while: testing lindebugfs changes Sponsored by: The FreeBSD Foundation Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D55919 (cherry picked from commit 2ce06d25431a6c96ef5719165cb73e138a0ed89c) --- sys/kern/subr_sbuf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_sbuf.c b/sys/kern/subr_sbuf.c index 27e18c114afd..c5673e871df4 100644 --- a/sys/kern/subr_sbuf.c +++ b/sys/kern/subr_sbuf.c @@ -124,8 +124,8 @@ _assert_sbuf_state(const char *fun, struct sbuf *s, int state) { KASSERT((s->s_flags & SBUF_FINISHED) == state, - ("%s called with %sfinished or corrupt sbuf", fun, - (state ? "un" : ""))); + ("%s called with %sfinished or corrupt sbuf %p { s_flags %#010x }, " + "state %#010x", fun, (state ? "un" : ""), s, s->s_flags, state)); } #define assert_sbuf_integrity(s) _assert_sbuf_integrity(__func__, (s)) From nobody Tue Mar 31 20:28:15 2026 X-Original-To: dev-commits-src-branches@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 4flfnr4h7gz6XyyQ for ; Tue, 31 Mar 2026 20:28:16 +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 4flfnq6cdNz3QjP for ; Tue, 31 Mar 2026 20:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774988895; 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=+ffWCUGAMQncPFG+ZwUE7yBmUf9JhQsclnqsiRn9X/o=; b=ZLWL/EKJXOwkoqf0BJ/FxLWENwq6zANoPjuGH0T+SbKJO3OIAmsIvhHaUtEiRYeaEzvGIj uDGImjEte9GSKMpwEKDCwn8ocmqzcep0cF5NhpkVX9z+Lnh1m4SIeTrfPRZINIWPvKVZ6W ObQwbvn9L1x/FKeehatg14gfV6P9/Nw+5Kr2yTapLNCN2iYsQwxVL2VdEjF5vQs0uY9KXH o6Wwig2i6K4/HTh3KHXV5b+HKnKlpFsjkZGZGyV/ZG4yzDaWbTylKswC9xSPD6E5Bfm92J rKl4Ks4x2K68QSXiyvbl/CPDF2PVap9aA9TsflQv5OAN37K/n3OjsZY78dJ3dw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774988895; a=rsa-sha256; cv=none; b=cdJD8M3xSeY90oPRboOzfofHFnz3oMSbrSnzbdw7W/YcPMZz6Xd1QeJiVQ9U+Pry+tEGVk 4ES/cGAUaBbvSL/k0sRjp8cM3ol71qKTg70Pq2D1akkuKjEgvFagIULiaAz6Q3XV49g8Xu 2gcHPN70UKCIgs3chZ161zf6o+At7S1tIynBp0D2MyFfWfxy9idHUNjk8a+r38iOkBWFAk UFspNwIKddhAYglvil0D2/Pg+wSVcaJDI3SXAOReM49FERWn1qEFO6CQoGrNxqEz2a7cgN dtGUhYwW2UqWnQQURm1C/Ps3oVI6C5lnZkBA38/FozlEfdXkiI+Bp6u1BLWnow== 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=1774988895; 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=+ffWCUGAMQncPFG+ZwUE7yBmUf9JhQsclnqsiRn9X/o=; b=GHBBrItoBmPDDZXeDjN8NIA4qtM/fUja74Wx5zzuAInHx/bntoFKdhBKrTvJWOykRcKFrb Jk8rDXFEScnGPw+eDZvBVDRp5VqMvyEstzYFqVdyv06aYxcxA8ox9vpdQ36zZt6Vc6pFVN DUfClxcxgQTjy8JtJeEaAkXZrv4Ns+9d7dv5oN0gJ2ytYY/Kb/44265Uow5aTxLiUQ5ILc 6o2NQX+6Sl66oNZtHF04aGQ1HLp4hewGAdZ2A2vwPB4m2uAVxNVJHnyoSBofGsZa3/LhbP YTcYPC9wqrGgeXtYQyDGW2Ken52/IUNcoG6FBxXS2JI8WIioEyXPYfFCSmga1w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flfnq680PzlRg for ; Tue, 31 Mar 2026 20:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26dc4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 20:28:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 29dce45d8c50 - stable/15 - LinuxKPI: add supporting #includes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 29dce45d8c50ea5858dc91a4294e83b8d72a2f80 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 20:28:15 +0000 Message-Id: <69cc2e5f.26dc4.671fe228@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=29dce45d8c50ea5858dc91a4294e83b8d72a2f80 commit 29dce45d8c50ea5858dc91a4294e83b8d72a2f80 Author: Bjoern A. Zeeb AuthorDate: 2026-03-19 20:29:29 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-03-31 16:22:51 +0000 LinuxKPI: add supporting #includes Compiling drm-kmod on !X86 does not include asm/smp.h which includes preempt.h on FreeBSD. In order to compile drm-kmod on other architectures add the secondary #includes for preempt.h to spinlock.h and hardirq.h (which now also gets included from highmem.h) to connect the #include chain. Sponsored by: The FreeBSD Foundation PR: 279864 Reviewed by: jhibbits, emaste Differential Revision: https://reviews.freebsd.org/D55974 (cherry picked from commit 1d18872c2519d7ca726ddc49735180ab1d8916e0) --- sys/compat/linuxkpi/common/include/linux/hardirq.h | 1 + sys/compat/linuxkpi/common/include/linux/highmem.h | 1 + sys/compat/linuxkpi/common/include/linux/spinlock.h | 1 + 3 files changed, 3 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/hardirq.h b/sys/compat/linuxkpi/common/include/linux/hardirq.h index f79451dd0d35..c6cbf1a34f14 100644 --- a/sys/compat/linuxkpi/common/include/linux/hardirq.h +++ b/sys/compat/linuxkpi/common/include/linux/hardirq.h @@ -31,6 +31,7 @@ #include #include +#include #include #include diff --git a/sys/compat/linuxkpi/common/include/linux/highmem.h b/sys/compat/linuxkpi/common/include/linux/highmem.h index 58a9cdcdf60f..dc1c4fe2f299 100644 --- a/sys/compat/linuxkpi/common/include/linux/highmem.h +++ b/sys/compat/linuxkpi/common/include/linux/highmem.h @@ -45,6 +45,7 @@ #include #include +#include #define PageHighMem(p) (0) diff --git a/sys/compat/linuxkpi/common/include/linux/spinlock.h b/sys/compat/linuxkpi/common/include/linux/spinlock.h index a08edcf8f417..0ab81d92d4ef 100644 --- a/sys/compat/linuxkpi/common/include/linux/spinlock.h +++ b/sys/compat/linuxkpi/common/include/linux/spinlock.h @@ -41,6 +41,7 @@ #include #include #include +#include typedef struct mtx spinlock_t; From nobody Wed Apr 1 00:33:29 2026 X-Original-To: dev-commits-src-branches@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 4flmDp0y03z6YNgj for ; Wed, 01 Apr 2026 00:33:30 +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 4flmDp0LyQz3w77 for ; Wed, 01 Apr 2026 00:33:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775003610; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uj9JA9reHNUuHHuEn5AWMIaISgsDWKUpL3tYnTJRimU=; b=nzvI7H1v9I0rH5zAjskMHUoWoUI9Mr1JbepZkcNWiEHJq5JdggcFfQIzGhjv1rsMN3LIrY RbDiuzXEJkIVS0RQx03DT0uWtQClzqmvs2+YNz01EmtKIWqKJrcZWaZk85LCANaBf4AhoG dxrAltUR80AbU5YfLIHkSCkcAxSGVnfkqa7VbVpIDsmYRl7/stNdnaTH34VZ/G0dummlrQ /OjFilzP2o3+kb88pdZWzvCDmyku316GH0RREgFNUnp7AA8iQAwk/y7/3dSawQ5Vp2+04J U4Qw8lalonWgb1UeCLFLBK22YcZBEQMMl1YIOEBsczoybNnG6PDpxkkMGTxubQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775003610; a=rsa-sha256; cv=none; b=cUjO1A4RhCUECFPk9jNQNRWYNT/jhvannbmGRWlTcFyd7jL4+XGH1MV9a4dl9S7TYfPM3v wQn3yoIYLUKD07LlRpFOYr8p6Cb8Ib3OaWBwJRVdekcNEKRPPup2+wGbCfs0PSMXwyhOtn eDlKEPh5xi28tw7mZqZBuOexjO0nhc4Umqs2iK1WMaWF8iLzGXGHjSkN90hrYzk1xwwbsZ waDQEJd+SZssAwrSqIMGwjzesBR1Q4YetKssmso+z7BCiwk8c/5S3CTUKy25pLVwJOPC90 U/A78HBEvx8ty6xFOm9FUbzCI/FGNQvr0GA1Q8hGAyKYw9oy7hP/uMpwPDrnYw== 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=1775003610; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uj9JA9reHNUuHHuEn5AWMIaISgsDWKUpL3tYnTJRimU=; b=SMPpvgWs5FzebvvCrqrmHWiru7i9Z3pdyNbx25PWY9y8QbyGmXATaJpdrtVYfJxeojG/CM QPBpc0epsWttwJrSDUfcHd/g08poQRMSelmxWxMDBSgo9/jXQDV+titrVW6f0DkIhT1zVO 6U+TDU6h6K265OuNrG3j1kAgTpX/zG6XiHNsw2eBDwhyu9qZLeGCJ3sW0UXbXPRdiDCYgV Rj0jOsrSbppNEHOItn6epDIOcr9ljetSI73MRdRRT5O2SNv1BYg+UZRRZPA9RGSCITcAZB 22rMtHJWivcwcYwFDSnRMAF/r79NDQ4KdMJUZ5alxcRJUvBhgWbD3nF9EkxkZw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flmDn73VYzsxL for ; Wed, 01 Apr 2026 00:33:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f478 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 00:33:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Konstantin Belousov From: Mark Johnston Subject: git: dc46e4a23abe - stable/15 - amd64/vmm: remove unused static function vcpu_state2str() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: dc46e4a23abec68aef06e5bd9735863f9fd1664b Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 00:33:29 +0000 Message-Id: <69cc67d9.1f478.492bb3b7@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=dc46e4a23abec68aef06e5bd9735863f9fd1664b commit dc46e4a23abec68aef06e5bd9735863f9fd1664b Author: Konstantin Belousov AuthorDate: 2026-01-19 16:25:50 +0000 Commit: Mark Johnston CommitDate: 2026-04-01 00:28:35 +0000 amd64/vmm: remove unused static function vcpu_state2str() It is guarded by #ifdef KTR, so the warning does not show up under usual kernel configs. Fixes: ed85203fb7a0334041db6da07e45ddda4caef13d Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D54781 (cherry picked from commit 002c50ea23b99b415b1b392d3dd5ea6223c3a74c) --- sys/amd64/vmm/vmm.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index 6312fafa2975..050cc93d2605 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -204,26 +204,6 @@ VMM_STAT(VMEXIT_USERSPACE, "number of vm exits handled in userspace"); VMM_STAT(VMEXIT_RENDEZVOUS, "number of times rendezvous pending at exit"); VMM_STAT(VMEXIT_EXCEPTION, "number of vm exits due to exceptions"); -#ifdef KTR -static const char * -vcpu_state2str(enum vcpu_state state) -{ - - switch (state) { - case VCPU_IDLE: - return ("idle"); - case VCPU_FROZEN: - return ("frozen"); - case VCPU_RUNNING: - return ("running"); - case VCPU_SLEEPING: - return ("sleeping"); - default: - return ("unknown"); - } -} -#endif - static void vcpu_cleanup(struct vcpu *vcpu, bool destroy) { From nobody Wed Apr 1 00:33:31 2026 X-Original-To: dev-commits-src-branches@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 4flmDq25bGz6YNbB for ; Wed, 01 Apr 2026 00:33:31 +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 4flmDq1052z3w9X for ; Wed, 01 Apr 2026 00:33:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775003611; 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=ap7DoigNZvYTKycW4vvH7fXXSbgPiIvvv4dkHL5mZ20=; b=Z8r8CkRiBNRhI+tw2L7VN5MUoniQaakdUmnKT0owvCrK/s3P9T8KCqvmLTGBxr22lu5nx8 AyCVbAcYZTijOcFVdlcebEc/nCViVgDwZR2vGe4frLgrGYWY0UQ8i4hvKja1VomPiEsgLg hsK9mn/Sr1OIvarcWXlRJigiLTHdnydRYniJ/k61hgygH2rvK1Q73EhYvYFoTdWru4VOmZ uu2E51tjEnLjZkDNqH7ryQ2FyCr0/XN/2yLblvgckW8YMXnw8BzbFSYDKzizzv8nMC9omp 8mgmrltjqCMxr/s3fC8EaB1djI8KdM07Apyt28gWvFHQK7iP3ah3fMP+WvR00g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775003611; a=rsa-sha256; cv=none; b=sQ6IuP0IGGqKNywXwbKpHXi+H0EyJVplBIHBuHsMgW8PqS/PT4LM0V1idNT7VO84na5c7y qpqfqBYr0XYlCeZj2WvCw5ef5+FMTeMikfWfk72L03kQLm6Ti6giW2NsPBALqbMMhUNZHl AyGmn4va3iJa6868fnE/2ue5GWLFiZlT18AFr1s/lGZmXq0MJrTYN6se50CXSoUyozX3kU k85ufNL8PIAMmpiWrM8fmVAaBjtfoF8dyGttdqSOHiSNhGJAz2OvxkI0AmxyC8V9rnSF2+ /IsO65DQOUeMZnxUqTwuHD4pIhvzcCXf1fyFp05+2i5MqJAtKJ3wt22zQnzIDw== 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=1775003611; 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=ap7DoigNZvYTKycW4vvH7fXXSbgPiIvvv4dkHL5mZ20=; b=apxlUOpGHlEzy3TEo9924MibJLyBeklW3dIg0lGjAZuVj+NRMMolzjhbJ1zTLrkP+wIGOL 5fiQIcsCi+LZWC0jz/W8eooue1uscMEQ4zGXnhLknJqNYfhlgnhongR9kMlzQREgZz+USm ollf/Vhevl603y0xGILHDSgfGxo1ps9jWUisKEsegwelPH60h9zuE8cwizO9kOFiskWX2W sC3Xvrm4HDi0KDr8yKH8E0nC1NU6UNVA7Ik6o94uL727WsFs66H3m2x6YE81I+28sde8UM oFnM8WkRN2Y5JimBwyt/FSKVjr4YWAQ6PU99whiHJYBaGCGrpKn6V2LOhv/xBw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flmDq0Xnmzt1C for ; Wed, 01 Apr 2026 00:33:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21d4a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 00:33:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 1d1bd59004c7 - stable/15 - vmm: Add an include to vmm_ktr.h for vm_name() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1d1bd59004c70d380452e7a351062c95f127faab Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 00:33:31 +0000 Message-Id: <69cc67db.21d4a.66dc0520@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1d1bd59004c70d380452e7a351062c95f127faab commit 1d1bd59004c70d380452e7a351062c95f127faab Author: Mark Johnston AuthorDate: 2026-01-08 23:29:06 +0000 Commit: Mark Johnston CommitDate: 2026-04-01 00:31:18 +0000 vmm: Add an include to vmm_ktr.h for vm_name() Required when KTR is configured. Remove the pcpu.h include while here, as it seems to be unneeded. Reported by: Jenkins Fixes: 5f13d6b60740 ("vmm: Move common accessors and vm_eventinfo into sys/dev/vmm") (cherry picked from commit 0aaa95ae02803ba0195c5da695ffbb17a79135bc) --- sys/dev/vmm/vmm_ktr.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/vmm/vmm_ktr.h b/sys/dev/vmm/vmm_ktr.h index 20370a229530..afd9831e4225 100644 --- a/sys/dev/vmm/vmm_ktr.h +++ b/sys/dev/vmm/vmm_ktr.h @@ -30,7 +30,9 @@ #define _VMM_KTR_H_ #include -#include +#ifdef KTR +#include +#endif #ifndef KTR_VMM #define KTR_VMM KTR_GEN From nobody Wed Apr 1 00:33:28 2026 X-Original-To: dev-commits-src-branches@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 4flmDt1ZXbz6YNws for ; Wed, 01 Apr 2026 00:33:34 +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 4flmDt0kMQz3wGn for ; Wed, 01 Apr 2026 00:33:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775003614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Fg0KEG6IDDI3RsR5MgmalauLKj3MbLulmEC5vC7W5tM=; b=M+ijnHZbq/d77aJFCJFzeoM9BaPcGCXT6/m+PGv2QRbIc2RkFfHHBWKKl1ogoSR/3K2izT QxMkF0MikqU4kAgIzBQXUOK6uGncttwhdl0Z3EPXYuU6C2Z01cNj0s3mjnmiFRANhVcCa/ DK6qSWwU0WU86UiWdbNGPGgRl7j41i1VPs9rXY6Zz+Aaz6m8T4/dYIYjRSehCgeFQ1LlF8 WRklJSR0SavHBNuncoxq9VJbeIU+fwCmSj2q2l1dpqPoX7grcoDzyaYcWGoET3LPLRaFVA ymkiLfTWHsFrr5Ww5/QQQwj66Ii3bPa7oHf6yhsEWpmvxz4FUWt2S7lp7h5f4A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775003614; a=rsa-sha256; cv=none; b=lXs0ZJn5Ndlg27UkI31BDxAsO5/V2NkYBAGJZnlHa7q3o9iDyDV5DCbiuLcBmRRMRY1iIA w+G4QtpxmuKGk8H3Ta6CY+2lJEjLLPCozPNpU1vDhg9pqplHkATi6XCpvRsWAPPHAxkT3/ vrxsNbtT/rSifPkPc8qvz0ZkBOquSAJoHE7g5E1mn6VYONstcnNFUPlnZcS1iu2ddgvvG+ S4rJ1b+4z7LOsShrS44AXs2TbdBtVAAtu4+Olmv1SCu5pvTq/sp4O3NGJYa7RqcMUyA5kG LCAJqa2ZaIvPRLyB3stcFxXk+sAr0wx/gNEe4viu3B0GnyAuNCyWHqGGe2OEpg== 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=1775003614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Fg0KEG6IDDI3RsR5MgmalauLKj3MbLulmEC5vC7W5tM=; b=uhHs7aGwQP/Eo320jWOe02FyqUPChrKy2zvxE0S/2oj4P0+6oTRQCQ+e7ctsEwRIh0EF4C D8CR9OaW28gqK9XaqauXEtVXuXPbSnNLWg8DYq/+tbZhJqNtqAUSIYlNdRE8XCXlvVOWoN B3ucY1nOgM2n5HB69TtmmQOTEeD0HnSMMntf5GcfbPO/f6riZwHHLTQp4uSVif8JEwyBjT T+qC1xOJsC6da4mI+YMO94CG+ahfXo98JYbfcJapHB7JE/zZw9tEjs+m3uECl761AxBqx7 m4QeMQTXzCfrmHksU6JicumMBt64OJoh/9gv1BfFi0norZx+KND69AL0jTwPPQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flmDt03DMzt1D for ; Wed, 01 Apr 2026 00:33:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21c8f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 00:33:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Enji Cooper From: Mark Johnston Subject: git: b20f0e608df2 - stable/15 - divert: unbreak the LINT-NOIP build List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: b20f0e608df2cbb50f382b6d347a71904cb1faeb Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 00:33:28 +0000 Message-Id: <69cc67d8.21c8f.5954bc8@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=b20f0e608df2cbb50f382b6d347a71904cb1faeb commit b20f0e608df2cbb50f382b6d347a71904cb1faeb Author: Enji Cooper AuthorDate: 2026-02-26 23:06:36 +0000 Commit: Mark Johnston CommitDate: 2026-04-01 00:27:24 +0000 divert: unbreak the LINT-NOIP build Only expose `dcb` when either `INET` or `INET6` is defined. Reported by: clang (`-Wunused`) MFC after: 1 week Fixes 5547a7bb39 ("divert: Use a better source identifier...") Differential Revision: https://reviews.freebsd.org/D55548 (cherry picked from commit bd758ebac3272f720c051570e043e4bc653dcd48) --- sys/netinet/ip_divert.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 75371c7dacb3..046df7f99ed8 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -503,10 +503,11 @@ static int div_output_inbound(int family, struct socket *so, struct mbuf *m, struct sockaddr_in *sin) { - struct divcb *dcb; +#if defined(INET) || defined(INET6) + struct divcb *dcb = so->so_pcb; +#endif struct ifaddr *ifa; - dcb = so->so_pcb; if (m->m_pkthdr.rcvif == NULL) { /* * No luck with the name, check by IP address. From nobody Wed Apr 1 02:14:39 2026 X-Original-To: dev-commits-src-branches@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 4flpTW18Qxz6YXty for ; Wed, 01 Apr 2026 02:14:39 +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 4flpTW0lqxz46H7 for ; Wed, 01 Apr 2026 02:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775009679; 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=9D1qzdOP55YrEeG6bXzvihzYgMn1aNcTMPy/4v1JoPQ=; b=NXEYiDurB1PproPAJI6SnY5TEhzuM4oI2bzRl8U4iamqzujvJLWX5G9XFqBY7Q2ZEndw8y rbMMT06J85kFu05XxkxbsZs/xzybrOhDNfWdpD5qhBpEe/zXyIobb1sBRsc+6EtGBW7xm3 gXP2CCCnyZ9CN5reesndQ9ttefJZ/Rt8Ulol5PYz/rGOGFPZSrbgn5IPVM0bFlrq2ICM8Q 5vCJWXyVGYn33k+glzn8Qhh4JwO28frb9Ef/xhl7aa/QSrormgqWihqDBhqkdMY5KvkOs/ mOImUt8DU2Tau5B/NUKwzoxupGy8phyUBSKoExSA6LLO2Oef/h25P07qKFAMMg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775009679; a=rsa-sha256; cv=none; b=FuqUx74rCbx6MRtSUYYnCQOLuE90SjGB4Jkgq4O8T/Nl4zxpT+Uab4u8gutihpcvnC0Oie KawGi/kTUYt7pyThZvZFjFLfxksmT43+dFfcNuiCIie0nbKV0VeB8lSd0bNBfGeCBrVOW8 V6cv7SZGiKPm+c1G8PzRI4lvoqUD0HOAvc6BKVGxnh3JtECtwvRtUdinzIKolaNzYeEI60 eQFmAoqnnBt5oJ/0Kg5jsbTMyeqt/FuIZUtS4MkR3vMwYkvMFbsk0QlTZEUYOTpP8Y9Tt0 i9PCrhAbGKvjS2cpormZB3EG34ZOHUrToVUf4yq1uybr0sT49b2XHN5zNl8Urg== 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=1775009679; 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=9D1qzdOP55YrEeG6bXzvihzYgMn1aNcTMPy/4v1JoPQ=; b=niSvlaiuos48ELG9/sh5lP7zXVeSc3/KpGLFtanqoYKJMk4qf8NzGc0X2a2jpkWYJgo/C0 p9/veliNGbWj/iAfl/cpYkPfyaNtSJSujhiJMn0ttJROMWLHD10MLvI6WFhDZ0ESRAwOsd AnbEBLB1YF3ZabiJg9SBObkDEyJJ1umuuHiIZnaey6qtnIV6X7fdpyOYGTtVWhpUh5bMSV rB2UPXJ1Bx6eqwNFsjE2OLvx9Br5Jdm/RcG5CGuLP5ZQQrAziLzMhiPLmWb6q/mtv9QPf7 qMR3fs0El5fvgSOTW//iplT/8JxSdfUzORRexXTU+MCGEmhSzi+Z0+/YCe7eyg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flpTW0K5zzvc5 for ; Wed, 01 Apr 2026 02:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 331fc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 02:14:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Xin LI Subject: git: 7176f76d2251 - stable/15 - MFV: xz 5.8.3. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7176f76d2251331c4ec6fff8d7c699771717f1fa Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 02:14:39 +0000 Message-Id: <69cc7f8f.331fc.1f5a91d0@gitrepo.freebsd.org> The branch stable/15 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=7176f76d2251331c4ec6fff8d7c699771717f1fa commit 7176f76d2251331c4ec6fff8d7c699771717f1fa Author: Xin LI AuthorDate: 2026-04-01 01:45:14 +0000 Commit: Xin LI CommitDate: 2026-04-01 02:13:55 +0000 MFV: xz 5.8.3. Security: CVE-2026-34743 (cherry picked from commit f81c1f4339cd20ea89dad51c0f7d96e0e34313a9) --- contrib/xz/ChangeLog | 477 ++++++++++++++++++++++ contrib/xz/THANKS | 5 + contrib/xz/src/common/tuklib_gettext.h | 4 +- contrib/xz/src/common/tuklib_integer.h | 19 +- contrib/xz/src/common/tuklib_mbstr_wrap.h | 4 +- contrib/xz/src/common/tuklib_open_stdxxx.h | 2 +- contrib/xz/src/liblzma/api/lzma/version.h | 2 +- contrib/xz/src/liblzma/check/crc32_fast.c | 2 +- contrib/xz/src/liblzma/check/crc_x86_clmul.h | 2 +- contrib/xz/src/liblzma/common/index.c | 21 + contrib/xz/src/liblzma/liblzma.pc.in | 1 + contrib/xz/src/liblzma/rangecoder/range_decoder.h | 1 + contrib/xz/src/xz/file_io.c | 3 +- contrib/xz/src/xz/main.c | 10 + lib/liblzma/config.h | 10 +- 15 files changed, 541 insertions(+), 22 deletions(-) diff --git a/contrib/xz/ChangeLog b/contrib/xz/ChangeLog index bd7fad97695d..d592a60db513 100644 --- a/contrib/xz/ChangeLog +++ b/contrib/xz/ChangeLog @@ -1,3 +1,480 @@ +commit 4b73f2ec19a99ef465282fbce633e8deb33691b3 +Author: Lasse Collin +Date: 2026-03-31 17:26:16 +0300 + + Bump version and soname for 5.8.3 + + src/liblzma/Makefile.am | 2 +- + src/liblzma/api/lzma/version.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 97b7440006d69a30048ff1ffc29fc7a0615e5d51 +Author: Lasse Collin +Date: 2026-03-31 17:26:16 +0300 + + Add NEWS for 5.8.3 + + NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit 8e1022cfb1d177e482e487c202a0ab43dee761a3 +Author: Lasse Collin +Date: 2026-03-31 17:10:47 +0300 + + Translations: Run "make -C po update-po" + + Update the PO files to contain the comment fix from 4e76651dbaf6. + + po/ca.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/cs.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/da.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/de.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/eo.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/es.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/fi.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/fr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/hr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/hu.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/it.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ka.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ko.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/nl.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pl.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pt.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pt_BR.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ro.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/sr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/sv.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/tr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/uk.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/vi.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/zh_CN.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 148 ++++++++++++++++++++++++++++++------------------------------ + 25 files changed, 1850 insertions(+), 1850 deletions(-) + +commit a3ea8832bec11128597c454f5d14d05ef6010e3f +Author: Lasse Collin +Date: 2026-03-29 20:29:40 +0300 + + Tests: Add a test for the lzma_index_prealloc() + lzma_index_append() bug + + tests/test_index.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit c8c22869e780ff57c96b46939c3d79ff99395f87 +Author: Lasse Collin +Date: 2026-03-29 19:11:21 +0300 + + liblzma: Fix a buffer overflow in lzma_index_append() + + If lzma_index_decoder() was used to decode an Index that contained no + Records, the resulting lzma_index had an invalid internal "prealloc" + value. If lzma_index_append() was called on this lzma_index, too + little memory would be allocated and a buffer overflow would occur. + + While this combination of the API functions is meant to work, in the + real-world apps this call sequence is rare or might not exist at all. + + This bug is older than xz 5.0.0, so all stable releases are affected. + + Reported-by: GitHub user christos-spearbit + + src/liblzma/common/index.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit a37658bec72ed581a683b7498a75a70122b831b0 +Author: Lasse Collin +Date: 2026-03-27 21:15:12 +0200 + + CMake: Adjust warnings with MSVC and clang-cl + + When using clang-cl, avoid the long list of warning options used with + GCC and Clang because, for MSVC compatibility, clang-cl's -Wall behaves + like -Weverything. + + Add warning options for MSVC. Use them with clang-cl too. + + CMakeLists.txt | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 9e499f714cade4beade31c86dcb0de9fc72d0562 +Author: Lasse Collin +Date: 2026-03-27 21:14:50 +0200 + + CI: Don't disable individual warnings with clang-cl + + .github/workflows/msvc.yml | 13 ------------- + 1 file changed, 13 deletions(-) + +commit 1e00837f72e0551ab73927642a8f61aad80c958d +Author: Lasse Collin +Date: 2026-03-22 12:02:48 +0200 + + CI: Add Haiku + + .github/workflows/haiku.yml | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 8082851b7848ac32fea7bc7cfb84d9b3ef5537b0 +Author: Lasse Collin +Date: 2026-03-22 11:30:20 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit 3cdd412bcea6bb5b4c5d41d2b4104230a5a9569c +Author: Lasse Collin +Date: 2026-03-22 11:29:30 +0200 + + CI: Update MSYS2 + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/msys2.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e38a4af340ca9738923a511b7e35b6390c03ec50 +Author: Lasse Collin +Date: 2026-03-22 11:29:23 +0200 + + CI: Update Solaris + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/solaris.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 40b1599217cc4f7cca6f48e0c32e709b9abd3639 +Author: Lasse Collin +Date: 2026-03-22 11:29:14 +0200 + + CI: Update OpenBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/openbsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3aaf2f136c3fcf1140b9dfa584640778be789abc +Author: Lasse Collin +Date: 2026-03-22 11:29:08 +0200 + + CI: Update NetBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/netbsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b5c26a249d21d293b441b21d22a1a81e7eec436a +Author: Lasse Collin +Date: 2026-03-22 11:28:58 +0200 + + CI: Update FreeBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/freebsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a73f4f917f25d19ae557f49af2fddd9ef9f0a4a +Author: Lasse Collin +Date: 2026-03-22 11:28:47 +0200 + + CI: Update DragonFly BSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/dragonflybsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d61c5a3cf3be88b16179900ac5be82011a3a6bb +Author: Salman Muin Kayser Chishti <13schishti@gmail.com> +Date: 2026-02-28 09:10:46 +0000 + + CI: Upgrade GitHub Actions for Node 24 compatibility + + Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com> + Closes: https://github.com/tukaani-project/xz/pull/212 + + .github/workflows/ci.yml | 4 ++-- + .github/workflows/cifuzz.yml | 2 +- + .github/workflows/coverity.yml | 2 +- + .github/workflows/dragonflybsd.yml | 2 +- + .github/workflows/freebsd.yml | 2 +- + .github/workflows/msvc.yml | 2 +- + .github/workflows/msys2.yml | 4 ++-- + .github/workflows/netbsd.yml | 2 +- + .github/workflows/openbsd.yml | 2 +- + .github/workflows/solaris.yml | 2 +- + 10 files changed, 12 insertions(+), 12 deletions(-) + +commit 0ac3b93387c0191919ffa38de5f49f6b28164b35 +Author: Lasse Collin +Date: 2026-03-25 19:03:00 +0200 + + xz: Prevent an integer overflow in --files and --files0 + + This requires a filename (or something that pretends to be a filename) + of at least 2 GiB on a 32-bit platform, and that realloc() to + SIZE_MAX / 2 + 1 bytes has succeeded. + + Fixes: https://github.com/tukaani-project/xz/pull/218 + + src/xz/main.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 2faa141bdb47be94da2eae6df6f08858999a5911 +Author: Lasse Collin +Date: 2026-03-23 23:43:56 +0200 + + tuklib_integer: Fix inefficient aligned_writeXXne + + The __builtin_assume_aligned was applied to the wrong argument which + made aligned writes worse on strict-align archs. + + Aligned writes aren't used in liblzma, so this bug didn't matter in + this package; tuklib_integer.h is meant to be usable elsewhere too. + + src/common/tuklib_integer.h | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit 685538271e3e213a18c5a925654aaa32c0b69f1e +Author: Lasse Collin +Date: 2026-03-22 10:22:09 +0200 + + Build: Remove -Wpre-c2x-compat + + It makes clang -std=gnu23 noisy about bool. It's also noisy about + [[__fallthrough__]] which is only used in C23 mode. + + Reported-by: Collin Funk + + CMakeLists.txt | 1 - + configure.ac | 1 - + 2 files changed, 2 deletions(-) + +commit 3a78a82bd380c26bc7afda7565216c3383cedefe +Author: Collin Funk +Date: 2026-03-15 23:24:59 -0700 + + xz: Don't fsync directories on QNX + + On QNX calling fsync on a directory fails with EINVAL. This causes the + following test failure: + + $ cat tests/test_suffix.sh.log + /data/home/root/xz-5.8.2/src/xz/.libs/lt-xz: suffix_temp: Synchronizing the directory of the file failed: Invalid argument + Failed to decompress a file with a suffix set in raw format + FAIL test_suffix.sh (exit status: 1) + + Closes: https://github.com/tukaani-project/xz/pull/216 + + src/xz/file_io.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit bfc5f12a84a2a9df774ed16cd6eb58fd5ab24646 +Author: Lasse Collin +Date: 2026-02-25 17:33:42 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit 5553509f1a53ee160ea3bc871c716a75ba0b1ea0 +Author: Lasse Collin +Date: 2026-02-25 00:00:49 +0200 + + liblzma: Fix a copy-paste error in commented-out code + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2841960994 + Fixes: 96b663f67c0e ("liblzma: Refactor CRC comments.") + + src/liblzma/check/crc32_fast.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4e76651dbaf6a0159f2117482d778ff69127fdea +Author: Lasse Collin +Date: 2026-02-24 18:34:19 +0200 + + Fix typos and grammar in comments and docs + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2789354505 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2789354515 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2820960196 + + po/Makevars | 2 +- + src/common/tuklib_gettext.h | 4 ++-- + src/common/tuklib_mbstr_wrap.h | 4 ++-- + src/common/w32_application.manifest.comments.txt | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +commit cd8a6231d084ee9ce0a7a285f99dc5721d1f4317 +Author: Lasse Collin +Date: 2026-02-24 18:24:29 +0200 + + tuklib_open_stdxxx: Fix a typo in macro name + + It doesn't matter in this package, but it's good to fix it still. + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313660 + + src/common/tuklib_open_stdxxx.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bf5d32f489fd7f33b2a629f9b78f5157301b49d8 +Author: Lasse Collin +Date: 2026-02-24 18:22:25 +0200 + + CMake: Fix a wrong #define + + HAVE_SYS_PARAM_H was misspelled HAVE_PARAM_H. This might have broken + the build on systems where sysctl() is used to detect the amount of RAM + or the number of processor cores/threads. + + The cpuset code for FreeBSD doesn't need the macro it so it was removed. + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313680 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313704 + Fixes: 7e3493d40eac ("Build: Add very limited experimental CMake support.") + + cmake/tuklib_cpucores.cmake | 4 ++-- + cmake/tuklib_physmem.cmake | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit b0f3b64a25bcd3a6a4cebc00866dea86590fac3e +Author: Radek Zikmund +Date: 2026-02-12 15:24:15 +0100 + + liblzma/MSVC: Add a cast to fix a warning (C4057) with __cpuid() + + __cpuid from MSVC (and also the old Intel ICC) use int[], while + __get_cpuid from in GCC and Clang use unsigned int[]. + Adding a cast is the simplest fix. + + Link: https://github.com/tukaani-project/xz/pull/208 + + src/liblzma/check/crc_x86_clmul.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b51d67f4a95f41ae3a64973acc0e44b9f078512f +Author: Radek Zikmund +Date: 2026-02-23 17:50:00 +0100 + + CMake: Guard script configure_file() calls with ENABLE_SCRIPTS + + The configure_file() calls for xzdiff, xzgrep, xzmore, and xzless + were running unconditionally within the if(UNIX) block, even when + ENABLE_SCRIPTS was OFF. This would cause a build failure if the + src/scripts/*.in files were not present. Deleting those files can + simplify license compliance when the scripts aren't needed. + + Move the foreach loop and related code inside if(ENABLE_SCRIPTS) guard + so that configure_file() is only called when scripts are actually needed. + This is mostly whitespace changes to adjust the indentation. + + Co-authored-by: Lasse Collin + Closes: https://github.com/tukaani-project/xz/pull/210 + + CMakeLists.txt | 68 ++++++++++++++++++++++++++++------------------------------ + 1 file changed, 33 insertions(+), 35 deletions(-) + +commit 1007bf08b5fddf088b3131e692210af4b4b7fd8c +Author: Lasse Collin +Date: 2026-02-04 12:28:07 +0200 + + Translations: Add Arabic man page translations + + Rendering of bidirectional text from man pages might not work perfectly + in all cases. + + po4a/ar.po | 3905 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + po4a/po4a.conf | 2 +- + 2 files changed, 3906 insertions(+), 1 deletion(-) + +commit 54147ad65af12d9e4f60a8ce59094a8a30ad5919 +Author: Lasse Collin +Date: 2026-01-25 13:51:09 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit d6bdb446f8da47ac2af8c309de8e7c80beae850e +Author: Lasse Collin +Date: 2026-01-25 13:30:46 +0200 + + liblzma: Add the "License" property to liblzma.pc + + The "License" property is a pkgconf extension. See pc(5). + pkg-config 0.29.2 (2017) ignores unrecognized properties so this + commit shouldn't create compatibility issues. + + pkgconf provides bomtool which uses the "License" property to generate + a software bill of materials. In pkgconf.git there is spdxtool for the + same task but with different output format. + + The pkgconf extensions "Copyright" and "Maintainer" would also be + used by bomtool and spdxtool, but I don't want to add those properties + at least for now. + + Co-authored-by: Nobuhiro Iwamatsu + Closes: https://github.com/tukaani-project/xz/pull/178 + + src/liblzma/liblzma.pc.in | 1 + + 1 file changed, 1 insertion(+) + +commit 687bd3e30fbe54ae906d06a93e7f2aa8b121aa7b +Author: Lasse Collin +Date: 2026-01-25 12:14:46 +0200 + + Update THANKS + + THANKS | 2 ++ + 1 file changed, 2 insertions(+) + +commit b80b6343a4b7df6bf56dcf07715f9f536af93306 +Author: Lasse Collin +Date: 2026-01-25 12:14:25 +0200 + + liblzma: Don't try to use x86-64 inline asm on ARM64EC + + Reported-by: Chase Knowlden + Fixes: https://github.com/tukaani-project/xz/issues/206 + + src/liblzma/rangecoder/range_decoder.h | 1 + + 1 file changed, 1 insertion(+) + +commit 47fb9d84c052912ca10dc9843cb296c860b182ac +Author: Pino Toscano +Date: 2025-12-30 19:59:55 +0100 + + Autotools: Enable x86 assembler on Hurd by default + + It has been enabled in Debian GNU/Hurd for 15+ years with no issues. + Hence, enable it by default also in the upstream sources. + + The CMake build already had it enabled. + + Link: https://salsa.debian.org/debian/xz-utils/-/blob/debian/5.8.2-2/debian/rules?ref_type=tags#L98 + Closes: https://github.com/tukaani-project/xz/pull/204 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f4c5a0d4817c9c7011cdfd00cfbe0ddda66a455 +Author: Lasse Collin +Date: 2025-12-17 14:49:12 +0200 + + doc/SHA256SUMS: Add 5.8.2 + + doc/SHA256SUMS | 6 ++++++ + 1 file changed, 6 insertions(+) + commit 3d078b52adbff566ccfc51067dfbf742ecf3ef86 Author: Lasse Collin Date: 2025-12-17 13:36:42 +0200 diff --git a/contrib/xz/THANKS b/contrib/xz/THANKS index e1c21ebfe5d2..d519147617e5 100644 --- a/contrib/xz/THANKS +++ b/contrib/xz/THANKS @@ -44,6 +44,7 @@ has been important. :-) - Bruce Stark - Cary Lewis - Charles Wilson + - Chase Knowlden - Chenxi Mao - Chien Wong - Chris Donawa @@ -175,6 +176,7 @@ has been important. :-) - Nathan Moinvaziri - Nelson H. F. Beebe - Nicholas Jackson + - Nobuhiro Iwamatsu - Ole André Vadla Ravnås - Orange Tsai - Orgad Shaneh @@ -190,7 +192,9 @@ has been important. :-) - Peter Seiderer - Pierre-Yves Martin - Pilorz Wojciech + - Pino Toscano - Pippijn van Steenhoven + - Radek Zikmund - Rafał Mużyło - Rainer Müller - Ralf Wildenhues @@ -205,6 +209,7 @@ has been important. :-) - Rui Paulo - Ryan Colyer - Ryan Young + - Salman Muin Kayser Chishti - Sam James - Scott McAllister - Sean Fenian diff --git a/contrib/xz/src/common/tuklib_gettext.h b/contrib/xz/src/common/tuklib_gettext.h index e5ad5e6f78a1..258156f2389d 100644 --- a/contrib/xz/src/common/tuklib_gettext.h +++ b/contrib/xz/src/common/tuklib_gettext.h @@ -41,11 +41,11 @@ #define N_(msgid) msgid // Optional: Strings that are word wrapped using tuklib_mbstr_wrap may be -// marked with W_("foo) in the source code. xgettext can then add a comment +// marked with W_("foo") in the source code. xgettext can then add a comment // to all such strings to inform translators. The following option needs to // be added to XGETTEXT_OPTIONS in po/Makevars or in an equivalent place: // -// '--keyword=W_:1,"This is word wrapped at spaces. The Unicode character U+00A0 works as a non-breaking space. Tab (\t) is interpret as a zero-width space (the tab itself is not displayed); U+200B is NOT supported. Manual word wrapping with \n is supported but requires care."' +// '--keyword=W_:1,"This is word wrapped at spaces. The Unicode character U+00A0 works as a non-breaking space. Tab (\t) is interpreted as a zero-width space (the tab itself is not displayed); U+200B is NOT supported. Manual word wrapping with \n is supported but requires care."' // // NOTE: The double-quotes in the --keyword argument above must be passed to // xgettext as is, thus one needs the single-quotes in Makevars. diff --git a/contrib/xz/src/common/tuklib_integer.h b/contrib/xz/src/common/tuklib_integer.h index 4026249e5468..bbb695dbd496 100644 --- a/contrib/xz/src/common/tuklib_integer.h +++ b/contrib/xz/src/common/tuklib_integer.h @@ -643,11 +643,10 @@ write64le(uint8_t *buf, uint64_t num) // // __builtin_assume_aligned is support by GCC >= 4.7 and clang >= 3.6. #ifdef HAVE___BUILTIN_ASSUME_ALIGNED -# define tuklib_memcpy_aligned(dest, src, size) \ - memcpy(dest, __builtin_assume_aligned(src, size), size) +# define tuklib_assume_aligned(ptr, align) \ + __builtin_assume_aligned(ptr, align) #else -# define tuklib_memcpy_aligned(dest, src, size) \ - memcpy(dest, src, size) +# define tuklib_assume_aligned(ptr, align) (ptr) # ifndef TUKLIB_FAST_UNALIGNED_ACCESS # define TUKLIB_USE_UNSAFE_ALIGNED_READS 1 # endif @@ -662,7 +661,7 @@ aligned_read16ne(const uint8_t *buf) return *(const uint16_t *)buf; #else uint16_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -676,7 +675,7 @@ aligned_read32ne(const uint8_t *buf) return *(const uint32_t *)buf; #else uint32_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -690,7 +689,7 @@ aligned_read64ne(const uint8_t *buf) return *(const uint64_t *)buf; #else uint64_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -702,7 +701,7 @@ aligned_write16ne(uint8_t *buf, uint16_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint16_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } @@ -714,7 +713,7 @@ aligned_write32ne(uint8_t *buf, uint32_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint32_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } @@ -726,7 +725,7 @@ aligned_write64ne(uint8_t *buf, uint64_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint64_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } diff --git a/contrib/xz/src/common/tuklib_mbstr_wrap.h b/contrib/xz/src/common/tuklib_mbstr_wrap.h index 4e2f297dabb4..a13be3a96298 100644 --- a/contrib/xz/src/common/tuklib_mbstr_wrap.h +++ b/contrib/xz/src/common/tuklib_mbstr_wrap.h @@ -28,10 +28,10 @@ TUKLIB_DECLS_BEGIN /// One or more output lines exceeded right_margin. -/// This only a warning; everything was still printed successfully. +/// This is only a warning; everything was still printed successfully. #define TUKLIB_WRAP_WARN_OVERLONG 0x01 -/// Error writing to to the output FILE. The error flag in the FILE +/// Error writing to the output FILE. The error flag in the FILE /// should have been set as well. #define TUKLIB_WRAP_ERR_IO 0x02 diff --git a/contrib/xz/src/common/tuklib_open_stdxxx.h b/contrib/xz/src/common/tuklib_open_stdxxx.h index 3ee3ade35527..89a7b91bc38f 100644 --- a/contrib/xz/src/common/tuklib_open_stdxxx.h +++ b/contrib/xz/src/common/tuklib_open_stdxxx.h @@ -15,7 +15,7 @@ #include "tuklib_common.h" TUKLIB_DECLS_BEGIN -#define tuklib_open_stdxx TUKLIB_SYMBOL(tuklib_open_stdxxx) +#define tuklib_open_stdxxx TUKLIB_SYMBOL(tuklib_open_stdxxx) extern void tuklib_open_stdxxx(int err_status); TUKLIB_DECLS_END diff --git a/contrib/xz/src/liblzma/api/lzma/version.h b/contrib/xz/src/liblzma/api/lzma/version.h index 263ad819a906..5e524f0a9742 100644 --- a/contrib/xz/src/liblzma/api/lzma/version.h +++ b/contrib/xz/src/liblzma/api/lzma/version.h @@ -22,7 +22,7 @@ #define LZMA_VERSION_MINOR 8 /** \brief Patch version number of the liblzma release. */ -#define LZMA_VERSION_PATCH 2 +#define LZMA_VERSION_PATCH 3 /** * \brief Version stability marker diff --git a/contrib/xz/src/liblzma/check/crc32_fast.c b/contrib/xz/src/liblzma/check/crc32_fast.c index 6184e2b70e6b..d8ba37ea8794 100644 --- a/contrib/xz/src/liblzma/check/crc32_fast.c +++ b/contrib/xz/src/liblzma/check/crc32_fast.c @@ -182,7 +182,7 @@ lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) // See crc32_dispatch(). This would be the alternative which uses // locking and doesn't use crc32_dispatch(). Note that on Windows // this method needs Vista threads. - mythread_once(crc64_set_func); + mythread_once(crc32_set_func); #endif */ return crc32_func(buf, size, crc); diff --git a/contrib/xz/src/liblzma/check/crc_x86_clmul.h b/contrib/xz/src/liblzma/check/crc_x86_clmul.h index b302d6cf7f51..356536233080 100644 --- a/contrib/xz/src/liblzma/check/crc_x86_clmul.h +++ b/contrib/xz/src/liblzma/check/crc_x86_clmul.h @@ -344,7 +344,7 @@ is_arch_extension_supported(void) #if defined(_MSC_VER) // This needs with MSVC. ICC has it as a built-in // on all platforms. - __cpuid(r, 1); + __cpuid((int *)r, 1); #elif defined(HAVE_CPUID_H) // Compared to just using __asm__ to run CPUID, this also checks // that CPUID is supported and saves and restores ebx as that is diff --git a/contrib/xz/src/liblzma/common/index.c b/contrib/xz/src/liblzma/common/index.c index 6add6a683502..c4aadb9b008d 100644 --- a/contrib/xz/src/liblzma/common/index.c +++ b/contrib/xz/src/liblzma/common/index.c @@ -433,6 +433,26 @@ lzma_index_prealloc(lzma_index *i, lzma_vli records) if (records > PREALLOC_MAX) records = PREALLOC_MAX; + // If index_decoder.c calls us with records == 0, it's decoding + // an Index that has no Records. In that case the decoder won't call + // lzma_index_append() at all, and i->prealloc isn't used during + // the Index decoding either. + // + // Normally the first lzma_index_append() call from the Index decoder + // would reset i->prealloc to INDEX_GROUP_SIZE. With no Records, + // lzma_index_append() isn't called and the resetting of prealloc + // won't occur either. Thus, if records == 0, use the default value + // INDEX_GROUP_SIZE instead. + // + // NOTE: lzma_index_append() assumes i->prealloc > 0. liblzma <= 5.8.2 + // didn't have this check and could set i->prealloc = 0, which would + // result in a buffer overflow if the application called + // lzma_index_append() after decoding an empty Index. Appending + // Records after decoding an Index is a rare thing to do, but + // it is supposed to work. + if (records == 0) + records = INDEX_GROUP_SIZE; + i->prealloc = (size_t)(records); return; } @@ -685,6 +705,7 @@ lzma_index_append(lzma_index *i, const lzma_allocator *allocator, ++g->last; } else { // We need to allocate a new group. + assert(i->prealloc > 0); g = lzma_alloc(sizeof(index_group) + i->prealloc * sizeof(index_record), allocator); diff --git a/contrib/xz/src/liblzma/liblzma.pc.in b/contrib/xz/src/liblzma/liblzma.pc.in index a432992b7072..5efb49455f72 100644 --- a/contrib/xz/src/liblzma/liblzma.pc.in +++ b/contrib/xz/src/liblzma/liblzma.pc.in @@ -8,6 +8,7 @@ includedir=@includedir@ Name: liblzma Description: General purpose data compression library +License: 0BSD URL: @PACKAGE_URL@ Version: @PACKAGE_VERSION@ Cflags: -I${includedir} diff --git a/contrib/xz/src/liblzma/rangecoder/range_decoder.h b/contrib/xz/src/liblzma/rangecoder/range_decoder.h index 77cfaf7857d9..bcc53dbe192a 100644 --- a/contrib/xz/src/liblzma/rangecoder/range_decoder.h +++ b/contrib/xz/src/liblzma/rangecoder/range_decoder.h @@ -45,6 +45,7 @@ // and different processors. Overall 0x1F0 seems to be the best choice. #ifndef LZMA_RANGE_DECODER_CONFIG # if defined(__x86_64__) && !defined(__ILP32__) \ + && !defined(__arm64ec__) && !defined(_M_ARM64EC) \ && !defined(__NVCOMPILER) \ && (defined(__GNUC__) || defined(__clang__)) # define LZMA_RANGE_DECODER_CONFIG 0x1F0 diff --git a/contrib/xz/src/xz/file_io.c b/contrib/xz/src/xz/file_io.c index 6b1a1536fb07..6f784dd69553 100644 --- a/contrib/xz/src/xz/file_io.c +++ b/contrib/xz/src/xz/file_io.c @@ -493,8 +493,9 @@ io_sync_dest(file_pair *pair) return true; } -#if !defined(TUKLIB_DOSLIKE) && !defined(_AIX) +#if !defined(TUKLIB_DOSLIKE) && !defined(_AIX) && !defined(__QNX__) // On AIX, this would fail with EBADF. + // On QNX, this would fail with EINVAL. if (fsync(pair->dir_fd)) { message_error(_("%s: Synchronizing the directory of " "the file failed: %s"), diff --git a/contrib/xz/src/xz/main.c b/contrib/xz/src/xz/main.c index 1b8b37881172..8cc3b740f658 100644 --- a/contrib/xz/src/xz/main.c +++ b/contrib/xz/src/xz/main.c @@ -134,6 +134,16 @@ read_name(const args_info *args) // at least for one character to allow terminating the string // with '\0'. if (pos == size) { + // Prevent an integer overflow. This is only possible + // if allocating SIZE_MAX / 2 + 1 bytes has already + // succeeded. + // + // Use ENOMEM to for the error message to avoid adding + // a translatable string that will (almost) never be + // displayed in practice. + if (size > SIZE_MAX / 2) + message_fatal("%s", strerror(ENOMEM)); + size *= 2; name = xrealloc(name, size); } diff --git a/lib/liblzma/config.h b/lib/liblzma/config.h index af0ee2fefb39..db2d4e9c6a0d 100644 --- a/lib/liblzma/config.h +++ b/lib/liblzma/config.h @@ -409,7 +409,7 @@ #define PACKAGE_NAME "XZ Utils" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "XZ Utils 5.8.2" +#define PACKAGE_STRING "XZ Utils 5.8.3" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "xz" @@ -418,7 +418,7 @@ #define PACKAGE_URL "https://tukaani.org/xz/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "5.8.2" +#define PACKAGE_VERSION "5.8.3" /* Define to necessary symbol if this constant uses a non-standard name on your system. */ @@ -494,6 +494,10 @@ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# define _COSMO_SOURCE 1 +#endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # define _DARWIN_C_SOURCE 1 @@ -583,7 +587,7 @@ /* Version number of package */ -#define VERSION "5.8.2" +#define VERSION "5.8.3" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ From nobody Wed Apr 1 02:20:36 2026 X-Original-To: dev-commits-src-branches@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 4flpcP563wz6YY4W for ; Wed, 01 Apr 2026 02:20:37 +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 4flpcN6sVFz46fh for ; Wed, 01 Apr 2026 02:20:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775010036; 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=i71HbsgnRFdR6Je0I8MmoYY1LAaFi+RjGrGW7ialU+I=; b=adu8utZQPAyHPG9uYsg4UsNgl4X/Cvp1LVUHioGGJ3wkh+XN/yjUUi9KcPUfPioyZAyStm 3hCalcOoEYcjKAAL59AlFZtm9GpngobU6Dv70NNA8Gi4maUUSnMkeoF7Yqm+wuEqgMl7fo P31dSupn/6/mI7oBhVQA8hGWtONY/1/lLtI8wDoUfOgdzCBgYHWUOMSkOw7LhofLs+SFWY 4DRRH98ObAbscU0e6LhgpDkBdI2urIj/aCIL8vH12tuZnLgVb3dmufIlVFQWYiZiSmDYvW YXm6YcIMt08KRJLEd4c2S1Q0rnXK+kf6/OYkHal/wzkP/n+G+C6+RbYimLgg6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775010036; a=rsa-sha256; cv=none; b=K8CievJyoIFS4wrYHx0zQik5FJFEL0p5HYTSk3ROzwm+Z1KdRNuFpgg4XeRL4I3G6DUmaN Bre1U6yWGTWHSqeIkDWK/Oo4XzLG2GrEUcoQsPQAQIakpyiqyLK+saL+4nN+UWRMVLYdet Vo1LpDd5JeiWo+n+5MiKJnpo/CUFZiTxYhxCAHzDmIeMKK3Vp0LF2cGny6Ic9+6vwcda7j j3rolefgNiL/3jtNH8RjXMlQoDcVLVwK7NgYIHgDrVo07Tcs2MJdmzhY18SC/56iHRsmJ9 YMBvqh97UIUxfPUPrAuNsqvsEAaSTDBAqgQdberF+G89gGFPRyAQJg2j4PXaIA== 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=1775010036; 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=i71HbsgnRFdR6Je0I8MmoYY1LAaFi+RjGrGW7ialU+I=; b=kOEHtyZojHPmDAmeBhRJbBIkUXaolkFvX29yl2mxy9Q5QspYoKj355YZh4VJ+dZR+Q1s4B 4MnrYftn9YArmBQA/BSXDsHxkDZCu2YILJHUDgP2+mExwNtnnDMHf0Cp4ZAPozyFKPdJ7G IKToVtyoZHfcJTzuQUyDUP65v1jxwbzvmM60xpNC2v4fr35sfLHBwi3he5GARcBwN8Eqd2 8dYG6rYCqc3lIPNtbA1kbWvK78JKZbWfkXwf8BCVA/uXRl1/9o2573RbFxyq1q2wz1Ud3g /bGHLA+ZutUgXqQ9PabmtmxiVxHroDke1FnUL7JPG6zeekG3ar+IRjod8gc+Bg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flpcN6DJyzwF2 for ; Wed, 01 Apr 2026 02:20:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 329ed by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 02:20:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Xin LI Subject: git: e32e126c136d - stable/14 - MFV: xz 5.8.3. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e32e126c136de28783ac732fe3cd8a5224559ac5 Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 02:20:36 +0000 Message-Id: <69cc80f4.329ed.2fb16b9c@gitrepo.freebsd.org> The branch stable/14 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=e32e126c136de28783ac732fe3cd8a5224559ac5 commit e32e126c136de28783ac732fe3cd8a5224559ac5 Author: Xin LI AuthorDate: 2026-04-01 01:45:14 +0000 Commit: Xin LI CommitDate: 2026-04-01 02:20:09 +0000 MFV: xz 5.8.3. Security: CVE-2026-34743 (cherry picked from commit f81c1f4339cd20ea89dad51c0f7d96e0e34313a9) --- contrib/xz/ChangeLog | 477 ++++++++++++++++++++++ contrib/xz/THANKS | 5 + contrib/xz/src/common/tuklib_gettext.h | 4 +- contrib/xz/src/common/tuklib_integer.h | 19 +- contrib/xz/src/common/tuklib_mbstr_wrap.h | 4 +- contrib/xz/src/common/tuklib_open_stdxxx.h | 2 +- contrib/xz/src/liblzma/api/lzma/version.h | 2 +- contrib/xz/src/liblzma/check/crc32_fast.c | 2 +- contrib/xz/src/liblzma/check/crc_x86_clmul.h | 2 +- contrib/xz/src/liblzma/common/index.c | 21 + contrib/xz/src/liblzma/liblzma.pc.in | 1 + contrib/xz/src/liblzma/rangecoder/range_decoder.h | 1 + contrib/xz/src/xz/file_io.c | 3 +- contrib/xz/src/xz/main.c | 10 + lib/liblzma/config.h | 10 +- 15 files changed, 541 insertions(+), 22 deletions(-) diff --git a/contrib/xz/ChangeLog b/contrib/xz/ChangeLog index bd7fad97695d..d592a60db513 100644 --- a/contrib/xz/ChangeLog +++ b/contrib/xz/ChangeLog @@ -1,3 +1,480 @@ +commit 4b73f2ec19a99ef465282fbce633e8deb33691b3 +Author: Lasse Collin +Date: 2026-03-31 17:26:16 +0300 + + Bump version and soname for 5.8.3 + + src/liblzma/Makefile.am | 2 +- + src/liblzma/api/lzma/version.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 97b7440006d69a30048ff1ffc29fc7a0615e5d51 +Author: Lasse Collin +Date: 2026-03-31 17:26:16 +0300 + + Add NEWS for 5.8.3 + + NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit 8e1022cfb1d177e482e487c202a0ab43dee761a3 +Author: Lasse Collin +Date: 2026-03-31 17:10:47 +0300 + + Translations: Run "make -C po update-po" + + Update the PO files to contain the comment fix from 4e76651dbaf6. + + po/ca.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/cs.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/da.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/de.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/eo.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/es.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/fi.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/fr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/hr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/hu.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/it.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ka.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ko.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/nl.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pl.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pt.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/pt_BR.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/ro.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/sr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/sv.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/tr.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/uk.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/vi.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/zh_CN.po | 148 ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 148 ++++++++++++++++++++++++++++++------------------------------ + 25 files changed, 1850 insertions(+), 1850 deletions(-) + +commit a3ea8832bec11128597c454f5d14d05ef6010e3f +Author: Lasse Collin +Date: 2026-03-29 20:29:40 +0300 + + Tests: Add a test for the lzma_index_prealloc() + lzma_index_append() bug + + tests/test_index.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit c8c22869e780ff57c96b46939c3d79ff99395f87 +Author: Lasse Collin +Date: 2026-03-29 19:11:21 +0300 + + liblzma: Fix a buffer overflow in lzma_index_append() + + If lzma_index_decoder() was used to decode an Index that contained no + Records, the resulting lzma_index had an invalid internal "prealloc" + value. If lzma_index_append() was called on this lzma_index, too + little memory would be allocated and a buffer overflow would occur. + + While this combination of the API functions is meant to work, in the + real-world apps this call sequence is rare or might not exist at all. + + This bug is older than xz 5.0.0, so all stable releases are affected. + + Reported-by: GitHub user christos-spearbit + + src/liblzma/common/index.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit a37658bec72ed581a683b7498a75a70122b831b0 +Author: Lasse Collin +Date: 2026-03-27 21:15:12 +0200 + + CMake: Adjust warnings with MSVC and clang-cl + + When using clang-cl, avoid the long list of warning options used with + GCC and Clang because, for MSVC compatibility, clang-cl's -Wall behaves + like -Weverything. + + Add warning options for MSVC. Use them with clang-cl too. + + CMakeLists.txt | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 9e499f714cade4beade31c86dcb0de9fc72d0562 +Author: Lasse Collin +Date: 2026-03-27 21:14:50 +0200 + + CI: Don't disable individual warnings with clang-cl + + .github/workflows/msvc.yml | 13 ------------- + 1 file changed, 13 deletions(-) + +commit 1e00837f72e0551ab73927642a8f61aad80c958d +Author: Lasse Collin +Date: 2026-03-22 12:02:48 +0200 + + CI: Add Haiku + + .github/workflows/haiku.yml | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 8082851b7848ac32fea7bc7cfb84d9b3ef5537b0 +Author: Lasse Collin +Date: 2026-03-22 11:30:20 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit 3cdd412bcea6bb5b4c5d41d2b4104230a5a9569c +Author: Lasse Collin +Date: 2026-03-22 11:29:30 +0200 + + CI: Update MSYS2 + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/msys2.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e38a4af340ca9738923a511b7e35b6390c03ec50 +Author: Lasse Collin +Date: 2026-03-22 11:29:23 +0200 + + CI: Update Solaris + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/solaris.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 40b1599217cc4f7cca6f48e0c32e709b9abd3639 +Author: Lasse Collin +Date: 2026-03-22 11:29:14 +0200 + + CI: Update OpenBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/openbsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3aaf2f136c3fcf1140b9dfa584640778be789abc +Author: Lasse Collin +Date: 2026-03-22 11:29:08 +0200 + + CI: Update NetBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/netbsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b5c26a249d21d293b441b21d22a1a81e7eec436a +Author: Lasse Collin +Date: 2026-03-22 11:28:58 +0200 + + CI: Update FreeBSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/freebsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a73f4f917f25d19ae557f49af2fddd9ef9f0a4a +Author: Lasse Collin +Date: 2026-03-22 11:28:47 +0200 + + CI: Update DragonFly BSD + + Closes: https://github.com/tukaani-project/xz/pull/213 + + .github/workflows/dragonflybsd.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d61c5a3cf3be88b16179900ac5be82011a3a6bb +Author: Salman Muin Kayser Chishti <13schishti@gmail.com> +Date: 2026-02-28 09:10:46 +0000 + + CI: Upgrade GitHub Actions for Node 24 compatibility + + Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com> + Closes: https://github.com/tukaani-project/xz/pull/212 + + .github/workflows/ci.yml | 4 ++-- + .github/workflows/cifuzz.yml | 2 +- + .github/workflows/coverity.yml | 2 +- + .github/workflows/dragonflybsd.yml | 2 +- + .github/workflows/freebsd.yml | 2 +- + .github/workflows/msvc.yml | 2 +- + .github/workflows/msys2.yml | 4 ++-- + .github/workflows/netbsd.yml | 2 +- + .github/workflows/openbsd.yml | 2 +- + .github/workflows/solaris.yml | 2 +- + 10 files changed, 12 insertions(+), 12 deletions(-) + +commit 0ac3b93387c0191919ffa38de5f49f6b28164b35 +Author: Lasse Collin +Date: 2026-03-25 19:03:00 +0200 + + xz: Prevent an integer overflow in --files and --files0 + + This requires a filename (or something that pretends to be a filename) + of at least 2 GiB on a 32-bit platform, and that realloc() to + SIZE_MAX / 2 + 1 bytes has succeeded. + + Fixes: https://github.com/tukaani-project/xz/pull/218 + + src/xz/main.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 2faa141bdb47be94da2eae6df6f08858999a5911 +Author: Lasse Collin +Date: 2026-03-23 23:43:56 +0200 + + tuklib_integer: Fix inefficient aligned_writeXXne + + The __builtin_assume_aligned was applied to the wrong argument which + made aligned writes worse on strict-align archs. + + Aligned writes aren't used in liblzma, so this bug didn't matter in + this package; tuklib_integer.h is meant to be usable elsewhere too. + + src/common/tuklib_integer.h | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit 685538271e3e213a18c5a925654aaa32c0b69f1e +Author: Lasse Collin +Date: 2026-03-22 10:22:09 +0200 + + Build: Remove -Wpre-c2x-compat + + It makes clang -std=gnu23 noisy about bool. It's also noisy about + [[__fallthrough__]] which is only used in C23 mode. + + Reported-by: Collin Funk + + CMakeLists.txt | 1 - + configure.ac | 1 - + 2 files changed, 2 deletions(-) + +commit 3a78a82bd380c26bc7afda7565216c3383cedefe +Author: Collin Funk +Date: 2026-03-15 23:24:59 -0700 + + xz: Don't fsync directories on QNX + + On QNX calling fsync on a directory fails with EINVAL. This causes the + following test failure: + + $ cat tests/test_suffix.sh.log + /data/home/root/xz-5.8.2/src/xz/.libs/lt-xz: suffix_temp: Synchronizing the directory of the file failed: Invalid argument + Failed to decompress a file with a suffix set in raw format + FAIL test_suffix.sh (exit status: 1) + + Closes: https://github.com/tukaani-project/xz/pull/216 + + src/xz/file_io.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit bfc5f12a84a2a9df774ed16cd6eb58fd5ab24646 +Author: Lasse Collin +Date: 2026-02-25 17:33:42 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit 5553509f1a53ee160ea3bc871c716a75ba0b1ea0 +Author: Lasse Collin +Date: 2026-02-25 00:00:49 +0200 + + liblzma: Fix a copy-paste error in commented-out code + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2841960994 + Fixes: 96b663f67c0e ("liblzma: Refactor CRC comments.") + + src/liblzma/check/crc32_fast.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4e76651dbaf6a0159f2117482d778ff69127fdea +Author: Lasse Collin +Date: 2026-02-24 18:34:19 +0200 + + Fix typos and grammar in comments and docs + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2789354505 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2789354515 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2820960196 + + po/Makevars | 2 +- + src/common/tuklib_gettext.h | 4 ++-- + src/common/tuklib_mbstr_wrap.h | 4 ++-- + src/common/w32_application.manifest.comments.txt | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +commit cd8a6231d084ee9ce0a7a285f99dc5721d1f4317 +Author: Lasse Collin +Date: 2026-02-24 18:24:29 +0200 + + tuklib_open_stdxxx: Fix a typo in macro name + + It doesn't matter in this package, but it's good to fix it still. + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313660 + + src/common/tuklib_open_stdxxx.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bf5d32f489fd7f33b2a629f9b78f5157301b49d8 +Author: Lasse Collin +Date: 2026-02-24 18:22:25 +0200 + + CMake: Fix a wrong #define + + HAVE_SYS_PARAM_H was misspelled HAVE_PARAM_H. This might have broken + the build on systems where sysctl() is used to detect the amount of RAM + or the number of processor cores/threads. + + The cpuset code for FreeBSD doesn't need the macro it so it was removed. + + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313680 + Fixes: https://github.com/dotnet/runtime/pull/124003#discussion_r2782313704 + Fixes: 7e3493d40eac ("Build: Add very limited experimental CMake support.") + + cmake/tuklib_cpucores.cmake | 4 ++-- + cmake/tuklib_physmem.cmake | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit b0f3b64a25bcd3a6a4cebc00866dea86590fac3e +Author: Radek Zikmund +Date: 2026-02-12 15:24:15 +0100 + + liblzma/MSVC: Add a cast to fix a warning (C4057) with __cpuid() + + __cpuid from MSVC (and also the old Intel ICC) use int[], while + __get_cpuid from in GCC and Clang use unsigned int[]. + Adding a cast is the simplest fix. + + Link: https://github.com/tukaani-project/xz/pull/208 + + src/liblzma/check/crc_x86_clmul.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b51d67f4a95f41ae3a64973acc0e44b9f078512f +Author: Radek Zikmund +Date: 2026-02-23 17:50:00 +0100 + + CMake: Guard script configure_file() calls with ENABLE_SCRIPTS + + The configure_file() calls for xzdiff, xzgrep, xzmore, and xzless + were running unconditionally within the if(UNIX) block, even when + ENABLE_SCRIPTS was OFF. This would cause a build failure if the + src/scripts/*.in files were not present. Deleting those files can + simplify license compliance when the scripts aren't needed. + + Move the foreach loop and related code inside if(ENABLE_SCRIPTS) guard + so that configure_file() is only called when scripts are actually needed. + This is mostly whitespace changes to adjust the indentation. + + Co-authored-by: Lasse Collin + Closes: https://github.com/tukaani-project/xz/pull/210 + + CMakeLists.txt | 68 ++++++++++++++++++++++++++++------------------------------ + 1 file changed, 33 insertions(+), 35 deletions(-) + +commit 1007bf08b5fddf088b3131e692210af4b4b7fd8c +Author: Lasse Collin +Date: 2026-02-04 12:28:07 +0200 + + Translations: Add Arabic man page translations + + Rendering of bidirectional text from man pages might not work perfectly + in all cases. + + po4a/ar.po | 3905 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + po4a/po4a.conf | 2 +- + 2 files changed, 3906 insertions(+), 1 deletion(-) + +commit 54147ad65af12d9e4f60a8ce59094a8a30ad5919 +Author: Lasse Collin +Date: 2026-01-25 13:51:09 +0200 + + Update THANKS + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit d6bdb446f8da47ac2af8c309de8e7c80beae850e +Author: Lasse Collin +Date: 2026-01-25 13:30:46 +0200 + + liblzma: Add the "License" property to liblzma.pc + + The "License" property is a pkgconf extension. See pc(5). + pkg-config 0.29.2 (2017) ignores unrecognized properties so this + commit shouldn't create compatibility issues. + + pkgconf provides bomtool which uses the "License" property to generate + a software bill of materials. In pkgconf.git there is spdxtool for the + same task but with different output format. + + The pkgconf extensions "Copyright" and "Maintainer" would also be + used by bomtool and spdxtool, but I don't want to add those properties + at least for now. + + Co-authored-by: Nobuhiro Iwamatsu + Closes: https://github.com/tukaani-project/xz/pull/178 + + src/liblzma/liblzma.pc.in | 1 + + 1 file changed, 1 insertion(+) + +commit 687bd3e30fbe54ae906d06a93e7f2aa8b121aa7b +Author: Lasse Collin +Date: 2026-01-25 12:14:46 +0200 + + Update THANKS + + THANKS | 2 ++ + 1 file changed, 2 insertions(+) + +commit b80b6343a4b7df6bf56dcf07715f9f536af93306 +Author: Lasse Collin +Date: 2026-01-25 12:14:25 +0200 + + liblzma: Don't try to use x86-64 inline asm on ARM64EC + + Reported-by: Chase Knowlden + Fixes: https://github.com/tukaani-project/xz/issues/206 + + src/liblzma/rangecoder/range_decoder.h | 1 + + 1 file changed, 1 insertion(+) + +commit 47fb9d84c052912ca10dc9843cb296c860b182ac +Author: Pino Toscano +Date: 2025-12-30 19:59:55 +0100 + + Autotools: Enable x86 assembler on Hurd by default + + It has been enabled in Debian GNU/Hurd for 15+ years with no issues. + Hence, enable it by default also in the upstream sources. + + The CMake build already had it enabled. + + Link: https://salsa.debian.org/debian/xz-utils/-/blob/debian/5.8.2-2/debian/rules?ref_type=tags#L98 + Closes: https://github.com/tukaani-project/xz/pull/204 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f4c5a0d4817c9c7011cdfd00cfbe0ddda66a455 +Author: Lasse Collin +Date: 2025-12-17 14:49:12 +0200 + + doc/SHA256SUMS: Add 5.8.2 + + doc/SHA256SUMS | 6 ++++++ + 1 file changed, 6 insertions(+) + commit 3d078b52adbff566ccfc51067dfbf742ecf3ef86 Author: Lasse Collin Date: 2025-12-17 13:36:42 +0200 diff --git a/contrib/xz/THANKS b/contrib/xz/THANKS index e1c21ebfe5d2..d519147617e5 100644 --- a/contrib/xz/THANKS +++ b/contrib/xz/THANKS @@ -44,6 +44,7 @@ has been important. :-) - Bruce Stark - Cary Lewis - Charles Wilson + - Chase Knowlden - Chenxi Mao - Chien Wong - Chris Donawa @@ -175,6 +176,7 @@ has been important. :-) - Nathan Moinvaziri - Nelson H. F. Beebe - Nicholas Jackson + - Nobuhiro Iwamatsu - Ole André Vadla Ravnås - Orange Tsai - Orgad Shaneh @@ -190,7 +192,9 @@ has been important. :-) - Peter Seiderer - Pierre-Yves Martin - Pilorz Wojciech + - Pino Toscano - Pippijn van Steenhoven + - Radek Zikmund - Rafał Mużyło - Rainer Müller - Ralf Wildenhues @@ -205,6 +209,7 @@ has been important. :-) - Rui Paulo - Ryan Colyer - Ryan Young + - Salman Muin Kayser Chishti - Sam James - Scott McAllister - Sean Fenian diff --git a/contrib/xz/src/common/tuklib_gettext.h b/contrib/xz/src/common/tuklib_gettext.h index e5ad5e6f78a1..258156f2389d 100644 --- a/contrib/xz/src/common/tuklib_gettext.h +++ b/contrib/xz/src/common/tuklib_gettext.h @@ -41,11 +41,11 @@ #define N_(msgid) msgid // Optional: Strings that are word wrapped using tuklib_mbstr_wrap may be -// marked with W_("foo) in the source code. xgettext can then add a comment +// marked with W_("foo") in the source code. xgettext can then add a comment // to all such strings to inform translators. The following option needs to // be added to XGETTEXT_OPTIONS in po/Makevars or in an equivalent place: // -// '--keyword=W_:1,"This is word wrapped at spaces. The Unicode character U+00A0 works as a non-breaking space. Tab (\t) is interpret as a zero-width space (the tab itself is not displayed); U+200B is NOT supported. Manual word wrapping with \n is supported but requires care."' +// '--keyword=W_:1,"This is word wrapped at spaces. The Unicode character U+00A0 works as a non-breaking space. Tab (\t) is interpreted as a zero-width space (the tab itself is not displayed); U+200B is NOT supported. Manual word wrapping with \n is supported but requires care."' // // NOTE: The double-quotes in the --keyword argument above must be passed to // xgettext as is, thus one needs the single-quotes in Makevars. diff --git a/contrib/xz/src/common/tuklib_integer.h b/contrib/xz/src/common/tuklib_integer.h index 4026249e5468..bbb695dbd496 100644 --- a/contrib/xz/src/common/tuklib_integer.h +++ b/contrib/xz/src/common/tuklib_integer.h @@ -643,11 +643,10 @@ write64le(uint8_t *buf, uint64_t num) // // __builtin_assume_aligned is support by GCC >= 4.7 and clang >= 3.6. #ifdef HAVE___BUILTIN_ASSUME_ALIGNED -# define tuklib_memcpy_aligned(dest, src, size) \ - memcpy(dest, __builtin_assume_aligned(src, size), size) +# define tuklib_assume_aligned(ptr, align) \ + __builtin_assume_aligned(ptr, align) #else -# define tuklib_memcpy_aligned(dest, src, size) \ - memcpy(dest, src, size) +# define tuklib_assume_aligned(ptr, align) (ptr) # ifndef TUKLIB_FAST_UNALIGNED_ACCESS # define TUKLIB_USE_UNSAFE_ALIGNED_READS 1 # endif @@ -662,7 +661,7 @@ aligned_read16ne(const uint8_t *buf) return *(const uint16_t *)buf; #else uint16_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -676,7 +675,7 @@ aligned_read32ne(const uint8_t *buf) return *(const uint32_t *)buf; #else uint32_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -690,7 +689,7 @@ aligned_read64ne(const uint8_t *buf) return *(const uint64_t *)buf; #else uint64_t num; - tuklib_memcpy_aligned(&num, buf, sizeof(num)); + memcpy(&num, tuklib_assume_aligned(buf, sizeof(num)), sizeof(num)); return num; #endif } @@ -702,7 +701,7 @@ aligned_write16ne(uint8_t *buf, uint16_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint16_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } @@ -714,7 +713,7 @@ aligned_write32ne(uint8_t *buf, uint32_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint32_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } @@ -726,7 +725,7 @@ aligned_write64ne(uint8_t *buf, uint64_t num) #ifdef TUKLIB_USE_UNSAFE_TYPE_PUNNING *(uint64_t *)buf = num; #else - tuklib_memcpy_aligned(buf, &num, sizeof(num)); + memcpy(tuklib_assume_aligned(buf, sizeof(num)), &num, sizeof(num)); #endif return; } diff --git a/contrib/xz/src/common/tuklib_mbstr_wrap.h b/contrib/xz/src/common/tuklib_mbstr_wrap.h index 4e2f297dabb4..a13be3a96298 100644 --- a/contrib/xz/src/common/tuklib_mbstr_wrap.h +++ b/contrib/xz/src/common/tuklib_mbstr_wrap.h @@ -28,10 +28,10 @@ TUKLIB_DECLS_BEGIN /// One or more output lines exceeded right_margin. -/// This only a warning; everything was still printed successfully. +/// This is only a warning; everything was still printed successfully. #define TUKLIB_WRAP_WARN_OVERLONG 0x01 -/// Error writing to to the output FILE. The error flag in the FILE +/// Error writing to the output FILE. The error flag in the FILE /// should have been set as well. #define TUKLIB_WRAP_ERR_IO 0x02 diff --git a/contrib/xz/src/common/tuklib_open_stdxxx.h b/contrib/xz/src/common/tuklib_open_stdxxx.h index 3ee3ade35527..89a7b91bc38f 100644 --- a/contrib/xz/src/common/tuklib_open_stdxxx.h +++ b/contrib/xz/src/common/tuklib_open_stdxxx.h @@ -15,7 +15,7 @@ #include "tuklib_common.h" TUKLIB_DECLS_BEGIN -#define tuklib_open_stdxx TUKLIB_SYMBOL(tuklib_open_stdxxx) +#define tuklib_open_stdxxx TUKLIB_SYMBOL(tuklib_open_stdxxx) extern void tuklib_open_stdxxx(int err_status); TUKLIB_DECLS_END diff --git a/contrib/xz/src/liblzma/api/lzma/version.h b/contrib/xz/src/liblzma/api/lzma/version.h index 263ad819a906..5e524f0a9742 100644 --- a/contrib/xz/src/liblzma/api/lzma/version.h +++ b/contrib/xz/src/liblzma/api/lzma/version.h @@ -22,7 +22,7 @@ #define LZMA_VERSION_MINOR 8 /** \brief Patch version number of the liblzma release. */ -#define LZMA_VERSION_PATCH 2 +#define LZMA_VERSION_PATCH 3 /** * \brief Version stability marker diff --git a/contrib/xz/src/liblzma/check/crc32_fast.c b/contrib/xz/src/liblzma/check/crc32_fast.c index 6184e2b70e6b..d8ba37ea8794 100644 --- a/contrib/xz/src/liblzma/check/crc32_fast.c +++ b/contrib/xz/src/liblzma/check/crc32_fast.c @@ -182,7 +182,7 @@ lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) // See crc32_dispatch(). This would be the alternative which uses // locking and doesn't use crc32_dispatch(). Note that on Windows // this method needs Vista threads. - mythread_once(crc64_set_func); + mythread_once(crc32_set_func); #endif */ return crc32_func(buf, size, crc); diff --git a/contrib/xz/src/liblzma/check/crc_x86_clmul.h b/contrib/xz/src/liblzma/check/crc_x86_clmul.h index b302d6cf7f51..356536233080 100644 --- a/contrib/xz/src/liblzma/check/crc_x86_clmul.h +++ b/contrib/xz/src/liblzma/check/crc_x86_clmul.h @@ -344,7 +344,7 @@ is_arch_extension_supported(void) #if defined(_MSC_VER) // This needs with MSVC. ICC has it as a built-in // on all platforms. - __cpuid(r, 1); + __cpuid((int *)r, 1); #elif defined(HAVE_CPUID_H) // Compared to just using __asm__ to run CPUID, this also checks // that CPUID is supported and saves and restores ebx as that is diff --git a/contrib/xz/src/liblzma/common/index.c b/contrib/xz/src/liblzma/common/index.c index 6add6a683502..c4aadb9b008d 100644 --- a/contrib/xz/src/liblzma/common/index.c +++ b/contrib/xz/src/liblzma/common/index.c @@ -433,6 +433,26 @@ lzma_index_prealloc(lzma_index *i, lzma_vli records) if (records > PREALLOC_MAX) records = PREALLOC_MAX; + // If index_decoder.c calls us with records == 0, it's decoding + // an Index that has no Records. In that case the decoder won't call + // lzma_index_append() at all, and i->prealloc isn't used during + // the Index decoding either. + // + // Normally the first lzma_index_append() call from the Index decoder + // would reset i->prealloc to INDEX_GROUP_SIZE. With no Records, + // lzma_index_append() isn't called and the resetting of prealloc + // won't occur either. Thus, if records == 0, use the default value + // INDEX_GROUP_SIZE instead. + // + // NOTE: lzma_index_append() assumes i->prealloc > 0. liblzma <= 5.8.2 + // didn't have this check and could set i->prealloc = 0, which would + // result in a buffer overflow if the application called + // lzma_index_append() after decoding an empty Index. Appending + // Records after decoding an Index is a rare thing to do, but + // it is supposed to work. + if (records == 0) + records = INDEX_GROUP_SIZE; + i->prealloc = (size_t)(records); return; } @@ -685,6 +705,7 @@ lzma_index_append(lzma_index *i, const lzma_allocator *allocator, ++g->last; } else { // We need to allocate a new group. + assert(i->prealloc > 0); g = lzma_alloc(sizeof(index_group) + i->prealloc * sizeof(index_record), allocator); diff --git a/contrib/xz/src/liblzma/liblzma.pc.in b/contrib/xz/src/liblzma/liblzma.pc.in index a432992b7072..5efb49455f72 100644 --- a/contrib/xz/src/liblzma/liblzma.pc.in +++ b/contrib/xz/src/liblzma/liblzma.pc.in @@ -8,6 +8,7 @@ includedir=@includedir@ Name: liblzma Description: General purpose data compression library +License: 0BSD URL: @PACKAGE_URL@ Version: @PACKAGE_VERSION@ Cflags: -I${includedir} diff --git a/contrib/xz/src/liblzma/rangecoder/range_decoder.h b/contrib/xz/src/liblzma/rangecoder/range_decoder.h index 77cfaf7857d9..bcc53dbe192a 100644 --- a/contrib/xz/src/liblzma/rangecoder/range_decoder.h +++ b/contrib/xz/src/liblzma/rangecoder/range_decoder.h @@ -45,6 +45,7 @@ // and different processors. Overall 0x1F0 seems to be the best choice. #ifndef LZMA_RANGE_DECODER_CONFIG # if defined(__x86_64__) && !defined(__ILP32__) \ + && !defined(__arm64ec__) && !defined(_M_ARM64EC) \ && !defined(__NVCOMPILER) \ && (defined(__GNUC__) || defined(__clang__)) # define LZMA_RANGE_DECODER_CONFIG 0x1F0 diff --git a/contrib/xz/src/xz/file_io.c b/contrib/xz/src/xz/file_io.c index 6b1a1536fb07..6f784dd69553 100644 --- a/contrib/xz/src/xz/file_io.c +++ b/contrib/xz/src/xz/file_io.c @@ -493,8 +493,9 @@ io_sync_dest(file_pair *pair) return true; } -#if !defined(TUKLIB_DOSLIKE) && !defined(_AIX) +#if !defined(TUKLIB_DOSLIKE) && !defined(_AIX) && !defined(__QNX__) // On AIX, this would fail with EBADF. + // On QNX, this would fail with EINVAL. if (fsync(pair->dir_fd)) { message_error(_("%s: Synchronizing the directory of " "the file failed: %s"), diff --git a/contrib/xz/src/xz/main.c b/contrib/xz/src/xz/main.c index 1b8b37881172..8cc3b740f658 100644 --- a/contrib/xz/src/xz/main.c +++ b/contrib/xz/src/xz/main.c @@ -134,6 +134,16 @@ read_name(const args_info *args) // at least for one character to allow terminating the string // with '\0'. if (pos == size) { + // Prevent an integer overflow. This is only possible + // if allocating SIZE_MAX / 2 + 1 bytes has already + // succeeded. + // + // Use ENOMEM to for the error message to avoid adding + // a translatable string that will (almost) never be + // displayed in practice. + if (size > SIZE_MAX / 2) + message_fatal("%s", strerror(ENOMEM)); + size *= 2; name = xrealloc(name, size); } diff --git a/lib/liblzma/config.h b/lib/liblzma/config.h index af0ee2fefb39..db2d4e9c6a0d 100644 --- a/lib/liblzma/config.h +++ b/lib/liblzma/config.h @@ -409,7 +409,7 @@ #define PACKAGE_NAME "XZ Utils" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "XZ Utils 5.8.2" +#define PACKAGE_STRING "XZ Utils 5.8.3" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "xz" @@ -418,7 +418,7 @@ #define PACKAGE_URL "https://tukaani.org/xz/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "5.8.2" +#define PACKAGE_VERSION "5.8.3" /* Define to necessary symbol if this constant uses a non-standard name on your system. */ @@ -494,6 +494,10 @@ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# define _COSMO_SOURCE 1 +#endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # define _DARWIN_C_SOURCE 1 @@ -583,7 +587,7 @@ /* Version number of package */ -#define VERSION "5.8.2" +#define VERSION "5.8.3" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ From nobody Wed Apr 1 04:34:08 2026 X-Original-To: dev-commits-src-branches@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 4flsZT3VdBz6RbpK for ; Wed, 01 Apr 2026 04:34:09 +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 4flsZT0Scgz3M6p for ; Wed, 01 Apr 2026 04:34:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775018049; 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=a8L8MRIlDP3NVhRR+o1GMmtsZg/RaWzH8BPOIbALV88=; b=Xa4R8IaKPJJ4TP85dydrSaDVxVrPZMCiMuPZoAp22W5/kzSPlqO9xEMprxSlklT7uLJtFS RKlwNKy+CSy7WGOE0UgnnNnFINiKRb0OI5NZ8JAQamxUrydqo7YahqlcAAfyvx8lAFHpCX kTVRrx+3De+P0GvrNGa2z7jENkuLOtb8FYe69fPrKO7D6wDC10U0lK55jkiExULh9nE7BQ 8kCNmvllMkvjzBXn42ZCJjfmi2hxlHG6LPSf/ChEq9pm4xOjZHrgGNfpwa+aWonqxkSV23 xB4Q8la0WUohu0K7EG14JJE6D/rt4sRsGnHbsXiogdIXCbcmQdkECwt/6nNFMg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775018049; a=rsa-sha256; cv=none; b=E6kNz2b31mfU2HIdL5L3CWZUDrZcmALnxwMArDLxS6BKlSXsiNDebTyVZq5QDM9wLDb3eZ yeyfQVF0bKH2C8SPw0zBUHNWfB7SToYC3qGtiRig/bMSA4VoOFAgzTDSnHy8MOUuGrM+69 lRUuqPhsbg2t2B5cmCSziirUYO3exvF/6AFn1d3/ZaUcm0FoPAht97lnhCSF8LkUZ/2aaD MC9m7vioJKmDs61BY7IR8SwAe9dF38epa/w4ZaeKPnXueWodeDTXnlwXiv8NpFOZwXJwG9 sVjEXEXznNqRDn0ntjSLMlav3OfM4eAjD7164pdEjtJ+yLegkqp2PCLrWvTlVA== 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=1775018049; 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=a8L8MRIlDP3NVhRR+o1GMmtsZg/RaWzH8BPOIbALV88=; b=Bj/0nB+7iFb7A0p9PWbpXkwzADyTOQFmddmt4EY0A7PJVXEwD1u/Ux9x2TFAZIgxEa8o2Z sejliA8rY+69FLwOu3Ij2igeXCqFkESdcVBMKfne7SygJzyEp6isHSh4N07n4d09XL1W7P Df1l+hQE/8POJdVA4Bb8FiRwxnhDg4iyB96dtd8/5drDcjbcgCls95IQNP7JNqbRtMUMee 5043sfjMlQdg6rMT8LLCqpZY+R1m7a5WNy+QytzJACtggNhrs20zswEjpjjAMfVkszSi+d mfrZLk3liG17hiEfcGt6CFFJKElrFr8m2t/NYXrd5yEwJi39+7YyJ0n/PoT7fA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flsZS75glz11Dq for ; Wed, 01 Apr 2026 04:34:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42713 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 04:34:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: f4e018e9a49b - stable/14 - net80211: fix VHT160/80P80/80 chanwidth selection in the "40-" case List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f4e018e9a49b7bf4ddced51ad1ffc4415182cb45 Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 04:34:08 +0000 Message-Id: <69cca040.42713.ac63325@gitrepo.freebsd.org> The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=f4e018e9a49b7bf4ddced51ad1ffc4415182cb45 commit f4e018e9a49b7bf4ddced51ad1ffc4415182cb45 Author: Bjoern A. Zeeb AuthorDate: 2026-03-08 00:57:33 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-04-01 04:33:47 +0000 net80211: fix VHT160/80P80/80 chanwidth selection in the "40-" case Depending on the base channel ni_vht_chan2 - ni_vht_chan1 can be negative. Apply abs() as indicated in the comments right above | CCFS1 - CCFS0 | = 8 or > 16 in order to fix the channel width selection. Sponsored by: The FreeBSD Foundation PR: 293645 Fixes: 4bf049bfeefd9 Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D55717 (cherry picked from commit 6cfd2b93e68061c7831016b91c2e308d01658764) (cherry picked from commit 68fcf0b94c5167f89481052f358064c9b6732553) --- sys/net80211/ieee80211_ht.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index db5d7a90918c..697841a0ce86 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -2028,11 +2029,11 @@ do { \ } /* CCFS1 > 0 and | CCFS1 - CCFS0 | = 8 */ - if (ni->ni_vht_chan2 > 0 && (ni->ni_vht_chan2 - ni->ni_vht_chan1) == 8) + if (ni->ni_vht_chan2 > 0 && abs(ni->ni_vht_chan2 - ni->ni_vht_chan1) == 8) can_vht160 = can_vht80 = true; /* CCFS1 > 0 and | CCFS1 - CCFS0 | > 16 */ - if (ni->ni_vht_chan2 > 0 && (ni->ni_vht_chan2 - ni->ni_vht_chan1) > 16) + if (ni->ni_vht_chan2 > 0 && abs(ni->ni_vht_chan2 - ni->ni_vht_chan1) > 16) can_vht80p80 = can_vht80 = true; /* CFFS1 == 0 */ From nobody Wed Apr 1 04:34:10 2026 X-Original-To: dev-commits-src-branches@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 4flsZV3S3cz6Rbm7 for ; Wed, 01 Apr 2026 04:34:10 +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 4flsZV1Bpyz3LpL for ; Wed, 01 Apr 2026 04:34:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775018050; 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=TNTWyEy1wiZJBNiDGFFz5keX4BlnVdmRj0Gm1Y85IsE=; b=wM2P8zsaRHjzoPbLnLaw9qKR9VZ/c2EH+1/M5jBNLRhQrIyuCJ45r7lBm9Ojvz4CyCMdb/ 4pYFKb4mzFJDefH3aRG2BgJPlPNY8Ahb257H5LdwtWsLBfVdV0Jelo/2J5EyCo0jyD0UvC 4WHbVBn6a4klxcB6XWBRxMrJhbY5Zv3bIFsShWgKYSvmVLixALzNJecSCqMajd0JDgBlwQ vTmt8YSef0qCxFp8Nw75cnKcJmQj0FG6T8dyLqgQIOTDEqMbuT+1Z8r6vKaF8JogJ4qq/I iuZy1FVGHO2HIlelH7Qtq/P7FIuN2EmL/oA2uuZ2VorkR5xq8/UF/cuH/IP8Hg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775018050; a=rsa-sha256; cv=none; b=MlJjkeK5Jsx3zwIs5tp+IaiujNpH6iRk4QfZWTg32IWnYMymFZ8fZ4XrKMHwMRbU6kdmvM HFGXDEEb8KBnTrX+uIl16V5eGD+8hK5AOHFQVxTwxnVEpcnd5UPZDZS0/GpefVYvTYLzng /P31E75MqWcaApPuptZwU0wg9VNBi3KRAD62Uq26Va8/bxtJx+SBDGS31q14wUEcB2Efyw OMPNvMFhVNA1NsNsXDBTeGlh5sKE5uxTlo2o4mAXX/2QEy/eV2NhY9uX7sBnhqhsEmP4q8 kXW/YUspYItwR/PdVhYWakKRKzxHeKT13qKRVAqKiXiI+D45TvXl6/vRgUnlGw== 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=1775018050; 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=TNTWyEy1wiZJBNiDGFFz5keX4BlnVdmRj0Gm1Y85IsE=; b=IOo7jCeQwr3HlY6xRsw4tFiJY/PWfWA4VdGvqyTcVe5nwqIFj8M1Sn7cZSIuCZ5G/z0hW8 YBXUgdeYNnMJFkae2brPdG8MuoIVSxKU3l/EiCrV696hqjhRNyGY2puD+9xOLQCVPlcGm5 /0GBV1y11NJRFxWUYoXwTrt9ZTKWkficKvw7N6MRjPeOTLtaTVPMq89H9byvQEUQ/RRqp5 TB9gm4aF/z6bKwgltAxb+jRcKshsikT8+7xd9P7ySPaz0Nn1bgoE7shxQDnGFHI90N2t4O tr2P1GbKsraDhZ+AXCbxYIUkGCAuydAsTzPGSG/bIadr1hyb8oA6df8TIRZ84w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flsZV0lHsz11B0 for ; Wed, 01 Apr 2026 04:34:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42717 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 04:34:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: d5d08dea8443 - stable/14 - sbuf: make assertion message a lot more useable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d5d08dea844315a0f10d8ffefd1c903b3e871c1b Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 04:34:10 +0000 Message-Id: <69cca042.42717.1fc34f22@gitrepo.freebsd.org> The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=d5d08dea844315a0f10d8ffefd1c903b3e871c1b commit d5d08dea844315a0f10d8ffefd1c903b3e871c1b Author: Bjoern A. Zeeb AuthorDate: 2026-03-18 14:43:15 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-04-01 04:33:47 +0000 sbuf: make assertion message a lot more useable Saying that we are called with an (un)finished or corrupted sbuf is like saying "error" (though [un]finished is an extra hint). Add the pointer to the sbuf so one could easily check it, add the flags we are checking so one could see quickly about a possible state mismatch. Given we already dereference the pointer in the KASSERT there is no extra harm adding it to the message. Found while: testing lindebugfs changes Sponsored by: The FreeBSD Foundation Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D55919 (cherry picked from commit 2ce06d25431a6c96ef5719165cb73e138a0ed89c) (cherry picked from commit 40be04834308e3aa1e1cf411f87f16a34f4ff130) --- sys/kern/subr_sbuf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_sbuf.c b/sys/kern/subr_sbuf.c index 0ce2427f6dbb..002b65d81959 100644 --- a/sys/kern/subr_sbuf.c +++ b/sys/kern/subr_sbuf.c @@ -125,8 +125,8 @@ _assert_sbuf_state(const char *fun, struct sbuf *s, int state) { KASSERT((s->s_flags & SBUF_FINISHED) == state, - ("%s called with %sfinished or corrupt sbuf", fun, - (state ? "un" : ""))); + ("%s called with %sfinished or corrupt sbuf %p { s_flags %#010x }, " + "state %#010x", fun, (state ? "un" : ""), s, s->s_flags, state)); } #define assert_sbuf_integrity(s) _assert_sbuf_integrity(__func__, (s)) From nobody Wed Apr 1 04:34:11 2026 X-Original-To: dev-commits-src-branches@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 4flsZW4lWQz6Rbrj for ; Wed, 01 Apr 2026 04:34:11 +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 4flsZW2xhtz3Lxm for ; Wed, 01 Apr 2026 04:34:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775018051; 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=DUPzuQ4w2arXQEP2M4nB77uM4WDnXzkBu3PLZ+g+fuY=; b=c2Hz1QVpqF00DV+mgvhJ94nXJ4ahzPvzL5viYz1tEnxx2o/ECMzrSEchciVX7taQWnG52s cgxygDf7zm31NWq9fdaDFVVCx6KCnwcwS0IlOGR57jgYb0TRQLhfHB0GjsinYNjSBfwotQ J2D7qfRk2NNt/T1kXBIqHi7RVekJsAgtCvD9Mc14PZKiP+jiMrNRiUk0JF4AHUXE0VoR1Q fH4QiLYgt6FyEb/lUDSTQ7WDa9dLTLdwUHWfwB0hTxcHoN1bZvG44PTBe0pteG3DdRFF8q LNW/w6cYi4ZVlxKivlG7vsgEmvZijpqN13bL1ohWuacqJcpCHXmv319iaCTjXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775018051; a=rsa-sha256; cv=none; b=OZmsiQHf/V7uRKYruGVqHb8gXXTjAFb7qyjUH7GBCAlk9wlh+9oNV3orbvoG2q2d+jbcRJ ZWqaTqKycTnedeBWfbqeU33+mEhgDmq+77sTcHHa6/br9DDEkwU5uG0lepDcF7GVURyTCh hpQKha97QozTUe72Q/+g7cbYclRhS5nOxOtHW+IyxqGQXf/13VWIBT5YKLPSXr/gbMVTK2 wrC/bf6MG72YQdu3XRq4USmbxB5lMRCcz/BaSddZzl8QrBB2JCWdfa1b997Cl1WdXovbB8 8n6winRxkqf8tF/6x6e/bihwXXvQuLOa5Q9d/YwTeNcNgNG1kzWIH7eOD/iQMg== 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=1775018051; 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=DUPzuQ4w2arXQEP2M4nB77uM4WDnXzkBu3PLZ+g+fuY=; b=ooGv4rEAZsKgcZUVf2AsPuVtUYszGXe2n15Fzzhmicj8cvNPo6JUb965g+zvG9gHeDcUJd iW9eZPnJ1ac7RpyNvDTCAmO5Pr3I5uJApWtHDw15TNpZcslusH7M/G3Ezzchb8lgJMjnnz EmqIL764vSMhSwzd9by4ACRH4knbof0CSEPbcVDdN7R6OEZjJuuwmiEYK8tp3pVLABE5KM qPHhKwRU0en9Q7zP/GhXo5ITccOOnhHwQBlsaign62FvvqSdRPdkZmtxZVZHSLRLMWgCMA P3ff20uo0b/bPOVdONKDDMaT3oFDhQ5Svky+v1p0/Y6uIyHIZ1CHbrZvMXBF8w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flsZW206Kz11Ds for ; Wed, 01 Apr 2026 04:34:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 415b9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 04:34:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 7d069d784651 - stable/14 - LinuxKPI: add supporting #includes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7d069d7846519eb015133758647ee343e7d7f20a Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 04:34:11 +0000 Message-Id: <69cca043.415b9.372e059b@gitrepo.freebsd.org> The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=7d069d7846519eb015133758647ee343e7d7f20a commit 7d069d7846519eb015133758647ee343e7d7f20a Author: Bjoern A. Zeeb AuthorDate: 2026-03-19 20:29:29 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-04-01 04:33:47 +0000 LinuxKPI: add supporting #includes Compiling drm-kmod on !X86 does not include asm/smp.h which includes preempt.h on FreeBSD. In order to compile drm-kmod on other architectures add the secondary #includes for preempt.h to spinlock.h and hardirq.h (which now also gets included from highmem.h) to connect the #include chain. Sponsored by: The FreeBSD Foundation PR: 279864 Reviewed by: jhibbits, emaste Differential Revision: https://reviews.freebsd.org/D55974 (cherry picked from commit 1d18872c2519d7ca726ddc49735180ab1d8916e0) (cherry picked from commit 29dce45d8c50ea5858dc91a4294e83b8d72a2f80) --- sys/compat/linuxkpi/common/include/linux/hardirq.h | 1 + sys/compat/linuxkpi/common/include/linux/highmem.h | 1 + sys/compat/linuxkpi/common/include/linux/spinlock.h | 1 + 3 files changed, 3 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/hardirq.h b/sys/compat/linuxkpi/common/include/linux/hardirq.h index f79451dd0d35..c6cbf1a34f14 100644 --- a/sys/compat/linuxkpi/common/include/linux/hardirq.h +++ b/sys/compat/linuxkpi/common/include/linux/hardirq.h @@ -31,6 +31,7 @@ #include #include +#include #include #include diff --git a/sys/compat/linuxkpi/common/include/linux/highmem.h b/sys/compat/linuxkpi/common/include/linux/highmem.h index b8874481f9c6..c1f9f943c80f 100644 --- a/sys/compat/linuxkpi/common/include/linux/highmem.h +++ b/sys/compat/linuxkpi/common/include/linux/highmem.h @@ -45,6 +45,7 @@ #include #include +#include #define PageHighMem(p) (0) diff --git a/sys/compat/linuxkpi/common/include/linux/spinlock.h b/sys/compat/linuxkpi/common/include/linux/spinlock.h index 2992e41c9c02..9505defc5fa7 100644 --- a/sys/compat/linuxkpi/common/include/linux/spinlock.h +++ b/sys/compat/linuxkpi/common/include/linux/spinlock.h @@ -40,6 +40,7 @@ #include #include #include +#include typedef struct mtx spinlock_t; From nobody Wed Apr 1 23:01:04 2026 X-Original-To: dev-commits-src-branches@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 4fmL7h2d4Kz6Yhg3 for ; Wed, 01 Apr 2026 23:01:04 +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 4fmL7h1FD2z41Xy for ; Wed, 01 Apr 2026 23:01:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775084464; 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=+OMn+sm1BWzyU0mKQhOlKEyR8go8UlfV6H5Vmaj6w8k=; b=fyE4XDxIFBHnK7L5ajGISQU5RQaX2muOnEmn4dxnOFS38HE+HI4atOsdkydKQ07TEnd2sV 7qbD4+uz9+f2t+ia9zAJEYDMGdX9IWPTG/bF2EWB1sIqJSvJLowtZd2uxR4FH57SkWIR66 XQDfSur25yHAq/QpZTGthzHkzn5hpn5LZW2nzfAdMWhJ5GoZVOs3wsJh6dTw/y10tn+Nqm tGctW3CauayT1C2piH3zVcwC5LyIJihlXq/6gJMb9FiAOc+nicp2pmNFvqiWQmuGzJAYWZ dfT4HSsKOxJ4ohbwVGvNQ4aTyZaYtykYxc1WRv4m+81GGNI8gW4X9Oft5A1DOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775084464; a=rsa-sha256; cv=none; b=sjLhFyPQdlz154dVF2SOUEa3NDXNFqwbKPJvDTbuj+r0WEp+C1CaHHi7/TXNasnEwZ7b8j Sh7ljR1cW/GmJZ+C9rJMV2GjPEhyRJrtik9SKRo+yCDmJ3nWIrcXPEVD+7IWt2kjBYLtJF eGGz8RhqYGmBYYfe5cQhqoEzXoSidnY7odhKrtxdRIAP+LOTXCZ5MjHf6l+WpfQfxtPdR3 SGrExJyS6EzaR/GXB3LPCVikyhPGjzRgUvRrey+T72yo6nt46wVhWptbL3QCCAZfQdV9Qp EDn6GwZrupGDm0a/2wCbf4jCF3vxIpae3p7gXYCGIVWtbHuThyAwfwepZ6r8uw== 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=1775084464; 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=+OMn+sm1BWzyU0mKQhOlKEyR8go8UlfV6H5Vmaj6w8k=; b=HC8wIlIJGjIZY6wKaapn8D+XdGQBXNNaaAnI9Oz0KXO/vuVdGTME2TcPvTf83GPoFUE8Qm YsdX1fCpwbqZtaxK07lOlIhQ5AUK5RaVuTFs8VhKADVUPVg9qbI+5R0p4Z3he5AIHFnW9V 25T5W0SOFEMw0VCz+bxC2QLNgbuc1A3pwmbi3hA7uUM83YmxSWH+hw7tqWjVC8mJKvQ4l7 //RS4A//qSmteCbGkvn5CuJ88FXA3HsFr7Oh1K3aVWlSI7gh12tfwXQRu1/9iWTA+jVb5C FAr7742gZ82zG/b0I1QWkiHyIDAQcpJeyCx6wJsZvqKsb6JwCvS4WYhk8bRZeA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmL7h0ryLzcR3 for ; Wed, 01 Apr 2026 23:01:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 468cb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 23:01:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Navdeep Parhar Subject: git: 4fed52fd6410 - stable/15 - loader(8): embedded MD should be the most preferred currdev List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: np X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 4fed52fd6410ed46b1ea119533dc705a06cd8971 Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 23:01:04 +0000 Message-Id: <69cda3b0.468cb.4242c90b@gitrepo.freebsd.org> The branch stable/15 has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=4fed52fd6410ed46b1ea119533dc705a06cd8971 commit 4fed52fd6410ed46b1ea119533dc705a06cd8971 Author: Navdeep Parhar AuthorDate: 2026-03-20 00:39:17 +0000 Commit: Navdeep Parhar CommitDate: 2026-04-01 19:03:50 +0000 loader(8): embedded MD should be the most preferred currdev A loader built with MD_IMAGE_SIZE is almost always meant for use with its embedded image and should try that as currdev before anything else. Recent changes (d69fc3a9dc71, 784150fd2535) seem to have relaxed the ZFS code's search for a rootfs and exposed this problem. Reviewed by: imp, tsoome Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D55979 (cherry picked from commit 0661997cea165e951e4e215e6aed41596d8b1d52) --- stand/efi/loader/main.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index d1671d9e5c82..65a45d241fe4 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -570,6 +570,15 @@ find_currdev(bool do_bootmgr, bool is_last, } /* Nothing specified, try normal match */ } +#ifdef MD_IMAGE_SIZE + /* + * If there is an embedded MD, try to use that. + */ + printf("Trying MD\n"); + if (probe_md_currdev()) + return (0); +#endif /* MD_IMAGE_SIZE */ + #ifdef EFI_ZFS_BOOT /* * Did efi_zfs_probe() detect the boot pool? If so, use the zpool @@ -585,15 +594,6 @@ find_currdev(bool do_bootmgr, bool is_last, } #endif /* EFI_ZFS_BOOT */ -#ifdef MD_IMAGE_SIZE - /* - * If there is an embedded MD, try to use that. - */ - printf("Trying MD\n"); - if (probe_md_currdev()) - return (0); -#endif /* MD_IMAGE_SIZE */ - /* * Try to find the block device by its handle based on the * image we're booting. If we can't find a sane partition, From nobody Wed Apr 1 23:01:41 2026 X-Original-To: dev-commits-src-branches@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 4fmL8P3wjmz6YhZZ for ; Wed, 01 Apr 2026 23:01:41 +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 4fmL8P3RVKz41jy for ; Wed, 01 Apr 2026 23:01:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775084501; 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=vjJpdRiNL695rTPNW29NGswz0vtIWFk0ZUmW/0DmPAI=; b=YrrRLY1XjKoTHEIB+hUauO5gQVhM3ObSLxGz0B0G3egeDpPUTfpIfTEbwZUHCfOrngkIvg J52wrZ6TiH+TfwSOJ+swU1ELLEoHb0e140gqJx79nR9ZkSyhNLk6MdoJFif1EsDwqDtkRw G7mvemt31B8M2rPXMAAkGXwNaJWqu5vyH/2uOVwe3pMtvVtnVu1ycS22pxsg7xhfDiRAMG Gpjw4Veywo5ou+5K7kOuNPS7sSgFT2v2NdybCli9T/q2lg/5vnKQRHNFMqnCifXBKPA2J9 rAHPjtcqVWMACS7BKViuS5pspYQ9B7oMwVes1x3BTaLtD02Zu0NgVYKLFb3Uog== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775084501; a=rsa-sha256; cv=none; b=BnPlrvZIWKBiTGj2RqLm1LM2v8LfHkCdpNFbWEBn877Jy13ecO6RgDVQosfGKkFgcJBD4h B0S/p7BVFabFvIs2uMZOWi7ulbuCIoW1aAL/JpfJDTMcifn3KrgM3EG/Z/A/sqJ/V9i2On eeIxU2AeOdgSdO+wZ4DjhFGdTlgfsjVi/pfe253NxVMq/BrgVkyMO7M37j5F0nmBaEhxWy UhgQ0UKCA/DWF7dRCMaqhJK6sjcyFydZQJnkKBPLEUiVzTKw6rEk2JsWPaJQwQlG5oHp/Z G5PAcjIlkUUANevnLCX/Kze3z2ivL8ii7/B4aTckb/ZLE6lB7nVQsrKHev+Xug== 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=1775084501; 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=vjJpdRiNL695rTPNW29NGswz0vtIWFk0ZUmW/0DmPAI=; b=xYPWWefien5uHgaCagMmGVa7CA0pIxFHB/41fE8Whhh98WAx4ibie9Pi9RA+xdQKEhTb6H CQ6AB63z0YouvRwNN/djOJEwlKccPHxjXn64exDqB68f4GbCnD4mwbMP8nTbbwUkJWZEWG 4r7zZrPZvBRd0VFhyzfOWRr+5cxeC7tq7O5Hlyl5ZWfU0lVxkyP95xjJRHV4WZqClbI9fE Q0Z2DwsdQ5wDieOjXWh3XxFmNjMKgiVJamI/hOXC8ooiRSB4GJBYI8XjTxvKtXjigngO5u kZClyFciarL4BSJbmlAjfifuaUgPtrXXj6TzdnhYgssvRsKt5iOBqK/Wy95OMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmL8P2tk3zcL2 for ; Wed, 01 Apr 2026 23:01:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 47f21 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 23:01:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Navdeep Parhar Subject: git: a4a3825d3e1d - stable/14 - loader(8): embedded MD should be the most preferred currdev List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: np X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a4a3825d3e1dff1fea1d81443e0d92af6671a0c3 Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 23:01:41 +0000 Message-Id: <69cda3d5.47f21.60ce5976@gitrepo.freebsd.org> The branch stable/14 has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=a4a3825d3e1dff1fea1d81443e0d92af6671a0c3 commit a4a3825d3e1dff1fea1d81443e0d92af6671a0c3 Author: Navdeep Parhar AuthorDate: 2026-03-20 00:39:17 +0000 Commit: Navdeep Parhar CommitDate: 2026-04-01 19:04:38 +0000 loader(8): embedded MD should be the most preferred currdev A loader built with MD_IMAGE_SIZE is almost always meant for use with its embedded image and should try that as currdev before anything else. Recent changes (d69fc3a9dc71, 784150fd2535) seem to have relaxed the ZFS code's search for a rootfs and exposed this problem. Reviewed by: imp, tsoome Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D55979 (cherry picked from commit 0661997cea165e951e4e215e6aed41596d8b1d52) --- stand/efi/loader/main.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 1df1547f23b8..d6a42c0241fc 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -555,6 +555,15 @@ find_currdev(bool do_bootmgr, bool is_last, } /* Nothing specified, try normal match */ } +#ifdef MD_IMAGE_SIZE + /* + * If there is an embedded MD, try to use that. + */ + printf("Trying MD\n"); + if (probe_md_currdev()) + return (0); +#endif /* MD_IMAGE_SIZE */ + #ifdef EFI_ZFS_BOOT /* * Did efi_zfs_probe() detect the boot pool? If so, use the zpool @@ -570,15 +579,6 @@ find_currdev(bool do_bootmgr, bool is_last, } #endif /* EFI_ZFS_BOOT */ -#ifdef MD_IMAGE_SIZE - /* - * If there is an embedded MD, try to use that. - */ - printf("Trying MD\n"); - if (probe_md_currdev()) - return (0); -#endif /* MD_IMAGE_SIZE */ - /* * Try to find the block device by its handle based on the * image we're booting. If we can't find a sane partition, From nobody Thu Apr 2 02:17:06 2026 X-Original-To: dev-commits-src-branches@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 4fmQTt54WHz6WK5S for ; Thu, 02 Apr 2026 02:17:06 +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 4fmQTt4BD8z3FNX for ; Thu, 02 Apr 2026 02:17:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096226; 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=1tFGhgQBkQoKJ36FP6R8/Z9n/HiSzBGdQjvHjoeqIt4=; b=ws5fmrUpPFLcDLSTbz0qnyS4jJNg25tfHMWylrR1AFiuSIxKCAaE/QgrUmIxZka3ICklj4 0wjp1HsZN0WbH61Hdz3unYYBuRlCorHr8TpArbL0tICdqs+i0iZzP4Ftjk7BEIKZJaovbE /12ewHGtfBMX3tekoYbWwvJlj0Y5YzkNKuLhyYJWlszx1ISArnz2O2FBfqoKf9nywgl/uz 1HnX5WCdjy/3OHh2sIVs74aCO4eq8CSfogT5Ki8SCIGcsVKRiUyii821sr8KinXUc3+Ho5 HqA1NYt85Siwb1IStOx4pb37oZ41GHbn1E/TW6lgOAK8apQc+0uaC66uvLsgYg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096226; a=rsa-sha256; cv=none; b=fALJ30b5rlkybxTxrTDBrE8dF5LVQVbWL6g1LUR6CgqESU1mbw91F1KVwzgrMpMAdKLeI2 jh80Yl3wRy3kH/+MLrkWFKI14FdURRjaB5WvVHG4pV0Yp35UIVmX0xFSs/uYR7exB1An6F CaPVvwNOfo+Rud7iJvRkkz1RXiHyJRsLJ4FQd2sRMGltO/PJ263C3pDvWiG16DjCpdApw7 hey5LFD6oTCE0wgbsVVQ2H19wB6VDalAygBHJdcoEjMFI59b3NMVQXiTmKlaUJOozM7glC GwfhrUieg5jBac/rX8s1Mz2rGtv2UzxmLvqGCinezNSl8JJEIpuJ0l9A6Fhwhg== 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=1775096226; 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=1tFGhgQBkQoKJ36FP6R8/Z9n/HiSzBGdQjvHjoeqIt4=; b=m60jxthHQXs8ByP0DbngVx+4R7aZ7HOp/SJmGOAtrLhRRWoZvwvRAeIqe1wdEk765F7CoO KQVEPx2TqN4CSEAMIqpURGLwgJUlTYySsaIafsgQyz5yBlwMd1Y0T5OC4B1X8gymBhUe8S PNNp5uEqVa7Xo3//zV5cyfrEAh2ilIL0V1QtlQ0UzJ4oRB6QOP2ymurAABAT2zzsOuCtpH BOxHvuWfQuk1rNwOdqxiqvPj1UzDZJkHDiDwwiY6ir7H1rpQ+Tigowt5Hb430LZ5+BCbqG nCeJjc3486e6pG+nadJVKoVvUy6eEXYqbm772WJloZmVxcHPVdDQRRSghZwqEw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTt3nPQzjQd for ; Thu, 02 Apr 2026 02:17:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3413a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 1e4debcf698f - stable/15 - rtld: properly handle update of several vars in rtld_set_var() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 1e4debcf698f364fe857f7cbda53272e4fafa161 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:06 +0000 Message-Id: <69cdd1a2.3413a.6f854c4@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1e4debcf698f364fe857f7cbda53272e4fafa161 commit 1e4debcf698f364fe857f7cbda53272e4fafa161 Author: Konstantin Belousov AuthorDate: 2026-03-24 01:43:23 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 rtld: properly handle update of several vars in rtld_set_var() (cherry picked from commit b9f046d941c4dbd0e4fc634827ada6e7cf6a6bcf) --- libexec/rtld-elf/rtld.c | 188 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 152 insertions(+), 36 deletions(-) diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index 8ac897508870..0cdb09f10121 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -187,6 +187,10 @@ static char *origin_subst_one(Obj_Entry *, char *, const char *, const char *, static char *origin_subst(Obj_Entry *, const char *); static bool obj_resolve_origin(Obj_Entry *obj); static void preinit_main(void); +static void rtld_recalc_bind_not(const char *); +static void rtld_recalc_dangerous_ld_env(void); +static void rtld_recalc_debug(const char *); +static void rtld_recalc_path_rpath(const char *); static int rtld_verify_versions(const Objlist *); static int rtld_verify_object_versions(Obj_Entry *); static void object_add_name(Obj_Entry *, const char *); @@ -198,6 +202,17 @@ static uint32_t gnu_hash(const char *); static bool matched_symbol(SymLook *, const Obj_Entry *, Sym_Match_Result *, const unsigned long); +struct ld_env_var_desc; +static void rtld_set_var_bind_not(struct ld_env_var_desc *lvd); +static void rtld_set_var_bind_now(struct ld_env_var_desc *lvd); +static void rtld_set_var_debug(struct ld_env_var_desc *lvd); +static void rtld_set_var_dynamic_weak(struct ld_env_var_desc *lvd); +static void rtld_set_var_libmap_disable(struct ld_env_var_desc *lvd); +static void rtld_set_var_library_path(struct ld_env_var_desc *lvd); +static void rtld_set_var_library_path_fds(struct ld_env_var_desc *lvd); +static void rtld_set_var_library_path_rpath(struct ld_env_var_desc *lvd); +static void rtld_set_var_loadfltr(struct ld_env_var_desc *lvd); + void r_debug_state(struct r_debug *, struct link_map *) __noinline __exported; void _r_debug_postinit(struct link_map *) __noinline __exported; @@ -215,7 +230,6 @@ static bool dangerous_ld_env; /* True if environment variables have been used to affect the libraries loaded */ bool ld_bind_not; /* Disable PLT update */ static const char *ld_bind_now; /* Environment variable for immediate binding */ -static const char *ld_debug; /* Environment variable for debugging */ static bool ld_dynamic_weak = true; /* True if non-weak definition overrides weak definition */ static const char *ld_library_path; /* Environment variable for search path */ @@ -367,26 +381,35 @@ struct ld_env_var_desc { const char *val; const bool unsecure : 1; const bool can_update : 1; - const bool debug : 1; bool owned : 1; + void (*const on_update)(struct ld_env_var_desc *); }; #define LD_ENV_DESC(var, unsec, ...) \ [LD_##var] = { .n = #var, .unsecure = unsec, __VA_ARGS__ } static struct ld_env_var_desc ld_env_vars[] = { - LD_ENV_DESC(BIND_NOW, false), + LD_ENV_DESC(BIND_NOW, false, .can_update = true, + .on_update = rtld_set_var_bind_now), LD_ENV_DESC(PRELOAD, true), LD_ENV_DESC(LIBMAP, true), - LD_ENV_DESC(LIBRARY_PATH, true, .can_update = true), - LD_ENV_DESC(LIBRARY_PATH_FDS, true, .can_update = true), - LD_ENV_DESC(LIBMAP_DISABLE, true), - LD_ENV_DESC(BIND_NOT, true), - LD_ENV_DESC(DEBUG, true, .can_update = true, .debug = true), + LD_ENV_DESC(LIBRARY_PATH, true, .can_update = true, + .on_update = rtld_set_var_library_path), + LD_ENV_DESC(LIBRARY_PATH_FDS, true, .can_update = true, + .on_update = rtld_set_var_library_path_fds), + LD_ENV_DESC(LIBMAP_DISABLE, true, .can_update = true, + .on_update = rtld_set_var_libmap_disable), + LD_ENV_DESC(BIND_NOT, true, .can_update = true, + .on_update = rtld_set_var_bind_not), + LD_ENV_DESC(DEBUG, true, .can_update = true, + .on_update = rtld_set_var_debug), LD_ENV_DESC(ELF_HINTS_PATH, true), - LD_ENV_DESC(LOADFLTR, true), - LD_ENV_DESC(LIBRARY_PATH_RPATH, true, .can_update = true), + LD_ENV_DESC(LOADFLTR, true, .can_update = true, + .on_update = rtld_set_var_loadfltr), + LD_ENV_DESC(LIBRARY_PATH_RPATH, true, .can_update = true, + .on_update = rtld_set_var_library_path_rpath), LD_ENV_DESC(PRELOAD_FDS, true), - LD_ENV_DESC(DYNAMIC_WEAK, true, .can_update = true), + LD_ENV_DESC(DYNAMIC_WEAK, true, .can_update = true, + .on_update = rtld_set_var_dynamic_weak), LD_ENV_DESC(TRACE_LOADED_OBJECTS, false), LD_ENV_DESC(UTRACE, false, .can_update = true), LD_ENV_DESC(DUMP_REL_PRE, false, .can_update = true), @@ -515,7 +538,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp) struct stat st; Elf_Addr *argcp; char **argv, **env, **envp, *kexecpath; - const char *argv0, *binpath, *library_path_rpath, *static_tls_extra; + const char *argv0, *binpath, *static_tls_extra; struct ld_env_var_desc *lvd; caddr_t imgentry; char buf[MAXPATHLEN]; @@ -720,9 +743,8 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp) } } - ld_debug = ld_get_env_var(LD_DEBUG); - if (ld_bind_now == NULL) - ld_bind_not = ld_get_env_var(LD_BIND_NOT) != NULL; + rtld_recalc_debug(ld_get_env_var(LD_DEBUG)); + rtld_recalc_bind_not(ld_get_env_var(LD_BIND_NOT)); ld_dynamic_weak = ld_get_env_var(LD_DYNAMIC_WEAK) == NULL; libmap_disable = ld_get_env_var(LD_LIBMAP_DISABLE) != NULL; libmap_override = ld_get_env_var(LD_LIBMAP); @@ -732,31 +754,18 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp) ld_preload_fds = ld_get_env_var(LD_PRELOAD_FDS); ld_elf_hints_path = ld_get_env_var(LD_ELF_HINTS_PATH); ld_loadfltr = ld_get_env_var(LD_LOADFLTR) != NULL; - library_path_rpath = ld_get_env_var(LD_LIBRARY_PATH_RPATH); - if (library_path_rpath != NULL) { - if (library_path_rpath[0] == 'y' || - library_path_rpath[0] == 'Y' || - library_path_rpath[0] == '1') - ld_library_path_rpath = true; - else - ld_library_path_rpath = false; - } + rtld_recalc_path_rpath(ld_get_env_var(LD_LIBRARY_PATH_RPATH)); static_tls_extra = ld_get_env_var(LD_STATIC_TLS_EXTRA); if (static_tls_extra != NULL && static_tls_extra[0] != '\0') { sz = parse_integer(static_tls_extra); if (sz >= RTLD_STATIC_TLS_EXTRA && sz <= SIZE_T_MAX) ld_static_tls_extra = sz; } - dangerous_ld_env = libmap_disable || libmap_override != NULL || - ld_library_path != NULL || ld_preload != NULL || - ld_elf_hints_path != NULL || ld_loadfltr || !ld_dynamic_weak || - static_tls_extra != NULL; + rtld_recalc_dangerous_ld_env(); ld_tracing = ld_get_env_var(LD_TRACE_LOADED_OBJECTS); ld_utrace = ld_get_env_var(LD_UTRACE); set_ld_elf_hints_path(); - if (ld_debug != NULL && *ld_debug != '\0') - debug = 1; dbg("%s is initialized, base address = %p", __progname, (caddr_t)aux_info[AT_BASE]->a_un.a_ptr); dbg("RTLD dynamic = %p", obj_rtld.dynamic); @@ -6615,18 +6624,121 @@ rtld_get_var(const char *name) return (NULL); } +static void +rtld_recalc_dangerous_ld_env(void) +{ + /* + * Never reset dangerous_ld_env back to false if rtld was ever + * contaminated with it set to true. + */ + dangerous_ld_env |= libmap_disable || libmap_override != NULL || + ld_library_path != NULL || ld_preload != NULL || + ld_elf_hints_path != NULL || ld_loadfltr || !ld_dynamic_weak || + ld_get_env_var(LD_STATIC_TLS_EXTRA) != NULL; +} + +static void +rtld_recalc_debug(const char *ld_debug) +{ + if (ld_debug != NULL && *ld_debug != '\0') + debug = 1; +} + +static void +rtld_set_var_debug(struct ld_env_var_desc *lvd) +{ + rtld_recalc_debug(lvd->val); +} + +static void +rtld_set_var_library_path(struct ld_env_var_desc *lvd) +{ + ld_library_path = lvd->val; +} + +static void +rtld_set_var_library_path_fds(struct ld_env_var_desc *lvd) +{ + ld_library_dirs = lvd->val; +} + +static void +rtld_recalc_path_rpath(const char *library_path_rpath) +{ + if (library_path_rpath != NULL) { + if (library_path_rpath[0] == 'y' || + library_path_rpath[0] == 'Y' || + library_path_rpath[0] == '1') + ld_library_path_rpath = true; + else + ld_library_path_rpath = false; + } else { + ld_library_path_rpath = false; + } +} + +static void +rtld_set_var_library_path_rpath(struct ld_env_var_desc *lvd) +{ + rtld_recalc_path_rpath(lvd->val); +} + +static void +rtld_recalc_bind_not(const char *bind_not_val) +{ + if (ld_bind_now == NULL) + ld_bind_not = bind_not_val != NULL; +} + +static void +rtld_set_var_bind_now(struct ld_env_var_desc *lvd) +{ + ld_bind_now = lvd->val; + rtld_recalc_bind_not(ld_get_env_var(LD_BIND_NOT)); +} + +static void +rtld_set_var_bind_not(struct ld_env_var_desc *lvd) +{ + rtld_recalc_bind_not(lvd->val); +} + +static void +rtld_set_var_dynamic_weak(struct ld_env_var_desc *lvd) +{ + ld_dynamic_weak = lvd->val == NULL; +} + +static void +rtld_set_var_loadfltr(struct ld_env_var_desc *lvd) +{ + ld_loadfltr = lvd->val != NULL; +} + +static void +rtld_set_var_libmap_disable(struct ld_env_var_desc *lvd) +{ + libmap_disable = lvd->val != NULL; +} + int rtld_set_var(const char *name, const char *val) { + RtldLockState lockstate; struct ld_env_var_desc *lvd; u_int i; + int error; + error = ENOENT; + wlock_acquire(rtld_bind_lock, &lockstate); for (i = 0; i < nitems(ld_env_vars); i++) { lvd = &ld_env_vars[i]; if (strcmp(lvd->n, name) != 0) continue; - if (!lvd->can_update || (lvd->unsecure && !trust)) - return (EPERM); + if (!lvd->can_update || (lvd->unsecure && !trust)) { + error = EPERM; + break; + } if (lvd->owned) free(__DECONST(char *, lvd->val)); if (val != NULL) @@ -6634,11 +6746,15 @@ rtld_set_var(const char *name, const char *val) else lvd->val = NULL; lvd->owned = true; - if (lvd->debug) - debug = lvd->val != NULL && *lvd->val != '\0'; - return (0); + if (lvd->on_update != NULL) + lvd->on_update(lvd); + error = 0; + break; } - return (ENOENT); + if (error == 0) + rtld_recalc_dangerous_ld_env(); + lock_release(rtld_bind_lock, &lockstate); + return (error); } /* From nobody Thu Apr 2 02:17:07 2026 X-Original-To: dev-commits-src-branches@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 4fmQTv6ljjz6WK5T for ; Thu, 02 Apr 2026 02:17:07 +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 4fmQTv5jd5z3FNY for ; Thu, 02 Apr 2026 02:17:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096227; 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=GNTTE6OjN1y4melyVElcy4dcoLauHJS9bwpdybkHWH8=; b=Be+ICruwq0dh8WGRYT4++DolDxP8uAhDQu3uNZj/jNO2LVKD1YyEQGuPIph1aOmLIXWNrx 3Emkof90F0nJry7Ygk82APBrZu5ox/4sCYY1J3v90V/PjHBuwokND+In5SoYswnpUfgxBM gMjctM9brHuLvHzbNpN7+6j6SbBISGPBMhSpqqJWsLH3tl0fKTtGrj0VxOxL7zSrp751SS do2kH0iZpiIz36aJzJzBghJw1rRWTZpsS1omJduqVCsiaYvkL0Tejh+kjgMuM5oyFlveHv uXk85VjTdKjfsjW0bQI0BowFqDi9aTsF1rN0+L5IYD4hHHs85ECUbxPkqMGfhg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096227; a=rsa-sha256; cv=none; b=I41XFIgewwGbM814lsdrR6h5LnwVXJKBYdJcKkQaoY1xqr+CgvkZZOKFi/yGaJvTlXrEfK Xf2uDImHPzeOqXmK4nrUbwUV/DzKOnAonAsPrJYzzepqsMwJ3PdIk3W6361qU4Yltcwzzc ktGxdWJFqpImY08Ioh8xYD5nIiMH7jAUY8VqvYqm7oS/jPRF5moOKSs0MuiLyhAoX40W42 fdEPU8R2/wnLrIkwWBOeMzd1o7t1Vn6+6kAKLd3kABexaquLzeM23cEotPqeKE2IjGmej1 YfzgdmyagRKM69aRhmVaE4x4UzJWOqcOqaVlXgdRIJRLNDlxg1M1W6IAlAesww== 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=1775096227; 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=GNTTE6OjN1y4melyVElcy4dcoLauHJS9bwpdybkHWH8=; b=ri72A8autZnKvS6ND87Jc19rygyP5JW6jX3n23yOgZxoFZi6iBBkGvZPN/LqDyZWSblL4N WHsgheo01Vat8T846BCvOwmSdocpLAjfbgPGQHUX+0PBN4ME6sv/1T6gbSfk/ND0y1eBoI jS+xE7O2OuYGMR8mQBwW2m22j6zU/gd4oAyJTR62ExpPRyCjGcvXBT+ZYugUTS6aC1jc4L qIChNYnDsp0tovDBX4lZtWQqcKELtbAXOUcmL490uF8lZZBnEud0fyUwMe2iZJtexP0dKU n5zyDYHQsmv9k6afqQyYP+THkvVDlZ5dbqXqwHKXNo2UAN3NqDGF0fmeY1MYJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTv52MczjLc for ; Thu, 02 Apr 2026 02:17:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3420d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a2707106b094 - stable/15 - rtld_get_var(3): provide explicit list of rtld vars that can be modified List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: a2707106b094bfdb29292e5fc213cc1f3df43918 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:07 +0000 Message-Id: <69cdd1a3.3420d.5c1811f7@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a2707106b094bfdb29292e5fc213cc1f3df43918 commit a2707106b094bfdb29292e5fc213cc1f3df43918 Author: Konstantin Belousov AuthorDate: 2026-03-25 22:38:35 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 rtld_get_var(3): provide explicit list of rtld vars that can be modified (cherry picked from commit f7b368d25fadbfcba5072dfab3738082393fa189) --- lib/libc/gen/rtld_get_var.3 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/libc/gen/rtld_get_var.3 b/lib/libc/gen/rtld_get_var.3 index 092114e86d78..93aab133793b 100644 --- a/lib/libc/gen/rtld_get_var.3 +++ b/lib/libc/gen/rtld_get_var.3 @@ -73,6 +73,23 @@ but without the (or .Ev LD_32_ or any other ABI-specific) prefix. +.Pp +The list of variables that can be modified with the +.Fn rtld_set_var +function is: +.Bl -tag +.It Dv LD_BIND_NOT +.It Dv LD_BIND_NOW +.It Dv LD_DEBUG +.It Dv LD_DUMP_REL_PRE +.It Dv LD_DUMP_REL_POST +.It Dv LD_DYNAMIC_WEAK +.It Dv LD_LIBMAP_DISABLE +.It Dv LD_LIBRARY_PATH +.It Dv LD_LIBRARY_PATH_FDS +.It Dv LD_LIBRARY_PATH_RPATH +.It Dv LD_LOADFLTR +.El .Sh RETURN VALUES The .Fn rtld_get_var From nobody Thu Apr 2 02:17:08 2026 X-Original-To: dev-commits-src-branches@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 4fmQTx0l6pz6WKGx for ; Thu, 02 Apr 2026 02:17:09 +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 4fmQTw5XChz3FTT for ; Thu, 02 Apr 2026 02:17:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DAJD9GNuH6MELexKUR3aRj2hXvvVswegoqbmzFgj3i8=; b=xBDB8+LkOiV8FAio9b89EmLdPoXtcUycIz7QeHRqcRjYPd/i0NlL/Wzvbz+YWLveGoZmUO gtuz0uGCMhC3HI5NiCadaOB7IVUVeH5bprBulsbF3BgqAdo15XZXMmCGERJ/GSZ8U62Hut pWw/Q8Bgz21hdT4RIPwT4mB00jpWGBLcciGyYdaislQ1qHB5P74+QWvba6u2CNeB1dnxR6 8mcIt/CmnJLsCBWiy5hik/hoSR4Pef0IdOJ1OV5gXH5al0860QFllhS8tuyRxFsCdDC+EX B2zA1eGGDmLSXwq7WMeNEi5Y2v9hlRSQdXLPaBWWf117Ls/EwO6WMSCjP/cbrw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096228; a=rsa-sha256; cv=none; b=fDqouiIUCuXlaYzQJiGxkABMe5hO1WQNtIFmgP8xVGzeLab7XcyxUTGA3Zuso9djcKRm2w /MugMtKQeMeiyZNx7G2hzxzlWhUi3NvlmfVxcsQ0v3ULn7bv2PnfMx5reMwU4VmQ1YXzHe M49MHP83vruevEX6HR+dTq++iQnJ2py2/FQoySeuKIankebsbYjasKKRFIdmse7Ealb8Be oR/1JffwNH9qIEOoqLvzvbx9GuGapOm821swWEVAFhqjVyV1QFKAgkmkLyKywdlFhDjwX2 LQlkk5bxseA7IkM63CiRuuKlMeLYhvrsxL8kHZNbEhMISI3WimAjkKiASWxVDQ== 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=1775096228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DAJD9GNuH6MELexKUR3aRj2hXvvVswegoqbmzFgj3i8=; b=oaVZFWWh+y17re7ggSITgsKG3H5tdL9sYZHewcGUzgh4ZahxDunsxVa5aJ17ldR/umgKsu L5boblxi2yFxcs7c0OcKTQOL/dFyuYHmShb7VvvlMi3dwWgVMKpJDJby00ZK6+ziPPMERy 1E6oMBXTrY8KtCwrqg7Ozp6w8WJPLU1m5mYY0jNhvxt6qz+Kk2HVRwFlzQMN3WLZS2BBOS WGciqWW133tArecW5OXwxK0UWijQl3tlULn2fCFuxXfmqcgy/c+E2KnTMuADsyM65HhvY1 gBU32qn/7sRu3ySc5+pBuq6+nwDBoGhim+QsROYyQ877XTWmwOr71hpjhFmGAw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTw54GlzjJ8 for ; Thu, 02 Apr 2026 02:17:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3215f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Alex S From: Konstantin Belousov Subject: git: a91b30766883 - stable/15 - rtld: add a test for rtld_set_var (with LIBRARY_PATH_FDS) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: a91b3076688311397630d37b4c093f5f18680cec Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:08 +0000 Message-Id: <69cdd1a4.3215f.4916d643@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a91b3076688311397630d37b4c093f5f18680cec commit a91b3076688311397630d37b4c093f5f18680cec Author: Alex S AuthorDate: 2026-03-25 00:56:01 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 rtld: add a test for rtld_set_var (with LIBRARY_PATH_FDS) PR: 294054 (cherry picked from commit 9f16078b5f8c44d5718ecc940ab0b4ed5a1877a5) --- libexec/rtld-elf/tests/Makefile | 1 + libexec/rtld-elf/tests/set_var_test.c | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/libexec/rtld-elf/tests/Makefile b/libexec/rtld-elf/tests/Makefile index c4b3baab4cb8..3c05b52b83bb 100644 --- a/libexec/rtld-elf/tests/Makefile +++ b/libexec/rtld-elf/tests/Makefile @@ -7,6 +7,7 @@ SUBDIR_DEPEND_target= libpythagoras ATF_TESTS_C= ld_library_pathfds ATF_TESTS_C+= ld_preload_fds +ATF_TESTS_C+= set_var_test .for t in ${ATF_TESTS_C} SRCS.$t= $t.c common.c diff --git a/libexec/rtld-elf/tests/set_var_test.c b/libexec/rtld-elf/tests/set_var_test.c new file mode 100644 index 000000000000..6279bd5ecb44 --- /dev/null +++ b/libexec/rtld-elf/tests/set_var_test.c @@ -0,0 +1,38 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2026 Alex S + */ + +#include +#include +#include +#include +#include + +ATF_TC_WITHOUT_HEAD(set_var_library_path_fds); +ATF_TC_BODY(set_var_library_path_fds, tc) +{ + void *handle; + char *pathfds; + int testdir; + + handle = dlopen("libpythagoras.so.0", RTLD_LAZY); + ATF_REQUIRE(handle == NULL); + + testdir = open(atf_tc_get_config_var(tc, "srcdir"), + O_RDONLY | O_DIRECTORY); + ATF_REQUIRE(testdir >= 0); + + ATF_REQUIRE(asprintf(&pathfds, "%d", testdir) > 0); + ATF_REQUIRE(rtld_set_var("LIBRARY_PATH_FDS", pathfds) == 0); + + handle = dlopen("libpythagoras.so.0", RTLD_LAZY); + ATF_REQUIRE(handle != NULL); +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, set_var_library_path_fds); + return atf_no_error(); +} From nobody Thu Apr 2 02:17:09 2026 X-Original-To: dev-commits-src-branches@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 4fmQTy0hr6z6WKK3 for ; Thu, 02 Apr 2026 02:17:10 +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 4fmQTx63Xgz3FRV for ; Thu, 02 Apr 2026 02:17:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096229; 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=32GHc2+LBzr9EXCgJA/FSi86mkRLLH2qVHQb9kpEv6Q=; b=XDNG+6HaHxmuIIQnsAy+IYoa2K0qiBT0uXnXjaqS6/GrXdRRDavFR+fJ3zUW0CegHdVYA9 j/6IbEfuulHAf7/XI/XVX29AJ4onU9LAR8GsrvlY7f7ZL3vZY7yCEHdew++eT31MQtl+4U 1+9uPROMqsZaJwhN3/YNi4j/IhZuulS2W89vWNREuAz85PyNKxOSA3gNJqxMJNGE1kIs1U dJQ5EkL4QD1zLoDk9K33su1O1HZ7DkxwnoohmT3dLSTk78W2iBOkb7uXTWFpvrjPjGZWiH Atc83a/MbWql4FqPRDG5d9ojDXRMOQEOusMTEX/CxBkv+e6o52mS344jh6m3uA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096229; a=rsa-sha256; cv=none; b=eSJ40kxjcdUWHp0MQhKkOAmAWnfcDuXpZZY8G9RNFSp2PWplf1aPq0Cu4jJ9NjogRcawpU DqYmfSwbgElhnFbMtVR83dTiRzrz8vUpFni1IseNjjVpuDvo+SxYbGBvAHFMQ/IgODBi2g WZs9r2CwNFj3Iq9XGWWnnw118cT8TUkLO1G/qbnPDwcmuSfN7lh1YcZzq8DmOZKK/NGt9H iwfRdCxTEKRHgn07r3PYRWkdkl39cuH0zEMgF6JHuu3tUBWJKiacWy5TDlbrBS8H+xv0m6 WUrKriMeiBuWWzyV1OqG079ZY7yl2Gdyw0A/X6QUslcUVFSTDCUcD+6z4bY8RQ== 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=1775096229; 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=32GHc2+LBzr9EXCgJA/FSi86mkRLLH2qVHQb9kpEv6Q=; b=MspZdiqf0EUNa08J6lBgwVdXz25ocJQU+vTKSxn8ZWJ3KMgrHM5p2JqCINfzmbJaG0+pR6 DyiqXvErq3ZUyu6QAPuMfRNmO2nBxXYcU+qFp9TCxGjDFJ2yNvyjbSioUeDpS0uxH+p05v Ez28xOukcEyl4NUUiVBDJK/FdapQrljF2AR6KA/1NqL0chpF9/H1NSGYPfSLLyGizYfJ2s JOImSd2tp0seSno8/ZzaVaJB7k3dCc8isiPr7VlyOOJQE/bCxkmeveqty1B84uyfcLDJLf G5AhZghIF5zBbDJwu/uN+eg1HvkJah99nbVQW2wWXVK+GD+8yAeASKDt9E43RQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTx5VgLzj4s for ; Thu, 02 Apr 2026 02:17:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 34092 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 60b2eb959e8c - stable/15 - rtld: check for overflow in parse_integer() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 60b2eb959e8c7584d32fb1910a9eed5bdbc1a6e3 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:09 +0000 Message-Id: <69cdd1a5.34092.3a7df156@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=60b2eb959e8c7584d32fb1910a9eed5bdbc1a6e3 commit 60b2eb959e8c7584d32fb1910a9eed5bdbc1a6e3 Author: Konstantin Belousov AuthorDate: 2026-03-29 22:45:13 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 rtld: check for overflow in parse_integer() (cherry picked from commit 7cfffe25da3fbc2db4bcf073ff2d240f84233973) --- libexec/rtld-elf/rtld.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index 0cdb09f10121..9e64d1bf8aee 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -6496,7 +6496,11 @@ parse_integer(const char *str) if (c < '0' || c > '9') return (-1); + if (n > INT_MAX / RADIX) + return (-1); n *= RADIX; + if (n > INT_MAX - (c - '0')) + return (-1); n += c - '0'; } From nobody Thu Apr 2 02:17:10 2026 X-Original-To: dev-commits-src-branches@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 4fmQTz2zNSz6WKPp for ; Thu, 02 Apr 2026 02:17:11 +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 4fmQTy6vSmz3FLW for ; Thu, 02 Apr 2026 02:17:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096231; 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=ySqaCHlrqD4fn9cfKGqazQJdqRB5HHZ+INSmXqK8rtk=; b=EJSZBPA8sAgBNQnRBNQiNJ2jczs1+6UtRTT83CDMBy0AXiHdXH275uakx6kc4KIoDZ62UD 9+PqecY8tpaQFMW4MYOJwUehaNOyGivSsnuyDnGfF8o+uuqEVLkwiB+o5ZUKRhXVwLRPjH UBi30lo8AfaOC843HjsfzXaik4rOHKiuWsDt/sEOsfV+06M/2wVF7BVMoSzzHE9CF5GMKa 2phqmg2NcB7gWCrSptiJewk6hduWWxBdNpxj04idqSe0FWqNhRIm01RsIoA84NseRA7294 p+ypAQ/uC9Gzzy74xGQKZNSS2ZSFVFMuAirP8fB9lfqf/NW/GqWMr6eLV3X+Cg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096231; a=rsa-sha256; cv=none; b=fTkFTczpUnCq/bAdOg0CdXH7H1tM2GRLb+Zf8RIWM9BnLVjfaExnQZUPJOw1xiRBtd8VIp xYohKCO7Vhr/H7djbWrPp6werR/OntpAQwv+dX8gMQac51MRPKHdxAsM4G4yuXG7cEef50 P48sWnCLZDFx1tw4gToyvI+5sQpJR1/72KmkHjExH0S0yVZjx4sMJxf6Ud+wqKxRbU6jOs eJSptgpswjjGrZC6aquMLcho0cm4WduFSCpMGjExIMHuv3DybBI6BSsBftFZMkTDQUe73N ptUhU3VxN+fbpZDFm9Nc/sFytoVdqxML90EYpCUyvs/FkpzxC5xB4Hez4lijqw== 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=1775096231; 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=ySqaCHlrqD4fn9cfKGqazQJdqRB5HHZ+INSmXqK8rtk=; b=XHhRaXo5JwddRx8h/MznQGfdI9KDFcxVg7S7kI9QinnPYloAjYfRFEV6PTbt51S1G6clvQ k9rgvtt2v/iFW+NlauhDfZELznqkjD7SdMWIXlwFzGbMxj5LTDjt6fyWwXK/75xkQlZYkv lUAU8xDA8Vl4YXBoHYcxRP8Gs2ZF7PZGxz6dIFQOLwHP1AkT5DlQtxcHl6/YDVEgMZ5dky 1LkpK2ZkzzKvFtSo7xmsVBJPGCz8/oIAMrIzcA+J8vL4/DTDY8FEQN5LZldC+Z+P5NcVvK aCriar1dHlWNDdJ4w3rR9Rc0LrmIvOCThe7ifyU63HNhphWHV6NKEx+B9Vu8Lw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTy6G6bzhqm for ; Thu, 02 Apr 2026 02:17:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 34710 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 5002c46b75f1 - stable/15 - x86: move the NUM_ISA_IRQS symbol from atpic.c into x86/isa/icu.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 5002c46b75f1c5f508d55833f307173cd807cf81 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:10 +0000 Message-Id: <69cdd1a6.34710.c2b563e@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5002c46b75f1c5f508d55833f307173cd807cf81 commit 5002c46b75f1c5f508d55833f307173cd807cf81 Author: Konstantin Belousov AuthorDate: 2026-02-27 04:32:58 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 x86: move the NUM_ISA_IRQS symbol from atpic.c into x86/isa/icu.h (cherry picked from commit 5f08cdc1fb62d157b6086b3ea844287e81e3c45d) --- sys/x86/isa/atpic.c | 2 -- sys/x86/isa/icu.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/x86/isa/atpic.c b/sys/x86/isa/atpic.c index 56566ef8d64d..0c884c5fc484 100644 --- a/sys/x86/isa/atpic.c +++ b/sys/x86/isa/atpic.c @@ -68,8 +68,6 @@ #define IMEN_MASK(ai) (IRQ_MASK((ai)->at_irq)) -#define NUM_ISA_IRQS 16 - static void atpic_init(void *dummy); inthand_t diff --git a/sys/x86/isa/icu.h b/sys/x86/isa/icu.h index ae7303c0e36e..35734750b3b1 100644 --- a/sys/x86/isa/icu.h +++ b/sys/x86/isa/icu.h @@ -71,4 +71,6 @@ void atpic_handle_intr(u_int vector, struct trapframe *frame); void atpic_startup(void); +#define NUM_ISA_IRQS 16 + #endif /* !_X86_ISA_ICU_H_ */ From nobody Thu Apr 2 02:17:11 2026 X-Original-To: dev-commits-src-branches@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 4fmQV03ldyz6WKPt for ; Thu, 02 Apr 2026 02:17:12 +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 4fmQV00BQkz3FP8 for ; Thu, 02 Apr 2026 02:17:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775096232; 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=LJ3q17TbWdRzGRqWgY7xe9sWsiJEs7Uru/+3ccUBzpw=; b=j2xXawnkgbz/otzNrrEtgokGBDTiOhWO97WkeknIPjJddaZRhcau2owWPvGFgxAIBMGELx yhn8Zl27p7AFVCr9YoXboQZEe1zwN8x4OaAucwUbDevT8mciRB4xkOCV/+N0RBzCdvOxtB K6dBjvadsgimLEZW02PHTss185rqC1S+pofA0R2v9BmaHKp7tZr7rQtT2hvAFO0QKRo3U+ +UQMH1zhYdYhGNC66rOaHn9nrSMHN48iabxSY1N4RoSAEQecvig+lXITCyBdQsF87iG13m tjBQdOq6pu8NSRysH4EVZiKvRLBFqVbvJUYfO+nzdn2uszFW54gZtktXxiwSqg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775096232; a=rsa-sha256; cv=none; b=k2qgSwqp8zf4kRurwYXU5PlK93kcjYc+EwryP7FcZxI7GuLiL0cflbXl02C1lDYdf+aZSt 5BhNbRhe6KtJO/fk+cRaLSKct9riG/d+dcofYJHhNGN0T48dLC7573iCrzZlSaLWPe0KHw S3WeY+EXcrDFnUnawtwgSUfPOFXKEmIElh5AiZE4OUq4HbjjDxmHGqL96cX/5O7ZhMkG1N e9kPVFsrEzgabrLUw801Q9WLTHSTm+6EWC5evEATITITpwXLL29IG8uJNXUQ8bz57hUg5+ RpvpVfie+nNQ0wPm3v5Mh9Pca8Bgrj0Bams61etO6F7YoagS7+yROYwD4OZI7w== 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=1775096232; 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=LJ3q17TbWdRzGRqWgY7xe9sWsiJEs7Uru/+3ccUBzpw=; b=OlT7iAldPTqbo0jcREXPcAm7hOKFEvqO9if62MdYk5VDJBI5CT4PDEUH9t2TdJ56KrKH1C 9KlfbGwn05+QqGChoJVpCF+3775XyiDsuk/0gaFJUn0rMgTQ7zwg+c1bmYffsSg12Ecv3I S3+RYP317vYnY75cuvonV2l0eteJlv+e0Iz1KWul42k9i+O26J2m7ZjeFgNXR0jo0IWgrl fV+U3kc8PT/RPVkKC9dCBN4CqSBuS+r5vE6XNAO8oQ3rISc8kvP5sJ2W3jM0L2em9TB0eE nK2KRYEbjFCBJ+yBZHRxzuAH4ZEI41vY8sZ+ifol/j8hERPxbJgZbHKir41whQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmQTz6hwczjLg for ; Thu, 02 Apr 2026 02:17:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 300e0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 02:17:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: de344ffd0ace - stable/15 - amd64 sendsig(): explicitly copy registers from trapframe to ucontext List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: de344ffd0ace0f5812f09d20fbb1767374b439ae Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 02:17:11 +0000 Message-Id: <69cdd1a7.300e0.2696e36f@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=de344ffd0ace0f5812f09d20fbb1767374b439ae commit de344ffd0ace0f5812f09d20fbb1767374b439ae Author: Konstantin Belousov AuthorDate: 2026-03-29 08:06:29 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-02 02:13:50 +0000 amd64 sendsig(): explicitly copy registers from trapframe to ucontext (cherry picked from commit 7d1285e904aa76ac821ac2a6a8eb61be598f0e88) --- 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 a4880175990f..dddf9eb59223 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); From nobody Thu Apr 2 07:59:30 2026 X-Original-To: dev-commits-src-branches@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 4fmZ4z0cFXz6XxGb for ; Thu, 02 Apr 2026 07:59:31 +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 4fmZ4z03YFz3qmX for ; Thu, 02 Apr 2026 07:59:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775116771; 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=OR9Ns5RW+gYwgNW039+xF1rVquln6aHUF/CMIwoTAnM=; b=bImcD2LoflwSj2H6aRgcv1dovd8lU+Z+yYDfoIU1rpEq8X/fqhZZUv7S/f6xjyBWciagnt hWKfJ1ci4r6+2/bFC75/tmBHX8EWFg6hw/mXuyCB0BgAs6f1dFrG7+DPoO6qVycwlNVSri kBqummJBWBEOzrKLPhS5sssKuRT0J4VeSWviwfkpUZQwriaRJDZY9YgNA7MvGKMEALgqG0 /vLfTQHqkZvbKK02MibSrjFtBgiB0R4DuuVlKK4dYgYxAtikuc1qKhg9vMcVveDqDlephh 1fhpV1XcxUExOVajeuwysFoGz+J/GpWSXxJKR41WV5qLt39adS0DKFXUy5HIhQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775116771; a=rsa-sha256; cv=none; b=wcNG5GVivKQ4qQJrOphig+f8ukYFWe75IXK9Ey36aE+h2tRiSqFB3BRC2ohpHqpj/bXR/i XiDotHrHCk8Evgapjx8Y4J55ZvfoWU+jHBguOHNxV8ebnhpDppbSRDUSb/xK2CZOYUITrv ehTI+ooQyz4d1KnwfVLy7t7QcE6dkl730EWS0SGZp06tgblBIqbL1w8nYFMzj6OKSqyVdU c5QEzZ+SYC51HlZj8BBXZU42B6RX1gur2I6z/si01qaZeRN2WiGd5HvrAoK+xdHy3lSdKg ahDbxdThpSpTSy44ztKf7ZdPz4xsZKYIBIKV/1pvbh8OiQPNPS88NlaZ1UZq3w== 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=1775116771; 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=OR9Ns5RW+gYwgNW039+xF1rVquln6aHUF/CMIwoTAnM=; b=FCfjQXnbLzi1smHVVU0VMLp+uVgi7kMoL5+wlklSxbk0AjV7N+icWNqHJGsTpEe+WuhnPq xmexgXnN+icL+q/YvI1h4kvHpzmFeOcv1lIa81HN5qe4ZfHCzVjWfTB/aMn0jEc+tG46fm iG/Ikgp5b1o4nmfC4fFZLK4BgDVqkmmbA426sLQB4Taqk7rN9riKOY1R9H/P4+IkVBqDD+ pUBNGqlnW07NQdii5B78jbiFWt3NpIz1NKDX6ENaLB3nHCdQ6Rv96nHADiXVuBYqqRuhZs cePdBqWxerrnWdHqMgIgN8JXkwYUaPM3JobwZFGvBCWj8XjErPld6SV5eoJ4aw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmZ4y6Tspzsk4 for ; Thu, 02 Apr 2026 07:59:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3060f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 07:59:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Robert Clausecker Subject: git: 81114ff7ebc1 - stable/15 - libc/amd64/strrchr.S: rewrite and fix scalar implementation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 81114ff7ebc1efbd65d071869836c76f6fded2b3 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 07:59:30 +0000 Message-Id: <69ce21e2.3060f.35b51ea4@gitrepo.freebsd.org> The branch stable/15 has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=81114ff7ebc1efbd65d071869836c76f6fded2b3 commit 81114ff7ebc1efbd65d071869836c76f6fded2b3 Author: Robert Clausecker AuthorDate: 2026-03-22 12:37:06 +0000 Commit: Robert Clausecker CommitDate: 2026-04-02 07:58:52 +0000 libc/amd64/strrchr.S: rewrite and fix scalar implementation The original scalar implementation of strrchr() had incorrect logic that failed if the character searched for was the NUL character. It was also possibly affected by the issue fixed in 3d8ef251a for strchrnul(). Rewrite the function with logic that actually works. We defer checking for the character until after we have checked for NUL. When we encounter the final NUL byte, we mask out the characters beyond the tail before checking for a match. This bug only affects users running on amd64 with ARCHLEVEL=scalar (cf. simd(7)). The default configuration is not affected. The bug was unfortunately not caught by the unit test inherited from NetBSD. An extended unit test catching the issue is proposed in D56037. PR: 293915 Reported by: safonov.paul@gmail.com Tested by: safonov.paul@gmail.com Fixes: 2ed514a220edbac6ca5ec9f40a3e0b3f2804796d See also: https://reviews.freebsd.org/D56037 MFC after: 1 week (cherry picked from commit 253f15c016ca699906f78b8e522a3f7ed675929b) (cherry picked from commit 23d6516773916d8f324bea51867b0713c476f379) --- lib/libc/amd64/string/strrchr.S | 78 ++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/lib/libc/amd64/string/strrchr.S b/lib/libc/amd64/string/strrchr.S index e397bbcd3478..a22a821a1d4d 100644 --- a/lib/libc/amd64/string/strrchr.S +++ b/lib/libc/amd64/string/strrchr.S @@ -1,5 +1,6 @@ /*- * Copyright (c) 2023 The FreeBSD Foundation + * Copyright (c) 2026 Robert Clausecker * * This software was developed by Robert Clausecker * under sponsorship from the FreeBSD Foundation. @@ -65,77 +66,50 @@ ARCHENTRY(strrchr, scalar) xor %rax, %rcx # str ^ c or %r10, %rax # ensure str != 0 before string or %r10, %rcx # ensure str^c != 0 before string - bswap %rcx # in reverse order, to find last match - mov %rdi, %r10 # location of initial mismatch (if any) - xor %r11, %r11 # initial mismatch (none) + xor %r11, %r11 # vector of last match (0 -> no match) add $8, %rdi # advance to next iteration lea (%rax, %r8, 1), %rdx # str - 0x01..01 not %rax # ~str and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits - jnz 1f # end of string? - - lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 - not %rcx # ~(str ^ c) - and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - mov %rcx, %r11 # remember mismatch in head - jmp 0f - - /* main loop unrolled twice */ - ALIGN_TEXT -3: lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 - not %rcx # ~(str ^ c) - and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - lea -8(%rdi), %rdx - cmovnz %rdx, %r10 # remember location of current mismatch - cmovnz %rcx, %r11 - -0: mov (%rdi), %rax # str - mov %rsi, %rcx - xor %rax, %rcx # str ^ c - bswap %rcx # in reverse order, to find last match - lea (%rax, %r8, 1), %rdx # str - 0x01..01 - not %rax # ~str - and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits + and %r9, %rax # NUL bytes in str, not including junk bits jnz 2f # end of string? + /* main loop */ + ALIGN_TEXT +3: mov (%rdi), %rax # str + bswap %rcx # (str ^ c) in reverse order, to find last match lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 not %rcx # ~(str ^ c) and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - cmovnz %rdi, %r10 # remember location of current mismatch - cmovnz %rcx, %r11 + and %r9, %rcx # matches in str, not including junk bits + cmovnz %rdi, %r10 # if match found, update match vector + cmovnz %rcx, %r11 # ... and match pointer - mov 8(%rdi), %rax # str - add $16, %rdi + add $8, %rdi # advance to next iteration mov %rsi, %rcx xor %rax, %rcx # str ^ c - bswap %rcx lea (%rax, %r8, 1), %rdx # str - 0x01..01 not %rax # ~str and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits + and %r9, %rax # NUL bytes in str, not including junk bits jz 3b # end of string? - /* NUL found */ -1: sub $8, %rdi # undo advance past buffer -2: lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 + /* NUL found, check for match in tail */ +2: mov %rax, %rdx + neg %rax + xor %rdx, %rax # all bytes behind the NUL byte + or %rax, %rcx # (str ^ c) without matches behind NUL byte + bswap %rcx # (src ^ c) in reverse order, to find last match + lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 not %rcx # ~(str ^ c) and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - lea -1(%rax), %rdx - xor %rdx, %rax # mask of bytes in the string - bswap %rdx # in reverse order - and %rdx, %rcx # c found in the tail? - cmovnz %rdi, %r10 - cmovnz %rcx, %r11 - bswap %r11 # unreverse byte order - bsr %r11, %rcx # last location of c in (R10) - shr $3, %rcx # as byte offset - lea (%r10, %rcx, 1), %rax # pointer to match + and %r9, %rcx # matches in str, not including junk bits + cmovnz %rdi, %r10 # if match found, update match vector + cmovnz %rcx, %r11 # ... and match pointer + tzcnt %r11, %rcx # location of last match + lea -1(%r10), %rax # address of last character in vector + shr $3, %ecx # as byte offset + sub %rcx, %rax # subtract character offset test %r11, %r11 # was there actually a match? cmovz %r11, %rax # if not, return null pointer ret From nobody Thu Apr 2 08:01:07 2026 X-Original-To: dev-commits-src-branches@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 4fmZ6r35TKz6XxQK for ; Thu, 02 Apr 2026 08:01:08 +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 4fmZ6q6gtMz3r4T for ; Thu, 02 Apr 2026 08:01:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775116867; 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=FthFWob7cDXE6Yc5gfvQKl2C2ArAze3nhR82PJQF3ZA=; b=YRjkGX7ADYvlxqOMCi6GQ924G49cNQYYRvDbuGLvwdUFsWDEvNbW+k5qzFUxnK83zTiuOx lIK5lPnXeBcYu5vER2PrWIPHQkGiG58DCVnGe7b1dHqt4e3lcfxD8YY4pvaqOLrkv3KcBy ofuYZ1tzMdrrTwsnVVmB50GJEKNuiN87WOC1w+AMfWC0CFnNh2qe+PZdM0nCXIuFva/7He kghteYs4a8FScH8F0ihCeF8uH08N21Aw8ihhAUsro4tiKCMs8WWNwHP59UC4pwGIiYTZ0c WvLQo213XttODYk2Xtd8yXz/2CB3FUl6org50N4eSNCiKiYUXeW4FTXeIByrVA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775116867; a=rsa-sha256; cv=none; b=Zkw8YpRBOL+OwXUZwePFaoQX3haI75gYScY5IEtD4qLEyIzQAwQIpo+edNJPODF/GZa8qC 7q8GKnHJ2w5APWbReqVmtvudWp5YaSkWeBdUL8tGwHkBKxNSbTyZ93nD1ZP0ydaQ+wjT8X q/D9xmnFaW8UvPduiNHd3DjYy8BRmfET5DD2F+x21Y014dsOs1s3XHWZPK/Tavb9/SHZvP lBeS8xdM5UcyWya4giHeaEt4/ozqau/dpIOaRmSx4JM57fg3YHaEmKi9N1m+vfK0ECBJr2 1twWAX9C/sgxz2keYP/ypmc8c1aelqCOyTEwiFcDxfCtOo3qbZZed3evnKpBMA== 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=1775116867; 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=FthFWob7cDXE6Yc5gfvQKl2C2ArAze3nhR82PJQF3ZA=; b=rSy2ZU2vxxYcytNJ4XaMvcoXItVetn7+WgEnuK65PzIYFurtX4UQr+bexpDDIBgvUriixx wl0qt4tMxBb+xOqgQNZ6X+6a8KLMmR9cXguo9gOFzbnTAEpj/iBQE2vwJ2gZ7UKyMYh+lV dQywh+i0BfVX1eACsLHahiZLrYOq4Ot5neMXJWGMR6BNVW//8loAG/dINevAiJOrcteC65 PlbW/SKGroJNk7qSfp9hvaqWQx26ileq+CugZWKK9MwsF2cBv8n/SPEPgRBoFEshE1ZQa7 WgwMXAk42oqTTdAjWsV6//9nLeEZixoBrgwtPXXmYUVVe9kv/ZkU46bqL70GMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmZ6q5bM2zsk9 for ; Thu, 02 Apr 2026 08:01:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 312cf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 08:01:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Robert Clausecker Subject: git: ed71162cc527 - stable/14 - libc/amd64/strrchr.S: rewrite and fix scalar implementation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ed71162cc527d7f6bf5bfe7258f5e1a5cdb4cc71 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 08:01:07 +0000 Message-Id: <69ce2243.312cf.796afb33@gitrepo.freebsd.org> The branch stable/14 has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=ed71162cc527d7f6bf5bfe7258f5e1a5cdb4cc71 commit ed71162cc527d7f6bf5bfe7258f5e1a5cdb4cc71 Author: Robert Clausecker AuthorDate: 2026-03-22 12:37:06 +0000 Commit: Robert Clausecker CommitDate: 2026-04-02 08:00:47 +0000 libc/amd64/strrchr.S: rewrite and fix scalar implementation The original scalar implementation of strrchr() had incorrect logic that failed if the character searched for was the NUL character. It was also possibly affected by the issue fixed in 3d8ef251a for strchrnul(). Rewrite the function with logic that actually works. We defer checking for the character until after we have checked for NUL. When we encounter the final NUL byte, we mask out the characters beyond the tail before checking for a match. This bug only affects users running on amd64 with ARCHLEVEL=scalar (cf. simd(7)). The default configuration is not affected. The bug was unfortunately not caught by the unit test inherited from NetBSD. An extended unit test catching the issue is proposed in D56037. PR: 293915 Reported by: safonov.paul@gmail.com Tested by: safonov.paul@gmail.com Fixes: 2ed514a220edbac6ca5ec9f40a3e0b3f2804796d See also: https://reviews.freebsd.org/D56037 MFC after: 1 week (cherry picked from commit 253f15c016ca699906f78b8e522a3f7ed675929b) (cherry picked from commit 23d6516773916d8f324bea51867b0713c476f379) --- lib/libc/amd64/string/strrchr.S | 78 ++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/lib/libc/amd64/string/strrchr.S b/lib/libc/amd64/string/strrchr.S index e397bbcd3478..a22a821a1d4d 100644 --- a/lib/libc/amd64/string/strrchr.S +++ b/lib/libc/amd64/string/strrchr.S @@ -1,5 +1,6 @@ /*- * Copyright (c) 2023 The FreeBSD Foundation + * Copyright (c) 2026 Robert Clausecker * * This software was developed by Robert Clausecker * under sponsorship from the FreeBSD Foundation. @@ -65,77 +66,50 @@ ARCHENTRY(strrchr, scalar) xor %rax, %rcx # str ^ c or %r10, %rax # ensure str != 0 before string or %r10, %rcx # ensure str^c != 0 before string - bswap %rcx # in reverse order, to find last match - mov %rdi, %r10 # location of initial mismatch (if any) - xor %r11, %r11 # initial mismatch (none) + xor %r11, %r11 # vector of last match (0 -> no match) add $8, %rdi # advance to next iteration lea (%rax, %r8, 1), %rdx # str - 0x01..01 not %rax # ~str and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits - jnz 1f # end of string? - - lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 - not %rcx # ~(str ^ c) - and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - mov %rcx, %r11 # remember mismatch in head - jmp 0f - - /* main loop unrolled twice */ - ALIGN_TEXT -3: lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 - not %rcx # ~(str ^ c) - and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - lea -8(%rdi), %rdx - cmovnz %rdx, %r10 # remember location of current mismatch - cmovnz %rcx, %r11 - -0: mov (%rdi), %rax # str - mov %rsi, %rcx - xor %rax, %rcx # str ^ c - bswap %rcx # in reverse order, to find last match - lea (%rax, %r8, 1), %rdx # str - 0x01..01 - not %rax # ~str - and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits + and %r9, %rax # NUL bytes in str, not including junk bits jnz 2f # end of string? + /* main loop */ + ALIGN_TEXT +3: mov (%rdi), %rax # str + bswap %rcx # (str ^ c) in reverse order, to find last match lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 not %rcx # ~(str ^ c) and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - cmovnz %rdi, %r10 # remember location of current mismatch - cmovnz %rcx, %r11 + and %r9, %rcx # matches in str, not including junk bits + cmovnz %rdi, %r10 # if match found, update match vector + cmovnz %rcx, %r11 # ... and match pointer - mov 8(%rdi), %rax # str - add $16, %rdi + add $8, %rdi # advance to next iteration mov %rsi, %rcx xor %rax, %rcx # str ^ c - bswap %rcx lea (%rax, %r8, 1), %rdx # str - 0x01..01 not %rax # ~str and %rdx, %rax # (str - 0x01..01) & ~str - and %r9, %rax # not including junk bits + and %r9, %rax # NUL bytes in str, not including junk bits jz 3b # end of string? - /* NUL found */ -1: sub $8, %rdi # undo advance past buffer -2: lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 + /* NUL found, check for match in tail */ +2: mov %rax, %rdx + neg %rax + xor %rdx, %rax # all bytes behind the NUL byte + or %rax, %rcx # (str ^ c) without matches behind NUL byte + bswap %rcx # (src ^ c) in reverse order, to find last match + lea (%rcx, %r8, 1), %rdx # (str ^ c) - 0x01..01 not %rcx # ~(str ^ c) and %rdx, %rcx # ((str ^ c - 0x01..01) & ~(str ^ c) - and %r9, %rcx # not including junk bits - lea -1(%rax), %rdx - xor %rdx, %rax # mask of bytes in the string - bswap %rdx # in reverse order - and %rdx, %rcx # c found in the tail? - cmovnz %rdi, %r10 - cmovnz %rcx, %r11 - bswap %r11 # unreverse byte order - bsr %r11, %rcx # last location of c in (R10) - shr $3, %rcx # as byte offset - lea (%r10, %rcx, 1), %rax # pointer to match + and %r9, %rcx # matches in str, not including junk bits + cmovnz %rdi, %r10 # if match found, update match vector + cmovnz %rcx, %r11 # ... and match pointer + tzcnt %r11, %rcx # location of last match + lea -1(%r10), %rax # address of last character in vector + shr $3, %ecx # as byte offset + sub %rcx, %rax # subtract character offset test %r11, %r11 # was there actually a match? cmovz %r11, %rax # if not, return null pointer ret From nobody Thu Apr 2 09:48:39 2026 X-Original-To: dev-commits-src-branches@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 4fmcVv3FRyz6Y7S1 for ; Thu, 02 Apr 2026 09:48:39 +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 4fmcVv2Dlxz42HM for ; Thu, 02 Apr 2026 09:48:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123319; 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=O3424bcuTNlWEGhDGtb2bwxUVWTv5kN0ASztKikAVpA=; b=YPMMOZO1QXUxKYYi7Os0VRfj7ggtfNSKxACAhSSPkpV1CA757+Lkcz1Y2oH7JEgA3yQck5 23fCSmtC6nhjwer1+fymtuv9t3BJHB9jz/xGYSSey/JyJw4Wlg68IWSptXM6woFuknYgQ7 zoI0HqkgvskP63cFsC68OQ67IXpcOOWXCKZi9S8YaFadjuvVXmauP888MFL5m48WhyFQJ6 yBLeKJfaCmMNfvduwN/fhUgGwhV8LM8fs76Hy/4QTbNpeHFND5GvA+Bs6QdttwPfxgTDeQ InNqzEOKJmEeMbcLv+aoQ8B3StW7/8ALY1VoAknMbjwaCuajTBcbhaIO+z5jww== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123319; a=rsa-sha256; cv=none; b=IS/IhjLSVLxVnnA0YrlefVdQTiAcSvpybN+VZTs7ae7zEyHwXM0PVov+lnhRhKXyIyWi9h gBz7AVRjvRtLRUNAhdqZC4IkBYXm/ezqI7KVVAYxxFK4IlZsfSAa5/4dOT95iNeDIfCMYg 9AdX9bmSCBI7tipaSDzHrQzx/4ngzMJdV2i+xZIrxON5tgJaztvs3Il50g0ovo8PrAL+FR Yy4Dlgu85WdZj3bqlRY+VlCzqjhjcPpm/GkrZmFmSxR91jxneOALqPnG4AlGk3DCKom1NS BRnwun2IM7ipnOX00/Nv2NolwooOi9QFBtj2T25+b+cg0Qa6ZG4q9Z0Bxtpb9g== 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=1775123319; 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=O3424bcuTNlWEGhDGtb2bwxUVWTv5kN0ASztKikAVpA=; b=g6kewUeaHgloWLN3xzeLtFJgF5/rppRzzF9VRCtLM0/JMiZX0MIG63AbXvzoI4ZQ0ZAIRW feJtpQg7wVn1zBxnM7EE4GAmxd6sP5O+hwF9z0H6ce++7k7o9Tq7xBJLP5QpGEH65Cuxx9 j6VrrgbV/KbrPgT6AOpcGC/6Z3d2lL2/26SDlEZRbKe2r7xDW4/OeLmP3LJGKL3nFWSMj+ NL8Ytw5yrjysEPpKkXkM2g/JALhFz16/KDm0SpuiMO9MR1NikUydm+rbLFC6eJ/EnyeRF+ NU47Uaztn+3ezzCzUJBfYFCkQUIZQ1MnRRAD6l9ZQHOOddwj9bJkUamUaz3DTA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcVv1bm1zx8H for ; Thu, 02 Apr 2026 09:48:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c0db by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 0d2454f0cb8a - stable/15 - file: Parse some UFS2 flags List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0d2454f0cb8a6a826e1bdbcc38f4242738ca71d1 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:39 +0000 Message-Id: <69ce3b77.3c0db.ab9cbbe@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=0d2454f0cb8a6a826e1bdbcc38f4242738ca71d1 commit 0d2454f0cb8a6a826e1bdbcc38f4242738ca71d1 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 11:02:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:50 +0000 file: Parse some UFS2 flags This allows libmagic to recognize the FS_DOSOFTDEP, FS_SUJ, FS_GJOURNAL, FS_ACLS, and FS_NFS4ACLS flags on a UFS2 file system. Accepted upstream as 482259e5e952. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56010 (cherry picked from commit fa03f93e8829a7689101303fbe9fb06654ca14ed) --- contrib/file/magic/Magdir/filesystems | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/file/magic/Magdir/filesystems b/contrib/file/magic/Magdir/filesystems index a15e5e74d971..78e9a31bd0e7 100644 --- a/contrib/file/magic/Magdir/filesystems +++ b/contrib/file/magic/Magdir/filesystems @@ -1640,6 +1640,11 @@ >1112 lelong x pending inodes to free %d, >712 lequad x system-wide uuid %0llx, >60 lelong x minimum percentage of free blocks %d, +>1312 lelong&0xa 0x2 soft updates, +>1312 lelong&0xa 0xa soft updates journaling, +>1312 lelong&0x40 0x40 GEOM journaling, +>1312 lelong&0x10 0x10 POSIX.1e ACLs, +>1312 lelong&0x100 0x100 NFSv4 ACLs, >128 lelong 0 TIME optimization >128 lelong 1 SPACE optimization From nobody Thu Apr 2 09:48:40 2026 X-Original-To: dev-commits-src-branches@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 4fmcVw65Ydz6Y7XN for ; Thu, 02 Apr 2026 09:48:40 +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 4fmcVw3ljnz424T for ; Thu, 02 Apr 2026 09:48:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vcMqBLJmmYFE8ZRjlGAm0ZCqUcS5IPNVclM/umGaJi0=; b=P7ib5WEr+US+NArsamJ+bIuVgAsuGJznWIv8NtMZfZTV3chvBXJgFFnXyyNQ+9oxnwpSHt zpZb7aO5u01HKtDfx2zEvZbiaa5SmSnN+i4PK0oSS3OrmTZGPZZXDbAajPM6BYet5o+uLr HJp7ot1hLiWRGPPzabeRe2373gsDYKWHt2o4apLQqiFXXkcPsFozp9OYZ3NStZPBa4dig0 tu12yan0FYvEGZkb/T+drGesQjp4ihJuSwpaCJOuvmb2mmnCHyZ0RyrXJmK3vrM7VgYiPl 2VJBF8fFWNQfjpTrHjdwR6TSif5gvxiARFyWZUMjQ7gcPQEiLO8CAGPPdsARwA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123320; a=rsa-sha256; cv=none; b=l71/z2eiF2zCJPQYBOaut6EudZxfBBj9HnZt6Eo6LmA8smIiAQ/PIrYhkbKGGm+R5LB/go 9U2ku2p3oBRXCN9yBZGPuVIWXnI1RcZngSTVT34E3bJ2bHCnsICmmBF2FbX9XvcheXzzuM Fugmed7NEZDyuOhEciF2OQ5iUhHWdglDKNnAK+kHJBLzqndARJDeBwCETTvKtokZd7bTvC dT6HMjgHv2cz3Q95sh2TGpX4fEuBKYwUg5+MUWvpWqytVnod/xZzfWWX7PvTUvgTVeKFsR LL3WH6cZEQUA2yBiXzE0KYAiT6TCbsVKNGzaLZnyJ5Ay5bpr7NN3tA1dH2gJHg== 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=1775123320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vcMqBLJmmYFE8ZRjlGAm0ZCqUcS5IPNVclM/umGaJi0=; b=XG76VvC7AOszZMSr4gY/hH/3IGOUjM4U6820B8EipIP3bu9xErpwoem/oEQl6qf4+GjBaG UIWZjDiq5vAabXVNLM+SQ6n/E911Xq+OLwVtQWAwSWr/krCR1phty7rQ3+HWFYlAdwVxUs GK6R229iRaMjGoMuObzhzal+bUqmGnbq6coLL+sj6jz8a+lOJi9tuWOOw1HB9nhSTo+QsI 2Y5oZxUm21e8QEhORkHhgzzcgH9MgAYOW+MRBrwkJoKND2RoaTeBz7B/pSC1NtZ9YRJ2ej k+cd19Y0Jr7M4sykD3j0GN9IoEQDoeuXhji/6bXTVBX7IrudeQegYa5viwoZJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcVw2WYhzwLZ for ; Thu, 02 Apr 2026 09:48:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c05f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Marc Espie From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: b1953338a34e - stable/15 - m4: Stop abbreviating builtin names List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: b1953338a34e9ff18d3ec810fcf36afda6913c83 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:40 +0000 Message-Id: <69ce3b78.3c05f.460b24a2@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=b1953338a34e9ff18d3ec810fcf36afda6913c83 commit b1953338a34e9ff18d3ec810fcf36afda6913c83 Author: Marc Espie AuthorDate: 2026-03-25 00:41:18 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:50 +0000 m4: Stop abbreviating builtin names * Stop abbreviating macro names half-randomly to 8 chars, this is no longer 1990. * Likewise for function names (in particular use doindex for a function that is notably different from the classic index function). * Rename a few things for more fidelity: eval is the builtin name, not expr and your maketemp/mkstemp conform to mkstemp semantics for better security. * Rewrap a few comments that were ludicrously short. No functional changes except improved accuracy of some error messages. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55793 (cherry picked from commit f8f6f1cbd576ab5f15cef178cc05251365652f74) --- usr.bin/m4/eval.c | 184 ++++++++++++++++++++++++---------------------------- usr.bin/m4/extern.h | 2 +- usr.bin/m4/look.c | 6 +- usr.bin/m4/main.c | 65 ++++++++++--------- usr.bin/m4/mdef.h | 88 ++++++++++++------------- usr.bin/m4/misc.c | 2 +- 6 files changed, 168 insertions(+), 179 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index 0963a61a2914..71be6f305dee 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -60,17 +60,17 @@ static void dodefn(const char *); static void dopushdef(const char *, const char *); -static void dodump(const char *[], int); +static void dodumpdef(const char *[], int); static void dotrace(const char *[], int, int); static void doifelse(const char *[], int); -static int doincl(const char *); +static int doinclude(const char *); static int dopaste(const char *); -static void dochq(const char *[], int); -static void dochc(const char *[], int); +static void dochangequote(const char *[], int); +static void dochangecom(const char *[], int); static void dom4wrap(const char *); -static void dodiv(int); -static void doundiv(const char *[], int); -static void dosub(const char *[], int); +static void dodivert(int); +static void doundivert(const char *[], int); +static void dosubstr(const char *[], int); static void map(char *, const char *, const char *, const char *); static const char *handledash(char *, char *, const char *); static void expand_builtin(const char *[], int, int); @@ -108,7 +108,7 @@ eval(const char *argv[], int argc, int td, int is_traced) m4errx(1, "expanding recursive definition for %s.", argv[1]); if (is_traced) mark = trace(argv, argc, infile+ilevel); - if (td == MACRTYPE) + if (td == MACROTYPE) expand_macro(argv, argc); else expand_builtin(argv, argc, td); @@ -149,18 +149,18 @@ expand_builtin(const char *argv[], int argc, int td) switch (td & TYPEMASK) { - case DEFITYPE: + case DEFINETYPE: if (argc > 2) dodefine(argv[2], (argc > 3) ? argv[3] : null); break; - case PUSDTYPE: + case PUSHDEFTYPE: if (argc > 2) dopushdef(argv[2], (argc > 3) ? argv[3] : null); break; - case DUMPTYPE: - dodump(argv, argc); + case DUMPDEFTYPE: + dodumpdef(argv, argc); break; case TRACEONTYPE: @@ -171,10 +171,9 @@ expand_builtin(const char *argv[], int argc, int td) dotrace(argv, argc, 0); break; - case EXPRTYPE: + case EVALTYPE: /* - * doexpr - evaluate arithmetic - * expression + * doeval - evaluate arithmetic expression */ { int base = 10; @@ -184,14 +183,14 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 3 && *argv[3] != '\0') { base = strtonum(argv[3], 2, 36, &errstr); if (errstr) { - m4errx(1, "expr: base is %s: %s.", + m4errx(1, "eval: base is %s: %s.", errstr, argv[3]); } } if (argc > 4) { mindigits = strtonum(argv[4], 0, INT_MAX, &errstr); if (errstr) { - m4errx(1, "expr: mindigits is %s: %s.", + m4errx(1, "eval: mindigits is %s: %s.", errstr, argv[4]); } } @@ -200,15 +199,14 @@ expand_builtin(const char *argv[], int argc, int td) break; } - case IFELTYPE: + case IFELSETYPE: doifelse(argv, argc); break; - case IFDFTYPE: + case IFDEFTYPE: /* - * doifdef - select one of two - * alternatives based on the existence of - * another definition + * doifdef - select one of two alternatives based + * on the existence of another definition */ if (argc > 3) { if (lookup_macro_definition(argv[2]) != NULL) @@ -218,18 +216,16 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case LENGTYPE: + case LENTYPE: /* - * dolen - find the length of the - * argument + * dolen - find the length of the argument */ pbnum((argc > 2) ? strlen(argv[2]) : 0); break; case INCRTYPE: /* - * doincr - increment the value of the - * argument + * doincr - increment the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX-1, &errstr); @@ -242,8 +238,7 @@ expand_builtin(const char *argv[], int argc, int td) case DECRTYPE: /* - * dodecr - decrement the value of the - * argument + * dodecr - decrement the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN+1, INT_MAX, &errstr); @@ -254,9 +249,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSCTYPE: + case SYSCMDTYPE: /* - * dosys - execute system command + * dosyscmd - execute system command */ if (argc > 2) { fflush(stdout); @@ -264,10 +259,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSVTYPE: + case SYSVALTYPE: /* - * dosysval - return value of the last - * system call. + * dosysval - return value of the last system call. * */ pbnum(sysval); @@ -277,9 +271,9 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 2) doesyscmd(argv[2]); break; - case INCLTYPE: + case INCLUDETYPE: if (argc > 2) { - if (!doincl(argv[2])) { + if (!doinclude(argv[2])) { if (mimic_gnu) { warn("%s at line %lu: include(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); @@ -295,19 +289,20 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SINCTYPE: + case SINCLUDETYPE: + /* like include, but don't error out if file not found */ if (argc > 2) - (void) doincl(argv[2]); + (void) doinclude(argv[2]); break; #ifdef EXTENDED - case PASTTYPE: + case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; - case SPASTYPE: + case SPASTETYPE: if (argc > 2) (void) dopaste(argv[2]); break; @@ -315,28 +310,27 @@ expand_builtin(const char *argv[], int argc, int td) doformat(argv, argc); break; #endif - case CHNQTYPE: - dochq(argv, ac); + case CHANGEQUOTETYPE: + dochangequote(argv, ac); break; - case CHNCTYPE: - dochc(argv, argc); + case CHANGECOMTYPE: + dochangecom(argv, argc); break; - case SUBSTYPE: + case SUBSTRTYPE: /* - * dosub - select substring + * dosubstr - select substring * */ if (argc > 3) - dosub(argv, argc); + dosubstr(argv, argc); break; - case SHIFTYPE: + case SHIFTTYPE: /* - * doshift - push back all arguments - * except the first one (i.e. skip - * argv[2]) + * doshift - push back all arguments except the first one + * (i.e. skip argv[2]) */ if (argc > 3) { for (n = argc - 1; n > 3; n--) { @@ -351,14 +345,14 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DIVRTYPE: + case DIVERTTYPE: if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX, &errstr); if (errstr) m4errx(1, "divert: argument is %s: %s.", errstr, argv[2]); if (n != 0) { - dodiv(n); + dodivert(n); break; } } @@ -366,42 +360,40 @@ expand_builtin(const char *argv[], int argc, int td) oindex = 0; break; - case UNDVTYPE: - doundiv(argv, argc); + case UNDIVERTTYPE: + doundivert(argv, argc); break; - case DIVNTYPE: + case DIVNUMTYPE: /* - * dodivnum - return the number of - * current output diversion + * dodivnum - return the number of current output diversion */ pbnum(oindex); break; - case UNDFTYPE: + case UNDEFINETYPE: /* - * doundefine - undefine a previously - * defined macro(s) or m4 keyword(s). + * doundefine - undefine a previously defined macro(s) or m4 + * keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_undefine(argv[n]); break; - case POPDTYPE: + case POPDEFTYPE: /* - * dopopdef - remove the topmost - * definitions of macro(s) or m4 - * keyword(s). + * dopopdef - remove the topmost definitions of macro(s) + * or m4 keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_popdef(argv[n]); break; - case MKTMTYPE: + case MKSTEMPTYPE: /* - * dotemp - create a temporary file + * domkstemp - safely create a temporary file */ if (argc > 2) { int fd; @@ -420,11 +412,10 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case TRNLTYPE: + case TRANSLITTYPE: /* - * dotranslit - replace all characters in - * the source string that appears in the - * "from" string with the corresponding + * dotranslit - replace all characters in the source string + * that appear in the "from" string with the corresponding * characters in the "to" string. */ if (argc > 3) { @@ -441,19 +432,17 @@ expand_builtin(const char *argv[], int argc, int td) pbstr(argv[2]); break; - case INDXTYPE: + case INDEXTYPE: /* - * doindex - find the index of the second - * argument string in the first argument - * string. -1 if not present. + * doindex - find the index of the second argument string + * in the first argument string. -1 if not present. */ - pbnum((argc > 3) ? indx(argv[2], argv[3]) : -1); + pbnum((argc > 3) ? doindex(argv[2], argv[3]) : -1); break; - case ERRPTYPE: + case ERRPRINTTYPE: /* - * doerrp - print the arguments to stderr - * file + * doerrprint - print the arguments to stderr */ if (argc > 2) { for (n = 2; n < argc; n++) @@ -462,16 +451,15 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DNLNTYPE: + case DNLTYPE: /* - * dodnl - eat-up-to and including - * newline + * dodnl - eat-up-to and including newline */ while ((c = gpbc()) != '\n' && c != EOF) ; break; - case M4WRTYPE: + case M4WRAPTYPE: /* * dom4wrap - set up for * wrap-up/wind-down activity @@ -480,9 +468,9 @@ expand_builtin(const char *argv[], int argc, int td) dom4wrap(argv[2]); break; - case EXITTYPE: + case M4EXITTYPE: /* - * doexit - immediate exit from m4. + * dom4exit - immediate exit from m4. */ killdiv(); exit((argc > 2) ? atoi(argv[2]) : 0); @@ -504,7 +492,7 @@ expand_builtin(const char *argv[], int argc, int td) dobuiltin(argv, argc); break; - case PATSTYPE: + case PATSUBSTTYPE: if (argc > 2) dopatsubst(argv, argc); break; @@ -625,7 +613,7 @@ dodefn(const char *name) struct macro_definition *p; if ((p = lookup_macro_definition(name)) != NULL) { - if ((p->type & TYPEMASK) == MACRTYPE) { + if ((p->type & TYPEMASK) == MACROTYPE) { pbstr(rquote); pbstr(p->defn); pbstr(lquote); @@ -661,7 +649,7 @@ dump_one_def(const char *name, struct macro_definition *p) if (!traceout) traceout = stderr; if (mimic_gnu) { - if ((p->type & TYPEMASK) == MACRTYPE) + if ((p->type & TYPEMASK) == MACROTYPE) fprintf(traceout, "%s:\t%s\n", name, p->defn); else { fprintf(traceout, "%s:\t<%s>\n", name, p->defn); @@ -676,7 +664,7 @@ dump_one_def(const char *name, struct macro_definition *p) * hash table is dumped. */ static void -dodump(const char *argv[], int argc) +dodumpdef(const char *argv[], int argc) { int n; struct macro_definition *p; @@ -728,7 +716,7 @@ doifelse(const char *argv[], int argc) * doinclude - include a given file. */ static int -doincl(const char *ifile) +doinclude(const char *ifile) { if (ilevel + 1 == MAXINP) m4errx(1, "too many include files."); @@ -765,10 +753,10 @@ dopaste(const char *pfile) #endif /* - * dochq - change quote characters + * dochangequote - change quote characters */ static void -dochq(const char *argv[], int ac) +dochangequote(const char *argv[], int ac) { if (ac == 2) { lquote[0] = LQUOTE; lquote[1] = EOS; @@ -784,10 +772,10 @@ dochq(const char *argv[], int ac) } /* - * dochc - change comment characters + * dochangecom - change comment characters */ static void -dochc(const char *argv[], int argc) +dochangecom(const char *argv[], int argc) { /* XXX Note that there is no difference between no argument and a single * empty argument. @@ -826,7 +814,7 @@ dom4wrap(const char *text) * dodivert - divert the output to a temporary file */ static void -dodiv(int n) +dodivert(int n) { int fd; @@ -856,7 +844,7 @@ dodiv(int n) * other outputs, in numerical order. */ static void -doundiv(const char *argv[], int argc) +doundivert(const char *argv[], int argc) { int ind; int n; @@ -881,10 +869,10 @@ doundiv(const char *argv[], int argc) } /* - * dosub - select substring + * dosubstr - select substring */ static void -dosub(const char *argv[], int argc) +dosubstr(const char *argv[], int argc) { const char *ap, *fc, *k; int nc; diff --git a/usr.bin/m4/extern.h b/usr.bin/m4/extern.h index 94eb66314bf4..a411cb6d5891 100644 --- a/usr.bin/m4/extern.h +++ b/usr.bin/m4/extern.h @@ -95,7 +95,7 @@ extern int exit_code; extern void chrsave(int); extern char *compute_prevep(void); extern void getdiv(int); -extern ptrdiff_t indx(const char *, const char *); +extern ptrdiff_t doindex(const char *, const char *); extern void initspaces(void); extern void killdiv(void); extern void onintr(int); diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index d7ad94b18bd0..a7e6d87b0494 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -127,7 +127,7 @@ setup_definition(struct macro_definition *d, const char *defn, const char *name) d->defn = __DECONST(char *, null); else d->defn = xstrdup(defn); - d->type = MACRTYPE; + d->type = MACROTYPE; } if (STREQ(name, defn)) d->type |= RECDEF; @@ -146,7 +146,7 @@ create_entry(const char *name) n = ohash_create_entry(¯o_info, name, &end); ohash_insert(¯os, i, n); n->trace_flags = FLAG_NO_TRACE; - n->builtin_type = MACRTYPE; + n->builtin_type = MACROTYPE; n->d = NULL; } return n; @@ -271,7 +271,7 @@ macro_getbuiltin(const char *name) ndptr p; p = lookup(name); - if (p == NULL || p->builtin_type == MACRTYPE) + if (p == NULL || p->builtin_type == MACROTYPE) return NULL; else return p; diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index d68069cb10a8..6e4e79b2a414 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -105,53 +105,54 @@ struct keyblk { }; static struct keyblk keywrds[] = { /* m4 keywords to be installed */ - { "include", INCLTYPE }, - { "sinclude", SINCTYPE }, - { "define", DEFITYPE }, + { "include", INCLUDETYPE }, + { "sinclude", SINCLUDETYPE }, + { "define", DEFINETYPE }, { "defn", DEFNTYPE }, - { "divert", DIVRTYPE | NOARGS }, - { "expr", EXPRTYPE }, - { "eval", EXPRTYPE }, - { "substr", SUBSTYPE }, - { "ifelse", IFELTYPE }, - { "ifdef", IFDFTYPE }, - { "len", LENGTYPE }, + { "divert", DIVERTTYPE | NOARGS }, + { "eval", EVALTYPE }, + { "expr", EVALTYPE }, + { "substr", SUBSTRTYPE }, + { "ifelse", IFELSETYPE }, + { "ifdef", IFDEFTYPE }, + { "len", LENTYPE }, { "incr", INCRTYPE }, { "decr", DECRTYPE }, - { "dnl", DNLNTYPE | NOARGS }, - { "changequote", CHNQTYPE | NOARGS }, - { "changecom", CHNCTYPE | NOARGS }, - { "index", INDXTYPE }, + { "dnl", DNLTYPE | NOARGS }, + { "changequote", CHANGEQUOTETYPE | NOARGS }, + { "changecom", CHANGECOMTYPE | NOARGS }, + { "index", INDEXTYPE }, #ifdef EXTENDED - { "paste", PASTTYPE }, - { "spaste", SPASTYPE }, + { "paste", PASTETYPE }, + { "spaste", SPASTETYPE }, /* Newer extensions, needed to handle gnu-m4 scripts */ { "indir", INDIRTYPE}, { "builtin", BUILTINTYPE}, - { "patsubst", PATSTYPE}, + { "patsubst", PATSUBSTTYPE}, { "regexp", REGEXPTYPE}, { "esyscmd", ESYSCMDTYPE}, { "__file__", FILENAMETYPE | NOARGS}, { "__line__", LINETYPE | NOARGS}, #endif - { "popdef", POPDTYPE }, - { "pushdef", PUSDTYPE }, - { "dumpdef", DUMPTYPE | NOARGS }, - { "shift", SHIFTYPE | NOARGS }, - { "translit", TRNLTYPE }, - { "undefine", UNDFTYPE }, - { "undivert", UNDVTYPE | NOARGS }, - { "divnum", DIVNTYPE | NOARGS }, - { "maketemp", MKTMTYPE }, - { "mkstemp", MKTMTYPE }, - { "errprint", ERRPTYPE | NOARGS }, - { "m4wrap", M4WRTYPE | NOARGS }, - { "m4exit", EXITTYPE | NOARGS }, - { "syscmd", SYSCTYPE }, - { "sysval", SYSVTYPE | NOARGS }, + { "popdef", POPDEFTYPE }, + { "pushdef", PUSHDEFTYPE }, + { "dumpdef", DUMPDEFTYPE | NOARGS }, + { "shift", SHIFTTYPE | NOARGS }, + { "translit", TRANSLITTYPE }, + { "undefine", UNDEFINETYPE }, + { "undivert", UNDIVERTTYPE | NOARGS }, + { "divnum", DIVNUMTYPE | NOARGS }, + { "maketemp", MKSTEMPTYPE }, + { "mkstemp", MKSTEMPTYPE }, + { "errprint", ERRPRINTTYPE | NOARGS }, + { "m4wrap", M4WRAPTYPE | NOARGS }, + { "m4exit", M4EXITTYPE | NOARGS }, + { "syscmd", SYSCMDTYPE }, + { "sysval", SYSVALTYPE | NOARGS }, { "traceon", TRACEONTYPE | NOARGS }, { "traceoff", TRACEOFFTYPE | NOARGS }, +/* Macro that expands to itself, signature of the current OS */ { "unix", SELFTYPE | NOARGS }, }; diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index d4fa5b0e0c14..a932315e8f2e 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -41,50 +41,50 @@ # define UNUSED #endif -#define MACRTYPE 1 -#define DEFITYPE 2 -#define EXPRTYPE 3 -#define SUBSTYPE 4 -#define IFELTYPE 5 -#define LENGTYPE 6 -#define CHNQTYPE 7 -#define SYSCTYPE 8 -#define UNDFTYPE 9 -#define INCLTYPE 10 -#define SINCTYPE 11 -#define PASTTYPE 12 -#define SPASTYPE 13 -#define INCRTYPE 14 -#define IFDFTYPE 15 -#define PUSDTYPE 16 -#define POPDTYPE 17 -#define SHIFTYPE 18 -#define DECRTYPE 19 -#define DIVRTYPE 20 -#define UNDVTYPE 21 -#define DIVNTYPE 22 -#define MKTMTYPE 23 -#define ERRPTYPE 24 -#define M4WRTYPE 25 -#define TRNLTYPE 26 -#define DNLNTYPE 27 -#define DUMPTYPE 28 -#define CHNCTYPE 29 -#define INDXTYPE 30 -#define SYSVTYPE 31 -#define EXITTYPE 32 -#define DEFNTYPE 33 -#define SELFTYPE 34 -#define INDIRTYPE 35 -#define BUILTINTYPE 36 -#define PATSTYPE 37 -#define FILENAMETYPE 38 -#define LINETYPE 39 -#define REGEXPTYPE 40 -#define ESYSCMDTYPE 41 -#define TRACEONTYPE 42 -#define TRACEOFFTYPE 43 -#define FORMATTYPE 44 +#define MACROTYPE 1 +#define DEFINETYPE 2 +#define EVALTYPE 3 +#define SUBSTRTYPE 4 +#define IFELSETYPE 5 +#define LENTYPE 6 +#define CHANGEQUOTETYPE 7 +#define SYSCMDTYPE 8 +#define UNDEFINETYPE 9 +#define INCLUDETYPE 10 +#define SINCLUDETYPE 11 +#define PASTETYPE 12 +#define SPASTETYPE 13 +#define INCRTYPE 14 +#define IFDEFTYPE 15 +#define PUSHDEFTYPE 16 +#define POPDEFTYPE 17 +#define SHIFTTYPE 18 +#define DECRTYPE 19 +#define DIVERTTYPE 20 +#define UNDIVERTTYPE 21 +#define DIVNUMTYPE 22 +#define MKSTEMPTYPE 23 +#define ERRPRINTTYPE 24 +#define M4WRAPTYPE 25 +#define TRANSLITTYPE 26 +#define DNLTYPE 27 +#define DUMPDEFTYPE 28 +#define CHANGECOMTYPE 29 +#define INDEXTYPE 30 +#define SYSVALTYPE 31 +#define M4EXITTYPE 32 +#define DEFNTYPE 33 +#define SELFTYPE 34 +#define INDIRTYPE 35 +#define BUILTINTYPE 36 +#define PATSUBSTTYPE 37 +#define FILENAMETYPE 38 +#define LINETYPE 39 +#define REGEXPTYPE 40 +#define ESYSCMDTYPE 41 +#define TRACEONTYPE 42 +#define TRACEOFFTYPE 43 +#define FORMATTYPE 44 #define BUILTIN_MARKER "__builtin_" diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index fd72292aeac0..e0a0e6935986 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -68,7 +68,7 @@ unsigned char *endpbb; /* end of push-back buffer */ * find the index of second str in the first str. */ ptrdiff_t -indx(const char *s1, const char *s2) +doindex(const char *s1, const char *s2) { char *t; From nobody Thu Apr 2 09:48:41 2026 X-Original-To: dev-commits-src-branches@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 4fmcVx62Jqz6Y7N9 for ; Thu, 02 Apr 2026 09:48:41 +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 4fmcVx3b6sz42Dw for ; Thu, 02 Apr 2026 09:48:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123321; 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=X+weAgfkjTXu21zJsqX9GskPfoQUp+Gjv4BmIxeQo1w=; b=iqjK46LCTgTSFtJfL/UP3AMWxMkjMFsn6SpIDuzLa+GSP59ZJrdM3IfP+Hq3OZ6BW3jplS KEs1xqlsNJDBQ5p3R6POQoje4/tch6qwmclVBFdosQRJMQ607JY30d6SImSn8lk3B4EnSQ oGrzHkDSlz/TpvJnZ18+KwpovkXp7k97RxTXXdGkNzz7cd6KPf9LjZGQ8w7TrkpkspDO8y CRmvTs+Z+N/quQtMBYfpk5BNIq62L/6bVdGXCuWB5I7JUCXEvtbFb7Zxins8vKeUvD0TsR szyUPSpe1+NtZpH7wSNpXmZIhAWRD964XmeAwiFpOtd66oo9Ke+WOKvgye0NXQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123321; a=rsa-sha256; cv=none; b=uLKgmaaCnb42FmbHTpfdGBunQGCf/iKwy7rw4KQ0C+IoQTv6pLI2MPNLfzMr6zKSiSKQe9 hEAl0qFsvCeGbGFYL+vw8OBogIdT8GWxkl9iZFbDedzYvKiONvtgHXUyhly1yo7awk2FId w1hYQ7N6KrxQ2DtUBzyOJHDjPGyNSWDSF4XEVUam9L1WGUxlvql3vHP5V1TmSgG2WLlePQ D9x52bC+qNS5AkERORb01WzU/QGgJJlGZcpKuktRmqksgNFvMUBkGtEDxZKkumv0k6NMmN kPchPQ5XlpO3hxxz+Vpytl4/5RMqoKWgSiqrB1Q5SWAfnKP3Ef2bTzFwpLPArw== 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=1775123321; 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=X+weAgfkjTXu21zJsqX9GskPfoQUp+Gjv4BmIxeQo1w=; b=PQPCCqpffiJQp5S8EDsdQ+ny6NHbpeopWNuhtQn9ccNalzLLnoh/kl1aqI8toSzgVttGQE clH/kdyukd90xoA66wwkHpPMqoAi8kMIBZyTouFgYqgP3U0oiNO9OxnKLUlibYxuOXsgDh AFE/MPdEm/dB51dAEbdlGcdyb4iIprZI7ig/MkROnjJahjzC+8iVrV82ePZPtoKlSQn4Ty 4M1YjwHKNs/OgFLcjWDw3qxpb0WKXfaf25pX5LgXpWB2ySq9tLHyFVeOFPW5b8C0lhtIwr QfkIRuWHOng1oGkOC/4wSeouknikuMz3Ak6qUeD4ME50LZjQSWY/86T2GBhj7w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcVx39ZDzwtY for ; Thu, 02 Apr 2026 09:48:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ca80 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 3ef292118937 - stable/15 - m4: Misc style fixes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 3ef2921189374811dc76cdc7299a78992b60891b Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:41 +0000 Message-Id: <69ce3b79.3ca80.577dcbd5@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3ef2921189374811dc76cdc7299a78992b60891b commit 3ef2921189374811dc76cdc7299a78992b60891b Author: Dag-Erling Smørgrav AuthorDate: 2026-03-25 00:41:23 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:51 +0000 m4: Misc style fixes MFC after: 1 week Reviewed by: fuz Differential Revision: https://reviews.freebsd.org/D55794 (cherry picked from commit 41474e78c493184f023723d1f86539e07bb01b92) --- usr.bin/m4/eval.c | 18 +++++++++--------- usr.bin/m4/expr.c | 2 +- usr.bin/m4/look.c | 17 +++++++++-------- usr.bin/m4/main.c | 5 ++--- usr.bin/m4/mdef.h | 2 +- usr.bin/m4/misc.c | 12 +++++------- 6 files changed, 27 insertions(+), 29 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index 71be6f305dee..4f088e0415e0 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -298,7 +298,7 @@ expand_builtin(const char *argv[], int argc, int td) case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) - err(1, "%s at line %lu: paste(%s)", + err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; @@ -353,7 +353,7 @@ expand_builtin(const char *argv[], int argc, int td) errstr, argv[2]); if (n != 0) { dodivert(n); - break; + break; } } active = stdout; @@ -900,11 +900,11 @@ dosubstr(const char *argv[], int argc) * map every character of s1 that is specified in from * into s3 and replace in s. (source s1 remains untouched) * - * This is derived from the a standard implementation of map(s,from,to) - * function of ICON language. Within mapvec, we replace every character - * of "from" with the corresponding character in "to". - * If "to" is shorter than "from", than the corresponding entries are null, - * which means that those characters disappear altogether. + * This is derived from the a standard implementation of map(s,from,to) + * function of ICON language. Within mapvec, we replace every character + * of "from" with the corresponding character in "to". + * If "to" is shorter than "from", than the corresponding entries are null, + * which means that those characters disappear altogether. */ static void map(char *dest, const char *src, const char *from, const char *to) @@ -994,7 +994,7 @@ handledash(char *buffer, char *end, const char *src) if (src[1] == '-' && src[2]) { unsigned char i; if ((unsigned char)src[0] <= (unsigned char)src[2]) { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i <= (unsigned char)src[2]; i++) { *p++ = i; if (p == end) { @@ -1003,7 +1003,7 @@ handledash(char *buffer, char *end, const char *src) } } } else { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i >= (unsigned char)src[2]; i--) { *p++ = i; if (p == end) { diff --git a/usr.bin/m4/expr.c b/usr.bin/m4/expr.c index 7910403d74f0..859be1557d83 100644 --- a/usr.bin/m4/expr.c +++ b/usr.bin/m4/expr.c @@ -32,7 +32,7 @@ int yyerror(const char *msg) { fprintf(stderr, "m4: %s in expr %s\n", msg, copy_toeval); - return(0); + return 0; } int diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index a7e6d87b0494..c1fccd7dd8e5 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -137,8 +137,8 @@ static ndptr create_entry(const char *name) { const char *end = NULL; - unsigned int i; ndptr n; + unsigned int i; i = ohash_qlookupi(¯os, name, &end); n = ohash_find(¯os, i); @@ -156,6 +156,7 @@ void macro_define(const char *name, const char *defn) { ndptr n = create_entry(name); + if (n->d != NULL) { if (n->d->defn != null) free_definition(n->d->defn); @@ -183,6 +184,7 @@ void macro_undefine(const char *name) { ndptr n = lookup(name); + if (n != NULL) { struct macro_definition *r, *r2; @@ -295,21 +297,21 @@ keep(char *ptr) kept_capacity *= 2; else kept_capacity = 50; - kept = xreallocarray(kept, kept_capacity, - sizeof(char *), "Out of memory while saving %d strings\n", + kept = xreallocarray(kept, kept_capacity, + sizeof(char *), "Out of memory while saving %d strings\n", kept_capacity); } kept[kept_size++] = ptr; } static int -string_in_use(const char *ptr) +string_in_use(const char *ptr) { int i; - for (i = 0; i <= sp; i++) { + + for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_MACRO && mstack[i].sstr == ptr) return 1; - } return 0; } @@ -324,7 +326,7 @@ free_definition(char *ptr) if (!string_in_use(kept[i])) { kept_size--; free(kept[i]); - if (i != kept_size) + if (i != kept_size) kept[i] = kept[kept_size]; i--; } @@ -336,4 +338,3 @@ free_definition(char *ptr) else free(ptr); } - diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index 6e4e79b2a414..5daae7fd22c2 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -86,7 +86,7 @@ int maxout; FILE *active; /* active output file pointer */ int ilevel = 0; /* input file stack pointer */ int oindex = 0; /* diversion index.. */ -const char *null = ""; /* as it says.. just a null.. */ +const char *null = ""; /* as it says.. just a null.. */ char **m4wraps = NULL; /* m4wraps array. */ int maxwraps = 0; /* size of m4wraps array */ int wrapindex = 0; /* current offset in m4wraps */ @@ -388,8 +388,7 @@ macro(void) CHRSAVE(l); } } - } - while (nlpar != 0); + } while (nlpar != 0); } else if (sp < 0 && LOOK_AHEAD(t, scommt)) { reallyoutputstr(scommt); diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index a932315e8f2e..259d4d2baa55 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -204,7 +204,7 @@ struct input_file { mstack[sp].sstr = macro_getdef(p)->defn;\ sstack[sp] = STORAGE_MACRO; \ } while (0) - + /* * . . diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index e0a0e6935986..24e91c572f4d 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -135,8 +135,7 @@ pbnumbase(int n, int base, int d) do { pushback(digits[num % base]); printed++; - } - while ((num /= base) > 0); + } while ((num /= base) > 0); while (printed++ < d) pushback('0'); @@ -153,8 +152,7 @@ pbunsigned(unsigned long n) { do { pushback(n % 10 + '0'); - } - while ((n /= 10) > 0); + } while ((n /= 10) > 0); } void @@ -186,9 +184,9 @@ enlarge_strspace(void) memcpy(newstrspace, strspace, strsize/2); for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_STRSPACE) - mstack[i].sstr = (mstack[i].sstr - strspace) - + newstrspace; - ep = (ep-strspace) + newstrspace; + mstack[i].sstr = (mstack[i].sstr - strspace) + + newstrspace; + ep = (ep - strspace) + newstrspace; free(strspace); strspace = newstrspace; endest = strspace + strsize; From nobody Thu Apr 2 09:48:45 2026 X-Original-To: dev-commits-src-branches@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 4fmcW13xWxz6Y7Dh for ; Thu, 02 Apr 2026 09:48:45 +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 4fmcW12XV7z42J0 for ; Thu, 02 Apr 2026 09:48:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123325; 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=IQe8n+xM7fTPsLPoP1iv+UnvHF35sloXony8I4jvc6E=; b=Kgcqwz1cVh9EF1GqoG0tNYOg4FNNez4tDFlLB/n4fsyjVEq4KuYRF/heZkvX5EfaFZ4ZAn 5l8qoOnMn67OxvSayxYsegpg5dOqdqCIsYcZIOo1x+oCemcpZIhe51gAWghQyNZJ2Ds5ml pFONtukD4a/aBP9GrzCtPxkXFNQ/Wqya6U4z7PrHRFdxJ/NSNSTenE2e0rIUFCBYTlGKrf VIf4/MKpbmYY5cvDScZGaC2h8hR5GmNSdvZJG817NTP5TVqCsr7eSYGI/hQ2Xkfnl88POO C5EglzaoQCN4UgGMqm9blcuenm6MLoxI+wWXW2+I7XnMtrAeS55Jz/oda1NNlQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123325; a=rsa-sha256; cv=none; b=YIouv2ZheItf1k71fK7cl9Zwl7Lm0HDp9HBpnT1TFlSRceAobslRn0oGVFjhaJ7zVghS/y jxiZ1CHgQgy3/7JYqv89fjJdvjp0kZnfDtOHKHRaxg9EkRh+50+v/Uzmg5I+oaeOZSReqK fwT3smN/gpCIFcrUZ6aNzp1LXyq3gjReRw1w6pmyB3Gry5nb3S9FGkm4P+Hx80N9YYvOwA CySv9DMYymsRtsvxDl1P5Vl048spL9zQ1+sSFiwwR3SgtmuP6nC77uBEyBqpwhK5gX4f+x C/ZWUJoU5kjySfnzwS7mEXtkod7lQ9CpIvRM78fZfKSzF+08teFGafSv3bXZxA== 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=1775123325; 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=IQe8n+xM7fTPsLPoP1iv+UnvHF35sloXony8I4jvc6E=; b=r9rITtXKpUU4u/7ub/yhYaQIfBdZTR7giz265YJNgW2L2NpqQQQtpaXEGXk/1htucdbAPZ ON/IQDu1U+jjX29T/005JaHtYdXKRxQCfABg27Af92u3sEVYtgZhwwGZgeQCP5qt3UesVG PVN7lkx4bC7sgMWNti/GwYxc0AhuVcAaQSLauHl0+vPsziDSu5o6fokBotIWUqbc6JhYp0 ohUqtXAVZ8k/S7nBWi0fOnCNpyL9/dXTk+nn26Whpc5gqG9YXNy7xZUO//96SZKfqFYDgg khB/HOJxblaaJqKrdRO0CfCgcRTp+968yFAT6p2rHp4NnVFb/eCEMN5FcutHHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcW11t8SzwLc for ; Thu, 02 Apr 2026 09:48:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3beff by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: f0ca30b4e500 - stable/14 - file: Parse some UFS2 flags List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f0ca30b4e500e8ebf95b2d13b20dc37857541059 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:45 +0000 Message-Id: <69ce3b7d.3beff.50b2ca77@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f0ca30b4e500e8ebf95b2d13b20dc37857541059 commit f0ca30b4e500e8ebf95b2d13b20dc37857541059 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 11:02:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:58 +0000 file: Parse some UFS2 flags This allows libmagic to recognize the FS_DOSOFTDEP, FS_SUJ, FS_GJOURNAL, FS_ACLS, and FS_NFS4ACLS flags on a UFS2 file system. Accepted upstream as 482259e5e952. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56010 (cherry picked from commit fa03f93e8829a7689101303fbe9fb06654ca14ed) --- contrib/file/magic/Magdir/filesystems | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/file/magic/Magdir/filesystems b/contrib/file/magic/Magdir/filesystems index a15e5e74d971..78e9a31bd0e7 100644 --- a/contrib/file/magic/Magdir/filesystems +++ b/contrib/file/magic/Magdir/filesystems @@ -1640,6 +1640,11 @@ >1112 lelong x pending inodes to free %d, >712 lequad x system-wide uuid %0llx, >60 lelong x minimum percentage of free blocks %d, +>1312 lelong&0xa 0x2 soft updates, +>1312 lelong&0xa 0xa soft updates journaling, +>1312 lelong&0x40 0x40 GEOM journaling, +>1312 lelong&0x10 0x10 POSIX.1e ACLs, +>1312 lelong&0x100 0x100 NFSv4 ACLs, >128 lelong 0 TIME optimization >128 lelong 1 SPACE optimization From nobody Thu Apr 2 09:48:46 2026 X-Original-To: dev-commits-src-branches@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 4fmcW25KWjz6Y7Zh for ; Thu, 02 Apr 2026 09:48:46 +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 4fmcW237pQz42DW for ; Thu, 02 Apr 2026 09:48:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123326; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=beRz9DFlpQLoDLzXRU1+A6mJtGalwNz2lHsGlmgDkG8=; b=fV11NS010ZWvZU0BVU1scannYl8PNvSycHibniJyWUfoPTA4SHZZarVOyC2+iCL9aCXZa+ 4Aw1wnn9lRrVeHtiHmjSgX5Tcvr1ier3uxRu3+WpHNFJ5l64t0WC4JAHe5jQpvjZXOu2fg RQrvLJ1hUAozbRBlSFhLVOFa4vhM1rMa0V+ReqbDJn5xHAeknWIGhZAMNEFQWKh7mIUkP0 RGVAGXIflZPxPPQ2IcykvCiO4zKukgiUvqv7mGlCut/rahhCFXL3noxZjoG2UZt9lwPknr f6iaWryUa5NTElycsUsO6/TX2krfk8xoxkcFfBVuYQqjiQJYfaUbMJpzwvxPBw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123326; a=rsa-sha256; cv=none; b=bp6WipC8OXlkum3k+qzW1zjJZwX0JXMjgh40oH8FUkXQdbIFK+yU8GYeHZ6EL4xlw5kcSD 2fAUqTcxJVapDOedsdTgohN8j9c58Q88BXdNRjALNy9asLc5IvTFeHzKEV0S6Zi+/IMPlH ThDLvTDaFlBZnxuUWCZ/XAGn2eCqF1mWPhar/1hVrjjDS4gtX9F81eQmtSkhH0lcn41wax 7XCBmCQ5CxyrLbL2lVwJeGlxUNOPKgdlJtWns/HKM//r7IrYpPVL0EoDTXS6+L7WbLI7uE q9AlcRCzJBcS5jaXckCC9twy05s4ch22X/DD1mtPu7AcZyailrzUI8cZqcqazg== 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=1775123326; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=beRz9DFlpQLoDLzXRU1+A6mJtGalwNz2lHsGlmgDkG8=; b=Vu3GZhOhwBrvEGWNe9pyrdx9IujujSyu7yaxw5h0N3VDmEL0ZpX7Rr4PvtxPgKngqyZMJh 94AL5+PauJtPFclvClvDiLUpgB/eO1tbE5OoSJIyFcWemMKuhYNI89ippWYC5oF0gkzhwL O4ZnjIYdrNETVLzHjlKQmZ1XkC/3DOr2wkW8It4JGJEri1oY5g+ICPRcYMZVz5sMbzKzQU a4h28Jm9onE6Ptpk1Inh95xITgo2d+xrQzjsrvJVR+pfqSgTacrR7Vfx3xi+e4YQddAEE5 y9UML1n210APVBsEpM93tsrPU9jKNTjwqpXUpgY6OChGRx33qipstrDtA+rpOQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcW22h8Zzx8M for ; Thu, 02 Apr 2026 09:48:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3c4bb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:46 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Marc Espie From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: e4755b918372 - stable/14 - m4: Stop abbreviating builtin names List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e4755b91837246f1a31c51a3a87104635be80a83 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:46 +0000 Message-Id: <69ce3b7e.3c4bb.7895a524@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=e4755b91837246f1a31c51a3a87104635be80a83 commit e4755b91837246f1a31c51a3a87104635be80a83 Author: Marc Espie AuthorDate: 2026-03-25 00:41:18 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:59 +0000 m4: Stop abbreviating builtin names * Stop abbreviating macro names half-randomly to 8 chars, this is no longer 1990. * Likewise for function names (in particular use doindex for a function that is notably different from the classic index function). * Rename a few things for more fidelity: eval is the builtin name, not expr and your maketemp/mkstemp conform to mkstemp semantics for better security. * Rewrap a few comments that were ludicrously short. No functional changes except improved accuracy of some error messages. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55793 (cherry picked from commit f8f6f1cbd576ab5f15cef178cc05251365652f74) --- usr.bin/m4/eval.c | 184 ++++++++++++++++++++++++---------------------------- usr.bin/m4/extern.h | 2 +- usr.bin/m4/look.c | 6 +- usr.bin/m4/main.c | 65 ++++++++++--------- usr.bin/m4/mdef.h | 88 ++++++++++++------------- usr.bin/m4/misc.c | 2 +- 6 files changed, 168 insertions(+), 179 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index 0963a61a2914..71be6f305dee 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -60,17 +60,17 @@ static void dodefn(const char *); static void dopushdef(const char *, const char *); -static void dodump(const char *[], int); +static void dodumpdef(const char *[], int); static void dotrace(const char *[], int, int); static void doifelse(const char *[], int); -static int doincl(const char *); +static int doinclude(const char *); static int dopaste(const char *); -static void dochq(const char *[], int); -static void dochc(const char *[], int); +static void dochangequote(const char *[], int); +static void dochangecom(const char *[], int); static void dom4wrap(const char *); -static void dodiv(int); -static void doundiv(const char *[], int); -static void dosub(const char *[], int); +static void dodivert(int); +static void doundivert(const char *[], int); +static void dosubstr(const char *[], int); static void map(char *, const char *, const char *, const char *); static const char *handledash(char *, char *, const char *); static void expand_builtin(const char *[], int, int); @@ -108,7 +108,7 @@ eval(const char *argv[], int argc, int td, int is_traced) m4errx(1, "expanding recursive definition for %s.", argv[1]); if (is_traced) mark = trace(argv, argc, infile+ilevel); - if (td == MACRTYPE) + if (td == MACROTYPE) expand_macro(argv, argc); else expand_builtin(argv, argc, td); @@ -149,18 +149,18 @@ expand_builtin(const char *argv[], int argc, int td) switch (td & TYPEMASK) { - case DEFITYPE: + case DEFINETYPE: if (argc > 2) dodefine(argv[2], (argc > 3) ? argv[3] : null); break; - case PUSDTYPE: + case PUSHDEFTYPE: if (argc > 2) dopushdef(argv[2], (argc > 3) ? argv[3] : null); break; - case DUMPTYPE: - dodump(argv, argc); + case DUMPDEFTYPE: + dodumpdef(argv, argc); break; case TRACEONTYPE: @@ -171,10 +171,9 @@ expand_builtin(const char *argv[], int argc, int td) dotrace(argv, argc, 0); break; - case EXPRTYPE: + case EVALTYPE: /* - * doexpr - evaluate arithmetic - * expression + * doeval - evaluate arithmetic expression */ { int base = 10; @@ -184,14 +183,14 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 3 && *argv[3] != '\0') { base = strtonum(argv[3], 2, 36, &errstr); if (errstr) { - m4errx(1, "expr: base is %s: %s.", + m4errx(1, "eval: base is %s: %s.", errstr, argv[3]); } } if (argc > 4) { mindigits = strtonum(argv[4], 0, INT_MAX, &errstr); if (errstr) { - m4errx(1, "expr: mindigits is %s: %s.", + m4errx(1, "eval: mindigits is %s: %s.", errstr, argv[4]); } } @@ -200,15 +199,14 @@ expand_builtin(const char *argv[], int argc, int td) break; } - case IFELTYPE: + case IFELSETYPE: doifelse(argv, argc); break; - case IFDFTYPE: + case IFDEFTYPE: /* - * doifdef - select one of two - * alternatives based on the existence of - * another definition + * doifdef - select one of two alternatives based + * on the existence of another definition */ if (argc > 3) { if (lookup_macro_definition(argv[2]) != NULL) @@ -218,18 +216,16 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case LENGTYPE: + case LENTYPE: /* - * dolen - find the length of the - * argument + * dolen - find the length of the argument */ pbnum((argc > 2) ? strlen(argv[2]) : 0); break; case INCRTYPE: /* - * doincr - increment the value of the - * argument + * doincr - increment the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX-1, &errstr); @@ -242,8 +238,7 @@ expand_builtin(const char *argv[], int argc, int td) case DECRTYPE: /* - * dodecr - decrement the value of the - * argument + * dodecr - decrement the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN+1, INT_MAX, &errstr); @@ -254,9 +249,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSCTYPE: + case SYSCMDTYPE: /* - * dosys - execute system command + * dosyscmd - execute system command */ if (argc > 2) { fflush(stdout); @@ -264,10 +259,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSVTYPE: + case SYSVALTYPE: /* - * dosysval - return value of the last - * system call. + * dosysval - return value of the last system call. * */ pbnum(sysval); @@ -277,9 +271,9 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 2) doesyscmd(argv[2]); break; - case INCLTYPE: + case INCLUDETYPE: if (argc > 2) { - if (!doincl(argv[2])) { + if (!doinclude(argv[2])) { if (mimic_gnu) { warn("%s at line %lu: include(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); @@ -295,19 +289,20 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SINCTYPE: + case SINCLUDETYPE: + /* like include, but don't error out if file not found */ if (argc > 2) - (void) doincl(argv[2]); + (void) doinclude(argv[2]); break; #ifdef EXTENDED - case PASTTYPE: + case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; - case SPASTYPE: + case SPASTETYPE: if (argc > 2) (void) dopaste(argv[2]); break; @@ -315,28 +310,27 @@ expand_builtin(const char *argv[], int argc, int td) doformat(argv, argc); break; #endif - case CHNQTYPE: - dochq(argv, ac); + case CHANGEQUOTETYPE: + dochangequote(argv, ac); break; - case CHNCTYPE: - dochc(argv, argc); + case CHANGECOMTYPE: + dochangecom(argv, argc); break; - case SUBSTYPE: + case SUBSTRTYPE: /* - * dosub - select substring + * dosubstr - select substring * */ if (argc > 3) - dosub(argv, argc); + dosubstr(argv, argc); break; - case SHIFTYPE: + case SHIFTTYPE: /* - * doshift - push back all arguments - * except the first one (i.e. skip - * argv[2]) + * doshift - push back all arguments except the first one + * (i.e. skip argv[2]) */ if (argc > 3) { for (n = argc - 1; n > 3; n--) { @@ -351,14 +345,14 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DIVRTYPE: + case DIVERTTYPE: if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX, &errstr); if (errstr) m4errx(1, "divert: argument is %s: %s.", errstr, argv[2]); if (n != 0) { - dodiv(n); + dodivert(n); break; } } @@ -366,42 +360,40 @@ expand_builtin(const char *argv[], int argc, int td) oindex = 0; break; - case UNDVTYPE: - doundiv(argv, argc); + case UNDIVERTTYPE: + doundivert(argv, argc); break; - case DIVNTYPE: + case DIVNUMTYPE: /* - * dodivnum - return the number of - * current output diversion + * dodivnum - return the number of current output diversion */ pbnum(oindex); break; - case UNDFTYPE: + case UNDEFINETYPE: /* - * doundefine - undefine a previously - * defined macro(s) or m4 keyword(s). + * doundefine - undefine a previously defined macro(s) or m4 + * keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_undefine(argv[n]); break; - case POPDTYPE: + case POPDEFTYPE: /* - * dopopdef - remove the topmost - * definitions of macro(s) or m4 - * keyword(s). + * dopopdef - remove the topmost definitions of macro(s) + * or m4 keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_popdef(argv[n]); break; - case MKTMTYPE: + case MKSTEMPTYPE: /* - * dotemp - create a temporary file + * domkstemp - safely create a temporary file */ if (argc > 2) { int fd; @@ -420,11 +412,10 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case TRNLTYPE: + case TRANSLITTYPE: /* - * dotranslit - replace all characters in - * the source string that appears in the - * "from" string with the corresponding + * dotranslit - replace all characters in the source string + * that appear in the "from" string with the corresponding * characters in the "to" string. */ if (argc > 3) { @@ -441,19 +432,17 @@ expand_builtin(const char *argv[], int argc, int td) pbstr(argv[2]); break; - case INDXTYPE: + case INDEXTYPE: /* - * doindex - find the index of the second - * argument string in the first argument - * string. -1 if not present. + * doindex - find the index of the second argument string + * in the first argument string. -1 if not present. */ - pbnum((argc > 3) ? indx(argv[2], argv[3]) : -1); + pbnum((argc > 3) ? doindex(argv[2], argv[3]) : -1); break; - case ERRPTYPE: + case ERRPRINTTYPE: /* - * doerrp - print the arguments to stderr - * file + * doerrprint - print the arguments to stderr */ if (argc > 2) { for (n = 2; n < argc; n++) @@ -462,16 +451,15 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DNLNTYPE: + case DNLTYPE: /* - * dodnl - eat-up-to and including - * newline + * dodnl - eat-up-to and including newline */ while ((c = gpbc()) != '\n' && c != EOF) ; break; - case M4WRTYPE: + case M4WRAPTYPE: /* * dom4wrap - set up for * wrap-up/wind-down activity @@ -480,9 +468,9 @@ expand_builtin(const char *argv[], int argc, int td) dom4wrap(argv[2]); break; - case EXITTYPE: + case M4EXITTYPE: /* - * doexit - immediate exit from m4. + * dom4exit - immediate exit from m4. */ killdiv(); exit((argc > 2) ? atoi(argv[2]) : 0); @@ -504,7 +492,7 @@ expand_builtin(const char *argv[], int argc, int td) dobuiltin(argv, argc); break; - case PATSTYPE: + case PATSUBSTTYPE: if (argc > 2) dopatsubst(argv, argc); break; @@ -625,7 +613,7 @@ dodefn(const char *name) struct macro_definition *p; if ((p = lookup_macro_definition(name)) != NULL) { - if ((p->type & TYPEMASK) == MACRTYPE) { + if ((p->type & TYPEMASK) == MACROTYPE) { pbstr(rquote); pbstr(p->defn); pbstr(lquote); @@ -661,7 +649,7 @@ dump_one_def(const char *name, struct macro_definition *p) if (!traceout) traceout = stderr; if (mimic_gnu) { - if ((p->type & TYPEMASK) == MACRTYPE) + if ((p->type & TYPEMASK) == MACROTYPE) fprintf(traceout, "%s:\t%s\n", name, p->defn); else { fprintf(traceout, "%s:\t<%s>\n", name, p->defn); @@ -676,7 +664,7 @@ dump_one_def(const char *name, struct macro_definition *p) * hash table is dumped. */ static void -dodump(const char *argv[], int argc) +dodumpdef(const char *argv[], int argc) { int n; struct macro_definition *p; @@ -728,7 +716,7 @@ doifelse(const char *argv[], int argc) * doinclude - include a given file. */ static int -doincl(const char *ifile) +doinclude(const char *ifile) { if (ilevel + 1 == MAXINP) m4errx(1, "too many include files."); @@ -765,10 +753,10 @@ dopaste(const char *pfile) #endif /* - * dochq - change quote characters + * dochangequote - change quote characters */ static void -dochq(const char *argv[], int ac) +dochangequote(const char *argv[], int ac) { if (ac == 2) { lquote[0] = LQUOTE; lquote[1] = EOS; @@ -784,10 +772,10 @@ dochq(const char *argv[], int ac) } /* - * dochc - change comment characters + * dochangecom - change comment characters */ static void -dochc(const char *argv[], int argc) +dochangecom(const char *argv[], int argc) { /* XXX Note that there is no difference between no argument and a single * empty argument. @@ -826,7 +814,7 @@ dom4wrap(const char *text) * dodivert - divert the output to a temporary file */ static void -dodiv(int n) +dodivert(int n) { int fd; @@ -856,7 +844,7 @@ dodiv(int n) * other outputs, in numerical order. */ static void -doundiv(const char *argv[], int argc) +doundivert(const char *argv[], int argc) { int ind; int n; @@ -881,10 +869,10 @@ doundiv(const char *argv[], int argc) } /* - * dosub - select substring + * dosubstr - select substring */ static void -dosub(const char *argv[], int argc) +dosubstr(const char *argv[], int argc) { const char *ap, *fc, *k; int nc; diff --git a/usr.bin/m4/extern.h b/usr.bin/m4/extern.h index 07e831796822..110a19edcc8d 100644 --- a/usr.bin/m4/extern.h +++ b/usr.bin/m4/extern.h @@ -97,7 +97,7 @@ extern int exit_code; extern void chrsave(int); extern char *compute_prevep(void); extern void getdiv(int); -extern ptrdiff_t indx(const char *, const char *); +extern ptrdiff_t doindex(const char *, const char *); extern void initspaces(void); extern void killdiv(void); extern void onintr(int); diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index d7ad94b18bd0..a7e6d87b0494 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -127,7 +127,7 @@ setup_definition(struct macro_definition *d, const char *defn, const char *name) d->defn = __DECONST(char *, null); else d->defn = xstrdup(defn); - d->type = MACRTYPE; + d->type = MACROTYPE; } if (STREQ(name, defn)) d->type |= RECDEF; @@ -146,7 +146,7 @@ create_entry(const char *name) n = ohash_create_entry(¯o_info, name, &end); ohash_insert(¯os, i, n); n->trace_flags = FLAG_NO_TRACE; - n->builtin_type = MACRTYPE; + n->builtin_type = MACROTYPE; n->d = NULL; } return n; @@ -271,7 +271,7 @@ macro_getbuiltin(const char *name) ndptr p; p = lookup(name); - if (p == NULL || p->builtin_type == MACRTYPE) + if (p == NULL || p->builtin_type == MACROTYPE) return NULL; else return p; diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index d68069cb10a8..6e4e79b2a414 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -105,53 +105,54 @@ struct keyblk { }; static struct keyblk keywrds[] = { /* m4 keywords to be installed */ - { "include", INCLTYPE }, - { "sinclude", SINCTYPE }, - { "define", DEFITYPE }, + { "include", INCLUDETYPE }, + { "sinclude", SINCLUDETYPE }, + { "define", DEFINETYPE }, { "defn", DEFNTYPE }, - { "divert", DIVRTYPE | NOARGS }, - { "expr", EXPRTYPE }, - { "eval", EXPRTYPE }, - { "substr", SUBSTYPE }, - { "ifelse", IFELTYPE }, - { "ifdef", IFDFTYPE }, - { "len", LENGTYPE }, + { "divert", DIVERTTYPE | NOARGS }, + { "eval", EVALTYPE }, + { "expr", EVALTYPE }, + { "substr", SUBSTRTYPE }, + { "ifelse", IFELSETYPE }, + { "ifdef", IFDEFTYPE }, + { "len", LENTYPE }, { "incr", INCRTYPE }, { "decr", DECRTYPE }, - { "dnl", DNLNTYPE | NOARGS }, - { "changequote", CHNQTYPE | NOARGS }, - { "changecom", CHNCTYPE | NOARGS }, - { "index", INDXTYPE }, + { "dnl", DNLTYPE | NOARGS }, + { "changequote", CHANGEQUOTETYPE | NOARGS }, + { "changecom", CHANGECOMTYPE | NOARGS }, + { "index", INDEXTYPE }, #ifdef EXTENDED - { "paste", PASTTYPE }, - { "spaste", SPASTYPE }, + { "paste", PASTETYPE }, + { "spaste", SPASTETYPE }, /* Newer extensions, needed to handle gnu-m4 scripts */ { "indir", INDIRTYPE}, { "builtin", BUILTINTYPE}, - { "patsubst", PATSTYPE}, + { "patsubst", PATSUBSTTYPE}, { "regexp", REGEXPTYPE}, { "esyscmd", ESYSCMDTYPE}, { "__file__", FILENAMETYPE | NOARGS}, { "__line__", LINETYPE | NOARGS}, #endif - { "popdef", POPDTYPE }, - { "pushdef", PUSDTYPE }, - { "dumpdef", DUMPTYPE | NOARGS }, - { "shift", SHIFTYPE | NOARGS }, - { "translit", TRNLTYPE }, - { "undefine", UNDFTYPE }, - { "undivert", UNDVTYPE | NOARGS }, - { "divnum", DIVNTYPE | NOARGS }, - { "maketemp", MKTMTYPE }, - { "mkstemp", MKTMTYPE }, - { "errprint", ERRPTYPE | NOARGS }, - { "m4wrap", M4WRTYPE | NOARGS }, - { "m4exit", EXITTYPE | NOARGS }, - { "syscmd", SYSCTYPE }, - { "sysval", SYSVTYPE | NOARGS }, + { "popdef", POPDEFTYPE }, + { "pushdef", PUSHDEFTYPE }, + { "dumpdef", DUMPDEFTYPE | NOARGS }, + { "shift", SHIFTTYPE | NOARGS }, + { "translit", TRANSLITTYPE }, + { "undefine", UNDEFINETYPE }, + { "undivert", UNDIVERTTYPE | NOARGS }, + { "divnum", DIVNUMTYPE | NOARGS }, + { "maketemp", MKSTEMPTYPE }, + { "mkstemp", MKSTEMPTYPE }, + { "errprint", ERRPRINTTYPE | NOARGS }, + { "m4wrap", M4WRAPTYPE | NOARGS }, + { "m4exit", M4EXITTYPE | NOARGS }, + { "syscmd", SYSCMDTYPE }, + { "sysval", SYSVALTYPE | NOARGS }, { "traceon", TRACEONTYPE | NOARGS }, { "traceoff", TRACEOFFTYPE | NOARGS }, +/* Macro that expands to itself, signature of the current OS */ { "unix", SELFTYPE | NOARGS }, }; diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index 6d738876b22a..86960e3741e1 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -43,50 +43,50 @@ # define UNUSED #endif -#define MACRTYPE 1 -#define DEFITYPE 2 -#define EXPRTYPE 3 -#define SUBSTYPE 4 -#define IFELTYPE 5 -#define LENGTYPE 6 -#define CHNQTYPE 7 -#define SYSCTYPE 8 -#define UNDFTYPE 9 -#define INCLTYPE 10 -#define SINCTYPE 11 -#define PASTTYPE 12 -#define SPASTYPE 13 -#define INCRTYPE 14 -#define IFDFTYPE 15 -#define PUSDTYPE 16 -#define POPDTYPE 17 -#define SHIFTYPE 18 -#define DECRTYPE 19 -#define DIVRTYPE 20 -#define UNDVTYPE 21 -#define DIVNTYPE 22 -#define MKTMTYPE 23 -#define ERRPTYPE 24 -#define M4WRTYPE 25 -#define TRNLTYPE 26 -#define DNLNTYPE 27 -#define DUMPTYPE 28 -#define CHNCTYPE 29 -#define INDXTYPE 30 -#define SYSVTYPE 31 -#define EXITTYPE 32 -#define DEFNTYPE 33 -#define SELFTYPE 34 -#define INDIRTYPE 35 -#define BUILTINTYPE 36 -#define PATSTYPE 37 -#define FILENAMETYPE 38 -#define LINETYPE 39 -#define REGEXPTYPE 40 -#define ESYSCMDTYPE 41 -#define TRACEONTYPE 42 -#define TRACEOFFTYPE 43 -#define FORMATTYPE 44 +#define MACROTYPE 1 +#define DEFINETYPE 2 +#define EVALTYPE 3 +#define SUBSTRTYPE 4 +#define IFELSETYPE 5 +#define LENTYPE 6 +#define CHANGEQUOTETYPE 7 +#define SYSCMDTYPE 8 +#define UNDEFINETYPE 9 +#define INCLUDETYPE 10 +#define SINCLUDETYPE 11 +#define PASTETYPE 12 +#define SPASTETYPE 13 +#define INCRTYPE 14 +#define IFDEFTYPE 15 +#define PUSHDEFTYPE 16 +#define POPDEFTYPE 17 +#define SHIFTTYPE 18 +#define DECRTYPE 19 +#define DIVERTTYPE 20 +#define UNDIVERTTYPE 21 +#define DIVNUMTYPE 22 +#define MKSTEMPTYPE 23 +#define ERRPRINTTYPE 24 +#define M4WRAPTYPE 25 +#define TRANSLITTYPE 26 +#define DNLTYPE 27 +#define DUMPDEFTYPE 28 +#define CHANGECOMTYPE 29 +#define INDEXTYPE 30 +#define SYSVALTYPE 31 +#define M4EXITTYPE 32 +#define DEFNTYPE 33 +#define SELFTYPE 34 +#define INDIRTYPE 35 +#define BUILTINTYPE 36 +#define PATSUBSTTYPE 37 +#define FILENAMETYPE 38 +#define LINETYPE 39 +#define REGEXPTYPE 40 +#define ESYSCMDTYPE 41 +#define TRACEONTYPE 42 +#define TRACEOFFTYPE 43 +#define FORMATTYPE 44 #define BUILTIN_MARKER "__builtin_" diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index a6abce4936b4..ca37dc3c4593 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -69,7 +69,7 @@ unsigned char *endpbb; /* end of push-back buffer */ * find the index of second str in the first str. */ ptrdiff_t -indx(const char *s1, const char *s2) +doindex(const char *s1, const char *s2) { char *t; From nobody Thu Apr 2 09:48:47 2026 X-Original-To: dev-commits-src-branches@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 4fmcW36zl2z6Y7Dk for ; Thu, 02 Apr 2026 09:48:47 +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 4fmcW33jB8z42P0 for ; Thu, 02 Apr 2026 09:48:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123327; 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=PhlBzZUMgjQMbasVxhKlQtrsHImK332fMfSJn/At1/Y=; b=xe/qeKUlwpRwnpfw6Lq6fzB87XJi7Uz7T1iRKCHVhjxGwBhuP5pppDxYQd6H8X6qttF+2L TiE6sogBPHm9F7WuD/UAihQUBgApNbbFUVRCNjGbx5yH1YwHXnUbg2xQOSdkN1PY3zwyp8 Zsb8LjJxa7kExIWE6lWOe5EMdSPilkY68id32nxC0RkAgxmWv8m8pJN25KdSYUt2vvjIZf XrAE8XjfhJHcrcB5PqvkiMntzUMfqODMUnVX5IAU1lLXuba5vJExbH7vAtClifoSRWtz8z 2ugUoCUZopEbPl50IpvIS3DxhhNNMErO/XOKAaysBGTkK45l+cF7HE7MwU50fg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123327; a=rsa-sha256; cv=none; b=UoZHwNzsLrUOxC3wsRA0eTikhdYZV32Kekeoj35bVr8Y3PHKSA93zfAVwLbTU36BcYGRdM rtdVbgy5iLN0ijFSNyZjbgqVMzcZlq4VPvaJCL0e3b/0/4/6isyCikKZhFeey2xe1dAPcN lc4/HYhyGntB5NzfrCep2YgJkE+wTycLo4I0TCmRFwNGmuEJV3JgiicxnjHhUB67tonqMn zUwxwmxy/32EejLh94uSeOMbjK4apzzMN8VSyCFBe0Nwr0Y4cLyid1KY79/YcZgwaHXG4F WyxIWSY69zr3IhyH3KLOlHTUX6tIuurUPAVFDaQu1BkBZw4LecriE4lL1vjeIg== 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=1775123327; 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=PhlBzZUMgjQMbasVxhKlQtrsHImK332fMfSJn/At1/Y=; b=i4SqVm5BruCzwR8A4vMkfRTz+4j0d5zd/EaXTMSfme1n7d4oq+SXM7Jy8kbI39nuSs8syJ dxbTusvb+1Xb4FkPo6370nK4Ao1oBXADjmHrbbStu8lLHmOPTL1dwTfWrZUe4+U0EkqFKD a59UzW/q8kDmpxAfey+NvyBRKPl5zBqxwKt4BJf0j/BrWeZAdpZIZfvqNLUPJr/TpcBveK YYPms40xA4028c95krFOEhAk8H4VPbJ6zOzyGuUyexP6X5NspvJV8jxr9aiXbq8FdIlevo JeFy1AXInvB6xuamISoCLKOBAdMtWA9yWJViFGAdFCag2GuFqSZ9XRQuoktFsg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcW335Rjzx8N for ; Thu, 02 Apr 2026 09:48:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bba6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:48:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 3396afba986b - stable/14 - m4: Misc style fixes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3396afba986bb8f6cfa334a1c324552b5f355f1a Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:48:47 +0000 Message-Id: <69ce3b7f.3bba6.6e9f0cd4@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3396afba986bb8f6cfa334a1c324552b5f355f1a commit 3396afba986bb8f6cfa334a1c324552b5f355f1a Author: Dag-Erling Smørgrav AuthorDate: 2026-03-25 00:41:23 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:47:59 +0000 m4: Misc style fixes MFC after: 1 week Reviewed by: fuz Differential Revision: https://reviews.freebsd.org/D55794 (cherry picked from commit 41474e78c493184f023723d1f86539e07bb01b92) --- usr.bin/m4/eval.c | 18 +++++++++--------- usr.bin/m4/expr.c | 2 +- usr.bin/m4/look.c | 17 +++++++++-------- usr.bin/m4/main.c | 5 ++--- usr.bin/m4/mdef.h | 2 +- usr.bin/m4/misc.c | 12 +++++------- 6 files changed, 27 insertions(+), 29 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index 71be6f305dee..4f088e0415e0 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -298,7 +298,7 @@ expand_builtin(const char *argv[], int argc, int td) case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) - err(1, "%s at line %lu: paste(%s)", + err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; @@ -353,7 +353,7 @@ expand_builtin(const char *argv[], int argc, int td) errstr, argv[2]); if (n != 0) { dodivert(n); - break; + break; } } active = stdout; @@ -900,11 +900,11 @@ dosubstr(const char *argv[], int argc) * map every character of s1 that is specified in from * into s3 and replace in s. (source s1 remains untouched) * - * This is derived from the a standard implementation of map(s,from,to) - * function of ICON language. Within mapvec, we replace every character - * of "from" with the corresponding character in "to". - * If "to" is shorter than "from", than the corresponding entries are null, - * which means that those characters disappear altogether. + * This is derived from the a standard implementation of map(s,from,to) + * function of ICON language. Within mapvec, we replace every character + * of "from" with the corresponding character in "to". + * If "to" is shorter than "from", than the corresponding entries are null, + * which means that those characters disappear altogether. */ static void map(char *dest, const char *src, const char *from, const char *to) @@ -994,7 +994,7 @@ handledash(char *buffer, char *end, const char *src) if (src[1] == '-' && src[2]) { unsigned char i; if ((unsigned char)src[0] <= (unsigned char)src[2]) { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i <= (unsigned char)src[2]; i++) { *p++ = i; if (p == end) { @@ -1003,7 +1003,7 @@ handledash(char *buffer, char *end, const char *src) } } } else { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i >= (unsigned char)src[2]; i--) { *p++ = i; if (p == end) { diff --git a/usr.bin/m4/expr.c b/usr.bin/m4/expr.c index 7910403d74f0..859be1557d83 100644 --- a/usr.bin/m4/expr.c +++ b/usr.bin/m4/expr.c @@ -32,7 +32,7 @@ int yyerror(const char *msg) { fprintf(stderr, "m4: %s in expr %s\n", msg, copy_toeval); - return(0); + return 0; } int diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index a7e6d87b0494..c1fccd7dd8e5 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -137,8 +137,8 @@ static ndptr create_entry(const char *name) { const char *end = NULL; - unsigned int i; ndptr n; + unsigned int i; i = ohash_qlookupi(¯os, name, &end); n = ohash_find(¯os, i); @@ -156,6 +156,7 @@ void macro_define(const char *name, const char *defn) { ndptr n = create_entry(name); + if (n->d != NULL) { if (n->d->defn != null) free_definition(n->d->defn); @@ -183,6 +184,7 @@ void macro_undefine(const char *name) { ndptr n = lookup(name); + if (n != NULL) { struct macro_definition *r, *r2; @@ -295,21 +297,21 @@ keep(char *ptr) kept_capacity *= 2; else kept_capacity = 50; - kept = xreallocarray(kept, kept_capacity, - sizeof(char *), "Out of memory while saving %d strings\n", + kept = xreallocarray(kept, kept_capacity, + sizeof(char *), "Out of memory while saving %d strings\n", kept_capacity); } kept[kept_size++] = ptr; } static int -string_in_use(const char *ptr) +string_in_use(const char *ptr) { int i; - for (i = 0; i <= sp; i++) { + + for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_MACRO && mstack[i].sstr == ptr) return 1; - } return 0; } @@ -324,7 +326,7 @@ free_definition(char *ptr) if (!string_in_use(kept[i])) { kept_size--; free(kept[i]); - if (i != kept_size) + if (i != kept_size) kept[i] = kept[kept_size]; i--; } @@ -336,4 +338,3 @@ free_definition(char *ptr) else free(ptr); } - diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index 6e4e79b2a414..5daae7fd22c2 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -86,7 +86,7 @@ int maxout; FILE *active; /* active output file pointer */ int ilevel = 0; /* input file stack pointer */ int oindex = 0; /* diversion index.. */ -const char *null = ""; /* as it says.. just a null.. */ +const char *null = ""; /* as it says.. just a null.. */ char **m4wraps = NULL; /* m4wraps array. */ int maxwraps = 0; /* size of m4wraps array */ int wrapindex = 0; /* current offset in m4wraps */ @@ -388,8 +388,7 @@ macro(void) CHRSAVE(l); } } - } - while (nlpar != 0); + } while (nlpar != 0); } else if (sp < 0 && LOOK_AHEAD(t, scommt)) { reallyoutputstr(scommt); diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index 86960e3741e1..424bdc91b241 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -206,7 +206,7 @@ struct input_file { mstack[sp].sstr = macro_getdef(p)->defn;\ sstack[sp] = STORAGE_MACRO; \ } while (0) - + /* * . . diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index ca37dc3c4593..84aeac6c27b5 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -136,8 +136,7 @@ pbnumbase(int n, int base, int d) do { pushback(digits[num % base]); printed++; - } - while ((num /= base) > 0); + } while ((num /= base) > 0); while (printed++ < d) pushback('0'); @@ -154,8 +153,7 @@ pbunsigned(unsigned long n) { do { pushback(n % 10 + '0'); - } - while ((n /= 10) > 0); + } while ((n /= 10) > 0); } void @@ -187,9 +185,9 @@ enlarge_strspace(void) memcpy(newstrspace, strspace, strsize/2); for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_STRSPACE) - mstack[i].sstr = (mstack[i].sstr - strspace) - + newstrspace; - ep = (ep-strspace) + newstrspace; + mstack[i].sstr = (mstack[i].sstr - strspace) + + newstrspace; + ep = (ep - strspace) + newstrspace; free(strspace); strspace = newstrspace; endest = strspace + strsize; From nobody Thu Apr 2 09:49:03 2026 X-Original-To: dev-commits-src-branches@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 4fmcWN07J2z6Y7Xs for ; Thu, 02 Apr 2026 09:49:04 +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 4fmcWM3ddQz42rB for ; Thu, 02 Apr 2026 09:49:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123343; 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=DjrFhSPhHrK4hqK3XCGp50Qxyn/R4UR/cT3iRtXlu0U=; b=A4y9NoFMEBbv6ayHrKl/zU/j//+gY3B6CIwIaKphvg1VKaM7XAN/WjRCN4yrhWf/khsA33 nbUP4k+KJQaXrjkwJx9cnP2b2+4ecNREDFYMD4PyrEZgyducABQFk8rYF/j1F3ewqMJaUL feRVREl3DnTpo810ogB4c8MtKB+e+BzxqDjYJRjIPYxDdV92f4QAUNE3p3IF7gU76oHlF7 u1FWvhazs78iQu3rATR4Xr+wwJWCR8g532GHr7v4MVrOP8xybC8mxtvn/w55uhjhP7rcKW Zt5vxebscZ5iuKxuhcCcMvghtP5eF0WLcGvw5T1vjDVoYQOB3oF0nnx53Rm9NA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123343; a=rsa-sha256; cv=none; b=kqmMyTJgupEZY1Xlt2SOu9xNp+z8IbkV0mJgveZz7eR58iVysFCpBoVvzboHC3eBzy0+qu T7IMtQggjGyHtHmVrrSEE4btF1yTxoh3mQULLJPJB1PgS+/9LXQbBCRqN416XkIw1uXF5s 6IkkIfaroVxkQJyveGxjQ9gjnx8U/QfoMq6NXYsgOjFGzKh8LPGNFLpS7ZNfYr3OViG9O+ 9jhwd0Fyy1KA73E/Ykex0BK+D6kLNzUjWU7OI0+EJAhrgtAUs2BMswbX3B93QJRXEgaJag LnTZfze6ZYuxQfLjgrqx9ZuMDwGXN7zIxcR/VyMCsDh2xBqhgJ+flUzgaKiXrQ== 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=1775123343; 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=DjrFhSPhHrK4hqK3XCGp50Qxyn/R4UR/cT3iRtXlu0U=; b=HCpZwrtuevFUbyx7AkKwAr+4kcz+BPlt/gXyBdmpygcIK4bNGhTwHQAzioxuBg5gJG3KTS 8WV/Ipw9AN7MaqUtyPRIzBMIl40mNFWG9x0Rgwmp4rT6r+R76SdS+9QcbGW6zMqvOmHiIO orVxPDV6Szh0ToVcT74EPx8XwCjEmhEqQ+8QfwYiHOeSYFgy2/3W2501e8G8xKUUUBBEc7 SMMV8X9rw8pzA/0RSGXPD1g019mSqrsNTwP+MtSQ30FV1/uR8MbZMZtg12+SJJ1hA6QndZ dbeMFtW7PtPYL3+pnWn0qmACyg+neu6EpikQDa4NO0hN1gVNflXvsGG57b97Jg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcWM3DmSzwvc for ; Thu, 02 Apr 2026 09:49:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bb1a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:49:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: c7e5e9642a4c - stable/13 - file: Parse some UFS2 flags List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c7e5e9642a4c40a98450f8377e6519228c965358 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:49:03 +0000 Message-Id: <69ce3b8f.3bb1a.55bfef8f@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c7e5e9642a4c40a98450f8377e6519228c965358 commit c7e5e9642a4c40a98450f8377e6519228c965358 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 11:02:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:48:17 +0000 file: Parse some UFS2 flags This allows libmagic to recognize the FS_DOSOFTDEP, FS_SUJ, FS_GJOURNAL, FS_ACLS, and FS_NFS4ACLS flags on a UFS2 file system. Accepted upstream as 482259e5e952. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56010 (cherry picked from commit fa03f93e8829a7689101303fbe9fb06654ca14ed) --- contrib/file/magic/Magdir/filesystems | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/file/magic/Magdir/filesystems b/contrib/file/magic/Magdir/filesystems index a15e5e74d971..78e9a31bd0e7 100644 --- a/contrib/file/magic/Magdir/filesystems +++ b/contrib/file/magic/Magdir/filesystems @@ -1640,6 +1640,11 @@ >1112 lelong x pending inodes to free %d, >712 lequad x system-wide uuid %0llx, >60 lelong x minimum percentage of free blocks %d, +>1312 lelong&0xa 0x2 soft updates, +>1312 lelong&0xa 0xa soft updates journaling, +>1312 lelong&0x40 0x40 GEOM journaling, +>1312 lelong&0x10 0x10 POSIX.1e ACLs, +>1312 lelong&0x100 0x100 NFSv4 ACLs, >128 lelong 0 TIME optimization >128 lelong 1 SPACE optimization From nobody Thu Apr 2 09:49:04 2026 X-Original-To: dev-commits-src-branches@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 4fmcWN6JJ5z6Y7dG for ; Thu, 02 Apr 2026 09:49:04 +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 4fmcWN4Vd1z42lh for ; Thu, 02 Apr 2026 09:49:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sohPUSqIsFxZK7V3Y89SPj5+8t7PleUf0s/MGhNtfTE=; b=vP5pSTCqn1UWEOJaacnNbtdDBM6frmwJIUYouP7VS7UhiLs+YBtoY7xSfcNITpICDmpN6d 5yj1ybtZfTEUF6oE01iqR9XOcQwbd9HMSq/BYQt5ZWbzV9B1z4KGjjpZ+m+zAcjPLxirO9 A89VtfRd13MjDt/CX8nHQY1/E/gxtDM5vBeMg9WYdCEjocJqMs+yBsJK14ANy1mpJh8Vp1 PLJuWzolc60tdpXcohCd9Oue6h7/Z6tispzkqwJmh+4y7bXd7MYQr2XkLdO3lj7zOShWsW AIyA9LNmY0bAklC1bHkax6SufSibYrDo+vPg3lruyAQ5nX3468F29zwfjdAlPQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123344; a=rsa-sha256; cv=none; b=des5STpoUM5AwTlZosR03HPqyiVOY5kvK1qfFySxnMYjbIJrIzQjHhNXDU1BTdl8PlN1sC 8Dl7ISIky9JikWNQqCPI6K4ia5ejcmfZnerSWt/xcaT/PX5OGi9vfk3g8Boe0JfWYfJpqw ZhLEhVQO7iDwSpGbHX5THG3OiOEK/o+rdKep1kXsNc0BzXQziZsa/jwQqkA0GFBtjZITC2 5EAOvqxaUAVhoBmiV9ScEZ1Knk9i/yaUOoEGahjAZ7obvbcywo+iNDMViRmUqwRZEBIDSQ hKSdgFN4aPQ3tNFj53N6TtvmP/5f/4JyJOT/xP3dpHY5P+ZnqrMdP0LIeZisDA== 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=1775123344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sohPUSqIsFxZK7V3Y89SPj5+8t7PleUf0s/MGhNtfTE=; b=g43xt5FFftKuWMo3JGRC0io1y3upexADjXarSHpjFM3BBlwiy1XAb6sxj+aaIY3KkeCMg2 Gbs+CiADmD8RXM04lgeEZDKJ/hVZFjiIuSVgvJeE0/qbqKoVX6opO/2M5RmF045TDM0+8o at6NpqiPYSIT9dDUubvbXz1jUdBDehNjTiJ/kZVeHc/had+sAFNML2LvP1LFF/sw3pTsBI AGS41qi/SU2wI86Pcq7jOmLnPNQ7a1/Us5HmFBtPJ/yOoasN1QIQTDpBnP50/3XfT/G3ZJ jxlljFSPM01srH1vnLLgcQ4fCOVzHktXHIeC3EsVtfo3mrTKwi9b4LGkxmFmbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcWN43x7zwtd for ; Thu, 02 Apr 2026 09:49:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ad39 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:49:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Marc Espie From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: a6eda8dd2d6b - stable/13 - m4: Stop abbreviating builtin names List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a6eda8dd2d6ba7f2d0d3ddb23f656c174e91d812 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:49:04 +0000 Message-Id: <69ce3b90.3ad39.75e94e9b@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a6eda8dd2d6ba7f2d0d3ddb23f656c174e91d812 commit a6eda8dd2d6ba7f2d0d3ddb23f656c174e91d812 Author: Marc Espie AuthorDate: 2026-03-25 00:41:18 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:48:17 +0000 m4: Stop abbreviating builtin names * Stop abbreviating macro names half-randomly to 8 chars, this is no longer 1990. * Likewise for function names (in particular use doindex for a function that is notably different from the classic index function). * Rename a few things for more fidelity: eval is the builtin name, not expr and your maketemp/mkstemp conform to mkstemp semantics for better security. * Rewrap a few comments that were ludicrously short. No functional changes except improved accuracy of some error messages. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55793 (cherry picked from commit f8f6f1cbd576ab5f15cef178cc05251365652f74) --- usr.bin/m4/eval.c | 184 ++++++++++++++++++++++++---------------------------- usr.bin/m4/extern.h | 2 +- usr.bin/m4/look.c | 6 +- usr.bin/m4/main.c | 65 ++++++++++--------- usr.bin/m4/mdef.h | 88 ++++++++++++------------- usr.bin/m4/misc.c | 2 +- 6 files changed, 168 insertions(+), 179 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index dba903c2ba24..e86af54adb53 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -60,17 +60,17 @@ static void dodefn(const char *); static void dopushdef(const char *, const char *); -static void dodump(const char *[], int); +static void dodumpdef(const char *[], int); static void dotrace(const char *[], int, int); static void doifelse(const char *[], int); -static int doincl(const char *); +static int doinclude(const char *); static int dopaste(const char *); -static void dochq(const char *[], int); -static void dochc(const char *[], int); +static void dochangequote(const char *[], int); +static void dochangecom(const char *[], int); static void dom4wrap(const char *); -static void dodiv(int); -static void doundiv(const char *[], int); -static void dosub(const char *[], int); +static void dodivert(int); +static void doundivert(const char *[], int); +static void dosubstr(const char *[], int); static void map(char *, const char *, const char *, const char *); static const char *handledash(char *, char *, const char *); static void expand_builtin(const char *[], int, int); @@ -108,7 +108,7 @@ eval(const char *argv[], int argc, int td, int is_traced) m4errx(1, "expanding recursive definition for %s.", argv[1]); if (is_traced) mark = trace(argv, argc, infile+ilevel); - if (td == MACRTYPE) + if (td == MACROTYPE) expand_macro(argv, argc); else expand_builtin(argv, argc, td); @@ -149,18 +149,18 @@ expand_builtin(const char *argv[], int argc, int td) switch (td & TYPEMASK) { - case DEFITYPE: + case DEFINETYPE: if (argc > 2) dodefine(argv[2], (argc > 3) ? argv[3] : null); break; - case PUSDTYPE: + case PUSHDEFTYPE: if (argc > 2) dopushdef(argv[2], (argc > 3) ? argv[3] : null); break; - case DUMPTYPE: - dodump(argv, argc); + case DUMPDEFTYPE: + dodumpdef(argv, argc); break; case TRACEONTYPE: @@ -171,10 +171,9 @@ expand_builtin(const char *argv[], int argc, int td) dotrace(argv, argc, 0); break; - case EXPRTYPE: + case EVALTYPE: /* - * doexpr - evaluate arithmetic - * expression + * doeval - evaluate arithmetic expression */ { int base = 10; @@ -184,14 +183,14 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 3) { base = strtonum(argv[3], 2, 36, &errstr); if (errstr) { - m4errx(1, "expr: base is %s: %s.", + m4errx(1, "eval: base is %s: %s.", errstr, argv[3]); } } if (argc > 4) { mindigits = strtonum(argv[4], 0, INT_MAX, &errstr); if (errstr) { - m4errx(1, "expr: mindigits is %s: %s.", + m4errx(1, "eval: mindigits is %s: %s.", errstr, argv[4]); } } @@ -200,15 +199,14 @@ expand_builtin(const char *argv[], int argc, int td) break; } - case IFELTYPE: + case IFELSETYPE: doifelse(argv, argc); break; - case IFDFTYPE: + case IFDEFTYPE: /* - * doifdef - select one of two - * alternatives based on the existence of - * another definition + * doifdef - select one of two alternatives based + * on the existence of another definition */ if (argc > 3) { if (lookup_macro_definition(argv[2]) != NULL) @@ -218,18 +216,16 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case LENGTYPE: + case LENTYPE: /* - * dolen - find the length of the - * argument + * dolen - find the length of the argument */ pbnum((argc > 2) ? strlen(argv[2]) : 0); break; case INCRTYPE: /* - * doincr - increment the value of the - * argument + * doincr - increment the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX-1, &errstr); @@ -242,8 +238,7 @@ expand_builtin(const char *argv[], int argc, int td) case DECRTYPE: /* - * dodecr - decrement the value of the - * argument + * dodecr - decrement the value of the argument */ if (argc > 2) { n = strtonum(argv[2], INT_MIN+1, INT_MAX, &errstr); @@ -254,9 +249,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSCTYPE: + case SYSCMDTYPE: /* - * dosys - execute system command + * dosyscmd - execute system command */ if (argc > 2) { fflush(stdout); @@ -264,10 +259,9 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SYSVTYPE: + case SYSVALTYPE: /* - * dosysval - return value of the last - * system call. + * dosysval - return value of the last system call. * */ pbnum(sysval); @@ -277,9 +271,9 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 2) doesyscmd(argv[2]); break; - case INCLTYPE: + case INCLUDETYPE: if (argc > 2) { - if (!doincl(argv[2])) { + if (!doinclude(argv[2])) { if (mimic_gnu) { warn("%s at line %lu: include(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); @@ -295,19 +289,20 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case SINCTYPE: + case SINCLUDETYPE: + /* like include, but don't error out if file not found */ if (argc > 2) - (void) doincl(argv[2]); + (void) doinclude(argv[2]); break; #ifdef EXTENDED - case PASTTYPE: + case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; - case SPASTYPE: + case SPASTETYPE: if (argc > 2) (void) dopaste(argv[2]); break; @@ -315,28 +310,27 @@ expand_builtin(const char *argv[], int argc, int td) doformat(argv, argc); break; #endif - case CHNQTYPE: - dochq(argv, ac); + case CHANGEQUOTETYPE: + dochangequote(argv, ac); break; - case CHNCTYPE: - dochc(argv, argc); + case CHANGECOMTYPE: + dochangecom(argv, argc); break; - case SUBSTYPE: + case SUBSTRTYPE: /* - * dosub - select substring + * dosubstr - select substring * */ if (argc > 3) - dosub(argv, argc); + dosubstr(argv, argc); break; - case SHIFTYPE: + case SHIFTTYPE: /* - * doshift - push back all arguments - * except the first one (i.e. skip - * argv[2]) + * doshift - push back all arguments except the first one + * (i.e. skip argv[2]) */ if (argc > 3) { for (n = argc - 1; n > 3; n--) { @@ -351,14 +345,14 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DIVRTYPE: + case DIVERTTYPE: if (argc > 2) { n = strtonum(argv[2], INT_MIN, INT_MAX, &errstr); if (errstr) m4errx(1, "divert: argument is %s: %s.", errstr, argv[2]); if (n != 0) { - dodiv(n); + dodivert(n); break; } } @@ -366,42 +360,40 @@ expand_builtin(const char *argv[], int argc, int td) oindex = 0; break; - case UNDVTYPE: - doundiv(argv, argc); + case UNDIVERTTYPE: + doundivert(argv, argc); break; - case DIVNTYPE: + case DIVNUMTYPE: /* - * dodivnum - return the number of - * current output diversion + * dodivnum - return the number of current output diversion */ pbnum(oindex); break; - case UNDFTYPE: + case UNDEFINETYPE: /* - * doundefine - undefine a previously - * defined macro(s) or m4 keyword(s). + * doundefine - undefine a previously defined macro(s) or m4 + * keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_undefine(argv[n]); break; - case POPDTYPE: + case POPDEFTYPE: /* - * dopopdef - remove the topmost - * definitions of macro(s) or m4 - * keyword(s). + * dopopdef - remove the topmost definitions of macro(s) + * or m4 keyword(s). */ if (argc > 2) for (n = 2; n < argc; n++) macro_popdef(argv[n]); break; - case MKTMTYPE: + case MKSTEMPTYPE: /* - * dotemp - create a temporary file + * domkstemp - safely create a temporary file */ if (argc > 2) { int fd; @@ -420,11 +412,10 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case TRNLTYPE: + case TRANSLITTYPE: /* - * dotranslit - replace all characters in - * the source string that appears in the - * "from" string with the corresponding + * dotranslit - replace all characters in the source string + * that appear in the "from" string with the corresponding * characters in the "to" string. */ if (argc > 3) { @@ -441,19 +432,17 @@ expand_builtin(const char *argv[], int argc, int td) pbstr(argv[2]); break; - case INDXTYPE: + case INDEXTYPE: /* - * doindex - find the index of the second - * argument string in the first argument - * string. -1 if not present. + * doindex - find the index of the second argument string + * in the first argument string. -1 if not present. */ - pbnum((argc > 3) ? indx(argv[2], argv[3]) : -1); + pbnum((argc > 3) ? doindex(argv[2], argv[3]) : -1); break; - case ERRPTYPE: + case ERRPRINTTYPE: /* - * doerrp - print the arguments to stderr - * file + * doerrprint - print the arguments to stderr */ if (argc > 2) { for (n = 2; n < argc; n++) @@ -462,16 +451,15 @@ expand_builtin(const char *argv[], int argc, int td) } break; - case DNLNTYPE: + case DNLTYPE: /* - * dodnl - eat-up-to and including - * newline + * dodnl - eat-up-to and including newline */ while ((c = gpbc()) != '\n' && c != EOF) ; break; - case M4WRTYPE: + case M4WRAPTYPE: /* * dom4wrap - set up for * wrap-up/wind-down activity @@ -480,9 +468,9 @@ expand_builtin(const char *argv[], int argc, int td) dom4wrap(argv[2]); break; - case EXITTYPE: + case M4EXITTYPE: /* - * doexit - immediate exit from m4. + * dom4exit - immediate exit from m4. */ killdiv(); exit((argc > 2) ? atoi(argv[2]) : 0); @@ -504,7 +492,7 @@ expand_builtin(const char *argv[], int argc, int td) dobuiltin(argv, argc); break; - case PATSTYPE: + case PATSUBSTTYPE: if (argc > 2) dopatsubst(argv, argc); break; @@ -625,7 +613,7 @@ dodefn(const char *name) struct macro_definition *p; if ((p = lookup_macro_definition(name)) != NULL) { - if ((p->type & TYPEMASK) == MACRTYPE) { + if ((p->type & TYPEMASK) == MACROTYPE) { pbstr(rquote); pbstr(p->defn); pbstr(lquote); @@ -661,7 +649,7 @@ dump_one_def(const char *name, struct macro_definition *p) if (!traceout) traceout = stderr; if (mimic_gnu) { - if ((p->type & TYPEMASK) == MACRTYPE) + if ((p->type & TYPEMASK) == MACROTYPE) fprintf(traceout, "%s:\t%s\n", name, p->defn); else { fprintf(traceout, "%s:\t<%s>\n", name, p->defn); @@ -676,7 +664,7 @@ dump_one_def(const char *name, struct macro_definition *p) * hash table is dumped. */ static void -dodump(const char *argv[], int argc) +dodumpdef(const char *argv[], int argc) { int n; struct macro_definition *p; @@ -728,7 +716,7 @@ doifelse(const char *argv[], int argc) * doinclude - include a given file. */ static int -doincl(const char *ifile) +doinclude(const char *ifile) { if (ilevel + 1 == MAXINP) m4errx(1, "too many include files."); @@ -765,10 +753,10 @@ dopaste(const char *pfile) #endif /* - * dochq - change quote characters + * dochangequote - change quote characters */ static void -dochq(const char *argv[], int ac) +dochangequote(const char *argv[], int ac) { if (ac == 2) { lquote[0] = LQUOTE; lquote[1] = EOS; @@ -784,10 +772,10 @@ dochq(const char *argv[], int ac) } /* - * dochc - change comment characters + * dochangecom - change comment characters */ static void -dochc(const char *argv[], int argc) +dochangecom(const char *argv[], int argc) { /* XXX Note that there is no difference between no argument and a single * empty argument. @@ -826,7 +814,7 @@ dom4wrap(const char *text) * dodivert - divert the output to a temporary file */ static void -dodiv(int n) +dodivert(int n) { int fd; @@ -856,7 +844,7 @@ dodiv(int n) * other outputs, in numerical order. */ static void -doundiv(const char *argv[], int argc) +doundivert(const char *argv[], int argc) { int ind; int n; @@ -881,10 +869,10 @@ doundiv(const char *argv[], int argc) } /* - * dosub - select substring + * dosubstr - select substring */ static void -dosub(const char *argv[], int argc) +dosubstr(const char *argv[], int argc) { const char *ap, *fc, *k; int nc; diff --git a/usr.bin/m4/extern.h b/usr.bin/m4/extern.h index 07e831796822..110a19edcc8d 100644 --- a/usr.bin/m4/extern.h +++ b/usr.bin/m4/extern.h @@ -97,7 +97,7 @@ extern int exit_code; extern void chrsave(int); extern char *compute_prevep(void); extern void getdiv(int); -extern ptrdiff_t indx(const char *, const char *); +extern ptrdiff_t doindex(const char *, const char *); extern void initspaces(void); extern void killdiv(void); extern void onintr(int); diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index d7ad94b18bd0..a7e6d87b0494 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -127,7 +127,7 @@ setup_definition(struct macro_definition *d, const char *defn, const char *name) d->defn = __DECONST(char *, null); else d->defn = xstrdup(defn); - d->type = MACRTYPE; + d->type = MACROTYPE; } if (STREQ(name, defn)) d->type |= RECDEF; @@ -146,7 +146,7 @@ create_entry(const char *name) n = ohash_create_entry(¯o_info, name, &end); ohash_insert(¯os, i, n); n->trace_flags = FLAG_NO_TRACE; - n->builtin_type = MACRTYPE; + n->builtin_type = MACROTYPE; n->d = NULL; } return n; @@ -271,7 +271,7 @@ macro_getbuiltin(const char *name) ndptr p; p = lookup(name); - if (p == NULL || p->builtin_type == MACRTYPE) + if (p == NULL || p->builtin_type == MACROTYPE) return NULL; else return p; diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index d68069cb10a8..6e4e79b2a414 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -105,53 +105,54 @@ struct keyblk { }; static struct keyblk keywrds[] = { /* m4 keywords to be installed */ - { "include", INCLTYPE }, - { "sinclude", SINCTYPE }, - { "define", DEFITYPE }, + { "include", INCLUDETYPE }, + { "sinclude", SINCLUDETYPE }, + { "define", DEFINETYPE }, { "defn", DEFNTYPE }, - { "divert", DIVRTYPE | NOARGS }, - { "expr", EXPRTYPE }, - { "eval", EXPRTYPE }, - { "substr", SUBSTYPE }, - { "ifelse", IFELTYPE }, - { "ifdef", IFDFTYPE }, - { "len", LENGTYPE }, + { "divert", DIVERTTYPE | NOARGS }, + { "eval", EVALTYPE }, + { "expr", EVALTYPE }, + { "substr", SUBSTRTYPE }, + { "ifelse", IFELSETYPE }, + { "ifdef", IFDEFTYPE }, + { "len", LENTYPE }, { "incr", INCRTYPE }, { "decr", DECRTYPE }, - { "dnl", DNLNTYPE | NOARGS }, - { "changequote", CHNQTYPE | NOARGS }, - { "changecom", CHNCTYPE | NOARGS }, - { "index", INDXTYPE }, + { "dnl", DNLTYPE | NOARGS }, + { "changequote", CHANGEQUOTETYPE | NOARGS }, + { "changecom", CHANGECOMTYPE | NOARGS }, + { "index", INDEXTYPE }, #ifdef EXTENDED - { "paste", PASTTYPE }, - { "spaste", SPASTYPE }, + { "paste", PASTETYPE }, + { "spaste", SPASTETYPE }, /* Newer extensions, needed to handle gnu-m4 scripts */ { "indir", INDIRTYPE}, { "builtin", BUILTINTYPE}, - { "patsubst", PATSTYPE}, + { "patsubst", PATSUBSTTYPE}, { "regexp", REGEXPTYPE}, { "esyscmd", ESYSCMDTYPE}, { "__file__", FILENAMETYPE | NOARGS}, { "__line__", LINETYPE | NOARGS}, #endif - { "popdef", POPDTYPE }, - { "pushdef", PUSDTYPE }, - { "dumpdef", DUMPTYPE | NOARGS }, - { "shift", SHIFTYPE | NOARGS }, - { "translit", TRNLTYPE }, - { "undefine", UNDFTYPE }, - { "undivert", UNDVTYPE | NOARGS }, - { "divnum", DIVNTYPE | NOARGS }, - { "maketemp", MKTMTYPE }, - { "mkstemp", MKTMTYPE }, - { "errprint", ERRPTYPE | NOARGS }, - { "m4wrap", M4WRTYPE | NOARGS }, - { "m4exit", EXITTYPE | NOARGS }, - { "syscmd", SYSCTYPE }, - { "sysval", SYSVTYPE | NOARGS }, + { "popdef", POPDEFTYPE }, + { "pushdef", PUSHDEFTYPE }, + { "dumpdef", DUMPDEFTYPE | NOARGS }, + { "shift", SHIFTTYPE | NOARGS }, + { "translit", TRANSLITTYPE }, + { "undefine", UNDEFINETYPE }, + { "undivert", UNDIVERTTYPE | NOARGS }, + { "divnum", DIVNUMTYPE | NOARGS }, + { "maketemp", MKSTEMPTYPE }, + { "mkstemp", MKSTEMPTYPE }, + { "errprint", ERRPRINTTYPE | NOARGS }, + { "m4wrap", M4WRAPTYPE | NOARGS }, + { "m4exit", M4EXITTYPE | NOARGS }, + { "syscmd", SYSCMDTYPE }, + { "sysval", SYSVALTYPE | NOARGS }, { "traceon", TRACEONTYPE | NOARGS }, { "traceoff", TRACEOFFTYPE | NOARGS }, +/* Macro that expands to itself, signature of the current OS */ { "unix", SELFTYPE | NOARGS }, }; diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index 6d738876b22a..86960e3741e1 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -43,50 +43,50 @@ # define UNUSED #endif -#define MACRTYPE 1 -#define DEFITYPE 2 -#define EXPRTYPE 3 -#define SUBSTYPE 4 -#define IFELTYPE 5 -#define LENGTYPE 6 -#define CHNQTYPE 7 -#define SYSCTYPE 8 -#define UNDFTYPE 9 -#define INCLTYPE 10 -#define SINCTYPE 11 -#define PASTTYPE 12 -#define SPASTYPE 13 -#define INCRTYPE 14 -#define IFDFTYPE 15 -#define PUSDTYPE 16 -#define POPDTYPE 17 -#define SHIFTYPE 18 -#define DECRTYPE 19 -#define DIVRTYPE 20 -#define UNDVTYPE 21 -#define DIVNTYPE 22 -#define MKTMTYPE 23 -#define ERRPTYPE 24 -#define M4WRTYPE 25 -#define TRNLTYPE 26 -#define DNLNTYPE 27 -#define DUMPTYPE 28 -#define CHNCTYPE 29 -#define INDXTYPE 30 -#define SYSVTYPE 31 -#define EXITTYPE 32 -#define DEFNTYPE 33 -#define SELFTYPE 34 -#define INDIRTYPE 35 -#define BUILTINTYPE 36 -#define PATSTYPE 37 -#define FILENAMETYPE 38 -#define LINETYPE 39 -#define REGEXPTYPE 40 -#define ESYSCMDTYPE 41 -#define TRACEONTYPE 42 -#define TRACEOFFTYPE 43 -#define FORMATTYPE 44 +#define MACROTYPE 1 +#define DEFINETYPE 2 +#define EVALTYPE 3 +#define SUBSTRTYPE 4 +#define IFELSETYPE 5 +#define LENTYPE 6 +#define CHANGEQUOTETYPE 7 +#define SYSCMDTYPE 8 +#define UNDEFINETYPE 9 +#define INCLUDETYPE 10 +#define SINCLUDETYPE 11 +#define PASTETYPE 12 +#define SPASTETYPE 13 +#define INCRTYPE 14 +#define IFDEFTYPE 15 +#define PUSHDEFTYPE 16 +#define POPDEFTYPE 17 +#define SHIFTTYPE 18 +#define DECRTYPE 19 +#define DIVERTTYPE 20 +#define UNDIVERTTYPE 21 +#define DIVNUMTYPE 22 +#define MKSTEMPTYPE 23 +#define ERRPRINTTYPE 24 +#define M4WRAPTYPE 25 +#define TRANSLITTYPE 26 +#define DNLTYPE 27 +#define DUMPDEFTYPE 28 +#define CHANGECOMTYPE 29 +#define INDEXTYPE 30 +#define SYSVALTYPE 31 +#define M4EXITTYPE 32 +#define DEFNTYPE 33 +#define SELFTYPE 34 +#define INDIRTYPE 35 +#define BUILTINTYPE 36 +#define PATSUBSTTYPE 37 +#define FILENAMETYPE 38 +#define LINETYPE 39 +#define REGEXPTYPE 40 +#define ESYSCMDTYPE 41 +#define TRACEONTYPE 42 +#define TRACEOFFTYPE 43 +#define FORMATTYPE 44 #define BUILTIN_MARKER "__builtin_" diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index a6abce4936b4..ca37dc3c4593 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -69,7 +69,7 @@ unsigned char *endpbb; /* end of push-back buffer */ * find the index of second str in the first str. */ ptrdiff_t -indx(const char *s1, const char *s2) +doindex(const char *s1, const char *s2) { char *t; From nobody Thu Apr 2 09:49:05 2026 X-Original-To: dev-commits-src-branches@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 4fmcWP6dMkz6Y7dM for ; Thu, 02 Apr 2026 09:49:05 +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 4fmcWP51K8z42tY for ; Thu, 02 Apr 2026 09:49:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123345; 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=lPjfMvfY6gAW1VQ1EQO1hs3wiC3mug3bL4JyMPeGGzI=; b=B2zz82742Os1mXypLjuIDJAuLQfO6x5uf8ztZAuRYx90paTvMyVx+3WOTgXS1Y8h7MBQOv 28SEQ9ppFR5VY349eP6quu2iK2f2GVn1lrZykoKmodAa2seII4UwNc64csmppKjZ0thR9/ 0fyn2j68V+rg7fGfD7Ce4g4Yh/ufU50Db0mtWeTYIG3u99dgv+FMrxHDt+3CwCBdSn+xYG POyFM2iquabqcwWumofLIHNzySt6WZJ8GErYgz89VXmcVPbyFwcoND3W3jeE+So+hpP+Av Q+JcQYzqmSfc9hYvEDmSci4XO8m8CBN2R+x7bJ0K/5d5p6XcEWIZjXkQB5Rr4g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123345; a=rsa-sha256; cv=none; b=fTNpHOQzg+zneK0eLEGl6yy/m+UuD5yhdF6QQqFLtQX6IPnrPC8ETF6ewsjMQXQQvHuj9A bC+kegxIe4Nvt1cFABJ7bR4jFCh+wS1iJA5ciQTkC7S8+dFVk/qLBEq3qD64DY3Imu+0cr ARORVeFTDl9H7vwhhIVdHyx+DVTb/MX3pcvTxKfbeY9A/xoJxC4pI8kHVHCgF4QNfZKIUs VPkZf9k9JqBgPwNZ4wgk49otmSSQ+XTDH0zcGoQfioo1NMQ9w/F3XBJ7zxq5l+pjauxKvz xdLaFynIHtHt2VNX9MYF/Mw3+Rc8IkArH1XNrvj4z0wJqpBLP1Lzrr5wJRi8Uw== 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=1775123345; 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=lPjfMvfY6gAW1VQ1EQO1hs3wiC3mug3bL4JyMPeGGzI=; b=QmmjeFgryc+4Oh3SawAYRnojHVdo+1EuWbHV1mkyOuOzMRLVcEPfeyhc9NLWevSeDPY6mG BryXsAPJNJZwzz9std1Ng2WClgY6cipiQTXsI/pOB9y4eJOwKp+EmrVz1tHJvI/jS/IaWI MXAl3CiRhd7JsZovbrcYJKf/96qzFAts/Fnd3tK9qBj9sSgPehtaNUbOk4Sb7Pc5ssyTJ1 ZPMuA5OLEJG7LDmQtPAeVG6HjdhGtMPJYhsvv8KUtj7Zgw1e3CMJez25u+mAlySXvBtc46 +lZw08y/4KyyN4tGif2W1ipMhDc4vZtQ6U5O+12Q399V2kYFMBXOT/+fBGGmGw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcWP4WT9zwLg for ; Thu, 02 Apr 2026 09:49:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b2b9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:49:05 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: bc735d80e2e8 - stable/13 - m4: Misc style fixes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bc735d80e2e8af03b2b5ae269080761659970d65 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:49:05 +0000 Message-Id: <69ce3b91.3b2b9.6ff2d348@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=bc735d80e2e8af03b2b5ae269080761659970d65 commit bc735d80e2e8af03b2b5ae269080761659970d65 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-25 00:41:23 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:48:17 +0000 m4: Misc style fixes MFC after: 1 week Reviewed by: fuz Differential Revision: https://reviews.freebsd.org/D55794 (cherry picked from commit 41474e78c493184f023723d1f86539e07bb01b92) --- usr.bin/m4/eval.c | 18 +++++++++--------- usr.bin/m4/expr.c | 2 +- usr.bin/m4/look.c | 17 +++++++++-------- usr.bin/m4/main.c | 5 ++--- usr.bin/m4/mdef.h | 2 +- usr.bin/m4/misc.c | 12 +++++------- 6 files changed, 27 insertions(+), 29 deletions(-) diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index e86af54adb53..50cdd5536d6e 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -298,7 +298,7 @@ expand_builtin(const char *argv[], int argc, int td) case PASTETYPE: if (argc > 2) if (!dopaste(argv[2])) - err(1, "%s at line %lu: paste(%s)", + err(1, "%s at line %lu: paste(%s)", CURRENT_NAME, CURRENT_LINE, argv[2]); break; @@ -353,7 +353,7 @@ expand_builtin(const char *argv[], int argc, int td) errstr, argv[2]); if (n != 0) { dodivert(n); - break; + break; } } active = stdout; @@ -900,11 +900,11 @@ dosubstr(const char *argv[], int argc) * map every character of s1 that is specified in from * into s3 and replace in s. (source s1 remains untouched) * - * This is derived from the a standard implementation of map(s,from,to) - * function of ICON language. Within mapvec, we replace every character - * of "from" with the corresponding character in "to". - * If "to" is shorter than "from", than the corresponding entries are null, - * which means that those characters disappear altogether. + * This is derived from the a standard implementation of map(s,from,to) + * function of ICON language. Within mapvec, we replace every character + * of "from" with the corresponding character in "to". + * If "to" is shorter than "from", than the corresponding entries are null, + * which means that those characters disappear altogether. */ static void map(char *dest, const char *src, const char *from, const char *to) @@ -994,7 +994,7 @@ handledash(char *buffer, char *end, const char *src) if (src[1] == '-' && src[2]) { unsigned char i; if ((unsigned char)src[0] <= (unsigned char)src[2]) { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i <= (unsigned char)src[2]; i++) { *p++ = i; if (p == end) { @@ -1003,7 +1003,7 @@ handledash(char *buffer, char *end, const char *src) } } } else { - for (i = (unsigned char)src[0]; + for (i = (unsigned char)src[0]; i >= (unsigned char)src[2]; i--) { *p++ = i; if (p == end) { diff --git a/usr.bin/m4/expr.c b/usr.bin/m4/expr.c index 7910403d74f0..859be1557d83 100644 --- a/usr.bin/m4/expr.c +++ b/usr.bin/m4/expr.c @@ -32,7 +32,7 @@ int yyerror(const char *msg) { fprintf(stderr, "m4: %s in expr %s\n", msg, copy_toeval); - return(0); + return 0; } int diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index a7e6d87b0494..c1fccd7dd8e5 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -137,8 +137,8 @@ static ndptr create_entry(const char *name) { const char *end = NULL; - unsigned int i; ndptr n; + unsigned int i; i = ohash_qlookupi(¯os, name, &end); n = ohash_find(¯os, i); @@ -156,6 +156,7 @@ void macro_define(const char *name, const char *defn) { ndptr n = create_entry(name); + if (n->d != NULL) { if (n->d->defn != null) free_definition(n->d->defn); @@ -183,6 +184,7 @@ void macro_undefine(const char *name) { ndptr n = lookup(name); + if (n != NULL) { struct macro_definition *r, *r2; @@ -295,21 +297,21 @@ keep(char *ptr) kept_capacity *= 2; else kept_capacity = 50; - kept = xreallocarray(kept, kept_capacity, - sizeof(char *), "Out of memory while saving %d strings\n", + kept = xreallocarray(kept, kept_capacity, + sizeof(char *), "Out of memory while saving %d strings\n", kept_capacity); } kept[kept_size++] = ptr; } static int -string_in_use(const char *ptr) +string_in_use(const char *ptr) { int i; - for (i = 0; i <= sp; i++) { + + for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_MACRO && mstack[i].sstr == ptr) return 1; - } return 0; } @@ -324,7 +326,7 @@ free_definition(char *ptr) if (!string_in_use(kept[i])) { kept_size--; free(kept[i]); - if (i != kept_size) + if (i != kept_size) kept[i] = kept[kept_size]; i--; } @@ -336,4 +338,3 @@ free_definition(char *ptr) else free(ptr); } - diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index 6e4e79b2a414..5daae7fd22c2 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -86,7 +86,7 @@ int maxout; FILE *active; /* active output file pointer */ int ilevel = 0; /* input file stack pointer */ int oindex = 0; /* diversion index.. */ -const char *null = ""; /* as it says.. just a null.. */ +const char *null = ""; /* as it says.. just a null.. */ char **m4wraps = NULL; /* m4wraps array. */ int maxwraps = 0; /* size of m4wraps array */ int wrapindex = 0; /* current offset in m4wraps */ @@ -388,8 +388,7 @@ macro(void) CHRSAVE(l); } } - } - while (nlpar != 0); + } while (nlpar != 0); } else if (sp < 0 && LOOK_AHEAD(t, scommt)) { reallyoutputstr(scommt); diff --git a/usr.bin/m4/mdef.h b/usr.bin/m4/mdef.h index 86960e3741e1..424bdc91b241 100644 --- a/usr.bin/m4/mdef.h +++ b/usr.bin/m4/mdef.h @@ -206,7 +206,7 @@ struct input_file { mstack[sp].sstr = macro_getdef(p)->defn;\ sstack[sp] = STORAGE_MACRO; \ } while (0) - + /* * . . diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index ca37dc3c4593..84aeac6c27b5 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -136,8 +136,7 @@ pbnumbase(int n, int base, int d) do { pushback(digits[num % base]); printed++; - } - while ((num /= base) > 0); + } while ((num /= base) > 0); while (printed++ < d) pushback('0'); @@ -154,8 +153,7 @@ pbunsigned(unsigned long n) { do { pushback(n % 10 + '0'); - } - while ((n /= 10) > 0); + } while ((n /= 10) > 0); } void @@ -187,9 +185,9 @@ enlarge_strspace(void) memcpy(newstrspace, strspace, strsize/2); for (i = 0; i <= sp; i++) if (sstack[i] == STORAGE_STRSPACE) - mstack[i].sstr = (mstack[i].sstr - strspace) - + newstrspace; - ep = (ep-strspace) + newstrspace; + mstack[i].sstr = (mstack[i].sstr - strspace) + + newstrspace; + ep = (ep - strspace) + newstrspace; free(strspace); strspace = newstrspace; endest = strspace + strsize; From nobody Thu Apr 2 09:56:52 2026 X-Original-To: dev-commits-src-branches@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 4fmchP16CRz6Y7jQ for ; Thu, 02 Apr 2026 09:56:53 +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 4fmchN56lJz45RC for ; Thu, 02 Apr 2026 09:56:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123812; 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=5qrgFGAQogPUZy9EouOWO6v9U/pIuyefTGoGLRqtpq4=; b=Re22beY5SXRoRHab2/02JowKlSflPXKLckn5KBLAacPXEy3hFOyU2UwuwrrkSEUjhLx/vJ 3VG1Za2OfeSgkhVXeGh9aMWDb6J9EXyux1/c6j3eroaBFHV6rCCOzBZgA0sObbqPNcKvJd GbhVQ713OFV65eHL0GcuaFaDc7P74BU8m67Pv8C+jmrHWjD//nM6aWueeJyHEYVuqXw1vI WvEzcYJ641LqEwMcywDB8SHrqnjxz2RKOgNH42+5i+MCp27iHNJyY+Sa4JSq2wLpZZRKnX QQ1TbLxAQeosRjphsefJ8RRbRYSK4j+UJ01jAFQH/E6bXrWU2n/22O8Yu5FUaQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123812; a=rsa-sha256; cv=none; b=HsrUyengihxfCrQzC9uBxDbUy1zzcuhjfPi8pa8RC9SPzy4Qy2zTJw5UomFUNqkbFu/peB u0sW9SLz1Erb2fjXmL7Dbo/UIRSQMpUFuxGNMMGiYmzh7samBQRKJqHTfTB0VfXm5STJLk jj3oE04ojW/8w710thQ7MWomEUEFZWL0SlWP4LX2AX+4DaVjb71iPvSn1tFwQ7kqn5AS8b Q/wcapBG0pzNpz25IqjJlLeHAh0iLWRA7lV9Wx5pPkuc37AbPbXRQ456d1so94EOTDxIZp oD1Eu2MeejQTINpLH13dgLezfDNAB5fyil6cf3WXpDh253Y63mFN9hOtO2ETOQ== 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=1775123812; 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=5qrgFGAQogPUZy9EouOWO6v9U/pIuyefTGoGLRqtpq4=; b=GZxf5Dhc0g7xSLLop1v92tJtQS/ViZkQPm6UPpmxdSvQsIRvdoHvejOtzG7IC+gNE/9fRw tzmQ2lsWNSJbhCtssDa0/R1+ee6P/fZ/7UJ7K7RHjRc+VepHzLp8FxUqIbVELVOG7s1z53 Dxfv2qV/0vYN6jsQwQADjq+nNDMbe7Jm5+m3WL9eMfbuVtYACiBS3FHsI+4riRNwlwGsbA Z6xnuPgak6U9MCDxt+UVbeVF3o1ve23MjE4E0bjt8p8mOZz93EJ5NZFovcNm2nmt07tsDt WlWVm7wbnWnWFAi8sVyIwjbx0ry2gipoRrtXwfVjl5HYVYvbAe3yLkL7uYWWpg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmchN4TlrzwwN for ; Thu, 02 Apr 2026 09:56:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3bdb5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:56:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 25b35dc82b46 - stable/15 - syslogd: Allow killing when in foreground List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 25b35dc82b467efada14ff2892d4460f0b3716f0 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:56:52 +0000 Message-Id: <69ce3d64.3bdb5.50de29ad@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=25b35dc82b467efada14ff2892d4460f0b3716f0 commit 25b35dc82b467efada14ff2892d4460f0b3716f0 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 10:58:53 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:51:00 +0000 syslogd: Allow killing when in foreground Normally, syslogd reacts only to SIGTERM, and ignores SIGINT and SIGQUIT unless in debug mode. Extend that to also apply when running in the foreground. Take this opportunity to comment the event loop. MFC after: 1 week Reviewed by: jfree Differential Revision: https://reviews.freebsd.org/D55886 (cherry picked from commit 828de702ada854b5f09f447ba06e4e08e976ba07) --- usr.sbin/syslogd/syslogd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 20051bb4fa00..ee15fa70807d 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -781,15 +781,21 @@ main(int argc, char *argv[]) case EVFILT_SIGNAL: switch (ev.ident) { case SIGHUP: + /* Reload */ init(true); break; case SIGINT: case SIGQUIT: + /* Ignore these unless -F and / or -d */ + if (!Foreground && !Debug) + break; + /* FALLTHROUGH */ case SIGTERM: - if (ev.ident == SIGTERM || Debug) - die(ev.ident); + /* Terminate */ + die(ev.ident); break; case SIGALRM: + /* Mark and flush */ markit(); break; } From nobody Thu Apr 2 09:56:59 2026 X-Original-To: dev-commits-src-branches@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 4fmchX28xxz6Y7jW for ; Thu, 02 Apr 2026 09:57:00 +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 4fmchW6rJRz454V for ; Thu, 02 Apr 2026 09:56:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123820; 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=nD2gvUvhqa2qNSzZwkY5rltsCyqiLIWxtNgnV5P7ze8=; b=jQQHbQAp3MTkEpp7IcJTPjbl8DlizPq+QgmHlwu7r/h7ocPcDRLbgXvs2eJRaTeKojn6Jm 8Gzq4tPAnstl+5vbxwCPp6YpJKbsBOwJ3V0xCFWwE/+bfwd1CNpmd68b0Iu6HgUA6RF6Fn PIeYNBYI27OMZHwlZVAE+1uOlTT6wpfwuHJVdvTt7TD9/P2+Vyr8PXL71V8R+B056q9gH9 xrY4EDTNFhhR3d4xlMuFSFWwcYhi12GNrYmsziEzw+JNsGcpjtlMJlGSxQqqyncbXU+2BV ZDYyVPSbSLKctXc8sJgmBXP7AaImb+I7CH5EmA3bZt392F2CXrDWQ3cwVvQdIQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123820; a=rsa-sha256; cv=none; b=lygbFw4Vi7CM0YrcIHEbwQOP4ODD85XSZMoO2BKYuyCLympV/01cnheI2VAOBIK4z6Oe+s JxuTE88n4NyvHu5hfpx4BzilZ9jR2QtB4dzhOTw2aFwmIH7F4wzjwOmXgX+S4zjrPyrI8M 5AW8vzqVuYpibWsWhjqq7AVfxle0E9Xs+HpR4XReTMTTOQYOo4JFG+CrDq3wkOMevm44X/ eVJd05aMiC6ZjLx8WjROIi4mqxICpfY68fRDlhEErbqio5IG1lfaZHUi1tESR/gZYuQa0W oS6TGkVoV6FjROgOXTKLdGX1LVRTRM456FvMQbiwuT4XszqDoF++bxvChOjmng== 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=1775123820; 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=nD2gvUvhqa2qNSzZwkY5rltsCyqiLIWxtNgnV5P7ze8=; b=yjZW3S4O4nr7vDXPU2tih6pjJhzY33cCjOUw1bbwKQZm9Vc3+cryI0lzzkQbpr0RudYqYc S68OwZeUZFUufQ6kL8TF7qRqO1dO1HN1CvTCbXCfi2idpFM4+Na1jvq30L3Cdl3IHS+Lm8 udPHaUSqFbIT2onab8zTI0S5sLcVoJ7rfCnC/drhk7CA4HGRpuaduVxAJK51lg66eVt8Qi AqF+TaoyTambCTuoRTfunwCYcgzABPRCWbSDia6gRUkxJHy5x1hvW3d4BmlHwDJtjP6bo+ YnjwvPJflWSkjjeoFqydhgKqIuH8HSlTyFjE0Wms72m6kyL2t72XIibO9gYNaw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmchW6QRdzwwQ for ; Thu, 02 Apr 2026 09:56:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3aced by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:56:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: bc249f68c569 - stable/14 - syslogd: Allow killing when in foreground List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bc249f68c569efee2ba70319e5bcfe942fd7620e Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:56:59 +0000 Message-Id: <69ce3d6b.3aced.18c72e5a@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=bc249f68c569efee2ba70319e5bcfe942fd7620e commit bc249f68c569efee2ba70319e5bcfe942fd7620e Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 10:58:53 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:56:10 +0000 syslogd: Allow killing when in foreground Normally, syslogd reacts only to SIGTERM, and ignores SIGINT and SIGQUIT unless in debug mode. Extend that to also apply when running in the foreground. MFC after: 1 week Reviewed by: jfree Differential Revision: https://reviews.freebsd.org/D55886 (cherry picked from commit 828de702ada854b5f09f447ba06e4e08e976ba07) --- usr.sbin/syslogd/syslogd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 7356fb3fa43f..be12e8db7b85 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -781,8 +781,8 @@ main(int argc, char *argv[]) sizeof(consfile.fu_fname)); (void)strlcpy(bootfile, getbootfile(), sizeof(bootfile)); (void)signal(SIGTERM, dodie); - (void)signal(SIGINT, Debug ? dodie : SIG_IGN); - (void)signal(SIGQUIT, Debug ? dodie : SIG_IGN); + (void)signal(SIGINT, (Foreground || Debug) ? dodie : SIG_IGN); + (void)signal(SIGQUIT, (Foreground || Debug) ? dodie : SIG_IGN); (void)signal(SIGHUP, sighandler); (void)signal(SIGCHLD, sighandler); (void)signal(SIGALRM, domark); From nobody Thu Apr 2 09:57:07 2026 X-Original-To: dev-commits-src-branches@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 4fmchg3t6lz6Y7y0 for ; Thu, 02 Apr 2026 09:57:07 +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 4fmchg1jzvz45Tp for ; Thu, 02 Apr 2026 09:57:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775123827; 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=tZ34ChcmGb8nRjoZFTXxaiq2pSztN1ZUzrKYfGIhvQw=; b=b+5lW8yG3sTkThPQ9YJ0WahL2EM2iICuf/gK61raJWPvwn/25oeyOtC6tdnruxsOAtquId JGjoMrAFP8g1Jv6D0+MBEe/rp9UL5bPDWolpL4pOviRkCyIiM4JRJ5piZVdWbtMxokNOUg gofmBXdq+/sBtJ22wohG0s3KDoMXrEXIh5i7Tp980RtWuknJPJtyWFLrbXkD7YV0P2dwfe 4GNOgsehpCq8bZADHfx+cscyRJbt3tHxbywfF7EEQIzIH+tNoy9Qu8Nm9HYXozz+7dpPMl ZU5akTQz7xuB0d2lKoTCiJhFm0+VsQgNJM6OqSFqTMLTezhjMafMCHhaHxS8Rw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775123827; a=rsa-sha256; cv=none; b=DJWJLwQYmJpdIJUrx5JOXMzYZceCmfOPO3M99B3PoqujA8qrYc9otjSrwBwKr7X4iOmEyp jBH/31RQZ2QQ/cCtH6aDkVmWzLBlD6+Xn7lzbs8BnANnXD/ALzyQhSQl27Kc0IeT/FozFh lEVYSYtqVZ/etjkbHGb4dorjhFikbPEwXUsNQnqPB3z512SWERNNi7NHnHKsIcwqKW8iyO dZ8HZep0sGVBK+KJiwMm7Ta2KBVVSr81QS4PANQTMoN9KBIMaf4yzlWt9KzURC3QvrqFnI ERFxgVg04AciheyOzWEqAsNAyPcFW13NMs59Wur1Lt+aGd7l7uc/RZEtms5E9Q== 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=1775123827; 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=tZ34ChcmGb8nRjoZFTXxaiq2pSztN1ZUzrKYfGIhvQw=; b=nqHRzwUJ+tpIQbeuvFxXcXMRrBXUXC1SBoql45+6IzTlErp3p8z/iGS+XeScTkJTVhSd0w la1wL4KGq2qCNk/ThZSdjLfadIdFxLeFEt8iTK/h0D73eM28cOQu/If4aIHxx4Q5voruCH aP39mMnevfsxhSlmez1Mw/fUqoZe/qDTL0T0osASycToErgpGxbixayrcX38WiYo14kuzb Sj8/7YO1o0SvSy//J8KKn/u2ilU9pOeCVuntqTThh9/KlaYmScSL+0gAM7TR8wOpvEXvqY r0lqHe7PuVndg0gdPQzlk7DawsAHFRcDsthJeDU1goZGdFqw+/nXKQY2LqXQVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmchg1FqGzxFd for ; Thu, 02 Apr 2026 09:57:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ad64 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 09:57:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 0d995ef541d7 - stable/13 - syslogd: Allow killing when in foreground List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0d995ef541d79c79098ebf122693d7a3f1b5f25b Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 09:57:07 +0000 Message-Id: <69ce3d73.3ad64.325fccc4@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=0d995ef541d79c79098ebf122693d7a3f1b5f25b commit 0d995ef541d79c79098ebf122693d7a3f1b5f25b Author: Dag-Erling Smørgrav AuthorDate: 2026-03-24 10:58:53 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 09:56:21 +0000 syslogd: Allow killing when in foreground Normally, syslogd reacts only to SIGTERM, and ignores SIGINT and SIGQUIT unless in debug mode. Extend that to also apply when running in the foreground. MFC after: 1 week Reviewed by: jfree Differential Revision: https://reviews.freebsd.org/D55886 (cherry picked from commit 828de702ada854b5f09f447ba06e4e08e976ba07) --- usr.sbin/syslogd/syslogd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index e78e2327be3b..c390c3930a0e 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -781,8 +781,8 @@ main(int argc, char *argv[]) sizeof(consfile.fu_fname)); (void)strlcpy(bootfile, getbootfile(), sizeof(bootfile)); (void)signal(SIGTERM, dodie); - (void)signal(SIGINT, Debug ? dodie : SIG_IGN); - (void)signal(SIGQUIT, Debug ? dodie : SIG_IGN); + (void)signal(SIGINT, (Foreground || Debug) ? dodie : SIG_IGN); + (void)signal(SIGQUIT, (Foreground || Debug) ? dodie : SIG_IGN); (void)signal(SIGHUP, sighandler); (void)signal(SIGCHLD, sighandler); (void)signal(SIGALRM, domark); From nobody Thu Apr 2 10:03:22 2026 X-Original-To: dev-commits-src-branches@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 4fmcqt6Mmfz6Y8Wl for ; Thu, 02 Apr 2026 10:03:22 +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 4fmcqt5fw7z46jQ for ; Thu, 02 Apr 2026 10:03:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124202; 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=ZXtRlTxk3HlJFyCElgJnhP4Xt7ZPX1HOvd9Js1bJiXA=; b=dnkMxPq3iUIbBN2waVZ1ch78QOgUgzYVo/wI3njxebKXzoyynOFMCFuvHhoRrfW5s0EDje B6VfkoJXhrZaXFXdTQHYRlf00VfYfmIQEVSrxls3EdzUSNqyR5bz858zNLsHORki1/NIgQ 4an+1frVZlPNJXm/g+LadxVBrAxDZlkyDGUbugjJ7juYo8+dJPzMurDcHNIPNzXWKWP0R3 ewD4dYCguZrxMpmGIM0auWdwFmrPiMTpKdoZvvspox6pNHYnnpnaATgBOyh8ngdqDIpFLF KGXTDaOKtRx9jOQX443khKTus/qy1f+6NqEkZJ3hEUGabooUvoWwnbii4Z/WLw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124202; a=rsa-sha256; cv=none; b=LXmW+7VUO9ofgmcZuPMOBd77lWXOMy45YlN7iNggf1hHyr7Z0l2OCm5PLGLLVJabe1oG61 ocdjEnVffC4fataoa86x6pstFNjd2kxHiBxF7gyqCRKryBsc4ZOCBg/FQ+DSe7SL790wBS 4xICU8rC3hm1FHjaUNorl2jVlP2WJ4rzisKTVbkTt+gbILMt572DqrT7V27BRxNGwfyXvZ PRgqMPnQkbGSF9I5RwB/U83Jzj89GR5pBRemUGifcvZcN9GT40at+sZ7FtZab68mJV4GTX ngMYmaRz0PFxTVi8dX0VSsY3hBCY2aGnpmMyUQH1cHT94IbYBSd6cTsiO7I9dg== 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=1775124202; 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=ZXtRlTxk3HlJFyCElgJnhP4Xt7ZPX1HOvd9Js1bJiXA=; b=WGyNV8PrSBb+yHI0pNW/lLBDIS2dGvgKI8+UfFOY1Orv21F+UFLP9BWfpQwAZc9oD/jsF4 33YpC99ek8MZPt7JOqIxil74Kn+pVx96zjBOXrQoRWJ06m8MK+C7GrAhcnmMXv06vBFNOq CvA86jik/Rbj5/yGwM2XY0PVZj4QlwDKqadntDT+x9YWwbaGQcDeHJIXR9UB378L5m+w3y u+7+dcAFNKJSbrxjB0nsSeYXBZLBGZaoKvn9VSGXR1M+mJP+N6A0gKCBj7O7M7Y+wwTm+s oGaBsAGxyjyLvWwv9JYTZK+HRsyLbzgczwRfQKCPuPypFUTjOgTMCoieN4ogfg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcqt59ZhzxS4 for ; Thu, 02 Apr 2026 10:03:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e365 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:03:22 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: db9fd99ba8bd - stable/13 - cross-build: Provide mempcpy when building on macOS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: db9fd99ba8bd638f64079d8f0f8a2b282c71a4df Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:03:22 +0000 Message-Id: <69ce3eea.3e365.1636dc1@gitrepo.freebsd.org> The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=db9fd99ba8bd638f64079d8f0f8a2b282c71a4df commit db9fd99ba8bd638f64079d8f0f8a2b282c71a4df Author: Jessica Clarke AuthorDate: 2026-03-23 16:56:09 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:02:04 +0000 cross-build: Provide mempcpy when building on macOS We could patch the tzcode config to not use it, but it's simple to provide an implementation of it and avoid spreading cross-build bootstrapping special cases. Fixes: ff2c98b30b57 ("tzcode: Update to 2026a") MFC after: 1 week (cherry picked from commit 47402c9422ec6c9ba76d96414f5a08bd35a9e1fd) --- tools/build/Makefile | 7 +++++++ tools/build/cross-build/include/mac/string.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/tools/build/Makefile b/tools/build/Makefile index b6925688896d..92c80493139e 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile @@ -183,6 +183,13 @@ SRCS+= progname.c # Stub implementations of fflagstostr/strtofflags SRCS+= fflags.c .endif + +.if ${.MAKE.OS} == "Darwin" +# macOS currently lacks mempcpy +.PATH: ${LIBC_SRCTOP}/string +SRCS+= mempcpy.c +.endif # ${MAKE.OS} == "Darwin" + # Provide the same arc4random implementation on Linux/macOS CFLAGS.arc4random.c+= -I${SRCTOP}/sys/crypto/chacha20 -D__isthreaded=1 SRCS+= arc4random.c arc4random_uniform.c diff --git a/tools/build/cross-build/include/mac/string.h b/tools/build/cross-build/include/mac/string.h index 58464f1f9834..8a36bb1f392d 100644 --- a/tools/build/cross-build/include/mac/string.h +++ b/tools/build/cross-build/include/mac/string.h @@ -37,6 +37,8 @@ #include_next +void *(mempcpy)(void * __restrict, const void * __restrict, size_t); + /* * strchrnul is provided by macOS 15.4 and later. However, there is * no good way to detect the current host version at compile time, so From nobody Thu Apr 2 10:03:23 2026 X-Original-To: dev-commits-src-branches@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 4fmcqw0f5tz6Y8Ff for ; Thu, 02 Apr 2026 10:03:24 +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 4fmcqv6TzRz46TH for ; Thu, 02 Apr 2026 10:03:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124203; 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=L5hFqqeoNKkihDhGB9xxU39IG1SuMMt3WDOI/2iZ/E0=; b=rVouh/9rpNgMr9cnA0oYIZLbO+d6r+NKWlCT83cvhEqYGjhA+qdWA1CJM6Drwmzb/DDiL7 8SP2sSglma+Ex7F+PKZqjg4RtMphp068ffCUHamWbdUy8IPXpXrqiqADq6uMUFT1ojjpZj OJXajdQkhc4UClE0XPmmxT08LgVq7JreTIl76rmS5EuKyLbRLj5iKvEeHnzcug0y2+6cQH Vjzdq2omI6N9uDaJi2hnfAPIcHvUXWl4IRl3IdF21i6weLwWnhkHCv+UBUGMSX0GyGaMua 4qY0AOiQTjPcVu8KMkrmxXlmGS06pzeRjGaBcI9ym57Lg+IyRvHHHNz7exT/pA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124203; a=rsa-sha256; cv=none; b=l7sK5+PcmXYx4b8vgjDJFXf7gFLYjUg3Zw5UsWxfe6C3tqAz6aqk7yHXNfzDHxDT47IupF qCQVceP6w2peZsSr/+9pks5/cHF+jBJRvdnR4S5hBPh9bk6tE8IT/A47tUUNWV+xT4nkBT 8WdzshbIWGlX40DZu6IhTunztPx1LVa7IvfO1NpFRw/kIYPom04jiVZ+osOCYegsbzz4oR xsksqtjo4Y40DdeadiJjgSuVVyIKb6oYjZ4AKsk2e9mOylnfge9JN6mPBOTawmbPI+yqBl 6al1EQXxL4biz1xnZI+n4olrOoLw0zleKhT2nv/UIVaP9cLWfQacI+geDQ7wIw== 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=1775124203; 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=L5hFqqeoNKkihDhGB9xxU39IG1SuMMt3WDOI/2iZ/E0=; b=A3JZz6ViBaKoG0TAmuRm82TlTgv7a7lRXbn1t7n85WKoljjtDOt/9jeIkCzaQbscYh4FVo oDHtX8lZ6BEUJu0k7Wka+xsMMGkGX3Zn3pwsrJzeht19/ARXR/FNADG0d0Hh6+wU666uNW 1MuNC0IDwWbxUZAwFOtACZeRE0voQMwDCsMupWj0ijz+9Pgga8o92R4N2m2FADyXf07si4 UxPB2B9xyG/eTpQhtf+fTzkL0Rix/I+BWhU2mkdGyPUZ1dzXFcgdU/8+pZCeVGaBFnl78t JE4HbLIx4wWCPEx32aepe/5Z4piLSiVpZ6yS1bpkwx0heou+Fy4z5qgkZgP6OQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcqv65KNzxR7 for ; Thu, 02 Apr 2026 10:03:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d0dc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:03:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 2bc5bc14a8b2 - stable/14 - cross-build: Provide mempcpy when building on macOS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2bc5bc14a8b218ee876bf43a16ef15abaff83e7b Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:03:23 +0000 Message-Id: <69ce3eeb.3d0dc.5c50e619@gitrepo.freebsd.org> The branch stable/14 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=2bc5bc14a8b218ee876bf43a16ef15abaff83e7b commit 2bc5bc14a8b218ee876bf43a16ef15abaff83e7b Author: Jessica Clarke AuthorDate: 2026-03-23 16:56:09 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:02:16 +0000 cross-build: Provide mempcpy when building on macOS We could patch the tzcode config to not use it, but it's simple to provide an implementation of it and avoid spreading cross-build bootstrapping special cases. Fixes: ff2c98b30b57 ("tzcode: Update to 2026a") MFC after: 1 week (cherry picked from commit 47402c9422ec6c9ba76d96414f5a08bd35a9e1fd) --- tools/build/Makefile | 3 +++ tools/build/cross-build/include/mac/string.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/tools/build/Makefile b/tools/build/Makefile index 51a349ac0277..98ee8b5bda9c 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile @@ -223,6 +223,9 @@ SYSINCS+= ${SRCTOP}/sys/sys/linker_set.h .if ${.MAKE.OS} == "Darwin" # Standalone implementation of secure_getenv(), not available on MacOS. SRCS+= secure_getenv.c +# macOS currently lacks mempcpy +.PATH: ${LIBC_SRCTOP}/string +SRCS+= mempcpy.c .endif # ${MAKE.OS} == "Darwin" # Provide the same arc4random implementation on Linux/macOS diff --git a/tools/build/cross-build/include/mac/string.h b/tools/build/cross-build/include/mac/string.h index 58464f1f9834..8a36bb1f392d 100644 --- a/tools/build/cross-build/include/mac/string.h +++ b/tools/build/cross-build/include/mac/string.h @@ -37,6 +37,8 @@ #include_next +void *(mempcpy)(void * __restrict, const void * __restrict, size_t); + /* * strchrnul is provided by macOS 15.4 and later. However, there is * no good way to detect the current host version at compile time, so From nobody Thu Apr 2 10:03:24 2026 X-Original-To: dev-commits-src-branches@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 4fmcqx3W7Vz6Y8fl for ; Thu, 02 Apr 2026 10:03:25 +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 4fmcqx0ZDtz46lw for ; Thu, 02 Apr 2026 10:03:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124205; 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=OHE3B9NYY8SsZRtw7EAdmYd57xAU+dvfqwmwFz//pZU=; b=sM0IGOmkOxaYP2Fvw8JxRqrPlUSGML+ptoM/fJTcSungaId9MS1lpkaoXovriUcPWcPB+8 cwdUCPWhC5Yj+gmw4GbtKne3KANDsbM3HuImPOq0DzJ5cZG5g2+qy+wkAdhfjM/PRco0+A uB69Ew9xxm5sjlsTY46lCJboGT9K1tg0SnPTlTQ3VTEToai5X+yZGJ90t+1wox/yTjJGl/ UY1RG3TNwqu0Sdjuz9AgGAiViWJ9SmxaPqRN5zeDHf2bTx40DlVw0df9NJIG5I0SXRZJPP DXfXIA8YG4BHHH4nnsznpUZv76Blb7W9u7QmlGN8pGdft6R4jlIcICGR1IlbNg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124205; a=rsa-sha256; cv=none; b=m2byw8NHvbu/O0bjPNV5rxt245O3/Zq/YskgA0tah2v1lM79VcbcW1TVrxk3MSJkhXBXXk BwTFEw3HcQMtkoPwJPwZMk8vP4C1AZwHHglPjMR0kT+5GzrzWI63ooRmkdS7OnK9WGYzaN iR4HExXzbXFOIV/VMJIg/etTw0Qc4v7WBi2IKLuBhHkZehc6nUFv0hSjeUKbV7eby5lPPA I0ObDSFmdkNnlbPihwyA1W0g0Oq4URdr8aR/KG01KlCm9RPidSGtQwf2KOnqC5D4nhKQ9B 6CDTLpFtIfpNmtFy8sZR6PVrqp0t7TWhCZfL8T+cui/UPEQsfUTkeQrsZaXLCA== 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=1775124205; 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=OHE3B9NYY8SsZRtw7EAdmYd57xAU+dvfqwmwFz//pZU=; b=p8n22qxl6opm3u4eiATR7yYgLQW/0NopqdNqUExHjLLXbHfniC69yECx1gsy4CKSGJIxNN eRiD1LkFa0xRKpD64Akzlyim5uG9GqwZXM5JtPupmYDml32yq552lfGPZ+FFiul3ErC/q7 T4BZaN70ll4oa/70XLhy7Y7G5am1saPws4ocixltMkGBjmERUqVd9tDC7CsKpQvhchxRRz Jdu+LTng5kJsojeo2PCPvky/klkrq2D29cVfbnEv87MF284nX6vBS7hO31daz/3qaB0ibI aiiCvNQEz9fZDbH/HZu7fCp4N1KUFIG9/VKCSOOINdS3cHGZTilN65/QyGkFng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmcqw71fFzwxD for ; Thu, 02 Apr 2026 10:03:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3dc0b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:03:24 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 0602b919074a - stable/15 - cross-build: Provide mempcpy when building on macOS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0602b919074ad7598c8469417f52dd38e9184dbe Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:03:24 +0000 Message-Id: <69ce3eec.3dc0b.741b43c2@gitrepo.freebsd.org> The branch stable/15 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=0602b919074ad7598c8469417f52dd38e9184dbe commit 0602b919074ad7598c8469417f52dd38e9184dbe Author: Jessica Clarke AuthorDate: 2026-03-23 16:56:09 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:02:21 +0000 cross-build: Provide mempcpy when building on macOS We could patch the tzcode config to not use it, but it's simple to provide an implementation of it and avoid spreading cross-build bootstrapping special cases. Fixes: ff2c98b30b57 ("tzcode: Update to 2026a") MFC after: 1 week (cherry picked from commit 47402c9422ec6c9ba76d96414f5a08bd35a9e1fd) --- tools/build/Makefile | 3 +++ tools/build/cross-build/include/mac/string.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/tools/build/Makefile b/tools/build/Makefile index 676d0bea0936..973b3a12d98f 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile @@ -246,6 +246,9 @@ SYSINCS+= ${SRCTOP}/sys/sys/linker_set.h .if ${.MAKE.OS} == "Darwin" # Standalone implementation of secure_getenv(), not available on MacOS. SRCS+= secure_getenv.c +# macOS currently lacks mempcpy +.PATH: ${LIBC_SRCTOP}/string +SRCS+= mempcpy.c .endif # ${MAKE.OS} == "Darwin" # Provide the same arc4random implementation on Linux/macOS diff --git a/tools/build/cross-build/include/mac/string.h b/tools/build/cross-build/include/mac/string.h index 58464f1f9834..8a36bb1f392d 100644 --- a/tools/build/cross-build/include/mac/string.h +++ b/tools/build/cross-build/include/mac/string.h @@ -37,6 +37,8 @@ #include_next +void *(mempcpy)(void * __restrict, const void * __restrict, size_t); + /* * strchrnul is provided by macOS 15.4 and later. However, there is * no good way to detect the current host version at compile time, so From nobody Thu Apr 2 10:14:52 2026 X-Original-To: dev-commits-src-branches@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 4fmd581k5Xz6Y9Z4 for ; Thu, 02 Apr 2026 10:14:52 +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 4fmd5818FSz47yP for ; Thu, 02 Apr 2026 10:14:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124892; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n9ib0Z8zQVltd/VWoO63G5ckIO0Ji7NIqaOK7g/PuiI=; b=kKj1RGkCkI6fHTTigCahpw44Q5rEY4qMOjnpUHPrLiYNfgO89wB5v0epEE8U9uGI0D4f1N r+h9cFRydO1YHVFDpYvGg5bZEb3UeI0RLEBR/2l8PwXF8VgUX3ctklRWu+lVfriVL6qRfa TglMTUYpVnbXZ0Z08DTmZ3w7SpkpKPDvMUQ7Mnw/MJDumP0D+G5c20OEGcofthsaNYmOjN f5+TmQGO1txLIC6IcpZumOhqjqwbEnVZBLRY3pTlNag4PvVUmk8N/4GfMgNRrNzaXHbF2l DUOrVKjNcOjX0itqToTL/Jzzk8GYp92udRFLEwU1Lq+12mrEq7JkWMZfHpaY/g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124892; a=rsa-sha256; cv=none; b=Bqpw+FJIFudt83V/qWFXJuSXq7O4pt7w3ctgxDsgkeTA5n5d53jFNUG3Da7qlvZPYSgjTb //y9XGw/XaLzIO7PQDLibNl77xCE33aksv/gvlQrD6B2DCRlyhPRF5Rl+BcQ1o0eUHstSr QJ59ad5atbqtaoM2CKRaCAGn+xxjordxccJKa4azvxK8nAxTseLN3TMXz1CrC36sKjOqxR BZpd9KCJKc7jlyuvSy3UoqzyOeTnQts8Jo4nILGdsuLR1E9s0rcsdIkK7ZdSQ8DhPRwcOS nAf0BRBEcKGmLg1babiq2wa4v7PcbKdVntKMT7gIeng5YJc0VVPNF73eQzJS/Q== 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=1775124892; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n9ib0Z8zQVltd/VWoO63G5ckIO0Ji7NIqaOK7g/PuiI=; b=AQidDamwxth9KU3WPAGaQJVLK0Vj2HY3gfn0m6cr+D8DMY8rGj/DIQjFR37oilLh3ymdzk mBi3bc7d+JvPnmB2Pnyu+w0LHPF3FxmUGXPZZWDQQ9n+tGYmC6F3rNhUddGUpTtutxxjcs V96UG0P3vNwD4ZIWL5lQ9OrHownMLfRV0Ae2c/oI8/8EzsftDzyziydsD2GIXha2lL6Grv fSPGZetffFBfDDZEDxqjWGGyUjlESaURPyPfLzZRlph+iXqdoN5OnaVxmq8T2s/dlgkLRH R07SNzGj3HZeWR6CtGnl3qSSOLAfxKU/ucgqq6ue32MF2CmeLRM4DCGG/EZcAA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmd580Z8YzxDy for ; Thu, 02 Apr 2026 10:14:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d9dc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:14:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Brooks Davis From: Jessica Clarke Subject: git: e510b487f946 - stable/14 - .github: support all stable branches List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e510b487f946d478c5cf7c99d8203e98dc20e334 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:14:52 +0000 Message-Id: <69ce419c.3d9dc.df7d96a@gitrepo.freebsd.org> The branch stable/14 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=e510b487f946d478c5cf7c99d8203e98dc20e334 commit e510b487f946d478c5cf7c99d8203e98dc20e334 Author: Brooks Davis AuthorDate: 2026-02-19 14:43:57 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:11:37 +0000 .github: support all stable branches If this eventually poses a problem for unsupported branches we can fix them directly. Sponsored by: Innovate UK Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D53838 (cherry picked from commit 1e189279576497498cafad6f8c0a36a377b786a3) --- .github/workflows/cross-bootstrap-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cross-bootstrap-tools.yml b/.github/workflows/cross-bootstrap-tools.yml index 8a714788cce7..4fa999ee119b 100644 --- a/.github/workflows/cross-bootstrap-tools.yml +++ b/.github/workflows/cross-bootstrap-tools.yml @@ -2,7 +2,7 @@ name: Cross-build Kernel on: push: - branches: [ main, 'stable/13' ] + branches: [ main, 'stable/[1-9][0-9]' ] pull_request: branches: [ main ] From nobody Thu Apr 2 10:14:53 2026 X-Original-To: dev-commits-src-branches@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 4fmd595H6Nz6Y9cg for ; Thu, 02 Apr 2026 10:14:53 +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 4fmd592NYjz48Rp for ; Thu, 02 Apr 2026 10:14:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WAN5m/kTT1LMejhAJZXlwad5lXteAtxrBr0jgzSh2a8=; b=dx0N24n1dfXNfFMUv9QOmhjskoJXtUHlitUSAZpuXT7zq5M520USAUHJ4Z1QlVDBTvyArv pL8o2k6sNItoq9I6fhBtipDgJf0QilCER65EZr2IsdAkutOA2XT4jib4fV5MTD3IVG4gx7 su+5Pi2fbISH7SS7KXiaKpMgmQaQZcZ94b7O8WPfeW6hW/2bFMkWFiw5pI//AdsifkXYYp qOOh64UAsN+qzzpu3/7iIfv5o0QQzSdHIv72oe6bd7Y6QkWTN/wNTnsgFZ4XZJV5H81YFO XkLtvKdq3ToxSbkCS/9LIWx+7w98JZle14efX3mZmlGo97sUYm8RcvJRGJBkYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124893; a=rsa-sha256; cv=none; b=CMqRhY0DHrxPWcdpGa2yrMx2pZbEAE/t6ducvsxF6+3158moL/QzjtoH/fEor/KQBWsYzU 72idrlutpk/IUDI55ZjdQv35hlW8cP9v85ijPKyno/Kj2z61Wx0/y2C1iSbL04pY7vyJ1A Z4lJpxPtf9avuJLv18G2+LSal/LvJzkdI3EtP5iY3LdnTBWoF8crCEfpN47jYdwkDDzap1 4ea2GoxbuegqsNhWG22+SGMQcLX9F+9ppuPadV4vT8VmSMrcf7Iozunob7T2+zyxvsMzHM 84zRAS4hBnYn816tMg/YNGArTPApOjLGgsKcSwtdwI/SJFPAoH7Lou/9zUrRBQ== 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=1775124893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WAN5m/kTT1LMejhAJZXlwad5lXteAtxrBr0jgzSh2a8=; b=DOIyPXTYrpcIbDrFk6eyPen8EMNvpts36/C6ceifbXzQqaUiXIX0880/KRE14M9gJpLzi1 F3CxNDaFmYH8e7atVqPeFmO69MudED7wvUve+UQzo0MDAcDYvRUbxls9wL12ha6o9fKI+o KITSOJmdmsjpi3ocJrwFuw0O2YbHh89fPt2CXpfijY6HIJz/hF4tT3L2X7mlG2J/zQBWM0 zy4J8PVS4iPia6FjOvZ8CqqGmnxvSHiP6Ey4p3vx/tb2KNLozwQ744oeHNVnAOqWzEzMXz U2ixRB4LTIULGArM//bs5vKLe5GhSPJepOlZUjO6UueQ16NdRkWXJawpoBJYRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmd591STWzxVr for ; Thu, 02 Apr 2026 10:14:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ed09 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:14:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Brooks Davis From: Jessica Clarke Subject: git: 436f7fc429aa - stable/15 - .github: support all stable branches List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 436f7fc429aadca1327e33021c4c271b20de9675 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:14:53 +0000 Message-Id: <69ce419d.3ed09.3df3b66d@gitrepo.freebsd.org> The branch stable/15 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=436f7fc429aadca1327e33021c4c271b20de9675 commit 436f7fc429aadca1327e33021c4c271b20de9675 Author: Brooks Davis AuthorDate: 2026-02-19 14:43:57 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:11:44 +0000 .github: support all stable branches If this eventually poses a problem for unsupported branches we can fix them directly. Sponsored by: Innovate UK Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D53838 (cherry picked from commit 1e189279576497498cafad6f8c0a36a377b786a3) --- .github/workflows/cross-bootstrap-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cross-bootstrap-tools.yml b/.github/workflows/cross-bootstrap-tools.yml index 8f0dd933ef09..96cc534472ea 100644 --- a/.github/workflows/cross-bootstrap-tools.yml +++ b/.github/workflows/cross-bootstrap-tools.yml @@ -2,7 +2,7 @@ name: Cross-build Kernel on: push: - branches: [ main, 'stable/14', 'stable/13' ] + branches: [ main, 'stable/[1-9][0-9]' ] pull_request: branches: [ main ] workflow_dispatch: From nobody Thu Apr 2 10:14:50 2026 X-Original-To: dev-commits-src-branches@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 4fmd5D4Dlnz6Y9jL for ; Thu, 02 Apr 2026 10:14:56 +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 4fmd5D25nsz48RT for ; Thu, 02 Apr 2026 10:14:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775124896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vf+8sMU7pLGpkpPXX+4VSTAkHDyZqtd3NZlPPLnyTtk=; b=a5m172S7G8BWBz3PFpu1vlS+bUFXMmLiud5RVvY0Xw/rsIz4NuKSEqQ0UOeeBGPD7vx+Ul aD3raxDXc38TQQrUeUVyMwwoaOoQtx7pGRy1bL440H3XTSKaJ9CSu99OPvhvF5vvbVPjwY Q4YfUyAnjcWmFaxBgBPTz54MWEpQZSq+tOU0Zitt6NwRUqbrPMpPByTzmlEcF4spa04hiu BZ0FIK3wWA82VlN739zIhH7l1V6M1oF3Q28CIcG6iuGjGbssNrGSeaDFZjgkh6iX/W0fAY EoulozCly18kQxNPhi98sxD3+mFXLEAZxINh01JwB5BdZs+W/V2dDQwfkKgLiw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775124896; a=rsa-sha256; cv=none; b=n9fjpFRlbUEGgPomLKBPG+PqNh8da25EaLKQuekzTrUi7O7xqj+qK+EFQHJsHI3SKZkaGX J7lycasV7PjLy4Jf8pAptjm8/GsBqevpSzvVUMp4MbON5t23LQlYm/FhQJnrQxlBsT/lk6 tR7+oWCqIU2sOq9XjIa4B6BCjgiC09Cd/dThv3ui6aqHS9MYxbcfo+I1S2mUYXTT9UuMrf pJ2/mfJFXZDWTr8axlBWnLqT7AEKI4eF1q+knSPvRfcdNDa635O1pzlIBLUG/SswBPxtSQ JjPfu8neYJXvozhpmfT/jkbAZMT33jFusNXLWwOa67b9V+k6nQoDrar5uUDL4Q== 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=1775124896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vf+8sMU7pLGpkpPXX+4VSTAkHDyZqtd3NZlPPLnyTtk=; b=t5hwPScRsPxYizO5K3veranQ/BYcOReCBsSVh6TX2zXw80D7PD1pITDSsCvqJtRWfj6Jfp 6XhG5mHcvVec3YmAJ0ABSl8ByPybf6WUIz5MvUImjF2CM6TjiNgbFJkGsHURvI1C+e2sIw gfsClBI6ZZfEfgEXk4V0qwq4Mhci9baH2+tjoJAcDAKxH8lcUmlUDMKSHTPPb5V2bYEM8t dJwCjBkCXy7LbYxPL5u0e7FMRHHuQ/oSZacd79M2GPayWZZPEQ+aJhun8AvqHlLKq5mpeP VfbIgr0tLBTxnaWZTJOuLm+QCy4La9jpS696QUA2jRrPs845JYm+/660yjZpGg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmd5D11zxzxhd for ; Thu, 02 Apr 2026 10:14:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d9d7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 10:14:50 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Brooks Davis From: Jessica Clarke Subject: git: 36963d249724 - stable/13 - .github: support all stable branches List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 36963d2497248f0d334b02bbc3947e224ca8e8dc Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 10:14:50 +0000 Message-Id: <69ce419a.3d9d7.3d2e6d84@gitrepo.freebsd.org> The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=36963d2497248f0d334b02bbc3947e224ca8e8dc commit 36963d2497248f0d334b02bbc3947e224ca8e8dc Author: Brooks Davis AuthorDate: 2026-02-19 14:43:57 +0000 Commit: Jessica Clarke CommitDate: 2026-04-02 10:11:05 +0000 .github: support all stable branches If this eventually poses a problem for unsupported branches we can fix them directly. Sponsored by: Innovate UK Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D53838 (cherry picked from commit 1e189279576497498cafad6f8c0a36a377b786a3) --- .github/workflows/cross-bootstrap-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cross-bootstrap-tools.yml b/.github/workflows/cross-bootstrap-tools.yml index 78ba1560e5de..d5b91a2ee15d 100644 --- a/.github/workflows/cross-bootstrap-tools.yml +++ b/.github/workflows/cross-bootstrap-tools.yml @@ -2,7 +2,7 @@ name: Cross-build Kernel on: push: - branches: [ main, 'stable/13' ] + branches: [ main, 'stable/[1-9][0-9]' ] pull_request: branches: [ main ] From nobody Thu Apr 2 11:20:34 2026 X-Original-To: dev-commits-src-branches@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 4fmfXy5br0z6YGwM for ; Thu, 02 Apr 2026 11:20:34 +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 4fmfXy3ZDQz3J1n for ; Thu, 02 Apr 2026 11:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128834; 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=+dH31I8EQ0LzqZJ9bw/1hK1ORM7MuuMMn9pD2g6CD0g=; b=JY3gNNGCQOjNzzEwi2ZTewuiEECyzC8QMYP0r9pFvyNOBBf6tbUNTmP+J5tclISZ07o382 kpqwYehc4oss47gXTVzS+7E5EgEOc37uDYG4inf4emyuSj+Sr2K/GrSFceaWVgnbxHe0ft CndM7AQVxxM3pzIuPZKPswBjtUEZTdGb1M0BqtuKDONbtwYPudGKdaZAcFU0WvVegIEegI ZDIkSA1haN5K9KzGN+oWGWBjNYVASj/0G4/NN20KqUmkuMQlt0IDfkADqwYx2oxdfFJenF /5OWkvQr6a2Hb91vLOvucMNdpUovSF3ly9rOkpuTl8+twJoAqXefjbJxqjsawg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128834; a=rsa-sha256; cv=none; b=RgcMaefpsPfEKLaozXhpTK33L4oyIokGUXlQGOOYJWCsEDlmt/B/O8FVle8svVVU1Ej0Eb yIRk2xhjWLrcNQdrtyT6BIJBmKscMqjZZDvVACJJc0ftvNGEZr8UO8eGuN2lgxa6Z2aVYB /eWwJdw995F69Ptq1T9CcQpK+17YD5bgRqxcR4IvJ7FzRkneec0sNW/3lBqO9FbU44ge4Q zSs2Eh/YmcPacDcw+Qj6IAfeKWJQy0JAmfwguBYR3JEOx0vXaMyMlDo0ONRPyR3emzCZyL sgiv9b6c/rqTM6DQghFhAs/jKJmOtXrOdzZAgGkUHl3rCU0pxc842hivxKB98g== 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=1775128834; 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=+dH31I8EQ0LzqZJ9bw/1hK1ORM7MuuMMn9pD2g6CD0g=; b=AucwoFjl0OFpWTQ67dCWbG29n2EOBBBOEJ7kyorsXPmFD06pBMJ5Wce1t15z30nrO3n1DU 3yZ0SOmh3xR0NU79IydE2u6YPRsm4sON/OnsGi19QueJfi4Sn3b+U2YmEdy0HAcDewWKjC PqlYBG/9+P2bXLI47TS7sm6Vh5gfmsc3gJ1zqnz5i/nAq8flzJ54/XPSfB8I0M3Zo3KyR8 pAgWOyMHrYhsRdewEdTku7m5mrmg6PVr3Q8MoUTROkp7shCdEUbg3VwbAvvtjMLnw2Y+Q5 OfpOBZkOWnW1Ce4/QwxuslkE7bQzAg+Zvy4Yz5SU/cG/LqcodKRwCyecPIliRg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfXy2mxlzyqW for ; Thu, 02 Apr 2026 11:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f435 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:34 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 9b019b4f9f9f - stable/15 - tzcode: Update to 2026a List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9b019b4f9f9fc6943842857e2dcb2fa2e360c4a3 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:34 +0000 Message-Id: <69ce5102.1f435.5f7b9b50@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=9b019b4f9f9fc6943842857e2dcb2fa2e360c4a3 commit 9b019b4f9f9fc6943842857e2dcb2fa2e360c4a3 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-11 03:47:31 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:15:12 +0000 tzcode: Update to 2026a Many thanks to Paul Eggert for adopting most of our adaptations as optional features upstream in the previous release (2025c). MFC after: 1 week Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D55741 (cherry picked from commit ff2c98b30b57b9763e2a6575f729bab676e6c025) --- contrib/tzcode/CONTRIBUTING | 36 +- contrib/tzcode/Makefile | 236 ++++-- contrib/tzcode/NEWS | 232 ++++++ contrib/tzcode/README | 14 +- contrib/tzcode/SECURITY | 2 +- contrib/tzcode/calendars | 27 +- contrib/tzcode/date.1 | 4 +- contrib/tzcode/date.c | 7 +- contrib/tzcode/localtime.c | 1747 ++++++++++++++++++++++++----------------- contrib/tzcode/newctime.3 | 28 +- contrib/tzcode/newstrftime.3 | 2 +- contrib/tzcode/newtzset.3 | 47 +- contrib/tzcode/private.h | 372 +++++---- contrib/tzcode/strftime.c | 5 +- contrib/tzcode/theory.html | 383 ++++----- contrib/tzcode/time2posix.3 | 118 +-- contrib/tzcode/tz-art.html | 423 +++++----- contrib/tzcode/tz-how-to.html | 250 +++--- contrib/tzcode/tz-link.html | 398 +++++----- contrib/tzcode/tzconfig.h | 36 +- contrib/tzcode/tzfile.5 | 30 +- contrib/tzcode/tzfile.h | 30 +- contrib/tzcode/tzselect.ksh | 15 +- contrib/tzcode/version | 2 +- contrib/tzcode/workman.sh | 36 +- contrib/tzcode/zdump.c | 21 +- contrib/tzcode/zic.8 | 85 +- contrib/tzcode/zic.c | 783 ++++++++++-------- 28 files changed, 3146 insertions(+), 2223 deletions(-) diff --git a/contrib/tzcode/CONTRIBUTING b/contrib/tzcode/CONTRIBUTING index f6edbd3be7d3..c5fa803f7275 100644 --- a/contrib/tzcode/CONTRIBUTING +++ b/contrib/tzcode/CONTRIBUTING @@ -10,26 +10,27 @@ warning, the data entries do not cover all of civil time before 1970, and undoubtedly errors remain in the code and data. Feel free to fill gaps or fix mistakes, and please email improvements to for use in the future. In your email, please give -reliable sources that reviewers can check. +reliable sources that reviewers can check. The mailing list and its +archives are public, so please do not send confidential information. ## Contributing technical changes To email small changes, please run a POSIX shell command like -'diff -u old/europe new/europe >myfix.patch', and attach -'myfix.patch' to the email. +‘diff -u old/europe new/europe >myfix.patch’, and attach +‘myfix.patch’ to the email. For more-elaborate or possibly controversial changes, such as renaming, adding or removing zones, please read -"Theory and pragmatics of the tz code and data" +“Theory and pragmatics of the tz code and data” . It is also good to browse the mailing list archives for examples of patches that tend to work well. Changes should contain commentary citing reliable sources. -Citations should use "https:" URLs if available. +Citations should use ‘https:’ URLs if available. For changes that fix sensitive security-related bugs, please see the -distribution's 'SECURITY' file. +distribution’s SECURITY file. Please submit changes against either the latest release or the main branch of the development @@ -54,11 +55,11 @@ If you use Git the following workflow may be helpful: git checkout -b mybranch - * Sleuth by using 'git blame'. For example, when fixing data for - Africa/Sao_Tome, if the command 'git blame africa' outputs a line - '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone - Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should - provide some justification for the 'Zone Africa/Sao_Tome' line. + * Sleuth by using ‘git blame’. For example, when fixing data for + Africa/Sao_Tome, if the command ‘git blame africa’ outputs a line + ‘2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone + Africa/Sao_Tome 0:26:56 - LMT 1884’, commit 2951fa3b should + provide some justification for the ‘Zone Africa/Sao_Tome’ line. * Edit source files. Include commentary that justifies the changes by citing reliable sources. @@ -69,28 +70,31 @@ If you use Git the following workflow may be helpful: ./zdump -v America/Los_Angeles Although builds assume only basic POSIX, they use extra features - if available. 'make check' accesses validator.w3.org unless you - lack 'curl' or use 'make CURL=:'. If you have the latest GCC, - "make CFLAGS='$(GCC_DEBUG_FLAGS)'" does extra checking. + if available. ‘make check’ accesses validator.w3.org unless you + lack ‘curl’ or use ‘make CURL=:’. If you have the latest GCC, + ‘make CFLAGS='$(GCC_DEBUG_FLAGS)'’ does extra checking. * For each separable change, commit it in the new branch, e.g.: git add northamerica git commit - See recent 'git log' output for the commit-message style. + See recent ‘git log’ output for the commit-message style. * Create patch files 0001-..., 0002-..., ... git format-patch main + * Check that the patch files and your email setup contain only + information that you want to make public. + * After reviewing the patch files, send the patches to for others to review. git send-email main For an archived example of such an email, see - "[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913" + “[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913” . * Start anew by getting current with the main branch again diff --git a/contrib/tzcode/Makefile b/contrib/tzcode/Makefile index 2130582c2deb..1e0a5903534d 100644 --- a/contrib/tzcode/Makefile +++ b/contrib/tzcode/Makefile @@ -3,17 +3,30 @@ # 2009-05-17 by Arthur David Olson. # Request POSIX conformance; this must be the first non-comment line. .POSIX: +# By default, builds of code and data assume POSIX.1-2001 or later; +# this assumption can be relaxed by tailoring the build as described below. # On older platforms you may need to scrounge for POSIX conformance. # For example, on Solaris 10 (2005) with Sun Studio 12 aka Sun C 5.9 (2007), # use 'PATH=/usr/xpg4/bin:$PATH make CC=c99'. +# Reproducible builds of distribution tarballs also need a copy of the +# Git repository, and assume the behavior of the following programs +# (or later versions): +# Git 2.7.0 (2016) +# GNU Coreutils 6.3 (2006) +# GNU Tar 1.14 (2004) +# GnuPG 1.4 (2004) +# Although tzdb does not come with a software bill of materials, +# you should be able to construct one based on the above information, +# your platform, and the way you use this Makefile. # To affect how this Makefile works, you can run a shell script like this: # # #!/bin/sh -# make CC='gcc -std=gnu23' "$@" +# make CFLAGS='-O2 -DHAVE_GETTEXT=0' "$@" # -# This example script is appropriate for a circa 2024 GNU/Linux system -# where a non-default setting enables this package's optional use of C23. +# This example script is appropriate for a GNU/Linux system +# which needs more optimization than default, and which does not want +# gettext's internationalization of diagnostics. # # Alternatively, you can simply edit this Makefile to tailor the following # macro definitions. @@ -53,28 +66,6 @@ DATAFORM= main LOCALTIME= Factory -# The POSIXRULES macro controls interpretation of POSIX-like TZ -# settings like TZ='EET-2EEST' that lack DST transition rules. -# If POSIXRULES is '-', no template is installed; this is the default. -# Any other value for POSIXRULES is obsolete and should not be relied on, as: -# * It does not work correctly in popular implementations such as GNU/Linux. -# * It does not work even in tzcode, except for historical timestamps -# that precede the last explicit transition in the POSIXRULES file. -# Hence it typically does not work for current and future timestamps. -# If, despite the above, you want a template for handling these settings, -# you can change the line below (after finding the timezone you want in the -# one of the $(TDATA) source files, or adding it to a source file). -# Alternatively, if you discover you've got the wrong timezone, you can just -# 'zic -p -' to remove it, or 'zic -p rightzone' to change it. -# Use the command -# make zonenames -# to get a list of the values you can use for POSIXRULES. - -POSIXRULES= - - -# Also see TZDEFRULESTRING below, which takes effect only -# if POSIXRULES is '-' or if the template file cannot be accessed. - # Installation locations. # @@ -150,13 +141,14 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \ # below. If you want both sets of data available, with leap seconds counted # normally, use # REDO= right_posix -# below. POSIX mandates that leap seconds not be counted; for compatibility -# with it, use "posix_only" or "posix_right". Use POSIX time on systems with +# below. POSIX mandates that leap seconds not be counted, and a +# nonnegative TZ_CHANGE_INTERVAL also assumes this, so to be compatible with +# these, use "posix_only" or "posix_right". Use POSIX time on systems with # leap smearing; this can work better than unsmeared "right" time with # applications that are not leap second aware, and is closer to unsmeared # "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error). -REDO= posix_right +REDO= posix_only # Whether to put an "Expires" line in the leapseconds file. # Use EXPIRES_LINE=1 to put the line in, 0 to omit it. @@ -206,6 +198,12 @@ PACKRATLIST= UTF8_LOCALE= en_US.utf8 +# Extra flags for producing man page files like tzfile.5.txt. +# These flags are used only if groff (or mandoc) is present. +# Each option should begin with "-" and should lack shell metacharacters. +# Plausible options include -Tascii and -Tutf8. +MANFLAGS= -Tutf8 + # Non-default libraries needed to link. # On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0. LDLIBS= @@ -219,14 +217,19 @@ LDLIBS= # -DEPOCH_OFFSET=N if the 'time' function returns a value N greater # than what POSIX specifies, assuming local time is UT. # For example, N is 252460800 on AmigaOS. +# -DFREE_PRESERVES_ERRNO=[01] if the 'free' function munges or preserves errno +# (default is guessed) # -DHAVE_DECL_ASCTIME_R=0 if does not declare asctime_r # on POSIX platforms predating POSIX.1-2024 # -DHAVE_DECL_ENVIRON if declares 'environ' # -DHAVE_DECL_TIMEGM=0 if does not declare timegm # -DHAVE_DIRECT_H if mkdir needs (MS-Windows) +# -DHAVE_FCHMOD=0 if your system lacks the fchmod function # -DHAVE__GENERIC=0 if _Generic does not work* +# -DHAVE_GETEUID=0 if gete?[ug]id do not work # -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux), # -DHAVE_GETRANDOM=0 to avoid using getrandom +# -DHAVE_GETRESUID=0 if getres[ug]id do not work # -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris), # where LDLIBS also needs to contain -lintl on some hosts; # -DHAVE_GETTEXT=0 to avoid using gettext @@ -234,28 +237,46 @@ LDLIBS= # ctime_r and asctime_r incompatibly with POSIX.1-2017 and earlier # (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined). # -DHAVE_INTTYPES_H=0 if does not work*+ +# -DHAVE_ISSETUGID=1 if issetugid works, 0 otherwise (default is guessed) +# If 0, you may also use -DHAVE_SYS_AUXV_H=1 if works, +# 0 otherwise (default is guessed). # -DHAVE_LINK=0 if your system lacks a link function # -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function # -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz # localtime_rz can make zdump significantly faster, but is nonstandard. # -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure. +# -DHAVE_MEMPCPY=1 if your system has mempcpy, 0 if not (default is guessed) # -DHAVE_POSIX_DECLS=0 if your system's include files do not declare -# functions like 'link' or variables like 'tzname' required by POSIX +# variables like 'tzname' required by POSIX +# -DHAVE_PWD_H=0 if your system lacks pwd.h, grp.h and corresponding functions +# If 0, you may also need -Dgid_t=G -Duid_t=U +# to define gid_t and uid_t to be types G and U. # -DHAVE_SETENV=0 if your system lacks the setenv function +# -DHAVE_SETMODE=[01] if your system lacks or has the setmode and getmode +# functions (default is guessed) # -DHAVE_SNPRINTF=0 if your system lacks the snprintf function+ # -DHAVE_STDCKDINT_H=0 if neither nor substitutes like # __builtin_add_overflow work* # -DHAVE_STDINT_H=0 if does not work*+ # -DHAVE_STRFTIME_L if declares locale_t and strftime_l # -DHAVE_STRDUP=0 if your system lacks the strdup function +# -DHAVE_STRNLEN=0 if your system lacks the strnlen function+ # -DHAVE_STRTOLL=0 if your system lacks the strtoll function+ +# -DHAVE_STRUCT_STAT_ST_CTIM=0 if struct stat lacks a status-change member +# of type struct timespec, so code should use st_ctime instead; +# but if the status-change member name is st_ctimespec, +# use -Dst_ctim=st_ctimespec instead (default is guessed)+ +# -DHAVE_STRUCT_TIMESPEC=0 if your system lacks struct timespec+ # -DHAVE_SYMLINK=0 if your system lacks the symlink function # -DHAVE_SYS_STAT_H=0 if does not work* +# If 0, you may also need -Dmode_t=M to define mode_t to be type M. # -DHAVE_TZSET=0 if your system lacks a tzset function # -DHAVE_UNISTD_H=0 if does not work* # -DHAVE_UTMPX_H=0 if does not work* # -Dlocale_t=XXX if your system uses XXX instead of locale_t # -DMKTIME_MIGHT_OVERFLOW if mktime might fail due to time_t overflow +# -DOPENAT_TZDIR if tzset should use openat on TZDIR then a relative open. +# See localtime.c for details. # -DPORT_TO_C89 if tzcode should also run on mostly-C89 platforms+ # Typically it is better to use a later standard. For example, # with GCC 4.9.4 (2016), prefer '-std=gnu11' to '-DPORT_TO_C89'. @@ -274,15 +295,46 @@ LDLIBS= # -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires; # not needed by the main-program tz code, which is single-threaded. # Append other compiler flags as needed, e.g., -pthread on GNU/Linux. +# The following options can also be used: +# -DTHREAD_PREFER_SINGLE to prefer speed in single-threaded apps, +# at some cost in CPU time and energy in multi-threaded apps. +# The following options can also be used: +# -DHAVE___ISTHREADED=1 if there is an extern int __isthreaded +# variable, 0 otherwise (default is guessed) +# -DHAVE_SYS_SINGLE_THREADED_H=0 if works, +# 0 otherwise (default is guessed) +# -DTHREAD_RWLOCK to use read-write locks instead of mutexes. +# This can improve parallelism and thus save real time +# if many threads call tzcode functions simultaneously. +# It also costs CPU time and thus energy. +# -DTHREAD_TM_MULTI to have gmtime, localtime, and offtime +# return different struct tm * addresses in different threads. +# This supports nonportable programs that call +# gmtime/localtime/offtime when they should call +# gmtime_r/localtime_r/offtime_r to avoid races. +# Because the corresponding storage is freed on thread exit, +# this option is incompatible with POSIX.1-2024 and earlier. +# It also costs CPU time and memory. # -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t # This is intended for internal use only; it mangles external names. +# -DTZ_CHANGE_INTERVAL=N if functions depending on TZ should check +# no more often than every N seconds for TZif file changes. +# If N is negative (the default), no such checking is done. +# This option is intended for platforms that want localtime etc. +# to respond to changes to a file selected by TZ, including to +# TZDEFAULT (normally /etc/localtime) if TZ is unset. +# On these platforms, REDO should be "posix_only" or "posix_right". +# This option does not affect tzalloc-allocated objects. # -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz" # -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory; # the default is system-supplied, typically "/usr/lib/locale" +# -DTZ_RUNTIME_LEAPS=0 to disable runtime support for leap seconds. +# This conforms to POSIX, shrinks tzcode's attack surface, +# and is more efficient. However, it fails to support Internet +# RFC 9636's leap seconds. # -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified -# DST transitions for proleptic format TZ strings lacking them, -# in the usual case where POSIXRULES is '-'. If not specified, -# TZDEFRULESTRING defaults to US rules for future DST transitions. +# DST transitions for proleptic format TZ strings lacking them. +# If not specified, it defaults to US rules for future DST transitions. # This mishandles some past timestamps, as US DST rules have changed. # It also mishandles settings like TZ='EET-2EEST' for eastern Europe, # as Europe and US DST rules differ. @@ -314,7 +366,7 @@ LDLIBS= # Select instrumentation via "make GCC_INSTRUMENT='whatever'". GCC_INSTRUMENT = \ -fsanitize=undefined -fsanitize-address-use-after-scope \ - -fsanitize-undefined-trap-on-error -fstack-protector + -fsanitize-trap=all -fstack-protector # Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow. GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ $(GCC_INSTRUMENT) \ @@ -332,12 +384,13 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ -Wold-style-definition -Woverlength-strings -Wpointer-arith \ -Wshadow -Wshift-overflow=2 -Wstrict-overflow \ -Wstrict-prototypes -Wstringop-overflow=4 \ - -Wstringop-truncation -Wsuggest-attribute=cold \ + -Wsuggest-attribute=cold \ -Wsuggest-attribute=const -Wsuggest-attribute=format \ -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ -Wtrampolines -Wundef -Wunused-macros -Wuse-after-free=3 \ -Wvariadic-macros -Wvla -Wwrite-strings \ + -Wzero-as-null-pointer-constant \ -Wno-format-nonliteral -Wno-sign-compare -Wno-type-limits # # If your system has a "GMT offset" field in its "struct tm"s @@ -393,7 +446,9 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ # functions to be added to the time conversion library. # "offtime" is like "gmtime" except that it accepts a second (long) argument # that gives an offset to add to the time_t when converting it. -# I.e., "offtime" is like calling "localtime_rz" with a fixed-offset zone. +# "offtime_r" is to "offtime" what "gmtime_r" is to "gmtime". +# I.e., "offtime" and "offtime_r" are like calling "localtime_rz" +# with a fixed-offset zone. # "timelocal" is nearly equivalent to "mktime". # "timeoff" is like "timegm" except that it accepts a second (long) argument # that gives an offset to use when converting to a time_t. @@ -451,6 +506,11 @@ leaplist_URI = \ https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list # The file is generated by the IERS Earth Orientation Centre, in Paris. leaplist_TZ = Europe/Paris +# +# To fetch leap-seconds.list from NIST via a less-secure protocol +# and with less-volatile metadata, use these settings: +#leaplist_URI = ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list +#leaplist_TZ = America/Denver # The zic command and its arguments. @@ -510,13 +570,10 @@ SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~' SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3) SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]' -# These non-alphabetic, non-ASCII printable characters are Latin-1, -# and so are likely displayable even in editors like XEmacs 21 -# that have limited display capabilities. -UNUSUAL_OK_LATIN_1 = ¡¢£¤¥¦§¨©«¬®¯°±²³´¶·¸¹»¼½¾¿×÷ -# Non-ASCII non-letters that OK_CHAR allows, as these characters are -# useful in commentary. -UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1) +# These non-alphabetic, non-ASCII printable characters are +# used in commentary or in generated *.txt files +# and are not likely to cause confusion. +UNUSUAL_OK_CHARSET= §«°±»½¾×–‘’“”•→−≤★⟨⟩⯪ # Put this in a bracket expression to match spaces. s = [:space:] @@ -525,9 +582,6 @@ s = [:space:] # This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and # multibyte letters are also allowed so that commentary can contain a # few safe symbols and people's names and can quote non-English sources. -# Other non-letters are limited to ASCII renderings for the -# convenience of maintainers using XEmacs 21.5.34, which by default -# mishandles Unicode characters U+0100 and greater. OK_CHAR= '[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]' # SAFE_LINE matches a line of safe characters. @@ -654,7 +708,6 @@ install: all $(DATA) $(REDO) $(MANS) '$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \ '$(DESTDIR)$(MANDIR)/man8' $(ZIC_INSTALL) -l $(LOCALTIME) \ - -p $(POSIXRULES) \ -t '$(DESTDIR)$(TZDEFAULT)' cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.' cp tzselect '$(DESTDIR)$(BINDIR)/.' @@ -874,9 +927,9 @@ UTF8_LOCALE_MISSING = \ character-set.ck: $(ENCHILADA) $(UTF8_LOCALE_MISSING) || { \ sharp='#' && \ - ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \ - $(MISC) $(SOURCES) $(WEB_PAGES) \ - CONTRIBUTING LICENSE README SECURITY \ + ! grep -Env $(SAFE_LINE) $(MANS) date.1 \ + $(MISC) $(SOURCES) \ + LICENSE \ version tzdata.zi && \ ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \ Makefile && \ @@ -888,11 +941,9 @@ character-set.ck: $(ENCHILADA) white-space.ck: $(ENCHILADA) $(UTF8_LOCALE_MISSING) || { \ - enchilada='$(ENCHILADA)' && \ patfmt=' \t|[\f\r\v]' && pat=$$(printf "$$patfmt\\n") && \ ! grep -En "$$pat|[$s]\$$" \ - $${enchilada%leap-seconds.list*} \ - $${enchilada#*leap-seconds.list}; \ + $(ENCHILADA:leap-seconds.list=); \ } touch $@ @@ -959,8 +1010,10 @@ now.ck: checknow.awk date tzdata.zi zdump zic zone1970.tab zonenow.tab ./zdump -i -t 0,$$future \ $$(find "$$PWD/$@d" -name Etc -prune \ -o -type f ! -name '*.tab' -print) \ - >$@d/zdump-1970.tab + >$@d/zdump-1970.tab && \ $(AWK) \ + -v now=$$now \ + -v now_out=$@.out \ -v zdump_table=$@d/zdump-now.tab \ -f checknow.awk zonenow.tab $(AWK) \ @@ -970,7 +1023,8 @@ now.ck: checknow.awk date tzdata.zi zdump zic zone1970.tab zonenow.tab -v zdump_table=$@d/zdump-1970.tab \ -f checknow.awk rm -fr $@d - touch $@ + touch $@.out + mv $@.out $@ tables.ck: checktab.awk $(YDATA) backward zone.tab zone1970.tab for tab in $(ZONETABLES); do \ @@ -1031,7 +1085,7 @@ zishrink-posix.ck zishrink-right.ck: \ clean_misc: rm -fr *.ckd *.dir - rm -f *.ck *.core *.o *.out core core.* \ + rm -f *.ck *.core *.o *.out *.t core core.* \ date tzdir.h tzselect version.h zdump zic libtz.a clean: clean_misc rm -fr tzdb-*/ @@ -1059,7 +1113,7 @@ zdump.8.txt: zdump.8 zic.8.txt: zic.8 $(MANTXTS): workman.sh - LC_ALL=C sh workman.sh $(@:.txt=) >$@.out + LC_ALL=C sh workman.sh $(MANFLAGS) $(@:.txt=) >$@.out mv $@.out $@ # Set file timestamps deterministically if possible, @@ -1108,7 +1162,7 @@ set-timestamps.out: $(EIGHT_YARDS) if git diff --quiet HEAD $$file; then \ time=$$(TZ=UTC0 git log -1 \ --format='tformat:%cd' \ - --date='format:%Y-%m-%dT%H:%M:%SZ' \ + --date='format-local:%Y-%m-%dT%H:%M:%SZ' \ $$file) && \ echo "+ touch -md $$time $$file" && \ touch -md $$time $$file; \ @@ -1207,12 +1261,12 @@ $(TIME_T_ALTERNATIVES): $(VERSION_DEPS) touch $@ TRADITIONAL_ASC = \ - tzcode$(VERSION).tar.gz.asc \ - tzdata$(VERSION).tar.gz.asc + tzcode$(VERSION).tar.gz.asc.t \ + tzdata$(VERSION).tar.gz.asc.t REARGUARD_ASC = \ - tzdata$(VERSION)-rearguard.tar.gz.asc + tzdata$(VERSION)-rearguard.tar.gz.asc.t ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \ - tzdb-$(VERSION).tar.lz.asc + tzdb-$(VERSION).tar.lz.asc.t tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \ signatures rearguard_signatures traditional_signatures: \ @@ -1224,29 +1278,31 @@ signatures rearguard_signatures traditional_signatures: \ # other means. Ordinarily these rules are used only by the above # non-_version rules, which set VERSION on the 'make' command line. tarballs_version: traditional_tarballs_version rearguard_tarballs_version \ - tzdb-$(VERSION).tar.lz + tzdb-$(VERSION).tar.lz.t rearguard_tarballs_version: \ - tzdata$(VERSION)-rearguard.tar.gz + tzdata$(VERSION)-rearguard.tar.gz.t traditional_tarballs_version: \ - tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz + tzcode$(VERSION).tar.gz.t tzdata$(VERSION).tar.gz.t tailored_tarballs_version: \ - tzdata$(VERSION)-tailored.tar.gz + tzdata$(VERSION)-tailored.tar.gz.t signatures_version: $(ALL_ASC) rearguard_signatures_version: $(REARGUARD_ASC) traditional_signatures_version: $(TRADITIONAL_ASC) -tzcode$(VERSION).tar.gz: set-timestamps.out +tzcode$(VERSION).tar.gz.t: set-timestamps.out $(SETUP_TAR) && \ $$TAR -cf - \ $(COMMON) $(DOCS) $(SOURCES) | \ - gzip $(GZIPFLAGS) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(COMMON) $(DOCS) $(SOURCES) + touch $@ -tzdata$(VERSION).tar.gz: set-timestamps.out +tzdata$(VERSION).tar.gz.t: set-timestamps.out $(SETUP_TAR) && \ $$TAR -cf - $(TZDATA_DIST) | \ - gzip $(GZIPFLAGS) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(TZDATA_DIST) + touch $@ # Create empty files with a reproducible timestamp. CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00 @@ -1255,7 +1311,7 @@ CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00 # for backwards compatibility with tz releases 2018e through 2022a. # They should go away eventually. To build rearguard tarballs you # can instead use 'make DATAFORM=rearguard tailored_tarballs'. -tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out +tzdata$(VERSION)-rearguard.tar.gz.t: rearguard.zi set-timestamps.out rm -fr $@.dir mkdir $@.dir ln $(TZDATA_DIST) $@.dir @@ -1273,8 +1329,11 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out (cd $@.dir && \ $$TAR -cf - \ $(TZDATA_DIST) pacificnew | \ - gzip $(GZIPFLAGS)) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS)) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) \ + $$(cd $@.dir && \ + ls $(TZDATA_DIST) pacificnew | sed 's,^,$@.dir/,') + touch $@ # Create a tailored tarball suitable for TZUpdater and compatible tools. # For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball @@ -1283,7 +1342,7 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out # traditional tarball, as data entries are put into 'etcetera' even if they # came from some other source file. However, the effect should be the same # for ordinary use, which reads all the source files. -tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out +tzdata$(VERSION)-tailored.tar.gz.t: set-timestamps.out rm -fr $@.dir mkdir $@.dir : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier. @@ -1295,7 +1354,7 @@ tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out cd $@.dir && \ $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \ $$pacificnew - (grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \ + (sed '/^#/!d' tzdata.zi && echo && cat $(DATAFORM).zi) \ >$@.dir/etcetera touch -mr tzdata.zi $@.dir/etcetera sed -n \ @@ -1316,24 +1375,29 @@ tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out ln $$links $@.dir $(SETUP_TAR) && \ (cd $@.dir && \ - $$TAR -cf - * | gzip $(GZIPFLAGS)) >$@.out - mv $@.out $@ + $$TAR -cf - *) | gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) \ + $$(cd $@.dir && ls * | sed 's,^,$@.dir/,') + touch $@ -tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out +tzdb-$(VERSION).tar.lz.t: set-timestamps.out set-tzs-timestamp.out rm -fr tzdb-$(VERSION) mkdir tzdb-$(VERSION) ln $(ENCHILADA) tzdb-$(VERSION) $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/* $(SETUP_TAR) && \ - $$TAR -cf - tzdb-$(VERSION) | lzip -9 >$@.out - mv $@.out $@ + $$TAR -cf - tzdb-$(VERSION) | lzip -9 >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) tzdb-$(VERSION) + touch $@ -tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz -tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz -tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz -tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz +tzcode$(VERSION).tar.gz.asc.t: tzcode$(VERSION).tar.gz.t +tzdata$(VERSION).tar.gz.asc.t: tzdata$(VERSION).tar.gz.t +tzdata$(VERSION)-rearguard.tar.gz.asc.t: tzdata$(VERSION)-rearguard.tar.gz.t +tzdb-$(VERSION).tar.lz.asc.t: tzdb-$(VERSION).tar.lz.t $(ALL_ASC): - $(GPG) --armor --detach-sign $? + $(GPG) --armor --detach-sign $(?:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(?:.t=) + touch $@ TYPECHECK_CFLAGS = $(CFLAGS) -DTYPECHECK -D__time_t_defined -D_TIME_T typecheck: long-long.ck unsigned.ck diff --git a/contrib/tzcode/NEWS b/contrib/tzcode/NEWS index 8c0771641ef0..acd22280cb3a 100644 --- a/contrib/tzcode/NEWS +++ b/contrib/tzcode/NEWS @@ -1,5 +1,237 @@ News for the tz database +Release 2026a - 2026-03-01 22:59:49 -0800 + + Briefly: + Moldova has used EU transition times since 2022. + The "right" TZif files are no longer installed by default. + -DTZ_RUNTIME_LEAPS=0 disables runtime support for leap seconds. + TZif files are no longer limited to 50 bytes of abbreviations. + zic is no longer limited to 50 leap seconds. + Several integer overflow bugs have been fixed. + + Changes to past and future timestamps + + Since 2022 Moldova has observed EU transition times, that is, it + has sprung forward at 03:00, not 02:00, and has fallen back at + 04:00, not 03:00. (Thanks to Heitor David Pinto.) + + Changes to data + + Remove Europe/Chisinau from zonenow.tab, as it now agrees with + Europe/Athens for future timestamps. + + Changes to build procedure + + The Makefile no longer by default installs an alternate set + of TZif files for system clocks that count leap seconds. + Install with 'make REDO=posix_right' to get the old default, + which is rarely used in major downstream distributions. + If your system clock counts leap seconds (contrary to POSIX), + it is better to install with 'make REDO=right_only'. + This change does not affect the leapseconds file, which is still + installed as before. + + The Makefile's POSIXRULES option, which was declared obsolete in + release 2019b, has been removed. The Makefile's build procedure + thus no longer optionally installs the obsolete posixrules file. + + Changes to code + + Compiling with the new option -DTZ_RUNTIME_LEAPS=0 disables + runtime support for leap seconds. Although this conforms to + POSIX, shrinks tzcode's attack surface, and is more efficient, + it fails to support Internet RFC 9636's leap seconds. + + zic now can generate, and localtime.c can now use, TZif files that + hold up to 256 bytes of abbreviations, counting trailing NULs. + The previous limit was 50 bytes, and some tzdata TZif files were + already consuming 40 bytes. zic -v warns if it generates a file + that exceeds the old 50-byte limit. + + zic -L can now generate TZif files with more than 50 leap seconds. + This helps test TZif readers not limited to 50 leap seconds, as + tzcode's localtime.c is; it has little immediate need for + practical timekeeping as there have been only 27 leap seconds and + possibly there will be no more, due to planned changes to UTC. + zic -v warns if its output exceeds the old 50-second limit. + + localtime.c no longer accesses the posixrules file generated by + zic -p. Hence for obsolete and nonconforming settings like + TZ="AST4ADT" it now typically falls back on US DST rules, rather + than attempting to override this fallback with the contents of the + posixrules file. This removes library support that was declared + obsolete in release 2019b, and fixes some undefined behavior. + (Undefined behavior reported by GitHub user Naveed8951.) + + The posix2time, posix2time_z, time2posix, and time2posix_z + functions now set errno=EOVERFLOW and return ((time_t) -1) if the + result is not representable. Formerly they had undefined behavior + that could in practice result in crashing, looping indefinitely, + or returning an incorrect result. As before, these functions are + defined only when localtime.c is compiled with the -DSTD_INSPIRED + option. + + Some other undefined behavior, triggered by TZif files containing + outlandish but conforming UT offsets or leap second corrections, + has also been fixed. (Some of these bugs reported by Naveed8951.) + + localtime.c no longer rejects TZif files that exactly fit in its + internal structures, fixing off-by-one typos introduced in 2014g. + + zic no longer generates a no-op transition when + simultaneous Rule and Zone changes cancel each other out. + This occurs in tzdata only in Asia/Tbilisi on 1997-03-30. + (Thanks to Renchunhui for a test case showing the bug.) + + zic no longer assumes you can fflush a read-only stream. + (Problem reported by Christos Zoulas.) + + zic no longer generates UT offsets equal to -2**31 and localtime.c + no longer accepts them, as they can cause trouble in both + localtime.c and its callers. RFC 9636 prohibits such offsets. + + zic -p now warns that the -p option is obsolete and likely + ineffective. + + +Release 2025c - 2025-12-10 14:42:37 -0800 + + Briefly: + Several code changes for compatibility with FreeBSD. + + Changes to past timestamps + + Baja California agreed with California’s DST rules in 1953 and in + 1961 through 1975, instead of observing standard time all year. + (Thanks to Alois Treindl.) + + Changes to build procedure + + Files in distributed tarballs now have correct commit times. + Formerly, the committer’s time zone was incorrectly ignored. + + Distribution products (*.asc, *.gz, and *.lz) now have + reproducible timestamps. Formerly, only the contents of the + compressed tarballs had reproducible timestamps. + + By default, distributed formatted man pages (*.txt) now use UTF-8 + and are left-adjusted more consistently. A new Makefile macro + MANFLAGS can override these defaults. (Thanks to G. Branden + Robinson for inspiring these changes.) + + Changes to code + + An unset TZ is no longer invalid when /etc/localtime is missing, + and is abbreviated "UTC" not "-00". This reverts to 2024b behavior. + (Problem and patch reported by Dag-Erling Smørgrav.) + + New function offtime_r, short for fixed-offset localtime_rz. + It is defined if STD_INSPIRED is defined. + (Patch from Dag-Erling Smørgrav.) + + tzset etc. are now more cautious about questionable TZ settings. + Privileged programs now reject TZ settings that start with '/', + unless they are TZDEFAULT (default "/etc/localtime") or + start with TZDIR then '/' (default "/usr/share/zoneinfo/"). + Unprivileged programs now require files to be regular files + and reject relative names containing ".." directory components; + formerly, only privileged programs did those two things. + These changes were inspired by similar behavior in FreeBSD. + On NetBSD, unprivileged programs now use O_REGULAR to check + whether a TZ setting starting with '/' names a regular file, + avoiding a minor security race still present elsewhere. + TZ strings taken from tzalloc arguments are now treated with + no less caution than TZ strings taken from the environment, as + the old undocumented behavior would have been hard to explain. + tzset etc. no longer use the ‘access’ system call to check access; + instead they now use the system calls issetugid, getauxval, + getresuid/getresgid, and geteuid/getegid/getuid/getgid (whichever + first works) to test whether a program is privileged. + Compile with -DHAVE_SYS_AUXV_H=[01] to enable or disable + which (if it defines AT_SECURE) enables getauxval, + and compile with -DHAVE_ISSETUGID=[01], -DHAVE_GETRESUID=[01], and + -DHAVE_GETEUID=[01] to enable or disable the other calls’ use. + + The new CFLAGS option -DTZ_CHANGE_INTERVAL=N makes tzset etc. + check for TZif file changes if the in-memory data are N seconds + old or more, and are derived from the TZ environment variable. + This is intended for platforms that want tzset etc. to reflect + changes to whatever file TZ selects (including changes to + /etc/localtime if TZ is unset). If N is negative (the default) + these checks are omitted; this is the traditional behavior. + + The new CFLAGS options -DHAVE_STRUCT_STAT_ST_CTIM=0 and + -DHAVE_STRUCT_TIMESPEC=0 port to non-POSIX.1-2008 platforms + that lack st_ctim and struct timespec, respectively. + On these platforms, the code falls back on st_ctime to + implement -DTZ_CHANGE_INTERVAL=N. + + tzset etc. now treat ' ' like '_' in time zone abbreviations, + just as they treat other invalid bytes. This continues the + transition begun in release 96k, which removed spaces in tzdata + because the spaces break time string parsers. + + The new CFLAGS option -DTHREAD_PREFER_SINGLE causes tzcode + in single-threaded processes to avoid locks, as FreeBSD does. + This can save time in single-threaded apps. The threadedness + testing costs CPU time and energy in multi-threaded apps. + New options -DHAVE___ISTHREADED and -DHAVE_SYS_SINGLE_THREADED_H + can help configure how to test for single-threadedness. + + The new CFLAGS option -DTHREAD_RWLOCK uses read-write locks, as + macOS does, instead of mutexes. This saves real time when TZ is + rarely changing and many threads call tzcode simultaneously. + It costs more CPU time and energy. + + The new CFLAGS option -TTHREAD_TM_MULTI causes localtime to return + a pointer to thread-specific memory, as FreeBSD does, instead of + to the same memory in all threads. This supports nonportable + programs that incorrectly use localtime instead of localtime_r. + This option affects gmtime and offtime similarly to localtime. + Because the corresponding storage is freed on thread exit, this + option is incompatible with POSIX.1-2024 and earlier. It also + costs CPU time and memory. + + tzfree now preserves errno, consistently with POSIX.1-2024 ‘free’. + + tzcode now uses mempcpy if available, guessing its availability. + Compile with -DHAVE_MEMPCPY=1 or 0 to override the guess. + + tzcode now uses strnlen to improve asymptotic performance a bit. + Compile with -DHAVE_STRNLEN=0 if your platform lacks it. + + tzcode now hand-declares unistd.h-provided symbols like getopt + if HAVE_UNISTD_H=0, not if HAVE_POSIX_DECLS=0. + + tzset etc. now have an experimental OPENAT_TZDIR option; + see Makefile and localtime.c for details. + + On platforms like GNU/Hurd that do not define PATH_MAX, + exceedingly long TZ strings no longer fail merely because they + exceed an arbitrary file name length limit imposed by tzcode. + + zic has new options inspired by FreeBSD. ‘-D’ skips creation of + output ancestor directories, ‘-m MODE’ sets output files’ mode, + and ‘-u OWNER[:GROUP]’ sets output files’ owner and group. + + zic now uses the fdopen function, which was standardized by + POSIX.1-1988 and is now safe to use in portable code. + This replaces its use of the older umask function, which + complicated maintenance. + + Changes to commentary + + The leapseconds file contains commentary about the IERS and NIST + last-modified and expiration timestamps for leap second data. + (Thanks to Judah Levine.) + + Commentary now also uses characters from the set –‘’“”•≤ as this + can be useful and should work with current applications. This + also affects data in iso3166.tab and zone1970.tab, which now + contain strings like “Côte d’Ivoire” instead of “Côte d'Ivoire”. + + Release 2025b - 2025-03-22 13:40:46 -0700 Briefly: diff --git a/contrib/tzcode/README b/contrib/tzcode/README index edabd2e0690f..f22ec5492d09 100644 --- a/contrib/tzcode/README +++ b/contrib/tzcode/README @@ -1,8 +1,8 @@ README for the tz distribution -"Where do I set the hands of the clock?" -- Les Tremayne as The King -"Oh that--you can set them any place you want." -- Frank Baxter as The Scientist - (from the Bell System film "About Time") +“Where do I set the hands of the clock?” – Les Tremayne as The King +“Oh that – you can set them any place you want.” – Frank Baxter as The Scientist + (from the Bell System film “About Time”) The Time Zone Database (called tz, tzdb or zoneinfo) contains code and data that represent the history of local time for many representative @@ -13,12 +13,12 @@ and daylight-saving rules. See or the file tz-link.html for how to acquire the code and data. -Once acquired, read the leading comments in the file "Makefile" +Once acquired, read the leading comments in the file ‘Makefile’ and make any changes needed to make things right for your system, especially when using a platform other than current GNU/Linux. Then run the following commands, substituting your desired -installation directory for "$HOME/tzdir": +installation directory for ‘$HOME/tzdir’: make TOPDIR="$HOME/tzdir" install "$HOME/tzdir/usr/bin/zdump" -v America/Los_Angeles @@ -39,12 +39,12 @@ The information in the time zone data files is by no means authoritative; fixes and enhancements are welcome. Please see the file CONTRIBUTING for details. -Thanks to these Time Zone Caballeros who've made major contributions to the +Thanks to these Time Zone Caballeros who’ve made major contributions to the time conversion package: Keith Bostic; Bob Devine; Paul Eggert; Robert Elz; Guy Harris; Mark Horton; John Mackin; and Bradley White. Thanks also to Michael Bloom, Art Neilson, Stephen Prince, John Sovereign, and Frank Wales for testing work, and to Gwillim Law for checking local mean time data. -Thanks in particular to Arthur David Olson, the project's founder and first +Thanks in particular to Arthur David Olson, the project’s founder and first maintainer, to whom the time zone community owes the greatest debt of all. None of them are responsible for remaining errors. diff --git a/contrib/tzcode/SECURITY b/contrib/tzcode/SECURITY index 40128bc86dd2..dbce8bbd5d2d 100644 --- a/contrib/tzcode/SECURITY +++ b/contrib/tzcode/SECURITY @@ -1,7 +1,7 @@ Please report any sensitive security-related bugs via email to the tzdb designated coordinators, currently Paul Eggert and Tim Parenti . -Put "tzdb security" at the start of your email's subject line. +Put “tzdb security” at the start of your email’s subject line. We prefer communications to be in English. You should receive a response within a week. If not, please follow up diff --git a/contrib/tzcode/calendars b/contrib/tzcode/calendars index f4ed9e434e50..699de85cbffa 100644 --- a/contrib/tzcode/calendars +++ b/contrib/tzcode/calendars @@ -16,30 +16,9 @@ and (in Paris only) 1871-05-06 through 1871-05-23. Russia -From Chris Carrier (1996-12-02): -On 1929-10-01 the Soviet Union instituted an "Eternal Calendar" -with 30-day months plus 5 holidays, with a 5-day week. -On 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the -Gregorian calendar while retaining the 6-day week; on 1940-06-27 it -reverted to the 7-day week. With the 6-day week the usual days -off were the 6th, 12th, 18th, 24th and 30th of the month. -(Source: Evitiar Zerubavel, _The Seven Day Circle_) - - -Mark Brader reported a similar story in "The Book of Calendars", edited -by Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377. But: - -From: Petteri Sulonen (via Usenet) -Date: 14 Jan 1999 00:00:00 GMT -... - -If your source is correct, how come documents between 1929 and 1940 were -still dated using the conventional, Gregorian calendar? - -I can post a scan of a document dated December 1, 1934, signed by *** 8670 LINES SKIPPED *** From nobody Thu Apr 2 11:20:37 2026 X-Original-To: dev-commits-src-branches@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 4fmfY2079qz6YH0G for ; Thu, 02 Apr 2026 11:20:38 +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 4fmfY13w56z3JC6 for ; Thu, 02 Apr 2026 11:20:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128837; 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=0hiF/0gfB83MwP+K3NTAq+uhcEN9dEkvjtHQ+sSb+Mc=; b=dz/zDgR6wUJPt1EZz9UFuN/YTIJcgcfiqi4nNJz6/rFIVi6e2TvteV7ppxVwuWGucsca31 soyMcyUN7qxCe7QkQFuBHrza/z6iIL4uD7djNJnmuBm2Rf4OB8JHGdr23vlo+QVOegcuzl LM1HtKBt/BVGZcwGrOEO13mr8svwpX5RqRFajaUKLLqe3t446AZ7MMGs3vZdnW0+M7bptM FoG8eDSpJCmpNxGrGu1OTn03AJTcxcn5X+BQMxZMalispQa9rghKBTV40G5uCnZ1OWI6C1 yNDCwL/bH1w4H64gFCTwYVtX299Uco3OmfC1v+iAl0QbtT5cJZmqFw6lfaRXsg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128837; a=rsa-sha256; cv=none; b=Uve2KlDrajc1JRmEijFzk4nQWKmcqGI6dloGGjQm4dbFp0wxlJeyuOctcBuA3kgpigmDkO VZQjaJLl93YEmvE2QvIOuzw31J+BiDu31UEEqUYUfobfj2kKZUapkC2mSasYdnbZbRmJ1H yeDktLS3LTPxTqR7/NuTKDGri9a4DwyGqNxGc0UyzeALRVSywurPN+0y41E6geao2YvfDG c+XiiRYVrm1F16/YPcZmsdmu0nXHWan6yVJWYjIgERnl1+Ht2Xx5XCKyZRBn4keKewltrk 9QpI2hanN4sdQygEE/53LuaC9qI6SFafVvxhmcgH1qzQykZeiSqQbrps1RQS3A== 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=1775128837; 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=0hiF/0gfB83MwP+K3NTAq+uhcEN9dEkvjtHQ+sSb+Mc=; b=A2qbivhppj/jU9KzxLjSkDhyr3aO4v1HoCTIpEOK61zCRYEmr1Mzu7CvIkwZZXCZkqhR7e VjRZSBbmK0Qyhu6WMKDsVygGEEHTzWGxaDgHMxgDYtKAo6qYkXssluHpv8NrjE49/3TVJ0 bXKy+KCgJKRosK4eLNts2lBZkuF2wvK0/S+nfupNnT2gQp4MeJWxBcoB8GZl75kEIyQumd GCVZBmraDpuc3D8mcn0WHbaUF61kLslQkVAuyVMyR3JSdqdOTxv8NFIfLq67SQTz+6DPIQ AZUHwKZs4a/vZP+eEN+Ku9le4IcfFtOg36ylYeCNIVmI6wbSpxtKt26i4hB1OQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY12JPkz105W for ; Thu, 02 Apr 2026 11:20:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f579 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:37 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: d6bc98af7ab7 - stable/14 - libc: Test time zone change detection. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d6bc98af7ab7bc63de2b2f85debd48c30de55468 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:37 +0000 Message-Id: <69ce5105.1f579.2d715e59@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=d6bc98af7ab7bc63de2b2f85debd48c30de55468 commit d6bc98af7ab7bc63de2b2f85debd48c30de55468 Author: Dag-Erling Smørgrav AuthorDate: 2025-07-18 17:49:13 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:15:59 +0000 libc: Test time zone change detection. While here, clean the detection code up a bit. Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D51343 (cherry picked from commit 57ee56578cc55b3da9a0dee64b385507be2dc80a) --- contrib/tzcode/localtime.c | 18 +- lib/libc/stdtime/Makefile.inc | 1 + lib/libc/stdtime/Symbol.map | 6 + lib/libc/tests/stdtime/Makefile | 5 +- lib/libc/tests/stdtime/detect_tz_changes_test.c | 281 ++++++++++++++++++++++++ tools/build/mk/OptionalObsoleteFiles.inc | 4 + 6 files changed, 301 insertions(+), 14 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index bdec08e4abae..a6ec3d8e4e21 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -18,6 +18,7 @@ #ifndef DETECT_TZ_CHANGES_INTERVAL #define DETECT_TZ_CHANGES_INTERVAL 61 #endif +int __tz_change_interval = DETECT_TZ_CHANGES_INTERVAL; #include #endif #include @@ -1374,22 +1375,13 @@ recheck_tzdata() { static time_t last_checked; struct timespec now; - time_t current_time; - int error; - /* - * We want to recheck the timezone file every 61 sec. - */ - error = clock_gettime(CLOCK_MONOTONIC, &now); - if (error < 0) { - /* XXX: Can we somehow report this? */ + if (clock_gettime(CLOCK_MONOTONIC, &now) < 0) return 0; - } - current_time = now.tv_sec; - if ((current_time - last_checked > DETECT_TZ_CHANGES_INTERVAL) || - (last_checked > current_time)) { - last_checked = current_time; + if ((now.tv_sec - last_checked >= __tz_change_interval) || + (last_checked > now.tv_sec)) { + last_checked = now.tv_sec; return 1; } diff --git a/lib/libc/stdtime/Makefile.inc b/lib/libc/stdtime/Makefile.inc index 1c5880797f43..aa3facf8c6f1 100644 --- a/lib/libc/stdtime/Makefile.inc +++ b/lib/libc/stdtime/Makefile.inc @@ -18,6 +18,7 @@ CFLAGS.${src}+= -I${LIBC_SRCTOP}/stdtime CFLAGS.localtime.c+= -DALL_STATE -DTHREAD_SAFE .if ${MK_DETECT_TZ_CHANGES} != "no" CFLAGS.localtime.c+= -DDETECT_TZ_CHANGES +CFLAGS.Version.map+= -DDETECT_TZ_CHANGES .endif MAN+= ctime.3 strftime.3 strptime.3 time2posix.3 tzset.3 diff --git a/lib/libc/stdtime/Symbol.map b/lib/libc/stdtime/Symbol.map index 0dca02903a1a..e4a0f1df6532 100644 --- a/lib/libc/stdtime/Symbol.map +++ b/lib/libc/stdtime/Symbol.map @@ -30,3 +30,9 @@ FBSD_1.0 { asctime_r; asctime; }; + +FBSDprivate_1.0 { +#ifdef DETECT_TZ_CHANGES + __tz_change_interval; +#endif +}; diff --git a/lib/libc/tests/stdtime/Makefile b/lib/libc/tests/stdtime/Makefile index c7a7f5b9436f..adb883cc5b9a 100644 --- a/lib/libc/tests/stdtime/Makefile +++ b/lib/libc/tests/stdtime/Makefile @@ -1,6 +1,9 @@ -.include +.include ATF_TESTS_C+= strptime_test +.if ${MK_DETECT_TZ_CHANGES} != "no" +ATF_TESTS_C+= detect_tz_changes_test +.endif TESTSDIR:= ${TESTSBASE}/${RELDIR:C/libc\/tests/libc/} diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c new file mode 100644 index 000000000000..9722546747fd --- /dev/null +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -0,0 +1,281 @@ +/*- + * Copyright (c) 2025 Klara, Inc. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */ +static const char *tz_change_interval_sym = "__tz_change_interval"; +static int *tz_change_interval_p; +static const int tz_change_interval = 3; +static int tz_change_timeout = 90; + +static bool debugging; + +static void +debug(const char *fmt, ...) +{ + va_list ap; + + if (debugging) { + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); + } +} + +static void +change_tz(const char *tzn) +{ + static const char *zfn = "/usr/share/zoneinfo"; + static const char *tfn = "root/etc/.localtime"; + static const char *dfn = "root/etc/localtime"; + ssize_t clen; + int zfd, sfd, dfd; + + ATF_REQUIRE((zfd = open(zfn, O_DIRECTORY | O_SEARCH)) >= 0); + ATF_REQUIRE((sfd = openat(zfd, tzn, O_RDONLY)) >= 0); + ATF_REQUIRE((dfd = open(tfn, O_CREAT | O_TRUNC | O_WRONLY)) >= 0); + do { + clen = copy_file_range(sfd, NULL, dfd, NULL, SSIZE_MAX, 0); + ATF_REQUIRE_MSG(clen != -1, "failed to copy %s/%s: %m", + zfn, tzn); + } while (clen > 0); + ATF_CHECK_EQ(0, close(dfd)); + ATF_CHECK_EQ(0, close(sfd)); + ATF_CHECK_EQ(0, close(zfd)); + ATF_REQUIRE_EQ(0, rename(tfn, dfn)); + debug("time zone %s installed", tzn); +} + +/* + * Test time zone change detection. + * + * The parent creates a chroot containing only /etc/localtime, initially + * set to UTC. It then forks a child which enters the chroot, repeatedly + * checks the current time zone, and prints it to stdout if it changes + * (including once on startup). Meanwhile, the parent waits for output + * from the child. Every time it receives a line of text from the child, + * it checks that it is as expected, then changes /etc/localtime within + * the chroot to the next case in the list. Once it reaches the end of + * the list, it closes a pipe to notify the child, which terminates. + * + * Note that ATF and / or Kyua may have set the timezone before the test + * case starts (even unintentionally). Therefore, we start the test only + * after we've received and discarded the first report from the child, + * which should come almost immediately on startup. + */ +ATF_TC(detect_tz_changes); +ATF_TC_HEAD(detect_tz_changes, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test timezone change detection"); + atf_tc_set_md_var(tc, "require.user", "root"); + atf_tc_set_md_var(tc, "timeout", "600"); +} +ATF_TC_BODY(detect_tz_changes, tc) +{ + static const struct tzcase { + const char *tzfn; + const char *expect; + } tzcases[] = { + /* + * A handful of time zones and the expected result of + * strftime("%z (%Z)", tm) when that time zone is active + * and tm represents a date in the summer of 2025. + */ + { "America/Vancouver", "-0700 (PDT)" }, + { "America/New_York", "-0400 (EDT)" }, + { "Europe/London", "+0100 (BST)" }, + { "Europe/Paris", "+0200 (CEST)" }, + { "Asia/Kolkata", "+0530 (IST)" }, + { "Asia/Tokyo", "+0900 (JST)" }, + { "Australia/Canberra", "+1000 (AEST)" }, + { "UTC", "+0000 (UTC)" }, + { 0 }, + }; + char obuf[1024] = ""; + char ebuf[1024] = ""; + struct pollfd fds[3]; + int opd[2], epd[2], spd[2]; + time_t changed, now; + const struct tzcase *tzcase = NULL; + struct tm *tm; + size_t olen = 0, elen = 0; + ssize_t rlen; + long curoff = LONG_MIN; + pid_t pid; + int nfds, status; + + /* speed up the test if possible */ + tz_change_interval_p = dlsym(RTLD_SELF, tz_change_interval_sym); + if (tz_change_interval_p != NULL && + *tz_change_interval_p > tz_change_interval) { + debug("reducing detection interval from %d to %d", + *tz_change_interval_p, tz_change_interval); + *tz_change_interval_p = tz_change_interval; + tz_change_timeout = tz_change_interval * 3; + } + /* prepare chroot */ + ATF_REQUIRE_EQ(0, mkdir("root", 0755)); + ATF_REQUIRE_EQ(0, mkdir("root/etc", 0755)); + change_tz("UTC"); + time(&changed); + /* output, error, sync pipes */ + if (pipe(opd) != 0 || pipe(epd) != 0 || pipe(spd) != 0) + atf_tc_fail("failed to pipe"); + /* fork child */ + if ((pid = fork()) < 0) + atf_tc_fail("failed to fork"); + if (pid == 0) { + /* child */ + dup2(opd[1], STDOUT_FILENO); + close(opd[0]); + close(opd[1]); + dup2(epd[1], STDERR_FILENO); + close(epd[0]); + close(epd[1]); + close(spd[0]); + unsetenv("TZ"); + ATF_REQUIRE_EQ(0, chroot("root")); + ATF_REQUIRE_EQ(0, chdir("/")); + fds[0].fd = spd[1]; + fds[0].events = POLLIN; + for (;;) { + ATF_REQUIRE(poll(fds, 1, 100) >= 0); + if (fds[0].revents & POLLHUP) { + /* parent closed sync pipe */ + _exit(0); + } + ATF_REQUIRE((tm = localtime(&then)) != NULL); + if (tm->tm_gmtoff == curoff) + continue; + olen = strftime(obuf, sizeof(obuf), "%z (%Z)", tm); + ATF_REQUIRE(olen > 0); + fprintf(stdout, "%s\n", obuf); + fflush(stdout); + curoff = tm->tm_gmtoff; + } + _exit(2); + } + /* parent */ + close(opd[1]); + close(epd[1]); + close(spd[1]); + /* receive output until child terminates */ + fds[0].fd = opd[0]; + fds[0].events = POLLIN; + fds[1].fd = epd[0]; + fds[1].events = POLLIN; + fds[2].fd = spd[0]; + fds[2].events = POLLIN; + nfds = 3; + for (;;) { + ATF_REQUIRE(poll(fds, 3, 1000) >= 0); + time(&now); + if (fds[0].revents & POLLIN && olen < sizeof(obuf)) { + rlen = read(opd[0], obuf + olen, sizeof(obuf) - olen); + ATF_REQUIRE(rlen >= 0); + olen += rlen; + } + if (olen > 0) { + ATF_REQUIRE_EQ('\n', obuf[olen - 1]); + obuf[--olen] = '\0'; + /* tzcase will be NULL at first */ + if (tzcase != NULL) { + debug("%s", obuf); + ATF_REQUIRE_STREQ(tzcase->expect, obuf); + debug("change to %s detected after %d s", + tzcase->tzfn, (int)(now - changed)); + if (tz_change_interval_p != NULL) { + ATF_CHECK((int)(now - changed) >= + *tz_change_interval_p - 1); + ATF_CHECK((int)(now - changed) <= + *tz_change_interval_p + 1); + } + } + olen = 0; + /* first / next test case */ + if (tzcase == NULL) + tzcase = tzcases; + else + tzcase++; + if (tzcase->tzfn == NULL) { + /* test is over */ + break; + } + change_tz(tzcase->tzfn); + changed = now; + } + if (fds[1].revents & POLLIN && elen < sizeof(ebuf)) { + rlen = read(epd[0], ebuf + elen, sizeof(ebuf) - elen); + ATF_REQUIRE(rlen >= 0); + elen += rlen; + } + if (elen > 0) { + ATF_REQUIRE_EQ(elen, fwrite(ebuf, 1, elen, stderr)); + elen = 0; + } + if (nfds > 2 && fds[2].revents & POLLHUP) { + /* child closed sync pipe */ + break; + } + /* + * The timeout for this test case is set to 10 minutes, + * because it can take that long to run with the default + * 61-second interval. However, each individual tzcase + * entry should not take much longer than the detection + * interval to test, so we can detect a problem long + * before Kyua terminates us. + */ + if ((now - changed) > tz_change_timeout) { + close(spd[0]); + if (tz_change_interval_p == NULL && + tzcase == tzcases) { + /* + * The most likely explanation in this + * case is that libc was built without + * time zone change detection. + */ + atf_tc_skip("time zone change detection " + "does not appear to be enabled"); + } + atf_tc_fail("timed out waiting for change to %s " + "to be detected", tzcase->tzfn); + } + } + close(opd[0]); + close(epd[0]); + close(spd[0]); /* this will wake up and terminate the child */ + if (olen > 0) + ATF_REQUIRE_EQ(olen, fwrite(obuf, 1, olen, stdout)); + if (elen > 0) + ATF_REQUIRE_EQ(elen, fwrite(ebuf, 1, elen, stderr)); + ATF_REQUIRE_EQ(pid, waitpid(pid, &status, 0)); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE_EQ(0, WEXITSTATUS(status)); +} + +ATF_TP_ADD_TCS(tp) +{ + debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") && + isatty(STDERR_FILENO); + ATF_TP_ADD_TC(tp, detect_tz_changes); + return (atf_no_error()); +} diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 72b495416d3b..0e4f08da2284 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1449,6 +1449,10 @@ OLD_LIBS+=${DEBUG_LIBS} .endif .endif +.if ${MK_DETECT_TZ_CHANGES} == no +OLD_FILES+=tests/lib/libc/stdtime/detect_tz_changes_test +.endif + .if ${MK_DIALOG} == no OLD_FILES+=usr/bin/dialog OLD_FILES+=usr/bin/dpv From nobody Thu Apr 2 11:20:38 2026 X-Original-To: dev-commits-src-branches@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 4fmfY25LZqz6YGlN for ; Thu, 02 Apr 2026 11:20:38 +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 4fmfY242hmz3JDs for ; Thu, 02 Apr 2026 11:20:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128838; 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=XVNTK15dRy77+HCBUJjGmvUI62Df9DYiILXWNDh67Ww=; b=FbJa57e6akTV4A6n98QADJKVPl9EPPKXuS1e5YU3IOAdPzhJwxPgzbzH8C8RJjL7WcC+vp keGSCW9IortHKG6jByUSTflEcubKXI6O7KVQ6A73SdUHKUy5nYxJUBnXkMyUXGp5LD1gTP Euwek3cEEkByhZ4wBi/C6HVTXe2BQA2BP1zv42Z4X5g2Ih8k2NzazxxU+fTSO+u7KLKHFL raHKL1z6Bm+vB8cNqR6un818KsNxFi3X1JBG/dV2ixzuLHBYHFBgs3xYkDQs0vJhiVta/C 31NaYLEe9zK62YqetEKtAxEld1mlYaWoBnwaSPDrXFtDJeS1H88tdvMbkQSJGA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128838; a=rsa-sha256; cv=none; b=ibpgj/sEZof0uL2HgOPC/YcLkfTzFaAk0TsPF2/6M/XC3iwrbwjHo+1c88dFM+w2AUMXQb PyfvIKU8+3P53iALF2/6AwiyCkM25IVsE4mcswfWkHJNkTN6Dih4E+2QbTkEdHdjSUvY2v aWXNpDGFrVbW/avoQYQ9TAmew3AYia0rwJ/VEZwGh7IiQ2rzitave/dsq9OtDuL/hNKsM+ rOScLiBp8PYO4Llr34w0CQ0SXGnb6HRJh52T71oj3ttSZN1/AY5lCHjQhQKXwxoCrzo9CZ GXAKvF7WdEpH6oHnE+FQgLFsU5odtWMpFlxzMqEW6vcVjCzY8wwOOzYedqCLfQ== 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=1775128838; 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=XVNTK15dRy77+HCBUJjGmvUI62Df9DYiILXWNDh67Ww=; b=GhO6shks/z/+zy0fBYRSOZ5aWk5aPM1kyonz9vCREGPu/iY1S3FAmla/8huv0mLSdVE7H6 fsFCml1hmZRETSUgyiTtm7FjHhLPVCWD10bHSMUhcfkCbpgI7wryD+kzkGpXOJltNZUWmn oXSxqdhjAadxFviblfQLBOLhyTuJ3DkP6bwM1jucExNlzQ/XsTAHWsrSmpJg6ahkhcqlNR yYdUShOVwO1FEM/+w5rjvkzt+iO9iuUiLSPC1U1okH+Q28HK/GtFMrifHIrY2ffOVnmugm 4K2Y5XR1NZ+rlQDuGK7U0uR5pE+evOqjtrcqDutxj3gOxGWgcnhtMuAFREUh8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY22wz9z10Jc for ; Thu, 02 Apr 2026 11:20:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f17c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 2ad6daa6b24b - stable/14 - tzcode: Reduce diff to upstream List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2ad6daa6b24b6526693db3ddd5c1ecc72d8ea3fe Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:38 +0000 Message-Id: <69ce5106.1f17c.478c859f@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=2ad6daa6b24b6526693db3ddd5c1ecc72d8ea3fe commit 2ad6daa6b24b6526693db3ddd5c1ecc72d8ea3fe Author: Dag-Erling Smørgrav AuthorDate: 2025-08-21 16:34:27 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:15:59 +0000 tzcode: Reduce diff to upstream Reviewed by: imp, jhb, emaste Differential Revision: https://reviews.freebsd.org/D51997 (cherry picked from commit f5efc804294c6bb24bd6d14bf2fb883a7320956c) --- contrib/tzcode/localtime.c | 292 ++++++++++++++++++++++++++------------------- 1 file changed, 169 insertions(+), 123 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index a6ec3d8e4e21..6eabe0afe570 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -13,37 +13,36 @@ /*LINTLIBRARY*/ #define LOCALTIME_IMPLEMENTATION +#ifdef __FreeBSD__ #include "namespace.h" +#include +#endif /* __FreeBSD__ */ #ifdef DETECT_TZ_CHANGES -#ifndef DETECT_TZ_CHANGES_INTERVAL -#define DETECT_TZ_CHANGES_INTERVAL 61 -#endif +# ifndef DETECT_TZ_CHANGES_INTERVAL +# define DETECT_TZ_CHANGES_INTERVAL 61 +# endif int __tz_change_interval = DETECT_TZ_CHANGES_INTERVAL; -#include -#endif -#include -#if THREAD_SAFE -#include -#endif +# include +#endif /* DETECT_TZ_CHANGES */ #include "private.h" -#include "un-namespace.h" #include "tzdir.h" #include "tzfile.h" - +#include +#ifdef __FreeBSD__ #include "libc_private.h" +#include "un-namespace.h" +#endif /* __FreeBSD__ */ #if defined THREAD_SAFE && THREAD_SAFE +# include +#ifdef __FreeBSD__ +# define pthread_mutex_lock(l) (__isthreaded ? _pthread_mutex_lock(l) : 0) +# define pthread_mutex_unlock(l) (__isthreaded ? _pthread_mutex_unlock(l) : 0) +#endif /* __FreeBSD__ */ static pthread_mutex_t locallock = PTHREAD_MUTEX_INITIALIZER; -static int lock(void) { - if (__isthreaded) - return _pthread_mutex_lock(&locallock); - return 0; -} -static void unlock(void) { - if (__isthreaded) - _pthread_mutex_unlock(&locallock); -} +static int lock(void) { return pthread_mutex_lock(&locallock); } +static void unlock(void) { pthread_mutex_unlock(&locallock); } #else static int lock(void) { return 0; } static void unlock(void) { } @@ -166,6 +165,9 @@ struct rule { int_fast32_t r_time; /* transition time of rule */ }; +#ifdef __FreeBSD__ +static void tzset_unlocked_name(char const *); +#endif /* __FreeBSD__ */ static struct tm *gmtsub(struct state const *, time_t const *, int_fast32_t, struct tm *); static bool increment_overflow(int *, int); @@ -194,7 +196,7 @@ static struct state *const gmtptr = &gmtmem; static char lcl_TZname[TZ_STRLEN_MAX + 1]; static int lcl_is_set; - +#ifdef __FreeBSD__ static pthread_once_t gmt_once = PTHREAD_ONCE_INIT; static pthread_once_t gmtime_once = PTHREAD_ONCE_INIT; static pthread_key_t gmtime_key; @@ -205,6 +207,7 @@ static int offtime_key_error; static pthread_once_t localtime_once = PTHREAD_ONCE_INIT; static pthread_key_t localtime_key; static int localtime_key_error; +#endif /* __FreeBSD__ */ /* ** Section 4.12.3 of X3.159-1989 requires that @@ -398,13 +401,14 @@ scrub_abbrs(struct state *sp) #ifdef DETECT_TZ_CHANGES /* - * Determine if there's a change in the timezone since the last time we checked. + * Check whether either the time zone name or the file it refers to has + * changed since the last time we checked. * Returns: -1 on error - * 0 if the timezone has not changed - * 1 if the timezone has changed + * 0 if the time zone has not changed + * 1 if the time zone has changed */ static int -change_in_tz(const char *name) +tzfile_changed(const char *name) { static char old_name[PATH_MAX]; static struct stat old_sb; @@ -429,9 +433,7 @@ change_in_tz(const char *name) return 0; } -#else /* !DETECT_TZ_CHANGES */ -#define change_in_tz(X) 1 -#endif /* !DETECT_TZ_CHANGES */ +#endif /* DETECT_TZ_CHANGES */ /* Input buffer for data read from a compiled tz file. */ union input_buffer { @@ -478,6 +480,7 @@ tzloadbody(char const *name, struct state *sp, bool doextend, register int fid; register int stored; register ssize_t nread; + register bool doaccess; register union input_buffer *up = &lsp->u.u; register int tzheadsize = sizeof(struct tzhead); @@ -491,7 +494,17 @@ tzloadbody(char const *name, struct state *sp, bool doextend, if (name[0] == ':') ++name; - if (name[0] != '/') { +#ifdef SUPPRESS_TZDIR + /* Do not prepend TZDIR. This is intended for specialized + applications only, due to its security implications. */ + doaccess = true; +#else + doaccess = name[0] == '/'; +#endif + if (!doaccess) { +#ifndef __FreeBSD__ + char const *dot; +#endif /* !__FreeBSD__ */ if (sizeof lsp->fullname - sizeof tzdirslash <= strlen(name)) return ENAMETOOLONG; @@ -501,15 +514,32 @@ tzloadbody(char const *name, struct state *sp, bool doextend, memcpy(lsp->fullname, tzdirslash, sizeof tzdirslash); strcpy(lsp->fullname + sizeof tzdirslash, name); +#ifndef __FreeBSD__ + /* Set doaccess if NAME contains a ".." file name + component, as such a name could read a file outside + the TZDIR virtual subtree. */ + for (dot = name; (dot = strchr(dot, '.')); dot++) + if ((dot == name || dot[-1] == '/') && dot[1] == '.' + && (dot[2] == '/' || !dot[2])) { + doaccess = true; + break; + } +#endif /* !__FreeBSD__ */ + name = lsp->fullname; } +#ifndef __FreeBSD__ + if (doaccess && access(name, R_OK) != 0) + return errno; +#endif /* !__FreeBSD__ */ +#ifdef DETECT_TZ_CHANGES if (doextend) { /* * Detect if the timezone file has changed. Check - * 'doextend' to ignore TZDEFRULES; the change_in_tz() + * 'doextend' to ignore TZDEFRULES; the tzfile_changed() * function can only keep state for a single file. */ - switch (change_in_tz(name)) { + switch (tzfile_changed(name)) { case -1: return errno; case 0: @@ -518,6 +548,7 @@ tzloadbody(char const *name, struct state *sp, bool doextend, break; } } +#endif /* DETECT_TZ_CHANGES */ fid = _open(name, O_RDONLY | O_BINARY); if (fid < 0) return errno; @@ -1370,8 +1401,11 @@ gmtload(struct state *const sp) } #ifdef DETECT_TZ_CHANGES +/* + * Check if the time zone data we have is still fresh. + */ static int -recheck_tzdata() +tzdata_is_fresh(void) { static time_t last_checked; struct timespec now; @@ -1387,9 +1421,7 @@ recheck_tzdata() return 0; } -#else /* !DETECT_TZ_CHANGES */ -#define recheck_tzdata() 0 -#endif /* !DETECT_TZ_CHANGES */ +#endif /* DETECT_TZ_CHANGES */ /* Initialize *SP to a value appropriate for the TZ setting NAME. Return 0 on success, an errno value on failure. */ @@ -1418,16 +1450,27 @@ zoneinit(struct state *sp, char const *name) } } +static void +tzset_unlocked(void) +{ +#ifdef __FreeBSD__ + tzset_unlocked_name(getenv("TZ")); +} static void tzset_unlocked_name(char const *name) { +#else + char const *name = getenv("TZ"); +#endif struct state *sp = lclptr; int lcl = name ? strlen(name) < sizeof lcl_TZname : -1; if (lcl < 0 ? lcl_is_set < 0 : 0 < lcl_is_set && strcmp(lcl_TZname, name) == 0) - if (recheck_tzdata() == 0) - return; +#ifdef DETECT_TZ_CHANGES + if (tzdata_is_fresh() == 0) +#endif /* DETECT_TZ_CHANGES */ + return; #ifdef ALL_STATE if (! sp) lclptr = sp = malloc(sizeof *lclptr); @@ -1442,12 +1485,6 @@ tzset_unlocked_name(char const *name) lcl_is_set = lcl; } -static void -tzset_unlocked(void) -{ - tzset_unlocked_name(getenv("TZ")); -} - void tzset(void) { @@ -1457,6 +1494,7 @@ tzset(void) unlock(); } +#ifdef __FreeBSD__ void freebsd13_tzsetwall(void) { @@ -1468,7 +1506,7 @@ freebsd13_tzsetwall(void) __sym_compat(tzsetwall, freebsd13_tzsetwall, FBSD_1.0); __warn_references(tzsetwall, "warning: tzsetwall() is deprecated, use tzset() instead."); - +#endif /* __FreeBSD__ */ static void gmtcheck(void) { @@ -1485,6 +1523,9 @@ gmtcheck(void) } unlock(); } +#ifdef __FreeBSD__ +#define gmtcheck() _once(&gmt_once, gmtcheck) +#endif #if NETBSD_INSPIRED @@ -1652,45 +1693,47 @@ localtime_tzset(time_t const *timep, struct tm *tmp, bool setname) } #ifndef DETECT_TZ_CHANGES if (setname || !lcl_is_set) -#endif +#endif /* DETECT_TZ_CHANGES */ tzset_unlocked(); tmp = localsub(lclptr, timep, setname, tmp); unlock(); return tmp; } +#ifdef __FreeBSD__ static void localtime_key_init(void) { - - localtime_key_error = _pthread_key_create(&localtime_key, free); + localtime_key_error = _pthread_key_create(&localtime_key, free); } - +#endif /* __FreeBSD__ */ struct tm * localtime(const time_t *timep) { #if !SUPPORT_C89 - static struct tm tm; + static struct tm tm; #endif - struct tm *p_tm = &tm; - - if (__isthreaded != 0) { - _pthread_once(&localtime_once, localtime_key_init); - if (localtime_key_error != 0) { - errno = localtime_key_error; - return (NULL); - } - if ((p_tm = _pthread_getspecific(localtime_key)) == NULL) { - if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { - return (NULL); - } - if (_pthread_setspecific(localtime_key, p_tm) != 0) { - free(p_tm); - return (NULL); - } - } - } - return localtime_tzset(timep, p_tm, true); +#ifdef __FreeBSD__ + struct tm *p_tm = &tm; + + if (__isthreaded != 0) { + _pthread_once(&localtime_once, localtime_key_init); + if (localtime_key_error != 0) { + errno = localtime_key_error; + return (NULL); + } + if ((p_tm = _pthread_getspecific(localtime_key)) == NULL) { + if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { + return (NULL); + } + if (_pthread_setspecific(localtime_key, p_tm) != 0) { + free(p_tm); + return (NULL); + } + } + } +#endif /* __FreeBSD__ */ + return localtime_tzset(timep, p_tm, true); } struct tm * @@ -1729,42 +1772,44 @@ gmtsub(ATTRIBUTE_MAYBE_UNUSED struct state const *sp, time_t const *timep, struct tm * gmtime_r(time_t const *restrict timep, struct tm *restrict tmp) { - _once(&gmt_once, gmtcheck); - return gmtsub(gmtptr, timep, 0, tmp); + gmtcheck(); + return gmtsub(gmtptr, timep, 0, tmp); } +#ifdef __FreeBSD__ static void gmtime_key_init(void) { - - gmtime_key_error = _pthread_key_create(&gmtime_key, free); + gmtime_key_error = _pthread_key_create(&gmtime_key, free); } - +#endif /* __FreeBSD__ */ struct tm * gmtime(const time_t *timep) { #if !SUPPORT_C89 - static struct tm tm; + static struct tm tm; #endif - struct tm *p_tm = &tm; - - if (__isthreaded != 0) { - _pthread_once(&gmtime_once, gmtime_key_init); - if (gmtime_key_error != 0) { - errno = gmtime_key_error; - return (NULL); - } - if ((p_tm = _pthread_getspecific(gmtime_key)) == NULL) { - if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { - return (NULL); - } - if (_pthread_setspecific(gmtime_key, p_tm) != 0) { - free(p_tm); - return (NULL); - } - } - } - return gmtime_r(timep, p_tm); +#ifdef __FreeBSD__ + struct tm *p_tm = &tm; + + if (__isthreaded != 0) { + _pthread_once(&gmtime_once, gmtime_key_init); + if (gmtime_key_error != 0) { + errno = gmtime_key_error; + return (NULL); + } + if ((p_tm = _pthread_getspecific(gmtime_key)) == NULL) { + if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { + return (NULL); + } + if (_pthread_setspecific(gmtime_key, p_tm) != 0) { + free(p_tm); + return (NULL); + } + } + } +#endif /* __FreeBSD__ */ + return gmtime_r(timep, p_tm); } #if STD_INSPIRED @@ -1775,42 +1820,44 @@ gmtime(const time_t *timep) struct tm * offtime_r(time_t const *restrict timep, long offset, struct tm *restrict tmp) { - _once(&gmt_once, gmtcheck); - return gmtsub(gmtptr, timep, offset, tmp); + gmtcheck(); + return gmtsub(gmtptr, timep, offset, tmp); } +#ifdef __FreeBSD__ static void offtime_key_init(void) { - - offtime_key_error = _pthread_key_create(&offtime_key, free); + offtime_key_error = _pthread_key_create(&offtime_key, free); } - +#endif /* __FreeBSD__ */ struct tm * offtime(const time_t *timep, long offset) { #if !SUPPORT_C89 - static struct tm tm; + static struct tm tm; #endif - struct tm *p_tm = &tm; - - if (__isthreaded != 0) { - _pthread_once(&offtime_once, offtime_key_init); - if (offtime_key_error != 0) { - errno = offtime_key_error; - return (NULL); - } - if ((p_tm = _pthread_getspecific(offtime_key)) == NULL) { - if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { - return (NULL); - } - if (_pthread_setspecific(offtime_key, p_tm) != 0) { - free(p_tm); - return (NULL); - } - } - } - return offtime_r(timep, offset, p_tm); +#ifdef __FreeBSD__ + struct tm *p_tm = &tm; + + if (__isthreaded != 0) { + _pthread_once(&offtime_once, offtime_key_init); + if (offtime_key_error != 0) { + errno = offtime_key_error; + return (NULL); + } + if ((p_tm = _pthread_getspecific(offtime_key)) == NULL) { + if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { + return (NULL); + } + if (_pthread_setspecific(offtime_key, p_tm) != 0) { + free(p_tm); + return (NULL); + } + } + } +#endif + return offtime_r(timep, offset, p_tm); } #endif @@ -2323,7 +2370,6 @@ time1(struct tm *const tmp, errno = EINVAL; return WRONG; } - if (tmp->tm_isdst > 1) tmp->tm_isdst = 1; t = time2(tmp, funcp, sp, offset, &okay); @@ -2382,7 +2428,7 @@ mktime_tzname(struct state *sp, struct tm *tmp, bool setname) if (sp) return time1(tmp, localsub, sp, setname); else { - _once(&gmt_once, gmtcheck); + gmtcheck(); return time1(tmp, gmtsub, gmtptr, 0); } } @@ -2438,7 +2484,7 @@ timeoff(struct tm *tmp, long offset) { if (tmp) tmp->tm_isdst = 0; - _once(&gmt_once, gmtcheck); + gmtcheck(); return time1(tmp, gmtsub, gmtptr, offset); } @@ -2508,7 +2554,7 @@ time2posix(time_t t) } #ifndef DETECT_TZ_CHANGES if (!lcl_is_set) -#endif +#endif /* DETECT_TZ_CHANGES */ tzset_unlocked(); if (lclptr) t = time2posix_z(lclptr, t); @@ -2555,7 +2601,7 @@ posix2time(time_t t) } #ifndef DETECT_TZ_CHANGES if (!lcl_is_set) -#endif +#endif /* DETECT_TZ_CHANGES */ tzset_unlocked(); if (lclptr) t = posix2time_z(lclptr, t); From nobody Thu Apr 2 11:20:39 2026 X-Original-To: dev-commits-src-branches@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 4fmfY36G9Vz6YH0J for ; Thu, 02 Apr 2026 11:20:39 +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 4fmfY34BzMz3J28 for ; Thu, 02 Apr 2026 11:20:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128839; 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=JB6/KmXRLGo+PCVzgupngCL6WoXjZrPUaly7XG/ysoY=; b=jwKUl7EXmIapJpzUm0+e7oy+Hw3+NhejDS/y/SDCTKHOvk6MFh0+6ZU8BFJ0g9cGYwFrwQ FnjNtOxrJvQ8ypvkUv3wlZe2aPJADGGUZLNQMVmsV9t1LS2KbEhXc61wSd42Udjkzd37o7 2qWIW/GzaWvKpL6OX6FPuGXDBkBRmBfk1nByFBmDd7CpNQ29oEOT4V1OAebKSxwC7ZE6NS 206OdpPhs5Ak2yFv3ncP9qW3h10X88fNcepylXDEE5ZbAHybzJa2FFbhtGeBMxPTQTQkij CLmtnedXXSeD/56n6PPMmRCV2pPu1d+HGicfUTYcUcK07oftPb81VAKdYRcq/Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128839; a=rsa-sha256; cv=none; b=ogN7qOdIMgfOvf5d2ALaCOpUs/5ebAKmcxz6MWRG3ravaeDhDiZZudYa/BK7yTqnkvsFt3 01sV7JMqK3bGEMJkHe+9vHE7mxv+v+ggtKoqQ6N/ZhXLtmqQnI66wxV66mPlF9W+hIV1N6 LzQxVCMFEECixSLh+Oq4XeZ2SFwgeakl2WQna3eT7Lb332ph061LbknZCd792gZ/Am/Lco /x7v2Of+Z7RSPNyCcV/GgAqHtl916UPkSbytZsLMmaJ3QzWZngvkDPJmulDKG7pyvS8EOe blzADOBkhdZCbNTS6S81AKQCztx6QpNKzn3ddULwhPf+BTG1n66Q/jBq9Q5csQ== 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=1775128839; 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=JB6/KmXRLGo+PCVzgupngCL6WoXjZrPUaly7XG/ysoY=; b=wPOZB2i95VDsC7uEUXU/1NEajnCE6XViPTOxAmva7G+XrAG10L/Az9C0qvey6xmZBcOjA+ 7ZbbEVP6RFHPxjHfzQGDj717F6Klaz7MfRirfVdp/7/vAzd0prJ5Pqs87G8D/tCs2tFtgM T3gBzPtjVrOvJhZR12snUFdSpLlZR0jl3J4NmidMMHE7OTrLMr1RrMlbEmR3HvTMSxSdMU RQ2VSLjOvg79hYd7YGGEkTnL8AfjVMiOgfTNaYiOkQ6TkhQ9j4wkA9bfp19s/IstLAKo5F uYta/zlTmW5/Q6Q/2E3b300WWSQbP3jylvtt/d9iOE+PYcV8izTlsC8utC+HiQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY33npSz100m for ; Thu, 02 Apr 2026 11:20:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f610 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: ec60ca6010ca - stable/14 - tzcode: Limit TZ for setugid programs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ec60ca6010ca6d461a8f16c49828ceafb3b730f3 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:39 +0000 Message-Id: <69ce5107.1f610.1491f27@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ec60ca6010ca6d461a8f16c49828ceafb3b730f3 commit ec60ca6010ca6d461a8f16c49828ceafb3b730f3 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-21 16:34:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Limit TZ for setugid programs The zoneinfo parser can be told to read any file the program can access by setting TZ to either an absolute path, or a path relative to the zoneinfo directory. For setugid programs, we previously had a hack from OpenBSD which rejects values of TZ deemed unsafe, but that was rather arbitrary (anything containing a dot, for instance). Leverage openat() with AT_RESOLVE_BENEATH instead. For simplicity, move the TZ change detection code to after we've opened the file, and stat the file descriptor rather than the name. Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D52029 (cherry picked from commit b6ea2513f7769ea9d9e4d342777111add2c903b0) --- contrib/tzcode/localtime.c | 70 +++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 25 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 6eabe0afe570..1a01db931cab 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -408,13 +408,13 @@ scrub_abbrs(struct state *sp) * 1 if the time zone has changed */ static int -tzfile_changed(const char *name) +tzfile_changed(const char *name, int fd) { static char old_name[PATH_MAX]; static struct stat old_sb; struct stat sb; - if (stat(name, &sb) != 0) + if (_fstat(fd, &sb) != 0) return -1; if (strcmp(name, old_name) != 0) { @@ -446,8 +446,10 @@ union input_buffer { + 4 * TZ_MAX_TIMES]; }; +#ifndef __FreeBSD__ /* TZDIR with a trailing '/' rather than a trailing '\0'. */ static char const tzdirslash[sizeof TZDIR] = TZDIR "/"; +#endif /* !__FreeBSD__ */ /* Local storage needed for 'tzloadbody'. */ union local_storage { @@ -460,6 +462,7 @@ union local_storage { struct state st; } u; +#ifndef __FreeBSD__ /* The name of the file to be opened. Ideally this would have no size limits, to support arbitrarily long Zone names. Limiting Zone names to 1024 bytes should suffice for practical use. @@ -467,6 +470,7 @@ union local_storage { file_analysis as that struct is allocated anyway, as the other union member. */ char fullname[max(sizeof(struct file_analysis), sizeof tzdirslash + 1024)]; +#endif /* !__FreeBSD__ */ }; /* Load tz data from the file named NAME into *SP. Read extended @@ -480,7 +484,11 @@ tzloadbody(char const *name, struct state *sp, bool doextend, register int fid; register int stored; register ssize_t nread; +#ifdef __FreeBSD__ + int serrno; +#else /* !__FreeBSD__ */ register bool doaccess; +#endif /* !__FreeBSD__ */ register union input_buffer *up = &lsp->u.u; register int tzheadsize = sizeof(struct tzhead); @@ -494,6 +502,7 @@ tzloadbody(char const *name, struct state *sp, bool doextend, if (name[0] == ':') ++name; +#ifndef __FreeBSD__ #ifdef SUPPRESS_TZDIR /* Do not prepend TZDIR. This is intended for specialized applications only, due to its security implications. */ @@ -502,9 +511,7 @@ tzloadbody(char const *name, struct state *sp, bool doextend, doaccess = name[0] == '/'; #endif if (!doaccess) { -#ifndef __FreeBSD__ char const *dot; -#endif /* !__FreeBSD__ */ if (sizeof lsp->fullname - sizeof tzdirslash <= strlen(name)) return ENAMETOOLONG; @@ -514,7 +521,6 @@ tzloadbody(char const *name, struct state *sp, bool doextend, memcpy(lsp->fullname, tzdirslash, sizeof tzdirslash); strcpy(lsp->fullname + sizeof tzdirslash, name); -#ifndef __FreeBSD__ /* Set doaccess if NAME contains a ".." file name component, as such a name could read a file outside the TZDIR virtual subtree. */ @@ -524,35 +530,49 @@ tzloadbody(char const *name, struct state *sp, bool doextend, doaccess = true; break; } -#endif /* !__FreeBSD__ */ name = lsp->fullname; } -#ifndef __FreeBSD__ if (doaccess && access(name, R_OK) != 0) return errno; -#endif /* !__FreeBSD__ */ -#ifdef DETECT_TZ_CHANGES - if (doextend) { - /* - * Detect if the timezone file has changed. Check - * 'doextend' to ignore TZDEFRULES; the tzfile_changed() - * function can only keep state for a single file. - */ - switch (tzfile_changed(name)) { - case -1: - return errno; - case 0: - return 0; - case 1: - break; - } - } -#endif /* DETECT_TZ_CHANGES */ +#else /* __FreeBSD__ */ + if (issetugid()) { + const char *relname = name; + if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) + relname += strlen(TZDIR) + 1; + int dd = _open(TZDIR, O_DIRECTORY | O_RDONLY); + if (dd < 0) + return errno; + fid = _openat(dd, relname, O_RDONLY | O_BINARY, AT_RESOLVE_BENEATH); + serrno = errno; + _close(dd); + errno = serrno; + } else +#endif fid = _open(name, O_RDONLY | O_BINARY); if (fid < 0) return errno; +#ifdef DETECT_TZ_CHANGES + if (doextend) { + /* + * Detect if the timezone file has changed. Check 'doextend' to + * ignore TZDEFRULES; the tzfile_changed() function can only + * keep state for a single file. + */ + switch (tzfile_changed(name, fid)) { + case -1: + serrno = errno; + _close(fid); + return serrno; + case 0: + _close(fid); + return 0; + case 1: + break; + } + } +#endif /* DETECT_TZ_CHANGES */ nread = _read(fid, up->buf, sizeof up->buf); if (nread < tzheadsize) { int err = nread < 0 ? errno : EINVAL; From nobody Thu Apr 2 11:20:41 2026 X-Original-To: dev-commits-src-branches@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 4fmfY60m0Zz6YH4n for ; Thu, 02 Apr 2026 11:20:42 +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 4fmfY56H00z3JCl for ; Thu, 02 Apr 2026 11:20:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128841; 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=pfrphvk7LTLBv5DTzw2BCPi/R2NbxJkaW3hZBus/lQs=; b=fIxWVpAhRewvQv/aiFeHQtQYS3iU/K6BFzNiX1zVwdZqZZ9mYy0IBlMqQAIQTiaLk402Tn uSESoHwyHHlVDiU7zErbSFRDMPGEPS8QvLopQd8vNT7nzfoSAJAS9AnkKQDSghYxFIjDZI 7eX19SkUHivR9SjVOZP3iFtRpsHmrDmxp2i4TckdGyKFSpIpASKGSTa85n25VrAyC22j2a d0dgXvnb2RAvsgU1qo8OFAZmYQvlS9phoGaOkr2OnNjYThlm6gZg4eMJlsFxE6OrpWRBWO 951uVD6Fz55DOUEtPp2bd0Wx++GTkE8zYpTp6/ak8yFsGD+LIqST7UnsbtGCmQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128841; a=rsa-sha256; cv=none; b=j4hjWt6GmYPLj4Fba89DklhiB00fe7Z2QwIg33YZ6+TpQK8GDulVRXhCB0pOcRbsQGWO7X GgNCdVDSAG5usociCvjGepYjCOuy3is1W+ZDvvwyVABFqHIPWaDFsG2H0bH2bqhfsy854k HVLRWN3Rdg71R0iYLKQJXEJ+wZxwML7EEpYeKtZuPuDVAde3RXtNeB3ZSzxbqXwSItUy22 Ycs8L/4KG1AApYZWCES582vWOrLKuf1urVFs01DfBTJF50H7GL6p/Kfy84sCWpW3xXbcQr tec9Y+FxRqRMbRYi+HuJKR+tz4/1zqg8vBFk4Uq4Xy895134f4uZpjcOzZw44A== 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=1775128841; 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=pfrphvk7LTLBv5DTzw2BCPi/R2NbxJkaW3hZBus/lQs=; b=KbZRqLjx96GwviLWG5BaulIjvVDN2AO0SvIUmaKHmDiPYiJJ7y5FCx2x44xU6V3vRXzhXE w3p0gzf0xO+61CCsaXAlqm1tVzxwdiV65g9PvZpJJANcuI3ZFT2n93AjQy/Xn6ac81kZ21 C/wZ9Fonw3NLWBLyYuq3Yhdz0uwWI4YMijI79gn+bEDXUCfuYvQp6QYjYbDqe3mcrp7iNY T4iVFrcduko/nMjgwIMx4tJwC/N0jfFxGmogeEMSdw1T8bPBvlMFyltuNzFZtvzWHu9Zni cRlRI0AfIvvwry0FNrSre4ISa3OhtrMDQvtcAskiFN+jKY0rtZTfeLSutMTBrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY55VX8z105Y for ; Thu, 02 Apr 2026 11:20:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e1a5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: b3f5166ee0d4 - stable/14 - tzcode: Add test case for setugid programs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b3f5166ee0d4be78ca6b2e4f958acf788545be8b Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:41 +0000 Message-Id: <69ce5109.1e1a5.1c1984e5@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=b3f5166ee0d4be78ca6b2e4f958acf788545be8b commit b3f5166ee0d4be78ca6b2e4f958acf788545be8b Author: Dag-Erling Smørgrav AuthorDate: 2025-08-25 11:56:48 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Add test case for setugid programs Fixes: a6b19979bf13 ("tzcode: Fix TZ for non-setugid programs") Differential Revision: https://reviews.freebsd.org/D52124 (cherry picked from commit c6c7c7ac94636a1f705a6f4d6ea74b1e62ad517d) --- lib/libc/tests/stdtime/Makefile | 4 +- lib/libc/tests/stdtime/detect_tz_changes_test.c | 53 ++++++++++++++++++++----- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/lib/libc/tests/stdtime/Makefile b/lib/libc/tests/stdtime/Makefile index adb883cc5b9a..6b9068e1641b 100644 --- a/lib/libc/tests/stdtime/Makefile +++ b/lib/libc/tests/stdtime/Makefile @@ -1,8 +1,10 @@ .include ATF_TESTS_C+= strptime_test -.if ${MK_DETECT_TZ_CHANGES} != "no" ATF_TESTS_C+= detect_tz_changes_test + +.if ${MK_DETECT_TZ_CHANGES} != "no" +CFLAGS.detect_tz_changes_test+= -DDETECT_TZ_CHANGES .endif TESTSDIR:= ${TESTSBASE}/${RELDIR:C/libc\/tests/libc/} diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index 75f55bdede04..e3fdcc0baef7 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include +#include #include #include @@ -41,6 +43,8 @@ static const struct tzcase { }; static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */ + +#ifdef DETECT_TZ_CHANGES static const char *tz_change_interval_sym = "__tz_change_interval"; static int *tz_change_interval_p; static const int tz_change_interval = 3; @@ -272,6 +276,21 @@ ATF_TC_BODY(detect_tz_changes, tc) ATF_REQUIRE(WIFEXITED(status)); ATF_REQUIRE_EQ(0, WEXITSTATUS(status)); } +#endif /* DETECT_TZ_CHANGES */ + +static void +test_tz_env(const char *tzval, const char *expect) +{ + char buf[128]; + struct tm *tm; + size_t len; + + setenv("TZ", tzval, 1); + ATF_REQUIRE((tm = localtime(&then)) != NULL); + len = strftime(buf, sizeof(buf), "%z (%Z)", tm); + ATF_REQUIRE(len > 0); + ATF_CHECK_STREQ(expect, buf); +} ATF_TC(tz_env); ATF_TC_HEAD(tz_env, tc) @@ -280,25 +299,37 @@ ATF_TC_HEAD(tz_env, tc) } ATF_TC_BODY(tz_env, tc) { - char buf[128]; - const struct tzcase *tzcase = NULL; - struct tm *tm; - size_t len; + const struct tzcase *tzcase; - for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) { - setenv("TZ", tzcase->tzfn, 1); - ATF_REQUIRE((tm = localtime(&then)) != NULL); - len = strftime(buf, sizeof(buf), "%z (%Z)", tm); - ATF_REQUIRE(len > 0); - ATF_REQUIRE_STREQ(tzcase->expect, buf); - } + for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) + test_tz_env(tzcase->tzfn, tzcase->expect); +} + +ATF_TC(tz_env_setugid); +ATF_TC_HEAD(tz_env_setugid, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test TZ environment variable " + "in setugid process"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(tz_env_setugid, tc) +{ + const struct tzcase *tzcase; + + ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY)); + ATF_REQUIRE(issetugid()); + for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) + test_tz_env(tzcase->tzfn, tzcase->expect); } ATF_TP_ADD_TCS(tp) { +#ifdef DETECT_TZ_CHANGES debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") && isatty(STDERR_FILENO); ATF_TP_ADD_TC(tp, detect_tz_changes); +#endif /* DETECT_TZ_CHANGES */ ATF_TP_ADD_TC(tp, tz_env); + ATF_TP_ADD_TC(tp, tz_env_setugid); return (atf_no_error()); } From nobody Thu Apr 2 11:20:40 2026 X-Original-To: dev-commits-src-branches@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 4fmfY50xqBz6YH4m for ; Thu, 02 Apr 2026 11:20:41 +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 4fmfY45GC2z3JCX for ; Thu, 02 Apr 2026 11:20:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128840; 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=ORof10g33IfYbnL++Kcz7d1qrd75CLI8fuiFwpMOgaI=; b=NRcQGPzqCogDeckLcyElFBDAv2kDc9JOaUZ4iT3D/nik3UKauXYFt3OTztHgBsrYyrmgXC NwyR8nr9pMZRC22HgVq1tEnZwfOtXhRgNgGNXMcifTp+XHjw8u7kXAFoW2ggNTFd3qgQsy SWTTguwu5D7Z9jwKKjBuDLd/yQGaDaGLPoUn7GXoo1kZiIjmn9mI7Nvw/uIiX2F06UdYuG sucTj74/dw50bmio2ycI62ShxDV9hPBOQCe8CMgCmxpujhKvbGGW8u7DQp/k8bv/YKNhMq /hs51Zondna3nBHhvjNniqfQQSZUm8SkEslDbtBypej/eiLRy13KQLDoucDtHw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128840; a=rsa-sha256; cv=none; b=kcxj1MlJyFgkNUTAV/cmBDsO4v9Zj+ZZYlxj6fhhu6r3ke38/Juf4oKhm1glsDja5IRMc5 AUooI45fTPdxnUik7zHqBqDId1GlJB1MiF/PJycUH2HClQqrzg3M+XsalAxVL7/XFcemlI +I2pVmZHFxdcpxgZylWJx6DeSgYBuW+Xm2s1UqSXMoCa9LFrxZVu06WP7SNnNg4I/+25Nn R3ke2NTJufiyY2xLaq755PXEaIS9a2aB06BkWFelQFeoFBXBuxKUZDnVBsnmu3DWYLOVW+ aZo3pmd6Kzo3gmU7DC6uG9s91z4izXiD903IirhGhAsHwKQulnHeeQkPB8pYvA== 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=1775128840; 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=ORof10g33IfYbnL++Kcz7d1qrd75CLI8fuiFwpMOgaI=; b=mW2xup5MmihEX4okF5e6pSB+65iWBTGzbagxSKatSpCr9EiK6TdnUnJ7r1er40PIQcH3CN PSqQUILIZZ01oGrowZaQ3NgqNuwV2F+/4c/2eScESZIBTJmBp0zvGO1MFQqS18/Th76qK0 ii2oO4KsRbpBGuMszIYTED24VXbxXGf+e3N2yanvZ0QtBQx0bwlpri4hPL53PHZ5AG+8R2 /GDaZ20v0Fbx0yTAA0InzvgcCMNArm1eZ67ni2EIUu6XseES6QLuTYvYw/FIA7UKPJRKwv 5JXDBMWQIn6UPxwcUJQTFyQsmJiMcbOxLIgEa8FiWGWAEyJTuT+8RMfMyP5wMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY44fGtz10Jf for ; Thu, 02 Apr 2026 11:20:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e3fd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: e58659a5b0d9 - stable/14 - tzcode: Fix TZ for non-setugid programs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e58659a5b0d9c5bda3b352166b543fb25cd37c0a Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:40 +0000 Message-Id: <69ce5108.1e3fd.2ede3cc4@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=e58659a5b0d9c5bda3b352166b543fb25cd37c0a commit e58659a5b0d9c5bda3b352166b543fb25cd37c0a Author: Dag-Erling Smørgrav AuthorDate: 2025-08-22 07:22:17 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Fix TZ for non-setugid programs The previous commit had the desired effect for setugid programs, but broke TZ for everyone else. I didn't notice because my test cases swap out /etc/localtime instead of setting TZ, so add a test case that sets TZ. Fixes: b6ea2513f776 ("tzcode: Limit TZ for setugid programs") Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D52108 (cherry picked from commit a6b19979bf13055da5f24d1f240f2acddb35eeac) --- contrib/tzcode/localtime.c | 11 +++-- lib/libc/tests/stdtime/detect_tz_changes_test.c | 61 +++++++++++++++++-------- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 1a01db931cab..0fe7f1ed3f64 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -535,21 +535,22 @@ tzloadbody(char const *name, struct state *sp, bool doextend, } if (doaccess && access(name, R_OK) != 0) return errno; + fid = _open(name, O_RDONLY | O_BINARY); #else /* __FreeBSD__ */ - if (issetugid()) { + { const char *relname = name; if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) relname += strlen(TZDIR) + 1; int dd = _open(TZDIR, O_DIRECTORY | O_RDONLY); if (dd < 0) return errno; - fid = _openat(dd, relname, O_RDONLY | O_BINARY, AT_RESOLVE_BENEATH); + fid = _openat(dd, relname, O_RDONLY | O_BINARY, + issetugid() ? AT_RESOLVE_BENEATH : 0); serrno = errno; _close(dd); errno = serrno; - } else -#endif - fid = _open(name, O_RDONLY | O_BINARY); + } +#endif /* __FreeBSD__ */ if (fid < 0) return errno; diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index 9722546747fd..75f55bdede04 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -20,6 +20,26 @@ #include +static const struct tzcase { + const char *tzfn; + const char *expect; +} tzcases[] = { + /* + * A handful of time zones and the expected result of + * strftime("%z (%Z)", tm) when that time zone is active + * and tm represents a date in the summer of 2025. + */ + { "America/Vancouver", "-0700 (PDT)" }, + { "America/New_York", "-0400 (EDT)" }, + { "Europe/London", "+0100 (BST)" }, + { "Europe/Paris", "+0200 (CEST)" }, + { "Asia/Kolkata", "+0530 (IST)" }, + { "Asia/Tokyo", "+0900 (JST)" }, + { "Australia/Canberra", "+1000 (AEST)" }, + { "UTC", "+0000 (UTC)" }, + { 0 }, +}; + static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */ static const char *tz_change_interval_sym = "__tz_change_interval"; static int *tz_change_interval_p; @@ -91,25 +111,6 @@ ATF_TC_HEAD(detect_tz_changes, tc) } ATF_TC_BODY(detect_tz_changes, tc) { - static const struct tzcase { - const char *tzfn; - const char *expect; - } tzcases[] = { - /* - * A handful of time zones and the expected result of - * strftime("%z (%Z)", tm) when that time zone is active - * and tm represents a date in the summer of 2025. - */ - { "America/Vancouver", "-0700 (PDT)" }, - { "America/New_York", "-0400 (EDT)" }, - { "Europe/London", "+0100 (BST)" }, - { "Europe/Paris", "+0200 (CEST)" }, - { "Asia/Kolkata", "+0530 (IST)" }, - { "Asia/Tokyo", "+0900 (JST)" }, - { "Australia/Canberra", "+1000 (AEST)" }, - { "UTC", "+0000 (UTC)" }, - { 0 }, - }; char obuf[1024] = ""; char ebuf[1024] = ""; struct pollfd fds[3]; @@ -272,10 +273,32 @@ ATF_TC_BODY(detect_tz_changes, tc) ATF_REQUIRE_EQ(0, WEXITSTATUS(status)); } +ATF_TC(tz_env); +ATF_TC_HEAD(tz_env, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test TZ environment variable"); +} +ATF_TC_BODY(tz_env, tc) +{ + char buf[128]; + const struct tzcase *tzcase = NULL; + struct tm *tm; + size_t len; + + for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) { + setenv("TZ", tzcase->tzfn, 1); + ATF_REQUIRE((tm = localtime(&then)) != NULL); + len = strftime(buf, sizeof(buf), "%z (%Z)", tm); + ATF_REQUIRE(len > 0); + ATF_REQUIRE_STREQ(tzcase->expect, buf); + } +} + ATF_TP_ADD_TCS(tp) { debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") && isatty(STDERR_FILENO); ATF_TP_ADD_TC(tp, detect_tz_changes); + ATF_TP_ADD_TC(tp, tz_env); return (atf_no_error()); } From nobody Thu Apr 2 11:20:42 2026 X-Original-To: dev-commits-src-branches@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 4fmfY72cJnz6YGpK for ; Thu, 02 Apr 2026 11:20:43 +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 4fmfY707Tdz3JQd for ; Thu, 02 Apr 2026 11:20:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128843; 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=B/zIb+yJhtkr0NKkxOkllLLB77SfPlY5ryB+FDE2JBk=; b=mJNuXiTxLvqOYoRfCNuZaObFTGPfXAoAiofDCyaaKwRsPhHA4xYIe7mG6x2g23x494Vk07 BUkI5I+gPddY06jm5F4JeyU65V0/jbRLJrdoX7fHo+t0oG6s9u5IVrTywQhK6JDgh1LdZ/ YdshakEh/rgkb7/nbZsniVAKFyWot1NasHETCZtCmon8tE6ojB6j/naWQo9IGxmerbway6 NXnIH1Am6DsG4kg7X7JCekzd2NpmRonwH00FQEu9gXWigSrjKhyFCGCFhGk4+Ip4x0v6XM ZMjG77oDQsOXxN6813e8bFRxmosQsQBd/qxWQnWNevhzZ3xbboCB02hekJGsBw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128843; a=rsa-sha256; cv=none; b=MBP8tp4f8vqP60L4Ajs2S9dP9O02zANzkrSNcH8zZ60GPubm4hq+OahTBu5Vi0gEvMtSZM zOa1R9VgXykGviRl43UuPQcszM67UmMQTI3d5nE2LlfS76rkv/LshtkLKD/tf0MW27gLg7 SWlUB3apb9fktTg+luZEFy/crghi5ijU2KnCuXD3R84D/9NnNlCjBag+87Yt3Lvor8D5Wk vVcinyePsshrZnxmzp/4rb1leHmrux5CsD1eFfxH9q4ol4ayL1SZia79SbKDxx4kXvh6b+ io7QBIn4CAQbxUDhTXp2qXEN3uZSfyhytc483+lsrfx6ihrIRR+gnnXcPGkU/Q== 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=1775128843; 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=B/zIb+yJhtkr0NKkxOkllLLB77SfPlY5ryB+FDE2JBk=; b=p5UzHTUOjZk7eXhG4xvBx0F39MLLZO1+GCzg23SI/OeFq+4+ijPT2kxYBgrKGc9N44+H3h Ws9RJ/svJYzJ+sjmIsGgmLnbqEbL1g8X3NXTgLoDI3m6WOXfZk8cRA0SQJVawH5SExOczf cimldmXY/vc4NUthi0/5tPPfnS7yfArcj0Od9q/Qh79CIcqFbevYP2+K7XRpjGyR6m1zJ4 n/ZqYkDtHdp6+Ddm6VAvuIg0LRM1WOsStY0s1jXNchvMEslHtIVV5retVP2xPFZYbRSBIk OiB+ZSA7MvhU3PfGVsRM9IJ2F8xxrDO0pctA+KQJEpHvM9fj57tA2LIcUX5VdQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY66flbzyqb for ; Thu, 02 Apr 2026 11:20:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e55b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: f6a30753e66e - stable/14 - Update tzcode to 2025b List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f6a30753e66ee67e7dce35dfc2cbae8ffdedc420 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:42 +0000 Message-Id: <69ce510a.1e55b.42fbec0f@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f6a30753e66ee67e7dce35dfc2cbae8ffdedc420 commit f6a30753e66ee67e7dce35dfc2cbae8ffdedc420 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-25 12:06:59 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 Update tzcode to 2025b MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D52103 (cherry picked from commit 967a49a21a27380ba1c545c746b4f1badabefd77) --- contrib/tzcode/Makefile | 32 +-- contrib/tzcode/NEWS | 109 +++++++- contrib/tzcode/asctime.c | 122 +++++---- contrib/tzcode/date.1 | 122 ++------- contrib/tzcode/localtime.c | 585 +++++++++++++++++++++++++++---------------- contrib/tzcode/newctime.3 | 152 ++++++----- contrib/tzcode/newstrftime.3 | 86 ++++--- contrib/tzcode/newtzset.3 | 24 +- contrib/tzcode/private.h | 119 ++++++--- contrib/tzcode/strftime.c | 83 ++++-- contrib/tzcode/theory.html | 40 ++- contrib/tzcode/tz-link.html | 45 ++-- contrib/tzcode/tzfile.5 | 70 +++--- contrib/tzcode/tzfile.h | 2 +- contrib/tzcode/tzselect.8 | 26 +- contrib/tzcode/version | 2 +- contrib/tzcode/zdump.8 | 14 +- contrib/tzcode/zdump.c | 62 ++--- contrib/tzcode/zic.8 | 27 +- contrib/tzcode/zic.c | 142 +++++++---- 20 files changed, 1117 insertions(+), 747 deletions(-) diff --git a/contrib/tzcode/Makefile b/contrib/tzcode/Makefile index 0087b4596515..2130582c2deb 100644 --- a/contrib/tzcode/Makefile +++ b/contrib/tzcode/Makefile @@ -137,7 +137,7 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \ uint_least64_t.ck # What kind of TZif data files to generate. (TZif is the binary time -# zone data format that zic generates; see Internet RFC 8536.) +# zone data format that zic generates; see Internet RFC 9636.) # If you want only POSIX time, with time values interpreted as # seconds since the epoch (not counting leap seconds), use # REDO= posix_only @@ -255,6 +255,7 @@ LDLIBS= # -DHAVE_UNISTD_H=0 if does not work* # -DHAVE_UTMPX_H=0 if does not work* # -Dlocale_t=XXX if your system uses XXX instead of locale_t +# -DMKTIME_MIGHT_OVERFLOW if mktime might fail due to time_t overflow # -DPORT_TO_C89 if tzcode should also run on mostly-C89 platforms+ # Typically it is better to use a later standard. For example, # with GCC 4.9.4 (2016), prefer '-std=gnu11' to '-DPORT_TO_C89'. @@ -262,7 +263,7 @@ LDLIBS= # feature (integers at least 64 bits wide) and maybe more. # -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers # with external linkage, e.g., applications cannot define 'localtime'. -# -Dssize_t=long on hosts like MS-Windows that lack ssize_t +# -Dssize_t=int on hosts like MS-Windows that lack ssize_t # -DSUPPORT_C89=0 if the tzcode library should not support C89 callers # Although -DSUPPORT_C89=0 might work around latent bugs in callers, # it does not conform to POSIX. @@ -285,7 +286,7 @@ LDLIBS= # This mishandles some past timestamps, as US DST rules have changed. # It also mishandles settings like TZ='EET-2EEST' for eastern Europe, # as Europe and US DST rules differ. -# -DTZNAME_MAXIMUM=N to limit time zone abbreviations to N bytes (default 255) +# -DTZNAME_MAXIMUM=N to limit time zone abbreviations to N bytes (default 254) # -DUNINIT_TRAP if reading uninitialized storage can cause problems # other than simply getting garbage data # -DUSE_LTZ=0 to build zdump with the system time zone library @@ -319,7 +320,8 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ $(GCC_INSTRUMENT) \ -Wall -Wextra \ -Walloc-size-larger-than=100000 -Warray-bounds=2 \ - -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \ + -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wcast-qual \ + -Wdate-time \ -Wdeclaration-after-statement -Wdouble-promotion \ -Wduplicated-branches -Wduplicated-cond -Wflex-array-member-not-at-end \ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \ @@ -336,7 +338,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ -Wtrampolines -Wundef -Wunused-macros -Wuse-after-free=3 \ -Wvariadic-macros -Wvla -Wwrite-strings \ - -Wno-format-nonliteral -Wno-sign-compare + -Wno-format-nonliteral -Wno-sign-compare -Wno-type-limits # # If your system has a "GMT offset" field in its "struct tm"s # (or if you decide to add such a field in your system's "time.h" file), @@ -614,8 +616,8 @@ TZS_YEAR= 2050 TZS_CUTOFF_FLAG= -c $(TZS_YEAR) TZS= to$(TZS_YEAR).tzs TZS_NEW= to$(TZS_YEAR)new.tzs -TZS_DEPS= $(YDATA) asctime.c localtime.c \ - private.h tzfile.h zdump.c zic.c +TZS_DEPS= $(YDATA) localtime.c private.h \ + strftime.c tzfile.h zdump.c zic.c TZDATA_DIST = $(COMMON) $(DATA) $(MISC) # EIGHT_YARDS is just a yard short of the whole ENCHILADA. EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi @@ -855,10 +857,10 @@ tzselect: tzselect.ksh version chmod +x $@.out mv $@.out $@ -check: check_mild back.ck +check: check_mild back.ck now.ck check_mild: check_web check_zishrink \ character-set.ck white-space.ck links.ck mainguard.ck \ - name-lengths.ck now.ck slashed-abbrs.ck sorted.ck \ + name-lengths.ck slashed-abbrs.ck sorted.ck \ tables.ck ziguard.ck tzs.ck # True if UTF8_LOCALE does not work; @@ -1103,7 +1105,7 @@ set-timestamps.out: $(EIGHT_YARDS) touch -md @1 test.out; then \ rm -f test.out && \ for file in $$files; do \ - if git diff --quiet $$file; then \ + if git diff --quiet HEAD $$file; then \ time=$$(TZ=UTC0 git log -1 \ --format='tformat:%cd' \ --date='format:%Y-%m-%dT%H:%M:%SZ' \ @@ -1354,13 +1356,13 @@ long-long.ck unsigned.ck: $(VERSION_DEPS) zonenames: tzdata.zi @$(AWK) '/^Z/ { print $$2 } /^L/ { print $$3 }' tzdata.zi -asctime.o: private.h tzfile.h +asctime.o: private.h date.o: private.h difftime.o: private.h -localtime.o: private.h tzfile.h tzdir.h -strftime.o: private.h tzfile.h -zdump.o: version.h -zic.o: private.h tzfile.h tzdir.h version.h +localtime.o: private.h tzdir.h tzfile.h +strftime.o: localtime.c private.h tzdir.h tzfile.h +zdump.o: private.h version.h +zic.o: private.h tzdir.h tzfile.h version.h .PHONY: ALL INSTALL all .PHONY: check check_mild check_time_t_alternatives diff --git a/contrib/tzcode/NEWS b/contrib/tzcode/NEWS index 83b8b8c8d39c..8c0771641ef0 100644 --- a/contrib/tzcode/NEWS +++ b/contrib/tzcode/NEWS @@ -1,5 +1,108 @@ News for the tz database +Release 2025b - 2025-03-22 13:40:46 -0700 + + Briefly: + New zone for Aysén Region in Chile which moves from -04/-03 to -03. + + Changes to future timestamps + + Chile's Aysén Region moves from -04/-03 to -03 year-round, joining + Magallanes Region. The region will not change its clocks on + 2025-04-05 at 24:00, diverging from America/Santiago and creating a + new zone America/Coyhaique. (Thanks to Yonathan Dossow.) Model + this as a change to standard offset effective 2025-03-20. + + Changes to past timestamps + + Iran switched from +04 to +0330 on 1978-11-10 at 24:00, not at + year end. (Thanks to Roozbeh Pournader.) + + Changes to code + + 'zic -l TIMEZONE -d . -l /some/other/file/system' no longer + attempts to create an incorrect symlink, and no longer has a + read buffer underflow. (Problem reported by Evgeniy Gorbanev.) + + +Release 2025a - 2025-01-15 10:47:24 -0800 + + Briefly: + Paraguay adopted permanent -03 starting spring 2024. + Improve pre-1991 data for the Philippines. + Etc/Unknown is now reserved. + + Changes to future timestamps + + Paraguay stopped changing its clocks after the spring-forward + transition on 2024-10-06, so it is now permanently at -03. + (Thanks to Heitor David Pinto and Even Scharning.) + This affects timestamps starting 2025-03-22, as well as the + obsolescent tm_isdst flags starting 2024-10-15. + + Changes to past timestamps + + Correct timestamps for the Philippines before 1900, and from 1937 + through 1990. (Thanks to P Chan for the heads-up and citations.) + This includes adjusting local mean time before 1899; fixing + transitions in September 1899, January 1937, and June 1954; adding + transitions in December 1941, November 1945, March and September + 1977, and May and July 1990; and removing incorrect transitions in + March and September 1978. + + Changes to data + + Add zone1970.tab lines for the Concordia and Eyre Bird Observatory + research stations. (Thanks to Derick Rethans and Jule Dabars.) + + Changes to code + + strftime %s now generates the correct numeric string even when the + represented number does not fit into time_t. This is better than + generating the numeric equivalent of (time_t) -1, as strftime did + in TZDB releases 96a (when %s was introduced) through 2020a and in + releases 2022b through 2024b. It is also better than failing and + returning 0, as strftime did in releases 2020b through 2022a. + + strftime now outputs an invalid conversion specifier as-is, + instead of eliding the leading '%', which confused debugging. + + An invalid TZ now generates the time zone abbreviation "-00", not + "UTC", to help the user see that an error has occurred. (Thanks + to Arthur David Olson for suggesting a "wrong result".) + + mktime and timeoff no longer incorrectly fail merely because a + struct tm component near INT_MIN or INT_MAX overflows when a + lower-order component carries into it. + + TZNAME_MAXIMUM, the maximum number of bytes in a proleptic TZ + string's time zone abbreviation, now defaults to 254 not 255. + This helps reduce the size of internal state from 25480 to 21384 + on common platforms. This change should not be a problem, as + nobody uses such long "abbreviations" and the longstanding tzcode + maximum was 16 until release 2023a. For those who prefer no + arbitrary limits, you can now specify TZNAME_MAXIMUM values up to + PTRDIFF_MAX, a limit forced by C anyway; formerly tzcode silently + misbehaved unless TZNAME_MAXIMUM was less than INT_MAX. + + tzset and related functions no longer leak a file descriptor if + another thread forks or execs at about the same time and if the + platform has O_CLOFORK and O_CLOEXEC respectively. Also, the + functions no longer let a TZif file become a controlling terminal. + + 'zdump -' now reads TZif data from /dev/stdin. + (From a question by Arthur David Olson.) + + Changes to documentation + + The name Etc/Unknown is now reserved: it will not be used by TZDB. + This is for compatibility with CLDR, which uses the string + "Etc/Unknown" for an unknown or invalid timezone. (Thanks to + Justin Grant, Mark Davis, and Guy Harris.) + + Cite Internet RFC 9636, which obsoletes RFC 8536 for TZif format. + + Release 2024b - 2024-09-04 12:27:47 -0700 Briefly: @@ -116,7 +219,7 @@ Release 2024b - 2024-09-04 12:27:47 -0700 Changes to commentary Commentary about historical transitions in Portugal and her former - colonies has been expanded with links to many relevant legislation. + colonies has been expanded with links to relevant legislation. (Thanks to Tim Parenti.) @@ -204,10 +307,10 @@ Release 2023d - 2023-12-21 20:02:24 -0800 changing its time zone from -01/+00 to -02/-01 at the same moment as the spring-forward transition. Its clocks will therefore not spring forward as previously scheduled. The time zone change - reverts to its common practice before 1981. + reverts to its common practice before 1981. (Thanks to Jule Dabars.) Fix predictions for DST transitions in Palestine in 2072-2075, - correcting a typo introduced in 2023a. + correcting a typo introduced in 2023a. (Thanks to Jule Dabars.) Changes to past and future timestamps diff --git a/contrib/tzcode/asctime.c b/contrib/tzcode/asctime.c index ebb90a1cc84d..1977a2272896 100644 --- a/contrib/tzcode/asctime.c +++ b/contrib/tzcode/asctime.c @@ -7,6 +7,7 @@ /* ** Avoid the temptation to punt entirely to strftime; +** strftime can behave badly when tm components are out of range, and ** the output of strftime is supposed to be locale specific ** whereas the output of asctime is supposed to be constant. */ @@ -18,27 +19,6 @@ #include "un-namespace.h" #include -/* -** All years associated with 32-bit time_t values are exactly four digits long; -** some years associated with 64-bit time_t values are not. -** Vintage programs are coded for years that are always four digits long -** and may assume that the newline always lands in the same place. -** For years that are less than four digits, we pad the output with -** leading zeroes to get the newline in the traditional place. -** The -4 ensures that we get four characters of output even if -** we call a strftime variant that produces fewer characters for some years. -** This conforms to recent ISO C and POSIX standards, which say behavior -** is undefined when the year is less than 1000 or greater than 9999. -*/ -static char const ASCTIME_FMT[] = "%s %s%3d %.2d:%.2d:%.2d %-4s\n"; -/* -** For years that are more than four digits we put extra spaces before the year -** so that code trying to overwrite the newline won't end up overwriting -** a digit within a year and truncating the year (operating on the assumption -** that no output is better than wrong output). -*/ -static char const ASCTIME_FMT_B[] = "%s %s%3d %.2d:%.2d:%.2d %s\n"; - enum { STD_ASCTIME_BUF_SIZE = 26 }; /* ** Big enough for something such as @@ -52,14 +32,24 @@ enum { STD_ASCTIME_BUF_SIZE = 26 }; */ static char buf_asctime[2*3 + 5*INT_STRLEN_MAXIMUM(int) + 7 + 2 + 1 + 1]; -/* A similar buffer for ctime. - C89 requires that they be the same buffer. - This requirement was removed in C99, so support it only if requested, - as support is more likely to lead to bugs in badly written programs. */ -#if SUPPORT_C89 -# define buf_ctime buf_asctime -#else -static char buf_ctime[sizeof buf_asctime]; +/* On pre-C99 platforms, a snprintf substitute good enough for us. */ +#if !HAVE_SNPRINTF +# include +ATTRIBUTE_FORMAT((printf, 3, 4)) static int +my_snprintf(char *s, size_t size, char const *format, ...) +{ + int n; + va_list args; + char stackbuf[sizeof buf_asctime]; + va_start(args, format); + n = vsprintf(stackbuf, format, args); + va_end (args); + if (0 <= n && n < size) + memcpy (s, stackbuf, n + 1); + return n; +} +# undef snprintf +# define snprintf my_snprintf #endif /* Publish asctime_r and ctime_r only when supporting older POSIX. */ @@ -84,14 +74,19 @@ asctime_r(struct tm const *restrict timeptr, char *restrict buf) "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - const char * wn; - const char * mn; - char year[INT_STRLEN_MAXIMUM(int) + 2]; - char result[sizeof buf_asctime]; + register const char * wn; + register const char * mn; + int year, mday, hour, min, sec; + long long_TM_YEAR_BASE = TM_YEAR_BASE; + size_t bufsize = (buf == buf_asctime + ? sizeof buf_asctime : STD_ASCTIME_BUF_SIZE); if (timeptr == NULL) { + strcpy(buf, "??? ??? ?? ??:??:?? ????\n"); + /* Set errno now, since strcpy might change it in + POSIX.1-2017 and earlier. */ errno = EINVAL; - return strcpy(buf, "??? ??? ?? ??:??:?? ????\n"); + return buf; } if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) wn = "???"; @@ -99,25 +94,41 @@ asctime_r(struct tm const *restrict timeptr, char *restrict buf) if (timeptr->tm_mon < 0 || timeptr->tm_mon >= MONSPERYEAR) mn = "???"; else mn = mon_name[timeptr->tm_mon]; - /* - ** Use strftime's %Y to generate the year, to avoid overflow problems - ** when computing timeptr->tm_year + TM_YEAR_BASE. - ** Assume that strftime is unaffected by other out-of-range members - ** (e.g., timeptr->tm_mday) when processing "%Y". - */ - strftime(year, sizeof year, "%Y", timeptr); - /* - ** We avoid using snprintf since it's not available on all systems. - */ - sprintf(result, - ((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B), - wn, mn, - timeptr->tm_mday, timeptr->tm_hour, - timeptr->tm_min, timeptr->tm_sec, - year); - if (strlen(result) < STD_ASCTIME_BUF_SIZE - || buf == buf_ctime || buf == buf_asctime) - return strcpy(buf, result); + + year = timeptr->tm_year; + mday = timeptr->tm_mday; + hour = timeptr->tm_hour; + min = timeptr->tm_min; + sec = timeptr->tm_sec; + + /* Vintage programs are coded for years that are always four bytes long + and may assume that the newline always lands in the same place. + For years that are less than four bytes, pad the output with + leading zeroes to get the newline in the traditional place. + For years longer than four bytes, put extra spaces before the year + so that vintage code trying to overwrite the newline + won't overwrite a digit within a year and truncate the year, + using the principle that no output is better than wrong output. + This conforms to ISO C and POSIX standards, which say behavior + is undefined when the year is less than 1000 or greater than 9999. + + Also, avoid overflow when formatting tm_year + TM_YEAR_BASE. */ + + if ((year <= LONG_MAX - TM_YEAR_BASE + ? snprintf (buf, bufsize, + ((-999 - TM_YEAR_BASE <= year + && year <= 9999 - TM_YEAR_BASE) + ? "%s %s%3d %.2d:%.2d:%.2d %04ld\n" + : "%s %s%3d %.2d:%.2d:%.2d %ld\n"), + wn, mn, mday, hour, min, sec, + year + long_TM_YEAR_BASE) + : snprintf (buf, bufsize, + "%s %s%3d %.2d:%.2d:%.2d %d%d\n", + wn, mn, mday, hour, min, sec, + year / 10 + TM_YEAR_BASE / 10, + year % 10)) + < bufsize) + return buf; else { errno = EOVERFLOW; return NULL; @@ -142,5 +153,8 @@ ctime_r(const time_t *timep, char *buf) char * ctime(const time_t *timep) { - return ctime_r(timep, buf_ctime); + /* Do not call localtime_r, as C23 requires ctime to initialize the + static storage that localtime updates. */ + struct tm *tmp = localtime(timep); + return tmp ? asctime(tmp) : NULL; } diff --git a/contrib/tzcode/date.1 b/contrib/tzcode/date.1 index 01907bc76e2c..3a02e7c2e08a 100644 --- a/contrib/tzcode/date.1 +++ b/contrib/tzcode/date.1 @@ -6,15 +6,13 @@ date \- show and set date and time .SH SYNOPSIS .if n .nh .if n .na -.ie \n(.g .ds - \f(CR-\fP -.el .ds - \- .B date [ -.B \*-u +.B \-u ] [ -.B \*-c +.B \-c ] [ -.B \*-r +.B \-r .I seconds ] [ .BI + format @@ -35,7 +33,7 @@ command without arguments writes the date and time to the standard output in the form .ce 1 -Wed Mar 8 14:54:40 EST 1989 +Sat Mar 8 14:54:40 EST 2025 .br with .B EST @@ -49,99 +47,24 @@ If a command-line argument starts with a plus sign (\c .q "\fB+\fP" ), the rest of the argument is used as a .I format -that controls what appears in the output. -In the format, when a percent sign (\c -.q "\fB%\fP" -appears, -it and the character after it are not output, -but rather identify part of the date or time -to be output in a particular way -(or identify a special character to output): -.nf -.sp -.if t .in +.5i -.if n .in +2 -.ta \w'%M\0\0'u +\w'Wed Mar 8 14:54:40 EST 1989\0\0'u - Sample output Explanation -%a Wed Abbreviated weekday name* -%A Wednesday Full weekday name* -%b Mar Abbreviated month name* -%B March Full month name* -%c Wed Mar 08 14:54:40 1989 Date and time* -%C 19 Century -%d 08 Day of month (always two digits) -%D 03/08/89 Month/day/year (eight characters) -%e 8 Day of month (leading zero blanked) -%h Mar Abbreviated month name* -%H 14 24-hour-clock hour (two digits) -%I 02 12-hour-clock hour (two digits) -%j 067 Julian day number (three digits) -%k 2 12-hour-clock hour (leading zero blanked) -%l 14 24-hour-clock hour (leading zero blanked) -%m 03 Month number (two digits) -%M 54 Minute (two digits) -%n \\n newline character -%p PM AM/PM designation -%r 02:54:40 PM Hour:minute:second AM/PM designation -%R 14:54 Hour:minute -%S 40 Second (two digits) -%t \\t tab character -%T 14:54:40 Hour:minute:second -%U 10 Sunday-based week number (two digits) -%w 3 Day number (one digit, Sunday is 0) -%W 10 Monday-based week number (two digits) -%x 03/08/89 Date* -%X 14:54:40 Time* -%y 89 Last two digits of year -%Y 1989 Year in full -%z -0500 Numeric time zone -%Z EST Time zone abbreviation -%+ Wed Mar 8 14:54:40 EST 1989 Default output format* -.if t .in -.5i -.if n .in -2 -* The exact output depends on the locale. -.sp -.fi -If a character other than one of those shown above appears after -a percent sign in the format, -that following character is output. -All other characters in the format are copied unchanged to the output; -a newline character is always added at the end of the output. -.PP -In Sunday-based week numbering, -the first Sunday of the year begins week 1; -days preceding it are part of -.q "week 0" . -In Monday-based week numbering, -the first Monday of the year begins week 1. -.PP -To set the date, use a command line argument with one of the following forms: -.nf -.if t .in +.5i -.if n .in +2 -.ta \w'198903081454\0'u -1454 24-hour-clock hours (first two digits) and minutes -081454 Month day (first two digits), hours, and minutes -03081454 Month (two digits, January is 01), month day, hours, minutes -8903081454 Year, month, month day, hours, minutes -0308145489 Month, month day, hours, minutes, year - (on System V-compatible systems) -030814541989 Month, month day, hours, minutes, four-digit year -198903081454 Four-digit year, month, month day, hours, minutes -.if t .in -.5i -.if n .in -2 -.fi -If the century, year, month, or month day is not given, -the current value is used. -Any of the above forms may be followed by a period and two digits that give -the seconds part of the new time; if no seconds are given, zero is assumed. +that is processed by +.BR strftime (3) +to determine what to output; +a newline character is appended. +For example, the shell command: +.ce 1 +date +"%Y\-%m\-%d %H:%M:%S %z" +.br +outputs a line like +.q "2025\-03\-08 14:54:40 \-0500" +instead. .PP These options are available: .TP -.BR \*-u " or " \*-c +.BR \-u " or " \-c Use Universal Time when setting and showing the date and time. .TP -.BI "\*-r " seconds +.BI "\-r " seconds Output the date that corresponds to .I seconds past the epoch of 1970-01-01 00:00:00 UTC, where @@ -149,16 +72,13 @@ past the epoch of 1970-01-01 00:00:00 UTC, where should be an integer, either decimal, octal (leading 0), or hexadecimal (leading 0x), preceded by an optional sign. .SH FILES -.ta \w'/usr/share/zoneinfo/posixrules\0\0'u +.ta \w'/usr/share/zoneinfo/Etc/UTC\0\0'u /etc/localtime local timezone file .br /usr/lib/locale/\f2L\fP/LC_TIME description of time locale \f2L\fP .br /usr/share/zoneinfo timezone directory .br -/usr/share/zoneinfo/posixrules default DST rules (obsolete) -.br -/usr/share/zoneinfo/GMT for UTC leap seconds -.PP -If /usr/share/zoneinfo/GMT is absent, -UTC leap seconds are loaded from /usr/share/zoneinfo/GMT0 if present. +/usr/share/zoneinfo/Etc/UTC for UTC leap seconds +.SH SEE ALSO +.BR strftime (3). diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 0fe7f1ed3f64..a80d422f2955 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -34,6 +34,14 @@ int __tz_change_interval = DETECT_TZ_CHANGES_INTERVAL; #include "un-namespace.h" #endif /* __FreeBSD__ */ +#if HAVE_SYS_STAT_H +# include +#endif +#if !defined S_ISREG && defined S_IFREG +/* Ancient UNIX or recent MS-Windows. */ +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif + #if defined THREAD_SAFE && THREAD_SAFE # include #ifdef __FreeBSD__ @@ -48,6 +56,73 @@ static int lock(void) { return 0; } static void unlock(void) { } #endif +/* Unless intptr_t is missing, pacify gcc -Wcast-qual on char const * exprs. + Use this carefully, as the casts disable type checking. + This is a macro so that it can be used in static initializers. */ +#ifdef INTPTR_MAX +# define UNCONST(a) ((char *) (intptr_t) (a)) +#else +# define UNCONST(a) ((char *) (a)) +#endif + +/* A signed type wider than int, so that we can add 1900 + tm_mon/12 to tm_year + without overflow. The static_assert checks that it is indeed wider + than int; if this fails on your platform please let us know. */ +#if INT_MAX < LONG_MAX +typedef long iinntt; +# define IINNTT_MIN LONG_MIN +# define IINNTT_MAX LONG_MAX +#elif INT_MAX < LLONG_MAX +typedef long long iinntt; +# define IINNTT_MIN LLONG_MIN +# define IINNTT_MAX LLONG_MAX +#else +typedef intmax_t iinntt; +# define IINNTT_MIN INTMAX_MIN +# define IINNTT_MAX INTMAX_MAX +#endif +static_assert(IINNTT_MIN < INT_MIN && INT_MAX < IINNTT_MAX); + +/* On platforms where offtime or mktime might overflow, + strftime.c defines USE_TIMEX_T to be true and includes us. + This tells us to #define time_t to an internal type timex_t that is + wide enough so that strftime %s never suffers from integer overflow, + and to #define offtime (if TM_GMTOFF is defined) or mktime (otherwise) + to a static function that returns the redefined time_t. + It also tells us to define only data and code needed + to support the offtime or mktime variant. */ +#ifndef USE_TIMEX_T +# define USE_TIMEX_T false +#endif +#if USE_TIMEX_T +# undef TIME_T_MIN +# undef TIME_T_MAX +# undef time_t +# define time_t timex_t +# if MKTIME_FITS_IN(LONG_MIN, LONG_MAX) +typedef long timex_t; +# define TIME_T_MIN LONG_MIN +# define TIME_T_MAX LONG_MAX +# elif MKTIME_FITS_IN(LLONG_MIN, LLONG_MAX) +typedef long long timex_t; +# define TIME_T_MIN LLONG_MIN +# define TIME_T_MAX LLONG_MAX +# else +typedef intmax_t timex_t; +# define TIME_T_MIN INTMAX_MIN +# define TIME_T_MAX INTMAX_MAX +# endif + +# ifdef TM_GMTOFF +# undef timeoff +# define timeoff timex_timeoff +# undef EXTERN_TIMEOFF +# else +# undef mktime +# define mktime timex_mktime +# endif +#endif + #ifndef TZ_ABBR_CHAR_SET # define TZ_ABBR_CHAR_SET \ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :+-._" @@ -57,12 +132,23 @@ static void unlock(void) { } # define TZ_ABBR_ERR_CHAR '_' #endif /* !defined TZ_ABBR_ERR_CHAR */ -/* -** Support non-POSIX platforms that distinguish between text and binary files. -*/ +/* Port to platforms that lack some O_* flags. Unless otherwise + specified, the flags are standardized by POSIX. */ #ifndef O_BINARY -# define O_BINARY 0 +# define O_BINARY 0 /* MS-Windows */ +#endif +#ifndef O_CLOEXEC +# define O_CLOEXEC 0 +#endif +#ifndef O_CLOFORK +# define O_CLOFORK 0 +#endif +#ifndef O_IGNORE_CTTY +# define O_IGNORE_CTTY 0 /* GNU/Hurd */ +#endif +#ifndef O_NOCTTY +# define O_NOCTTY 0 #endif #ifndef WILDABBR @@ -91,7 +177,10 @@ static void unlock(void) { } static const char wildabbr[] = WILDABBR; static char const etc_utc[] = "Etc/UTC"; + +#if !USE_TIMEX_T || defined TM_ZONE || !defined TM_GMTOFF static char const *utc = etc_utc + sizeof "Etc/" - 1; +#endif /* ** The DST rules to use if TZ has no rules and we can't load TZDEFRULES. @@ -103,10 +192,31 @@ static char const *utc = etc_utc + sizeof "Etc/" - 1; # define TZDEFRULESTRING ",M3.2.0,M11.1.0" #endif +/* Limit to time zone abbreviation length in proleptic TZ strings. + This is distinct from TZ_MAX_CHARS, which limits TZif file contents. + It defaults to 254, not 255, so that desigidx_type can be an unsigned char. + unsigned char suffices for TZif files, so the only reason to increase + TZNAME_MAXIMUM is to support TZ strings specifying abbreviations + longer than 254 bytes. There is little reason to do that, though, + as strings that long are hardly "abbreviations". */ +#ifndef TZNAME_MAXIMUM +# define TZNAME_MAXIMUM 254 +#endif + +#if TZNAME_MAXIMUM < UCHAR_MAX +typedef unsigned char desigidx_type; +#elif TZNAME_MAXIMUM < INT_MAX +typedef int desigidx_type; +#elif TZNAME_MAXIMUM < PTRDIFF_MAX +typedef ptrdiff_t desigidx_type; +#else +# error "TZNAME_MAXIMUM too large" +#endif + struct ttinfo { /* time type information */ - int_fast32_t tt_utoff; /* UT offset in seconds */ + int_least32_t tt_utoff; /* UT offset in seconds */ + desigidx_type tt_desigidx; /* abbreviation list index */ bool tt_isdst; /* used to set tm_isdst */ - int tt_desigidx; /* abbreviation list index */ bool tt_ttisstd; /* transition is std time */ bool tt_ttisut; /* transition is UT */ }; @@ -125,12 +235,6 @@ static char const UNSPEC[] = "-00"; for ttunspecified to work without crashing. */ enum { CHARS_EXTRA = max(sizeof UNSPEC, 2) - 1 }; -/* Limit to time zone abbreviation length in proleptic TZ strings. - This is distinct from TZ_MAX_CHARS, which limits TZif file contents. */ -#ifndef TZNAME_MAXIMUM -# define TZNAME_MAXIMUM 255 -#endif - /* A representation of the contents of a TZif file. Ideally this would have no size limits; the following sizes should suffice for practical use. This struct should not be too large, as instances @@ -173,7 +277,6 @@ static struct tm *gmtsub(struct state const *, time_t const *, int_fast32_t, static bool increment_overflow(int *, int); static bool increment_overflow_time(time_t *, int_fast32_t); static int_fast32_t leapcorr(struct state const *, time_t); -static bool normalize_overflow32(int_fast32_t *, int *, int); static struct tm *timesub(time_t const *, int_fast32_t, struct state const *, struct tm *); static bool tzparse(char const *, struct state *, struct state const *); @@ -194,8 +297,10 @@ static struct state *const gmtptr = &gmtmem; # define TZ_STRLEN_MAX 255 #endif /* !defined TZ_STRLEN_MAX */ +#if !USE_TIMEX_T || !defined TM_GMTOFF static char lcl_TZname[TZ_STRLEN_MAX + 1]; static int lcl_is_set; +#endif #ifdef __FreeBSD__ static pthread_once_t gmt_once = PTHREAD_ONCE_INIT; static pthread_once_t gmtime_once = PTHREAD_ONCE_INIT; @@ -221,27 +326,29 @@ static int localtime_key_error; ** trigger latent bugs in programs. */ -#if SUPPORT_C89 +#if !USE_TIMEX_T + +# if SUPPORT_C89 static struct tm tm; #endif -#if 2 <= HAVE_TZNAME + TZ_TIME_T -char * tzname[2] = { - (char *) wildabbr, - (char *) wildabbr -}; -#endif -#if 2 <= USG_COMPAT + TZ_TIME_T +# if 2 <= HAVE_TZNAME + TZ_TIME_T +char *tzname[2] = { UNCONST(wildabbr), UNCONST(wildabbr) }; +# endif +# if 2 <= USG_COMPAT + TZ_TIME_T long timezone; int daylight; -#endif -#if 2 <= ALTZONE + TZ_TIME_T +# endif +# if 2 <= ALTZONE + TZ_TIME_T long altzone; +# endif + #endif /* Initialize *S to a value based on UTOFF, ISDST, and DESIGIDX. */ static void -init_ttinfo(struct ttinfo *s, int_fast32_t utoff, bool isdst, int desigidx) +init_ttinfo(struct ttinfo *s, int_fast32_t utoff, bool isdst, + desigidx_type desigidx) { s->tt_utoff = utoff; s->tt_isdst = isdst; @@ -305,20 +412,22 @@ detzcode64(const char *const codep) return result; } +#if !USE_TIMEX_T || !defined TM_GMTOFF + static void update_tzname_etc(struct state const *sp, struct ttinfo const *ttisp) { -#if HAVE_TZNAME - tzname[ttisp->tt_isdst] = (char *) &sp->chars[ttisp->tt_desigidx]; -#endif -#if USG_COMPAT +# if HAVE_TZNAME + tzname[ttisp->tt_isdst] = UNCONST(&sp->chars[ttisp->tt_desigidx]); +# endif +# if USG_COMPAT if (!ttisp->tt_isdst) timezone = - ttisp->tt_utoff; -#endif -#if ALTZONE +# endif +# if ALTZONE if (ttisp->tt_isdst) altzone = - ttisp->tt_utoff; -#endif +# endif } /* If STDDST_MASK indicates that SP's TYPE provides useful info, @@ -349,18 +458,18 @@ settzname(void) When STDDST_MASK becomes zero we can stop looking. */ int stddst_mask = 0; -#if HAVE_TZNAME - tzname[0] = tzname[1] = (char *) (sp ? wildabbr : utc); +# if HAVE_TZNAME + tzname[0] = tzname[1] = UNCONST(sp ? wildabbr : utc); stddst_mask = 3; -#endif -#if USG_COMPAT +# endif +# if USG_COMPAT timezone = 0; stddst_mask = 3; -#endif -#if ALTZONE +# endif +# if ALTZONE altzone = 0; stddst_mask |= 2; -#endif +# endif /* ** And to get the latest time zone abbreviations into tzname. . . */ @@ -370,9 +479,9 @@ settzname(void) for (i = sp->typecnt - 1; stddst_mask && 0 <= i; i--) stddst_mask = may_update_tzname_etc(stddst_mask, sp, i); } -#if USG_COMPAT +# if USG_COMPAT daylight = stddst_mask >> 1 ^ 1; -#endif +# endif } /* Replace bogus characters in time zone abbreviations. @@ -399,6 +508,8 @@ scrub_abbrs(struct state *sp) return 0; } +#endif + #ifdef DETECT_TZ_CHANGES /* * Check whether either the time zone name or the file it refers to has @@ -473,11 +584,15 @@ union local_storage { #endif /* !__FreeBSD__ */ }; -/* Load tz data from the file named NAME into *SP. Read extended - format if DOEXTEND. Use *LSP for temporary storage. Return 0 on +/* These tzload flags can be ORed together, and fit into 'char'. */ +enum { TZLOAD_FROMENV = 1 }; /* The TZ string came from the environment. */ +enum { TZLOAD_TZSTRING = 2 }; /* Read any newline-surrounded TZ string. */ + +/* Load tz data from the file named NAME into *SP. Respect TZLOADFLAGS. + Use *LSP for temporary storage. Return 0 on success, an errno value on failure. */ static int -tzloadbody(char const *name, struct state *sp, bool doextend, +tzloadbody(char const *name, struct state *sp, char tzloadflags, union local_storage *lsp) { register int i; @@ -485,7 +600,9 @@ tzloadbody(char const *name, struct state *sp, bool doextend, register int stored; register ssize_t nread; #ifdef __FreeBSD__ - int serrno; + struct stat sb; + const char *relname; + int dd, serrno; #else /* !__FreeBSD__ */ register bool doaccess; #endif /* !__FreeBSD__ */ @@ -533,45 +650,75 @@ tzloadbody(char const *name, struct state *sp, bool doextend, name = lsp->fullname; } - if (doaccess && access(name, R_OK) != 0) - return errno; - fid = _open(name, O_RDONLY | O_BINARY); + if (doaccess && (tzloadflags & TZLOAD_FROMENV)) { + /* Check for security violations and for devices whose mere + opening could have unwanted side effects. Although these + checks are racy, they're better than nothing and there is + no portable way to fix the races. */ + if (access(name, R_OK) < 0) + return errno; +#ifdef S_ISREG + { + struct stat st; + if (stat(name, &st) < 0) + return errno; + if (!S_ISREG(st.st_mode)) + return EINVAL; *** 2838 LINES SKIPPED *** From nobody Thu Apr 2 11:20:44 2026 X-Original-To: dev-commits-src-branches@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 4fmfY90hvHz6YH0N for ; Thu, 02 Apr 2026 11:20:45 +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 4fmfY80yvhz3JNM for ; Thu, 02 Apr 2026 11:20:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128844; 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=2BBV3WVkA/aIaH9gWWmYj2N6I0lvjW1XV9UDQoAQPk0=; b=phFwYm6KqKjECLsWefYCpO44MvmfSkPh4HPR6SmvDc4PC0NqnxILvO3dZnzLY0WLzoNLXf MKMKTXP3Z7VkPuMCcgcHstyIInV2YASiJxBWE3nZOuCeUd2trkoI/T1svT/g4kMe+F2sMu qujzF3eTsegB+zxrczfZqOmzx/zBafmg14N4l3jApKCbVpNSMESvuMRawZGqZUFVZkcLlE zujiQAfq+SHUv7YzX63uqw+GZ1B5/ILDy9E9dWSQmej9tm6szwFMqjOLDzCsvBP34vWfl9 I5Pgv65i/RCIGNTJyYmwxD0gQycMexVGZxQJuY225bUVTofm2pcMCA1bECbXag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128844; a=rsa-sha256; cv=none; b=cN4IUnwmyxKSQmwGVmtxcGWz5ts/tqnW1ppe18YJXDHFz4ARHKUNRtm1p7hgyrUaWleIGF QsVfClmpTIgwIp/89MKL+e8OPGLRo50OAc5N0FS2+giOCPAax/c9bgcunkQxs8Oav8/hii uLhNK+eAiXmzfLhm9/cV81T0UQBGL6olwSuahMDbauvvpeQa40hTcNGHtarQsntlC/mKrV n5N6l4ZKAV08mV4TXhztvxqPffZW/4mcoYdua70oQ+Xe+nl78XWEW3SqPQk8Vkm7eANbSp YnbI3uuy3qleWGZTdcW9KZ9kmYFdqamIC63GVEzsra+I90RYgqiCs/tvMozebw== 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=1775128844; 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=2BBV3WVkA/aIaH9gWWmYj2N6I0lvjW1XV9UDQoAQPk0=; b=w0Db25JFh3rdA3CSCR7TeVR/nOwOXjeU9Rbuj0Y5XRkbYwWSqyruHHZgxheylUpypZUjH3 T0M/p0t+xN/kMuKNsvL/YmoRkRxO7xMCP09RX2XSKMX3ddnVtGONvM0pwtAzDiirZ5yOnx vxmwU2jL5LGAA48fRR6+8gPUOGojFqkpwAie/xLPZ1IFh+2SEIgt4AtdyGf+dF0qgXD44T /9E9K1cts2MbS/OFsXfKc8OdCSWrxRfKytWW0RqJRPtxiZpRoPnaP8Chx7K7bKP8gJd9bM wGdy92oTByZC8knCvbT1O9iQx6rWCGQA0isqeV9LoGUjTC7zEDZxnncWEX0ujQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY80QWcz100q for ; Thu, 02 Apr 2026 11:20:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f006 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:44 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 2a4e0e0391ea - stable/14 - tzcode: Add a test case for thin jails List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2a4e0e0391ea130c3f3f5116106710dee2404399 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:44 +0000 Message-Id: <69ce510c.1f006.4b7a9766@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=2a4e0e0391ea130c3f3f5116106710dee2404399 commit 2a4e0e0391ea130c3f3f5116106710dee2404399 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-27 12:27:29 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Add a test case for thin jails Add a test case for a typical thin jail scenario where TZDIR does not exist and we get our information from /etc/localtime. This is technically already covered by the detect_tz_changes test case, but this new test case is independent of the DETECT_TZ_CHANGES option. (cherry picked from commit b2f394b90062b9f4aee51de4e5fd7513b3db7362) --- lib/libc/tests/stdtime/detect_tz_changes_test.c | 43 +++++++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index e3fdcc0baef7..ad8c4818669d 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -44,12 +44,6 @@ static const struct tzcase { static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */ -#ifdef DETECT_TZ_CHANGES -static const char *tz_change_interval_sym = "__tz_change_interval"; -static int *tz_change_interval_p; -static const int tz_change_interval = 3; -static int tz_change_timeout = 90; - static bool debugging; static void @@ -89,6 +83,35 @@ change_tz(const char *tzn) debug("time zone %s installed", tzn); } +ATF_TC(thin_jail); +ATF_TC_HEAD(thin_jail, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test typical thin jail scenario"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(thin_jail, tc) +{ + const struct tzcase *tzcase = tzcases; + char buf[128]; + struct tm *tm; + size_t len; + + /* prepare chroot */ + ATF_REQUIRE_EQ(0, mkdir("root", 0755)); + ATF_REQUIRE_EQ(0, mkdir("root/etc", 0755)); + change_tz(tzcase->tzfn); + /* enter chroot */ + ATF_REQUIRE_EQ(0, chroot("root")); + ATF_REQUIRE_EQ(0, chdir("/")); + /* check timezone */ + unsetenv("TZ"); + ATF_REQUIRE((tm = localtime(&then)) != NULL); + len = strftime(buf, sizeof(buf), "%z (%Z)", tm); + ATF_REQUIRE(len > 0); + ATF_CHECK_STREQ(tzcase->expect, buf); +} + +#ifdef DETECT_TZ_CHANGES /* * Test time zone change detection. * @@ -106,6 +129,11 @@ change_tz(const char *tzn) * after we've received and discarded the first report from the child, * which should come almost immediately on startup. */ +static const char *tz_change_interval_sym = "__tz_change_interval"; +static int *tz_change_interval_p; +static const int tz_change_interval = 3; +static int tz_change_timeout = 90; + ATF_TC(detect_tz_changes); ATF_TC_HEAD(detect_tz_changes, tc) { @@ -324,9 +352,10 @@ ATF_TC_BODY(tz_env_setugid, tc) ATF_TP_ADD_TCS(tp) { -#ifdef DETECT_TZ_CHANGES debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") && isatty(STDERR_FILENO); + ATF_TP_ADD_TC(tp, thin_jail); +#ifdef DETECT_TZ_CHANGES ATF_TP_ADD_TC(tp, detect_tz_changes); #endif /* DETECT_TZ_CHANGES */ ATF_TP_ADD_TC(tp, tz_env); From nobody Thu Apr 2 11:20:45 2026 X-Original-To: dev-commits-src-branches@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 4fmfYB0Pb8z6YGs5 for ; Thu, 02 Apr 2026 11:20:46 +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 4fmfY91Sj4z3JWY for ; Thu, 02 Apr 2026 11:20:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128845; 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=pgbnUSHWe4iWs6bvtkLgPS0PBagS5JYLwFxHyB/n5EE=; b=OUYFzvowEo/IHtR0nv167E6niPnduMDKtLXLrAdVZYSDVrbtXZlqtye1DPoc0DXBZ4uz8Z qlELjLQw6LIVsB78lW4+Wf/TdcZ1qpbJQdyl24hsi4FdgxOnBq4m/3kQ2nN5uyyMHTGB+a tteG7R1h9uF4cWgn36365TdsnIen9w/+Yqcjpu7oseKaQlD4vz/P2CZ0ehawZSjhRqg8Dv qU5G3Pk0wNAHY4cFUw7KuICggsZrxigZHRVcWUVEped7RUDMTh5q4AIEO+S3yRVKFWCWEl k8q7LNgmz2wyc00M/TxCvCB+0X0wmghbxXrBKSpaz9JzoQPkxDZDh7NsbYiPtg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128845; a=rsa-sha256; cv=none; b=R48XCPnZA+ea48KlgNOfGgKkkhgAc+KX+PbBw5Mddh97Vy1Rf81sAd4tmLUfjsoqLdIovO hGSh45626c8EqTVvk+Bz7xeNknxvc7RMnbZep5QXyqylBcH69jpSLa+bhbCCQ3BabMdX7f fxratpifiXdJ7iNL4HoxWrUAdFElPNq0KIDNg73XpZjlE0FTuKRr8B/UI3aFNGK5MWm0LI RzVkfnNxnPRg9XSJer/5O1pxp1WeqpXgHUBWHjI1wNuigX0zwwN29kbJ4mBLWqlxfLvkf/ KSB2o3khNf9TvS+R4ucAn+VkWxXrC1b8Z+CBAg8vtYcowHc6Zmls+1LuIO9kEg== 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=1775128845; 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=pgbnUSHWe4iWs6bvtkLgPS0PBagS5JYLwFxHyB/n5EE=; b=EdokZu8DnWhI3xHu5XaICU3s87U3OPVDbBbBupXsOW4aeFhss/EaWqQSrBGkSUdmEoHGVp AqlHyr/sAY176nkxVIbsfH7pZziY1hleR1ijMDghOSnQKoawi9dIKTxXiFEtCf+oFi8kHx 2AE7oDOROv5vTobzEAq02MTNLLlTZXGihcvhWe1H37enH2iqUhjediyIb/KjjkESwnUqQM oi96cOaihRW9Y57Rm6kYfU9VXx1/SHv8904eIzzA1uPvZb2XKpcd4fqlbG2LUwDpvcwSPr AIddl95PeXM8/YPn4Zpbxi87YW1IcihnyRtuMw1PH37CBEyzA1nurs08SAGvdA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfY90q2Lz105c for ; Thu, 02 Apr 2026 11:20:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f3aa by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 3e8b9c30c5a8 - stable/14 - tzcode: Don't treat TZDEFAULT as tainted List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3e8b9c30c5a89ad2d7f8dd965924bdb58e53ef09 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:45 +0000 Message-Id: <69ce510d.1f3aa.7981ba51@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3e8b9c30c5a89ad2d7f8dd965924bdb58e53ef09 commit 3e8b9c30c5a89ad2d7f8dd965924bdb58e53ef09 Author: Dag-Erling Smørgrav AuthorDate: 2025-09-01 06:33:28 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Don't treat TZDEFAULT as tainted tzset() calls zoneinit() with the FROMENV flag set unconditionally, so if TZ is unset and we use TZDEFAULT instead, we were still treating it as if it came from the environment. Unset the FROMENV flag if name is null and we switch to TZDEFAULT, or if, after skipping the optional leading colon, we find that name is identical to TZDEFAULT. This incorporates upstream change d0e0b00f846c ("Avoid unnecessary access, stat calls"). Fixes: b6ea2513f776 ("tzcode: Limit TZ for setugid programs") Event: Oslo Hackathon 202508 Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D52240 (cherry picked from commit ca89e15355097e9b57bf4e17a50506e081fe04b3) --- contrib/tzcode/localtime.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index a80d422f2955..15afeeecb6d0 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -615,6 +615,7 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, name = TZDEFAULT; if (! name) return EINVAL; + tzloadflags &= ~TZLOAD_FROMENV; } if (name[0] == ':') @@ -670,11 +671,13 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, fid = _open(name, (O_RDONLY | O_BINARY | O_CLOEXEC | O_CLOFORK | O_IGNORE_CTTY | O_NOCTTY)); #else /* __FreeBSD__ */ + if ((tzloadflags & TZLOAD_FROMENV) && strcmp(name, TZDEFAULT) == 0) + tzloadflags &= ~TZLOAD_FROMENV; relname = name; if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) relname += strlen(TZDIR) + 1; dd = _open(TZDIR, O_DIRECTORY | O_RDONLY); - if (issetugid() && (tzloadflags & TZLOAD_FROMENV)) { + if ((tzloadflags & TZLOAD_FROMENV) && issetugid()) { if (dd < 0) return errno; if (fstatat(dd, name, &sb, AT_RESOLVE_BENEATH) < 0) { @@ -1624,14 +1627,13 @@ zoneinit(struct state *sp, char const *name, char tzloadflags) static void tzset_unlocked(void) { + char const *name = getenv("TZ"); #ifdef __FreeBSD__ - tzset_unlocked_name(getenv("TZ")); + tzset_unlocked_name(name); } static void tzset_unlocked_name(char const *name) { -#else - char const *name = getenv("TZ"); #endif struct state *sp = lclptr; int lcl = name ? strlen(name) < sizeof lcl_TZname : -1; From nobody Thu Apr 2 11:20:46 2026 X-Original-To: dev-commits-src-branches@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 4fmfYB3Mr5z6YGtp for ; Thu, 02 Apr 2026 11:20:46 +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 4fmfYB1lvrz3JYn for ; Thu, 02 Apr 2026 11:20:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128846; 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=O4g0jc5ORWJdf7+1pPv0RFbREkpOL13HBas34Imkg4s=; b=JQ3FLosA3adGrcA9X+AyLqCs5Go6KyKFnF6hIlxdKB1ATk3dUQUKUfYh1k9Yeqam301qg7 +CjrTKgXKfqrGt6HRcx40L3ani3r2TsyRq92VGON4Aqs/ZDQCYwNsSmqCV36toGIctPWw3 qmvxa0FZfiP8iejpifu+npnrkFkMv910FP7AgZ7BCN7isydzbLktbNIwycyD22MKRRMKgJ TVOATAvDzUj/BpezmaJIi1k/bHbbq5hIHleAEzATYX0J1koxSC2u8eNj83srWLxewZdBoR xKFzpoO+sz3FVmUZV9t4ey9hdeOjdPSx4/V2AofXHzazRb/zuM6yXhcG2cinow== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128846; a=rsa-sha256; cv=none; b=jFC46AjwF1jHXes8AKyxFSc5srtCIcBtXShQAET4ow8h4Y8Kpo6aiB5eldm0ccxyNtMh6w FHKQ0lZdmEpsEZXC9EmqpDpEMhC+6Pa6U0RWfj+AcCnAz07oe5UEHHGOFBZ21c+//ghkh+ BOiU5AO5WX6uOyKqVSKBHNCT9yFTNfszpQEsfD0hRJWwqLCncPDVF6QzKEXn9GJRTrRGjK C0nad0nwAuf/SqgyAoc/VLClLiKSKdGALllBvH38yyDSUFT0MrnL1MdPwum0801vfE4Wq+ CJg62w6XkErhWHAqfzIT9bqXXrihpw3FSEpBwpsf0dnfGBln9pdH9UTSFYfzlg== 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=1775128846; 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=O4g0jc5ORWJdf7+1pPv0RFbREkpOL13HBas34Imkg4s=; b=nd7iOM3uDMRTN6Bee6NhqDK0rGBcO8cWAdXpgzWk6qhVV6krKKdhVlNefwXn/ScYAF2QBz 66aBiYA8i+iZlAQA5pKpdjALOmR8qVnArJHxJYhaMFsM0C9kVLKzoYtgxioFeS5E9tC/OX VFuD4Pxmd5ID6oW12NV8zNNk4gLxh9vUsZgaJRzg0+SavTrPx25jAVCfdNOBQhkcRnmiRf dnWNaj8ImbaMvBBF6TEVjj0iyeBtdsoDZFiwUAhGYkNmfktuR1d2kyqh5P0dVbX591uHjR 5naVwRvfjnnN0xBGDUStS8tRULEQCjLMRIv8RmOa7QIkMkq1F3VC0Uc2oHS0ug== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYB1Jzsz10Vx for ; Thu, 02 Apr 2026 11:20:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e259 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:46 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: cb991fa12e6e - stable/14 - tzcode: Add a test case for plain issetugid case List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: cb991fa12e6e22e9d6d50980ad52c4ca92c3649e Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:46 +0000 Message-Id: <69ce510e.1e259.30409fae@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=cb991fa12e6e22e9d6d50980ad52c4ca92c3649e commit cb991fa12e6e22e9d6d50980ad52c4ca92c3649e Author: Dag-Erling Smørgrav AuthorDate: 2025-09-01 06:33:37 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Add a test case for plain issetugid case This catches a bug in tzcode which incorrectly considers TZDEFAULT as unsafe as if it came from the environment. Also deduplicate some repeated code, and fix a missing mode in an open(2) call with O_CREAT set. Event: Oslo Hackathon 202508 Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D52241 (cherry picked from commit 016d3ec239b39895cf19aa62552fc316d7d98045) --- lib/libc/tests/stdtime/detect_tz_changes_test.c | 60 ++++++++++++++++++------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index ad8c4818669d..6648d8498cc5 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -70,7 +70,7 @@ change_tz(const char *tzn) ATF_REQUIRE((zfd = open(zfn, O_DIRECTORY | O_SEARCH)) >= 0); ATF_REQUIRE((sfd = openat(zfd, tzn, O_RDONLY)) >= 0); - ATF_REQUIRE((dfd = open(tfn, O_CREAT | O_TRUNC | O_WRONLY)) >= 0); + ATF_REQUIRE((dfd = open(tfn, O_CREAT | O_TRUNC | O_WRONLY, 0644)) >= 0); do { clen = copy_file_range(sfd, NULL, dfd, NULL, SSIZE_MAX, 0); ATF_REQUIRE_MSG(clen != -1, "failed to copy %s/%s: %m", @@ -83,6 +83,19 @@ change_tz(const char *tzn) debug("time zone %s installed", tzn); } +static void +test_tz(const char *expect) +{ + char buf[128]; + struct tm *tm; + size_t len; + + ATF_REQUIRE((tm = localtime(&then)) != NULL); + len = strftime(buf, sizeof(buf), "%z (%Z)", tm); + ATF_REQUIRE(len > 0); + ATF_CHECK_STREQ(expect, buf); +} + ATF_TC(thin_jail); ATF_TC_HEAD(thin_jail, tc) { @@ -92,9 +105,6 @@ ATF_TC_HEAD(thin_jail, tc) ATF_TC_BODY(thin_jail, tc) { const struct tzcase *tzcase = tzcases; - char buf[128]; - struct tm *tm; - size_t len; /* prepare chroot */ ATF_REQUIRE_EQ(0, mkdir("root", 0755)); @@ -105,10 +115,7 @@ ATF_TC_BODY(thin_jail, tc) ATF_REQUIRE_EQ(0, chdir("/")); /* check timezone */ unsetenv("TZ"); - ATF_REQUIRE((tm = localtime(&then)) != NULL); - len = strftime(buf, sizeof(buf), "%z (%Z)", tm); - ATF_REQUIRE(len > 0); - ATF_CHECK_STREQ(tzcase->expect, buf); + test_tz(tzcase->expect); } #ifdef DETECT_TZ_CHANGES @@ -309,15 +316,8 @@ ATF_TC_BODY(detect_tz_changes, tc) static void test_tz_env(const char *tzval, const char *expect) { - char buf[128]; - struct tm *tm; - size_t len; - setenv("TZ", tzval, 1); - ATF_REQUIRE((tm = localtime(&then)) != NULL); - len = strftime(buf, sizeof(buf), "%z (%Z)", tm); - ATF_REQUIRE(len > 0); - ATF_CHECK_STREQ(expect, buf); + test_tz(expect); } ATF_TC(tz_env); @@ -333,6 +333,31 @@ ATF_TC_BODY(tz_env, tc) test_tz_env(tzcase->tzfn, tzcase->expect); } +ATF_TC(setugid); +ATF_TC_HEAD(setugid, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test setugid process"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(setugid, tc) +{ + const struct tzcase *tzcase = tzcases; + + /* prepare chroot */ + ATF_REQUIRE_EQ(0, mkdir("root", 0755)); + ATF_REQUIRE_EQ(0, mkdir("root/etc", 0755)); + change_tz(tzcase->tzfn); + /* enter chroot */ + ATF_REQUIRE_EQ(0, chroot("root")); + ATF_REQUIRE_EQ(0, chdir("/")); + /* become setugid */ + ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY)); + ATF_REQUIRE(issetugid()); + /* check timezone */ + unsetenv("TZ"); + test_tz(tzcases->expect); +} + ATF_TC(tz_env_setugid); ATF_TC_HEAD(tz_env_setugid, tc) { @@ -342,7 +367,7 @@ ATF_TC_HEAD(tz_env_setugid, tc) } ATF_TC_BODY(tz_env_setugid, tc) { - const struct tzcase *tzcase; + const struct tzcase *tzcase = tzcases; ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY)); ATF_REQUIRE(issetugid()); @@ -359,6 +384,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, detect_tz_changes); #endif /* DETECT_TZ_CHANGES */ ATF_TP_ADD_TC(tp, tz_env); + ATF_TP_ADD_TC(tp, setugid); ATF_TP_ADD_TC(tp, tz_env_setugid); return (atf_no_error()); } From nobody Thu Apr 2 11:20:47 2026 X-Original-To: dev-commits-src-branches@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 4fmfYC5Yfwz6YH0Q for ; Thu, 02 Apr 2026 11:20:47 +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 4fmfYC2ZNwz3JX1 for ; Thu, 02 Apr 2026 11:20:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128847; 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=rwpPM/ZeMNyOwXO51Dr3FbIWLUfnqt6hifJSCDccK3I=; b=uj2rpNpRVfRKx4yoryI/h5ErYR1yx0fiY24S4yIy5ufhSe2XeVWdRXj5dAFmNMJsZbGgc3 BrruxJSUVMEH32DG1pmWqESSRAK1C+EQAaJqkybabXTevfNKwH/vXCDMCVWYW8C3d61/Y2 rhyBiQSU2HLixnh6bGC+8B05ronEL58Xiz01RMvw04KT0GJmc4RewvKp/JDqn2LicpE6sm QHoCXT8nLiI1v0rlbDjgHn6ooDls65onDJGCWdAM4XJSXe2KZKfkZxcPqbYuWreGt4Axdg bZWacO6yvhI85VHGH5YCaCY5riBOO0sG5j7w+Wr0/wmyKcvecFU8vkxxJZCz7w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128847; a=rsa-sha256; cv=none; b=bI8k0t9a8ax7zcH9jEHJbVlAEcD+lln+0Pa3gLhc4tG8V6n+6Gk2XRLJbWFDeXhDiZMvWF 5AfYEjtW2RJShAoFZyiZiQNR+duuktXC+yV3B4rxK8QRon7NZ0Vf0aBP24kdEU6krUd29w inLCGYd2ryk8Gtgr1PLLYWjduZVavhBL7CeR7UhhxCX6FLeZ42fvb/wykd+lMxES/A++qO VB2fsPW/yr+/NzpuOiILm0wPx916+D25M4flbMSMQFpa1lHwzgm/0bSJlLs8zo0TpwZzT6 FRimXdaREoF1telDxmsrxyogkx3D+OrMVrWMGIZZhcO5u3SfUrGfujS+IoDGRA== 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=1775128847; 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=rwpPM/ZeMNyOwXO51Dr3FbIWLUfnqt6hifJSCDccK3I=; b=Y2tJ9GjAAExMGGUmYQ7VF6VaHqj2cmE5E/WIEQparAdtfXqiUry8IN/X61rL/EXi00Ve+f MnuvxfGZMlMxiUsphJ0mBlm/WOzF0ckstCkbc+KLBKA/vLmv880709/tgyS4/JTihp2qM8 RJvZbdOUzXcpi0ITd2NEw/9iZiRiUi2NFcd2ykWPwrG44pq3m/OPzvd8XWJnfqCJ+H27Pq 0SpeNi0qd+jhWFBRekOOnacN6NfoogQJQ7S4V7/xbm+AM7qqAmC9iUCBsrUQn1lxdceHpG a7xmLmtG18zPgkpIyO7f04NeZGPtrN2Rhtd+jTD7VHDwv8NBo6FToXnj7VDCGA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYC29nSz1034 for ; Thu, 02 Apr 2026 11:20:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1d05d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: f1977dc59516 - stable/14 - tzcode: Use -00 only for invalid time zones List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f1977dc59516fb92a357a6195e0c1c8c6d5e7abc Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:47 +0000 Message-Id: <69ce510f.1d05d.6e39a7e1@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f1977dc59516fb92a357a6195e0c1c8c6d5e7abc commit f1977dc59516fb92a357a6195e0c1c8c6d5e7abc Author: Dag-Erling Smørgrav AuthorDate: 2025-09-23 12:56:11 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:00 +0000 tzcode: Use -00 only for invalid time zones As of tzcode 2025a, if we are unable to load a time zone, we set tzname to "-00" to indicate an error. This penalizes users who simply don't set TZ or create /etc/localtime as a faster way of setting the time zone to UTC (pointing /etc/localtime at /usr/share/zoneinfo/UTC forces us to parse it every time for no real benefit). To rectify this, use "-00" only if TZ was set or zoneinit() returned something else than ENOENT. MFC after: 3 days Fixes: 967a49a21a27 ("Update tzcode to 2025b") Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D52680 (cherry picked from commit a5f14e4f9069a8ffed66d923bb0ecf20d8a0e6af) --- contrib/tzcode/localtime.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 15afeeecb6d0..7ba72d730648 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -1649,9 +1649,13 @@ tzset_unlocked_name(char const *name) lclptr = sp = malloc(sizeof *lclptr); # endif if (sp) { - if (zoneinit(sp, name, TZLOAD_FROMENV | TZLOAD_TZSTRING) != 0) { + int err = zoneinit(sp, name, TZLOAD_FROMENV | TZLOAD_TZSTRING); + if (err != 0) { zoneinit(sp, "", 0); - strcpy(sp->chars, UNSPEC); + /* Abbreviate with "-00" if there was an error. + Do not treat a missing TZDEFAULT file as an error. */ + if (name || err != ENOENT) + strcpy(sp->chars, UNSPEC); } if (0 < lcl) strcpy(lcl_TZname, name); From nobody Thu Apr 2 11:20:48 2026 X-Original-To: dev-commits-src-branches@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 4fmfYF05JNz6YH6m for ; Thu, 02 Apr 2026 11:20:49 +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 4fmfYD3YlDz3JcR for ; Thu, 02 Apr 2026 11:20:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128848; 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=oU05h4sT/PNV766Zy1AUua2TyFQ0JT3JNueuLncaeZA=; b=iTosYymoknkI9b6xUqacvIXTuV63QFmey0812jEoVS3TRMZ52jbf0vUj4GuAsGlC85MB2V hsiKDTEQgH5M9RsG8dAuM8GqkIxV2/o0ZA+7I4HfzyNc8x6+gXZRqnEu6/4TrpY2fd64hj VOPgSBclZA4pg+34lrhlp1pw4WyJCM03yAtaLw1a6T5I3hntkRWNhs+mXmPQ3RQb068A/U w1/wyvDRBqwEMOmNadfgH+Fyc39cS/yx387Hg7tOyk5XoiZPeG14k81lPpdLrPl4mulY2j z+OwN2wbiX8KCyjPxE7C/8BqqY1q3NW1ztv/NZZhTBYjf1Hm+bWqgQwwd5J1AA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128848; a=rsa-sha256; cv=none; b=h8x2ylMFOeuEGwO+D7Ew4SjRda/pehTe0n5iFXT0xTnHZ1oR6zrCbASVcTef0S9vh0okjH 3YhjpnEcVHCkWjql4c8ulNuWfReomgm9uEFpW8ko2ZcZc8UjqzDnr4qKhgEggUeYKa+Wha OqERT9BOjAeA5l7Y8pguH9/14syaLowuSqWGiqdsagHuYUeB42PNELErw/1zyZUUTnKt6B 4q/ZZqH/nXS30RxJkLsPOMPmb6WCI/iBb5yqHaE6XOOHDwklyg32k3GTGJRs47z+hAhvyw Iy4qfJZ74g+3hHwJmIHyfP/i7jkwuVjCxnOorKhszTovR4+wTvy51gxroOgWow== 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=1775128848; 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=oU05h4sT/PNV766Zy1AUua2TyFQ0JT3JNueuLncaeZA=; b=CXXRLZyVCu16BM2xUJ35FPe6DwusK6HqYTQxkRftWkTrE1RNJ/0pLKSCW4SpPlyHDJ4Rz0 Tg+JuMGHhdXgCIgeUIFif7iZqphIMM/QFDYjI5rr0XYqnIjG4FSVz7BhtoGRdgKOOZlPYv wR6aZDEJfgw7usDdRCbkbgGA46kw9IQKTV94VCYHLInUtz4qpfhNuFjgJSh2MfFEQjIz3w b8yE98W+pJO9Hm+59neZTAMAbIu01sS6IitjELtP69PbO9saq1VZbUw+oOZpRvgaBj2+bE ikC9A+mkfghqYhPYOhO7PRU+de5nPHSVhLdE0w0o4MKtDLjmoP4xDTOjPdt9yA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYD34pMz1035 for ; Thu, 02 Apr 2026 11:20:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e6e9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:48 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 8a26d2535944 - stable/14 - tzcode: Expose and document offtime() and offtime_r() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8a26d253594444f7eafe0f98cebd390f95664239 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:48 +0000 Message-Id: <69ce5110.1e6e9.5598cf20@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=8a26d253594444f7eafe0f98cebd390f95664239 commit 8a26d253594444f7eafe0f98cebd390f95664239 Author: Dag-Erling Smørgrav AuthorDate: 2025-09-23 18:52:10 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Expose and document offtime() and offtime_r() Includes diff reduction to upstream version of this patch. MFC after: 3 days Sponsored by: Klara, Inc. Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D39715 (cherry picked from commit 155290b23f0b503b9db675d6a45f85b189ee1926) --- contrib/tzcode/localtime.c | 2 +- contrib/tzcode/private.h | 2 +- include/time.h | 2 ++ lib/libc/stdtime/ctime.3 | 39 +++++++++++++++++++++++++++++++++------ 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 7ba72d730648..a8f97e31a4bb 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -2021,7 +2021,7 @@ offtime_key_init(void) } #endif /* __FreeBSD__ */ struct tm * -offtime(const time_t *timep, long offset) +offtime(time_t const *timep, long offset) { # if !SUPPORT_C89 static struct tm tm; diff --git a/contrib/tzcode/private.h b/contrib/tzcode/private.h index 532d9ddc81c8..e6b206690b73 100644 --- a/contrib/tzcode/private.h +++ b/contrib/tzcode/private.h @@ -823,7 +823,7 @@ extern long altzone; struct tm *offtime(time_t const *, long); # endif # if TZ_TIME_T || !defined offtime_r -struct tm *offtime_r(time_t const *, long, struct tm *); +struct tm *offtime_r(time_t const *restrict, long, struct tm *restrict); # endif # if TZ_TIME_T || !defined timelocal time_t timelocal(struct tm *); diff --git a/include/time.h b/include/time.h index cac9c76e3f79..bdcb24c5b1bd 100644 --- a/include/time.h +++ b/include/time.h @@ -175,6 +175,8 @@ time_t timegm(struct tm * const); int timer_oshandle_np(timer_t timerid); time_t time2posix(time_t t); time_t posix2time(time_t t); +struct tm *offtime(const time_t *, long); +struct tm *offtime_r(const time_t *__restrict, long, struct tm *__restrict); #endif /* __BSD_VISIBLE */ #if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_) diff --git a/lib/libc/stdtime/ctime.3 b/lib/libc/stdtime/ctime.3 index 7216ada23826..20f0106a6e92 100644 --- a/lib/libc/stdtime/ctime.3 +++ b/lib/libc/stdtime/ctime.3 @@ -29,7 +29,7 @@ .\" .\" From: @(#)ctime.3 8.1 (Berkeley) 6/4/93 .\" -.Dd March 26, 2024 +.Dd September 23, 2025 .Dt CTIME 3 .Os .Sh NAME @@ -43,6 +43,8 @@ .Nm localtime , .Nm localtime_r , .Nm mktime , +.Nm offtime , +.Nm offtime_r , .Nm timegm .Nd transform binary date and time values .Sh LIBRARY @@ -70,14 +72,19 @@ .Fn localtime_r "const time_t *clock" "struct tm *result" .Ft time_t .Fn mktime "struct tm *tm" +.Ft struct tm * +.Fn offtime "const time_t *clock" "long offset" +.Ft struct tm * +.Fn offtime_r "const time_t *clock" "long offset" "struct tm *result" .Ft time_t .Fn timegm "struct tm *tm" .Sh DESCRIPTION The .Fn ctime , .Fn gmtime , +.Fn localtime , and -.Fn localtime +.Fn offtime functions all take as argument a pointer to a time value representing the time in seconds since the Epoch (00:00:00 UTC on January 1, 1970; see @@ -125,6 +132,18 @@ adjustment, and returns a pointer to a .Vt struct tm . .Pp The +.Fn offtime +function similarly converts the time value with a time zone adjustment +corresponding to the provided +.Fa offset , +which is expressed in seconds, with positive values indicating a time +zone ahead of UTC (east of the Prime Meridian). +It does not call +.Xr tzset 3 +or modify +.Va tzname . +.Pp +The .Fn ctime function adjusts the time value for the current time zone in the same manner as @@ -157,13 +176,15 @@ except the caller must provide the output buffer .Fa buf , which must be at least 26 characters long, to store the result in. The -.Fn localtime_r +.Fn localtime_r , +.Fn gmtime_r , and -.Fn gmtime_r +.Fn offtime_r functions provide the same functionality as -.Fn localtime +.Fn localtime , +.Fn gmtime , and -.Fn gmtime +.Fn offtime respectively, except the caller must provide the output buffer .Fa result . .Pp @@ -370,6 +391,12 @@ and .Fn localtime_r functions have been available since .Fx 8.0 . +The +.Fn offtime +and +.Fn offtime_r +functions were added in +.Fx 15.0 . .Sh BUGS Except for .Fn difftime , From nobody Thu Apr 2 11:20:50 2026 X-Original-To: dev-commits-src-branches@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 4fmfYG72Gdz6YH6v for ; Thu, 02 Apr 2026 11:20:50 +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 4fmfYG5GDWz3JPC for ; Thu, 02 Apr 2026 11:20:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128850; 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=ZHbxt6U4CIPWdlXXDUHye+Hsy9XjaJQBjzVKhWiah18=; b=NjhqBuDSw2TcBE9KX9Z7n9TpLrPedYH7BznxJefO0Ugx8Rpvw1/6w+MELTZiLc5TOOCNMO BoRCTDCueWovbexC1p4w6FxNNwxayB8yaYzwbhBBF9QE+BbmHsebUyfbJrejQlDNQnoof5 DYVS+Y725XheiZhx03DhsbJ0Gc79UA8r7AN3oZnx3Op/U+YOfYBnsdgoSjHbhsE9y8Ccrc 4M8CHEPUkTASF/fUm3mQ9/P7iqaS81YtJNarw80Zn1aEVHJeyD5agk4r++ionodxS2VNZz TSqYT16/hw6fgJMmfJQH1uI+YQt12Na0jXMa0VsTfLmaMOia63FZerBsFsq7cQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128850; a=rsa-sha256; cv=none; b=tZ945e0lT6PSBue/L8r9lmb0mB9EZ732dN267sZAXdkOtqpNlNY5qz1F1U+WuXOXZPlpEO J3QeMHmVPAX5FcetjHERvkaVqwFk533jHzoxwjfwtcvDLI5SfrtLgS8XSv+d22P40wcX7z lig3ryMHYA4i9G8Enrll39OConBtxxxEYqvAUi4L+k2tEod2dn+YveTG6tev8P7Cltggao JUfsfelVrKcyeub4wuvJP1KTDQbUQcAGJC5fBZfPRHMwebAopIGb4NyvnkWBCdD74O6var 85g0e7lEtjIQeJjZfrFMK3FAOhoEn4L9W252lC7aY9e40LVHneFuWEgKS9cyuQ== 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=1775128850; 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=ZHbxt6U4CIPWdlXXDUHye+Hsy9XjaJQBjzVKhWiah18=; b=fxWZFDrU75rpgJ9di5V/yyNuxG1RtwDXs5Yrgr9HqNMVZqWD4BuwkiPOjJ/xyPC0FSW3iV gbc3Tx3RlrlVZptI89KyrZ1+J1fYkzibOrVoNGcFYclY7KRlYHmJ1USGKIkK4vNW3ExJID GYpqVaL653qXIQ0cei3oYyuTUbh5NohkbAvwZZAfJwe4nvJAckGwJtQjPER7TDKK11vR66 Iw2VRzkOmUI5qwM27pWqkcWkdLfOyMOGJWhoB6NwHcbtdilGAmuL473vX2azkWQkU3Zoo4 lHU/P9ZUQv0n4vHcRB7sGXgXHsl1EEJYdFGrPQgS2tGSqkRCcFh7G3JfmGXRYw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYG4Y9fz1038 for ; Thu, 02 Apr 2026 11:20:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e048 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:50 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: f792f3d2093c - stable/14 - tzcode: Fix issues when TZ is an absolute path List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f792f3d2093ce72ed410b21a180d76be07edcee7 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:50 +0000 Message-Id: <69ce5112.1e048.22eda2a3@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f792f3d2093ce72ed410b21a180d76be07edcee7 commit f792f3d2093ce72ed410b21a180d76be07edcee7 Author: Dag-Erling Smørgrav AuthorDate: 2025-09-27 17:07:04 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Fix issues when TZ is an absolute path * If TZ starts with TZDIR, strip any additional slashes so relname does not end up looking like an absolute path. For instance, TZ=/usr/share/zoneinfo//UTC should result in UTC, not /UTC. * In the setugid case, we were incorrectly passing name rather than relname to fstatat(). * Modify the tz_env and tz_env_setugid test cases to exercise both of these scenarios. * Also add test cases for invalid values of TZ, which I wrote earlier but forgot to include in a5f14e4f9069. Reported by: Paul Eggert MFC after: 3 days Fixes: 967a49a21a27 ("Update tzcode to 2025b") Fixes: a5f14e4f9069 ("tzcode: Use -00 only for invalid time zones") Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D52753 (cherry picked from commit df8bc705eb04aff2f718678fffb9d5d4f5d7c223) tzcode: Really fix issues when TZ is an absolute path This was accidentally left out of the previous commit. Fixes: df8bc705eb04 ("tzcode: Fix issues when TZ is an absolute path") (cherry picked from commit 202b59c35ead5bd2b71331169bdeb4845cb655c1) tzcode: Tweak open flags. Upstream uses a set of flags that reduces to O_RDONLY | O_CLOEXEC when you ignore flags that either don't exist in FreeBSD or have no effect. We were using O_RDONLY | O_BINARY, which reduces to O_RDONLY. Add O_CLOEXEC. Also replace O_RDONLY with the more accurate O_SEARCH when opening TZDIR. MFC after: 3 days Fixes: 967a49a21a27 ("Update tzcode to 2025b") (cherry picked from commit d28e4ce6cb61916b4f6bedcf4205a4da1ae121e1) --- contrib/tzcode/localtime.c | 13 ++-- lib/libc/gen/sysconf.c | 2 +- lib/libc/tests/stdtime/Makefile | 1 + lib/libc/tests/stdtime/detect_tz_changes_test.c | 90 ++++++++++++++++++++++--- 4 files changed, 92 insertions(+), 14 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index c98134f7be7c..1668475ea646 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -672,26 +672,29 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, if ((tzloadflags & TZLOAD_FROMENV) && strcmp(name, TZDEFAULT) == 0) tzloadflags &= ~TZLOAD_FROMENV; relname = name; - if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) + if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) { relname += strlen(TZDIR) + 1; - dd = open(TZDIR, O_DIRECTORY | O_RDONLY); + while (*relname == '/') + relname++; + } + dd = open(TZDIR, O_DIRECTORY | O_SEARCH | O_CLOEXEC); if ((tzloadflags & TZLOAD_FROMENV) && issetugid()) { if (dd < 0) return errno; - if (fstatat(dd, name, &sb, AT_RESOLVE_BENEATH) < 0) { + if (fstatat(dd, relname, &sb, AT_RESOLVE_BENEATH) < 0) { fid = -1; } else if (!S_ISREG(sb.st_mode)) { fid = -1; errno = EINVAL; } else { - fid = openat(dd, relname, O_RDONLY | O_BINARY, AT_RESOLVE_BENEATH); + fid = openat(dd, relname, O_RDONLY | O_CLOEXEC | O_RESOLVE_BENEATH); } } else { if (dd < 0) { relname = name; dd = AT_FDCWD; } - fid = openat(dd, relname, O_RDONLY | O_BINARY, 0); + fid = openat(dd, relname, O_RDONLY | O_CLOEXEC); } if (dd != AT_FDCWD && dd >= 0) { serrno = errno; diff --git a/lib/libc/gen/sysconf.c b/lib/libc/gen/sysconf.c index fd9bc658ae40..314da5966460 100644 --- a/lib/libc/gen/sysconf.c +++ b/lib/libc/gen/sysconf.c @@ -52,7 +52,7 @@ __SCCSID("@(#)sysconf.c 8.2 (Berkeley) 3/20/94"); #include "un-namespace.h" #include "../stdlib/atexit.h" -#include "tzdir.h" /* from ../../../contrib/tzcode/stdtime */ +#include "tzdir.h" /* from ../../../contrib/tzcode */ #include "libc_private.h" #define _PATH_ZONEINFO TZDIR /* from tzfile.h */ diff --git a/lib/libc/tests/stdtime/Makefile b/lib/libc/tests/stdtime/Makefile index 6b9068e1641b..590dea22da31 100644 --- a/lib/libc/tests/stdtime/Makefile +++ b/lib/libc/tests/stdtime/Makefile @@ -3,6 +3,7 @@ ATF_TESTS_C+= strptime_test ATF_TESTS_C+= detect_tz_changes_test +CFLAGS.detect_tz_changes_test+= -I${SRCTOP}/contrib/tzcode .if ${MK_DETECT_TZ_CHANGES} != "no" CFLAGS.detect_tz_changes_test+= -DDETECT_TZ_CHANGES .endif diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index 6648d8498cc5..fe6b04357331 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -20,6 +20,8 @@ #include #include +#include "tzdir.h" + #include static const struct tzcase { @@ -62,9 +64,9 @@ debug(const char *fmt, ...) static void change_tz(const char *tzn) { - static const char *zfn = "/usr/share/zoneinfo"; - static const char *tfn = "root/etc/.localtime"; - static const char *dfn = "root/etc/localtime"; + static const char *zfn = TZDIR; + static const char *tfn = "root" TZDEFAULT ".tmp"; + static const char *dfn = "root" TZDEFAULT; ssize_t clen; int zfd, sfd, dfd; @@ -96,6 +98,50 @@ test_tz(const char *expect) ATF_CHECK_STREQ(expect, buf); } +ATF_TC(tz_default); +ATF_TC_HEAD(tz_default, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test default zone"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(tz_default, tc) +{ + /* prepare chroot with no /etc/localtime */ + ATF_REQUIRE_EQ(0, mkdir("root", 0755)); + ATF_REQUIRE_EQ(0, mkdir("root/etc", 0755)); + /* enter chroot */ + ATF_REQUIRE_EQ(0, chroot("root")); + ATF_REQUIRE_EQ(0, chdir("/")); + /* check timezone */ + unsetenv("TZ"); + test_tz("+0000 (UTC)"); +} + +ATF_TC(tz_invalid_file); +ATF_TC_HEAD(tz_invalid_file, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test invalid zone file"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(tz_invalid_file, tc) +{ + static const char *dfn = "root/etc/localtime"; + int fd; + + /* prepare chroot with bogus /etc/localtime */ + ATF_REQUIRE_EQ(0, mkdir("root", 0755)); + ATF_REQUIRE_EQ(0, mkdir("root/etc", 0755)); + ATF_REQUIRE((fd = open(dfn, O_RDWR | O_CREAT, 0644)) >= 0); + ATF_REQUIRE_EQ(8, write(fd, "invalid\n", 8)); + ATF_REQUIRE_EQ(0, close(fd)); + /* enter chroot */ + ATF_REQUIRE_EQ(0, chroot("root")); + ATF_REQUIRE_EQ(0, chdir("/")); + /* check timezone */ + unsetenv("TZ"); + test_tz("+0000 (-00)"); +} + ATF_TC(thin_jail); ATF_TC_HEAD(thin_jail, tc) { @@ -327,10 +373,38 @@ ATF_TC_HEAD(tz_env, tc) } ATF_TC_BODY(tz_env, tc) { - const struct tzcase *tzcase; + char path[MAXPATHLEN]; + const struct tzcase *tzcase = tzcases; + int len; + /* relative path */ for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) test_tz_env(tzcase->tzfn, tzcase->expect); + /* absolute path */ + for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) { + len = snprintf(path, sizeof(path), "%s/%s", TZDIR, tzcase->tzfn); + ATF_REQUIRE(len > 0 && (size_t)len < sizeof(path)); + test_tz_env(path, tzcase->expect); + } + /* absolute path with additional slashes */ + for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) { + len = snprintf(path, sizeof(path), "%s/////%s", TZDIR, tzcase->tzfn); + ATF_REQUIRE(len > 0 && (size_t)len < sizeof(path)); + test_tz_env(path, tzcase->expect); + } +} + + +ATF_TC(tz_invalid_env); +ATF_TC_HEAD(tz_invalid_env, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test invalid TZ value"); + atf_tc_set_md_var(tc, "require.user", "root"); +} +ATF_TC_BODY(tz_invalid_env, tc) +{ + test_tz_env("invalid", "+0000 (-00)"); + test_tz_env(":invalid", "+0000 (-00)"); } ATF_TC(setugid); @@ -367,23 +441,23 @@ ATF_TC_HEAD(tz_env_setugid, tc) } ATF_TC_BODY(tz_env_setugid, tc) { - const struct tzcase *tzcase = tzcases; - ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY)); ATF_REQUIRE(issetugid()); - for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++) - test_tz_env(tzcase->tzfn, tzcase->expect); + ATF_TC_BODY_NAME(tz_env)(tc); } ATF_TP_ADD_TCS(tp) { debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") && isatty(STDERR_FILENO); + ATF_TP_ADD_TC(tp, tz_default); + ATF_TP_ADD_TC(tp, tz_invalid_file); ATF_TP_ADD_TC(tp, thin_jail); #ifdef DETECT_TZ_CHANGES ATF_TP_ADD_TC(tp, detect_tz_changes); #endif /* DETECT_TZ_CHANGES */ ATF_TP_ADD_TC(tp, tz_env); + ATF_TP_ADD_TC(tp, tz_invalid_env); ATF_TP_ADD_TC(tp, setugid); ATF_TP_ADD_TC(tp, tz_env_setugid); return (atf_no_error()); From nobody Thu Apr 2 11:20:49 2026 X-Original-To: dev-commits-src-branches@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 4fmfYG262Tz6YH2N for ; Thu, 02 Apr 2026 11:20:50 +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 4fmfYF4NhCz3JXY for ; Thu, 02 Apr 2026 11:20:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128849; 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=nmFwruBVNQHjAI5k9EVGXjuK1TosN97qVSnOFKrFy9k=; b=OzTDOBvDveG/w8YrYBKsNf3YCKghp93lgHxP0rvzvgl0pLxp/iI5mklTLKoMI73KSTZh4V 0hzUOA6F6U+FzTur6tsykEImVtBHBCUYe2Mvut+LN7Zu6j59gQ/ltznJSEKtto9zcmOu6X YC8y6bnJVs9/uQvhlO46JAnXlTd3yO+yngUbM981LtW6+606VWXWsplCVbXQRuKzefbPgc FilxOl5kn9mewotamaqwp6zOJl9V3UJKA74XOZbRPC9SpkUy2k/tmtXWIowLsP9nsU03Q2 ZfP/lPUfS1sA0XsXBQ2TtmkiCmBa9gYtNlbDPQ3cL5PyiN0l30NIPM/hCrsNJw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128849; a=rsa-sha256; cv=none; b=iGC6D/9y6o5ujTFRNxNDJ9EoIwAfgtfh6sUwzOnxG+vSbJMrX6SAUWFQo3meATXG7IiXkx 2pFDQmBzX8a6amZCBvtPRjVn5c1PLQpwQGqpEfwqE9foYDZuDW4IGFoalVOzJv81ka+krA Sd+rVOEDQ4SWlgEeGQw66i/4XNIlBKeHqhfXa6oD41flrN8IjIqoWtWWATpHnP724U5kw0 x2at9RN6fscOIhFT+CPuH+MS9fMGDBW+zRRpneGCG1qjRj2KWT4xLhYxLThi9Nth+ywgBx 7NjAd0Qs2VrAKQTzGFzjNJxaw/qSoFZnJ2BNrjYzFO3TYaviJkrjCSnp2VmFJA== 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=1775128849; 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=nmFwruBVNQHjAI5k9EVGXjuK1TosN97qVSnOFKrFy9k=; b=Ou9npsfYIW9fVhDImix38gItYmMT/j7kaF1yvrE9KRIls68YnkUix29pBkyr7ooVUdHD2b 6F5Wir7wK8Gph2e0nzVD1gW5PWokbn34lEFfPafD/z7PmCb2OeY+9ilNhGGWXgcOlNQR7W q88rLwAMc7roZInrmyR6IEYar+369H7dYVSl3NhQwftptU3xHZdtAawoERJpmQOv/gI+lm PwVTZ+UX94kjqfxlb75tsDyjQWCEAHrna6GwMfSb2u/7ivX3hqWZFhSTSuWYLOl1vbo9T9 JOARKo8JyUQZ94eUM4bbiKDoYm3fdKtoe0vI+BsAsS0p7zUw8fViswM2A0sK0g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYF3wVXz10Jh for ; Thu, 02 Apr 2026 11:20:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f0e2 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 08d1a7ac7002 - stable/14 - tzcode: Drop libc namespace List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 08d1a7ac7002149c51e3e6ea5cc4f4c7d4935b6b Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:49 +0000 Message-Id: <69ce5111.1f0e2.49fde955@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=08d1a7ac7002149c51e3e6ea5cc4f4c7d4935b6b commit 08d1a7ac7002149c51e3e6ea5cc4f4c7d4935b6b Author: Dag-Erling Smørgrav AuthorDate: 2025-09-27 17:06:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Drop libc namespace This hasn't been needed in years and is a maintenance headache. MFC after: 1 week Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D52694 (cherry picked from commit d58339f398748b50ff84421e9d81f8f6d94cb949) --- contrib/tzcode/asctime.c | 2 -- contrib/tzcode/difftime.c | 2 -- contrib/tzcode/localtime.c | 52 ++++++++++++++++++++++------------------------ 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/contrib/tzcode/asctime.c b/contrib/tzcode/asctime.c index 1977a2272896..491d23bf73ac 100644 --- a/contrib/tzcode/asctime.c +++ b/contrib/tzcode/asctime.c @@ -14,9 +14,7 @@ /*LINTLIBRARY*/ -#include "namespace.h" #include "private.h" -#include "un-namespace.h" #include enum { STD_ASCTIME_BUF_SIZE = 26 }; diff --git a/contrib/tzcode/difftime.c b/contrib/tzcode/difftime.c index 43af402cdc12..ff78f03c5705 100644 --- a/contrib/tzcode/difftime.c +++ b/contrib/tzcode/difftime.c @@ -7,9 +7,7 @@ /*LINTLIBRARY*/ -#include "namespace.h" #include "private.h" /* for time_t and TYPE_SIGNED */ -#include "un-namespace.h" /* Return -X as a double. Using this avoids casting to 'double'. */ static double diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index a8f97e31a4bb..c98134f7be7c 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -14,7 +14,6 @@ #define LOCALTIME_IMPLEMENTATION #ifdef __FreeBSD__ -#include "namespace.h" #include #endif /* __FreeBSD__ */ #ifdef DETECT_TZ_CHANGES @@ -31,7 +30,6 @@ int __tz_change_interval = DETECT_TZ_CHANGES_INTERVAL; #include #ifdef __FreeBSD__ #include "libc_private.h" -#include "un-namespace.h" #endif /* __FreeBSD__ */ #if HAVE_SYS_STAT_H @@ -45,8 +43,8 @@ int __tz_change_interval = DETECT_TZ_CHANGES_INTERVAL; #if defined THREAD_SAFE && THREAD_SAFE # include #ifdef __FreeBSD__ -# define pthread_mutex_lock(l) (__isthreaded ? _pthread_mutex_lock(l) : 0) -# define pthread_mutex_unlock(l) (__isthreaded ? _pthread_mutex_unlock(l) : 0) +# define pthread_mutex_lock(l) (__isthreaded ? pthread_mutex_lock(l) : 0) +# define pthread_mutex_unlock(l) (__isthreaded ? pthread_mutex_unlock(l) : 0) #endif /* __FreeBSD__ */ static pthread_mutex_t locallock = PTHREAD_MUTEX_INITIALIZER; static int lock(void) { return pthread_mutex_lock(&locallock); } @@ -525,7 +523,7 @@ tzfile_changed(const char *name, int fd) static struct stat old_sb; struct stat sb; - if (_fstat(fd, &sb) != 0) + if (fstat(fd, &sb) != 0) return -1; if (strcmp(name, old_name) != 0) { @@ -668,7 +666,7 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, } #endif } - fid = _open(name, (O_RDONLY | O_BINARY | O_CLOEXEC | O_CLOFORK + fid = open(name, (O_RDONLY | O_BINARY | O_CLOEXEC | O_CLOFORK | O_IGNORE_CTTY | O_NOCTTY)); #else /* __FreeBSD__ */ if ((tzloadflags & TZLOAD_FROMENV) && strcmp(name, TZDEFAULT) == 0) @@ -676,7 +674,7 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, relname = name; if (strncmp(relname, TZDIR "/", strlen(TZDIR) + 1) == 0) relname += strlen(TZDIR) + 1; - dd = _open(TZDIR, O_DIRECTORY | O_RDONLY); + dd = open(TZDIR, O_DIRECTORY | O_RDONLY); if ((tzloadflags & TZLOAD_FROMENV) && issetugid()) { if (dd < 0) return errno; @@ -686,18 +684,18 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, fid = -1; errno = EINVAL; } else { - fid = _openat(dd, relname, O_RDONLY | O_BINARY, AT_RESOLVE_BENEATH); + fid = openat(dd, relname, O_RDONLY | O_BINARY, AT_RESOLVE_BENEATH); } } else { if (dd < 0) { relname = name; dd = AT_FDCWD; } - fid = _openat(dd, relname, O_RDONLY | O_BINARY, 0); + fid = openat(dd, relname, O_RDONLY | O_BINARY, 0); } if (dd != AT_FDCWD && dd >= 0) { serrno = errno; - _close(dd); + close(dd); errno = serrno; } #endif /* __FreeBSD__ */ @@ -714,23 +712,23 @@ tzloadbody(char const *name, struct state *sp, char tzloadflags, switch (tzfile_changed(name, fid)) { case -1: serrno = errno; - _close(fid); + close(fid); return serrno; case 0: - _close(fid); + close(fid); return 0; case 1: break; } } #endif /* DETECT_TZ_CHANGES */ - nread = _read(fid, up->buf, sizeof up->buf); + nread = read(fid, up->buf, sizeof up->buf); if (nread < tzheadsize) { int err = nread < 0 ? errno : EINVAL; - _close(fid); + close(fid); return err; } - if (_close(fid) < 0) + if (close(fid) < 0) return errno; for (stored = 4; stored <= 8; stored *= 2) { char version = up->tzhead.tzh_version[0]; @@ -1890,7 +1888,7 @@ localtime_tzset(time_t const *timep, struct tm *tmp, bool setname) static void localtime_key_init(void) { - localtime_key_error = _pthread_key_create(&localtime_key, free); + localtime_key_error = pthread_key_create(&localtime_key, free); } #endif /* __FreeBSD__ */ struct tm * @@ -1903,16 +1901,16 @@ localtime(const time_t *timep) struct tm *p_tm = &tm; if (__isthreaded != 0) { - _pthread_once(&localtime_once, localtime_key_init); + pthread_once(&localtime_once, localtime_key_init); if (localtime_key_error != 0) { errno = localtime_key_error; return (NULL); } - if ((p_tm = _pthread_getspecific(localtime_key)) == NULL) { + if ((p_tm = pthread_getspecific(localtime_key)) == NULL) { if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { return (NULL); } - if (_pthread_setspecific(localtime_key, p_tm) != 0) { + if (pthread_setspecific(localtime_key, p_tm) != 0) { free(p_tm); return (NULL); } @@ -1969,7 +1967,7 @@ gmtime_r(time_t const *restrict timep, struct tm *restrict tmp) static void gmtime_key_init(void) { - gmtime_key_error = _pthread_key_create(&gmtime_key, free); + gmtime_key_error = pthread_key_create(&gmtime_key, free); } #endif /* __FreeBSD__ */ struct tm * @@ -1982,16 +1980,16 @@ gmtime(const time_t *timep) struct tm *p_tm = &tm; if (__isthreaded != 0) { - _pthread_once(&gmtime_once, gmtime_key_init); + pthread_once(&gmtime_once, gmtime_key_init); if (gmtime_key_error != 0) { errno = gmtime_key_error; return (NULL); } - if ((p_tm = _pthread_getspecific(gmtime_key)) == NULL) { + if ((p_tm = pthread_getspecific(gmtime_key)) == NULL) { if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { return (NULL); } - if (_pthread_setspecific(gmtime_key, p_tm) != 0) { + if (pthread_setspecific(gmtime_key, p_tm) != 0) { free(p_tm); return (NULL); } @@ -2017,7 +2015,7 @@ offtime_r(time_t const *restrict timep, long offset, struct tm *restrict tmp) static void offtime_key_init(void) { - offtime_key_error = _pthread_key_create(&offtime_key, free); + offtime_key_error = pthread_key_create(&offtime_key, free); } #endif /* __FreeBSD__ */ struct tm * @@ -2030,16 +2028,16 @@ offtime(time_t const *timep, long offset) struct tm *p_tm = &tm; if (__isthreaded != 0) { - _pthread_once(&offtime_once, offtime_key_init); + pthread_once(&offtime_once, offtime_key_init); if (offtime_key_error != 0) { errno = offtime_key_error; return (NULL); } - if ((p_tm = _pthread_getspecific(offtime_key)) == NULL) { + if ((p_tm = pthread_getspecific(offtime_key)) == NULL) { if ((p_tm = malloc(sizeof(*p_tm))) == NULL) { return (NULL); } - if (_pthread_setspecific(offtime_key, p_tm) != 0) { + if (pthread_setspecific(offtime_key, p_tm) != 0) { free(p_tm); return (NULL); } From nobody Thu Apr 2 11:20:51 2026 X-Original-To: dev-commits-src-branches@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 4fmfYJ1kdgz6YH6y for ; Thu, 02 Apr 2026 11:20:52 +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 4fmfYH5cGsz3JYG for ; Thu, 02 Apr 2026 11:20:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128851; 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=Ty1DXVyI5EFK0iju1/7robdK+1xmrh+CXlfxfuBVD7s=; b=d9un5qwlqLDn7R1VVxs1pj897XEKphSZYfcW+Qk7hmizSGPnL8DHBKBhbNWXXUJdGkqdCY QEVkYCW6Id3E74vw/b16ldhAmUXs1sM5G29V4+OLTwMtzImlpA0QPQ5gs48iN+FWEPiYBp sQ1aQo2qmc/LMmncUuLk5B6nJmrWVPztnDNFkfuzNxe8K93UgbCkrol8fj0S6uztD49Y2L UDayWiFJeWzFwHuVgb7o9aRGr/JLN7vaM9+E2IzxIVbRJxUAID0rMBPBnkfsapbItCJJZ6 kYaUqmJpjy8+poe0w/8XlWjfJAccm/9ssmpr6PItUz+rraHCwUcyPSz1cj5ygw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128851; a=rsa-sha256; cv=none; b=ilEKU5FiFzAISRKagMdMA5Wz/XcbTtbI9x619Y1gWowsVOOIkeQBkrCe36bdXN5P0FybrX xHuh/kpPdBKEZVdkfeaBZheLEENWvJO0W+0VItw9ooOiXxYMwWnwzOs4JVUBoyFw3yyYBN zwfxd4A2YAiI7WAp+ObTDtPozs9kh78iGdRflZPA2oqPr7pNmenL46OQmK2HFpo2zHm8FW S6jdwKpruf8L2ZlufsJCHqr+ukXQCuuFlPMADDIr/gfRGDu3GvvBQ4U1lYjfo1NiSqHdzj GAewVqvj7+w4YkZMN4rqNGRQj8YJxmRi7IBIL0uoKDe0V1sW5Ihe2G8+SsZRvA== 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=1775128851; 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=Ty1DXVyI5EFK0iju1/7robdK+1xmrh+CXlfxfuBVD7s=; b=hiw+gUasnySo25qI8D2y/+/9OgTd0Vut3QWA1aXzjXkgOqv827V9VDNJgmn77+63JtWJ5e OY9E01xezsAXEE16wqiwXneRqlEvn4RLVQfDY9x2stSIgJb/u8w491objFZVQs8VxwGsCO eNjZTeYwJkLLx3EQg4PM+pZ01EdXl3a9VnN9lNCr311+uvdbgZmdNuC/GE79l6+6d6iKrw lxzjoREhiRs5oYCCtU0+/RQfEevHh9nckcts06wGCEtpFSaHbISCV/pvqNscY7OTKEocH3 QL/1ffdV2xT8T2Ynqlk5/9AgfL6BO90+UMyBwge0A5YpyKkNOxkKxxBxUW9kaA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYH58m9z10KR for ; Thu, 02 Apr 2026 11:20:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f0e6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 58d09e173759 - stable/14 - tzcode: Test escape from TZDIR List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 58d09e1737595b28bb3634989c94406d1d793e13 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:51 +0000 Message-Id: <69ce5113.1f0e6.6b377409@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=58d09e1737595b28bb3634989c94406d1d793e13 commit 58d09e1737595b28bb3634989c94406d1d793e13 Author: Dag-Erling Smørgrav AuthorDate: 2025-09-29 12:36:24 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Test escape from TZDIR Test a value of TZ that temporarily escapes from TZDIR (which is not permitted when setugid) then reenters it. MFC after: 3 days (cherry picked from commit cf76bfbb235116702ea1689bf984f200a72d2790) --- lib/libc/tests/stdtime/detect_tz_changes_test.c | 39 ++++++++++++++++--------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c index fe6b04357331..06c31c9fbc3d 100644 --- a/lib/libc/tests/stdtime/detect_tz_changes_test.c +++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c @@ -24,10 +24,12 @@ #include -static const struct tzcase { +struct tzcase { const char *tzfn; const char *expect; -} tzcases[] = { +}; + +static const struct tzcase tzcases[] = { /* * A handful of time zones and the expected result of * strftime("%z (%Z)", tm) when that time zone is active @@ -43,7 +45,8 @@ static const struct tzcase { { "UTC", "+0000 (UTC)" }, { 0 }, }; - +static const struct tzcase utc = { "UTC", "+0000 (UTC)" }; +static const struct tzcase invalid = { "invalid", "+0000 (-00)" }; static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */ static bool debugging; @@ -139,7 +142,7 @@ ATF_TC_BODY(tz_invalid_file, tc) ATF_REQUIRE_EQ(0, chdir("/")); /* check timezone */ unsetenv("TZ"); - test_tz("+0000 (-00)"); + test_tz(invalid.expect); } ATF_TC(thin_jail); @@ -366,12 +369,8 @@ test_tz_env(const char *tzval, const char *expect) test_tz(expect); } -ATF_TC(tz_env); -ATF_TC_HEAD(tz_env, tc) -{ - atf_tc_set_md_var(tc, "descr", "Test TZ environment variable"); -} -ATF_TC_BODY(tz_env, tc) +static void +tz_env_common(void) { char path[MAXPATHLEN]; const struct tzcase *tzcase = tzcases; @@ -394,6 +393,18 @@ ATF_TC_BODY(tz_env, tc) } } +ATF_TC(tz_env); +ATF_TC_HEAD(tz_env, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test TZ environment variable"); +} +ATF_TC_BODY(tz_env, tc) +{ + tz_env_common(); + /* escape from TZDIR is permitted when not setugid */ + test_tz_env("../zoneinfo/UTC", utc.expect); +} + ATF_TC(tz_invalid_env); ATF_TC_HEAD(tz_invalid_env, tc) @@ -403,8 +414,8 @@ ATF_TC_HEAD(tz_invalid_env, tc) } ATF_TC_BODY(tz_invalid_env, tc) { - test_tz_env("invalid", "+0000 (-00)"); - test_tz_env(":invalid", "+0000 (-00)"); + test_tz_env("invalid", invalid.expect); + test_tz_env(":invalid", invalid.expect); } ATF_TC(setugid); @@ -443,7 +454,9 @@ ATF_TC_BODY(tz_env_setugid, tc) { ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY)); ATF_REQUIRE(issetugid()); - ATF_TC_BODY_NAME(tz_env)(tc); + tz_env_common(); + /* escape from TZDIR is not permitted when setugid */ + test_tz_env("../zoneinfo/UTC", invalid.expect); } ATF_TP_ADD_TCS(tp) From nobody Thu Apr 2 11:20:52 2026 X-Original-To: dev-commits-src-branches@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 4fmfYK2rjZz6YH73 for ; Thu, 02 Apr 2026 11:20:53 +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 4fmfYJ6VxKz3JSk for ; Thu, 02 Apr 2026 11:20:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128852; 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=q1SLMKRKH9Y9338WPq/gJNQi+EbSxQtkKdPyqm/+kBY=; b=AF9o8n20NxQIy+x4L/phAVhaYcpoedIB5QyMKqwjaJ4kMhelRZ4Q1dgMSuUy7Rnx0zBD+O X5dQyfOrq+wK4FSkCOLjCqOeorRVWSKafpgFxaHcMyFelEkl3QQkt3SPcHvrBMeqos2hWh kQ77McUIwHkOgzDG8C1U5HIDMXLlkPZt5jlyPZcCO/nlTvSq8ym2NX1Ey1o4oXmruCvSES h2nOcCzpiWxexVdnjhntGUipkw3ZKpTE7GVFo5JHpe922pSWcmkDKelYXZ+FjsFXg+Siki dJ5l3W/mVPLPwik+5fnUueJoUbTSBzVKyF8gBppnXH1IxARccttD/7Brpl3U3w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128852; a=rsa-sha256; cv=none; b=R/66h4mQI2WHCKQ2/9YgI2HfixSWSNl/ECYPfxFzNzwucnktaUtv1NpIviy21jrlevwgx6 Ch2A99d2umkABCZp+dWljIfQLPLG219faXNSh5dknhou4VrR9zt6V7cVbgQAY7OCY3bzOb K26qwkfon5X35HmpUzOGdrU6aNBMsWKPsXZk4o8pLKErFW6r+RQFa1iAh16GT6HHorXI1E SjHtEbXOyghTH+YQtWUBRPCJTQA+ybSBKnFYCF7HbJpULdaUEY0sqe8kKPnvqRu8t42uWQ BFy/y7OIxWF0cuDUtD+T2uvrWmm4KgM2w0HyWW/hFjUG8FRTv10/iTXJCwqH7w== 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=1775128852; 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=q1SLMKRKH9Y9338WPq/gJNQi+EbSxQtkKdPyqm/+kBY=; b=ec8wcxu0gFp1uRRyr5WSHD+wB+WzfEnn0fJkqRRBew1Qa4okWqsamGmaYHIcuaJwZwN29G NxuiTGxkC7ofwYpOEWQfxpWMjrWDJn9Z7ZTGXMDcoLlX6BipH3nccUpm3IMEKpwPl2/m/2 P+3Ead9b3n88uax87Lp/OK27jLX8qovaZ3JAKYsUT/PPKsEM4YRNaaoAcqQL4kPpLOhpYf 1JBfMHfwU2wWFprdwBJq9na8HVvKH4f9HepWGUegtM9GbPvILOhZQJmx0xLYlzWTdH21Vh w03Z5ZUgeu7siUhPES5CoPnjz+7VGJ97HLx8phk2h89GGYk1KvbHZP4RRBb75g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYJ5pjfz100y for ; Thu, 02 Apr 2026 11:20:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f700 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: ea27af6d3db0 - stable/14 - tzcode: Fix early tz change detection List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ea27af6d3db0bea7db6b344f4ef2848ba09b5091 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:52 +0000 Message-Id: <69ce5114.1f700.158338ea@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ea27af6d3db0bea7db6b344f4ef2848ba09b5091 commit ea27af6d3db0bea7db6b344f4ef2848ba09b5091 Author: Dag-Erling Smørgrav AuthorDate: 2025-11-02 13:51:42 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Fix early tz change detection Assume tzdata is not fresh if last_checked is zero, as comparing the current time to last_checked less than __tz_change_interval after boot may produce a false negative. While here, invert the return value from tzdata_is_fresh() to better match its new name (it was previously called recheck_tzdata(), so zero for fresh and non-zero for stale made sense, but it doesn't now). PR: 269207 MFC after: 3 days Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D53502 (cherry picked from commit a38c2f99f81c2fc35c8ca209931c1c46e3e81023) --- contrib/tzcode/localtime.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/tzcode/localtime.c b/contrib/tzcode/localtime.c index 1668475ea646..58099d234e2b 100644 --- a/contrib/tzcode/localtime.c +++ b/contrib/tzcode/localtime.c @@ -1583,15 +1583,15 @@ tzdata_is_fresh(void) struct timespec now; if (clock_gettime(CLOCK_MONOTONIC, &now) < 0) - return 0; + return 1; - if ((now.tv_sec - last_checked >= __tz_change_interval) || - (last_checked > now.tv_sec)) { + if (last_checked == 0 || last_checked > now.tv_sec || + now.tv_sec - last_checked >= __tz_change_interval) { last_checked = now.tv_sec; - return 1; + return 0; } - return 0; + return 1; } #endif /* DETECT_TZ_CHANGES */ @@ -1642,7 +1642,7 @@ tzset_unlocked_name(char const *name) ? lcl_is_set < 0 : 0 < lcl_is_set && strcmp(lcl_TZname, name) == 0) #ifdef DETECT_TZ_CHANGES - if (tzdata_is_fresh() == 0) + if (tzdata_is_fresh()) #endif /* DETECT_TZ_CHANGES */ return; # ifdef ALL_STATE From nobody Thu Apr 2 11:20:53 2026 X-Original-To: dev-commits-src-branches@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 4fmfYL3sV8z6YH99 for ; Thu, 02 Apr 2026 11:20:54 +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 4fmfYL0G4gz3JVx for ; Thu, 02 Apr 2026 11:20:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775128854; 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=1TAG2aOfZSGLa8CwZUhNbcZabq1n1J1xMTW3jhw7vIs=; b=tvrn1z21zEUAfpsLy0afWhOQirpAZQns5gOwAWAreSQNa1zSSFSlrM3Ip2lXqYedOw8+dv rTdWxcuIRSnxWM3r9VTL8HHPNm7SSTrIGnIvCp+TishK3YJvigvxfoSq1dAYq0J4gDFR/n 8uplZBtuXA+upWjaGkDy5HXeFGsORcigkcxdJymBKgaTCmN6iLs3vAuIX6BYrWv1MBnTDF 8UvxHpGSnjAfTSppqDrx9Btdk1PsFcevKQDi6a+CkDlfBwljbE3itYa8LG1jDG3CqdD9YX CNKvSfBHcoALyVXhz1lc7XSLrOt6fK1Ws7pQAq2rgJSsSqWtSkicog/an3rKCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775128854; a=rsa-sha256; cv=none; b=T/qD99wXw//lYC1VsmsdUxyAA2yOpb3wFTWUb01PPQRaTCZRMFYMg1y6Btv6Q05ABbKeX9 JySOBwaplDji8cu11NLk1XPNI2D4ScpOBa40iSNLofYmHrmEX6A/S+bYpDsx0JcKnlWQiz biBAsGhkqXsjEq3le91iLee0e3BVgCGRM6pYuxb7LV2AZ1GXZZcbTh/limyLVm+CS+vg5S vMv2jDmbra3CL6pVe6lTZ5uchtaSrWUJIxcdwo0TmxW16itrNStt0hwjdca/aDKsfql7et aOq24NreeUMfLsbGomj0EAdldONxAuCC5O+GmIIZGvPzC8yqPgCN+t5DgcFMLw== 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=1775128854; 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=1TAG2aOfZSGLa8CwZUhNbcZabq1n1J1xMTW3jhw7vIs=; b=FtFB5ll2A977KgZr8GS9E+0D/YDRgsavzBPBfMT+46bzmepMUzz9IgGSpKsWr0wvO713Dd bcbvt8x5guy8ePfAIboAQKvOvJIXP5lVQmuxGcbw0lpmScgcR0VBBivA9NRPzmCuSnrfq/ WHlsHDG4d8vMnaKOTLWGvtF+4AaUEoHcnqziOGNkysC9vvzP6xlANxZdM80StBl0N/vZtk h43wHaf8FouPPcmwQWjNfM18ROEHU3EQYImxwJ400WurBuc5BmvhH3xsUBDuzVo1ETp7Wo LXjJTifbOG/kyIg1hCgaZkwgCP9o/HGysW5BT619pl5ckD7uwk9lq179gSlgKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmfYK6v8hz10Wg for ; Thu, 02 Apr 2026 11:20:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1c47a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 11:20:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 1a036312c3bb - stable/14 - tzcode: Update to 2026a List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1a036312c3bb79d52f058b0534c97c8217b159b0 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 11:20:53 +0000 Message-Id: <69ce5115.1c47a.3d19a5bf@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1a036312c3bb79d52f058b0534c97c8217b159b0 commit 1a036312c3bb79d52f058b0534c97c8217b159b0 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-11 03:47:31 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-02 11:16:01 +0000 tzcode: Update to 2026a Many thanks to Paul Eggert for adopting most of our adaptations as optional features upstream in the previous release (2025c). MFC after: 1 week Reviewed by: philip Differential Revision: https://reviews.freebsd.org/D55741 (cherry picked from commit ff2c98b30b57b9763e2a6575f729bab676e6c025) --- contrib/tzcode/CONTRIBUTING | 36 +- contrib/tzcode/Makefile | 236 ++++-- contrib/tzcode/NEWS | 232 ++++++ contrib/tzcode/README | 14 +- contrib/tzcode/SECURITY | 2 +- contrib/tzcode/calendars | 27 +- contrib/tzcode/date.1 | 4 +- contrib/tzcode/date.c | 7 +- contrib/tzcode/localtime.c | 1747 ++++++++++++++++++++++++----------------- contrib/tzcode/newctime.3 | 28 +- contrib/tzcode/newstrftime.3 | 2 +- contrib/tzcode/newtzset.3 | 47 +- contrib/tzcode/private.h | 372 +++++---- contrib/tzcode/strftime.c | 5 +- contrib/tzcode/theory.html | 383 ++++----- contrib/tzcode/time2posix.3 | 118 +-- contrib/tzcode/tz-art.html | 423 +++++----- contrib/tzcode/tz-how-to.html | 250 +++--- contrib/tzcode/tz-link.html | 398 +++++----- contrib/tzcode/tzconfig.h | 36 +- contrib/tzcode/tzfile.5 | 30 +- contrib/tzcode/tzfile.h | 30 +- contrib/tzcode/tzselect.ksh | 15 +- contrib/tzcode/version | 2 +- contrib/tzcode/workman.sh | 36 +- contrib/tzcode/zdump.c | 21 +- contrib/tzcode/zic.8 | 85 +- contrib/tzcode/zic.c | 783 ++++++++++-------- 28 files changed, 3146 insertions(+), 2223 deletions(-) diff --git a/contrib/tzcode/CONTRIBUTING b/contrib/tzcode/CONTRIBUTING index f6edbd3be7d3..c5fa803f7275 100644 --- a/contrib/tzcode/CONTRIBUTING +++ b/contrib/tzcode/CONTRIBUTING @@ -10,26 +10,27 @@ warning, the data entries do not cover all of civil time before 1970, and undoubtedly errors remain in the code and data. Feel free to fill gaps or fix mistakes, and please email improvements to for use in the future. In your email, please give -reliable sources that reviewers can check. +reliable sources that reviewers can check. The mailing list and its +archives are public, so please do not send confidential information. ## Contributing technical changes To email small changes, please run a POSIX shell command like -'diff -u old/europe new/europe >myfix.patch', and attach -'myfix.patch' to the email. +‘diff -u old/europe new/europe >myfix.patch’, and attach +‘myfix.patch’ to the email. For more-elaborate or possibly controversial changes, such as renaming, adding or removing zones, please read -"Theory and pragmatics of the tz code and data" +“Theory and pragmatics of the tz code and data” . It is also good to browse the mailing list archives for examples of patches that tend to work well. Changes should contain commentary citing reliable sources. -Citations should use "https:" URLs if available. +Citations should use ‘https:’ URLs if available. For changes that fix sensitive security-related bugs, please see the -distribution's 'SECURITY' file. +distribution’s SECURITY file. Please submit changes against either the latest release or the main branch of the development @@ -54,11 +55,11 @@ If you use Git the following workflow may be helpful: git checkout -b mybranch - * Sleuth by using 'git blame'. For example, when fixing data for - Africa/Sao_Tome, if the command 'git blame africa' outputs a line - '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone - Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should - provide some justification for the 'Zone Africa/Sao_Tome' line. + * Sleuth by using ‘git blame’. For example, when fixing data for + Africa/Sao_Tome, if the command ‘git blame africa’ outputs a line + ‘2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone + Africa/Sao_Tome 0:26:56 - LMT 1884’, commit 2951fa3b should + provide some justification for the ‘Zone Africa/Sao_Tome’ line. * Edit source files. Include commentary that justifies the changes by citing reliable sources. @@ -69,28 +70,31 @@ If you use Git the following workflow may be helpful: ./zdump -v America/Los_Angeles Although builds assume only basic POSIX, they use extra features - if available. 'make check' accesses validator.w3.org unless you - lack 'curl' or use 'make CURL=:'. If you have the latest GCC, - "make CFLAGS='$(GCC_DEBUG_FLAGS)'" does extra checking. + if available. ‘make check’ accesses validator.w3.org unless you + lack ‘curl’ or use ‘make CURL=:’. If you have the latest GCC, + ‘make CFLAGS='$(GCC_DEBUG_FLAGS)'’ does extra checking. * For each separable change, commit it in the new branch, e.g.: git add northamerica git commit - See recent 'git log' output for the commit-message style. + See recent ‘git log’ output for the commit-message style. * Create patch files 0001-..., 0002-..., ... git format-patch main + * Check that the patch files and your email setup contain only + information that you want to make public. + * After reviewing the patch files, send the patches to for others to review. git send-email main For an archived example of such an email, see - "[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913" + “[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913” . * Start anew by getting current with the main branch again diff --git a/contrib/tzcode/Makefile b/contrib/tzcode/Makefile index 2130582c2deb..1e0a5903534d 100644 --- a/contrib/tzcode/Makefile +++ b/contrib/tzcode/Makefile @@ -3,17 +3,30 @@ # 2009-05-17 by Arthur David Olson. # Request POSIX conformance; this must be the first non-comment line. .POSIX: +# By default, builds of code and data assume POSIX.1-2001 or later; +# this assumption can be relaxed by tailoring the build as described below. # On older platforms you may need to scrounge for POSIX conformance. # For example, on Solaris 10 (2005) with Sun Studio 12 aka Sun C 5.9 (2007), # use 'PATH=/usr/xpg4/bin:$PATH make CC=c99'. +# Reproducible builds of distribution tarballs also need a copy of the +# Git repository, and assume the behavior of the following programs +# (or later versions): +# Git 2.7.0 (2016) +# GNU Coreutils 6.3 (2006) +# GNU Tar 1.14 (2004) +# GnuPG 1.4 (2004) +# Although tzdb does not come with a software bill of materials, +# you should be able to construct one based on the above information, +# your platform, and the way you use this Makefile. # To affect how this Makefile works, you can run a shell script like this: # # #!/bin/sh -# make CC='gcc -std=gnu23' "$@" +# make CFLAGS='-O2 -DHAVE_GETTEXT=0' "$@" # -# This example script is appropriate for a circa 2024 GNU/Linux system -# where a non-default setting enables this package's optional use of C23. +# This example script is appropriate for a GNU/Linux system +# which needs more optimization than default, and which does not want +# gettext's internationalization of diagnostics. # # Alternatively, you can simply edit this Makefile to tailor the following # macro definitions. @@ -53,28 +66,6 @@ DATAFORM= main LOCALTIME= Factory -# The POSIXRULES macro controls interpretation of POSIX-like TZ -# settings like TZ='EET-2EEST' that lack DST transition rules. -# If POSIXRULES is '-', no template is installed; this is the default. -# Any other value for POSIXRULES is obsolete and should not be relied on, as: -# * It does not work correctly in popular implementations such as GNU/Linux. -# * It does not work even in tzcode, except for historical timestamps -# that precede the last explicit transition in the POSIXRULES file. -# Hence it typically does not work for current and future timestamps. -# If, despite the above, you want a template for handling these settings, -# you can change the line below (after finding the timezone you want in the -# one of the $(TDATA) source files, or adding it to a source file). -# Alternatively, if you discover you've got the wrong timezone, you can just -# 'zic -p -' to remove it, or 'zic -p rightzone' to change it. -# Use the command -# make zonenames -# to get a list of the values you can use for POSIXRULES. - -POSIXRULES= - - -# Also see TZDEFRULESTRING below, which takes effect only -# if POSIXRULES is '-' or if the template file cannot be accessed. - # Installation locations. # @@ -150,13 +141,14 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \ # below. If you want both sets of data available, with leap seconds counted # normally, use # REDO= right_posix -# below. POSIX mandates that leap seconds not be counted; for compatibility -# with it, use "posix_only" or "posix_right". Use POSIX time on systems with +# below. POSIX mandates that leap seconds not be counted, and a +# nonnegative TZ_CHANGE_INTERVAL also assumes this, so to be compatible with +# these, use "posix_only" or "posix_right". Use POSIX time on systems with # leap smearing; this can work better than unsmeared "right" time with # applications that are not leap second aware, and is closer to unsmeared # "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error). -REDO= posix_right +REDO= posix_only # Whether to put an "Expires" line in the leapseconds file. # Use EXPIRES_LINE=1 to put the line in, 0 to omit it. @@ -206,6 +198,12 @@ PACKRATLIST= UTF8_LOCALE= en_US.utf8 +# Extra flags for producing man page files like tzfile.5.txt. +# These flags are used only if groff (or mandoc) is present. +# Each option should begin with "-" and should lack shell metacharacters. +# Plausible options include -Tascii and -Tutf8. +MANFLAGS= -Tutf8 + # Non-default libraries needed to link. # On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0. LDLIBS= @@ -219,14 +217,19 @@ LDLIBS= # -DEPOCH_OFFSET=N if the 'time' function returns a value N greater # than what POSIX specifies, assuming local time is UT. # For example, N is 252460800 on AmigaOS. +# -DFREE_PRESERVES_ERRNO=[01] if the 'free' function munges or preserves errno +# (default is guessed) # -DHAVE_DECL_ASCTIME_R=0 if does not declare asctime_r # on POSIX platforms predating POSIX.1-2024 # -DHAVE_DECL_ENVIRON if declares 'environ' # -DHAVE_DECL_TIMEGM=0 if does not declare timegm # -DHAVE_DIRECT_H if mkdir needs (MS-Windows) +# -DHAVE_FCHMOD=0 if your system lacks the fchmod function # -DHAVE__GENERIC=0 if _Generic does not work* +# -DHAVE_GETEUID=0 if gete?[ug]id do not work # -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux), # -DHAVE_GETRANDOM=0 to avoid using getrandom +# -DHAVE_GETRESUID=0 if getres[ug]id do not work # -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris), # where LDLIBS also needs to contain -lintl on some hosts; # -DHAVE_GETTEXT=0 to avoid using gettext @@ -234,28 +237,46 @@ LDLIBS= # ctime_r and asctime_r incompatibly with POSIX.1-2017 and earlier # (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined). # -DHAVE_INTTYPES_H=0 if does not work*+ +# -DHAVE_ISSETUGID=1 if issetugid works, 0 otherwise (default is guessed) +# If 0, you may also use -DHAVE_SYS_AUXV_H=1 if works, +# 0 otherwise (default is guessed). # -DHAVE_LINK=0 if your system lacks a link function # -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function # -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz # localtime_rz can make zdump significantly faster, but is nonstandard. # -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure. +# -DHAVE_MEMPCPY=1 if your system has mempcpy, 0 if not (default is guessed) # -DHAVE_POSIX_DECLS=0 if your system's include files do not declare -# functions like 'link' or variables like 'tzname' required by POSIX +# variables like 'tzname' required by POSIX +# -DHAVE_PWD_H=0 if your system lacks pwd.h, grp.h and corresponding functions +# If 0, you may also need -Dgid_t=G -Duid_t=U +# to define gid_t and uid_t to be types G and U. # -DHAVE_SETENV=0 if your system lacks the setenv function +# -DHAVE_SETMODE=[01] if your system lacks or has the setmode and getmode +# functions (default is guessed) # -DHAVE_SNPRINTF=0 if your system lacks the snprintf function+ # -DHAVE_STDCKDINT_H=0 if neither nor substitutes like # __builtin_add_overflow work* # -DHAVE_STDINT_H=0 if does not work*+ # -DHAVE_STRFTIME_L if declares locale_t and strftime_l # -DHAVE_STRDUP=0 if your system lacks the strdup function +# -DHAVE_STRNLEN=0 if your system lacks the strnlen function+ # -DHAVE_STRTOLL=0 if your system lacks the strtoll function+ +# -DHAVE_STRUCT_STAT_ST_CTIM=0 if struct stat lacks a status-change member +# of type struct timespec, so code should use st_ctime instead; +# but if the status-change member name is st_ctimespec, +# use -Dst_ctim=st_ctimespec instead (default is guessed)+ +# -DHAVE_STRUCT_TIMESPEC=0 if your system lacks struct timespec+ # -DHAVE_SYMLINK=0 if your system lacks the symlink function # -DHAVE_SYS_STAT_H=0 if does not work* +# If 0, you may also need -Dmode_t=M to define mode_t to be type M. # -DHAVE_TZSET=0 if your system lacks a tzset function # -DHAVE_UNISTD_H=0 if does not work* # -DHAVE_UTMPX_H=0 if does not work* # -Dlocale_t=XXX if your system uses XXX instead of locale_t # -DMKTIME_MIGHT_OVERFLOW if mktime might fail due to time_t overflow +# -DOPENAT_TZDIR if tzset should use openat on TZDIR then a relative open. +# See localtime.c for details. # -DPORT_TO_C89 if tzcode should also run on mostly-C89 platforms+ # Typically it is better to use a later standard. For example, # with GCC 4.9.4 (2016), prefer '-std=gnu11' to '-DPORT_TO_C89'. @@ -274,15 +295,46 @@ LDLIBS= # -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires; # not needed by the main-program tz code, which is single-threaded. # Append other compiler flags as needed, e.g., -pthread on GNU/Linux. +# The following options can also be used: +# -DTHREAD_PREFER_SINGLE to prefer speed in single-threaded apps, +# at some cost in CPU time and energy in multi-threaded apps. +# The following options can also be used: +# -DHAVE___ISTHREADED=1 if there is an extern int __isthreaded +# variable, 0 otherwise (default is guessed) +# -DHAVE_SYS_SINGLE_THREADED_H=0 if works, +# 0 otherwise (default is guessed) +# -DTHREAD_RWLOCK to use read-write locks instead of mutexes. +# This can improve parallelism and thus save real time +# if many threads call tzcode functions simultaneously. +# It also costs CPU time and thus energy. +# -DTHREAD_TM_MULTI to have gmtime, localtime, and offtime +# return different struct tm * addresses in different threads. +# This supports nonportable programs that call +# gmtime/localtime/offtime when they should call +# gmtime_r/localtime_r/offtime_r to avoid races. +# Because the corresponding storage is freed on thread exit, +# this option is incompatible with POSIX.1-2024 and earlier. +# It also costs CPU time and memory. # -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t # This is intended for internal use only; it mangles external names. +# -DTZ_CHANGE_INTERVAL=N if functions depending on TZ should check +# no more often than every N seconds for TZif file changes. +# If N is negative (the default), no such checking is done. +# This option is intended for platforms that want localtime etc. +# to respond to changes to a file selected by TZ, including to +# TZDEFAULT (normally /etc/localtime) if TZ is unset. +# On these platforms, REDO should be "posix_only" or "posix_right". +# This option does not affect tzalloc-allocated objects. # -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz" # -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory; # the default is system-supplied, typically "/usr/lib/locale" +# -DTZ_RUNTIME_LEAPS=0 to disable runtime support for leap seconds. +# This conforms to POSIX, shrinks tzcode's attack surface, +# and is more efficient. However, it fails to support Internet +# RFC 9636's leap seconds. # -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified -# DST transitions for proleptic format TZ strings lacking them, -# in the usual case where POSIXRULES is '-'. If not specified, -# TZDEFRULESTRING defaults to US rules for future DST transitions. +# DST transitions for proleptic format TZ strings lacking them. +# If not specified, it defaults to US rules for future DST transitions. # This mishandles some past timestamps, as US DST rules have changed. # It also mishandles settings like TZ='EET-2EEST' for eastern Europe, # as Europe and US DST rules differ. @@ -314,7 +366,7 @@ LDLIBS= # Select instrumentation via "make GCC_INSTRUMENT='whatever'". GCC_INSTRUMENT = \ -fsanitize=undefined -fsanitize-address-use-after-scope \ - -fsanitize-undefined-trap-on-error -fstack-protector + -fsanitize-trap=all -fstack-protector # Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow. GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ $(GCC_INSTRUMENT) \ @@ -332,12 +384,13 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ -Wold-style-definition -Woverlength-strings -Wpointer-arith \ -Wshadow -Wshift-overflow=2 -Wstrict-overflow \ -Wstrict-prototypes -Wstringop-overflow=4 \ - -Wstringop-truncation -Wsuggest-attribute=cold \ + -Wsuggest-attribute=cold \ -Wsuggest-attribute=const -Wsuggest-attribute=format \ -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ -Wtrampolines -Wundef -Wunused-macros -Wuse-after-free=3 \ -Wvariadic-macros -Wvla -Wwrite-strings \ + -Wzero-as-null-pointer-constant \ -Wno-format-nonliteral -Wno-sign-compare -Wno-type-limits # # If your system has a "GMT offset" field in its "struct tm"s @@ -393,7 +446,9 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 \ # functions to be added to the time conversion library. # "offtime" is like "gmtime" except that it accepts a second (long) argument # that gives an offset to add to the time_t when converting it. -# I.e., "offtime" is like calling "localtime_rz" with a fixed-offset zone. +# "offtime_r" is to "offtime" what "gmtime_r" is to "gmtime". +# I.e., "offtime" and "offtime_r" are like calling "localtime_rz" +# with a fixed-offset zone. # "timelocal" is nearly equivalent to "mktime". # "timeoff" is like "timegm" except that it accepts a second (long) argument # that gives an offset to use when converting to a time_t. @@ -451,6 +506,11 @@ leaplist_URI = \ https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list # The file is generated by the IERS Earth Orientation Centre, in Paris. leaplist_TZ = Europe/Paris +# +# To fetch leap-seconds.list from NIST via a less-secure protocol +# and with less-volatile metadata, use these settings: +#leaplist_URI = ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list +#leaplist_TZ = America/Denver # The zic command and its arguments. @@ -510,13 +570,10 @@ SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~' SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3) SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]' -# These non-alphabetic, non-ASCII printable characters are Latin-1, -# and so are likely displayable even in editors like XEmacs 21 -# that have limited display capabilities. -UNUSUAL_OK_LATIN_1 = ¡¢£¤¥¦§¨©«¬®¯°±²³´¶·¸¹»¼½¾¿×÷ -# Non-ASCII non-letters that OK_CHAR allows, as these characters are -# useful in commentary. -UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1) +# These non-alphabetic, non-ASCII printable characters are +# used in commentary or in generated *.txt files +# and are not likely to cause confusion. +UNUSUAL_OK_CHARSET= §«°±»½¾×–‘’“”•→−≤★⟨⟩⯪ # Put this in a bracket expression to match spaces. s = [:space:] @@ -525,9 +582,6 @@ s = [:space:] # This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and # multibyte letters are also allowed so that commentary can contain a # few safe symbols and people's names and can quote non-English sources. -# Other non-letters are limited to ASCII renderings for the -# convenience of maintainers using XEmacs 21.5.34, which by default -# mishandles Unicode characters U+0100 and greater. OK_CHAR= '[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]' # SAFE_LINE matches a line of safe characters. @@ -654,7 +708,6 @@ install: all $(DATA) $(REDO) $(MANS) '$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \ '$(DESTDIR)$(MANDIR)/man8' $(ZIC_INSTALL) -l $(LOCALTIME) \ - -p $(POSIXRULES) \ -t '$(DESTDIR)$(TZDEFAULT)' cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.' cp tzselect '$(DESTDIR)$(BINDIR)/.' @@ -874,9 +927,9 @@ UTF8_LOCALE_MISSING = \ character-set.ck: $(ENCHILADA) $(UTF8_LOCALE_MISSING) || { \ sharp='#' && \ - ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \ - $(MISC) $(SOURCES) $(WEB_PAGES) \ - CONTRIBUTING LICENSE README SECURITY \ + ! grep -Env $(SAFE_LINE) $(MANS) date.1 \ + $(MISC) $(SOURCES) \ + LICENSE \ version tzdata.zi && \ ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \ Makefile && \ @@ -888,11 +941,9 @@ character-set.ck: $(ENCHILADA) white-space.ck: $(ENCHILADA) $(UTF8_LOCALE_MISSING) || { \ - enchilada='$(ENCHILADA)' && \ patfmt=' \t|[\f\r\v]' && pat=$$(printf "$$patfmt\\n") && \ ! grep -En "$$pat|[$s]\$$" \ - $${enchilada%leap-seconds.list*} \ - $${enchilada#*leap-seconds.list}; \ + $(ENCHILADA:leap-seconds.list=); \ } touch $@ @@ -959,8 +1010,10 @@ now.ck: checknow.awk date tzdata.zi zdump zic zone1970.tab zonenow.tab ./zdump -i -t 0,$$future \ $$(find "$$PWD/$@d" -name Etc -prune \ -o -type f ! -name '*.tab' -print) \ - >$@d/zdump-1970.tab + >$@d/zdump-1970.tab && \ $(AWK) \ + -v now=$$now \ + -v now_out=$@.out \ -v zdump_table=$@d/zdump-now.tab \ -f checknow.awk zonenow.tab $(AWK) \ @@ -970,7 +1023,8 @@ now.ck: checknow.awk date tzdata.zi zdump zic zone1970.tab zonenow.tab -v zdump_table=$@d/zdump-1970.tab \ -f checknow.awk rm -fr $@d - touch $@ + touch $@.out + mv $@.out $@ tables.ck: checktab.awk $(YDATA) backward zone.tab zone1970.tab for tab in $(ZONETABLES); do \ @@ -1031,7 +1085,7 @@ zishrink-posix.ck zishrink-right.ck: \ clean_misc: rm -fr *.ckd *.dir - rm -f *.ck *.core *.o *.out core core.* \ + rm -f *.ck *.core *.o *.out *.t core core.* \ date tzdir.h tzselect version.h zdump zic libtz.a clean: clean_misc rm -fr tzdb-*/ @@ -1059,7 +1113,7 @@ zdump.8.txt: zdump.8 zic.8.txt: zic.8 $(MANTXTS): workman.sh - LC_ALL=C sh workman.sh $(@:.txt=) >$@.out + LC_ALL=C sh workman.sh $(MANFLAGS) $(@:.txt=) >$@.out mv $@.out $@ # Set file timestamps deterministically if possible, @@ -1108,7 +1162,7 @@ set-timestamps.out: $(EIGHT_YARDS) if git diff --quiet HEAD $$file; then \ time=$$(TZ=UTC0 git log -1 \ --format='tformat:%cd' \ - --date='format:%Y-%m-%dT%H:%M:%SZ' \ + --date='format-local:%Y-%m-%dT%H:%M:%SZ' \ $$file) && \ echo "+ touch -md $$time $$file" && \ touch -md $$time $$file; \ @@ -1207,12 +1261,12 @@ $(TIME_T_ALTERNATIVES): $(VERSION_DEPS) touch $@ TRADITIONAL_ASC = \ - tzcode$(VERSION).tar.gz.asc \ - tzdata$(VERSION).tar.gz.asc + tzcode$(VERSION).tar.gz.asc.t \ + tzdata$(VERSION).tar.gz.asc.t REARGUARD_ASC = \ - tzdata$(VERSION)-rearguard.tar.gz.asc + tzdata$(VERSION)-rearguard.tar.gz.asc.t ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \ - tzdb-$(VERSION).tar.lz.asc + tzdb-$(VERSION).tar.lz.asc.t tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \ signatures rearguard_signatures traditional_signatures: \ @@ -1224,29 +1278,31 @@ signatures rearguard_signatures traditional_signatures: \ # other means. Ordinarily these rules are used only by the above # non-_version rules, which set VERSION on the 'make' command line. tarballs_version: traditional_tarballs_version rearguard_tarballs_version \ - tzdb-$(VERSION).tar.lz + tzdb-$(VERSION).tar.lz.t rearguard_tarballs_version: \ - tzdata$(VERSION)-rearguard.tar.gz + tzdata$(VERSION)-rearguard.tar.gz.t traditional_tarballs_version: \ - tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz + tzcode$(VERSION).tar.gz.t tzdata$(VERSION).tar.gz.t tailored_tarballs_version: \ - tzdata$(VERSION)-tailored.tar.gz + tzdata$(VERSION)-tailored.tar.gz.t signatures_version: $(ALL_ASC) rearguard_signatures_version: $(REARGUARD_ASC) traditional_signatures_version: $(TRADITIONAL_ASC) -tzcode$(VERSION).tar.gz: set-timestamps.out +tzcode$(VERSION).tar.gz.t: set-timestamps.out $(SETUP_TAR) && \ $$TAR -cf - \ $(COMMON) $(DOCS) $(SOURCES) | \ - gzip $(GZIPFLAGS) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(COMMON) $(DOCS) $(SOURCES) + touch $@ -tzdata$(VERSION).tar.gz: set-timestamps.out +tzdata$(VERSION).tar.gz.t: set-timestamps.out $(SETUP_TAR) && \ $$TAR -cf - $(TZDATA_DIST) | \ - gzip $(GZIPFLAGS) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(TZDATA_DIST) + touch $@ # Create empty files with a reproducible timestamp. CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00 @@ -1255,7 +1311,7 @@ CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00 # for backwards compatibility with tz releases 2018e through 2022a. # They should go away eventually. To build rearguard tarballs you # can instead use 'make DATAFORM=rearguard tailored_tarballs'. -tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out +tzdata$(VERSION)-rearguard.tar.gz.t: rearguard.zi set-timestamps.out rm -fr $@.dir mkdir $@.dir ln $(TZDATA_DIST) $@.dir @@ -1273,8 +1329,11 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out (cd $@.dir && \ $$TAR -cf - \ $(TZDATA_DIST) pacificnew | \ - gzip $(GZIPFLAGS)) >$@.out - mv $@.out $@ + gzip $(GZIPFLAGS)) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) \ + $$(cd $@.dir && \ + ls $(TZDATA_DIST) pacificnew | sed 's,^,$@.dir/,') + touch $@ # Create a tailored tarball suitable for TZUpdater and compatible tools. # For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball @@ -1283,7 +1342,7 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out # traditional tarball, as data entries are put into 'etcetera' even if they # came from some other source file. However, the effect should be the same # for ordinary use, which reads all the source files. -tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out +tzdata$(VERSION)-tailored.tar.gz.t: set-timestamps.out rm -fr $@.dir mkdir $@.dir : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier. @@ -1295,7 +1354,7 @@ tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out cd $@.dir && \ $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \ $$pacificnew - (grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \ + (sed '/^#/!d' tzdata.zi && echo && cat $(DATAFORM).zi) \ >$@.dir/etcetera touch -mr tzdata.zi $@.dir/etcetera sed -n \ @@ -1316,24 +1375,29 @@ tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out ln $$links $@.dir $(SETUP_TAR) && \ (cd $@.dir && \ - $$TAR -cf - * | gzip $(GZIPFLAGS)) >$@.out - mv $@.out $@ + $$TAR -cf - *) | gzip $(GZIPFLAGS) >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) \ + $$(cd $@.dir && ls * | sed 's,^,$@.dir/,') + touch $@ -tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out +tzdb-$(VERSION).tar.lz.t: set-timestamps.out set-tzs-timestamp.out rm -fr tzdb-$(VERSION) mkdir tzdb-$(VERSION) ln $(ENCHILADA) tzdb-$(VERSION) $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/* $(SETUP_TAR) && \ - $$TAR -cf - tzdb-$(VERSION) | lzip -9 >$@.out - mv $@.out $@ + $$TAR -cf - tzdb-$(VERSION) | lzip -9 >$(@:.t=) + $(SET_TIMESTAMP) $(@:.t=) tzdb-$(VERSION) + touch $@ -tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz -tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz -tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz -tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz +tzcode$(VERSION).tar.gz.asc.t: tzcode$(VERSION).tar.gz.t +tzdata$(VERSION).tar.gz.asc.t: tzdata$(VERSION).tar.gz.t +tzdata$(VERSION)-rearguard.tar.gz.asc.t: tzdata$(VERSION)-rearguard.tar.gz.t +tzdb-$(VERSION).tar.lz.asc.t: tzdb-$(VERSION).tar.lz.t $(ALL_ASC): - $(GPG) --armor --detach-sign $? + $(GPG) --armor --detach-sign $(?:.t=) + $(SET_TIMESTAMP) $(@:.t=) $(?:.t=) + touch $@ TYPECHECK_CFLAGS = $(CFLAGS) -DTYPECHECK -D__time_t_defined -D_TIME_T typecheck: long-long.ck unsigned.ck diff --git a/contrib/tzcode/NEWS b/contrib/tzcode/NEWS index 8c0771641ef0..acd22280cb3a 100644 --- a/contrib/tzcode/NEWS +++ b/contrib/tzcode/NEWS @@ -1,5 +1,237 @@ News for the tz database +Release 2026a - 2026-03-01 22:59:49 -0800 + + Briefly: + Moldova has used EU transition times since 2022. + The "right" TZif files are no longer installed by default. + -DTZ_RUNTIME_LEAPS=0 disables runtime support for leap seconds. + TZif files are no longer limited to 50 bytes of abbreviations. + zic is no longer limited to 50 leap seconds. + Several integer overflow bugs have been fixed. + + Changes to past and future timestamps + + Since 2022 Moldova has observed EU transition times, that is, it + has sprung forward at 03:00, not 02:00, and has fallen back at + 04:00, not 03:00. (Thanks to Heitor David Pinto.) + + Changes to data + + Remove Europe/Chisinau from zonenow.tab, as it now agrees with + Europe/Athens for future timestamps. + + Changes to build procedure + + The Makefile no longer by default installs an alternate set + of TZif files for system clocks that count leap seconds. + Install with 'make REDO=posix_right' to get the old default, + which is rarely used in major downstream distributions. + If your system clock counts leap seconds (contrary to POSIX), + it is better to install with 'make REDO=right_only'. + This change does not affect the leapseconds file, which is still + installed as before. + + The Makefile's POSIXRULES option, which was declared obsolete in + release 2019b, has been removed. The Makefile's build procedure + thus no longer optionally installs the obsolete posixrules file. + + Changes to code + + Compiling with the new option -DTZ_RUNTIME_LEAPS=0 disables + runtime support for leap seconds. Although this conforms to + POSIX, shrinks tzcode's attack surface, and is more efficient, + it fails to support Internet RFC 9636's leap seconds. + + zic now can generate, and localtime.c can now use, TZif files that + hold up to 256 bytes of abbreviations, counting trailing NULs. + The previous limit was 50 bytes, and some tzdata TZif files were + already consuming 40 bytes. zic -v warns if it generates a file + that exceeds the old 50-byte limit. + + zic -L can now generate TZif files with more than 50 leap seconds. + This helps test TZif readers not limited to 50 leap seconds, as + tzcode's localtime.c is; it has little immediate need for + practical timekeeping as there have been only 27 leap seconds and + possibly there will be no more, due to planned changes to UTC. + zic -v warns if its output exceeds the old 50-second limit. + + localtime.c no longer accesses the posixrules file generated by + zic -p. Hence for obsolete and nonconforming settings like + TZ="AST4ADT" it now typically falls back on US DST rules, rather + than attempting to override this fallback with the contents of the + posixrules file. This removes library support that was declared + obsolete in release 2019b, and fixes some undefined behavior. + (Undefined behavior reported by GitHub user Naveed8951.) + + The posix2time, posix2time_z, time2posix, and time2posix_z + functions now set errno=EOVERFLOW and return ((time_t) -1) if the + result is not representable. Formerly they had undefined behavior + that could in practice result in crashing, looping indefinitely, + or returning an incorrect result. As before, these functions are + defined only when localtime.c is compiled with the -DSTD_INSPIRED + option. + + Some other undefined behavior, triggered by TZif files containing + outlandish but conforming UT offsets or leap second corrections, + has also been fixed. (Some of these bugs reported by Naveed8951.) + + localtime.c no longer rejects TZif files that exactly fit in its + internal structures, fixing off-by-one typos introduced in 2014g. + + zic no longer generates a no-op transition when + simultaneous Rule and Zone changes cancel each other out. + This occurs in tzdata only in Asia/Tbilisi on 1997-03-30. + (Thanks to Renchunhui for a test case showing the bug.) + + zic no longer assumes you can fflush a read-only stream. + (Problem reported by Christos Zoulas.) + + zic no longer generates UT offsets equal to -2**31 and localtime.c + no longer accepts them, as they can cause trouble in both + localtime.c and its callers. RFC 9636 prohibits such offsets. + + zic -p now warns that the -p option is obsolete and likely + ineffective. + + +Release 2025c - 2025-12-10 14:42:37 -0800 + + Briefly: + Several code changes for compatibility with FreeBSD. + + Changes to past timestamps + + Baja California agreed with California’s DST rules in 1953 and in + 1961 through 1975, instead of observing standard time all year. + (Thanks to Alois Treindl.) + + Changes to build procedure + + Files in distributed tarballs now have correct commit times. + Formerly, the committer’s time zone was incorrectly ignored. + + Distribution products (*.asc, *.gz, and *.lz) now have + reproducible timestamps. Formerly, only the contents of the + compressed tarballs had reproducible timestamps. + + By default, distributed formatted man pages (*.txt) now use UTF-8 + and are left-adjusted more consistently. A new Makefile macro + MANFLAGS can override these defaults. (Thanks to G. Branden + Robinson for inspiring these changes.) + + Changes to code + + An unset TZ is no longer invalid when /etc/localtime is missing, + and is abbreviated "UTC" not "-00". This reverts to 2024b behavior. + (Problem and patch reported by Dag-Erling Smørgrav.) + + New function offtime_r, short for fixed-offset localtime_rz. + It is defined if STD_INSPIRED is defined. + (Patch from Dag-Erling Smørgrav.) + + tzset etc. are now more cautious about questionable TZ settings. + Privileged programs now reject TZ settings that start with '/', + unless they are TZDEFAULT (default "/etc/localtime") or + start with TZDIR then '/' (default "/usr/share/zoneinfo/"). + Unprivileged programs now require files to be regular files + and reject relative names containing ".." directory components; + formerly, only privileged programs did those two things. + These changes were inspired by similar behavior in FreeBSD. + On NetBSD, unprivileged programs now use O_REGULAR to check + whether a TZ setting starting with '/' names a regular file, + avoiding a minor security race still present elsewhere. + TZ strings taken from tzalloc arguments are now treated with + no less caution than TZ strings taken from the environment, as + the old undocumented behavior would have been hard to explain. + tzset etc. no longer use the ‘access’ system call to check access; + instead they now use the system calls issetugid, getauxval, + getresuid/getresgid, and geteuid/getegid/getuid/getgid (whichever + first works) to test whether a program is privileged. + Compile with -DHAVE_SYS_AUXV_H=[01] to enable or disable + which (if it defines AT_SECURE) enables getauxval, + and compile with -DHAVE_ISSETUGID=[01], -DHAVE_GETRESUID=[01], and + -DHAVE_GETEUID=[01] to enable or disable the other calls’ use. + + The new CFLAGS option -DTZ_CHANGE_INTERVAL=N makes tzset etc. + check for TZif file changes if the in-memory data are N seconds + old or more, and are derived from the TZ environment variable. + This is intended for platforms that want tzset etc. to reflect + changes to whatever file TZ selects (including changes to + /etc/localtime if TZ is unset). If N is negative (the default) + these checks are omitted; this is the traditional behavior. + + The new CFLAGS options -DHAVE_STRUCT_STAT_ST_CTIM=0 and + -DHAVE_STRUCT_TIMESPEC=0 port to non-POSIX.1-2008 platforms + that lack st_ctim and struct timespec, respectively. + On these platforms, the code falls back on st_ctime to + implement -DTZ_CHANGE_INTERVAL=N. + + tzset etc. now treat ' ' like '_' in time zone abbreviations, + just as they treat other invalid bytes. This continues the + transition begun in release 96k, which removed spaces in tzdata + because the spaces break time string parsers. + + The new CFLAGS option -DTHREAD_PREFER_SINGLE causes tzcode + in single-threaded processes to avoid locks, as FreeBSD does. + This can save time in single-threaded apps. The threadedness + testing costs CPU time and energy in multi-threaded apps. + New options -DHAVE___ISTHREADED and -DHAVE_SYS_SINGLE_THREADED_H + can help configure how to test for single-threadedness. + + The new CFLAGS option -DTHREAD_RWLOCK uses read-write locks, as + macOS does, instead of mutexes. This saves real time when TZ is + rarely changing and many threads call tzcode simultaneously. + It costs more CPU time and energy. + + The new CFLAGS option -TTHREAD_TM_MULTI causes localtime to return + a pointer to thread-specific memory, as FreeBSD does, instead of + to the same memory in all threads. This supports nonportable + programs that incorrectly use localtime instead of localtime_r. + This option affects gmtime and offtime similarly to localtime. + Because the corresponding storage is freed on thread exit, this + option is incompatible with POSIX.1-2024 and earlier. It also + costs CPU time and memory. + + tzfree now preserves errno, consistently with POSIX.1-2024 ‘free’. + + tzcode now uses mempcpy if available, guessing its availability. + Compile with -DHAVE_MEMPCPY=1 or 0 to override the guess. + + tzcode now uses strnlen to improve asymptotic performance a bit. + Compile with -DHAVE_STRNLEN=0 if your platform lacks it. + + tzcode now hand-declares unistd.h-provided symbols like getopt + if HAVE_UNISTD_H=0, not if HAVE_POSIX_DECLS=0. + + tzset etc. now have an experimental OPENAT_TZDIR option; + see Makefile and localtime.c for details. + + On platforms like GNU/Hurd that do not define PATH_MAX, + exceedingly long TZ strings no longer fail merely because they + exceed an arbitrary file name length limit imposed by tzcode. + + zic has new options inspired by FreeBSD. ‘-D’ skips creation of + output ancestor directories, ‘-m MODE’ sets output files’ mode, + and ‘-u OWNER[:GROUP]’ sets output files’ owner and group. + + zic now uses the fdopen function, which was standardized by + POSIX.1-1988 and is now safe to use in portable code. + This replaces its use of the older umask function, which + complicated maintenance. + + Changes to commentary + + The leapseconds file contains commentary about the IERS and NIST + last-modified and expiration timestamps for leap second data. + (Thanks to Judah Levine.) + + Commentary now also uses characters from the set –‘’“”•≤ as this + can be useful and should work with current applications. This + also affects data in iso3166.tab and zone1970.tab, which now + contain strings like “Côte d’Ivoire” instead of “Côte d'Ivoire”. + + Release 2025b - 2025-03-22 13:40:46 -0700 Briefly: diff --git a/contrib/tzcode/README b/contrib/tzcode/README index edabd2e0690f..f22ec5492d09 100644 --- a/contrib/tzcode/README +++ b/contrib/tzcode/README @@ -1,8 +1,8 @@ README for the tz distribution -"Where do I set the hands of the clock?" -- Les Tremayne as The King -"Oh that--you can set them any place you want." -- Frank Baxter as The Scientist - (from the Bell System film "About Time") +“Where do I set the hands of the clock?” – Les Tremayne as The King +“Oh that – you can set them any place you want.” – Frank Baxter as The Scientist + (from the Bell System film “About Time”) The Time Zone Database (called tz, tzdb or zoneinfo) contains code and data that represent the history of local time for many representative @@ -13,12 +13,12 @@ and daylight-saving rules. See or the file tz-link.html for how to acquire the code and data. -Once acquired, read the leading comments in the file "Makefile" +Once acquired, read the leading comments in the file ‘Makefile’ and make any changes needed to make things right for your system, especially when using a platform other than current GNU/Linux. Then run the following commands, substituting your desired -installation directory for "$HOME/tzdir": +installation directory for ‘$HOME/tzdir’: make TOPDIR="$HOME/tzdir" install "$HOME/tzdir/usr/bin/zdump" -v America/Los_Angeles @@ -39,12 +39,12 @@ The information in the time zone data files is by no means authoritative; fixes and enhancements are welcome. Please see the file CONTRIBUTING for details. -Thanks to these Time Zone Caballeros who've made major contributions to the +Thanks to these Time Zone Caballeros who’ve made major contributions to the time conversion package: Keith Bostic; Bob Devine; Paul Eggert; Robert Elz; Guy Harris; Mark Horton; John Mackin; and Bradley White. Thanks also to Michael Bloom, Art Neilson, Stephen Prince, John Sovereign, and Frank Wales for testing work, and to Gwillim Law for checking local mean time data. -Thanks in particular to Arthur David Olson, the project's founder and first +Thanks in particular to Arthur David Olson, the project’s founder and first maintainer, to whom the time zone community owes the greatest debt of all. None of them are responsible for remaining errors. diff --git a/contrib/tzcode/SECURITY b/contrib/tzcode/SECURITY index 40128bc86dd2..dbce8bbd5d2d 100644 --- a/contrib/tzcode/SECURITY +++ b/contrib/tzcode/SECURITY @@ -1,7 +1,7 @@ Please report any sensitive security-related bugs via email to the tzdb designated coordinators, currently Paul Eggert and Tim Parenti . -Put "tzdb security" at the start of your email's subject line. +Put “tzdb security” at the start of your email’s subject line. We prefer communications to be in English. You should receive a response within a week. If not, please follow up diff --git a/contrib/tzcode/calendars b/contrib/tzcode/calendars index f4ed9e434e50..699de85cbffa 100644 --- a/contrib/tzcode/calendars +++ b/contrib/tzcode/calendars @@ -16,30 +16,9 @@ and (in Paris only) 1871-05-06 through 1871-05-23. Russia -From Chris Carrier (1996-12-02): -On 1929-10-01 the Soviet Union instituted an "Eternal Calendar" -with 30-day months plus 5 holidays, with a 5-day week. -On 1931-12-01 it changed to a 6-day week; in 1934 it reverted to the -Gregorian calendar while retaining the 6-day week; on 1940-06-27 it -reverted to the 7-day week. With the 6-day week the usual days -off were the 6th, 12th, 18th, 24th and 30th of the month. -(Source: Evitiar Zerubavel, _The Seven Day Circle_) - - -Mark Brader reported a similar story in "The Book of Calendars", edited -by Frank Parise (1982, Facts on File, ISBN 0-8719-6467-8), page 377. But: - -From: Petteri Sulonen (via Usenet) -Date: 14 Jan 1999 00:00:00 GMT -... - -If your source is correct, how come documents between 1929 and 1940 were -still dated using the conventional, Gregorian calendar? - -I can post a scan of a document dated December 1, 1934, signed by *** 8670 LINES SKIPPED *** From nobody Thu Apr 2 21:56:53 2026 X-Original-To: dev-commits-src-branches@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 4fmwg95kpdz6YqHm for ; Thu, 02 Apr 2026 21:56:53 +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 4fmwg94tvmz3xJV for ; Thu, 02 Apr 2026 21:56:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775167013; 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=BQsxkZHmB40FNEYzA8/3kQD/5GYfJfdIaipyVNo3U/o=; b=CMx5T8zArwYcfuHUnnDST7/o5KFDSrxkD9GFUIUc3UTaQOS2w/HsYWZEJwrliLD9o5siQb 0L61ubUy+k9ObW5ibFdW+SzoOxXStlgzPnNHj4c/0cbKN23aQC9jrpOr2JiPd2ty9EUtYU JA0SQGXB1+0aQ04QxUmV9MV8PC4WUrnHMAGRwyDDsjU4V6LixINc24PHq3neZiJlxgaolA vKW1nmzidlYaL9DLMHrmrOjPmM4Pjm7sXdeGIssbVRDfTgJAKlM4awMvyUF2YYjN4tsmEC /4cEeT+kO6IM3FT/JpWry1Q2lMkGxcI0e0OAbr11zqDsBsNzh+U9T1c6FZ33Zw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775167013; a=rsa-sha256; cv=none; b=JFmcMTbrSXUhP0TW7w60V6NVD39b9bk1JKqImUvTOomm2/PkKLZ5NE7b/N83ukLNPBUULn DdGe5Q+7Xwjql33FjI7BdHSPDYgR4cqd5T7FU/QEEdz5p8zvbKvtSdkN+6+E0cTwI3MMsL odulj3FVV72iLwaP/y1VmAbmhc1QU527QhwioMS+ggv9qegtsfW1VISztO/4u8Gf+/NavW dDxZegbn4hJ5kQi1zHOGNwSeTXmqkGUwmnsP0cx6aZYD8LQjM8ALe39C139jicX7rHavxV EhWNPvXvJNRM0lalwMqdlNbNaTeqNoEaukFdGoOKBCYXOM6u76ZwJws7Nu09GA== 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=1775167013; 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=BQsxkZHmB40FNEYzA8/3kQD/5GYfJfdIaipyVNo3U/o=; b=DuBL9DDcHlOXH25uimUnRIhtISy0KqtmdIe6FNIYZ/sltDVv1PGPxVNLJU8mzdg+xPWCGO vG/PTjpc4VxmFJq08cId9Uao7pk56lTzi2sH2AdDGyJnHxOstXBs50GBEweDsAStZKd16y t5zschaW9BDkxvRdzGESODzcWKuVy/ksRkk/BIKsk1Hn8kNPI23yx9rVvJXWD1RKAytuT1 /TQd08DUKdSy5pYTlMd/Mgnj651qE/BgGX13/R3xIlyXgt6A922U3MhX/ZmBtn+2/KKMds b4j6y/rh5uGpkzVMfRqddDCip3R9Rdk3A/Dm8TMIop8eW9cAngznpjSNCFV8sA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmwg94TSmz4RM for ; Thu, 02 Apr 2026 21:56:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 413cc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 21:56:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: bee397ac12db - stable/15 - mtree: stop creating /usr/share/doc/ncurses List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: bee397ac12db9f4d06faf1926811d4c5a33be7a4 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 21:56:53 +0000 Message-Id: <69cee625.413cc.2b6d9fe3@gitrepo.freebsd.org> The branch stable/15 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=bee397ac12db9f4d06faf1926811d4c5a33be7a4 commit bee397ac12db9f4d06faf1926811d4c5a33be7a4 Author: Dimitry Andric AuthorDate: 2026-02-10 14:32:52 +0000 Commit: Dimitry Andric CommitDate: 2026-04-02 21:55:58 +0000 mtree: stop creating /usr/share/doc/ncurses In base 68ad2b0d7af2a the ncurses html documentation was removed, and entries added to ObsoleteFiles.inc to get rid of /usr/share/doc/ncurses, but the directory was still being re-created via BSD.usr.dist. Remove it from there too. Fixes: 68ad2b0d7af2a MFC after: 1 month (cherry picked from commit 212272a43767c3d7be3ddb87605612f6164774c1) --- etc/mtree/BSD.usr.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 0a7cfc1b8018..e43a9b341003 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -246,8 +246,6 @@ clang .. .. - ncurses - .. ntp drivers icons From nobody Thu Apr 2 22:20:30 2026 X-Original-To: dev-commits-src-branches@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 4fmxBR02rHz6Ys9M for ; Thu, 02 Apr 2026 22:20:31 +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 4fmxBQ36qRz41lx for ; Thu, 02 Apr 2026 22:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775168430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vH7azz5Om5oyuCZM1WpDTZ90ZiA2B7QPUWqX+iDkNZA=; b=KuGOI5ybFgH1bWovIrP1AP5Vs3XqLJDz3KRip+ai8OkG8dpg42P0/QWv5I7UYD9XoPGd6W ZndP81K4KOLhQjTBET74UcDlDa3dqWqiATX+80pfxds4MkN1ptf0jUM3GR7XQaHINmojsG w7UZti6PM+S4YGMPMePLDTCPjZni/Uh9WIqZbbdZmXKPw1hcjF5lTcpaw2mZJqAPDinHLL 5Au4Bpekg29N76VnbBJQaNzUCEc6fCb16KQxip1BMsWlZcVRgDqTv7ZMhJZh/ByCtDQzEJ kcz9P+5JGm3P8kpAeicOTy9CtzftK+I6hSiYMSBDhx8OM/8rdVYlZbId8zI8ug== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775168430; a=rsa-sha256; cv=none; b=cRyXVx0vqv5oF8uE+ya1yWOIPh3gtat+4nzttsrzedrqjfZHLrv+HcW3/5In6rqOQgWgHj y+f2XVdT6cPRcYDEo6CFhzIJx/oNANFPM+qHrbe3p8NFmOGqStLApM3x6OTf5fQ26wIOpI Ai22NpX6Uy1aNX+BRFtqeYhLG2dhUpqlkal0EFqbdGeIOUAW4/rZbonuxkRd+fCSICWqsj feKEYyiobiRF6ae6dd3Z4kTw667/XZvkRzABOzLSrM/r0hIuKWwUsEVFk+6Kdq2u0929Dv SGZeUR4SRCizO1wO0YfSYGFFIxWqq/d9jWrjSpKJ/m/oBSH2KiU5uVs2OHD8Aw== 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=1775168430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vH7azz5Om5oyuCZM1WpDTZ90ZiA2B7QPUWqX+iDkNZA=; b=ODWJQduxC+4P+lPo/jAL5aMjeUwMyG5jNZxB1zarqogzDyVqyb69DCwjz93Rho9uc/3pJ5 1ZF9dKfb8ccstSAcoXV6bTDeO12Fe7GupWWPq4XU96fU7YV+BmIzmHgS60s5jeso8+tusv w33RIKoFSvYLH46OIGCTUv1Z9JrNGI2JP2mIyUU8vSAAm78bq/iteFmlozP9Bsu6L10Fak oaNM84ArLfn5DPujaRo5uVNsnvLfaZcoLrbQxBMbIjXwgIfPfjWLstpePhcXCb3QXjDQND gIRIMPgGugd5QEeWDbWaN2BGtiM0V2lkYhFmlBauAkn1dHZ5QonSRhsd0l/ivg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxBQ2RbSz5PM for ; Thu, 02 Apr 2026 22:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4405e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:20:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 10598997a2e3 - stable/15 - ena: Verify that an ENA ring is in netmap only in native mode List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 10598997a2e34cd7467418b8c83f5e41d5b424fe Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:20:30 +0000 Message-Id: <69ceebae.4405e.43740ac0@gitrepo.freebsd.org> The branch stable/15 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=10598997a2e34cd7467418b8c83f5e41d5b424fe commit 10598997a2e34cd7467418b8c83f5e41d5b424fe Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:13:00 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:17:36 +0000 ena: Verify that an ENA ring is in netmap only in native mode netmap operates in two modes: 1) Emulated - netmap handling is done by the network stack, the NIC driver operates transparently to netmap. 2) Native - netmap management is done by the NIC driver. When checking whether a specific ENA ring is running in netmap mode, only the following checks were done: 1. IFCAP_NETMAP - Check whether netmap capability is enabled on the device. 2. NKR_NETMAP_ON - Check whether netmap is actively using this ring. The above checks implied that the netmap mode is native and the ENA driver needs to handle the netmap logic. The code was missing an explicit check on whether native mode is actually on (NAF_NATIVE). This led to a case where though emulated mode was used and a netmap application was turned on, the ENA driver still managed netmap logic partially and caused missing buffers and lack of refill as part of the datapath. Note: Enabling netmap emulated mode is insufficient and there's a need to load a netmap program in order to trigger this use-case. Add an explicit check of whether NAF_NATIVE mode is set. The issue was reported in [1]. [1]: https://github.com/amzn/amzn-drivers/issues/361 Fixes: 358bcc4c6cde ("Add support for ENA NETMAP partial initialization") Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55697 Sponsored by: Amazon, Inc. (cherry picked from commit 97e84c587d6f86aa883720296449b380adcf6915) --- sys/dev/ena/ena_netmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ena/ena_netmap.c b/sys/dev/ena/ena_netmap.c index 8a220373ec3f..0e8c95fb289a 100644 --- a/sys/dev/ena/ena_netmap.c +++ b/sys/dev/ena/ena_netmap.c @@ -223,9 +223,11 @@ ena_ring_in_netmap(struct ena_adapter *adapter, int qid, enum txrx x) if (if_getcapenable(adapter->ifp) & IFCAP_NETMAP) { na = NA(adapter->ifp); - kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; - if (kring->nr_mode == NKR_NETMAP_ON) - return true; + if (na->na_flags & NAF_NATIVE) { + kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; + if (kring->nr_mode == NKR_NETMAP_ON) + return true; + } } return false; } From nobody Thu Apr 2 22:20:31 2026 X-Original-To: dev-commits-src-branches@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 4fmxBR6qBqz6Ys9P for ; Thu, 02 Apr 2026 22:20:31 +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 4fmxBR3Q14z41nq for ; Thu, 02 Apr 2026 22:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775168431; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r2RaGNH1yvzr+aAJJTQbZPce3J1xOUp4BWk6aIQMdx8=; b=MyGcW/FeUe2TtlJ4fUPjxVox3yQlU8meMkbRN/VQOyELiShWJeyFLX9YMC1xexGw0SmDz/ VRLempjJCe0l5XJNNbh3+IIYbfjGvlfN6Y2buZkalmaFfi+y49vHfomqL/hAd/ztlLULyn QfCftMo37VxuKIDTcd8SuazorXzBdxCN8++mOhpJAtQdKIjKzYVL9ru37cPlnWjTFG7YY3 SmWTziivF5Am2a2vs9E7mj5SPpqw2eiegvD62q7lQYK+OgnRp0ESDXR1Tw6pOuMCfJ0exJ 4Hbphs2ZFPkpKc/qW8PiYL6gKm/tAsc0n11erq7TO3s4YneoNhVdTw61LX/hOw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775168431; a=rsa-sha256; cv=none; b=le/x9SF/dvOtGHOyXYAulcv//QLtw5Ib15kWlcTi/s8Y6Ey4m0g8h8uYLDBWQoWJoMvWpS p7IwX4ICujVT4437h90fXTP3JVaA99H6bCnnutkHK1Wkjir05dev3x9RKhl0O+oMwAnV83 7iBpgpv4/j+OyIJPDOmU/MN5Dk3wdk1ZiIqwo6rF9b+IciF1OwrrLHlI3lKH4mtoCAJDOc E8rHsg1DHDs254/RkkysA2PDYuEo4vc2SIN/EK2mAdyQiCoda3D7iazXpBRF3XT03CLK7F LVtf0nrOLJeXOCtcLuT4GVUZ5xTzOwDZty7tZnBHOz0lW/GuuBc3bcBWgfbUCQ== 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=1775168431; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r2RaGNH1yvzr+aAJJTQbZPce3J1xOUp4BWk6aIQMdx8=; b=k66CuU7HI5TYlysSDyFd2MW5BMGhq8GpDWPJPf/XP0CFp22liZp7hgwdvf8PqIVtflMxXI UWr3ABaoiUtzFpIGJCBVJduxNmE8FgUISi4i4Wj/ClwDzi5Jlw3OT51B6BUuZe2EcNddd1 Jag6ZiUyYap0sFBxFsY1uPu9lxd/+5QGtWE2yDDHeDY5bYue1a+1Q5lAZx/4ubqoesukHU yYRTLb2uKzDH29lmPxZTFkWo3WAWvQemTd+Csf2ZETSmTXzXFdUdp0rO6AHlX2Cl55yVAJ ik0hBgwYG0EPFAQcvppDYUBBor5xrXLdt5UOsQHHYBC504oE+wiAeUe9j/3xJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxBR2yvXz5Tv for ; Thu, 02 Apr 2026 22:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 41dec by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:20:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 332708a606f6 - stable/15 - ena: Update driver version to v2.8.2 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 332708a606f6bf0841c1d4a74c0d067f5640fe89 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:20:31 +0000 Message-Id: <69ceebaf.41dec.5b59a60d@gitrepo.freebsd.org> The branch stable/15 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=332708a606f6bf0841c1d4a74c0d067f5640fe89 commit 332708a606f6bf0841c1d4a74c0d067f5640fe89 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:13:09 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:17:36 +0000 ena: Update driver version to v2.8.2 Bug Fixes: * Verify that an ENA ring is in netmap only in native mode Minor Changes: * Move parenthesis to correct place in switch * Add comment * Reorder define Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55698 Sponsored by: Amazon, Inc. (cherry picked from commit 96c5eaf0ac6b98d0832e1037d672064de43a7e00) --- sys/dev/ena/ena.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/ena/ena.h b/sys/dev/ena/ena.h index 3b01605b4ba7..f67c7002327d 100644 --- a/sys/dev/ena/ena.h +++ b/sys/dev/ena/ena.h @@ -39,7 +39,7 @@ #define ENA_DRV_MODULE_VER_MAJOR 2 #define ENA_DRV_MODULE_VER_MINOR 8 -#define ENA_DRV_MODULE_VER_SUBMINOR 1 +#define ENA_DRV_MODULE_VER_SUBMINOR 2 #define ENA_DRV_MODULE_NAME "ena" From nobody Thu Apr 2 22:20:29 2026 X-Original-To: dev-commits-src-branches@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 4fmxBV4WyQz6Ys4G for ; Thu, 02 Apr 2026 22:20:34 +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 4fmxBV2Wl5z41k6 for ; Thu, 02 Apr 2026 22:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775168434; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=q6hinkaJ1SpsL7KzXPrYva1pRQ8/mJN3eEN3tCyj42s=; b=KhbX9azpPwinsEcsasFOrMkHWlcPpdI1h3sBjYdvAENiwAkyYZfNH2e/ZXZTAxyTYfnlcp 01e7V2U2KCUZ3y1bUhO6WMDy5HNKttkRTfW7Ipg3JNztvLDHLiVmZWEGjFEqRM0UEqpGvg EfLxgCS6q3HrXrQ/Q0n780jqtFz2IbWFuJNV6+SpJ/B8hHqhIz0UO1tkHSz0lZNChmIezU A2baMePdnrEM3An/5+ae38LVqNDP8Z4BuKWYIYyvfzCj3NKS10HY8xGSxY5sQlG//BOaNJ p1B1dBA3BlwsxbTov//qx8mQGYhVyAGJbjwuKk3RBckNL9xyvpprYgLnOCN88w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775168434; a=rsa-sha256; cv=none; b=tFfZFaQI8WwM0kSyo7+m+GyJejZaj+Q4Cv0CqEqiWHekff3S2AXimDwxRysHn2OlKrCKEl jzTZgAbN+9UwOsy5VyEtkAFj2JFLquG20zwehnpisCLjhm3eyVIQm1esvIKoO1sNfGftBQ 8lMbO0JnamQTVIiie21q5pK2f4T1VnXc2eVCJnxEWF8fxkmGeXk2qos0TtI4Hji4iie8bk kQRvYThUoUGz5sNoj0/4x2oyOJuc322y7m02SHedP3bc2j4lNAmgE0+Ff9FP/DBT25TseB AVBw/FfytXpOR+wsgIe0F94ZW2wIjfAgqHxHp0S6siLpXK7aYftR5mBcrDOKFw== 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=1775168434; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=q6hinkaJ1SpsL7KzXPrYva1pRQ8/mJN3eEN3tCyj42s=; b=FJ+6UA+yamx4iY6JBCJOoVZd3b2KGS0wFB83zVsO4ddPFFeEm/M9cXOQzSV9SHhFr4RLhg dl8zZUO6ziFWCscLxVw2VPf5xT9Il5Gob1ANwT71fiRvyIPxEn/OEdU8S0wQseiz9gt7B5 8sZ19pHWLSXEqeb1l4VZ8Xav0wlveGP5d7uha7AqBzzWKlJwZV21/czFTn319AePyolNF5 k+GyRpIiCUh1GujwMQy0aBjGvn0BvJYkTATMWOp8PIk6Ur7nhhfozbdz6SVIbg+seg019B 9vxTy9Ftk/IDmNHC6Ok4AXc9yUj/NtESab0ziM4LaVS8kwX1RdSg0cdZu5eM6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxBV1mQGz5df for ; Thu, 02 Apr 2026 22:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43d1a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:20:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 3a01651c1b13 - stable/15 - ena: Minor changes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 3a01651c1b13df5ee3f6d083892c3a8dd48e35bd Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:20:29 +0000 Message-Id: <69ceebad.43d1a.7e7557c1@gitrepo.freebsd.org> The branch stable/15 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=3a01651c1b13df5ee3f6d083892c3a8dd48e35bd commit 3a01651c1b13df5ee3f6d083892c3a8dd48e35bd Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:12:41 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:17:36 +0000 ena: Minor changes 1. Move parenthesis to correct place in switch and fix include order 2. Add comment at the end of an ifdef for clarity 3. Change include order. Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55696 Sponsored by: Amazon, Inc. (cherry picked from commit 2667a8454cff5896c7b467c78cd4ace5ad40f5eb) --- sys/dev/ena/ena.c | 5 ++--- sys/dev/ena/ena_rss.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index af158b5aea1d..eddb7dbd42e8 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -1861,7 +1861,7 @@ ena_setup_io_intr(struct ena_adapter *adapter) adapter->que[i].domain = idx; #else adapter->que[i].domain = -1; -#endif +#endif /* RSS */ } return (0); @@ -2766,8 +2766,7 @@ ena_set_llq_configurations(struct ena_llq_configurations *llq_config, llq_config->llq_num_decs_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; - switch (ena_force_large_llq_header) - { + switch (ena_force_large_llq_header) { case ENA_LLQ_HEADER_SIZE_POLICY_REGULAR: use_large_llq = false; break; diff --git a/sys/dev/ena/ena_rss.h b/sys/dev/ena/ena_rss.h index 64dd41851fec..d2706deef8ca 100644 --- a/sys/dev/ena/ena_rss.h +++ b/sys/dev/ena/ena_rss.h @@ -35,13 +35,12 @@ #include "opt_rss.h" #include +#include "ena.h" #ifdef RSS #include #endif -#include "ena.h" - #define ENA_RX_RSS_MSG_RECORD_SZ 8 struct ena_indir { From nobody Thu Apr 2 22:44:02 2026 X-Original-To: dev-commits-src-branches@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 4fmxjZ37WVz6YvKC for ; Thu, 02 Apr 2026 22:44:02 +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 4fmxjZ2Fysz44l0 for ; Thu, 02 Apr 2026 22:44:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775169842; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G10VaMRictZIdc434icjIyHIJJxmAYVqNmO4nD9vU+o=; b=o/UxhACtpOGoHID9WPHYsb+Nb/70eysJFTpzZgc5EfvvK3sTuGGQaAr5/+vWXWc2VUaBQe x9seqgW5WZjbs4vBdShArqR4nqba1E+21/GYumHesywYb/8sdaCeQTpgxj6rBd8+YAaD6m L5S5Z4zPUDWGaWZtp95zUnJCjsIbvAsG48sP+cgerGZGAD5hvu3/j8ReHjWPebQzPHmC/5 mgXBcJy20ijeKFJa0KuFVp9IR1pWoUroWXuRjNLwtf6Df00e+NWhRh376vV3vbdoWJ7pFO 85ZfTyZcq5QnkUF8kSYX6ZVmMoWo/aRhRWQ2ZLXcmqCBUKuJL7+pZgAQjnEcqw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775169842; a=rsa-sha256; cv=none; b=NzySjrLwOLiqkwxiKlhULPSYWadi9y9Q9KBqsUO8wad2lWEr0OPXb0Et99nVrPk4VLvIoi itvqbZXkY/R6Pg4CcRNNM947YwmEc0XI4LX6UtejTFGgNMLZ8kX6kYtqUvjyqZ7G1ukdrb guiJAQakb+GhE+b/B2NwMiIvvGWqzgHIfoX0nAuC2sWgv1khUiWIIEcpxLZkRUKhvFS14F zjL6ggew/OUO8N3KtEdIHWVKY5cUX6ULj6Mq7b4u4ZADN3+RTcRj3AFQb2a4qMzkgXTUVP IbxZeezXTKTIFYtFjW1H8WNzhM0rT4cTSidmgnEnENfgpdkd3eujesboJU9rXQ== 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=1775169842; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G10VaMRictZIdc434icjIyHIJJxmAYVqNmO4nD9vU+o=; b=Az3PjPUcIX5pVRnQRHkpV/hCKnu4xwzQomnkdz3XpPjDMdqD8Pya8Y3bopH0MFJMTbJvS9 l5wibbXu2Nz4Dgp362v/rGndAGj0zlfUQv1fkq5uR4LkAmOc4ytBeWMuEYzbuIHTjva19G wsl8CGprj+/ygfQY+qZMW5AwYTuiFmry7HsTSXgkUUT95pscgh25i5SZtChSEU8Z59GhEK 59nCxHzTJwn/mIUOzfaaKY2Slc2hvyfx84kOiJ9Wucr9u1pwyfOhYDy/NQX5w71WFBxki5 16NNWf+xEW82CT2jPCAY/vLm/YNcbi2H2v2UZPUWzjaiKsZdYfKah6oVECiFvw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxjZ1mvWz66C for ; Thu, 02 Apr 2026 22:44:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4565f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:44:02 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 4fa6c1f0067e - stable/14 - ena: Minor changes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4fa6c1f0067e1313cb07cbf6dbb6ac2149d575be Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:44:02 +0000 Message-Id: <69cef132.4565f.49059df0@gitrepo.freebsd.org> The branch stable/14 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=4fa6c1f0067e1313cb07cbf6dbb6ac2149d575be commit 4fa6c1f0067e1313cb07cbf6dbb6ac2149d575be Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:12:41 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:39:50 +0000 ena: Minor changes 1. Move parenthesis to correct place in switch and fix include order 2. Add comment at the end of an ifdef for clarity 3. Change include order. Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55696 Sponsored by: Amazon, Inc. (cherry picked from commit 2667a8454cff5896c7b467c78cd4ace5ad40f5eb) --- sys/dev/ena/ena.c | 5 ++--- sys/dev/ena/ena_rss.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index af158b5aea1d..eddb7dbd42e8 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -1861,7 +1861,7 @@ ena_setup_io_intr(struct ena_adapter *adapter) adapter->que[i].domain = idx; #else adapter->que[i].domain = -1; -#endif +#endif /* RSS */ } return (0); @@ -2766,8 +2766,7 @@ ena_set_llq_configurations(struct ena_llq_configurations *llq_config, llq_config->llq_num_decs_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; - switch (ena_force_large_llq_header) - { + switch (ena_force_large_llq_header) { case ENA_LLQ_HEADER_SIZE_POLICY_REGULAR: use_large_llq = false; break; diff --git a/sys/dev/ena/ena_rss.h b/sys/dev/ena/ena_rss.h index 64dd41851fec..d2706deef8ca 100644 --- a/sys/dev/ena/ena_rss.h +++ b/sys/dev/ena/ena_rss.h @@ -35,13 +35,12 @@ #include "opt_rss.h" #include +#include "ena.h" #ifdef RSS #include #endif -#include "ena.h" - #define ENA_RX_RSS_MSG_RECORD_SZ 8 struct ena_indir { From nobody Thu Apr 2 22:44:03 2026 X-Original-To: dev-commits-src-branches@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 4fmxjb5Fsnz6YvHB for ; Thu, 02 Apr 2026 22:44:03 +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 4fmxjb3FNpz44hj for ; Thu, 02 Apr 2026 22:44:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775169843; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P24197/PZOvxaneayknjB18CRnu/Zvx9WRDsCWyHIFI=; b=GQu2Ogf2g6F9DK+1sMPT+Huia1WWfyBOWTpPoptsOC4BJdatQa3opLw9MqjAzSKL69rfm7 4ee3ZG63QUXjEqDNzXw5bSS2UT4r6NRpGqBO7iFPs1DmlUqX9xs2PukhscGQvfFdTs75Sx 3HDwRmJ39f7yjWpApZZ6oYXjDrRaMhn7GdpgnqQs0cNfeuKvuhtwNZRg/FjYF8u9OUgHrl TXihrUCk4J01hKW+ZZ28E2MGurmvhKoetmIShykfHxeXOFEv0gk4F53JFnBxQ4KjxGwlUi RqUXsGRggWzzem6cJ4JD5e0UC8d8MBJWmq8eIE0fJ88SQx7xX+wIaUqrI1eiYA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775169843; a=rsa-sha256; cv=none; b=CVKQlJk/P17MPg0lt2IGK2n93qmjkSQZYZQdDzBMUAyuLHhrvbJRq7zN8V/2AUqh8R85b5 42U0kTELnzyH5zMe3fBMOCHGCwliuODznsBbPRtjSbuz71vK77rec1Naw6LuP2l5foA6GU P/vZ5W1P70mp5CJxv3pHwV0ExXRElA/r9x6//G2wQKEG/0quvF60+B6kHxqHJzairQr0rI kt31U39NigyvFv6zq5hXq3BdSTwg72MRG7cCHn5c2jupFws4HdT69g2kv4hxrOOj9bHqoX yabYtYQlldYcdu5FWgxzq0gbsFoYMSWjxfZlwdI3ssPW5SRJnTBIh++AIQa0kQ== 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=1775169843; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P24197/PZOvxaneayknjB18CRnu/Zvx9WRDsCWyHIFI=; b=DNwJabe03lPHUfHZeL8sKktdNj6vYOziYNoUZ3CeAfL49e2CJypSbKC0zkMm7RIWGeNHvD 6V76tyazUCKA5OpkcWbyaErSskiBvTe7+bd16PAGhx8U3dmaLEgqSkLneb/6LVxmjpx1/r otM4zyGGDeBrLQl+x5d6tZ4/tPhARhRICfqtcETr0EM2+S2HdgLRJyaMy5+kswJqCuExd2 EZja0YOK4a88AfPHLkAgU1uYJAV/QKaR5PsQzGEjSll3GgkuY+cGsyqK441zuWHLxUPaJE Yn/n03ikSg4G2UFOy+t71Gt2rJ8B3RsAzShv+cd9/H3Yhj2n1xl/RvMxOV+2ag== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxjb2bhCz6TS for ; Thu, 02 Apr 2026 22:44:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 45c30 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:44:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: b345e18a7b67 - stable/14 - ena: Verify that an ENA ring is in netmap only in native mode List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b345e18a7b67ac7441c9305ed4193fabb9217c68 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:44:03 +0000 Message-Id: <69cef133.45c30.706f0aea@gitrepo.freebsd.org> The branch stable/14 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=b345e18a7b67ac7441c9305ed4193fabb9217c68 commit b345e18a7b67ac7441c9305ed4193fabb9217c68 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:13:00 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:39:50 +0000 ena: Verify that an ENA ring is in netmap only in native mode netmap operates in two modes: 1) Emulated - netmap handling is done by the network stack, the NIC driver operates transparently to netmap. 2) Native - netmap management is done by the NIC driver. When checking whether a specific ENA ring is running in netmap mode, only the following checks were done: 1. IFCAP_NETMAP - Check whether netmap capability is enabled on the device. 2. NKR_NETMAP_ON - Check whether netmap is actively using this ring. The above checks implied that the netmap mode is native and the ENA driver needs to handle the netmap logic. The code was missing an explicit check on whether native mode is actually on (NAF_NATIVE). This led to a case where though emulated mode was used and a netmap application was turned on, the ENA driver still managed netmap logic partially and caused missing buffers and lack of refill as part of the datapath. Note: Enabling netmap emulated mode is insufficient and there's a need to load a netmap program in order to trigger this use-case. Add an explicit check of whether NAF_NATIVE mode is set. The issue was reported in [1]. [1]: https://github.com/amzn/amzn-drivers/issues/361 Fixes: 358bcc4c6cde ("Add support for ENA NETMAP partial initialization") Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55697 Sponsored by: Amazon, Inc. (cherry picked from commit 97e84c587d6f86aa883720296449b380adcf6915) --- sys/dev/ena/ena_netmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ena/ena_netmap.c b/sys/dev/ena/ena_netmap.c index 8a220373ec3f..0e8c95fb289a 100644 --- a/sys/dev/ena/ena_netmap.c +++ b/sys/dev/ena/ena_netmap.c @@ -223,9 +223,11 @@ ena_ring_in_netmap(struct ena_adapter *adapter, int qid, enum txrx x) if (if_getcapenable(adapter->ifp) & IFCAP_NETMAP) { na = NA(adapter->ifp); - kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; - if (kring->nr_mode == NKR_NETMAP_ON) - return true; + if (na->na_flags & NAF_NATIVE) { + kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; + if (kring->nr_mode == NKR_NETMAP_ON) + return true; + } } return false; } From nobody Thu Apr 2 22:44:04 2026 X-Original-To: dev-commits-src-branches@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 4fmxjc5Dlsz6Yv8S for ; Thu, 02 Apr 2026 22:44:04 +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 4fmxjc3rNpz44Tw for ; Thu, 02 Apr 2026 22:44:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775169844; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jwaBi1/Kc19/sqFVw4ZVZMoOADYDMqxh7HG4fI3ZW2U=; b=Pn77TQNgYPgvzEHxthd0SYl/huUubDjieCGXVf0YA2C6N7gaSJ3mz2hsMvVQiFMzj8o6iK mO2tBj3GM2cCkSNe9Uo826heBFAhYiFtKe7VWDJPyqzOXRMt1anIqbq7fnmWqrjYdlYxk/ WtSd7mivyqNYdXRR8e8d0xQciMmvmYdfUpzUk9hL0qpLYYyFWqXFo6UaRqLjGjT0pQOvb7 QOeCox0K1/AnpzkmKSOW6QYsB4Bwpd3EaxKpDTOTySxgn16J8pek8oF0gqq7420nK9c9+W opffFWHhTpFlLiFNbu8aAiezvlZWING9AfMtcxCI02YWuh23xJ6xwvWlLWSDdA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775169844; a=rsa-sha256; cv=none; b=wbJbOOb0/o0ehDL4DmiDwBnwcqYRfweDU4oQoZ375Bmc+/83ulUvf53l6S94KatVCYhScB MSQxk14FMLPXnNbgco/Ev+0GniFT4VzFNhN9tqAXBANrQ9CSBK+F6a/0OkAXB+rfEGYCXx ZR1NDAyRaR39PgHwh4KPTbLMcc8sCOtU8mytsqCHMlosT7BR05V6IqMR/kvHxE/TLJzsoS miIb8jp3IyOsNy5T3a3XsWECLXU2qZuUzpIOaFBEyWEpLtuuijoL8xfX91WFtd1pr8R2ZO YDw5z6YJl+I7pBB/6+bwnol2lmbgvssbpwOQYsN/MT4wIen6bVDgcrkyVv0IKQ== 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=1775169844; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jwaBi1/Kc19/sqFVw4ZVZMoOADYDMqxh7HG4fI3ZW2U=; b=XnbyHYDV0nmgxw9LUuQzyojrZPXGlG4gyLz9ovvUHfQFig40EYjtoNMNchyYOha232Zf9g ZKxpm1ZuXc9BPW+A4XYE0Y/N+mWER1I55pQHCXD/+iYxgIDJQJnP/VKVy7u1YOF4gZ1Rfw 6f0xGNfBK5p5rYEYWj6+C6qhmLyw7JmMzk3mfZWMg918oYjwPSfwXVThwPvGtjNMT6DlvF vahgpT6WZKvV/vI8eRsXMyADY3WVHhbwm1WfQrfihcL4XzSRMaCyEjEbek8+SCmlfHZCk6 4w3Q87e0/kd/zCZd1qHLTppJLNMe20l9bPNqxfhhge5TdEbepSHVVDI9B3++NQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxjc3Nf0z6Jw for ; Thu, 02 Apr 2026 22:44:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 469c6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:44:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 92923511ce11 - stable/14 - ena: Update driver version to v2.8.2 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 92923511ce11999477c104422efe30101fea8d96 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:44:04 +0000 Message-Id: <69cef134.469c6.4b81c331@gitrepo.freebsd.org> The branch stable/14 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=92923511ce11999477c104422efe30101fea8d96 commit 92923511ce11999477c104422efe30101fea8d96 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:13:09 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:39:50 +0000 ena: Update driver version to v2.8.2 Bug Fixes: * Verify that an ENA ring is in netmap only in native mode Minor Changes: * Move parenthesis to correct place in switch * Add comment * Reorder define Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55698 Sponsored by: Amazon, Inc. (cherry picked from commit 96c5eaf0ac6b98d0832e1037d672064de43a7e00) --- sys/dev/ena/ena.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/ena/ena.h b/sys/dev/ena/ena.h index 3b01605b4ba7..f67c7002327d 100644 --- a/sys/dev/ena/ena.h +++ b/sys/dev/ena/ena.h @@ -39,7 +39,7 @@ #define ENA_DRV_MODULE_VER_MAJOR 2 #define ENA_DRV_MODULE_VER_MINOR 8 -#define ENA_DRV_MODULE_VER_SUBMINOR 1 +#define ENA_DRV_MODULE_VER_SUBMINOR 2 #define ENA_DRV_MODULE_NAME "ena" From nobody Thu Apr 2 22:50:54 2026 X-Original-To: dev-commits-src-branches@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 4fmxsV48Jlz6Yw8k for ; Thu, 02 Apr 2026 22:50:54 +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 4fmxsV1Jp4z46M8 for ; Thu, 02 Apr 2026 22:50:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775170254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=92Pk11T/qtUFnItzpG9s7qLj87QvqIiBd6FxfkD+jNg=; b=lLKWAgZcniz5T93snyz7OGz6YPWIo+4HuDfMd9il52LVBjaitrmSVQzG93s0bWB8QNldZZ c33k1vqEEnLSom3MjDhhQhcSgzYLiM4Ey036s+nRvMT+vzd5Nm5o8yOwxwBlleJZcfxiUp 4iqzMBcI2tY1QlzWjWbi2oX9OI8aurZLAoyYb2HPSc7Vc5ajGjTiptf/98WxLhtrD+zgVG eOlBPnTPWYa2f8CaZwIPjt8E6jCjkrp0KhMeMZfieO0EIk1LOzKB+ExDPaChKOAkk/RP/x siBjmGkOTEZh0B7QiA+GKOLiEAJ4pBPa83zzQnzW0eXLpCdSLNsS7S5odaK9BA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775170254; a=rsa-sha256; cv=none; b=aHNEj7T93yJkZ0JKCy+sDXw4m8SUKXn0LpgZgRaleDIxC0/WBo6uHa0mHxMelocyYt45sP HtCXz+QGCwABR5uDG3XskotJVrBwexxv0R7chjAJHErQVd/ZBqQ9I+wlj1oVN4KeHutJTp FyjZK/fH5sV86GkdsllaUzlPkAFsyaAkAcJRy5PeW2F1Zv1SR9MItzbbuAZjsMZ6SJdpGR ufJ47L3uoKjRPClx8d0X4oyNjmUxlcC7Ja7aennK9cqfbO9FAnX4YXUwp+QX7yJ02Z2rwa ja/rudVHEdgmh3Dsry3wq9x96HAgPuyY/G5JAQwyHUllHC2nYdOHwpH9OF+2UQ== 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=1775170254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=92Pk11T/qtUFnItzpG9s7qLj87QvqIiBd6FxfkD+jNg=; b=ZISy5UcExRln9r4dW6d6OWR7FwONOI86OwJwPGUlQWfM/1rhuiZ9m4paGBpUjmO67FQvlE s5roViHfL5/pq1nRK0gphtNd5TZlhBveYb/+dg/debERxSCElVFCc55FkcfjCXLbpA8O3/ OEXSrJhD418TS4pVEwK6A+glhrhQ4AGS0ZSH2sB7svdd1VGulWMw4OhUXHfwYTQfup4yJa QV9qd182/PopUno9CtXb7rLCTCYIIqLdV0lECRcz6jJ5BDqHqCUUzetPKCZ1EKLMh/gBhs u8n6aisDNQ9ys2I/hmpgNuKdPWtQN9MSSuZcXBUBJmS/Byd1GwgF9puTdDPjRA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxsV08twz6R9 for ; Thu, 02 Apr 2026 22:50:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 472e9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:50:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 0ae28e5776eb - stable/13 - ena: Minor changes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0ae28e5776eba547df52b6ce69da4c3d725525b8 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:50:54 +0000 Message-Id: <69cef2ce.472e9.5fc1e4cb@gitrepo.freebsd.org> The branch stable/13 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=0ae28e5776eba547df52b6ce69da4c3d725525b8 commit 0ae28e5776eba547df52b6ce69da4c3d725525b8 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:34:32 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:50:05 +0000 ena: Minor changes 1. Move parenthesis to correct place in switch and fix include order 2. Add comment at the end of an ifdef for clarity 3. Change include order. Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55696 Sponsored by: Amazon, Inc. (cherry picked from commit 2667a8454cff5896c7b467c78cd4ace5ad40f5eb) --- sys/dev/ena/ena.c | 5 ++--- sys/dev/ena/ena_rss.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index f9342ad91ae2..cf27c4c34a76 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -1861,7 +1861,7 @@ ena_setup_io_intr(struct ena_adapter *adapter) adapter->que[i].domain = idx; #else adapter->que[i].domain = -1; -#endif +#endif /* RSS */ } return (0); @@ -2767,8 +2767,7 @@ ena_set_llq_configurations(struct ena_llq_configurations *llq_config, llq_config->llq_num_decs_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; - switch (ena_force_large_llq_header) - { + switch (ena_force_large_llq_header) { case ENA_LLQ_HEADER_SIZE_POLICY_REGULAR: use_large_llq = false; break; diff --git a/sys/dev/ena/ena_rss.h b/sys/dev/ena/ena_rss.h index 64dd41851fec..d2706deef8ca 100644 --- a/sys/dev/ena/ena_rss.h +++ b/sys/dev/ena/ena_rss.h @@ -35,13 +35,12 @@ #include "opt_rss.h" #include +#include "ena.h" #ifdef RSS #include #endif -#include "ena.h" - #define ENA_RX_RSS_MSG_RECORD_SZ 8 struct ena_indir { From nobody Thu Apr 2 22:50:55 2026 X-Original-To: dev-commits-src-branches@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 4fmxsW2jjKz6YwHH for ; Thu, 02 Apr 2026 22:50:55 +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 4fmxsW1SfWz46Jp for ; Thu, 02 Apr 2026 22:50:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775170255; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GJSCeYx7Nti8u+xM0xUgGA3IX+XGoE5SH8A/W4vC5Iw=; b=tHytEMsK4c3lcpI6+KWVXNH0a5gZcWK+teHJrNejTtVqhjYjlLhfFZaidhuTB6durkfxwW 0NpFpHLpjLERwZL/oaTzXE6v1Y5gKnmDLxX6gdl4ua3nvuF4cs0WychQxVsMBcPUM3Sly1 YNWq5i/GCjn2WZq7ocqEq1dc9LNxUfHwEygh3sC2449ajt56I02iD8Qy2gv3ALY0xXbyYG OnVLTIkoGIldWLU+d8gxclrQ3baJBNgxwnLSUWbOGL9TQXLifmx3w8ljsb9Pp28oJGZ9dl A+uj2tLd0EAF5CQQU/PcXi0hDZDL34VLTwNyRJKo/llNX2r/5kpXkZFv+Z42kQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775170255; a=rsa-sha256; cv=none; b=SCr3naH7ZxZGKavFV+18JBoc+WZkzmav/kvNlakZ0MuB3aPdNkespgbchsiRsNgzhgStgn 9UlofIQMzc10FkkqIpYevXX1Po3pFYz3QkfCKnruzgjzEWYaVi+L/3ZbrQ4xKXosawPQ+n nFPq/Iv6IhbA2yPxqIxhhXRP49IaA9ET5Ge5jty8MbIFzk4NYstII7RSw5D+tpngWkvw+F TGQBXfJa/JQBlRGICIGuCz/mRZexB+CkaVuXqvRXChg1T2NolFLOgMZVlw/5E/F8GemgEc +BDXrVwct6INS3yDBaiimgvljyBaj7ub8wsLsOpg0zS/ZsWjZrtzlkF/FR+/WA== 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=1775170255; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GJSCeYx7Nti8u+xM0xUgGA3IX+XGoE5SH8A/W4vC5Iw=; b=dDswpqjMimqcmyYi9FSttCE51mSEWjOXYoeKauc1r3crYCJeyQNQIf7EDMglWDwDbz9k42 SNZo8apgo4UVVbBGbXmdIbS9hvTgxyKF8BaJkd3tZeT17iPpaYFjClnBiGuWHOcdGZpV3/ Wgwr6q6XWLrq7hBALfDULo5HuLGEBkbM6TRJ4TawKR+xtwhoMukt7eXWLUzbPsRMXlxOqM Njnn2WjYunfIXgWaII8l7q8jbwkV9cZDz4aXD5EDpB/UUTaWGeiXiVAbLJxBC0B8xLYz9F hns7wJYhOjJ4ymWPurKEY5jtLtJC/mYt2JOXbUwuwz7Ygf8dojR2cDa4YgCisg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxsW0xzKz66P for ; Thu, 02 Apr 2026 22:50:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 472ee by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:50:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: f5370d118335 - stable/13 - ena: Verify that an ENA ring is in netmap only in native mode List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f5370d118335defda098f0589ee96e84e3645174 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:50:55 +0000 Message-Id: <69cef2cf.472ee.534f3cfd@gitrepo.freebsd.org> The branch stable/13 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=f5370d118335defda098f0589ee96e84e3645174 commit f5370d118335defda098f0589ee96e84e3645174 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:34:50 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:50:05 +0000 ena: Verify that an ENA ring is in netmap only in native mode netmap operates in two modes: 1) Emulated - netmap handling is done by the network stack, the NIC driver operates transparently to netmap. 2) Native - netmap management is done by the NIC driver. When checking whether a specific ENA ring is running in netmap mode, only the following checks were done: 1. IFCAP_NETMAP - Check whether netmap capability is enabled on the device. 2. NKR_NETMAP_ON - Check whether netmap is actively using this ring. The above checks implied that the netmap mode is native and the ENA driver needs to handle the netmap logic. The code was missing an explicit check on whether native mode is actually on (NAF_NATIVE). This led to a case where though emulated mode was used and a netmap application was turned on, the ENA driver still managed netmap logic partially and caused missing buffers and lack of refill as part of the datapath. Note: Enabling netmap emulated mode is insufficient and there's a need to load a netmap program in order to trigger this use-case. Add an explicit check of whether NAF_NATIVE mode is set. The issue was reported in [1]. [1]: https://github.com/amzn/amzn-drivers/issues/361 Fixes: 358bcc4c6cde ("Add support for ENA NETMAP partial initialization") Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55697 Sponsored by: Amazon, Inc. (cherry picked from commit 97e84c587d6f86aa883720296449b380adcf6915) --- sys/dev/ena/ena_netmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ena/ena_netmap.c b/sys/dev/ena/ena_netmap.c index 41eb8abab39d..6a6ef67f9561 100644 --- a/sys/dev/ena/ena_netmap.c +++ b/sys/dev/ena/ena_netmap.c @@ -223,9 +223,11 @@ ena_ring_in_netmap(struct ena_adapter *adapter, int qid, enum txrx x) if (adapter->ifp->if_capenable & IFCAP_NETMAP) { na = NA(adapter->ifp); - kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; - if (kring->nr_mode == NKR_NETMAP_ON) - return true; + if (na->na_flags & NAF_NATIVE) { + kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; + if (kring->nr_mode == NKR_NETMAP_ON) + return true; + } } return false; } From nobody Thu Apr 2 22:50:56 2026 X-Original-To: dev-commits-src-branches@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 4fmxsX5X64z6YwF1 for ; Thu, 02 Apr 2026 22:50:56 +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 4fmxsX2Hcgz46fW for ; Thu, 02 Apr 2026 22:50:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775170256; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MLdsvH2zFmRls+HaeIKJ5V088InORKoHAWPkZ494QgU=; b=h5LDmGAS3qrkugO2FSQlSEAazEhU2j3jjMHnb2vNzcOhFwllh8WklOI+eQ3FhBov1LlOYD ogkJeZitjtdFcbfz3YpmiukQPNm7fYcq6CCaqrUAys0rw0OOU/OPPoyUFwOh6PPC1a5C0Q ZkLw6eNGPOg4mQerDmJQsIZwKh9BeVYPiTY8RBk4VgA/R7FwvwmLwohOjUNRBWvpb5l0W6 A9W1SmpmPLLrbin9aOwP5cLXzcIBClUf/RrwoKTItfqXbgV4aVA4hkBsIuzUIG/w8YxA/S j5Jp8pCl882+ZFdozB79EP++0fxwzlDyB0HE8C+AsFYWhBTo1Mf6dPtTBhwzEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775170256; a=rsa-sha256; cv=none; b=exzIvv4y5nkBn4vsCDb6ILR9jvzJvL7wK9S2XaeIuh40s6W48e7GCvWy6ijTXij5VvJ94Q A4zkguqbOfsVyEPYWJHEHCbF0Z+c1I4bUO3ozo1SJPa1qrKzkTjwM0NbNwePlKNb8z5f0P MMStqMRLyZ/cFZlAImSUiU5LllYhehRFBg21/NeFJZAjCxJbFwXrn/1+zbbMrZV06UGTKC Z89JLqnVmpCTnusSp6W6cmwALakaHpY1hAjJDSQlGwXjIXrGYX6Iuxg+OL7tfO1LevGV67 p5hb4aIC34mhQM0R3czRjYASRcOG1JAO6IxvgWv/sPYv0G+/KrDeVonv2UHOaw== 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=1775170256; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MLdsvH2zFmRls+HaeIKJ5V088InORKoHAWPkZ494QgU=; b=lSqrxGsm4y6eTeG1m5n8nFAobYiXfOkdFt/a/K9FdO3bPNvtycOaaZYEHFa59T6x4os9qV RYBF5eMFzebqLSrcswCQHoNNCZ3QhXSxnPn7Gszb1DjaPgkgpz0V/88XPyu9Ci490wbdCa 7QIv8DDpHPFk0kgqorCdd9Aoh+TMDeNtpPxCubiH+OuQPBKwcOofI4obkmq0Gte/rhhYlc tqTGlu2McEF7AIi6xddSsI4G0lPogOwF+gcar8p3acidQcqt+OiOmNV/Eaoup5/5UQlSuo VR+Unv9hGjZY/ufHsVjdepidPEGD152DPb2F0Qyg9KmndKKhK/FHuhVBaQf2tg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxsX1m6Rz6Np for ; Thu, 02 Apr 2026 22:50:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 455ed by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:50:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 5fdb633777d2 - stable/13 - ena: Update driver version to v2.8.2 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5fdb633777d2acd696dcb11ccd5b49b707f8bf35 Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:50:56 +0000 Message-Id: <69cef2d0.455ed.56bccd1e@gitrepo.freebsd.org> The branch stable/13 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=5fdb633777d2acd696dcb11ccd5b49b707f8bf35 commit 5fdb633777d2acd696dcb11ccd5b49b707f8bf35 Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:34:56 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:50:05 +0000 ena: Update driver version to v2.8.2 Bug Fixes: * Verify that an ENA ring is in netmap only in native mode Minor Changes: * Move parenthesis to correct place in switch * Add comment * Reorder define Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55698 Sponsored by: Amazon, Inc. (cherry picked from commit 96c5eaf0ac6b98d0832e1037d672064de43a7e00) --- sys/dev/ena/ena.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/ena/ena.h b/sys/dev/ena/ena.h index 3b01605b4ba7..f67c7002327d 100644 --- a/sys/dev/ena/ena.h +++ b/sys/dev/ena/ena.h @@ -39,7 +39,7 @@ #define ENA_DRV_MODULE_VER_MAJOR 2 #define ENA_DRV_MODULE_VER_MINOR 8 -#define ENA_DRV_MODULE_VER_SUBMINOR 1 +#define ENA_DRV_MODULE_VER_SUBMINOR 2 #define ENA_DRV_MODULE_NAME "ena" From nobody Fri Apr 3 15:26:13 2026 X-Original-To: dev-commits-src-branches@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 4fnMxx5K44z6Yg5V for ; Fri, 03 Apr 2026 15:26:13 +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 4fnMxx4lVdz3f09 for ; Fri, 03 Apr 2026 15:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229973; 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=U/CS7DT6Xfp3hkzDg4hdoD7b/l1mK40VcQ5RgXLrb70=; b=EdW+SYsQCnA+adK+/LqFo5oNj4VROwRNN3TpCwwuOBiyNzRQIszVVIUWOZVL4R0jUpqfdW RPSpMlzRf/zhj4qiGf/WFfum8nuN3xy31PumMjInJ7toq3RGAaLQGL8CcuH35YZ7e/MQwv F7RG4inEABOq/69qzh6ftmbqVo4EdKJZ0SAi0HJSa5IPGsNAXhD6KNwL9z85dDWrE3BmMo e/MayaeREnyd3pLkx4uAispk7N2StzAAxCfx+3RXyGkNPvGKhDM+l21dxj3S7GB61rVj9c mEiRTPq9kcJ+JCzcdC0mbqHeOX8k96rY4fWNBvLyyU1WcKLWxRwCZNxB/IABVA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229973; a=rsa-sha256; cv=none; b=jyuTB+2FYOg/AFF/yO+oVzttqNJKilY5rru9ssIZdXMsQjncuT3SPxRhg+Ht9gs4srJTAc r0NxSgLZkkaafiKgiVjLtbHz+MdOjabrnYpjuRP2XVmqDY5XvxXWwGZPbZw0Bzb7zLtxBA U/xFDSllIyr7SpcMfpJEzXQzqw1qKtHaacnM8tf+OMdZnJhqsycg4KFWNUEi60Za6ZlYzX 3ppM8JRYEUPyQSxwpowcdQ1LZTV/m5qzZq3LXQRJ4gzfxqPkKE96i2d75T5yLK2dDhUpIR PPnbQk9KIZIIsl2mKHKuxf7fQZvMvkwd9D+2jg18OYzY+LEASiGrAxMX5bP7rg== 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=1775229973; 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=U/CS7DT6Xfp3hkzDg4hdoD7b/l1mK40VcQ5RgXLrb70=; b=QJ8MQEgVE7maHXczGD0GV8t16pPIUOBCLsRBr7HPe40FAlGalksKJAzmHlzSqb6QTO3eEG f0ogmqs4BBbkRUdDt0OE6Sr1OV0w6ZyIfWyaeeXsma24v1+AyshrpWq4eeqkvCoQIWeWyA nYsA+OU3WCkxHUOp6n9eDKRcXHjpPjkowA6txEtg5veveG/oT3BZg9Fz5I6NvSAC3C47QV sJk4B3uyWIrOVIb5Vzo2xdOk8+ed1tXaRRt/vnw80ohiSmFgkWqEE6pYpTWytAlvMTlvyl 9q+Pnw2dx0yk2xMB6AobnCcVNvppCqsX3IBRQuiwB43skOlOV3/DeAHhRkzHRg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMxx3xT4zv1L for ; Fri, 03 Apr 2026 15:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4092e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: c484a2dc47cc - stable/15 - timerfd: Add tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c484a2dc47cccd894e9d7b1fd0a64b2051cb4861 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:13 +0000 Message-Id: <69cfdc15.4092e.53ed59a6@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=c484a2dc47cccd894e9d7b1fd0a64b2051cb4861 commit c484a2dc47cccd894e9d7b1fd0a64b2051cb4861 Author: Jake Freeland AuthorDate: 2026-03-20 06:31:30 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Add tests Take Jan Kokemuller's timerfd tests from the epoll-shim project, stripping out code that isn't directly related to FreeBSD. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55789 MFC after: 2 weeks (cherry picked from commit 834c1ba793d900b791e19ff449b1e0b96fb494a0) --- tests/sys/kern/Makefile | 3 + tests/sys/kern/timerfd.c | 1318 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1321 insertions(+) diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index 00afd03c15ce..7f484f50bd56 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -53,6 +53,9 @@ ATF_TESTS_C+= subr_physmem_test PLAIN_TESTS_C+= subr_unit_test ATF_TESTS_C+= sysctl_kern_proc ATF_TESTS_C+= sys_getrandom +ATF_TESTS_C+= timerfd +CFLAGS.timerfd+= -I${.CURDIR} +LIBADD.timerfd+= pthread ATF_TESTS_C+= tty_pts ATF_TESTS_C+= unix_dgram ATF_TESTS_C+= unix_passfd_dgram diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c new file mode 100644 index 000000000000..37cb4924faf1 --- /dev/null +++ b/tests/sys/kern/timerfd.c @@ -0,0 +1,1318 @@ +/*- + * SPDX-License-Identifier: MIT + * + * Copyright (c) 2016 Jan Kokemüller + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +/* Time in ns that sleeps are allowed to take longer for in unit tests. */ +#define TIMER_SLACK (90000000) + +ATF_TC_WITHOUT_HEAD(timerfd__many_timers); +ATF_TC_BODY(timerfd__many_timers, tc) +{ + int timer_fds[256]; + int i; + + for (i = 0; i < (int)nitems(timer_fds); ++i) { + timer_fds[i] = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + if (timer_fds[i] < 0 && errno == EMFILE) { + atf_tc_skip("timerfd_create: EMFILE"); + } + ATF_REQUIRE_MSG(timer_fds[i] >= 0, "errno: %d", errno); + } +} + +static uint64_t +wait_for_timerfd(int timerfd) +{ + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ssize_t r = read(timerfd, &timeouts, sizeof(timeouts)); + + ATF_REQUIRE_MSG(r == (ssize_t)sizeof(timeouts), "%d %d", (int)r, errno); + ATF_REQUIRE(timeouts > 0); + return timeouts; +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_timer); +ATF_TC_BODY(timerfd__simple_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 100000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec < 100000000 + TIMER_SLACK); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_periodic_timer); +ATF_TC_BODY(timerfd__simple_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 200000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 200000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 200000000) || e.tv_sec > 0); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec < 200000000 + TIMER_SLACK); + ATF_REQUIRE(timeouts == 1); + + usleep(400000); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE(timeouts >= 2); + ATF_REQUIRE(timeouts == 2); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__complex_periodic_timer); +ATF_TC_BODY(timerfd__complex_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 200000001, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 100000000) || e.tv_sec > 0); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE_MSG(e.tv_sec == 0 && e.tv_nsec >= 100000000 && + e.tv_nsec < 100000000 + TIMER_SLACK, + "%ld", (long)e.tv_nsec); + ATF_REQUIRE(timeouts == 1); + + usleep(401000); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts >= 2, "%d", (int)timeouts); + ATF_REQUIRE_MSG(timeouts == 2, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_periodic_timer); +ATF_TC_BODY(timerfd__reset_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 50000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 150000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 150000000 && + e.tv_nsec < 150000000 + TIMER_SLACK * 2); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reenable_periodic_timer); +ATF_TC_BODY(timerfd__reenable_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 250) == 0); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 350000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 350000000 && + e.tv_nsec < 350000000 + TIMER_SLACK * 2); + + time = (struct itimerspec) { + .it_value.tv_sec = 1, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 1, + .it_interval.tv_nsec = 0, + }; + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + ATF_REQUIRE(close(timerfd) == 0); +} + +/* + * Adapted from sghctoma's example here: + * https://github.com/jiixyj/epoll-shim/issues/2 + * + * The SIGUSR1 signal should not kill the process. + */ +ATF_TC_WITHOUT_HEAD(timerfd__expire_five); +ATF_TC_BODY(timerfd__expire_five, tc) +{ + int fd; + struct itimerspec value; + uint64_t total_exp = 0; + + fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(fd >= 0); + + value.it_value.tv_sec = 3; + value.it_value.tv_nsec = 0; + value.it_interval.tv_sec = 1; + value.it_interval.tv_nsec = 0; + + ATF_REQUIRE(timerfd_settime(fd, 0, &value, NULL) == 0); + + sigset_t sigs; + sigemptyset(&sigs); + sigaddset(&sigs, SIGUSR1); + sigprocmask(SIG_BLOCK, &sigs, NULL); + + kill(getpid(), SIGUSR1); + + for (;;) { + uint64_t exp = wait_for_timerfd(fd); + + printf("timer expired %u times\n", (unsigned)exp); + + total_exp += exp; + if (total_exp >= 5) { + break; + } + } + + ATF_REQUIRE(close(fd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_gettime); +ATF_TC_BODY(timerfd__simple_gettime, tc) +{ + struct itimerspec curr_value; + + int fd = timerfd_create(CLOCK_MONOTONIC, 0); + ATF_REQUIRE(fd >= 0); + + ATF_REQUIRE(timerfd_gettime(fd, &curr_value) == 0); + + ATF_REQUIRE(curr_value.it_value.tv_sec == 0); + ATF_REQUIRE(curr_value.it_value.tv_nsec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_sec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_nsec == 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + curr_value = time; + ATF_REQUIRE(timerfd_settime(fd, 0, &time, &curr_value) == 0); + ATF_REQUIRE(curr_value.it_value.tv_sec == 0); + ATF_REQUIRE(curr_value.it_value.tv_nsec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_sec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_nsec == 0); + + ATF_REQUIRE(close(fd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_blocking_periodic_timer); +ATF_TC_BODY(timerfd__simple_blocking_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = 0; + int num_loop_iterations = 0; + + while (timeouts < 3) { + uint64_t timeouts_local; + ATF_REQUIRE( + read(timerfd, &timeouts_local, sizeof(timeouts_local)) == + (ssize_t)sizeof(timeouts_local)); + ATF_REQUIRE(timeouts_local > 0); + + ++num_loop_iterations; + timeouts += timeouts_local; + } + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 300000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 300000000 && + e.tv_nsec < 300000000 + TIMER_SLACK); + + ATF_REQUIRE(num_loop_iterations <= 3); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__argument_checks); +ATF_TC_BODY(timerfd__argument_checks, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(timerfd, 0, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(-2, 0, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EBADF, timerfd_settime(-2, 0, &time, NULL) < 0); + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(-2, 42, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EINVAL, timerfd_settime(-2, 42, &time, NULL) < 0); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 42, &time, NULL) < 0); + + { + time = (struct itimerspec) { + .it_value.tv_sec = -1, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = -1, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = -1, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = -1, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1000000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 1000000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_create(CLOCK_MONOTONIC | 42, TFD_CLOEXEC)); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | 42)); + + ATF_REQUIRE(close(timerfd) == 0); + + struct itimerspec itimerspec; + ATF_REQUIRE_ERRNO(EBADF, timerfd_gettime(timerfd, &itimerspec) < 0); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &itimerspec, NULL) < 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__upgrade_simple_to_complex); +ATF_TC_BODY(timerfd__upgrade_simple_to_complex, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 50000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 95000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 50000000) || e.tv_sec > 0); + ATF_REQUIRE_MSG(e.tv_sec == 0 && e.tv_nsec < 50000000 + TIMER_SLACK, + "%ld", e.tv_nsec); + + timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 145000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 145000000 && + e.tv_nsec < 145000000 + TIMER_SLACK); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__absolute_timer); +ATF_TC_BODY(timerfd__absolute_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + + struct timespec ts_600ms = { + .tv_sec = 0, + .tv_nsec = 600000000, + }; + + timespecadd(&time.it_value, &ts_600ms, &time.it_value); + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + // Don't read(2) here! + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE(e.tv_sec == 0 && + /* Don't check for this because of spurious wakeups. */ + /* e.tv_nsec >= 600000000 && */ + e.tv_nsec < 600000000 + TIMER_SLACK); + + struct itimerspec zeroed_its = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + ATF_REQUIRE(timerfd_settime(timerfd, 0, &zeroed_its, NULL) == 0); + + uint64_t timeouts; + ATF_REQUIRE_ERRNO(EAGAIN, + read(timerfd, &timeouts, sizeof(timeouts)) < 0); + + ATF_REQUIRE(poll(&pfd, 1, 0) == 0); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__absolute_timer_in_the_past); +ATF_TC_BODY(timerfd__absolute_timer_in_the_past, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + { + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 10, + .it_interval.tv_nsec = 0, + }; + time.it_value.tv_sec -= 1; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 1000) == 1); + } + + { + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 10000000, + }; + time.it_value.tv_sec -= 1; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + } + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + + ATF_REQUIRE_MSG(timeouts >= 101, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_absolute); +ATF_TC_BODY(timerfd__reset_absolute, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + { + struct itimerspec time = { + .it_value = b, + }; + time.it_value.tv_sec += 10; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 100) == 0); + } + + { + struct itimerspec time = { + .it_value = b, + }; + time.it_value.tv_nsec += 500000000; + if (time.it_value.tv_nsec >= 1000000000) { + time.it_value.tv_nsec -= 1000000000; + time.it_value.tv_sec += 1; + } + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 1000) == 1); + } + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + + ATF_REQUIRE_MSG(timeouts == 1, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC(timerfd__periodic_timer_performance); +ATF_TC_HEAD(timerfd__periodic_timer_performance, tc) +{ + atf_tc_set_md_var(tc, "timeout", "1"); +} +ATF_TC_BODY(timerfd__periodic_timer_performance, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 1, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + usleep(400000); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__argument_overflow); +ATF_TC_BODY(timerfd__argument_overflow, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + { + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) < 0); + } + { + struct itimerspec time = { + .it_value.tv_sec = LONG_MAX, + .it_value.tv_nsec = 999999999, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 500) == 0); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) < 0); + } + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC(timerfd__short_evfilt_timer_timeout); +ATF_TC_HEAD(timerfd__short_evfilt_timer_timeout, tc) +{ + atf_tc_set_md_var(tc, "timeout", "30"); +} +ATF_TC_BODY(timerfd__short_evfilt_timer_timeout, tc) +{ + int kq = kqueue(); + ATF_REQUIRE(kq >= 0); + + bool returns_early = false; + + for (int l = 0; l < 10; ++l) { + for (int i = 1; i <= 17; ++i) { + struct kevent kev; + EV_SET(&kev, 0, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, i, + 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(kevent(kq, &kev, 1, NULL, 0, NULL) == 0); + + ATF_REQUIRE(kevent(kq, NULL, 0, &kev, 1, NULL) == 1); + + struct timespec e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + + struct timespec diff; + timespecsub(&e, &b, &diff); + + if (diff.tv_sec != 0 || diff.tv_nsec < i * 1000000) { + fprintf(stderr, + "expected: %lldns, got: %lldns\n", + (long long)(i * 1000000LL), + (long long)diff.tv_nsec); + returns_early = true; + goto check; + } + } + } + +check: + ATF_REQUIRE(!returns_early); + + ATF_REQUIRE(close(kq) == 0); + + /* + * timerfd's should never return early, regardless of how + * EVFILT_TIMER behaves. + */ + + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + for (int l = 0; l < 10; ++l) { + for (int i = 1; i <= 17; ++i) { + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = i * 1000000, + }; + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE( + timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + struct timespec e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + + struct timespec diff; + timespecsub(&e, &b, &diff); + + ATF_REQUIRE( + diff.tv_sec == 0 && diff.tv_nsec >= i * 1000000); + fprintf(stderr, "%dms, waited %lldns\n", i, + (long long)diff.tv_nsec); + } + } + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__unmodified_errno); +ATF_TC_BODY(timerfd__unmodified_errno, tc) +{ + ATF_REQUIRE(errno == 0); + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + (void)wait_for_timerfd(timerfd); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(close(timerfd) == 0); + ATF_REQUIRE(errno == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_to_very_long); +ATF_TC_BODY(timerfd__reset_to_very_long, tc) +{ + ATF_REQUIRE(errno == 0); + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 630720000, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; *** 376 LINES SKIPPED *** From nobody Fri Apr 3 15:26:14 2026 X-Original-To: dev-commits-src-branches@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 4fnMxz0v8jz6YgTL for ; Fri, 03 Apr 2026 15:26:15 +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 4fnMxy5Cd7z3fNV for ; Fri, 03 Apr 2026 15:26:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229974; 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=OsVFuOo6p5OXp9z+n7Fyl+FmPc2y1JbSbcOSwSHYzCc=; b=TTE9m5pPiGwy2ZFZTGeIFJtr0A1m1j0y1Zk21gmKnb9teX67auajDabos98BR21GLSxK5b Y7CYAL1UdmCpA3u0On+KzeM6e4MFH6MLT/Wq8yQbqhlFaHKAMeRAuyBrs77ZGILqYQbCOs Glcsvvxbd3q5ZY+B0xCgVcju8qpDBQbdb+C8tjeJZzbqwM3SjA+bq0egNowcZ4ykhNn/TR UoeruDydvbLAPf5lGqNZYDATYlFVQCPQMNBW04H+d+JtrJk7MTN2TYRGSSWDa/M+yP/9ap zV60XJasKHiS5oDmEhwoQebPlh/1jvj86jEGSujXWd2czlE+Yyi6aFifPjQqRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229974; a=rsa-sha256; cv=none; b=X75uFTUzvV6/oHLz7Y80tryItqIn+Ve41QjlVzhKXXh1fmnWOXkyDcOQyxZRVoP+ccBnuX vR89k2gs0hg92N44VsU2FkFLlFyiJZc5BMQAADnO+zJkKT0vMzYSazYr0v4ZILUf8vgXQP +bvw4Y3FgXpUSDg3B/TRzBvLoMzH2Y5nf5fMM/rBmi1n7EaP5yL3k9e1A+DyMfAUJdF8K0 EOCRTWo7DvDKLlGM0gKGMpdaicYjQhXJ4q+3QufO5M9G9eRDbZwMMrL/MUoJCZ+n7fJn1Q JbOtAmMG1BiZ3VRRnkMWDKST+J7shrxMY4fF1qmApKYU1f0fnvigYaGGcDRzTg== 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=1775229974; 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=OsVFuOo6p5OXp9z+n7Fyl+FmPc2y1JbSbcOSwSHYzCc=; b=ICFPnqcOsKzdp6KWZlKxAbUbNdhEhv1MDHMYtfvfpJEcamATC+b2BKJtXnQSVNe9aAlZ+R /HubmIhY4FIuDFGglFXNzZ0h57Q1ouV2tnWmwZ8efVgUTBgpwZnPN59/T7kKaD0d7rdv1g MWqJSg6vxiQ3MADyDknciS6q+95eZPMUnkz9WkPhT0dXPKxSXREzTLVMiyAr57gQGdObHl qbKPaF/xa63CUKIVGIkSGXyZnv99MC7AONnZiBDjt9LC8eupsQpg4qM3aB97eyeXN5sIQx Hi9hX6yc4qqW+cxTqcmRLk9f/GpiaGLBodtw+AHgsLzX2qcfNzZOgP2QFyWnxw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMxy4fTpzvKG for ; Fri, 03 Apr 2026 15:26:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ff42 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 9b785380f307 - stable/15 - timerfd: Fix interval callout scheduling List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9b785380f307e772eae0df017c982acd81d5879e Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:14 +0000 Message-Id: <69cfdc16.3ff42.280308ab@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=9b785380f307e772eae0df017c982acd81d5879e commit 9b785380f307e772eae0df017c982acd81d5879e Author: Jake Freeland AuthorDate: 2026-03-20 06:33:03 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Fix interval callout scheduling When a timerfd interval callout misses its scheduled activation time, a differential is calculated based on the actual activation time and the scheduled activation time. This differential is divided by the timerfd's interval time and the quotient is added to the timerfd's counter. Before this change, the next callout was scheduled to activate at: scheduled activation time + timerfd interval. This change fixes the scheduling of the next callout to activate at: actual activation time + timerfd interval - remainder. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55790 MFC after: 2 weeks (cherry picked from commit 85c0f1a87da1fd1eb3e646e86f70e630c48da91a) --- sys/kern/sys_timerfd.c | 24 +++++++++++++----------- tests/sys/kern/timerfd.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index 565ab3ad6ee6..236dfe8bb96a 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -393,23 +393,25 @@ static void timerfd_expire(void *arg) { struct timerfd *tfd = (struct timerfd *)arg; - struct timespec uptime; + sbintime_t exp, interval, now, next, diff; ++tfd->tfd_count; tfd->tfd_expired = true; if (timespecisset(&tfd->tfd_time.it_interval)) { + exp = tstosbt(tfd->tfd_time.it_value); + interval = tstosbt(tfd->tfd_time.it_interval); + now = sbinuptime(); + next = now + interval; + /* Count missed events. */ - nanouptime(&uptime); - if (timespeccmp(&uptime, &tfd->tfd_time.it_value, >)) { - timespecsub(&uptime, &tfd->tfd_time.it_value, &uptime); - tfd->tfd_count += tstosbt(uptime) / - tstosbt(tfd->tfd_time.it_interval); + if (now > exp) { + diff = now - exp; + tfd->tfd_count += diff / interval; + next -= diff % interval; } - timespecadd(&tfd->tfd_time.it_value, - &tfd->tfd_time.it_interval, &tfd->tfd_time.it_value); - callout_schedule_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), - 0, C_ABSOLUTE); + + callout_schedule_sbt(&tfd->tfd_callout, next, 0, C_ABSOLUTE); + tfd->tfd_time.it_value = sbttots(next); } else { /* Single shot timer. */ callout_deactivate(&tfd->tfd_callout); diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index 37cb4924faf1..b24d093b346e 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -949,6 +949,34 @@ ATF_TC_BODY(timerfd__reset_to_very_long, tc) ATF_REQUIRE(errno == EAGAIN); } +ATF_TC_WITHOUT_HEAD(timerfd__missed_events); +ATF_TC_BODY(timerfd__missed_events, tc) +{ + struct itimerspec its = { }; + uint64_t timeouts; + int timerfd; + + timerfd = timerfd_create(CLOCK_REALTIME, TFD_CLOEXEC); + ATF_REQUIRE(timerfd >= 0); + + ATF_REQUIRE(clock_gettime(CLOCK_REALTIME, &its.it_value) == 0); + its.it_value.tv_sec -= 1000; + its.it_interval.tv_sec = 1; + + ATF_REQUIRE(timerfd_settime(timerfd, TFD_TIMER_ABSTIME, &its, + NULL) == 0); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts == 1001, "%ld", (long)timeouts); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts == 1, "%ld", (long)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + /* * Tests requiring root (clock_settime on CLOCK_REALTIME). * Tests gracefully skip if not running as root. @@ -1306,6 +1334,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, timerfd__short_evfilt_timer_timeout); ATF_TP_ADD_TC(tp, timerfd__unmodified_errno); ATF_TP_ADD_TC(tp, timerfd__reset_to_very_long); + ATF_TP_ADD_TC(tp, timerfd__missed_events); ATF_TP_ADD_TC(tp, timerfd_root__zero_read_on_abs_realtime); ATF_TP_ADD_TC(tp, timerfd_root__read_on_abs_realtime_no_interval); From nobody Fri Apr 3 15:26:15 2026 X-Original-To: dev-commits-src-branches@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 4fnMy01Bhlz6YgQh for ; Fri, 03 Apr 2026 15:26:16 +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 4fnMxz626dz3f2W for ; Fri, 03 Apr 2026 15:26:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229975; 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=cmNHJNrxmSbeC3Jg0AYM17lYRBbbRsIkelarT0Wgqa4=; b=LUZZ+meAkU+4xyw5i37YPU6nROJb+e46no40KCEbJJQ/2aqvD6mQlz2LM02G/nW6GOlb/T pRgC3S2FhyUNPhjbCjXKbWCGCgniUzhGTomqDHifnWO4LVGiZh9aqyZqJakreIY6S+N4HQ WwlsTMBDeCnnHZHSt2XgtkZj8e04eYTHveE5xbxcY5lO4gI0WajP2YTYzXIXt0+HrRW4Df MNNwbqjLuh0M6lO7r+i1nbs9b+qOMgLtnoRJJVzey0Wzc7+NVbMfgL8WoHxw2In0qoXi1+ iEuuY2dfEqAHVJLC6rav9hTCm+GQES904+ryZqyoTTXCQxpfbqwCSHCaQh7Lfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229975; a=rsa-sha256; cv=none; b=CaCWlRljCNZNd4NAW0TVcrJG9sjc9ugpKxoDVkAJhGVFtJAgQYttl0VONFqf8liXNJNEML UL6LeW2oYHhwk3nF5vFT0YuV8YHYmKdABsD0ar8/ojRfE6ByG32HQB4Fi+u7l0CeZLdF8T IGJW+CYwgvct5cE+nMY9JldBpU/R88Q99OIWZ5FjEhRqXeIPSwVbxtgsR/FUEkWzu6edMv z6IZ2VRnoe3X7n14sW0eCHsFAT0+gyzfYglpAc3p3zQ6RVFNOmAfUSvkWISERjYmCh39tF AhaVdwi3GGhRx+63ZFumghnIYHaIJCkDZkNwv3oUDV2NcAObZZF/qBGqzdPWEg== 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=1775229975; 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=cmNHJNrxmSbeC3Jg0AYM17lYRBbbRsIkelarT0Wgqa4=; b=msK+xavZ+CXODInefJ7phw7xHRoAv+o8JyR449FXo+oZBvdwvHiil8AYauPXPlWpxZfDI3 hSnwLuPxCPdMT8moEaDZ8TFUfQRBE3M4HSHRYFIT48coKcnXZGu8fBFhoOhAryOKr8i3pf hLfGkqCjyit/CAqnovp8vhajyDlQJnI0LR16PeLWzI7l4LF9a3MmhojvGh6Q8qD0LNoZMy 5oaWvNscssyunbHdJ93JSplDCLucmTG/OEmb3TmKxNDCvfHwmIAZ5o32u/IdV6DVMPxiNs YpTLNZzw6JOlm9s2y1SoBdiYxw7FjAuJZ7CwrHM+Gm7M9RVlNE/oC88lLklV0g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMxz5RKgzvKJ for ; Fri, 03 Apr 2026 15:26:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3fa44 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 7f087ed787c6 - stable/15 - sys/time: Add saturating sbt conversions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 7f087ed787c6e3579ec4a53d174d503653f6fa93 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:15 +0000 Message-Id: <69cfdc17.3fa44.7a3ce089@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=7f087ed787c6e3579ec4a53d174d503653f6fa93 commit 7f087ed787c6e3579ec4a53d174d503653f6fa93 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:20 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 sys/time: Add saturating sbt conversions When converting from timespec to sbintime, the timespec's 64-bit tv_sec component is shifted to the left 32 bits, causing any information in the upper 32 bits to be lost. This data loss during conversion can turn timespecs with very large tv_sec counters into sbintimes that represent much smaller time durations. Add tstosbt_sat() and tvtosbt_sat(), which are saturating versions of tstosbt and tvtosbt. With these routines, any overflow resulting from the conversion is clamped to [-SBT_MAX - 1, SBT_MAX]. Reviewed by: imp, markj Differential Revision: https://reviews.freebsd.org/D55791 MFC after: 2 weeks (cherry picked from commit e3799530b3ba38567f8052b9e107884609fc71ea) --- sys/sys/time.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/sys/time.h b/sys/sys/time.h index d3a19ebfc811..707565b6a6f1 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -352,6 +352,16 @@ tstosbt(struct timespec _ts) return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec)); } +static __inline sbintime_t +tstosbt_sat(struct timespec _ts) +{ + if (_ts.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_ts.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tstosbt(_ts)); +} + static __inline struct timeval sbttotv(sbintime_t _sbt) { @@ -368,6 +378,17 @@ tvtosbt(struct timeval _tv) return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec)); } + +static __inline sbintime_t +tvtosbt_sat(struct timeval _tv) +{ + if (_tv.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_tv.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tvtosbt(_tv)); +} + #endif /* __BSD_VISIBLE */ #ifdef _KERNEL From nobody Fri Apr 3 15:26:16 2026 X-Original-To: dev-commits-src-branches@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 4fnMy11H7Bz6YgWL for ; Fri, 03 Apr 2026 15:26:17 +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 4fnMy06fR8z3fHj for ; Fri, 03 Apr 2026 15:26:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229977; 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=8lfll+vcCVBaJwKftBgbGdtS8jCYgXd4hwHpBLiqOnU=; b=Pb+WSQw8lMcJNlcTpDc8uSQOweCOunX7Y8SdoM5LrZHeFtS4tEzJEyom7v/rkCVOm2LS9S LVFY4esqgE0NIVabNG1bVa371L1twfApXeTgWJ7g/BpfAlaqtp6mcWlmi1mBNrIh0JVDQo 4YiK0/t2AXoPuskgaGPDYOwf5f8Ewj1hBehTtJBmuifebBFwCk+VDRVNQ43JeMvYY7Ndu0 YaNqLOGlMlBQ4K7dOmE0OZhJ2TNN1TaTn1EhNmvbem48LOU9fcTfB2/wa+hBytS2rZRJFv ePm5xSNMDtllT1tUdkrEYkl6g9s1oyT2hmPQ4sOKlqPTQPbYmIPBxPyCl8Z1VA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229977; a=rsa-sha256; cv=none; b=HtkdYaeyJza7hirx0pCCjcc+1zX13QZgBMRlPE4DDokLEndoLsMxnufMk5dLlLMiYiAYWN KZnFgctwRmwtJPY7h+orhICq/EvqSsGcoVVdMyCOESMOXR9OpJd8/ynGRh9leYyeu1Gucd Y32Dog53T24hH2qiZXodvrZp9H0L02Cb6BymX7T02LmTimeaW70gudd/U+Oso5c0OhKF7i gV2MCH1oCo+VVpeDgvkjx3mvSg8G3+BBstCulHcx2XBJCGRFEP7R26G0d9NC4O/er/fsdE /60b0mQBlUVjr0hzaGN6Xq7xNztOBFowxyaufWWMBiisiW+z/lBd+DHiukM/Kg== 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=1775229977; 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=8lfll+vcCVBaJwKftBgbGdtS8jCYgXd4hwHpBLiqOnU=; b=IJmwRnZcacTiaZdb7Z5opBohrXRzNGuenBUA3MDtUFV5w2cDtFPryhA6jHQcPa+LFdyA/c TJgKKuJApmvpW1bjWcQ05AdNgngPu60orv3d6tK/6s9NE/orevXs13foNd/AY/si5Woyvc xefnl8Paho+W3OvSDGRJqIktabJLYS53zIOwEh7cEndkmh+nEq+j0OX+gTKFJjv7LlkMnL mFvNGpA8lTyWxv5IuIX33I2xmGgCLEhP6GCbuWHdG6l1jggrw0eS8o1wrSCu9QDseThEwO WpaI4HK0UHs+fwcg+MWInrK8YKsh+HebAbe5FOU0hNdImBVDA4bF2TfqMs52Cg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMy06FbLzvKK for ; Fri, 03 Apr 2026 15:26:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40dbf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 53c01df929c1 - stable/15 - timerfd: Use saturating sbintime conversions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 53c01df929c12ad7d4995d1f5dc6769ae06af915 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:16 +0000 Message-Id: <69cfdc18.40dbf.3d9f47e8@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=53c01df929c12ad7d4995d1f5dc6769ae06af915 commit 53c01df929c12ad7d4995d1f5dc6769ae06af915 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:38 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Use saturating sbintime conversions Some timerfd consumers set expirations with timespec tv_sec components larger than 2^31 - 1. In such cases, converting that timespec to sbintime results in data loss or sign flip, yielding a shorter expiration than desired. To avoid this problem, use saturating timespec-to-sbintime conversion functions. These will clamp the converted sbintime to SBT_MAX under circumstances where the normal conversion functions would overflow. Saturating conversions still result in data loss, but the consequences are less severe, causing problems only after SBT_MAX (~68 years) of system uptime elapses. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D55792 MFC after: 2 weeks (cherry picked from commit 0e8f351be7935729bf67dc1b7aa4d178cf154931) --- sys/kern/sys_timerfd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index 236dfe8bb96a..f2a66e21cd63 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -165,7 +165,7 @@ timerfd_jumped(void) &diff, &tfd->tfd_time.it_value); if (callout_stop(&tfd->tfd_callout) == 1) { callout_schedule_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), + tstosbt_sat(tfd->tfd_time.it_value), 0, C_ABSOLUTE); } } @@ -398,10 +398,10 @@ timerfd_expire(void *arg) ++tfd->tfd_count; tfd->tfd_expired = true; if (timespecisset(&tfd->tfd_time.it_interval)) { - exp = tstosbt(tfd->tfd_time.it_value); - interval = tstosbt(tfd->tfd_time.it_interval); + exp = tstosbt_sat(tfd->tfd_time.it_value); + interval = tstosbt_sat(tfd->tfd_time.it_interval); now = sbinuptime(); - next = now + interval; + next = now > SBT_MAX - interval ? SBT_MAX : now + interval; /* Count missed events. */ if (now > exp) { @@ -553,7 +553,7 @@ kern_timerfd_settime(struct thread *td, int fd, int flags, &tfd->tfd_time.it_value); } callout_reset_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), + tstosbt_sat(tfd->tfd_time.it_value), 0, timerfd_expire, tfd, C_ABSOLUTE); } else { callout_stop(&tfd->tfd_callout); From nobody Fri Apr 3 15:26:17 2026 X-Original-To: dev-commits-src-branches@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 4fnMy24Hq8z6YgNX for ; Fri, 03 Apr 2026 15:26:18 +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 4fnMy20Rsnz3fDf for ; Fri, 03 Apr 2026 15:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229978; 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=jAKUiWnEzgQtmc0o0Or2qZ4cQgtAAaACKDS8gQF5lzc=; b=cklQMLlJBk5pxc7R8c6Wc5THptLm6nBjlx8nXQlxm7TYktxWVK3+Hx3xLdIqqW0h7qze+j tFiVVYoTvqQRe2jEmvL41Fwv99Ti4WbIHM0UrPngYPHL5Q0+525JkfsmmDJDXgw0P5DLm2 gBCxqfC4rnadMZeg88SZl0xTgvXuVNRasp5s18v2ohZgytjAYZ+eaY4+K4giOKSK31Ilcg jO4ZjelCAdEWtT8xwaXWQCFN4D9vrxmF8uud/8xT/nD+yXIl5Fe1DggSqQ1eIBlGakjzLi zUD3rsKJC4rp1ZJHIT1sQWFi/qozFrcyn5XgMimfErsu7zSHIBS4x/pWQTk2iw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229978; a=rsa-sha256; cv=none; b=OjNy01vrvB9xszgi3qooeeV7AmpmsTOgbTQQ87qoeMzB0U0e4kCVL+tsyNt/TzhddBBFtS 2hZV9fxW1RrKZ0F6NW08mW/cJ+DTc0mm3Es7hOOwqQ6Yu87kP3ptwnFs3QHgO3ni1PTe1I 4iXQiV710b0yT2Svo+ekFK/BnCgq7CF1KiHZIqHFviYY2P9LG2uS5AqV29pEGZSQfk4u+U 8xG/Dk3VcaNhN9E2FSYcWml8PlfwpTk9o9NPDeV4ScuOxPgyyA8u18hBcptupgf4HaXueR 4PvJ1cjsSiz2MBMK9FuwkE/BwvekJlxwMHPtIPyz/iEsFTyofRI5Vc9UhTXT3A== 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=1775229978; 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=jAKUiWnEzgQtmc0o0Or2qZ4cQgtAAaACKDS8gQF5lzc=; b=Pk9xCz0Z6LUII0V5oU9IHqSfhqMNNCqjAnOOgwWp5r3jB4oYCiFkXjzIh9NaO1QgLQONQQ yiqKXiDR+nKNDT/ZdA0OcReEom90qp6uwzaBhZP+SzMC8jgzium50JoFE8AQo89VI7f3kW xXOeIw4Yo+TWgtaY8KWONiZNb+yE9ygsiUrjf0dJeu9qKreh+LS06yWGwl46/bhP4Lb3gL +xDsQ218o5T1QVxqW9n1vjH5FxU2lwZTgLUCn7Usewqe9PJ5IZvme8HhugdhP7axop5D64 tuX9jsd0OUPCOCiRyAGWCYf0s/rzJqjrHPrZptbuMVYaUkhrc6rnIrWwLkqSjQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMy1736Hztrg for ; Fri, 03 Apr 2026 15:26:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e66c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:17 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 6a5176a100fb - stable/15 - timerfd: Wake up on discontinuous jump List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 6a5176a100fbb19c48eabfc48ab626320606fcfb Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:17 +0000 Message-Id: <69cfdc19.3e66c.c4b1abe@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=6a5176a100fbb19c48eabfc48ab626320606fcfb commit 6a5176a100fbb19c48eabfc48ab626320606fcfb Author: Jake Freeland AuthorDate: 2026-03-20 06:33:54 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Wake up on discontinuous jump If a discontinous realtime clock change occurs and sets any TFD_JUMPED bits on the timerfd, then wake up waiting readers. This fixes failures from the timerfd_root__clock_change_notification test case. MFC after: 2 weeks (cherry picked from commit b11fba41265ae132acfb05587a6dbf60334d3279) --- sys/kern/sys_timerfd.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index f2a66e21cd63..e4d00f224505 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -118,6 +118,14 @@ timerfd_getboottime(struct timespec *ts) TIMEVAL_TO_TIMESPEC(&tv, ts); } +static void +timerfd_wakeup(struct timerfd *tfd) +{ + wakeup(&tfd->tfd_count); + selwakeup(&tfd->tfd_sel); + KNOTE_LOCKED(&tfd->tfd_sel.si_note, 0); +} + /* * Call when a discontinuous jump has occured in CLOCK_REALTIME and * update timerfd's cached boottime. A jump can be triggered using @@ -172,6 +180,8 @@ timerfd_jumped(void) } tfd->tfd_boottim = boottime; + if ((tfd->tfd_jumped & TFD_JUMPED) != 0) + timerfd_wakeup(tfd); mtx_unlock(&tfd->tfd_lock); } mtx_unlock(&timerfd_list_lock); @@ -418,9 +428,7 @@ timerfd_expire(void *arg) timespecclear(&tfd->tfd_time.it_value); } - wakeup(&tfd->tfd_count); - selwakeup(&tfd->tfd_sel); - KNOTE_LOCKED(&tfd->tfd_sel.si_note, 0); + timerfd_wakeup(tfd); } int From nobody Fri Apr 3 15:26:19 2026 X-Original-To: dev-commits-src-branches@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 4fnMy33K8Bz6YgZ3 for ; Fri, 03 Apr 2026 15:26:19 +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 4fnMy31S7zz3fJ8 for ; Fri, 03 Apr 2026 15:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229979; 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=DstO4iX1hp2c1PgoL9wkQDilZ9KTDXSl8VOE6bHI1Mk=; b=phlKukFLvxzJrTOIZOWHViVaFDRdhhANhR9gWIhk+6Aqqh66fnJ+8Gt0xlyEV3mk+Kz/B1 dOWLJ2MnNH98hkPutNnZCtoGcO28NC2cDRC+n56O6EBbqgS34hp+qdZHFSmR/U8FUuaFn6 TflL1+XBoyt5/sBRG2Jm75My4mDYOeRtU9BLfoZmNTBAmiXqup07UhAoAfxI8UZWJm+65W DPJG0z0HhanfEOo0IEDzEn165GMbIvrOWtkDyZ9dt1bR+mqDP08On+0STMsrY7LccMO9w/ P77XVYVyHgfB094jwlvqSKDE92RBKiqS6B4DlK1sOvvjeRVGEO+qL7SrU/lnFQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229979; a=rsa-sha256; cv=none; b=SwQvD5KH9EwI2ArAsYUalMtiolfh4WQ+YMsN9xf8J7R84QXWgoKcsGEEmDiRzMw6tP1p0/ XtRuwQ71qLiF0w2toFTXLTxx+RIYVhWbrcT9mbHEvpX9s8GkrhSrZYty60Oit6KaChBXqS soDQXInRUv/VmJwIHdqA1YheVMWMjc2FNyVjGoVxp/UQNugyKiR/yY10I6Esl39v/YdYfk EBTOKf2wHU5I9U93KHV5Cv3m6HC3+ieLz6057NsVwPQZxgKLJkvoDR6tI+oQSKPk0/Dx6h Y1i87R24QPaSztvRu0h8qiMvTknC3/AwBs6y6HxAnfopCpqLZXfonWETkVAFrA== 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=1775229979; 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=DstO4iX1hp2c1PgoL9wkQDilZ9KTDXSl8VOE6bHI1Mk=; b=xBQlZb9KDgWYSDFQp6UDrCsgFYBtV+fQ/D7hHqf+cCz08PwlCzsESGoY5PnWJeVU9qVETY gCK/kz8g8HCaTE1siiFVC+4nwjsNSuH7HdP42AqxBi8+KL0XrD7aEMTKu7FDkFVev60t+7 +icJBbaZZygEgr8M00FIHU7ojOV7N8EmG09+x4MM/QU3ZKUZpBw+4Zqy/gK6YOXtAMm59r u66kKpmrc4HDPVuDbUiFib6IJD8CfM5dAwLY7DCfmdJuV4ZjvVFSVyzLy2FtnaWIw9xXfB kO+w1t44vcH9//e9oTgz4/TK0ShEu+gn73RC/pgQYGvCPqC6GM2lhg5at1F6KA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMy30ly0zv6B for ; Fri, 03 Apr 2026 15:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40b41 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 9d710692d207 - stable/15 - timerfd: Suppress kqueue readability after jump read List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 9d710692d2075e14633f19c2b2c496b71554d29c Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:19 +0000 Message-Id: <69cfdc1b.40b41.7b1e61d2@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=9d710692d2075e14633f19c2b2c496b71554d29c commit 9d710692d2075e14633f19c2b2c496b71554d29c Author: Jake Freeland AuthorDate: 2026-03-20 06:34:15 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Suppress kqueue readability after jump read Do not report EVFILT_READ after reading a discontinuous clock jump. This makes the kqueue filter consistent with Linux epoll behavior and timerfd_poll(), which already checks tfd_jumped != TFD_READ before reporting POLLIN. MFC after: 2 weeks (cherry picked from commit 33345b8834859cf1ad7f1256f3a34b4a7c83e8e8) --- sys/kern/sys_timerfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index e4d00f224505..22e6a30faa21 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -290,7 +290,7 @@ filt_timerfdread(struct knote *kn, long hint) mtx_assert(&tfd->tfd_lock, MA_OWNED); kn->kn_data = (int64_t)tfd->tfd_count; - return (tfd->tfd_count > 0); + return (tfd->tfd_count > 0 && tfd->tfd_jumped != TFD_READ); } static const struct filterops timerfd_rfiltops = { From nobody Fri Apr 3 15:26:20 2026 X-Original-To: dev-commits-src-branches@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 4fnMy461rHz6YgQm for ; Fri, 03 Apr 2026 15:26:20 +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 4fnMy42CVzz3fZn for ; Fri, 03 Apr 2026 15:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229980; 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=0Xj6AlKi5ZLTy7sri0AbDhIKWzyAexmkaqeYhAwdlNg=; b=Rg3y5z60HVy6kqG1JrhSjEyJcUM9x/f6hp9ydfepn7vExzzqw4PE+Ul0I6Y/GOzeli/blj nC1dQpuPqOTVLFrewIyj4HfO0oyd+FINNgmcSLp3qBHBWk0+d+ayW8lskXlJop8njBKzmt qEVGsHzp5dERPEQjRLjPDlQhXgiPK1iqf8fOLReUJqIG9mHVzD7W2I0uS4rae3cbGtEI1C r2de+L9581jy+bCe3R8wBd6tZhrqbYmHPYGVDPKns9MejUEzpmnX2l/qDfQOHXUzW8sOZ2 m3gzVh5pEIhkBizDxq9PvmKfERRivphgLBa4KI1V22nUbM2WBPkcDRjI3maeSw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229980; a=rsa-sha256; cv=none; b=ZbYCfSZboktcU1QQWu0VDg6xIpd6yvEhweFsCa+YCyucl4rzKuL/a0gfmUDsPobjMseQpl G4Tsid7vRNEO6jiCdat7//ga0r1t1qW2ynmLstD57mYmtZfXW02hxb+eBpxDIhh8GUsFvI ew3dCSpNENPYTJre8kEHioWnMnvePJLWxjz6JSFUldnIoD2K0veZYkt91gX0O7OtWg6sRQ z2XUhntbgVqvmOn89FA+Czll1Yqk7QQExDWCKUGFzs3G0xmzS2lIIGHlF6iaWmnSa4EfTh bCV+aHqXkt0uWmd2T3s1olbVldDTNadpmfTqx0AUX2qFF28bV9ldxaVQNOUzuw== 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=1775229980; 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=0Xj6AlKi5ZLTy7sri0AbDhIKWzyAexmkaqeYhAwdlNg=; b=x3V7hp31Y2ejRLUb+rOb7Nc9aV7ZubfAYVviaLeodyAtjqUSHvkZM6GMDy1bfN9GtazsWc QWvaK00Vci0lqAlzT5oliEIIUd+UmU1sTezlaZk98e9Et0pnqIwneH7fW2DnHBPn9H4nea 8YVG+UtamZGytvuQ0znPqbWp3QwN0E3g89Os/9JutnXH392gteSebmts+V/bQ3TYDRE/gY Ymlj+RHVYHL4P6X3QHUnGzE/wr2z61snnk/3hh31/yQQ7ElXmABqj+FGpLVK+LPs9F6GKC rhGmj/qNsVAafB4IiikEa1Qx3Q4R5zHuuMnJdbSn674j65zc/k6/lSfmxZYscw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMy41YTNzv41 for ; Fri, 03 Apr 2026 15:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f646 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 0b7e325153d6 - stable/15 - timerfd: Expect periodic timer performance failures List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0b7e325153d6c23ece1ff1ab3c882e71dbb3bc35 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:20 +0000 Message-Id: <69cfdc1c.3f646.1b59d14b@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=0b7e325153d6c23ece1ff1ab3c882e71dbb3bc35 commit 0b7e325153d6c23ece1ff1ab3c882e71dbb3bc35 Author: Jake Freeland AuthorDate: 2026-03-25 22:57:16 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Expect periodic timer performance failures The current timerfd implementation fails to correctly count events on a nanosecond callout interval. The timerfd__periodic_timer_performance test detects this and reports failure. Mark this test as an expected failure so it isn't flagged by CI. A link to the bug report is attached to the test for reference. While we're here, clean up some minor style and Make issues. Fixes: 834c1ba793d9 ("timerfd: Add tests") MFC after: 1 week (cherry picked from commit cb692380f1e05ffc4184877844e93051f24ed302) --- tests/sys/kern/Makefile | 1 - tests/sys/kern/timerfd.c | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index 7f484f50bd56..535466c09cdd 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -54,7 +54,6 @@ PLAIN_TESTS_C+= subr_unit_test ATF_TESTS_C+= sysctl_kern_proc ATF_TESTS_C+= sys_getrandom ATF_TESTS_C+= timerfd -CFLAGS.timerfd+= -I${.CURDIR} LIBADD.timerfd+= pthread ATF_TESTS_C+= tty_pts ATF_TESTS_C+= unix_dgram diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index b24d093b346e..cacc1d9aafa9 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -25,11 +25,11 @@ #include #include - #include #include #include #include +#include #include #include @@ -44,8 +44,6 @@ #include #include -#include - /* Time in ns that sleeps are allowed to take longer for in unit tests. */ #define TIMER_SLACK (90000000) @@ -739,6 +737,7 @@ ATF_TC_BODY(timerfd__periodic_timer_performance, tc) uint64_t timeouts; ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == (ssize_t)sizeof(timeouts)); + atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); ATF_REQUIRE(close(timerfd) == 0); From nobody Fri Apr 3 15:26:21 2026 X-Original-To: dev-commits-src-branches@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 4fnMy56SDWz6YgWV for ; Fri, 03 Apr 2026 15:26:21 +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 4fnMy52g3Wz3fGm for ; Fri, 03 Apr 2026 15:26:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775229981; 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=GLwxIuvWinvbSEshTrQlbOUL9e7z5MdzWD54F/8mBmY=; b=Q/LAqQwgWBoEFG4JhavNkhfYEMs6/BJLG9Ffm2Z+7YZiyR6a7+PInFbq0q5O2JkBp9HDJH vNBWETKvaM98vsf2imG5SrcRvQeQRXBzWfREEVj/AEOQAi8PX/PR7pwGg7GoNImPS3757M MKaTy7IGC16v9UrFrZCX5kC6p1YIOS7SF51wp6IwtqR5CtWd/Ew2GF7K0a7hgwh1TIxUSj RjePzYogACoPj42vp0kVnmu3v90rJIJq7o03elJdg0jH/B9WsCUmQ269NClpsoL+8APpCY ID4TkJLQbXq3gQe2qTzu7955kbO8DWjZMeIjsyt25+yVlF++srLwPTEgUDREHQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775229981; a=rsa-sha256; cv=none; b=ujnJ44Faty7/G5rEuQ+O4lil316GFzmPFnabTUHm6yh14vXuGQ+S8QExP63HGmrJ4mNAfU zImgjs88L0yz/mj+J1BuvHu2jD37DALuARHdjqNNX8Jf6pkWrtb0uigPOEq6X2iLgXUnm0 ByQlNgZV9ppAeui6cRniS2tpj1efGkWquKzNYKt0JTP4pWoJJ33Zpp813VOrARwvEnKz+a aWTiniQ+AkTof3IQDa/igdPslgYHx7xRt2TktFO+fQBITZmUXqvAFInF9yUI/9cIiOsPAP KnEQNUU+bGheVzshfkCuUARme7BDlCxFJcZ5muNf6utqjuetALqkMuWqnoDY5Q== 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=1775229981; 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=GLwxIuvWinvbSEshTrQlbOUL9e7z5MdzWD54F/8mBmY=; b=jQBbhOH0cgpxwpVSldk40HNOse8ZN/qjkZr4EnBy+AmqRnTAZ0CRNsLBACYG8uM+Bflx9C naOmTEBB6LxUUtwZnreHEuWsNarM4gKHdn7bjJ2JGRg1mJYs/a1aKBTJGGuPiC6GC7Sbvv lydE6e7QwYe8Bzb8VeW2l3U4W2H53e+fReUM/XfOUM6tubbub5wlFFF6Tq8KQCA78+A/1X 5pjqstejiGTWlHM+btivDrCJ3RMCqwHo8Xv6xCv8Yi535VqkFRCJ2fhgAeDfpfTDpDDMbk z3CtVe+DoEHLG8qaa6wu3OAjYxEdkHDKSuGE+OmRXy+Q6Gdlh8geECYZKiGp8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMy528Jszv1Q for ; Fri, 03 Apr 2026 15:26:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f9b5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:26:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 2d103770b5d2 - stable/15 - timerfd: Guard expected performance failure List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2d103770b5d204c94b42eec1156dd01c12c69865 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:26:21 +0000 Message-Id: <69cfdc1d.3f9b5.1b6a5bd0@gitrepo.freebsd.org> The branch stable/15 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=2d103770b5d204c94b42eec1156dd01c12c69865 commit 2d103770b5d204c94b42eec1156dd01c12c69865 Author: Jake Freeland AuthorDate: 2026-03-26 16:40:17 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:25:36 +0000 timerfd: Guard expected performance failure During the timerfd__periodic_timer_performance test, only expect failures when the expiration count is less than 400000000. This prevents the test from being reported as a true failure in environments where scheduling latency is high enough to delay timerfd wakeups. Fixes: cb692380f1e0 ("timerfd: Expect periodic timer ...") MFC after: 1 week (cherry picked from commit 4b16ff49bf4bf875997fe4c80a0afc0d440b7aac) --- tests/sys/kern/timerfd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index cacc1d9aafa9..277516c3d9e2 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -737,7 +737,8 @@ ATF_TC_BODY(timerfd__periodic_timer_performance, tc) uint64_t timeouts; ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == (ssize_t)sizeof(timeouts)); - atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); + if (timeouts < 400000000) + atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); ATF_REQUIRE(close(timerfd) == 0); From nobody Fri Apr 3 15:27:26 2026 X-Original-To: dev-commits-src-branches@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 4fnMzL57shz6YgZb for ; Fri, 03 Apr 2026 15:27:26 +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 4fnMzL178tz3hP2 for ; Fri, 03 Apr 2026 15:27:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230046; 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=nn520/yk/QeIpZN6j1UnDShQ9GGninfPcx3QIOsmMZc=; b=cpo3k2DRgVKciTZT6nJY6wr6K5glBE6wVg5zfAQqz/djAY35NlfJDv9/WfUVCmEUSpd8Ju vzAARmVAbNaujLo9KVJQg8ClhQgR5yUfBeq1EgzxMTNVro4NxVmHDLdfjE9ws8smygBMsk z/TpwOV+DsAG5A6UfUE3OMSGakETTXZNFVNYHGbJv4SPvaYSjdyASqoEk6ie9hJO73AFXC slMixnDlXo8300/7DCPB3k7wrx80K8u/7aGRAznV/3oIiuTf3fBsGL9xBcZ6nEivRMSXqw 0uzMaPFt2HMGdeyy6ZcsBRTVDwwUzwa0g/mEXNdt8h8khHmIVpIW/rHFaxdg7A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230046; a=rsa-sha256; cv=none; b=rqQWBWW3s8dXLrfcVc+qsSPuQIKge8fZh2vhLL4XmEQ3n+SyTRe1yU7olSe+BVCuTaZsVl AmB8b2kFQNsufNXYsY2AjPNbQ0kMgEf3S1vrpivR6+AdhD0zxCno0L239sSKMzs3xZxM4c MmrI50JytrBkAUHB4FwblGzLC5oOrACjfI5r0THfMRAgwUX3m1cSnrnUlW5iDkbHMDbL9A oTHB5Rui7iEnlvspN7jSOcId36s7T/VJxxixkxTVFOyTMATorEYYdaK8sS3jqdtuFzA1pp 7c8EpKIouQrZ4T1i9DgC8kj7lFA1We8gIDKpugOno9CGjnEkQ+bRTpcWP2QNyw== 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=1775230046; 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=nn520/yk/QeIpZN6j1UnDShQ9GGninfPcx3QIOsmMZc=; b=Wi3Q7EEaJQ04IK6IoLLinFvHaUfltRlylwxDnpgvk6bVQ7f8doMFGRieS/5S/6X/sRLtZI ijVIjeaYMB6Ofx5jGKhlulSKS1LXPVydr9ySMnUGXf3NOquPFli6iuVzBstZ6GoSUh7p3G 0YcYW4nN2FX/Wf/voHXN3JptqNDUc+ix1k3epk9wvEYAwliAA+KsyWEd3mSA7A7Q5WFpE4 mLuhb6DuMIqBwOWKqJO0h8ihORuoOALcmcgEhSbdaICTqK3nGVOV/GCzjCyidIPhD+3lph dtDFngJ6hdWYXALRpeNiEyY2XzHApmW8mC62QLs54ZgGAZ2wrm5jp53LCaCf4w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzL0kjjzv46 for ; Fri, 03 Apr 2026 15:27:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 405a2 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 3c00f603a280 - stable/14 - timerfd: Fix interval callout scheduling List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3c00f603a2801fd780666f9e94a26f264a887c90 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:26 +0000 Message-Id: <69cfdc5e.405a2.6f1d4e7@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=3c00f603a2801fd780666f9e94a26f264a887c90 commit 3c00f603a2801fd780666f9e94a26f264a887c90 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:03 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Fix interval callout scheduling When a timerfd interval callout misses its scheduled activation time, a differential is calculated based on the actual activation time and the scheduled activation time. This differential is divided by the timerfd's interval time and the quotient is added to the timerfd's counter. Before this change, the next callout was scheduled to activate at: scheduled activation time + timerfd interval. This change fixes the scheduling of the next callout to activate at: actual activation time + timerfd interval - remainder. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55790 MFC after: 2 weeks (cherry picked from commit 85c0f1a87da1fd1eb3e646e86f70e630c48da91a) --- sys/kern/sys_timerfd.c | 24 +++++++++++++----------- tests/sys/kern/timerfd.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index 565ab3ad6ee6..236dfe8bb96a 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -393,23 +393,25 @@ static void timerfd_expire(void *arg) { struct timerfd *tfd = (struct timerfd *)arg; - struct timespec uptime; + sbintime_t exp, interval, now, next, diff; ++tfd->tfd_count; tfd->tfd_expired = true; if (timespecisset(&tfd->tfd_time.it_interval)) { + exp = tstosbt(tfd->tfd_time.it_value); + interval = tstosbt(tfd->tfd_time.it_interval); + now = sbinuptime(); + next = now + interval; + /* Count missed events. */ - nanouptime(&uptime); - if (timespeccmp(&uptime, &tfd->tfd_time.it_value, >)) { - timespecsub(&uptime, &tfd->tfd_time.it_value, &uptime); - tfd->tfd_count += tstosbt(uptime) / - tstosbt(tfd->tfd_time.it_interval); + if (now > exp) { + diff = now - exp; + tfd->tfd_count += diff / interval; + next -= diff % interval; } - timespecadd(&tfd->tfd_time.it_value, - &tfd->tfd_time.it_interval, &tfd->tfd_time.it_value); - callout_schedule_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), - 0, C_ABSOLUTE); + + callout_schedule_sbt(&tfd->tfd_callout, next, 0, C_ABSOLUTE); + tfd->tfd_time.it_value = sbttots(next); } else { /* Single shot timer. */ callout_deactivate(&tfd->tfd_callout); diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index 37cb4924faf1..b24d093b346e 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -949,6 +949,34 @@ ATF_TC_BODY(timerfd__reset_to_very_long, tc) ATF_REQUIRE(errno == EAGAIN); } +ATF_TC_WITHOUT_HEAD(timerfd__missed_events); +ATF_TC_BODY(timerfd__missed_events, tc) +{ + struct itimerspec its = { }; + uint64_t timeouts; + int timerfd; + + timerfd = timerfd_create(CLOCK_REALTIME, TFD_CLOEXEC); + ATF_REQUIRE(timerfd >= 0); + + ATF_REQUIRE(clock_gettime(CLOCK_REALTIME, &its.it_value) == 0); + its.it_value.tv_sec -= 1000; + its.it_interval.tv_sec = 1; + + ATF_REQUIRE(timerfd_settime(timerfd, TFD_TIMER_ABSTIME, &its, + NULL) == 0); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts == 1001, "%ld", (long)timeouts); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts == 1, "%ld", (long)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + /* * Tests requiring root (clock_settime on CLOCK_REALTIME). * Tests gracefully skip if not running as root. @@ -1306,6 +1334,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, timerfd__short_evfilt_timer_timeout); ATF_TP_ADD_TC(tp, timerfd__unmodified_errno); ATF_TP_ADD_TC(tp, timerfd__reset_to_very_long); + ATF_TP_ADD_TC(tp, timerfd__missed_events); ATF_TP_ADD_TC(tp, timerfd_root__zero_read_on_abs_realtime); ATF_TP_ADD_TC(tp, timerfd_root__read_on_abs_realtime_no_interval); From nobody Fri Apr 3 15:27:24 2026 X-Original-To: dev-commits-src-branches@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 4fnMzK5t91z6Ygdm for ; Fri, 03 Apr 2026 15:27:25 +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 4fnMzK1fsVz3hTC for ; Fri, 03 Apr 2026 15:27:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230045; 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=OE90R3x0Y/bbfUrKwAFw1fUamhNoSMI7Jo9NyhI1wK4=; b=rqcz13H2g4/K11mUAlLhkgVJsVuErNCDXUcJVAqZGEArGBkOTmmfyOcoxyUmZefkfyq7cl xz9ZTleM92sYBY/FtTirB5khieHGYhstAYHxfSseZONLBQFPaeXJ52sFnm3gNxYjUF3nDW Y5kEU6czPQ5gRgQ/WrXlJofOzdg3EgUunEw4zccW75S+68sxSUT4NZ45/6vF3WYpoem6Hf fgqRRMhwPyMXtHac8NiKNiDcAo8eR7x+OYBxf3UmUI8ZcAyK5EG3iBzpit3y+SWq8U++0Z GZlNUJ70Kwe+NOuYYHrvbgYlKoA7UQ7RvcOiWGnLrFgiAWku192WrvaQpaUDfQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230045; a=rsa-sha256; cv=none; b=ZLzSKnVPakHy3ICRGPdnpepddD5aUAiK4fbxw00pyvo5ZixMbFYqakTH38AAvzFr9ZVbQG 6jrnPbck1/DWRxV6DXhU+M4x5igXSU2Z3LmiFGzBEsmO/ov3kt18FZ0R1iUkdCPk2hhQY6 OXgnc0d2W58uJxDYkNaYOQKUnAxFOAG8O2oElsfSuzdc4BtUFFdCUUaVNQvsJH8fApIYGH 1b+Wy10Gv0FKv6c/6S2zq3iw0FzUN8SnpHwXzfCf1HDxe2rXY6sLiOlHoMbNWHOwM3Wzln O9f/A/l4b/lyW0R4MFuAPvmWfEXcFoHjsRXeNdCkbNM3qcp/VmFOkQJEpCeKVw== 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=1775230045; 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=OE90R3x0Y/bbfUrKwAFw1fUamhNoSMI7Jo9NyhI1wK4=; b=M6jmO2Mr3IVq+r9ccWptJKIoei/UsIHWF+/nRdLwKUkT5PvJl7GGTNL5Zi3exUtniCCtNp VAzRbP8LCnhL3WRR6G6jP8w8ixpCZoHt9Cg5kq4LyyFKq3MPuajMt17fLCPccf8m9Y26Tv wRAIcUDhnwrOkN+m2pXXGyck3v1diVMe+XBh7kwvr7xE+m3OdS5Qgvpag43yjzjGucaWct K6Uja3qov62GDVYAzn5GBlcdk3uQXMPipYYhb91c+NWnK8STtEEauuCJG4ouLQdbUtlV4w A4rvfiJ3aOI6ubrQ1HOxHQE3QOHeIpFzffxBMiLwCaxHiWr/JYEto032idK19Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzK04MBzv45 for ; Fri, 03 Apr 2026 15:27:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40eb1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:24 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: d24f87da276f - stable/14 - timerfd: Add tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d24f87da276fe6502fefda11ca99602e9e74357d Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:24 +0000 Message-Id: <69cfdc5c.40eb1.1bcd4f92@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=d24f87da276fe6502fefda11ca99602e9e74357d commit d24f87da276fe6502fefda11ca99602e9e74357d Author: Jake Freeland AuthorDate: 2026-03-20 06:31:30 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Add tests Take Jan Kokemuller's timerfd tests from the epoll-shim project, stripping out code that isn't directly related to FreeBSD. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55789 MFC after: 2 weeks (cherry picked from commit 834c1ba793d900b791e19ff449b1e0b96fb494a0) --- tests/sys/kern/Makefile | 3 + tests/sys/kern/timerfd.c | 1318 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1321 insertions(+) diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index b8050931de53..d1810610f7f5 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -44,6 +44,9 @@ ATF_TESTS_C+= subr_physmem_test PLAIN_TESTS_C+= subr_unit_test ATF_TESTS_C+= sysctl_kern_proc ATF_TESTS_C+= sys_getrandom +ATF_TESTS_C+= timerfd +CFLAGS.timerfd+= -I${.CURDIR} +LIBADD.timerfd+= pthread ATF_TESTS_C+= tty_pts ATF_TESTS_C+= unix_dgram ATF_TESTS_C+= unix_passfd_dgram diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c new file mode 100644 index 000000000000..37cb4924faf1 --- /dev/null +++ b/tests/sys/kern/timerfd.c @@ -0,0 +1,1318 @@ +/*- + * SPDX-License-Identifier: MIT + * + * Copyright (c) 2016 Jan Kokemüller + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +/* Time in ns that sleeps are allowed to take longer for in unit tests. */ +#define TIMER_SLACK (90000000) + +ATF_TC_WITHOUT_HEAD(timerfd__many_timers); +ATF_TC_BODY(timerfd__many_timers, tc) +{ + int timer_fds[256]; + int i; + + for (i = 0; i < (int)nitems(timer_fds); ++i) { + timer_fds[i] = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + if (timer_fds[i] < 0 && errno == EMFILE) { + atf_tc_skip("timerfd_create: EMFILE"); + } + ATF_REQUIRE_MSG(timer_fds[i] >= 0, "errno: %d", errno); + } +} + +static uint64_t +wait_for_timerfd(int timerfd) +{ + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ssize_t r = read(timerfd, &timeouts, sizeof(timeouts)); + + ATF_REQUIRE_MSG(r == (ssize_t)sizeof(timeouts), "%d %d", (int)r, errno); + ATF_REQUIRE(timeouts > 0); + return timeouts; +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_timer); +ATF_TC_BODY(timerfd__simple_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 100000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec < 100000000 + TIMER_SLACK); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_periodic_timer); +ATF_TC_BODY(timerfd__simple_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 200000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 200000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 200000000) || e.tv_sec > 0); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec < 200000000 + TIMER_SLACK); + ATF_REQUIRE(timeouts == 1); + + usleep(400000); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE(timeouts >= 2); + ATF_REQUIRE(timeouts == 2); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__complex_periodic_timer); +ATF_TC_BODY(timerfd__complex_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 200000001, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 100000000) || e.tv_sec > 0); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE_MSG(e.tv_sec == 0 && e.tv_nsec >= 100000000 && + e.tv_nsec < 100000000 + TIMER_SLACK, + "%ld", (long)e.tv_nsec); + ATF_REQUIRE(timeouts == 1); + + usleep(401000); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts >= 2, "%d", (int)timeouts); + ATF_REQUIRE_MSG(timeouts == 2, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_periodic_timer); +ATF_TC_BODY(timerfd__reset_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 50000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 150000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 150000000 && + e.tv_nsec < 150000000 + TIMER_SLACK * 2); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reenable_periodic_timer); +ATF_TC_BODY(timerfd__reenable_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + uint64_t timeouts = wait_for_timerfd(timerfd); + + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 250) == 0); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 350000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 350000000 && + e.tv_nsec < 350000000 + TIMER_SLACK * 2); + + time = (struct itimerspec) { + .it_value.tv_sec = 1, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 1, + .it_interval.tv_nsec = 0, + }; + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + ATF_REQUIRE(close(timerfd) == 0); +} + +/* + * Adapted from sghctoma's example here: + * https://github.com/jiixyj/epoll-shim/issues/2 + * + * The SIGUSR1 signal should not kill the process. + */ +ATF_TC_WITHOUT_HEAD(timerfd__expire_five); +ATF_TC_BODY(timerfd__expire_five, tc) +{ + int fd; + struct itimerspec value; + uint64_t total_exp = 0; + + fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(fd >= 0); + + value.it_value.tv_sec = 3; + value.it_value.tv_nsec = 0; + value.it_interval.tv_sec = 1; + value.it_interval.tv_nsec = 0; + + ATF_REQUIRE(timerfd_settime(fd, 0, &value, NULL) == 0); + + sigset_t sigs; + sigemptyset(&sigs); + sigaddset(&sigs, SIGUSR1); + sigprocmask(SIG_BLOCK, &sigs, NULL); + + kill(getpid(), SIGUSR1); + + for (;;) { + uint64_t exp = wait_for_timerfd(fd); + + printf("timer expired %u times\n", (unsigned)exp); + + total_exp += exp; + if (total_exp >= 5) { + break; + } + } + + ATF_REQUIRE(close(fd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_gettime); +ATF_TC_BODY(timerfd__simple_gettime, tc) +{ + struct itimerspec curr_value; + + int fd = timerfd_create(CLOCK_MONOTONIC, 0); + ATF_REQUIRE(fd >= 0); + + ATF_REQUIRE(timerfd_gettime(fd, &curr_value) == 0); + + ATF_REQUIRE(curr_value.it_value.tv_sec == 0); + ATF_REQUIRE(curr_value.it_value.tv_nsec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_sec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_nsec == 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + curr_value = time; + ATF_REQUIRE(timerfd_settime(fd, 0, &time, &curr_value) == 0); + ATF_REQUIRE(curr_value.it_value.tv_sec == 0); + ATF_REQUIRE(curr_value.it_value.tv_nsec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_sec == 0); + ATF_REQUIRE(curr_value.it_interval.tv_nsec == 0); + + ATF_REQUIRE(close(fd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__simple_blocking_periodic_timer); +ATF_TC_BODY(timerfd__simple_blocking_periodic_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = 0; + int num_loop_iterations = 0; + + while (timeouts < 3) { + uint64_t timeouts_local; + ATF_REQUIRE( + read(timerfd, &timeouts_local, sizeof(timeouts_local)) == + (ssize_t)sizeof(timeouts_local)); + ATF_REQUIRE(timeouts_local > 0); + + ++num_loop_iterations; + timeouts += timeouts_local; + } + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 300000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 300000000 && + e.tv_nsec < 300000000 + TIMER_SLACK); + + ATF_REQUIRE(num_loop_iterations <= 3); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__argument_checks); +ATF_TC_BODY(timerfd__argument_checks, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(timerfd, 0, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(-2, 0, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EBADF, timerfd_settime(-2, 0, &time, NULL) < 0); + ATF_REQUIRE_ERRNO(EFAULT, timerfd_settime(-2, 42, NULL, NULL) < 0); + ATF_REQUIRE_ERRNO(EINVAL, timerfd_settime(-2, 42, &time, NULL) < 0); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 42, &time, NULL) < 0); + + { + time = (struct itimerspec) { + .it_value.tv_sec = -1, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = -1, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = -1, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = -1, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1000000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + { + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 1000000000, + }; + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &time, NULL) < 0); + } + + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_create(CLOCK_MONOTONIC | 42, TFD_CLOEXEC)); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | 42)); + + ATF_REQUIRE(close(timerfd) == 0); + + struct itimerspec itimerspec; + ATF_REQUIRE_ERRNO(EBADF, timerfd_gettime(timerfd, &itimerspec) < 0); + ATF_REQUIRE_ERRNO(EINVAL, + timerfd_settime(timerfd, 0, &itimerspec, NULL) < 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__upgrade_simple_to_complex); +ATF_TC_BODY(timerfd__upgrade_simple_to_complex, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 100000000, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + time = (struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 50000000, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 95000000, + }; + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + uint64_t timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 50000000) || e.tv_sec > 0); + ATF_REQUIRE_MSG(e.tv_sec == 0 && e.tv_nsec < 50000000 + TIMER_SLACK, + "%ld", e.tv_nsec); + + timeouts = wait_for_timerfd(timerfd); + ATF_REQUIRE(timeouts >= 1); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE((e.tv_sec == 0 && e.tv_nsec >= 145000000) || e.tv_sec > 0); + ATF_REQUIRE(e.tv_sec == 0 && e.tv_nsec >= 145000000 && + e.tv_nsec < 145000000 + TIMER_SLACK); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__absolute_timer); +ATF_TC_BODY(timerfd__absolute_timer, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b, e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + + struct timespec ts_600ms = { + .tv_sec = 0, + .tv_nsec = 600000000, + }; + + timespecadd(&time.it_value, &ts_600ms, &time.it_value); + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + // Don't read(2) here! + + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + timespecsub(&e, &b, &e); + ATF_REQUIRE(e.tv_sec == 0 && + /* Don't check for this because of spurious wakeups. */ + /* e.tv_nsec >= 600000000 && */ + e.tv_nsec < 600000000 + TIMER_SLACK); + + struct itimerspec zeroed_its = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 0, + }; + ATF_REQUIRE(timerfd_settime(timerfd, 0, &zeroed_its, NULL) == 0); + + uint64_t timeouts; + ATF_REQUIRE_ERRNO(EAGAIN, + read(timerfd, &timeouts, sizeof(timeouts)) < 0); + + ATF_REQUIRE(poll(&pfd, 1, 0) == 0); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__absolute_timer_in_the_past); +ATF_TC_BODY(timerfd__absolute_timer_in_the_past, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + { + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 10, + .it_interval.tv_nsec = 0, + }; + time.it_value.tv_sec -= 1; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 1000) == 1); + } + + { + struct itimerspec time = { + .it_value = b, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 10000000, + }; + time.it_value.tv_sec -= 1; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + } + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + + ATF_REQUIRE_MSG(timeouts >= 101, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_absolute); +ATF_TC_BODY(timerfd__reset_absolute, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + { + struct itimerspec time = { + .it_value = b, + }; + time.it_value.tv_sec += 10; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 100) == 0); + } + + { + struct itimerspec time = { + .it_value = b, + }; + time.it_value.tv_nsec += 500000000; + if (time.it_value.tv_nsec >= 1000000000) { + time.it_value.tv_nsec -= 1000000000; + time.it_value.tv_sec += 1; + } + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 1000) == 1); + } + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + + ATF_REQUIRE_MSG(timeouts == 1, "%d", (int)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC(timerfd__periodic_timer_performance); +ATF_TC_HEAD(timerfd__periodic_timer_performance, tc) +{ + atf_tc_set_md_var(tc, "timeout", "1"); +} +ATF_TC_BODY(timerfd__periodic_timer_performance, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1, + .it_interval.tv_sec = 0, + .it_interval.tv_nsec = 1, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, 0, &time, NULL) == 0); + + usleep(400000); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__argument_overflow); +ATF_TC_BODY(timerfd__argument_overflow, tc) +{ + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + { + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 1, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, -1) == 1); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == + (ssize_t)sizeof(timeouts)); + ATF_REQUIRE(timeouts == 1); + + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) < 0); + } + { + struct itimerspec time = { + .it_value.tv_sec = LONG_MAX, + .it_value.tv_nsec = 999999999, + }; + + ATF_REQUIRE(timerfd_settime(timerfd, /**/ + TFD_TIMER_ABSTIME, &time, NULL) == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; + ATF_REQUIRE(poll(&pfd, 1, 500) == 0); + + uint64_t timeouts; + ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) < 0); + } + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC(timerfd__short_evfilt_timer_timeout); +ATF_TC_HEAD(timerfd__short_evfilt_timer_timeout, tc) +{ + atf_tc_set_md_var(tc, "timeout", "30"); +} +ATF_TC_BODY(timerfd__short_evfilt_timer_timeout, tc) +{ + int kq = kqueue(); + ATF_REQUIRE(kq >= 0); + + bool returns_early = false; + + for (int l = 0; l < 10; ++l) { + for (int i = 1; i <= 17; ++i) { + struct kevent kev; + EV_SET(&kev, 0, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, i, + 0); + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE(kevent(kq, &kev, 1, NULL, 0, NULL) == 0); + + ATF_REQUIRE(kevent(kq, NULL, 0, &kev, 1, NULL) == 1); + + struct timespec e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + + struct timespec diff; + timespecsub(&e, &b, &diff); + + if (diff.tv_sec != 0 || diff.tv_nsec < i * 1000000) { + fprintf(stderr, + "expected: %lldns, got: %lldns\n", + (long long)(i * 1000000LL), + (long long)diff.tv_nsec); + returns_early = true; + goto check; + } + } + } + +check: + ATF_REQUIRE(!returns_early); + + ATF_REQUIRE(close(kq) == 0); + + /* + * timerfd's should never return early, regardless of how + * EVFILT_TIMER behaves. + */ + + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + + ATF_REQUIRE(timerfd >= 0); + + for (int l = 0; l < 10; ++l) { + for (int i = 1; i <= 17; ++i) { + struct itimerspec time = { + .it_value.tv_sec = 0, + .it_value.tv_nsec = i * 1000000, + }; + + struct timespec b; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &b) == 0); + + ATF_REQUIRE( + timerfd_settime(timerfd, 0, &time, NULL) == 0); + (void)wait_for_timerfd(timerfd); + + struct timespec e; + ATF_REQUIRE(clock_gettime(CLOCK_MONOTONIC, &e) == 0); + + struct timespec diff; + timespecsub(&e, &b, &diff); + + ATF_REQUIRE( + diff.tv_sec == 0 && diff.tv_nsec >= i * 1000000); + fprintf(stderr, "%dms, waited %lldns\n", i, + (long long)diff.tv_nsec); + } + } + + ATF_REQUIRE(close(timerfd) == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__unmodified_errno); +ATF_TC_BODY(timerfd__unmodified_errno, tc) +{ + ATF_REQUIRE(errno == 0); + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + (void)wait_for_timerfd(timerfd); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(close(timerfd) == 0); + ATF_REQUIRE(errno == 0); +} + +ATF_TC_WITHOUT_HEAD(timerfd__reset_to_very_long); +ATF_TC_BODY(timerfd__reset_to_very_long, tc) +{ + ATF_REQUIRE(errno == 0); + int timerfd = timerfd_create(CLOCK_MONOTONIC, /**/ + TFD_CLOEXEC | TFD_NONBLOCK); + ATF_REQUIRE(timerfd >= 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 0, + .it_value.tv_nsec = 100000000, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + ATF_REQUIRE(timerfd_settime(timerfd, 0, + &(struct itimerspec) { + .it_value.tv_sec = 630720000, + .it_value.tv_nsec = 0, + }, + NULL) == 0); + ATF_REQUIRE(errno == 0); + + struct pollfd pfd = { .fd = timerfd, .events = POLLIN }; *** 376 LINES SKIPPED *** From nobody Fri Apr 3 15:27:27 2026 X-Original-To: dev-commits-src-branches@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 4fnMzM4ZFdz6Ygdr for ; Fri, 03 Apr 2026 15:27:27 +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 4fnMzM28q3z3hTl for ; Fri, 03 Apr 2026 15:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230047; 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=UdnCh42sRRXVwsO3fI8Hr1u8I0Xq1Pzo/zrTMIcru2E=; b=T/7yV7ZVkmlXKKWAwHoMQe751+NzFIJ9YPzJrcuPmWj+Ze7PXcLJQeL6Cii9l1208jlyGs oew1Zjatmu/K0SQSACf5d7jv0yr0nAVK91gFnHxHljj6eieBdYGsAM6F/QF66UeI5cm/gG N61zlXz00tfsvhzCk2To7VwQpPw/L+EHtPbRyy7ul+RPzWZlQ0zh4SKTSW3502b5qrQnyL uahbYvH/yU2BlXEn9tG/Gr9HDSy9sbUMseP60qckkrH5JL4UB+V4UjDEf6GdH3KqwovquW CWUq5fvsAUXUsDBF9rfbTdth0rRXS488W8HOS1kJTFDgwFR1XSwRylPFFi+jeQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230047; a=rsa-sha256; cv=none; b=PoBULgyMZfZgMKSmDuHON+68djFYNPgQSSBsozGHE4f+pI8Urf+w21qqRRi208nILuRQ1x 2DvycuYaDdbg4XuBSvgZVcLJaayCdtsQ2fcjDx9MvkiH3BkyfmhCgiXmmt/s4W1rCSj6YW osUwv9t9ABUzdIdeHMj2YHUXN+PQzfbgJdgp4WOPw1FfQ4lFfHjtk5S31kPOX6bNpaskna Dav5eI84cK65epZVtEn5I3CpUygyJl6+0hTVWKm5K4TIeKwYZQc+n3ep+8mhMtd3FdTmPI +ffKQczhnOOzXpyHNJgl/8YGJfUSntJ+H/uxBB1+yxe6XefLtonnI7llB49KcQ== 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=1775230047; 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=UdnCh42sRRXVwsO3fI8Hr1u8I0Xq1Pzo/zrTMIcru2E=; b=WvB3eRQfXcSkkU+C1TAjzm5Nyo0oHcq8MRtZg9iT9XLHyY7/GYHIo0NYUIByhjoiFeIlIS 0dKLoKv7/0o+I6f/O6E12hQkitGimwcr2yTDCAxYVmSAYhDh9+brQkK4KwdbRgY7lXYjEi uJF5lTqdmOCfNfdb7LKz1T0dEn2ziS9Fhawmokay92JnNW9u6ntW5hqZDmlfGG3LSPhqOL rY+Pc3Kofepqtxm/Ok6dS+SDMri4fKm7L5PIdjDdfrKh0Z13qAsDxKExrv3dXbked9lrDx nqOBy+RfaaisnQtvDlETQHFfwa1Le4CWYvWD1EGPUykFe3DzimDxIM2Evxpeyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzM1VhNzv1R for ; Fri, 03 Apr 2026 15:27:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3f9b9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: a5a4a2be69f9 - stable/14 - sys/time: Add saturating sbt conversions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a5a4a2be69f9696953afa6eb586c62ed96611c37 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:27 +0000 Message-Id: <69cfdc5f.3f9b9.80896b@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=a5a4a2be69f9696953afa6eb586c62ed96611c37 commit a5a4a2be69f9696953afa6eb586c62ed96611c37 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:20 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 sys/time: Add saturating sbt conversions When converting from timespec to sbintime, the timespec's 64-bit tv_sec component is shifted to the left 32 bits, causing any information in the upper 32 bits to be lost. This data loss during conversion can turn timespecs with very large tv_sec counters into sbintimes that represent much smaller time durations. Add tstosbt_sat() and tvtosbt_sat(), which are saturating versions of tstosbt and tvtosbt. With these routines, any overflow resulting from the conversion is clamped to [-SBT_MAX - 1, SBT_MAX]. Reviewed by: imp, markj Differential Revision: https://reviews.freebsd.org/D55791 MFC after: 2 weeks (cherry picked from commit e3799530b3ba38567f8052b9e107884609fc71ea) --- sys/sys/time.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/sys/time.h b/sys/sys/time.h index 31020bbdfdd8..66fbd2dd41f4 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -354,6 +354,16 @@ tstosbt(struct timespec _ts) return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec)); } +static __inline sbintime_t +tstosbt_sat(struct timespec _ts) +{ + if (_ts.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_ts.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tstosbt(_ts)); +} + static __inline struct timeval sbttotv(sbintime_t _sbt) { @@ -370,6 +380,17 @@ tvtosbt(struct timeval _tv) return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec)); } + +static __inline sbintime_t +tvtosbt_sat(struct timeval _tv) +{ + if (_tv.tv_sec > SBT_MAX >> 32) + return (SBT_MAX); + if (_tv.tv_sec < -(SBT_MAX >> 32) - 1) + return (-SBT_MAX - 1); + return (tvtosbt(_tv)); +} + #endif /* __BSD_VISIBLE */ #ifdef _KERNEL From nobody Fri Apr 3 15:27:28 2026 X-Original-To: dev-commits-src-branches@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 4fnMzN61xbz6Ygkc for ; Fri, 03 Apr 2026 15:27:28 +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 4fnMzN2nl6z3hbW for ; Fri, 03 Apr 2026 15:27:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230048; 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=xFUVm0AAqbJpr9CzWlJ6GgQOjRFcFyTze9nM6lttpc8=; b=fNAxLcmlh7/H11OLm3+tXmd7kfPRmztvQrYdEZwGdXJv6X+qsP67MSkOSeVMU6Kdj2PRmm kcQekmkNUtEDrPZRt6E9oyhEylrcLIJPDYXt8Vy+13LZzcQ+jSNA4yPl7K9i6NG54ekBOX oeP0GiEPrMdEVSCl2xnN/a4JVhPcP6vCqmzYgNTZ+wr9tQ0b4jSy8fSjJ0ueDV43vfhN2D RFuLIiznPM5/UDIdZMsCGpX6x00SeFCMY4HU1JNWF2W6qa0DPazmG1E9T54zTx+xY0zrdc POwUQ3pH7fo20cO05Vy6nEtw+PMlzI9obqy+GUp/xSfSgiNALOWb4wVvPlWeLg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230048; a=rsa-sha256; cv=none; b=sGFZCEfYzgUTOg8N9IBvTRMC8cecEa4xFSzO7kClZfivXrNiFhcWH/3d1LPJCMgzB5saWF xa5tfTz2boU7ly0ZUYxFkmKDk/oTrDF9tDfLa+mAX2AkJKJbGBAI955MBfKQHfWBbUojcg N2lANGVP+io5pFYEA+NM44bFLnAqJMKvn7b1PutUdHM/9MhtqFdee6vhvjki3n6x6RzHfp TJhZzaL9lk/lsrP9rq+YsKfNqd/+cJmyGlhuc/jfQXLkW+S1Y+dktqv5/JEK61kxwcqFct 8G/URLI9MtwgqXsWg1uS4iEcfV8e1hiN5JxL754qpcgY4BrqvN5WeKLt8OGw8Q== 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=1775230048; 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=xFUVm0AAqbJpr9CzWlJ6GgQOjRFcFyTze9nM6lttpc8=; b=pJm+rsBCrXPRbOpbbJp3xA1VhoDbl/64Lq4ffNTQszZjl8huokQDWj3y0PZInLbQr2SEVJ 7kqVM4Qft/n05MjyVwmoJGIWIdEqn4vNYh8x98X2PkcEmAGDg2iZFJO2mRxjxQQ13iQ25F wxZGHgxLBglCNT5DG7h4FXs5ESVng//VGuGb9pAT6ql5p7EBX+xaPBxBvdOmOezuM8VgRZ 5OeqpzhB1aYX9ej+ejla9h0/6UQXH1nTMyqPO35tMUHzpGKZh6D8Zl93lMr1F5g+6APMQc iLtXsFU3kvoPJAwJNoa8GDbL5zH7mtRWsiIOugFu5o5IiYPxmjAzL08Ul623lQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzN2HhLztrj for ; Fri, 03 Apr 2026 15:27:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 406ab by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: db0096d573d1 - stable/14 - timerfd: Use saturating sbintime conversions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: db0096d573d1c7972960aafb1657a338f2e971e5 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:28 +0000 Message-Id: <69cfdc60.406ab.4597b987@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=db0096d573d1c7972960aafb1657a338f2e971e5 commit db0096d573d1c7972960aafb1657a338f2e971e5 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:38 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Use saturating sbintime conversions Some timerfd consumers set expirations with timespec tv_sec components larger than 2^31 - 1. In such cases, converting that timespec to sbintime results in data loss or sign flip, yielding a shorter expiration than desired. To avoid this problem, use saturating timespec-to-sbintime conversion functions. These will clamp the converted sbintime to SBT_MAX under circumstances where the normal conversion functions would overflow. Saturating conversions still result in data loss, but the consequences are less severe, causing problems only after SBT_MAX (~68 years) of system uptime elapses. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D55792 MFC after: 2 weeks (cherry picked from commit 0e8f351be7935729bf67dc1b7aa4d178cf154931) --- sys/kern/sys_timerfd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index 236dfe8bb96a..f2a66e21cd63 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -165,7 +165,7 @@ timerfd_jumped(void) &diff, &tfd->tfd_time.it_value); if (callout_stop(&tfd->tfd_callout) == 1) { callout_schedule_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), + tstosbt_sat(tfd->tfd_time.it_value), 0, C_ABSOLUTE); } } @@ -398,10 +398,10 @@ timerfd_expire(void *arg) ++tfd->tfd_count; tfd->tfd_expired = true; if (timespecisset(&tfd->tfd_time.it_interval)) { - exp = tstosbt(tfd->tfd_time.it_value); - interval = tstosbt(tfd->tfd_time.it_interval); + exp = tstosbt_sat(tfd->tfd_time.it_value); + interval = tstosbt_sat(tfd->tfd_time.it_interval); now = sbinuptime(); - next = now + interval; + next = now > SBT_MAX - interval ? SBT_MAX : now + interval; /* Count missed events. */ if (now > exp) { @@ -553,7 +553,7 @@ kern_timerfd_settime(struct thread *td, int fd, int flags, &tfd->tfd_time.it_value); } callout_reset_sbt(&tfd->tfd_callout, - tstosbt(tfd->tfd_time.it_value), + tstosbt_sat(tfd->tfd_time.it_value), 0, timerfd_expire, tfd, C_ABSOLUTE); } else { callout_stop(&tfd->tfd_callout); From nobody Fri Apr 3 15:27:30 2026 X-Original-To: dev-commits-src-branches@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 4fnMzR0WDVz6YgcF for ; Fri, 03 Apr 2026 15:27:31 +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 4fnMzQ3vCwz3hWt for ; Fri, 03 Apr 2026 15:27:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230050; 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=Pb4Et2gTpR2IIhbqoSHCzEM8n8RFRjva+D7l8Mt9jPM=; b=MUG4nbpqEjkqnScNtnswLms64GHFTXV6iWLK5x9diB8P3NLE7v0NeqSk5/Qjxid4GUD4ws l5WtyuyKiBvDq0qGw2BMhlLk5kNy8OM/zawTF17KOxRcry1co0hDo/OKSXcK08R3sTGtQt 2a5RztufQwKgK03wtqlbdA6rG0aZhr/ogzmdpBzXwv8h5QAzR7jaz3aRml1SjK9u6Hpc44 VpcBOtPlvUQKOiN5/t5baAPkE94POxL4Nrbtl938v6EpSD7GkbK0T86anmtHpRvAlZLRlP Hm4ZrYhO3x/V6fODTAm31txvcmdBCUlM8LpEjA310Qn+zC2hkYKA3z2ledlR8w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230050; a=rsa-sha256; cv=none; b=MHdtEx5rpJ9XX+zBRLPxFbJ9hozUwnl52AjviTDPI+O8s6T28TfHCjPCdsg/R0qHhiNG+1 9mXLTXrksnwXKJV22PEAMzysmKyxTSUn0ZB6p0Rc/VKiEAqE3mtlWHJ4gHDh2v51ePhFOU aVDJBpVBA8nN3XaRV7bGm8XD+b9NYvnvo+NsAq2XI0qP4YOwL/sqjyiNBAw4USp2Ef2MYO gwVzAvlardpLxjwcYndlARk3yzdn4eofNGclaE7sz5Fr3dKuOOK6wPGFNJEzkzBNPInsPS nCoYvebq4vsLDPgP2H93JIXjUy8uUICWMJBcTRoAJJis/Wu0F199h0jfcPq+EA== 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=1775230050; 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=Pb4Et2gTpR2IIhbqoSHCzEM8n8RFRjva+D7l8Mt9jPM=; b=Mxa8XpQoJrlmOAwgWasXM0H2uQe6X7rYUzfRsoiUTI2hOhBu6/ICpEuc9dll05j9GnFTwe OqikepIPi9s6WLXnNdzsrbMIX35ylngv/XgZUp5lDbqNFoge00pYaVwCd/lb9+kgm/plFI gEFGFaD3tRIg47y4EnGtqO71rNyWaJAqpQxhzoEfNN7p9lu24xrXrlWlB0x2clT6LJcNMk Ky2mNdl7DiNHjD6GE4ao9atQodPMBWdFUlP/oAvfkqa7aCYKFLoy5ECmwUcdK3guZolOLd oxn33iGNFQVtkLW5zjLuIk1kM1jHE0fLE/eZKIQUSjUW3oA3J0ZjUEnS9CNN1w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzQ3RjZzv8w for ; Fri, 03 Apr 2026 15:27:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40eb5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: c10591e45071 - stable/14 - timerfd: Suppress kqueue readability after jump read List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c10591e45071e0f4b2a596b41ea38b1aa3aa0748 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:30 +0000 Message-Id: <69cfdc62.40eb5.2025b63f@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=c10591e45071e0f4b2a596b41ea38b1aa3aa0748 commit c10591e45071e0f4b2a596b41ea38b1aa3aa0748 Author: Jake Freeland AuthorDate: 2026-03-20 06:34:15 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Suppress kqueue readability after jump read Do not report EVFILT_READ after reading a discontinuous clock jump. This makes the kqueue filter consistent with Linux epoll behavior and timerfd_poll(), which already checks tfd_jumped != TFD_READ before reporting POLLIN. MFC after: 2 weeks (cherry picked from commit 33345b8834859cf1ad7f1256f3a34b4a7c83e8e8) --- sys/kern/sys_timerfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index e4d00f224505..22e6a30faa21 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -290,7 +290,7 @@ filt_timerfdread(struct knote *kn, long hint) mtx_assert(&tfd->tfd_lock, MA_OWNED); kn->kn_data = (int64_t)tfd->tfd_count; - return (tfd->tfd_count > 0); + return (tfd->tfd_count > 0 && tfd->tfd_jumped != TFD_READ); } static const struct filterops timerfd_rfiltops = { From nobody Fri Apr 3 15:27:29 2026 X-Original-To: dev-commits-src-branches@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 4fnMzQ1Sd0z6Ygf6 for ; Fri, 03 Apr 2026 15:27:30 +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 4fnMzP3HhPz3hVC for ; Fri, 03 Apr 2026 15:27:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230049; 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=xlLg5E4tK8qmAUY0lWrB5g4Ze2ejlUG7FyxmzR0or7I=; b=FXTDGrQT/nK3FT1+nTqtz53RTKZ9o+FPuZrc/VeVSEUqqCnF2tVROcxKBuDxnzumAwoxYk 8BPxKale0es8YbG4tB/3XsfNl+F3407lVO0hdPNCd+2aUycZBMYRJ7RB7i+AeIW0k6bnXZ LZFfduYF2llB3AI2PcKDMvV8Vii5OVJbje3iPIbGAD0PHbnMRLqRb/JpE/zZ74uPsD0RDb HZrXpZDq63DVz4TosdC/jadgWE1JmJYzv54pfS9/dcVEHE1agDr6UC+kEe3mWJkkuI0glG fneZfLpLF4iXhFeoiYGhSGVU2CEYKV7V6v/Kip8FwCivcMi1B7a9nHxUN883SQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230049; a=rsa-sha256; cv=none; b=O8zLCVNW+bbkPtm4cGeDoxTweFWAN5qOPEhkIHacIV4lRraGE6QcjPGzc5wUt9YPqoW9YT 7NeAUq2+gherT7SkXnCTGRZ219thpkugdJZCQpi/MmH8la3MkYJ3Jxm6KO/20pUgg3Cfjb C0YwrGaIpWh9AasROtMUuPCpB7faz3ChHRj3k1WjQ7vi0Bz5WMTzXDc3dVFoM6z6/upCpK ief5KgW/CPpSboSs4ft1gFqgm+ddvSF3EUBnRBNbCThgJKtKddIF5Kp7FyKFGKhEWDlfIR zabC1dDWo4CnRI10RqCp4ezPuN2tJVvPdasHkFDmbpVeloAMFpmJI+K1zQBkkw== 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=1775230049; 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=xlLg5E4tK8qmAUY0lWrB5g4Ze2ejlUG7FyxmzR0or7I=; b=YGhftPY4ussxNHvXNXhQkiYP6UfwIZVQmw/rIgaS4zNDVX3Fb24Yy/BnXUk1ue7FouneVD Kr8qHZW0N4oKojgrOyqQox3JtTqj6oc6vwC1efHgVtTdB8+ldtPFc4wOBYpJGCw/X/vAdy CUOYvhwml2l8I/W/2T7Ts8P8C9vlTinUxDRCQM4HNDQ4kSGFwSRO8kUup5MywuaBVHBSZe Tf0S2vfNQ7wlizT1/vRx1O7+PB/orLhnFmy1RHPL8AltA5qc+iDSC/7H56VRXhpl+GCwNh AxQ23Gtbe2u9njaTaEKhyPglQoxHzKAwPNvqv5K+38OaACqrpbVeVpsSbbsHcQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzP2nFKzv1T for ; Fri, 03 Apr 2026 15:27:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3fe6e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: f05e8fc76e66 - stable/14 - timerfd: Wake up on discontinuous jump List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f05e8fc76e66f654f9b842dbe83cecb5d41b8c94 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:29 +0000 Message-Id: <69cfdc61.3fe6e.4c0df8b@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=f05e8fc76e66f654f9b842dbe83cecb5d41b8c94 commit f05e8fc76e66f654f9b842dbe83cecb5d41b8c94 Author: Jake Freeland AuthorDate: 2026-03-20 06:33:54 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Wake up on discontinuous jump If a discontinous realtime clock change occurs and sets any TFD_JUMPED bits on the timerfd, then wake up waiting readers. This fixes failures from the timerfd_root__clock_change_notification test case. MFC after: 2 weeks (cherry picked from commit b11fba41265ae132acfb05587a6dbf60334d3279) --- sys/kern/sys_timerfd.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index f2a66e21cd63..e4d00f224505 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -118,6 +118,14 @@ timerfd_getboottime(struct timespec *ts) TIMEVAL_TO_TIMESPEC(&tv, ts); } +static void +timerfd_wakeup(struct timerfd *tfd) +{ + wakeup(&tfd->tfd_count); + selwakeup(&tfd->tfd_sel); + KNOTE_LOCKED(&tfd->tfd_sel.si_note, 0); +} + /* * Call when a discontinuous jump has occured in CLOCK_REALTIME and * update timerfd's cached boottime. A jump can be triggered using @@ -172,6 +180,8 @@ timerfd_jumped(void) } tfd->tfd_boottim = boottime; + if ((tfd->tfd_jumped & TFD_JUMPED) != 0) + timerfd_wakeup(tfd); mtx_unlock(&tfd->tfd_lock); } mtx_unlock(&timerfd_list_lock); @@ -418,9 +428,7 @@ timerfd_expire(void *arg) timespecclear(&tfd->tfd_time.it_value); } - wakeup(&tfd->tfd_count); - selwakeup(&tfd->tfd_sel); - KNOTE_LOCKED(&tfd->tfd_sel.si_note, 0); + timerfd_wakeup(tfd); } int From nobody Fri Apr 3 15:27:31 2026 X-Original-To: dev-commits-src-branches@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 4fnMzS6pNGz6Ygmv for ; Fri, 03 Apr 2026 15:27:32 +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 4fnMzR5Khdz3hhx for ; Fri, 03 Apr 2026 15:27:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230051; 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=44Fjypsio+IfQRRzcWMhE7eMLurnGVBYbCrw5Av4vtw=; b=aC9/WYXy7OVw5BwLtZd/DCe0SvlyMJfSCjRJKAIX5MCgyH8EWv5Ugrk09tYbjncDhDaiKb AxLYUZ2kZxdPqX5cQjjnlQOboudT+qfVYbAG3DY3FZ6pUNsp5sC0KS2L8rQceFH725XvTm a0GSi0WPr3ewCBzhzV/S6JOonxuLKPiIsultOKhaHCdxuZqTCoNwvrjdjUKXJhiK8JoMZs dN8wAm+UTZsyVCwkF3oVNh7PZAhsBnqRFFzXrvjnfHufEwnMWTTVCizh6ccQTS7jwRfBYs EK04LpyFV5fR95EZcOsf0NlYtzUXZxRwSXA2fwJieFCZC1flkt7bLdL5lWEhbw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230051; a=rsa-sha256; cv=none; b=K/sYOE6K/vzIZaln8aJsKERxnBVCa7y31KwoH2XveqB3DrnmDx3lN0NUzW1dieKFOtMJgX ikpcUBBKF4mDi0ZYdygzxQT/XIhfN1FY9IIst8SKp3/iCIFQhOT6JeQT8O8le7YZxXqbUN h63wZWyQ7Ex0JOEwsrwI76peou3+E39pxzNbMSVGwiuSJXJNaF1giAtYaE4irYT4ot/p1E NUMsu5lkTzz6zYHPgHle247lbVhK2oVXnvuzwKSztmwg/00g51/OE1OxgmHsAF7hsxBnxd D34AjKDx91KijsgkbW4B0HaqSU79nNLy9d7uwNRA/e3nYAxHi1nLGq4+6KCm7w== 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=1775230051; 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=44Fjypsio+IfQRRzcWMhE7eMLurnGVBYbCrw5Av4vtw=; b=TFve0rBfncjUJ8NU61WA1dc8mvaUHo0jadJ06i+JFNgBAEc/LcnXkJW8cRu1VpC1nyhC9C A8GEio/fbYbBMBm/PQ2IFY0h0vqeAK/PUhNfKAjGbM5gxD5anIz/4eQCXqSb5ij3JwmsTh Zgl2OytOaWSszWXYhu4+Cie9haPUmbaOcaN73TtfXFgK/LHtglPwnX1BBTv7NSlVnxO9O7 c9WpoY3THUYmdvp4TiYxU2nUpRZ6GZAE/WUOsYX/cr92WXG8/NDOptv4behnQ0Xu9zof4g 7ZKkbOnctbnIKsrW2yaS5NwCT0JCNDNfYYc3lsyAadH3jse9LAa8NXx6hQ7cbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzR4GbkzvKt for ; Fri, 03 Apr 2026 15:27:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ff46 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 6e0d0fe9102d - stable/14 - timerfd: Expect periodic timer performance failures List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6e0d0fe9102d9fe71c01cbe064b6d4e1c2fc0e9b Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:31 +0000 Message-Id: <69cfdc63.3ff46.2b80675b@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=6e0d0fe9102d9fe71c01cbe064b6d4e1c2fc0e9b commit 6e0d0fe9102d9fe71c01cbe064b6d4e1c2fc0e9b Author: Jake Freeland AuthorDate: 2026-03-25 22:57:16 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Expect periodic timer performance failures The current timerfd implementation fails to correctly count events on a nanosecond callout interval. The timerfd__periodic_timer_performance test detects this and reports failure. Mark this test as an expected failure so it isn't flagged by CI. A link to the bug report is attached to the test for reference. While we're here, clean up some minor style and Make issues. Fixes: 834c1ba793d9 ("timerfd: Add tests") MFC after: 1 week (cherry picked from commit cb692380f1e05ffc4184877844e93051f24ed302) --- tests/sys/kern/Makefile | 1 - tests/sys/kern/timerfd.c | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index d1810610f7f5..4d45a68ef244 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -45,7 +45,6 @@ PLAIN_TESTS_C+= subr_unit_test ATF_TESTS_C+= sysctl_kern_proc ATF_TESTS_C+= sys_getrandom ATF_TESTS_C+= timerfd -CFLAGS.timerfd+= -I${.CURDIR} LIBADD.timerfd+= pthread ATF_TESTS_C+= tty_pts ATF_TESTS_C+= unix_dgram diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index b24d093b346e..cacc1d9aafa9 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -25,11 +25,11 @@ #include #include - #include #include #include #include +#include #include #include @@ -44,8 +44,6 @@ #include #include -#include - /* Time in ns that sleeps are allowed to take longer for in unit tests. */ #define TIMER_SLACK (90000000) @@ -739,6 +737,7 @@ ATF_TC_BODY(timerfd__periodic_timer_performance, tc) uint64_t timeouts; ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == (ssize_t)sizeof(timeouts)); + atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); ATF_REQUIRE(close(timerfd) == 0); From nobody Fri Apr 3 15:27:32 2026 X-Original-To: dev-commits-src-branches@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 4fnMzT1TSpz6Ygks for ; Fri, 03 Apr 2026 15:27:33 +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 4fnMzS5F2bz3hc3 for ; Fri, 03 Apr 2026 15:27:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775230052; 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=Qr8wl8Dgw23k9vTDqxGojnLSLgB9e8W8JhmACBfUUcA=; b=LPIG1ivik1AYS6pobgvMNPgXyGqO77YtNvtLK7VdxDgB1s74+7/g82JgGRDj7XvXi9gf34 /0IkPbhtOWJt5+S4U0w8YaStnnD59MVja1UJZTczbx73+ZRVJgeVykn2ga3pUr4dNt6bUF XkmUTfT6pNjsbTCssRtadRfD8cAFCs7mYEcWRnn59FeoS5qBMfmk/ooqnnXXng1y/XwnY5 U/GwIYJ8BspbHISfiAFlfnAXpGNhbJ2SK9BD6vjJk2ImaNius89kzovId1wGEsd+56H2LO 3b9Pyw7TF4VzoUgIhIxQw8PawXkyo1gTWHIc1SdRMWrzD4r0/YI2jKAbUsDCew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775230052; a=rsa-sha256; cv=none; b=a8ujtnGCPzHc6r2k4KMbjYu2oWQCBO0aYoJyyAfGEyksJVk1pVVQBAVPw9RTT/tue0gd9p pU5Ci0gkXJc2SmSdCosd3VweZ7bVYCzgRuF4dAaD0SG7kKm5FZ7R7kYxdfw4EG5Hy6jZlZ S/SZS3RREuXCCN7JHTLxVj2LmXNoZ8ouR8qeg29kSZGEcvugDR1GGnboLQ3fDtSaXoVxaU QYLqtuvZeMwD7viTYvsbEZHB7/gmmMBGWMnvp8NR1xvdgKzy8mmD8NmunCRdbVxlza+3La mBesKlqveZ9/6C4B5P/Sj/A2kCgfst9ZfioXSX913H/7UX0wnr/ezIf+40Pa5w== 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=1775230052; 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=Qr8wl8Dgw23k9vTDqxGojnLSLgB9e8W8JhmACBfUUcA=; b=dGpAnTDG0IUmZCaiZ/GlmM9/ZJwYwWVjEJfuvczUrpJh/8HbGsu39e9N1ZQksRe8+ow4e7 kWxhLVo/R4vlCnLbQ2M/uy9+hKWLFQ7Qi2/RWGAvrs00UCxg5YOvLSQta/66nTrLfrXG21 EpySSyElpDoTT+VHgkKM7dFAmhCPAG5msKu8EMW/lChTjXAgppzQA6b9ba6wV+/JL2LMcj 8ZDB4YAl4teIESJpRAAFv+A8NgcObR0OfKgmF5inCkeuyMv5hKpEjOZOJikgo4O3odfPsx +21fM44jf6z5LzjkjRaCQIUEVUz2ikLjZ9ro2RbV4ung80+M2bqGBhgSqjWPSg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnMzS4kjPztrk for ; Fri, 03 Apr 2026 15:27:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40dc3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 03 Apr 2026 15:27:32 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jake Freeland Subject: git: 6a13864e02b0 - stable/14 - timerfd: Guard expected performance failure List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jfree X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6a13864e02b061b67808f2d1789de51c83aeea90 Auto-Submitted: auto-generated Date: Fri, 03 Apr 2026 15:27:32 +0000 Message-Id: <69cfdc64.40dc3.43be6b14@gitrepo.freebsd.org> The branch stable/14 has been updated by jfree: URL: https://cgit.FreeBSD.org/src/commit/?id=6a13864e02b061b67808f2d1789de51c83aeea90 commit 6a13864e02b061b67808f2d1789de51c83aeea90 Author: Jake Freeland AuthorDate: 2026-03-26 16:40:17 +0000 Commit: Jake Freeland CommitDate: 2026-04-03 15:26:56 +0000 timerfd: Guard expected performance failure During the timerfd__periodic_timer_performance test, only expect failures when the expiration count is less than 400000000. This prevents the test from being reported as a true failure in environments where scheduling latency is high enough to delay timerfd wakeups. Fixes: cb692380f1e0 ("timerfd: Expect periodic timer ...") MFC after: 1 week (cherry picked from commit 4b16ff49bf4bf875997fe4c80a0afc0d440b7aac) --- tests/sys/kern/timerfd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/sys/kern/timerfd.c b/tests/sys/kern/timerfd.c index cacc1d9aafa9..277516c3d9e2 100644 --- a/tests/sys/kern/timerfd.c +++ b/tests/sys/kern/timerfd.c @@ -737,7 +737,8 @@ ATF_TC_BODY(timerfd__periodic_timer_performance, tc) uint64_t timeouts; ATF_REQUIRE(read(timerfd, &timeouts, sizeof(timeouts)) == (ssize_t)sizeof(timeouts)); - atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); + if (timeouts < 400000000) + atf_tc_expect_fail("https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294053"); ATF_REQUIRE_MSG(timeouts >= 400000000, "%ld", (long)timeouts); ATF_REQUIRE(close(timerfd) == 0); From nobody Sat Apr 4 08:59:26 2026 X-Original-To: dev-commits-src-branches@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 4fnqKC04fgz6YGpd for ; Sat, 04 Apr 2026 08:59:27 +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 4fnqKB5jPnz3LJG for ; Sat, 04 Apr 2026 08:59:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293166; 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=B9znixHwc19MqF/vZa366JiuDicr8UlVq9YOzx5aIik=; b=AyZ48kKkeKohnGHJhVSxU05ynSUZNbD+bQeRlQMqeg0JgmF/uzuBYkLluDnYzlV0UwBS9w tU8ztES67GIYDEoGL2QJksyTldZ25Uq4unDDwiKUV0imeCF7UxFKP5oSR9Qge4rVWUekNd oclV9wTYB65lqKkxygHnGeHBGmW7G2h1SXxoRpY62227IAUmGZRpW6LZ5KIacwKtzGpSq7 FttD9VxfFlvrsovOeIHiAGCj0eflHcMlqjGQ9mLd7qBnj4rz3pSfYa6O5+O+T9aRG3dAgD NwZ+RqJQh8TkUG2GdowuXdHTH4msM/iZmzsRZbeGSBV35kND+0fhKod6ErHgSQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293166; a=rsa-sha256; cv=none; b=yNHAlllgKZY3O9xFcx9z4WZlqBH/IaKvXmFZ1Q0yb/FaEVjzNkbhBvKKvEvMgu+/HyAHav 9KWdL40j4DLZnXxUikQ33KfB/U40zlH+yVEyrwgX0a9Z/pQ7UpxDWPHTn/tGPGKjPmRGbY cJsmHVzS/fvB19HenHqgPKQpU3lS12CRPy9+pI/S+AWAmUB5kh1W5vlixQ5+ZLdPVAkWtS 67cMCwX+9qeLxFxkp6fbyLBeLjLpJxcBXlUQtkQwo8+BGX23i3UkPfN2ObHSHFTPBDNyab j1UbgpcAIpKB5Qb9pqLOqWLWBnI/ZoCZEWO3u2zCKqtUngGRSJulpRIWv/H1+g== 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=1775293166; 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=B9znixHwc19MqF/vZa366JiuDicr8UlVq9YOzx5aIik=; b=IEc0nAfP4gBkvYsiNJ1egpE/g1r7b7Rt7oMBz1geUgGcJFuXFo4jGBoHfr+vxCnKFU1+l5 V8Sdva8rbnvd2h/Ax+Z/MTaNkcvqi7r8+PSyxkfHb+DKBjOBwc5I5GqXyAKM/QpksqQ0KG lcwBwk7rjiXn+YZMPIEkgSo8C+06bBPD7s65OoFbuBpl3hhZ+RfZSgLlbv420HvfsEPYyo RrmpIWBmGDmY7pGrU6NAvL4uJdV/WP/yMxzZ7nbF/6IOrSJxqXd3+D/d9EhXcuiXxmrTEN IpZzUAFPuq16q/mKygVWGniUPxlOFggwpxJ7yVmHlDCl/uTb9lba73rwpjNakw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKB5GRvz1QkD for ; Sat, 04 Apr 2026 08:59:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36344 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: ae185dc5f409 - stable/15 - tunefs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: ae185dc5f409f330806efbf355c57e2e94a15440 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:26 +0000 Message-Id: <69d0d2ee.36344.37b57d35@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ae185dc5f409f330806efbf355c57e2e94a15440 commit ae185dc5f409f330806efbf355c57e2e94a15440 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:33 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:14 +0000 tunefs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable one if the other is already in use. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D56002 (cherry picked from commit b1f72dd2a9a5e69a310b9e76b55f16cff433b8da) --- sbin/tunefs/tunefs.8 | 8 ++++++-- sbin/tunefs/tunefs.c | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sbin/tunefs/tunefs.8 b/sbin/tunefs/tunefs.8 index 0fb11041d97d..8c2d0bbf5d1d 100644 --- a/sbin/tunefs/tunefs.8 +++ b/sbin/tunefs/tunefs.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 17, 2023 +.Dd March 20, 2026 .Dt TUNEFS 8 .Os .Sh NAME @@ -92,6 +92,8 @@ this parameter should be set higher. Specify the expected average file size. .It Fl j Cm enable | disable Turn on/off soft updates journaling. +Enabling soft updates journaling implies enabling soft updates and is +incompatible with GEOM journaling. .Pp Enabling journaling reduces the time spent by .Xr fsck_ffs 8 @@ -128,7 +130,8 @@ is running. Running a full fsck on a UFS filesystem is the equivalent of running a scrub on a ZFS filesystem. .It Fl J Cm enable | disable -Turn on/off gjournal flag. +Turn on/off GEOM journaling. +GEOM journaling is incompatible with soft updates. .It Fl k Ar held-for-metadata-blocks Set the amount of space to be held for metadata blocks. When set, the file system preference routines will try to save @@ -171,6 +174,7 @@ been deleted to get under the higher threshold. Turn on/off the administrative NFSv4 ACL enable flag. .It Fl n Cm enable | disable Turn on/off soft updates. +Soft updates are incompatible with GEOM journaling. .It Fl o Cm space | time The file system can either try to minimize the time spent allocating blocks, or it can attempt to minimize the space diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index 6f6df8446cd9..d5ef366e8221 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -358,6 +358,9 @@ main(int argc, char *argv[]) if ((sblock.fs_flags & (FS_DOSOFTDEP | FS_SUJ)) == (FS_DOSOFTDEP | FS_SUJ)) { warnx("%s remains unchanged as enabled", name); + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); @@ -386,6 +389,9 @@ main(int argc, char *argv[]) if (strcmp(Jvalue, "enable") == 0) { if (sblock.fs_flags & FS_GJOURNAL) { warnx("%s remains unchanged as enabled", name); + } if (sblock.fs_flags & FS_DOSOFTDEP) { + warnx("%s cannot be enabled while soft " + "updates are enabled", name); } else { sblock.fs_flags |= FS_GJOURNAL; warnx("%s set", name); @@ -403,9 +409,9 @@ main(int argc, char *argv[]) } if (kflag) { name = "space to hold for metadata blocks"; - if (sblock.fs_metaspace == kvalue) + if (sblock.fs_metaspace == kvalue) { warnx("%s remains unchanged as %d", name, kvalue); - else { + } else { kvalue = blknum(&sblock, kvalue); if (kvalue > sblock.fs_fpg / 2) { kvalue = blknum(&sblock, sblock.fs_fpg / 2); @@ -477,9 +483,12 @@ main(int argc, char *argv[]) if (nflag) { name = "soft updates"; if (strcmp(nvalue, "enable") == 0) { - if (sblock.fs_flags & FS_DOSOFTDEP) + if (sblock.fs_flags & FS_DOSOFTDEP) { warnx("%s remains unchanged as enabled", name); - else if (sblock.fs_clean == 0) { + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); + } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); } else { From nobody Sat Apr 4 08:59:25 2026 X-Original-To: dev-commits-src-branches@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 4fnqK95kvtz6YGWJ for ; Sat, 04 Apr 2026 08:59:25 +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 4fnqK953Xdz3LJF for ; Sat, 04 Apr 2026 08:59:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293165; 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=bmfnn7zmzFF5aqCEhc/7pseMzv41i3on+qAmm27nSQI=; b=mstTyRn4+6HQBx02cSQ+Bj+h8Fk15ikNE1tqvG68IlrrbfXJvZkj1mpbciYUh4peRCSus0 G9t+Q0K3asJoIzNI/eLpD2582aGHvEsJgBQIJ6GSabY6ScVDufD3uGB6c4NpCCM7jA2pD2 /hYoTcM9LDxoOupYhrWhiRPsVMUZdGLAaHlL9sewipZeRYi3XhKTQsH3596eAMO6NI5t+5 2AWt6C1+c4+S/tR9pW5bM42c1mSxeX7+6RWOgwu9CQk6FYlqIfROz0Ans70U0QoQpNLPnu 8VcPvhHUsAmHtuZ8e55XyVZ1R5bgWpbocBjGS2VEL853Dx+Vhw+xZLj21HEm6g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293165; a=rsa-sha256; cv=none; b=FcgqfqMx/C+MlGdba1+7vqQonegRh1+c+f0NErA0fOJfVI+VxlyaF3KWz92ie20bKKGU7N rUI7S+IP+hb0CAWOshuvbN3e5etM/iaPGc74n71wh9PzcCcE+zuoD1ijBi873YVi79mznk oA267k/Oe7OFZeVYm+v5luU8Z41oVXhWkHx+8WZGtXppJg1qhjb2I+W5tp2lkiOhiHBVhz D9Z6GkJ9w0HMPRmUAuVx239+0WiiJ0FxF6WIkp+sx4h+w9pKqSYpEL6YCYtOfBB7BHvg2w X24fx/wm6wD4WbOkkA9iwMc3QWlxh/KZvE/f4iyApuit+CKSrzb7Ex0Zlf6d6A== 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=1775293165; 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=bmfnn7zmzFF5aqCEhc/7pseMzv41i3on+qAmm27nSQI=; b=UEDNPIOq2zrirL67pbdeBwyKTjQg9zJToHMTvwQ+DnLH/fSMGet4GWLrZmsblYZCpnbdNF fFYK+STeOyaAh7dpbq+VnVQaqWqUOtDL9hrqfHZe3O2Rl5ROXH6HGP9bUyPB4+PoMKeDUk vrdcirEqNdg0maSE9lyVF8EymbN2Zpmmdx1JxvaXHIQmJpF0t+46SgJ3DEm3+Go87h0c+D zC/TcHjNNdJr7YLsywsJvrP+RwZJfXJQ6LJARp0W5Cp2rl/wVfKzBKFwatbRxCJKvUK2lc rEWYdB9Qpmvds9VPdTvbIAjjdjPOhb0uPdX95dme26kDKVL/XiLz991x1Lc1Hg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqK94PtXz1QkC for ; Sat, 04 Apr 2026 08:59:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3796b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: f758262e66dd - stable/15 - newfs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f758262e66dd14964da327de322286586f9edaf2 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:25 +0000 Message-Id: <69d0d2ed.3796b.9b19f1c@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f758262e66dd14964da327de322286586f9edaf2 commit f758262e66dd14964da327de322286586f9edaf2 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:28 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:14 +0000 newfs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable soft updates if GEOM journaling has been requested, and error out if both are explicitly requested. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D55999 (cherry picked from commit e30fcdaae2e68458da83d5420e6034c5f384e5f2) --- sbin/newfs/newfs.8 | 14 ++++++++++---- sbin/newfs/newfs.c | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sbin/newfs/newfs.8 b/sbin/newfs/newfs.8 index 6416e0f0ec8d..3aa3890479bf 100644 --- a/sbin/newfs/newfs.8 +++ b/sbin/newfs/newfs.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 7, 2026 +.Dd March 20, 2026 .Dt NEWFS 8 .Os .Sh NAME @@ -84,6 +84,8 @@ Enable journaling on the new file system via gjournal. See .Xr gjournal 8 for details. +This is incompatible with soft updates +.Pq Fl U . .It Fl L Ar volname Add a volume label to the new file system. Legal characters are alphanumerics, dashes, and underscores. @@ -98,12 +100,14 @@ The default format is UFS2. For backward compatibility. .It Fl U Enable soft updates on the new file system. +This is incompatible with GEOM journaling +.Pq Fl J . If neither .Fl U nor .Fl u is specified, soft updates are enabled by default for UFS2 format file -systems and disabled otherwise. +systems unless GEOM journaling was requested and disabled otherwise. .It Fl u Do not enable soft updates on the new file system. If neither @@ -176,8 +180,10 @@ One inode is required for each distinct file, so this value effectively specifies the average file size on the file system. .It Fl j Enable soft updates journaling on the new file system. -This implies -.Fl U . +This implies soft updates +.Pq Fl U +and is incompatible with GEOM journaling +.Pq Fl J . This flag is implemented by running the .Xr tunefs 8 utility found in the user's diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c index 78f0bfcf458d..a54aae6ef6fc 100644 --- a/sbin/newfs/newfs.c +++ b/sbin/newfs/newfs.c @@ -390,7 +390,9 @@ main(int argc, char *argv[]) } /* Use soft updates by default for UFS2 and above */ if (Uflag < 0) - Uflag = Oflag > 1; + Uflag = Oflag > 1 && !Jflag; + if (Uflag && Jflag) + errx(1, "Cannot enable both soft updates and GEOM journaling"); realsectorsize = sectorsize; if (sectorsize != DEV_BSIZE) { /* XXX */ int secperblk = sectorsize / DEV_BSIZE; From nobody Sat Apr 4 08:59:27 2026 X-Original-To: dev-commits-src-branches@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 4fnqKD2wVvz6YGpj for ; Sat, 04 Apr 2026 08:59:28 +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 4fnqKD02VQz3LJH for ; Sat, 04 Apr 2026 08:59:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293168; 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=cpGvkhGn/z7zUvgZcUQctezU6dOAW1fk4HWhiwhWidQ=; b=sOW/gP/hOsjOJhOwOgb9haIbVnv+CA9Cm5an0in+hEsHyfZuNQzwnV5Uz+fAh4XgvZNNfY eyVIYyiyYK2MHqS/RPJn2eOTqmbshZp6ujhlhZCBR7IGJSDD4S7DFSzVrUXr5kPuFQlROV LZFREOyoIomBlTddQ+GjcDHZvLjwFGtlylkUwTQVo1JqWfir27xCGk7DsCLbV8eqtwRtnG Y4nfR/mZciE7tcHBlatHYT+qNA6Q2Im/PkMjKSxXGVexHR1sb7zQpYOlqDfqt+Q0bTpCu4 HMhMML2aVZAslOoGHeyuLFqPkASCaMSJWbK3vpL/qfVPNQa7vPiqobdWuGq1eg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293168; a=rsa-sha256; cv=none; b=LXS1+eZUTkhdis7MUV6aJMHTM/X3Nfw11eKxnZ2pqVYpnzQ9KSt6k/CM+eLpSekv+XMZTk Ko1MjgzGl6X4q0BBJKsyUnoI3V44gkA3vYbsxq97Ho1LlubwNZgXwJ9ngGssW07i6omGiF YOhtWGCNW10yrRQYGbqpntGkXc8XKSEouYd9PQHXkUK3Y1+h7zg7Xr+j7O3j5dVhc1sJAx gKWafUghyOviRYSGusZUkCI83udmrzgajDynUUo54ywX7Ox8nHJqKEOQqgsZfKRH1UZ8QD ylIqvca8PG74ysHn0EInsNaf16r/OLblyC4Np6hh4aW3ReeFmHlXVL8jf1wSQQ== 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=1775293168; 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=cpGvkhGn/z7zUvgZcUQctezU6dOAW1fk4HWhiwhWidQ=; b=OOTz5aV1KjL7AK4rOpxkstXJrR1WIkhv+XdCHqZPZ9WHcW3f43ga0tiOTKmmvmPdrSVWTb /X0buOZrolje/23izzoWeGI8AzkMUfKEdjNfppRzohFkGNWPY1Qfu7/2W+Ezr5BcCWSmGI /f7mGlTePcvjoa1sAs5TOLquOHdY8w2slKoZSoM+czFO0LI7PRm+uvSsA+t6gVNT0NeT6N LX2WxRAFl0vrTzZAOui5aZgXo6mALc2/utSAd9JwJi8apIfcTzMvoNQG2UfDv9kGuBj136 BUi1azHmPJgrdQ19YZhejmb3aLi4qT5eP7I96pjKAKilFWuELI2+fQ47kJsPzA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKC68JHz1Qxm for ; Sat, 04 Apr 2026 08:59:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 372bb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 1fcaefce1e19 - stable/15 - tunefs: Don't lower WARNS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1fcaefce1e19615f786f4fbfa0f5b751187f134e Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:27 +0000 Message-Id: <69d0d2ef.372bb.4068a02@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1fcaefce1e19615f786f4fbfa0f5b751187f134e commit 1fcaefce1e19615f786f4fbfa0f5b751187f134e Author: Dag-Erling Smørgrav AuthorDate: 2026-04-02 11:21:59 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:14 +0000 tunefs: Don't lower WARNS Use casts to silence the alignment warnings instead of potentially suppressing other legitimate warnings. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56033 (cherry picked from commit c5e79c7e93dda07c383be9b99a1a91894652f546) tunefs: Fix alignment warning on arm64 MFC after: 1 week Fixes: c5e79c7e93dd ("tunefs: Don't lower WARNS") Reviewed by: bakul Differential Revision: https://reviews.freebsd.org/D56229 (cherry picked from commit 616f47f176c308a29b1f4a6bba1b1a4dc01c3091) --- sbin/tunefs/Makefile | 2 -- sbin/tunefs/tunefs.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sbin/tunefs/Makefile b/sbin/tunefs/Makefile index 4ea2219c8e03..56238b5ef673 100644 --- a/sbin/tunefs/Makefile +++ b/sbin/tunefs/Makefile @@ -3,6 +3,4 @@ PROG= tunefs LIBADD= ufs util MAN= tunefs.8 -WARNS?= 3 - .include diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index d5ef366e8221..56f343a5a4db 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -640,7 +640,7 @@ dir_search(ufs2_daddr_t blk, int bytes) return (-1); } for (off = 0; off < bytes; off += dp->d_reclen) { - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; if (dp->d_reclen == 0) break; if (dp->d_ino == 0) @@ -705,7 +705,7 @@ dir_clear_block(const char *block, off_t off) struct direct *dp; for (; off < sblock.fs_bsize; off += DIRBLKSIZ) { - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; dp->d_ino = 0; dp->d_reclen = DIRBLKSIZ; dp->d_type = DT_UNKNOWN; @@ -728,7 +728,7 @@ dir_insert(ufs2_daddr_t blk, off_t off, ino_t ino) return (-1); } bzero(&block[off], sblock.fs_bsize - off); - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; dp->d_ino = ino; dp->d_reclen = DIRBLKSIZ; dp->d_type = DT_REG; @@ -855,7 +855,7 @@ indir_fill(ufs2_daddr_t blk, int level, int *resid) int i; bzero(indirbuf, sizeof(indirbuf)); - bap1 = (ufs1_daddr_t *)indirbuf; + bap1 = (ufs1_daddr_t *)(uintptr_t)indirbuf; bap2 = (void *)bap1; cnt = 0; for (i = 0; i < NINDIR(&sblock) && *resid != 0; i++) { From nobody Sat Apr 4 08:59:28 2026 X-Original-To: dev-commits-src-branches@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 4fnqKF1ZlYz6YGWL for ; Sat, 04 Apr 2026 08:59: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 4fnqKF0JNwz3L7P for ; Sat, 04 Apr 2026 08:59:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293169; 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=mGDbzEDIN4qszfDbB15OlqDYrdUPXpeUXHDCb2xfpTI=; b=AwI/quXKJO8z/VcNGqecwKB2px1zPbMA2y/HzUp/b4PNlvOmNi1vr+1n2tpTQczcfxOdUO kxRBRxwSc01nsLZ/4sX43fsHoHQmF4kdI1GHiBvzwGyugefzh8X4OU0ptCifoVubQkP8hR s0wjwuFwHdcWjiBOZXArKsa0/K/OJHrC4aSAz76pJSmLpCVSV80oQVMEFEJ8sz7a9SZqOj ecezxlyXy6bh5aiY06eNQbU9Ff8QniNavMEFmZctMaV9ooRCQHDv4jJF7DDBcXlo6O9S1l g9oGZP3wrVrYAWE50wQ2Ql+xLDfoaz19Fw7uyTepVLb+FEHVhNanc3Dhv2n5Iw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293169; a=rsa-sha256; cv=none; b=cBaBjMfmWzzt91Fo1qAhNYY9ZP0qFvsfnZghAv4PKu675rulT91kQynG16NqGtG6Yf6sEZ zmJdSr00DOBWB9a2oE052Ae5OyyyS3pqOhSE73Fl7iXI0SCy/agYWxHpA4M90mlz1l2U9q tV7H4xiyXtyS1eUBpg6BQxfwdMBtUvjQFpG3fl0vTsB4+AHoeQkjpNRXyl/WiqrMo8eLQV lbd0sOqkH68Wj7b8EZi+X+yAMu2ylCafwa8+PEOyhLF3PPoEdrQg8ohIKRf3PvS5dEFPkK J/1kalhQjWNyYNqFSOGKHU4kgbNZq3OLuyCiirAOVO3eBzSa3RvY47o5yC7o4Q== 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=1775293169; 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=mGDbzEDIN4qszfDbB15OlqDYrdUPXpeUXHDCb2xfpTI=; b=beObFSagTeydUkSuPZCvURGmTBz1VT7MCdNtlpuJMsSq9bzfaWHi4ghmUtJYXHV9xPEVep oZX/qqOztJmxn4Ci3JsX6jt1mWic+WfNnqCuKkhDa0szSwKSDe/wnEDDL/VOb0lt24hUHE 9BfoWw+qpiF/v7W303IK50nH1whDMyBPyyystjtJ2ABYBQlY+nILvSNkYf4xnw9vmCkGJV mC8dI7IJgd2w18T0t4xZTE+z4Ui3sMcKO0Ata7aUKbScn/4asCtxgZfV6TG+2EsWoGjVnW H0qDZjK2f+rzuXkHOq3D+zphggHFTyauCsVyDzyaJW7LHGj6BLshATIoIVlDjQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKD6yVhz1Qxn for ; Sat, 04 Apr 2026 08:59:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36638 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 83ec9a97e19d - stable/15 - tunefs: Add tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 83ec9a97e19dbec2119e8a8391973a7d1187b225 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:28 +0000 Message-Id: <69d0d2f0.36638.52f47b9d@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=83ec9a97e19dbec2119e8a8391973a7d1187b225 commit 83ec9a97e19dbec2119e8a8391973a7d1187b225 Author: Dag-Erling Smørgrav AuthorDate: 2026-04-02 11:22:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:15 +0000 tunefs: Add tests MFC after: 1 week Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D56034 (cherry picked from commit 6630c3a73688ae3c33df892f6802bea5b8460e17) --- etc/mtree/BSD.tests.dist | 2 + sbin/tunefs/Makefile | 5 ++ sbin/tunefs/tests/Makefile | 4 + sbin/tunefs/tests/tunefs_test.sh | 189 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 200 insertions(+) diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index 666f852970a0..ada92cee4f8a 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -521,6 +521,8 @@ .. sysctl .. + tunefs + .. .. secure lib diff --git a/sbin/tunefs/Makefile b/sbin/tunefs/Makefile index 56238b5ef673..8fdf8fb8796b 100644 --- a/sbin/tunefs/Makefile +++ b/sbin/tunefs/Makefile @@ -1,6 +1,11 @@ +.include + PACKAGE=ufs PROG= tunefs LIBADD= ufs util MAN= tunefs.8 +HAS_TESTS= +SUBDIR.${MK_TESTS}= tests + .include diff --git a/sbin/tunefs/tests/Makefile b/sbin/tunefs/tests/Makefile new file mode 100644 index 000000000000..3a5245633dea --- /dev/null +++ b/sbin/tunefs/tests/Makefile @@ -0,0 +1,4 @@ +PACKAGE= tests +ATF_TESTS_SH= tunefs_test + +.include diff --git a/sbin/tunefs/tests/tunefs_test.sh b/sbin/tunefs/tests/tunefs_test.sh new file mode 100755 index 000000000000..5df8dca1137e --- /dev/null +++ b/sbin/tunefs/tests/tunefs_test.sh @@ -0,0 +1,189 @@ +# +# Copyright (c) 2026 Dag-Erling Smørgrav +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Create a small file system to experiment on +tunefs_setup() +{ + atf_check -o save:dev mdconfig -t malloc -s 16M + tunefs_dev=/dev/$(cat dev) + atf_check -o ignore newfs "$@" $tunefs_dev +} + +# Verify that the changes we ask tunefs to perform are applied to the +# test file system +tunefs_test() +{ + local opt=$1 # tunefs option + local name=$2 # what tunefs(8) calls it + local descr=${3:-$name} # what file(1) calls it, if different + + # Verify that the optin is not enabled + atf_check -o not-match:"$name" \ + file -s $tunefs_dev + + # Enable the option and verify that it is enabled + atf_check -e match:"$name set" -o ignore \ + tunefs $opt enable $tunefs_dev + atf_check -o match:"$descr" \ + file -s $tunefs_dev + + # Enable it again and verify that it is still enabled + atf_check -e match:"$name remains unchanged as enabled" \ + tunefs $opt enable $tunefs_dev + atf_check -o match:"$descr" \ + file -s $tunefs_dev + + # Disable the option and verify that it is disabled + atf_check -e match:"$name cleared" -o ignore \ + tunefs $opt disable $tunefs_dev + atf_check -o not-match:"$descr" \ + file -s $tunefs_dev + + # Disable it again and verify that it is still disabled + atf_check -e match:"$name remains unchanged as disabled" \ + tunefs $opt disable $tunefs_dev + atf_check -o not-match:"$descr" \ + file -s $tunefs_dev +} + +# Clean up after ourselves +tunefs_cleanup() +{ + # Destroy the test file system + if [ -f dev ]; then + mdconfig -d -u $(cat dev) || true + fi +} + +# POSIX.1e ACLs +atf_test_case posixacl cleanup +posixacl_head() +{ + atf_set descr "Turn POSIX.1e ACLs on and off" + atf_set require.user "root" +} +posixacl_body() +{ + tunefs_setup + tunefs_test -a "POSIX.1e ACLs" +} +posixacl_cleanup() +{ + tunefs_cleanup +} + +# NFSv4 ACLs +atf_test_case nfs4acl cleanup +nfs4acl_head() +{ + atf_set descr "Turn NFSv4 ACLs on and off" + atf_set require.user "root" +} +nfs4acl_body() +{ + tunefs_setup + tunefs_test -N "NFSv4 ACLs" +} +nfs4acl_cleanup() +{ + tunefs_cleanup +} + +# Soft Updates (no journaling) +atf_test_case sunoj cleanup +sunoj_head() +{ + atf_set descr "Turn Soft Updates on and off" + atf_set require.user "root" +} +sunoj_body() +{ + tunefs_setup -u + tunefs_test -n "soft updates" +} +sunoj_cleanup() +{ + tunefs_cleanup +} + +# Soft Updates journaling +atf_test_case suj cleanup +suj_head() +{ + atf_set descr "Turn Soft Updates journaling on and off" + atf_set require.user "root" +} +suj_body() +{ + tunefs_setup + tunefs_test -j "soft updates journaling" +} +suj_cleanup() +{ + tunefs_cleanup +} + +# GEOM journaling +atf_test_case gjournal cleanup +gjournal_head() +{ + atf_set descr "Turn GEOM journaling on and off" + atf_set require.user "root" +} +gjournal_body() +{ + tunefs_setup -u + tunefs_test -J "gjournal" "GEOM journaling" +} +gjournal_cleanup() +{ + tunefs_cleanup +} + +# Try combining Soft Updates with GEOM journaling +atf_test_case conflict cleanup +conflict_head() +{ + atf_set descr "Soft Updates and GEOM journaling are mutually exclusive" + atf_set require.user "root" +} +conflict_body() +{ + tunefs_setup -U + + # Verify that SU is enabled + atf_check -o match:"soft updates" \ + file -s $tunefs_dev + # Verify that enabling gjournal fails + atf_check -e match:"cannot be enabled" \ + tunefs -J enable $tunefs_dev + # Now turn SU off + atf_check -e match:"soft updates cleared" \ + tunefs -n disable $tunefs_dev + # Enable gjournal + atf_check -e match:"gjournal set" \ + tunefs -J enable $tunefs_dev + # Verify that enabling SU+J fails + atf_check -e match:"cannot be enabled" \ + tunefs -j enable $tunefs_dev + # Verify that enabling SU alone fails + atf_check -e match:"cannot be enabled" \ + tunefs -n enable $tunefs_dev +} +conflict_cleanup() +{ + tunefs_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case posixacl + atf_add_test_case nfs4acl + atf_add_test_case sunoj + atf_add_test_case suj + atf_add_test_case gjournal + atf_add_test_case conflict +} From nobody Sat Apr 4 08:59:31 2026 X-Original-To: dev-commits-src-branches@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 4fnqKJ0xbpz6YGWR for ; Sat, 04 Apr 2026 08:59:32 +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 4fnqKH5MGLz3L7R for ; Sat, 04 Apr 2026 08:59:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293171; 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=KGwR2f5qmeEKbw0rz+GpGiArsv3mNCkzogO5u2/mR6Q=; b=lFbo4BumkMHQ6SSegAuNzxqdjPsNBmiHDlnhcdRyDu8Qb8GgQjBN5QRI/tRG9lMIt6F50Z tNHQB5cNPiDHfCm6AOzdGZuxUj7ddraADbLXm8kIYmpLqC7B2LRuCKdIBRxvcPa8OLlq+Z kmrhMXKGMygmgiVyQ9D/GEyFvD75UHB/0ac8QE7VkIHZYzS1djn+QpiuiMPlPIoR/Z49WR CeZ29Vg/ERRL/XvwUxrd2ww02ZmiP/DkJk11Fmo4M/o5iCiBnkXdgj24sQ2bVWP4kL2GOJ FAWLYtk1hf62AdZOPKYK+qqFdRrZjZefU9lwBJHgCV6mOEgl+Rbl+RMyu5RpBA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293171; a=rsa-sha256; cv=none; b=QKSOLDVvO8HL8e+ormjoibAT1YT1qwYXPcwHPRBDlzyqhta6kqzMBpwYoWikDZ4rMT3v1v t0FE6XrB4KMD9vazWyCyyABy6NxzEKe1iKvy+/zrDhYO4yt2el8254U0jzqMt0tzxCt+Vt oNxb1JTwXSSfVkzTDGC4VZzn5QEawzy/GWspu2y9x8JVjXqk/hWjD7LEejsJVij1Jp99L8 61Lt50sJaGeZ7tkNSqRZBztICe87hZbc/xkMxYSMEFWfxY5MtRBMyLmW4HegTR3NgDfJpt zvt+f1RTvEj/HB4DvOfn/2kogH8FfWQsTj8ZKHskWiaa1byfvmW8P3TfOCCkTg== 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=1775293171; 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=KGwR2f5qmeEKbw0rz+GpGiArsv3mNCkzogO5u2/mR6Q=; b=HhZAjN31nawvKMsaChQzzyhufyHrhuYbbKD4iC/lVt/gQSNgY6JMX59vAJKPjH2BGO+9CW THydkXepvTZHhbdSkVwQFiIHOb33c4oywCJxdL/b2xMnDiDQRJzx0NuYilIi99K930pwTX jB95WTevOXOX8XaSj6xWBeSfBTAeSi+OyDlZ7p36eXEBll6/xzjoW8lAWy+YXgWCQi6VDT e0GCKU0FbNkb8k/O0LaLG7MW6b/0J1gajNib6OyJkvcNnTl2Dwv6lbSMSGhKA/sIZUSllv BGhJMZlo7aDFpBXSbA0Dy+K06W/RtBx73i3F3OhcJCsgeqbN4443AwBnQMv29w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKH46rWz1RC1 for ; Sat, 04 Apr 2026 08:59:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3644b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 94c236b7d806 - stable/14 - newfs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 94c236b7d806d676d485d0c55a1924af417e70d1 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:31 +0000 Message-Id: <69d0d2f3.3644b.6ac431cd@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=94c236b7d806d676d485d0c55a1924af417e70d1 commit 94c236b7d806d676d485d0c55a1924af417e70d1 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:28 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:25 +0000 newfs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable soft updates if GEOM journaling has been requested, and error out if both are explicitly requested. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D55999 (cherry picked from commit e30fcdaae2e68458da83d5420e6034c5f384e5f2) --- sbin/newfs/newfs.8 | 14 ++++++++++---- sbin/newfs/newfs.c | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sbin/newfs/newfs.8 b/sbin/newfs/newfs.8 index 7336dbbc6e23..e091d7a53806 100644 --- a/sbin/newfs/newfs.8 +++ b/sbin/newfs/newfs.8 @@ -27,7 +27,7 @@ .\" .\" @(#)newfs.8 8.6 (Berkeley) 5/3/95 .\" -.Dd January 7, 2026 +.Dd March 20, 2026 .Dt NEWFS 8 .Os .Sh NAME @@ -86,6 +86,8 @@ Enable journaling on the new file system via gjournal. See .Xr gjournal 8 for details. +This is incompatible with soft updates +.Pq Fl U . .It Fl L Ar volname Add a volume label to the new file system. Legal characters are alphanumerics, dashes, and underscores. @@ -100,12 +102,14 @@ The default format is UFS2. For backward compatibility. .It Fl U Enable soft updates on the new file system. +This is incompatible with GEOM journaling +.Pq Fl J . If neither .Fl U nor .Fl u is specified, soft updates are enabled by default for UFS2 format file -systems and disabled otherwise. +systems unless GEOM journaling was requested and disabled otherwise. .It Fl u Do not enable soft updates on the new file system. If neither @@ -178,8 +182,10 @@ One inode is required for each distinct file, so this value effectively specifies the average file size on the file system. .It Fl j Enable soft updates journaling on the new file system. -This implies -.Fl U . +This implies soft updates +.Pq Fl U +and is incompatible with GEOM journaling +.Pq Fl J . This flag is implemented by running the .Xr tunefs 8 utility found in the user's diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c index 754606707178..108a66b11581 100644 --- a/sbin/newfs/newfs.c +++ b/sbin/newfs/newfs.c @@ -400,7 +400,9 @@ main(int argc, char *argv[]) } /* Use soft updates by default for UFS2 and above */ if (Uflag < 0) - Uflag = Oflag > 1; + Uflag = Oflag > 1 && !Jflag; + if (Uflag && Jflag) + errx(1, "Cannot enable both soft updates and GEOM journaling"); realsectorsize = sectorsize; if (sectorsize != DEV_BSIZE) { /* XXX */ int secperblk = sectorsize / DEV_BSIZE; From nobody Sat Apr 4 08:59:33 2026 X-Original-To: dev-commits-src-branches@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 4fnqKL0m4Wz6YGcC for ; Sat, 04 Apr 2026 08:59:34 +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 4fnqKK5sTvz3LJL for ; Sat, 04 Apr 2026 08:59:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293173; 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=QNOg+QKquKIudhtAO1yzy9UTVrMdwg+XTsPAm8pxhCA=; b=GxOS/jiM51FGKmQmyYFAfbRTdprdddElX4086+bF0Iuae6E/ivhcDSZojjKLU1g17YXIgl DKWiDQvKJaPI+prM2x1xIEUFZvZHQ/4ip8x5njv1OKpApBvnEgQ1ENm1q6yGcFVQ8jTbQY 6GiTs2ccoyOAyZXfvaEVhUtcnXQ2w20mGYO0yHNAxQ6CIGQ+o2ebWLmR71bJZv4+XWkAM3 mdg4IygRhmU+hdEtfzxmLAfEMGFd2j7gGK+lQVJYv8W7gfrFm+rl1swnHTcMetXIFW0zFW yUvuRI8rWNVhXJC4OxiuootMAHXSpECYPpKrMr6wHso8FLYRGxgkKyfFmSVvgA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293173; a=rsa-sha256; cv=none; b=Kb2wkkMwjcq1Ri8HOFzNEzoi9UoshIdaAjHpH6IuZHMW+BPZIZGPrIWWfgjsyuCqE6OXcJ odEjVdLB2lHTVZqsixZCyZcgGIjllgpl3C3rmhqJ94Zn4QpVrOJULl6HWVNZI8sPBkwwAR aDv2p7cSSJxNyeI0HWORytLJqprPc//yMYykYXdI0TLBW5YM7nb5FpZk0/u0+bODqv2hZ5 dWjaNH6buCdd3T5CXazC25ki5nZNHFp/nS6zepw5XNflt7lg3e3I1thKTTHVZOtZy++3tx afENXIEdm1/HWAd9wQDKWwGBmoJU6UMcMQnmOPi+p3ZfPNCwNCRZE6dnzsmHjw== 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=1775293173; 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=QNOg+QKquKIudhtAO1yzy9UTVrMdwg+XTsPAm8pxhCA=; b=GNI4yIWPNJponIV/QK2mpXPNIQ71RIi2LXCESfPMCrJoiTiIBqaBbKRT1JNZ7e4+4c50hO tRxlp112bnsrPClvHDk3y5deWimUmyulkXhQJNY4t0uCQiQE5kipVBeIXTE+D+TcRDU9Pl SwgHzOdn8Mc4T+4ZRxf6st0M/8MqqcqOMrhEZl0DeCyPOCZx02c1LgA6oxXyMYkMME6MNV oZDJVo2u3iiRcVPok+8ADPKE1vsaoVaJFHSEZ0tCMOEd5REK9mwXk8WYGA1hSn6qDBw0NU tzar+dXxbeGX4it+/InGIoRu2DW0FPpL8N7g4+Kvs9Pq74SaaimkD3mrP5XudA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKK5SWCz1RC2 for ; Sat, 04 Apr 2026 08:59:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 379a5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 83a0bced4ef0 - stable/14 - tunefs: Don't lower WARNS List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 83a0bced4ef0e001ad2a0a8c403dbd0703780ce3 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:33 +0000 Message-Id: <69d0d2f5.379a5.7a04fd41@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=83a0bced4ef0e001ad2a0a8c403dbd0703780ce3 commit 83a0bced4ef0e001ad2a0a8c403dbd0703780ce3 Author: Dag-Erling Smørgrav AuthorDate: 2026-04-02 11:21:59 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:25 +0000 tunefs: Don't lower WARNS Use casts to silence the alignment warnings instead of potentially suppressing other legitimate warnings. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D56033 (cherry picked from commit c5e79c7e93dda07c383be9b99a1a91894652f546) tunefs: Fix alignment warning on arm64 MFC after: 1 week Fixes: c5e79c7e93dd ("tunefs: Don't lower WARNS") Reviewed by: bakul Differential Revision: https://reviews.freebsd.org/D56229 (cherry picked from commit 616f47f176c308a29b1f4a6bba1b1a4dc01c3091) --- sbin/tunefs/Makefile | 2 -- sbin/tunefs/tunefs.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sbin/tunefs/Makefile b/sbin/tunefs/Makefile index e78c3fe671c2..de9529386071 100644 --- a/sbin/tunefs/Makefile +++ b/sbin/tunefs/Makefile @@ -10,6 +10,4 @@ MOUNT= ${SRCTOP}/sbin/mount CFLAGS+= -I${MOUNT} .PATH: ${MOUNT} -WARNS?= 3 - .include diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index 6b399f032c9c..4dbdaf3db574 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -652,7 +652,7 @@ dir_search(ufs2_daddr_t blk, int bytes) return (-1); } for (off = 0; off < bytes; off += dp->d_reclen) { - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; if (dp->d_reclen == 0) break; if (dp->d_ino == 0) @@ -717,7 +717,7 @@ dir_clear_block(const char *block, off_t off) struct direct *dp; for (; off < sblock.fs_bsize; off += DIRBLKSIZ) { - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; dp->d_ino = 0; dp->d_reclen = DIRBLKSIZ; dp->d_type = DT_UNKNOWN; @@ -740,7 +740,7 @@ dir_insert(ufs2_daddr_t blk, off_t off, ino_t ino) return (-1); } bzero(&block[off], sblock.fs_bsize - off); - dp = (struct direct *)&block[off]; + dp = (struct direct *)(uintptr_t)&block[off]; dp->d_ino = ino; dp->d_reclen = DIRBLKSIZ; dp->d_type = DT_REG; @@ -867,7 +867,7 @@ indir_fill(ufs2_daddr_t blk, int level, int *resid) int i; bzero(indirbuf, sizeof(indirbuf)); - bap1 = (ufs1_daddr_t *)indirbuf; + bap1 = (ufs1_daddr_t *)(uintptr_t)indirbuf; bap2 = (void *)bap1; cnt = 0; for (i = 0; i < NINDIR(&sblock) && *resid != 0; i++) { From nobody Sat Apr 4 08:59:32 2026 X-Original-To: dev-commits-src-branches@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 4fnqKK0SFYz6YGWS for ; Sat, 04 Apr 2026 08:59:33 +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 4fnqKJ5Z2Nz3LJK for ; Sat, 04 Apr 2026 08:59:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293172; 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=GzqJPHfxuelHoGKXkJJA5hmJvFq9V5o6xiWedpf1vcU=; b=LvcC6lZR4WE6Lv/77CThcJEJ5cuEgPNQcvLuEyOa0cHbN/5ZHG2cGwZAT8ZWy8BwppM26O ZphRdryfd0YW44D+dCVNdyDm+pCrN081KB0yvODxwA2GukPB/yeIIPmgRivctgKai4rj97 8xNgg7ew/e8W0iq5aMSo/O0MCsJXGBDo1pFm9/MHy2VfzZdh0lkeupEwCl1Tqmcx3qlZFL SS6ZA4sxbyqBGRd/JH+Mw/I//d1NbVjQdDF0wW7jMn84oIkWLwRPVHqxnfkL/dO9Bb4F6y ougW+tUdwYYtqbplcc1RXnoDB0N//MNg4kb5Uvq+t5+Adlc1iu+9YvGJb7NnJw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293172; a=rsa-sha256; cv=none; b=Q9JOjO6Lxet9W8pljY8geN6kC/7aUlWBHf2d98/J/wyrPZBWn9wutrypGtPUzOPc4u68LS Da4j+LNZBsC87cm0QFBxWt6Sw0Ax9ulIfleVaw6lPNC3n6xjxgyBaVFwdbv0zLHXRdwnAl 0lHOEXhVXNyljhQkpXPvRX+UD2icSmy3i7TAWTShpajhJS5RdMSj56Kbaq8hu2EvZJ2B+I 3ERy0K639i93S1ggTpuZ47pyB70Z47TUQKP89SAjyqUJcSW15G3yhj80Z6qx6D94nZyEdN YaJ5rxeTsTEiCZgG4XBMAvtUtzUwG1NkzL7kxHxi6AZ38nfEFjbJg9fP+ZdyfQ== 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=1775293172; 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=GzqJPHfxuelHoGKXkJJA5hmJvFq9V5o6xiWedpf1vcU=; b=g/KRUz3USJOQs8gbnl7T+qD1Mk6GvJ+xQQHl6tqFu1cCd4wUO7wRsYU6IlkC/ysoMM0Ayl OR7cRpY5Z2KrGzo3oD8a+CBA9dPNFRdmPw3/IcFYUPFvVRfgrF9xQwGzDpJBqxgHaa7AYM jD07AekafPQNK0RDiaz9O+QhCPWHTjooFKWhkEZRqPRf1VeKlgZtgiyl/SpVeo/QkrZGZd 3vXn8zjB0w28xXSOZKzsiImZDlPqvSqtFEA7xpUiTnMFg+VWtJTc7WeBwF0NPwEsNL0scf lrhwkFfFRc7DHBQIDaDGyX95TPVUhvExmK3P1jAOcz8A9QDydpwMqGbjTUGdOA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKJ501Rz1Qvw for ; Sat, 04 Apr 2026 08:59:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36b45 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:32 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: c514f8dbeab8 - stable/14 - tunefs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c514f8dbeab813c996d426de2aedceb669c4fa2a Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:32 +0000 Message-Id: <69d0d2f4.36b45.78d3eafc@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c514f8dbeab813c996d426de2aedceb669c4fa2a commit c514f8dbeab813c996d426de2aedceb669c4fa2a Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:33 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:25 +0000 tunefs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable one if the other is already in use. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D56002 (cherry picked from commit b1f72dd2a9a5e69a310b9e76b55f16cff433b8da) --- sbin/tunefs/tunefs.8 | 8 ++++++-- sbin/tunefs/tunefs.c | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sbin/tunefs/tunefs.8 b/sbin/tunefs/tunefs.8 index 19059e335834..9624bab89ea3 100644 --- a/sbin/tunefs/tunefs.8 +++ b/sbin/tunefs/tunefs.8 @@ -27,7 +27,7 @@ .\" .\" @(#)tunefs.8 8.2 (Berkeley) 12/11/93 .\" -.Dd November 17, 2023 +.Dd March 20, 2026 .Dt TUNEFS 8 .Os .Sh NAME @@ -94,6 +94,8 @@ this parameter should be set higher. Specify the expected average file size. .It Fl j Cm enable | disable Turn on/off soft updates journaling. +Enabling soft updates journaling implies enabling soft updates and is +incompatible with GEOM journaling. .Pp Enabling journaling reduces the time spent by .Xr fsck_ffs 8 @@ -130,7 +132,8 @@ is running. Running a full fsck on a UFS filesystem is the equivalent of running a scrub on a ZFS filesystem. .It Fl J Cm enable | disable -Turn on/off gjournal flag. +Turn on/off GEOM journaling. +GEOM journaling is incompatible with soft updates. .It Fl k Ar held-for-metadata-blocks Set the amount of space to be held for metadata blocks. When set, the file system preference routines will try to save @@ -173,6 +176,7 @@ been deleted to get under the higher threshold. Turn on/off the administrative NFSv4 ACL enable flag. .It Fl n Cm enable | disable Turn on/off soft updates. +Soft updates are incompatible with GEOM journaling. .It Fl o Cm space | time The file system can either try to minimize the time spent allocating blocks, or it can attempt to minimize the space diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index 9b38e23effd0..6b399f032c9c 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -370,6 +370,9 @@ main(int argc, char *argv[]) if ((sblock.fs_flags & (FS_DOSOFTDEP | FS_SUJ)) == (FS_DOSOFTDEP | FS_SUJ)) { warnx("%s remains unchanged as enabled", name); + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); @@ -398,6 +401,9 @@ main(int argc, char *argv[]) if (strcmp(Jvalue, "enable") == 0) { if (sblock.fs_flags & FS_GJOURNAL) { warnx("%s remains unchanged as enabled", name); + } if (sblock.fs_flags & FS_DOSOFTDEP) { + warnx("%s cannot be enabled while soft " + "updates are enabled", name); } else { sblock.fs_flags |= FS_GJOURNAL; warnx("%s set", name); @@ -415,9 +421,9 @@ main(int argc, char *argv[]) } if (kflag) { name = "space to hold for metadata blocks"; - if (sblock.fs_metaspace == kvalue) + if (sblock.fs_metaspace == kvalue) { warnx("%s remains unchanged as %d", name, kvalue); - else { + } else { kvalue = blknum(&sblock, kvalue); if (kvalue > sblock.fs_fpg / 2) { kvalue = blknum(&sblock, sblock.fs_fpg / 2); @@ -489,9 +495,12 @@ main(int argc, char *argv[]) if (nflag) { name = "soft updates"; if (strcmp(nvalue, "enable") == 0) { - if (sblock.fs_flags & FS_DOSOFTDEP) + if (sblock.fs_flags & FS_DOSOFTDEP) { warnx("%s remains unchanged as enabled", name); - else if (sblock.fs_clean == 0) { + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); + } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); } else { From nobody Sat Apr 4 08:59:34 2026 X-Original-To: dev-commits-src-branches@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 4fnqKM0bZpz6YGmX for ; Sat, 04 Apr 2026 08:59:35 +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 4fnqKL6QXQz3L55 for ; Sat, 04 Apr 2026 08:59:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293174; 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=RAobMeUd0+QaEPDmLKXegxaXWqHqSBDmvMGH9s8Jc/U=; b=eQSCMrB9oLp34CC9wmdzXOxA7wtBxcfi3rK2LWB/yi7apAmm5uuZVx3hGVhuUEjAfIqCs6 AAB4ZjYo5rvq5L3UMUdRLVdJEggkkaHOQGWdInf5Ds+RkK9TVgKUJCZ2E4zQ6iQ1UzeNum lT4/3svLA2QXZAvtW1efh8viTb4qxwBF6RzfWvjf7eUjIFe3ZSjY07dsGhQvoppYDIfRjH kPtT4C19m5QJlOXLuoGdUWj5/H3QUbkw3IU2l0qDCgdNCx2tDKFmCtHQAasaQWFYKoOKgb OHkj1tI51Pe4kfx+yXILCToY6Jcf/n4WDF8zcnBBPEEtWVm0VH5Lio0FyX97EA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293174; a=rsa-sha256; cv=none; b=nEdWgBogc1sySE6yTYQXFy3ZK9YfBTwFC3ghqL2j3J4BnHjCX+cf95aclgqPsRh8gffHGx 2Z5APsVk64+GFAL3l5ZCpn1mCIu+6QU0vjaz5i7gjgjlEAvz6c0DIVxTEnCi8ci+qM8qOS ig6nVzcVS7+nTVVBHan6fklTKmtnLBT/QcXUNvkAkRKAXNUjyELpuPdeP6cvL9eEbnu4js Ngp4+uRS+acfcnLZqsbEBc7N9CpAz4hDwlFHGVAf1Y7i2F8FyraUj9oAFWb2oxc92jADvA wh4B0IBbaAJMq88uTgKDqpDA+pGibO0M/tDPkW6MP+Cfw1n0RuYll9R3KyJgww== 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=1775293174; 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=RAobMeUd0+QaEPDmLKXegxaXWqHqSBDmvMGH9s8Jc/U=; b=KeFlGOs5/gCxmkBwZhST94WjYNVuo+TuPyI/6ZGqc9fodFa9NybbSyoCsI980bfPzH/ByY ikQRzYV1sadvE2HUPf222RpNWdZVm1PqdNfEqlglTwgcuwGzslEWs4dTse7hu4IGRY6Gjx 8Yvkrp1yhnCdteteV/83gzXRC2pelpQdjXGJTIeAHbP+w6lCcpXKgRhyatpdxcFD1H6gRe OkS5O0a26hA9Qyaow3rLWNGTa4jO8h0rzD5AXyiLFyxsVtZzDfmlleCRz4JSuZCfZC2fjZ zV6drsz1HCWavlkWXK7sa3nu6gwv4hhMmUMpBE7pIDYqwfTfAfhS62E0EngNnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKL61S2z1QR9 for ; Sat, 04 Apr 2026 08:59:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3454c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:34 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: b78e2b69893c - stable/14 - tunefs: Add tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b78e2b69893ca536b738850dff556808905d07a8 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:34 +0000 Message-Id: <69d0d2f6.3454c.3d49acc0@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=b78e2b69893ca536b738850dff556808905d07a8 commit b78e2b69893ca536b738850dff556808905d07a8 Author: Dag-Erling Smørgrav AuthorDate: 2026-04-02 11:22:05 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:26 +0000 tunefs: Add tests MFC after: 1 week Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D56034 (cherry picked from commit 6630c3a73688ae3c33df892f6802bea5b8460e17) --- etc/mtree/BSD.tests.dist | 2 + sbin/tunefs/Makefile | 4 + sbin/tunefs/tests/Makefile | 4 + sbin/tunefs/tests/tunefs_test.sh | 189 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 199 insertions(+) diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index f5d683630c92..574a41378a90 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -487,6 +487,8 @@ .. sysctl .. + tunefs + .. .. secure lib diff --git a/sbin/tunefs/Makefile b/sbin/tunefs/Makefile index de9529386071..67a160827e26 100644 --- a/sbin/tunefs/Makefile +++ b/sbin/tunefs/Makefile @@ -1,4 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/5/93 +.include PACKAGE=ufs PROG= tunefs @@ -10,4 +11,7 @@ MOUNT= ${SRCTOP}/sbin/mount CFLAGS+= -I${MOUNT} .PATH: ${MOUNT} +HAS_TESTS= +SUBDIR.${MK_TESTS}= tests + .include diff --git a/sbin/tunefs/tests/Makefile b/sbin/tunefs/tests/Makefile new file mode 100644 index 000000000000..3a5245633dea --- /dev/null +++ b/sbin/tunefs/tests/Makefile @@ -0,0 +1,4 @@ +PACKAGE= tests +ATF_TESTS_SH= tunefs_test + +.include diff --git a/sbin/tunefs/tests/tunefs_test.sh b/sbin/tunefs/tests/tunefs_test.sh new file mode 100755 index 000000000000..5df8dca1137e --- /dev/null +++ b/sbin/tunefs/tests/tunefs_test.sh @@ -0,0 +1,189 @@ +# +# Copyright (c) 2026 Dag-Erling Smørgrav +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Create a small file system to experiment on +tunefs_setup() +{ + atf_check -o save:dev mdconfig -t malloc -s 16M + tunefs_dev=/dev/$(cat dev) + atf_check -o ignore newfs "$@" $tunefs_dev +} + +# Verify that the changes we ask tunefs to perform are applied to the +# test file system +tunefs_test() +{ + local opt=$1 # tunefs option + local name=$2 # what tunefs(8) calls it + local descr=${3:-$name} # what file(1) calls it, if different + + # Verify that the optin is not enabled + atf_check -o not-match:"$name" \ + file -s $tunefs_dev + + # Enable the option and verify that it is enabled + atf_check -e match:"$name set" -o ignore \ + tunefs $opt enable $tunefs_dev + atf_check -o match:"$descr" \ + file -s $tunefs_dev + + # Enable it again and verify that it is still enabled + atf_check -e match:"$name remains unchanged as enabled" \ + tunefs $opt enable $tunefs_dev + atf_check -o match:"$descr" \ + file -s $tunefs_dev + + # Disable the option and verify that it is disabled + atf_check -e match:"$name cleared" -o ignore \ + tunefs $opt disable $tunefs_dev + atf_check -o not-match:"$descr" \ + file -s $tunefs_dev + + # Disable it again and verify that it is still disabled + atf_check -e match:"$name remains unchanged as disabled" \ + tunefs $opt disable $tunefs_dev + atf_check -o not-match:"$descr" \ + file -s $tunefs_dev +} + +# Clean up after ourselves +tunefs_cleanup() +{ + # Destroy the test file system + if [ -f dev ]; then + mdconfig -d -u $(cat dev) || true + fi +} + +# POSIX.1e ACLs +atf_test_case posixacl cleanup +posixacl_head() +{ + atf_set descr "Turn POSIX.1e ACLs on and off" + atf_set require.user "root" +} +posixacl_body() +{ + tunefs_setup + tunefs_test -a "POSIX.1e ACLs" +} +posixacl_cleanup() +{ + tunefs_cleanup +} + +# NFSv4 ACLs +atf_test_case nfs4acl cleanup +nfs4acl_head() +{ + atf_set descr "Turn NFSv4 ACLs on and off" + atf_set require.user "root" +} +nfs4acl_body() +{ + tunefs_setup + tunefs_test -N "NFSv4 ACLs" +} +nfs4acl_cleanup() +{ + tunefs_cleanup +} + +# Soft Updates (no journaling) +atf_test_case sunoj cleanup +sunoj_head() +{ + atf_set descr "Turn Soft Updates on and off" + atf_set require.user "root" +} +sunoj_body() +{ + tunefs_setup -u + tunefs_test -n "soft updates" +} +sunoj_cleanup() +{ + tunefs_cleanup +} + +# Soft Updates journaling +atf_test_case suj cleanup +suj_head() +{ + atf_set descr "Turn Soft Updates journaling on and off" + atf_set require.user "root" +} +suj_body() +{ + tunefs_setup + tunefs_test -j "soft updates journaling" +} +suj_cleanup() +{ + tunefs_cleanup +} + +# GEOM journaling +atf_test_case gjournal cleanup +gjournal_head() +{ + atf_set descr "Turn GEOM journaling on and off" + atf_set require.user "root" +} +gjournal_body() +{ + tunefs_setup -u + tunefs_test -J "gjournal" "GEOM journaling" +} +gjournal_cleanup() +{ + tunefs_cleanup +} + +# Try combining Soft Updates with GEOM journaling +atf_test_case conflict cleanup +conflict_head() +{ + atf_set descr "Soft Updates and GEOM journaling are mutually exclusive" + atf_set require.user "root" +} +conflict_body() +{ + tunefs_setup -U + + # Verify that SU is enabled + atf_check -o match:"soft updates" \ + file -s $tunefs_dev + # Verify that enabling gjournal fails + atf_check -e match:"cannot be enabled" \ + tunefs -J enable $tunefs_dev + # Now turn SU off + atf_check -e match:"soft updates cleared" \ + tunefs -n disable $tunefs_dev + # Enable gjournal + atf_check -e match:"gjournal set" \ + tunefs -J enable $tunefs_dev + # Verify that enabling SU+J fails + atf_check -e match:"cannot be enabled" \ + tunefs -j enable $tunefs_dev + # Verify that enabling SU alone fails + atf_check -e match:"cannot be enabled" \ + tunefs -n enable $tunefs_dev +} +conflict_cleanup() +{ + tunefs_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case posixacl + atf_add_test_case nfs4acl + atf_add_test_case sunoj + atf_add_test_case suj + atf_add_test_case gjournal + atf_add_test_case conflict +} From nobody Sat Apr 4 08:59:42 2026 X-Original-To: dev-commits-src-branches@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 4fnqKV23ztz6YGgw for ; Sat, 04 Apr 2026 08:59:42 +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 4fnqKV0yMVz3LJP for ; Sat, 04 Apr 2026 08:59:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293182; 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=jE4evQBO/+idVt5lCFwh5zsDphGugzjox6jgiAR9Nt0=; b=kqIcrDvaM2nZqSRKfUm/JMEWndFLAosKzsDE/48sXt5LJT1bPsiRQQ+OxpqYud/0YrYLdn YetYOVhvc7ggTOf/mujKpqndzygvqvrGin8JI281kSoxGt3mF09zeCHcgzEV4p9zfiyRvb wd0g3ksgXyjycYLUqBUAG77zjYzHY5CkR3NzJUqlj6lpits4n2u6r/a/ZVV7l4LEvLZ74J YiTn8IlRiVv5TRR1JSVTOqwTL4GsuiCF8DT1tEC0DkKNPKwY3/XYU/c6fG2NLHoC4MUBod jr8hfmFtt/u2A3QscgWJJWBQLlV1vuReL1ojTFoeRXvCuLw2zEv/9rxfm6Pa7Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293182; a=rsa-sha256; cv=none; b=oLnK3KEXU1YbuC2K53ynkGxbnsFV+F/XZHP9c3Lj+4ljTvt5c44aUK5Q7LSARDAI4PshQg 5x3F0M1JXvWa9qaDq81Ij23xAZuxIJgR4Z21p3SYys4O3QdkbUgI6+maswS8orvdjKnByS 968sFLTtowXPkRSiiAuB1GgsDTOvsMU7vJN2H3y4Y8eJhn183ngvDxWZBA/2NzXyAhs/pi 4nEnHzmI4QavItocqNAl3Te8v/J5U3BRdKfpXUJHQDSnhVbOaJmNL6PIYzmsYUlWhZUddB VlgG8yAxcIGDRs1agX0tu39NtNFcU11oQkHGdK2aC7U9gXrlNDt1Qnt4Wd0qvQ== 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=1775293182; 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=jE4evQBO/+idVt5lCFwh5zsDphGugzjox6jgiAR9Nt0=; b=ifFEhyorm2A0jrulXzz7ZMsC9SeOcYIb9RJBoW74SRBwx+adwwRdPUtapkyErViK2xXbMp 9PLHyAU9+9CITUbWZ8tDopPLFngothuGlptNRJBtpBwtR5LWLXbfQKQ/cJca2C42+H/vv3 ZNSDknBPeI6wxTxTuXaa63gk3qwZ5B0xzNWrU69le0mAICZSET69wsy5/SZvT4sVgMh1mj IZ+J4rLZE4eWiMYc4vyeYY6M1A5JkgYdTLGp7/MsiFFLKGHtPx6IXWVFGtbVaqD8syNUtb 0WlrY4vkC/8lyYr/d1vV6xFRV7HiENH7yjLAChxg1i8H0GSENFGGFP/ELpTDxA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKV0LtBz1QRB for ; Sat, 04 Apr 2026 08:59:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 379a9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: e28c20959cd3 - stable/13 - tunefs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e28c20959cd3aa526a6e86d8e9fe55fda326a951 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:42 +0000 Message-Id: <69d0d2fe.379a9.d6716ca@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=e28c20959cd3aa526a6e86d8e9fe55fda326a951 commit e28c20959cd3aa526a6e86d8e9fe55fda326a951 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:33 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:33 +0000 tunefs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable one if the other is already in use. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D56002 (cherry picked from commit b1f72dd2a9a5e69a310b9e76b55f16cff433b8da) --- sbin/tunefs/tunefs.8 | 8 ++++++-- sbin/tunefs/tunefs.c | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sbin/tunefs/tunefs.8 b/sbin/tunefs/tunefs.8 index 19059e335834..9624bab89ea3 100644 --- a/sbin/tunefs/tunefs.8 +++ b/sbin/tunefs/tunefs.8 @@ -27,7 +27,7 @@ .\" .\" @(#)tunefs.8 8.2 (Berkeley) 12/11/93 .\" -.Dd November 17, 2023 +.Dd March 20, 2026 .Dt TUNEFS 8 .Os .Sh NAME @@ -94,6 +94,8 @@ this parameter should be set higher. Specify the expected average file size. .It Fl j Cm enable | disable Turn on/off soft updates journaling. +Enabling soft updates journaling implies enabling soft updates and is +incompatible with GEOM journaling. .Pp Enabling journaling reduces the time spent by .Xr fsck_ffs 8 @@ -130,7 +132,8 @@ is running. Running a full fsck on a UFS filesystem is the equivalent of running a scrub on a ZFS filesystem. .It Fl J Cm enable | disable -Turn on/off gjournal flag. +Turn on/off GEOM journaling. +GEOM journaling is incompatible with soft updates. .It Fl k Ar held-for-metadata-blocks Set the amount of space to be held for metadata blocks. When set, the file system preference routines will try to save @@ -173,6 +176,7 @@ been deleted to get under the higher threshold. Turn on/off the administrative NFSv4 ACL enable flag. .It Fl n Cm enable | disable Turn on/off soft updates. +Soft updates are incompatible with GEOM journaling. .It Fl o Cm space | time The file system can either try to minimize the time spent allocating blocks, or it can attempt to minimize the space diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index b0f70b4ef60e..770bb6b8d45e 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -368,6 +368,9 @@ main(int argc, char *argv[]) if ((sblock.fs_flags & (FS_DOSOFTDEP | FS_SUJ)) == (FS_DOSOFTDEP | FS_SUJ)) { warnx("%s remains unchanged as enabled", name); + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); @@ -396,6 +399,9 @@ main(int argc, char *argv[]) if (strcmp(Jvalue, "enable") == 0) { if (sblock.fs_flags & FS_GJOURNAL) { warnx("%s remains unchanged as enabled", name); + } if (sblock.fs_flags & FS_DOSOFTDEP) { + warnx("%s cannot be enabled while soft " + "updates are enabled", name); } else { sblock.fs_flags |= FS_GJOURNAL; warnx("%s set", name); @@ -413,9 +419,9 @@ main(int argc, char *argv[]) } if (kflag) { name = "space to hold for metadata blocks"; - if (sblock.fs_metaspace == kvalue) + if (sblock.fs_metaspace == kvalue) { warnx("%s remains unchanged as %d", name, kvalue); - else { + } else { kvalue = blknum(&sblock, kvalue); if (kvalue > sblock.fs_fpg / 2) { kvalue = blknum(&sblock, sblock.fs_fpg / 2); @@ -487,9 +493,12 @@ main(int argc, char *argv[]) if (nflag) { name = "soft updates"; if (strcmp(nvalue, "enable") == 0) { - if (sblock.fs_flags & FS_DOSOFTDEP) + if (sblock.fs_flags & FS_DOSOFTDEP) { warnx("%s remains unchanged as enabled", name); - else if (sblock.fs_clean == 0) { + } else if (sblock.fs_flags & FS_GJOURNAL) { + warnx("%s cannot be enabled while GEOM " + "journaling is enabled", name); + } else if (sblock.fs_clean == 0) { warnx("%s cannot be enabled until fsck is run", name); } else { From nobody Sat Apr 4 08:59:40 2026 X-Original-To: dev-commits-src-branches@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 4fnqKT213yz6YGYM for ; Sat, 04 Apr 2026 08:59:41 +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 4fnqKT09K2z3LJN for ; Sat, 04 Apr 2026 08:59:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775293181; 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=Z/i44Af86ddTTx1FyY2mIj9uIrRgQk6tm4aLS0keUOU=; b=UXF77wtc3ZRD6PQPpExVEVQMOL+GCyo2PbJCU0uxCI+yr6+k48yivwDbk6YuxB7yuYhKOg Z9krFeU6LgK/YWAeMBmikeGBuEfLAmBDWGLAIJVAYCO5rHJy3daYIRGHLNbVfsqx4vXFXk miw3xaElqvM9DYSdpwh5C95A472Im6ktq5a0vmHcz+2V9V4VPW45s6kZRMqhB3xohU+nS0 uamjwBOX6AFBoSBLtQq1V10GEzxwGNaoVFqzpl4a+jI8Up2qWp3NdoIxieSK10FXhcCr14 xaix/Dk5/X9Cgnc6NkUHutgiWq4KiCeI6g6oH83qK6JKIgw1owgVv/aWSykW+w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775293181; a=rsa-sha256; cv=none; b=IZLTyue6P/jH8i8fnoOTHIR0Y1euImP/X05cXiY2/8bVy70NbqRijRpzYRyi03xvnz0OHN xrKPB+0uudX9y/eiRY+7kKD7tOEc1f4lOiKAB0RXsH0/PcUKZJyuohkFCLqNQMwqnCY/0q GhDVLRvz2RrpE4L/DaFV+n+2j/dphkpsWiOmE+BaHq4ANLXM6TD1MYTbkMefUsPhKvU3LY itZj/LEeSs4G1wVYx2s9pI/u/6qtVk2nqbXAkqMDpCjxBP47IPQeJbC9O2+tV+bly8Qv7j yJe/Jnmh9TE0lJLA5mRCxT09IpzjDvcIknTgmKTsDFB+Yb+ZPecMcx8vPQU9OQ== 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=1775293181; 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=Z/i44Af86ddTTx1FyY2mIj9uIrRgQk6tm4aLS0keUOU=; b=w09EbrT/J4XdH/ItqQ+oKgL1jvmgV2kcEFOydKjfwGnovmzn/SZIcbuFgD/PAVzAPPuJ37 teIOXW3JTHUMfPRTE30C9t1nZRq8SQvLYlkEk8wudvw+zAD+mS+mHMYK5CixxwD2dEO6Hr UkDIShoQ5NFiTJ1OPCWWP5uriulF2aGrNI113Cid7By80TaOGYhQyZHbQ2v3tmW9DyDqjo b/T5Ge5z3r72dwI/gxVQzUwPYPW8yuQBlztq0qF0LeRJ5+ROCI/QlAH0ySuMQiFK28dKQn MqLnDE7SiKOoKoU5R2U+dpiLWjNZg69ELIIsTTw7F9rPkL25uTySv6Y/pNzSdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnqKS6npqz1R1D for ; Sat, 04 Apr 2026 08:59:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36b49 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 08:59:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: a4b2be2f6a9a - stable/13 - newfs: Don't combine GEOM journaling with SU List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a4b2be2f6a9a155c56c876aabf3175301c4a84de Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 08:59:40 +0000 Message-Id: <69d0d2fc.36b49.27fbdc6d@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a4b2be2f6a9a155c56c876aabf3175301c4a84de commit a4b2be2f6a9a155c56c876aabf3175301c4a84de Author: Dag-Erling Smørgrav AuthorDate: 2026-03-21 07:21:28 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-04-04 08:59:33 +0000 newfs: Don't combine GEOM journaling with SU GEOM journaling shouldn't be used at the same time as soft updates, so don't enable soft updates if GEOM journaling has been requested, and error out if both are explicitly requested. MFC after: 1 week PR: 293896 Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D55999 (cherry picked from commit e30fcdaae2e68458da83d5420e6034c5f384e5f2) --- sbin/newfs/newfs.8 | 14 ++++++++++---- sbin/newfs/newfs.c | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sbin/newfs/newfs.8 b/sbin/newfs/newfs.8 index de69cc30dc16..ab9058b7672c 100644 --- a/sbin/newfs/newfs.8 +++ b/sbin/newfs/newfs.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 7, 2026 +.Dd March 20, 2026 .Dt NEWFS 8 .Os .Sh NAME @@ -84,6 +84,8 @@ Enable journaling on the new file system via gjournal. See .Xr gjournal 8 for details. +This is incompatible with soft updates +.Pq Fl U . .It Fl L Ar volname Add a volume label to the new file system. Legal characters are alphanumerics, dashes, and underscores. @@ -98,12 +100,14 @@ The default format is UFS2. For backward compatibility. .It Fl U Enable soft updates on the new file system. +This is incompatible with GEOM journaling +.Pq Fl J . If neither .Fl U nor .Fl u is specified, soft updates are enabled by default for UFS2 format file -systems and disabled otherwise. +systems unless GEOM journaling was requested and disabled otherwise. .It Fl u Do not enable soft updates on the new file system. If neither @@ -176,8 +180,10 @@ One inode is required for each distinct file, so this value effectively specifies the average file size on the file system. .It Fl j Enable soft updates journaling on the new file system. -This implies -.Fl U . +This implies soft updates +.Pq Fl U +and is incompatible with GEOM journaling +.Pq Fl J . This flag is implemented by running the .Xr tunefs 8 utility found in the user's diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c index 27b6c079bc0f..378a7dbace93 100644 --- a/sbin/newfs/newfs.c +++ b/sbin/newfs/newfs.c @@ -396,7 +396,9 @@ main(int argc, char *argv[]) } /* Use soft updates by default for UFS2 and above */ if (Uflag < 0) - Uflag = Oflag > 1; + Uflag = Oflag > 1 && !Jflag; + if (Uflag && Jflag) + errx(1, "Cannot enable both soft updates and GEOM journaling"); realsectorsize = sectorsize; if (sectorsize != DEV_BSIZE) { /* XXX */ int secperblk = sectorsize / DEV_BSIZE; From nobody Sat Apr 4 09:35:24 2026 X-Original-To: dev-commits-src-branches@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 4fnr6h4xQ4z6YKfb for ; Sat, 04 Apr 2026 09:35:24 +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 4fnr6h1c0Sz3Sxg for ; Sat, 04 Apr 2026 09:35:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775295324; 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=cnpg3oIlHmhe6Ley3masFnvhJ6hjZE1FxYviaR2Rx+0=; b=mfNczqS/dt6bf+Wa1OyJ4ROZJDBZj4QYsdaMMKpxc8BK4LIuXLnFk4Zg50ZiVDD21JJKEj v0ZxEqPrxDkaQsOA1Dy3slnwx4NNuPXw01Bw3ayz5n7EsJRqNge3LtV8BFpVJxehRj3pEm r6bgyldvhsiZ0Qix22938GZLd8Sq3ULSRe1f+3h/3+XGmhYYHUtp5TlaNNnr77BYuW8aiS N+A0c6i9v2Qxm5ZWR0XdB2n6wFRQiTqgoWfdOdg31nGsRQ5yOwZpueRHrRlvpCG//r9kMP Vi3czSrijvN0ImDf0qp6igwnF9x7lNG6yVk4AnH+bX0P79gJW4z3gTNADDuoBA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775295324; a=rsa-sha256; cv=none; b=MH/0eDHzX6ThdjFcIeKRJmk3F032L0s2aZKQ6LM1lK+G2MJvAADC7N4FXFzJfQ7KJ7fzmj PNYZ9yYEhBU2elNxufc9IDsc0mvACK4NljAt/pbDHx25dsIGmehPaZWBXetBGzIJBObN29 jPpkCTipzosSisJ7hihlThOPDqyyN38vwo4wmZpAIHYzflYwwauRvluS8qZI1kG90sXITk Yf3WSLB6qaN+93zQquMY1y0o8pWJpy3UFm72Jp43UxFUac6U6KGOS9x1F4G7XL9aUp/NZP HzCjkbIYB9LnOqR0quGLa2u0L6dwoZlAtu+uphCxAC1jYzyk2R6C5WsSp11irg== 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=1775295324; 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=cnpg3oIlHmhe6Ley3masFnvhJ6hjZE1FxYviaR2Rx+0=; b=NCXrWtW9pbya1/V1R6JxqjL3mBsfjBT4m8sZ3ayQwSVynxNEyTFmFMm6VMW8wN0OZIMT7s io2DnlJh7k7nfB5s/yZ+nnYL2enbiuMbQJa4PyR5xnOff8cq+HsonTOmIIGbXuaRvp/SXK ZNZjVGB3VC9HLmElQMKFzGUia1CM0g7k2WU7FkIMZSPHj/OMh1VxzXDg3yAzP4/HgOgMPI wjhAPw4CrWfvjZ7blxrV7axUHa5MbJnQbz2//9/q5izmZ2hSTU7ALYuWKpQ3T2gr2BzPrF msuFYQaJLTzNc22Gbm0JXIoQ2yF+Qnct1yyF2PoVOp3ZJdcTe4l1ON1WyVd1hg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnr6h1153z1RQl for ; Sat, 04 Apr 2026 09:35:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b84a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 09:35:24 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Salychev Subject: git: 26b27a828803 - stable/15 - dpaa2: Perform bus_dma pre-write sync before enqueue operation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dsl X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 26b27a82880347828205700a5d54a0516a3f15b1 Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 09:35:24 +0000 Message-Id: <69d0db5c.3b84a.e505543@gitrepo.freebsd.org> The branch stable/15 has been updated by dsl: URL: https://cgit.FreeBSD.org/src/commit/?id=26b27a82880347828205700a5d54a0516a3f15b1 commit 26b27a82880347828205700a5d54a0516a3f15b1 Author: Dmitry Salychev AuthorDate: 2026-03-28 18:57:45 +0000 Commit: Dmitry Salychev CommitDate: 2026-04-04 09:28:09 +0000 dpaa2: Perform bus_dma pre-write sync before enqueue operation Without a proper synchronization payload of the egress TCP segments can be corrupted as tuexen@ described in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006#c31. This patch is indirectly related to 292006 because a properly enabled and announced support for the TX checksum offloading hides potentially corrupted frame payload. PR: 292006 Reported by: tuexen@ Reviewed by: tuexen@ Tested by: dsl@, tuexen@ Differential Revision: https://reviews.freebsd.org/D56144 MFC after: 3 days (cherry picked from commit 5812415bee55a9063508b02fda9418b0eadb0bb4) --- sys/dev/dpaa2/dpaa2_ni.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/dpaa2/dpaa2_ni.c b/sys/dev/dpaa2/dpaa2_ni.c index 98a6c6047188..9389c6fff31a 100644 --- a/sys/dev/dpaa2/dpaa2_ni.c +++ b/sys/dev/dpaa2/dpaa2_ni.c @@ -3006,6 +3006,9 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, goto err_unload; } + bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); + /* TODO: Enqueue several frames in a single command */ for (int i = 0; i < DPAA2_NI_ENQUEUE_RETRIES; i++) { /* TODO: Return error codes instead of # of frames */ @@ -3015,9 +3018,6 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, } } - bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); - bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); - if (rc != 1) { fq->chan->tx_dropped++; goto err_unload; From nobody Sat Apr 4 09:44:29 2026 X-Original-To: dev-commits-src-branches@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 4fnrK93j0Wz6YLP3 for ; Sat, 04 Apr 2026 09:44: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 4fnrK92KBRz3Tnj for ; Sat, 04 Apr 2026 09:44:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775295869; 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=u1C9cAlcKJg23yh8v90/FCJ6jWUhOAtaASYzycjBEm8=; b=LhIEg0sqwjf+CNnPU2EwTaKp/YyzIvKZclUNTNCFKRpn8DfG9YEoRHFVWCe9ewD5vPC7GT 96K+RglsRfAdlzTe5jyUx5/PitlVU86l34j2S4pkwJxOpkvXUGCjP2DNY7840WfpN3qtbL Amg9Jhdq0ljYWpXoIENrrkgDKBfFXefs1Hvs6eWi0IDI/fCLz8hKTTCFsTX2VoMspYoyjM HLW3cdtfmmEAY2adnqb32/gGq+eWHdff/rN67y+BS+VKXRX5omeabSyiblmRkEoWST3yh4 1Pd+82kk8DMnt4SJLDq38x9zIem7XoyOvIr1P39dtuu3HqawWJ3tICHZzv2KIQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775295869; a=rsa-sha256; cv=none; b=MPvirb/HdFgJP0QnJw+3uLEw0+2s3eyIhr9tayrdCBqRpaQ0oh1Dh6saSsacmGUzC4e9Fb QTmsfvnWlWqYAxWIaTfjxI5VFSId+VtkDfrzkjmj3j7CCPRTF0D/ORMyU5JfSjuJiKM+jw r9uVLph9KMQVkB+aPpZ7OlukheTAM2yiur46o9rTN7dPj6jp8xuKVEeSrWXENDP47HuOK0 dS4gzHxXYfTTNIIzRyI1lSqRPxrU8LwB9B8eqOSZNCW6dviPsayL9gXlZXDH2x5ATaGZHx iXXeOzEq94fCnlUMObU2QQHDT3RUAmnomkiQ84abrnbrcAQoJbU/IKAXDOqbIw== 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=1775295869; 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=u1C9cAlcKJg23yh8v90/FCJ6jWUhOAtaASYzycjBEm8=; b=SLTrvnSqWesNOOvr23Du6zDfs/dRJHmgrCFP3VgfjRhbDXxqlOqvC7Rw/jfisxZhT29DXg vqh1qHd6NXCAQzs84Clp9Hzru14x0qT3v85F2/aWiARw5CnB+u/Zx2uuCGkUzFwhfGdheo AVcX46wWVMGRUNByQtddIVtGiMZ/4x5vpE8EzeZlQXj4QvFODXaXQyRF2u5/ZAg1Zfw3x2 Wj+ncNrnDnxCyqZ3IAKyBVYefDlRG83wuxtBxveE3HdDJg/ybiJ44ayGc1H9U6v1rlHqXX XoF2TZa6f6SFiDH/lu+3zwMgt/xwpdS8tkpy4K3e5bFYBVAlACsG2ZLQSbZ86Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fnrK90qgkz1S15 for ; Sat, 04 Apr 2026 09:44:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cc85 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 04 Apr 2026 09:44:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Salychev Subject: git: c417ed80fd2f - stable/14 - dpaa2: Perform bus_dma pre-write sync before enqueue operation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dsl X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c417ed80fd2fed7ae0561a5bf772408c910f2fec Auto-Submitted: auto-generated Date: Sat, 04 Apr 2026 09:44:29 +0000 Message-Id: <69d0dd7d.3cc85.7227606@gitrepo.freebsd.org> The branch stable/14 has been updated by dsl: URL: https://cgit.FreeBSD.org/src/commit/?id=c417ed80fd2fed7ae0561a5bf772408c910f2fec commit c417ed80fd2fed7ae0561a5bf772408c910f2fec Author: Dmitry Salychev AuthorDate: 2026-03-28 18:57:45 +0000 Commit: Dmitry Salychev CommitDate: 2026-04-04 09:44:07 +0000 dpaa2: Perform bus_dma pre-write sync before enqueue operation Without a proper synchronization payload of the egress TCP segments can be corrupted as tuexen@ described in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006#c31. This patch is indirectly related to 292006 because a properly enabled and announced support for the TX checksum offloading hides potentially corrupted frame payload. PR: 292006 Reported by: tuexen@ Reviewed by: tuexen@ Tested by: dsl@, tuexen@ Differential Revision: https://reviews.freebsd.org/D56144 MFC after: 3 days (cherry picked from commit 5812415bee55a9063508b02fda9418b0eadb0bb4) --- sys/dev/dpaa2/dpaa2_ni.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/dpaa2/dpaa2_ni.c b/sys/dev/dpaa2/dpaa2_ni.c index 98a6c6047188..9389c6fff31a 100644 --- a/sys/dev/dpaa2/dpaa2_ni.c +++ b/sys/dev/dpaa2/dpaa2_ni.c @@ -3006,6 +3006,9 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, goto err_unload; } + bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); + /* TODO: Enqueue several frames in a single command */ for (int i = 0; i < DPAA2_NI_ENQUEUE_RETRIES; i++) { /* TODO: Return error codes instead of # of frames */ @@ -3015,9 +3018,6 @@ dpaa2_ni_tx(struct dpaa2_ni_softc *sc, struct dpaa2_channel *ch, } } - bus_dmamap_sync(buf->dmat, buf->dmap, BUS_DMASYNC_PREWRITE); - bus_dmamap_sync(sgt->dmat, sgt->dmap, BUS_DMASYNC_PREWRITE); - if (rc != 1) { fq->chan->tx_dropped++; goto err_unload; From nobody Sun Apr 5 00:24:42 2026 X-Original-To: dev-commits-src-branches@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 4fpCrp2qFFz6Y0HC for ; Sun, 05 Apr 2026 00:24:42 +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 4fpCrp1Whlz44k2 for ; Sun, 05 Apr 2026 00:24:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775348682; 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=oWZM/SuTp84WHYlefMeJY0cTQwzsNMkZd1XS8aYz3s8=; b=AEBOGrXRN1j69ntxy5hpmcuOx26MKIWgQf1Y/6uOx+4mx1uL1DcVrjaO7AV44EHV00ZHMS HpbnhrHAdKFHo0W3nwTfL639pKxl6f6b18Dh+dqX9HFxhqzphYAJV4gAseFgfJRktBXD4r 4/kS8LT4m0QPPQq/YlQ6XZ7YlXRPc2ynly0e9VxUvcN5D29ixGWBy52QKYDNKd0fsaRd4/ 9/4cSStBE3JU0NUZpQmm8FNIBYctFJApSJUUMnET6TnNEj0leZjthRhg0Lt1IiO8Eokd4m c1rAcmSxnongbFprO22+xsEo4HKAZ2KZA7f3oqKYDpS67fo5Z9ecqcOaA6YvZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775348682; a=rsa-sha256; cv=none; b=Kgu+jrd/l7N04DGgqG87pIfCZJIO1UNYguR4rD04u+YDA5GnNwlSvV7Kk1bWdxQGIV/X2y Mu1jXRIMeY9wQHqkg5IM/I1o1moCLyJAjJILns/mCLHnCQctx4If7/8LJFgLRuPkn1QdKN qCU/v7BhT3bfMdeZDxOxbXE3xbvoAkiZwgHk//BaAb5w1hBbKImxalsG0o0cngs6RaRlXz zTMtxapTJxEsjQGuSRBdD+lHtY22T/RqJTuPUeK5hK5ip8uyAxWxN+fNhgUT8snawretmv qFlZKtUD3Td6CQ0PpfebagsbUXk2+SrF+DjqEObquK/J4EZdtJdskB336hzj4w== 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=1775348682; 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=oWZM/SuTp84WHYlefMeJY0cTQwzsNMkZd1XS8aYz3s8=; b=kasYuVrTCSM1WKLQeNJUqfqxpskXvti2ezCAuivn6QiEYd0kdb8HPGkATTGSpeQDSU+eFV Cmhs5N+msy8NQTZ+GD/NJojDlremBoaGdo/yHeI/q4wnc+IhaLEfaWPEvxwkdB2K7l9ajw 8DtXQK0nZDnIZfgiSdMJmZ9e2jgnqjQ5d/e7DlXVtG56jEJOA9V98Z+C3Xh2D/9akuLobn l/Po9RWKpWS3Otn+COn0gXrX6zkEmH6HG2hjHsWh6mvtK0PtAACnN/EGBmuBUwQjGriFrH Mh1QkCeiLD/NmQMInl/T73wrpThz6YgVmd3+3UMlpYnWRepbIrAX9z0ypf3JmQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fpCrp0fCbzhsP for ; Sun, 05 Apr 2026 00:24:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21d71 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 05 Apr 2026 00:24:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a849cbe74bec - stable/15 - posix_spawn.3: fix formatting of xref List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: a849cbe74bec5e4e8f4bea3bf5b09d6e88bd7639 Auto-Submitted: auto-generated Date: Sun, 05 Apr 2026 00:24:42 +0000 Message-Id: <69d1abca.21d71.4633a34d@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a849cbe74bec5e4e8f4bea3bf5b09d6e88bd7639 commit a849cbe74bec5e4e8f4bea3bf5b09d6e88bd7639 Author: Konstantin Belousov AuthorDate: 2026-04-02 07:42:16 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-05 00:24:15 +0000 posix_spawn.3: fix formatting of xref (cherry picked from commit 59e9a4c05a81a25aaf355cb18c24835abad96ff2) --- lib/libc/gen/posix_spawn.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libc/gen/posix_spawn.3 b/lib/libc/gen/posix_spawn.3 index f7489890db31..9fa370a7960f 100644 --- a/lib/libc/gen/posix_spawn.3 +++ b/lib/libc/gen/posix_spawn.3 @@ -467,7 +467,7 @@ action. .Xr posix_spawnattr_setexecfd_np 3 , .Xr posix_spawnattr_setflags 3 , .Xr posix_spawnattr_setpgroup 3 , -.Xr posix_spawnattr_setprocdescp_np 3, +.Xr posix_spawnattr_setprocdescp_np 3 , .Xr posix_spawnattr_setschedparam 3 , .Xr posix_spawnattr_setschedpolicy 3 , .Xr posix_spawnattr_setsigdefault 3 , From nobody Sun Apr 5 04:26:47 2026 X-Original-To: dev-commits-src-branches@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 4fpKD81Fynz6YChg for ; Sun, 05 Apr 2026 04:26:48 +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 4fpKD80rLLz3YT7 for ; Sun, 05 Apr 2026 04:26:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775363208; 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=Ce514/l8mXzQzD7VrYGIbphuJlSO+HudAeoPBR+zZsI=; b=qJiZDidw88/a6AlyjAnTZT28qGFc9MqzWtV3fELBE29zUpMUXzI01z7HtnSHbe9qWmJWBb uLgKaTyPJnnecNgi8QeD/gX7BaqmdQR5eTIfHSbW1bDu9qH5wgaw5z4zxITrVbRrowS09R lW1FNpiOFxP3W78YYGLnB4PTeYcGA90UCaAqBf6Et6n7bpHTsGCumQBDvPilh25/27BCG0 2Sj10v9wOqKDbGCX3nJNYCdmtXwWV8B42iUxJ4iwa7rBnUo/z6/LS5pkighrNAXxMZBCwE rxm1zb+mgRDT5ctQ53AsRjivgxiqGhiyZiKzwiu33NgWPtNjvkqabyfniOjuuA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775363208; a=rsa-sha256; cv=none; b=n0Nqwfqj7ufbuhXPAMi11M+j5D47nej48lxmfTvqUvFk3TgI3AfvVz8U7Tg+K8dNNZPuUl aUCUP2H7uzKT3d4yCWOPG22QxuM+YaoWuk73LUC0j9EttvknMwTrhkQ1zIqy/kip8U3OCu PmhXd4n4s/axrPlu5P+enwRByMeOLra1I0goRN5SYUn4huqGB5AX8STuqJROHLODMASOAP qBsBXRv/kMi50ixbChIS1RWbe5I3C+HXBB2SMVSFlIN0uL1ufUHCfYgwODruS1dDdRzELi 20bGuOke4G1F5tkuNYPjSGPJrNKyLrNqg747bm0ieCOIS0LveDMx5dynCPEL4Q== 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=1775363208; 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=Ce514/l8mXzQzD7VrYGIbphuJlSO+HudAeoPBR+zZsI=; b=NkhNH8cNu1orMDX1h5o4p4aDIAWh+VaDOyodCvu8JCwZSJGrCCxtoFYcyMsnKDTIIk+DCx TWgLfBEcMiWOHpTJ2LYYU7gSFCRNGXajB9XQffyJyOCQNIZoaam+AECLo11J1szEy4eoDx YZd9Wl1gjm7ik2ePqtypR7qDERzP75pt0jMYp42tpGsYPckTBunqvch9sMlfS1oC29idli m6yVo9EQuGmcv10LiVy1z/ye6/v6aniTiXv9Fkkp0cE1mpe3lHwgaRUtssmrW6S0LHtj5h L2lvhAot6JR3Lo/7a4y2nw8oGSJLzyL/NcHprkWSXKBRfwojK3E33HLSz69FGA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fpKD803P0zq9Q for ; Sun, 05 Apr 2026 04:26:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1a5d1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 05 Apr 2026 04:26:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 0b94911946e9 - stable/15 - contrib/expat: import expat 2.7.5 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 0b94911946e96001963a4ef9222cf117e8d8d4bd Auto-Submitted: auto-generated Date: Sun, 05 Apr 2026 04:26:47 +0000 Message-Id: <69d1e487.1a5d1.23c8cc21@gitrepo.freebsd.org> The branch stable/15 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=0b94911946e96001963a4ef9222cf117e8d8d4bd commit 0b94911946e96001963a4ef9222cf117e8d8d4bd Author: Philip Paeps AuthorDate: 2026-04-02 00:12:18 +0000 Commit: Philip Paeps CommitDate: 2026-04-05 02:58:54 +0000 contrib/expat: import expat 2.7.5 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_5/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_4/expat/Changes Security: CVE-2026-32776 Security: CVE-2026-32777 Security: CVE-2026-32778 Security: CVE-2026-24515 Security: CVE-2026-25210 (cherry picked from commit ae04c7bbf065278687fa930e81a96767e9009d38) --- contrib/expat/Changes | 159 +- contrib/expat/Makefile.am | 3 +- contrib/expat/Makefile.in | 6 +- contrib/expat/README.md | 13 +- contrib/expat/configure.ac | 66 +- contrib/expat/doc/Makefile.in | 3 + contrib/expat/doc/reference.html | 5091 +++++++++++++++++------------ contrib/expat/doc/xmlwf.1 | 15 +- contrib/expat/doc/xmlwf.xml | 480 +-- contrib/expat/examples/Makefile.in | 3 + contrib/expat/expat_config.h.in | 3 - contrib/expat/fix-xmltest-log.sh | 5 +- contrib/expat/lib/Makefile.am | 6 +- contrib/expat/lib/Makefile.in | 21 +- contrib/expat/lib/expat.h | 4 +- contrib/expat/lib/expat_external.h | 5 +- contrib/expat/lib/internal.h | 2 +- contrib/expat/lib/libexpat.map.in | 119 + contrib/expat/lib/xmlparse.c | 173 +- contrib/expat/lib/xmlrole.c | 4 +- contrib/expat/lib/xmltok.c | 4 +- contrib/expat/lib/xmltok_ns.c | 7 +- contrib/expat/tests/Makefile.in | 3 + contrib/expat/tests/basic_tests.c | 74 +- contrib/expat/tests/benchmark/Makefile.in | 3 + contrib/expat/tests/handlers.c | 12 +- contrib/expat/tests/handlers.h | 5 +- contrib/expat/tests/misc_tests.c | 35 +- contrib/expat/tests/nsalloc_tests.c | 27 + contrib/expat/xmlwf/Makefile.in | 3 + contrib/expat/xmlwf/xmlfile.c | 4 +- contrib/expat/xmlwf/xmlwf.c | 13 +- contrib/expat/xmlwf/xmlwf_helpgen.py | 186 +- lib/libexpat/expat_config.h | 6 +- lib/libexpat/libbsdxml.3 | 4 +- 35 files changed, 4025 insertions(+), 2542 deletions(-) diff --git a/contrib/expat/Changes b/contrib/expat/Changes index 01e54b676416..2b3704a69b77 100644 --- a/contrib/expat/Changes +++ b/contrib/expat/Changes @@ -10,37 +10,160 @@ !! ~~~~~~~~~~~~ !! !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! +!! _______________________ !! +!! - teaming up on fixing the UNFIXED SECURITY ISSUES listed at: !! +!! """"""""""""""""""""""" !! +!! https://github.com/libexpat/libexpat/issues/1160 !! !! !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! -!! - helping CPython Expat bindings with supporting Expat's amplification !! -!! attack protection API (https://github.com/python/cpython/issues/90949): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! -!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - XML_SetReparseDeferralEnabled !! +!! !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! -!! - smart ideas on fixing the Autotools CMake files generation issue !! -!! without breaking CI (needs discussion before pull requests), !! -!! - pushing migration from `int` to `size_t` further !! -!! including edge-cases test coverage (needs discussion before anything). !! !! !! !! For details, please reach out via e-mail to sebastian@pipping.org so we !! !! can schedule a voice call on the topic, in English or German. !! !! !! -!! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! +!! THANK YOU! Sebastian Pipping -- Berlin, 2026-03-17 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.5 Tue March 17 2026 + Security fixes: + #1158 CVE-2026-32776 -- Fix NULL function pointer dereference for + empty external parameter entities; it takes use of both + functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1161 #1162 CVE-2026-32777 -- Protect from XML_TOK_INSTANCE_START + infinite loop in function entityValueProcessor; it takes + use of both functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1163 CVE-2026-32778 -- Fix NULL dereference in function setContext + on retry after an earlier ouf-of-memory condition; it takes + use of function XML_ParserCreateNS or XML_ParserCreate_MM + for an application to be vulnerable. + #1160 Three more unfixed vulnerabilities left + + Other changes: + #1146 #1147 Autotools: Fix condition for symbol versioning check, in + particular when compiling with slibtool (not libtool) + #1156 Address Cppcheck >=2.20.0 warnings + #1153 tests: Make test_buffer_can_grow_to_max work for MinGW on + Ubuntu 24.04 + #1157 #1159 Version info bumped from 12:2:11 (libexpat*.so.1.11.2) + to 12:3:11 (libexpat*.so.1.11.3); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1148 CI: Fix FreeBSD and Solaris CI + #1149 CI: Bump to WASI SDK 30 + #1153 CI: Adapt to breaking changes with Ubuntu 22.04 + #1156 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Berkay Eren Ürün + Christian Ng + Fabio Scaccabarozzi + Francesco Bertolaccini + Mark Brand + Rhodri James + and + AddressSanitizer + Buttercup + OSS-Fuzz / ClusterFuzz + Trail of Bits + +Release 2.7.4 Sat January 31 2026 + Security fixes: + #1131 CVE-2026-24515 -- Function XML_ExternalEntityParserCreate + failed to copy the encoding handler data passed to + XML_SetUnknownEncodingHandler from the parent to the new + subparser. This can cause a NULL dereference (CWE-476) from + external entities that declare use of an unknown encoding. + The expected impact is denial of service. It takes use of + both functions XML_ExternalEntityParserCreate and + XML_SetUnknownEncodingHandler for an application to be + vulnerable. + #1075 CVE-2026-25210 -- Add missing check for integer overflow + related to buffer size determination in function doContent + + Bug fixes: + #1073 lib: Fix missing undoing of group size expansion in doProlog + failure cases + #1107 xmlwf: Fix a memory leak + #1104 WASI: Fix format specifiers for 32bit WASI SDK + + Other changes: + #1105 lib: Fix strict aliasing + #1106 lib: Leverage feature "flexible array member" of C99 + #1051 lib: Swap (size_t)(-1) for C99 equivalent SIZE_MAX + #1109 lib|xmlwf: Return NULL instead of 0 for pointers + #1068 lib|Windows: Clean up use of macro _MSC_EXTENSIONS with MSVC + #1112 lib: Remove unused import + #1110 xmlwf: Warn about XXE in --help output (and man page) + #1102 #1103 WASI: Stop using getpid + #1113 #1130 Autotools: Drop file expat.m4 that provided obsolete Autoconf + macro AM_WITH_EXPAT + #1123 Autotools: Limit -Wno-pedantic-ms-format to MinGW + #1129 #1134 .. + #1087 Autotools|macOS: Sync CMake templates with CMake 4.0 + #1139 #1140 Autotools|CMake: Introduce off-by-default symbol versioning + The related build system flags are: + - For Autotools, configure with --enable-symbol-versioning + - For CMake, configure with -DEXPAT_SYMBOL_VERSIONING=ON + Please double-check for consequences before activating + this inside distro packaging. Bug reports welcome! + #1117 Autotools|CMake: Remove libbsd support + #1105 Autotools|CMake: Stop using -fno-strict-aliasing, and use + -Wstrict-aliasing=3 instead + #1124 Autotools|CMake: Prefer command gsed (GNU sed) over sed + (e.g. for Solaris) inside fix-xmltest-log.sh + #1067 CMake: Detect and warn about unusable check_c_compiler_flag + #1137 CMake: Drop support for CMake <3.17 + #1138 CMake|Windows: Fix libexpat.def.cmake version comments + + #1086 #1110 docs: Add warning about external reference handlers and XXE + #1066 docs: Be explicit that parent parsers need to outlive + subparsers + #1089 .. + #1090 #1091 .. + #1092 #1093 .. + #1094 #1098 .. + #1115 #1116 docs: Misc non-content improvements to doc/reference.html + #1132 #1133 Version info bumped from 12:1:11 (libexpat*.so.1.11.1) + to 12:2:11 (libexpat*.so.1.11.2); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1119 #1121 Document guidelines for contributing to Expat + #1120 Introduce a pull request template + #1074 CI: Stop using about-to-be-removed image "macos-13" + #1083 #1088 CI: Mitigate random Wine crashes + #1104 CI: Cover compilation with WASI SDK + #1116 CI: Enforce clean doc XML formatting + #1124 .. + #1135 #1136 CI: Cover Solaris 11.4 + #1125 CI: Extend CI coverage of FreeBSD + #1139 #1140 CI: Cover symbol versioning + #1114 xmlwf: Reformat helpgen code (using Black 25.12.0) + #1071 .gitignore: Add files CPackConfig.cmake and + CPackSourceConfig.cmake + + Special thanks to: + Alfonso Gregory + Bénédikt Tran + Gordon Messmer + Hanno Böck + Jakub Kulík + Matthew Fernandez + Neil Pang + Rosen Penev + and + Artiphishell Inc. + Release 2.7.3 Wed September 24 2025 Security fixes: #1046 #1048 Fix alignment of internal allocations for some non-amd64 diff --git a/contrib/expat/Makefile.am b/contrib/expat/Makefile.am index d612d432becb..72f2fca59d6f 100644 --- a/contrib/expat/Makefile.am +++ b/contrib/expat/Makefile.am @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -94,7 +94,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/Makefile.in b/contrib/expat/Makefile.in index b799591f2fc2..aa41b152525d 100644 --- a/contrib/expat/Makefile.in +++ b/contrib/expat/Makefile.in @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -395,6 +395,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -497,7 +500,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/README.md b/contrib/expat/README.md index c2f288ca1242..a67548be7fc9 100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@ -11,7 +11,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.7.3 +# Expat, Release 2.7.5 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by @@ -234,11 +234,6 @@ overrides the in-makefile set `DESTDIR`, because variable-setting priority is Note: This only applies to the Expat library itself, building UTF-16 versions of xmlwf and the tests is currently not supported. -When using Expat with a project using autoconf for configuration, you -can use the probing macro in `conftools/expat.m4` to determine how to -include Expat. See the comments at the top of that file for more -information. - A reference manual is available in the file `doc/reference.html` in this distribution. @@ -297,15 +292,15 @@ EXPAT_OSSFUZZ_BUILD:BOOL=OFF // Build a shared expat library EXPAT_SHARED_LIBS:BOOL=ON +// Define to provide symbol versioning for dependency generation +EXPAT_SYMBOL_VERSIONING:BOOL=OFF + // Treat all compiler warnings as errors EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF // Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_GETRANDOM:STRING=AUTO -// Utilize libbsd (for arc4random_buf) -EXPAT_WITH_LIBBSD:BOOL=OFF - // Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO ``` diff --git a/contrib/expat/configure.ac b/contrib/expat/configure.ac index 072fea41ee8c..6d028b5f6658 100644 --- a/contrib/expat/configure.ac +++ b/contrib/expat/configure.ac @@ -11,7 +11,7 @@ dnl Copyright (c) 2000 Clark Cooper dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. dnl Copyright (c) 2001-2003 Greg Stein dnl Copyright (c) 2006-2012 Karl Waclawek -dnl Copyright (c) 2016-2025 Sebastian Pipping +dnl Copyright (c) 2016-2026 Sebastian Pipping dnl Copyright (c) 2017 S. P. Zeidler dnl Copyright (c) 2017 Stephen Groat dnl Copyright (c) 2017-2020 Joe Orton @@ -25,6 +25,10 @@ dnl Copyright (c) 2020 Jeffrey Walton dnl Copyright (c) 2024 Ferenc Géczi dnl Copyright (c) 2024 Dag-Erling Smørgrav dnl Copyright (c) 2025 Matthew Fernandez +dnl Copyright (c) 2025 Alfonso Gregory +dnl Copyright (c) 2026 Rosen Penev +dnl Copyright (c) 2026 Gordon Messmer +dnl Copyright (c) 2026 Fabio Scaccabarozzi dnl Licensed under the MIT license: dnl dnl Permission is hereby granted, free of charge, to any person obtaining @@ -86,7 +90,7 @@ dnl If the API changes incompatibly set LIBAGE back to 0 dnl LIBCURRENT=12 # sync -LIBREVISION=1 # with +LIBREVISION=3 # with LIBAGE=11 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) @@ -117,10 +121,12 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3 -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wno-pedantic-ms-format -Wmisleading-indentation], [AM_CFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [AM_CFLAGS]) + AS_CASE(["${host_os}"], [mingw*], [AX_APPEND_COMPILE_FLAGS([-Wno-pedantic-ms-format], [AM_CFLAGS])]) + ]) AC_LANG_PUSH([C++]) AC_PROG_CXX @@ -131,11 +137,23 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CXXFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [AM_CXXFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3], [AM_CXXFLAGS])]) AC_LANG_POP([C++]) AS_IF([test "$GCC" = yes], - [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[AM_LDFLAGS])]) + [AX_APPEND_LINK_FLAGS([-Wstrict-aliasing=3],[AM_LDFLAGS])]) + +AC_ARG_ENABLE([symbol-versioning], + [AS_HELP_STRING([--enable-symbol-versioning], + [provide symbol versioning for dependency generation @<:@default=no@:>@])], + [enable_symbol_versioning=$enableval], + [enable_symbol_versioning=no]) +AS_IF([test "x$enable_symbol_versioning" != xno], + [VSCRIPT_LDFLAGS="-Wl,--version-script" + AC_SUBST([VSCRIPT_LDFLAGS]) + ]) +AM_CONDITIONAL([HAVE_VSCRIPT], + [test "x$enable_symbol_versioning" != xno]) dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312) AS_CASE(["$LD"],[*clang*], @@ -199,23 +217,9 @@ AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP LT_LIB_M -AC_ARG_WITH([libbsd], - [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], - [], - [with_libbsd=no]) -AS_IF([test "x${with_libbsd}" != xno], - [AC_CHECK_LIB([bsd], - [arc4random_buf], - [], - [AS_IF([test "x${with_libbsd}" = xyes], - [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])]) -AC_MSG_CHECKING([for arc4random_buf (BSD, libbsd or glibc 2.36+)]) +AC_MSG_CHECKING([for arc4random_buf (BSD or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include /* for arc4random_buf on BSD */ - #endif + #include int main(void) { char dummy[[123]]; // double brackets for m4 arc4random_buf(dummy, 0U); @@ -226,13 +230,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([ AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) - AC_MSG_CHECKING([for arc4random (BSD, macOS, libbsd or glibc 2.36+)]) + AC_MSG_CHECKING([for arc4random (BSD, macOS, or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include - #endif + #include int main(void) { arc4random(); return 0; @@ -381,9 +381,14 @@ dnl NOTE: The *_TRUE variables read here are Automake conditionals dnl that are either set to "" when enabled or to "#" when disabled dnl (because they are used to dynamically comment out certain things) AS_IF([test "x${enable_xml_attr_info}" = xyes], - [EXPAT_ATTR_INFO=ON], - [EXPAT_ATTR_INFO=OFF]) + [EXPAT_ATTR_INFO=ON + _EXPAT_COMMENT_ATTR_INFO=" "], + [EXPAT_ATTR_INFO=OFF + _EXPAT_COMMENT_ATTR_INFO="#"]) +AC_SUBST([_EXPAT_COMMENT_ATTR_INFO]) EXPAT_DTD=ON +_EXPAT_COMMENT_DTD_OR_GE=" " +AC_SUBST([_EXPAT_COMMENT_DTD_OR_GE]) AS_IF([test "x${_INTERNAL_LARGE_SIZE_TRUE}" = x], [EXPAT_LARGE_SIZE=ON], [EXPAT_LARGE_SIZE=OFF]) @@ -461,6 +466,7 @@ AC_CONFIG_FILES([Makefile] [doc/Makefile] [examples/Makefile] [lib/Makefile] + [lib/libexpat.map] [tests/Makefile] [tests/benchmark/Makefile] [xmlwf/Makefile]) diff --git a/contrib/expat/doc/Makefile.in b/contrib/expat/doc/Makefile.in index 13be5107f89b..0bda758420f0 100644 --- a/contrib/expat/doc/Makefile.in +++ b/contrib/expat/doc/Makefile.in @@ -293,6 +293,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/contrib/expat/doc/reference.html b/contrib/expat/doc/reference.html index d2dded499435..5faa8d6515af 100644 --- a/contrib/expat/doc/reference.html +++ b/contrib/expat/doc/reference.html @@ -1,9 +1,9 @@ - + - - - - Expat XML Parser - - - - - - -
-

- The Expat XML Parser - Release 2.7.3 -

-
-
- -

Expat is a library, written in C, for parsing XML documents. It's -the underlying XML parser for the open source Mozilla project, Perl's -XML::Parser, Python's xml.parsers.expat, and -other open-source XML parsers.

- -

This library is the creation of James Clark, who's also given us -groff (an nroff look-alike), Jade (an implementation of ISO's DSSSL -stylesheet language for SGML), XP (a Java XML parser package), XT (a -Java XSL engine). James was also the technical lead on the XML -Working Group at W3C that produced the XML specification.

- -

This is free software, licensed under the MIT/X Consortium license. You may download it -from the Expat home page. -

- -

The bulk of this document was originally commissioned as an article -by XML.com. They graciously allowed -Clark Cooper to retain copyright and to distribute it with Expat. -This version has been substantially extended to include documentation -on features which have been added since the original article was -published, and additional information on using the original -interface.

- -
-

Table of Contents

-
    -
  • Overview
  • -
  • Building and Installing
  • -
  • Using Expat
  • -
  • Reference -
      -
    • Parser Creation Functions - -
    • -
    • Parsing Functions - -
    • -
    • Handler Setting Functions - -
    • -
    • Parse Position and Error Reporting Functions - -
    • -
    • - Attack Protection + + + Expat XML Parser + + + + + + +
      +

      + The Expat XML Parser Release 2.7.5 +

      +
      + +
      +

      + Expat is a library, written in C, for parsing XML documents. It's the underlying + XML parser for the open source Mozilla project, Perl's XML::Parser, + Python's xml.parsers.expat, and other open-source XML parsers. +

      + +

      + This library is the creation of James Clark, who's also given us groff (an nroff + look-alike), Jade (an implementation of ISO's DSSSL stylesheet language for + SGML), XP (a Java XML parser package), XT (a Java XSL engine). James was also the + technical lead on the XML Working Group at W3C that produced the XML + specification. +

      + +

      + This is free software, licensed under the MIT/X Consortium + license. You may download it from the + Expat home page. +

      + +

      + The bulk of this document was originally commissioned as an article by XML.com. They graciously allowed Clark Cooper to + retain copyright and to distribute it with Expat. This version has been + substantially extended to include documentation on features which have been added + since the original article was published, and additional information on using the + original interface. +

      + +
      + +

      + Table of Contents +

      +
        -
      • XML_SetBillionLaughsAttackProtectionMaximumAmplification
      • -
      • XML_SetBillionLaughsAttackProtectionActivationThreshold
      • -
      • XML_SetAllocTrackerMaximumAmplification
      • -
      • XML_SetAllocTrackerActivationThreshold
      • -
      • XML_SetReparseDeferralEnabled
      • +
      • + Overview +
      • + +
      • + Building and Installing +
      • + +
      • + Using Expat +
      • + +
      • + Reference +
          +
        • + Parser Creation Functions + +
        • + +
        • + Parsing Functions + +
        • + +
        • + Handler Setting Functions + +
        • + +
        • + Parse Position and Error Reporting Functions + +
        • + +
        • + Attack Protection + +
        • + +
        • + Miscellaneous Functions +
            +
          • + XML_SetUserData +
          • + +
          • + XML_GetUserData +
          • + +
          • + XML_UseParserAsHandlerArg +
          • + +
          • + XML_SetBase +
          • + +
          • + XML_GetBase *** 7585 LINES SKIPPED *** From nobody Sun Apr 5 05:39:00 2026 X-Original-To: dev-commits-src-branches@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 4fpLqT0dhzz6YLmh for ; Sun, 05 Apr 2026 05:39:01 +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 4fpLqS4xC1z3h5d for ; Sun, 05 Apr 2026 05:39:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775367540; 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=g4bfCLNjCx2xzMdwtHXFF4aMXfEUbPGMOVDdidfrI20=; b=XXlSm2KOTXhHXCaOcgCKzFQQJdt2y2i5J+md7hjO8l7fbjKESSwblPPqSexf7jl9Ol1uGL CSv2uB3sskc8B2TI18q9zaiCp6lU/5UYpB1BVuGJwQ25zDKMwKI5yzBkrYCHVwJFdw4Js/ zg+OWSjv0TJmYwX7PaS/79icdbVnTq+4bUYlVPU9vgsl/U6CeYLnDywVm6DKu4siz5ta33 HyfR/seZ8eKHPNti8nI0mJaQB9Q2RtIp6uBijBmM/NDQv4571OvMiTZhP1vgPXCBkAhLYf +Gk8wBY0bkbb7XPDFQvcb3JZJVl0wRWh1bdN0iuEqivAkizUBCwkCwwiMONCoA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775367540; a=rsa-sha256; cv=none; b=igXK1VvRfcgx21Z9sX9cctm4xfRYgXft+fqEY4fDUHvUO03Fkzzd00WkKD8sEKcdW9+OYq 11j/g2sbZi/+mB0pw/1P69dxxu1U/CM4cJJsoXNnzFTE1hTzN8ajKW5bwYc7OkiCCcAx52 sSF45c6/bKT1vdX5Rs9RS98f3LLyxMacqOpkhPPkULlHYi2LJKrTYDkxN8z1Ld6NJ0wiER Zm4GTR1wOsH5i1DmsdNAfO8FtNzmktvPNRbTwM9JDXDBHm3PF4cAiMCRiFzBZbl63OXbR8 jCbZeYPxgJrvrzD2uTw6BghiQX6pwJJ3VJ8bedBOP//gsT496S0CuK8zh1+bDw== 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=1775367540; 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=g4bfCLNjCx2xzMdwtHXFF4aMXfEUbPGMOVDdidfrI20=; b=XgERDEWaAx8T0SUFs/JTPZ1YxykGqV5AMrnrXXwQOe0SxOwfr2Ec28b9Bcg/7WGaC/YJ/X z7aFw8o9Ejc6BHTfBAsDMTPNfjaA7g6XlIA1LTVV1L2wRul3r6bTLO6yi/S3T6x2CPkVwG mNikC0dJqeKdmrvamzlxMuvEvFFdzL7i2GNuHH5Vh5s0m1o2wq2BH5izqC5ClBslCgRwrA FxthI6XeZqoYrzpjeKXtzdSchkJOMJHrPEzgWavoPxV0B1NhKvr3VI7SAXKYXIyLd2pmS2 Tg29Z1wNDvgkddxr4bgbisXYtoCKN215KkC1dXdbN4kRIcaCgqBEdq7MAQEyqg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fpLqS4Xl3zsfk for ; Sun, 05 Apr 2026 05:39:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22ea7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 05 Apr 2026 05:39:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 1ac7c32807e5 - stable/14 - contrib/expat: import expat 2.7.5 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1ac7c32807e5da50b8c61c3ffe93f668eac4ba5f Auto-Submitted: auto-generated Date: Sun, 05 Apr 2026 05:39:00 +0000 Message-Id: <69d1f574.22ea7.23a69ec1@gitrepo.freebsd.org> The branch stable/14 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=1ac7c32807e5da50b8c61c3ffe93f668eac4ba5f commit 1ac7c32807e5da50b8c61c3ffe93f668eac4ba5f Author: Philip Paeps AuthorDate: 2026-04-02 00:12:18 +0000 Commit: Philip Paeps CommitDate: 2026-04-05 04:24:49 +0000 contrib/expat: import expat 2.7.5 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_5/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_4/expat/Changes Security: CVE-2026-32776 Security: CVE-2026-32777 Security: CVE-2026-32778 Security: CVE-2026-24515 Security: CVE-2026-25210 (cherry picked from commit ae04c7bbf065278687fa930e81a96767e9009d38) --- contrib/expat/Changes | 159 +- contrib/expat/Makefile.am | 3 +- contrib/expat/Makefile.in | 6 +- contrib/expat/README.md | 13 +- contrib/expat/configure.ac | 66 +- contrib/expat/doc/Makefile.in | 3 + contrib/expat/doc/reference.html | 5091 +++++++++++++++++------------ contrib/expat/doc/xmlwf.1 | 15 +- contrib/expat/doc/xmlwf.xml | 480 +-- contrib/expat/examples/Makefile.in | 3 + contrib/expat/expat_config.h.in | 3 - contrib/expat/fix-xmltest-log.sh | 5 +- contrib/expat/lib/Makefile.am | 6 +- contrib/expat/lib/Makefile.in | 21 +- contrib/expat/lib/expat.h | 4 +- contrib/expat/lib/expat_external.h | 5 +- contrib/expat/lib/internal.h | 2 +- contrib/expat/lib/libexpat.map.in | 119 + contrib/expat/lib/xmlparse.c | 173 +- contrib/expat/lib/xmlrole.c | 4 +- contrib/expat/lib/xmltok.c | 4 +- contrib/expat/lib/xmltok_ns.c | 7 +- contrib/expat/tests/Makefile.in | 3 + contrib/expat/tests/basic_tests.c | 74 +- contrib/expat/tests/benchmark/Makefile.in | 3 + contrib/expat/tests/handlers.c | 12 +- contrib/expat/tests/handlers.h | 5 +- contrib/expat/tests/misc_tests.c | 35 +- contrib/expat/tests/nsalloc_tests.c | 27 + contrib/expat/xmlwf/Makefile.in | 3 + contrib/expat/xmlwf/xmlfile.c | 4 +- contrib/expat/xmlwf/xmlwf.c | 13 +- contrib/expat/xmlwf/xmlwf_helpgen.py | 186 +- lib/libexpat/expat_config.h | 6 +- lib/libexpat/libbsdxml.3 | 4 +- 35 files changed, 4025 insertions(+), 2542 deletions(-) diff --git a/contrib/expat/Changes b/contrib/expat/Changes index 01e54b676416..2b3704a69b77 100644 --- a/contrib/expat/Changes +++ b/contrib/expat/Changes @@ -10,37 +10,160 @@ !! ~~~~~~~~~~~~ !! !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! +!! _______________________ !! +!! - teaming up on fixing the UNFIXED SECURITY ISSUES listed at: !! +!! """"""""""""""""""""""" !! +!! https://github.com/libexpat/libexpat/issues/1160 !! !! !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! -!! - helping CPython Expat bindings with supporting Expat's amplification !! -!! attack protection API (https://github.com/python/cpython/issues/90949): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! -!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - XML_SetReparseDeferralEnabled !! +!! !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! -!! - smart ideas on fixing the Autotools CMake files generation issue !! -!! without breaking CI (needs discussion before pull requests), !! -!! - pushing migration from `int` to `size_t` further !! -!! including edge-cases test coverage (needs discussion before anything). !! !! !! !! For details, please reach out via e-mail to sebastian@pipping.org so we !! !! can schedule a voice call on the topic, in English or German. !! !! !! -!! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! +!! THANK YOU! Sebastian Pipping -- Berlin, 2026-03-17 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.5 Tue March 17 2026 + Security fixes: + #1158 CVE-2026-32776 -- Fix NULL function pointer dereference for + empty external parameter entities; it takes use of both + functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1161 #1162 CVE-2026-32777 -- Protect from XML_TOK_INSTANCE_START + infinite loop in function entityValueProcessor; it takes + use of both functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1163 CVE-2026-32778 -- Fix NULL dereference in function setContext + on retry after an earlier ouf-of-memory condition; it takes + use of function XML_ParserCreateNS or XML_ParserCreate_MM + for an application to be vulnerable. + #1160 Three more unfixed vulnerabilities left + + Other changes: + #1146 #1147 Autotools: Fix condition for symbol versioning check, in + particular when compiling with slibtool (not libtool) + #1156 Address Cppcheck >=2.20.0 warnings + #1153 tests: Make test_buffer_can_grow_to_max work for MinGW on + Ubuntu 24.04 + #1157 #1159 Version info bumped from 12:2:11 (libexpat*.so.1.11.2) + to 12:3:11 (libexpat*.so.1.11.3); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1148 CI: Fix FreeBSD and Solaris CI + #1149 CI: Bump to WASI SDK 30 + #1153 CI: Adapt to breaking changes with Ubuntu 22.04 + #1156 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Berkay Eren Ürün + Christian Ng + Fabio Scaccabarozzi + Francesco Bertolaccini + Mark Brand + Rhodri James + and + AddressSanitizer + Buttercup + OSS-Fuzz / ClusterFuzz + Trail of Bits + +Release 2.7.4 Sat January 31 2026 + Security fixes: + #1131 CVE-2026-24515 -- Function XML_ExternalEntityParserCreate + failed to copy the encoding handler data passed to + XML_SetUnknownEncodingHandler from the parent to the new + subparser. This can cause a NULL dereference (CWE-476) from + external entities that declare use of an unknown encoding. + The expected impact is denial of service. It takes use of + both functions XML_ExternalEntityParserCreate and + XML_SetUnknownEncodingHandler for an application to be + vulnerable. + #1075 CVE-2026-25210 -- Add missing check for integer overflow + related to buffer size determination in function doContent + + Bug fixes: + #1073 lib: Fix missing undoing of group size expansion in doProlog + failure cases + #1107 xmlwf: Fix a memory leak + #1104 WASI: Fix format specifiers for 32bit WASI SDK + + Other changes: + #1105 lib: Fix strict aliasing + #1106 lib: Leverage feature "flexible array member" of C99 + #1051 lib: Swap (size_t)(-1) for C99 equivalent SIZE_MAX + #1109 lib|xmlwf: Return NULL instead of 0 for pointers + #1068 lib|Windows: Clean up use of macro _MSC_EXTENSIONS with MSVC + #1112 lib: Remove unused import + #1110 xmlwf: Warn about XXE in --help output (and man page) + #1102 #1103 WASI: Stop using getpid + #1113 #1130 Autotools: Drop file expat.m4 that provided obsolete Autoconf + macro AM_WITH_EXPAT + #1123 Autotools: Limit -Wno-pedantic-ms-format to MinGW + #1129 #1134 .. + #1087 Autotools|macOS: Sync CMake templates with CMake 4.0 + #1139 #1140 Autotools|CMake: Introduce off-by-default symbol versioning + The related build system flags are: + - For Autotools, configure with --enable-symbol-versioning + - For CMake, configure with -DEXPAT_SYMBOL_VERSIONING=ON + Please double-check for consequences before activating + this inside distro packaging. Bug reports welcome! + #1117 Autotools|CMake: Remove libbsd support + #1105 Autotools|CMake: Stop using -fno-strict-aliasing, and use + -Wstrict-aliasing=3 instead + #1124 Autotools|CMake: Prefer command gsed (GNU sed) over sed + (e.g. for Solaris) inside fix-xmltest-log.sh + #1067 CMake: Detect and warn about unusable check_c_compiler_flag + #1137 CMake: Drop support for CMake <3.17 + #1138 CMake|Windows: Fix libexpat.def.cmake version comments + + #1086 #1110 docs: Add warning about external reference handlers and XXE + #1066 docs: Be explicit that parent parsers need to outlive + subparsers + #1089 .. + #1090 #1091 .. + #1092 #1093 .. + #1094 #1098 .. + #1115 #1116 docs: Misc non-content improvements to doc/reference.html + #1132 #1133 Version info bumped from 12:1:11 (libexpat*.so.1.11.1) + to 12:2:11 (libexpat*.so.1.11.2); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1119 #1121 Document guidelines for contributing to Expat + #1120 Introduce a pull request template + #1074 CI: Stop using about-to-be-removed image "macos-13" + #1083 #1088 CI: Mitigate random Wine crashes + #1104 CI: Cover compilation with WASI SDK + #1116 CI: Enforce clean doc XML formatting + #1124 .. + #1135 #1136 CI: Cover Solaris 11.4 + #1125 CI: Extend CI coverage of FreeBSD + #1139 #1140 CI: Cover symbol versioning + #1114 xmlwf: Reformat helpgen code (using Black 25.12.0) + #1071 .gitignore: Add files CPackConfig.cmake and + CPackSourceConfig.cmake + + Special thanks to: + Alfonso Gregory + Bénédikt Tran + Gordon Messmer + Hanno Böck + Jakub Kulík + Matthew Fernandez + Neil Pang + Rosen Penev + and + Artiphishell Inc. + Release 2.7.3 Wed September 24 2025 Security fixes: #1046 #1048 Fix alignment of internal allocations for some non-amd64 diff --git a/contrib/expat/Makefile.am b/contrib/expat/Makefile.am index d612d432becb..72f2fca59d6f 100644 --- a/contrib/expat/Makefile.am +++ b/contrib/expat/Makefile.am @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -94,7 +94,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/Makefile.in b/contrib/expat/Makefile.in index b799591f2fc2..aa41b152525d 100644 --- a/contrib/expat/Makefile.in +++ b/contrib/expat/Makefile.in @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -395,6 +395,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -497,7 +500,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/README.md b/contrib/expat/README.md index c2f288ca1242..a67548be7fc9 100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@ -11,7 +11,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.7.3 +# Expat, Release 2.7.5 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by @@ -234,11 +234,6 @@ overrides the in-makefile set `DESTDIR`, because variable-setting priority is Note: This only applies to the Expat library itself, building UTF-16 versions of xmlwf and the tests is currently not supported. -When using Expat with a project using autoconf for configuration, you -can use the probing macro in `conftools/expat.m4` to determine how to -include Expat. See the comments at the top of that file for more -information. - A reference manual is available in the file `doc/reference.html` in this distribution. @@ -297,15 +292,15 @@ EXPAT_OSSFUZZ_BUILD:BOOL=OFF // Build a shared expat library EXPAT_SHARED_LIBS:BOOL=ON +// Define to provide symbol versioning for dependency generation +EXPAT_SYMBOL_VERSIONING:BOOL=OFF + // Treat all compiler warnings as errors EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF // Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_GETRANDOM:STRING=AUTO -// Utilize libbsd (for arc4random_buf) -EXPAT_WITH_LIBBSD:BOOL=OFF - // Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO ``` diff --git a/contrib/expat/configure.ac b/contrib/expat/configure.ac index 072fea41ee8c..6d028b5f6658 100644 --- a/contrib/expat/configure.ac +++ b/contrib/expat/configure.ac @@ -11,7 +11,7 @@ dnl Copyright (c) 2000 Clark Cooper dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. dnl Copyright (c) 2001-2003 Greg Stein dnl Copyright (c) 2006-2012 Karl Waclawek -dnl Copyright (c) 2016-2025 Sebastian Pipping +dnl Copyright (c) 2016-2026 Sebastian Pipping dnl Copyright (c) 2017 S. P. Zeidler dnl Copyright (c) 2017 Stephen Groat dnl Copyright (c) 2017-2020 Joe Orton @@ -25,6 +25,10 @@ dnl Copyright (c) 2020 Jeffrey Walton dnl Copyright (c) 2024 Ferenc Géczi dnl Copyright (c) 2024 Dag-Erling Smørgrav dnl Copyright (c) 2025 Matthew Fernandez +dnl Copyright (c) 2025 Alfonso Gregory +dnl Copyright (c) 2026 Rosen Penev +dnl Copyright (c) 2026 Gordon Messmer +dnl Copyright (c) 2026 Fabio Scaccabarozzi dnl Licensed under the MIT license: dnl dnl Permission is hereby granted, free of charge, to any person obtaining @@ -86,7 +90,7 @@ dnl If the API changes incompatibly set LIBAGE back to 0 dnl LIBCURRENT=12 # sync -LIBREVISION=1 # with +LIBREVISION=3 # with LIBAGE=11 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) @@ -117,10 +121,12 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3 -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wno-pedantic-ms-format -Wmisleading-indentation], [AM_CFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [AM_CFLAGS]) + AS_CASE(["${host_os}"], [mingw*], [AX_APPEND_COMPILE_FLAGS([-Wno-pedantic-ms-format], [AM_CFLAGS])]) + ]) AC_LANG_PUSH([C++]) AC_PROG_CXX @@ -131,11 +137,23 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CXXFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [AM_CXXFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3], [AM_CXXFLAGS])]) AC_LANG_POP([C++]) AS_IF([test "$GCC" = yes], - [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[AM_LDFLAGS])]) + [AX_APPEND_LINK_FLAGS([-Wstrict-aliasing=3],[AM_LDFLAGS])]) + +AC_ARG_ENABLE([symbol-versioning], + [AS_HELP_STRING([--enable-symbol-versioning], + [provide symbol versioning for dependency generation @<:@default=no@:>@])], + [enable_symbol_versioning=$enableval], + [enable_symbol_versioning=no]) +AS_IF([test "x$enable_symbol_versioning" != xno], + [VSCRIPT_LDFLAGS="-Wl,--version-script" + AC_SUBST([VSCRIPT_LDFLAGS]) + ]) +AM_CONDITIONAL([HAVE_VSCRIPT], + [test "x$enable_symbol_versioning" != xno]) dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312) AS_CASE(["$LD"],[*clang*], @@ -199,23 +217,9 @@ AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP LT_LIB_M -AC_ARG_WITH([libbsd], - [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], - [], - [with_libbsd=no]) -AS_IF([test "x${with_libbsd}" != xno], - [AC_CHECK_LIB([bsd], - [arc4random_buf], - [], - [AS_IF([test "x${with_libbsd}" = xyes], - [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])]) -AC_MSG_CHECKING([for arc4random_buf (BSD, libbsd or glibc 2.36+)]) +AC_MSG_CHECKING([for arc4random_buf (BSD or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include /* for arc4random_buf on BSD */ - #endif + #include int main(void) { char dummy[[123]]; // double brackets for m4 arc4random_buf(dummy, 0U); @@ -226,13 +230,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([ AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) - AC_MSG_CHECKING([for arc4random (BSD, macOS, libbsd or glibc 2.36+)]) + AC_MSG_CHECKING([for arc4random (BSD, macOS, or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include - #endif + #include int main(void) { arc4random(); return 0; @@ -381,9 +381,14 @@ dnl NOTE: The *_TRUE variables read here are Automake conditionals dnl that are either set to "" when enabled or to "#" when disabled dnl (because they are used to dynamically comment out certain things) AS_IF([test "x${enable_xml_attr_info}" = xyes], - [EXPAT_ATTR_INFO=ON], - [EXPAT_ATTR_INFO=OFF]) + [EXPAT_ATTR_INFO=ON + _EXPAT_COMMENT_ATTR_INFO=" "], + [EXPAT_ATTR_INFO=OFF + _EXPAT_COMMENT_ATTR_INFO="#"]) +AC_SUBST([_EXPAT_COMMENT_ATTR_INFO]) EXPAT_DTD=ON +_EXPAT_COMMENT_DTD_OR_GE=" " +AC_SUBST([_EXPAT_COMMENT_DTD_OR_GE]) AS_IF([test "x${_INTERNAL_LARGE_SIZE_TRUE}" = x], [EXPAT_LARGE_SIZE=ON], [EXPAT_LARGE_SIZE=OFF]) @@ -461,6 +466,7 @@ AC_CONFIG_FILES([Makefile] [doc/Makefile] [examples/Makefile] [lib/Makefile] + [lib/libexpat.map] [tests/Makefile] [tests/benchmark/Makefile] [xmlwf/Makefile]) diff --git a/contrib/expat/doc/Makefile.in b/contrib/expat/doc/Makefile.in index 13be5107f89b..0bda758420f0 100644 --- a/contrib/expat/doc/Makefile.in +++ b/contrib/expat/doc/Makefile.in @@ -293,6 +293,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/contrib/expat/doc/reference.html b/contrib/expat/doc/reference.html index d2dded499435..5faa8d6515af 100644 --- a/contrib/expat/doc/reference.html +++ b/contrib/expat/doc/reference.html @@ -1,9 +1,9 @@ - + - - - - Expat XML Parser - - - - - - -
            -

            - The Expat XML Parser - Release 2.7.3 -

            -
            -
            - -

            Expat is a library, written in C, for parsing XML documents. It's -the underlying XML parser for the open source Mozilla project, Perl's -XML::Parser, Python's xml.parsers.expat, and -other open-source XML parsers.

            - -

            This library is the creation of James Clark, who's also given us -groff (an nroff look-alike), Jade (an implementation of ISO's DSSSL -stylesheet language for SGML), XP (a Java XML parser package), XT (a -Java XSL engine). James was also the technical lead on the XML -Working Group at W3C that produced the XML specification.

            - -

            This is free software, licensed under the MIT/X Consortium license. You may download it -from the Expat home page. -

            - -

            The bulk of this document was originally commissioned as an article -by XML.com. They graciously allowed -Clark Cooper to retain copyright and to distribute it with Expat. -This version has been substantially extended to include documentation -on features which have been added since the original article was -published, and additional information on using the original -interface.

            - -
            -

            Table of Contents

            -
              -
            • Overview
            • -
            • Building and Installing
            • -
            • Using Expat
            • -
            • Reference -
                -
              • Parser Creation Functions - -
              • -
              • Parsing Functions - -
              • -
              • Handler Setting Functions - -
              • -
              • Parse Position and Error Reporting Functions - -
              • -
              • - Attack Protection + + + Expat XML Parser + + + + + + +
                +

                + The Expat XML Parser Release 2.7.5 +

                +
                + +
                +

                + Expat is a library, written in C, for parsing XML documents. It's the underlying + XML parser for the open source Mozilla project, Perl's XML::Parser, + Python's xml.parsers.expat, and other open-source XML parsers. +

                + +

                + This library is the creation of James Clark, who's also given us groff (an nroff + look-alike), Jade (an implementation of ISO's DSSSL stylesheet language for + SGML), XP (a Java XML parser package), XT (a Java XSL engine). James was also the + technical lead on the XML Working Group at W3C that produced the XML + specification. +

                + +

                + This is free software, licensed under the MIT/X Consortium + license. You may download it from the + Expat home page. +

                + +

                + The bulk of this document was originally commissioned as an article by XML.com. They graciously allowed Clark Cooper to + retain copyright and to distribute it with Expat. This version has been + substantially extended to include documentation on features which have been added + since the original article was published, and additional information on using the + original interface. +

                + +
                + +

                + Table of Contents +

                +
                  -
                • XML_SetBillionLaughsAttackProtectionMaximumAmplification
                • -
                • XML_SetBillionLaughsAttackProtectionActivationThreshold
                • -
                • XML_SetAllocTrackerMaximumAmplification
                • -
                • XML_SetAllocTrackerActivationThreshold
                • -
                • XML_SetReparseDeferralEnabled
                • +
                • + Overview +
                • + +
                • + Building and Installing +
                • + +
                • + Using Expat +
                • + +
                • + Reference +
                    +
                  • + Parser Creation Functions + +
                  • + +
                  • + Parsing Functions + +
                  • + +
                  • + Handler Setting Functions + +
                  • + +
                  • + Parse Position and Error Reporting Functions + +
                  • + +
                  • + Attack Protection + +
                  • + +
                  • + Miscellaneous Functions +
                      +
                    • + XML_SetUserData +
                    • + +
                    • + XML_GetUserData +
                    • + +
                    • + XML_UseParserAsHandlerArg +
                    • + +
                    • + XML_SetBase +
                    • + +
                    • + XML_GetBase *** 7585 LINES SKIPPED *** From nobody Sun Apr 5 06:57:33 2026 X-Original-To: dev-commits-src-branches@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 4fpNZ61JMTz6YV18 for ; Sun, 05 Apr 2026 06:57:34 +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 4fpNZ60hNpz3qpY for ; Sun, 05 Apr 2026 06:57:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775372254; 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=zwzaKztymOm2lwED5VWYY5sY/u+TcSRlelOekqQSxLU=; b=Ib5xiHhKzmgfkPZDJvsu9YLTErQFvBa1dEfQB1ZyNF02qWaN2Vm+iJE16eL+PebxApZ2g1 7VixZryrhq5tgYBFtYVbj2niD4Brc9BXkyciv+jxN7ftkKC+Hb9E5fcqXItgJ/6ZIym2QC 16OcY8rIz+OvPFS68PS8zJBjQGuGKnEs70XTmJxcp8FbYz5rsmPmXxfIohJo+dJqsnBUll e0lTNUOt3ihZgxQWDFJpDKlhGmyhpY2IzVPM7tlSObXAgu1Vyaf1TKLobObLe/b7xQbqsr geUCGylgOGXpG9Bdb8OjeV1bHr0zuemIL1HgOdWwnUPx/8WIDcrG74mU357E1Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775372254; a=rsa-sha256; cv=none; b=jurQQR/9Q/5ZOmgKQOt94apMJHwAxKNcBbHKMZ70KkYFVCn3LbfX5pRTBBKxZjrzOO/cnp D7HxtNPGh32slEyk0GL1sGo0zDLl4STsv/12wipuFaKivP5cZFmrLu4fEBdcIkaPtcJGEW iNRYOcCMRcUoM05YOIdpNalUSVfGknMaU17XI3Sl9QDBHcWOHVTceRz11fne7sO564kM+B 3wZlS7haASrqcyUyFAEaGqN0eGQLKXROENX+O7HMPHEacp5y1ehC+3Qrs+Vekc7yxjO0gQ h8CUynVW5z4q56MVubb0SwjY5PfKIzLm0xMdilYPlGt+DVzJ2nODWe+bVDeflQ== 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=1775372254; 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=zwzaKztymOm2lwED5VWYY5sY/u+TcSRlelOekqQSxLU=; b=sGUIv+Vq9NR9yRIJbbH7v3KbdotZ+/CZEdaBkxIRmyzpmlDdURc0L53GRFgt/uKpSXjt3I WRwKHsytVapzUsUbFC/lGWo3kdrlVYjh1xag4KlNTPu0k99/KK4fecHBVjCZdVL9AoOfzK Oe/ZrKxsnO5hwRWAje2ALz4ZoO3yv2R7BIP8rjYaiibAif50Anbt/jOJb7FJ5WVmOEie4M ZeIgmxYWR4myAFOTkfgQ8VdOauEt16vWpoMBQErZhpV2UpNe4qz04nUiUfFZtQv2sYQ1sQ yQOv/ilnm1e+YyjycrzKCyNz01mh8ok8bBzQBtj/utdMRpQoWDh/MRK3wz795g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fpNZ60HSFzvcQ for ; Sun, 05 Apr 2026 06:57:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 33c05 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 05 Apr 2026 06:57:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 75767bb21294 - stable/13 - contrib/expat: import expat 2.7.5 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 75767bb212946444a4ab7a5570a20d836ab964dd Auto-Submitted: auto-generated Date: Sun, 05 Apr 2026 06:57:33 +0000 Message-Id: <69d207dd.33c05.122b05c3@gitrepo.freebsd.org> The branch stable/13 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=75767bb212946444a4ab7a5570a20d836ab964dd commit 75767bb212946444a4ab7a5570a20d836ab964dd Author: Philip Paeps AuthorDate: 2026-04-02 00:12:18 +0000 Commit: Philip Paeps CommitDate: 2026-04-05 05:37:13 +0000 contrib/expat: import expat 2.7.5 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_5/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_4/expat/Changes Security: CVE-2026-32776 Security: CVE-2026-32777 Security: CVE-2026-32778 Security: CVE-2026-24515 Security: CVE-2026-25210 (cherry picked from commit ae04c7bbf065278687fa930e81a96767e9009d38) --- contrib/expat/Changes | 159 +- contrib/expat/Makefile.am | 3 +- contrib/expat/Makefile.in | 6 +- contrib/expat/README.md | 13 +- contrib/expat/configure.ac | 66 +- contrib/expat/doc/Makefile.in | 3 + contrib/expat/doc/reference.html | 5091 +++++++++++++++++------------ contrib/expat/doc/xmlwf.1 | 15 +- contrib/expat/doc/xmlwf.xml | 480 +-- contrib/expat/examples/Makefile.in | 3 + contrib/expat/expat_config.h.in | 3 - contrib/expat/fix-xmltest-log.sh | 5 +- contrib/expat/lib/Makefile.am | 6 +- contrib/expat/lib/Makefile.in | 21 +- contrib/expat/lib/expat.h | 4 +- contrib/expat/lib/expat_external.h | 5 +- contrib/expat/lib/internal.h | 2 +- contrib/expat/lib/libexpat.map.in | 119 + contrib/expat/lib/xmlparse.c | 173 +- contrib/expat/lib/xmlrole.c | 4 +- contrib/expat/lib/xmltok.c | 4 +- contrib/expat/lib/xmltok_ns.c | 7 +- contrib/expat/tests/Makefile.in | 3 + contrib/expat/tests/basic_tests.c | 74 +- contrib/expat/tests/benchmark/Makefile.in | 3 + contrib/expat/tests/handlers.c | 12 +- contrib/expat/tests/handlers.h | 5 +- contrib/expat/tests/misc_tests.c | 35 +- contrib/expat/tests/nsalloc_tests.c | 27 + contrib/expat/xmlwf/Makefile.in | 3 + contrib/expat/xmlwf/xmlfile.c | 4 +- contrib/expat/xmlwf/xmlwf.c | 13 +- contrib/expat/xmlwf/xmlwf_helpgen.py | 186 +- lib/libexpat/expat_config.h | 6 +- lib/libexpat/libbsdxml.3 | 4 +- 35 files changed, 4025 insertions(+), 2542 deletions(-) diff --git a/contrib/expat/Changes b/contrib/expat/Changes index 01e54b676416..2b3704a69b77 100644 --- a/contrib/expat/Changes +++ b/contrib/expat/Changes @@ -10,37 +10,160 @@ !! ~~~~~~~~~~~~ !! !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! +!! _______________________ !! +!! - teaming up on fixing the UNFIXED SECURITY ISSUES listed at: !! +!! """"""""""""""""""""""" !! +!! https://github.com/libexpat/libexpat/issues/1160 !! !! !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! -!! - helping CPython Expat bindings with supporting Expat's amplification !! -!! attack protection API (https://github.com/python/cpython/issues/90949): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! -!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! -!! - XML_SetAllocTrackerActivationThreshold !! -!! - XML_SetAllocTrackerMaximumAmplification !! -!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! -!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! -!! - XML_SetReparseDeferralEnabled !! +!! !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! -!! - smart ideas on fixing the Autotools CMake files generation issue !! -!! without breaking CI (needs discussion before pull requests), !! -!! - pushing migration from `int` to `size_t` further !! -!! including edge-cases test coverage (needs discussion before anything). !! !! !! !! For details, please reach out via e-mail to sebastian@pipping.org so we !! !! can schedule a voice call on the topic, in English or German. !! !! !! -!! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! +!! THANK YOU! Sebastian Pipping -- Berlin, 2026-03-17 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.5 Tue March 17 2026 + Security fixes: + #1158 CVE-2026-32776 -- Fix NULL function pointer dereference for + empty external parameter entities; it takes use of both + functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1161 #1162 CVE-2026-32777 -- Protect from XML_TOK_INSTANCE_START + infinite loop in function entityValueProcessor; it takes + use of both functions XML_ExternalEntityParserCreate and + XML_SetParamEntityParsing for an application to be + vulnerable. + #1163 CVE-2026-32778 -- Fix NULL dereference in function setContext + on retry after an earlier ouf-of-memory condition; it takes + use of function XML_ParserCreateNS or XML_ParserCreate_MM + for an application to be vulnerable. + #1160 Three more unfixed vulnerabilities left + + Other changes: + #1146 #1147 Autotools: Fix condition for symbol versioning check, in + particular when compiling with slibtool (not libtool) + #1156 Address Cppcheck >=2.20.0 warnings + #1153 tests: Make test_buffer_can_grow_to_max work for MinGW on + Ubuntu 24.04 + #1157 #1159 Version info bumped from 12:2:11 (libexpat*.so.1.11.2) + to 12:3:11 (libexpat*.so.1.11.3); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1148 CI: Fix FreeBSD and Solaris CI + #1149 CI: Bump to WASI SDK 30 + #1153 CI: Adapt to breaking changes with Ubuntu 22.04 + #1156 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Berkay Eren Ürün + Christian Ng + Fabio Scaccabarozzi + Francesco Bertolaccini + Mark Brand + Rhodri James + and + AddressSanitizer + Buttercup + OSS-Fuzz / ClusterFuzz + Trail of Bits + +Release 2.7.4 Sat January 31 2026 + Security fixes: + #1131 CVE-2026-24515 -- Function XML_ExternalEntityParserCreate + failed to copy the encoding handler data passed to + XML_SetUnknownEncodingHandler from the parent to the new + subparser. This can cause a NULL dereference (CWE-476) from + external entities that declare use of an unknown encoding. + The expected impact is denial of service. It takes use of + both functions XML_ExternalEntityParserCreate and + XML_SetUnknownEncodingHandler for an application to be + vulnerable. + #1075 CVE-2026-25210 -- Add missing check for integer overflow + related to buffer size determination in function doContent + + Bug fixes: + #1073 lib: Fix missing undoing of group size expansion in doProlog + failure cases + #1107 xmlwf: Fix a memory leak + #1104 WASI: Fix format specifiers for 32bit WASI SDK + + Other changes: + #1105 lib: Fix strict aliasing + #1106 lib: Leverage feature "flexible array member" of C99 + #1051 lib: Swap (size_t)(-1) for C99 equivalent SIZE_MAX + #1109 lib|xmlwf: Return NULL instead of 0 for pointers + #1068 lib|Windows: Clean up use of macro _MSC_EXTENSIONS with MSVC + #1112 lib: Remove unused import + #1110 xmlwf: Warn about XXE in --help output (and man page) + #1102 #1103 WASI: Stop using getpid + #1113 #1130 Autotools: Drop file expat.m4 that provided obsolete Autoconf + macro AM_WITH_EXPAT + #1123 Autotools: Limit -Wno-pedantic-ms-format to MinGW + #1129 #1134 .. + #1087 Autotools|macOS: Sync CMake templates with CMake 4.0 + #1139 #1140 Autotools|CMake: Introduce off-by-default symbol versioning + The related build system flags are: + - For Autotools, configure with --enable-symbol-versioning + - For CMake, configure with -DEXPAT_SYMBOL_VERSIONING=ON + Please double-check for consequences before activating + this inside distro packaging. Bug reports welcome! + #1117 Autotools|CMake: Remove libbsd support + #1105 Autotools|CMake: Stop using -fno-strict-aliasing, and use + -Wstrict-aliasing=3 instead + #1124 Autotools|CMake: Prefer command gsed (GNU sed) over sed + (e.g. for Solaris) inside fix-xmltest-log.sh + #1067 CMake: Detect and warn about unusable check_c_compiler_flag + #1137 CMake: Drop support for CMake <3.17 + #1138 CMake|Windows: Fix libexpat.def.cmake version comments + + #1086 #1110 docs: Add warning about external reference handlers and XXE + #1066 docs: Be explicit that parent parsers need to outlive + subparsers + #1089 .. + #1090 #1091 .. + #1092 #1093 .. + #1094 #1098 .. + #1115 #1116 docs: Misc non-content improvements to doc/reference.html + #1132 #1133 Version info bumped from 12:1:11 (libexpat*.so.1.11.1) + to 12:2:11 (libexpat*.so.1.11.2); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #1119 #1121 Document guidelines for contributing to Expat + #1120 Introduce a pull request template + #1074 CI: Stop using about-to-be-removed image "macos-13" + #1083 #1088 CI: Mitigate random Wine crashes + #1104 CI: Cover compilation with WASI SDK + #1116 CI: Enforce clean doc XML formatting + #1124 .. + #1135 #1136 CI: Cover Solaris 11.4 + #1125 CI: Extend CI coverage of FreeBSD + #1139 #1140 CI: Cover symbol versioning + #1114 xmlwf: Reformat helpgen code (using Black 25.12.0) + #1071 .gitignore: Add files CPackConfig.cmake and + CPackSourceConfig.cmake + + Special thanks to: + Alfonso Gregory + Bénédikt Tran + Gordon Messmer + Hanno Böck + Jakub Kulík + Matthew Fernandez + Neil Pang + Rosen Penev + and + Artiphishell Inc. + Release 2.7.3 Wed September 24 2025 Security fixes: #1046 #1048 Fix alignment of internal allocations for some non-amd64 diff --git a/contrib/expat/Makefile.am b/contrib/expat/Makefile.am index d612d432becb..72f2fca59d6f 100644 --- a/contrib/expat/Makefile.am +++ b/contrib/expat/Makefile.am @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -94,7 +94,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/Makefile.in b/contrib/expat/Makefile.in index b799591f2fc2..aa41b152525d 100644 --- a/contrib/expat/Makefile.in +++ b/contrib/expat/Makefile.in @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2025 Sebastian Pipping +# Copyright (c) 2017-2026 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -395,6 +395,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -497,7 +500,6 @@ EXTRA_DIST = \ $(_EXTRA_DIST_CMAKE) \ $(_EXTRA_DIST_WINDOWS) \ \ - conftools/expat.m4 \ conftools/get-version.sh \ \ fuzz/xml_lpm_fuzzer.cpp \ diff --git a/contrib/expat/README.md b/contrib/expat/README.md index c2f288ca1242..a67548be7fc9 100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@ -11,7 +11,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.7.3 +# Expat, Release 2.7.5 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by @@ -234,11 +234,6 @@ overrides the in-makefile set `DESTDIR`, because variable-setting priority is Note: This only applies to the Expat library itself, building UTF-16 versions of xmlwf and the tests is currently not supported. -When using Expat with a project using autoconf for configuration, you -can use the probing macro in `conftools/expat.m4` to determine how to -include Expat. See the comments at the top of that file for more -information. - A reference manual is available in the file `doc/reference.html` in this distribution. @@ -297,15 +292,15 @@ EXPAT_OSSFUZZ_BUILD:BOOL=OFF // Build a shared expat library EXPAT_SHARED_LIBS:BOOL=ON +// Define to provide symbol versioning for dependency generation +EXPAT_SYMBOL_VERSIONING:BOOL=OFF + // Treat all compiler warnings as errors EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF // Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_GETRANDOM:STRING=AUTO -// Utilize libbsd (for arc4random_buf) -EXPAT_WITH_LIBBSD:BOOL=OFF - // Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO ``` diff --git a/contrib/expat/configure.ac b/contrib/expat/configure.ac index 072fea41ee8c..6d028b5f6658 100644 --- a/contrib/expat/configure.ac +++ b/contrib/expat/configure.ac @@ -11,7 +11,7 @@ dnl Copyright (c) 2000 Clark Cooper dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. dnl Copyright (c) 2001-2003 Greg Stein dnl Copyright (c) 2006-2012 Karl Waclawek -dnl Copyright (c) 2016-2025 Sebastian Pipping +dnl Copyright (c) 2016-2026 Sebastian Pipping dnl Copyright (c) 2017 S. P. Zeidler dnl Copyright (c) 2017 Stephen Groat dnl Copyright (c) 2017-2020 Joe Orton @@ -25,6 +25,10 @@ dnl Copyright (c) 2020 Jeffrey Walton dnl Copyright (c) 2024 Ferenc Géczi dnl Copyright (c) 2024 Dag-Erling Smørgrav dnl Copyright (c) 2025 Matthew Fernandez +dnl Copyright (c) 2025 Alfonso Gregory +dnl Copyright (c) 2026 Rosen Penev +dnl Copyright (c) 2026 Gordon Messmer +dnl Copyright (c) 2026 Fabio Scaccabarozzi dnl Licensed under the MIT license: dnl dnl Permission is hereby granted, free of charge, to any person obtaining @@ -86,7 +90,7 @@ dnl If the API changes incompatibly set LIBAGE back to 0 dnl LIBCURRENT=12 # sync -LIBREVISION=1 # with +LIBREVISION=3 # with LIBAGE=11 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) @@ -117,10 +121,12 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3 -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [AM_CFLAGS]) AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [AM_CFLAGS]) - AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wno-pedantic-ms-format -Wmisleading-indentation], [AM_CFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [AM_CFLAGS]) + AS_CASE(["${host_os}"], [mingw*], [AX_APPEND_COMPILE_FLAGS([-Wno-pedantic-ms-format], [AM_CFLAGS])]) + ]) AC_LANG_PUSH([C++]) AC_PROG_CXX @@ -131,11 +137,23 @@ AS_IF([test "$GCC" = yes], dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CXXFLAGS]) - AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [AM_CXXFLAGS])]) + AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing=3], [AM_CXXFLAGS])]) AC_LANG_POP([C++]) AS_IF([test "$GCC" = yes], - [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[AM_LDFLAGS])]) + [AX_APPEND_LINK_FLAGS([-Wstrict-aliasing=3],[AM_LDFLAGS])]) + +AC_ARG_ENABLE([symbol-versioning], + [AS_HELP_STRING([--enable-symbol-versioning], + [provide symbol versioning for dependency generation @<:@default=no@:>@])], + [enable_symbol_versioning=$enableval], + [enable_symbol_versioning=no]) +AS_IF([test "x$enable_symbol_versioning" != xno], + [VSCRIPT_LDFLAGS="-Wl,--version-script" + AC_SUBST([VSCRIPT_LDFLAGS]) + ]) +AM_CONDITIONAL([HAVE_VSCRIPT], + [test "x$enable_symbol_versioning" != xno]) dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312) AS_CASE(["$LD"],[*clang*], @@ -199,23 +217,9 @@ AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP LT_LIB_M -AC_ARG_WITH([libbsd], - [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], - [], - [with_libbsd=no]) -AS_IF([test "x${with_libbsd}" != xno], - [AC_CHECK_LIB([bsd], - [arc4random_buf], - [], - [AS_IF([test "x${with_libbsd}" = xyes], - [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])]) -AC_MSG_CHECKING([for arc4random_buf (BSD, libbsd or glibc 2.36+)]) +AC_MSG_CHECKING([for arc4random_buf (BSD or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include /* for arc4random_buf on BSD */ - #endif + #include int main(void) { char dummy[[123]]; // double brackets for m4 arc4random_buf(dummy, 0U); @@ -226,13 +230,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([ AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) - AC_MSG_CHECKING([for arc4random (BSD, macOS, libbsd or glibc 2.36+)]) + AC_MSG_CHECKING([for arc4random (BSD, macOS, or glibc 2.36+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ - #if defined(HAVE_LIBBSD) - # include - #else - # include - #endif + #include int main(void) { arc4random(); return 0; @@ -381,9 +381,14 @@ dnl NOTE: The *_TRUE variables read here are Automake conditionals dnl that are either set to "" when enabled or to "#" when disabled dnl (because they are used to dynamically comment out certain things) AS_IF([test "x${enable_xml_attr_info}" = xyes], - [EXPAT_ATTR_INFO=ON], - [EXPAT_ATTR_INFO=OFF]) + [EXPAT_ATTR_INFO=ON + _EXPAT_COMMENT_ATTR_INFO=" "], + [EXPAT_ATTR_INFO=OFF + _EXPAT_COMMENT_ATTR_INFO="#"]) +AC_SUBST([_EXPAT_COMMENT_ATTR_INFO]) EXPAT_DTD=ON +_EXPAT_COMMENT_DTD_OR_GE=" " +AC_SUBST([_EXPAT_COMMENT_DTD_OR_GE]) AS_IF([test "x${_INTERNAL_LARGE_SIZE_TRUE}" = x], [EXPAT_LARGE_SIZE=ON], [EXPAT_LARGE_SIZE=OFF]) @@ -461,6 +466,7 @@ AC_CONFIG_FILES([Makefile] [doc/Makefile] [examples/Makefile] [lib/Makefile] + [lib/libexpat.map] [tests/Makefile] [tests/benchmark/Makefile] [xmlwf/Makefile]) diff --git a/contrib/expat/doc/Makefile.in b/contrib/expat/doc/Makefile.in index 13be5107f89b..0bda758420f0 100644 --- a/contrib/expat/doc/Makefile.in +++ b/contrib/expat/doc/Makefile.in @@ -293,6 +293,9 @@ SO_MINOR = @SO_MINOR@ SO_PATCH = @SO_PATCH@ STRIP = @STRIP@ VERSION = @VERSION@ +VSCRIPT_LDFLAGS = @VSCRIPT_LDFLAGS@ +_EXPAT_COMMENT_ATTR_INFO = @_EXPAT_COMMENT_ATTR_INFO@ +_EXPAT_COMMENT_DTD_OR_GE = @_EXPAT_COMMENT_DTD_OR_GE@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff --git a/contrib/expat/doc/reference.html b/contrib/expat/doc/reference.html index d2dded499435..5faa8d6515af 100644 --- a/contrib/expat/doc/reference.html +++ b/contrib/expat/doc/reference.html @@ -1,9 +1,9 @@ - + - - - - Expat XML Parser - - - - - - -
                      -

                      - The Expat XML Parser - Release 2.7.3 -

                      -
                      -
                      - -

                      Expat is a library, written in C, for parsing XML documents. It's -the underlying XML parser for the open source Mozilla project, Perl's -XML::Parser, Python's xml.parsers.expat, and -other open-source XML parsers.

                      - -

                      This library is the creation of James Clark, who's also given us -groff (an nroff look-alike), Jade (an implementation of ISO's DSSSL -stylesheet language for SGML), XP (a Java XML parser package), XT (a -Java XSL engine). James was also the technical lead on the XML -Working Group at W3C that produced the XML specification.

                      - -

                      This is free software, licensed under the MIT/X Consortium license. You may download it -from the Expat home page. -

                      - -

                      The bulk of this document was originally commissioned as an article -by XML.com. They graciously allowed -Clark Cooper to retain copyright and to distribute it with Expat. -This version has been substantially extended to include documentation -on features which have been added since the original article was -published, and additional information on using the original -interface.

                      - -
                      -

                      Table of Contents

                      -