From nobody Mon Mar 2 00:51: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 4fPL381zvyz6Ty3f for ; Mon, 02 Mar 2026 00:51: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 4fPL380sdvz3Jcc for ; Mon, 02 Mar 2026 00:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772412676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=13gFq5rcdLKRRqLEN0g0MZ/9O0NCqwbxpGDKie4W2mc=; b=C8xX7WOpr0Jf6BCcY/n+MAZeERQJ+sod+DqVKEcxPHWmTB5hji1soALlEZbopBC9ifR3TC E5/VH+nfD+ffncX8uioIYpOnzNqMTitf6MbijdnEnpvkA/m5Al8QIPBdMfTnRxH2TfBDc5 H862uABQuCIzdn2Det9ErXL+vjjHVJvsCw7nu+343ffOWHtIvO+hSG5DQIjo17okfIyufA 0IZxMi5XX4m7/DaDhtYJEdHrekGkWmsPzQlKsX8VoytGlfeZyjTGcR9yXpSKIBZ3CvRyCF JT9WOh/Yo4SftHwfBwhJRGi5HiO5dRklwIAXplWZqeHk4W98soY9pzcKMdoaww== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772412676; a=rsa-sha256; cv=none; b=HqOH2tL+8YDQbdW+DZet9H/nhxv+rELE6eY7CgjawXZsmdbBFQ1Y+FPqukcxooxT6yTSbF D9de6FYs+q1TdKsOMWA9XlaHWuOgpW/Y1aPlHF9FdF58Zhns58FsoJs5ornTv44kaIgGHV Mnu647+dT5Hlbnw3/hR9Qg3voHNw1zL3Zmd5dP9+zBXgibCsCrJVCLtKFWtj+bV9dJnQXD T5pRcBhvIhFTJhCCzPJYMz+zgOAdITjFazYVEdkPtB8YfIp+QjT8FAqdFvdbZiSaT2N50h hcxPeidRrzKefCgqOdMQMo9ANXamSxI9SrCkwuZoZommxiH5lNPEXPldnzrlpA== 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=1772412676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=13gFq5rcdLKRRqLEN0g0MZ/9O0NCqwbxpGDKie4W2mc=; b=rXxLKiH6qYaDfKkp1S4CIEZkvUFJpvyXX16Zx78sl55rfz/LsgtbpvQcw2U52cqvXbhF9E 7tX9N7YmnU1xcB9vnWlGoF0Fkp6ovwnkylo5HiQ8P18oieNeJuBAiP9DGG0aZuG+lEW+p6 buX4XHTFXMwPp3a45O8hdmmMp7h3TSLfQ3/X3H0ovPOVMKfdahx+O07/ymj+kFRPNT9H0O QYVDZaSohs9VJD6BeG3ukKoXzc0ezDtNyJbKtIyiEY36RGBvvFRd02O8jRi1JLmtFU9ERr N31yJxzyQ53ZSk7PN6MKJ1XwcTwi/vN/9CcBI/UhUJ/zDtkVMN6jBCs37Khkyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPL380T6jz1C5x for ; Mon, 02 Mar 2026 00:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46857 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 00:51:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Chuck Tuffli Subject: git: e8b3ca9a1d02 - stable/15 - vmm: Initialize AMD IOMMU command buffers 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: chuck X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e8b3ca9a1d02298b379fb034348b446bcaaf0974 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 00:51:16 +0000 Message-Id: <69a4df04.46857.68bf74ba@gitrepo.freebsd.org> The branch stable/15 has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=e8b3ca9a1d02298b379fb034348b446bcaaf0974 commit e8b3ca9a1d02298b379fb034348b446bcaaf0974 Author: Chuck Tuffli AuthorDate: 2025-11-12 15:39:29 +0000 Commit: Chuck Tuffli CommitDate: 2026-03-01 15:39:10 +0000 vmm: Initialize AMD IOMMU command buffers The driver communicates with the AMD IOMMU by writing to the tail of a fixed length command ring buffer. After issuing cmd_max commands, the tail pointer wraps back to the beginning of the ring buffer. Now, each command buffer entry will contain content from previous commands which may set bits in fields marked as Reserved for the current command. In some cases, the hardware will return an ILLEGAL_COMMAND_ERROR event when this occurs. Fix is to memset the command buffer prior to use. PR: 270966 (cherry picked from commit 6e68cd8666e14db265f00e9ee59b670ca2964e0d) --- sys/amd64/vmm/amd/amdvi_hw.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 831c31277570..4dd0339654a9 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -274,6 +274,7 @@ amdvi_get_cmd_tail(struct amdvi_softc *softc) tail = (struct amdvi_cmd *)((uint8_t *)softc->cmd + ctrl->cmd_tail); + memset(tail, 0, sizeof(*tail)); return (tail); } @@ -316,7 +317,6 @@ amdvi_cmd_cmp(struct amdvi_softc *softc, const uint64_t data) uint64_t pa; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); pa = vtophys(&softc->cmp_data); cmd->opcode = AMDVI_CMP_WAIT_OPCODE; @@ -334,7 +334,6 @@ amdvi_cmd_inv_dte(struct amdvi_softc *softc, uint16_t devid) struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_DTE_OPCODE; cmd->word0 = devid; amdvi_update_cmd_tail(softc); @@ -352,7 +351,6 @@ amdvi_cmd_inv_iommu_pages(struct amdvi_softc *softc, uint16_t domain_id, struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_PAGE_OPCODE; cmd->word1 = domain_id; @@ -383,7 +381,6 @@ amdvi_cmd_inv_iotlb(struct amdvi_softc *softc, uint16_t devid) qlen, RID2PCI_STR(devid)); } cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); #ifdef AMDVI_DEBUG_CMD device_printf(softc->dev, "Invalidate IOTLB devID 0x%x" @@ -406,7 +403,6 @@ amdvi_cmd_inv_intr_map(struct amdvi_softc *softc, struct amdvi_cmd *cmd; cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); cmd->opcode = AMDVI_INVD_INTR_OPCODE; cmd->word0 = devid; amdvi_update_cmd_tail(softc); @@ -420,10 +416,6 @@ amdvi_cmd_inv_intr_map(struct amdvi_softc *softc, static void amdvi_inv_domain(struct amdvi_softc *softc, uint16_t domain_id) { - struct amdvi_cmd *cmd __diagused; - - cmd = amdvi_get_cmd_tail(softc); - KASSERT(cmd != NULL, ("Cmd is NULL")); /* * See section 3.3.3 of IOMMU spec rev 2.0, software note From nobody Mon Mar 2 00:51: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 4fPL393GKTz6Txrt for ; Mon, 02 Mar 2026 00:51: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 4fPL391Z0wz3JZg for ; Mon, 02 Mar 2026 00:51:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772412677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+7fvrAtKuWaqbC1JJXqMOGJoNtQWhvFEDGSMSi6eCmo=; b=MI17K7qZkLDjdDtvv0an1+ZefVwSR92C71fdQgiVrBubCLFrWaWP5+/ZSjNMa5XinPqQET ZAAcSOwZ5so2iP4V7jC9PpwtlAV3vH62pMWq2GwkL3RrfMW1FBjsVcKlesjH/pqXAuEjbo g+xin5HuShy+Xh5vIAk1on/cRa4wHWhqFdkI1OPxzZgU/2a0Z+E5vrQbY1RinocIqXtlGl Auw14t4In7aPRawCPUBsskE3y9C2OUwJcB8kmXUKuMGH+M4USLrk+E1OrdgQ0VSA18GE4a giQzL0X2vRdJBThkbo4i+XYXMfArztIEQOPmw4p/nFqkErbopokt/Onim5jMfA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772412677; a=rsa-sha256; cv=none; b=dqqxuqG8t/+rNdL5pKiYej1OSaf0QU5JXvV13xiANVcIBk9UY1PEVB6uKXRorWMR2cDT3I SnYp5tWFxeAtUo8gKAKEi2YwhN2AIHyBGMMI25TwnqawxK3ozQiEikzOGbL4TjtMF/imvu z14nJ8fZTLIq2X6uItuLBTZA/6FiK2ElVJqCkjS1z5qP5WxssGNAjw7vfZfD+rZ72cI/gQ Mk59iQbpqAo+1/NbIHuRcc9UDIUL7K4hn8CGfkmgq2pfQWHo8Eoq4TcyUyva2WtKFDNnve zNsDaypEBSCTRnao/GXIEV3HfopOgN8KkWDi1i+Zv0GRZ6e2CrSlC0hcHN25sg== 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=1772412677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+7fvrAtKuWaqbC1JJXqMOGJoNtQWhvFEDGSMSi6eCmo=; b=Iufg7cp+7SN9Q5Z7OK29UQVuoDH6uTPIsrjpuomr//4NadFTZVH8MtMDP9BwrNXz8Lr12M mHXFKuZLlN3gzv/443psidkaHlpx3ReTrUs92X2kBQiG8EmaCIsDs/ePfBfZHLdqQwrksn qvrIay3pMb6ovYUWR09JOMAD5EcaPh4AUNhFLhPjYaQy49VHe7L1dx3wrpUNTZsyBHvq0S RZhOUd0hlUlUXdVf1MV0xPp+KtjKgtnVkrlYcSpKyR1EUDOV6NOoTebWrzc7eJAxx6SojY l5xB37fkDuGOM4uIUwdWID2/KNtiw7sBTunnhOgyO3ciTayijha8n5DqxvwLbg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPL3916gDz1BvB for ; Mon, 02 Mar 2026 00:51:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 45946 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 00:51:17 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Chuck Tuffli Subject: git: d329a91dc3e9 - stable/15 - bhyve: fix USB mouse requests 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: chuck X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d329a91dc3e9c21044d6d25b8e07e0094fc0fbc5 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 00:51:17 +0000 Message-Id: <69a4df05.45946.2ad9de6b@gitrepo.freebsd.org> The branch stable/15 has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=d329a91dc3e9c21044d6d25b8e07e0094fc0fbc5 commit d329a91dc3e9c21044d6d25b8e07e0094fc0fbc5 Author: Chuck Tuffli AuthorDate: 2026-02-19 22:27:49 +0000 Commit: Chuck Tuffli CommitDate: 2026-03-01 15:42:26 +0000 bhyve: fix USB mouse requests USB HCI requests may not include HCI transfer block structures (i.e., xfer->data[] == NULL), but in several places, the USB mouse emulation code assumes one will exist. This can lead to a NULL pointer dereference and a SEGV in the bhyve process as observed via experiments with an Ubuntu guest and PyUSB code. Note that many of the cases processing other request types already checked for data == NULL. While in the neighborhood, fix a typo in the loop iterating over the usb_data_xfer_block array which used the wrong variable to check for valid data (idx vs. i). (cherry picked from commit 10d5404adb11773969a600428d1abeb4308d98aa) --- usr.sbin/bhyve/usb_mouse.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/usr.sbin/bhyve/usb_mouse.c b/usr.sbin/bhyve/usb_mouse.c index 82b1159d5f61..6c0b051c67f2 100644 --- a/usr.sbin/bhyve/usb_mouse.c +++ b/usr.sbin/bhyve/usb_mouse.c @@ -343,7 +343,7 @@ umouse_request(void *scarg, struct usb_data_xfer *xfer) idx = xfer->head; for (i = 0; i < xfer->ndata; i++) { xfer->data[idx].bdone = 0; - if (data == NULL && USB_DATA_OK(xfer,i)) { + if (data == NULL && USB_DATA_OK(xfer, idx)) { data = &xfer->data[idx]; udata = data->buf; } @@ -529,7 +529,9 @@ umouse_request(void *scarg, struct usb_data_xfer *xfer) case UREQ(UR_GET_STATUS, UT_READ_DEVICE): DPRINTF(("umouse: (UR_GET_STATUS, UT_READ_DEVICE)")); - if (data != NULL && len > 1) { + if (data == NULL) + break; + if (len > 1) { if (sc->hid.feature == UF_DEVICE_REMOTE_WAKEUP) USETW(udata, UDS_REMOTE_WAKEUP); else @@ -544,7 +546,9 @@ umouse_request(void *scarg, struct usb_data_xfer *xfer) case UREQ(UR_GET_STATUS, UT_READ_INTERFACE): case UREQ(UR_GET_STATUS, UT_READ_ENDPOINT): DPRINTF(("umouse: (UR_GET_STATUS, UT_READ_INTERFACE)")); - if (data != NULL && len > 1) { + if (data == NULL) + break; + if (len > 1) { USETW(udata, 0); data->blen = len - 2; data->bdone += 2; @@ -629,7 +633,9 @@ umouse_request(void *scarg, struct usb_data_xfer *xfer) break; case UREQ(UMOUSE_GET_IDLE, UT_READ_CLASS_INTERFACE): - if (data != NULL && len > 0) { + if (data == NULL) + break; + if (len > 0) { *udata = sc->hid.idle; data->blen = len - 1; data->bdone += 1; @@ -638,7 +644,9 @@ umouse_request(void *scarg, struct usb_data_xfer *xfer) break; case UREQ(UMOUSE_GET_PROTOCOL, UT_READ_CLASS_INTERFACE): - if (data != NULL && len > 0) { + if (data == NULL) + break; + if (len > 0) { *udata = sc->hid.protocol; data->blen = len - 1; data->bdone += 1; From nobody Mon Mar 2 12:49: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 4fPdzv2vsFz6TNVN for ; Mon, 02 Mar 2026 12:49: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 4fPdzv29mHz3QZM for ; Mon, 02 Mar 2026 12:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772455771; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+NEk/pyEERCeh9r2KvFQvTSvmbgTw8lbd5+IETjYgI8=; b=UbVrJu5ovYInvrvkppxvBYGH0400jI3yV+uQHqvNCiTKmIxCq1Fgoj5VLTj25ugYKduoxg yD2qleXhimSWvs6NgqPqiP80hKc/cyTlwIm+8WqCXLkZ4GXSrhC9EuPX6PE/ftckaFK6Lj eNEBFPoz3HWfbN6qLMMolg39i86c0D9WcaLIJT169Iv7rkfOZQlUYm/p6R2RWt94l4Lf5Y O6wDxa6/QSGTYJxr6CaqUBC/EChl5M1mhpe3QB0GTBifuU5xwZukmvuasdoSR2bKgNBmLp 95Pub6WIcR+L9Rxe8T4UZEkUhMiNXRVb5Oky8EH1orraesycTEI85yn5rQpKhg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772455771; a=rsa-sha256; cv=none; b=qWPVOSDj4CQND437rb5vH6M8zWmm6CqnAAvtS803maSs9wqHBPjRt/s9x6VUf7Wn0EVZO2 wLNDSEctZUUPdIXuzHCjOUkpccME49rNfaWEFEtEc/bNobvETOK2jhdpOLsgUdi3Mekcnf tDHzOQSTlH8E4GrQtY5S/nH4GJxf64YZGDyIn1Wx1mCT26BwZUKr437AMSo16UGuqI2U+i ZicFjs0eAGQNA7T0aJDQsDXKwXu22jFL9Motk13iudps0F1RFi5pm0gAKeo5QmE9E8V41/ 46xPM86/fQ81Lo1DMkAfKPAra62SAduFTmooARO0aWTgWI9QW9SwW/pFRIMl6w== 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=1772455771; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+NEk/pyEERCeh9r2KvFQvTSvmbgTw8lbd5+IETjYgI8=; b=YLRnGANmqkW0gV4AiYZNBjaWWii2kj9s15chgEEZryhLctpzpxlF/8B567bL0W7xwuQUyE zi2pMEqzs/bT2Day5QX2LxHEv1FZSc000YLm72/GuDyXuCw0hFetmAJxrpU9GuF3OjDnsa gmJqliEOITpxiCFdhaziN3wRjLhL0WdzDriKCq7yPfCHelkP2BHNMzyRGiGpT7A3dS2WF+ wQ2ID/uqo2BPcPiC/R0pot2RySnlP5jV5KwSLJIFILtuPxb0V/Cq8T45axnNelLrc/PMPu mBUiFDs5QdDaWG0hkb2XPQsoHccTdBdSEBj/S6EA/WjJ9DXLthidwUYuJfuQIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPdzv1bz4zbT1 for ; Mon, 02 Mar 2026 12:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19d01 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 12:49:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: f35cb87a56b0 - stable/15 - libusb: dequeue next transfer on completion to prevent stalls 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: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f35cb87a56b0fb21dc19546135bd68315ce17714 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 12:49:31 +0000 Message-Id: <69a5875b.19d01.3994b2e4@gitrepo.freebsd.org> The branch stable/15 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=f35cb87a56b0fb21dc19546135bd68315ce17714 commit f35cb87a56b0fb21dc19546135bd68315ce17714 Author: Baptiste Daroussin AuthorDate: 2026-02-15 18:07:07 +0000 Commit: Baptiste Daroussin CommitDate: 2026-03-02 12:49:22 +0000 libusb: dequeue next transfer on completion to prevent stalls The transfer proxy callbacks (bulk/interrupt, control, isochronous) only called libusb10_submit_transfer_sub() in the START path to pipeline the second kernel transfer slot. On completion or error, no attempt was made to dequeue the next pending transfer from tr_head onto the now-free slot. When more than two async transfers were submitted on the same endpoint, the third (and subsequent) transfers would remain stuck on tr_head indefinitely, since no completion ever triggered their submission. This caused a protocol-level deadlock in applications like adb that submit header + payload + zero-length terminator as three separate bulk transfers in sequence. Fix by calling libusb10_submit_transfer_sub() after every libusb10_complete_transfer() in all three proxy callbacks. MFC After: 2 weeks Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D55289 (cherry picked from commit 38c18332642500fdfe075a82f88e033f6673a53f) --- lib/libusb/libusb10.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/libusb/libusb10.c b/lib/libusb/libusb10.c index e226def0b7b6..b3af017ab980 100644 --- a/lib/libusb/libusb10.c +++ b/lib/libusb/libusb10.c @@ -1259,6 +1259,9 @@ libusb10_isoc_proxy(struct libusb20_transfer *pxfer) libusb20_tr_get_length(pxfer, i); } libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; case LIBUSB20_TRANSFER_START: /* setup length(s) */ @@ -1281,6 +1284,9 @@ libusb10_isoc_proxy(struct libusb20_transfer *pxfer) break; default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } @@ -1322,11 +1328,15 @@ libusb10_bulk_intr_proxy(struct libusb20_transfer *pxfer) } else { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); } + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* check for end of data */ if (sxfer->rem_len == 0) { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* FALLTHROUGH */ @@ -1353,6 +1363,8 @@ libusb10_bulk_intr_proxy(struct libusb20_transfer *pxfer) default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } @@ -1397,11 +1409,15 @@ libusb10_ctrl_proxy(struct libusb20_transfer *pxfer) } else { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); } + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* check for end of data */ if (sxfer->rem_len == 0) { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* FALLTHROUGH */ @@ -1442,6 +1458,8 @@ libusb10_ctrl_proxy(struct libusb20_transfer *pxfer) default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } From nobody Mon Mar 2 12:49: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 4fPf004Tfxz6TNQM for ; Mon, 02 Mar 2026 12:49: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 4fPf003K7lz3Qk7 for ; Mon, 02 Mar 2026 12:49:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772455776; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yyKZp0xJoYsO1CAr/pNxnzxeUBNlsxIAPGv/5RffEok=; b=nCr+zgQyx00coYEXZAGzmFzaOxNeFTQOLdkZCKWX/mvqo7Sych650/a65PQp+S+h2jQy+q wZ312TYyFTmsm2+HCKk9ZcjZROcZMDWi13yOz2jnVC6R9Hz+zEdte+/Q2i+7aZtkSrDRzc 4w1qs2wa9vWK4DU+LiG+IZ5HTCEV8jeCFThkw6hJxQzGtrPtDU9pt0627kROkYeakzyACA 9wZGNhErQ88fDetDlLdv3rJNdaUDGYKo08+RwwuZqUn2H2n72sqRjhNVDsSyyU5WL6WCLh k1mqN2wEwfuFwNBY4kG7AiQYOHzPGxrmnUJtNBKPn++ZliBDIHlFcLiUzp+ygg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772455776; a=rsa-sha256; cv=none; b=pd+WOj2kzRD5GI3AUxROtkK6QKT6pDx0z53bjDseJ22UqK268RmOHs9orq9VqY2CEIE7+6 w4XdxHFmkur9I2tYOGForFszKGIU0iRVRrsRWrNJeLHkuMzyPxO9zW+uTj/YKNqff2xZr+ JSWZ6z5kvBPTVdchqXeahv9urY9oEF6F15fNtdBlUPI78EnPg00sEu5/eYc8uwF9rEfl4M odh+4jebCn6NHmLervnWXwCsVadnTnQhk/bxZvi1S1/lhXAG+Js+alAqKz2NNnm1ne7/7o L/tmARBhRvuAblf2gkQpYytl/B+ItbNH7ty6gk00YT6sO6HjwByGaPqk1YLoUg== 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=1772455776; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yyKZp0xJoYsO1CAr/pNxnzxeUBNlsxIAPGv/5RffEok=; b=kWJTkRnAW5Lxsr+QhZN3XgXIVZ456OxqgzIu8R3DAGFybUsdxLV0W37Thg67VyRoAv2M7s arTAB8fqrtP5MsYmJhZthebbNU1WIWcItwZvB6ms1isJt9sC+u23zRoxh0b0nv4/2yE6q7 3Sm1CKr4baZz0mV61aNR25bMOwVpUS1g0ecvwF/FBI6BvaVIDWnt7EpWdMM5y1FqIdybxc cB93kqbFrmAfuABYpFXB9DVK9ifHP6mft4xjrRgyOhVTpkrHLsVgLcGVCqKkGCOqc2s47o 9JvWVIkZdIo+MWbCe9g/d618rygxbqub1EnsEhhtGLHTeU0uGkNvGER4WMpC2Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPf002jhGzc2p for ; Mon, 02 Mar 2026 12:49:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19510 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 12:49:36 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: e0e1e9e08309 - stable/14 - libusb: dequeue next transfer on completion to prevent stalls 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: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e0e1e9e083097383bcebf0b6cf65af46653e2f73 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 12:49:36 +0000 Message-Id: <69a58760.19510.64fba154@gitrepo.freebsd.org> The branch stable/14 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=e0e1e9e083097383bcebf0b6cf65af46653e2f73 commit e0e1e9e083097383bcebf0b6cf65af46653e2f73 Author: Baptiste Daroussin AuthorDate: 2026-02-15 18:07:07 +0000 Commit: Baptiste Daroussin CommitDate: 2026-03-02 12:49:01 +0000 libusb: dequeue next transfer on completion to prevent stalls The transfer proxy callbacks (bulk/interrupt, control, isochronous) only called libusb10_submit_transfer_sub() in the START path to pipeline the second kernel transfer slot. On completion or error, no attempt was made to dequeue the next pending transfer from tr_head onto the now-free slot. When more than two async transfers were submitted on the same endpoint, the third (and subsequent) transfers would remain stuck on tr_head indefinitely, since no completion ever triggered their submission. This caused a protocol-level deadlock in applications like adb that submit header + payload + zero-length terminator as three separate bulk transfers in sequence. Fix by calling libusb10_submit_transfer_sub() after every libusb10_complete_transfer() in all three proxy callbacks. MFC After: 2 weeks Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D55289 (cherry picked from commit 38c18332642500fdfe075a82f88e033f6673a53f) --- lib/libusb/libusb10.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/libusb/libusb10.c b/lib/libusb/libusb10.c index f8912b5c47cb..2d55a2852c67 100644 --- a/lib/libusb/libusb10.c +++ b/lib/libusb/libusb10.c @@ -1171,6 +1171,9 @@ libusb10_isoc_proxy(struct libusb20_transfer *pxfer) libusb20_tr_get_length(pxfer, i); } libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; case LIBUSB20_TRANSFER_START: /* setup length(s) */ @@ -1193,6 +1196,9 @@ libusb10_isoc_proxy(struct libusb20_transfer *pxfer) break; default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } @@ -1234,11 +1240,15 @@ libusb10_bulk_intr_proxy(struct libusb20_transfer *pxfer) } else { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); } + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* check for end of data */ if (sxfer->rem_len == 0) { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* FALLTHROUGH */ @@ -1265,6 +1275,8 @@ libusb10_bulk_intr_proxy(struct libusb20_transfer *pxfer) default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } @@ -1309,11 +1321,15 @@ libusb10_ctrl_proxy(struct libusb20_transfer *pxfer) } else { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); } + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* check for end of data */ if (sxfer->rem_len == 0) { libusb10_complete_transfer(pxfer, sxfer, LIBUSB_TRANSFER_COMPLETED); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } /* FALLTHROUGH */ @@ -1354,6 +1370,8 @@ libusb10_ctrl_proxy(struct libusb20_transfer *pxfer) default: libusb10_complete_transfer(pxfer, sxfer, libusb10_convert_error(status)); + /* start next queued transfer, if any */ + libusb10_submit_transfer_sub(libusb20_tr_get_priv_sc0(pxfer), uxfer->endpoint); break; } } From nobody Mon Mar 2 14:46: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 4fPhZY5m0Rz6Smdr for ; Mon, 02 Mar 2026 14:46: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 4fPhZY5KF6z3c32 for ; Mon, 02 Mar 2026 14:46:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772462773; 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=HhfvRiNj77wfahejmQCgWWgrXFVhnLXz/ALPkNKhxG8=; b=oM3GkgZpAi299Rikgq3ckNAjbQ5KMebY5GfOeks2J04eus81GybMoEELDE5eU2L9GH7f9Z 5Dr0DFT8znG65h8QBLDZhW/2VJPSVwLTOaN1bLjWSfo9vnatCk4HxWbtHBuFEOmhiFZEpo fzd4fxmGV/uOU/OdP68cEiajUPof9Pq2SCHjarH6jb/eR+oecQUwbJqKW0WdZI8gvCPVjm cugiIFrKzi1WnkjUO4cTbTi8corIbUWrHxb4z382/vk+Y28GvjFzUKjefYBABINpP7xasV kofUeZ235x6IWBqMtC8kszzewY/zn6wZ7mLRD49rlelOq2Uzm3ySOTKsw5C4Ww== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772462773; a=rsa-sha256; cv=none; b=r1Aj9OVEdXTKOeA6rTuABbK5NmlQlLw0lI4YM3opju8Sk0YdbQsrJipmIOSqR8YEW3gQJe L9Hun2M2tnbXvtN//75IMIZxgOJo2ZqD7Gw1B9c6VHpnpOLhajNgoMnivPPLuVmAPGl/Dm IMZ9QFTMGM+S42p3jvAjnwr51c4u/AnOqmt1329FZ7B0meSkxuEhff8eV4sywSrnA1je4l rBNgUE0g1o64/JWwtC0SlAyElGNjDxp7/x5mR+7xe2cgEgPSjj0BTbhS/uJqh2eIRAEwrW Sr3dBzITLbX/qtlaSRyoxbZM6mCN+qXRK6BB4JBIZxYFoCvkBmmJAA5s+JFidw== 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=1772462773; 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=HhfvRiNj77wfahejmQCgWWgrXFVhnLXz/ALPkNKhxG8=; b=vF+bG6HHkDikM6XcQ0Zo2ywfyb2gsherxRgpc9IUXUgvnJHRYPq6+68PcWOkHTCQSu1Vwx gpEATi+5NePQTkZHCIg+PgkqjSoYOVnbrCTI6hgH5UuR2W1/e2/zmi3hjem3x8ZiAVowLe uCJBV+YIcNn8aR4X+z8gvneqlWQIJwOHN8s3wuWlTatTQQKiYe5nyXq5lUgd6Mqo5hohjD wgS8olBj4CRpfWOKz543AONwHaMD8LzugMONtTHcCkfqr8giPGzpfZopJ/xNtVYZKYVuMl 4r1I6VVB/4JKRni9BfYCwF/PYlfFtUKgrQhkhKZ87Li4/+G5zBBGIK22M3KQpQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPhZY4dWxzgK4 for ; Mon, 02 Mar 2026 14:46:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25ff4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 14:46:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Quent=?utf-8?Q?in Th=C3=A9?=bault From: Christos Margiolis Subject: git: 960ef72179bd - stable/15 - virtual_oss: use hw.snd.default_unit by default 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: 960ef72179bd11aad0fe5ec794317030913685a8 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 14:46:13 +0000 Message-Id: <69a5a2b5.25ff4.4f617e7@gitrepo.freebsd.org> The branch stable/15 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=960ef72179bd11aad0fe5ec794317030913685a8 commit 960ef72179bd11aad0fe5ec794317030913685a8 Author: Quentin Thébault AuthorDate: 2026-02-23 12:33:33 +0000 Commit: Christos Margiolis CommitDate: 2026-03-02 14:46:00 +0000 virtual_oss: use hw.snd.default_unit by default Reviewed by: christos MFC after: 1 week Signed-off-by: Quentin Thébault Sponsored by: Defenso PR: 293130 Pull Request: https://github.com/freebsd/freebsd-src/pull/2043 (cherry picked from commit 06b466526a7fc35cc6fc5bf6f6269e7f3a0a7aea) --- libexec/rc/rc.d/virtual_oss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libexec/rc/rc.d/virtual_oss b/libexec/rc/rc.d/virtual_oss index b8f1e7620582..42353a6c1520 100644 --- a/libexec/rc/rc.d/virtual_oss +++ b/libexec/rc/rc.d/virtual_oss @@ -24,6 +24,7 @@ required_modules="cuse" configs= pidpath="/var/run/${name}" +default_unit=$(sysctl -n hw.snd.default_unit) virtual_oss_default_args="\ -S \ -C 2 \ @@ -32,7 +33,7 @@ virtual_oss_default_args="\ -b 24 \ -s 8ms \ -i 8 \ - -f /dev/dsp \ + -f /dev/dsp${default_unit} \ -d dsp \ -t vdsp.ctl" From nobody Mon Mar 2 14: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 4fPhn42CfKz6Sn82 for ; Mon, 02 Mar 2026 14: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 4fPhn41twDz3cvk for ; Mon, 02 Mar 2026 14: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=1772463320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IbvtKSvesbAUf33i+Wjpi2AivZ0sprlCDLsSPeliNK4=; b=Ik5gPDZf7ZDyUF9mq6jjT7hMg8/jgLqBz6JWihe0EeZQ3mF3bro/FjPGC8mXZBUcqdo6xT bMIsNZtvlNuhL1p8EiheUXKrtlrTUQ04KqRVL4piTsfiJjGduyn4hUtwrtYQBWrnKYSYdw SjSyyXjD8tcgPBWTMCCfdyv+PMJJwRGIGlkvYv+uoGw3NlgeWmePxSWupst+BpQjYa5c6u l9fvUNPlpPcut4PbTB+zKkjs7qYPJGNWVhMJqfRMkJ7PvQRzorHMnYadsXs1/3DJkFxu9u LnFOOzsC4qJvgh6CEcQyOqgdCz9Ze19EacO8i4N6rziyIhpDiCNQsZxRjv+XEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772463320; a=rsa-sha256; cv=none; b=GvzqkcCJklk5sV+WNLYfa6lnpWvW845cMRRwCJ8kmQ7Q3fBCI/+0J8D6JxqsNs5jyrX1KL lxeHRGgl0FCIJIcwUffJd2rWuLdf+FWnwVJMrvGt57UcNdt9AmrTFQOmWiOaXMvQWasbx7 X00680wQJFqmQc+WOKfR0j9VKj/yPMrdmEUGp4ryWKpSmKaD71EOKlz6F867WYBxyPa3tL 8yfmbSBh/20afjRCVlV1Kld5mUScjBdagf2qmT590VoT3OL9b/koL/TXSmT0J1ACWLjnO/ LZZqkvDpgVl1XTe9iRNfaN/uo3TuCTP2E5mKAW5wL+BRali/qPXOuMiTv4aIbw== 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=1772463320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IbvtKSvesbAUf33i+Wjpi2AivZ0sprlCDLsSPeliNK4=; b=CeXnNxJ+0+IsooKM844jVW04J/xfZDo+BKXulAwFJubDY6P3YmpcChYdROy7FOGrilPnj4 N1xDP6HldAchsndILgbHgGMenPI4NOId0cJcDBBBB+hYLVb5oTkAigNJGhfbl8VH0a2n/I BwDk5yFnSRVGs+KbThaB2s7zOLeir3JVqQWyvpcwIiAaiD9I7qowuQBx8meQ5v2xaXzK5h qyXgbMN5cBUH+8pQnpJM7Ic1JIyB64+G0xUuB6H+CKrrE1SaD2QHZp3ngcANAHa7S2JJx9 gYnAe3CE+Q66Ap/q98Sk3QtQOlBlAiT1Njc/wXLE0qrLUHZbx0+DzBosi1CRhA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPhn41SyXzgYD for ; Mon, 02 Mar 2026 14:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27a24 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 14:55:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: a8dbd836b785 - stable/15 - zfs: merge openzfs/zfs@1c702dda3 (zfs-2.4-release) into stable/15 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: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a8dbd836b7856aa6f12cb2442a224fdb58d17f54 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 14:55:14 +0000 Message-Id: <69a5a4d2.27a24.7df22d03@gitrepo.freebsd.org> The branch stable/15 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=a8dbd836b7856aa6f12cb2442a224fdb58d17f54 commit a8dbd836b7856aa6f12cb2442a224fdb58d17f54 Merge: 960ef72179bd 1c702dda346a Author: Martin Matuska AuthorDate: 2026-03-02 14:52:54 +0000 Commit: Martin Matuska CommitDate: 2026-03-02 14:53:28 +0000 zfs: merge openzfs/zfs@1c702dda3 (zfs-2.4-release) into stable/15 OpenZFS 2.4.1 Notable upstream pull request merges: #16307 ccb7c82aa zdb: Add -O option for -r to specify object-id #17839 c4ad5e293 zpool: fix conflict with -v and -o options #17970 8a79d0968 ARC: Increase parallel eviction batching #17965 5e0f20088 ARC: Pre-convert zfs_arc_min_prefetch_ms #17981 e865ddad5 ZIO: ZIO_STAGE_DDT_WRITE is a blocking stage #18028 6482a27e8 Reduce dataset buffers re-dirtying #18033 135103a64 Defer async destroys on pool import #18043 242804370 Improve async destroy processing timing #18044 fa857113a DDT: Move logs searches out of the lock #18047 4905686e6 DDT: Switch to using ZAP _by_dnode() interfaces #18048 4ab2027f5 DDT: Add/use zap_lookup_length_uint64_by_dnode() #18055 96b1d2fae DDT: Fix compressed entry buffer size #18059 8dd01181a RAIDZ: Remove some excessive logging #18060 35ee242ab Reduce minimal scrub/resilver times #18061 09587c738 Use reduced precision for scan times #18063 8d391531e Bypass snprintf() in quota checks if no quotas set #18064 0de2da6a3 Fix rangelock test for growing block size #18080 6ab8f46c6 cmd/zfs: clone: accept `-u` to not mount newly created datasets #18085 8e946b5ae cmd/ztest: avoid `PATH_MAX` stack allocation in `ztest_get_zdb_bin()` #18091 8a826c0f6 Fix zfs_open() to skip zil_async_to_sync() for the snapshot #18095 6a9d7820e Rename several printf attributes declarations to __printf__ #18096 d69f7c5e9 FreeBSD: unbreak compilation on i386 #18105 65e13c33d When receiving a stream with the large block flag, activate feature #18115 2c9fec38d DDT: Add locking for table ZAP destruction #18118 6218a5eb0 Fix history logging for `zpool create -t` #18119 4cc3056c5 icp: emit .note.GNU-stack section for all ELF targets #18131 d08e561d0 Fix --enable-invariants on FreeBSD #18136 343cc96d7 FreeBSD: Remove references to DEBUG_VFS_LOCKS #18138 11647c669 Flush RRD only when TXGs contain data #18139 79c381008 Make sure we can still write data to txg #18140 aebbfdb37 remove thread unsafe debug code causing FreeBSD double free panic #18144 612d4019f Fix activating large_microzap on receive #18146 554a81b20 Lock db_mtx around arc_release() in couple places #18154 7c80abdd7 nvpair: chase FreeBSD xdrproc_t definition #18160 25327ed7c Improve caching for dbuf prefetches #18177 -multiple Multihost Improvements #18183 a42bb5405 Include missing newline in 'man' error #18188 f83a7864a zfs_vnops_os.c: Move a vput() to after zfs_setattr_dir() #18198 a0350f61c Fix `send:raw` permission for send `-w -I` #18222 3dcd071b5 Fix available space accounting for special/dedup Obtained from: OpenZFS OpenZFS commit: 1c702dda346a59e05cfd3029569bbb1d5d91c54b OpenZFS tag: zfs-2.4.1 .../.github/workflows/scripts/qemu-1-setup.sh | 114 ++- .../.github/workflows/scripts/qemu-2-start.sh | 55 +- .../.github/workflows/scripts/qemu-3-deps-vm.sh | 50 +- .../.github/workflows/scripts/qemu-5-setup.sh | 22 +- .../workflows/scripts/qemu-6-lustre-tests-vm.sh | 51 ++ .../.github/workflows/scripts/qemu-6-tests.sh | 132 +++- .../.github/workflows/scripts/qemu-8-summary.sh | 32 + .../.github/workflows/scripts/qemu-test-repo-vm.sh | 27 +- .../.github/workflows/zfs-qemu-packages.yml | 13 +- sys/contrib/openzfs/.github/workflows/zfs-qemu.yml | 12 +- sys/contrib/openzfs/META | 4 +- sys/contrib/openzfs/cmd/zdb/zdb.c | 11 +- .../zed/zed.d/history_event-zfs-list-cacher.sh.in | 1 + sys/contrib/openzfs/cmd/zfs/zfs_main.c | 68 +- sys/contrib/openzfs/cmd/zhack.c | 159 ++++- sys/contrib/openzfs/cmd/zpool/zpool_main.c | 138 ++-- sys/contrib/openzfs/cmd/ztest.c | 7 +- sys/contrib/openzfs/config/kernel-inode-state.m4 | 23 + sys/contrib/openzfs/config/kernel-mm-page-flags.m4 | 27 + sys/contrib/openzfs/config/kernel.m4 | 2 + .../openzfs/contrib/dracut/90zfs/mount-zfs.sh.in | 2 +- sys/contrib/openzfs/contrib/initramfs/scripts/zfs | 655 +++++++++-------- sys/contrib/openzfs/copy-builtin | 5 +- sys/contrib/openzfs/etc/default/zfs.in | 4 + sys/contrib/openzfs/etc/zfs/zfs-functions.in | 24 +- .../include/os/linux/kernel/linux/dcache_compat.h | 19 +- .../include/os/linux/kernel/linux/vfs_compat.h | 8 + .../openzfs/include/os/linux/spl/sys/kmem.h | 5 +- sys/contrib/openzfs/include/sys/ddt.h | 14 +- sys/contrib/openzfs/include/sys/ddt_impl.h | 31 +- sys/contrib/openzfs/include/sys/dmu.h | 1 + sys/contrib/openzfs/include/sys/dsl_scan.h | 2 +- sys/contrib/openzfs/include/sys/fs/zfs.h | 4 + sys/contrib/openzfs/include/sys/metaslab.h | 4 +- sys/contrib/openzfs/include/sys/metaslab_impl.h | 8 +- sys/contrib/openzfs/include/sys/mmp.h | 5 + sys/contrib/openzfs/include/sys/spa.h | 1 + sys/contrib/openzfs/include/sys/spa_impl.h | 2 + sys/contrib/openzfs/include/sys/uberblock_impl.h | 22 +- sys/contrib/openzfs/include/sys/vdev.h | 2 + sys/contrib/openzfs/include/sys/zap.h | 6 + sys/contrib/openzfs/include/sys/zap_impl.h | 3 +- sys/contrib/openzfs/include/sys/zio_impl.h | 3 +- sys/contrib/openzfs/lib/libzfs/libzfs_pool.c | 5 + sys/contrib/openzfs/man/man4/zfs.4 | 31 +- sys/contrib/openzfs/man/man8/zdb.8 | 11 + sys/contrib/openzfs/man/man8/zfs-clone.8 | 4 +- sys/contrib/openzfs/module/Kbuild.in | 9 +- sys/contrib/openzfs/module/Makefile.bsd | 5 - sys/contrib/openzfs/module/Makefile.in | 5 +- sys/contrib/openzfs/module/icp/algs/modes/gcm.c | 1 + .../icp/asm-x86_64/modes/aesni-gcm-avx2-vaes.S | 1 + .../icp/include/modes/gcm_asm_rename_funcs.h | 39 + sys/contrib/openzfs/module/nvpair/nvpair.c | 7 +- .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 25 +- .../openzfs/module/os/freebsd/zfs/zfs_znode_os.c | 7 +- .../openzfs/module/os/freebsd/zfs/zio_crypt.c | 13 - .../openzfs/module/os/linux/spl/spl-atomic.c | 36 - .../openzfs/module/os/linux/spl/spl-generic.c | 258 ------- .../openzfs/module/os/linux/spl/spl-kmem-cache.c | 8 +- sys/contrib/openzfs/module/os/linux/spl/spl-kmem.c | 4 +- .../openzfs/module/os/linux/spl/spl-kstat.c | 3 - .../openzfs/module/os/linux/spl/spl-math-compat.c | 275 +++++++ .../openzfs/module/os/linux/spl/spl-trace.c | 2 - .../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 21 +- .../openzfs/module/os/linux/zfs/zfs_znode_os.c | 7 +- .../openzfs/module/os/linux/zfs/zpl_export.c | 87 ++- .../openzfs/module/os/linux/zfs/zpl_inode.c | 26 + sys/contrib/openzfs/module/zfs/arc.c | 93 +-- sys/contrib/openzfs/module/zfs/dataset_kstats.c | 2 +- sys/contrib/openzfs/module/zfs/dbuf.c | 6 +- sys/contrib/openzfs/module/zfs/ddt.c | 242 +++++-- sys/contrib/openzfs/module/zfs/ddt_log.c | 36 +- sys/contrib/openzfs/module/zfs/ddt_zap.c | 70 +- sys/contrib/openzfs/module/zfs/dmu_recv.c | 46 +- sys/contrib/openzfs/module/zfs/dmu_tx.c | 7 +- sys/contrib/openzfs/module/zfs/dsl_dataset.c | 6 +- sys/contrib/openzfs/module/zfs/dsl_scan.c | 113 +-- sys/contrib/openzfs/module/zfs/metaslab.c | 72 +- sys/contrib/openzfs/module/zfs/mmp.c | 158 ++++- sys/contrib/openzfs/module/zfs/sa.c | 15 +- sys/contrib/openzfs/module/zfs/spa.c | 787 ++++++++++++++++----- sys/contrib/openzfs/module/zfs/spa_log_spacemap.c | 5 +- sys/contrib/openzfs/module/zfs/spa_misc.c | 32 +- sys/contrib/openzfs/module/zfs/vdev.c | 2 +- sys/contrib/openzfs/module/zfs/vdev_label.c | 10 +- sys/contrib/openzfs/module/zfs/vdev_raidz.c | 16 - sys/contrib/openzfs/module/zfs/zap.c | 5 +- sys/contrib/openzfs/module/zfs/zap_micro.c | 80 ++- sys/contrib/openzfs/module/zfs/zfs_ioctl.c | 16 +- sys/contrib/openzfs/module/zfs/zfs_quota.c | 8 +- sys/contrib/openzfs/module/zfs/zio.c | 12 +- sys/contrib/openzfs/module/zfs/zio_compress.c | 2 +- sys/contrib/openzfs/scripts/objtool-wrapper.in | 4 +- sys/contrib/openzfs/scripts/paxcheck.sh | 4 +- sys/contrib/openzfs/tests/runfiles/common.run | 7 +- sys/contrib/openzfs/tests/runfiles/linux.run | 4 +- .../openzfs/tests/test-runner/bin/zts-report.py.in | 4 - .../tests/zfs-tests/callbacks/zfs_dbgmsg.ksh | 2 +- .../openzfs/tests/zfs-tests/callbacks/zfs_mmp.ksh | 2 +- .../openzfs/tests/zfs-tests/cmd/mmap_seek.c | 2 +- .../openzfs/tests/zfs-tests/include/libtest.shlib | 2 +- .../openzfs/tests/zfs-tests/include/tunables.cfg | 1 + .../openzfs/tests/zfs-tests/tests/Makefile.am | 7 + .../block_cloning_after_device_removal.ksh | 61 ++ .../cli_root/zfs_clone/zfs_clone_nomount.ksh | 66 ++ .../zpool_create/zpool_create_tempname.ksh | 2 + .../zfs_send_delegation_user/zfs_send_usertest.ksh | 11 +- .../functional/events/zed_synchronous_zedlet.ksh | 6 +- .../tests/zfs-tests/tests/functional/mmp/mmp.cfg | 6 +- .../zfs-tests/tests/functional/mmp/mmp.kshlib | 47 +- .../tests/functional/mmp/mmp_active_import.ksh | 42 +- .../tests/functional/mmp/mmp_concurrent_import.ksh | 133 ++++ .../tests/functional/mmp/mmp_exported_import.ksh | 16 +- .../zfs-tests/tests/functional/mmp/mmp_hostid.ksh | 8 +- .../tests/functional/mmp/mmp_inactive_import.ksh | 20 +- .../zfs-tests/tests/functional/mmp/mmp_on_off.ksh | 4 +- .../tests/functional/mmp/mmp_on_thread.ksh | 4 +- .../tests/functional/mmp/mmp_on_uberblocks.ksh | 14 +- .../zfs-tests/tests/functional/mmp/mmp_on_zdb.ksh | 3 +- .../tests/functional/mmp/mmp_reset_interval.ksh | 8 +- .../functional/mmp/mmp_write_distribution.ksh | 2 +- .../tests/functional/mmp/mmp_write_uberblocks.ksh | 4 +- .../tests/functional/mmp/multihost_history.ksh | 2 + .../tests/functional/mount/mount_loopback.ksh | 3 +- .../rsend/send_large_blocks_incremental.ksh | 83 +++ .../functional/rsend/send_large_blocks_initial.ksh | 86 +++ .../rsend/send_large_microzap_incremental.ksh | 91 +++ .../rsend/send_large_microzap_transitive.ksh | 100 +++ .../functional/zvol/zvol_misc/zvol_misc_fua.ksh | 18 +- sys/modules/zfs/zfs_config.h | 14 +- sys/modules/zfs/zfs_gitrev.h | 2 +- 132 files changed, 3901 insertions(+), 1503 deletions(-) diff --cc sys/contrib/openzfs/.github/workflows/scripts/qemu-6-lustre-tests-vm.sh index 000000000000,ff3f0a356bb9..ff3f0a356bb9 mode 000000,100755..100755 --- a/sys/contrib/openzfs/.github/workflows/scripts/qemu-6-lustre-tests-vm.sh +++ b/sys/contrib/openzfs/.github/workflows/scripts/qemu-6-lustre-tests-vm.sh diff --cc sys/contrib/openzfs/config/kernel-inode-state.m4 index 000000000000,02ec1380af53..02ec1380af53 mode 000000,100644..100644 --- a/sys/contrib/openzfs/config/kernel-inode-state.m4 +++ b/sys/contrib/openzfs/config/kernel-inode-state.m4 diff --cc sys/contrib/openzfs/module/icp/include/modes/gcm_asm_rename_funcs.h index 000000000000,08c51aeed8ad..08c51aeed8ad mode 000000,100644..100644 --- a/sys/contrib/openzfs/module/icp/include/modes/gcm_asm_rename_funcs.h +++ b/sys/contrib/openzfs/module/icp/include/modes/gcm_asm_rename_funcs.h diff --cc sys/contrib/openzfs/module/os/linux/spl/spl-math-compat.c index 000000000000,3184db7f28b0..3184db7f28b0 mode 000000,100644..100644 --- a/sys/contrib/openzfs/module/os/linux/spl/spl-math-compat.c +++ b/sys/contrib/openzfs/module/os/linux/spl/spl-math-compat.c diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/block_cloning/block_cloning_after_device_removal.ksh index 000000000000,b407d4c541d7..b407d4c541d7 mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/block_cloning/block_cloning_after_device_removal.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/block_cloning/block_cloning_after_device_removal.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_nomount.ksh index 000000000000,b549f4571757..b549f4571757 mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_nomount.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_nomount.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/mmp/mmp_concurrent_import.ksh index 000000000000,7fab2634ded1..7fab2634ded1 mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/mmp/mmp_concurrent_import.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/mmp/mmp_concurrent_import.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_incremental.ksh index 000000000000,eff7db7cfff8..eff7db7cfff8 mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_incremental.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_incremental.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_initial.ksh index 000000000000,19f06d106113..19f06d106113 mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_initial.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_blocks_initial.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_incremental.ksh index 000000000000,ca76aca1faed..ca76aca1faed mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_incremental.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_incremental.ksh diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_transitive.ksh index 000000000000,f44ba49660bc..f44ba49660bc mode 000000,100755..100755 --- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_transitive.ksh +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_large_microzap_transitive.ksh diff --cc sys/modules/zfs/zfs_config.h index 378b79521702,000000000000..635fb0a7e91f mode 100644,000000..100644 --- a/sys/modules/zfs/zfs_config.h +++ b/sys/modules/zfs/zfs_config.h @@@ -1,898 -1,0 +1,904 @@@ +/* + */ + +/* zfs_config.h. Generated from zfs_config.h.in by configure. */ +/* zfs_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* __assign_str() has one arg */ +/* #undef HAVE_1ARG_ASSIGN_STR */ + +/* lookup_bdev() wants 1 arg */ +/* #undef HAVE_1ARG_LOOKUP_BDEV */ + +/* kernel has access_ok with 'type' parameter */ +/* #undef HAVE_ACCESS_OK_TYPE */ + +/* add_disk() returns int */ +/* #undef HAVE_ADD_DISK_RET */ + +/* Define if host toolchain supports AES */ +#define HAVE_AES 1 + +/* Define if you have [rt] */ +#define HAVE_AIO_H 1 + +#ifdef __amd64__ +#ifndef RESCUE +/* Define if host toolchain supports AVX */ +#define HAVE_AVX 1 +#endif + +/* Define if host toolchain supports AVX2 */ +#define HAVE_AVX2 1 + +/* Define if host toolchain supports AVX512BW */ +#define HAVE_AVX512BW 1 + +/* Define if host toolchain supports AVX512CD */ +#define HAVE_AVX512CD 1 + +/* Define if host toolchain supports AVX512DQ */ +#define HAVE_AVX512DQ 1 + +/* Define if host toolchain supports AVX512ER */ +#define HAVE_AVX512ER 1 + +/* Define if host toolchain supports AVX512F */ +#define HAVE_AVX512F 1 + +/* Define if host toolchain supports AVX512IFMA */ +#define HAVE_AVX512IFMA 1 + +/* Define if host toolchain supports AVX512PF */ +#define HAVE_AVX512PF 1 + +/* Define if host toolchain supports AVX512VBMI */ +#define HAVE_AVX512VBMI 1 + +/* Define if host toolchain supports AVX512VL */ +#define HAVE_AVX512VL 1 +#endif + +/* backtrace() is available */ +/* #undef HAVE_BACKTRACE */ + +/* bdevname() is available */ +/* #undef HAVE_BDEVNAME */ + +/* bdev_check_media_change() exists */ +/* #undef HAVE_BDEV_CHECK_MEDIA_CHANGE */ + +/* bdev_file_open_by_path() exists */ +/* #undef HAVE_BDEV_FILE_OPEN_BY_PATH */ + +/* bdev_*_io_acct() available */ +/* #undef HAVE_BDEV_IO_ACCT_63 */ + +/* bdev_*_io_acct() available */ +/* #undef HAVE_BDEV_IO_ACCT_OLD */ + +/* bdev_kobj() exists */ +/* #undef HAVE_BDEV_KOBJ */ + +/* bdev_max_discard_sectors() is available */ +/* #undef HAVE_BDEV_MAX_DISCARD_SECTORS */ + +/* bdev_max_secure_erase_sectors() is available */ +/* #undef HAVE_BDEV_MAX_SECURE_ERASE_SECTORS */ + +/* bdev_nr_bytes() is available */ +/* #undef HAVE_BDEV_NR_BYTES */ + +/* bdev_open_by_path() exists */ +/* #undef HAVE_BDEV_OPEN_BY_PATH */ + +/* bdev_release() exists */ +/* #undef HAVE_BDEV_RELEASE */ + +/* block_device_operations->submit_bio() returns void */ +/* #undef HAVE_BDEV_SUBMIT_BIO_RETURNS_VOID */ + +/* bdev_whole() is available */ +/* #undef HAVE_BDEV_WHOLE */ + +/* bio_alloc() takes 4 arguments */ +/* #undef HAVE_BIO_ALLOC_4ARG */ + +/* bio->bi_bdev->bd_disk exists */ +/* #undef HAVE_BIO_BDEV_DISK */ + +/* bio_*_io_acct() available */ +/* #undef HAVE_BIO_IO_ACCT */ + +/* bio_max_segs() is implemented */ +/* #undef HAVE_BIO_MAX_SEGS */ + +/* bio_set_dev() GPL-only */ +/* #undef HAVE_BIO_SET_DEV_GPL_ONLY */ + +/* bio_set_dev() is a macro */ +/* #undef HAVE_BIO_SET_DEV_MACRO */ + +/* bio_set_op_attrs is available */ +/* #undef HAVE_BIO_SET_OP_ATTRS */ + +/* blkdev_get_by_path() exists and takes 4 args */ +/* #undef HAVE_BLKDEV_GET_BY_PATH_4ARG */ + +/* blkdev_get_by_path() handles ERESTARTSYS */ +/* #undef HAVE_BLKDEV_GET_ERESTARTSYS */ + +/* __blkdev_issue_discard(flags) is available */ +/* #undef HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_FLAGS */ + +/* __blkdev_issue_discard() is available */ +/* #undef HAVE_BLKDEV_ISSUE_DISCARD_ASYNC_NOFLAGS */ + +/* blkdev_issue_discard(flags) is available */ +/* #undef HAVE_BLKDEV_ISSUE_DISCARD_FLAGS */ + +/* blkdev_issue_discard() is available */ +/* #undef HAVE_BLKDEV_ISSUE_DISCARD_NOFLAGS */ + +/* blkdev_issue_secure_erase() is available */ +/* #undef HAVE_BLKDEV_ISSUE_SECURE_ERASE */ + +/* blkdev_put() exists */ +/* #undef HAVE_BLKDEV_PUT */ + +/* blkdev_put() accepts void* as arg 2 */ +/* #undef HAVE_BLKDEV_PUT_HOLDER */ + +/* struct queue_limits has a features field */ +/* #undef HAVE_BLKDEV_QUEUE_LIMITS_FEATURES */ + +/* blkdev_reread_part() exists */ +/* #undef HAVE_BLKDEV_REREAD_PART */ + +/* blkg_tryget() is available */ +/* #undef HAVE_BLKG_TRYGET */ + +/* blkg_tryget() GPL-only */ +/* #undef HAVE_BLKG_TRYGET_GPL_ONLY */ + +/* blk_alloc_disk() exists */ +/* #undef HAVE_BLK_ALLOC_DISK */ + +/* blk_alloc_disk() exists and takes 2 args */ +/* #undef HAVE_BLK_ALLOC_DISK_2ARG */ + +/* blk_alloc_queue() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN */ + +/* blk_alloc_queue_rh() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN_RH */ + +/* blk_cleanup_disk() exists */ +/* #undef HAVE_BLK_CLEANUP_DISK */ + +/* blk_mode_t is defined */ +/* #undef HAVE_BLK_MODE_T */ + +/* block multiqueue hardware context is cached in struct request */ +/* #undef HAVE_BLK_MQ_RQ_HCTX */ + +/* blk queue backing_dev_info is dynamic */ +/* #undef HAVE_BLK_QUEUE_BDI_DYNAMIC */ + +/* blk_queue_discard() is available */ +/* #undef HAVE_BLK_QUEUE_DISCARD */ + +/* backing_dev_info is available through queue gendisk */ +/* #undef HAVE_BLK_QUEUE_DISK_BDI */ + +/* blk_queue_secure_erase() is available */ +/* #undef HAVE_BLK_QUEUE_SECURE_ERASE */ + +/* blk_queue_update_readahead() exists */ +/* #undef HAVE_BLK_QUEUE_UPDATE_READAHEAD */ + +/* BLK_STS_RESV_CONFLICT is defined */ +/* #undef HAVE_BLK_STS_RESV_CONFLICT */ + +/* Define if getgeo() in block_device_operations takes struct gendisk * as its + first arg */ +/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK */ + +/* Define if release() in block_device_operations takes 1 arg */ +/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_1ARG */ + +/* Define if revalidate_disk() in block_device_operations */ +/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK */ + +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES */ + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* check_disk_change() exists */ +/* #undef HAVE_CHECK_DISK_CHANGE */ + +/* copy_splice_read exists */ +/* #undef HAVE_COPY_SPLICE_READ */ + +/* cpu_has_feature() is GPL-only */ +/* #undef HAVE_CPU_HAS_FEATURE_GPL_ONLY */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* DECLARE_EVENT_CLASS() is available */ +/* #undef HAVE_DECLARE_EVENT_CLASS */ + +/* 3-arg dequeue_signal() takes a type argument */ +/* #undef HAVE_DEQUEUE_SIGNAL_3ARG_TYPE */ + +/* dequeue_signal() takes 4 arguments */ +/* #undef HAVE_DEQUEUE_SIGNAL_4ARG */ + +/* lookup_bdev() wants dev_t arg */ +/* #undef HAVE_DEVT_LOOKUP_BDEV */ + +/* disk_check_media_change() exists */ +/* #undef HAVE_DISK_CHECK_MEDIA_CHANGE */ + +/* disk_*_io_acct() available */ +/* #undef HAVE_DISK_IO_ACCT */ + +/* disk_update_readahead() exists */ +/* #undef HAVE_DISK_UPDATE_READAHEAD */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* dops->d_revalidate() takes 4 args */ +/* #undef HAVE_D_REVALIDATE_4ARGS */ + +/* Define if d_set_d_op() is available */ +/* #undef HAVE_D_SET_D_OP */ + +/* Define to 1 if you have the 'execvpe' function. */ +#define HAVE_EXECVPE 1 + +/* fault_in_iov_iter_readable() is available */ +/* #undef HAVE_FAULT_IN_IOV_ITER_READABLE */ + +/* file->f_version exists */ +/* #undef HAVE_FILE_F_VERSION */ + +/* flush_dcache_page() is GPL-only */ +/* #undef HAVE_FLUSH_DCACHE_PAGE_GPL_ONLY */ + +/* Define if compiler supports -Wformat-overflow */ +/* #undef HAVE_FORMAT_OVERFLOW */ + +/* fsync_bdev() is declared in include/blkdev.h */ +/* #undef HAVE_FSYNC_BDEV */ + +/* yes */ +/* #undef HAVE_GENERIC_FADVISE */ + +/* generic_fillattr requires struct mnt_idmap* */ +/* #undef HAVE_GENERIC_FILLATTR_IDMAP */ + +/* generic_fillattr requires struct mnt_idmap* and u32 request_mask */ +/* #undef HAVE_GENERIC_FILLATTR_IDMAP_REQMASK */ + +/* generic_fillattr requires struct user_namespace* */ +/* #undef HAVE_GENERIC_FILLATTR_USERNS */ + +/* generic_*_io_acct() 4 arg available */ +/* #undef HAVE_GENERIC_IO_ACCT_4ARG */ + +/* GENHD_FL_EXT_DEVT flag is available */ +/* #undef HAVE_GENHD_FL_EXT_DEVT */ + +/* GENHD_FL_NO_PART flag is available */ +/* #undef HAVE_GENHD_FL_NO_PART */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have the 'gettid' function. */ +/* #undef HAVE_GETTID */ + +/* iops->get_acl() exists */ +/* #undef HAVE_GET_ACL */ + +/* iops->get_acl() takes rcu */ +/* #undef HAVE_GET_ACL_RCU */ + +/* has iops->get_inode_acl() */ +/* #undef HAVE_GET_INODE_ACL */ + +/* iattr->ia_vfsuid and iattr->ia_vfsgid exist */ +/* #undef HAVE_IATTR_VFSID */ + +/* Define if you have the iconv() function and it works. */ +#define HAVE_ICONV 1 + +/* iops->getattr() takes struct mnt_idmap* */ +/* #undef HAVE_IDMAP_IOPS_GETATTR */ + +/* iops->setattr() takes struct mnt_idmap* */ +/* #undef HAVE_IDMAP_IOPS_SETATTR */ + +/* APIs for idmapped mount are present */ +/* #undef HAVE_IDMAP_MNT_API */ + +/* mnt_idmap does not have user_namespace */ +/* #undef HAVE_IDMAP_NO_USERNS */ + +/* Define if compiler supports -Wimplicit-fallthrough */ +/* #undef HAVE_IMPLICIT_FALLTHROUGH */ + +/* Define if compiler supports -Winfinite-recursion */ +/* #undef HAVE_INFINITE_RECURSION */ + +/* inode_generic_drop() exists */ +/* #undef HAVE_INODE_GENERIC_DROP */ + +/* inode_get_atime() exists in linux/fs.h */ +/* #undef HAVE_INODE_GET_ATIME */ + +/* inode_get_ctime() exists in linux/fs.h */ +/* #undef HAVE_INODE_GET_CTIME */ + +/* inode_get_mtime() exists in linux/fs.h */ +/* #undef HAVE_INODE_GET_MTIME */ + +/* inode_owner_or_capable() exists */ +/* #undef HAVE_INODE_OWNER_OR_CAPABLE */ + +/* inode_owner_or_capable() takes mnt_idmap */ +/* #undef HAVE_INODE_OWNER_OR_CAPABLE_IDMAP */ + +/* inode_owner_or_capable() takes user_ns */ +/* #undef HAVE_INODE_OWNER_OR_CAPABLE_USERNS */ + +/* inode_set_atime_to_ts() exists in linux/fs.h */ +/* #undef HAVE_INODE_SET_ATIME_TO_TS */ + +/* inode_set_ctime_to_ts() exists in linux/fs.h */ +/* #undef HAVE_INODE_SET_CTIME_TO_TS */ + +/* inode_set_mtime_to_ts() exists in linux/fs.h */ +/* #undef HAVE_INODE_SET_MTIME_TO_TS */ + ++/* inode_state_read_once() exists */ ++/* #undef HAVE_INODE_STATE_READ_ONCE */ ++ +/* timestamp_truncate() exists */ +/* #undef HAVE_INODE_TIMESTAMP_TRUNCATE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* iops->create() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_CREATE_IDMAP */ + +/* iops->create() takes struct user_namespace* */ +/* #undef HAVE_IOPS_CREATE_USERNS */ + +/* iops->mkdir() returns struct dentry* */ +/* #undef HAVE_IOPS_MKDIR_DENTRY */ + +/* iops->mkdir() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_MKDIR_IDMAP */ + +/* iops->mkdir() takes struct user_namespace* */ +/* #undef HAVE_IOPS_MKDIR_USERNS */ + +/* iops->mknod() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_MKNOD_IDMAP */ + +/* iops->mknod() takes struct user_namespace* */ +/* #undef HAVE_IOPS_MKNOD_USERNS */ + +/* iops->permission() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_PERMISSION_IDMAP */ + +/* iops->permission() takes struct user_namespace* */ +/* #undef HAVE_IOPS_PERMISSION_USERNS */ + +/* iops->rename() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_RENAME_IDMAP */ + +/* iops->rename() takes struct user_namespace* */ +/* #undef HAVE_IOPS_RENAME_USERNS */ + +/* iops->symlink() takes struct mnt_idmap* */ +/* #undef HAVE_IOPS_SYMLINK_IDMAP */ + +/* iops->symlink() takes struct user_namespace* */ +/* #undef HAVE_IOPS_SYMLINK_USERNS */ + +/* iov_iter_get_pages2() is available */ +/* #undef HAVE_IOV_ITER_GET_PAGES2 */ + +/* iov_iter_type() is available */ +/* #undef HAVE_IOV_ITER_TYPE */ + +/* Define to 1 if you have the 'issetugid' function. */ +#define HAVE_ISSETUGID 1 + +/* iter_iov() is available */ +/* #undef HAVE_ITER_IOV */ + +/* iter_is_ubuf() is available */ +/* #undef HAVE_ITER_IS_UBUF */ + +/* kasan_enabled() is GPL-only */ +/* #undef HAVE_KASAN_ENABLED_GPL_ONLY */ + +/* kernel has kernel_fpu_* functions */ +/* #undef HAVE_KERNEL_FPU */ + +/* kernel has asm/fpu/api.h */ +/* #undef HAVE_KERNEL_FPU_API_HEADER */ + +/* kernel fpu internal */ +/* #undef HAVE_KERNEL_FPU_INTERNAL */ + +/* kernel has asm/fpu/internal.h */ +/* #undef HAVE_KERNEL_FPU_INTERNAL_HEADER */ + +/* Define if compiler supports -Winfinite-recursion */ +/* #undef HAVE_KERNEL_INFINITE_RECURSION */ + +/* kernel defines intptr_t */ +/* #undef HAVE_KERNEL_INTPTR_T */ + +/* kernel has kernel_neon_* functions */ +/* #undef HAVE_KERNEL_NEON */ + +/* kernel does stack verification */ +/* #undef HAVE_KERNEL_OBJTOOL */ + +/* kernel has linux/objtool.h */ +/* #undef HAVE_KERNEL_OBJTOOL_HEADER */ + +/* strlcpy() exists */ +/* #undef HAVE_KERNEL_STRLCPY */ + +/* kernel has kmap_local_page */ +/* #undef HAVE_KMAP_LOCAL_PAGE */ + +/* Define if you have [aio] */ +/* #undef HAVE_LIBAIO */ + +/* Define if you have [blkid] */ +/* #undef HAVE_LIBBLKID */ + +/* Define if you have [crypto] */ +#define HAVE_LIBCRYPTO 1 + +/* Define if you have [tirpc] */ +/* #undef HAVE_LIBTIRPC */ + +/* Define if you have [udev] */ +/* #undef HAVE_LIBUDEV */ + +/* Define if you have [unwind] */ +/* #undef HAVE_LIBUNWIND */ + +/* libunwind has unw_get_elf_filename */ +/* #undef HAVE_LIBUNWIND_ELF */ + +/* Define if you have [uuid] */ +/* #undef HAVE_LIBUUID */ + +/* building against unsupported kernel version */ +/* #undef HAVE_LINUX_EXPERIMENTAL */ + +/* makedev() is declared in sys/mkdev.h */ +/* #undef HAVE_MAKEDEV_IN_MKDEV */ + +/* makedev() is declared in sys/sysmacros.h */ +/* #undef HAVE_MAKEDEV_IN_SYSMACROS */ + +/* Noting that make_request_fn() returns blk_qc_t */ +/* #undef HAVE_MAKE_REQUEST_FN_RET_QC */ + +/* Define to 1 if you have the 'mlockall' function. */ +#define HAVE_MLOCKALL 1 + ++/* 'flags' in 'struct page' is a struct */ ++/* #undef HAVE_MM_PAGE_FLAGS_STRUCT */ ++ +/* PG_error flag is available */ +/* #undef HAVE_MM_PAGE_FLAG_ERROR */ + +/* page_mapping() is available */ +/* #undef HAVE_MM_PAGE_MAPPING */ + +/* page_size() is available */ +/* #undef HAVE_MM_PAGE_SIZE */ + +/* Define if host toolchain supports MOVBE */ +#define HAVE_MOVBE 1 + +/* Define if ns_type is accessible through ns_common */ +/* #undef HAVE_NS_COMMON_TYPE */ + +/* folio_wait_bit() exists */ +/* #undef HAVE_PAGEMAP_FOLIO_WAIT_BIT */ + +/* readahead_page() exists */ +/* #undef HAVE_PAGEMAP_READAHEAD_PAGE */ + +/* part_to_dev() exists */ +/* #undef HAVE_PART_TO_DEV */ + +/* iops->getattr() takes a path */ +/* #undef HAVE_PATH_IOPS_GETATTR */ + +/* Define if host toolchain supports PCLMULQDQ */ +#define HAVE_PCLMULQDQ 1 + +/* pin_user_pages_unlocked() is available */ +/* #undef HAVE_PIN_USER_PAGES_UNLOCKED */ + +/* proc_handler ctl_table arg is const */ +/* #undef HAVE_PROC_HANDLER_CTL_TABLE_CONST */ + +/* proc_ops structure exists */ +/* #undef HAVE_PROC_OPS_STRUCT */ + +/* If available, contains the Python version number currently in use. */ +/* #undef HAVE_PYTHON */ + +/* qat is enabled and existed */ +/* #undef HAVE_QAT */ + +/* struct reclaim_state has reclaimed */ +/* #undef HAVE_RECLAIM_STATE_RECLAIMED */ + +/* register_shrinker is vararg */ +/* #undef HAVE_REGISTER_SHRINKER_VARARG */ + +/* register_sysctl_sz exists */ +/* #undef HAVE_REGISTER_SYSCTL_SZ */ + +/* register_sysctl_table exists */ +/* #undef HAVE_REGISTER_SYSCTL_TABLE */ + +/* iops->rename() wants flags */ +/* #undef HAVE_RENAME_WANTS_FLAGS */ + +/* revalidate_disk() is available */ +/* #undef HAVE_REVALIDATE_DISK */ + +/* revalidate_disk_size() is available */ +/* #undef HAVE_REVALIDATE_DISK_SIZE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SECURITY_PAM_MODULES_H 1 + +/* setattr_prepare() accepts mnt_idmap */ +/* #undef HAVE_SETATTR_PREPARE_IDMAP */ + +/* setattr_prepare() is available, doesn't accept user_namespace */ +/* #undef HAVE_SETATTR_PREPARE_NO_USERNS */ + +/* setattr_prepare() accepts user_namespace */ +/* #undef HAVE_SETATTR_PREPARE_USERNS */ + +/* iops->set_acl() takes 4 args, arg1 is struct mnt_idmap * */ +/* #undef HAVE_SET_ACL_IDMAP_DENTRY */ + +/* iops->set_acl() takes 4 args */ +/* #undef HAVE_SET_ACL_USERNS */ + +/* iops->set_acl() takes 4 args, arg2 is struct dentry * */ +/* #undef HAVE_SET_ACL_USERNS_DENTRY_ARG2 */ + +/* Define if set_default_d_op() is available */ +/* #undef HAVE_SET_DEFAULT_D_OP */ + +/* shrinker_register exists */ +/* #undef HAVE_SHRINKER_REGISTER */ + +/* kernel_siginfo_t exists */ +/* #undef HAVE_SIGINFO */ + +/* sops->free_inode() exists */ +/* #undef HAVE_SOPS_FREE_INODE */ + +#if defined(__amd64__) || defined(__i386__) +/* Define if host toolchain supports SSE */ +#define HAVE_SSE 1 + +/* Define if host toolchain supports SSE2 */ +#define HAVE_SSE2 1 + +/* Define if host toolchain supports SSE3 */ +#define HAVE_SSE3 1 + +/* Define if host toolchain supports SSE4.1 */ +#define HAVE_SSE4_1 1 + +/* Define if host toolchain supports SSE4.2 */ +#define HAVE_SSE4_2 1 + +/* Define if host toolchain supports SSSE3 */ +#define HAVE_SSSE3 1 +#endif + +/* STACK_FRAME_NON_STANDARD is defined */ +/* #undef HAVE_STACK_FRAME_NON_STANDARD */ + +/* STACK_FRAME_NON_STANDARD asm macro is defined */ +/* #undef HAVE_STACK_FRAME_NON_STANDARD_ASM */ + +/* standalone exists */ +/* #undef HAVE_STANDALONE_LINUX_STDARG */ + +/* statx() is available */ +/* #undef HAVE_STATX */ + +/* STATX_MNT_ID is available */ +/* #undef HAVE_STATX_MNT_ID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the 'strlcat' function. */ +#define HAVE_STRLCAT 1 + +/* Define to 1 if you have the 'strlcpy' function. */ +#define HAVE_STRLCPY 1 + +/* submit_bio is member of struct block_device_operations */ +/* #undef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS */ + +/* have super_block s_shrink */ +/* #undef HAVE_SUPER_BLOCK_S_SHRINK */ + +/* have super_block s_shrink pointer */ +/* #undef HAVE_SUPER_BLOCK_S_SHRINK_PTR */ + +/* have super_block s_wb_err */ +/* #undef HAVE_SUPER_BLOCK_S_WB_ERR */ + +/* sync_blockdev() is declared in include/blkdev.h */ +/* #undef HAVE_SYNC_BLOCKDEV */ + +/* struct kobj_type has default_groups */ +/* #undef HAVE_SYSFS_DEFAULT_GROUPS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* timer_delete_sync is available */ +/* #undef HAVE_TIMER_DELETE_SYNC */ + +/* i_op->tmpfile() uses old dentry signature */ +/* #undef HAVE_TMPFILE_DENTRY */ + +/* i_op->tmpfile() has mnt_idmap */ +/* #undef HAVE_TMPFILE_IDMAP */ + +/* i_op->tmpfile() has userns */ +/* #undef HAVE_TMPFILE_USERNS */ + +/* totalhigh_pages() exists */ +/* #undef HAVE_TOTALHIGH_PAGES */ + +/* kernel has totalram_pages() */ +/* #undef HAVE_TOTALRAM_PAGES_FUNC */ + +/* Define to 1 if you have the 'udev_device_get_is_initialized' function. */ +/* #undef HAVE_UDEV_DEVICE_GET_IS_INITIALIZED */ + +/* kernel has __kernel_fpu_* functions */ +/* #undef HAVE_UNDERSCORE_KERNEL_FPU */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* iops->getattr() takes struct user_namespace* */ +/* #undef HAVE_USERNS_IOPS_GETATTR */ + *** 191 LINES SKIPPED *** From nobody Mon Mar 2 15:08: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 4fPj4b5xskz6Snvy for ; Mon, 02 Mar 2026 15:08: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 4fPj4b52sHz3g8C for ; Mon, 02 Mar 2026 15:08:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772464127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PDp8Gg7hRTIOuEHs1djeE2I6jinpeS9qRBfPPVyO9dM=; b=QkwgWoc14XNFhuGD4emH91DQOj2JMroFQDSFStYqqRUatQNY4wAlbvJEd/hVGut//dVU92 0cpYwQTbiBZYAVrd92zvyqLfN3Gm6uMqqhfbjfbT8H5ukX7SINwvTrPVR5JdgJjguJuNnN Oa0UMMpIp4+h2s2FWnGVzkuoPXLJ87/3IixJI6hQrykcY8hQ6bnVvWVs2etV0kUONHksYl FerrX4yxC0GnPA1UavIup57VvYaAC2EEWWjS2RuijzkkIXIxJkmbrIx63Vww6Mw2tGI+Om /NnQs3eKvDjhnlhnvDGACJkl5hUnVn3CqoKRk9nbcigvnrd8Kgn2MSJ1c7VEnw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772464127; a=rsa-sha256; cv=none; b=CGW5VOnFu/Zd5Hll4dUeXNE7heuf9i8BLNSIELd+HzRllr9zG24m+LitF+VUPrt8+e6s1a ZmScUeS6kw1p8MHyPkU4T8wqX+mMrzZTiauWr1BgGdHcGeAuMrEid0JzFJZtid3xjPEveV nP1R7/9fAOlLhemtXm1GPBd6AK5raFMpWPQ457GpWIUrjZX8Yr6s+3grC+2fDDKb3b5G+6 gkpWVCOcjDs/FtSorXlmX84AXNDYQFoYhxX1hIJxMcmUGFX+4QZrehRmqvMhR/mRTHOwLV siqiL+25FvqGUMTixPrk3u9D1OVNEzAKRDMZpITeDziZfLoS/AplTKDRRHo+eQ== 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=1772464127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PDp8Gg7hRTIOuEHs1djeE2I6jinpeS9qRBfPPVyO9dM=; b=OvSHNz5QT/0baoCqDsWd8oijTJo44RFpU8x3wc1Htf+BWQa17EyN7YrMli8kQZvegi3q8x 8IBxGLj1FqHCJB3YA/9RtElPC4ViwCkrj1bS+JmC3VDEX+7Nyqpy5qe+JkGw7GzPDK0Owc PAUz2qAYnwWhNt7pe+u+Cf4XvqQIiLnFQCiBTptOHq2HPq3H6ee8lyq0hsxFivurC3L1hT DWhxoa/a0HXSfTWY5cbS8T5pHhIBbULXZaKenIzNOIxTDV/HwBKawnZLeEF+UqAn6P9o87 J+3IVqvUvu8/uH2wh5EtLKOTypaF/GOkwVgdiMGb1FDJy53AONYSsZakmnyrWQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPj4b4JPnzfpW for ; Mon, 02 Mar 2026 15:08:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 30a1e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 15:08:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 50a7a38ea79f - stable/15 - elf_common.h: Add some AArch32 relocations 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 50a7a38ea79f05b2da38352629802c346aeb55d6 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 15:08:47 +0000 Message-Id: <69a5a7ff.30a1e.db989aa@gitrepo.freebsd.org> The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=50a7a38ea79f05b2da38352629802c346aeb55d6 commit 50a7a38ea79f05b2da38352629802c346aeb55d6 Author: Ed Maste AuthorDate: 2026-02-12 21:18:32 +0000 Commit: Ed Maste CommitDate: 2026-03-02 15:08:36 +0000 elf_common.h: Add some AArch32 relocations Reviewed by: mmel Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D55268 (cherry picked from commit 10ac7413c060b1496ef54e2338f487ea84f66206) --- sys/sys/elf_common.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index efda38279848..7e1b01f9760c 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -1120,6 +1120,19 @@ typedef struct { #define R_ARM_GOTPC 25 /* Add PC-relative GOT table address. */ #define R_ARM_GOT32 26 /* Add PC-relative GOT offset. */ #define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */ +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 #define R_ARM_GNU_VTENTRY 100 #define R_ARM_GNU_VTINHERIT 101 #define R_ARM_RSBREL32 250 From nobody Mon Mar 2 15:10: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 4fPj6t6h8Qz6SpB0 for ; Mon, 02 Mar 2026 15:10: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 4fPj6t5rSbz3gLG for ; Mon, 02 Mar 2026 15:10:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772464246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K8meAN84pvgp5CFLvCXiPid7/AjKGD8w2+VsbxbAgs8=; b=MEPc/+dDbXxG/nVCZXlaZx7Cj6kHdpRXMM5+9pe1y8oEiSAGTXi67k2oqKFV3gvOHCEbgS xAEF8vDw9DTTLScinrJhdbcWB0m58kwDI46iXFtcbaS7gpjrUaJ2T7Sjb9CoAX3nAwAFyh ZZHbS6LY9hK0R9/Ss6WFpJHdw1gnZa+c6ripwSF73Aq+/Exsfbn37xBzopc5VMUv4HMlEU k0Zwg/7fTbo+Z2wcQCtuD/scSmC6N06b+A2P8y9OA9HCmErFkr6EbRn15NGoWd+KGMBNXh rNhTRlncPd3fqtbsqKNHOuSMxkCZExUObEdKgvDdnUXdgQ7mBOpJnd/7gh/ozQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772464246; a=rsa-sha256; cv=none; b=qQFqljy1Dpu/yfuDtKcQ/cdaHgfxOFWxz5aqBv+MAKilwgpJR9BtZ1AghBKZ2n0xqV2v2j xfPDae8km+M9+Q0cQL6zgK6sufqc0L+jI3mUfsi3KRpNF1b8GGFPU7M2KnJrCvG9SCps4N QlTDN+qtqSc9lSxkZGUKz/rcTWZKmBskx3ZLzN48dP2pp2RyC+xjcwqlqRb0ApUK+OT4R7 HGZrNa01UapV242Q+6bILHqD2R3WNNc+aJmyXCMyKwuTDHPXdhG4ycDOjQ7XDEvIWob6Tn JIAaj5CNl1NH506wG0Ue+V0XECwb/+ogwFnzmdapbKL0uOGdnafdcZPJmwqy/w== 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=1772464246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K8meAN84pvgp5CFLvCXiPid7/AjKGD8w2+VsbxbAgs8=; b=XI132VZjyOpXUaKoA5OihaKq4KOP5LOebbdj+HzSXngNv7NEtP46gmrC3kZ/Y7e8vr7ixp UkSPnZB8kDQdogtYI5kWMkXL/4NnRHTQFctcN4zNOLdTOglpkXvQd0bDCLg883Y4wFzvXQ 2bwlaPzEbMmhDMoOGGIPVAuaxX6l0vZRO2sI2F2bXP8ntfms+gAJGAsAUJ/Vij5OCEF/EV hg7eeJGbI9MkZAwvNaiec+hyily+PGNFfKioQfF/nGGws0vl/Lf/Y1xewexAm2/z6MMtuy nun23vM/yAVqCrO/vItSSWKZAjBM9u9+rzD3rSKSCcA44XVXoB/voTvvOsdPpw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPj6t5Rn9zgp9 for ; Mon, 02 Mar 2026 15:10:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 31f58 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 15:10:46 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: acf90e2e3375 - stable/15 - elf_common.h: Sort SHT_ entries 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: acf90e2e337572737e73567eacf655e44df760c0 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 15:10:46 +0000 Message-Id: <69a5a876.31f58.58510be7@gitrepo.freebsd.org> The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=acf90e2e337572737e73567eacf655e44df760c0 commit acf90e2e337572737e73567eacf655e44df760c0 Author: Ed Maste AuthorDate: 2026-02-24 14:26:55 +0000 Commit: Ed Maste CommitDate: 2026-03-02 15:09:54 +0000 elf_common.h: Sort SHT_ entries Reviewed by: jrtc27 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D55488 (cherry picked from commit 0ff08b8c402b3c555125e4c72df0b80b4d084d56) --- sys/sys/elf_common.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index 43500fe5d51e..43707fabbd30 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -469,8 +469,6 @@ typedef struct { #define SHT_HISUNW 0x6fffffff #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ #define SHT_LOPROC 0x70000000 /* reserved range for processor */ -#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ -#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND #define SHT_ARM_EXIDX 0x70000001 /* Exception index table. */ #define SHT_ARM_PREEMPTMAP 0x70000002 /* BPABI DLL dynamic linking @@ -511,6 +509,9 @@ typedef struct { #define SHT_SPARC_GOTDATA 0x70000000 +#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ +#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND + #define SHTORDERED #define SHT_HIPROC 0x7fffffff /* specific section header types */ #define SHT_LOUSER 0x80000000 /* reserved range for application */ From nobody Mon Mar 2 15:10: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 4fPj6z0ZGnz6Sp7D for ; Mon, 02 Mar 2026 15:10: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 4fPj6y6M9Cz3gXV for ; Mon, 02 Mar 2026 15:10:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772464250; 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=vwKj+rTA0PBcm5UALG0zTHiQZJ9IH5S8jO4LUO88BXM=; b=F7sFY0OmeSAsabSRdEnjO6uf5D8XjzRfudV7by6FPWUD2x5M1UVj8qRroOjK4i1sBlAmB3 0g5sXmLNXN3LrzKpqk621dqYSrd6RouMNseHY0OJbiVKLqIok3oyDh3kXBab/QI7kh3zuO lArS9RO5japlUZTlbZDnwTpiLsTr8K5ViqH28s4Okdv2GVs7XywOkgG7btBZO7vDGh2uad xE9AqYJKmp4hPlSvYJGiJvn1Lp4a7gihl4ggEATCcx9TwqG+peSgFGdQk87qWm1WbLHllJ qW6pnNYzHgcS2atVMbA6dCV9bCOoIDfJRGkYcRkX1+KSuOk0yLiokF5kHzoMIA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772464250; a=rsa-sha256; cv=none; b=GphnGdINly5D5zCqgDjn+SQbphLmRo7ufQBOJpbV7Qu0shUnjqhkVV0K7xhzwZQHn5Dvse Q+J2Sm5PvNAeci6dPKUUGsuIUqQtvEfQDCCgFkyzuw7xN48AlhsT1pPmnvtWU/d//HrjJD tCIwCtC46Aw5fAr7GtY2VQrLMvSIsxziYPjEkAgl/zmcMbKxSyGCZL7ieBQx8fRT3flAlr KUGuD6xDr8P7FvkixDijipPduvqvciHBivxNL7jJTh1DEaXLk2JMKbG1GSX1BUxDCtvjxm 9sW5wRknuQ1J13GU3sXyk5J6ny/PbGzLclVXE+4gXFF4/kH0i3ngnezZJ1Hlag== 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=1772464250; 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=vwKj+rTA0PBcm5UALG0zTHiQZJ9IH5S8jO4LUO88BXM=; b=eGeLu3PjRqQfwihKBlWoa8hpIHvFYAxY2rMb1Rt8Q5qTgqDtOvTDMQzePRha981OArjT6g mgEWTJrPFiYYHsyWwBNXANhorTZ2FIl9efIslC79vg2L6PVrDbfSI1HSKIK15rEyJwHBBK q3wK56pm7I501kgsuuO18XkpcOuJRAhPxVzleGAAwzXk+YlmK8j5kRM8Ox0vbHY+snR9hO IZmS43lxVvrxcua4W7VbeWyL7r5PYyHeTc9dE9xQ0CedoiKD2vbE9qoQrmIYHEPAoJ0cmQ VhZOPEk0KrHpb0S6qMibz15cwHNH7B+1OHhP42PTVINeUv3khH1WW5emnjOn3g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fPj6y5p09zfmL for ; Mon, 02 Mar 2026 15:10:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3205b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Mar 2026 15:10:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Jessica Clarke From: Ed Maste Subject: git: 2b6ba65cee4e - stable/15 - sys: Restore sorting in sys/elf_common.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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2b6ba65cee4e2e4f0cddfb32c4e21b6e20fa89e6 Auto-Submitted: auto-generated Date: Mon, 02 Mar 2026 15:10:45 +0000 Message-Id: <69a5a875.3205b.29426474@gitrepo.freebsd.org> The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=2b6ba65cee4e2e4f0cddfb32c4e21b6e20fa89e6 commit 2b6ba65cee4e2e4f0cddfb32c4e21b6e20fa89e6 Author: Jessica Clarke AuthorDate: 2026-02-24 13:52:21 +0000 Commit: Ed Maste CommitDate: 2026-03-02 15:09:54 +0000 sys: Restore sorting in sys/elf_common.h These various definitions are meant to be kept sorted by machine prefix. Fixes: 2bb61497ca76 ("elf_common.h: Add definitions for LoongArch ELF files") (cherry picked from commit b7ef4f4b230f01968473269f280bd7e4e86a3ec9) --- sys/sys/elf_common.h | 350 +++++++++++++++++++++++++-------------------------- 1 file changed, 175 insertions(+), 175 deletions(-) diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index 7e1b01f9760c..43500fe5d51e 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -345,6 +345,25 @@ typedef struct { #define EF_ARM_VFP_FLOAT EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */ #define EF_ARM_MAVERICK_FLOAT 0x00000800 +/* + * Loongson LoongArch Specific e_flags + * + * Definitions from LoongArch ELF psABI v2.01. + * Reference: https://github.com/loongson/LoongArch-Documentation + * (commit hash 296de4def055c871809068e0816325a4ac04eb12) + */ + +/* LoongArch Base ABI Modifiers */ +#define EF_LOONGARCH_ABI_SOFT_FLOAT 0x00000001 +#define EF_LOONGARCH_ABI_SINGLE_FLOAT 0x00000002 +#define EF_LOONGARCH_ABI_DOUBLE_FLOAT 0x00000003 +#define EF_LOONGARCH_ABI_MODIFIER_MASK 0x00000007 + +/* LoongArch Object file ABI versions */ +#define EF_LOONGARCH_OBJABI_V0 0x00000000 +#define EF_LOONGARCH_OBJABI_V1 0x00000040 +#define EF_LOONGARCH_OBJABI_MASK 0x000000C0 + #define EF_MIPS_NOREORDER 0x00000001 #define EF_MIPS_PIC 0x00000002 /* Contains PIC code */ #define EF_MIPS_CPIC 0x00000004 /* STD PIC calling sequence */ @@ -383,25 +402,6 @@ typedef struct { #define EF_RISCV_RVE 0x00000008 #define EF_RISCV_TSO 0x00000010 -/* - * Loongson LoongArch Specific e_flags - * - * Definitions from LoongArch ELF psABI v2.01. - * Reference: https://github.com/loongson/LoongArch-Documentation - * (commit hash 296de4def055c871809068e0816325a4ac04eb12) - */ - -/* LoongArch Base ABI Modifiers */ -#define EF_LOONGARCH_ABI_SOFT_FLOAT 0x00000001 -#define EF_LOONGARCH_ABI_SINGLE_FLOAT 0x00000002 -#define EF_LOONGARCH_ABI_DOUBLE_FLOAT 0x00000003 -#define EF_LOONGARCH_ABI_MODIFIER_MASK 0x00000007 - -/* LoongArch Object file ABI versions */ -#define EF_LOONGARCH_OBJABI_V0 0x00000000 -#define EF_LOONGARCH_OBJABI_V1 0x00000040 -#define EF_LOONGARCH_OBJABI_MASK 0x000000C0 - #define EF_SPARC_EXT_MASK 0x00ffff00 #define EF_SPARC_32PLUS 0x00000100 #define EF_SPARC_SUN_US1 0x00000200 @@ -1224,6 +1224,162 @@ typedef struct { #define R_IA_64_DTPREL64LSB 0xb7 /* word64 LSB @dtprel(S + A) */ #define R_IA_64_LTOFF_DTPREL22 0xba /* imm22 @ltoff(@dtprel(S+A)) */ +/* + * Loongson LoongArch relocation types. + * + * LoongArch ELF psABI: https://github.com/loongson/LoongArch-Documentation + * (commit hash 9b3bd9f4a497115913c22f1a2a47863798fbc02a) + */ + +/* Relocation types used by the dynamic linker */ +#define R_LARCH_NONE 0 +#define R_LARCH_32 1 +#define R_LARCH_64 2 +#define R_LARCH_RELATIVE 3 +#define R_LARCH_COPY 4 +#define R_LARCH_JUMP_SLOT 5 +#define R_LARCH_TLS_DTPMOD32 6 +#define R_LARCH_TLS_DTPMOD64 7 +#define R_LARCH_TLS_DTPREL32 8 +#define R_LARCH_TLS_DTPREL64 9 +#define R_LARCH_TLS_TPREL32 10 +#define R_LARCH_TLS_TPREL64 11 +#define R_LARCH_IRELATIVE 12 +#define R_LARCH_MARK_LA 20 +#define R_LARCH_MARK_PCREL 21 +#define R_LARCH_SOP_PUSH_PCREL 22 +#define R_LARCH_SOP_PUSH_ABSOLUTE 23 +#define R_LARCH_SOP_PUSH_DUP 24 +#define R_LARCH_SOP_PUSH_GPREL 25 +#define R_LARCH_SOP_PUSH_TLS_TPREL 26 +#define R_LARCH_SOP_PUSH_TLS_GOT 27 +#define R_LARCH_SOP_PUSH_TLS_GD 28 +#define R_LARCH_SOP_PUSH_PLT_PCREL 29 +#define R_LARCH_SOP_ASSERT 30 +#define R_LARCH_SOP_NOT 31 +#define R_LARCH_SOP_SUB 32 +#define R_LARCH_SOP_SL 33 +#define R_LARCH_SOP_SR 34 +#define R_LARCH_SOP_ADD 35 +#define R_LARCH_SOP_AND 36 +#define R_LARCH_SOP_IF_ELSE 37 +#define R_LARCH_SOP_POP_32_S_10_5 38 +#define R_LARCH_SOP_POP_32_U_10_12 39 +#define R_LARCH_SOP_POP_32_S_10_12 40 +#define R_LARCH_SOP_POP_32_S_10_16 41 +#define R_LARCH_SOP_POP_32_S_10_16_S2 42 +#define R_LARCH_SOP_POP_32_S_5_20 43 +#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2 44 +#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45 +#define R_LARCH_SOP_POP_32_U 46 +#define R_LARCH_ADD8 47 +#define R_LARCH_ADD16 48 +#define R_LARCH_ADD24 49 +#define R_LARCH_ADD32 50 +#define R_LARCH_ADD64 51 +#define R_LARCH_SUB8 52 +#define R_LARCH_SUB16 53 +#define R_LARCH_SUB24 54 +#define R_LARCH_SUB32 55 +#define R_LARCH_SUB64 56 +#define R_LARCH_GNU_VTINHERIT 57 +#define R_LARCH_GNU_VTENTRY 58 + +/* + * Relocs whose processing do not require a stack machine. + * + * Spec addition: https://github.com/loongson/LoongArch-Documentation/pull/57 + */ +#define R_LARCH_B16 64 +#define R_LARCH_B21 65 +#define R_LARCH_B26 66 +#define R_LARCH_ABS_HI20 67 +#define R_LARCH_ABS_LO12 68 +#define R_LARCH_ABS64_LO20 69 +#define R_LARCH_ABS64_HI12 70 +#define R_LARCH_PCALA_HI20 71 +#define R_LARCH_PCALA_LO12 72 +#define R_LARCH_PCALA64_LO20 73 +#define R_LARCH_PCALA64_HI12 74 +#define R_LARCH_GOT_PC_HI20 75 +#define R_LARCH_GOT_PC_LO12 76 +#define R_LARCH_GOT64_PC_LO20 77 +#define R_LARCH_GOT64_PC_HI12 78 +#define R_LARCH_GOT_HI20 79 +#define R_LARCH_GOT_LO12 80 +#define R_LARCH_GOT64_LO20 81 +#define R_LARCH_GOT64_HI12 82 +#define R_LARCH_TLS_LE_HI20 83 +#define R_LARCH_TLS_LE_LO12 84 +#define R_LARCH_TLS_LE64_LO20 85 +#define R_LARCH_TLS_LE64_HI12 86 +#define R_LARCH_TLS_IE_PC_HI20 87 +#define R_LARCH_TLS_IE_PC_LO12 88 +#define R_LARCH_TLS_IE64_PC_LO20 89 +#define R_LARCH_TLS_IE64_PC_HI12 90 +#define R_LARCH_TLS_IE_HI20 91 +#define R_LARCH_TLS_IE_LO12 92 +#define R_LARCH_TLS_IE64_LO20 93 +#define R_LARCH_TLS_IE64_HI12 94 +#define R_LARCH_TLS_LD_PC_HI20 95 +#define R_LARCH_TLS_LD_HI20 96 +#define R_LARCH_TLS_GD_PC_HI20 97 +#define R_LARCH_TLS_GD_HI20 98 +#define R_LARCH_32_PCREL 99 +#define R_LARCH_RELAX 100 + +/* + * Relocs added in ELF for the LoongArch™ Architecture v20230519, part of the + * v2.10 LoongArch ABI specs. + * + * Spec addition: https://github.com/loongson/la-abi-specs/pull/1 + * + * Note that the 101 and 104 relocation numbers are defined as R_LARCH_DELETE + * and R_LARCH_CFA respectively in psABI 2.10. But they are marked as reserved + * in psABI v2.20 because they were proved not necessary to be exposed outside + * of the linker. + */ +#define R_LARCH_ALIGN 102 +#define R_LARCH_PCREL20_S2 103 +#define R_LARCH_ADD6 105 +#define R_LARCH_SUB6 106 +#define R_LARCH_ADD_ULEB128 107 +#define R_LARCH_SUB_ULEB128 108 +#define R_LARCH_64_PCREL 109 + +/* + * Relocs added in ELF for the LoongArch™ Architecture v20231102, part of the + * v2.20 LoongArch ABI specs. + * + * Spec addition: https://github.com/loongson/la-abi-specs/pull/4 + */ +#define R_LARCH_CALL36 110 + +/* + * Relocs added in ELF for the LoongArch™ Architecture v20231219, part of the + * v2.30 LoongArch ABI specs. + * + * Spec addition: https://github.com/loongson/la-abi-specs/pull/5 + */ +#define R_LARCH_TLS_DESC32 13 +#define R_LARCH_TLS_DESC64 14 +#define R_LARCH_TLS_DESC_PC_HI20 111 +#define R_LARCH_TLS_DESC_PC_LO12 112 +#define R_LARCH_TLS_DESC64_PC_LO20 113 +#define R_LARCH_TLS_DESC64_PC_HI12 114 +#define R_LARCH_TLS_DESC_HI20 115 +#define R_LARCH_TLS_DESC_LO12 116 +#define R_LARCH_TLS_DESC64_LO20 117 +#define R_LARCH_TLS_DESC64_HI12 118 +#define R_LARCH_TLS_DESC_LD 119 +#define R_LARCH_TLS_DESC_CALL 120 +#define R_LARCH_TLS_LE_HI20_R 121 +#define R_LARCH_TLS_LE_ADD_R 122 +#define R_LARCH_TLS_LE_LO12_R 123 +#define R_LARCH_TLS_LD_PCREL20_S2 124 +#define R_LARCH_TLS_GD_PCREL20_S2 125 +#define R_LARCH_TLS_DESC_PCREL20_S2 126 + #define R_MIPS_NONE 0 /* No reloc */ #define R_MIPS_16 1 /* Direct 16 bit */ #define R_MIPS_32 2 /* Direct 32 bit */ @@ -1424,162 +1580,6 @@ typedef struct { #define R_RISCV_TLSDESC_CALL 65 #define R_RISCV_VENDOR 191 -/* - * Loongson LoongArch relocation types. - * - * LoongArch ELF psABI: https://github.com/loongson/LoongArch-Documentation - * (commit hash 9b3bd9f4a497115913c22f1a2a47863798fbc02a) - */ - -/* Relocation types used by the dynamic linker */ -#define R_LARCH_NONE 0 -#define R_LARCH_32 1 -#define R_LARCH_64 2 -#define R_LARCH_RELATIVE 3 -#define R_LARCH_COPY 4 -#define R_LARCH_JUMP_SLOT 5 -#define R_LARCH_TLS_DTPMOD32 6 -#define R_LARCH_TLS_DTPMOD64 7 -#define R_LARCH_TLS_DTPREL32 8 -#define R_LARCH_TLS_DTPREL64 9 -#define R_LARCH_TLS_TPREL32 10 -#define R_LARCH_TLS_TPREL64 11 -#define R_LARCH_IRELATIVE 12 -#define R_LARCH_MARK_LA 20 -#define R_LARCH_MARK_PCREL 21 -#define R_LARCH_SOP_PUSH_PCREL 22 -#define R_LARCH_SOP_PUSH_ABSOLUTE 23 -#define R_LARCH_SOP_PUSH_DUP 24 -#define R_LARCH_SOP_PUSH_GPREL 25 -#define R_LARCH_SOP_PUSH_TLS_TPREL 26 -#define R_LARCH_SOP_PUSH_TLS_GOT 27 -#define R_LARCH_SOP_PUSH_TLS_GD 28 -#define R_LARCH_SOP_PUSH_PLT_PCREL 29 -#define R_LARCH_SOP_ASSERT 30 -#define R_LARCH_SOP_NOT 31 -#define R_LARCH_SOP_SUB 32 -#define R_LARCH_SOP_SL 33 -#define R_LARCH_SOP_SR 34 -#define R_LARCH_SOP_ADD 35 -#define R_LARCH_SOP_AND 36 -#define R_LARCH_SOP_IF_ELSE 37 -#define R_LARCH_SOP_POP_32_S_10_5 38 -#define R_LARCH_SOP_POP_32_U_10_12 39 -#define R_LARCH_SOP_POP_32_S_10_12 40 -#define R_LARCH_SOP_POP_32_S_10_16 41 -#define R_LARCH_SOP_POP_32_S_10_16_S2 42 -#define R_LARCH_SOP_POP_32_S_5_20 43 -#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2 44 -#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45 -#define R_LARCH_SOP_POP_32_U 46 -#define R_LARCH_ADD8 47 -#define R_LARCH_ADD16 48 -#define R_LARCH_ADD24 49 -#define R_LARCH_ADD32 50 -#define R_LARCH_ADD64 51 -#define R_LARCH_SUB8 52 -#define R_LARCH_SUB16 53 -#define R_LARCH_SUB24 54 -#define R_LARCH_SUB32 55 -#define R_LARCH_SUB64 56 -#define R_LARCH_GNU_VTINHERIT 57 -#define R_LARCH_GNU_VTENTRY 58 - -/* - * Relocs whose processing do not require a stack machine. - * - * Spec addition: https://github.com/loongson/LoongArch-Documentation/pull/57 - */ -#define R_LARCH_B16 64 -#define R_LARCH_B21 65 -#define R_LARCH_B26 66 -#define R_LARCH_ABS_HI20 67 -#define R_LARCH_ABS_LO12 68 -#define R_LARCH_ABS64_LO20 69 -#define R_LARCH_ABS64_HI12 70 -#define R_LARCH_PCALA_HI20 71 -#define R_LARCH_PCALA_LO12 72 -#define R_LARCH_PCALA64_LO20 73 -#define R_LARCH_PCALA64_HI12 74 -#define R_LARCH_GOT_PC_HI20 75 -#define R_LARCH_GOT_PC_LO12 76 -#define R_LARCH_GOT64_PC_LO20 77 -#define R_LARCH_GOT64_PC_HI12 78 -#define R_LARCH_GOT_HI20 79 -#define R_LARCH_GOT_LO12 80 -#define R_LARCH_GOT64_LO20 81 -#define R_LARCH_GOT64_HI12 82 -#define R_LARCH_TLS_LE_HI20 83 -#define R_LARCH_TLS_LE_LO12 84 -#define R_LARCH_TLS_LE64_LO20 85 -#define R_LARCH_TLS_LE64_HI12 86 -#define R_LARCH_TLS_IE_PC_HI20 87 -#define R_LARCH_TLS_IE_PC_LO12 88 -#define R_LARCH_TLS_IE64_PC_LO20 89 -#define R_LARCH_TLS_IE64_PC_HI12 90 -#define R_LARCH_TLS_IE_HI20 91 -#define R_LARCH_TLS_IE_LO12 92 -#define R_LARCH_TLS_IE64_LO20 93 -#define R_LARCH_TLS_IE64_HI12 94 -#define R_LARCH_TLS_LD_PC_HI20 95 -#define R_LARCH_TLS_LD_HI20 96 -#define R_LARCH_TLS_GD_PC_HI20 97 -#define R_LARCH_TLS_GD_HI20 98 -#define R_LARCH_32_PCREL 99 -#define R_LARCH_RELAX 100 - -/* - * Relocs added in ELF for the LoongArch™ Architecture v20230519, part of the - * v2.10 LoongArch ABI specs. - * - * Spec addition: https://github.com/loongson/la-abi-specs/pull/1 - * - * Note that the 101 and 104 relocation numbers are defined as R_LARCH_DELETE - * and R_LARCH_CFA respectively in psABI 2.10. But they are marked as reserved - * in psABI v2.20 because they were proved not necessary to be exposed outside - * of the linker. - */ -#define R_LARCH_ALIGN 102 -#define R_LARCH_PCREL20_S2 103 -#define R_LARCH_ADD6 105 -#define R_LARCH_SUB6 106 -#define R_LARCH_ADD_ULEB128 107 -#define R_LARCH_SUB_ULEB128 108 -#define R_LARCH_64_PCREL 109 - -/* - * Relocs added in ELF for the LoongArch™ Architecture v20231102, part of the - * v2.20 LoongArch ABI specs. - * - * Spec addition: https://github.com/loongson/la-abi-specs/pull/4 - */ -#define R_LARCH_CALL36 110 - -/* - * Relocs added in ELF for the LoongArch™ Architecture v20231219, part of the - * v2.30 LoongArch ABI specs. - * - * Spec addition: https://github.com/loongson/la-abi-specs/pull/5 - */ -#define R_LARCH_TLS_DESC32 13 -#define R_LARCH_TLS_DESC64 14 -#define R_LARCH_TLS_DESC_PC_HI20 111 -#define R_LARCH_TLS_DESC_PC_LO12 112 -#define R_LARCH_TLS_DESC64_PC_LO20 113 -#define R_LARCH_TLS_DESC64_PC_HI12 114 -#define R_LARCH_TLS_DESC_HI20 115 -#define R_LARCH_TLS_DESC_LO12 116 -#define R_LARCH_TLS_DESC64_LO20 117 -#define R_LARCH_TLS_DESC64_HI12 118 -#define R_LARCH_TLS_DESC_LD 119 -#define R_LARCH_TLS_DESC_CALL 120 -#define R_LARCH_TLS_LE_HI20_R 121 -#define R_LARCH_TLS_LE_ADD_R 122 -#define R_LARCH_TLS_LE_LO12_R 123 -#define R_LARCH_TLS_LD_PCREL20_S2 124 -#define R_LARCH_TLS_GD_PCREL20_S2 125 -#define R_LARCH_TLS_DESC_PCREL20_S2 126 - #define R_SPARC_NONE 0 #define R_SPARC_8 1 #define R_SPARC_16 2 From nobody Wed Mar 4 01:20: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 4fQZbp0F8wz6Tvcf for ; Wed, 04 Mar 2026 01:20: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 4fQZbn5FLsz3LRV for ; Wed, 04 Mar 2026 01:20:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772587221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=d48xqy2nkTOYG1rqQ7/DO9pDwaOdfAHFlhpcwwfSEPY=; b=khCfh/fA0WcdIvIyInUDAMm422dr29mqJiZ/mUlKk6qY9OfeAuOw9fVaW59gTsb7tlzjaS gbYYZgoI3R0OKHTHNSBjRN/D6GfoZp2XY3uSS9qa6IyLKTmoDrMdFShEZJzCt7/06gQb1j ego02aFj/ukiAbaS9HuXs+CDB3NTJajx5HLz3tcie5fRibGg2nZDOCL/7b3XqhUWeiosyr U30okaD9MEtqlopiMdiGVOaVaqMp4MeKjj3yCyIKMMIhDsnOYvr/ZPU/tpGSo6zNylR1Kj s3W4fFGZ9ed6/ZtJV1MOyRMHFpYUhsubBGfT9oHSL6PLkfTtqAUrEx2Phw878g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772587221; a=rsa-sha256; cv=none; b=bDArbUu1ioKc+AhMidgH7usToCazkuIS8zm4eQyJReWQUNwiDhPbCxJs2WVeo+JMNYsFqt 9r3EJ+HcMewCNS0+ebzbdbm1tnYm/QuLme1WmBjgauBd3y5q5/PBUwDH+5YRUUIIU1UXiF daop9rUOKxW1WLhYzaelQ5JMAccxr9BRVf1DVZ+X6V6dUpOW2kGFKPBGPlfmDvkH34ypvb TYH4yfH+6jH912VbUEJIOUdzboeWL2cBBysHmY1y6ZKRQW4yMIMFmq0TJNX/D+qJGwMlnp TvDeT71H3wLtHZHpS9ibLIYX3O+o59oYxk224iwc378uWAg9EwEPhCft4Grh5A== 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=1772587221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=d48xqy2nkTOYG1rqQ7/DO9pDwaOdfAHFlhpcwwfSEPY=; b=h0P9Gsu/B8RRsHSdNppdpDix4LhYRG5I2Q2cmDd1cHsDcyvMxb+AzpIQ4iRvaZ1YmCp051 8N+4ZdxSfffd2hh883CzZJJcTug/jfh4jyELc+x5bifabGAMdpuOXv1fqbbN4gv0FCrFXJ HTfzX36W1MbuSHSQp689kifj+KA5C443PzNsnsuKNRTdseEzZu3eJ6eGufe4kKCJEklIh6 uWPQt2CKr9yJUJUDAuMUoYsbEEstLcDgClf51Zw4ss/y/sn11MmblHqWaqepch6EH2l8SC bLDNE2uu6ujclzHeuAdofQptpKIdFLi7LxOz58t+q04tB6rplL40LNhLYWGcQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQZbn43WxzTMy for ; Wed, 04 Mar 2026 01:20:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19481 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 01:20:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: fd53b8d609da - stable/15 - ipsec_offload: add comment stating why ipsec_accel_sa_newkey_cb() returns 0 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: fd53b8d609da8c83b43171e1d94a44fa2d505ff1 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 01:20:21 +0000 Message-Id: <69a788d5.19481.752b7da7@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd53b8d609da8c83b43171e1d94a44fa2d505ff1 commit fd53b8d609da8c83b43171e1d94a44fa2d505ff1 Author: Konstantin Belousov AuthorDate: 2026-02-04 02:34:59 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-04 01:15:59 +0000 ipsec_offload: add comment stating why ipsec_accel_sa_newkey_cb() returns 0 (cherry picked from commit 0e5caac7d543687d540fa83a7125726c7c9e6e58) --- sys/netipsec/ipsec_offload.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/netipsec/ipsec_offload.c b/sys/netipsec/ipsec_offload.c index 09c57d0a54cc..21a2e24518d7 100644 --- a/sys/netipsec/ipsec_offload.c +++ b/sys/netipsec/ipsec_offload.c @@ -343,6 +343,13 @@ ipsec_accel_sa_newkey_cb(if_t ifp, void *arg) } } out: + /* + * Return 0, ignoring any errors from the SA installation. + * This function is a callback for if_foreach_sleep(), which + * stops iteration if one of the callbacks returns non-zero. + * We need to offer the SA to all interfaces that could + * offload it. + */ return (0); } From nobody Wed Mar 4 01:20: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 4fQZbm75GJz6Tvcd for ; Wed, 04 Mar 2026 01:20: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 4fQZbm5DPtz3LK4 for ; Wed, 04 Mar 2026 01:20:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772587220; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yW+ogvKMacz0No/LvzXlL2ECj9glJqzYAXPz7iDXgvE=; b=EFqIfEfUx9ck9cHHIVXH5ZeNmeS75hV4/Excfgozl2WQNQm12sWEC7g3VRU/1Cqj9//hax d5tNQGbDYhsqZjM1QafBXdigDDI7o42Gz0cd++9nFb9Wh2DWh8azwx85Gs9NVZI++qKlaJ fwSg011i6narxNGtD83NUeF+PVi854yLGell8HXurYFFRv03v8KE+OV6YeWg6ogtbTexVU 2Imfd/UM53LbPUi1yhfdaRadlvwC30560LwVvrgAMXx+PCxGJhvQQgi/Zx7Ed+swpjQYgr wjSXbl9d4D+l7JbYoRmUJ7GMqdlVB8sdNoDHcyAF7W1ZYLUKM6qQcopLxALjEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772587220; a=rsa-sha256; cv=none; b=vuHOkBJUFdDq9Hmbm7xhw6cqPfffw2IIBJJI7YYwSr3BSCgw5aRsO3KImRYtCBsGx/ih5e 4qjYqB9OC7vFk7BfLPxUtaOIyYMMpc4SQZJ6wVPGu2OvfTN4BCez1Y2TtQUy9TYQeu8sZa DStkusSWvOpk7QZEr+DNTMd29u4Ay8V82pUhYP223hjLmBhJPLfsHcSuF0NoEy3bh7mGbj VwPKdAGp2DHKh6kKNnt88me5ylpG4SnHuHveVAk8sfhrFZCTzuAQk5U5U87ErcAuy9k2oj EmTni8EO9zkQTuMKdE1d++ot13x8xE+cdDEp47nplzlpKM+f+CAHZzzsw5rKCw== 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=1772587220; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yW+ogvKMacz0No/LvzXlL2ECj9glJqzYAXPz7iDXgvE=; b=iMTs+kz+JyXSA2lQZwv2WNZY9mdcGPmRE/PPsyf+mws0PudjcSqkaQZD2uA4d16OUdRsNd FRoP2SSz2mkEPbA734QZWS8zzpBNTQfm5oEM8eVF5Poo46wLdDhQ5HSvBLdGfG1/+N9aes qodo5Hf582clPP8AxrLw8gaH1gP+fbfo8oZloYu3NMYF5OFV8DRK3ze4pSJFRZw07HQDHz MDjN2DHCMidS2ILFKHWH9+0SQ5rBrrMe6DpIzI/ntA3RP/Cx1ZcuT7B21WGbCIbg1/+39P Ew/kI6C/12ALMBNzDOxa39yGH5vR7ard3rLOBPPNeizJLWmiYmjnKODzGuEUTA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQZbm4SDpzTHr for ; Wed, 04 Mar 2026 01:20:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18479 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 01:20:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: cda061006a3f - stable/15 - netipsec/ipsec_offload.c: handle failures to install SA nicely 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: cda061006a3f84557c7f958049edfdd0985081e6 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 01:20:20 +0000 Message-Id: <69a788d4.18479.70f6e1e5@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=cda061006a3f84557c7f958049edfdd0985081e6 commit cda061006a3f84557c7f958049edfdd0985081e6 Author: Konstantin Belousov AuthorDate: 2026-01-27 01:00:36 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-04 01:15:59 +0000 netipsec/ipsec_offload.c: handle failures to install SA nicely (cherry picked from commit 477f020c7b5453bcd3bff7f1491e9830027b271e) --- sys/netipsec/ipsec_offload.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/sys/netipsec/ipsec_offload.c b/sys/netipsec/ipsec_offload.c index 3583fc50f51b..09c57d0a54cc 100644 --- a/sys/netipsec/ipsec_offload.c +++ b/sys/netipsec/ipsec_offload.c @@ -308,23 +308,38 @@ ipsec_accel_sa_newkey_cb(if_t ifp, void *arg) dprintf("ipsec_accel_sa_newkey: driver " "refused sa if %s spi %#x\n", if_name(ifp), be32toh(tq->sav->spi)); - error = ipsec_accel_handle_sav(tq->sav, - ifp, drv_spi, priv, IFP_HS_REJECTED, NULL); - /* XXXKIB */ } else { dprintf("ipsec_accel_sa_newkey: driver " "error %d if %s spi %#x\n", error, if_name(ifp), be32toh(tq->sav->spi)); - /* XXXKIB */ + } + error = ipsec_accel_handle_sav(tq->sav, ifp, drv_spi, priv, + IFP_HS_REJECTED, NULL); + if (error != 0) { + dprintf("ipsec_accel_sa_newkey: handle_sav REJECTED " + "err %d if %s spi %#x\n", error, + if_name(ifp), be32toh(tq->sav->spi)); + free_unr(drv_spi_unr, drv_spi); } } else { error = ipsec_accel_handle_sav(tq->sav, ifp, drv_spi, priv, IFP_HS_HANDLED, NULL); if (error != 0) { - /* XXXKIB */ - dprintf("ipsec_accel_sa_newkey: handle_sav " + dprintf("ipsec_accel_sa_newkey: handle_sav HANDLED " "err %d if %s spi %#x\n", error, if_name(ifp), be32toh(tq->sav->spi)); + error = ifp->if_ipsec_accel_m->if_sa_deinstall(ifp, + drv_spi, priv); + if (error == 0) + free_unr(drv_spi_unr, drv_spi); + /* + * If driver refused to deinstall the SA, keep + * drv_spi leaked so that it is not reused. + * The SA is still programmed into the + * hardware with the drv_spi ident, so it is + * better to leak the drv_spi then reuse for + * another SA and have issues due to aliasing. + */ } } out: From nobody Wed Mar 4 01:20: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 4fQZbq09z7z6Tvcg for ; Wed, 04 Mar 2026 01:20:23 +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 4fQZbp5LDpz3L7P for ; Wed, 04 Mar 2026 01:20:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772587222; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8WAM7JizfM0URAVBDLPDIj/0n6u+0VsfIMewkQw3dr8=; b=Fh9epz4azIu5uTFmTEhUA30auFB2+EuIs+Xmc4opB8WeMGW2McawD2+rqMyjT/NmwJxDJD LLqOgtg80sy/oQ0pP7e8ytQi7nyOsP5DYDsLqXJMVNXd8hligqvxZ5MF2IqS5wqThw27Ii wtZNgKMnEorXoxjN1SXtgXDWnLlAhrX53C9P0AxYePzpDXldMcv+kq1C/Kc6IgmOMKdniH Ay28BNFnHfVSsGVS5iFkK0noPMq9b5ecghr8g6+ztreiyz2xJJhxTsyxlpv80sMX9m0Vje 59Q+bDMcv3VeXss/C0v6+wL+1HbHVhNtNbZKGu8ECihZ2iLquyK6bdi17SVk2w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772587222; a=rsa-sha256; cv=none; b=uv5qeiry08vlnNDLFHIkFZLEFO6NkM2bVWV/KHlH2yGm73hteE5Pj3dSmqk9JH2pxVtNX1 HZOr0LPxZ9rYcTl9cWJgFBuVbNebEtLpaRpx6edT7fTDkXDn8ewRie8KpNWAuW7LGWBOgW CmktC2Kg6HoaQXcbT0if2KoZ7Y09sUQtO2y1eYowbI5wiydRWtxRshYFf8ynMFMqiQdPk0 pFX3Sy4iOaNrGhLG4y/JypoWM7QSmwEAdPUKU8paqDfrxWXWo27X34AKLhB3giGDLdtPid t3kEPYSormSC+eM08q9zIpVWKzy45owbQ3otPfcNYx6BrJb8Wj5KohWh7bP39w== 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=1772587222; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8WAM7JizfM0URAVBDLPDIj/0n6u+0VsfIMewkQw3dr8=; b=Ru1woF4f04EITRbQe8dk6eA+pbwVdNsScjIkIH2cWwAeV+xgxaG8O9meJXxVTERTyKsu3K c9A2DYedgs4JH3m8uo+so63u3B27ka3Se7S1u5YYRjLWVTqWw3KbVoxYhgLpzssbfo93jG 5JwHdJKNoviscHpJIl1VDm/xZEEjVrYeBdanspEhsbuYm1XwOuQR94mvgAuyQDr2D4ZqVu iIYxtxoImZGfJs+kCnpApQi91VVlYQNOZrdCie2IGC/CI7Knr7SZtaQ1J6jApH/MP6t0s9 Uht0JjY7yncF6pQZ2B3iPqIAXdOr23hctm37u77GvmrKyYGx8ArE8gFYYZ/Uog== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQZbp4xMYzD9H for ; Wed, 04 Mar 2026 01:20:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18e48 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 01:20:22 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: fad7cad82c66 - stable/15 - mlx5: report IPSEC offload capabilities whenever IPSEC_OFFLOAD is configured 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: fad7cad82c6691b8c633a595e777fbf00ffa9989 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 01:20:22 +0000 Message-Id: <69a788d6.18e48.5da1be8e@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fad7cad82c6691b8c633a595e777fbf00ffa9989 commit fad7cad82c6691b8c633a595e777fbf00ffa9989 Author: Konstantin Belousov AuthorDate: 2026-01-28 05:32:53 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-04 01:15:59 +0000 mlx5: report IPSEC offload capabilities whenever IPSEC_OFFLOAD is configured (cherry picked from commit de29fd0322254127c3ebaedbc91ee4f9620f5fdf) --- sys/dev/mlx5/mlx5_accel/ipsec.h | 1 + sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c | 19 ++++++++++++++----- sys/dev/mlx5/mlx5_en/mlx5_en_main.c | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/sys/dev/mlx5/mlx5_accel/ipsec.h b/sys/dev/mlx5/mlx5_accel/ipsec.h index c3f3a2372482..8685c07e84db 100644 --- a/sys/dev/mlx5/mlx5_accel/ipsec.h +++ b/sys/dev/mlx5/mlx5_accel/ipsec.h @@ -204,6 +204,7 @@ struct mlx5e_ipsec_pol_entry { /* This function doesn't really belong here, but let's put it here for now */ void mlx5_object_change_event(struct mlx5_core_dev *dev, struct mlx5_eqe *eqe); +void mlx5e_ipsec_report(struct mlx5e_priv *priv); int mlx5e_ipsec_init(struct mlx5e_priv *priv); void mlx5e_ipsec_cleanup(struct mlx5e_priv *priv); diff --git a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c index 3f3c575c9dad..bdbad6a084d9 100644 --- a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c +++ b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c @@ -739,13 +739,14 @@ static const struct if_ipsec_accel_methods mlx5e_ipsec_funcs = { .if_hwassist = mlx5e_if_ipsec_hwassist, }; -int mlx5e_ipsec_init(struct mlx5e_priv *priv) +void +mlx5e_ipsec_report(struct mlx5e_priv *priv) { - struct mlx5_core_dev *mdev = priv->mdev; - struct mlx5e_ipsec *pipsec; - if_t ifp = priv->ifp; - int ret; + struct mlx5_core_dev *mdev; + if (!bootverbose) + return; + mdev = priv->mdev; mlx5_core_info(mdev, "ipsec " "offload %d log_max_dek %d gen_obj_types %d " "ipsec_encrypt %d ipsec_decrypt %d " @@ -775,6 +776,14 @@ int mlx5e_ipsec_init(struct mlx5e_priv *priv) MLX5_CAP_FLOWTABLE_NIC_RX(mdev, reformat_del_esp_transport_over_udp) != 0, MLX5_CAP_IPSEC(mdev, ipsec_esn) != 0); +} + +int mlx5e_ipsec_init(struct mlx5e_priv *priv) +{ + struct mlx5_core_dev *mdev = priv->mdev; + struct mlx5e_ipsec *pipsec; + if_t ifp = priv->ifp; + int ret; if (!(mlx5_ipsec_device_caps(mdev) & MLX5_IPSEC_CAP_PACKET_OFFLOAD)) { mlx5_core_dbg(mdev, "Not an IPSec offload device\n"); diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c index f83506bda1aa..78663e75e2b9 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c @@ -4736,6 +4736,9 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev) goto err_rl_init; } +#ifdef IPSEC_OFFLOAD + mlx5e_ipsec_report(priv); +#endif if ((if_getcapenable2(ifp) & IFCAP2_BIT(IFCAP2_IPSEC_OFFLOAD)) != 0) { err = mlx5e_ipsec_init(priv); if (err) { From nobody Wed Mar 4 01:20: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 4fQZbr4FT3z6Tvfx for ; Wed, 04 Mar 2026 01:20: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 4fQZbr2bW2z3LRX for ; Wed, 04 Mar 2026 01:20:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772587224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L8o1ci5HLD2xgv7GZCRrfecC/hLEUH2mqojDwJeX5Ts=; b=w5Hu4AXDwz6+k8m+e439GVTAqn3k64fVZVb5y5dPcIjWVrBmFqz1dN7INzk1gxuwXMh88H A6IHI8hnhVFEt98ba5Go+Is7DDYs9jSpJNM2CZ6ThTiEIIPdvyvC4UfBjfDH3WT1wRjW0Z UnVi0X4NGCQSW795aWNnYUuHna3Ah1SnjYw4CZWUwJMwNrbOB3AWzEVO0JK3MVMuYUsobe h9nHemqXWKnOvaEcBwVMLXxhgUbbbM8/QEvuhHD3x1YvCcy/JfWAKyuojHL6oRKovuWel9 cP2f+12fJ4qaWoMS3rNIujwBLt5mCMGG9qBjah5zpP0bfA9uaamVui7pMCoOcQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772587224; a=rsa-sha256; cv=none; b=pJCogu+PCTavpZdVUAR4gKrh6eYJYml7YmauY/JrGCA4QYnCz2cLWuN6vPem9hCtweunao /d5hBdNilkXzWw4NT/t+LrXIcNrCWsxeKRZJE9lQhr8BGqpMJB4oVsnhVpnSZNP4zUoekc SSz59wxL2+aAr45gw71P9edpj5Lj5ACV2Gt4cN+g1PJMzM6RYHhwwM5WO0d6bJ0oFXOXfq TCmsPHI3Qt/4ynRcjjdSUEc3UaEk3VRtlel/FssFclAXrGoMZE10iH91LcrJzF4nwyCcZI zZjPSH/2oLQqQF67xEIX9vornCCDGTgRfSEBpxo0r+Pv+bmFNavzwZHwGMC3/w== 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=1772587224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L8o1ci5HLD2xgv7GZCRrfecC/hLEUH2mqojDwJeX5Ts=; b=J8C0qZW5pAGc3DA336+HF+tintZ/orGFexfr2lzlIFelqOg+LPvw/pr7KTpQzeyTiSAGXX js5zfKer7KfOSb3/hMP0amN1AklqJWBEeqYox052fSW8zhC37zLl0SYcjyOwSgky8esTiE 4k+GTPLDP1x7OHJmBDRmsIh3cJeu7eh/GeojBmQ2/ovQ/m9CTosx7H8nqMp9jdHsSz1Hi1 nF8wDzSO3nr7BR1mOFapU7+ffKibmN0armAukuCDwc5f6AGRnlpg45CpitCIKm6d0YwD9P HykTWv0CSxTFuA+8BX27+Oi6ea+dTixLIEQpu5IAlD6dzwbEoHFEhR+E+utSjw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQZbq5hGHzD52 for ; Wed, 04 Mar 2026 01:20:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18b2b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 01:20:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: b17655c95c4c - stable/15 - mlx5: convert GET_TRUNK_IF() to function 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: b17655c95c4cb313355de1ffd74cb8a4dcc1a053 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 01:20:23 +0000 Message-Id: <69a788d7.18b2b.21880ab2@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b17655c95c4cb313355de1ffd74cb8a4dcc1a053 commit b17655c95c4cb313355de1ffd74cb8a4dcc1a053 Author: Konstantin Belousov AuthorDate: 2026-01-29 00:25:01 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-04 01:15:59 +0000 mlx5: convert GET_TRUNK_IF() to function (cherry picked from commit 87ca74de89e0ae96774674f7ae14d303fad5b780) --- sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c index bdbad6a084d9..325c70969306 100644 --- a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c +++ b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c @@ -418,24 +418,30 @@ err_xfrm: return err; } -#define GET_TRUNK_IF(vifp, ifp, ept) \ - if (if_gettype(vifp) == IFT_L2VLAN) { \ - NET_EPOCH_ENTER(ept); \ - ifp = VLAN_TRUNKDEV(vifp); \ - NET_EPOCH_EXIT(ept); \ - } else { \ - ifp = vifp; \ +static struct ifnet * +mlx5_get_trunk_if(struct ifnet *vifp) +{ + struct epoch_tracker et; + struct ifnet *res; + + if (if_gettype(vifp) == IFT_L2VLAN) { + NET_EPOCH_ENTER(et); + res = VLAN_TRUNKDEV(vifp); + NET_EPOCH_EXIT(et); + } else { + res = vifp; } + return (res); +} static int mlx5e_if_sa_newkey(struct ifnet *ifpo, void *sav, u_int dev_spi, void **privp) { struct mlx5e_ipsec_priv_bothdir *pb; - struct epoch_tracker et; struct ifnet *ifp; int error; - GET_TRUNK_IF(ifpo, ifp, et); + ifp = mlx5_get_trunk_if(ifpo); pb = malloc(sizeof(struct mlx5e_ipsec_priv_bothdir), M_DEVBUF, M_WAITOK | M_ZERO); @@ -478,10 +484,9 @@ static int mlx5e_if_sa_deinstall(struct ifnet *ifpo, u_int dev_spi, void *priv) { struct mlx5e_ipsec_priv_bothdir pb, *pbp; - struct epoch_tracker et; struct ifnet *ifp; - GET_TRUNK_IF(ifpo, ifp, et); + ifp = mlx5_get_trunk_if(ifpo); pbp = priv; pb = *(struct mlx5e_ipsec_priv_bothdir *)priv; @@ -516,10 +521,9 @@ mlx5e_if_sa_cnt(struct ifnet *ifpo, void *sa, uint32_t drv_spi, void *priv, struct mlx5e_ipsec_priv_bothdir *pb; u64 packets_in, packets_out; u64 bytes_in, bytes_out; - struct epoch_tracker et; struct ifnet *ifp; - GET_TRUNK_IF(ifpo, ifp, et); + ifp = mlx5_get_trunk_if(ifpo); pb = priv; mlx5e_if_sa_cnt_one(ifp, sa, drv_spi, pb->priv_in, @@ -652,12 +656,11 @@ mlx5e_if_spd_install(struct ifnet *ifpo, void *sp, void *inp1, void **ifdatap) { struct mlx5e_ipsec_pol_entry *pol_entry; struct mlx5e_priv *priv; - struct epoch_tracker et; u16 vid = VLAN_NONE; struct ifnet *ifp; int err; - GET_TRUNK_IF(ifpo, ifp, et); + ifp = mlx5_get_trunk_if(ifpo); if (if_gettype(ifpo) == IFT_L2VLAN) VLAN_TAG(ifpo, &vid); priv = if_getsoftc(ifp); From nobody Wed Mar 4 13: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 4fQvQv0X4Zz6TY78 for ; Wed, 04 Mar 2026 13: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 4fQvQt6l1hz3R8P for ; Wed, 04 Mar 2026 13: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=1772632727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uIxuIiJeHDFmtgNejbQo2pK5PraXsIfBsDnUqoPWsX0=; b=Bjuov81m668cyiEpWap9bxpBfmUfgNxQbihJnf7FPvzpBIpc/mEhWfv700UAR8IdzzvBKT fiD0aSxpYpGq1moLlzlcj682DpE5+5bqaJYfYf2mKLBunvvNgOrboviFixrdcMOz3TTArn Ojcxy/NEXcNSpUrpCAyqf3ATFQ9H/NdxN0+CGomHXwIiRpr9LHe0AZPCzAedn68YUgibj9 jLgWsADLjf5GmxpsE6sbZeH/sbBCDFgwG9itMBnwLVZxZe1V/1FidJEowKicBmcNbVBZHI krDfM3CLSwGgUcDbolbxMJsCJtOv9ExWdUDh7JYbP8SPXPmm6Nx/HaIfjmVakQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772632727; a=rsa-sha256; cv=none; b=ZMEsxxIQONCmWJOT0gKnzu4+rF6Br0x1rWTSEnooTR0Xc8w4kH3h2MldRwU9wwoJYnnUQg eXuVWmQk3XhIT6UA7ZQxTjkgkTXwV6JBhMHjx2uWrNzo1B6tuDiFW0i6xxQoK8Q01KemHH 4LhD1s1zAPDGDprbINVxHPP33zJ2PBUzvESLzqaH6QlzRXEY4a6LKgZG9+g7GX2l4PkT7H OX+82Y/H+2gKD5Oa9cF+qnmnZDHf8X/Hs6lJX8HHK76S6e5bwBq4dHMAasXBNB56zrRiYU pQTMYdaVkIWwn2emg8ehvd5ORSx8PtiaMysIGlvWQrSkEEw2is0QgwnfxJZ9Sg== 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=1772632727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uIxuIiJeHDFmtgNejbQo2pK5PraXsIfBsDnUqoPWsX0=; b=Ok6ylDCDww4CixtUnoIan5WIeSgGLtW2U/f4yP3Kpw3olrZzBvmwo2n7o5paNLux/A6Vsc TvHvTJzzB59JPTSSoPxVVJXKdveP9e2Wr9HZpWmdPLHS/xE1cG9mGwk7sgNJ1kGGb3KAz+ 3OdXYRItNeXYeyFcCyfVIO6uWXYOc9T1JQw/r0GFh65m32WAnlORqelxHwqu0XB91Madlb pRJXT9lDON2nPh43Rg6dQfWv4W+wO4nnYAOUVW+eJxgQ1ahxTWSwT5qPXBzkJjJeQdwL0P 1+LESam3vXpWIYSKvZBXOCOjD7M4Yp30kXPgAlJEwH+RohPlkWCjSjgMuPSEZQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvQt5xY8ztf6 for ; Wed, 04 Mar 2026 13:58:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22540 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 13:58:46 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 2f2b6480eed2 - stable/15 - isa_common: allow multiple device instances 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 2f2b6480eed2d0ac88eb617adcc31ce7476991bd Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 13:58:46 +0000 Message-Id: <69a83a96.22540.13de2988@gitrepo.freebsd.org> The branch stable/15 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=2f2b6480eed2d0ac88eb617adcc31ce7476991bd commit 2f2b6480eed2d0ac88eb617adcc31ce7476991bd Author: ShengYi Hung AuthorDate: 2025-10-01 08:33:19 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 13:57:46 +0000 isa_common: allow multiple device instances In some devices, there may be multiple isa bridges available from different sources. Therefore, we allow multiple lpc devices to be generated so that pcie bus won't show "none" anymore. For example, in my AMD based Framework Laptop, there are two such bridges. One is acpi hinted, another is from pcie. Reviewed by: imp Approved by: lwhsu (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D52815 (cherry picked from commit f32ffd11b54792d7bdd37b6dfc0f904a561b879c) --- sys/isa/isa_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c index b66cf2be3958..41a63a3c676c 100644 --- a/sys/isa/isa_common.c +++ b/sys/isa/isa_common.c @@ -1114,7 +1114,7 @@ isab_attach(device_t dev) { device_t child; - child = device_add_child(dev, "isa", 0); + child = device_add_child(dev, "isa", DEVICE_UNIT_ANY); if (child == NULL) return (ENXIO); bus_attach_children(dev); From nobody Wed Mar 4 13: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 4fQvQw30Qrz6TYCb for ; Wed, 04 Mar 2026 13:58: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 4fQvQw0gCnz3R8Q for ; Wed, 04 Mar 2026 13: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=1772632728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+C4M+7ZR3repiqSt9hYDYG4raK6pc+AxlgrXj51Elfk=; b=rXOmWuMEkiO+yRZ5ojqqx9jUOCHFA9YgQ+lWPTjOuwsK+3+2bkIT/1SXY9BJvoqXHcKWij 8wG5fx3UISuRlpderZ7tT9nmNJmJ55+NJVYahTkDbCPtne66rj6XGONCFmRaLsu6t6xcLA 0xLNRcyueEbY2qgPrbLu9y3w7fzL8V/35GE1mukvFW44Qq5fA3djPAURDm2uarYtDkitR7 6j5v0Tjxq/tPdKJRK3snnUGtd6Wbg0NKZwq5Pu4pnlVwxKP9BSicvGl/cg3KFOsatNSemT IPqY9uoi7QiNjIzQYApKPIJIugunDvNVt2lq3Wps8icTpoijF4j4blACjMcSVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772632728; a=rsa-sha256; cv=none; b=c5xsAl05JYeIrE1dqdYsMM2rzYtFXuJCR4TUg3FG0sUX2ipppGlDaSeRup9xsfUusOQEmR y4ZhPIkccIyYTV8rBSqn4YSmmpv3ayyKVEyQmAMxDunWcGNlmuCG8dHCre76Nrs5hC7mhD PoEKsHq5SVTDr/JmJNFEsHr6mw5esF6Ot3a7TUOtOGkqgPqhEXU6bc8lVejcy0gqnCMPfP /nLhRB2ey8ZzmrKPMnbly0cqXac3fdS6/zV2Y23XJmXmPkkuPUYlkv9VBHewQ4Qp7tam/3 M3sbp91+xKTmrwXTveZdLxS6P3gWQPf1znl+kDsKDiqpXm2cT26ZOBFfqDbjwQ== 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=1772632728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+C4M+7ZR3repiqSt9hYDYG4raK6pc+AxlgrXj51Elfk=; b=lqH/rAn/ytSoadmO2DYlI/7zk2gO4uV2Lu6UuDFu3GO2QM1+O0b5CHrtj79wKox/JZzz47 wl7oe+CbJn2xHAOhHm6JipzzUcODPnB6XUywfcj2gHJjhYVqPSEdO/nUwzsM7AUWBBQOoi hPbT781GZtEk3xlDs0VwqgSkt8iloQ34HJwb+lcIvSGvXCatQ2IQI2GK1kWlr4+QddPXRw Rn23VWjhkjMtXrAfAehmAkoUhXnmoITjB2HcSC3LAStxKyge+DWX97Sl76LgjxYQsvjYPe 3fdz3W3Z9ALS+UGWvMfyAxk/4oq0DuqZG1dSEVjRax3TmMDQcxNifwj8PfFSig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvQv6twwztK4 for ; Wed, 04 Mar 2026 13:58:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21dd0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 13:58:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: beccc030b4fb - stable/15 - smp: Use bitwise operation to count cpu number 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: beccc030b4fbd411276858ba771b4228f3885568 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 13:58:47 +0000 Message-Id: <69a83a97.21dd0.3c0c081f@gitrepo.freebsd.org> The branch stable/15 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=beccc030b4fbd411276858ba771b4228f3885568 commit beccc030b4fbd411276858ba771b4228f3885568 Author: ShengYi Hung AuthorDate: 2026-01-03 16:32:50 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 13:58:23 +0000 smp: Use bitwise operation to count cpu number Previously, we iterated over all CPUs using CPU_FOREACH and checked individual bits to count valid CPUs. Refactor this to use a bitwise AND and popcount to count the number of enabled bits directly. Approved by: markj (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54474 (cherry picked from commit e387d9438ba0258b88ebe03ef139bc6fd70b5a46) --- sys/kern/subr_smp.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index d80048f961bd..bd4e5c4b5aeb 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -581,7 +581,7 @@ smp_rendezvous_cpus(cpuset_t map, void (* teardown_func)(void *), void *arg) { - int curcpumap, i, ncpus = 0; + int curcpumap, ncpus = 0; /* See comments in the !SMP case. */ if (!smp_started) { @@ -602,10 +602,8 @@ smp_rendezvous_cpus(cpuset_t map, */ MPASS(curthread->td_md.md_spinlock_count == 0); - CPU_FOREACH(i) { - if (CPU_ISSET(i, &map)) - ncpus++; - } + CPU_AND(&map, &map, &all_cpus); + ncpus = CPU_COUNT(&map); if (ncpus == 0) panic("ncpus is 0 with non-zero map"); From nobody Wed Mar 4 14:21: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 4fQvxX6cc4z6TZD9 for ; Wed, 04 Mar 2026 14:21: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 4fQvxX5G8fz3Tmd for ; Wed, 04 Mar 2026 14:21:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772634112; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sd5FxXKOa8xLFxlY4dWKrThAGSz4fEhvWOHnxwWBnZw=; b=apl/VYFB76TxCNe5v8eSI8aPuO5Lg4796fAxrKyxhhb/uKQZJkT70cx0uy0rdYbk8bcYLa NwAmRYa3Rnr58voSB2O2lZevxnx0FctukIfOfmVxrf1Q/wKN9T5sfgrarVGzWT+CnRztDG tzQF85B0lZMOfLYAMif0OMBR7OSzj16biV8i5at7b02Ywsjs4acqKgAHTmLFze2IiPZDd/ 4VXlUr34TyazBXqVc7tUAIVn6rIxXdlNet+/hsTXdKGTuKxTBDVAtitPeq5LdVExBhu+kc yU9GZ5vUYde6Z9ZLAem7Bpt8D7cn/d+cd/y6fY757vk3qnl2YX2qOM5q8sq8lA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772634112; a=rsa-sha256; cv=none; b=fF8/HhStYVgx/NuAJwHmthouifFubRQ6ogSybDjV50DRxPLLqKRHeiKTgPhYy8iGD/2Xbb xCOhsNZSJLqhoWSmItgmWetpSwYmOZReMAGarl8rRpyN4tolSteAqj2aHPNmbYej6cDW90 yxwxhASMr1sCAqBLYT2mX3wIjZxgwL8cnrIaSTBeNXTY60KZvtXBipfAouwtPXKUMtgAcO RW0o9qy3t0xb7eUA+J+6o9/YwT7typqLS2Tf9Yq2EPHxTijSKNe6tnM+tbSGQceLCLhajJ Me5N9dArBSEB3EkB9LnlqYVQU/AT9Ak+44kPt+SB3BC5E0tMzKUDyLt32/r7BA== 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=1772634112; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sd5FxXKOa8xLFxlY4dWKrThAGSz4fEhvWOHnxwWBnZw=; b=HCLK6DFIlDSPI24zEhpwMqxkUGn0a2TGaijWBihG5GT2hr04cqyWuxx6+r0gnp/NXBA8q3 mVDEiq2ldLn6t8fjivclw2fg61wyKczxkTyVrme+QFUQAS0Hfs+gfTO7kA+UNTtK9ossxh hyYRHTs0WeBdkIOZGSox0AE3bqs4LGOzZXAyGPHg+IuJdYn13ECmpRSpD0oVlSif1YPv/l rMVGS4UHUSp9NNSWOlz7D2dlKWd0hWm1xQQqrSTN1shbE1GoyL+pMjzWQ59f4agfiHHYlK nKH7Ce9F7bxHXzz2XhiXYX+ZzjYbQC7lRmS1+qhP/NAbMgZsWGHa8lgWpOCQEg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvxX4JQBzvT3 for ; Wed, 04 Mar 2026 14:21:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 23b2e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:21:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 0dd289fe0b80 - stable/14 - ipheth(4): Add CDC-NCM support for RX 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0dd289fe0b806503227638340b22bf7b38586271 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:21:52 +0000 Message-Id: <69a84000.23b2e.704e8ec9@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=0dd289fe0b806503227638340b22bf7b38586271 commit 0dd289fe0b806503227638340b22bf7b38586271 Author: ShengYi Hung AuthorDate: 2025-05-15 10:54:09 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 14:11:18 +0000 ipheth(4): Add CDC-NCM support for RX The CDC-NCM (USB Communications Device Class – Network Control Model) protocol allows multiple Ethernet frames to be encapsulated into a single USB transfer. On iOS, CDC-NCM is currently implemented for RX only and uses a fixed number of entries (16). To maintain compatibility with older iOS versions, we attempt to enable NCM on the USB device first; if this fails, we fall back to the original behavior. Approved by: lwhsu (mentor), markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation (cherry picked from commit c992ac6213276f54d868f317cc5092f8aed4ff54) --- sys/dev/usb/net/if_ipheth.c | 218 ++++++++++++++++++++++++++++++++--------- sys/dev/usb/net/if_iphethvar.h | 21 ++++ 2 files changed, 191 insertions(+), 48 deletions(-) diff --git a/sys/dev/usb/net/if_ipheth.c b/sys/dev/usb/net/if_ipheth.c index f70113c53eb4..cfa800707391 100644 --- a/sys/dev/usb/net/if_ipheth.c +++ b/sys/dev/usb/net/if_ipheth.c @@ -55,6 +55,7 @@ #include #include +#include #include #include #include "usbdevs.h" @@ -81,6 +82,9 @@ static uether_fn_t ipheth_start; static uether_fn_t ipheth_setmulti; static uether_fn_t ipheth_setpromisc; +static ipheth_consumer_t ipheth_consume_read; +static ipheth_consumer_t ipheth_consume_read_ncm; + #ifdef USB_DEBUG static int ipheth_debug = 0; @@ -96,7 +100,31 @@ static const struct usb_config ipheth_config[IPHETH_N_TRANSFER] = { .direction = UE_DIR_RX, .frames = IPHETH_RX_FRAMES_MAX, .bufsize = (IPHETH_RX_FRAMES_MAX * MCLBYTES), - .flags = {.short_frames_ok = 1,.short_xfer_ok = 1,.ext_buffer = 1,}, + .flags = {.short_frames_ok = 1, .short_xfer_ok = 1, .ext_buffer = 1,}, + .callback = ipheth_bulk_read_callback, + .timeout = 0, /* no timeout */ + }, + + [IPHETH_BULK_TX] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_TX, + .frames = IPHETH_TX_FRAMES_MAX, + .bufsize = (IPHETH_TX_FRAMES_MAX * IPHETH_BUF_SIZE), + .flags = {.force_short_xfer = 1,}, + .callback = ipheth_bulk_write_callback, + .timeout = IPHETH_TX_TIMEOUT, + }, +}; + +static const struct usb_config ipheth_config_ncm[IPHETH_N_TRANSFER] = { + [IPHETH_BULK_RX] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_RX, + .frames = 1, + .bufsize = IPHETH_RX_NCM_BUF_SIZE, + .flags = {.short_frames_ok = 1, .short_xfer_ok = 1,}, .callback = ipheth_bulk_read_callback, .timeout = 0, /* no timeout */ }, @@ -204,6 +232,21 @@ ipheth_get_mac_addr(struct ipheth_softc *sc) return (0); } +static bool +ipheth_enable_ncm(struct ipheth_softc *sc) +{ + struct usb_device_request req; + + req.bmRequestType = UT_WRITE_VENDOR_INTERFACE; + req.bRequest = IPHETH_CMD_ENABLE_NCM; + USETW(req.wValue, 0); + req.wIndex[0] = sc->sc_iface_no; + req.wIndex[1] = 0; + USETW(req.wLength, 0); + + return (usbd_do_request(sc->sc_ue.ue_udev, NULL, &req, NULL) == 0); +} + static int ipheth_probe(device_t dev) { @@ -221,6 +264,7 @@ ipheth_attach(device_t dev) struct ipheth_softc *sc = device_get_softc(dev); struct usb_ether *ue = &sc->sc_ue; struct usb_attach_arg *uaa = device_get_ivars(dev); + const struct usb_config *config; int error; sc->sc_iface_no = uaa->info.bIfaceIndex; @@ -235,18 +279,29 @@ ipheth_attach(device_t dev) device_printf(dev, "Cannot set alternate setting\n"); goto detach; } - error = usbd_transfer_setup(uaa->device, &sc->sc_iface_no, - sc->sc_xfer, ipheth_config, IPHETH_N_TRANSFER, sc, &sc->sc_mtx); - if (error) { - device_printf(dev, "Cannot setup USB transfers\n"); - goto detach; - } + ue->ue_sc = sc; ue->ue_dev = dev; ue->ue_udev = uaa->device; ue->ue_mtx = &sc->sc_mtx; ue->ue_methods = &ipheth_ue_methods; + if (ipheth_enable_ncm(sc)) { + config = ipheth_config_ncm; + sc->is_ncm = true; + sc->consume = &ipheth_consume_read_ncm; + } else { + config = ipheth_config; + sc->consume = &ipheth_consume_read; + } + + error = usbd_transfer_setup(uaa->device, &sc->sc_iface_no, sc->sc_xfer, + config, IPHETH_N_TRANSFER, sc, &sc->sc_mtx); + if (error) { + device_printf(dev, "Cannot setup USB transfers\n"); + goto detach; + } + error = ipheth_get_mac_addr(sc); if (error) { device_printf(dev, "Cannot get MAC address\n"); @@ -389,12 +444,9 @@ ipheth_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error) int actlen; int aframes; - usbd_xfer_status(xfer, &actlen, NULL, &aframes, NULL); - - DPRINTFN(1, "\n"); - switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: + usbd_xfer_status(xfer, &actlen, NULL, &aframes, NULL); DPRINTFN(11, "transfer complete: %u bytes in %u frames\n", actlen, aframes); @@ -471,53 +523,40 @@ ipheth_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error) uint8_t x; int actlen; int aframes; - int len; - - usbd_xfer_status(xfer, &actlen, NULL, &aframes, NULL); switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: - + usbd_xfer_status(xfer, &actlen, NULL, &aframes, NULL); DPRINTF("received %u bytes in %u frames\n", actlen, aframes); - for (x = 0; x != aframes; x++) { - m = sc->sc_rx_buf[x]; - sc->sc_rx_buf[x] = NULL; - len = usbd_xfer_frame_len(xfer, x); - - if (len < (int)(sizeof(struct ether_header) + - IPHETH_RX_ADJ)) { - m_freem(m); - continue; - } - - m_adj(m, IPHETH_RX_ADJ); - - /* queue up mbuf */ - uether_rxmbuf(&sc->sc_ue, m, len - IPHETH_RX_ADJ); - } + for (x = 0; x != aframes; x++) + sc->consume(xfer, x); /* FALLTHROUGH */ case USB_ST_SETUP: - - for (x = 0; x != IPHETH_RX_FRAMES_MAX; x++) { - if (sc->sc_rx_buf[x] == NULL) { - m = uether_newbuf(); - if (m == NULL) - goto tr_stall; - - /* cancel alignment for ethernet */ - m_adj(m, ETHER_ALIGN); - - sc->sc_rx_buf[x] = m; - } else { - m = sc->sc_rx_buf[x]; + if (!sc->is_ncm) { + for (x = 0; x != IPHETH_RX_FRAMES_MAX; x++) { + if (sc->sc_rx_buf[x] == NULL) { + m = uether_newbuf(); + if (m == NULL) + goto tr_stall; + + /* cancel alignment for ethernet */ + m_adj(m, ETHER_ALIGN); + + sc->sc_rx_buf[x] = m; + } else { + m = sc->sc_rx_buf[x]; + } + usbd_xfer_set_frame_data(xfer, x, m->m_data, m->m_len); } - - usbd_xfer_set_frame_data(xfer, x, m->m_data, m->m_len); + usbd_xfer_set_frames(xfer, x); + } else { + usbd_xfer_set_frame_len(xfer, 0, + IPHETH_RX_NCM_BUF_SIZE); + usbd_xfer_set_frames(xfer, 1); } - /* set number of frames and start hardware */ - usbd_xfer_set_frames(xfer, x); + usbd_transfer_submit(xfer); /* flush any received frames */ uether_rxflush(&sc->sc_ue); @@ -539,3 +578,86 @@ ipheth_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error) break; } } + +static void +ipheth_consume_read(struct usb_xfer *xfer, int x) +{ + struct ipheth_softc *sc = usbd_xfer_softc(xfer); + struct mbuf *m = sc->sc_rx_buf[x]; + int len; + + sc->sc_rx_buf[x] = NULL; + len = usbd_xfer_frame_len(xfer, x); + + if (len < (int)(sizeof(struct ether_header) + IPHETH_RX_ADJ)) { + m_freem(m); + return; + } + + m_adj(m, IPHETH_RX_ADJ); + + /* queue up mbuf */ + uether_rxmbuf(&sc->sc_ue, m, len - IPHETH_RX_ADJ); +} + +static void +ipheth_consume_read_ncm(struct usb_xfer *xfer, int x) +{ + struct ipheth_softc *sc = usbd_xfer_softc(xfer); + struct usb_page_cache *pc = usbd_xfer_get_frame(xfer, 0); + struct ncm_data_cache ncm; + if_t ifp = uether_getifp(&sc->sc_ue); + struct mbuf *new_buf; + int i, actlen; + uint16_t dp_offset, dp_len; + + usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL); + + if (actlen < IPHETH_NCM_HEADER_SIZE) + return; + + usbd_copy_out(pc, 0, &ncm.hdr, sizeof(ncm.hdr)); + + if (UGETDW(ncm.hdr.dwSignature) != 0x484D434E) + return; + + /* Dpt follows the hdr on iOS */ + if (UGETW(ncm.hdr.wDptIndex) != (int)(sizeof(struct usb_ncm16_hdr))) + return; + + usbd_copy_out(pc, UGETW(ncm.hdr.wDptIndex), &ncm.dpt, sizeof(ncm.dpt)); + + if (UGETDW(ncm.dpt.dwSignature) != 0x304D434E) + return; + + usbd_copy_out(pc, UGETW(ncm.hdr.wDptIndex) + sizeof(ncm.dpt), &ncm.dp, + sizeof(ncm.dp)); + + for (i = 0; i < IPHETH_NCM_DPT_DP_NUM; ++i) { + dp_offset = UGETW(ncm.dp[i].wFrameIndex); + dp_len = UGETW(ncm.dp[i].wFrameLength); + + /* (3.3.1 USB CDC NCM spec v1.0) */ + if (dp_offset == 0 && dp_len == 0) + break; + + if (dp_offset < IPHETH_NCM_HEADER_SIZE || dp_offset >= actlen || + actlen < (dp_len + dp_offset) || + dp_len < sizeof(struct ether_header)) { + if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); + continue; + } + if (dp_len > (MCLBYTES - ETHER_ALIGN)) { + if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); + continue; + } + + new_buf = uether_newbuf(); + if (new_buf == NULL) { + if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); + continue; + } + usbd_copy_out(pc, dp_offset, new_buf->m_data, dp_len); + uether_rxmbuf(&sc->sc_ue, new_buf, dp_len); + } +} diff --git a/sys/dev/usb/net/if_iphethvar.h b/sys/dev/usb/net/if_iphethvar.h index 203bb96b6f22..d637e8f67d01 100644 --- a/sys/dev/usb/net/if_iphethvar.h +++ b/sys/dev/usb/net/if_iphethvar.h @@ -41,6 +41,7 @@ #define IPHETH_BUF_SIZE 1514 #define IPHETH_TX_TIMEOUT 5000 /* ms */ +#define IPHETH_RX_NCM_BUF_SIZE 65536 #define IPHETH_RX_FRAMES_MAX 1 #define IPHETH_TX_FRAMES_MAX 8 @@ -55,10 +56,20 @@ #define IPHETH_CTRL_TIMEOUT 5000 /* ms */ #define IPHETH_CMD_GET_MACADDR 0x00 +#define IPHETH_CMD_ENABLE_NCM 0x04 #define IPHETH_CMD_CARRIER_CHECK 0x45 #define IPHETH_CARRIER_ON 0x04 +#define IPHETH_NCM_DPT_DP_NUM 22 +#define IPHETH_NCM_DPT_HEADER_SIZE \ + (sizeof(struct usb_ncm16_dpt) + \ + IPHETH_NCM_DPT_DP_NUM * sizeof(struct usb_ncm16_dp)) +#define IPHETH_NCM_HEADER_SIZE \ + (sizeof(struct usb_ncm16_hdr) + IPHETH_NCM_DPT_HEADER_SIZE) + +typedef void (ipheth_consumer_t)(struct usb_xfer *xfer, int idx); + enum { IPHETH_BULK_TX, IPHETH_BULK_RX, @@ -76,6 +87,16 @@ struct ipheth_softc { uint8_t sc_data[IPHETH_CTRL_BUF_SIZE]; uint8_t sc_iface_no; uint8_t sc_carrier_on; + + bool is_ncm; + + ipheth_consumer_t *consume; +}; + +struct ncm_data_cache { + struct usb_ncm16_hdr hdr; + struct usb_ncm16_dpt dpt; + struct usb_ncm16_dp dp[IPHETH_NCM_DPT_DP_NUM]; }; #define IPHETH_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) From nobody Wed Mar 4 14:21: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 4fQvxY6qmPz6TZNm for ; Wed, 04 Mar 2026 14:21: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 4fQvxY5ZBbz3Tf1 for ; Wed, 04 Mar 2026 14:21:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772634113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IV8sRiCvrY8CWZc2UNRumEkxUNstFlqkkGU/x+khvlU=; b=JYVTe7fWUF5GJddfDwcfzsifdSAqairXjfoacGwT7cumYcEuwWeO1VFz+ix2+DfGGWDBxr uiCJm2LORdVoY+oKmSIjCby+zoN8SaxJqOJeLtQCLIPOH/AyxL8ifukdSon5F9eT9yTJpz 0cjaYQckZZjmfvpPV0v7UHGm/DTRLLyon0BZDLPfBhn7OvltInEsLBy+P7TqTtgyXn/7V5 9gFWOtRon6YBNBx2mJBAL94SfDTDGEfFvxKcZKewUVKvsXbP2WEnBN/0isMttvWAvSmuiv O/5m86XJSD35yeF+8Z2oNYPsMklw9418oalgLD3np/KTaSGe96ebnlS7l9+0pw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772634113; a=rsa-sha256; cv=none; b=nxUy3VDkrvg+VTt0/wIEyKad2C1XFCoDDdSYDKunvCDdCSmEt4A5nFb74nHIBdlpu4ReG4 QpQgVBSPsvFlFSSudOzGtQUH4hI17i+5DY3jniiNUa7Lf9aEWL7aVArw42BFLFKVm2REA+ FXrqkVYaQQhdjoDIAD/wsG/GH2bXPot5rj1Wk2gYlZtTHMZlMujET3WWYfCxbyKT3pSl82 tpkvWNmt2i692nLpYJdBWZ8ZfnIM5wKk6BpR3SaOhEqmqN3E125U21d4V9zR3Y1yh5zJno FJGqaQm4WwhuGSO+Xxgh90JdcvmiViuOV+YOXY1ROX8bVeHA164H0AANk3wfAw== 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=1772634113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IV8sRiCvrY8CWZc2UNRumEkxUNstFlqkkGU/x+khvlU=; b=a7kbUQ8WIWt7ne/4K6tmrD5yQ+BSx7rX0Vw5TV+aZc3keP1hcPzLbmuQhOllmFSg+nO5S2 s3b3XXtN+m0O3Bc3hXLIem4MDd132QwD7u7KnFH2vSk/dwKLvV+4UTazuxkYqq3rTikneg 1by8cjqPq5wgbfnk6SuHHSdH+yYmN6uf1YzGTkf9pYSyWfqmJs98BJUIN8VZyftr+VuW2H vZHi+JEd4LF9y9xGLbYWclcdvtcLXl5dP76PAXFYZoM+7tVRYGOPPBUbzlLM0q7wZdW7SA cN2NcFumU2gi3AkeghqpxCNYOlNALVPlCnrEWRXoq81avONNNGbYnwYTqqScFw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvxY572SzvT4 for ; Wed, 04 Mar 2026 14:21:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 215fd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:21:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: e099cd40ba6c - stable/14 - ichwd: introduce i6300esbwd watch dog 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e099cd40ba6c3977c3d41ee7e44ea2bf1609be10 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:21:53 +0000 Message-Id: <69a84001.215fd.356dc80f@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=e099cd40ba6c3977c3d41ee7e44ea2bf1609be10 commit e099cd40ba6c3977c3d41ee7e44ea2bf1609be10 Author: ShengYi Hung AuthorDate: 2025-08-22 14:55:45 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 14:16:26 +0000 ichwd: introduce i6300esbwd watch dog driver The intel 6300ESB watchdog is a special ICH-based watchdog device with a different interface. QEMU implements this watchdog for x86 systems. This change enables watchdog mode (rather than free-running mode) and introduces 1 sysctl: - hw.i6300esbwd.0.locked: locks the watchdog register after the event is triggered, preventing it from being disabled until a hard reset. This feature has been tested on a Vultr AMD guest machine and local qemu machine. PR: 259673 Approved by: markj (mentor), lwhsu (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D52049 (cherry picked from commit 2b74ff5fceb6623f6114ce39baee9f6ec5f79277) --- sys/conf/files.x86 | 1 + sys/dev/ichwd/i6300esbwd.c | 245 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/ichwd/i6300esbwd.h | 46 +++++++++ sys/dev/ichwd/ichwd.c | 2 +- sys/dev/ichwd/ichwd.h | 3 +- sys/modules/ichwd/Makefile | 2 +- 6 files changed, 296 insertions(+), 3 deletions(-) diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index 94758d66a773..70cf50c996e6 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -144,6 +144,7 @@ dev/hyperv/vmbus/vmbus_et.c optional hyperv dev/hyperv/vmbus/vmbus_if.m optional hyperv dev/hyperv/vmbus/vmbus_res.c optional hyperv dev/hyperv/vmbus/vmbus_xact.c optional hyperv +dev/ichwd/i6300esbwd.c optional ichwd dev/ichwd/ichwd.c optional ichwd dev/imcsmb/imcsmb.c optional imcsmb dev/imcsmb/imcsmb_pci.c optional imcsmb pci diff --git a/sys/dev/ichwd/i6300esbwd.c b/sys/dev/ichwd/i6300esbwd.c new file mode 100644 index 000000000000..d95aeb53c3f5 --- /dev/null +++ b/sys/dev/ichwd/i6300esbwd.c @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2025 The FreeBSD Foundation + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +/* + * Reference: Intel 6300ESB Controller Hub Datasheet Section 16 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +struct i6300esbwd_softc { + device_t dev; + int res_id; + struct resource *res; + eventhandler_tag ev_tag; + bool locked; +}; + +static const struct i6300esbwd_pci_id { + uint16_t id; + const char *name; +} i6300esbwd_pci_devices[] = { + { DEVICEID_6300ESB_2, "6300ESB Watchdog Timer" }, +}; + +static uint16_t +i6300esbwd_cfg_read(struct i6300esbwd_softc *sc) +{ + return (pci_read_config(sc->dev, WDT_CONFIG_REG, 2)); +} + +static void +i6300esbwd_cfg_write(struct i6300esbwd_softc *sc, uint16_t val) +{ + pci_write_config(sc->dev, WDT_CONFIG_REG, val, 2); +} + +static uint8_t +i6300esbwd_lock_read(struct i6300esbwd_softc *sc) +{ + return (pci_read_config(sc->dev, WDT_LOCK_REG, 1)); +} + +static void +i6300esbwd_lock_write(struct i6300esbwd_softc *sc, uint8_t val) +{ + pci_write_config(sc->dev, WDT_LOCK_REG, val, 1); +} + +/* + * According to Intel 6300ESB I/O Controller Hub Datasheet 16.5.2, + * the resource should be unlocked before modifing any registers. + * The way to unlock is by write 0x80, 0x86 to the reload register. + */ +static void +i6300esbwd_unlock_res(struct i6300esbwd_softc *sc) +{ + bus_write_2(sc->res, WDT_RELOAD_REG, WDT_UNLOCK_SEQ_1_VAL); + bus_write_2(sc->res, WDT_RELOAD_REG, WDT_UNLOCK_SEQ_2_VAL); +} + +static int +i6300esbwd_sysctl_locked(SYSCTL_HANDLER_ARGS) +{ + struct i6300esbwd_softc *sc = (struct i6300esbwd_softc *)arg1; + int error; + int result; + + result = sc->locked; + error = sysctl_handle_int(oidp, &result, 0, req); + + if (error || !req->newptr) + return (error); + + if (result == 1 && !sc->locked) { + i6300esbwd_lock_write(sc, i6300esbwd_lock_read(sc) | WDT_LOCK); + sc->locked = true; + } + + return (0); +} + +static void +i6300esbwd_event(void *arg, unsigned int cmd, int *error) +{ + struct i6300esbwd_softc *sc = arg; + uint32_t timeout; + uint16_t regval; + + cmd &= WD_INTERVAL; + if (cmd != 0 && + (cmd < WD_TO_1MS || (cmd - WD_TO_1MS) >= WDT_PRELOAD_BIT)) { + *error = EINVAL; + return; + } + timeout = 1 << (cmd - WD_TO_1MS); + + /* reset the timer to prevent timeout a timeout is about to occur */ + i6300esbwd_unlock_res(sc); + bus_write_2(sc->res, WDT_RELOAD_REG, WDT_RELOAD); + + if (!cmd) { + /* + * when the lock is enabled, we are unable to overwrite LOCK + * register + */ + if (sc->locked) + *error = EPERM; + else + i6300esbwd_lock_write(sc, + i6300esbwd_lock_read(sc) & ~WDT_ENABLE); + return; + } + + i6300esbwd_unlock_res(sc); + bus_write_4(sc->res, WDT_PRELOAD_1_REG, timeout); + + i6300esbwd_unlock_res(sc); + bus_write_4(sc->res, WDT_PRELOAD_2_REG, timeout); + + i6300esbwd_unlock_res(sc); + bus_write_2(sc->res, WDT_RELOAD_REG, WDT_RELOAD); + + if (!sc->locked) { + i6300esbwd_lock_write(sc, WDT_ENABLE); + regval = i6300esbwd_lock_read(sc); + sc->locked = regval & WDT_LOCK; + } +} + +static int +i6300esbwd_probe(device_t dev) +{ + const struct i6300esbwd_pci_id *pci_id; + uint16_t pci_dev_id; + int err = ENXIO; + + if (pci_get_vendor(dev) != VENDORID_INTEL) + goto end; + + pci_dev_id = pci_get_device(dev); + for (pci_id = i6300esbwd_pci_devices; + pci_id < i6300esbwd_pci_devices + nitems(i6300esbwd_pci_devices); + ++pci_id) { + if (pci_id->id == pci_dev_id) { + device_set_desc(dev, pci_id->name); + err = BUS_PROBE_DEFAULT; + break; + } + } + +end: + return (err); +} + +static int +i6300esbwd_attach(device_t dev) +{ + struct i6300esbwd_softc *sc = device_get_softc(dev); + uint16_t regval; + + sc->dev = dev; + sc->res_id = PCIR_BAR(0); + sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->res_id, + RF_ACTIVE); + if (sc->res == NULL) { + device_printf(dev, "unable to map memory region\n"); + return (ENXIO); + } + + i6300esbwd_cfg_write(sc, WDT_INT_TYPE_DISABLED_VAL); + regval = i6300esbwd_lock_read(sc); + if (regval & WDT_LOCK) + sc->locked = true; + else { + sc->locked = false; + i6300esbwd_lock_write(sc, WDT_TOUT_CNF_WT_MODE); + } + + i6300esbwd_unlock_res(sc); + bus_write_2(sc->res, WDT_RELOAD_REG, WDT_RELOAD | WDT_TIMEOUT); + + sc->ev_tag = EVENTHANDLER_REGISTER(watchdog_list, i6300esbwd_event, sc, + 0); + + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "locked", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + i6300esbwd_sysctl_locked, "I", + "Lock the timer so that we cannot disable it"); + + return (0); +} + +static int +i6300esbwd_detach(device_t dev) +{ + struct i6300esbwd_softc *sc = device_get_softc(dev); + + if (sc->ev_tag) + EVENTHANDLER_DEREGISTER(watchdog_list, sc->ev_tag); + + if (sc->res) + bus_release_resource(dev, SYS_RES_MEMORY, sc->res_id, sc->res); + + return (0); +} + +static device_method_t i6300esbwd_methods[] = { + DEVMETHOD(device_probe, i6300esbwd_probe), + DEVMETHOD(device_attach, i6300esbwd_attach), + DEVMETHOD(device_detach, i6300esbwd_detach), + DEVMETHOD(device_shutdown, i6300esbwd_detach), + DEVMETHOD_END +}; + +static driver_t i6300esbwd_driver = { + "i6300esbwd", + i6300esbwd_methods, + sizeof(struct i6300esbwd_softc), +}; + +DRIVER_MODULE(i6300esbwd, pci, i6300esbwd_driver, NULL, NULL); diff --git a/sys/dev/ichwd/i6300esbwd.h b/sys/dev/ichwd/i6300esbwd.h new file mode 100644 index 000000000000..39ed5d5a84f6 --- /dev/null +++ b/sys/dev/ichwd/i6300esbwd.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 The FreeBSD Foundation + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef _I6300ESBWD_H_ +#define _I6300ESBWD_H_ + +#define WDT_CONFIG_REG 0x60 +#define WDT_LOCK_REG 0x68 + +#define WDT_PRELOAD_1_REG 0x00 +#define WDT_PRELOAD_2_REG 0x04 +#define WDT_INTR_REG 0x08 +#define WDT_RELOAD_REG 0x0C + +/* For config register */ +#define WDT_OUTPUT_EN (0x1 << 5) +#define WDT_PRE_SEL (0x1 << 2) +#define WDT_INT_TYPE_BITS (0x3) +#define WDT_INT_TYPE_IRQ_VAL (0x0) +#define WDT_INT_TYPE_RES_VAL (0x1) +#define WDT_INT_TYPE_SMI_VAL (0x2) +#define WDT_INT_TYPE_DISABLED_VAL (0x3) + +/* For lock register */ +#define WDT_TOUT_CNF_WT_MODE (0x0 << 2) +#define WDT_TOUT_CNF_FR_MODE (0x1 << 2) +#define WDT_ENABLE (0x02) +#define WDT_LOCK (0x01) + +/* For preload 1/2 registers */ +#define WDT_PRELOAD_BIT 20 +#define WDT_PRELOAD_BITS ((0x1 << WDT_PRELOAD_BIT) - 1) + +/* For interrupt register */ +#define WDT_INTR_ACT (0x01 << 0) + +/* For reload register */ +#define WDT_TIMEOUT (0x01 << 9) +#define WDT_RELOAD (0x01 << 8) +#define WDT_UNLOCK_SEQ_1_VAL 0x80 +#define WDT_UNLOCK_SEQ_2_VAL 0x86 + +#endif /* _I6300ESBWD_H_ */ diff --git a/sys/dev/ichwd/ichwd.c b/sys/dev/ichwd/ichwd.c index 0270128f0766..465f06b209a4 100644 --- a/sys/dev/ichwd/ichwd.c +++ b/sys/dev/ichwd/ichwd.c @@ -91,7 +91,7 @@ static struct ichwd_device ichwd_devices[] = { { DEVICEID_82801E, "Intel 82801E watchdog timer", 5, 1 }, { DEVICEID_82801EB, "Intel 82801EB watchdog timer", 5, 1 }, { DEVICEID_82801EBR, "Intel 82801EB/ER watchdog timer", 5, 1 }, - { DEVICEID_6300ESB, "Intel 6300ESB watchdog timer", 5, 1 }, + { DEVICEID_6300ESB_1, "Intel 6300ESB watchdog timer", 5, 1 }, { DEVICEID_82801FBR, "Intel 82801FB/FR watchdog timer", 6, 2 }, { DEVICEID_ICH6M, "Intel ICH6M watchdog timer", 6, 2 }, { DEVICEID_ICH6W, "Intel ICH6W watchdog timer", 6, 2 }, diff --git a/sys/dev/ichwd/ichwd.h b/sys/dev/ichwd/ichwd.h index 90fda08b74c1..72d0ca1cd6aa 100644 --- a/sys/dev/ichwd/ichwd.h +++ b/sys/dev/ichwd/ichwd.h @@ -151,7 +151,8 @@ struct ichwd_softc { #define DEVICEID_82801E 0x2450 #define DEVICEID_82801EB 0x24dc #define DEVICEID_82801EBR 0x24d0 -#define DEVICEID_6300ESB 0x25a1 +#define DEVICEID_6300ESB_1 0x25a1 +#define DEVICEID_6300ESB_2 0x25ab #define DEVICEID_82801FBR 0x2640 #define DEVICEID_ICH6M 0x2641 #define DEVICEID_ICH6W 0x2642 diff --git a/sys/modules/ichwd/Makefile b/sys/modules/ichwd/Makefile index 5a136c180f2a..9d57ec2c32f1 100644 --- a/sys/modules/ichwd/Makefile +++ b/sys/modules/ichwd/Makefile @@ -2,6 +2,6 @@ .PATH: ${SRCTOP}/sys/dev/ichwd KMOD= ichwd -SRCS= ichwd.c device_if.h bus_if.h pci_if.h isa_if.h +SRCS= i6300esbwd.c ichwd.c device_if.h bus_if.h pci_if.h isa_if.h .include From nobody Wed Mar 4 14:21: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 4fQvxb1b55z6TZLT for ; Wed, 04 Mar 2026 14:21: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 4fQvxZ6Mvdz3Tyd for ; Wed, 04 Mar 2026 14:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772634114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jeMUbGmtK8V86g37MgOsOyen5cEFrVaL7Uujbz16TRM=; b=IwuQMivIPiq1+c7BOwnF0d/ha0/AZ44DRaKsy0z2Y3JmMSKPDfkrVB85YcjFncc07GaMN4 ANCJ9zZgVh+Hz6fGkKU7ZB70tdtpMbqyZr6Poqsej/UN2gt98Y3nae3FtTpSSqnI6mTre2 VkDt+hLz+27l6ryIhLpETD68wMSDdAHQcHtaYEn+cJ+iVNdw4IYdbNzFfYnXDxhBvliPTs h97uU0i9OhNHfWRX7gxhJ0gFuOKzNGCgHm0+3bykOZCbzeMCBekXemk5GV5L3v8i/PRO1d 1oALztudHJO6J4kisaThriUWSDGIQUmKHkzyNeOMM3AhRNrcfRW7gHj754Vtug== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772634114; a=rsa-sha256; cv=none; b=pI3ER+gnqMz1TSf0p4BBIJv0lT+PpZ4oOtxW2N5fRWDFmf+b2o45qAHDlZBDvReOukHQF2 yx3RnJ6vO0+6T0wvwZQ5k7BQWZvqT40N0LbspeCt2AMlivuDM61th8hjoQIZYqhuH7OxLn +s717y0HhKFl7qycT6qUuxg6krPJ0WzNkHF0TRzA0qn5b4xc/Ol60KTHCn4iynIoUA23FF MxLp1KvqhE5lMbP6osqaU89Pmzks3KsDNWfLkXQroiOCJCViR8JGQSprS4r/64NVXJ37FT qvYFellne2ug4VhWG31HDpOHrA0JyVg7SgSkuZS3jyMhIA3KsbMENDibgESIMQ== 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=1772634114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jeMUbGmtK8V86g37MgOsOyen5cEFrVaL7Uujbz16TRM=; b=ckiwmcn3KCo4zRBSBKyH81HZ90YSloLrkxBZESkqrAR6u3buuuse11G2H/r+/Ww0YkrB/6 8tlHl2mFimKGBWrN5fIsx1E8CzCl7nPMW3939L/ivqACDwcKzynewuexa9PVOwWSkzf/i5 109GEomdZlzjXLw1gIrNPVsynxi5ho1ZgQvEcrKD76IcweSxnHyzJKtsGhDzA8IuArg2XB qQ+G/HYwUL7j4tJ99Ipf2isHmFChXrBhlnCHLKmSm14kuSgSp4JNlnMuR2nE7Uw5Qwocrz RVE2mq7SPxzqU83ywarLrrOpoStuAYc2DfMA4OxuJ0dpykG4CgWhitmdwc9Iwg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvxZ5wj1zvF1 for ; Wed, 04 Mar 2026 14:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 226ee by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:21:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 241ed8bba288 - stable/14 - snd_hda: Add patch for Framework 16 AMD Ryzen AI 300 Series 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 241ed8bba288d3d7eb569d3297724ee509be6469 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:21:54 +0000 Message-Id: <69a84002.226ee.19de1e1@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=241ed8bba288d3d7eb569d3297724ee509be6469 commit 241ed8bba288d3d7eb569d3297724ee509be6469 Author: ShengYi Hung AuthorDate: 2025-09-08 11:15:14 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 14:16:34 +0000 snd_hda: Add patch for Framework 16 AMD Ryzen AI 300 Series The new Framework 16 with ALC285 exhibits the same issue as the previous model. Therefore, we apply the same fix to the new model. Reviewed by: emaste, Daniel Schaefer Approved by: lwhsu (mentor) MFC after: 3 days Sponsored by: The FreeBSD Foundation Sponsored by: Framework Computer Inc Differential Revision: https://reviews.freebsd.org/D52423 (cherry picked from commit 7f81b2519aebcf90d7e027122ca99b628ca81ed9) --- sys/dev/sound/pci/hda/hdaa_patches.c | 6 ++++-- sys/dev/sound/pci/hda/hdac.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/dev/sound/pci/hda/hdaa_patches.c b/sys/dev/sound/pci/hda/hdaa_patches.c index ae609e60eea2..f62d3d7d2549 100644 --- a/sys/dev/sound/pci/hda/hdaa_patches.c +++ b/sys/dev/sound/pci/hda/hdaa_patches.c @@ -356,8 +356,10 @@ hdac_pin_patch(struct hdaa_widget *w) patch_str = "as=3 seq=15 color=Black loc=Left"; break; } - } else if (id == HDA_CODEC_ALC295 && - subid == FRAMEWORK_LAPTOP_0005_SUBVENDOR) { + } else if ((id == HDA_CODEC_ALC295 && + subid == FRAMEWORK_LAPTOP_0005_SUBVENDOR) || + (id == HDA_CODEC_ALC285 && + subid == FRAMEWORK_LAPTOP_000D_SUBVENDOR)) { switch (nid) { case 20: /* diff --git a/sys/dev/sound/pci/hda/hdac.h b/sys/dev/sound/pci/hda/hdac.h index e19508ea3535..18d317cf90c6 100644 --- a/sys/dev/sound/pci/hda/hdac.h +++ b/sys/dev/sound/pci/hda/hdac.h @@ -533,6 +533,7 @@ #define FRAMEWORK_LAPTOP_0003_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0003) #define FRAMEWORK_LAPTOP_0005_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0005) #define FRAMEWORK_LAPTOP_0006_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0006) +#define FRAMEWORK_LAPTOP_000D_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x000d) /* All codecs you can eat... */ #define HDA_CODEC_CONSTRUCT(vendor, id) \ From nobody Wed Mar 4 14:21: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 4fQvxc3g3Mz6TZ4m for ; Wed, 04 Mar 2026 14:21: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 4fQvxc0k4sz3Tmx for ; Wed, 04 Mar 2026 14:21:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772634116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MWQLWx+3uVcF4csywmcyMwgL9rfLqj1A8XuHhcWHP6M=; b=j5fTwliKTo8raBRZ34CiOMI5zloPJkt8oWiPxfLyUV3w2KtujYCpNvXjfwQIfTIAhNqvlN jjbxdS9mRbmg2lHnam3txda8jUhNne0jXRKfgiY2t2Q77bbi61zPoIrDSn9YKnZQ0d8Gls Ldo7NV3oF3OWxVz9q2BfckgEfZYfr06BcWmCTFrEN+3xV2LW5b0/Kbqlv2D9WeYaLmtuRX ubOaPAc/fQJpwVctswLyBMRZUeIU7fVg8EQ7rLYHvBgGJTz62PCmn3QYEH6+sv5CQMhpLq LY0m/i+jvuVOZ5O/Gdc35lr8BZhnDsCUGa3SSF0OU7KSJPF6/nrgCgxniUsiKQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772634116; a=rsa-sha256; cv=none; b=vdQOj7bdCMbuEyv/uVukiI4NcFHe2TnaXpMI+VvlCwHDyWl664UzC+3Q8VdGoDEspuEt0c dLcUDdiROWNaCQU2o1+MrvZLdDFwakDcnp8Ugj8epN4zz39VXy1hbXOTVr4wIy5dWDKsSJ CvY5WGI5z8kRR9wQ3uTRkwBlSo47gBSWyeV6qx+i3W9DY6Ttgqu6Ud1JgsURZRPIZZmh+3 lVO1WpHX8spYctJscGAiBhMvs8r7/Dm9nS3z2dANDJUFPD6AiuVojBz/KI5N8+aSe4MGEO nNFGETLZrrloWnNe4y5G1h9uKnB0NglULy6/7QiHfcP5boQ1TtVWxnnOPKFxag== 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=1772634116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MWQLWx+3uVcF4csywmcyMwgL9rfLqj1A8XuHhcWHP6M=; b=C6kfJNYJq4kjzQ+2dt1PpNnx0m3llVAh/RxLwyyn6JBvmxqZIkfNf3ENmsV67bksz+/EOl lWLEZgNE1J58hgVgE9k4WUrVynfIQNTvMIKztYbz7gkhHrYDqqbuLUBJZvrqXiVmPtM1GF zajoy5Znim/gfAqZRVsKzDg+N2IlyhtCRiohd1sggWdCbMo/xfOPhn0Vd5SHZDSYUWJco4 5ROputpUQSPmu86XVTDTrlPJT13bQCMVuLob772mECZbHyThV9JYdmzXahywxAXoDUnVJw dvtNmfDd0n/5MJWM/gPBgI8keH+avWSSq/ZKoD3sr/hPOsI7V5EmT3hXTY97Zw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQvxb6jDwzv8d for ; Wed, 04 Mar 2026 14:21:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 227f2 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:21:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 4bac18002ab4 - stable/14 - smp: Use bitwise operation to count cpu number 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4bac18002ab418131a2c0bc41fba089700f1ba85 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:21:55 +0000 Message-Id: <69a84003.227f2.335c0e3a@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=4bac18002ab418131a2c0bc41fba089700f1ba85 commit 4bac18002ab418131a2c0bc41fba089700f1ba85 Author: ShengYi Hung AuthorDate: 2026-01-03 16:32:50 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 14:21:13 +0000 smp: Use bitwise operation to count cpu number Previously, we iterated over all CPUs using CPU_FOREACH and checked individual bits to count valid CPUs. Refactor this to use a bitwise AND and popcount to count the number of enabled bits directly. Approved by: markj (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54474 (cherry picked from commit e387d9438ba0258b88ebe03ef139bc6fd70b5a46) --- sys/kern/subr_smp.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index 7cbf83928786..d78e65ee0af3 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -556,7 +556,7 @@ smp_rendezvous_cpus(cpuset_t map, void (* teardown_func)(void *), void *arg) { - int curcpumap, i, ncpus = 0; + int curcpumap, ncpus = 0; /* See comments in the !SMP case. */ if (!smp_started) { @@ -577,10 +577,8 @@ smp_rendezvous_cpus(cpuset_t map, */ MPASS(curthread->td_md.md_spinlock_count == 0); - CPU_FOREACH(i) { - if (CPU_ISSET(i, &map)) - ncpus++; - } + CPU_AND(&map, &map, &all_cpus); + ncpus = CPU_COUNT(&map); if (ncpus == 0) panic("ncpus is 0 with non-zero map"); From nobody Wed Mar 4 14:38: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 4fQwJd3g9Pz6TbBb for ; Wed, 04 Mar 2026 14:38: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 4fQwJd32PTz3Xxc for ; Wed, 04 Mar 2026 14:38:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QvK6ZcqaBLB1YBYsAE0ZXrWpelNbsG4MKDljNORO2FA=; b=Th5MjVwSTHe0iTB8+bsTsYtEsoBq3QbRHTXdCyrhCLA/qs4U/1t2j8JdreVRT5fhr+76M+ Bo0/5cQIPRgUMfDkB6ty+OuMe3F4FFCV2Ux9Ov7q5ehrUsbWkkKUAWk/fO+ifLJmTv1LO2 b15nj3kGprLdWkdY0cqIwYIvoyh+xFf030RWgN9UwMutWjhfOgHAZdPtUZOi/SswdbLylR 7lY5LaMVm1aVkC9r7gOUIn4jRQ9rd4d01s8RUY1SgKGuKbgt7qFQ0Eh6OLWxaPs/5gehgX KSHxCMR5lAlNpVxhg0tUazK84HfiZ7ZDd7UpiDQwK7ZXVbGUKAV6iwXcFN9lBw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635105; a=rsa-sha256; cv=none; b=kiRXVm+JlT94onUQqO9WVxSbJmlu3Zmhy5fT7AUNqMQzsa4gsZ1F/TH4IjoQOjgAlRuAwM KFnMiU4GWrc1V/AJHFMbgwl0axM5sCw6ShaCZHmvfcEACGSAsIkU413wm29/q1U60sV1y9 cCJz2faPf9FTBq2MXR75vXnpQGXsvfRZUmRYygIxFnjrns6c6Y73xqxItlx0ZIkP+xIEYA vTZBZFJnqdmU3wknG8e45UXxU+gKuBpUsARd1MVs9W2LXJFNvTfxpTUN83OSLzYzn/msff QRqDDyn+heWtcNTQhmIj3G7LuZe7l2VM7O6QiD8HoNC6DlRgUnReD58jJ5J72Q== 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=1772635105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QvK6ZcqaBLB1YBYsAE0ZXrWpelNbsG4MKDljNORO2FA=; b=sB+PPYaa6PaZokLxd8WP+auonIyv/So0rcn3kG+QYUrObjy16Wwpq5HfTfKVGaTLHc7Ki8 GNz4tx2XhM4jaWiTbxVrnxRTOqQeTrYdvG8Q/w0rznhJvdBhDmGjHf5RhU5pq/5fSTeQIc 9/Cod5H4NRVVxEFgEF+ThTwvMDGtKWipbGIKKLQE40mswLDVny0+KaljFkD6LhCOXz/kaC J/D9ezWXwj4+jvC8p54+TzOjK5MmWdsT8ExoIdY4xbN0NDKduo15yaXhHuiA2VDtxtvWrI I5ydK9Q3y1nhg+kjx9OL4sbWyzekyRmgIrvsDN0Uu2YNgUaIsJ+KhSmdIMk+Fg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwJd2HJPzvdm for ; Wed, 04 Mar 2026 14:38:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 24ecd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:38:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: a34f42b083dd - stable/14 - vmm: Support INOUT manual decode. 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a34f42b083dd323314d385bc7b00323d336ea28b Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:38:25 +0000 Message-Id: <69a843e1.24ecd.6c03850@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=a34f42b083dd323314d385bc7b00323d336ea28b commit a34f42b083dd323314d385bc7b00323d336ea28b Author: ShengYi Hung AuthorDate: 2025-07-11 08:52:01 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 14:35:40 +0000 vmm: Support INOUT manual decode. The inout instruction in AMD SVM requires DecodeAssist feature to decode the segment override prefix. However, without that feature, we are still able to decode by fetching the instruction directly. Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51256 (cherry picked from commit c18c521c79b6160ce43bb2ca4c2eb42ccf7e6e57) --- sys/amd64/include/vmm.h | 2 + sys/amd64/include/vmm_instruction_emul.h | 25 +++++++++ sys/amd64/vmm/amd/svm.c | 90 +++++++++++++++++++------------- sys/amd64/vmm/intel/vmx.c | 2 + sys/amd64/vmm/vmm_instruction_emul.c | 34 ++++-------- sys/amd64/vmm/vmm_ioport.c | 40 ++++++++++++++ 6 files changed, 132 insertions(+), 61 deletions(-) diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h index 09f2ea7cb0e5..262fbd6449a0 100644 --- a/sys/amd64/include/vmm.h +++ b/sys/amd64/include/vmm.h @@ -674,6 +674,8 @@ struct vm_inout_str { int addrsize; enum vm_reg_name seg_name; struct seg_desc seg_desc; + int cs_d; + uint64_t cs_base; }; enum task_switch_reason { diff --git a/sys/amd64/include/vmm_instruction_emul.h b/sys/amd64/include/vmm_instruction_emul.h index a21754ac777f..e57ad81c3e60 100644 --- a/sys/amd64/include/vmm_instruction_emul.h +++ b/sys/amd64/include/vmm_instruction_emul.h @@ -31,6 +31,31 @@ #include +/* struct vie_op.op_type */ +enum { + VIE_OP_TYPE_NONE = 0, + VIE_OP_TYPE_MOV, + VIE_OP_TYPE_MOVSX, + VIE_OP_TYPE_MOVZX, + VIE_OP_TYPE_AND, + VIE_OP_TYPE_OR, + VIE_OP_TYPE_SUB, + VIE_OP_TYPE_TWO_BYTE, + VIE_OP_TYPE_PUSH, + VIE_OP_TYPE_CMP, + VIE_OP_TYPE_POP, + VIE_OP_TYPE_MOVS, + VIE_OP_TYPE_GROUP1, + VIE_OP_TYPE_STOS, + VIE_OP_TYPE_BITTEST, + VIE_OP_TYPE_TWOB_GRP15, + VIE_OP_TYPE_ADD, + VIE_OP_TYPE_TEST, + VIE_OP_TYPE_BEXTR, + VIE_OP_TYPE_OUTS, + VIE_OP_TYPE_LAST +}; + /* * Callback functions to read and write memory regions. */ diff --git a/sys/amd64/vmm/amd/svm.c b/sys/amd64/vmm/amd/svm.c index 3fda9454090b..b85a3e0fcc3e 100644 --- a/sys/amd64/vmm/amd/svm.c +++ b/sys/amd64/vmm/amd/svm.c @@ -309,6 +309,33 @@ svm_set_tsc_offset(struct svm_vcpu *vcpu, uint64_t offset) #define MSR_AMD7TH_START 0xC0010000UL #define MSR_AMD7TH_END 0xC0011FFFUL +static void +svm_get_cs_info(struct vmcb *vmcb, struct vm_guest_paging *paging, int *cs_d, + uint64_t *base) +{ + struct vmcb_segment seg; + int error __diagused; + + error = vmcb_seg(vmcb, VM_REG_GUEST_CS, &seg); + KASSERT(error == 0, ("%s: vmcb_seg error %d", __func__, error)); + + switch (paging->cpu_mode) { + case CPU_MODE_REAL: + *base = seg.base; + *cs_d = 0; + break; + case CPU_MODE_PROTECTED: + case CPU_MODE_COMPATIBILITY: + *cs_d = !!(seg.attrib & VMCB_CS_ATTRIB_D); + *base = seg.base; + break; + default: + *base = 0; + *cs_d = 0; + break; + } +} + /* * Get the index and bit position for a MSR in permission bitmap. * Two bits are used for each MSR: lower bit for read and higher bit for write. @@ -727,10 +754,29 @@ svm_inout_str_seginfo(struct svm_vcpu *vcpu, int64_t info1, int in, if (in) { vis->seg_name = VM_REG_GUEST_ES; - } else { - /* The segment field has standard encoding */ + } else if (decode_assist()) { + /* + * The effective segment number in EXITINFO1[12:10] is populated + * only if the processor has the DecodeAssist capability. + * + * XXX this is not specified explicitly in APMv2 but can be + * verified empirically. + */ s = (info1 >> 10) & 0x7; + + /* The segment field has standard encoding */ vis->seg_name = vm_segment_name(s); + } else { + /* + * The segment register need to be manually decoded by fetching + * the instructions near ip. However, we are unable to fetch it + * while the interrupts are disabled. Therefore, we leave the + * value unset until the generic ins/outs handler runs. + */ + vis->seg_name = VM_REG_LAST; + svm_get_cs_info(vcpu->vmcb, &vis->paging, &vis->cs_d, + &vis->cs_base); + return; } error = svm_getdesc(vcpu, vis->seg_name, &vis->seg_desc); @@ -790,16 +836,6 @@ svm_handle_io(struct svm_vcpu *vcpu, struct vm_exit *vmexit) info1 = ctrl->exitinfo1; inout_string = info1 & BIT(2) ? 1 : 0; - /* - * The effective segment number in EXITINFO1[12:10] is populated - * only if the processor has the DecodeAssist capability. - * - * XXX this is not specified explicitly in APMv2 but can be verified - * empirically. - */ - if (inout_string && !decode_assist()) - return (UNHANDLED); - vmexit->exitcode = VM_EXITCODE_INOUT; vmexit->u.inout.in = (info1 & BIT(0)) ? 1 : 0; vmexit->u.inout.string = inout_string; @@ -817,6 +853,8 @@ svm_handle_io(struct svm_vcpu *vcpu, struct vm_exit *vmexit) vis->index = svm_inout_str_index(regs, vmexit->u.inout.in); vis->count = svm_inout_str_count(regs, vmexit->u.inout.rep); vis->addrsize = svm_inout_str_addrsize(info1); + vis->cs_d = 0; + vis->cs_base = 0; svm_inout_str_seginfo(vcpu, info1, vmexit->u.inout.in, vis); } @@ -858,10 +896,9 @@ static void svm_handle_inst_emul(struct vmcb *vmcb, uint64_t gpa, struct vm_exit *vmexit) { struct vm_guest_paging *paging; - struct vmcb_segment seg; struct vmcb_ctrl *ctrl; char *inst_bytes; - int error __diagused, inst_len; + int inst_len; ctrl = &vmcb->ctrl; paging = &vmexit->u.inst_emul.paging; @@ -871,29 +908,8 @@ svm_handle_inst_emul(struct vmcb *vmcb, uint64_t gpa, struct vm_exit *vmexit) vmexit->u.inst_emul.gla = VIE_INVALID_GLA; svm_paging_info(vmcb, paging); - error = vmcb_seg(vmcb, VM_REG_GUEST_CS, &seg); - KASSERT(error == 0, ("%s: vmcb_seg(CS) error %d", __func__, error)); - - switch(paging->cpu_mode) { - case CPU_MODE_REAL: - vmexit->u.inst_emul.cs_base = seg.base; - vmexit->u.inst_emul.cs_d = 0; - break; - case CPU_MODE_PROTECTED: - case CPU_MODE_COMPATIBILITY: - vmexit->u.inst_emul.cs_base = seg.base; - - /* - * Section 4.8.1 of APM2, Default Operand Size or D bit. - */ - vmexit->u.inst_emul.cs_d = (seg.attrib & VMCB_CS_ATTRIB_D) ? - 1 : 0; - break; - default: - vmexit->u.inst_emul.cs_base = 0; - vmexit->u.inst_emul.cs_d = 0; - break; - } + svm_get_cs_info(vmcb, paging, &vmexit->u.inst_emul.cs_d, + &vmexit->u.inst_emul.cs_base); /* * Copy the instruction bytes into 'vie' if available. diff --git a/sys/amd64/vmm/intel/vmx.c b/sys/amd64/vmm/intel/vmx.c index 3fe20986ec8d..daa4ef56316f 100644 --- a/sys/amd64/vmm/intel/vmx.c +++ b/sys/amd64/vmm/intel/vmx.c @@ -2648,6 +2648,8 @@ vmx_exit_process(struct vmx *vmx, struct vmx_vcpu *vcpu, struct vm_exit *vmexit) vis->index = inout_str_index(vcpu, in); vis->count = inout_str_count(vcpu, vis->inout.rep); vis->addrsize = inout_str_addrsize(inst_info); + vis->cs_d = 0; + vis->cs_base = 0; inout_str_seginfo(vcpu, inst_info, in, vis); } SDT_PROBE3(vmm, vmx, exit, inout, vmx, vcpuid, vmexit); diff --git a/sys/amd64/vmm/vmm_instruction_emul.c b/sys/amd64/vmm/vmm_instruction_emul.c index 7626082ff88d..12b7413e33de 100644 --- a/sys/amd64/vmm/vmm_instruction_emul.c +++ b/sys/amd64/vmm/vmm_instruction_emul.c @@ -63,30 +63,6 @@ #include #include -/* struct vie_op.op_type */ -enum { - VIE_OP_TYPE_NONE = 0, - VIE_OP_TYPE_MOV, - VIE_OP_TYPE_MOVSX, - VIE_OP_TYPE_MOVZX, - VIE_OP_TYPE_AND, - VIE_OP_TYPE_OR, - VIE_OP_TYPE_SUB, - VIE_OP_TYPE_TWO_BYTE, - VIE_OP_TYPE_PUSH, - VIE_OP_TYPE_CMP, - VIE_OP_TYPE_POP, - VIE_OP_TYPE_MOVS, - VIE_OP_TYPE_GROUP1, - VIE_OP_TYPE_STOS, - VIE_OP_TYPE_BITTEST, - VIE_OP_TYPE_TWOB_GRP15, - VIE_OP_TYPE_ADD, - VIE_OP_TYPE_TEST, - VIE_OP_TYPE_BEXTR, - VIE_OP_TYPE_LAST -}; - /* struct vie_op.op_flags */ #define VIE_OP_F_IMM (1 << 0) /* 16/32-bit immediate operand */ #define VIE_OP_F_IMM8 (1 << 1) /* 8-bit immediate operand */ @@ -150,6 +126,16 @@ static const struct vie_op one_byte_opcodes[256] = { .op_byte = 0x3B, .op_type = VIE_OP_TYPE_CMP, }, + [0x6E] = { + .op_byte = 0x6E, + .op_type = VIE_OP_TYPE_OUTS, + .op_flags = VIE_OP_F_NO_MODRM | VIE_OP_F_NO_GLA_VERIFICATION, + }, + [0x6F] = { + .op_byte = 0x6F, + .op_type = VIE_OP_TYPE_OUTS, + .op_flags = VIE_OP_F_NO_MODRM | VIE_OP_F_NO_GLA_VERIFICATION, + }, [0x88] = { .op_byte = 0x88, .op_type = VIE_OP_TYPE_MOV, diff --git a/sys/amd64/vmm/vmm_ioport.c b/sys/amd64/vmm/vmm_ioport.c index 3caea7deac16..c8f777a82c14 100644 --- a/sys/amd64/vmm/vmm_ioport.c +++ b/sys/amd64/vmm/vmm_ioport.c @@ -144,10 +144,50 @@ emulate_inout_port(struct vcpu *vcpu, struct vm_exit *vmexit, bool *retu) return (0); } +static int +decode_segment(struct vcpu *vcpu, enum vm_reg_name *segment) +{ + struct vm_guest_paging *paging; + struct vie vie; + struct vm_exit *vme; + int err; + int fault; + + vme = vm_exitinfo(vcpu); + paging = &vme->u.inout_str.paging; + + vie_init(&vie, NULL, 0); + err = vmm_fetch_instruction(vcpu, paging, + vme->rip + vme->u.inout_str.cs_base, VIE_INST_SIZE, &vie, &fault); + if (err || fault) + return (err); + + err = vmm_decode_instruction(vcpu, VIE_INVALID_GLA, paging->cpu_mode, + vme->u.inout_str.cs_d, &vie); + + if (err || vie.op.op_type != VIE_OP_TYPE_OUTS) + return (EINVAL); + if (vie.segment_override) + *segment = vie.segment_register; + else + *segment = VM_REG_GUEST_DS; + + return (0); +} + static int emulate_inout_str(struct vcpu *vcpu, struct vm_exit *vmexit, bool *retu) { + int err; + *retu = true; + if (vmexit->u.inout_str.seg_name == VM_REG_LAST) { + err = decode_segment(vcpu, &vmexit->u.inout_str.seg_name); + if (err) + return (err); + return (vm_get_seg_desc(vcpu, vmexit->u.inout_str.seg_name, + &vmexit->u.inout_str.seg_desc)); + } return (0); /* Return to userspace to finish emulation */ } From nobody Wed Mar 4 14:41: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 4fQwNy6yRNz6TbHx; Wed, 04 Mar 2026 14:42:10 +0000 (UTC) (envelope-from aokblast@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (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 "smtp.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fQwNy6kRrz3ZSJ; Wed, 04 Mar 2026 14:42:10 +0000 (UTC) (envelope-from aokblast@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=+NVYhRH7VZd7kGuAPqu4Lktkj/UCxOh8u19Cy86CELk=; b=cRgj5aDX2mOZcqB3yP0m1rOpCBdyQ5wGYcYmGK+M+QlTXsa0qz0uHkvf3a6RlkakEV0RnQ x213OVNB8qnR2EeckxvX0aJEpMhdiPmdVXlFmhisLrg/H530lyylqMVvnPZhMAX/IJmYEe uopoV5BIPRk296a2uSVW4GvzILfDjudngwT5OrRAokT6DhhTymZqgLVknp2fbEWhyaQ5ya RqenNQ4J1xBWlHQJNNbFa/fYYHo02c+IN0YJltv2seuKafT0ly/YrRhuoqRsVxGZmlXpyq B/fUehLksTKEMWcicRPmoDtgSzRdg+RgmjCBN6oCkn23ODJcwVJa0K7k+IJaaQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635330; a=rsa-sha256; cv=none; b=n38lJT+DtDuWyGFASkL8zm+wYDVgD5mqCfsa+o+sUsGz7GNqQL9pMjNddHtPxqsUo4g9Rh K7TDGZwKm1iRna4uJ+PrTiMjAOrdGaWa3yMyiHfS0BKbwpTgWIHMdazbFvwhb6Qbo+M/qP 0koEUjCYb04b49sTWc4S3jhk1bnAMPfxlvk4yTu/SfS918DXSDLytZhXGDFxkHI7/8bqy1 6vtW/fuzry9UItRRh9boGeEQZhmmpkcGJlyPfptNHEN0SA9YKtInXz127U6xlVNGJCNR7J HIbutjxOO1V86OEJYLDWiB7BmiMCkwgP/Y+ooGCFWX0URUm5r60cMKo3wMsevg== 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=1772635330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=+NVYhRH7VZd7kGuAPqu4Lktkj/UCxOh8u19Cy86CELk=; b=Uen0aE8c3ZVmZFnCREFcMEM/JeJuKDdBBkdGLmkKKASVK0He6VkWMATRbkQb/VSgx6hfPJ HW52KyCWhPJ2zRY8q/l0GCqLPvxiexAsXsq0aoXcft6ibsxugFjyEfT0Uns/TAryJp63i6 S7r+B2aFj4QwaJ6/M4G+tgb405gZ70ESKb4VSZhqBbqwel0gExRgUs7tGA7ZLAugTiG+1r akWbs/2KHqttwr1QqT2ZxXzg+rJr/TdwnA63RtMDJEBteFvZ81DJPU54pJTZzSG8mP9oRP rbLNLRZwGfCJQMsvvzfe8U0K8qGHqyyHM3bekDwEC3hdcQNB2PsTz5/5ECk3Zw== Received: from [IPV6:2001:b011:3808:3c9b:c651:d0a5:df6b:f6bf] (2001-b011-3808-3c9b-c651-d0a5-df6b-f6bf.dynamic-ip6.hinet.net [IPv6:2001:b011:3808:3c9b:c651:d0a5:df6b:f6bf]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: aokblast) by smtp.freebsd.org (Postfix) with ESMTPSA id 4fQwNx4PB1z194h; Wed, 04 Mar 2026 14:42:09 +0000 (UTC) (envelope-from aokblast@FreeBSD.org) Message-ID: Date: Wed, 4 Mar 2026 22:41:41 +0800 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 User-Agent: Mozilla Thunderbird Subject: Re: git: a34f42b083dd - stable/14 - vmm: Support INOUT manual decode. From: ShengYi Hung To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org References: <69a843e1.24ecd.6c03850@gitrepo.freebsd.org> Content-Language: en-US Autocrypt: addr=aokblast@FreeBSD.org; keydata= xsDNBGhkuaEBDAD0a1Cu+ntw+v0/ZZnqTewGcd335T5tfktBEt22FsaoBqca7TSp/AvP/bWD 3YtJFlxi7TJQbb2H+ylPzusPaN/R1Sj6wQsRD1Fj+1AjF9EOqxdohXm0SoWs3sRRbMrMGp6q DTQQBMj3TEuSE26gLxmpadtiAsyNDcNCllMSXAZ7xlk+ra9x/pAqOR0TZvObwY8VUncCy6UW UIGmsUF5B7oR2v7i9rFk/3ILkcoIC1k+OlhMbxBpwPLA24Aj8sZX9dzFbwLn2wucqRUzE9Id zrwpQpRHxH0t849VBhLze+zP8s6IUtgKaTUjClmCfZXVVBpFswXJmxgDRo51Ed+X94K2y6FS DRMxwiz18vnJNWlB+aHH5wTbgoTKU+zOckXODBowNEEmYpQNVNYJs1nP6tGRmN4YwW5hcNQY dUmFKR44uYdJomcqxkzJjU4rv4NBOdzrQTw+h5gCUdQ5IvBBGTA1enEP1qMhCpwTOfMd53of 17BC3CMFNTu8rburHceMaU0AEQEAAc0jU2hlbmdZaSBIdW5nIDxhb2tibGFzdEBGcmVlQlNE Lm9yZz7CwRcEEwEIAEEWIQSIP4S1lgaPs34UknRfTtfYEmBsYAUCaGS5oQIbAwUJBaOagAUL CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBfTtfYEmBsYJKeDAC/aJjRjMM9k9n6uwUW HemoAUGjv5fxkIpHWYCltnZ9KMs+TZXLsUZrv9DxOV4E3ebEn7iMJbOAvIjjVK//qexo6/er 9EZow4e/EQJLIL/0xRDiF4Jg7l1jziAI26P6dyuMNzeHddFg7ALVfE9wPCFqn3QGbHqDVjI/ E9UcxXiwHktndAo1wJXdEq9F8Ufmtj1t9NasTip8ofNgKfWCGhyyZI0kvhvob5darflQMO8Y G61zmSteO5Es8i9sP+lOhwEgsgHl0L/gQtMrOko9Td1iOSMuaP9t3rx7pOnYLdKt+xw8kWnB IW6GNEzp5QVJxmzr4DiyvvuR4SxnYy2tZjzQV4W8njBvw8SmZs0oS40iP8XNAoc91xLBizDn Lne3BDYOMXgm4csmDnJBM8s7Gaoc+WMY+hDP9SKWSqhyJUg8tauVhmPP3sTEXJbHoD0TuXxO SwG9nEdKoeWQCA0XMXQGfYWHKy1qz3spYCFgXHqmF+WBLljqLaeHQsHmvUhUIuTOwM0EaGS5 oQEMAMiauBmqNndH0AaX9cqOCf660X6fj7iidxwPY9pSUBOgZ3c13pRJLiR6xsYnOWm+Dgf2 BbNOz5iEtwx3Msrjw70/LsTJ4FdByUXZPZwujaPZ2SfowLMXXZbEJrPkJ2HeamaDw/Gf5O/p aDtAS3i8sFkKiOHwBX4doaL5Rxy/oqSpYTYL8tBFUWMHHk4ji12P6Pw1aW2H81XzKTae1Tga 8ViuiWzqibbbk5ddHjr/L+6LfTDM00K7WTZVBnW0qsMZJ9PQpt8636cuJx6D3ITXxtg4IzFN z7HOKbPQazSGhaqsbdxKmtwcP2uZEycsX+hPhtoOS2FuF5nWIYRZSzWBxWiOopHdRLL4YfAL MsGhFdnPH/J3G9gyBroiCiq2moRl2OSgo9W6rMxLCm62657zsvCo8p/KxaGq/ynwCAoQ1wHQ aVerJkGMf0n5tLkbNm2SyAbRy3tA/EfbzT0Yufq5gu9zGN/Uxf5hgFO6UqDHrlPeSSz++6m/ OAj3yLIsl2GpDwARAQABwsD8BBgBCAAmFiEEiD+EtZYGj7N+FJJ0X07X2BJgbGAFAmhkuaEC GwwFCQWjmoAACgkQX07X2BJgbGAJswv/dODZRYTWb/Xx8Y/Ei1OXLZIoNxoUHvBVEqO1xR/F JPwYM8TVcihvhCfM5lLhYdY1pkLjXdlGbTKZtvdHWHLvs62jGVjUXij52z1jOurnX2u0x1vq 1zpklWBx4VQhd3sVtcyLNdDYBFi3epVf1NEctToWyfBys6ijtVkhjem3V/l0PI1WtkECzYfP TOA+guf4dmrGSHPOZpCyFwHPRcVI+4puva4s4tjCAYa5E56GkICUJLuT1x228iqr5OC8YA7F eOTN94L/GqII6joaX2HIrcpGDybRIhGty+BqXvRIpjp0z5PdDeHiFQFTnBAEnjiATAMDKd7S q8y7Pv8OD/ptOl7Fg5iexCGVoLc3idpo/5T5fEXEaEWcGF9HRUeRTrnqQ9yBnALsqoLLVfou eF5Cl7c3p1pwbdR0iSK9p4x6BDcnrnIE52vRCtCdivyxTNa+zKdjlI6gn7oNsRmOnQbkEXML 9WZi4YnrnITSzpkpCzeQCDI0gqUdsxsbt4Vi73Oq In-Reply-To: <69a843e1.24ecd.6c03850@gitrepo.freebsd.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------yLt0AEb0Gl2W0uvIFjwlIWym" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------yLt0AEb0Gl2W0uvIFjwlIWym Content-Type: multipart/mixed; boundary="------------L0lSomSL3LbCFmoijxFx7wtY"; protected-headers="v1" Message-ID: Date: Wed, 4 Mar 2026 22:41:41 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: a34f42b083dd - stable/14 - vmm: Support INOUT manual decode. From: ShengYi Hung To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org References: <69a843e1.24ecd.6c03850@gitrepo.freebsd.org> Content-Language: en-US Autocrypt: addr=aokblast@FreeBSD.org; keydata= xsDNBGhkuaEBDAD0a1Cu+ntw+v0/ZZnqTewGcd335T5tfktBEt22FsaoBqca7TSp/AvP/bWD 3YtJFlxi7TJQbb2H+ylPzusPaN/R1Sj6wQsRD1Fj+1AjF9EOqxdohXm0SoWs3sRRbMrMGp6q DTQQBMj3TEuSE26gLxmpadtiAsyNDcNCllMSXAZ7xlk+ra9x/pAqOR0TZvObwY8VUncCy6UW UIGmsUF5B7oR2v7i9rFk/3ILkcoIC1k+OlhMbxBpwPLA24Aj8sZX9dzFbwLn2wucqRUzE9Id zrwpQpRHxH0t849VBhLze+zP8s6IUtgKaTUjClmCfZXVVBpFswXJmxgDRo51Ed+X94K2y6FS DRMxwiz18vnJNWlB+aHH5wTbgoTKU+zOckXODBowNEEmYpQNVNYJs1nP6tGRmN4YwW5hcNQY dUmFKR44uYdJomcqxkzJjU4rv4NBOdzrQTw+h5gCUdQ5IvBBGTA1enEP1qMhCpwTOfMd53of 17BC3CMFNTu8rburHceMaU0AEQEAAc0jU2hlbmdZaSBIdW5nIDxhb2tibGFzdEBGcmVlQlNE Lm9yZz7CwRcEEwEIAEEWIQSIP4S1lgaPs34UknRfTtfYEmBsYAUCaGS5oQIbAwUJBaOagAUL CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBfTtfYEmBsYJKeDAC/aJjRjMM9k9n6uwUW HemoAUGjv5fxkIpHWYCltnZ9KMs+TZXLsUZrv9DxOV4E3ebEn7iMJbOAvIjjVK//qexo6/er 9EZow4e/EQJLIL/0xRDiF4Jg7l1jziAI26P6dyuMNzeHddFg7ALVfE9wPCFqn3QGbHqDVjI/ E9UcxXiwHktndAo1wJXdEq9F8Ufmtj1t9NasTip8ofNgKfWCGhyyZI0kvhvob5darflQMO8Y G61zmSteO5Es8i9sP+lOhwEgsgHl0L/gQtMrOko9Td1iOSMuaP9t3rx7pOnYLdKt+xw8kWnB IW6GNEzp5QVJxmzr4DiyvvuR4SxnYy2tZjzQV4W8njBvw8SmZs0oS40iP8XNAoc91xLBizDn Lne3BDYOMXgm4csmDnJBM8s7Gaoc+WMY+hDP9SKWSqhyJUg8tauVhmPP3sTEXJbHoD0TuXxO SwG9nEdKoeWQCA0XMXQGfYWHKy1qz3spYCFgXHqmF+WBLljqLaeHQsHmvUhUIuTOwM0EaGS5 oQEMAMiauBmqNndH0AaX9cqOCf660X6fj7iidxwPY9pSUBOgZ3c13pRJLiR6xsYnOWm+Dgf2 BbNOz5iEtwx3Msrjw70/LsTJ4FdByUXZPZwujaPZ2SfowLMXXZbEJrPkJ2HeamaDw/Gf5O/p aDtAS3i8sFkKiOHwBX4doaL5Rxy/oqSpYTYL8tBFUWMHHk4ji12P6Pw1aW2H81XzKTae1Tga 8ViuiWzqibbbk5ddHjr/L+6LfTDM00K7WTZVBnW0qsMZJ9PQpt8636cuJx6D3ITXxtg4IzFN z7HOKbPQazSGhaqsbdxKmtwcP2uZEycsX+hPhtoOS2FuF5nWIYRZSzWBxWiOopHdRLL4YfAL MsGhFdnPH/J3G9gyBroiCiq2moRl2OSgo9W6rMxLCm62657zsvCo8p/KxaGq/ynwCAoQ1wHQ aVerJkGMf0n5tLkbNm2SyAbRy3tA/EfbzT0Yufq5gu9zGN/Uxf5hgFO6UqDHrlPeSSz++6m/ OAj3yLIsl2GpDwARAQABwsD8BBgBCAAmFiEEiD+EtZYGj7N+FJJ0X07X2BJgbGAFAmhkuaEC GwwFCQWjmoAACgkQX07X2BJgbGAJswv/dODZRYTWb/Xx8Y/Ei1OXLZIoNxoUHvBVEqO1xR/F JPwYM8TVcihvhCfM5lLhYdY1pkLjXdlGbTKZtvdHWHLvs62jGVjUXij52z1jOurnX2u0x1vq 1zpklWBx4VQhd3sVtcyLNdDYBFi3epVf1NEctToWyfBys6ijtVkhjem3V/l0PI1WtkECzYfP TOA+guf4dmrGSHPOZpCyFwHPRcVI+4puva4s4tjCAYa5E56GkICUJLuT1x228iqr5OC8YA7F eOTN94L/GqII6joaX2HIrcpGDybRIhGty+BqXvRIpjp0z5PdDeHiFQFTnBAEnjiATAMDKd7S q8y7Pv8OD/ptOl7Fg5iexCGVoLc3idpo/5T5fEXEaEWcGF9HRUeRTrnqQ9yBnALsqoLLVfou eF5Cl7c3p1pwbdR0iSK9p4x6BDcnrnIE52vRCtCdivyxTNa+zKdjlI6gn7oNsRmOnQbkEXML 9WZi4YnrnITSzpkpCzeQCDI0gqUdsxsbt4Vi73Oq In-Reply-To: <69a843e1.24ecd.6c03850@gitrepo.freebsd.org> --------------L0lSomSL3LbCFmoijxFx7wtY Content-Type: multipart/mixed; boundary="------------SqP20ztvsZwZc8uvVRQlzs04" --------------SqP20ztvsZwZc8uvVRQlzs04 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Rm9yIHBlb3BsZSB3aG8gbWlnaHQgdGhpbmsgYWRkIGZpZWxkcyBpbiBzdHJ1Y3Qgdm1faW5v dXRfc3RyIGJyZWFrcyBBQkk6DQoNClRoaXMgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCBpbiBh IHVuaW9uIGFuZCB0aGUgc2l6ZSBvZiB0aGF0IHVuaW9uIGlzIA0KbGFyZ2VyIChjaGVja2Vk IGJ5IHN0YXRpY19hc3NlcnQpIGV2ZW4gaWYgd2UgYWRkIHRoZXNlIHR3byBmaWVsZHMgaW4g aGVyZS4NCg0KT24gMy80LzI2IDIyOjM4LCBTaGVuZ1lpIEh1bmcgd3JvdGU6DQo+IFRoZSBi cmFuY2ggc3RhYmxlLzE0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYW9rYmxhc3Q6DQo+DQo+IFVS TDogaHR0cHM6Ly9jZ2l0LkZyZWVCU0Qub3JnL3NyYy9jb21taXQvP2lkPWEzNGY0MmIwODNk ZDMyMzMxNGQzODViYzdiMDAzMjNkMzM2ZWEyOGINCj4NCj4gY29tbWl0IGEzNGY0MmIwODNk ZDMyMzMxNGQzODViYzdiMDAzMjNkMzM2ZWEyOGINCj4gQXV0aG9yOiAgICAgU2hlbmdZaSBI dW5nIDxhb2tibGFzdEBGcmVlQlNELm9yZz4NCj4gQXV0aG9yRGF0ZTogMjAyNS0wNy0xMSAw ODo1MjowMSArMDAwMA0KPiBDb21taXQ6ICAgICBTaGVuZ1lpIEh1bmcgPGFva2JsYXN0QEZy ZWVCU0Qub3JnPg0KPiBDb21taXREYXRlOiAyMDI2LTAzLTA0IDE0OjM1OjQwICswMDAwDQo+ DQo+ICAgICAgdm1tOiBTdXBwb3J0IElOT1VUIG1hbnVhbCBkZWNvZGUuDQo+ICAgICAgDQo+ ICAgICAgVGhlIGlub3V0IGluc3RydWN0aW9uIGluIEFNRCBTVk0gcmVxdWlyZXMgRGVjb2Rl QXNzaXN0IGZlYXR1cmUgdG8gZGVjb2RlIHRoZQ0KPiAgICAgIHNlZ21lbnQgb3ZlcnJpZGUg cHJlZml4LiBIb3dldmVyLCB3aXRob3V0IHRoYXQgZmVhdHVyZSwgd2UgYXJlIHN0aWxsDQo+ ICAgICAgYWJsZSB0byBkZWNvZGUgYnkgZmV0Y2hpbmcgdGhlIGluc3RydWN0aW9uIGRpcmVj dGx5Lg0KPiAgICAgIA0KPiAgICAgIEFwcHJvdmVkIGJ5OiAgICBtYXJraiAobWVudG9yKQ0K PiAgICAgIE1GQyBhZnRlcjogICAgICAyIHdlZWtzDQo+ICAgICAgU3BvbnNvcmVkIGJ5OiAg IFRoZSBGcmVlQlNEIEZvdW5kYXRpb24NCj4gICAgICBEaWZmZXJlbnRpYWwgUmV2aXNpb246 IGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9ENTEyNTYNCj4gICAgICANCj4gICAgICAo Y2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjMThjNTIxYzc5YjYxNjBjZTQzYmIyY2E0YzJl YjQyY2NmN2U2ZTU3KQ0KPiAtLS0NCj4gICBzeXMvYW1kNjQvaW5jbHVkZS92bW0uaCAgICAg ICAgICAgICAgICAgIHwgIDIgKw0KPiAgIHN5cy9hbWQ2NC9pbmNsdWRlL3ZtbV9pbnN0cnVj dGlvbl9lbXVsLmggfCAyNSArKysrKysrKysNCj4gICBzeXMvYW1kNjQvdm1tL2FtZC9zdm0u YyAgICAgICAgICAgICAgICAgIHwgOTAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0NCj4gICBzeXMvYW1kNjQvdm1tL2ludGVsL3ZteC5jICAgICAgICAgICAgICAgIHwgIDIg Kw0KPiAgIHN5cy9hbWQ2NC92bW0vdm1tX2luc3RydWN0aW9uX2VtdWwuYyAgICAgfCAzNCAr KysrLS0tLS0tLS0NCj4gICBzeXMvYW1kNjQvdm1tL3ZtbV9pb3BvcnQuYyAgICAgICAgICAg ICAgIHwgNDAgKysrKysrKysrKysrKysNCj4gICA2IGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNl cnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL3N5cy9hbWQ2 NC9pbmNsdWRlL3ZtbS5oIGIvc3lzL2FtZDY0L2luY2x1ZGUvdm1tLmgNCj4gaW5kZXggMDlm MmVhN2NiMGU1Li4yNjJmYmQ2NDQ5YTAgMTAwNjQ0DQo+IC0tLSBhL3N5cy9hbWQ2NC9pbmNs dWRlL3ZtbS5oDQo+ICsrKyBiL3N5cy9hbWQ2NC9pbmNsdWRlL3ZtbS5oDQo+IEBAIC02NzQs NiArNjc0LDggQEAgc3RydWN0IHZtX2lub3V0X3N0ciB7DQo+ICAgCWludAkJYWRkcnNpemU7 DQo+ICAgCWVudW0gdm1fcmVnX25hbWUgc2VnX25hbWU7DQo+ICAgCXN0cnVjdCBzZWdfZGVz YyBzZWdfZGVzYzsNCj4gKwlpbnQJCWNzX2Q7DQo+ICsJdWludDY0X3QJY3NfYmFzZTsNCj4g ICB9Ow0KPiAgIA0KPiAgIGVudW0gdGFza19zd2l0Y2hfcmVhc29uIHsNCj4gZGlmZiAtLWdp dCBhL3N5cy9hbWQ2NC9pbmNsdWRlL3ZtbV9pbnN0cnVjdGlvbl9lbXVsLmggYi9zeXMvYW1k NjQvaW5jbHVkZS92bW1faW5zdHJ1Y3Rpb25fZW11bC5oDQo+IGluZGV4IGEyMTc1NGFjNzc3 Zi4uZTU3YWQ4MWMzZTYwIDEwMDY0NA0KPiAtLS0gYS9zeXMvYW1kNjQvaW5jbHVkZS92bW1f aW5zdHJ1Y3Rpb25fZW11bC5oDQo+ICsrKyBiL3N5cy9hbWQ2NC9pbmNsdWRlL3ZtbV9pbnN0 cnVjdGlvbl9lbXVsLmgNCj4gQEAgLTMxLDYgKzMxLDMxIEBADQo+ICAgDQo+ICAgI2luY2x1 ZGUgPHN5cy9tbWFuLmg+DQo+ICAgDQo+ICsvKiBzdHJ1Y3QgdmllX29wLm9wX3R5cGUgKi8N Cj4gK2VudW0gew0KPiArCVZJRV9PUF9UWVBFX05PTkUgPSAwLA0KPiArCVZJRV9PUF9UWVBF X01PViwNCj4gKwlWSUVfT1BfVFlQRV9NT1ZTWCwNCj4gKwlWSUVfT1BfVFlQRV9NT1ZaWCwN Cj4gKwlWSUVfT1BfVFlQRV9BTkQsDQo+ICsJVklFX09QX1RZUEVfT1IsDQo+ICsJVklFX09Q X1RZUEVfU1VCLA0KPiArCVZJRV9PUF9UWVBFX1RXT19CWVRFLA0KPiArCVZJRV9PUF9UWVBF X1BVU0gsDQo+ICsJVklFX09QX1RZUEVfQ01QLA0KPiArCVZJRV9PUF9UWVBFX1BPUCwNCj4g KwlWSUVfT1BfVFlQRV9NT1ZTLA0KPiArCVZJRV9PUF9UWVBFX0dST1VQMSwNCj4gKwlWSUVf T1BfVFlQRV9TVE9TLA0KPiArCVZJRV9PUF9UWVBFX0JJVFRFU1QsDQo+ICsJVklFX09QX1RZ UEVfVFdPQl9HUlAxNSwNCj4gKwlWSUVfT1BfVFlQRV9BREQsDQo+ICsJVklFX09QX1RZUEVf VEVTVCwNCj4gKwlWSUVfT1BfVFlQRV9CRVhUUiwNCj4gKwlWSUVfT1BfVFlQRV9PVVRTLA0K PiArCVZJRV9PUF9UWVBFX0xBU1QNCj4gK307DQo+ICsNCj4gICAvKg0KPiAgICAqIENhbGxi YWNrIGZ1bmN0aW9ucyB0byByZWFkIGFuZCB3cml0ZSBtZW1vcnkgcmVnaW9ucy4NCj4gICAg Ki8NCj4gZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC92bW0vYW1kL3N2bS5jIGIvc3lzL2FtZDY0 L3ZtbS9hbWQvc3ZtLmMNCj4gaW5kZXggM2ZkYTk0NTQwOTBiLi5iODVhM2UwZmNjM2UgMTAw NjQ0DQo+IC0tLSBhL3N5cy9hbWQ2NC92bW0vYW1kL3N2bS5jDQo+ICsrKyBiL3N5cy9hbWQ2 NC92bW0vYW1kL3N2bS5jDQo+IEBAIC0zMDksNiArMzA5LDMzIEBAIHN2bV9zZXRfdHNjX29m ZnNldChzdHJ1Y3Qgc3ZtX3ZjcHUgKnZjcHUsIHVpbnQ2NF90IG9mZnNldCkNCj4gICAjZGVm aW5lIE1TUl9BTUQ3VEhfU1RBUlQgCTB4QzAwMTAwMDBVTAkNCj4gICAjZGVmaW5lIE1TUl9B TUQ3VEhfRU5EIAkJMHhDMDAxMUZGRlVMCQ0KPiAgIA0KPiArc3RhdGljIHZvaWQNCj4gK3N2 bV9nZXRfY3NfaW5mbyhzdHJ1Y3Qgdm1jYiAqdm1jYiwgc3RydWN0IHZtX2d1ZXN0X3BhZ2lu ZyAqcGFnaW5nLCBpbnQgKmNzX2QsDQo+ICsgICAgdWludDY0X3QgKmJhc2UpDQo+ICt7DQo+ ICsJc3RydWN0IHZtY2Jfc2VnbWVudCBzZWc7DQo+ICsJaW50IGVycm9yIF9fZGlhZ3VzZWQ7 DQo+ICsNCj4gKwllcnJvciA9IHZtY2Jfc2VnKHZtY2IsIFZNX1JFR19HVUVTVF9DUywgJnNl Zyk7DQo+ICsJS0FTU0VSVChlcnJvciA9PSAwLCAoIiVzOiB2bWNiX3NlZyBlcnJvciAlZCIs IF9fZnVuY19fLCBlcnJvcikpOw0KPiArDQo+ICsJc3dpdGNoIChwYWdpbmctPmNwdV9tb2Rl KSB7DQo+ICsJY2FzZSBDUFVfTU9ERV9SRUFMOg0KPiArCQkqYmFzZSA9IHNlZy5iYXNlOw0K PiArCQkqY3NfZCA9IDA7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgQ1BVX01PREVfUFJPVEVD VEVEOg0KPiArCWNhc2UgQ1BVX01PREVfQ09NUEFUSUJJTElUWToNCj4gKwkJKmNzX2QgPSAh IShzZWcuYXR0cmliICYgVk1DQl9DU19BVFRSSUJfRCk7DQo+ICsJCSpiYXNlID0gc2VnLmJh c2U7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCSpiYXNlID0gMDsNCj4gKwkJ KmNzX2QgPSAwOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gICAvKg0KPiAg ICAqIEdldCB0aGUgaW5kZXggYW5kIGJpdCBwb3NpdGlvbiBmb3IgYSBNU1IgaW4gcGVybWlz c2lvbiBiaXRtYXAuDQo+ICAgICogVHdvIGJpdHMgYXJlIHVzZWQgZm9yIGVhY2ggTVNSOiBs b3dlciBiaXQgZm9yIHJlYWQgYW5kIGhpZ2hlciBiaXQgZm9yIHdyaXRlLg0KPiBAQCAtNzI3 LDEwICs3NTQsMjkgQEAgc3ZtX2lub3V0X3N0cl9zZWdpbmZvKHN0cnVjdCBzdm1fdmNwdSAq dmNwdSwgaW50NjRfdCBpbmZvMSwgaW50IGluLA0KPiAgIA0KPiAgIAlpZiAoaW4pIHsNCj4g ICAJCXZpcy0+c2VnX25hbWUgPSBWTV9SRUdfR1VFU1RfRVM7DQo+IC0JfSBlbHNlIHsNCj4g LQkJLyogVGhlIHNlZ21lbnQgZmllbGQgaGFzIHN0YW5kYXJkIGVuY29kaW5nICovDQo+ICsJ fSBlbHNlIGlmIChkZWNvZGVfYXNzaXN0KCkpIHsNCj4gKwkJLyoNCj4gKwkJICogVGhlIGVm ZmVjdGl2ZSBzZWdtZW50IG51bWJlciBpbiBFWElUSU5GTzFbMTI6MTBdIGlzIHBvcHVsYXRl ZA0KPiArCQkgKiBvbmx5IGlmIHRoZSBwcm9jZXNzb3IgaGFzIHRoZSBEZWNvZGVBc3Npc3Qg Y2FwYWJpbGl0eS4NCj4gKwkJICoNCj4gKwkJICogWFhYIHRoaXMgaXMgbm90IHNwZWNpZmll ZCBleHBsaWNpdGx5IGluIEFQTXYyIGJ1dCBjYW4gYmUNCj4gKwkJICogdmVyaWZpZWQgZW1w aXJpY2FsbHkuDQo+ICsJCSAqLw0KPiAgIAkJcyA9IChpbmZvMSA+PiAxMCkgJiAweDc7DQo+ ICsNCj4gKwkJLyogVGhlIHNlZ21lbnQgZmllbGQgaGFzIHN0YW5kYXJkIGVuY29kaW5nICov DQo+ICAgCQl2aXMtPnNlZ19uYW1lID0gdm1fc2VnbWVudF9uYW1lKHMpOw0KPiArCX0gZWxz ZSB7DQo+ICsJCS8qDQo+ICsJCSAqIFRoZSBzZWdtZW50IHJlZ2lzdGVyIG5lZWQgdG8gYmUg bWFudWFsbHkgZGVjb2RlZCBieSBmZXRjaGluZw0KPiArCQkgKiB0aGUgaW5zdHJ1Y3Rpb25z IG5lYXIgaXAuIEhvd2V2ZXIsIHdlIGFyZSB1bmFibGUgdG8gZmV0Y2ggaXQNCj4gKwkJICog d2hpbGUgdGhlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLiBUaGVyZWZvcmUsIHdlIGxlYXZl IHRoZQ0KPiArCQkgKiB2YWx1ZSB1bnNldCB1bnRpbCB0aGUgZ2VuZXJpYyBpbnMvb3V0cyBo YW5kbGVyIHJ1bnMuDQo+ICsJCSAqLw0KPiArCQl2aXMtPnNlZ19uYW1lID0gVk1fUkVHX0xB U1Q7DQo+ICsJCXN2bV9nZXRfY3NfaW5mbyh2Y3B1LT52bWNiLCAmdmlzLT5wYWdpbmcsICZ2 aXMtPmNzX2QsDQo+ICsJCSAgICAmdmlzLT5jc19iYXNlKTsNCj4gKwkJcmV0dXJuOw0KPiAg IAl9DQo+ICAgDQo+ICAgCWVycm9yID0gc3ZtX2dldGRlc2ModmNwdSwgdmlzLT5zZWdfbmFt ZSwgJnZpcy0+c2VnX2Rlc2MpOw0KPiBAQCAtNzkwLDE2ICs4MzYsNiBAQCBzdm1faGFuZGxl X2lvKHN0cnVjdCBzdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2V4aXQgKnZtZXhpdCkNCj4g ICAJaW5mbzEgPSBjdHJsLT5leGl0aW5mbzE7DQo+ICAgCWlub3V0X3N0cmluZyA9IGluZm8x ICYgQklUKDIpID8gMSA6IDA7DQo+ICAgDQo+IC0JLyoNCj4gLQkgKiBUaGUgZWZmZWN0aXZl IHNlZ21lbnQgbnVtYmVyIGluIEVYSVRJTkZPMVsxMjoxMF0gaXMgcG9wdWxhdGVkDQo+IC0J ICogb25seSBpZiB0aGUgcHJvY2Vzc29yIGhhcyB0aGUgRGVjb2RlQXNzaXN0IGNhcGFiaWxp dHkuDQo+IC0JICoNCj4gLQkgKiBYWFggdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0 bHkgaW4gQVBNdjIgYnV0IGNhbiBiZSB2ZXJpZmllZA0KPiAtCSAqIGVtcGlyaWNhbGx5Lg0K PiAtCSAqLw0KPiAtCWlmIChpbm91dF9zdHJpbmcgJiYgIWRlY29kZV9hc3Npc3QoKSkNCj4g LQkJcmV0dXJuIChVTkhBTkRMRUQpOw0KPiAtDQo+ICAgCXZtZXhpdC0+ZXhpdGNvZGUgCT0g Vk1fRVhJVENPREVfSU5PVVQ7DQo+ICAgCXZtZXhpdC0+dS5pbm91dC5pbiAJPSAoaW5mbzEg JiBCSVQoMCkpID8gMSA6IDA7DQo+ICAgCXZtZXhpdC0+dS5pbm91dC5zdHJpbmcgCT0gaW5v dXRfc3RyaW5nOw0KPiBAQCAtODE3LDYgKzg1Myw4IEBAIHN2bV9oYW5kbGVfaW8oc3RydWN0 IHN2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1fZXhpdCAqdm1leGl0KQ0KPiAgIAkJdmlzLT5p bmRleCA9IHN2bV9pbm91dF9zdHJfaW5kZXgocmVncywgdm1leGl0LT51Lmlub3V0LmluKTsN Cj4gICAJCXZpcy0+Y291bnQgPSBzdm1faW5vdXRfc3RyX2NvdW50KHJlZ3MsIHZtZXhpdC0+ dS5pbm91dC5yZXApOw0KPiAgIAkJdmlzLT5hZGRyc2l6ZSA9IHN2bV9pbm91dF9zdHJfYWRk cnNpemUoaW5mbzEpOw0KPiArCQl2aXMtPmNzX2QgPSAwOw0KPiArCQl2aXMtPmNzX2Jhc2Ug PSAwOw0KPiAgIAkJc3ZtX2lub3V0X3N0cl9zZWdpbmZvKHZjcHUsIGluZm8xLCB2bWV4aXQt PnUuaW5vdXQuaW4sIHZpcyk7DQo+ICAgCX0NCj4gICANCj4gQEAgLTg1OCwxMCArODk2LDkg QEAgc3RhdGljIHZvaWQNCj4gICBzdm1faGFuZGxlX2luc3RfZW11bChzdHJ1Y3Qgdm1jYiAq dm1jYiwgdWludDY0X3QgZ3BhLCBzdHJ1Y3Qgdm1fZXhpdCAqdm1leGl0KQ0KPiAgIHsNCj4g ICAJc3RydWN0IHZtX2d1ZXN0X3BhZ2luZyAqcGFnaW5nOw0KPiAtCXN0cnVjdCB2bWNiX3Nl Z21lbnQgc2VnOw0KPiAgIAlzdHJ1Y3Qgdm1jYl9jdHJsICpjdHJsOw0KPiAgIAljaGFyICpp bnN0X2J5dGVzOw0KPiAtCWludCBlcnJvciBfX2RpYWd1c2VkLCBpbnN0X2xlbjsNCj4gKwlp bnQgaW5zdF9sZW47DQo+ICAgDQo+ICAgCWN0cmwgPSAmdm1jYi0+Y3RybDsNCj4gICAJcGFn aW5nID0gJnZtZXhpdC0+dS5pbnN0X2VtdWwucGFnaW5nOw0KPiBAQCAtODcxLDI5ICs5MDgs OCBAQCBzdm1faGFuZGxlX2luc3RfZW11bChzdHJ1Y3Qgdm1jYiAqdm1jYiwgdWludDY0X3Qg Z3BhLCBzdHJ1Y3Qgdm1fZXhpdCAqdm1leGl0KQ0KPiAgIAl2bWV4aXQtPnUuaW5zdF9lbXVs LmdsYSA9IFZJRV9JTlZBTElEX0dMQTsNCj4gICAJc3ZtX3BhZ2luZ19pbmZvKHZtY2IsIHBh Z2luZyk7DQo+ICAgDQo+IC0JZXJyb3IgPSB2bWNiX3NlZyh2bWNiLCBWTV9SRUdfR1VFU1Rf Q1MsICZzZWcpOw0KPiAtCUtBU1NFUlQoZXJyb3IgPT0gMCwgKCIlczogdm1jYl9zZWcoQ1Mp IGVycm9yICVkIiwgX19mdW5jX18sIGVycm9yKSk7DQo+IC0NCj4gLQlzd2l0Y2gocGFnaW5n LT5jcHVfbW9kZSkgew0KPiAtCWNhc2UgQ1BVX01PREVfUkVBTDoNCj4gLQkJdm1leGl0LT51 Lmluc3RfZW11bC5jc19iYXNlID0gc2VnLmJhc2U7DQo+IC0JCXZtZXhpdC0+dS5pbnN0X2Vt dWwuY3NfZCA9IDA7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgQ1BVX01PREVfUFJPVEVDVEVE Og0KPiAtCWNhc2UgQ1BVX01PREVfQ09NUEFUSUJJTElUWToNCj4gLQkJdm1leGl0LT51Lmlu c3RfZW11bC5jc19iYXNlID0gc2VnLmJhc2U7DQo+IC0NCj4gLQkJLyoNCj4gLQkJICogU2Vj dGlvbiA0LjguMSBvZiBBUE0yLCBEZWZhdWx0IE9wZXJhbmQgU2l6ZSBvciBEIGJpdC4NCj4g LQkJICovDQo+IC0JCXZtZXhpdC0+dS5pbnN0X2VtdWwuY3NfZCA9IChzZWcuYXR0cmliICYg Vk1DQl9DU19BVFRSSUJfRCkgPw0KPiAtCQkgICAgMSA6IDA7DQo+IC0JCWJyZWFrOw0KPiAt CWRlZmF1bHQ6DQo+IC0JCXZtZXhpdC0+dS5pbnN0X2VtdWwuY3NfYmFzZSA9IDA7DQo+IC0J CXZtZXhpdC0+dS5pbnN0X2VtdWwuY3NfZCA9IDA7DQo+IC0JCWJyZWFrOwkNCj4gLQl9DQo+ ICsJc3ZtX2dldF9jc19pbmZvKHZtY2IsIHBhZ2luZywgJnZtZXhpdC0+dS5pbnN0X2VtdWwu Y3NfZCwNCj4gKwkgICAgJnZtZXhpdC0+dS5pbnN0X2VtdWwuY3NfYmFzZSk7DQo+ICAgDQo+ ICAgCS8qDQo+ICAgCSAqIENvcHkgdGhlIGluc3RydWN0aW9uIGJ5dGVzIGludG8gJ3ZpZScg aWYgYXZhaWxhYmxlLg0KPiBkaWZmIC0tZ2l0IGEvc3lzL2FtZDY0L3ZtbS9pbnRlbC92bXgu YyBiL3N5cy9hbWQ2NC92bW0vaW50ZWwvdm14LmMNCj4gaW5kZXggM2ZlMjA5ODZlYzhkLi5k YWE0ZWY1NjMxNmYgMTAwNjQ0DQo+IC0tLSBhL3N5cy9hbWQ2NC92bW0vaW50ZWwvdm14LmMN Cj4gKysrIGIvc3lzL2FtZDY0L3ZtbS9pbnRlbC92bXguYw0KPiBAQCAtMjY0OCw2ICsyNjQ4 LDggQEAgdm14X2V4aXRfcHJvY2VzcyhzdHJ1Y3Qgdm14ICp2bXgsIHN0cnVjdCB2bXhfdmNw dSAqdmNwdSwgc3RydWN0IHZtX2V4aXQgKnZtZXhpdCkNCj4gICAJCQl2aXMtPmluZGV4ID0g aW5vdXRfc3RyX2luZGV4KHZjcHUsIGluKTsNCj4gICAJCQl2aXMtPmNvdW50ID0gaW5vdXRf c3RyX2NvdW50KHZjcHUsIHZpcy0+aW5vdXQucmVwKTsNCj4gICAJCQl2aXMtPmFkZHJzaXpl ID0gaW5vdXRfc3RyX2FkZHJzaXplKGluc3RfaW5mbyk7DQo+ICsJCQl2aXMtPmNzX2QgPSAw Ow0KPiArCQkJdmlzLT5jc19iYXNlID0gMDsNCj4gICAJCQlpbm91dF9zdHJfc2VnaW5mbyh2 Y3B1LCBpbnN0X2luZm8sIGluLCB2aXMpOw0KPiAgIAkJfQ0KPiAgIAkJU0RUX1BST0JFMyh2 bW0sIHZteCwgZXhpdCwgaW5vdXQsIHZteCwgdmNwdWlkLCB2bWV4aXQpOw0KPiBkaWZmIC0t Z2l0IGEvc3lzL2FtZDY0L3ZtbS92bW1faW5zdHJ1Y3Rpb25fZW11bC5jIGIvc3lzL2FtZDY0 L3ZtbS92bW1faW5zdHJ1Y3Rpb25fZW11bC5jDQo+IGluZGV4IDc2MjYwODJmZjg4ZC4uMTJi NzQxM2UzM2RlIDEwMDY0NA0KPiAtLS0gYS9zeXMvYW1kNjQvdm1tL3ZtbV9pbnN0cnVjdGlv bl9lbXVsLmMNCj4gKysrIGIvc3lzL2FtZDY0L3ZtbS92bW1faW5zdHJ1Y3Rpb25fZW11bC5j DQo+IEBAIC02MywzMCArNjMsNiBAQA0KPiAgICNpbmNsdWRlIDx4ODYvcHNsLmg+DQo+ICAg I2luY2x1ZGUgPHg4Ni9zcGVjaWFscmVnLmg+DQo+ICAgDQo+IC0vKiBzdHJ1Y3QgdmllX29w Lm9wX3R5cGUgKi8NCj4gLWVudW0gew0KPiAtCVZJRV9PUF9UWVBFX05PTkUgPSAwLA0KPiAt CVZJRV9PUF9UWVBFX01PViwNCj4gLQlWSUVfT1BfVFlQRV9NT1ZTWCwNCj4gLQlWSUVfT1Bf VFlQRV9NT1ZaWCwNCj4gLQlWSUVfT1BfVFlQRV9BTkQsDQo+IC0JVklFX09QX1RZUEVfT1Is DQo+IC0JVklFX09QX1RZUEVfU1VCLA0KPiAtCVZJRV9PUF9UWVBFX1RXT19CWVRFLA0KPiAt CVZJRV9PUF9UWVBFX1BVU0gsDQo+IC0JVklFX09QX1RZUEVfQ01QLA0KPiAtCVZJRV9PUF9U WVBFX1BPUCwNCj4gLQlWSUVfT1BfVFlQRV9NT1ZTLA0KPiAtCVZJRV9PUF9UWVBFX0dST1VQ MSwNCj4gLQlWSUVfT1BfVFlQRV9TVE9TLA0KPiAtCVZJRV9PUF9UWVBFX0JJVFRFU1QsDQo+ IC0JVklFX09QX1RZUEVfVFdPQl9HUlAxNSwNCj4gLQlWSUVfT1BfVFlQRV9BREQsDQo+IC0J VklFX09QX1RZUEVfVEVTVCwNCj4gLQlWSUVfT1BfVFlQRV9CRVhUUiwNCj4gLQlWSUVfT1Bf VFlQRV9MQVNUDQo+IC19Ow0KPiAtDQo+ICAgLyogc3RydWN0IHZpZV9vcC5vcF9mbGFncyAq Lw0KPiAgICNkZWZpbmUJVklFX09QX0ZfSU1NCQkoMSA8PCAwKSAgLyogMTYvMzItYml0IGlt bWVkaWF0ZSBvcGVyYW5kICovDQo+ICAgI2RlZmluZQlWSUVfT1BfRl9JTU04CQkoMSA8PCAx KSAgLyogOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgKi8NCj4gQEAgLTE1MCw2ICsxMjYsMTYg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2aWVfb3Agb25lX2J5dGVfb3Bjb2Rlc1syNTZdID0g ew0KPiAgIAkJLm9wX2J5dGUgPSAweDNCLA0KPiAgIAkJLm9wX3R5cGUgPSBWSUVfT1BfVFlQ RV9DTVAsDQo+ICAgCX0sDQo+ICsJWzB4NkVdID0gew0KPiArCQkub3BfYnl0ZSA9IDB4NkUs DQo+ICsJCS5vcF90eXBlID0gVklFX09QX1RZUEVfT1VUUywNCj4gKwkJLm9wX2ZsYWdzID0g VklFX09QX0ZfTk9fTU9EUk0gfCBWSUVfT1BfRl9OT19HTEFfVkVSSUZJQ0FUSU9OLA0KPiAr CX0sDQo+ICsJWzB4NkZdID0gew0KPiArCQkub3BfYnl0ZSA9IDB4NkYsDQo+ICsJCS5vcF90 eXBlID0gVklFX09QX1RZUEVfT1VUUywNCj4gKwkJLm9wX2ZsYWdzID0gVklFX09QX0ZfTk9f TU9EUk0gfCBWSUVfT1BfRl9OT19HTEFfVkVSSUZJQ0FUSU9OLA0KPiArCX0sDQo+ICAgCVsw eDg4XSA9IHsNCj4gICAJCS5vcF9ieXRlID0gMHg4OCwNCj4gICAJCS5vcF90eXBlID0gVklF X09QX1RZUEVfTU9WLA0KPiBkaWZmIC0tZ2l0IGEvc3lzL2FtZDY0L3ZtbS92bW1faW9wb3J0 LmMgYi9zeXMvYW1kNjQvdm1tL3ZtbV9pb3BvcnQuYw0KPiBpbmRleCAzY2FlYTdkZWFjMTYu LmM4Zjc3N2E4MmMxNCAxMDA2NDQNCj4gLS0tIGEvc3lzL2FtZDY0L3ZtbS92bW1faW9wb3J0 LmMNCj4gKysrIGIvc3lzL2FtZDY0L3ZtbS92bW1faW9wb3J0LmMNCj4gQEAgLTE0NCwxMCAr MTQ0LDUwIEBAIGVtdWxhdGVfaW5vdXRfcG9ydChzdHJ1Y3QgdmNwdSAqdmNwdSwgc3RydWN0 IHZtX2V4aXQgKnZtZXhpdCwgYm9vbCAqcmV0dSkNCj4gICAJcmV0dXJuICgwKTsNCj4gICB9 DQo+ICAgDQo+ICtzdGF0aWMgaW50DQo+ICtkZWNvZGVfc2VnbWVudChzdHJ1Y3QgdmNwdSAq dmNwdSwgZW51bSB2bV9yZWdfbmFtZSAqc2VnbWVudCkNCj4gK3sNCj4gKwlzdHJ1Y3Qgdm1f Z3Vlc3RfcGFnaW5nICpwYWdpbmc7DQo+ICsJc3RydWN0IHZpZSB2aWU7DQo+ICsJc3RydWN0 IHZtX2V4aXQgKnZtZTsNCj4gKwlpbnQgZXJyOw0KPiArCWludCBmYXVsdDsNCj4gKw0KPiAr CXZtZSA9IHZtX2V4aXRpbmZvKHZjcHUpOw0KPiArCXBhZ2luZyA9ICZ2bWUtPnUuaW5vdXRf c3RyLnBhZ2luZzsNCj4gKw0KPiArCXZpZV9pbml0KCZ2aWUsIE5VTEwsIDApOw0KPiArCWVy ciA9IHZtbV9mZXRjaF9pbnN0cnVjdGlvbih2Y3B1LCBwYWdpbmcsDQo+ICsJICAgIHZtZS0+ cmlwICsgdm1lLT51Lmlub3V0X3N0ci5jc19iYXNlLCBWSUVfSU5TVF9TSVpFLCAmdmllLCAm ZmF1bHQpOw0KPiArCWlmIChlcnIgfHwgZmF1bHQpDQo+ICsJCXJldHVybiAoZXJyKTsNCj4g Kw0KPiArCWVyciA9IHZtbV9kZWNvZGVfaW5zdHJ1Y3Rpb24odmNwdSwgVklFX0lOVkFMSURf R0xBLCBwYWdpbmctPmNwdV9tb2RlLA0KPiArCSAgICB2bWUtPnUuaW5vdXRfc3RyLmNzX2Qs ICZ2aWUpOw0KPiArDQo+ICsJaWYgKGVyciB8fCB2aWUub3Aub3BfdHlwZSAhPSBWSUVfT1Bf VFlQRV9PVVRTKQ0KPiArCQlyZXR1cm4gKEVJTlZBTCk7DQo+ICsJaWYgKHZpZS5zZWdtZW50 X292ZXJyaWRlKQ0KPiArCQkqc2VnbWVudCA9IHZpZS5zZWdtZW50X3JlZ2lzdGVyOw0KPiAr CWVsc2UNCj4gKwkJKnNlZ21lbnQgPSBWTV9SRUdfR1VFU1RfRFM7DQo+ICsNCj4gKwlyZXR1 cm4gKDApOw0KPiArfQ0KPiArDQo+ICAgc3RhdGljIGludA0KPiAgIGVtdWxhdGVfaW5vdXRf c3RyKHN0cnVjdCB2Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1fZXhpdCAqdm1leGl0LCBib29sICpy ZXR1KQ0KPiAgIHsNCj4gKwlpbnQgZXJyOw0KPiArDQo+ICAgCSpyZXR1ID0gdHJ1ZTsNCj4g KwlpZiAodm1leGl0LT51Lmlub3V0X3N0ci5zZWdfbmFtZSA9PSBWTV9SRUdfTEFTVCkgew0K PiArCQllcnIgPSBkZWNvZGVfc2VnbWVudCh2Y3B1LCAmdm1leGl0LT51Lmlub3V0X3N0ci5z ZWdfbmFtZSk7DQo+ICsJCWlmIChlcnIpDQo+ICsJCQlyZXR1cm4gKGVycik7DQo+ICsJCXJl dHVybiAodm1fZ2V0X3NlZ19kZXNjKHZjcHUsIHZtZXhpdC0+dS5pbm91dF9zdHIuc2VnX25h bWUsDQo+ICsJCSAgICAmdm1leGl0LT51Lmlub3V0X3N0ci5zZWdfZGVzYykpOw0KPiArCX0N Cj4gICAJcmV0dXJuICgwKTsJLyogUmV0dXJuIHRvIHVzZXJzcGFjZSB0byBmaW5pc2ggZW11 bGF0aW9uICovDQo+ICAgfQ0KPiAgIA0KPg0K --------------SqP20ztvsZwZc8uvVRQlzs04 Content-Type: application/pgp-keys; name="OpenPGP_0x5F4ED7D812606C60.asc" Content-Disposition: attachment; filename="OpenPGP_0x5F4ED7D812606C60.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xsDNBGhkuaEBDAD0a1Cu+ntw+v0/ZZnqTewGcd335T5tfktBEt22FsaoBqca7TSp /AvP/bWD3YtJFlxi7TJQbb2H+ylPzusPaN/R1Sj6wQsRD1Fj+1AjF9EOqxdohXm0 SoWs3sRRbMrMGp6qDTQQBMj3TEuSE26gLxmpadtiAsyNDcNCllMSXAZ7xlk+ra9x /pAqOR0TZvObwY8VUncCy6UWUIGmsUF5B7oR2v7i9rFk/3ILkcoIC1k+OlhMbxBp wPLA24Aj8sZX9dzFbwLn2wucqRUzE9IdzrwpQpRHxH0t849VBhLze+zP8s6IUtgK aTUjClmCfZXVVBpFswXJmxgDRo51Ed+X94K2y6FSDRMxwiz18vnJNWlB+aHH5wTb goTKU+zOckXODBowNEEmYpQNVNYJs1nP6tGRmN4YwW5hcNQYdUmFKR44uYdJomcq xkzJjU4rv4NBOdzrQTw+h5gCUdQ5IvBBGTA1enEP1qMhCpwTOfMd53of17BC3CMF NTu8rburHceMaU0AEQEAAc0jU2hlbmdZaSBIdW5nIDxhb2tibGFzdEBGcmVlQlNE Lm9yZz7CwRcEEwEIAEEWIQSIP4S1lgaPs34UknRfTtfYEmBsYAUCaGS5oQIbAwUJ BaOagAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBfTtfYEmBsYJKeDAC/ aJjRjMM9k9n6uwUWHemoAUGjv5fxkIpHWYCltnZ9KMs+TZXLsUZrv9DxOV4E3ebE n7iMJbOAvIjjVK//qexo6/er9EZow4e/EQJLIL/0xRDiF4Jg7l1jziAI26P6dyuM NzeHddFg7ALVfE9wPCFqn3QGbHqDVjI/E9UcxXiwHktndAo1wJXdEq9F8Ufmtj1t 9NasTip8ofNgKfWCGhyyZI0kvhvob5darflQMO8YG61zmSteO5Es8i9sP+lOhwEg sgHl0L/gQtMrOko9Td1iOSMuaP9t3rx7pOnYLdKt+xw8kWnBIW6GNEzp5QVJxmzr 4DiyvvuR4SxnYy2tZjzQV4W8njBvw8SmZs0oS40iP8XNAoc91xLBizDnLne3BDYO MXgm4csmDnJBM8s7Gaoc+WMY+hDP9SKWSqhyJUg8tauVhmPP3sTEXJbHoD0TuXxO SwG9nEdKoeWQCA0XMXQGfYWHKy1qz3spYCFgXHqmF+WBLljqLaeHQsHmvUhUIuTO wM0EaGS5oQEMAMiauBmqNndH0AaX9cqOCf660X6fj7iidxwPY9pSUBOgZ3c13pRJ LiR6xsYnOWm+Dgf2BbNOz5iEtwx3Msrjw70/LsTJ4FdByUXZPZwujaPZ2SfowLMX XZbEJrPkJ2HeamaDw/Gf5O/paDtAS3i8sFkKiOHwBX4doaL5Rxy/oqSpYTYL8tBF UWMHHk4ji12P6Pw1aW2H81XzKTae1Tga8ViuiWzqibbbk5ddHjr/L+6LfTDM00K7 WTZVBnW0qsMZJ9PQpt8636cuJx6D3ITXxtg4IzFNz7HOKbPQazSGhaqsbdxKmtwc P2uZEycsX+hPhtoOS2FuF5nWIYRZSzWBxWiOopHdRLL4YfALMsGhFdnPH/J3G9gy BroiCiq2moRl2OSgo9W6rMxLCm62657zsvCo8p/KxaGq/ynwCAoQ1wHQaVerJkGM f0n5tLkbNm2SyAbRy3tA/EfbzT0Yufq5gu9zGN/Uxf5hgFO6UqDHrlPeSSz++6m/ OAj3yLIsl2GpDwARAQABwsD8BBgBCAAmFiEEiD+EtZYGj7N+FJJ0X07X2BJgbGAF AmhkuaECGwwFCQWjmoAACgkQX07X2BJgbGAJswv/dODZRYTWb/Xx8Y/Ei1OXLZIo NxoUHvBVEqO1xR/FJPwYM8TVcihvhCfM5lLhYdY1pkLjXdlGbTKZtvdHWHLvs62j GVjUXij52z1jOurnX2u0x1vq1zpklWBx4VQhd3sVtcyLNdDYBFi3epVf1NEctToW yfBys6ijtVkhjem3V/l0PI1WtkECzYfPTOA+guf4dmrGSHPOZpCyFwHPRcVI+4pu va4s4tjCAYa5E56GkICUJLuT1x228iqr5OC8YA7FeOTN94L/GqII6joaX2HIrcpG DybRIhGty+BqXvRIpjp0z5PdDeHiFQFTnBAEnjiATAMDKd7Sq8y7Pv8OD/ptOl7F g5iexCGVoLc3idpo/5T5fEXEaEWcGF9HRUeRTrnqQ9yBnALsqoLLVfoueF5Cl7c3 p1pwbdR0iSK9p4x6BDcnrnIE52vRCtCdivyxTNa+zKdjlI6gn7oNsRmOnQbkEXML 9WZi4YnrnITSzpkpCzeQCDI0gqUdsxsbt4Vi73Oq =3DVgUx -----END PGP PUBLIC KEY BLOCK----- --------------SqP20ztvsZwZc8uvVRQlzs04-- --------------L0lSomSL3LbCFmoijxFx7wtY-- --------------yLt0AEb0Gl2W0uvIFjwlIWym Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsD5BAABCAAjFiEEiD+EtZYGj7N+FJJ0X07X2BJgbGAFAmmoRKUFAwAAAAAACgkQX07X2BJgbGB6 MQwAgAd9R3Klh84SrJScoWkAyNB3i+KOFXXiaeo8Su6tUxvu4Vp7VwLdg0c7SoZ8W/+3vDy6bjdY 21kNiZr0eZkyP0nI64cZz6FSImBgKlV8Q2Jd/Mr0vltsyw2MK4GwR/JwqCtTx+g4PVaA9hcamQrk ZX2PMLfX2AtjtxE4u6F/N5ukC7IO0mhK7XbrQzIBe0yndeNjK8pxS5GJ/A8xz4ov1zYmCo71bowQ /h49sFCa4kBP69TL1oGWjzbUQTa18np7vMCSXAcXbwtKhu4NbKlwe2Rniv2UHsR506VNQiJTvvX1 nvcm/iVEdfP+EEX9RdsbHTDrruks7IiSHu//dzFKcrqEcjCGGZtK2lEqkkWoxxwa00SQ/wfDj7qN xdKWHpNBEiaQZqwB11Vgw6MVNSd6O2v09JTJQos3qnRiIS29IVWhSSHF9CoWh+vulAwkwIfVgp3H /IiDk/zaUZJn0s2miLBxZRX+anDY7X5ZJor8f2IA5v/CBxMd3uJ52TdsHQUc =fzAz -----END PGP SIGNATURE----- --------------yLt0AEb0Gl2W0uvIFjwlIWym-- From nobody Wed Mar 4 14:45: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 4fQwSM0cWfz6Tbs0 for ; Wed, 04 Mar 2026 14:45: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 4fQwSL6v63z3b9B for ; Wed, 04 Mar 2026 14:45:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635507; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G7wg1Nyv0HIWF5rCufqaBQuolsK9vHtMhhwRU53HtwU=; b=ibbK2iql7PclAaxQV4eOphrPyCwDCrjJ8PG9Pt7LB3MjNhTi4cWO8fStpZuzKC8GjTFmjK 22W0nlh8g/48QhdcdRK7nEMyGFUVs8PGoHwQi8wCjISUUSAuWH5oSSoMIe5/jpYiqMd8h/ Z40qnneUo53EUXzqmpXjP3dkUe2UgiENocNohxURh6Bq7IThqJr+nTnXA63rlfQhAoPuMz eZ+ITNirdvntMfdcYfiphQ9wGDlVHCc62KDdfTJOcBGjkT3reICMfMc4MFzy7VJaqhi3Ak Fxlg8KtgJuW8Xfmql+9IzJovmx4KFObyc0G7P45RQONMZZ+fix92lLvbBLJwfQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635507; a=rsa-sha256; cv=none; b=W2ySALai7ObpXdbqSK1DCLEZeL7aGlwi92SSxeeDYLHUTff6dHKIzBkHM3AyPzL52SEeLJ J4qpHGmnbKuOJ/rg3aH4ejQNgP5QOaF8MeyG+vQCjUNzlMn4Wa5k6WEgWTnEp/GVODvG7X ID/+csdCUTJtZDX08tvlfrCkVQ4R8eqh56Y97zpPdY4OoVDWP3RpIbQ9xid5TKwq+vsT9L 6FtKnmL0T/ch2x1z7deyGI2At5iHVEIvI2+7ldbOLwvkIFLc91rmbgqr/JTEmK6TsBUD3d ZYadwK52YWkL6ztMZDALOuy9aHEEviyVEQ4tKNgn18KhGuN05G9Blm0YDf++Iw== 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=1772635507; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G7wg1Nyv0HIWF5rCufqaBQuolsK9vHtMhhwRU53HtwU=; b=DBF9u2PHdByyZzHsfdJQAdDvIqPc9gy4vOrhNhmQAsAJANcm+liPpRESesPGUsRIZz2QSr +4lNTTDQj583NDJVtGAJtGcvQXm2nfcZYJxYqFiLWjrW6WfUdWcW1elqwjKoNDCJjTKOCb W7TepQJt1puH3Xst0cqUu/A3PKi9qmKWyEEzEPSnNXXPZW6Usut+xdjCWryhxNgheS2WOD tnsQYoCA3eAqJG5oAOs9fHb27JTHYCY9NYbQbvLZ76gw/m2+6kZsFTiylhP2Gh1pJVE8Rr 2VZKqbHpy/3kknYHDziQlF4zP6LGxQi34C0RWhtxQXyxfKmqJFuhp4mIA5iNwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSL6RTnzw4H for ; Wed, 04 Mar 2026 14:45:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26259 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:06 +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: 1ea0da88d134 - stable/15 - system(3): Improve signal handling 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: 1ea0da88d134918e1b0a0e0e13809b27e43b797f Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:06 +0000 Message-Id: <69a84572.26259.11b1d4bd@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1ea0da88d134918e1b0a0e0e13809b27e43b797f commit 1ea0da88d134918e1b0a0e0e13809b27e43b797f Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:21 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:44:59 +0000 system(3): Improve signal handling Ignore SIGINT and SIGQUIT and block SIGCHLD, as POSIX requires. To deal with the concurrency problem described in POSIX, we keep track of the count of concurrent invocations. We ignore and block signals only when the counter was zero before we incremented it, and restore them only when the counter reaches zero after we decrement it. Note that this does not address the issue of thread cancellation. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov, sef, kevans Differential Revision: https://reviews.freebsd.org/D55471 (cherry picked from commit 6e589e6e8e64793adb437c561ec084dbb6ad1ced) --- lib/libc/stdlib/system.c | 116 +++++++++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 43 deletions(-) diff --git a/lib/libc/stdlib/system.c b/lib/libc/stdlib/system.c index b581a6ec3b14..17dd63eb52f9 100644 --- a/lib/libc/stdlib/system.c +++ b/lib/libc/stdlib/system.c @@ -32,21 +32,22 @@ #include "namespace.h" #include #include + +#include +#include #include -#include #include +#include #include #include -#include -#include #include "un-namespace.h" #include "libc_private.h" +#include "spinlock.h" #pragma weak system int system(const char *command) { - return (((int (*)(const char *)) __libc_interposing[INTERPOS_system])(command)); } @@ -54,54 +55,83 @@ system(const char *command) int __libc_system(const char *command) { - pid_t pid, savedpid; - int pstat; - struct sigaction ign, intact, quitact; - sigset_t newsigblock, oldsigblock; + static spinlock_t lock = _SPINLOCK_INITIALIZER; + static volatile unsigned long concurrent; + static struct sigaction ointact, oquitact; + struct sigaction ign; + sigset_t sigblock, osigblock; + int pstat = -1, serrno = 0; + pid_t pid; - if (!command) /* just checking... */ - return(1); + if (command == NULL) /* just checking... */ + return (1); - (void)sigemptyset(&newsigblock); - (void)sigaddset(&newsigblock, SIGCHLD); - (void)sigaddset(&newsigblock, SIGINT); - (void)sigaddset(&newsigblock, SIGQUIT); - (void)__libc_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); - switch(pid = vfork()) { /* - * In the child, use unwrapped syscalls. libthr is in - * undefined state after vfork(). + * If we are the first concurrent instance, ignore SIGINT and + * SIGQUIT. Block SIGCHLD regardless of concurrency, since on + * FreeBSD, sigprocmask() is equivalent to pthread_sigmask(). */ - case -1: /* error */ - (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); - return (-1); - case 0: /* child */ + if (__isthreaded) + _SPINLOCK(&lock); + if (concurrent++ == 0) { + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = SIG_IGN; + sigemptyset(&ign.sa_mask); + (void)__libc_sigaction(SIGINT, &ign, &ointact); + (void)__libc_sigaction(SIGQUIT, &ign, &oquitact); + } + sigemptyset(&sigblock); + sigaddset(&sigblock, SIGCHLD); + (void)__libc_sigprocmask(SIG_BLOCK, &sigblock, &osigblock); + if (__isthreaded) + _SPINUNLOCK(&lock); + + /* + * Fork the child process. + */ + if ((pid = fork()) < 0) { /* error */ + serrno = errno; + } else if (pid == 0) { /* child */ /* - * Restore original signal dispositions and exec the command. + * Restore original signal dispositions. */ - (void)__sys_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); - execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); + (void)__libc_sigaction(SIGINT, &ointact, NULL); + (void)__libc_sigaction(SIGQUIT, &oquitact, NULL); + (void)__sys_sigprocmask(SIG_SETMASK, &osigblock, NULL); + /* + * Exec the command. + */ + execl(_PATH_BSHELL, "sh", "-c", command, NULL); _exit(127); + } else { /* parent */ + /* + * Wait for the child to terminate. + */ + while (_wait4(pid, &pstat, 0, NULL) < 0) { + if (errno != EINTR) { + serrno = errno; + break; + } + } } - /* - * If we are running means that the child has either completed - * its execve, or has failed. - * Block SIGINT/QUIT because sh -c handles it and wait for - * it to clean up. + + /* + * If we are the last concurrent instance, restore original signal + * dispositions. Unblock SIGCHLD, unless it was already blocked. */ - memset(&ign, 0, sizeof(ign)); - ign.sa_handler = SIG_IGN; - (void)sigemptyset(&ign.sa_mask); - (void)__libc_sigaction(SIGINT, &ign, &intact); - (void)__libc_sigaction(SIGQUIT, &ign, &quitact); - savedpid = pid; - do { - pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); - } while (pid == -1 && errno == EINTR); - (void)__libc_sigaction(SIGINT, &intact, NULL); - (void)__libc_sigaction(SIGQUIT, &quitact, NULL); - (void)__libc_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); - return (pid == -1 ? -1 : pstat); + if (__isthreaded) + _SPINLOCK(&lock); + if (--concurrent == 0) { + (void)__libc_sigaction(SIGINT, &ointact, NULL); + (void)__libc_sigaction(SIGQUIT, &oquitact, NULL); + } + if (!sigismember(&osigblock, SIGCHLD)) + (void)__libc_sigprocmask(SIG_UNBLOCK, &sigblock, NULL); + if (__isthreaded) + _SPINUNLOCK(&lock); + if (serrno != 0) + errno = serrno; + return (pstat); } __weak_reference(__libc_system, __system); From nobody Wed Mar 4 14:45: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 4fQwSN12DTz6TbgR for ; Wed, 04 Mar 2026 14:45: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 4fQwSN0CXWz3bC1 for ; Wed, 04 Mar 2026 14:45:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635508; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N38KcfL2BszD4bUxWpacfM6uVn5yC/zm3olGXS62+Jg=; b=fwVslxGnqw146S0CSlYUkhXvG4EN0YgNobRB7drhJD7esx83/eZ5OtFf1oUWhcsi+GItaK Syhj0VT/+g8py39N2V1L+gvPTialLhw6qPDKdXUUlkOLueA2SyXnVXMqsNxWcfiCNZeDE9 ap1x/vzq9EdfhrAOEaCov3A1qmIRFmQsAYFq+iXki3kx2tAw35u7l/JO+jsJYz8jXKIGhu 07BPHLFfYszVz4RQLXd3yEo+WyiCpoj9G16AYPm77rvdYfsHGFeoVJC+yytEBuMPpqhbnw 5Jil/ZS9UEGVexBOjLF+3NCJKguhHmINgGcSHczTjDa/JVlYmBzNn+4DZtP14g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635508; a=rsa-sha256; cv=none; b=G7Sxdd1fMmGSBQKlGLSzthOC3TwTE483RMb3F3ryxR/nEisGlEVdwSETksOQ6PH9D3DZUP zdctbRNOTdoMzY3mGF35KhHkpgZqjw493KLzgL27DmCeq7LwLFsbC+FxfDw35h+E+csL4J AMfyUYww4Jzg0jemgCQKmv0iEHMKCMWIHEQva7sEbUTJMkCO9R6PAIeSA/u8wGEOuu9kmp itHXnyAcSqTMQjqJ4ms0aAsFl+YTC50KfGXm0l3dVzg407ojqVUig4ubd9RYac3HOKzZ7s 8ueJ97ZY7i9St8N7fe/CFtdIw3/0UDqhJEBLFmsqiWeD6jkyKRIm0ncuAbDgvg== 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=1772635508; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N38KcfL2BszD4bUxWpacfM6uVn5yC/zm3olGXS62+Jg=; b=QlAI/ZFhEEoNxmjkuPIrxtKTyS53+GSonfwduQOs1kcDb0K2PQOxt/PDhkvo30+RhG+X+8 63t+TmUPFVFV1pm+rstNS5vSmZJjaPlAEoVOG9LRF97SXtC5PqMpa8AcYunXyK67WuD39U DIhfNRfke2H6RnCEifIsVFd2lHifRLxQtB2JFIXuVGCeOufWSno+3XOVi9HvNhGRAL1uKK ETozn4GQdipfslyDzsYaHmT7eAQR9RpncZUyojXoIm+cQYoF/PpFZ4P49ZN3fZY51qhSvc SxdWGljd6gKc/ZuzCWNFEqGsY1b721P0DOCypZ+MAbPxkLDwH8Y8klgI/iMnMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSM6sG0zvW4 for ; Wed, 04 Mar 2026 14:45:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26c19 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45: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: 3d7774db9319 - stable/15 - system(3): Write our own 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: 3d7774db931939f17d5ad54245735e4223061525 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:07 +0000 Message-Id: <69a84573.26c19.1b828c6f@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3d7774db931939f17d5ad54245735e4223061525 commit 3d7774db931939f17d5ad54245735e4223061525 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:29 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:00 +0000 system(3): Write our own tests Replace the somewhat perfunctory NetBSD tests with our own. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov, kevans Differential Revision: https://reviews.freebsd.org/D55482 (cherry picked from commit 7a1ade5109ac57d1f59eaa75b5d0f13fabecf6ba) --- lib/libc/tests/stdlib/Makefile | 3 +- lib/libc/tests/stdlib/system_test.c | 164 ++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 1 deletion(-) diff --git a/lib/libc/tests/stdlib/Makefile b/lib/libc/tests/stdlib/Makefile index 9d84becfbd1f..a714a8cab774 100644 --- a/lib/libc/tests/stdlib/Makefile +++ b/lib/libc/tests/stdlib/Makefile @@ -17,6 +17,7 @@ ATF_TESTS_C+= qsort_s_test ATF_TESTS_C+= qsort_bench ATF_TESTS_C+= set_constraint_handler_s_test ATF_TESTS_C+= strfmon_test +ATF_TESTS_C+= system_test ATF_TESTS_C+= tsearch_test ATF_TESTS_CXX+= cxa_thread_atexit_test ATF_TESTS_CXX+= cxa_thread_atexit_nothr_test @@ -44,7 +45,6 @@ NETBSD_ATF_TESTS_C+= posix_memalign_test NETBSD_ATF_TESTS_C+= random_test NETBSD_ATF_TESTS_C+= strtod_test NETBSD_ATF_TESTS_C+= strtol_test -NETBSD_ATF_TESTS_C+= system_test # TODO: need to come up with a correct explanation of what the patch pho does # with h_atexit @@ -78,6 +78,7 @@ LIBADD.${t}+= netbsd util LIBADD.libc_exit_test+= pthread LIBADD.strtod_test+= m +LIBADD.system_test+= pthread SUBDIR+= dynthr_mod SUBDIR+= libatexit diff --git a/lib/libc/tests/stdlib/system_test.c b/lib/libc/tests/stdlib/system_test.c new file mode 100644 index 000000000000..713e4bb0f87a --- /dev/null +++ b/lib/libc/tests/stdlib/system_test.c @@ -0,0 +1,164 @@ +/*- + * Copyright (c) 2026 Klara, Inc. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +ATF_TC(system_true); +ATF_TC_HEAD(system_true, tc) +{ + atf_tc_set_md_var(tc, "descr", "system(\"true\")"); +} +ATF_TC_BODY(system_true, tc) +{ + ATF_REQUIRE_EQ(W_EXITCODE(0, 0), system("true")); +} + +ATF_TC(system_false); +ATF_TC_HEAD(system_false, tc) +{ + atf_tc_set_md_var(tc, "descr", "system(\"false\")"); +} +ATF_TC_BODY(system_false, tc) +{ + ATF_REQUIRE_EQ(W_EXITCODE(1, 0), system("false")); +} + +ATF_TC(system_touch); +ATF_TC_HEAD(system_touch, tc) +{ + atf_tc_set_md_var(tc, "descr", "system(\"touch file\")"); +} +ATF_TC_BODY(system_touch, tc) +{ + /* The file does not exist */ + ATF_CHECK_ERRNO(ENOENT, unlink("file")); + + /* Run a command that creates it */ + ATF_REQUIRE_EQ(W_EXITCODE(0, 0), system("touch file")); + + /* Now the file exists */ + ATF_CHECK_EQ(0, unlink("file")); +} + +ATF_TC(system_null); +ATF_TC_HEAD(system_null, tc) +{ + atf_tc_set_md_var(tc, "descr", "system(NULL)"); +} +ATF_TC_BODY(system_null, tc) +{ + ATF_REQUIRE_EQ(1, system(NULL)); +} + +/* + * Define PROCMASK_IS_THREADMASK if sigprocmask() gets / sets the thread + * mask in multithreaded programs, which makes it impossible to verify + * that system(3) correctly blocks and unblocks SIGCHLD. + */ +#ifdef __FreeBSD__ +#define PROCMASK_IS_THREADMASK 1 +#endif + +static void * +system_thread(void *arg) +{ + char cmd[64]; + int i = (int)(intptr_t)arg; + + snprintf(cmd, sizeof(cmd), "rm flag%d ; lockf -ns lock%d true", i, i); + return ((void *)(intptr_t)system(cmd)); +} + +ATF_TC(system_concurrent); +ATF_TC_HEAD(system_concurrent, tc) +{ + atf_tc_set_md_var(tc, "descr", "Concurrent calls"); +} +ATF_TC_BODY(system_concurrent, tc) +{ +#define N 3 + sigset_t normset, sigset; + pthread_t thr[N]; + char fn[8]; + int fd[N]; + void *arg, *ret; + + /* Create and lock the locks */ + for (int i = 0; i < N; i++) { + snprintf(fn, sizeof(fn), "lock%d", i); + fd[i] = open(fn, O_CREAT|O_EXCL|O_EXLOCK|O_CLOEXEC, 0644); + ATF_REQUIRE_MSG(fd[i] >= 0, "%s: %m", fn); + } + + /* Create the flags */ + for (int i = 0; i < N; i++) { + snprintf(fn, sizeof(fn), "flag%d", i); + ATF_REQUIRE_EQ(0, symlink(fn, fn)); + } + + /* Get the current and expected signal mask */ + sigprocmask(0, NULL, &normset); + + /* Spawn threads which block on these files */ + for (int i = 0; i < N; i++) { + arg = (void *)(intptr_t)i; + ATF_REQUIRE_INTEQ(0, + pthread_create(&thr[i], NULL, system_thread, arg)); + } + + /* Wait until the flags are gone */ + for (int i = 0; i < N; i++) { + snprintf(fn, sizeof(fn), "flag%d", i); + while (readlink(fn, fn, sizeof(fn)) > 0) + usleep(10000); + ATF_REQUIRE_EQ(ENOENT, errno); + } + + /* Release the locks */ + for (int i = 0; i < N; i++) { + /* Check the signal dispositions */ + ATF_CHECK_EQ(SIG_IGN, signal(SIGINT, SIG_IGN)); + ATF_CHECK_EQ(SIG_IGN, signal(SIGQUIT, SIG_IGN)); +#ifndef PROCMASK_IS_THREADMASK + sigprocmask(0, NULL, &sigset); + ATF_CHECK(sigismember(&sigset, SIGCHLD)); +#endif + + /* Close the file, releasing the lock */ + ATF_REQUIRE_INTEQ(0, close(fd[i])); + + /* Join the thread and check the return value */ + ATF_CHECK_INTEQ(0, pthread_join(thr[i], &ret)); + ATF_CHECK_INTEQ(W_EXITCODE(0, 0), (int)(intptr_t)ret); + } + + /* Check the signal dispositions */ + ATF_CHECK_EQ(SIG_DFL, signal(SIGINT, SIG_DFL)); + ATF_CHECK_EQ(SIG_DFL, signal(SIGQUIT, SIG_DFL)); + sigprocmask(0, NULL, &sigset); + ATF_CHECK_EQ(0, memcmp(&sigset, &normset, sizeof(sigset_t))); +#undef N +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, system_true); + ATF_TP_ADD_TC(tp, system_false); + ATF_TP_ADD_TC(tp, system_touch); + ATF_TP_ADD_TC(tp, system_null); + ATF_TP_ADD_TC(tp, system_concurrent); + return (atf_no_error()); +} From nobody Wed Mar 4 14:45: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 4fQwSP2Wkjz6TbPY for ; Wed, 04 Mar 2026 14:45: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 4fQwSP0g6mz3b6Y for ; Wed, 04 Mar 2026 14:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635509; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MArqvgYmW+AdRehlYez27xViDpBGBwBZ5RvCDYG+WhM=; b=aTZmZQ2uM2vAQU1Bcqsy5WRxmqSb5JwsgOzDKYOj8O48bg20/6DsDDXaIU8oHOW1O72mG9 jqwRM5CH+nmPwoqM6UjrfJeJp/2f0T8FwHTNJscp/4PFwyzGZZhq5i6za45jO20OLFP+eG c9bYTg98cdIRgf1lzTvuvzvQy5gdWMk/Iq7yxqnjvTF54ZB0ISc4gmEskX1M2D9RXyPwOK vy6hqFsThTU4tY6Vi5EZbvurlbJIrXEmSA3ZgpqewbYh1Jd3HehdYof7yNPNbMFthP509Z 43+hkNeCoEFxHyhwybAl7FIXYbxO1N3QFQzVklPZK16YqMMyp5boVcttRQ5Wqg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635509; a=rsa-sha256; cv=none; b=H2xbvu4oRxsD86U5+3BvKfSAjx0Zs89M/x6UT4R7VEHa96Siycpl47O5yL/UcCn1VhK9vj QwYTE91NifokZ+/jLzP6c7ebPa5ZmeomorOGZLu39mZ1i3RdWfCpO/PGNxSQbCCH3hudad WsKZogThauJRZyNw2ndcN6cDBpIYjhIyNijYBZVXCNZ5xYUsC0lS3RCpZvpXCiTPla7etZ vOhe/5RfeEq7B8neACepRtsseTekbA/EnPpZ8l/6+lYEXOzUwjagw/Ipp2CrGGmEz5hz+f wp+XAq8XpgM8F/CPU+isgEVqsRR652Sf15Ypch98DByA1MuYpclyVxgBx9xbWw== 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=1772635509; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MArqvgYmW+AdRehlYez27xViDpBGBwBZ5RvCDYG+WhM=; b=nodBPWTfzq0gPc8pIEl/+JWUB/HMm7CXnnTCDbxT0C8/unQB5Ky1p3m9vSSYvxgr2DGAIm 9Kr1yF2+bo8UwkMkhFGZT+TvyCnUO4l5/zADbPwsrFqO2Bm/cZe29148cJa9BJdo61GIWL 5kkLpVhyWFpYPCG9V8TbOTCFDx+Kryac+MT0g+d8SJ1tMgww7ZeG5NlayjrY+npw4SGgdG +knoySpnqzIUFpXDPkhmpqqekTTykAskvjPn4M96Nyzh8Qbllqxh6PkBNCgr0g/3Dsh5+e 7oI8n+ZbgjA4rfLg1gyE1j4yYA7hVCB+54//sjBehChOYZyuWYm7BJWe69smZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSP0Cypzw1m for ; Wed, 04 Mar 2026 14:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26ead by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:09 +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: 47bd3d45ee1e - stable/15 - system(3): Clarify return values 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: 47bd3d45ee1ec463bf58755040b6ada0201ac25a Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:09 +0000 Message-Id: <69a84575.26ead.5ad19f29@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=47bd3d45ee1ec463bf58755040b6ada0201ac25a commit 47bd3d45ee1ec463bf58755040b6ada0201ac25a Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:36 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:00 +0000 system(3): Clarify return values Our manual page currently states that system() will return 127 if it fails to execute the shell. The actual return value is, to quote POSIX, “as if the command language interpreter had terminated using exit(127) or _exit(127)”. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov, kevans Differential Revision: https://reviews.freebsd.org/D55483 (cherry picked from commit 7305604b29d3db29c9bb5de6e7a25829fb541d1e) --- lib/libc/stdlib/system.3 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libc/stdlib/system.3 b/lib/libc/stdlib/system.3 index 119432342f70..f09577099a5c 100644 --- a/lib/libc/stdlib/system.3 +++ b/lib/libc/stdlib/system.3 @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 11, 2024 +.Dd February 24, 2026 .Dt SYSTEM 3 .Os .Sh NAME @@ -77,8 +77,10 @@ or \-1 if an error occurred when invoking .Xr fork 2 or .Xr waitpid 2 . -A return value of 127 means the execution of the shell -failed. +If the child process fails to execute the shell, it will terminate +with an exit code of 127 and +.Nm +will return the corresponding exit status. .Sh SEE ALSO .Xr sh 1 , .Xr execve 2 , From nobody Wed Mar 4 14:45: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 4fQwSQ47Wkz6TbpV for ; Wed, 04 Mar 2026 14:45: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 4fQwSQ1VLHz3bFl for ; Wed, 04 Mar 2026 14:45:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635510; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2GkVJCzG+aM+P8X6ODQziq1Sl/VLSk4M7nN1AM07GZA=; b=p3A4O65dkdPqjFyqAGcr81tNt/ECIffyhvmSbHBLys1b1cJmcNx4m7rP98nFmAi0EhbICM /UHDaAnlMW48sNsgIK/1vPOA3H2yGEQD6B9rSYiNQTqELWPndHbhjVRLkZEy6msdJ3/bOZ PMmtJEjCwtl1pwcFAZU9Hku7T9IYx2TIyK3t9dt0FONMf4OyxX8rd5Y6gSrQc3vQ/ypDlm EghvMZqtlVODklBpILK/nWTnjcnpFOrY0u65FiqB0Qissy6IMBf0k0J8kFKU9CPVl2ihBC Ok+qdHbErEpawlFGq10SrCVRNi4gYqWGtlQydi8es3G5JKrBdAPPGCPDXULY3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635510; a=rsa-sha256; cv=none; b=nV5BATswj9EsWtH0JzdgJLSlnc4/WeWU9Bz18e7G5npVZ8wqQs3Fu07QZ3CfcPz6R66fSY bYVr3YWi2wGcm+z4+fYmpziQyLs1Wu7jpuBd0bGs7INtGp4yN4EQhYFuj8moGd/pi26pbR UcFrTr8KiHHhap9zpGJCmEuQqVDA+FcY85/E75zr+yciW0hKUQXS7mDvdSnLUX6EBC7aGs PUsWIxxmEYB60zlpTJOWa35AiUYIaXW0QWnMsag/txXB5v9TmkRThOM2ZBnxfnDGrPTz/M KgucztozCF0hzIvl63S3LMjMKeyx/Xo1EXDb0hHJecNfQOmPggkb6epPJOWCug== 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=1772635510; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2GkVJCzG+aM+P8X6ODQziq1Sl/VLSk4M7nN1AM07GZA=; b=BMuFuwc6K+i7/1JM29KVPGvfyt5QXevRKHGEMR6ZwND5AU2ny+eUQZr1uxAWg5oncRIpHb XqVxf8/7VshDGNqOXxLs1ittVpzzumdUgY2hJasnW88BGYFXZ8VQ5Cp0VerD3Kr/uUcndG beY1TBv/AJ45/ajePiVYHrQEkMTZLiJ70eAft4GfiZRBWk3CHA1djdm7SQK/srzz5b5RTP 0qqIi1/kWrXw9tnhns3jQsde1dLrgOUtoe8KVeSu5NsfsWV74i3R1V5qyeU76ZWPjOyGMM 6ItTIjd+vwoqSzES68Acxeel8lF4BJ0TPem3pb262sib7ees1HOce+OAJwFoUQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSQ0mjZzvr1 for ; Wed, 04 Mar 2026 14:45:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 276fb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:10 +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: 99eed0b41c75 - stable/15 - system(3): Fix null 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/15 X-Git-Reftype: branch X-Git-Commit: 99eed0b41c75aeec17e70999121e10ea82b0df4c Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:10 +0000 Message-Id: <69a84576.276fb.584d2665@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=99eed0b41c75aeec17e70999121e10ea82b0df4c commit 99eed0b41c75aeec17e70999121e10ea82b0df4c Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:42 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:00 +0000 system(3): Fix null case Our manual page states that if given a null pointer, system() returns non-zero if the shell is available and zero if it is not. This is consistent with the C standard's description of system(), but it is not what we actually do. What we actually do is always return non-zero, as required by POSIX. As the POSIX rationale explains, implementing the logic required by the C standard does not violate POSIX, since a conforming system always has a shell, therefore the logic will always return non-zero. Since our libc is commonly used in non-conforming situations such as chroots or thin jails, we should implement the full logic required by the C standard. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: obiwac, bnovkov, kevans Differential Revision: https://reviews.freebsd.org/D55484 (cherry picked from commit 8ae3f44991948cc97b09adc248a9a46db71bf9e0) --- lib/libc/stdlib/system.c | 2 +- lib/libc/tests/stdlib/system_test.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/libc/stdlib/system.c b/lib/libc/stdlib/system.c index 17dd63eb52f9..94f7460c9b68 100644 --- a/lib/libc/stdlib/system.c +++ b/lib/libc/stdlib/system.c @@ -64,7 +64,7 @@ __libc_system(const char *command) pid_t pid; if (command == NULL) /* just checking... */ - return (1); + return (eaccess(_PATH_BSHELL, X_OK) == 0); /* * If we are the first concurrent instance, ignore SIGINT and diff --git a/lib/libc/tests/stdlib/system_test.c b/lib/libc/tests/stdlib/system_test.c index 713e4bb0f87a..b6a31583d52d 100644 --- a/lib/libc/tests/stdlib/system_test.c +++ b/lib/libc/tests/stdlib/system_test.c @@ -57,10 +57,20 @@ ATF_TC(system_null); ATF_TC_HEAD(system_null, tc) { atf_tc_set_md_var(tc, "descr", "system(NULL)"); + atf_tc_set_md_var(tc, "require.user", "root"); } ATF_TC_BODY(system_null, tc) { + /* First, test in a normal environment */ ATF_REQUIRE_EQ(1, system(NULL)); + + /* Now enter an empty chroot */ + ATF_REQUIRE_EQ(0, chroot(".")); + ATF_REQUIRE_EQ(0, chdir("/")); + + /* Test again with no shell available */ + ATF_REQUIRE_EQ(0, system(NULL)); + ATF_REQUIRE_EQ(W_EXITCODE(127, 0), system("true")); } /* From nobody Wed Mar 4 14:45: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 4fQwSR5YMvz6TbJP for ; Wed, 04 Mar 2026 14:45: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 4fQwSR2RLRz3bCX for ; Wed, 04 Mar 2026 14:45:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635511; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f2QWjDkzOeVqwoidLqw2UEXX/7b1RD3lIiTbqeW7SMs=; b=ndOyuf8eqvpsFPomH+T8rm57YTJ/HMr1Se5yROqpNq50438N6Ym4sarghVTpgyimvEsxV+ ZnYvDWvp5l7CsqtdMfaQ2R82jDfiT6X6XmeNMvGZgjLzImXI/ivR2RoAbkbwO98aNPbxF1 5iB+ociZ4BDld3d/GKpFA+/K58WW5tRD9kYLoXe/YgnyH9ez32j09a8L34ahG2Lj/JC/Ei h2r3YreOEeC7VwhcKLKBG6lxexy7RlZzXAXVbO989pebokTmf9L6UoSy/VaD57nBHpvsZv VSOhCbpNxkYwjtPKLjeRgrAE9ienjYu0q3gje71BoV/2LF2cm/ty2H6mLlZuUA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635511; a=rsa-sha256; cv=none; b=hge2yk5+useTsAjHifrufLFWDhzjh1FL7asBJ9PXmV89U3RLHIuv6MfQkkEALfb3A/w8FL IJwi8BPDS8/pQeDqAx/ykE12xgUZBcoeWj9g6ONV06QUvMOwRtr+DIOYBovbyO7esv3oRs +S+I9H+35oZL7kb0JejqqjnMLudWt6y91SR0P9Ro5FCDdLQfaTENW1WiZhoAOxEIo/nNF6 TXItpEtCoxS8Pne8ZhmKulzf6cLjUqliZtCuuHwqlMmBKaSpIuUihRT6MyMOCUpiSnZWLc NIzEMXc10ykuBF3N+G9s4Y+CY8XQJsH8J3T4y2XHRFnFYQFNgcwSEUuiV1JUpA== 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=1772635511; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f2QWjDkzOeVqwoidLqw2UEXX/7b1RD3lIiTbqeW7SMs=; b=EVNOW+8pRYEQfHMVkdauEh4+ChMwZh213qOCPghmimcQLJZpiHUC3NfTLETNsGW+nHQoXy UOkenrFECCfdnL6kGV7tuVlAi9UTypPwT9DFzPU7y5AqV39s1m2hPJGyX6gi7uP9NHeMyw nDA4zAVyD5Dw1oM8bfnjFt7T9a/sYeJ5Od7ksA0lHug1A1J1UJDgyn2fXiDJd1w2ASwDHu xHpluI/MnWsjC8ApjRdYC4PknGxYxXAbbJaL7jKBmD+sb6YlG3yUj2m64c1IDq88L8LdcM d5qz34gzjmd1vAKND42iC7k4Q/EP8f0kj7S2zpPq8pGOcEjSjTtdqWjqaxg4SQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSR1dhczvtx for ; Wed, 04 Mar 2026 14:45:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2625d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:11 +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: cc545907674f - stable/15 - lpd: Improve robustness 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: cc545907674fddcbd2328a9d91747f2b67ac641c Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:11 +0000 Message-Id: <69a84577.2625d.3aefcce8@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=cc545907674fddcbd2328a9d91747f2b67ac641c commit cc545907674fddcbd2328a9d91747f2b67ac641c Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:06 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:00 +0000 lpd: Improve robustness * Check for integer overflow when receiving file sizes. * Check for buffer overflow when receiving file names, and fully validate the names. * Check for integer overflow when checking for available disk space. * Check for I/O errors when sending status codes. * Enforce one job per connection and one control file per job (see code comments for additional details). * Simplify readfile(), avoiding constructs vulnerable to integer overflow. * Don't delete files we didn't create. * Rename read_number() to read_minfree() since that's all it's used for, and move all the minfree logic into it. * Fix a few style issues. PR: 293278 MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55399 (cherry picked from commit 9065be0a5902e058d25a42bd9b3fbe9dc28b189d) --- usr.sbin/lpr/lpd/recvjob.c | 291 +++++++++++++++++++++++++++++---------------- 1 file changed, 189 insertions(+), 102 deletions(-) diff --git a/usr.sbin/lpr/lpd/recvjob.c b/usr.sbin/lpr/lpd/recvjob.c index f103829b19e8..94ff82ecb88f 100644 --- a/usr.sbin/lpr/lpd/recvjob.c +++ b/usr.sbin/lpr/lpd/recvjob.c @@ -39,22 +39,25 @@ #include #include -#include -#include -#include #include #include -#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include "lp.h" #include "lp.local.h" #include "ctlinfo.h" #include "extern.h" #include "pathnames.h" -#define ack() (void) write(STDOUT_FILENO, sp, (size_t)1) +#define digit(ch) ((ch) >= '0' && (ch) <= '9') /* * The buffer size to use when reading/writing spool files. @@ -62,15 +65,16 @@ #define SPL_BUFSIZ BUFSIZ static char dfname[NAME_MAX]; /* data files */ -static int minfree; /* keep at least minfree blocks available */ -static const char *sp = ""; +static size_t minfree; /* keep at least minfree blocks available */ static char tfname[NAME_MAX]; /* tmp copy of cf before linking */ -static int chksize(int _size); +static void ack(struct printer *_pp); +static void nak(struct printer *_pp); +static int chksize(size_t _size); static void frecverr(const char *_msg, ...) __printf0like(1, 2); static int noresponse(void); static void rcleanup(int _signo); -static int read_number(const char *_fn); +static void read_minfree(void); static int readfile(struct printer *_pp, char *_file, size_t _size); static int readjob(struct printer *_pp); @@ -118,7 +122,7 @@ recvjob(const char *printer) } else if (stat(pp->spool_dir, &stb) < 0) frecverr("%s: stat(%s): %s", pp->printer, pp->spool_dir, strerror(errno)); - minfree = 2 * read_number("minfree"); /* scale KB to 512 blocks */ + read_minfree(); signal(SIGTERM, rcleanup); signal(SIGPIPE, rcleanup); @@ -129,18 +133,35 @@ recvjob(const char *printer) /* * Read printer jobs sent by lpd and copy them to the spooling directory. * Return the number of jobs successfully transferred. + * + * In theory, the protocol allows any number of jobs to be transferred in + * a single connection, with control and data files in any order. This + * would be very difficult to police effectively, so enforce a single job + * per connection. The control file can be sent at any time (first, last, + * or between data files). All files must bear the same job number, and + * the data files must be sent sequentially. If any of these requirements + * is violated, we close the connection and delete everything. + * + * Note that RFC 1179 strongly implies only one data file per job; I + * assume this is a mistake in the RFC since it is supposed to describe + * this code, which predates it, but was written by a third party. */ static int readjob(struct printer *pp) { - register int size; - int cfcnt, dfcnt; - char *cp, *clastp, *errmsg; + ssize_t rlen; + size_t len, size; + int cfcnt, dfcnt, curd0, curd2, curn, n; + char *cp, *clastp, *errmsg, *sep; char givenid[32], givenhost[MAXHOSTNAMELEN]; - ack(); + tfname[0] = dfname[0] = '\0'; + ack(pp); cfcnt = 0; dfcnt = 0; + curd0 = 'd'; + curd2 = 'A'; + curn = -1; for (;;) { /* * Read a command to tell us what to do @@ -148,16 +169,16 @@ readjob(struct printer *pp) cp = line; clastp = line + sizeof(line) - 1; do { - size = read(STDOUT_FILENO, cp, (size_t)1); - if (size != (ssize_t)1) { - if (size < (ssize_t)0) { + rlen = read(STDOUT_FILENO, cp, 1); + if (rlen != 1) { + if (rlen < 0) { frecverr("%s: lost connection", pp->printer); /*NOTREACHED*/ } return (cfcnt); } - } while ((*cp++ != '\n') && (cp <= clastp)); + } while (*cp++ != '\n' && cp <= clastp); if (cp > clastp) { frecverr("%s: readjob overflow", pp->printer); /*NOTREACHED*/ @@ -165,37 +186,47 @@ readjob(struct printer *pp) *--cp = '\0'; cp = line; switch (*cp++) { - case '\1': /* cleanup because data sent was bad */ + case '\1': /* abort print job */ rcleanup(0); continue; - case '\2': /* read cf file */ - size = 0; - dfcnt = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + case '\2': /* read control file */ + if (tfname[0] != '\0') { + /* multiple control files */ + break; + } + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; /* - * host name has been authenticated, we use our - * view of the host name since we may be passed - * something different than what gethostbyaddr() - * returns + * The next six bytes must be "cfA" followed by a + * three-digit job number. The rest of the line + * is the client host name, but we substitute the + * host name we've already authenticated. */ - strlcpy(cp + 6, from_host, sizeof(line) - + (size_t)(line - cp - 6)); - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } - strlcpy(tfname, cp, sizeof(tfname)); - tfname[sizeof (tfname) - 1] = '\0'; + if (cp[0] != 'c' || cp[1] != 'f' || cp[2] != 'A' || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(tfname, sizeof(tfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(tfname)) + break; tfname[0] = 't'; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - if (!readfile(pp, tfname, (size_t)size)) { + if (!readfile(pp, tfname, size)) { rcleanup(0); continue; } @@ -208,27 +239,62 @@ readjob(struct printer *pp) cfcnt++; continue; - case '\3': /* read df file */ + case '\3': /* read data file */ + if (curd0 > 'z') { + /* too many data files */ + break; + } *givenid = '\0'; *givenhost = '\0'; - size = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } + /* + * The next six bytes must be curd0, 'f', curd2 + * followed by a three-digit job number, where + * curd2 cycles through [A-Za-z] while curd0 + * starts at 'd' and increments when curd2 rolls + * around. The rest of the line is the client + * host name, but we substitute the host name + * we've already authenticated. + */ + if (cp[0] != curd0 || cp[1] != 'f' || cp[2] != curd2 || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(dfname, sizeof(dfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(dfname)) + break; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - strlcpy(dfname, cp, sizeof(dfname)); + switch (curd2++) { + case 'Z': + curd2 = 'a'; + break; + case 'z': + curd0++; + curd2 = 'A'; + break; + } dfcnt++; trstat_init(pp, dfname, dfcnt); - (void) readfile(pp, dfname, (size_t)size); - trstat_write(pp, TR_RECVING, (size_t)size, givenid, + if (!readfile(pp, dfname, size)) { + rcleanup(0); + continue; + } + trstat_write(pp, TR_RECVING, size, givenid, from_host, givenhost); continue; } @@ -243,52 +309,55 @@ readjob(struct printer *pp) static int readfile(struct printer *pp, char *file, size_t size) { - register char *cp; char buf[SPL_BUFSIZ]; - size_t amt, i; - int err, fd, j; + ssize_t rlen, wlen; + int err, f0, fd, j; fd = open(file, O_CREAT|O_EXCL|O_WRONLY, FILMOD); if (fd < 0) { - frecverr("%s: readfile: error on open(%s): %s", - pp->printer, file, strerror(errno)); + /* + * We need to pass the file name to frecverr() so it can + * log an error, but frecverr() will then call rcleanup() + * which will delete the file if we don't zero out the + * first character. + */ + f0 = file[0]; + file[0] = '\0'; + frecverr("%s: readfile: error on open(%c%s): %s", + pp->printer, f0, file + 1, strerror(errno)); /*NOTREACHED*/ } - ack(); - err = 0; - for (i = 0; i < size; i += SPL_BUFSIZ) { - amt = SPL_BUFSIZ; - cp = buf; - if (i + amt > size) - amt = size - i; - do { - j = read(STDOUT_FILENO, cp, amt); - if (j <= 0) { - frecverr("%s: lost connection", pp->printer); + ack(pp); + while (size > 0) { + rlen = read(STDOUT_FILENO, buf, MIN(SPL_BUFSIZ, size)); + if (rlen < 0 && errno == EINTR) + continue; + if (rlen <= 0) { + frecverr("%s: lost connection", pp->printer); + /*NOTREACHED*/ + } + size -= rlen; + while (rlen > 0) { + wlen = write(fd, buf, rlen); + if (wlen < 0 && errno == EINTR) + continue; + if (wlen <= 0) { + frecverr("%s: write error on write(%s)", + pp->printer, file); /*NOTREACHED*/ } - amt -= j; - cp += j; - } while (amt > 0); - amt = SPL_BUFSIZ; - if (i + amt > size) - amt = size - i; - if (write(fd, buf, amt) != (ssize_t)amt) { - err++; - break; + rlen -= wlen; } } - (void) close(fd); - if (err) { + if (close(fd) != 0) { frecverr("%s: write error on close(%s)", pp->printer, file); /*NOTREACHED*/ } if (noresponse()) { /* file sent had bad data in it */ - if (strchr(file, '/') == NULL) - (void) unlink(file); + (void) unlink(file); return (0); } - ack(); + ack(pp); return (1); } @@ -297,13 +366,13 @@ noresponse(void) { char resp; - if (read(STDOUT_FILENO, &resp, (size_t)1) != 1) { + if (read(STDOUT_FILENO, &resp, 1) != 1) { frecverr("lost connection in noresponse()"); /*NOTREACHED*/ } if (resp == '\0') - return(0); - return(1); + return (0); + return (1); } /* @@ -311,36 +380,42 @@ noresponse(void) * 1 == OK, 0 == Not OK. */ static int -chksize(int size) +chksize(size_t size) { - int64_t spacefree; struct statfs sfb; + size_t avail; if (statfs(".", &sfb) < 0) { syslog(LOG_ERR, "%s: %m", "statfs(\".\")"); return (1); } - spacefree = sfb.f_bavail * (sfb.f_bsize / 512); - size = (size + 511) / 512; - if (minfree + size > spacefree) - return(0); - return(1); + /* more free space than we can count; possible on 32-bit */ + if (ckd_mul(&avail, sfb.f_bavail, (sfb.f_bsize / 512))) + return (1); + /* already at or below minfree */ + if (avail <= minfree) + return (0); + /* not enough space */ + if (avail - minfree <= size / 512) + return (0); + return (1); } -static int -read_number(const char *fn) +static void +read_minfree(void) { - char lin[80]; - register FILE *fp; + FILE *fp; - if ((fp = fopen(fn, "r")) == NULL) - return (0); - if (fgets(lin, sizeof(lin), fp) == NULL) { + minfree = 0; + /* read from disk */ + if ((fp = fopen("minfree", "r")) != NULL) { + if (fscanf(fp, "%zu", &minfree) != 1) + minfree = 0; fclose(fp); - return (0); } - fclose(fp); - return (atoi(lin)); + /* scale kB to 512-byte blocks */ + if (ckd_mul(&minfree, minfree, 2)) + minfree = SIZE_MAX; } /* @@ -362,8 +437,6 @@ rcleanup(int signo __unused) dfname[0] = '\0'; } -#include - static void frecverr(const char *msg, ...) { @@ -391,3 +464,17 @@ frecverr(const char *msg, ...) putchar('\1'); /* return error code */ exit(1); } + +static void +ack(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\0", 1) != 1) + frecverr("%s: write error on ack", pp->printer); +} + +static void +nak(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\2", 1) != 1) + frecverr("%s: write error on nak", pp->printer); +} From nobody Wed Mar 4 14:45: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 4fQwSS6Q7hz6TbpY for ; Wed, 04 Mar 2026 14:45: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 4fQwSS3C8Mz3bP7 for ; Wed, 04 Mar 2026 14:45:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635512; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AiD4f0Juacjd4IoizTLagwj5J8vwFV2nJ+9QG+POsnA=; b=hVG+SRen/KkrWIWhZSQAzVvEMWtP/1r7+GzW/NTjob17fPujwddRGNdC1HTLM7NumMijcV 6Y1dU+EMqpy1AY0s/08J9UBDD5/ulydD2UCziHsXONdIco3AOlD6Lyvy/zxmXEZi7bqBX3 GelpW4CWfjkcZROL4bwj4SPGfbiTOyYgRGSZ3tgCcDmUI696m0SuUQsqxyRR2CYUP/VZFh rP/dJj3F9go8E2e40tcHiw436aRkfw5LiQgR6VczGfAxCIuKch6ZeNVNyj9yq2KYJQU1SN fjSp8bWJs19Mm3YmYpaZ8hCE3+PBkiv27cY6EzBohxO1zu5bHwIc4k9nl/8cng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635512; a=rsa-sha256; cv=none; b=HZifjo9z4WRSIJH2z818wwfuB0JRdUUiu/gduPxkBn+yoRnS7e8GxfuNT6Fl7cEecydRYN MRhlRjQkqN6DCm9v9ZxSWYRlLl91ojSU8KtpCHhSTBRuQ/H+mRx/TDlm6hZx2hNK+GzU7G 2Kfk1Nsoi0ahrcrWwxefe4vmKRtIhAcao5iz55G2zyK2pUKq+MAH7lt0DpXCwRKaCXGO2s D/AVJQY2UaM7UzM5Am4WmLLU0bHoeBbIMgfzmHmRVL4MlV6oO7PKZ758aJoYqLxJhb5P0i 4/PAQ5KU/cH/Yh0RrqezFEl7gRT0VZechTKuwZVFfGuU+DWoGO8ETxIAYpyWxg== 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=1772635512; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AiD4f0Juacjd4IoizTLagwj5J8vwFV2nJ+9QG+POsnA=; b=D6nj7AAeYD6TX5YQh8ohsJse53MQUPo9yyclC9aa0sB04dsOkBRhNuKMLSMn/QBj1DMIv5 AXYh0A0DoeZ9ZwctWVarqQ592zDKAHn/XMaP58yt8cvN1160GjS4xOqz+0H8ZpOKFAyV9g HeCs0C2oL/aCAY3d+h+feKkUTgFsducekNSDp+5hOUt5CAukwB6BoZgH5T6y1QSfD+uC/e SZor9NSOmHh8yElNGQPCOrWKivPb3rR1T2YV2FdRL986I6GHzSMO8pHPCCuPSr2H6B6sil EX0NKXyHQgV3Nu6vzfCSRGmNePUwjkhFNgvg/mJpgnSDLqTXDvF2dj1Cti+LuA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSS2Rpxzw4K for ; Wed, 04 Mar 2026 14:45:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26a09 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:12 +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: f413ebdf126d - stable/15 - lpd: Add timeout option 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: f413ebdf126db12500d636c7eabee6a219c88721 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:12 +0000 Message-Id: <69a84578.26a09.634bb86@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=f413ebdf126db12500d636c7eabee6a219c88721 commit f413ebdf126db12500d636c7eabee6a219c88721 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:14 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:00 +0000 lpd: Add timeout option Set a 120-second receive timeout on all client connections, and add a command-line option to change that value. MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55400 (cherry picked from commit 56fbfd1ecdc78fc99b3a2e381c355ce8980de39d) --- usr.sbin/lpr/lpd/lpd.8 | 8 +++++++- usr.sbin/lpr/lpd/lpd.c | 30 +++++++++++++++++++----------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index 9a4e46996811..9d24a450ba0e 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 15, 2021 +.Dd February 19, 2026 .Dt LPD 8 .Os .Sh NAME @@ -34,6 +34,7 @@ .Sh SYNOPSIS .Nm .Op Fl cdlpsFW46 +.Op Fl t Ar timeout .Op Ar port# .Sh DEPRECATION NOTICE This facility is scheduled for removal prior to the release of @@ -108,6 +109,11 @@ This means that will not accept any connections from any remote hosts, although it will still accept print requests from all local users. +.It Fl t Ar timeout +Set the network receive timeout for client connections to +.Ar timeout +seconds. +The default is 120. .It Fl F By default, .Nm diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index 089b8fedc2d5..d1dcd0766a77 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -61,28 +61,28 @@ */ #include -#include -#include +#include #include -#include #include -#include +#include +#include + #include #include -#include -#include -#include -#include +#include +#include #include #include #include -#include +#include +#include #include #include #include #include -#include +#include +#include #include "lp.h" #include "lp.local.h" #include "pathnames.h" @@ -117,6 +117,7 @@ uid_t uid, euid; int main(int argc, char **argv) { + struct timeval tv = { .tv_sec = 120 }; int ch_options, errs, f, funix, *finet, i, lfd, socket_debug; fd_set defreadfds; struct sockaddr_un un, fromunix; @@ -139,7 +140,7 @@ main(int argc, char **argv) errx(EX_NOPERM,"must run as root"); errs = 0; - while ((i = getopt(argc, argv, "cdlpswFW46")) != -1) + while ((i = getopt(argc, argv, "cdlpst:wFW46")) != -1) switch (i) { case 'c': /* log all kinds of connection-errors to syslog */ @@ -159,6 +160,9 @@ main(int argc, char **argv) case 's': /* secure (no inet) */ sflag++; break; + case 't': + tv.tv_sec = atol(optarg); + break; case 'w': /* netbsd uses -w for maxwait */ /* * This will be removed after the release of 4.4, as @@ -386,6 +390,10 @@ main(int argc, char **argv) syslog(LOG_WARNING, "accept: %m"); continue; } + if (tv.tv_sec > 0) { + (void) setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, + sizeof(tv)); + } if (fork() == 0) { /* * Note that printjob() also plays around with From nobody Wed Mar 4 14:45: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 4fQwSV75PGz6TbsK for ; Wed, 04 Mar 2026 14:45: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 4fQwSV3NmZz3bGS for ; Wed, 04 Mar 2026 14:45:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qCRLKDn9yv9j+TdH/n9vDXOSbdiqyqXmEaKDyhtBDlc=; b=rx0VUUA9mZVowB3aQWDztX7lFMpkKhh9f5cdmFlgPBJXPnfE2UX4+xZxKzD4n7NeZuCk/L 6FAKGEbQ6Alg+fzr2JHE4k8CyNg970VrkhR2FbMJyKskDyG9vn5o+/UuZrTcPYtEDb4vIy e4JSapn5VKS9MFwsOnt2XaTCVtWciVFG6LRiXlC1qfIBsp9P+Se8EXtRQWglCqpBdQ8AvB U/Y9yE/EIK3BU49B8E2bJihiAvGWiFlMqNEd3UfY5Rv3mKo8OYyQUJt0aneVEULJSDWl7S sg6SDtt2k4Qk9fvWEDhfv2sjRquRFA6YRNmplanjt7+OfIXrNFgK+iX5mP18bQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635514; a=rsa-sha256; cv=none; b=S841D+95FzEI+u1da3oOhW3redByi1WzAyhigx8NGpwRkeS02uOzX66kUeQ64k5Qi7cLih OjwLa88kXXSJ873b1HS3fO5Am6BmOLft4EM+oOOIOqdVUSzIjq6pmc5oNlxOlbc7k4ndNf o8FMgeAupW8PxK61CZwzxdbGd88vzFHuHURMd4TCjsW/WkTKLrpyM3XyRJqzE/xfGbRKiF DPkrH7xhUIv+37Qp2a+6lTYl7s8ANdViVixFveKD9DG/mNEcHV3KkgF55WaJJgrBHWyvei BveGRM6/51j8tRs7ZVmquzI8hWB62o3Ljtrwx0Yoc+2rEGfp/DjkOSQlXNugxQ== 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=1772635514; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qCRLKDn9yv9j+TdH/n9vDXOSbdiqyqXmEaKDyhtBDlc=; b=wdIe258JNmyO0P8nem/66yWrs2RDO6j7qHJDzRB0Za3WiWbGEko7FtqgNBgTptz7iCbpJc v7dyyVq/xt5HdYswksSGAWoafHbe/w+xYGD6v3/UkXKqDL5jPBSI6eiH3S8SXVRP1q4TPs NmeSUQdyS/cLUEMQ0h23+QHNRstO3C+/B2PjU2kCWXAejsI+97BcRkBBeOtnRqeMKa9vT1 /k7UFh1WZ5Vp9AHRAsXnX13TCOxhnOw+meB4kx3HxCLFR6sLxJAZw/s1l8kyEpwtfodCTu Oy+augB7nSQm8l+CQhLv26yA89g6GmQwnkDG8ylwLpQjMkYqsE4t48fo778b7Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSV2j4CzvW6 for ; Wed, 04 Mar 2026 14:45:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2593e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:14 +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: 83280570ea1f - stable/14 - system(3): Clarify return values 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: 83280570ea1fdc288bacdbabf7580c50fcc39355 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:14 +0000 Message-Id: <69a8457a.2593e.749b5734@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=83280570ea1fdc288bacdbabf7580c50fcc39355 commit 83280570ea1fdc288bacdbabf7580c50fcc39355 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:36 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:08 +0000 system(3): Clarify return values Our manual page currently states that system() will return 127 if it fails to execute the shell. The actual return value is, to quote POSIX, “as if the command language interpreter had terminated using exit(127) or _exit(127)”. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov, kevans Differential Revision: https://reviews.freebsd.org/D55483 (cherry picked from commit 7305604b29d3db29c9bb5de6e7a25829fb541d1e) --- lib/libc/stdlib/system.3 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libc/stdlib/system.3 b/lib/libc/stdlib/system.3 index 7f1a34c69d2d..0b8a677c35b7 100644 --- a/lib/libc/stdlib/system.3 +++ b/lib/libc/stdlib/system.3 @@ -31,7 +31,7 @@ .\" .\" @(#)system.3 8.1 (Berkeley) 6/4/93 .\" -.Dd July 25, 2015 +.Dd February 24, 2026 .Dt SYSTEM 3 .Os .Sh NAME @@ -79,8 +79,10 @@ or \-1 if an error occurred when invoking .Xr fork 2 or .Xr waitpid 2 . -A return value of 127 means the execution of the shell -failed. +If the child process fails to execute the shell, it will terminate +with an exit code of 127 and +.Nm +will return the corresponding exit status. .Sh SEE ALSO .Xr sh 1 , .Xr execve 2 , From nobody Wed Mar 4 14:45: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 4fQwSX0j9Yz6Tb9R for ; Wed, 04 Mar 2026 14:45: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 4fQwSW44zkz3bPZ for ; Wed, 04 Mar 2026 14:45:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ElVKvTczPpPsiTE1O/BFOMe3Bi50a8jErstHuIiA85I=; b=im/hijhFPEoGV3a796yJwc1sxTPWqMKvepNl8kg4njhk7pNwMkLYHTFSfpewlF/dEW6WK9 f7bqTDc+oEH74Stb4dh6M2xvmhJjikavezTAyz0U7EQc8avcgIR3Jt7L9fFwV7jtzRGCl3 i05bQcokssnTpt/HKvnDhcv7STSFK9GSXeDj/xH4zcAVhBvz0GddmMhYs4lalInwdL0Mz6 k8vBkmOmMOP5gvT/SFWKpVNorxZ5MkyvzIBBFf2YScup3E76EYDioggj+QG/xWaVVM0CgS ItZRJOvE1uCJ7XwZ0jUHe61r62kOuLVG3E1FZwtAJTRVsiSBi56gCTzsXeaIkg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635515; a=rsa-sha256; cv=none; b=xL8x1oU6rA+I6Pf44/8qBZEqvUtBFL2vvbjhMM7XHnMawPI+BIE2pruoUo/sE78G5QGHYc 8+h6uwTQBc+Rnvqb5lD9KLo/3pQKO/V9LzEkVPrHkZhG9wBZ5hx0M8M9ir1/kJGMpu8V+L WMPginyJJoNAdGeOO/oGHOLw5lfiPgkM8x3voYQ3flg4l/ySB0gDyeqRy9z8J2LG0sYNHM thTv46bX32E6Q9wP9D4IkUOFmcYE7v8pDXHXtcG8J39c4vAGJ9iJOIwYLwsrQOy2X7r4rN IETxAW9vdiNGNOjTnHtoWl5eyAzkzd4cSBbR2io2whlxT7vKsOplcnKFksEEYg== 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=1772635515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ElVKvTczPpPsiTE1O/BFOMe3Bi50a8jErstHuIiA85I=; b=EiiunWqLOojLIUOl0BLFPoOypZLtOn4PI/UuftWyGcFQqTbCAzxNXqNeya0dUk4AYpB/aS bPImXbp9OwZB1qb3YmyMU4/KaJhyWfMT4sn5V2GRAfR0WNSGpo24Pj1XYq5unadTd2fnbB quSPiIE6cPzchp3CjShUCQW+gSFLVPP2P/Gpl+jY4yu0U39njH0w1wYagD5cCuaoMd0ASp 6KNY/w6AQXcKFvHHgFAfx8e2E6dCQY1Ei+rkgbXqg2K3Wk+qD6KV5c7qgwfyUUKPa2fCHg iXY4cqJZfAWVVlVJu4FZYJeDNR/rGFygpyqYpLJcw+pPtUtBNvQJu54ES4RQlg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSW3YRczw4L for ; Wed, 04 Mar 2026 14:45:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26e50 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:15 +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: 60f5fc36e46a - stable/14 - lpd: Improve robustness 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: 60f5fc36e46a6381e8ddc6d28ee792a6ec5089fc Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:15 +0000 Message-Id: <69a8457b.26e50.4d713ff2@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=60f5fc36e46a6381e8ddc6d28ee792a6ec5089fc commit 60f5fc36e46a6381e8ddc6d28ee792a6ec5089fc Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:06 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:09 +0000 lpd: Improve robustness * Check for integer overflow when receiving file sizes. * Check for buffer overflow when receiving file names, and fully validate the names. * Check for integer overflow when checking for available disk space. * Check for I/O errors when sending status codes. * Enforce one job per connection and one control file per job (see code comments for additional details). * Simplify readfile(), avoiding constructs vulnerable to integer overflow. * Don't delete files we didn't create. * Rename read_number() to read_minfree() since that's all it's used for, and move all the minfree logic into it. * Fix a few style issues. PR: 293278 MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55399 (cherry picked from commit 9065be0a5902e058d25a42bd9b3fbe9dc28b189d) --- usr.sbin/lpr/lpd/recvjob.c | 291 +++++++++++++++++++++++++++++---------------- 1 file changed, 189 insertions(+), 102 deletions(-) diff --git a/usr.sbin/lpr/lpd/recvjob.c b/usr.sbin/lpr/lpd/recvjob.c index a6495940b342..702ea4ef5be8 100644 --- a/usr.sbin/lpr/lpd/recvjob.c +++ b/usr.sbin/lpr/lpd/recvjob.c @@ -51,22 +51,25 @@ static char sccsid[] = "@(#)recvjob.c 8.2 (Berkeley) 4/27/95"; #include #include -#include -#include -#include #include #include -#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include "lp.h" #include "lp.local.h" #include "ctlinfo.h" #include "extern.h" #include "pathnames.h" -#define ack() (void) write(STDOUT_FILENO, sp, (size_t)1) +#define digit(ch) ((ch) >= '0' && (ch) <= '9') /* * The buffer size to use when reading/writing spool files. @@ -74,15 +77,16 @@ static char sccsid[] = "@(#)recvjob.c 8.2 (Berkeley) 4/27/95"; #define SPL_BUFSIZ BUFSIZ static char dfname[NAME_MAX]; /* data files */ -static int minfree; /* keep at least minfree blocks available */ -static const char *sp = ""; +static size_t minfree; /* keep at least minfree blocks available */ static char tfname[NAME_MAX]; /* tmp copy of cf before linking */ -static int chksize(int _size); +static void ack(struct printer *_pp); +static void nak(struct printer *_pp); +static int chksize(size_t _size); static void frecverr(const char *_msg, ...) __printf0like(1, 2); static int noresponse(void); static void rcleanup(int _signo); -static int read_number(const char *_fn); +static void read_minfree(void); static int readfile(struct printer *_pp, char *_file, size_t _size); static int readjob(struct printer *_pp); @@ -130,7 +134,7 @@ recvjob(const char *printer) } else if (stat(pp->spool_dir, &stb) < 0) frecverr("%s: stat(%s): %s", pp->printer, pp->spool_dir, strerror(errno)); - minfree = 2 * read_number("minfree"); /* scale KB to 512 blocks */ + read_minfree(); signal(SIGTERM, rcleanup); signal(SIGPIPE, rcleanup); @@ -141,18 +145,35 @@ recvjob(const char *printer) /* * Read printer jobs sent by lpd and copy them to the spooling directory. * Return the number of jobs successfully transferred. + * + * In theory, the protocol allows any number of jobs to be transferred in + * a single connection, with control and data files in any order. This + * would be very difficult to police effectively, so enforce a single job + * per connection. The control file can be sent at any time (first, last, + * or between data files). All files must bear the same job number, and + * the data files must be sent sequentially. If any of these requirements + * is violated, we close the connection and delete everything. + * + * Note that RFC 1179 strongly implies only one data file per job; I + * assume this is a mistake in the RFC since it is supposed to describe + * this code, which predates it, but was written by a third party. */ static int readjob(struct printer *pp) { - register int size; - int cfcnt, dfcnt; - char *cp, *clastp, *errmsg; + ssize_t rlen; + size_t len, size; + int cfcnt, dfcnt, curd0, curd2, curn, n; + char *cp, *clastp, *errmsg, *sep; char givenid[32], givenhost[MAXHOSTNAMELEN]; - ack(); + tfname[0] = dfname[0] = '\0'; + ack(pp); cfcnt = 0; dfcnt = 0; + curd0 = 'd'; + curd2 = 'A'; + curn = -1; for (;;) { /* * Read a command to tell us what to do @@ -160,16 +181,16 @@ readjob(struct printer *pp) cp = line; clastp = line + sizeof(line) - 1; do { - size = read(STDOUT_FILENO, cp, (size_t)1); - if (size != (ssize_t)1) { - if (size < (ssize_t)0) { + rlen = read(STDOUT_FILENO, cp, 1); + if (rlen != 1) { + if (rlen < 0) { frecverr("%s: lost connection", pp->printer); /*NOTREACHED*/ } return (cfcnt); } - } while ((*cp++ != '\n') && (cp <= clastp)); + } while (*cp++ != '\n' && cp <= clastp); if (cp > clastp) { frecverr("%s: readjob overflow", pp->printer); /*NOTREACHED*/ @@ -177,37 +198,47 @@ readjob(struct printer *pp) *--cp = '\0'; cp = line; switch (*cp++) { - case '\1': /* cleanup because data sent was bad */ + case '\1': /* abort print job */ rcleanup(0); continue; - case '\2': /* read cf file */ - size = 0; - dfcnt = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + case '\2': /* read control file */ + if (tfname[0] != '\0') { + /* multiple control files */ + break; + } + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; /* - * host name has been authenticated, we use our - * view of the host name since we may be passed - * something different than what gethostbyaddr() - * returns + * The next six bytes must be "cfA" followed by a + * three-digit job number. The rest of the line + * is the client host name, but we substitute the + * host name we've already authenticated. */ - strlcpy(cp + 6, from_host, sizeof(line) - + (size_t)(line - cp - 6)); - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } - strlcpy(tfname, cp, sizeof(tfname)); - tfname[sizeof (tfname) - 1] = '\0'; + if (cp[0] != 'c' || cp[1] != 'f' || cp[2] != 'A' || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(tfname, sizeof(tfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(tfname)) + break; tfname[0] = 't'; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - if (!readfile(pp, tfname, (size_t)size)) { + if (!readfile(pp, tfname, size)) { rcleanup(0); continue; } @@ -220,27 +251,62 @@ readjob(struct printer *pp) cfcnt++; continue; - case '\3': /* read df file */ + case '\3': /* read data file */ + if (curd0 > 'z') { + /* too many data files */ + break; + } *givenid = '\0'; *givenhost = '\0'; - size = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } + /* + * The next six bytes must be curd0, 'f', curd2 + * followed by a three-digit job number, where + * curd2 cycles through [A-Za-z] while curd0 + * starts at 'd' and increments when curd2 rolls + * around. The rest of the line is the client + * host name, but we substitute the host name + * we've already authenticated. + */ + if (cp[0] != curd0 || cp[1] != 'f' || cp[2] != curd2 || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(dfname, sizeof(dfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(dfname)) + break; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - strlcpy(dfname, cp, sizeof(dfname)); + switch (curd2++) { + case 'Z': + curd2 = 'a'; + break; + case 'z': + curd0++; + curd2 = 'A'; + break; + } dfcnt++; trstat_init(pp, dfname, dfcnt); - (void) readfile(pp, dfname, (size_t)size); - trstat_write(pp, TR_RECVING, (size_t)size, givenid, + if (!readfile(pp, dfname, size)) { + rcleanup(0); + continue; + } + trstat_write(pp, TR_RECVING, size, givenid, from_host, givenhost); continue; } @@ -255,52 +321,55 @@ readjob(struct printer *pp) static int readfile(struct printer *pp, char *file, size_t size) { - register char *cp; char buf[SPL_BUFSIZ]; - size_t amt, i; - int err, fd, j; + ssize_t rlen, wlen; + int err, f0, fd, j; fd = open(file, O_CREAT|O_EXCL|O_WRONLY, FILMOD); if (fd < 0) { - frecverr("%s: readfile: error on open(%s): %s", - pp->printer, file, strerror(errno)); + /* + * We need to pass the file name to frecverr() so it can + * log an error, but frecverr() will then call rcleanup() + * which will delete the file if we don't zero out the + * first character. + */ + f0 = file[0]; + file[0] = '\0'; + frecverr("%s: readfile: error on open(%c%s): %s", + pp->printer, f0, file + 1, strerror(errno)); /*NOTREACHED*/ } - ack(); - err = 0; - for (i = 0; i < size; i += SPL_BUFSIZ) { - amt = SPL_BUFSIZ; - cp = buf; - if (i + amt > size) - amt = size - i; - do { - j = read(STDOUT_FILENO, cp, amt); - if (j <= 0) { - frecverr("%s: lost connection", pp->printer); + ack(pp); + while (size > 0) { + rlen = read(STDOUT_FILENO, buf, MIN(SPL_BUFSIZ, size)); + if (rlen < 0 && errno == EINTR) + continue; + if (rlen <= 0) { + frecverr("%s: lost connection", pp->printer); + /*NOTREACHED*/ + } + size -= rlen; + while (rlen > 0) { + wlen = write(fd, buf, rlen); + if (wlen < 0 && errno == EINTR) + continue; + if (wlen <= 0) { + frecverr("%s: write error on write(%s)", + pp->printer, file); /*NOTREACHED*/ } - amt -= j; - cp += j; - } while (amt > 0); - amt = SPL_BUFSIZ; - if (i + amt > size) - amt = size - i; - if (write(fd, buf, amt) != (ssize_t)amt) { - err++; - break; + rlen -= wlen; } } - (void) close(fd); - if (err) { + if (close(fd) != 0) { frecverr("%s: write error on close(%s)", pp->printer, file); /*NOTREACHED*/ } if (noresponse()) { /* file sent had bad data in it */ - if (strchr(file, '/') == NULL) - (void) unlink(file); + (void) unlink(file); return (0); } - ack(); + ack(pp); return (1); } @@ -309,13 +378,13 @@ noresponse(void) { char resp; - if (read(STDOUT_FILENO, &resp, (size_t)1) != 1) { + if (read(STDOUT_FILENO, &resp, 1) != 1) { frecverr("lost connection in noresponse()"); /*NOTREACHED*/ } if (resp == '\0') - return(0); - return(1); + return (0); + return (1); } /* @@ -323,36 +392,42 @@ noresponse(void) * 1 == OK, 0 == Not OK. */ static int -chksize(int size) +chksize(size_t size) { - int64_t spacefree; struct statfs sfb; + size_t avail; if (statfs(".", &sfb) < 0) { syslog(LOG_ERR, "%s: %m", "statfs(\".\")"); return (1); } - spacefree = sfb.f_bavail * (sfb.f_bsize / 512); - size = (size + 511) / 512; - if (minfree + size > spacefree) - return(0); - return(1); + /* more free space than we can count; possible on 32-bit */ + if (ckd_mul(&avail, sfb.f_bavail, (sfb.f_bsize / 512))) + return (1); + /* already at or below minfree */ + if (avail <= minfree) + return (0); + /* not enough space */ + if (avail - minfree <= size / 512) + return (0); + return (1); } -static int -read_number(const char *fn) +static void +read_minfree(void) { - char lin[80]; - register FILE *fp; + FILE *fp; - if ((fp = fopen(fn, "r")) == NULL) - return (0); - if (fgets(lin, sizeof(lin), fp) == NULL) { + minfree = 0; + /* read from disk */ + if ((fp = fopen("minfree", "r")) != NULL) { + if (fscanf(fp, "%zu", &minfree) != 1) + minfree = 0; fclose(fp); - return (0); } - fclose(fp); - return (atoi(lin)); + /* scale kB to 512-byte blocks */ + if (ckd_mul(&minfree, minfree, 2)) + minfree = SIZE_MAX; } /* @@ -374,8 +449,6 @@ rcleanup(int signo __unused) dfname[0] = '\0'; } -#include - static void frecverr(const char *msg, ...) { @@ -403,3 +476,17 @@ frecverr(const char *msg, ...) putchar('\1'); /* return error code */ exit(1); } + +static void +ack(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\0", 1) != 1) + frecverr("%s: write error on ack", pp->printer); +} + +static void +nak(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\2", 1) != 1) + frecverr("%s: write error on nak", pp->printer); +} From nobody Wed Mar 4 14:45: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 4fQwSX75lgz6TbPj for ; Wed, 04 Mar 2026 14:45: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 4fQwSX4xCyz3bK1 for ; Wed, 04 Mar 2026 14:45:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635516; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cL0ogC7yddxj3WV6IV1pFzsEhl1w/Q9I0Y+cf8e3jHc=; b=eXQ8VM8yraR0oyhZutCxAxyTXSSwVw0yI472LJ3/AziKLKssilhWSL/22v6n90l+/l+0v2 sudc6xtphcCgY9mGQR/2GUh3WVJIKEaguPRYYxmmrlyygEcMvkOhYPrbs8wrI8VDa9W52g gM7JtCigtD+xHfgaEg2dTdHAlC4kmIQeaPTvcA7EyjUrt+DdZLJOLQuipsGlx59fIYyMNB LvKPfjUoY7AFI0w8k0OL6WWECkoO7PuZdL1CgznOKODB1XfDH3SrYd2/iyalncExkJLmYH 4fH2esGjiehRviBAqhuS34oWEfjnGczRyzDhMvzoDze3lRCHAbyROuDQF/MWzg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635516; a=rsa-sha256; cv=none; b=abnQpB9Tgjc84uobLw16L/7efcvFsEux6sHjh0Ec5rX3YP0crG+5SvgHHB4HfugPfc8D+Z 6gd2PhWyfGlU4QKpsyuDXVehfVmhxRtYbX3VjRw/8LpTe8O4lJcQzKrfoUQkvN7vn2+g4v oLus/4DcK2XZinW0oauZN8BkUUesmlrV+2Iw82hjQCWR8MryHiRc5ZoChny8DuwtG4P3JZ 0XZRtdlyNr1n90y20l82FRVZ8QlXkyWVYfa2HzY601quF2kqcMTHa7gaHMRmjPmERF6x/4 6TbkthAhwsGZkJ/vxo0MwsavBbTfwyClKouoFjhdvUqVOl4Xu7bNHbnmuQiwNQ== 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=1772635516; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cL0ogC7yddxj3WV6IV1pFzsEhl1w/Q9I0Y+cf8e3jHc=; b=OqGS5w9/TfyKFCo1LWD2Fy+iamqYx2AfVOsMpN7klBW2Z4AiGmf32E5FN63rGhip8T6nKy VcXa5x2XF+SaAVA5L5PsFh4GHPB8VKCuKjeQW7J8UuLUrzPd9lo4/oYnPo5A7QsRJ3J06T NE583DPz7KoiL30w0Rmc7UHnVI3tIFRFGkg1XCHuINN4jJzLMfYOgqmt8+o9nVYL/b4gg7 TjwakWz5bf2/pnS1Y1locRPOPqMHAwnxYTmaIcKA+FVCnBXNw76Pe8hgcdRXZcYAHzcx5u pCAbgkfvnbeULbEckdcipwspzCengT7D1S222yPdCF/8+k6dygReCLC+hCRcGQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwSX4QLRzvW8 for ; Wed, 04 Mar 2026 14:45:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2566a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:45:16 +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: 041065e59eae - stable/14 - lpd: Add timeout option 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: 041065e59eae8af5fa3ae676416eff65d90158e5 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:45:16 +0000 Message-Id: <69a8457c.2566a.18cac26a@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=041065e59eae8af5fa3ae676416eff65d90158e5 commit 041065e59eae8af5fa3ae676416eff65d90158e5 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:14 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:45:09 +0000 lpd: Add timeout option Set a 120-second receive timeout on all client connections, and add a command-line option to change that value. MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55400 (cherry picked from commit 56fbfd1ecdc78fc99b3a2e381c355ce8980de39d) --- usr.sbin/lpr/lpd/lpd.8 | 8 +++++++- usr.sbin/lpr/lpd/lpd.c | 30 +++++++++++++++++++----------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index f3b78d9d4d11..97f1acb23032 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -27,7 +27,7 @@ .\" .\" @(#)lpd.8 8.3 (Berkeley) 4/19/94 .\" -.Dd April 15, 2021 +.Dd February 19, 2026 .Dt LPD 8 .Os .Sh NAME @@ -36,6 +36,7 @@ .Sh SYNOPSIS .Nm .Op Fl cdlpsFW46 +.Op Fl t Ar timeout .Op Ar port# .Sh DESCRIPTION The @@ -107,6 +108,11 @@ This means that will not accept any connections from any remote hosts, although it will still accept print requests from all local users. +.It Fl t Ar timeout +Set the network receive timeout for client connections to +.Ar timeout +seconds. +The default is 120. .It Fl F By default, .Nm diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index c9a7e1615b74..df9bfcec5de1 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -73,28 +73,28 @@ static char sccsid[] = "@(#)lpd.c 8.7 (Berkeley) 5/10/95"; */ #include -#include -#include +#include #include -#include #include -#include +#include +#include + #include #include -#include -#include -#include -#include +#include +#include #include #include #include -#include +#include +#include #include #include #include #include -#include +#include +#include #include "lp.h" #include "lp.local.h" #include "pathnames.h" @@ -129,6 +129,7 @@ uid_t uid, euid; int main(int argc, char **argv) { + struct timeval tv = { .tv_sec = 120 }; int ch_options, errs, f, funix, *finet, i, lfd, socket_debug; fd_set defreadfds; struct sockaddr_un un, fromunix; @@ -151,7 +152,7 @@ main(int argc, char **argv) errx(EX_NOPERM,"must run as root"); errs = 0; - while ((i = getopt(argc, argv, "cdlpswFW46")) != -1) + while ((i = getopt(argc, argv, "cdlpst:wFW46")) != -1) switch (i) { case 'c': /* log all kinds of connection-errors to syslog */ @@ -171,6 +172,9 @@ main(int argc, char **argv) case 's': /* secure (no inet) */ sflag++; break; + case 't': + tv.tv_sec = atol(optarg); + break; case 'w': /* netbsd uses -w for maxwait */ /* * This will be removed after the release of 4.4, as @@ -398,6 +402,10 @@ main(int argc, char **argv) syslog(LOG_WARNING, "accept: %m"); continue; } + if (tv.tv_sec > 0) { + (void) setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, + sizeof(tv)); + } if (fork() == 0) { /* * Note that printjob() also plays around with From nobody Wed Mar 4 14:46: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 4fQwTs3VN2z6Tbw7 for ; Wed, 04 Mar 2026 14:46: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 4fQwTr3p9Nz3dY7 for ; Wed, 04 Mar 2026 14:46:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JeQj37P98ei5CWcDLuM7NJGcOWSGqdKDnJ37M7GWYHk=; b=cLbso0Uwu7FMBilKV0ncJsDQpBzaBDgtovXzfKzfywuN/gu71qvE+XyNkiM2/gY3HGUIGh 1tfHUvenyL1cGKQzvZxsnS6vqbciMvs5pW+NKRLAJl/PPr4Zv6QDrTe39iOPhxH6rjSr12 yw28UHocdiBqw92CqYGOagRWs4h7Ka6OyJhPDFvLqp6uTIr6oUaxxLufEAoHHdB7CVr+wR xpmzmIxn8QxZrlrDhcVmtNulJtNrDm9nWigEM9tetwy2ZMDVlb0jtuEW2+edQUQhFvycip j1b15734HwoeKJBMHEr6FG+ruzsNhRMKyFHmrQzWx2MBn23PvPjXwxLxr0LXYQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635584; a=rsa-sha256; cv=none; b=uyOgKL6aCZOEE61hOJTf/Bi6oRsFpHQLdXIWdMiOBqR0KIENcLJT096cuKl2wEBpfixC1B SLjDTbSQMcM4AKU59ITEn6G4e2bxqOETM6ifiYzs6UkhflzRk+InmNgxjFLd25IDc2zFPM 6kNM85LvIh9QBrECj9vOqoKheRo/xaTNmgG6hE0F9efuVjvcczbz63+zpAe9oahapjYXCE /zK2MkjCC3TuTyEeep7tClU38qedZFHWVK4+01YFSFMqgIeqC3/YsQdt8SFZjOpCGqtUlv 7LgQbxjK+NibS4ms3696Zn/jDxaChd54v8oNpbpqu8M2lv8F0wLa9IiCG9gbSg== 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=1772635584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JeQj37P98ei5CWcDLuM7NJGcOWSGqdKDnJ37M7GWYHk=; b=SSQlwyCVtyzjrLFn2UTPBEIvx/Y2DBaJ+pfwwZzalzGhjJ52WNOTvft8btKWzEs2pzH+bY cHa4FtLbFpjDh8uzQ/z20pX791aMd0w+QYYg0H9BjnjLWAh4KyKau9xkT3FItO5iiu0q8h ohvUYvtdwOAFYRimG+v0soiBZgUCx0PSNCGQ4b2GJqbwMBG+RiqcAsKZVnZpBn+8YGtvod bWzeeLyUPEQCUwnKx0gjuO0XweP7rbn48+C383g3NCCgIHWv9w5JNraQkzLpT0a2+npj23 Qk91pjvGA/WXro15aqE983juopgB464Rfg4M8kroWQIm1sofIrhrxCKP3ZjtGQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTr3MHszw1q for ; Wed, 04 Mar 2026 14:46:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2566e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:24 +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: c1788a925a93 - stable/13 - system(3): Clarify return values 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: c1788a925a93223dbd78f8c9988b4a296428b951 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:24 +0000 Message-Id: <69a845c0.2566e.2a4f28c@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c1788a925a93223dbd78f8c9988b4a296428b951 commit c1788a925a93223dbd78f8c9988b4a296428b951 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-25 21:12:36 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:04 +0000 system(3): Clarify return values Our manual page currently states that system() will return 127 if it fails to execute the shell. The actual return value is, to quote POSIX, “as if the command language interpreter had terminated using exit(127) or _exit(127)”. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov, kevans Differential Revision: https://reviews.freebsd.org/D55483 (cherry picked from commit 7305604b29d3db29c9bb5de6e7a25829fb541d1e) --- lib/libc/stdlib/system.3 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libc/stdlib/system.3 b/lib/libc/stdlib/system.3 index 7f1a34c69d2d..0b8a677c35b7 100644 --- a/lib/libc/stdlib/system.3 +++ b/lib/libc/stdlib/system.3 @@ -31,7 +31,7 @@ .\" .\" @(#)system.3 8.1 (Berkeley) 6/4/93 .\" -.Dd July 25, 2015 +.Dd February 24, 2026 .Dt SYSTEM 3 .Os .Sh NAME @@ -79,8 +79,10 @@ or \-1 if an error occurred when invoking .Xr fork 2 or .Xr waitpid 2 . -A return value of 127 means the execution of the shell -failed. +If the child process fails to execute the shell, it will terminate +with an exit code of 127 and +.Nm +will return the corresponding exit status. .Sh SEE ALSO .Xr sh 1 , .Xr execve 2 , From nobody Wed Mar 4 14:46: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 4fQwTt50nwz6TbqC for ; Wed, 04 Mar 2026 14:46: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 4fQwTs5JtNz3dXK for ; Wed, 04 Mar 2026 14:46:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635586; 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=WrTU8gb5svdiJy0ZKo1BNlrLlnKeH77hljCWJ7wRFyI=; b=Edk5SZmIg5XK+CE7qOwPrhvsDDKDCH/k588LCxiACHOLg6pXDcV0ogzP5rfrf8OvjHymw3 PqUolnsU3ks1LT+Mp2dN+QP/O6pbFXEEro+GWzqVfqYy/71tJqEutXVkg/ubTA3FE/3hBF Fn0kVtD36DvPAp1jUbQFm0iPdwfT/QEOhRFOL9nZEr8z115WePM3jDv0nqyBTyZ9DRMf7k n4JL0x8A3ZmqDGu0Ai9ATBc7Y1wJVL1XhFTyP3+3NHvvOEo35no1i40HTxM0/5a4Uc4HyH 8566dD8JnAOWCU/zTRxK8bSiqAswoyMuwD9TnEfrgoiOiOABd3yV0z4c+PeL4g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635586; a=rsa-sha256; cv=none; b=NKZDgiy80q33URllpQdwIXUPwZ2IHOBOFHGbpyNj9r4o4Fspe6hVOFhrRoOH2uEwrDSXOy pwUov9E9iDgC0Yq+fLEn3ZJocuuyIxxr4JWiKcjRakiHNPFKw7Of8Up92Zxz1lcn6cpf2e lERM0m3PSwTrtsi4acDUHur6d9T6PGG+GS+PevoaQHMeivDpJYp+InFrU7dw0rdmEI5ndl LroC6ADOXBSus4/N+mGRPgEqX6ZlZeD397aklZWdi2MU8MP/sfM7gAGp/zX2Oj9i5IHZFo /PHac2r8Q6Ur1XjLk6ocrmESt6PXg4LuklyaRyZ3wDWT9/KYDJkcNBWQ0LIwbA== 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=1772635586; 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=WrTU8gb5svdiJy0ZKo1BNlrLlnKeH77hljCWJ7wRFyI=; b=YL/yyKGuMr2GVC6ZgGQ9sa30BznLgenkvAcYpeAZ3muX/+kKnWdYWBBamOKnHR7P9wszUM X3jhHgW60/hf2+lmUC8SSJiJaE6mey1j0n4cRHtemdNEVGdbZl5d9iLCcEXr5DbnRKuG2Y E7ctZYzxmzFLO5dCB1EhbxXMcDsW8zCBj7fGpp+FLcoUNzis+6+55tQ4P/fYlfSWsxNfhC WAEeYx47InVcTwg7rkbzuMAG5Na+bmeTJfauTpddUyzqrUI3oRsBdFug6L2anvmeUkadVv mXwr7p4S4OgAEt9bLR6F5rgrRDrYqB0zFQ18XIo12qIzzpZo1ETpj9v6i0X+fw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTs4bd7zw4Q for ; Wed, 04 Mar 2026 14:46:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26999 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Chris Rees From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: c7460134fb26 - stable/13 - lpd: Add -F flag to prevent daemonizing 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: c7460134fb26bd41ed8da0f666b445d705e4cff2 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:25 +0000 Message-Id: <69a845c1.26999.7802cbd5@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c7460134fb26bd41ed8da0f666b445d705e4cff2 commit c7460134fb26bd41ed8da0f666b445d705e4cff2 Author: Chris Rees AuthorDate: 2021-04-03 17:51:56 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:05 +0000 lpd: Add -F flag to prevent daemonizing This is necessary for use with supervision, e.g. runit. I chose -F simply because that is what the folks at LPRng use. Approved by: pfg, gad, ngie Differential Revision: https://reviews.freebsd.org/D29566 (cherry picked from commit 3c6366067036d4573528309a0a4d3b52e2a76ae7) --- usr.sbin/lpr/lpd/lpd.8 | 11 +++++++++++ usr.sbin/lpr/lpd/lpd.c | 22 +++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index dbd8ee9b797c..aaab2923fd48 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -107,6 +107,17 @@ This means that will not accept any connections from any remote hosts, although it will still accept print requests from all local users. +.It Fl F +By default, +.Nm +will daemonize into the background. +The +.Fl F +flag causes +.Nm +to remain in the foreground. +Logging is still performed with +.Xr syslog 3 . .It Fl W By default, the .Nm diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index 21e8997bd87d..19456c9406df 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -102,6 +102,7 @@ static char sccsid[] = "@(#)lpd.c 8.7 (Berkeley) 5/10/95"; int lflag; /* log requests flag */ int sflag; /* no incoming port flag */ +int Fflag; /* run in foreground flag */ int from_remote; /* from remote socket */ int main(int argc, char **_argv); @@ -150,7 +151,7 @@ main(int argc, char **argv) errx(EX_NOPERM,"must run as root"); errs = 0; - while ((i = getopt(argc, argv, "cdlpswW46")) != -1) + while ((i = getopt(argc, argv, "cdlpswFW46")) != -1) switch (i) { case 'c': /* log all kinds of connection-errors to syslog */ @@ -182,6 +183,9 @@ main(int argc, char **argv) syslog(LOG_WARNING, "NOTE: please change your lpd config to use -W"); /* FALLTHROUGH */ + case 'F': + Fflag++; + break; case 'W': /* allow connections coming from a non-reserved port */ /* (done by some lpr-implementations for MS-Windows) */ @@ -262,12 +266,16 @@ main(int argc, char **argv) WEXITSTATUS(status)); } -#ifndef DEBUG +#ifdef DEBUG + Fflag++; +#endif /* - * Set up standard environment by detaching from the parent. + * Set up standard environment by detaching from the parent + * if -F not specified */ - daemon(0, 0); -#endif + if (Fflag == 0) { + daemon(0, 0); + } openlog("lpd", LOG_PID, LOG_LPR); syslog(LOG_INFO, "lpd startup: logging=%d%s%s", lflag, @@ -930,9 +938,9 @@ static void usage(void) { #ifdef INET6 - fprintf(stderr, "usage: lpd [-cdlsW46] [port#]\n"); + fprintf(stderr, "usage: lpd [-cdlsFW46] [port#]\n"); #else - fprintf(stderr, "usage: lpd [-cdlsW] [port#]\n"); + fprintf(stderr, "usage: lpd [-cdlsFW] [port#]\n"); #endif exit(EX_USAGE); } From nobody Wed Mar 4 14:46: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 4fQwTv2Vbxz6Tbkj for ; Wed, 04 Mar 2026 14:46: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 4fQwTt5M72z3df2 for ; Wed, 04 Mar 2026 14:46:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635586; 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=01IyDc3VXY2djIbIj5+k81IRquPvbidNDSKDGZaUhwg=; b=kHHebHFA3GuB0busQDWuFutaOMpPuNQLMbek79ZwhFDAcr/rLDuAoGwU0GjfoKVYqiV181 MZSJubMYclFX/QCTPeTfLaQ19cjPkpQJgFhCHsXHxmj22gf0IseHUHRDtMCuHJE+7XMMUI 9/i/fvCDJDQyoco2SsAzB0lMzClFt2HSkCogbcWrRUy1cF7oSBREJ4pM1H80arHSEh9cA6 ZCljZvzTo9hiZB4yWXOZ5gd7omt0B6ovb2n0yesv0kFu5dkd+RnbYS1FwERdeps9XO/tSe rgOJe/bPaktBfqgEWrSIuoE2OnuvpcR5kw6SMYllsJ9lqPsnLnGXifJrqXAkQA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635586; a=rsa-sha256; cv=none; b=GPF8503ZjwTzfAbM7m4c8Fvwvl5b79PmHIU8zYLuibfAp0IIqpItqGmVkeSZBbK7U0NmO1 /aGmNHVo4eiXBvUXH2OCpw/ntQ1Fz0DjtTn7kr0QcLkZ/4SvpVYZUSU0a9SWCrIBE1m/XX OkKlFXOQKSN46uKKS99GoM31YzGcdtakFKLU4p+6lHHV9l7JPtTca0/gg8Gmc/p6Il2yP2 1cxM6IWka0srqNhLgrRBUOWvvCW26K2RdG8E8mncGxLRx8hCmrLkqFhTvMzdLvp3fthiZl GI1E5e/LugJCBzHImKYQTXjaFEEJUlBnvxeEQxeThaiLA1/CdBujvcghyAi1AA== 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=1772635586; 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=01IyDc3VXY2djIbIj5+k81IRquPvbidNDSKDGZaUhwg=; b=W/JFyNLh+a1JaB2QH9aGehQltOyGWunbtHl0DaYOnglV8qfMy/RrHNardfb2B3VV2j/TiM T8dwgAg8Bh6eHk1v6dmtgEmY0Tax+xApvEJioORQJPFStPBIXCyat3N7mpnkaT/pqqjcfT hQMBS8Autr4Dgf/aed2MhIJRr/g+db+bPkMFiLCdfSsSp9jaloyP1IB4nxdvDszqIgEjWM GIHae08ANpjyfCmgC1HccrAH0er9meyP8/uoifTnMtr4i8BlmS2Zq8+0hpPF+NMk7GBWMZ 8++/B0EnHQ6KI+tGUItsXw8zV545Hft7cM/E9vdre5TWP8wSneq0PwT7pft2hA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTt4nFvzw1r for ; Wed, 04 Mar 2026 14:46:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2699e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Chris Rees From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 1afa6f918bd5 - stable/13 - lpd.8: Chase Dd-- took old value when merging 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: 1afa6f918bd502037b6e9c7a8ac0efbf7b7dd43f Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:26 +0000 Message-Id: <69a845c2.2699e.6b62d272@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1afa6f918bd502037b6e9c7a8ac0efbf7b7dd43f commit 1afa6f918bd502037b6e9c7a8ac0efbf7b7dd43f Author: Chris Rees AuthorDate: 2021-04-15 11:40:16 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:05 +0000 lpd.8: Chase Dd-- took old value when merging (cherry picked from commit 56b0f5f360b6039c6a696aa241aaa02a16ff6a0a) --- usr.sbin/lpr/lpd/lpd.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index aaab2923fd48..f5f7a0409fff 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -27,7 +27,7 @@ .\" .\" @(#)lpd.8 8.3 (Berkeley) 4/19/94 .\" -.Dd April 9, 2021 +.Dd April 15, 2021 .Dt LPD 8 .Os .Sh NAME From nobody Wed Mar 4 14:46: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 4fQwTx0M1Bz6Tbkm for ; Wed, 04 Mar 2026 14:46: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 4fQwTw00J2z3dV1 for ; Wed, 04 Mar 2026 14:46:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635588; 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=zl8JQR8KVSN8qrdHI1R/CczJj6qCRMm8praA8cRatKU=; b=bTzeNO+DnaIvXV9gSSqayJ3KfznNmJr4zmEELtqzVgLADZAaD5lIduuPojgYopXheZeKfy mXGRpNCUmfmMMDUr0smgU1MB92o0lcBogPrMdDSeuWqSSedwKSilFhrKzwgngAmoojlbhE pKB8wBaTvhqoFFTN2tmj8KnXFuHaN8TR28ebVawpOVBL3IXuBDMCcrNSOpnpYNttKx0H/H gl2HT9M0WvvLvGAQtksMxPZGa7gRjxHpLS0861gDhi9zaICumfw4wqnnUjxvRH9CUctJwu +gY+nvco2xMYhAucdNLQnlJw61XNr8E/9O0jiBHEVVIB3ElAQNxIRT4EBtEixQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635588; a=rsa-sha256; cv=none; b=W7xrZFrOc07Gg8K/MUdboAcKgz82nhb4pEFIc3dT+P7OZKBZEg9K1zPmm667JX9DtZ26ET GEpkdamlbBkJz4SPf1xeyZ2bgwXGZ7LFng3idAcaTlF/waawcLMkMT+hbvZlEbbAv8gk1J TvxSuVuftWKpIPA8+EuRulhpXOsZMBYgMtbym36c85HKtewEe0uhaVvtSj+NLNI/LGUa4X fhMzC/5mLfTcDN3slCZLnZMjOs1sNIIc1spFxqMaZFlHWa2K/QsxZQfjaSZaOYLq5T/eCG kDYbtjJdKC1s7uA2FOQ9arzCyTtZcZcVPYUWeCMCBC+iV53FHUfeLbr+qiY7nA== 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=1772635588; 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=zl8JQR8KVSN8qrdHI1R/CczJj6qCRMm8praA8cRatKU=; b=IaliPFrBHONSSAHcAbyjPZFx7j0JgEZuxJfRbDBbYvAoZ6fiwUieP76nA9N0d+IW1mD4oC maE1nnxO+EEpKlj0RVQFwqDJAHSBn+NFO7I2rgs64MapcdKzPvpHl+IgQbioXolnBqKCm6 X9nHKPkPj4a4A/rdCqVj1TQ/A00dgx5roR0jnGRtfwaKUl73FhowjR+PjGUjYzfq3f2Y3U WgvUFSNk6ked3VW8Tb5XYta6WpArZ6MxDVACTK5rE1Nww/Yk5BfG9/QDHOF80FH/iTgCFc H3aNXUSOa3skzQXrg0BVvvJ1x6qSec8chHK24aJ8CF8auJXGPHvVw4vXsPtp0Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTv5pKSzw1t for ; Wed, 04 Mar 2026 14:46:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25872 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Chris Rees From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: d3265561e247 - stable/13 - lpd: Update SYNOPSIS with new flag 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: d3265561e2470e8370ccc7aadb0178489d63a231 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:27 +0000 Message-Id: <69a845c3.25872.544fbb19@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=d3265561e2470e8370ccc7aadb0178489d63a231 commit d3265561e2470e8370ccc7aadb0178489d63a231 Author: Chris Rees AuthorDate: 2021-04-15 12:26:10 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:05 +0000 lpd: Update SYNOPSIS with new flag Reported by: 0mp (cherry picked from commit cebcca89f1b059438cc329bde4d8ad254a303623) --- usr.sbin/lpr/lpd/lpd.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index f5f7a0409fff..048014843b3b 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -35,7 +35,7 @@ .Nd line printer spooler daemon .Sh SYNOPSIS .Nm -.Op Fl cdlpsW46 +.Op Fl cdlpsFW46 .Op Ar port# .Sh DESCRIPTION The From nobody Wed Mar 4 14:46: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 4fQwTx2cPGz6Tbw9 for ; Wed, 04 Mar 2026 14:46: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 4fQwTx0M32z3dnF for ; Wed, 04 Mar 2026 14:46:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635589; 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=74DuXl06R08J64mSTMdl54XCMqdOxzpypYi9GhTMXH4=; b=tJG7e73Qze5BNhlgt4cd/1w7jdatcAR2ZCMeaTVA9bKWRyyvQrZBi6/JmqEWXT3NUg9hlL oof46TOdtqauTchXb/BiReLwyNBknUEIxvtrTor5Otur8o3GI2pkDoDbcuj6i8sD3Gx/sr myjcKG2Tk18Xza3SbhpQIEpNOIQ7OZYntEdyB+kG3RIJI4s/Yelyg3yZKFws9rHtcI+Kfm Y7CHntNI6sPo0eLpEgGW4Z7Tz3miche3MIyaMWGby80VEUXMIzn4mjwSqbeZngacV7b5eo UYCI5ivWny1jxDsW5s0XuVcFc0Xm4g14uZgq95CLOBVdt+JHf2pasuuDxxbt5A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635589; a=rsa-sha256; cv=none; b=VgfLQAHwmHUEgCxX7xYVwFQ3JEQX/WwhbX1Yynvwh5dlPTjH28v3B3ZSQ7mnItENA1YZ71 IrPwAYJWq/D4BYaQZq9yKqDxlhW7B5zv76CGLh55B9RYEJ5a+ChjkmumFq4da57jh4GfWb b54cWQZJ92OBb85Zo9YgxTgGYc3ez2j0h96VleVNRysmGCc8PWvLTG/XAl3N1/TD1z0iOS 1WDzumEK19LZqd3thMWoHZdx/CJqVJnyqDe4Rj0O0v2f0PTHZtNHkhTXJQWEt6IEEVtHxx WVu27KKRy14MNaNdUQshUuTZdVl5rNlGDs632APHEgnFbHD1Ux/6GOf2S7XAug== 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=1772635589; 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=74DuXl06R08J64mSTMdl54XCMqdOxzpypYi9GhTMXH4=; b=SzuJT+vx/RcCNPM0/a4hWj+Tn2DGVGNzkfMhZ6cY5dr0vQWAMya6SRL5amaPCosHBhFFON 3P9uLDFzUS+OjUHA0UoefXUG7JkdH1rwYYomkz2QqXiqYUzZiG7XpbGlZSRssPHNJYKROW Q3Upa/RNK2q7KR/JHatyuj/Vojs9YmjjbSTAMnX2KA+roHOF0xAceTqpc7iyxrBUf4gKQz DKlHFurppeSbJQSwZIO+d1UCcBgb1brm/2CDGGERaVV6Xk7tTsp8OcO+MXZCg92YBMqf9P FYsquD2pC6reKPPtFMRX/yzj4nM6h5jUdL3CXWh+/FwllHO1byHL5SrHXdvKEA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTw6rQTzvfM for ; Wed, 04 Mar 2026 14:46:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26a0d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Elyes Haouas From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 9711a6d01b15 - stable/13 - lpr: Remove trailing semicolon 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: 9711a6d01b15b50103829e4fc9bddb7e8663a245 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:28 +0000 Message-Id: <69a845c4.26a0d.72a13281@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=9711a6d01b15b50103829e4fc9bddb7e8663a245 commit 9711a6d01b15b50103829e4fc9bddb7e8663a245 Author: Elyes Haouas AuthorDate: 2023-03-15 02:09:16 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:05 +0000 lpr: Remove trailing semicolon Signed-off-by: Elyes Haouas Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/654 (cherry picked from commit 365348f66a47df247b5289b8a86fb20b36d778c1) --- usr.sbin/lpr/lpd/recvjob.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/lpr/lpd/recvjob.c b/usr.sbin/lpr/lpd/recvjob.c index cf5cd4e15354..a6495940b342 100644 --- a/usr.sbin/lpr/lpd/recvjob.c +++ b/usr.sbin/lpr/lpd/recvjob.c @@ -66,7 +66,7 @@ static char sccsid[] = "@(#)recvjob.c 8.2 (Berkeley) 4/27/95"; #include "extern.h" #include "pathnames.h" -#define ack() (void) write(STDOUT_FILENO, sp, (size_t)1); +#define ack() (void) write(STDOUT_FILENO, sp, (size_t)1) /* * The buffer size to use when reading/writing spool files. From nobody Wed Mar 4 14:46: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 4fQwV03gWLz6Tby1 for ; Wed, 04 Mar 2026 14:46: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 4fQwTy0c3Qz3dhd for ; Wed, 04 Mar 2026 14:46:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=twv4IZEoGoaZ9QHAzviJfnCpJrT2nV647gXG4sIqI+w=; b=UuW0JmgvJ0IeX3n3nitWMt0MWeZqt5iCTyDCfIVf0YWQvbLzq78VMUPf9MhYO5cpF7aAFx jBl+zHZDnPb8yJypajOZCsXSGpoStFth/Cahk6IzoNleYcsfnHZG6dD4Qw7DcCra24IWzF +9X25Vc0rvjeKxi1+IUZEjs+6rmdZ+vBAIDiyI2qaasn1HQzXVR0pxicwB2fQmJj7+7DMe KPMwFoDhUWyt6HRShz58f/rUbj5igOa2JQAyqZSpf5Q1PUihRZivOzbB1GGxFPJhTYUYrM khtukxzCxMLFpLKALJEeH/qqu9kYMSwB1FsqJCfvu6we1cLP9B/o+OIaQzmsFQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635590; a=rsa-sha256; cv=none; b=ts8a/kXFRAV+nxPa7gf9TYTm0pZUf+rOOn16YrJLgrSYtqDCrZmn70mkJsEeSzWpPVHvzk UkECnXnn8WW1iXiaSqxpqJ27PN7ARejo/dZ4y5PIv+qaIczeivviMSUPxH7tCFlCMXtjO2 bZehkeAw44dz7cI14w/3efd9Q8+eFrrzB8iPabKzvNjy1ZXPWCUoHWcPWvsGMNsTsHw92Z Pd0zFIMnmYUA2AlNg5+kIWtzipI0YuQk9AVFXAbk8V1reMoDq0aqBCl+Gh20JhkZyuifW0 axAdIGtovWmXZ4F8NmcRg0CAWfZzMH8ZbcWkLCz4nvEuos8RgAgfs2ffbdS5uw== 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=1772635590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=twv4IZEoGoaZ9QHAzviJfnCpJrT2nV647gXG4sIqI+w=; b=NGiFy5PF4nu40ZAF+J9rUfaTTcH/tvRWlOX6+Lp0JRd3TFgOR7cTNwgYXtPDnNbEJmMYPJ +ZUiWzYXWF+tuyFMp/MgT2Dvmq67Si/xyB1x/FVnyBV9g3g2vu+eulgKUP/BOvfNtf4aiD P3LXCgkHpxrLHXYjLmE1YVESf/w9+XP8rhRrMmK7fcnMwaqJ5F06rG6mtdi8N7HZrhEH7x U5C71A72odU9KGcDtqIQphziIzAT6jdHs32t6Ovy+eulG/OL9P9AtKn9xTQCssrUXOg5Sc aZqu+HmjfWEO7FMZfsMijru3MObPH52DVSsaPp82D2URCcACDZUfzpRfovnnuw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTy0B3Czvv4 for ; Wed, 04 Mar 2026 14:46:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26a12 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46:29 +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: 88dc56a6edbc - stable/13 - lpd: Improve robustness 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: 88dc56a6edbc23d8912bff3e1e7ec2633d92bf70 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:29 +0000 Message-Id: <69a845c5.26a12.4b111be3@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=88dc56a6edbc23d8912bff3e1e7ec2633d92bf70 commit 88dc56a6edbc23d8912bff3e1e7ec2633d92bf70 Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:06 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:05 +0000 lpd: Improve robustness * Check for integer overflow when receiving file sizes. * Check for buffer overflow when receiving file names, and fully validate the names. * Check for integer overflow when checking for available disk space. * Check for I/O errors when sending status codes. * Enforce one job per connection and one control file per job (see code comments for additional details). * Simplify readfile(), avoiding constructs vulnerable to integer overflow. * Don't delete files we didn't create. * Rename read_number() to read_minfree() since that's all it's used for, and move all the minfree logic into it. * Fix a few style issues. PR: 293278 MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55399 (cherry picked from commit 9065be0a5902e058d25a42bd9b3fbe9dc28b189d) --- usr.sbin/lpr/lpd/recvjob.c | 291 +++++++++++++++++++++++++++++---------------- 1 file changed, 189 insertions(+), 102 deletions(-) diff --git a/usr.sbin/lpr/lpd/recvjob.c b/usr.sbin/lpr/lpd/recvjob.c index a6495940b342..702ea4ef5be8 100644 --- a/usr.sbin/lpr/lpd/recvjob.c +++ b/usr.sbin/lpr/lpd/recvjob.c @@ -51,22 +51,25 @@ static char sccsid[] = "@(#)recvjob.c 8.2 (Berkeley) 4/27/95"; #include #include -#include -#include -#include #include #include -#include +#include +#include +#include +#include +#include #include #include #include +#include +#include #include "lp.h" #include "lp.local.h" #include "ctlinfo.h" #include "extern.h" #include "pathnames.h" -#define ack() (void) write(STDOUT_FILENO, sp, (size_t)1) +#define digit(ch) ((ch) >= '0' && (ch) <= '9') /* * The buffer size to use when reading/writing spool files. @@ -74,15 +77,16 @@ static char sccsid[] = "@(#)recvjob.c 8.2 (Berkeley) 4/27/95"; #define SPL_BUFSIZ BUFSIZ static char dfname[NAME_MAX]; /* data files */ -static int minfree; /* keep at least minfree blocks available */ -static const char *sp = ""; +static size_t minfree; /* keep at least minfree blocks available */ static char tfname[NAME_MAX]; /* tmp copy of cf before linking */ -static int chksize(int _size); +static void ack(struct printer *_pp); +static void nak(struct printer *_pp); +static int chksize(size_t _size); static void frecverr(const char *_msg, ...) __printf0like(1, 2); static int noresponse(void); static void rcleanup(int _signo); -static int read_number(const char *_fn); +static void read_minfree(void); static int readfile(struct printer *_pp, char *_file, size_t _size); static int readjob(struct printer *_pp); @@ -130,7 +134,7 @@ recvjob(const char *printer) } else if (stat(pp->spool_dir, &stb) < 0) frecverr("%s: stat(%s): %s", pp->printer, pp->spool_dir, strerror(errno)); - minfree = 2 * read_number("minfree"); /* scale KB to 512 blocks */ + read_minfree(); signal(SIGTERM, rcleanup); signal(SIGPIPE, rcleanup); @@ -141,18 +145,35 @@ recvjob(const char *printer) /* * Read printer jobs sent by lpd and copy them to the spooling directory. * Return the number of jobs successfully transferred. + * + * In theory, the protocol allows any number of jobs to be transferred in + * a single connection, with control and data files in any order. This + * would be very difficult to police effectively, so enforce a single job + * per connection. The control file can be sent at any time (first, last, + * or between data files). All files must bear the same job number, and + * the data files must be sent sequentially. If any of these requirements + * is violated, we close the connection and delete everything. + * + * Note that RFC 1179 strongly implies only one data file per job; I + * assume this is a mistake in the RFC since it is supposed to describe + * this code, which predates it, but was written by a third party. */ static int readjob(struct printer *pp) { - register int size; - int cfcnt, dfcnt; - char *cp, *clastp, *errmsg; + ssize_t rlen; + size_t len, size; + int cfcnt, dfcnt, curd0, curd2, curn, n; + char *cp, *clastp, *errmsg, *sep; char givenid[32], givenhost[MAXHOSTNAMELEN]; - ack(); + tfname[0] = dfname[0] = '\0'; + ack(pp); cfcnt = 0; dfcnt = 0; + curd0 = 'd'; + curd2 = 'A'; + curn = -1; for (;;) { /* * Read a command to tell us what to do @@ -160,16 +181,16 @@ readjob(struct printer *pp) cp = line; clastp = line + sizeof(line) - 1; do { - size = read(STDOUT_FILENO, cp, (size_t)1); - if (size != (ssize_t)1) { - if (size < (ssize_t)0) { + rlen = read(STDOUT_FILENO, cp, 1); + if (rlen != 1) { + if (rlen < 0) { frecverr("%s: lost connection", pp->printer); /*NOTREACHED*/ } return (cfcnt); } - } while ((*cp++ != '\n') && (cp <= clastp)); + } while (*cp++ != '\n' && cp <= clastp); if (cp > clastp) { frecverr("%s: readjob overflow", pp->printer); /*NOTREACHED*/ @@ -177,37 +198,47 @@ readjob(struct printer *pp) *--cp = '\0'; cp = line; switch (*cp++) { - case '\1': /* cleanup because data sent was bad */ + case '\1': /* abort print job */ rcleanup(0); continue; - case '\2': /* read cf file */ - size = 0; - dfcnt = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + case '\2': /* read control file */ + if (tfname[0] != '\0') { + /* multiple control files */ + break; + } + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; /* - * host name has been authenticated, we use our - * view of the host name since we may be passed - * something different than what gethostbyaddr() - * returns + * The next six bytes must be "cfA" followed by a + * three-digit job number. The rest of the line + * is the client host name, but we substitute the + * host name we've already authenticated. */ - strlcpy(cp + 6, from_host, sizeof(line) - + (size_t)(line - cp - 6)); - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } - strlcpy(tfname, cp, sizeof(tfname)); - tfname[sizeof (tfname) - 1] = '\0'; + if (cp[0] != 'c' || cp[1] != 'f' || cp[2] != 'A' || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(tfname, sizeof(tfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(tfname)) + break; tfname[0] = 't'; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - if (!readfile(pp, tfname, (size_t)size)) { + if (!readfile(pp, tfname, size)) { rcleanup(0); continue; } @@ -220,27 +251,62 @@ readjob(struct printer *pp) cfcnt++; continue; - case '\3': /* read df file */ + case '\3': /* read data file */ + if (curd0 > 'z') { + /* too many data files */ + break; + } *givenid = '\0'; *givenhost = '\0'; - size = 0; - while (*cp >= '0' && *cp <= '9') - size = size * 10 + (*cp++ - '0'); + for (size = 0; digit(*cp); cp++) { + if (ckd_mul(&size, size, 10) || + ckd_add(&size, size, *cp - '0')) + break; + } if (*cp++ != ' ') break; - if (strchr(cp, '/')) { - frecverr("readjob: %s: illegal path name", cp); - /*NOTREACHED*/ - } + /* + * The next six bytes must be curd0, 'f', curd2 + * followed by a three-digit job number, where + * curd2 cycles through [A-Za-z] while curd0 + * starts at 'd' and increments when curd2 rolls + * around. The rest of the line is the client + * host name, but we substitute the host name + * we've already authenticated. + */ + if (cp[0] != curd0 || cp[1] != 'f' || cp[2] != curd2 || + !digit(cp[3]) || !digit(cp[4]) || !digit(cp[5])) + break; + n = (cp[3] - '0') * 100 + (cp[4] - '0') * 10 + + cp[5] - '0'; + if (curn == -1) + curn = n; + else if (curn != n) + break; + len = snprintf(dfname, sizeof(dfname), "%.6s%s", cp, + from_host); + if (len >= sizeof(dfname)) + break; if (!chksize(size)) { - (void) write(STDOUT_FILENO, "\2", (size_t)1); + nak(pp); continue; } - strlcpy(dfname, cp, sizeof(dfname)); + switch (curd2++) { + case 'Z': + curd2 = 'a'; + break; + case 'z': + curd0++; + curd2 = 'A'; + break; + } dfcnt++; trstat_init(pp, dfname, dfcnt); - (void) readfile(pp, dfname, (size_t)size); - trstat_write(pp, TR_RECVING, (size_t)size, givenid, + if (!readfile(pp, dfname, size)) { + rcleanup(0); + continue; + } + trstat_write(pp, TR_RECVING, size, givenid, from_host, givenhost); continue; } @@ -255,52 +321,55 @@ readjob(struct printer *pp) static int readfile(struct printer *pp, char *file, size_t size) { - register char *cp; char buf[SPL_BUFSIZ]; - size_t amt, i; - int err, fd, j; + ssize_t rlen, wlen; + int err, f0, fd, j; fd = open(file, O_CREAT|O_EXCL|O_WRONLY, FILMOD); if (fd < 0) { - frecverr("%s: readfile: error on open(%s): %s", - pp->printer, file, strerror(errno)); + /* + * We need to pass the file name to frecverr() so it can + * log an error, but frecverr() will then call rcleanup() + * which will delete the file if we don't zero out the + * first character. + */ + f0 = file[0]; + file[0] = '\0'; + frecverr("%s: readfile: error on open(%c%s): %s", + pp->printer, f0, file + 1, strerror(errno)); /*NOTREACHED*/ } - ack(); - err = 0; - for (i = 0; i < size; i += SPL_BUFSIZ) { - amt = SPL_BUFSIZ; - cp = buf; - if (i + amt > size) - amt = size - i; - do { - j = read(STDOUT_FILENO, cp, amt); - if (j <= 0) { - frecverr("%s: lost connection", pp->printer); + ack(pp); + while (size > 0) { + rlen = read(STDOUT_FILENO, buf, MIN(SPL_BUFSIZ, size)); + if (rlen < 0 && errno == EINTR) + continue; + if (rlen <= 0) { + frecverr("%s: lost connection", pp->printer); + /*NOTREACHED*/ + } + size -= rlen; + while (rlen > 0) { + wlen = write(fd, buf, rlen); + if (wlen < 0 && errno == EINTR) + continue; + if (wlen <= 0) { + frecverr("%s: write error on write(%s)", + pp->printer, file); /*NOTREACHED*/ } - amt -= j; - cp += j; - } while (amt > 0); - amt = SPL_BUFSIZ; - if (i + amt > size) - amt = size - i; - if (write(fd, buf, amt) != (ssize_t)amt) { - err++; - break; + rlen -= wlen; } } - (void) close(fd); - if (err) { + if (close(fd) != 0) { frecverr("%s: write error on close(%s)", pp->printer, file); /*NOTREACHED*/ } if (noresponse()) { /* file sent had bad data in it */ - if (strchr(file, '/') == NULL) - (void) unlink(file); + (void) unlink(file); return (0); } - ack(); + ack(pp); return (1); } @@ -309,13 +378,13 @@ noresponse(void) { char resp; - if (read(STDOUT_FILENO, &resp, (size_t)1) != 1) { + if (read(STDOUT_FILENO, &resp, 1) != 1) { frecverr("lost connection in noresponse()"); /*NOTREACHED*/ } if (resp == '\0') - return(0); - return(1); + return (0); + return (1); } /* @@ -323,36 +392,42 @@ noresponse(void) * 1 == OK, 0 == Not OK. */ static int -chksize(int size) +chksize(size_t size) { - int64_t spacefree; struct statfs sfb; + size_t avail; if (statfs(".", &sfb) < 0) { syslog(LOG_ERR, "%s: %m", "statfs(\".\")"); return (1); } - spacefree = sfb.f_bavail * (sfb.f_bsize / 512); - size = (size + 511) / 512; - if (minfree + size > spacefree) - return(0); - return(1); + /* more free space than we can count; possible on 32-bit */ + if (ckd_mul(&avail, sfb.f_bavail, (sfb.f_bsize / 512))) + return (1); + /* already at or below minfree */ + if (avail <= minfree) + return (0); + /* not enough space */ + if (avail - minfree <= size / 512) + return (0); + return (1); } -static int -read_number(const char *fn) +static void +read_minfree(void) { - char lin[80]; - register FILE *fp; + FILE *fp; - if ((fp = fopen(fn, "r")) == NULL) - return (0); - if (fgets(lin, sizeof(lin), fp) == NULL) { + minfree = 0; + /* read from disk */ + if ((fp = fopen("minfree", "r")) != NULL) { + if (fscanf(fp, "%zu", &minfree) != 1) + minfree = 0; fclose(fp); - return (0); } - fclose(fp); - return (atoi(lin)); + /* scale kB to 512-byte blocks */ + if (ckd_mul(&minfree, minfree, 2)) + minfree = SIZE_MAX; } /* @@ -374,8 +449,6 @@ rcleanup(int signo __unused) dfname[0] = '\0'; } -#include - static void frecverr(const char *msg, ...) { @@ -403,3 +476,17 @@ frecverr(const char *msg, ...) putchar('\1'); /* return error code */ exit(1); } + +static void +ack(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\0", 1) != 1) + frecverr("%s: write error on ack", pp->printer); +} + +static void +nak(struct printer *pp) +{ + if (write(STDOUT_FILENO, "\2", 1) != 1) + frecverr("%s: write error on nak", pp->printer); +} From nobody Wed Mar 4 14:46: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 4fQwV050fnz6Tbn4 for ; Wed, 04 Mar 2026 14:46: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 4fQwTz17Wnz3dr2 for ; Wed, 04 Mar 2026 14:46:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772635591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4h5Ni0jlBip+8xlcuCL/A4RPex086nBbddtEbWBvYaE=; b=N/NSgPmhAsdHdCh9B1M/QkKtIsmaHm76HWaydXR+sqSL+3b6neVHngi6RlhjQu7J4ZsJYJ 8XDk9lo0xPbEr53UITAmNwW23SG0MXlWCIuZpZadqB17079nUsxdGoLFkMiJGmU2NKulEl Cq+myFWOxRJnz+UAUwkIKRfe8PvmrrsDPQTmIbfWea+ZVy3/Fyc7TjLjC3pCGlDmIxqlMp kH93M1j4wEGOpFHWxsu4plf/sjznUlnfXubQpW4pux4+7QzvFLd6RQtG2t/XCElJI8AKQ3 wLssCg3ezOzOjanGIjXfjidDo50EQ40Iu3Y3/Oa424dGlvCZQw8lcWGWoWaa6g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772635591; a=rsa-sha256; cv=none; b=SdXOakMjuUIratTqK6ELWKfVVUHzprF4dAChmjojKbBbDZO/iL7PX6Vr/Iy9LY82BZbPJS IjnhOuhqv3sdvm9trFRICBeNQGI1DqTMqQ4suk2j7lIqB9+un9tQzmr7dO2XNY5ghyzHqt azyld253z7iGG4+MpUiqw5g1U4YtdrLlg2gadFxL+IoAgLZHCfNDSbVyq82S6XlAHXgAYc tRsgBSZ+J9ZpkWO8Nj9Xfn4ifklEXMSMoUKy/sTKISbh57rMQzyT2uFtunKFeM9nlVjnJv lh/z4BFvu582p1aLWvzL+mj5MB3F5+NGNbHOTjpNvh0qvaF8FutydAdGxCTmEQ== 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=1772635591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4h5Ni0jlBip+8xlcuCL/A4RPex086nBbddtEbWBvYaE=; b=DTYP5ruN50dnJiVZ6DwjtLWtN6MvVdHh/Qf7anedy1FcZ82oheKqgkHSAcPbsanMFbNUOt 7O9+xbIL3siBEUqrglM/9XIqRqzwRRizLcgrG0j7YNoKjCa+Xto6DocT6fMiwOzBVLy66H p2gmJ2b+7wE6MXdarJ7Vmgj4ldS8XIAbo6IhYEMMmrSc4XwLj2vt3gCPbGczepbuW4RXi5 6BllSO6abZAu0SPTiTkq6gjg0YWJzUy1pwQi7Ska/x9QTer2WyPyGCBbnLbAVakTzEU1ob /1EH9377H+vAUAZKCGBrXocRnBekGfUHYxjM4iGA2FDvECFkw/T6WRAXynUOtg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwTz0bLGzvv5 for ; Wed, 04 Mar 2026 14:46:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26ffb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 14:46: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: ba5f7719f63e - stable/13 - lpd: Add timeout option 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: ba5f7719f63ea1bde229ff0ff6204cf91516c8ce Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 14:46:31 +0000 Message-Id: <69a845c7.26ffb.9f7646e@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ba5f7719f63ea1bde229ff0ff6204cf91516c8ce commit ba5f7719f63ea1bde229ff0ff6204cf91516c8ce Author: Dag-Erling Smørgrav AuthorDate: 2026-02-26 06:15:14 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-04 14:46:06 +0000 lpd: Add timeout option Set a 120-second receive timeout on all client connections, and add a command-line option to change that value. MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55400 (cherry picked from commit 56fbfd1ecdc78fc99b3a2e381c355ce8980de39d) --- usr.sbin/lpr/lpd/lpd.8 | 8 +++++++- usr.sbin/lpr/lpd/lpd.c | 30 +++++++++++++++++++----------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index 048014843b3b..5a78b282a6b1 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -27,7 +27,7 @@ .\" .\" @(#)lpd.8 8.3 (Berkeley) 4/19/94 .\" -.Dd April 15, 2021 +.Dd February 19, 2026 .Dt LPD 8 .Os .Sh NAME @@ -36,6 +36,7 @@ .Sh SYNOPSIS .Nm .Op Fl cdlpsFW46 +.Op Fl t Ar timeout .Op Ar port# .Sh DESCRIPTION The @@ -107,6 +108,11 @@ This means that will not accept any connections from any remote hosts, although it will still accept print requests from all local users. +.It Fl t Ar timeout +Set the network receive timeout for client connections to +.Ar timeout +seconds. +The default is 120. .It Fl F By default, .Nm diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index 19456c9406df..23bcd0f674b4 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -73,28 +73,28 @@ static char sccsid[] = "@(#)lpd.c 8.7 (Berkeley) 5/10/95"; */ #include -#include -#include +#include #include -#include #include -#include +#include +#include + #include #include -#include -#include -#include -#include +#include +#include #include #include #include -#include +#include +#include #include #include #include #include -#include +#include +#include #include "lp.h" #include "lp.local.h" #include "pathnames.h" @@ -129,6 +129,7 @@ uid_t uid, euid; int main(int argc, char **argv) { + struct timeval tv = { .tv_sec = 120 }; int ch_options, errs, f, funix, *finet, i, lfd, socket_debug; fd_set defreadfds; struct sockaddr_un un, fromunix; @@ -151,7 +152,7 @@ main(int argc, char **argv) errx(EX_NOPERM,"must run as root"); errs = 0; - while ((i = getopt(argc, argv, "cdlpswFW46")) != -1) + while ((i = getopt(argc, argv, "cdlpst:wFW46")) != -1) switch (i) { case 'c': /* log all kinds of connection-errors to syslog */ @@ -171,6 +172,9 @@ main(int argc, char **argv) case 's': /* secure (no inet) */ sflag++; break; + case 't': + tv.tv_sec = atol(optarg); + break; case 'w': /* netbsd uses -w for maxwait */ /* * This will be removed after the release of 4.4, as @@ -398,6 +402,10 @@ main(int argc, char **argv) syslog(LOG_WARNING, "accept: %m"); continue; } + if (tv.tv_sec > 0) { + (void) setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, + sizeof(tv)); + } if (fork() == 0) { /* * Note that printjob() also plays around with From nobody Wed Mar 4 15:08: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 4fQwzl5Yrhz6Td6H for ; Wed, 04 Mar 2026 15:08: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 4fQwzl4jY1z3jLf for ; Wed, 04 Mar 2026 15:08:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772636931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1cZJWCbSMAEnPmTn/b0F8QefbcxqIndJ8/azb+fvXqI=; b=tNpLbEymhJ6BfxBv/c2p1QbSG9UKqZ9VYx6VT+rFnxaWXnHyaXNzh65ozcmXWBnQnGKKev cwcdAw3WqVS722QJp90eJq1JszhQm5StEkLQTR+rAYfMYtqRoxgU4ofuGEo0DSsdjNyO4Y qaafrFqUs/MxObd5y7QxBfBBabcljESWXcVROqL0GxWBwzemnOhl29gcrJTuWs4tm7yM89 n5W5Lt/jDJFAhZ8NqSlVryrHbY8I50/O7O6vl3x1ZQPUI03X/tubwF/YsmvqLQotRitCHo IBaLA3bZrSX/d7F/0Jilf4jfwZXQ312en//QfeBVzkvnmgHhEjQLshftPIj1vg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772636931; a=rsa-sha256; cv=none; b=jpZAyvZhDp05sz7T2G48uyNVHXd8ish2o7b3nG6CkSQwB9UGqfSoQtEr1vU3yejpWnhUUW 1Gjy6iannjcuoBOd77VLN94RmlbXhbLl2fp1R8wRpaNbg4xG0zOTmMZRf1u8KSysx7Qyic 6tNXXZqs8TlDFLsUMsEoGd0zDvSRDvsl9T4B6OTCHmcfHESfKydHUeZSuEsnkO9YCitSBd PWXaeOZWYDB/sE8Fxf39ow0iIX7ZyhlNVj9cSpyvd24ONoW5vGeKgWaXRMbjyd90KINuzW zTYWm30WipJNjMMgI747i45+CoFD8mGrFjLVcV8EDJc3IWig124yiXQBQpvs2g== 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=1772636931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1cZJWCbSMAEnPmTn/b0F8QefbcxqIndJ8/azb+fvXqI=; b=B5g5DcHZDTFcZ2McvJFneAnYnY2CwfZk+2G7eayjNbBBsA32dQCKINlaT6btGrR0Zpl0px oiXiCrra4Xw58iNL/9yhtpCLun3erwNySiTSpDFhD2Pw3aHXOgl1yXr9KZsJBgNa5wsrV1 RrgADfIYsWXLgWIfH0RH4R0tMLsUlro2PD3EQnfqkwoM/nLspc2j2hBYBHovP9rafpN4x1 LN1pmsbzOM0yugIvaULaGXgpRsLruRw2+dI/YJoPS+zW/m65XG/kV/CyidrixpfdtALd6q ZbByXpGYNGyKOcDP/4CCmuphxYmwZYS3sSXMrHFftnDQewOXDCQQAGQFhk9FIQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQwzl42jFzwfB for ; Wed, 04 Mar 2026 15:08:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26a70 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 15:08:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: 8e61067dab49 - stable/14 - ichwd: address unused function warning by marking as __unused 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: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8e61067dab49470e61f59be2836fa89f17b99c4e Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 15:08:51 +0000 Message-Id: <69a84b03.26a70.72321e6a@gitrepo.freebsd.org> The branch stable/14 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=8e61067dab49470e61f59be2836fa89f17b99c4e commit 8e61067dab49470e61f59be2836fa89f17b99c4e Author: ShengYi Hung AuthorDate: 2025-09-10 16:33:33 +0000 Commit: ShengYi Hung CommitDate: 2026-03-04 15:08:34 +0000 ichwd: address unused function warning by marking as __unused Reported by: markj, bz Approved by: markj (mentor) Fixes: 2b74ff5fceb6 ("ichwd: introduce i6300esbwd watch dog driver") Differential Revision: https://reviews.freebsd.org/D52476 (cherry picked from commit 3449a3abab892a0a1124ee4edbc10d6d28b87af3) --- sys/dev/ichwd/i6300esbwd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/ichwd/i6300esbwd.c b/sys/dev/ichwd/i6300esbwd.c index d95aeb53c3f5..03d504a350aa 100644 --- a/sys/dev/ichwd/i6300esbwd.c +++ b/sys/dev/ichwd/i6300esbwd.c @@ -45,7 +45,7 @@ static const struct i6300esbwd_pci_id { { DEVICEID_6300ESB_2, "6300ESB Watchdog Timer" }, }; -static uint16_t +static uint16_t __unused i6300esbwd_cfg_read(struct i6300esbwd_softc *sc) { return (pci_read_config(sc->dev, WDT_CONFIG_REG, 2)); From nobody Wed Mar 4 15:24: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 4fQxKr6bXHz6TdrL; Wed, 04 Mar 2026 15:24:32 +0000 (UTC) (envelope-from des@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (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 "smtp.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fQxKr5scpz3lTk; Wed, 04 Mar 2026 15:24:32 +0000 (UTC) (envelope-from des@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772637872; 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: in-reply-to:in-reply-to:references:references; bh=QffafDSnTq7SBsIGhXIGOSsgdhvJV8njBW9XC1BZuSg=; b=UV1tJQV9Hf0b8IA4YzSFZP17CA2toJuc3Y67P4v1hjgpYgOfA48+rcNvEUD7rmDOGbFbxk xigZpmbu1Oab9qRcDRJwpfaQKcqkXbTtsiRuB092j0xu0NYvAXHoleKsWFKdyjO+E9vWMU EfiPFFGshCQGT0vgonVZg3kupCPiHBBHS7s5NES9v7XuTtNRw5oIgmjRidkns7NLV8wFPA zZUXYzfWZ5IZwRr3VzY/OALTLqGqUcyJMiZbR2qUFsMfuF82OAaizZTHc6TFlSj/53W6F+ GBKfP/0okVEGNpb6ls7tLRnhOkW5AeFtIlOioCvyWOoDQl2bSEYMJuYyZdYXdA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772637872; a=rsa-sha256; cv=none; b=clmQWh2ZISvMhJWuiGoZfpp4sFMzMKtQOKo1uoZdZyD0oKKGK0BdF3nuDy5v1Arj+q5BwB mifcFtBWuROcuheRrRVJv2PYVfqsTk5jzqU1Sjl1X64zXAYyRP3nIDXMTc+IXejUWW1HTk 3SYmy06QhON2sYZXKtQDYtaMxB1cjtMU2dJu+6vRwoZWW529UBAy8ryHLHSJ54oxrRGcYz butUYQyNkjSYv/9d/NP1n7+UikEbVeDF0Hmag1AApTtUOyhMNY/DjYVEA5fVsxdGe5YQCS V3w01wv9R2GNkOS0mKygOs9YWE+u/lKgCMo6UBaHACjEdA0hDpClckCmzcUA4g== 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=1772637872; 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: in-reply-to:in-reply-to:references:references; bh=QffafDSnTq7SBsIGhXIGOSsgdhvJV8njBW9XC1BZuSg=; b=WvqSSkHPtJmEWXfsqigLmKFyvd8l5YIw0ZuUkQhnlPbXGu62/O59Og+K12ujt+TyGP4Pwx m3kiM7AguKyZ+43MUAf+GTTmORIuoralyWUz3Zxnko8ikuNcDUjCfP5wTpAdXidXgacljb /Z/+Vp+l6+vJermI0Bp52Qej6vkmPfmxQ6ATw5V5rJDOasDs83gKfvNQcKP/vijtrl96Pa pW+oL5MQPDY+Ct5K26Hd2DT7YENSsu4a9tiYxHqKH+SmCJTBcmt1RLghsdLmkF0c9DR0H3 H19vBbnS3lqqmJWeEiC+FuLbFAypoaHtxHlrps/8eFngkBCWNfhV1GZQZfGCTw== Received: from ltc.des.dev (2a01cb0585090500922e16fffef1acef.ipv6.abo.wanadoo.fr [IPv6:2a01:cb05:8509:500:922e:16ff:fef1:acef]) (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 did not present a certificate) (Authenticated sender: des) by smtp.freebsd.org (Postfix) with ESMTPSA id 4fQxKr4GcPz19Mw; Wed, 04 Mar 2026 15:24:32 +0000 (UTC) (envelope-from des@freebsd.org) Received: by ltc.des.dev (Postfix, from userid 1001) id 33784F74AC; Wed, 04 Mar 2026 16:24:31 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Baptiste Daroussin Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: Re: git: 297d5bf89067 - stable/15 - ncurses: merge update to ncurses 6.6 In-Reply-To: <86ecm8qgt7.fsf@ltc.des.dev> ("Dag-Erling =?utf-8?Q?Sm=C3=B8r?= =?utf-8?Q?grav=22's?= message of "Thu, 26 Feb 2026 05:17:40 +0100") References: <6996cfd3.1c403.1e98d5da@gitrepo.freebsd.org> <86ecm8qgt7.fsf@ltc.des.dev> User-Agent: Gnus/5.13 (Gnus v5.13) Date: Wed, 04 Mar 2026 16:24:31 +0100 Message-ID: <86o6l3mxcg.fsf@ltc.des.dev> 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: quoted-printable Dag-Erling Sm=C3=B8rgrav writes: > Baptiste Daroussin writes: > > +# 20251215: Remove intrinsic utilities > > +OLD_FILES+=3Dusr/bin/alias > > +OLD_FILES+=3Dusr/bin/bg > > +OLD_FILES+=3Dusr/bin/cd > > +OLD_FILES+=3Dusr/bin/fc > > +OLD_FILES+=3Dusr/bin/fg > > +OLD_FILES+=3Dusr/bin/getopts > > +OLD_FILES+=3Dusr/bin/hash > > +OLD_FILES+=3Dusr/bin/jobs > > +OLD_FILES+=3Dusr/bin/read > > +OLD_FILES+=3Dusr/bin/type > > +OLD_FILES+=3Dusr/bin/ulimit > > +OLD_FILES+=3Dusr/bin/umask > > +OLD_FILES+=3Dusr/bin/unalias > > +OLD_FILES+=3Dusr/bin/wait > > + > Please revert this. Are you going to fix this or not? DES --=20 Dag-Erling Sm=C3=B8rgrav - des@FreeBSD.org From nobody Wed Mar 4 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 4fQy5L5fmMz6Tgh7 for ; Wed, 04 Mar 2026 15:58: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 4fQy5L3Lsxz3pj7 for ; Wed, 04 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=1772639926; 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=S0N66TCEXSRFPfA+YM+O64alALGh0SylIEudUWAxfvo=; b=UjZ8yNmvnA/Rr8cuWyOfmBNohrjxy0uQhbOnWbsr7kztW4uQ7Bko8Qai92CI/v++KsjezL TK4v/+CgbsIX5otPV67uCuqUVBzAI/3rQ/QLA86JOKCqxaUjXiUxKxM60NMjhZ7pbX0P1y UWaq24m3nFAEflem5Ki9og5W7/5h6HoFwuwTtkWFFEeNpOnIawUi2WWAH8nd3HVJLJnm0F fIcHrGZX+2XqYuR+/1ALDN0858MEdm4Db6FWYzwqF4Lc2NhWVqFjs6nkmBCnu/RcHgV9iO 5wK53BXwfegyR26i8V/BP+xvhI6gjqrcWQynBl4ro5N7C2f3KC1r3fQDfaf4cA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772639926; a=rsa-sha256; cv=none; b=bri5pPTF4T9fUE1VkXB4MTQiun3C6g6FVou6XesOon+63bFhPUgWuH/PdXS1+XQLCszLy+ 0/S6b3uG7M/HYuuwTara2aRvZpV5goMl15A4JoJsJt0rp062ghKD4NqpHIFIEHf36/HyKJ XPADM2BYXB6XM2/0OAFThP6w+oUKtiUC+RggwEyCsnNOKqHMz5cKSDGjtDjev69GqZRlcl ubGW+Vl3D4Nieri+0h+tiChSKfL3I5kKguGh63mmimMmG/PWfurUWOuCsdUr8ZoldoBPwm eRDkj8Z43WPrdarLmex5Q+IycpaJR/NSYG7C4CHhaNGBTYrzKzak2+9dmTa+rQ== 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=1772639926; 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=S0N66TCEXSRFPfA+YM+O64alALGh0SylIEudUWAxfvo=; b=MDYuvH9Vn5rof6ErBggtm884nP6FsnKLC5iuLrj9ydydm7wmMVz2J6NEfyiQJplnpfdMPZ oMP1HysxipaS5Dhp5lQh9XP87gP7Vg7agDbQd8UE6i521a+gsD1Zq8orAh6j3MAwFiuczC bFBbp/kQh8SwmiHZ9OLoXQ7sC/RSX/kKWFPynMFGsGip3NH+DwxKHD3j3uH7xho8b3jmuB r7a+bUK2ZYz7JxhIJa8GiuqorlLdRFhORxuvJfW45sm0IWsh4P9+yx7dvGRAEAtvoCy2O6 OH1fmrufSbjws/DzLn6P2Ivu/bkK2v53ef5vwcs8ATluC5hNlfJ5tH7dGgalcg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fQy5L2fxvzxsx for ; Wed, 04 Mar 2026 15:58:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 363e1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 15:58:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Mark Johnston From: Ed Maste Subject: git: 119bdea35792 - stable/15 - bhyve: Fix truncate_iov() 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 119bdea35792006cd0cce3c864d5007f092a10c1 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 15:58:41 +0000 Message-Id: <69a856b1.363e1.7a39dc8a@gitrepo.freebsd.org> The branch stable/15 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=119bdea35792006cd0cce3c864d5007f092a10c1 commit 119bdea35792006cd0cce3c864d5007f092a10c1 Author: Mark Johnston AuthorDate: 2026-02-24 15:14:39 +0000 Commit: Ed Maste CommitDate: 2026-03-04 15:58:05 +0000 bhyve: Fix truncate_iov() The implementation was simply wrong. It would always just return the first entry in the iovec, even if the requested length is larger than that first entry. Note, this function will be removed soon, see D53468. Reported by: Vinod p n Reviewed by: des, emaste, Hans Rosenfeld MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D55438 (cherry picked from commit d7d4da91de201841c57a6b8f89b450754b9b8696) --- usr.sbin/bhyve/iov.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/usr.sbin/bhyve/iov.c b/usr.sbin/bhyve/iov.c index 5ebc426227a6..2bad55267ff3 100644 --- a/usr.sbin/bhyve/iov.c +++ b/usr.sbin/bhyve/iov.c @@ -81,19 +81,14 @@ count_iov(const struct iovec *iov, int niov) void truncate_iov(struct iovec *iov, int *niov, size_t length) { - size_t done = 0; int i; - for (i = 0; i < *niov; i++) { - size_t toseek = MIN(length - done, iov[i].iov_len); - done += toseek; - - if (toseek <= iov[i].iov_len) { - iov[i].iov_len = toseek; - *niov = i + 1; - return; - } + for (i = 0; i < *niov && length > 0; i++) { + if (length < iov[i].iov_len) + iov[i].iov_len = length; + length -= iov[i].iov_len; } + *niov = i; } ssize_t From nobody Wed Mar 4 17:57: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 4fR0kK6Wqsz6SqLZ for ; Wed, 04 Mar 2026 17:57: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 4fR0kK5ksyz42Mg for ; Wed, 04 Mar 2026 17:57:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772647049; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DlrRLb/OuRpic+4aTY5utjXK1b19malbPoB4UOsAVe0=; b=qoYXJVJmHIfsuONu1cNvG1x37msTqw66+WKCKgI1RUIz/jUtyYhbbcVWM9vDXMhwszrUsu Neovw489mPtQaGVh91/0ip62Jm8/icbeHrtZl0ppHKtEjXy851Wzd88mjigO/6ZEinExhL NGNsA5YCyllGS2R9l6LwgAyfwmvS2ao6m1K6jN8nyFsKvQewdf8bog11kJ6C/7KLON2dpn DoFo5Pw/D4QXTEyges/IW8fdfxxwfA44zzaXx7x7nOlhJSDahTol/2didQcHi/GpPcCBuJ vYh7WcRXfO9OSLWWpTW0g6s+Swo2fhwWDy8/AFtf89XuRneW6qbaNLnGZQhw7w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772647049; a=rsa-sha256; cv=none; b=EPBrsJ5qYRmFo9CBbSwKVjN9wlolTEnwZUQH2F+u/Yczjgk+6n0Xs8CqJhc8B+1zNFM9Hz J/QxG61bMU5EWqaDRPUhVklp+81oGGmdACVu8mBC5CjOYVXg500ELEybAgO1J7VKrA+My0 c7/Sw7vDN6dGz9dDmNUmV7EKssxYTNQ8eo3NoHmxDT/DS4HkO61SdOagqBo6OQ5fiDR97O T3UsDb8iqCSYBIixFwEl/X8+4ph5ZzEbIo78T0vYUKcDL53qM40QSwXgz9rpVUqESZe6LR mW4WZXDdJsYcYEXn9ZD9mZhWLusqvtkmQIP0JEy1Ggxki70mFC+taNW9uH7lsA== 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=1772647049; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DlrRLb/OuRpic+4aTY5utjXK1b19malbPoB4UOsAVe0=; b=YjLqQnXRSyTVSLyaVnh9jKsdFcCGtHtJx/XZBoSakwG+2CyYwFHZ63gs06HAE7tRUzgIxJ d8IgvOHoVZ89QdicCe5AIS1uqDU8Xg34V15cwgcl3i1bSGXD76spl19sCivXzSu4cNv0Z1 gxTP9kl8lIOv8MYsa5jlP17V7+l6hzb/51ooUQafA6zFXqdDFZuchLFnxMi7l/2+fIMi9E Ih44cc/TPUoajVQx/un5cZPW3C+0/iD2GoAvqrC4Ee4XlIhNFUBOtaBBVABgeTUDFw9Mlg b4gmoKydwbuRohMB1JIy3o2PPFYw22awFL/0Q6896qrvplEYKCf+NAZTseUoWw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fR0kK4rk7z11hm for ; Wed, 04 Mar 2026 17:57:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42ffa by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 04 Mar 2026 17:57:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: 8d5e8dfdc22c - stable/15 - ObsoleteFiles.inc: revert accidental merge 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: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 8d5e8dfdc22c52bc944d80d5a8811373de001517 Auto-Submitted: auto-generated Date: Wed, 04 Mar 2026 17:57:29 +0000 Message-Id: <69a87289.42ffa.25a411ea@gitrepo.freebsd.org> The branch stable/15 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=8d5e8dfdc22c52bc944d80d5a8811373de001517 commit 8d5e8dfdc22c52bc944d80d5a8811373de001517 Author: Baptiste Daroussin AuthorDate: 2026-03-04 17:56:30 +0000 Commit: Baptiste Daroussin CommitDate: 2026-03-04 17:56:30 +0000 ObsoleteFiles.inc: revert accidental merge failure Reported by: des --- ObsoleteFiles.inc | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 3b7907085f9c..4a92f2778d8c 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -75,22 +75,6 @@ OLD_FILES+=usr/lib/libkrb5profile.so # 20251218: Remove old MLINK to apmconf(8) OLD_FILES+=usr/share/man/man8/apmconf.8.gz -# 20251215: Remove intrinsic utilities -OLD_FILES+=usr/bin/alias -OLD_FILES+=usr/bin/bg -OLD_FILES+=usr/bin/cd -OLD_FILES+=usr/bin/fc -OLD_FILES+=usr/bin/fg -OLD_FILES+=usr/bin/getopts -OLD_FILES+=usr/bin/hash -OLD_FILES+=usr/bin/jobs -OLD_FILES+=usr/bin/read -OLD_FILES+=usr/bin/type -OLD_FILES+=usr/bin/ulimit -OLD_FILES+=usr/bin/umask -OLD_FILES+=usr/bin/unalias -OLD_FILES+=usr/bin/wait - # 20251208: Rename iwm8000C to correct name. OLD_FILES+=boot/firmware/iwm8000C From nobody Wed Mar 4 17:59: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 4fR0mb160Jz6SqHJ; Wed, 04 Mar 2026 17:59:27 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (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 "smtp.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fR0mb0cWSz42y1; Wed, 04 Mar 2026 17:59:27 +0000 (UTC) (envelope-from bapt@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772647167; 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: in-reply-to:in-reply-to:references:references; bh=RRrdnBnPHxR3Pj4Et5/4Tmnh5IK4gM7nAeIpPBIPao4=; b=CSpNinpG3DDcLjcCEnJixH+G4tRaA/GEP3S/MoTijBv5jEqw46jNoMWw4P2RsTItBaFMDL qBxUwJUhhszKH8asoxtzUvCd1MB0VY7FatiaXafP0FECgY0l95KUUJfevo7C0EiNre5nLd RdRXKsggm4///qWrTLTepAW/NRcgTKu/dAG6FHzZvhvoYvKk6QC/45Zb+hw7rPBrFVFur/ KCfVjXFfZn5eMdV0mKsobTXkxrglhScpDeUHqvmHxMPo9kv4AOVhaHQatCd74hQyKgNWBj 6dRGVGW76vi1dnj+SnKcs7EP7KCb55yaRwvUAAPj6lRLWe7BH+jDosUM2jEk4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772647167; a=rsa-sha256; cv=none; b=pEgJm1/ze/hUSmlEgH6HfVFFsI0T3NdIxWFbuNDx1ZFol4HvmfWrs8PFCi55VHrBmq2xOC 14M747nfNpLNdiv5SuWZJSzQvG9jEIf60XPu+c/CPSlVxTOz+GKTdouYIl/iy+3VrcBnPw TFs/IAV4f+rs/Qk/H6pAWeeykBmT8ogLbmzeBFeywenl9vX2yeASA6waXxSwCwRa8EzTwj Q1N4zijLqrFO9Yq/vBCj8+FD3NwA6w+4YhJTSJD5lwdh7ZolKC3qSrjWlWwHzurt9U+X36 UCWq25RVgxVN6ca0IZQJiEu5tqBjwRB9FcNfyTqRr75iuoaWnlFPdSNfe31oSQ== 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=1772647167; 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: in-reply-to:in-reply-to:references:references; bh=RRrdnBnPHxR3Pj4Et5/4Tmnh5IK4gM7nAeIpPBIPao4=; b=LlVSdqXAmNT2CF3IRKa9XIqf25dUdgpsVAGhPVqxKjutFOnlIq106wqgmVkoMrTiey83P3 9Pt3nKg+6Rj3FTmlmWMnzaL+g0KfLqluoquzo4lPxsw2mJPr7eCXWOJKZVi60je9UCL0ZO pDYVWg1v0tfer5+2XKvCAnV3QUVc3udujsePtmUh5olkJGWfMzwpv1zzSIzdUfRu+AyPqB xsKNKzJTdJseWwZhUZ0d75Y9gErz/NV4Hc8DEtORn6lFE4rabV6Cq3aYRvKKZBf8a+xq7/ 6FrlMFWI5mWLz0tU/Vs0/OI0QZHHCyu6Y/PauzLmSM9DEfhInXHpnumjOqA/xQ== Received: from b.nours.eu (b.nours.eu [IPv6:2001:41d0:303:5e39::1]) (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 did not present a certificate) (Authenticated sender: bapt) by smtp.freebsd.org (Postfix) with ESMTPSA id 4fR0mZ6bSWz1DKP; Wed, 04 Mar 2026 17:59:26 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: by b.nours.eu (Postfix, from userid 1001) id BFB58B7B5C; Wed, 04 Mar 2026 18:59:23 +0100 (CET) Date: Wed, 4 Mar 2026 18:59:23 +0100 From: Baptiste Daroussin To: Dag-Erling =?utf-8?B?U23DuHJncmF2?= Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: Re: git: 297d5bf89067 - stable/15 - ncurses: merge update to ncurses 6.6 Message-ID: References: <6996cfd3.1c403.1e98d5da@gitrepo.freebsd.org> <86ecm8qgt7.fsf@ltc.des.dev> <86o6l3mxcg.fsf@ltc.des.dev> 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=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <86o6l3mxcg.fsf@ltc.des.dev> On Wed 04 Mar 16:24, Dag-Erling Smrgrav wrote: > Dag-Erling Smrgrav writes: > > Baptiste Daroussin writes: > > > +# 20251215: Remove intrinsic utilities > > > +OLD_FILES+=usr/bin/alias > > > +OLD_FILES+=usr/bin/bg > > > +OLD_FILES+=usr/bin/cd > > > +OLD_FILES+=usr/bin/fc > > > +OLD_FILES+=usr/bin/fg > > > +OLD_FILES+=usr/bin/getopts > > > +OLD_FILES+=usr/bin/hash > > > +OLD_FILES+=usr/bin/jobs > > > +OLD_FILES+=usr/bin/read > > > +OLD_FILES+=usr/bin/type > > > +OLD_FILES+=usr/bin/ulimit > > > +OLD_FILES+=usr/bin/umask > > > +OLD_FILES+=usr/bin/unalias > > > +OLD_FILES+=usr/bin/wait > > > + > > Please revert this. > > Are you going to fix this or not? > Done, sorry I missed your previous email, I was afk last week. Best regards, Bapt From nobody Thu Mar 5 01:36: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 4fRBvg2HGnz6TNWx for ; Thu, 05 Mar 2026 01:36: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 4fRBvg21T0z3wKs for ; Thu, 05 Mar 2026 01:36:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772674575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/ErKuLkkYMJpEvYNG4yISCRmnOg5mfU4odjiCDDa5JM=; b=CFqtB8vM5kC07gQGTQbk804bE025H6wfUErPDmRxdhaR+Dwjf0i7mB54wW3mdTWW39Me61 8r5ZMyzi4ufrfQ9k4Qg46i0bXC+7t+c9oIAUZMQdLT70pMb0s2PCiRmjuEV100MaalOoiA QGzvk3X0kvE9xFbOHWRI3h4n9xxdVzMfLmakPKaUFeyFjAL0HMij2e5td16TACi5L9HYVX d9foFeeDkz31Caq5CuI/5CM8MoKgZyn3TeNmfkbW253CaPEnspD9SWsaHevO81Q7QH/kNA 7T/lMRrFNR0HNunnVEDdg9hFGYOLCzyQvz6dPW8s8CfrjrFGiSGrYieW2cSXDw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772674575; a=rsa-sha256; cv=none; b=QnOzWW9aqTuf/aAp0C9fgZ9tmRzCK7jlL8EEqiLhrVC8XIeY+0z5XPxXdOW6mraUlRZutI L8b+3G+6sQUyV/HsIgJKaJsQd2lksQ1hrzV9HOtez3hM71P6gTrcvKb8JoJdqtgBJSdauA FpiZ17+BhoGMkUSM4ZJftmxJtnfO0XSOEGHwWuo29DRF4IsXf+sRvCPlv7fGaHrT29M8EQ uWM3740WHlfqRRaSgjZL56gn3V5edhA9aHXczbwbCOwpUoko2k4hSYXk0n88/80qrAbmvN ulxbu8BJdLjBufif6t5G74rg4HYzqeDEJx5BH7Tfaq4T5R8Vh8OqWSRrMK2/Cw== 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=1772674575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/ErKuLkkYMJpEvYNG4yISCRmnOg5mfU4odjiCDDa5JM=; b=NnfOHTDJlGgl9n2OGbRKVnkfZ0APwp8uHKdk1+qtr5bYpYYNJICbOXHm7Gc+I01i1kZ+mx zbGwfIEmYnMNoLqBcLkhmZ+OrnzvianCkmQxkhodppWLz7Lia+MVZWefJg4SMuFf1//opB T4ZMm+m7b23yf816KtvCFcWWh2g5zf9JUwmHdYmD1hhHCnEmBvTGibqE9YieahvrLQTbkF pXznXcq24b7mxbczCE3m8OYyKVBnSFH98FhYGVdwC+Ozlz8KbG/b2KZ4pZw8ZU+JtPNr7r cGa77bFvDXXv1f1Q4ArF5x0VH5CwqELd65tcAq++GNCMEfrhVHdyvT91wfyygQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fRBvg1c90z1Bb for ; Thu, 05 Mar 2026 01:36:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 241e8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 05 Mar 2026 01:36:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 564480f108e7 - stable/15 - contrib/tzdata: import tzdata 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: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 564480f108e7019a8cc8443c615f7d2b5edfb092 Auto-Submitted: auto-generated Date: Thu, 05 Mar 2026 01:36:15 +0000 Message-Id: <69a8de0f.241e8.42e56abe@gitrepo.freebsd.org> The branch stable/15 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=564480f108e7019a8cc8443c615f7d2b5edfb092 commit 564480f108e7019a8cc8443c615f7d2b5edfb092 Author: Philip Paeps AuthorDate: 2026-03-02 20:34:06 +0000 Commit: Philip Paeps CommitDate: 2026-03-05 01:31:30 +0000 contrib/tzdata: import tzdata 2026a Changes: https://github.com/eggert/tz/blob/2026a/NEWS (cherry picked from commit 6becc3dff922476d667c15f029e520da496d4295) --- contrib/tzdata/Makefile | 48 +++++++------------ contrib/tzdata/NEWS | 99 +++++++++++++++++++++++++++++++++++++++- contrib/tzdata/backzone | 5 +- contrib/tzdata/etcetera | 3 +- contrib/tzdata/europe | 74 +++++++++++++++++++++++++++--- contrib/tzdata/leap-seconds.list | 8 ++-- contrib/tzdata/leapseconds | 8 ++-- contrib/tzdata/theory.html | 22 +++++---- contrib/tzdata/version | 2 +- contrib/tzdata/zonenow.tab | 3 -- 10 files changed, 207 insertions(+), 65 deletions(-) diff --git a/contrib/tzdata/Makefile b/contrib/tzdata/Makefile index bb7cb1014f73..1e0a5903534d 100644 --- a/contrib/tzdata/Makefile +++ b/contrib/tzdata/Makefile @@ -66,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. # @@ -170,7 +148,7 @@ TIME_T_ALTERNATIVES_TAIL = int_least32_t.ck uint_least32_t.ck \ # 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. @@ -284,7 +262,10 @@ LDLIBS= # -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 member st_ctim+ +# -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* @@ -322,13 +303,13 @@ LDLIBS= # 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 intead of mutexes. -# This can improve paralellism and thus save real time +# -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 unportable programs that call +# 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, @@ -347,10 +328,13 @@ LDLIBS= # -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. @@ -400,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 @@ -723,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)/.' diff --git a/contrib/tzdata/NEWS b/contrib/tzdata/NEWS index eef59a2b095b..acd22280cb3a 100644 --- a/contrib/tzdata/NEWS +++ b/contrib/tzdata/NEWS @@ -1,5 +1,100 @@ 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: @@ -69,6 +164,8 @@ Release 2025c - 2025-12-10 14:42:37 -0800 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 @@ -89,7 +186,7 @@ Release 2025c - 2025-12-10 14:42:37 -0800 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 unportable + 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 diff --git a/contrib/tzdata/backzone b/contrib/tzdata/backzone index 3c7e720ab4e7..b7fd57bfaea3 100644 --- a/contrib/tzdata/backzone +++ b/contrib/tzdata/backzone @@ -1757,13 +1757,12 @@ Zone Pacific/Majuro 11:24:48 - LMT 1901 # Midway # # From Mark Brader (2005-01-23): -# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies, -# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3] +# [] # reproduced a Pan American Airways timetable from 1936, for their weekly # "Orient Express" flights between San Francisco and Manila, and connecting # flights to Chicago and the US East Coast. As it uses some time zone # designations that I've never seen before:.... -# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun. +# Fri. 6:30A Lv. HONOLULU (Pearl Harbor), H.I. . H.L.T. Ar. 5:30P Sun. # " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A " # Zone Pacific/Midway -11:49:28 - LMT 1901 diff --git a/contrib/tzdata/etcetera b/contrib/tzdata/etcetera index 948531c8d862..d78f04133c36 100644 --- a/contrib/tzdata/etcetera +++ b/contrib/tzdata/etcetera @@ -20,7 +20,8 @@ # which load the "UTC" file to handle seconds properly. Zone Etc/UTC 0 - UTC -# Functions like gmtime load the "GMT" file to handle leap seconds properly. +# If leap second support is enabled, functions like gmtime +# load the "GMT" file to handle leap seconds properly. # Vanguard section, which works with most .zi parsers. #Zone GMT 0 - GMT # Rearguard section, for TZUpdater 2.3.2 and earlier. diff --git a/contrib/tzdata/europe b/contrib/tzdata/europe index af5217103845..4127ec9dcf13 100644 --- a/contrib/tzdata/europe +++ b/contrib/tzdata/europe @@ -1041,9 +1041,19 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn # Greenland # -# From Paul Eggert (2004-10-31): +# From Paul Eggert (2026-01-22): +# During World War II, Greenland was effectively independent of Denmark and +# observed daylight saving time. TIME, volume 37, page 23 (1941-04-21) +# says, +# "Penfield and West made their way to the U.S.'s most northerly consulate. +# They were astonished to find that Greenlanders, with almost 24 hours of +# sunlight a day during the summer, have daylight saving time." +# As the details are unknown they are omitted from the data for now. +# # During World War II, Germany maintained secret manned weather stations in # East Greenland and Franz Josef Land, but we don't know their time zones. +# Also, they're likely out of scope for the database +# as we lack resources to track every bit of military activity. # My source for this is Wilhelm Dege's book mentioned under Svalbard. # # From Paul Eggert (2017-12-10): @@ -1957,7 +1967,6 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta # From Stepan Golosunov (2016-03-07): # the act of the government of the Republic of Moldova Nr. 132 from 1990-05-04 -# http://lex.justice.md/viewdoc.php?action=view&view=doc&id=298782&lang=2 # ... says that since 1990-05-06 on the territory of the Moldavian SSR # time would be calculated as the standard time of the second time belt # plus one hour of the "summer" time. To implement that clocks would be @@ -2012,9 +2021,61 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta # says the 2014-03-30 spring-forward transition was at 02:00 local time. # Guess that since 1997 Moldova has switched one hour before the EU. +# From Heitor David Pinto (2026-02-22): +# Soviet Moldovan resolution 132 of 1990 defined the summer time period from +# the last Sunday in March at 2:00 to the last Sunday in September at 3:00, +# matching the dates used in most of Europe at the time: +# https://web.archive.org/web/20211107050832/http://lex.justice.md/viewdoc.php?action=view&view=doc&id=298782&lang=1 +# +# It seems that in 1996 Moldova changed the end date to October like most of +# Europe, but kept the transitions at 2:00 and 3:00 rather than 1:00 UTC, +# which would have been locally 3:00 and 4:00.... +# +# The notices in the Moldovan government website and broadcaster showed the +# transitions at 2:00 and 3:00 until 2021: +# 2015 https://old.gov.md/en/node/7304 +# 2016 https://old.gov.md/en/node/12587 +# 2017 https://old.gov.md/en/node/20654 +# 2017 https://old.gov.md/en/content/moldova-upholds-winter-time-night-28-29-october +# 2018 https://old.gov.md/en/content/moldova-switch-summer-time +# 2018 https://old.gov.md/en/content/cabinet-ministers-informs-about-switch-winter-time-28-october +# 2019 https://old.gov.md/en/content/moldova-switch-summer-time-31-march +# 2019 https://old.gov.md/en/node/31122 +# 2020 https://old.gov.md/en/node/32771 +# 2020 https://old.gov.md/en/node/34497 +# 2021 https://trm.md/ro/social/moldova-trece-in-aceasta-noapte-la-ora-de-vara +# 2021 https://trm.md/en/social/republica-moldova-trece-la-ora-de-iarna1 +# +# However, since 2022, the notices showed the transitions at 3:00 and 4:00, +# matching the EU rule at 1:00 UTC: +# 2022 https://trm.md/en/social/in-acest-weekend-republica-moldova-trece-la-ora-de-vara +# 2022 https://old.gov.md/en/content/moldova-switch-winter-time +# 2023 https://moldova1.md/p/6587/ora-de-vara-2023-cum-schimbam-acele-ceasornicelor-si-cand-trecem-la-ora-de-vara +# 2023 https://old.gov.md/en/node/46662 +# 2024 https://moldova1.md/p/26535/republica-moldova-trece-la-ora-de-vara-in-acest-weekend +# 2024 https://moldova1.md/p/37768/republica-moldova-trece-in-aceasta-noapte-la-ora-de-iarna +# 2025 https://moldova1.md/p/46349/republica-moldova-trece-la-ora-de-vara-pe-30-martie-cum-ne-afecteaza-si-ce-recomanda-medicii +# 2025 https://moldova1.md/p/60469/republica-moldova-trece-la-ora-de-iarna-ceasurile-se-dau-inapoi-cu-o-ora +# +# It seems that the changes to the end date and transition times were just +# done in practice without formally changing the resolution. In late 2025, the +# government said that the Soviet resolution was still in force, and proposed +# a new resolution to replace it and formally establish the EU rule: +# ... based on the notices, it seems that in practice Moldova already +# uses the EU rule since 2022. This was also the year when Moldova applied to +# join the EU. +# +# From Robert Bastian (2026-02-26): +# This has been approved and published in the government gazette: +# https://monitorul.gov.md/ro/monitorul/view/pdf/3234/part/2#page=27 +# +# From Paul Eggert (2026-02-24): +# Also see Svetlana Rudenko, "Moldova abandons the 'Soviet era'", Logos Press, +# 2026-02-21 . + # Rule NAME FROM TO - IN ON AT SAVE LETTER/S -Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S -Rule Moldova 1997 max - Oct lastSun 3:00 0 - +Rule Moldova 1997 2021 - Mar lastSun 2:00 1:00 S +Rule Moldova 1997 2021 - Oct lastSun 3:00 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] Zone Europe/Chisinau 1:55:20 - LMT 1880 @@ -2027,7 +2088,8 @@ Zone Europe/Chisinau 1:55:20 - LMT 1880 2:00 Russia EE%sT 1992 2:00 E-Eur EE%sT 1997 # See Romania commentary for the guessed 1997 transition to EU rules. - 2:00 Moldova EE%sT + 2:00 Moldova EE%sT 2022 + 2:00 EU EE%sT # Poland @@ -2413,7 +2475,7 @@ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal # Nine O'clock # (1998-10-23) reports that the switch occurred at # 04:00 local time in fall 1998. For lack of better info, -# assume that Romania and Moldova switched to EU rules in 1997, +# assume that Romania switched to EU rules in 1997, # the same year as Bulgaria. # # Rule NAME FROM TO - IN ON AT SAVE LETTER/S diff --git a/contrib/tzdata/leap-seconds.list b/contrib/tzdata/leap-seconds.list index 649a22c6278f..0a111845eae4 100644 --- a/contrib/tzdata/leap-seconds.list +++ b/contrib/tzdata/leap-seconds.list @@ -60,15 +60,15 @@ # # The following line shows the last update of this file in NTP timestamp: # -#$ 3960835200 +#$ 3976686858 # # 2) Expiration date of the file given on a semi-annual basis: last June or last December # -# File expires on 28 June 2026 +# File expires on 28 December 2026 # # Expire date in NTP timestamp: # -#@ 3991593600 +#@ 4007404800 # # # LIST OF LEAP SECONDS @@ -117,4 +117,4 @@ # please see the readme file in the 'source' directory : # https://hpiers.obspm.fr/iers/bul/bulc/ntp/sources/README # -#h 49db2447 571e5e1b 2f002a53 9c8da8e4 39b8e49e +#h 2e101270 4e6749f8 2f1792b7 14a0c188 36bb19d6 diff --git a/contrib/tzdata/leapseconds b/contrib/tzdata/leapseconds index 2a42c83efe16..a796e4b4e22e 100644 --- a/contrib/tzdata/leapseconds +++ b/contrib/tzdata/leapseconds @@ -70,7 +70,7 @@ Leap 2016 Dec 31 23:59:60 + S # Any additional leap seconds will come after this. # This Expires line is commented out for now, # so that pre-2020a zic implementations do not reject this file. -#Expires 2026 Jun 28 00:00:00 +#Expires 2026 Dec 28 00:00:00 # Here are POSIX timestamps for the data in this file. # "#updated" gives the last time the leap seconds data changed @@ -79,8 +79,8 @@ Leap 2016 Dec 31 23:59:60 + S # "#expires" gives the first time this file might be wrong; # if this file was derived from the IERS leap-seconds.list, # this is typically a bit less than one year after "updated". -#updated 1751846400 (2025-07-07 00:00:00 UTC) -#expires 1782604800 (2026-06-28 00:00:00 UTC) +#updated 1767698058 (2026-01-06 11:14:18 UTC) +#expires 1798416000 (2026-12-28 00:00:00 UTC) # Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat) -# File expires on 28 June 2026 +# File expires on 28 December 2026 diff --git a/contrib/tzdata/theory.html b/contrib/tzdata/theory.html index 6e52a929d335..12f4f7f4b439 100644 --- a/contrib/tzdata/theory.html +++ b/contrib/tzdata/theory.html @@ -3,14 +3,16 @@ Theory and pragmatics of the tz code and data +

Theory and pragmatics of the tz code and data

-

Outline