From nobody Mon Aug 4 01:59:28 2025 X-Original-To: dev-commits-src-main@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 4bwKVm3PW5z63PMH; Mon, 04 Aug 2025 01:59:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwKVm2d3Xz3LYB; Mon, 04 Aug 2025 01:59:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754272768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ql7bmWUeLezOHTVVFPimknnbcc2LnskAHUukd4epDWw=; b=Rs/F5A48+bJZDirKDwbxyjVHLu7SzT0FghEMPulvHBKO+9Qx7iwXkmy+3TBiGq4cvRuPDU tF+6QuGk7o8XeqtZ8tFAcjcT6p3DcDb9SFu4bFpFzPujPlepTjinx1Q74qATdIpFRJ1usd 3tQ/E0qFqv9Ka6/3vQx9pWxbF0Sc+NKkHJZkvzjUQwSZGwHv//eWX3BlAqnAoQg62450Y4 XkqYwUpkH+8u4Vc/IUEg/z6IaiuXk5BTdnwJ1RATIYF2q8wkyqQi9kBd3lGVLEQgXrOeCL UsGA+E2Gqb5h2Oxc/D2no9hvqlu01d75rwLrrGJMkqqDjZrjRgmJ56NpE52MNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754272768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ql7bmWUeLezOHTVVFPimknnbcc2LnskAHUukd4epDWw=; b=arOIxP7/bQK/juHtgM3VB5kOOM9IRnpqYAd1SFyS8slKSyLNIj95gwtsyMJtcbMEF5PWsj CsQuDBgrOSlVDZy9m6mePG/Jlua9HJNoS+Kf3/Y1yxykzNiYYs+KHPyxgmbKO8vQGsmvLv rTHntR1GRJvFBc8kWTvX7X+22tuZs9cfOFYa1I5mSkxm1m8NSV815vtL/dXWx2QQQlNz/6 L16g3EHCLh09tx+QhScP8i+SutTzTGmiagRlvFO06gehUn86J76sQNXOyJnXIYqwq5UKop 4TD73hkpODcbsXVkjy3OOMXKV8AfMt22aJ+UMjoQ/eLudslmnBX+jO/usz2VHg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754272768; a=rsa-sha256; cv=none; b=Zn/o3AY+IFHrHxFnWpqKA61GWavHVFTJ1LMrhdG5PpOif0qwZemwjyV/MQTKp4/2VGwEt2 0oKOk+Z5MTcqWZBdtWkb74W2fu3ceC7dAHKw3TB3hs5cyY7T3gJeltFmXumJE/Nb+SQmLF zhy826zHIgO/iveyAy2guSq40CR3eA6IT2k4PnZuBy5G3wXJGKZTnCAdmlm44RBd1qpEG7 HazYVlSrmYYnfxBK/XTgUo4IjujP6Kx0RVjFkFFZfo9IpiapJkI3HNiBOXc4UNNPWCKG66 /4r2+o52sCvJyg+4tjxg+hzYYt0jt3W8YrjfGWoNOyzSv7OIX7qcLaBD+FD8iQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwKVm24Q7zDLk; Mon, 04 Aug 2025 01:59:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5741xSLj080702; Mon, 4 Aug 2025 01:59:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5741xSYs080699; Mon, 4 Aug 2025 01:59:28 GMT (envelope-from git) Date: Mon, 4 Aug 2025 01:59:28 GMT Message-Id: <202508040159.5741xSYs080699@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 04764f21855a - main - krb5: only apply -Wno-alloc-size-larger-than to gcc List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04764f21855a3a3bac3e3bbe4bc2778d0a6ae53e Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=04764f21855a3a3bac3e3bbe4bc2778d0a6ae53e commit 04764f21855a3a3bac3e3bbe4bc2778d0a6ae53e Author: Lexi Winter AuthorDate: 2025-08-04 01:59:04 +0000 Commit: Lexi Winter CommitDate: 2025-08-04 01:59:04 +0000 krb5: only apply -Wno-alloc-size-larger-than to gcc Otherwise, this breaks the clang build. --- krb5/lib/kadm5srv/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/krb5/lib/kadm5srv/Makefile b/krb5/lib/kadm5srv/Makefile index 6e66fd433f52..a8f7f489d2be 100644 --- a/krb5/lib/kadm5srv/Makefile +++ b/krb5/lib/kadm5srv/Makefile @@ -46,7 +46,7 @@ CFLAGS+=-I${KRB5_DIR}/lib \ -I${KRB5_OBJTOP}/lib/gssapi \ -I${KRB5_DIR}/lib/gssapi/krb5 \ -I${KRB5_DIR}/lib/gssapi/generic -CWARNFLAGS+=-Wno-alloc-size-larger-than +CWARNFLAGS.gcc+=-Wno-alloc-size-larger-than HDRDIR= ${KRB5_OBJHDR}/kadm5 HDRS= ${HDRDIR}/admin.h \ From nobody Mon Aug 4 03:45:04 2025 X-Original-To: dev-commits-src-main@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 4bwMrd0n9Mz63VhH; Mon, 04 Aug 2025 03:45:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwMrc75dSz3TMc; Mon, 04 Aug 2025 03:45:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754279105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KMikWwkYHiLARbqc/R17r2V4qTlyOP7Dm2SjcCmvRQ8=; b=xktG31tGeUzN9fZeXwG2AU6rh6ox6Y6utWWtM0WTUfnVqSMwZy6CJsVp5wj9fZ0i+icIMG tTn9P6r8z/yhiW0PQ4vj9NV19x0qEiGCaGf6wW2VRbsulmmmJ/6qvg58TL1Pnbml2cY35W P+D6USDi7b4urAq566wzpdxRDauRWb5pyqYT2M7jVCSSgdUNkgZ3XnUKcyXA+ZH6NiUtUa 8k3HnpFaSy+KNCUoi/oMGRFSud8tbZd5+REkEC76PTzPgW4TlnR/0IWzONuj98ZA30C5fX YYPjhsGETgcMmF/CuldOecic+b+FgbeCR3R9uHjtgHq9LeVgAtAZjh9NgXWPrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754279105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KMikWwkYHiLARbqc/R17r2V4qTlyOP7Dm2SjcCmvRQ8=; b=S6uYMRq4kPPAs0U7zhoq+gQIVTZUINXTPceRw1YYqWZoTR+snoaysa/wosJfUMBx6aAzAy 8v+RzcbuN53kUs4Hv7MLZh5vJ06/zIcvvgoIFppV2JfsP7Deo4a7rxwIrfO7FGhatJeqza 2nzHBB2KShaQ2uI5pSrKSMAQAiJtcH3gDAE7fYBGoqR6c7zSevLzplLGBPJ9ut3zMVCGBj H1vochLgHxROIaFlRdQLI1tuzK5bCCriRSkDZiTnmdYt36eHc0N6/jA5G9Y8mhGEYDZMX7 NYAnljH+eowkEe+O1qKfMS1Q0cN7B0lP7OiHrMa296UYE25Oabozlaw56QCIZw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754279105; a=rsa-sha256; cv=none; b=WCnn3kHSBM927HDBtZbVuzgcpTBgHZa6J9eeJlZ2JBj24Mhcsn867pZMrRrhOj9kKS8Q7Y Nf+Jc6MTIVkQP8o+iQLKsQodlQHupoqX5+O44AsD6KPZz4Jg6Dks1fD80ZBf0pZvUIEN9E 6SL4kjVvK67otfUACa/8U+J4xqicFjGhsAJEbdRgan4qWYL/b2n2Ljpq6q7pmgZL6u5nhM xgOgPB+Lpq7ZtXfSYaZkaAeFV02c8wzdDtqY4bFeNQOSpTx6to4jI3Gt80wLZUeOWCtHqi xmylruujawXyZGaAobQMnu7XqIX9NZHU0BmDaojAYXD85z+iqf+AGOEqcC/WLw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwMrc6ZxyzYpp; Mon, 04 Aug 2025 03:45:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5743j4gx087815; Mon, 4 Aug 2025 03:45:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5743j40Q087812; Mon, 4 Aug 2025 03:45:04 GMT (envelope-from git) Date: Mon, 4 Aug 2025 03:45:04 GMT Message-Id: <202508040345.5743j40Q087812@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Romain =?utf-8?Q?Tarti=C3=A8re?= Subject: git: f90940ce6eb7 - main - vm_page: Fix handling of empty bad memory addresses file List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: romain X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f90940ce6eb71df40538c35a65d77ad3093c679a Auto-Submitted: auto-generated The branch main has been updated by romain: URL: https://cgit.FreeBSD.org/src/commit/?id=f90940ce6eb71df40538c35a65d77ad3093c679a commit f90940ce6eb71df40538c35a65d77ad3093c679a Author: Romain Tartière AuthorDate: 2025-08-03 05:42:23 +0000 Commit: Romain Tartière CommitDate: 2025-08-04 03:40:24 +0000 vm_page: Fix handling of empty bad memory addresses file If a file with bad memory addresses is configured but that file is empty (0 lines, 0 bytes), when loading it we end up returning an end pointer that is just _before_ the start of the (empty) file content. Adjust the code to make it clear what pre-condition are required to set the *list / *end pointers correctly, and explicitly set them to NULL when they are not matched. Reported by: marklmi@yahoo.com Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D51717 --- sys/vm/vm_page.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index b239a6ffb4ce..d3772af3c284 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -394,11 +394,15 @@ vm_page_blacklist_load(char **list, char **end) ptr = preload_fetch_addr(mod); len = preload_fetch_size(mod); } - *list = ptr; - if (ptr != NULL) + + if (ptr != NULL && len > 0) { + *list = ptr; *end = ptr + len - 1; - else + } else { + *list = NULL; *end = NULL; + } + return; } From nobody Mon Aug 4 08:12:02 2025 X-Original-To: dev-commits-src-main@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 4bwTmf4L0nz63lPG; Mon, 04 Aug 2025 08:12:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwTmf3S9bz3tb3; Mon, 04 Aug 2025 08:12:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G8Oc0M/AWNFzsRFx+I10y8vNJ5+Mu05FL0adWvUO7Ck=; b=nWl7Yc9NaqABoGdy0u7qt8yaA+NknKKgLIi4qmyMLxpW2JPozStVjcFGcY9epCJliugwfP DsKF+PdPtybrUr9MSnT1NPtMVzPgt9dhcYwT99EGd1uUlWEV8QnvTKti62JvEEPHfR/XCK an5AXTg+rjbt7edGwg+eITvQl0YmpPThZwuIXE+gHFWZMjVgCSLb2bsmXT5i/s0bjRAHHl x39Cz5/9/Pw+6A4lwP+4RwH4qJtSUWJqNfYcq45mh7sBIaCXCTFy6ED1BM9t3pdlmEi8m4 r0bv5BpdJdntEKEzHZrztAraMoPCAPb5au9rxNvZ09hRLXesdAMXGdte2Ud8HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G8Oc0M/AWNFzsRFx+I10y8vNJ5+Mu05FL0adWvUO7Ck=; b=sjILBUbBqCJOWlWqV854OKBw6esASRwI2BrKJtgwHIhXU4efIAfnpYcYSNh8nBy0c65diu +thItLnpTSU6j6sYSkKhdLD/lAIvhUgACnPKMio4cIcWt9qjnsvwj2oqdZNqSJTrHwg5UU Fw7bduxXA4GmuvOlFiYorQ1MdRo97pENfqzI/iUaSuUyuPSQq7on9YAfnTs7s8t3tTtSfh WXV3pOCgF2Z1S/8cNxo5cYYRB919955hpI9omCn6Er4EE7ZQz4w6fbDVFxFZ+rINH12gLb RQXIDo9W0wy1fnYI/xH3NtOMXCbdk5ZZBtKauJPqnAuk7g8hvZ3QRNgM243cxg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754295122; a=rsa-sha256; cv=none; b=hu0ePm7S/4BmCyGF6eDkrFua7gxvbcvCLdpR7UG+btYb64r4XvPERQ5angMCQnrmzOOXoq XpyfCn6EgV0xb/DnPL+doLcnS+HSu/MgTbHh8Ftkot8hO8XNRqwTv+MUEB5WAqmkdhzoO7 zujn2cdgf1DxTf65pBbFO+pFhS9RnRAd9N4jLiSzH7nEZ6gUEPQOcz9+GDz38E4QxZevCM OCu7GurUjt4Ipw4muEqLy4UoUQlIGbyn3f9EffC+VOX6NGiEiEV+1ur+m0wOjomcKw5DZl t1N3IGKJQ2T1mWVWpd7X+0/checMNrSTNSLXuEaqpJb/69YkE3sBMBHLttnIfg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwTmf2ym6zhKc; Mon, 04 Aug 2025 08:12:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5748C2xx093700; Mon, 4 Aug 2025 08:12:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5748C2it093697; Mon, 4 Aug 2025 08:12:02 GMT (envelope-from git) Date: Mon, 4 Aug 2025 08:12:02 GMT Message-Id: <202508040812.5748C2it093697@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 349360b17eab - main - pf: return errors from pf_route() and pf_route6() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 349360b17eaba47be3d4e7a452e28e70a133b807 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=349360b17eaba47be3d4e7a452e28e70a133b807 commit 349360b17eaba47be3d4e7a452e28e70a133b807 Author: Kristof Provost AuthorDate: 2025-07-28 16:00:50 +0000 Commit: Kristof Provost CommitDate: 2025-08-04 06:08:31 +0000 pf: return errors from pf_route() and pf_route6() If we fail to route the packet in pf_route()/pf_route6() (e.g. because it hit the TTL limit) we free the mbuf. If that packet is an SCTP packet that establishes extra (i.e. multihome) states we have a queued job to handle that. These jobs reference the now freed mbuf. Pass the error from pf_route()/pf_route6() on, so that pf_sctp_multihome_delayed() doesn't attempt to use the invalid mbuf pointer (or establishes states for a packet we're not passing). PR: 288274 Reported by: Robert Morris Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D51627 --- sys/netpfil/pf/pf.c | 66 ++++++++++++++++++++++++++++++------------- tests/sys/netpfil/pf/nat64.py | 28 ++++++++++++++++++ 2 files changed, 75 insertions(+), 19 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index f6ee02626624..4801b3e2c766 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -409,14 +409,14 @@ static void pf_mtag_free(struct m_tag *); static void pf_packet_rework_nat(struct pf_pdesc *, int, struct pf_state_key *); #ifdef INET -static void pf_route(struct pf_krule *, +static int pf_route(struct pf_krule *, struct ifnet *, struct pf_kstate *, struct pf_pdesc *, struct inpcb *); #endif /* INET */ #ifdef INET6 static void pf_change_a6(struct pf_addr *, u_int16_t *, struct pf_addr *, u_int8_t); -static void pf_route6(struct pf_krule *, +static int pf_route6(struct pf_krule *, struct ifnet *, struct pf_kstate *, struct pf_pdesc *, struct inpcb *); #endif /* INET6 */ @@ -8914,7 +8914,7 @@ pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kkif *kif, } #ifdef INET -static void +static int pf_route(struct pf_krule *r, struct ifnet *oifp, struct pf_kstate *s, struct pf_pdesc *pd, struct inpcb *inp) { @@ -8929,6 +8929,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, uint16_t tmp; int r_dir; bool skip_test = false; + int action = PF_PASS; KASSERT(pd->m && r && oifp, ("%s: invalid parameters", __func__)); @@ -8950,6 +8951,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, m0 = pd->m; pd->m = NULL; SDT_PROBE1(pf, ip, route_to, drop, __LINE__); + action = PF_DROP; goto bad_locked; } @@ -8963,11 +8965,12 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, } if (ifp == oifp) { /* When the 2nd interface is not skipped */ - return; + return (action); } else { m0 = pd->m; pd->m = NULL; SDT_PROBE1(pf, ip, route_to, drop, __LINE__); + action = PF_DROP; goto bad; } } else { @@ -8975,7 +8978,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, if (((m0 = m_dup(pd->m, M_NOWAIT)) == NULL)) { if (s) PF_STATE_UNLOCK(s); - return; + return (action); } } } else { @@ -8984,7 +8987,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, pf_dummynet(pd, s, r, &pd->m); if (s) PF_STATE_UNLOCK(s); - return; + return (action); } else { if (r_dir == PF_IN) { skip_test = true; @@ -9024,6 +9027,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, pf_send_icmp(m0, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0, pd->af, r, pd->act.rtableid); + action = PF_DROP; goto bad_locked; } ip->ip_ttl -= IPTTLDEC; @@ -9070,6 +9074,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, if (ifp == NULL) { m0 = pd->m; pd->m = NULL; + action = PF_DROP; SDT_PROBE1(pf, ip, route_to, drop, __LINE__); goto bad; } @@ -9080,9 +9085,11 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, if (pd->dir == PF_IN && !skip_test) { if (pf_test(AF_INET, PF_OUT, PFIL_FWD, ifp, &m0, inp, &pd->act) != PF_PASS) { + action = PF_DROP; SDT_PROBE1(pf, ip, route_to, drop, __LINE__); goto bad; } else if (m0 == NULL) { + action = PF_DROP; SDT_PROBE1(pf, ip, route_to, drop, __LINE__); goto done; } @@ -9090,6 +9097,7 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, DPFPRINTF(PF_DEBUG_URGENT, "%s: m0->m_len < sizeof(struct ip)", __func__); SDT_PROBE1(pf, ip, route_to, drop, __LINE__); + action = PF_DROP; goto bad; } ip = mtod(m0, struct ip *); @@ -9171,12 +9179,14 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, ifp->if_mtu, pd->af, r, pd->act.rtableid); } SDT_PROBE1(pf, ip, route_to, drop, __LINE__); + action = PF_DROP; goto bad; } error = ip_fragment(ip, &m0, ifp->if_mtu, ifp->if_hwassist); if (error) { SDT_PROBE1(pf, ip, route_to, drop, __LINE__); + action = PF_DROP; goto bad; } @@ -9203,7 +9213,9 @@ pf_route(struct pf_krule *r, struct ifnet *oifp, done: if (pd->act.rt != PF_DUPTO) pd->m = NULL; - return; + else + action = PF_PASS; + return (action); bad_locked: if (s) @@ -9215,7 +9227,7 @@ bad: #endif /* INET */ #ifdef INET6 -static void +static int pf_route6(struct pf_krule *r, struct ifnet *oifp, struct pf_kstate *s, struct pf_pdesc *pd, struct inpcb *inp) { @@ -9226,6 +9238,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, struct ifnet *ifp = NULL; int r_dir; bool skip_test = false; + int action = PF_PASS; KASSERT(pd->m && r && oifp, ("%s: invalid parameters", __func__)); @@ -9246,6 +9259,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, pd->pf_mtag->routed++ > 3) { m0 = pd->m; pd->m = NULL; + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad_locked; } @@ -9260,10 +9274,11 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, } if (ifp == oifp) { /* When the 2nd interface is not skipped */ - return; + return (action); } else { m0 = pd->m; pd->m = NULL; + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad; } @@ -9272,7 +9287,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, if (((m0 = m_dup(pd->m, M_NOWAIT)) == NULL)) { if (s) PF_STATE_UNLOCK(s); - return; + return (action); } } } else { @@ -9281,7 +9296,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, pf_dummynet(pd, s, r, &pd->m); if (s) PF_STATE_UNLOCK(s); - return; + return (action); } else { if (r_dir == PF_IN) { skip_test = true; @@ -9321,6 +9336,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, pf_send_icmp(m0, ICMP6_TIME_EXCEEDED, ICMP6_TIME_EXCEED_TRANSIT, 0, pd->af, r, pd->act.rtableid); + action = PF_DROP; goto bad_locked; } ip6->ip6_hlim -= IPV6_HLIMDEC; @@ -9375,6 +9391,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, if (ifp == NULL) { m0 = pd->m; pd->m = NULL; + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad; } @@ -9385,9 +9402,11 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, if (pd->dir == PF_IN && !skip_test) { if (pf_test(AF_INET6, PF_OUT, PFIL_FWD | PF_PFIL_NOREFRAGMENT, ifp, &m0, inp, &pd->act) != PF_PASS) { + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad; } else if (m0 == NULL) { + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto done; } @@ -9395,6 +9414,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, DPFPRINTF(PF_DEBUG_URGENT, "%s: m0->m_len < sizeof(struct ip6_hdr)", __func__); + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad; } @@ -9470,6 +9490,7 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, pf_send_icmp(m0, ICMP6_PACKET_TOO_BIG, 0, ifp->if_mtu, pd->af, r, pd->act.rtableid); } + action = PF_DROP; SDT_PROBE1(pf, ip6, route_to, drop, __LINE__); goto bad; } @@ -9477,7 +9498,9 @@ pf_route6(struct pf_krule *r, struct ifnet *oifp, done: if (pd->act.rt != PF_DUPTO) pd->m = NULL; - return; + else + action = PF_PASS; + return (action); bad_locked: if (s) @@ -11033,15 +11056,18 @@ done: break; } #ifdef INET - if (pd.naf == AF_INET) - pf_route(r, kif->pfik_ifp, s, &pd, inp); + if (pd.naf == AF_INET) { + action = pf_route(r, kif->pfik_ifp, s, &pd, + inp); + } #endif /* INET */ #ifdef INET6 - if (pd.naf == AF_INET6) - pf_route6(r, kif->pfik_ifp, s, &pd, inp); + if (pd.naf == AF_INET6) { + action = pf_route6(r, kif->pfik_ifp, s, &pd, + inp); +} #endif /* INET6 */ *m0 = pd.m; - action = PF_PASS; goto out; break; default: @@ -11050,13 +11076,15 @@ done: #ifdef INET case AF_INET: /* pf_route() returns unlocked. */ - pf_route(r, kif->pfik_ifp, s, &pd, inp); + action = pf_route(r, kif->pfik_ifp, s, &pd, + inp); break; #endif /* INET */ #ifdef INET6 case AF_INET6: /* pf_route6() returns unlocked. */ - pf_route6(r, kif->pfik_ifp, s, &pd, inp); + action = pf_route6(r, kif->pfik_ifp, s, &pd, + inp); break; #endif /* INET6 */ } diff --git a/tests/sys/netpfil/pf/nat64.py b/tests/sys/netpfil/pf/nat64.py index a5890fc4a161..0908c90c34a0 100644 --- a/tests/sys/netpfil/pf/nat64.py +++ b/tests/sys/netpfil/pf/nat64.py @@ -326,3 +326,31 @@ class TestNAT64(VnetTestTemplate): packets = sp.sniff(iface=ifname, timeout=5) for r in packets: r.show() + + @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) + def test_ttl_zero(self): + """ + PR 288274: we can use an mbuf after free on TTL = 0 + """ + ifname = self.vnet.iface_alias_map["if1"].name + gw_mac = self.vnet.iface_alias_map["if1"].epairb.ether + ToolsHelper.print_output("/sbin/route -6 add default 2001:db8::1") + + import scapy.all as sp + + pkt = sp.Ether(dst=gw_mac) \ + / sp.IPv6(dst="64:ff9b::192.0.2.2", hlim=0) \ + / sp.SCTP(sport=1111, dport=2222) \ + / sp.SCTPChunkInit(init_tag=1, n_in_streams=1, n_out_streams=1, \ + a_rwnd=1500, params=[ \ + sp.SCTPChunkParamIPv4Addr() \ + ]) + pkt.show() + sp.hexdump(pkt) + s = DelayedSend(pkt, sendif=ifname) + + packets = sp.sniff(iface=ifname, timeout=5) + for r in packets: + r.show() + From nobody Mon Aug 4 08:12:03 2025 X-Original-To: dev-commits-src-main@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 4bwTmg6MKNz63lW5; Mon, 04 Aug 2025 08:12:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwTmg3wb0z3tV7; Mon, 04 Aug 2025 08:12:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295123; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=frOU2EeKIqlE8FcoV3xldCylzYj4yVQKa0DTIwtT0Dk=; b=HagrJttCFIALoigVpAEYZU5nggp//0KH3G5YjRgIK1x6L8/QgsD7mGgklPH2o6P7wGrGi0 yTKRu19AgzlfERVK1G+P4Us9omTuNQ/tgSH8tQaVXNFb0co7HbLzrXA7Q6G1LSlG/Qex3M lDFlX+iSNYRv7SQXlYbwH6SoU7hVwxnS9AFner+pHGbQXp87OEBPEcPLfid91/eGoe/awM +1FzySB/g66/gaTk+N/AoSa4MuY0bxKedNzJgzS9VIoy6oKL+kOitdG6ajue4yho9+F1wb 0624O5hRchVSsXpXmaUCxErYgc5ZOxETZKjrEEyqDrRJ139hLTRiKta67Qj1jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295123; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=frOU2EeKIqlE8FcoV3xldCylzYj4yVQKa0DTIwtT0Dk=; b=x8ssvzkHXkkpRiVxW1HShTQgvOEZdrwf3sUvcpRHr7uZ5AE6xxigpYhkqrhv3/RCinecmm A7I6zstqA+lU3cDycmqUC1u6LjYzI6SyYNzYo0jnffqJVP3Pn1JCuWFD1ZiAWAywcl0S/A woQRsvCDg9Car3wMMtCqHesMXSO8kNRmfJCkTJ5pgaegOoBeYVe6JfR/dFZOGDUrloxLCJ 61s+1I2fNaPpbJ+kfS/ixrqWmsyi80pAGQAvPVJKVgccLZVCMY9eDkAAqzfqJkJb1n3zEa mB8kBq4twy+X0rMYEFn9jsA3w+Pq+DOzMwuYxmUmJ0HUSLoXcEjiMvzncfcivw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754295123; a=rsa-sha256; cv=none; b=Jk11hhRd2koF8swZHF+9vmoO8yh/JYL32BfZqlh3cnsJYQuW+pEQDKTNbhetzMYgIrusA0 OGwBUO+ncEvUT5heciIR5aY/PQGsP1Ke5cUiK/I/yTpUERyNm0b2P9SXdj6NXqvdTkVl/t KE9IKIzGJGb+Cb8h/A84aX0UimbdsoelYBHGawdzXQx3cly1Jvn6cwcuOr2rEiif7omg9U gUdIu95UQkNCvDaLEp/dn4iGulR39CTPu2SB21VSDnSo/sS5XjbVhomoys5DgNtWj16P30 9Nuh1P63rTPbuNVdZofTj+mBbj7Tw4R11Sy/AXGhVG67gQiOFaShWvApf5Iu6w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwTmg3W8gzhGj; Mon, 04 Aug 2025 08:12:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5748C3Xt093734; Mon, 4 Aug 2025 08:12:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5748C32b093731; Mon, 4 Aug 2025 08:12:03 GMT (envelope-from git) Date: Mon, 4 Aug 2025 08:12:03 GMT Message-Id: <202508040812.5748C32b093731@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 60e92d17cfeb - main - if_ovpn: support IPv6 link-local addresses List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 60e92d17cfeba02bc3c7a6edfa0bcaf7c63e5f35 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=60e92d17cfeba02bc3c7a6edfa0bcaf7c63e5f35 commit 60e92d17cfeba02bc3c7a6edfa0bcaf7c63e5f35 Author: Kristof Provost AuthorDate: 2025-07-28 11:36:35 +0000 Commit: Kristof Provost CommitDate: 2025-08-04 06:08:32 +0000 if_ovpn: support IPv6 link-local addresses MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D51596 --- sys/net/if_ovpn.c | 21 ++++++++++- tests/sys/net/if_ovpn/if_ovpn.sh | 76 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/sys/net/if_ovpn.c b/sys/net/if_ovpn.c index fe3e7bbd7fff..fe015632f33e 100644 --- a/sys/net/if_ovpn.c +++ b/sys/net/if_ovpn.c @@ -322,6 +322,8 @@ ovpn_sockaddr_compare(const struct sockaddr *a, if (a6->sin6_port != b6->sin6_port) return (false); + if (a6->sin6_scope_id != b6->sin6_scope_id) + return (false); return (memcmp(&a6->sin6_addr, &b6->sin6_addr, sizeof(a6->sin6_addr)) == 0); @@ -392,6 +394,8 @@ ovpn_nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *sa) { int af; + memset(sa, 0, sizeof(*sa)); + if (! nvlist_exists_number(nvl, "af")) return (EINVAL); if (! nvlist_exists_binary(nvl, "address")) @@ -432,6 +436,10 @@ ovpn_nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *sa) memcpy(&in6->sin6_addr, addr, sizeof(in6->sin6_addr)); in6->sin6_port = nvlist_get_number(nvl, "port"); + + if (nvlist_exists_number(nvl, "scopeid")) + in6->sin6_scope_id = nvlist_get_number(nvl, "scopeid"); + break; } #endif @@ -468,6 +476,7 @@ ovpn_add_sockaddr(nvlist_t *parent, const char *name, const struct sockaddr *s) nvlist_add_number(nvl, "port", s6->sin6_port); nvlist_add_binary(nvl, "address", &s6->sin6_addr, sizeof(s6->sin6_addr)); + nvlist_add_number(nvl, "scopeid", s6->sin6_scope_id); break; } default: @@ -725,7 +734,8 @@ ovpn_new_peer(struct ifnet *ifp, const nvlist_t *nvl) NET_EPOCH_ENTER(et); ret = in6_selectsrc_addr(curthread->td_proc->p_fibnum, &TO_IN6(&peer->remote)->sin6_addr, - 0, NULL, &TO_IN6(&peer->local)->sin6_addr, NULL); + TO_IN6(&peer->remote)->sin6_scope_id, NULL, + &TO_IN6(&peer->local)->sin6_addr, NULL); NET_EPOCH_EXIT(et); if (ret != 0) { goto error; @@ -2275,6 +2285,15 @@ ovpn_encap(struct ovpn_softc *sc, uint32_t peerid, struct mbuf *m) memcpy(&ip6->ip6_dst, &in6_remote->sin6_addr, sizeof(ip6->ip6_dst)); + if (IN6_IS_ADDR_LINKLOCAL(&ip6->ip6_src)) { + /* Local and remote must have the same scope. */ + ip6->ip6_src.__u6_addr.__u6_addr16[1] = + htons(in6_remote->sin6_scope_id & 0xffff); + } + if (IN6_IS_ADDR_LINKLOCAL(&ip6->ip6_dst)) + ip6->ip6_dst.__u6_addr.__u6_addr16[1] = + htons(in6_remote->sin6_scope_id & 0xffff); + udp = mtodo(m, sizeof(*ip6)); udp->uh_sum = in6_cksum_pseudo(ip6, m->m_pkthdr.len - sizeof(struct ip6_hdr), diff --git a/tests/sys/net/if_ovpn/if_ovpn.sh b/tests/sys/net/if_ovpn/if_ovpn.sh index c42344da1a3b..0281e7fc273d 100644 --- a/tests/sys/net/if_ovpn/if_ovpn.sh +++ b/tests/sys/net/if_ovpn/if_ovpn.sh @@ -499,6 +499,81 @@ atf_test_case "6in6" "cleanup" ovpn_cleanup } +atf_test_case "linklocal" "cleanup" +linklocal_head() +{ + atf_set descr 'Use IPv6 link-local addresses' + atf_set require.user root + atf_set require.progs openvpn +} + +linklocal_body() +{ + ovpn_init + + l=$(vnet_mkepair) + + vnet_mkjail a ${l}a + jexec a ifconfig ${l}a inet6 fe80::a/64 up no_dad + vnet_mkjail b ${l}b + jexec b ifconfig ${l}b inet6 fe80::b/64 up no_dad + + # Sanity check + atf_check -s exit:0 -o ignore jexec a ping6 -c 1 fe80::b%${l}a + + ovpn_start a " + dev ovpn0 + dev-type tun + proto udp6 + + cipher AES-256-GCM + auth SHA256 + + local fe80::a%${l}a + server-ipv6 2001:db8:1::/64 + + ca $(atf_get_srcdir)/ca.crt + cert $(atf_get_srcdir)/server.crt + key $(atf_get_srcdir)/server.key + dh $(atf_get_srcdir)/dh.pem + + mode server + script-security 2 + auth-user-pass-verify /usr/bin/true via-env + topology subnet + + keepalive 100 600 + " + ovpn_start b " + dev tun0 + dev-type tun + + client + + remote fe80::a%${l}b + auth-user-pass $(atf_get_srcdir)/user.pass + + ca $(atf_get_srcdir)/ca.crt + cert $(atf_get_srcdir)/client.crt + key $(atf_get_srcdir)/client.key + dh $(atf_get_srcdir)/dh.pem + + keepalive 100 600 + " + + # Give the tunnel time to come up + sleep 10 + jexec a ifconfig + + atf_check -s exit:0 -o ignore jexec b ping6 -c 3 2001:db8:1::1 + atf_check -s exit:0 -o ignore jexec b ping6 -c 3 -z 16 2001:db8:1::1 +} + +linklocal_cleanup() +{ + ovpn_cleanup +} + atf_test_case "timeout_client" "cleanup" timeout_client_head() { @@ -1412,6 +1487,7 @@ atf_init_test_cases() atf_add_test_case "6in4" atf_add_test_case "6in6" atf_add_test_case "4in6" + atf_add_test_case "linklocal" atf_add_test_case "timeout_client" atf_add_test_case "explicit_exit" atf_add_test_case "multi_client" From nobody Mon Aug 4 08:12:04 2025 X-Original-To: dev-commits-src-main@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 4bwTmj0kcfz63lW6; Mon, 04 Aug 2025 08:12:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwTmh57cjz3tXc; Mon, 04 Aug 2025 08:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7M7LN9LFfJ4oUaVESW0P9eUrKYKR1u8v1jWikp7yxO8=; b=DO+79XbIymWjVMz84tQ53RplHmenrh+AgfDq70axfoCVVUQKlUonx/LzyDBrFFFdCQ0OTh 7qPDf9tek6KkJv0iRhtSqBZzSvwuFLaI+fD2PkISEbFlcLAdmgVls/wM6MWPpsZino7ID9 7w61XZlD5OzPhFjrU8qQk1ZRa6tdAj7QxQ5NmSZoCwG2dW/5IyUmk2IHBg6iAp/d6pQCik dOy7v70ZGHc8QdtBRJRbvux4TUSMSpZKZfmgyzfWmfOHBDI7Ly8ZOVsiHKHdhlaDmcEcLF qGqkUrX1A1w3rO5VWjrAblaVqGAPNxkT4t+pdQXTJvYaKE4MuP9eBESCB6BADQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754295124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7M7LN9LFfJ4oUaVESW0P9eUrKYKR1u8v1jWikp7yxO8=; b=OYS8Dty6e7tuuF1Szgf965G8zA9Xrl0PowK1bk5G4x5ikSG2l3hjeANodfAmwUmk9mm3sH /v6i7EXwzJdq9kqjktcasgDfmOqdUvOXWTbPeXMzPdnWsptrlLcUg8h3cyGIj8JhqQ+hbJ Il8z9b9WdAIXtxVDAcoafQWx6ccHXF4p8ylXsadJM9igi9jPZrGvmaimpQU1iBS2Ow/hOo IqmRRtNQcbCUFa4InDADt8Uv8zV26GApglEjKxQ/1B+2G/LTYkiS2sAl4lWxGa9jU5LmLF ZTH4XyqW15ypvrgzGN9NA5C2T9ZadDMPAfxw95KtFXrYLRVaf8CqiWrP9DiFWg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754295124; a=rsa-sha256; cv=none; b=MGTDcMZ8fOGcNETvi3OsU/6yUocYpgO/MWXuDDuS0jwnyOef3WAFfsRbtqeGmV8adFvhYb pv7v52f0Hv6XwVLmxxoqXjB74W0UFW6xkwMkGQtgN1WH5qW1hbsGOD8MC4izZIxDWkHvCK bp4LeKoAA1bCJVDtWz6bqlNtUlMnt6ZzmdO7173t1ThElC66DbI6TSEa9g6R/XDsZHiYNN 8hR1p3BpgQ8u1gat5perOcOdI60IY6RJoJwHAbtlt6Ygd2+I5GPydiGMgUcTg1LWlvzkND erTL+WZ9P+XXsrw5ONdFnlHGOb38LLlmvcqH2/2Y7WtUr3NhkW+AVZ1Xqy0pRA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwTmh4l2kzhqs; Mon, 04 Aug 2025 08:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5748C4wG093771; Mon, 4 Aug 2025 08:12:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5748C4sw093768; Mon, 4 Aug 2025 08:12:04 GMT (envelope-from git) Date: Mon, 4 Aug 2025 08:12:04 GMT Message-Id: <202508040812.5748C4sw093768@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 5739007c6bce - main - pf tests: add missing require.progs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5739007c6bce38e9120f8e81e9c4f2e7c55dd857 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=5739007c6bce38e9120f8e81e9c4f2e7c55dd857 commit 5739007c6bce38e9120f8e81e9c4f2e7c55dd857 Author: Kristof Provost AuthorDate: 2025-08-04 06:38:37 +0000 Commit: Kristof Provost CommitDate: 2025-08-04 06:38:37 +0000 pf tests: add missing require.progs Sponsored by: Rubicon Communications, LLC ("Netgate") --- tests/sys/netpfil/pf/nat.sh | 1 + tests/sys/netpfil/pf/route_to.sh | 2 ++ tests/sys/netpfil/pf/src_track.sh | 1 + 3 files changed, 4 insertions(+) diff --git a/tests/sys/netpfil/pf/nat.sh b/tests/sys/netpfil/pf/nat.sh index 16c981f97399..5ea1dd6d8b2f 100644 --- a/tests/sys/netpfil/pf/nat.sh +++ b/tests/sys/netpfil/pf/nat.sh @@ -782,6 +782,7 @@ empty_pool_head() { atf_set descr 'NAT with empty pool' atf_set require.user root + atf_set require.progs python3 scapy } empty_pool_body() diff --git a/tests/sys/netpfil/pf/route_to.sh b/tests/sys/netpfil/pf/route_to.sh index fd1653cce311..765403dcb79c 100644 --- a/tests/sys/netpfil/pf/route_to.sh +++ b/tests/sys/netpfil/pf/route_to.sh @@ -865,6 +865,7 @@ empty_pool_head() { atf_set descr 'Route-to with empty pool' atf_set require.user root + atf_set require.progs python3 scapy } empty_pool_body() @@ -899,6 +900,7 @@ table_loop_head() { atf_set descr 'Check that iterating over tables poperly loops' atf_set require.user root + atf_set require.progs python3 scapy } table_loop_body() diff --git a/tests/sys/netpfil/pf/src_track.sh b/tests/sys/netpfil/pf/src_track.sh index f4031e9dd8ad..68e7e72f5018 100755 --- a/tests/sys/netpfil/pf/src_track.sh +++ b/tests/sys/netpfil/pf/src_track.sh @@ -508,6 +508,7 @@ mixed_af_head() { atf_set descr 'Test mixed address family source tracking' atf_set require.user root + atf_set require.progs python3 scapy } mixed_af_body() From nobody Mon Aug 4 11:08:05 2025 X-Original-To: dev-commits-src-main@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 4bwYh21Klpz63vrP; Mon, 04 Aug 2025 11:08:18 +0000 (UTC) (envelope-from eduardo@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwYh15w5Nz3FKb; Mon, 04 Aug 2025 11:08:17 +0000 (UTC) (envelope-from eduardo@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754305697; 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: in-reply-to:in-reply-to:references:references; bh=ZGyXw9MU5fGKTxPCd3XdM9pBFjw5W9/RNKR014aXnM0=; b=S4m/YMcnzzwQ7BidF9o7FbxR0CgU3ioon+j4vRe5NzuBFQod1ZRvJVPEIuPwpo3nvjs2p7 13Wip+r0gzNOsyXSuAONgxLtvJJsU1q0BSHeprcM/epeuTe09kg5CgfH78lwp+l0n+n5q1 SnvDxMrj1bITPJIWZpOvnxHskhT84zw4ZyS8tpWl4XtyXr74/b1vM8A+4TBAHoI40Ck9HY U5JzXBfo8XNMF/eHp/I17byErZ54gTrFmNjYxXlMYKfeL14QkDm/DDMWRbtwWA+aYyqWli tB8vkYLS2c7ZTT0tRCpWHOjCal8Xrd/IYkIk6I1O4cjlJdPq9J+xMBBcmNj1hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754305697; 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: in-reply-to:in-reply-to:references:references; bh=ZGyXw9MU5fGKTxPCd3XdM9pBFjw5W9/RNKR014aXnM0=; b=A7eJlDv6gmVloNmMXt+3lpOC/uC0ZV4+qcU6NJZy8XyeRgTHqsBxyEe5hU0F4k6A/b53VE zo09mFExjD7yhC6r+VYAxGAJdo/PRCpP0YnlnynYA8uSpJFIuv6pweozBiWTeGMnErHsxj keQ7iIWavhj+ZtjJJUxyT3zwtF87runmDSLs+uYTMI1eH8PJ3kLLuggOlYbblC6j1GK/16 pjXI2YHxZZIV+AK6aTC1BvEBL87ur8QAByVOZLkrP6YWMb45J9cjjpfrb6OE9DfC67vu4N QcWkkKMdARSoELEoYqGiNxpIJq//qYzscCFFB650De9J1QuETIvjookwyIVpNQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754305697; a=rsa-sha256; cv=none; b=bfv5eIrKccfsxW9hQ1tmYIAHtLspZpKHZo8SisYLpnhzo5g3UgoYON5wHEfbOi8M02ZrQc 4W22WhEGN+Hg6eJdISbsqKKepi9BeeYvIK8r+lkL/utWJXm3NE0vT8baz3pyck9/wy4SHu mXWY67KZxxpKCg74/VTLfQZum+by/vofW+9nX0wNUoV/DRBFe5SYJnZvfy89K7MtwTD7MT e6utPvWeA8HTvBsn+FSYvgtjEpP1KWoDaT62eb2AwgAc/VrxhDmXuB8dJAHai+tdXqVQQu 9W+AHXE7+PP/j3z4KJWYAZNMHc37leFZbjvKj/5tGBUwvR/F97k+Qn8YEX0K1g== Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) (Authenticated sender: eduardo) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bwYh15Dl5z63C; Mon, 04 Aug 2025 11:08:17 +0000 (UTC) (envelope-from eduardo@freebsd.org) Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-4b0632ae199so2878771cf.1; Mon, 04 Aug 2025 04:08:17 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCVxQC+saDnXtqxerM3sDqvL6Z20tusYtNq70Zt8Sdj45KLl/3VyxcadzE7Erh1uihmXLckHLiv4qFWJWoRvIFop0U7R@freebsd.org, AJvYcCVz1xIwsSqT+yGjdzc+oOACmtB2gLhgSCxXAzLPhZR6bPgY48w4khYb7UhNBvAW2MnYt5UlDjwMQ3v9TfDSKIT4mQ4lb+Y=@freebsd.org X-Gm-Message-State: AOJu0YyAb9xFIPFgMFCoDUJsvSxQiTrocXHfTtmhIjqqXak/9jsKJvEQ 4jRf8L6LiV+wag8srSG0d0Vbd3MfHjty5XvYPd05YhFp9bvviU5vbQ7ZzHXvOmQ50/WS662tdIK FV8iVeO+YqLPCkBgV4YgdF1Rc1s+X100= X-Google-Smtp-Source: AGHT+IEAkzQAfKn77+u6XnqswCEFTLK9XHHwrbDW/b7iXcHcu2xaUfAx0K+Z4rD/yOERTvYFGg8DcbOWbif0J4UDJ+E= X-Received: by 2002:a05:622a:302:b0:4ab:56e5:f7a with SMTP id d75a77b69052e-4af10a439e2mr67670281cf.8.1754305696945; Mon, 04 Aug 2025 04:08:16 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508021757.572Hv2Ox066248@gitrepo.freebsd.org> <20250803125039.5a69441a@thor.sb211.local> In-Reply-To: From: Nuno Teixeira Date: Mon, 4 Aug 2025 12:08:05 +0100 X-Gmail-Original-Message-ID: X-Gm-Features: Ac12FXy-EkrrA2-y2wjtJ83VjzjNQj58Gl-3ZPdA7YrA84zAAdVpSfwr6S9Wtfg Message-ID: Subject: Re: git: 8d8a745c456c - main - libutil: Drop auth_getval() To: Herbert Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000e4dd8c063b881f9d" --000000000000e4dd8c063b881f9d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I've opened an PR ( https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D288= 655 ). Thanks Herbert escreveu (domingo, 3/08/2025 =C3=A0(s) 13:04)= : > On Sun, 3 Aug 2025, at 12:50, A FreeBSD User wrote: > > > A warning should be issued about transition of libutil.so.9 -> > > libutil.so.10! > > There is a warning when you run 'make delete-old-libs'. > Have you checked 'pkg shlib -qR libutil.so.9' before removing it? > > Maybe libutil.so.9 will be added to misc/compat14x and ghc needs updated > ghc-xxx-boot for main. > > --=20 Nuno Teixeira FreeBSD UNIX: Web: https://FreeBSD.org --000000000000e4dd8c063b881f9d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Herbert <herbert@fastmai= l.jp> escreveu (domingo, 3/08/2025 =C3=A0(s) 13:04):
On Sun, 3 Aug 2025, at 12:50, A= FreeBSD User wrote:

> A warning should be issued about transition of libutil.so.9 ->
> libutil.so.10!

There is a warning when you run 'make delete-old-libs'.
Have you checked 'pkg shlib -qR libutil.so.9' before removing it?
Maybe libutil.so.9 will be added to misc/compat14x and ghc needs updated gh= c-xxx-boot for main.



--
Nuno Teixeira
=
FreeBSD UNIX:=C2=A0 <eduardo@FreeBSD.org>=C2=A0 =C2=A0Web:=C2=A0 https://Fr= eeBSD.org
--000000000000e4dd8c063b881f9d-- From nobody Mon Aug 4 11:15:14 2025 X-Original-To: dev-commits-src-main@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 4bwYr22dcxz63w1Y; Mon, 04 Aug 2025 11:15: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwYr21nY4z3G2c; Mon, 04 Aug 2025 11:15:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754306114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CSxGOGeyr3LiixEy0h68K50QQGKxdFAos/4AxUXc37g=; b=o7Y94WHtMX0n01HPMoYxv1TvrAIOcd6kzmnPG6wtbUBKUn5AU7ltaz4MA+iMT/6p5bcv4Q /YT4P/Pq4sKTDZ7aT69NGlPnWQHbUjnxQ2YZGCPi9z5N5uDcO1d5aSX3C5WKdesf7vYI+J fZbrGhN922LbOLmcyW0FyHMN24BOTDUi2WelhT4I5fEr1m1qzsTuBSemVaryp3YUBwGoGv h+XChUp0mRpZMf22uE7wb6Lae7dKAv4ywX22T2mvb0F96RjExjwq16y5mko+Gfo5g2us+B UoTvgWWFDBADzmX8d4fOx3+Ce6lNVPJWd5pvTYHQWJc/8CWCNHe4R/sK2aJZkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754306114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CSxGOGeyr3LiixEy0h68K50QQGKxdFAos/4AxUXc37g=; b=sEw53iNWmfV+sv9k4b7XSnvlkl+2Yq5aaLp7k5XENugK8CoBEOnhNvHfA37MHaG+vpXVwf 5AiQ2a5k8xXWJJE6PN+ARiH4K8iMjKxcSAWx6x9wET3mLM3f67bvqDbYkbei0ESTMstarK deJtOVsfs5e98LlVr6eqpmNOMAObt0QblPKHmxpfQJEyHhn7uc9HmKe8hikpxO4kGddsAG 6Q4/rw8e9QkP1J8sofLf15aWQzCzPoZ13SMwCQMCU/ziHQUx+USsBlIKscoKWJszNoAWDG eLCg9Lr1gP/HF7fz5ZD2iER4uxf2MmR9QtgI5TY9Qt9KcCTSx0omKJ/ktgkqig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754306114; a=rsa-sha256; cv=none; b=ydPcCpl2eA+Jr9Xx1IW31X7A7rLjmU+kjeuALo+00JGLEkpOlkTCeq4MLZKTNMQxWVYY+q ciJ8kYqz9RyQJo1dcbMBg/913ZGI42EKRBHd6z/eyKsnfL7+F3iGMaprUBaPlQevrLC7zc J23Hg7w3Ve72GJc6jK5FGG7Ufw0Y1c6s1HyFgiFmKvKTUynLB3oiLBXlZqkRS3rD4CkhvY KCW+z222dgUHUVuSz7OTTxNnTEhR53piaL92ZSG36wrCnIjvEEZEShLBtCee8CDFUO0dUt Ui2Na4j5eRrjMJ5F12b+pazZ7RUpiSLWwMLFh9e/WDoQE711zzb0bCnBMx305g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwYr21Nfgzmq6; Mon, 04 Aug 2025 11:15:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574BFEfF035886; Mon, 4 Aug 2025 11:15:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574BFEB6035883; Mon, 4 Aug 2025 11:15:14 GMT (envelope-from git) Date: Mon, 4 Aug 2025 11:15:14 GMT Message-Id: <202508041115.574BFEB6035883@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 8986e15f0bb5 - main - arm64: Teach CHECK_CPU_FEAT to handle more values List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8986e15f0bb524fdb2414240e0df67d911f2fabc Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=8986e15f0bb524fdb2414240e0df67d911f2fabc commit 8986e15f0bb524fdb2414240e0df67d911f2fabc Author: Andrew Turner AuthorDate: 2025-07-30 22:07:03 +0000 Commit: Andrew Turner CommitDate: 2025-07-30 22:33:26 +0000 arm64: Teach CHECK_CPU_FEAT to handle more values CHECK_CPU_FEAT only supported checking for features that were enabled when the field is non-zero. There are some features we might need to check where we move between two non-zero values. Support this by passing in the field value name to compare rather than assuming a non-zero value. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51375 --- sys/arm64/arm64/locore.S | 8 ++++---- sys/arm64/include/asm.h | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index bb323dbafd85..47c609fad523 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -374,7 +374,7 @@ LENTRY(enter_kernel_el) msr sctlr_el1, x2 /* Check for VHE */ - CHECK_CPU_FEAT(x2, ID_AA64MMFR1, VH, .Lno_vhe) + CHECK_CPU_FEAT(x2, ID_AA64MMFR1, VH, IMPL, .Lno_vhe) /* * The kernel will be running in EL2, route exceptions here rather @@ -413,7 +413,7 @@ LENTRY(enter_kernel_el) * Configure the Extended Hypervisor register. This is only valid if * FEAT_HCX is enabled. */ - CHECK_CPU_FEAT(x2, ID_AA64MMFR1, HCX, 2f) + CHECK_CPU_FEAT(x2, ID_AA64MMFR1, HCX, IMPL, 2f) /* Extended Hypervisor Configuration */ mov x2, xzr msr HCRX_EL2_REG, x2 @@ -430,7 +430,7 @@ LENTRY(enter_kernel_el) msr vttbr_el2, xzr /* Check the CPU supports GIC, and configure the CPU interface */ - CHECK_CPU_FEAT(x2, ID_AA64PFR0, GIC, 3f) + CHECK_CPU_FEAT(x2, ID_AA64PFR0, GIC, CPUIF_EN, 3f) mrs x2, icc_sre_el2 orr x2, x2, #ICC_SRE_EL2_EN /* Enable access from insecure EL1 */ @@ -1029,7 +1029,7 @@ LENTRY(start_mmu) * HW management of dirty state is set in C code as it may * need to be disabled because of CPU errata. */ - CHECK_CPU_FEAT(x3, ID_AA64MMFR1, HAFDBS, 1f) + CHECK_CPU_FEAT(x3, ID_AA64MMFR1, HAFDBS, AF, 1f) orr x2, x2, #(TCR_HA) 1: diff --git a/sys/arm64/include/asm.h b/sys/arm64/include/asm.h index 4f373dc4b7e1..f9a64f574fca 100644 --- a/sys/arm64/include/asm.h +++ b/sys/arm64/include/asm.h @@ -77,10 +77,11 @@ * to the given label. The tmp register should be a register able to hold the * temporary data. */ -#define CHECK_CPU_FEAT(tmp, feat_reg, feat, label) \ - mrs tmp, ##feat_reg##_el1; \ +#define CHECK_CPU_FEAT(tmp, feat_reg, feat, min_val, label) \ + mrs tmp, ##feat_reg##_el1; \ ubfx tmp, tmp, ##feat_reg##_##feat##_SHIFT, ##feat_reg##_##feat##_WIDTH; \ - cbz tmp, label + cmp tmp, #(##feat_reg##_##feat##_##min_val## >> ##feat_reg##_##feat##_SHIFT); \ + b.lt label /* * Sets the trap fault handler. The exception handler will return to the From nobody Mon Aug 4 11:15:15 2025 X-Original-To: dev-commits-src-main@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 4bwYr34mClz63vvP; Mon, 04 Aug 2025 11:15: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwYr338jbz3G5F; Mon, 04 Aug 2025 11:15:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754306115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GNWC1rI33xNaDEKpvh5JjEw6SmeajZzrCY5p1SP9jJA=; b=tD+Xdd0Upy/r99ftFSN+ayPjQA248TX0npyZpOE9wQUdGBwc25tXHeIudBYp9yTQQRndZp vp5gXUM+sNzicBa1/vsSLbujV0o5CW4tKE8vgoW0azrOJga2+K0xPE2beqrRq6QrsPS51+ m8E0GSm8aFS1q+RUKiVAiS2stpYWyffL++ZJa2XuzX2bIwq2NhsslQDSizVZxSGbLPJXkt HTNcuONCrad327EKOgezSRTVhHKC3llqJWayBMPmetNVg3ZUB4kWECcQZQNI7x+OkD+Oas JHsEfUbnVbJMoWex4EXCiFjVN2sG8koxY80J23PE+dbIvEcNT1+Yl3uAb5WWnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754306115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GNWC1rI33xNaDEKpvh5JjEw6SmeajZzrCY5p1SP9jJA=; b=Rb1o8dk6mY3P6vyfuAM1f8czRCopwspiimi7BqdgLgAXZSAXMGtkgqSt4Bai/FheD7Hzmd 8Rz3Ekx/beMIfHaQb0QizI81DHkbu/J0IRJFZgfZMUaLc1nZog4pTaK6EmSJXT6Ek9g2Xh r0iyt02mS/B0524QlFKFAc8vN9z5RpHbsDa3Lby8sq7hlpDwTx9H+0MZ2mCuJGCFhhUDce rLZ/gIVUQXX9gHCJi3AxB9qt+GsPJQj5G8Cuv1Cjxqkx4IT9xvuzLxIuYE2FGAvmVnmXeL yLC7Zrrq8O78nxpVrw1Xj0pl7vPgifHSe9EBAj2XbgXghdd54Fdj5VykVgSCXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754306115; a=rsa-sha256; cv=none; b=rTv/HG/rxS6DnRRp/YwPjIoeO4JI2MfVejByYTmf8k1UIqcryRRXUsOxx04vYXekpt8WaX HPbtX/WHc+fqDb1OyQGwPxmY714LwTbAes8LGXRSfYO8AvrTWuPsqv9ZcIQH59JR+PIX5A nAwTz30n00r++fKKjrFEdSxs8Dsq12OGzYWFutZ62ZFqI9+/i3NCqVKPpjYNRsC4E8EmTT hyYrU8m3O1JCJZQEcPkfipWlz1ef8uyu9RRQj8Oer2mfVKETIdM4cEodGafvoFyXZ7Ikk2 XHzGDfeR/ijngRxzjzieaytm8ESlMxR1rjBEJiEQFZ2SNxmh9GZl4jy37LUbsw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwYr32JW7zmtN; Mon, 04 Aug 2025 11:15:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574BFFw1035918; Mon, 4 Aug 2025 11:15:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574BFFxv035915; Mon, 4 Aug 2025 11:15:15 GMT (envelope-from git) Date: Mon, 4 Aug 2025 11:15:15 GMT Message-Id: <202508041115.574BFFxv035915@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 05e834d5dae4 - main - arm64: Use xzr directly to set HCRX_EL2 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 05e834d5dae4c963f92cfb98720c358e1eb6e37e Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=05e834d5dae4c963f92cfb98720c358e1eb6e37e commit 05e834d5dae4c963f92cfb98720c358e1eb6e37e Author: Andrew Turner AuthorDate: 2025-07-30 22:07:25 +0000 Commit: Andrew Turner CommitDate: 2025-07-30 22:33:27 +0000 arm64: Use xzr directly to set HCRX_EL2 There is no need to zero another register, just use the zero register directly. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51378 --- sys/arm64/arm64/locore.S | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index 47c609fad523..f200195906ac 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -415,8 +415,7 @@ LENTRY(enter_kernel_el) */ CHECK_CPU_FEAT(x2, ID_AA64MMFR1, HCX, IMPL, 2f) /* Extended Hypervisor Configuration */ - mov x2, xzr - msr HCRX_EL2_REG, x2 + msr HCRX_EL2_REG, xzr isb 2: From nobody Mon Aug 4 12:44:57 2025 X-Original-To: dev-commits-src-main@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 4bwbqY6D5Dz641fy; Mon, 04 Aug 2025 12:44:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwbqY34Plz3PGL; Mon, 04 Aug 2025 12:44:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754311497; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=28vGt3U+w5IgCIcl0v2KNoPI4cA0bkmlD7d0LajfUsw=; b=SJnvCutVGsXtgwyGWdqDsRDt/0q+LTKUUIxyAI7i5NvpnutyEqfYP6SdNbhyzThqiKbK2s 6bSVkqZLU+EHgUCOdYjXN6zJW0N5W6Lp0T9CoY1NN6AIi3KPZy+5HzxHLTaxhBb+Drgxqb ZkgM1qdk7kemI5bp1cxCoT+3FQKhxYuGocsTvfLeWet9Zwtimy/lzpr9TIEXmfEja3NP5h VnQDQ8EiHkO/qUoAI2pVIcE9yHhWvPyjWE2PYMDV2uFOE1H4NZJxc5xppomfBB5Yrq7O4A YEfLZa7TWnTMF9mLUAR3YJ/6zfUvy+7B2Qq5eKyRU5L4VV2U9SLfgK6zL/ndYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754311497; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=28vGt3U+w5IgCIcl0v2KNoPI4cA0bkmlD7d0LajfUsw=; b=XhwtYNaEpkUhEJh/p4JoT6wCRjFf48mwBnNyvPYgPfJoUusPLcxM/qWOdUBvbTXcjXg035 I9oiz8cgPdiZafPL76JMzR8HcZ7Yp6KhC7HJdLfYX0WWYlrbWLPnaHsRf+kgc5ZJevuE/x x1QdcDBmzsyZSPY3q1b7QInJYZZi12BiMK5tUXjlqf15dK2sLwdl2xBlmoHCNU1pMuwvKj utKPQdqSYfY67n1xxUwxJzXr0x2FF5PSJr8Qg8EgyjyOT40w1iHIz/0qUATucxLRx3QY/h DKIDuS3YKjksbs+8wpg/OrZCi0YEe+lSVhRtvsp8IGVElWLmsKrlVPU9g/lFcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754311497; a=rsa-sha256; cv=none; b=MfKRyaEyM3dd0l0RT4BZGBAZuQ3PkrCkYBhgSHOJKgm+BqpKDMaIeCYyc3p25R+Grjvdsu /4o7nrIxRFxmFqT4O6M/bRcDVguzoOPPcRZVfDrnm7HswXtdrtgGMepvN6KBO4dk9Qs2ms tzZUv4w1q8sAkf2lhuk39kUuW3z9gtX7vL5qeCGxKOim+e16BM6kCLxCAnvTc3MixFL7L0 29UiwsVFGfqleVZ3cXzr24HpInRxFIy6iAFsEv8yKsqPxlIyhEHf15g1DSP6SohzfLcRo+ ie9k/qFAj0rJ65Ot2ZmhcdICMnT0Hw66lOAjtcI/z85myWiL+yxumsnj6AjYng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwbqY2PJlzq98; Mon, 04 Aug 2025 12:44:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574CivGn004581; Mon, 4 Aug 2025 12:44:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574CivPb004578; Mon, 4 Aug 2025 12:44:57 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:44:57 GMT Message-Id: <202508041244.574CivPb004578@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 4a8e62a1209f - main - qat: Revert changes to BAR indices List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4a8e62a1209f7d7529817c4c27b91fb97750b7b2 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=4a8e62a1209f7d7529817c4c27b91fb97750b7b2 commit 4a8e62a1209f7d7529817c4c27b91fb97750b7b2 Author: Mark Johnston AuthorDate: 2025-08-01 09:29:21 +0000 Commit: Mark Johnston CommitDate: 2025-08-04 12:44:05 +0000 qat: Revert changes to BAR indices It is not clear how commit ded037e65e52 could reasonably change BAR indices, and doing so broke at least the C3000 driver. Revert that part of the change. Reported by: kp Reviewed by: kp, Haresh Sankar Raj MFC after: 3 days Fixes: ded037e65e52 ("qat: driver updates to improve code and fix bugs") Differential Revision: https://reviews.freebsd.org/D51664 --- sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h | 4 ++-- sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h index a7324509bea7..f8adc0dba935 100644 --- a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h +++ b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h @@ -4,8 +4,8 @@ #define ADF_200XX_HW_DATA_H_ /* PCIe configuration space */ -#define ADF_200XX_PMISC_BAR 1 -#define ADF_200XX_ETR_BAR 2 +#define ADF_200XX_PMISC_BAR 0 +#define ADF_200XX_ETR_BAR 1 #define ADF_200XX_RX_RINGS_OFFSET 8 #define ADF_200XX_TX_RINGS_MASK 0xFF #define ADF_200XX_MAX_ACCELERATORS 3 diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h index cddfc3f84853..486c46a1cac7 100644 --- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h +++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h @@ -4,8 +4,8 @@ #define ADF_C3XXX_HW_DATA_H_ /* PCIe configuration space */ -#define ADF_C3XXX_PMISC_BAR 1 -#define ADF_C3XXX_ETR_BAR 2 +#define ADF_C3XXX_PMISC_BAR 0 +#define ADF_C3XXX_ETR_BAR 1 #define ADF_C3XXX_RX_RINGS_OFFSET 8 #define ADF_C3XXX_TX_RINGS_MASK 0xFF #define ADF_C3XXX_MAX_ACCELERATORS 3 From nobody Mon Aug 4 12:59:06 2025 X-Original-To: dev-commits-src-main@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 4bwc7t5bSgz642Hj; Mon, 04 Aug 2025 12:59:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc7t4tjTz3QM5; Mon, 04 Aug 2025 12:59:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zfkFv3hC7tItqI5HzfeGkE/NPiseaVRm1/5t8s9NZM8=; b=a2xhB+zj+TXqJqFCuogZeBM7lnL20vBKK6pNacsOxxh35Ufc0PJkC0oJ6OSU9dcy8YFUZu P9gjCNzjpoKydFqD/hmEMO4H8SYj2PMhbWA4AYvXfTNXGI6R/EKULKwA0k9AgRrvrWsCYj 19+aqbZAdFzsb8nACqyFEy1v/EDa+63oa0C64HuhEduP/Z0mArthpYm6RmcHDG8F4XfQOR OMBUsRG3xzeEcmWpwrX4jACu71tHefTxyj42pfqWVzVDLoxzVuV2ndYPOWgu8kcIR0aqza a9xQeiSYL5ri+2KIp6JsLpdJ1SKZTJHk1GRGjM41l47NNC3BreKYLC+Icbmm5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zfkFv3hC7tItqI5HzfeGkE/NPiseaVRm1/5t8s9NZM8=; b=hJqFS8FYaewnZBIQ5j34mlD+7/ySrWsxYijO3pQc3d+u3gOx5dZBF/MmSe8wVKQz33/7UI 3MlkZiBdbFWS/Dbp+5XAQ556YM7HBDe4eoDXHWTfbWdiGcfNN0du4ecB78bT5JKw1Eia1/ usHV19whYfFQn16BR/U7+S3RTdoSvtMRXGLerB7qsUWkd+wvf6I0/t8ATAdoWcqsD5KA0o YcQjGAhH/JIyW/CqfOqltXrysc7SbeMcql0RUfJZPbC9KtA7ciwfcOiKIX6JJIo6PHUWDZ o0ZJxkWw2fuKesfW0dvNZZxoT3O8yoaVcJzhZ0B6vjC2JpM2/pUMzxOsZuBSgA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312346; a=rsa-sha256; cv=none; b=nHJRJ94VowDBGs8gY4PxvmNJy0u/iLRKFDdBUkXouxHReNCH1I3gDhrN0cDOAPE77QJafv CZ7WFFkLmGeDRUqi4DOzCnrrLycKYH8lFd9HtxJb3QCS99KmeZ4ifKWabdYwv0QuEpWFp2 HOsKpOdScWMEMdDNVBbhbKM2PzLqbNsbw2/XlsaHNfV7tLf0e2ATu8/FEkSMoJ6C/nng2K MC2FOKR9cWvzkjxbbrkXSB5KCAqJVbgCgzGlX4BuIpGusoHVOkLPYPIuHo+c7c2cV+zhCv jfyt/LrbJjnJdRT8HqllEsRURSwvPAwdFDVDFvGjikYLv32P+OPw6N4k19TAhQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc7t4R6XzqrG; Mon, 04 Aug 2025 12:59:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Cx6h9025172; Mon, 4 Aug 2025 12:59:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Cx6mA025169; Mon, 4 Aug 2025 12:59:06 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:06 GMT Message-Id: <202508041259.574Cx6mA025169@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 73ed0c7992fd - main - krb5: install gssapi_krb5/gssapi/gssapi.h once List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 73ed0c7992fd5f6148374d5dbf5c7b37a2eba1a8 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=73ed0c7992fd5f6148374d5dbf5c7b37a2eba1a8 commit 73ed0c7992fd5f6148374d5dbf5c7b37a2eba1a8 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:40 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:46 +0000 krb5: install gssapi_krb5/gssapi/gssapi.h once Somewhat arbitrarily chose krb5/lib/gssapi/Makefile to install it. PR: 288594 Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- krb5/include/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/krb5/include/Makefile b/krb5/include/Makefile index c7b3f0f10a99..a2d29fcb1530 100644 --- a/krb5/include/Makefile +++ b/krb5/include/Makefile @@ -17,7 +17,7 @@ SUBDIR= krb5_private krb5 gssrpc gssapi SUBDIR_PARALLEL= -INCSGROUPS= INCS GSSAPI_KRB5 +INCSGROUPS= INCS INCSDIR= ${INCLUDEDIR} @@ -27,9 +27,6 @@ INCS= kdb.h \ krad.h \ krb5.h -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5/gssapi -GSSAPI_KRB5= gssapi.h - CLEANFILES= osconf.new # XXX The output of this needs to be verified against the osconf.h I created From nobody Mon Aug 4 12:59:07 2025 X-Original-To: dev-commits-src-main@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 4bwc7w03sfz6428p; Mon, 04 Aug 2025 12:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc7v5S6gz3QK3; Mon, 04 Aug 2025 12:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xJu5rDGC1xKFe045g9tLoV2iPddKOe8/wu1aoZtm61g=; b=d//+3MXl4+5eFmOJpj77V+8+tK2xCOYIn1JmEjWjZ9aS/U4ov+tkY9t62ul7uxrPu4kbh1 eyhtzj6dh+OGYIACDPyk/Iw13GW0VrOnNoISHH/u6OA8BVJlm7CBvmwgDzr5bM4b8itIFz /rs9atNCq+eq9CYJ/FsHjM6ARe/kIP2ae0bttUrCkJbAbtZF+cQGywJgtbQjvQGf3U6X2A 3Ke1NJwh4uv0V96hesx1t8bXGkGWaFj7VhI3FvnxKX6mS8kz/vTpcaijsONgesafJHVzsN bU9t+6Rw7lHG68a6tZB0itIGDorbscTXMG+Lrxd5GjeNL1LNd9dIyEbmeGpOHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xJu5rDGC1xKFe045g9tLoV2iPddKOe8/wu1aoZtm61g=; b=nsxZ7gvmGj4mVZaWEih6lmYVGLNKPlnsRcj/s0m9G44wmCmm6BQTzeVVLjthmvn9ZakhTn uA3fpBkaIqgbFLXI7ywPlr/Y2lbUjt6RBdO2tYSy07ZQ50OP6WMwTyO0thHlgY6LjRavIF GBjrv1XEYK/7LRKAwRIwamq0Zrv2KLygysOLVZJTVVFG53bUzOraMAgJ4bkvKJYDPiKz1M EG3RHEQWXKz7/gEC1aZwSbfamMlFQeoU2QEfBNvKqZL/O/GdHU/LM26mWSH9sqyNplErMI ZS5ypuVeIcJrgoap1BBIK/JvE6oWxjiVWd2U8Q2fTsySkSBw3U0hqDw9zTG8aA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312347; a=rsa-sha256; cv=none; b=nRkxCSTpe7eqPZfo+bqKwd1LUwCtlHAVyWmNGd+3FBwkD6mG/EpQkwKi2A+ng4haZzIJK/ eiqeOl1a+RlewhUSKeX8w2L3BL/CrvNEVHyDJjv30sSC0BIudUHnDPlLmPB5If6g9xP5Xg 5tOPzEdLlDFDQb85hOv0Zfr79/oBMVo8kw1ZU7rdgD0RbIHuSKsZogYAXLI3TQxtIj0hHx cHWekcTYQGhsncKSANpgWC1qii+/BUJ7LR4v3wtVLH19kzQ1krw5R6An1O/KsmhGIc6pFY uDNTG/Af8Qztr1rl5OzIyxrma/xvFTZXl7mSBxwnozOpDpc8YO4Am010r4E4OA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc7v53YNzqbB; Mon, 04 Aug 2025 12:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Cx7EC025205; Mon, 4 Aug 2025 12:59:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Cx7M2025202; Mon, 4 Aug 2025 12:59:07 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:07 GMT Message-Id: <202508041259.574Cx7M2025202@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 40a5abfc3f66 - main - krb5/include/Makefile: don't override *include targets List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 40a5abfc3f66e17827b2225cc9ed3c2ed4290df8 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=40a5abfc3f66e17827b2225cc9ed3c2ed4290df8 commit 40a5abfc3f66e17827b2225cc9ed3c2ed4290df8 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:40 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:46 +0000 krb5/include/Makefile: don't override *include targets This was causing kdb.h, krad.h, and krb5.h to be installed twice. PR: 288594 Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- krb5/include/Makefile | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/krb5/include/Makefile b/krb5/include/Makefile index a2d29fcb1530..6cd606faf605 100644 --- a/krb5/include/Makefile +++ b/krb5/include/Makefile @@ -37,19 +37,8 @@ osconf.h: rebuild-error-tables: ${K5_ET_HEADERS} -force: - -stage_includes: copies -SDESTDIR?= ${SYSROOT:U${DESTDIR}} - -.PHONY: force rebuild-error-tables osconf.h +.PHONY: rebuild-error-tables osconf.h .PATH: ${KRB5_DIR}/include/krb5 -copies: .PHONY .META - cd ${KRB5_DIR}/include; \ - ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m444 ${INCS} ${SDESTDIR}${INCLUDEDIR} - .include - -installincludes: copies From nobody Mon Aug 4 12:59:08 2025 X-Original-To: dev-commits-src-main@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 4bwc7x3s4wz641qn; Mon, 04 Aug 2025 12:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc7w6j7Jz3QWn; Mon, 04 Aug 2025 12:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8pOHod5/pnxJ6DGkxY+k2gfdb7ur9sWwhQKyTe69XlI=; b=ltGtYPL7WK+O8LEaBaWgPOnVlzFluOGFUReYTtPEbH+r3/07y62hZt3K73rDYagiom1Td8 RfPPU76mVVzl+o462gevnkAYK0hhf8HYPUnJWMJKtoB0VSK2lHiFc2eq9NtNoIOR1oenp4 yrtttXyUesE0117OypC+vaxOIPzm1382kn9xR4K1i1AhQmBPWXS63OQlS8PEu2LeBGrc/o vS7UM4Tt3InDkUqaYFAhD7XSr14pRTfABwgX9m5btfoFv6p5l5Mi6jUBRfJF21umZqqYPc cJFUw0Fd9XPG/2b2aVUqb2ImpvSN7nsR9dPyfPUqj4GqPgmQRmZICsJVRIR3+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8pOHod5/pnxJ6DGkxY+k2gfdb7ur9sWwhQKyTe69XlI=; b=ZSMZf8n8jWXevtTXZQnJeg3Wt1DUe0L7GmMDLkPdaeBKn+GHude14ByVPbYcuA6osdPMfj uJpFhkkIqjG1sMSewuvX5TssurFH6WxyWuf3+7hiewIpSrLi8DOiWAYyDAqEsZspTHfWyl uP0gcq+s4AZgg1KnTUJEI7+47dyPp0eTSfQwBLcewU/psGy9SM8M/ADCYE18EypnJgasS1 uk8mKusTXCkuQ66Vz5WuBuouHdSPzUiLH5oyQ+NeXOrF7lcUsoRf1E+xsTKAoxzbBFiRPI xLxvLxlqIqINOCYWQzgCQZYugfJHaoXzRabsemfxIWLCXfiXzIo1g8S3C3YJiw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312348; a=rsa-sha256; cv=none; b=pO+YKCwyZqIqeO+N6rbxY8kuA7/Hm2t2t4aKLiKfeHPSNO4vQXqO1ORP/4iO7i8jR3mLyL kawSDEGAwVTKWeZix7dxYv8k9wZjkSyErlJoK5c+zTGNbBb+O60Chha1Hw77dIRY3+3SIS UPeJuKvGaJ3p1PTx6/DXV2HKm62BDRxTuPYTOjeqGuiJVHJwil2UXY8QNb4W+RiXPE9oG+ nsSyvlR3jqxcGtP/th5RsDWp7vU1gHzhILi0HlVdrv/pEoo0wIpr1ju84+wVj/5FyaJXrz tc01G9YzvX4ioY537lD6TirH693RHgXhA+RjzeTlhdSf6S18Q/kMGNoAkdr54g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc7w66ZJzqrH; Mon, 04 Aug 2025 12:59:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Cx8K2025244; Mon, 4 Aug 2025 12:59:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Cx8jJ025241; Mon, 4 Aug 2025 12:59:08 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:08 GMT Message-Id: <202508041259.574Cx8jJ025241@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 543b875a8ee4 - main - kadm5srv: remove unused HDRS entries List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 543b875a8ee4674c592b507b0f1d16ff1eef7231 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=543b875a8ee4674c592b507b0f1d16ff1eef7231 commit 543b875a8ee4674c592b507b0f1d16ff1eef7231 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:41 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:46 +0000 kadm5srv: remove unused HDRS entries Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- krb5/lib/kadm5srv/Makefile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/krb5/lib/kadm5srv/Makefile b/krb5/lib/kadm5srv/Makefile index a8f7f489d2be..6e17cf07fabd 100644 --- a/krb5/lib/kadm5srv/Makefile +++ b/krb5/lib/kadm5srv/Makefile @@ -48,11 +48,6 @@ CFLAGS+=-I${KRB5_DIR}/lib \ -I${KRB5_DIR}/lib/gssapi/generic CWARNFLAGS.gcc+=-Wno-alloc-size-larger-than -HDRDIR= ${KRB5_OBJHDR}/kadm5 -HDRS= ${HDRDIR}/admin.h \ - ${HDRDIR}/chpass_util_strings.h \ - ${HDRDIR}/kadm_err.h - GEN_KADM_ERR= kadm_err.et GEN_KADM_ERR_C= ${GEN_KADM_ERR:S/.et$/.c/} GEN_KADM_ERR_H= ${GEN_KADM_ERR:S/.et$/.h/} From nobody Mon Aug 4 12:59:10 2025 X-Original-To: dev-commits-src-main@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 4bwc7z5Hpzz6423t; Mon, 04 Aug 2025 12:59: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc7z1sqqz3QS7; Mon, 04 Aug 2025 12:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qtlHm+EFYU1f7UZ8Au1aqVAiHnVjx95s5j/LoddCcJ4=; b=chSH8HkVSeJvkMhH6Iehd+6sW9VhJxP/5ay9vqwTUynGCBFCn9c2yoTD3m0kf95QWx7MEk 7oxIvxigIItSewreROeHbVzX1EfBDZcoLWBs8vhpiHNPTBdqsbZ87yU67z6mhhUhPqsAN2 mweet965O46jrJsu2uQsvZBXz2AMQDFis7utAfayZKw6yjC+FddxuzOSp2eqcdH+ZHhcJj Cw+MwqXFW4KGvCE9jjaufYt3+3TYtJorJkCkqx7gEHAb81WFdxtScAIeY/tjMTTbUrmZYf QwlY4N2sGvm2Dg6zy1xZCipCNvg1EhcBmXlbFkdDFWiZ1Djw6MEolwQBY5zKOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qtlHm+EFYU1f7UZ8Au1aqVAiHnVjx95s5j/LoddCcJ4=; b=XtPy64FkXAHmam0V7pIOVpQT9fe/Mm6sKc63NfUhGODv6YhPAQSFQBEWiyiAS0B8XPrjms 0/1Q8A+ZAJRHqz5i0AQH9gN45aLsYmCVFv56+mYURulWinNoqTn+OxkiB4gZhnUfxz4Eb7 Gix6SdZVQIm5J+kBEc7xYkUnsoeD9iywWlLNq7h2tlcyVDjlA1qfwbmZM3s78ChBUubewJ auwwNd+Bqevdw0G0vuTilEYmX3RDisMN1Zm3EwmF6tXz2T2WX2JoJDVYITgJ/a3xrL4hWm gJHSwnQddAr8khiFn16K5zdjvmz2vOuZJ4Nm0Q5zkoaEb5h+QztM0Uw8uI3Unw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312351; a=rsa-sha256; cv=none; b=HKR3rc9u2ZwhmLPYf/795Bicb/NgA6wygVzvUBq0ukdt8khULvjAooeVnAAWWef+2bqq4z EKX3sbmDfkh9nHXLx3eE9SbtJ2gRQ+fHl7KrqsIwAk0SzinsF/LG8EnFdsAzOHfxlF4taY Kc/oMZtTg0TwfpYBPssjQ1VUGJIlpQ2RTN3wVo7IuZ2jXDPd3Rj4skmD/BvhtbBoIot3t+ on2pWcR3pOfBbKYM7s/OQBYMaVwhEEcN2xTYQBKBMyfhTbgJijYjh+ECsy8446VcemCjfX nOl7VR8qs30emThgnOdxcfOrwWb7MbbQNx79DPWdFaiid4+zgHQUmaoEMwgYCg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc7z0djhzqrJ; Mon, 04 Aug 2025 12:59:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574CxAtR025310; Mon, 4 Aug 2025 12:59:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574CxAG4025307; Mon, 4 Aug 2025 12:59:10 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:10 GMT Message-Id: <202508041259.574CxAG4025307@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: d5cbb15f9eda - main - src.conf.5: add docs for WITHOUT_MITKRB5 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d5cbb15f9edab723bc6116e8253fe8840929ae30 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=d5cbb15f9edab723bc6116e8253fe8840929ae30 commit d5cbb15f9edab723bc6116e8253fe8840929ae30 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:41 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:47 +0000 src.conf.5: add docs for WITHOUT_MITKRB5 Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- tools/build/options/WITHOUT_MITKRB5 | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/build/options/WITHOUT_MITKRB5 b/tools/build/options/WITHOUT_MITKRB5 new file mode 100644 index 000000000000..14a9e5932ef2 --- /dev/null +++ b/tools/build/options/WITHOUT_MITKRB5 @@ -0,0 +1 @@ +Set this to build KTH Heimdal instead of MIT Kerberos 5. From nobody Mon Aug 4 12:59:09 2025 X-Original-To: dev-commits-src-main@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 4bwc7z5w1qz6426G; Mon, 04 Aug 2025 12:59: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc7y6sbSz3QKP; Mon, 04 Aug 2025 12:59:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w8ijvQIeOp/d2x2ePkoFnTE93/Lwuu7MNeT5NcPD8oM=; b=KdWmp47nEyAb7vtFxSF97coNXoHqzG5cLsg0ih3YAPHVEqANjk6YpphylbPg6ZZsx4yy2V laZ8ewRGAxWrrI8g2mChJyUy8YQU4FPZmCzv6cNccxDUez/M4HhbjlvzX6lCe6NPIwxNT9 AMoK/irXZeURfcfnVHN60YOh4p+zRBPgQmOUWWRthPkXPGy3eZ1dTmb2YhlCV2eodoIo8Q mzYk4RW2V6nb8s9JnIfFqo3DoAdd6NdNbU0nHsD6flqqMkCAd4Cl8QHtLG2yQf4YR4UCO8 nzc8tJptRc0CbTgcilriWg44GeOrc+WAzbMUDAYc66OiaKhMexAjYtv7Wt0MIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w8ijvQIeOp/d2x2ePkoFnTE93/Lwuu7MNeT5NcPD8oM=; b=jCfqg0tYUW5b7UTlBdakbatNeeuetQKLhu1KeQisz33T/VxaHaOmf0lX+Lb1S7+UE0Afnt MDan4RQ7yq5ZAmZBJnIYj28AHz9d1T2b5d/fmC7btV1cs/RnRT2Wn+CLMrmc2qk1zbiGut Uy9/R3v9AZSUAy6PkCr416l4RcbPmpo+ivHpZcNohtFcQRXn6f+zt3J/jArSDJwvNA2i+7 wQnYTqcy7TrzYqmJiBE15LMqoECXA39UFqC/bjVBVSvqoVdbOGYr+TViqPcU9I47hxTYW0 SN+9Ij0lXPm/QsDbvaiApbzlhdE4P28cPuoih61/ecTynGtGJAqG6X2PrL6Mtg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312351; a=rsa-sha256; cv=none; b=o6s7l6S5zdDh+9bHR1RxmmFSsLmHIBbFPxs0jA0kbWf1eDWttyWYs9RRXwQ6iymNF5mX3R +rpAMGOW7Dkv9ENj2/Xxr+/iUlWvViZf9JzbzybBxyRk/BoafjQphl+96a3UdqRmKoV+Zr NJzHZJ4Kmehxci38nNMo76vjF4k2clgRHD+pY5ZqkySVwEIjsByF/K7VFDgDKxWoTce8Ef 9++WDbZPDMZvwYMBzmpBxbwiHAbgfCOinEzzKD7MgFjh2JI4jzasijPhWztRlh1b/Eokw5 A3EUXkKj5ewZK1aRoh3P0GKVOdIx8nHqrlyFcYMtqdLX2UEM5e8dg+iMlLYssQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc7x7302zqdj; Mon, 04 Aug 2025 12:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Cx9AE025276; Mon, 4 Aug 2025 12:59:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Cx9Eb025273; Mon, 4 Aug 2025 12:59:09 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:09 GMT Message-Id: <202508041259.574Cx9Eb025273@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: c791ea80b5f7 - main - kadm5srv: get common headers from kadm5clnt List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c791ea80b5f74a6fb08ffa2c2541d158fd218d12 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=c791ea80b5f74a6fb08ffa2c2541d158fd218d12 commit c791ea80b5f74a6fb08ffa2c2541d158fd218d12 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:41 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:47 +0000 kadm5srv: get common headers from kadm5clnt Both were installing admin.h, chpass_util_strings.h, and kadm_err.h. kadm5clnt is ordered first in krb5/lib/Makefile so pick it. PR: 288594 Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- krb5/lib/kadm5srv/Makefile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/krb5/lib/kadm5srv/Makefile b/krb5/lib/kadm5srv/Makefile index 6e17cf07fabd..aa4fad49ea02 100644 --- a/krb5/lib/kadm5srv/Makefile +++ b/krb5/lib/kadm5srv/Makefile @@ -17,8 +17,6 @@ LDFLAGS=-Wl,--no-undefined LIBADD= krb5profile gssrpc gssapi_krb5 kdb5 krb5 k5crypto krb5support com_err VERSION_MAP= ${.CURDIR}/version.map -INCSDIR= ${INCLUDEDIR}/kadm5 - SRCS= alt_prof.c \ chpass_util.c \ logger.c \ @@ -30,10 +28,6 @@ SRCS= alt_prof.c \ .include "${KRB5_SRCTOP}/lib/kadm5srv/srv/Makefile.inc" -INCS= admin.h \ - chpass_util_strings.h \ - kadm_err.h - GEN= kadm_err.c kadm_err.h chpass_util_strings.c chpass_util_strings.h CLEANFILES= ${GEN} ${GENI} From nobody Mon Aug 4 12:59:12 2025 X-Original-To: dev-commits-src-main@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 4bwc805yCwz6421n; Mon, 04 Aug 2025 12:59: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwc8025PYz3QTv; Mon, 04 Aug 2025 12:59:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312352; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2C9mjT+cM9fYvqEJ4/Im48YvPX9EZQNHS4je65NzMmw=; b=jWeY8DZh1gp/cRRKatrKs8jZWGwBtj0x+LC9zsc5RdsAATyECWDhY5Zh2c3j5Vu7bWMunw SEFKPvdYvysBvO/VvPVyjbKyFw322WIVXYMWuVVCmJ8bptk4KVqhiXAx3bftKN8yOKbgT6 PnPQ12JL4EqkZlTDMkHsaj+qCIZWueReDboj3grZrJjztITupoHIJpJd43H3TLwtc84mzG a2VimZtNab8dNCDYa6p9wn9u98FACIk0bw08iRE1dFxrudNercaRPNUPVk7lnfsY/EtDdY 2y9OG8pibQrNmJVoeJWT4n10hgNLSSFJRooYJssZa0Ugz/KyXxauXFInWPu1PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754312352; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2C9mjT+cM9fYvqEJ4/Im48YvPX9EZQNHS4je65NzMmw=; b=SHik2CQDhtFScWpzOZ9EJqMHIFKlpybHBzJrO7wOkTPQqcKoDnN1vScylt1Oz4NEXjP+Ev LggjWFoInmGoODvbkVzys8oEJETQ2nuVypJHVAZxR09VagIiS6vuo+A7D+odRJLZ8E3DNe ltKdPfl0k0C0yBkT3yf82lMNeV9BWOIDcKd6IszrtIEOggx3jBd9SSB82CYKoUzGKGVeek PkrRg8FF3rqeCiFBTN3vwN6p+YgjSaSpfueNUGIcJVHNoF5Nd0QAYYVAQOUjw7hL2Ix2IO xcyWDFlL85y6owsGOUXlPkoHB0hctjpz988Iqyz3LEPkd985t7uoCweNRSj26g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754312352; a=rsa-sha256; cv=none; b=RqG9wcFDZpJfGr5hsoIXrHy1Zc8c9VWvZ+eGn+HguRNsbVHBcIHJTiqfyhbgQeqYjskn4Z wR96fHDrNebOZc1qDs9PXqVl72L8/NfCmbQQeTDhEYcLwK552Vc6+NtvyfPmJ9tNOYjX15 1OH9kNbAKF5i2kA7zi2iJUEOaaOlCasoAojRXvqy+PmsELD3FxPbFuEJeln1nt3FYIZhXO Dkg3JmnZXM6TRzSmguXpxDpvUG127xMylGJcLaDckuQ5i+MteufjGS+OV/1sNIovDezgcv TrbTNfdewqqfHtsPI/GBSdz3tYyWCfta6E95iCXsptBYTlcz+Kr3KLcoS0yebg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwc801Y0YzqbC; Mon, 04 Aug 2025 12:59:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574CxCI4025344; Mon, 4 Aug 2025 12:59:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574CxChD025341; Mon, 4 Aug 2025 12:59:12 GMT (envelope-from git) Date: Mon, 4 Aug 2025 12:59:12 GMT Message-Id: <202508041259.574CxChD025341@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: eb9c541a7389 - main - src.conf.5: regen with WITHOUT_MITKRB5 docs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: eb9c541a7389553cb3ef5affca4c25be07d50b94 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=eb9c541a7389553cb3ef5affca4c25be07d50b94 commit eb9c541a7389553cb3ef5affca4c25be07d50b94 Author: Brooks Davis AuthorDate: 2025-08-04 09:33:41 +0000 Commit: Brooks Davis CommitDate: 2025-08-04 12:58:47 +0000 src.conf.5: regen with WITHOUT_MITKRB5 docs Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 --- share/man/man5/src.conf.5 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index a3db00aed42f..94e5a0cfc8b9 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,5 +1,5 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. -.Dd July 14, 2025 +.Dd August 4, 2025 .Dt SRC.CONF 5 .Os .Sh NAME @@ -1302,8 +1302,8 @@ This must be set in the environment, make command line, or .Pa /etc/src-env.conf , not .Pa /etc/src.conf . -.It Va WITH_MITKRB5 -Set this to build MIT Kerberos 5 instead of KTH Heimdal. +.It Va WITHOUT_MITKRB5 +Set this to build KTH Heimdal instead of MIT Kerberos 5. .It Va WITHOUT_MLX5TOOL Do not build .Xr mlx5tool 8 From nobody Mon Aug 4 13:44:12 2025 X-Original-To: dev-commits-src-main@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 4bwd7x1Kv8z644DN; Mon, 04 Aug 2025 13:44:13 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwd7w6f6Qz3YvF; Mon, 04 Aug 2025 13:44:12 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754315053; 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=T4hLtq8bEXfNM6ho6shxfTP7FQwjMEFTxumWJWN9a6U=; b=GxcruH1RNXRLBVsb+Tqn3mzthVst4sg7W3frRpjv5hSpo2BqORosg/lZCDQRuJXzATQ1rO rukSMujJRKaYfNcx19o7qoq5FdsP0Ifm4OQnUYJiXo+sEHQru8SPy91iygh6UfXM1UToL9 +dFBocWEFffUZJBwzfcJJVjLu0jrFRh9F1N3NTfZiA7iyK2RYbEurqiUlULglTZBdBe/st odbJJNj2crunvoP8LNbGvN5qzrR8V0SnFMm7oPEbQDuJ0nshPb3A6w6llSEAlvHR+zYA4L skF33j2wr4/DUNbRdRK2TVidDpSwnhLOi/mcxMCu3z+rxh86Ry1I3FDXggKyaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754315053; 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=T4hLtq8bEXfNM6ho6shxfTP7FQwjMEFTxumWJWN9a6U=; b=vSwbuefbtsEgQIEAaGaqMkLRdI0Z/7Bh4c2ybiM8hWZQ6wgTqdYwOiB1bdOi5wuA8dPkca 2CbOetm/JoLUsoPhydFxuQ/jLY8Fcs4dMXXJhnVW3+zq6Pc+dsYrCgTUPoC0DPLakMcAcZ d3KJugcERhc9DZZfN8efIpcZzoVuRrcBvDwHxrV4ZZBoF/egE7xSdQj+emxNY+gydghu31 TaQ/3WAh4pOTcK8dHpzEm4r1esNjIGefQHhD3l8XWYdUQ7IMiLVehdRhV5ZF2CLthj+LQt fHUxY4OrsdbciGSsi4GaB+JTVKuo8NTUSB+P9B/Jq4jv+iALcjUh23hV5dIULg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754315053; a=rsa-sha256; cv=none; b=tKq2dZHIcw2mHPn8kr/Ne0L751zusQPYjwocvGdx+Ky8NFaaPdTnmhesY0rBnsKatwTrvR d6Rcn0u8hKGCfWjrvrQ8qIg5Lndm+W4gXlbNtIYwPj5zpzYaCLpGqI2yTGxX34MmYQox1k GHiRKsCZI8BMwW1P+MBP6bpBVE0V+asx447wIUKzlJ5P5NRlw06xFPyeupLUKq7GJA1h98 L6Q+iePeIDGSi2pX3rt1QXFTJ7nFqK64puyxV/HRV9L4towbMo9gnCW5xHf5uP5pjlFUrb zZUdfLrVmSI3yHy5zgll41A4TQtv2NTeV1d5CgJw6iEo7GB4am1OahptPhjj4w== Received: from [IPV6:2601:5c0:4202:5670:3cb2:220f:177b:6972] (unknown [IPv6:2601:5c0:4202:5670:3cb2:220f:177b:6972]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bwd7w4Ysqz9Yb; Mon, 04 Aug 2025 13:44:12 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <7225f395-cf53-4692-863f-8fe1adf8e149@FreeBSD.org> Date: Mon, 4 Aug 2025 09:44:12 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 96a550e9dd89 - main - genet: Add a detach routine Content-Language: en-US To: Zhenlei Huang Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202508012009.571K9FBP097692@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/1/25 21:00, Zhenlei Huang wrote: > > >> On Aug 2, 2025, at 4:09 AM, John Baldwin wrote: >> >> The branch main has been updated by jhb: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=96a550e9dd892f24a479da00ead93fbfaafb7733 >> >> commit 96a550e9dd892f24a479da00ead93fbfaafb7733 >> Author: John Baldwin >> AuthorDate: 2025-08-01 20:07:30 +0000 >> Commit: John Baldwin >> CommitDate: 2025-08-01 20:07:30 +0000 >> >> genet: Add a detach routine >> >> PR: 288309 >> Co-authored by: Mike Belanger >> MFC after: 2 weeks >> --- >> sys/arm64/broadcom/genet/if_genet.c | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/sys/arm64/broadcom/genet/if_genet.c b/sys/arm64/broadcom/genet/if_genet.c >> index 182b5582fb7c..013573f1551b 100644 >> --- a/sys/arm64/broadcom/genet/if_genet.c >> +++ b/sys/arm64/broadcom/genet/if_genet.c >> @@ -201,6 +201,7 @@ struct gen_softc { >> >> static void gen_init(void *softc); >> static void gen_start(if_t ifp); >> +static void gen_stop(struct gen_softc *sc); >> static void gen_destroy(struct gen_softc *sc); >> static int gen_encap(struct gen_softc *sc, struct mbuf **mp); >> static int gen_parse_tx(struct mbuf *m, int csum_flags); >> @@ -379,6 +380,39 @@ gen_destroy(struct gen_softc *sc) >> } >> } >> >> +static int >> +gen_detach(device_t dev) >> +{ >> + struct gen_softc *sc; >> + int error; >> + >> + sc = device_get_softc(dev); >> + > > ~~~~~~ >> + GEN_LOCK(sc); >> + gen_stop(sc); >> + GEN_UNLOCK(sc); >> + callout_drain(&sc->stat_ch); >> + ether_ifdetach(sc->ifp); > ~~~~~~ > > I guess the above logic want be wrapped by condition `device_is_attached(dev)` . That is always true for a detach routine, so there is no need to test it. -- John Baldwin From nobody Mon Aug 4 14:27:54 2025 X-Original-To: dev-commits-src-main@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 4bwf6L50w0z6463S; Mon, 04 Aug 2025 14:27:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwf6L431zz3cQq; Mon, 04 Aug 2025 14:27:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754317674; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JrYwRDNzKalmW+GNp0DXK0jRukIzXNpraadCRSR/Bb8=; b=SruSK4em5dfPUGxoGKpIwhva9SinR6TuthG9lr+oj2ohaTRNgx+FsEk4ZWDOaAWZVNjG4c Nh4DQQnSiOEfTCrH/1ljuA5C1TmfW1mw9dsh0+xbDbCwpmfpm8K/AXlQv6poOcE+unzOVf ca4Sn5FhA+WyCSY5WpQ9Sp+BBZ0gROsHSOF57e/U49P4OTEJh1RNPDQlIqaTKEqIgEveo2 st43NRk96qtVRpFgiMe3QaIldLdpChKK29oNAI0XLb2VEOq4OjEscKTTyRqUKi2KjV2rUR JQANw+bk+DNu1fI3F70+LlwKIAAVCjAAaQo7GKRfgMoMSxaaZ8td2ED1YM+OQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754317674; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JrYwRDNzKalmW+GNp0DXK0jRukIzXNpraadCRSR/Bb8=; b=TXSdAXw8gdqPW/Yp8oYWXLi2wZgsFIf3x7yBOLjUl5Mkw4vB3NiSXk2Z7ghuTtTlNVqDpn XO2CZZuR/5bbHk6U4GULGFTLaDvPEMrKgS4BOLJR4Jlk9C8nXRLaAjJT5I2IXVD5SU5UlL qQcqfkNs2THldp0n3jPnFgvKeMcWAY52ETENFh3ykDPdWUJF4/E8Dbi9G6HVp2K+uLUgUe +E2WD8VH6Z2hBjCYsNS3ttq//geF7B/8lg0yAsn1OWwH9KSg0l4GCGI55kKPtwQI2ucBoN XK0ITPVP4FOjQyWXHTJWP8pf1TdB0VyvoOmCyqmi1ctKZjUpyKR6x/hoYjbL9A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754317674; a=rsa-sha256; cv=none; b=jATljei2Xrq7no9kOqZ/5ywdm8rYUPHTS3yNdXLNalsNgq0B8kxYXm3mG89cS5n6ar04gp jsEiv2p5Bx3eSO/aZ12Sr72nPZNHw3aBMsa8YUu/i5gkG5GzuyRzyKlk3okP0H1e+jF+qa C24JZNFIv/8xXj3BWBSyPsnPxrkzPfMFkf3X6UKengkAUdRHzrRM0BGwbDUlB1uH7vm8EF BHu071Ym2Yl/2XvTWLkxGacoT2KBMw2nlpJWqFMHynydO1UYtFgcAeIe3p/KZx0OAV2N3/ 5EVzKmMhetf55duT8lgh8Cff1pYYnQBwlQCwJYR23olIaL9Id0xp1YC7wf66Rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwf6L3Fk2zsxM; Mon, 04 Aug 2025 14:27:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574ERstl096157; Mon, 4 Aug 2025 14:27:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574ERsd2096153; Mon, 4 Aug 2025 14:27:54 GMT (envelope-from git) Date: Mon, 4 Aug 2025 14:27:54 GMT Message-Id: <202508041427.574ERsd2096153@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 9a1b3303352b - main - vm_page: Clear VM_ALLOC_NOCREAT in vm_page_grab_pflags() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9a1b3303352beb44d48b8251b80656a316b7a2e9 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=9a1b3303352beb44d48b8251b80656a316b7a2e9 commit 9a1b3303352beb44d48b8251b80656a316b7a2e9 Author: Mark Johnston AuthorDate: 2025-08-01 23:34:46 +0000 Commit: Mark Johnston CommitDate: 2025-08-04 14:27:26 +0000 vm_page: Clear VM_ALLOC_NOCREAT in vm_page_grab_pflags() Otherwise vm_page_grab_zero_partial() and vm_page_grab_pages() can pass it to vm_page_alloc_*(), which results in an assertion failure since that flag is meaningless when allocating a page: panic: invalid request 0x8400 cpuid = 0 time = 1754074745 KDB: stack backtrace: db_trace_self_wrapper() at db_trace_self_wrapper+0x49/frame 0xfffffe00542859c0 vpanic() at vpanic+0x1ea/frame 0xfffffe0054285b00 panic() at panic+0x43/frame 0xfffffe0054285b60 vm_page_alloc_domain_iter() at vm_page_alloc_domain_iter+0x720/frame 0xfffffe0054285be0 vm_page_grab_zero_partial() at vm_page_grab_zero_partial+0x1d4/frame 0xfffffe0054285c90 shm_fspacectl() at shm_fspacectl+0x1cd/frame 0xfffffe0054285d30 kern_fspacectl() at kern_fspacectl+0x49f/frame 0xfffffe0054285db0 sys_fspacectl() at sys_fspacectl+0x5b/frame 0xfffffe0054285e00 amd64_syscall() at amd64_syscall+0x29c/frame 0xfffffe0054285f30 fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0054285f30 Reported by: syzkaller Reviewed by: alc, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D51692 --- sys/vm/vm_page.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index d3772af3c284..abad5efb8a79 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -4717,7 +4717,7 @@ vm_page_grab_pflags(int allocflags) pflags = allocflags & ~(VM_ALLOC_NOWAIT | VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL | - VM_ALLOC_NOBUSY | VM_ALLOC_IGN_SBUSY); + VM_ALLOC_NOBUSY | VM_ALLOC_IGN_SBUSY | VM_ALLOC_NOCREAT); if ((allocflags & VM_ALLOC_NOWAIT) == 0) pflags |= VM_ALLOC_WAITFAIL; if ((allocflags & VM_ALLOC_IGN_SBUSY) != 0) From nobody Mon Aug 4 17:25:45 2025 X-Original-To: dev-commits-src-main@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 4bwk3b3kYMz63H5j; Mon, 04 Aug 2025 17:25:47 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwk3b0jzmz43LB; Mon, 04 Aug 2025 17:25:47 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754328347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DERU+XWQfzaD2Mk6lv9ubRecy+M1rrWYEvkeIo+ZKTI=; b=yJAtBM/WU/s53ZTXog3fscoujCktR+c6ZIHH4VO+5/lumbbnDALpHe2pGeyCwEdyQYQENz qR5KKqnHOdatcXFuxvKz2JgrOvVN6Dc7ylvtZ17vFyVWsj+1+J8aUAgRlCFzJ7+EngrSAf drcyWgc0i/i/+pzl8cU32OyiGmWtbVH0slqOP22+h4jMLymTRO7j5kFSNCWCqicIQk+QOH HwvjqKOJ5563MDI9uTYsRlnKGupzm1shWuuijx+bt7kgcd93+Vkgw/jHiGSJxqT3Cyyw4P eSwVUoE0PENSbgDdLzvpKe4IOcfFj96PguUN43nunoo4ddeMZjg06S05a2z/bA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754328347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DERU+XWQfzaD2Mk6lv9ubRecy+M1rrWYEvkeIo+ZKTI=; b=YKKFkd8YDD1AR4D1KfdPADg8fVHyuI0t7eZ9MvocJJsuvv30AWxeT7WvZU096vTJgeFUm+ 8bl7TTGme88dAU626ornTMUn/R19/JxY2ERT3rsGEYXnpxKRHKOeOuv1wBw4wQQBha2GqX 8qjuQnkFg4wzajPKFIObRo4GliSKw15NkTzUw3ahjVSBpHvnFVyrwVOzZxBdYTB1PIoTSS ihmPeUM1eWictBFVn1RK4PBOy/kli+msKnHwJGWRCvKGtmHb2xfuNP2FoLG37QWDUfw0PK qhGAiz7HLpIeyPInND5grERDNGhnwWHnR+yaZg2NA9ViRErnyIhgYaWNwXQHCQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754328347; a=rsa-sha256; cv=none; b=x8E9Uxk5S5AUtlV0VX/AjJhAQsf5v7sqrZyAv1Lru02EpxYlxciDdI+kUN97tx7ptMhpfB 6HscXPYoKuDa+cFc4udCYaBt8WehnzJXHSuaNWkcDv60oPCXe8L8tw/OlA9L2c0dDRwiYh NAZbkMf+CO2wm8BkPIH/sDuQj9FiJcxkL9mGWU2gI/s77lQkZ4VksJsoJv0KqyBMceNXic 3QT7yS2VFUa4tFodbyp4ud0OencsxTWNAYneVPDPVygoSeH+jUB9Hcg6rnzopdv3O6PoFh v0y/8Sgfb0r6zjcTDLdmEVckwR7M27Drj/8aGvAsZi5EXdbzsxBEOQFlHC08rg== Received: from [IPV6:2601:5c0:4202:5670:3cb2:220f:177b:6972] (unknown [IPv6:2601:5c0:4202:5670:3cb2:220f:177b:6972]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bwk3Z5by1zF8S; Mon, 04 Aug 2025 17:25:46 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Mon, 4 Aug 2025 13:25:45 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 2e0caa7c7e14 - main - libutil: Really fix expand_number(3) Content-Language: en-US To: =?UTF-8?Q?Dag-Erling_Sm=C3=B8rgrav?= , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508021406.572E6Y5t034393@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: <202508021406.572E6Y5t034393@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 8/2/25 10:06, Dag-Erling Smørgrav wrote: > The branch main has been updated by des: > > URL: https://cgit.FreeBSD.org/src/commit/?id=2e0caa7c7e14d7bdc89ec43be9bc848abe1ca264 > > commit 2e0caa7c7e14d7bdc89ec43be9bc848abe1ca264 > Author: Dag-Erling Smørgrav > AuthorDate: 2025-08-02 14:05:36 +0000 > Commit: Dag-Erling Smørgrav > CommitDate: 2025-08-02 14:05:36 +0000 > > libutil: Really fix expand_number(3) > > It is unclear whether this function was originally intended to support > negative numbers. The original implementation used signed integers, > but actually giving it a negative number as input would have invoked > undefined behavior, and the comments (since removed) only mentioned > positive numbers. Fifteen years ago, I “fixed” this by changing the > type from signed to unsigned. However, it would still have accepted > an input with a leading minus sign (though it would have returned its > absolute value). Fifteen years on, change the type back to signed and > fix the logic so it correctly handles both positive and negative > numbers without invoking undefined behavior. This makes it a better > match for humanize_number(3), which it is supposed to complement. > > Fixes: bbb2703b4f46 > Reviewed by: jhb > Differential Revision: https://reviews.freebsd.org/D51542 > --- > lib/libutil/expand_number.3 | 56 +++++++++++++++++++------------ > lib/libutil/expand_number.c | 82 ++++++++++++++++++++++++++++++++++----------- > lib/libutil/libutil.h | 2 +- > usr.sbin/ctld/conf.cc | 12 ++++--- > usr.sbin/ctld/parse.y | 26 +++++++------- > 5 files changed, 118 insertions(+), 60 deletions(-) > > diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc > index e86b44ee5004..f3285ebf9d56 100644 > --- a/usr.sbin/ctld/conf.cc > +++ b/usr.sbin/ctld/conf.cc > @@ -409,7 +409,8 @@ lun_set_blocksize(size_t value) > bool > lun_set_device_type(const char *value) > { > - uint64_t device_type; > + const char *errstr; > + int device_type; > > if (strcasecmp(value, "disk") == 0 || > strcasecmp(value, "direct") == 0) > @@ -421,9 +422,12 @@ lun_set_device_type(const char *value) > strcasecmp(value, "dvd") == 0 || > strcasecmp(value, "dvdrom") == 0) > device_type = T_CDROM; > - else if (expand_number(value, &device_type) != 0 || device_type > 15) { > - log_warnx("invalid device-type \"%s\" for lun \"%s\"", value, > - lun->l_name); > + else { > + device_type = strtonum(value, 0, 15, &errstr); > + if (errstr != NULL) { > + log_warnx("invalid device-type \"%s\" for lun \"%s\"", value, > + lun->l_name); > + } > return (false); This breaks any integer device types. The return (false) should only be used in the error case. I will fix as part of my other ctld changes. -- John Baldwin From nobody Mon Aug 4 18:37:02 2025 X-Original-To: dev-commits-src-main@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 4bwldp6wjVz63Mk3; Mon, 04 Aug 2025 18:37:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwldp5txpz48PF; Mon, 04 Aug 2025 18:37:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754332622; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wvoqAbh0qWyiO3xCluoljg749joLnm9a7wOmGr6Xwl4=; b=VPWqDfAhryPLAf9xJzZCIsLYdh8RYKxkECF+BsosWphyit3cZhTu+l99W44/Yh0j2DklJp ZE5Kri2GzaZqBsX1XIacSS2RIC8Dyg54RG8MVZp9Ujs0QWz0tImralCXyxMNQrQw5i7n3o jqj29Gy8sK4f9sb1pzYmpie5HzLlkp/42X5DMKBCWCqiGJ2zd3NxBiDZ5WdeY/pjLzOeIh JYI3s+qsp99sUHexup2lM/hY725E4cJHE42t/De82QvJB9Uka0nkbqGbre3twQKmUZpy2K cead/ycHQPhRgp4oAUZu0YV0kFVJUIf9Uk7wyGqmRu+IidW7pZh7xr696ROJGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754332622; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wvoqAbh0qWyiO3xCluoljg749joLnm9a7wOmGr6Xwl4=; b=b+ODMGKnfoVyGWtA6f8cjloRdq7nXj4XyVAJHAeF/ho2RdybG+ZdVOqktIPVdLv1OnFSkq SZIO7s3Cs4uSTj8hSgNb/PW2GJuC8scq1icuoKOoOaTN9rSC/NMpBFsQ/gD+AnQdyFm+D8 pZXeGGK1tKIk8+ipdQS73qV7fnt6e+74OAF6JH2LZqPaVdoIqKKC+kO0R2D1m5vfe7wFb4 VEjYYbeL8zK1N3XpgQjtJfHk8tolG6qE6RNaQYlPNyQtIGKRa7WQeyC/nCvFWzuLd0W5sG 3A17oRSN2VwBPWMv7Fj25Kl1KIi2BvLPpIVaN/4tC8vA87N3CV8gcGQVUFp/cA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754332622; a=rsa-sha256; cv=none; b=QCJndMm2Kr9bONBS/klk0C8wDjyrbg/DwdVAvW2k7pW9z6/Hqm2JvzS4vtNqcg8+/UPGfn Jjti9KdbPMnOpEAj/dEhPxgQXBDpGUMc4nq+gqEJPG2OeU4/EPzGi5Z8veEB3ydJgqKBIN t1K/fr4QaiVYuDlVolvN6tZFxp7Rk30oFHf7b/8LrBn4W6+HTE3aYwM1DhDWHnW8xTwXpb sQVyrjQj3MUmMVWqzsG2SnGPaFRZFL7NFNrgUBpc3ZdxVo/iepwklyEeVe/tajCbSB8uKX HBKtfZtZ607QbTxZlEkh6jb3onIMeEgnyo43DBH67WZyfD8p/v/cJi3ljdRd6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwldp5CLgz11Lx; Mon, 04 Aug 2025 18:37:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Ib2cl066997; Mon, 4 Aug 2025 18:37:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Ib28u066994; Mon, 4 Aug 2025 18:37:02 GMT (envelope-from git) Date: Mon, 4 Aug 2025 18:37:02 GMT Message-Id: <202508041837.574Ib28u066994@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: a13ddd6210f3 - main - zfsd: don't try to fix an OFFLINE condition List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a13ddd6210f349dec341eba0506b5f2395a7a2d6 Auto-Submitted: auto-generated The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=a13ddd6210f349dec341eba0506b5f2395a7a2d6 commit a13ddd6210f349dec341eba0506b5f2395a7a2d6 Author: Alan Somers AuthorDate: 2025-05-02 12:45:32 +0000 Commit: Alan Somers CommitDate: 2025-08-04 16:00:52 +0000 zfsd: don't try to fix an OFFLINE condition If the system administrator does "zpool offline", he's doing it for a reason. zfsd shouldn't consider an offline disk to be an event that requires automatic healing. Don't online it in response to a GEOM event, and don't try to activate a hotspare to take over from it. MFC after: 2 weeks Sponsored by: ConnectWise --- cddl/usr.sbin/zfsd/case_file.cc | 18 +++++- cddl/usr.sbin/zfsd/zfsd_event.cc | 7 +++ tests/sys/cddl/zfs/tests/zfsd/Makefile | 2 + .../cddl/zfs/tests/zfsd/zfsd_offline_001_neg.ksh | 64 +++++++++++++++++++++ .../cddl/zfs/tests/zfsd/zfsd_offline_002_neg.ksh | 66 ++++++++++++++++++++++ tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh | 60 ++++++++++++++++++++ 6 files changed, 215 insertions(+), 2 deletions(-) diff --git a/cddl/usr.sbin/zfsd/case_file.cc b/cddl/usr.sbin/zfsd/case_file.cc index 7adfb08b75c6..852767aeb227 100644 --- a/cddl/usr.sbin/zfsd/case_file.cc +++ b/cddl/usr.sbin/zfsd/case_file.cc @@ -299,6 +299,15 @@ CaseFile::ReEvaluate(const string &devPath, const string &physPath, Vdev *vdev) PoolGUIDString().c_str(), VdevGUIDString().c_str()); return (/*consumed*/false); } + if (VdevState() == VDEV_STATE_OFFLINE) { + /* + * OFFLINE is an administrative decision. No need for zfsd to + * do anything. + */ + syslog(LOG_INFO, "CaseFile::ReEvaluate(%s,%s): Pool/Vdev ignored", + PoolGUIDString().c_str(), VdevGUIDString().c_str()); + return (/*consumed*/false); + } if (vdev != NULL && ( vdev->PoolGUID() == m_poolGUID @@ -401,7 +410,8 @@ CaseFile::ReEvaluate(const ZfsEvent &event) return (/*consumed*/true); } else if (event.Value("type") == "sysevent.fs.zfs.config_sync") { RefreshVdevState(); - if (VdevState() < VDEV_STATE_HEALTHY) + if (VdevState() < VDEV_STATE_HEALTHY && + VdevState() != VDEV_STATE_OFFLINE) consumed = ActivateSpare(); } @@ -694,6 +704,11 @@ CaseFile::CloseIfSolved() switch (VdevState()) { case VDEV_STATE_HEALTHY: /* No need to keep cases for healthy vdevs */ + case VDEV_STATE_OFFLINE: + /* + * Offline is a deliberate administrative action. zfsd + * doesn't need to do anything for this state. + */ Close(); return (true); case VDEV_STATE_REMOVED: @@ -710,7 +725,6 @@ CaseFile::CloseIfSolved() */ case VDEV_STATE_UNKNOWN: case VDEV_STATE_CLOSED: - case VDEV_STATE_OFFLINE: /* * Keep open? This may not be the correct behavior, * but it's what we've always done diff --git a/cddl/usr.sbin/zfsd/zfsd_event.cc b/cddl/usr.sbin/zfsd/zfsd_event.cc index 7a19b95abeed..afdabd99a8c3 100644 --- a/cddl/usr.sbin/zfsd/zfsd_event.cc +++ b/cddl/usr.sbin/zfsd/zfsd_event.cc @@ -355,6 +355,13 @@ ZfsEvent::Process() const Vdev vdev(zpl.front(), vdevConfig); caseFile = &CaseFile::Create(vdev); + if (caseFile->VdevState() == VDEV_STATE_OFFLINE) { + /* + * An administrator did this deliberately. It's not considered + * an error that zfsd must fix. + */ + return (false); + } if (caseFile->ReEvaluate(*this) == false) { stringstream msg; int priority = LOG_INFO; diff --git a/tests/sys/cddl/zfs/tests/zfsd/Makefile b/tests/sys/cddl/zfs/tests/zfsd/Makefile index e34e24b40906..588ca6e6c145 100644 --- a/tests/sys/cddl/zfs/tests/zfsd/Makefile +++ b/tests/sys/cddl/zfs/tests/zfsd/Makefile @@ -30,6 +30,8 @@ ${PACKAGE}FILES+= zfsd_hotspare_006_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_007_pos.ksh ${PACKAGE}FILES+= zfsd_hotspare_008_neg.ksh ${PACKAGE}FILES+= zfsd_import_001_pos.ksh +${PACKAGE}FILES+= zfsd_offline_001_neg.ksh +${PACKAGE}FILES+= zfsd_offline_002_neg.ksh ${PACKAGE}FILES+= zfsd_replace_001_pos.ksh ${PACKAGE}FILES+= zfsd_replace_002_pos.ksh ${PACKAGE}FILES+= zfsd_replace_003_pos.ksh diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_001_neg.ksh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_001_neg.ksh new file mode 100644 index 000000000000..de7996976504 --- /dev/null +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_001_neg.ksh @@ -0,0 +1,64 @@ +#!/usr/local/bin/ksh93 -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2025 ConnectWise. All rights reserved. +# Use is subject to license terms. + +. $STF_SUITE/tests/hotspare/hotspare.kshlib + +verify_runnable "global" + +function cleanup +{ + $ZPOOL status $TESTPOOL + if poolexists $TESTPOOL ; then + destroy_pool $TESTPOOL + fi + + partition_cleanup +} + +function verify_assertion +{ + log_must $ZPOOL offline $TESTPOOL $FAULT_DISK + + # Wait a few seconds before verifying the state + $SLEEP 10 + log_must check_state $TESTPOOL "$FAULT_DISK" "OFFLINE" +} + +log_onexit cleanup + +log_assert "ZFSD will not automatically reactivate a disk which has been administratively offlined" + +ensure_zfsd_running + +typeset FAULT_DISK=$DISK0 +typeset POOLDEVS="$DISK0 $DISK1 $DISK2" +set -A MY_KEYWORDS mirror raidz1 +for keyword in "${MY_KEYWORDS[@]}" ; do + log_must create_pool $TESTPOOL $keyword $POOLDEVS + verify_assertion + + destroy_pool "$TESTPOOL" +done diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_002_neg.ksh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_002_neg.ksh new file mode 100644 index 000000000000..7d8dfc62d365 --- /dev/null +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_offline_002_neg.ksh @@ -0,0 +1,66 @@ +#!/usr/local/bin/ksh93 -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2025 ConnectWise. All rights reserved. +# Use is subject to license terms. + +. $STF_SUITE/tests/hotspare/hotspare.kshlib + +verify_runnable "global" + +function cleanup +{ + $ZPOOL status $TESTPOOL + if poolexists $TESTPOOL ; then + destroy_pool $TESTPOOL + fi + + partition_cleanup +} + +function verify_assertion +{ + log_must $ZPOOL offline $TESTPOOL $FAULT_DISK + + # Wait a few seconds before verifying the state + $SLEEP 10 + log_must check_state $TESTPOOL "$FAULT_DISK" "OFFLINE" + log_must check_state $TESTPOOL "$SPARE_DISK" "AVAIL" +} + +log_onexit cleanup + +log_assert "ZFSD will not automatically activate a spare when a disk has been administratively offlined" + +ensure_zfsd_running + +typeset FAULT_DISK=$DISK0 +typeset SPARE_DISK=$DISK3 +typeset POOLDEVS="$DISK0 $DISK1 $DISK2" +set -A MY_KEYWORDS mirror raidz1 +for keyword in "${MY_KEYWORDS[@]}" ; do + log_must create_pool $TESTPOOL $keyword $POOLDEVS spare $SPARE_DISK + verify_assertion + + destroy_pool "$TESTPOOL" +done diff --git a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh index fe4ac4866ed3..b9924500a298 100755 --- a/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh +++ b/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh @@ -483,6 +483,64 @@ zfsd_autoreplace_003_pos_cleanup() ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" } +atf_test_case zfsd_offline_001_neg cleanup +zfsd_offline_001_neg_head() +{ + atf_set "descr" "ZFSD will not automatically reactivate a disk which has been administratively offlined" + atf_set "require.progs" "ksh93 zpool zfs" +} +zfsd_offline_001_neg_body() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/../hotspare/hotspare.cfg + . $(atf_get_srcdir)/zfsd.cfg + + verify_disk_count "$DISKS" 3 + verify_zfsd_running + ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" + ksh93 $(atf_get_srcdir)/zfsd_offline_001_neg.ksh + if [[ $? != 0 ]]; then + save_artifacts + atf_fail "Testcase failed" + fi +} +zfsd_offline_001_neg_cleanup() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/zfsd.cfg + + ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" +} + +atf_test_case zfsd_offline_002_neg cleanup +zfsd_offline_002_neg_head() +{ + atf_set "descr" "ZFSD will not automatically activate a spare when a disk has been administratively offlined" + atf_set "require.progs" "ksh93 zpool zfs" +} +zfsd_offline_002_neg_body() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/../hotspare/hotspare.cfg + . $(atf_get_srcdir)/zfsd.cfg + + verify_disk_count "$DISKS" 4 + verify_zfsd_running + ksh93 $(atf_get_srcdir)/setup.ksh || atf_fail "Setup failed" + ksh93 $(atf_get_srcdir)/zfsd_offline_002_neg.ksh + if [[ $? != 0 ]]; then + save_artifacts + atf_fail "Testcase failed" + fi +} +zfsd_offline_002_neg_cleanup() +{ + . $(atf_get_srcdir)/../../include/default.cfg + . $(atf_get_srcdir)/zfsd.cfg + + ksh93 $(atf_get_srcdir)/cleanup.ksh || atf_fail "Cleanup failed" +} + atf_test_case zfsd_replace_001_pos cleanup zfsd_replace_001_pos_head() { @@ -676,6 +734,8 @@ atf_init_test_cases() atf_add_test_case zfsd_autoreplace_001_neg atf_add_test_case zfsd_autoreplace_002_pos atf_add_test_case zfsd_autoreplace_003_pos + atf_add_test_case zfsd_offline_001_neg + atf_add_test_case zfsd_offline_002_neg atf_add_test_case zfsd_replace_001_pos atf_add_test_case zfsd_replace_002_pos atf_add_test_case zfsd_replace_003_pos From nobody Mon Aug 4 19:46:33 2025 X-Original-To: dev-commits-src-main@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 4bwnB20TjZz63RHx; Mon, 04 Aug 2025 19:46:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB16tGTz4JtC; Mon, 04 Aug 2025 19:46:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336794; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ax7n2BeWnG9DyZVbPP5YFLAw+n+Ystvkl5VCtHGbdHU=; b=SkuMmdrieMXrUqHnL+noat0gYdSuJ0w6aSCI6ICH7cbifek0qx+oPNOLajGDnEljWdIM5x H3xj471jf/QnTfaj4l/UwVZnIvUOdyjzAsM6qUb0nHqTNBcJ0lkSq8Xw3FYx4Hyogu8oP0 5+bc6FppK6UVbei7IIkQrDxwmnXgBELOE4JqI8AdoHNw5r//YkdlGD3ZCAbstz1d/TDxTu 8KJElTjbCXK5AFiQ4EAtw/nlndWsaPgpdmrFS4PRxF/24u3tUGKSOmY5hArTUUPoH12B+r oJOoxIdqaNz720xr5MiVSbWKN+QSez1xIx5bg0OGDUoafo0T0MenhU6DDuFxAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336794; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ax7n2BeWnG9DyZVbPP5YFLAw+n+Ystvkl5VCtHGbdHU=; b=TE7lSJ2DsTyCQPv7BNFTsN50PIXZs6laaObgwunWIseD69GyC2qq7AWab7BircNqbHkEah JxfyGACkMVwF1Bc9wO7Ls9Axyw5ttTA4VFbVWiEOPRWAb9NpJDZ3L4L9cO2c27yf/tB8cQ xS0BzpviWO1vbsbUJVmPj1w/gt7GLo9fdgkSx7QApkKT8zuhHXWIJmVRIaCkOnbTm8skTX 3BXaeXHD/C/uFG7GuIJGyXf7piCCAc7IpWvS9uAbJ2UWoGww0YAypHsQAySe9vQKYajDTC 8Zfx3bDUIxjlHS9/hCWHRctW/fRa3SRQn3D/NO6ukk2n3FA7NKRYcVK94u2Hug== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336794; a=rsa-sha256; cv=none; b=aaj6uhE+BqJflOLCtvuqfbP15H6+mVW2LYhyrsLB4zlrxJXELMuOl831zw9g3f09bpf8S5 xX0vZnC4PgGa2IQSwAOJgYFHewHmt30y9FGVTiCsnfOlw7C7zn+S0NotJPEw3b/Cqzmrkc 5i08HOzdR28tDuCHUxeIfA07Xngu6OcxcNKCONHrHKWFMASKCYlxVcCnPNyKFyApea4gio hBoRwxXFIVhcJzU3yem0FBW/sdpiVXevKDAVHuUrvEnBsfR2k7YIr83RanfIPwj8+aS0fj wqNxhoDlZTrlIMElOu9lKpuDUC/i4rbJc3J9kvOD/JXL85FKG4xBAY9zyV1gGA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB168x8z12qh; Mon, 04 Aug 2025 19:46:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkXfu098598; Mon, 4 Aug 2025 19:46:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkX57098595; Mon, 4 Aug 2025 19:46:33 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:33 GMT Message-Id: <202508041946.574JkX57098595@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 14f2cd780423 - main - ctld: Permit valid integer LUN device types List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 14f2cd78042372d27138a91dcb4f4845fe2e8194 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=14f2cd78042372d27138a91dcb4f4845fe2e8194 commit 14f2cd78042372d27138a91dcb4f4845fe2e8194 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Permit valid integer LUN device types Fixes: 2e0caa7c7e14 ("libutil: Really fix expand_number(3)") Sponsored by: Chelsio Communications --- usr.sbin/ctld/conf.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index f3285ebf9d56..a8da88056d93 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -427,8 +427,8 @@ lun_set_device_type(const char *value) if (errstr != NULL) { log_warnx("invalid device-type \"%s\" for lun \"%s\"", value, lun->l_name); + return (false); } - return (false); } lun->l_device_type = device_type; From nobody Mon Aug 4 19:46:34 2025 X-Original-To: dev-commits-src-main@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 4bwnB31l1zz63RX6; Mon, 04 Aug 2025 19:46:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB309f3z4KG3; Mon, 04 Aug 2025 19:46:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Lnf/8cNTSVaFC70k2XXudxIi8Aay/qrHo6zZ1hBbcBU=; b=jI8nrWAc7GWVumQ7rcHfqCgM61bqef0ES2dG15s/GWdDA+zC4x0a9D8eyGvsUmIwLiBgi6 2JUJPiW3lVsSOiQgXryzk12+3HwNs7DCf19+RQWBsTaYU7WyFnD870h3r3Bp6yumCseADL 6rDGEv7KDgD9QsYC2hH2k1q2TrqEMP6+QgzrbmGjG8JgPkfHneCLkYW8ZiunKp3nqE5Zzn Hu/xhVX6A1T+15upniqoC9f9TCpp5i5QB4ludF/IC9yloC1XA8mYkHG8+phZ2d33fehwQc CTGywlxfuyAIB7FUvJMKKLS7/3mPFjPVTjbZMJc32CC1PwG+UGcl7VouzdAS/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Lnf/8cNTSVaFC70k2XXudxIi8Aay/qrHo6zZ1hBbcBU=; b=XyX8DA5pwJVHDb+Bkk5+1P//SL8dR+HqWy1dP6urjhG9C5/hu3BdSNyvbveIF0yW7td940 lwgoo+AE1NzsxAlbuZ0yPbiMM8l+i1D0QeOagXTZEHHks7r5fuKSoAynybi/NoT2XNjhYl bjbg3E/P0fVa1yKGPwO2D1frUit6DPh1mgoWovDGI/Pd7Q8UmGCZgbGTpCHLdlQVZlXaIw uqRXdNiyJFHMCKwZFDMo/4lSU+xhUa/Vpydk6gb/hOOQnvm02hH1agdwjy5v2SDD+CxXw1 hKEpkxXfSpSpclzHLf7YqH4F8H7IyosLbM7fu9pt5ognT+NoYihdCY3pR84ZGw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336795; a=rsa-sha256; cv=none; b=vuxRpY6LDg70Ofvqou6BwwyJ+nnAkk2QruNS8i3fzzGT5+S2kmDV2+JeXrmd/gT3N7JBkC hydR2Tee/fHgMAqLXfnGb3g1mDZpwBlc0DPN5rFutSB1QrZG7AYpPRjY96XN6xZbS9UDBR 9XhWbXJv7cDixMXDEemERn63T76rdWrE7FRdFG2qSuCjXMLhZpASNbu7VikxqeKQsPLjqw 2FilxiM12jB+wox3RaySx3kIFdkrJJHf67F989PKeN1HzPnMKOtLT8VpIDl3ZaM2nu/AWI 2fXIJmyT+hn3iHXNcLa58ohcHdCSBELxuBZnQ2IAIyIrU+RoNIXeSY1SBaE92Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB26W3jz13B5; Mon, 04 Aug 2025 19:46:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkYxQ098632; Mon, 4 Aug 2025 19:46:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkYo3098629; Mon, 4 Aug 2025 19:46:34 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:34 GMT Message-Id: <202508041946.574JkYo3098629@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ec1656181790 - main - bsd.man.mk: Support manual pages with colons in the filename List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ec16561817902d480f8ebde3d060844b1997d8de Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ec16561817902d480f8ebde3d060844b1997d8de commit ec16561817902d480f8ebde3d060844b1997d8de Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 bsd.man.mk: Support manual pages with colons in the filename This requires extra escaping since make interprets the colons as terminating a rule. Discussed with: sjg Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- share/mk/bsd.man.mk | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk index a5a4fd528268..3444e9612a20 100644 --- a/share/mk/bsd.man.mk +++ b/share/mk/bsd.man.mk @@ -137,13 +137,15 @@ ZEXT= CLEANFILES+= ${${__group}:T:S/$/${FILTEXTENSION}/g} CLEANFILES+= ${${__group}:T:S/$/${CATEXT}${FILTEXTENSION}/g} .for __page in ${${__group}} -.for __target in ${__page:T:S/$/${FILTEXTENSION}/g} +# Escape colons in target names to support manual pages whose +# filenames contain colons. +.for __target in ${__page:T:S/:/\:/g:S/$/${FILTEXTENSION}/g} all-man: ${__target} ${__target}: ${__page} ${MANFILTER} < ${.ALLSRC} > ${.TARGET} .endfor .if defined(MANBUILDCAT) && !empty(MANBUILDCAT) -.for __target in ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g} +.for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}${FILTEXTENSION}/g} all-man: ${__target} ${__target}: ${__page} ${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} > ${.TARGET} @@ -156,7 +158,7 @@ ${__target}: ${__page} CLEANFILES+= ${${__group}:T:S/$/${CATEXT}/g} .if defined(MANBUILDCAT) && !empty(MANBUILDCAT) .for __page in ${${__group}} -.for __target in ${__page:T:S/$/${CATEXT}/g} +.for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}/g} all-man: ${__target} ${__target}: ${__page} ${MANDOC_CMD} ${.ALLSRC} > ${.TARGET} @@ -176,7 +178,7 @@ ZEXT= ${MCOMPRESS_EXT} CLEANFILES+= ${${__group}:T:S/$/${MCOMPRESS_EXT}/g} CLEANFILES+= ${${__group}:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} .for __page in ${${__group}} -.for __target in ${__page:T:S/$/${MCOMPRESS_EXT}/} +.for __target in ${__page:T:S/:/\:/g:S/$/${MCOMPRESS_EXT}/} all-man: ${__target} ${__target}: ${__page} .if defined(MANFILTER) @@ -186,7 +188,7 @@ ${__target}: ${__page} .endif .endfor .if defined(MANBUILDCAT) && !empty(MANBUILDCAT) -.for __target in ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/} +.for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}${MCOMPRESS_EXT}/} all-man: ${__target} ${__target}: ${__page} .if defined(MANFILTER) From nobody Mon Aug 4 19:46:35 2025 X-Original-To: dev-commits-src-main@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 4bwnB42xdNz63QyX; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB40wHmz4KB3; Mon, 04 Aug 2025 19:46:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=osixMdSltFrFfocyeKMTFpjQSbK040sCNghRRTECQhA=; b=I+eVpAtmt+2hS77jYEXofv4hO3tU+Da9TjdEZJgGbO1jV4pxAtT08A1SqQ7RYQnFS3AS31 Lhf6cZtDKQukB/CEBqLvRL/4fUHoSd6ShLLVxYr0u2fYdgwUwHvS7zrASyqiEVb//ZusSJ 5v8E+51vv0ZlIeeqBNdt7cNnPqOGV9mmA2yYxI2HQlxadOH0TWm+gHZE3EYI6kKfoXayNd S7IvNvrMd0MMVrvitqXe7xFi2qOtTrY2oJVCO6fPm232se51PqlSgLOTossIFgfmbZeUoz a+633Qd5lLtWbUoPo+cquY6WMxwdzko8Ds0fO1wL4hnWYvOXdufp0nYLfHph6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=osixMdSltFrFfocyeKMTFpjQSbK040sCNghRRTECQhA=; b=ooOy0tJ0AiuyWnjGBA/Fzc2v1cN7f0Xw0mdXMzNu3F6mUpmO9JRLmHlzpwZnIHKk3wJILT hbu8xaKE8tgv4v13yKehpXfbEX5bIgFSLr0w2qHH79X27FVREDeEFQhVukChk2Ee5dBarm nfHfSrFKvAWVt0QnKI7tJ91LQFsni4QFy1vKWJPVUNSqI+LGPL+16nc5uUVGp9jexzlKcl hB4VsCr8ZjsKxcc4EX2hJcHwjim+HvXZPdoZJYwlnBZiNWvVjQjHOxMweNuVVWh2EUI0LO evb4hMnOThaaBDiA9TWeEfuYrpSkgBf8GJps9+rNJa6KsgchwYdt866dKDpXsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336796; a=rsa-sha256; cv=none; b=k47JFDQgq76KtTO4cyXdez9jNdBPGwArR27Qx43q3p8nvJJlv6f7B9ZmcBDVg/onc7Itia 5MnlCkITavUNgPqiPnDN4MjzIcX622eqNxTYtrEMb8iLDZgt0aZ++FyaZA98XcrnuAFwc8 Ic1/yMxpt71ptDuSP3tpraPkKIKC82SEQu0EbawL6hDTzRh6TJpgOAt7kNEmXiLqDjY+Zo BZL3r6u6MN7aaPQv8tMGc2PP0nhy67uRyNXC6VRyxgsAxaB6f/q8dsWOjZgQJmTbBWSAef uyz18en9G6kg2cTkvZvdfpSb+edT4TxZG05a5XIWr/rA/2EzEH0hS3h0hdMykA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB40G3xz12W5; Mon, 04 Aug 2025 19:46:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkZ9c098669; Mon, 4 Aug 2025 19:46:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkZoB098666; Mon, 4 Aug 2025 19:46:35 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:35 GMT Message-Id: <202508041946.574JkZoB098666@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: b3127a2dc25a - main - libutil++: New library containing C++ utility classes for use in base List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b3127a2dc25ac63cae8e33e6f3dbd3580644fe52 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b3127a2dc25ac63cae8e33e6f3dbd3580644fe52 commit b3127a2dc25ac63cae8e33e6f3dbd3580644fe52 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 libutil++: New library containing C++ utility classes for use in base - freebsd::FILE_up is a wrapper class for std::unique_ptr<> for FILE objects which uses a custom deleter that calls fclose(). - freebsd::malloc_up is a wrapper class for std::unique_ptr<> which uses a custom deleter that calls free(). It is useful for pointers allocated by malloc() such as strdup(). - The freebsd::stringf() functions return a std::string constructed using a printf format string. The current implementation of freebsd::stringf() uses fwopen() where the write function appends to a std::string. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- contrib/mandoc/lib.in | 1 + lib/Makefile | 1 + lib/libutil++/Makefile | 16 +++++++++++ lib/libutil++/freebsd::FILE_up.3 | 41 ++++++++++++++++++++++++++ lib/libutil++/freebsd::malloc_up.3 | 50 ++++++++++++++++++++++++++++++++ lib/libutil++/freebsd::stringf.3 | 48 +++++++++++++++++++++++++++++++ lib/libutil++/libutil++.hh | 55 +++++++++++++++++++++++++++++++++++ lib/libutil++/stringf.cc | 57 +++++++++++++++++++++++++++++++++++++ lib/libutil++/tests/Makefile | 9 ++++++ lib/libutil++/tests/stringf_test.cc | 52 +++++++++++++++++++++++++++++++++ lib/libutil++/tests/up_test.cc | 33 +++++++++++++++++++++ share/mk/src.libnames.mk | 4 +++ 12 files changed, 367 insertions(+) diff --git a/contrib/mandoc/lib.in b/contrib/mandoc/lib.in index 6b17aab5b27b..134614aa6478 100644 --- a/contrib/mandoc/lib.in +++ b/contrib/mandoc/lib.in @@ -131,6 +131,7 @@ LINE("libugidfw", "File System Firewall Interface Library (libugidfw, \\-lugidfw LINE("libulog", "User Login Record Library (libulog, \\-lulog)") LINE("libusbhid", "USB Human Interface Devices Library (libusbhid, \\-lusbhid)") LINE("libutil", "System Utilities Library (libutil, \\-lutil)") +LINE("libutil++", "C++ Utilities Library (libutil++, \\-lutil++)") LINE("libvgl", "Video Graphics Library (libvgl, \\-lvgl)") LINE("libx86_64", "x86_64 Architecture Library (libx86_64, \\-lx86_64)") LINE("libxo", "Text, XML, JSON, and HTML Output Emission Library (libxo, \\-lxo)") diff --git a/lib/Makefile b/lib/Makefile index e0aafcad60d4..e5139b312a75 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -106,6 +106,7 @@ SUBDIR= ${SUBDIR_BOOTSTRAP} \ libugidfw \ libulog \ libutil \ + libutil++ \ ${_libvgl} \ libwrap \ libxo \ diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile new file mode 100644 index 000000000000..ec83a9ad35f9 --- /dev/null +++ b/lib/libutil++/Makefile @@ -0,0 +1,16 @@ +PACKAGE= lib${LIB} +LIB_CXX= util++ +INTERNALLIB= true +SHLIB_MAJOR= 1 +SRCS= stringf.cc + +MAN+= freebsd::FILE_up.3 \ + freebsd::malloc_up.3 \ + freebsd::stringf.3 + +.include + +HAS_TESTS= +SUBDIR.${MK_TESTS}+= tests + +.include diff --git a/lib/libutil++/freebsd::FILE_up.3 b/lib/libutil++/freebsd::FILE_up.3 new file mode 100644 index 000000000000..ea63b1233b43 --- /dev/null +++ b/lib/libutil++/freebsd::FILE_up.3 @@ -0,0 +1,41 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::FILE_UP 3 +.Os +.Sh NAME +.Nm freebsd::FILE_up +.Nd std::unique_ptr specialization for stdio FILE objects +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Ft using FILE_up = std::unique_ptr; +.Sh DESCRIPTION +This class is a specialization of +.Vt std::unique_ptr +for stdio +.Vt FILE +objects. +When a +.Vt FILE +object managed by an instance of this class is disposed, +.Xr fclose 3 +is invoked to dispose of the +.Vt FILE +object. +.Sh EXAMPLES +.Bd -literal -offset indent +freebsd::FILE_up fp(fopen("foo.txt", "w")); +if (!fp) + err(1, "fopen"); +fprintf(fp.get(), "hello\n"); +// `fp' is implicitly closed on destruction +.Ed +.Sh SEE ALSO +.Xr fclose 3 , +.Xr fopen 3 diff --git a/lib/libutil++/freebsd::malloc_up.3 b/lib/libutil++/freebsd::malloc_up.3 new file mode 100644 index 000000000000..b18e7854213a --- /dev/null +++ b/lib/libutil++/freebsd::malloc_up.3 @@ -0,0 +1,50 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::MALLOC_UP 3 +.Os +.Sh NAME +.Nm freebsd::malloc_up +.Nd std::unique_ptr specialization for objects allocated via malloc +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Ft using malloc_up = std::unique_ptr>; +.Sh DESCRIPTION +This class is a specialization of +.Vt std::unique_ptr +which invokes +.Xr free 3 +instead of +.Fn delete +when an object is disposed. +While explicit calls to +.Xr malloc 3 +should be avoided in C++ code, +this class can be useful to manage an object allocated by an existing API +which uses +.Xr malloc 3 +internally such as +.Xr scandir 3 . +Note that the type of the underlying object must be used as the first +template argument similar to std::unique_ptr. +.Sh EXAMPLES +This example uses +.Xr strdup 3 +for simplicity, +but new C++ code should generally not use +.Xr strdup 3 : +.Bd -literal -offset indent +freebsd::malloc_up my_string(strdup("foo")); +// `mystring' is implicitly freed on destruction +.Ed +.Sh SEE ALSO +.Xr free 3 , +.Xr malloc 3 , +.Xr scandir 3 , +.Xr strdup 3 diff --git a/lib/libutil++/freebsd::stringf.3 b/lib/libutil++/freebsd::stringf.3 new file mode 100644 index 000000000000..341fedef4343 --- /dev/null +++ b/lib/libutil++/freebsd::stringf.3 @@ -0,0 +1,48 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::STRINGF 3 +.Os +.Sh NAME +.Nm freebsd::stringf +.Nd build a std::string using stdio formatting +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Ft std::string +.Fn freebsd::stringf "const char *fmt" "..." +.Ft std::string +.Fn freebsd::stringf "const char *fmt" "va_list ap" +.Sh DESCRIPTION +These functions construct a +.Vt std::string +object containing a formatted string. +The output of the string is dictated by the +.Fa fmt +argument and additional arguments using the same conventions documented in +.Xr printf 3 . +The first form provides functionality similar to +.Xr asprintf 3 +and the second form is similar to +.Xr vasprintf 3 . +.Sh RETURN VALUES +These functions return a std::string object. +.Sh EXCEPTIONS +These functions may throw one of the following exceptions: +.Bl -tag -width Er +.It Bq Er std::bad_alloc +Failed to allocate memory. +.It Bq Er std::length_error +The result would exceeed the maximum possible string size. +.El +.Sh EXAMPLES +.Bd -literal -offset indent +std::string s = freebsd::stringf("hello %s", "world"); +.Ed +.Sh SEE ALSO +.Xr asprintf 3 diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh new file mode 100644 index 000000000000..93cc2d9e6650 --- /dev/null +++ b/lib/libutil++/libutil++.hh @@ -0,0 +1,55 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#ifndef __LIBUTILPP_HH__ +#define __LIBUTILPP_HH__ + +#include +#include +#include +#include + +namespace freebsd { + /* + * FILE_up is a std::unique_ptr<> for FILE objects which uses + * fclose() to destroy the wrapped pointer. + */ + struct fclose_deleter { + void operator() (std::FILE *fp) const + { + std::fclose(fp); + } + }; + + using FILE_up = std::unique_ptr; + + /* + * malloc_up is a std::unique_ptr<> which uses free() to + * destroy the wrapped pointer. This can be used to wrap + * pointers allocated implicitly by malloc() such as those + * returned by strdup(). + */ + template + struct free_deleter { + void operator() (T *p) const + { + std::free(p); + } + }; + + template + using malloc_up = std::unique_ptr>; + + /* + * Returns a std::string containing the same output as + * sprintf(). Throws std::bad_alloc if an error occurs. + */ + std::string stringf(const char *fmt, ...) __printflike(1, 2); + std::string stringf(const char *fmt, std::va_list ap); +} + +#endif /* !__LIBUTILPP_HH__ */ diff --git a/lib/libutil++/stringf.cc b/lib/libutil++/stringf.cc new file mode 100644 index 000000000000..8c24167d70ac --- /dev/null +++ b/lib/libutil++/stringf.cc @@ -0,0 +1,57 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#include +#include +#include + +#include "libutil++.hh" + +static int +stringf_write(void *cookie, const char *buf, int len) +{ + std::string *str = reinterpret_cast(cookie); + try { + str->append(buf, len); + } catch (std::bad_alloc) { + errno = ENOMEM; + return (-1); + } catch (std::length_error) { + errno = EFBIG; + return (-1); + } + return (len); +} + +std::string +freebsd::stringf(const char *fmt, va_list ap) +{ + std::string str; + freebsd::FILE_up fp(fwopen(reinterpret_cast(&str), + stringf_write)); + + vfprintf(fp.get(), fmt, ap); + + if (ferror(fp.get())) + throw std::bad_alloc(); + fp.reset(nullptr); + + return str; +} + +std::string +freebsd::stringf(const char *fmt, ...) +{ + std::va_list ap; + std::string str; + + va_start(ap, fmt); + str = freebsd::stringf(fmt, ap); + va_end(ap); + + return str; +} diff --git a/lib/libutil++/tests/Makefile b/lib/libutil++/tests/Makefile new file mode 100644 index 000000000000..81b7be4f5660 --- /dev/null +++ b/lib/libutil++/tests/Makefile @@ -0,0 +1,9 @@ +PACKAGE= tests + +ATF_TESTS_CXX+= stringf_test +ATF_TESTS_CXX+= up_test + +CFLAGS+= -I${SRCTOP}/lib/libutil++ +LIBADD+= util++ + +.include diff --git a/lib/libutil++/tests/stringf_test.cc b/lib/libutil++/tests/stringf_test.cc new file mode 100644 index 000000000000..5b8ef4ad54a9 --- /dev/null +++ b/lib/libutil++/tests/stringf_test.cc @@ -0,0 +1,52 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#include +#include +#include + +#include + +ATF_TEST_CASE_WITHOUT_HEAD(basic); +ATF_TEST_CASE_BODY(basic) +{ + ATF_REQUIRE_EQ("foo", freebsd::stringf("foo")); + ATF_REQUIRE_EQ("bar", freebsd::stringf("%s", "bar")); + ATF_REQUIRE_EQ("42", freebsd::stringf("%u", 42)); + ATF_REQUIRE_EQ("0xdeadbeef", freebsd::stringf("%#x", 0xdeadbeef)); + ATF_REQUIRE_EQ("", freebsd::stringf("")); + ATF_REQUIRE_EQ("this is a test", freebsd::stringf("this %s test", + "is a")); +} + +static std::string +stringv(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + std::string str = freebsd::stringf(fmt, ap); + va_end(ap); + return (str); +} + +ATF_TEST_CASE_WITHOUT_HEAD(va_list); +ATF_TEST_CASE_BODY(va_list) +{ + ATF_REQUIRE_EQ("foo", stringv("foo")); + ATF_REQUIRE_EQ("bar", stringv("%s", "bar")); + ATF_REQUIRE_EQ("42", stringv("%u", 42)); + ATF_REQUIRE_EQ("0xdeadbeef", stringv("%#x", 0xdeadbeef)); + ATF_REQUIRE_EQ("", stringv("")); + ATF_REQUIRE_EQ("this is a test", stringv("this %s test", "is a")); +} + +ATF_INIT_TEST_CASES(tcs) +{ + ATF_ADD_TEST_CASE(tcs, basic); + ATF_ADD_TEST_CASE(tcs, va_list); +} diff --git a/lib/libutil++/tests/up_test.cc b/lib/libutil++/tests/up_test.cc new file mode 100644 index 000000000000..3f344054c334 --- /dev/null +++ b/lib/libutil++/tests/up_test.cc @@ -0,0 +1,33 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#include +#include + +#include + +ATF_TEST_CASE_WITHOUT_HEAD(FILE_up); +ATF_TEST_CASE_BODY(FILE_up) +{ + FILE *fp = fopen("/dev/null", "r"); + ATF_REQUIRE(fp != NULL); + ATF_REQUIRE(fileno(fp) != -1); + + freebsd::FILE_up f(fp); + ATF_REQUIRE_EQ(fileno(fp), fileno(f.get())); + + f.reset(); + ATF_REQUIRE_EQ(f.get(), nullptr); + + ATF_REQUIRE_EQ(-1, fileno(fp)); + ATF_REQUIRE_EQ(EBADF, errno); +} + +ATF_INIT_TEST_CASES(tcs) +{ + ATF_ADD_TEST_CASE(tcs, FILE_up); +} diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 0fe352dffaf4..283a99496b9f 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -78,6 +78,7 @@ _INTERNALLIBS= \ smdb \ smutil \ telnet \ + util++ \ vers \ wpaap \ wpacommon \ @@ -694,6 +695,9 @@ LIBPKGECC?= ${LIBPKGECCDIR}/libpkgecc${PIE_SUFFIX}.a LIBPMCSTATDIR= ${_LIB_OBJTOP}/lib/libpmcstat LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a +LIBUTIL++DIR= ${_LIB_OBJTOP}/lib/libutil++ +LIBUTIL++?= ${LIBUTIL++DIR}/libutil++${PIE_SUFFIX}.a + LIBWPAAPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/ap LIBWPAAP?= ${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a From nobody Mon Aug 4 19:46:37 2025 X-Original-To: dev-commits-src-main@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 4bwnB631JHz63Ql1; Mon, 04 Aug 2025 19:46:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB52QTjz4KD1; Mon, 04 Aug 2025 19:46:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336797; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Y4Ol4N8ob9iiW3lvGktyTz9lbyMV48+NX07rbqeTXtE=; b=uDPPxMnMDFIi+XfoFKm9AEgRpQNXiGWhZNxvh3l+B7HfvXugg9Rof83kR5XUp4PNc8nXTN BuoZFSrpr7BVMYOjXqOZxu6nxFXYWj1s9Z7FI9F4Eu5vcmlnHK7PG4K1o6d6DeOMAYHv60 Y96L1+D3sVPEmkQ4clqscp9eN1l7CMDUQby5B05a75+SBILAywlQlBcwqOb2igyrMToNO4 eEc3bzrz1JWCP1J5oF8qPNChaW0sY0cn5fxNfcY/7j/B9aQWS6fwi0lS8AF9AFUDLoP9O8 tPxXwDrRkQ7TU+o5PkX1i3JQeCtOp5sRlZ23hoMcmsEZHpj6+/4U1DWIPapPsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336797; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Y4Ol4N8ob9iiW3lvGktyTz9lbyMV48+NX07rbqeTXtE=; b=ti9yilPwccGP+au9HG1ot6u5TayFsfLsgNtRAVyxCyt1L0QHyj2VLZCjwQjb3kszMqPYp8 zTeCDAYnpNT/BhSIJk1QVMJTVarb928XpInbY9D1At8RdGm2EWAPpo6pNpCmw6YHusIFdc XylcyOfuxGl3c4ibKw+hfEFcXzoD0tBEul7oPS7gyxPM/9EsOAmg30GD+7bNpuxmnCxYWV 8GHEWCmM5qqOz/p9rorwtsgmCvtrkvImNa1Tm+RSZURBpJfvQ8s4GtEQZTOH33dKU+RaEW h8+8qEi8Z1GWV7YtphpUsewLEa6tYtV+3rzWzK9NGSCqppuapX7edL6zt502YQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336797; a=rsa-sha256; cv=none; b=xSu5FvmPsliM2p5TNJswsO0snG64ldhz+ju1IDlx4ixAPLpY+tgDW3SFtD5R2BgzlhA42n N18j6HBCpzYuB4HKTUvQsxx7HeTF8YAueihGf/RiDrvDRM8kxo/qXktbC7UsmtyN/yoB2m v5IqNvPcDJDBEqRHFMYRt2skuuyb1lu+FrvNPBFz9dKvtDnkB8ud7WC52tvgXikBi5nYxQ wa1lD3qfAnwN4oN92kLij+9l0jyfIGm4CpQQHCTsc7RLBKNCoxKHs9MBs06cIxgE3255Il eXVbADtuQlr4mOAn4wZX7fEkSwLJrs3kNa9xa/oV7K97eTQeQQCrC/3XeEa0rw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB50mVLz13B6; Mon, 04 Aug 2025 19:46:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkbte098714; Mon, 4 Aug 2025 19:46:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkbGU098711; Mon, 4 Aug 2025 19:46:37 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:37 GMT Message-Id: <202508041946.574JkbGU098711@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 34e8d66412cd - main - ctld: Rename {ctld,isns}.h to {ctld,isns}.hh List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 34e8d66412cd81d020f0e75d078a4404ec39cf5a Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=34e8d66412cd81d020f0e75d078a4404ec39cf5a commit 34e8d66412cd81d020f0e75d078a4404ec39cf5a Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Rename {ctld,isns}.h to {ctld,isns}.hh Subsequent commits will use C++ in these headers rather than only C. conf.h remains as a C-only header since it is intended for use by the C code generated from parse.y. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 2 +- usr.sbin/ctld/ctld.cc | 4 ++-- usr.sbin/ctld/{ctld.h => ctld.hh} | 6 +++--- usr.sbin/ctld/discovery.cc | 2 +- usr.sbin/ctld/isns.cc | 4 ++-- usr.sbin/ctld/{isns.h => isns.hh} | 6 +++--- usr.sbin/ctld/kernel.cc | 2 +- usr.sbin/ctld/login.cc | 2 +- usr.sbin/ctld/uclparse.cc | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index a8da88056d93..1750f7ab96c6 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -40,7 +40,7 @@ #include #include "conf.h" -#include "ctld.h" +#include "ctld.hh" static struct conf *conf = NULL; static struct auth_group *auth_group = NULL; diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index ff23db6c5293..ba65befa2d0a 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -52,8 +52,8 @@ #include #include "conf.h" -#include "ctld.h" -#include "isns.h" +#include "ctld.hh" +#include "isns.hh" static bool timed_out(void); #ifdef ICL_KERNEL_PROXY diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.hh similarity index 99% rename from usr.sbin/ctld/ctld.h rename to usr.sbin/ctld/ctld.hh index 2cc9139fed1d..b1757f98ac81 100644 --- a/usr.sbin/ctld/ctld.h +++ b/usr.sbin/ctld/ctld.hh @@ -28,8 +28,8 @@ * SUCH DAMAGE. */ -#ifndef CTLD_H -#define CTLD_H +#ifndef __CTLD_HH__ +#define __CTLD_HH__ #include #include @@ -359,4 +359,4 @@ void discovery(struct ctld_connection *conn); void set_timeout(int timeout, int fatal); -#endif /* !CTLD_H */ +#endif /* !__CTLD_HH__ */ diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index 3ae18786f1c2..3cf1b94a9619 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -38,7 +38,7 @@ #include #include -#include "ctld.h" +#include "ctld.hh" #include "iscsi_proto.h" static struct pdu * diff --git a/usr.sbin/ctld/isns.cc b/usr.sbin/ctld/isns.cc index e4d3744b84dc..2f1e0094c0bf 100644 --- a/usr.sbin/ctld/isns.cc +++ b/usr.sbin/ctld/isns.cc @@ -40,8 +40,8 @@ #include #include -#include "ctld.h" -#include "isns.h" +#include "ctld.hh" +#include "isns.hh" struct isns_req * isns_req_alloc(void) diff --git a/usr.sbin/ctld/isns.h b/usr.sbin/ctld/isns.hh similarity index 98% rename from usr.sbin/ctld/isns.h rename to usr.sbin/ctld/isns.hh index 70404b6f74e1..259a98f8b6be 100644 --- a/usr.sbin/ctld/isns.h +++ b/usr.sbin/ctld/isns.hh @@ -24,8 +24,8 @@ * SUCH DAMAGE. */ -#ifndef _ISNS_H -#define _ISNS_H +#ifndef __ISNS_HH__ +#define __ISNS_HH__ #define ISNS_VERSION 0x0001 @@ -87,4 +87,4 @@ int isns_req_send(int s, struct isns_req *req); int isns_req_receive(int s, struct isns_req *req); uint32_t isns_req_get_status(struct isns_req *req); -#endif /* _ISNS_H */ +#endif /* __ISNS_HH__ */ diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index 0cd0eaff6c6f..fbe6d9a2f22a 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -68,7 +68,7 @@ #include #include -#include "ctld.h" +#include "ctld.hh" #ifdef ICL_KERNEL_PROXY #include diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index 961f57eb03fb..e891a3ed4b67 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -41,7 +41,7 @@ #include #include -#include "ctld.h" +#include "ctld.hh" #include "iscsi_proto.h" #define MAX_DATA_SEGMENT_LENGTH (128 * 1024) diff --git a/usr.sbin/ctld/uclparse.cc b/usr.sbin/ctld/uclparse.cc index 1eb9f7736e4b..8788e1cbb981 100644 --- a/usr.sbin/ctld/uclparse.cc +++ b/usr.sbin/ctld/uclparse.cc @@ -42,7 +42,7 @@ #include #include "conf.h" -#include "ctld.h" +#include "ctld.hh" static bool uclparse_toplevel(const ucl_object_t *); static bool uclparse_chap(const char *, const ucl_object_t *); From nobody Mon Aug 4 19:46:38 2025 X-Original-To: dev-commits-src-main@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 4bwnB72Sgdz63RJ7; Mon, 04 Aug 2025 19:46:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB62DJ3z4KGQ; Mon, 04 Aug 2025 19:46:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336798; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7T7uPJuHSlKAsrn3aaGKJ5+24RV5aIocRY6UCSiWQ+E=; b=lKR5hop53djBj/WM+eFuxT44fziZBdl9nGGAPppPZwUhaMCC4g0+wtS2AcR4mRVw4bLw8S MxXquylp9z4cweO88FEvAMLPLTybPZII1wPghF5uHxnX2Jw4XnCckn/KyN+tfJpcyoh1aa HgUpNliXdRwEV8EvbYFqn6ZNjCU7Xfs6eyVebsKeAcbye2z5Qhv35CmEpimGUQO7Fol/0W iosBDEvcR8grYT9/c2fld9HREHC+z+dayRL8wh+LxG8CeWiT0owKjGOk0sYtabwrgPROXu RLVGUAcMwm5uvjeLSxlFR+uqMT6b7qTYLNb3UxrxsS7xAhrSUBIdp+VMMZ1/YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336798; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7T7uPJuHSlKAsrn3aaGKJ5+24RV5aIocRY6UCSiWQ+E=; b=Yt0b6iozre+fiK02JQVZuEp6WuD3RpYFOt7JQAm30HchcyGMnQdEGTSu+NISi3epSa89D4 x5P7LnkpPGP8T7G1WLoJkMc1V/1Pyu7KiNWlYDRV+wn5/IlLXRJL1JNFBzSdy0W3o/5xuC 9z/kRxPmUjGcvSe91csjQljjMWIMMv2yuIMuGNY2UlpSspUiqjtg6dXD+AyRXk3OBEwhku 1k3SXZnzGHYNEY9o35hB+mhHRDLOik2oSG953Mmo6S3y5lZDcY1pqX6w98Yz3U+iovt4l/ iIrpJNT7Ukub9rVJxI3elEAzbvEVwTFL/e7Wh1t6T9HfNvGfq26R4LPkKa9lUQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336798; a=rsa-sha256; cv=none; b=jEhvN2EDnUfn0w1XhheeiA+eD/dbknx1+bfKSKGQTU08RFCxtH5+anNkbSyDT42zqDMjZ9 ZFDyPIRlAIDJ5vU+gOQ7x3FAbESVs/smvexjKlbwmcCmEA2zimiRoCPJ0KBtWF4cRuchB8 RERIlETk2hUPONyv+h7Q5X5IOsmTw4019uKB+8TZod/A9K2yoQcwpU2VB6T9JAZfBURag8 XRhqk3Rhb7nX0d866/Gw7rZiTneMUQEgwjFiC+eHXbNMIn8oGdr3mLOOIc8+jJt5260cRn iPaeKl+KVSKwsqDE2RxU9Ak+iBH/0flXuySEfuhIR0v1J0UhrBAkXhWLf02y0A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB61kM5z12lg; Mon, 04 Aug 2025 19:46:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkctI098752; Mon, 4 Aug 2025 19:46:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkc3Q098749; Mon, 4 Aug 2025 19:46:38 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:38 GMT Message-Id: <202508041946.574Jkc3Q098749@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: e01fe14c9aac - main - ctld: Make config file parsing exception safe List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e01fe14c9aac95b1daec877af1729545b6d1b147 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e01fe14c9aac95b1daec877af1729545b6d1b147 commit e01fe14c9aac95b1daec877af1729545b6d1b147 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Make config file parsing exception safe Split parse_conf in half keeping yyparse_conf as C-only function in parse.y. parse_conf uses freebsd::FILE_up to ensure that the config file is always closed. Both parse_conf and uclparse_conf catch any exceptions thrown during parsing. This is in preparation for using C++ objects allocated with new for various data structures. Note that this treats memory allocation failures from new as parsing errors rather than ctld exiting entirely as it currently does if malloc or calloc fail. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/Makefile | 1 + usr.sbin/ctld/conf.cc | 25 +++++++++++++++++++++++++ usr.sbin/ctld/conf.h | 2 +- usr.sbin/ctld/ctld.hh | 1 + usr.sbin/ctld/parse.y | 10 ++-------- usr.sbin/ctld/uclparse.cc | 12 +++++++++++- 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 314554a99b56..67f89dca2757 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -12,6 +12,7 @@ CFLAGS+= -I${SRCTOP}/sys CFLAGS+= -I${SRCTOP}/sys/cam/ctl CFLAGS+= -I${SRCTOP}/sys/dev/iscsi CFLAGS+= -I${SRCTOP}/lib/libiscsiutil +CFLAGS+= -I${SRCTOP}/lib/libutil++ #CFLAGS+= -DICL_KERNEL_PROXY NO_WCAST_ALIGN= CXXWARNFLAGS.gcc= -Wno-shadow diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 1750f7ab96c6..c9e1a2fb9968 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -39,6 +39,8 @@ #include #include +#include + #include "conf.h" #include "ctld.hh" @@ -757,3 +759,26 @@ target_start_lun(u_int id) lun = new_lun; return (true); } + +bool +parse_conf(const char *path) +{ + freebsd::FILE_up fp(fopen(path, "r")); + if (fp == nullptr) { + log_warn("unable to open configuration file %s", path); + return (false); + } + + bool parsed; + try { + parsed = yyparse_conf(fp.get()); + } catch (std::bad_alloc) { + log_warnx("failed to allocate memory parsing %s", path); + return (false); + } catch (...) { + log_warnx("unknown exception parsing %s", path); + return (false); + } + + return (parsed); +} diff --git a/usr.sbin/ctld/conf.h b/usr.sbin/ctld/conf.h index 6e287ce70436..b13fd80e9fe5 100644 --- a/usr.sbin/ctld/conf.h +++ b/usr.sbin/ctld/conf.h @@ -97,7 +97,7 @@ bool lun_set_path(const char *value); bool lun_set_serial(const char *value); bool lun_set_size(uint64_t value); -bool parse_conf(const char *path); +bool yyparse_conf(FILE *fp); __END_DECLS diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index b1757f98ac81..61e453d8dc23 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -247,6 +247,7 @@ struct ctld_connection { extern int ctl_fd; +bool parse_conf(const char *path); bool uclparse_conf(const char *path); struct conf *conf_new(void); diff --git a/usr.sbin/ctld/parse.y b/usr.sbin/ctld/parse.y index c0146262e895..432183ed794c 100644 --- a/usr.sbin/ctld/parse.y +++ b/usr.sbin/ctld/parse.y @@ -890,20 +890,14 @@ yyerror(const char *str) } bool -parse_conf(const char *path) +yyparse_conf(FILE *fp) { int error; - yyin = fopen(path, "r"); - if (yyin == NULL) { - log_warn("unable to open configuration file %s", path); - return (false); - } - + yyin = fp; lineno = 1; yyrestart(yyin); error = yyparse(); - fclose(yyin); return (error == 0); } diff --git a/usr.sbin/ctld/uclparse.cc b/usr.sbin/ctld/uclparse.cc index 8788e1cbb981..4c7bbb43d75d 100644 --- a/usr.sbin/ctld/uclparse.cc +++ b/usr.sbin/ctld/uclparse.cc @@ -41,6 +41,8 @@ #include #include +#include + #include "conf.h" #include "ctld.hh" @@ -1113,7 +1115,15 @@ uclparse_conf(const char *path) } top = ucl_parser_get_object(parser); - parsed = uclparse_toplevel(top); + try { + parsed = uclparse_toplevel(top); + } catch (std::bad_alloc) { + log_warnx("failed to allocate memory parsing %s", path); + parsed = false; + } catch (...) { + log_warnx("unknown exception parsing %s", path); + parsed = false; + } ucl_object_unref(top); ucl_parser_free(parser); From nobody Mon Aug 4 19:46:39 2025 X-Original-To: dev-commits-src-main@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 4bwnB854vpz63QlC; Mon, 04 Aug 2025 19:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB73Rw4z4KRY; Mon, 04 Aug 2025 19:46:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=By0EsWXq8wfX4Zm9KoCY6JVDtX901VFdpy0oAXsUXD8=; b=tfCV2zLOjlF+jAN+skqcFA5pIO5LLOm4JQvYL1Qip/7Q8oDWEcWiIngfhSWLdsFl4o/9Tc t8gnwHEuo7RXeDnbQ2ljEZDcPBNPeed5aon3hR2x1nmQnQeeaBaQ9rA1iXL4L+Y/wVLDoK qjxAWl5v/uMQpJli9AHSu2BeoebtOf87pD0GRy7yHQXlHGh2aWjWHYsjR80pN7DNvz4zed 8CW87Uerg0mpSL1cJV4ekbYbelzX5lWsOJoyad7T2zGolP9ChTaSui50SfY7g9m0MRy7Qw 3wy9fGGPFI2fzPpusk4DTTN8w+Pzrr1W0dM5iaiwB1CnSBvMZlq1taW5/c+C3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=By0EsWXq8wfX4Zm9KoCY6JVDtX901VFdpy0oAXsUXD8=; b=gEKTGn6WMYfPq372jyuPUK/IYbu0sNrz+dA1hWFYKEzrQOx/UsexGylK5nio9PMh5FdtGV l3B+gw+C9Pceg/edNFWsGD0EM8KnIO5tIAX3eGc/Kig1KHPayLlB9Pvd+3wlXJdncVZ/5l 6Sv4RNj3SOhsrlYP028mVhq7tFxHbshT2wSvRo4RTgWi07KUMZvelG1SfQaIVM9d7ZaMxt g6CMKgT3mzFJVgkYZv2L1DFC6NYcP0s0gICpFX+ShrwTLklzl6a3Y6dEqDlXnDW9fseA0+ z675jUcPlUaQE8SOhlSD8T06nwNO/WoAm+zllK3v0Wdf8n2iHvdtzWRQVh+bYw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336799; a=rsa-sha256; cv=none; b=qdIOzr2rufJBIuqyM7ttLKt+h2d5wNyGjJ7I3Ix1+N3iDTzMOMw4X3rdpSEaYHpLKCPr9E 4z+n4Cu3NAkmSa1X7b8D3IkPBXjfbJ0krNMXoO2p0NRXAuzJMO83SRu2t6oFX+rFLz+lLd zWN68hPpcUh1i8S/aG5ITzgzn5ZrWjXjxjPYysG9kx23uYclxfjLr0busRB8xclNGP9uMs K29aAePqtv8h+ESxilH8YaOWZ27JOhrtM1lmy6Xvquw40QiQpt0x1j9rVLRcmGeE4a1wkT c27POXZMxyxc9Yp9PY52PZ4ucHho2FovM2EITpSpS3GTxOCVB4xDcjTbQoUTbg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB72fPjz13B7; Mon, 04 Aug 2025 19:46:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkdFc098786; Mon, 4 Aug 2025 19:46:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkdH8098783; Mon, 4 Aug 2025 19:46:39 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:39 GMT Message-Id: <202508041946.574JkdH8098783@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 47586ffc8bde - main - libucl: Add a ucl::Ucl::forced_string_value method List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 47586ffc8bde236bab65da05ad3c0a660709ba96 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=47586ffc8bde236bab65da05ad3c0a660709ba96 commit 47586ffc8bde236bab65da05ad3c0a660709ba96 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 libucl: Add a ucl::Ucl::forced_string_value method This is a wrapper around ucl_object_tostring_forced. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- contrib/libucl/include/ucl++.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/libucl/include/ucl++.h b/contrib/libucl/include/ucl++.h index fb63430d400d..1cd17eac0c75 100644 --- a/contrib/libucl/include/ucl++.h +++ b/contrib/libucl/include/ucl++.h @@ -396,6 +396,11 @@ public: return default_val; } + std::string forced_string_value () const + { + return ucl_object_tostring_forced(obj.get()); + } + size_t size () const { if (type () == UCL_ARRAY) { From nobody Mon Aug 4 19:46:40 2025 X-Original-To: dev-commits-src-main@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 4bwnBB44f1z63RZx; Mon, 04 Aug 2025 19:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB84N2wz4KGp; Mon, 04 Aug 2025 19:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336800; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+vt3HIkOX/eWQ4Az97ss8GRuk1xCus7vczrKNO18xaM=; b=d1pIpl0CUWbELTySpYs+79nDgytglxoREPlx4146bzawc5/7/cLfw4OulGLV2g6Cc9Swp0 W5JYPoGW58JLqlOW0tCty+6M0XYDckx8pjW4S/5GK94wwNr+NwUf5x2pEKKKxys8xC4lBs I5PI0GQCEuw2gZDVsCOI9jjugpip8SRKxL+HjcrqghKMzCzXisb4A1b7+SdWIey/bK/Mu+ V4Gpk8Q9QEctiSKP9rnAQz6XbecXXLzbWHXs7AbLgvMo91zSebOSbHxi1JOsMPnrrmVFpw 1myBXvxem6BREraeUuhApM9KkiobYoaADh3uL4ebVKJGwVjQqxaLgLt1xnZmYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336800; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+vt3HIkOX/eWQ4Az97ss8GRuk1xCus7vczrKNO18xaM=; b=v8buGRl6aOkwedgFmE0iQwd/u77KEUnD5FOT+XSa/f2da7ZfmndJm6F9o5JbxmibJyuR11 XZYM8wL1jjLzDKeTyNMtHIzcyI/Uo0KbweTgy3GxiHGvyd2JREiI46UoE3aEO7jNuMtwyB HXEZFKNVKjrp/YMNwo8o7ZujAah3qkCuGpgqKli6CDQgxnXasp2vubARtBuqq61fCdTSmm 63IQ+vgMu+4Q8c/vTdXrt8lzBFEUPsz9tO3xRF+k9Q0jTtQjIZXjwmzuZhwYqyqv6eySVZ bivwQu6R93i3ZeyKGnR/fQbV24kS7rV2Qfmb1eO2OGai6gM8BsTUo6rYK161rw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336800; a=rsa-sha256; cv=none; b=mcecUE+TQ/cqapvruMUdZVjB++8pmCOZIibCBwruSS7ecvAwZzpK1MduiRZKc2JGX+Xr49 0gB1Al6eaqgykHbi4O8jWlSt2CKKWOnKiRAXnesylEdlhQue+cRfbOd5591nQ9rhox6G0a q2+7/Tmh6hfuZ6GZEjYWZhzJF+XmBI+PyJ16xasAE8uYphZQFV3yU+CW8xWJT2uOFklerI tm4uwgachPcw0zSrmGpo98qiLc7WHNC5PsLIL6+g0la4rFBqaJDBSrNsA3abW8m4scd6n6 leDtraRixp7HBQkxSP9/hSsoNBfvnJ/13p+PwKx5oHhcWtbdwWxyWZjska/nQg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB83M1Sz12f4; Mon, 04 Aug 2025 19:46:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkeuS098820; Mon, 4 Aug 2025 19:46:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkeb9098817; Mon, 4 Aug 2025 19:46:40 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:40 GMT Message-Id: <202508041946.574Jkeb9098817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: aea7fa728b0f - main - ctld: Switch to the C++ bindings for libucl List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: aea7fa728b0f3f31f4e8e9f13bbf0d69edb4a0cd Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=aea7fa728b0f3f31f4e8e9f13bbf0d69edb4a0cd commit aea7fa728b0f3f31f4e8e9f13bbf0d69edb4a0cd Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Switch to the C++ bindings for libucl In particular, this permits using ranged-for loops to iterate over keys in an object which is more readable. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/Makefile | 4 +- usr.sbin/ctld/uclparse.cc | 709 ++++++++++++++++++++-------------------------- 2 files changed, 317 insertions(+), 396 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 67f89dca2757..26cc03c036cb 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -18,7 +18,7 @@ NO_WCAST_ALIGN= CXXWARNFLAGS.gcc= -Wno-shadow MAN= ctld.8 ctl.conf.5 -LIBADD= bsdxml iscsiutil md sbuf util ucl m nv +LIBADD= bsdxml iscsiutil md sbuf util ucl m nv util++ YFLAGS+= -v CLEANFILES= y.tab.c y.tab.h y.output @@ -30,3 +30,5 @@ CFLAGS+= -DWANT_ISCSI .endif .include + +CXXWARNFLAGS.uclparse.cc= -Wno-shadow -Wno-cast-qual diff --git a/usr.sbin/ctld/uclparse.cc b/usr.sbin/ctld/uclparse.cc index 4c7bbb43d75d..722b045effb6 100644 --- a/usr.sbin/ctld/uclparse.cc +++ b/usr.sbin/ctld/uclparse.cc @@ -37,299 +37,280 @@ #include #include #include -#include +#include #include #include +#include #include #include "conf.h" #include "ctld.hh" -static bool uclparse_toplevel(const ucl_object_t *); -static bool uclparse_chap(const char *, const ucl_object_t *); -static bool uclparse_chap_mutual(const char *, const ucl_object_t *); -static bool uclparse_lun(const char *, const ucl_object_t *); -static bool uclparse_lun_entries(const char *, const ucl_object_t *); -static bool uclparse_auth_group(const char *, const ucl_object_t *); -static bool uclparse_portal_group(const char *, const ucl_object_t *); -static bool uclparse_target(const char *, const ucl_object_t *); -static bool uclparse_target_portal_group(const char *, const ucl_object_t *); -static bool uclparse_target_lun(const char *, const ucl_object_t *); +static bool uclparse_toplevel(const ucl::Ucl &); +static bool uclparse_chap(const char *, const ucl::Ucl &); +static bool uclparse_chap_mutual(const char *, const ucl::Ucl &); +static bool uclparse_lun(const char *, const ucl::Ucl &); +static bool uclparse_lun_entries(const char *, const ucl::Ucl &); +static bool uclparse_auth_group(const char *, const ucl::Ucl &); +static bool uclparse_portal_group(const char *, const ucl::Ucl &); +static bool uclparse_target(const char *, const ucl::Ucl &); +static bool uclparse_target_portal_group(const char *, const ucl::Ucl &); +static bool uclparse_target_lun(const char *, const ucl::Ucl &); static bool -uclparse_chap(const char *ag_name, const ucl_object_t *obj) +uclparse_chap(const char *ag_name, const ucl::Ucl &obj) { - const ucl_object_t *user, *secret; - - user = ucl_object_find_key(obj, "user"); - if (!user || user->type != UCL_STRING) { + auto user = obj["user"]; + if (!user || user.type() != UCL_STRING) { log_warnx("chap section in auth-group \"%s\" is missing " "\"user\" string key", ag_name); return (false); } - secret = ucl_object_find_key(obj, "secret"); - if (!secret || secret->type != UCL_STRING) { + auto secret = obj["secret"]; + if (!secret || secret.type() != UCL_STRING) { log_warnx("chap section in auth-group \"%s\" is missing " "\"secret\" string key", ag_name); return (false); } return (auth_group_add_chap( - ucl_object_tostring(user), - ucl_object_tostring(secret))); + user.string_value().c_str(), + secret.string_value().c_str())); } static bool -uclparse_chap_mutual(const char *ag_name, const ucl_object_t *obj) +uclparse_chap_mutual(const char *ag_name, const ucl::Ucl &obj) { - const ucl_object_t *user, *secret, *mutual_user; - const ucl_object_t *mutual_secret; - - user = ucl_object_find_key(obj, "user"); - if (!user || user->type != UCL_STRING) { + auto user = obj["user"]; + if (!user || user.type() != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " "\"user\" string key", ag_name); return (false); } - secret = ucl_object_find_key(obj, "secret"); - if (!secret || secret->type != UCL_STRING) { + auto secret = obj["secret"]; + if (!secret || secret.type() != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " "\"secret\" string key", ag_name); return (false); } - mutual_user = ucl_object_find_key(obj, "mutual-user"); - if (!mutual_user || mutual_user->type != UCL_STRING) { + auto mutual_user = obj["mutual-user"]; + if (!mutual_user || mutual_user.type() != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " "\"mutual-user\" string key", ag_name); return (false); } - mutual_secret = ucl_object_find_key(obj, "mutual-secret"); - if (!mutual_secret || mutual_secret->type != UCL_STRING) { + auto mutual_secret = obj["mutual-secret"]; + if (!mutual_secret || mutual_secret.type() != UCL_STRING) { log_warnx("chap-mutual section in auth-group \"%s\" is missing " "\"mutual-secret\" string key", ag_name); return (false); } return (auth_group_add_chap_mutual( - ucl_object_tostring(user), - ucl_object_tostring(secret), - ucl_object_tostring(mutual_user), - ucl_object_tostring(mutual_secret))); + user.string_value().c_str(), + secret.string_value().c_str(), + mutual_user.string_value().c_str(), + mutual_secret.string_value().c_str())); } static bool -uclparse_target_chap(const char *t_name, const ucl_object_t *obj) +uclparse_target_chap(const char *t_name, const ucl::Ucl &obj) { - const ucl_object_t *user, *secret; - - user = ucl_object_find_key(obj, "user"); - if (!user || user->type != UCL_STRING) { + auto user = obj["user"]; + if (!user || user.type() != UCL_STRING) { log_warnx("chap section in target \"%s\" is missing " "\"user\" string key", t_name); return (false); } - secret = ucl_object_find_key(obj, "secret"); - if (!secret || secret->type != UCL_STRING) { + auto secret = obj["secret"]; + if (!secret || secret.type() != UCL_STRING) { log_warnx("chap section in target \"%s\" is missing " "\"secret\" string key", t_name); return (false); } return (target_add_chap( - ucl_object_tostring(user), - ucl_object_tostring(secret))); + user.string_value().c_str(), + secret.string_value().c_str())); } static bool -uclparse_target_chap_mutual(const char *t_name, const ucl_object_t *obj) +uclparse_target_chap_mutual(const char *t_name, const ucl::Ucl &obj) { - const ucl_object_t *user, *secret, *mutual_user; - const ucl_object_t *mutual_secret; - - user = ucl_object_find_key(obj, "user"); - if (!user || user->type != UCL_STRING) { + auto user = obj["user"]; + if (!user || user.type() != UCL_STRING) { log_warnx("chap-mutual section in target \"%s\" is missing " "\"user\" string key", t_name); return (false); } - secret = ucl_object_find_key(obj, "secret"); - if (!secret || secret->type != UCL_STRING) { + auto secret = obj["secret"]; + if (!secret || secret.type() != UCL_STRING) { log_warnx("chap-mutual section in target \"%s\" is missing " "\"secret\" string key", t_name); return (false); } - mutual_user = ucl_object_find_key(obj, "mutual-user"); - if (!mutual_user || mutual_user->type != UCL_STRING) { + auto mutual_user = obj["mutual-user"]; + if (!mutual_user || mutual_user.type() != UCL_STRING) { log_warnx("chap-mutual section in target \"%s\" is missing " "\"mutual-user\" string key", t_name); return (false); } - mutual_secret = ucl_object_find_key(obj, "mutual-secret"); - if (!mutual_secret || mutual_secret->type != UCL_STRING) { + auto mutual_secret = obj["mutual-secret"]; + if (!mutual_secret || mutual_secret.type() != UCL_STRING) { log_warnx("chap-mutual section in target \"%s\" is missing " "\"mutual-secret\" string key", t_name); return (false); } return (target_add_chap_mutual( - ucl_object_tostring(user), - ucl_object_tostring(secret), - ucl_object_tostring(mutual_user), - ucl_object_tostring(mutual_secret))); + user.string_value().c_str(), + secret.string_value().c_str(), + mutual_user.string_value().c_str(), + mutual_secret.string_value().c_str())); } static bool -uclparse_target_portal_group(const char *t_name, const ucl_object_t *obj) +uclparse_target_portal_group(const char *t_name, const ucl::Ucl &obj) { - const ucl_object_t *portal_group, *auth_group; - const char *ag_name; - /* * If the value is a single string, assume it is a * portal-group name. */ - if (obj->type == UCL_STRING) - return (target_add_portal_group(ucl_object_tostring(obj), + if (obj.type() == UCL_STRING) + return (target_add_portal_group(obj.string_value().c_str(), NULL)); - if (obj->type != UCL_OBJECT) { + if (obj.type() != UCL_OBJECT) { log_warnx("portal-group section in target \"%s\" must be " "an object or string", t_name); return (false); } - portal_group = ucl_object_find_key(obj, "name"); - if (!portal_group || portal_group->type != UCL_STRING) { + auto portal_group = obj["name"]; + if (!portal_group || portal_group.type() != UCL_STRING) { log_warnx("portal-group section in target \"%s\" is missing " "\"name\" string key", t_name); return (false); } - auth_group = ucl_object_find_key(obj, "auth-group-name"); - if (auth_group != NULL) { - if (auth_group->type != UCL_STRING) { + auto auth_group = obj["auth-group-name"]; + if (auth_group) { + if (auth_group.type() != UCL_STRING) { log_warnx("\"auth-group-name\" property in " "portal-group section for target \"%s\" is not " "a string", t_name); return (false); } - ag_name = ucl_object_tostring(auth_group); - } else - ag_name = NULL; + return (target_add_portal_group( + portal_group.string_value().c_str(), + auth_group.string_value().c_str())); + } - return (target_add_portal_group(ucl_object_tostring(portal_group), - ag_name)); + return (target_add_portal_group(portal_group.string_value().c_str(), + NULL)); } static bool -uclparse_target_lun(const char *t_name, const ucl_object_t *obj) +uclparse_target_lun(const char *t_name, const ucl::Ucl &obj) { - const ucl_object_t *num; - const ucl_object_t *name; - const char *key; - char *end, *lun_name; + char *end; u_int id; - bool ok; - key = ucl_object_key(obj); - if (key != NULL) { - id = strtoul(key, &end, 0); + std::string key = obj.key(); + if (!key.empty()) { + id = strtoul(key.c_str(), &end, 0); if (*end != '\0') { log_warnx("lun key \"%s\" in target \"%s\" is invalid", - key, t_name); + key.c_str(), t_name); return (false); } - if (obj->type == UCL_STRING) - return (target_add_lun(id, ucl_object_tostring(obj))); + if (obj.type() == UCL_STRING) + return (target_add_lun(id, obj.string_value().c_str())); } - if (obj->type != UCL_OBJECT) { + if (obj.type() != UCL_OBJECT) { log_warnx("lun section entries in target \"%s\" must be objects", t_name); return (false); } - if (key == NULL) { - num = ucl_object_find_key(obj, "number"); - if (num == NULL || num->type != UCL_INT) { + if (key.empty()) { + auto num = obj["number"]; + if (!num || num.type() != UCL_INT) { log_warnx("lun section in target \"%s\" is missing " "\"number\" integer property", t_name); return (false); } - id = ucl_object_toint(num); + id = num.int_value(); } - name = ucl_object_find_key(obj, "name"); - if (name == NULL) { + auto name = obj["name"]; + if (!name) { if (!target_start_lun(id)) return (false); - asprintf(&lun_name, "lun %u for target \"%s\"", id, t_name); - ok = uclparse_lun_entries(lun_name, obj); - free(lun_name); - return (ok); + std::string lun_name = + freebsd::stringf("lun %u for target \"%s\"", id, t_name); + return (uclparse_lun_entries(lun_name.c_str(), obj)); } - if (name->type != UCL_STRING) { + if (name.type() != UCL_STRING) { log_warnx("\"name\" property for lun %u for target " "\"%s\" is not a string", id, t_name); return (false); } - return (target_add_lun(id, ucl_object_tostring(name))); + return (target_add_lun(id, name.string_value().c_str())); } static bool -uclparse_toplevel(const ucl_object_t *top) +uclparse_toplevel(const ucl::Ucl &top) { - ucl_object_iter_t it = NULL, iter = NULL; - const ucl_object_t *obj = NULL, *child = NULL; - /* Pass 1 - everything except targets */ - while ((obj = ucl_iterate_object(top, &it, true))) { - const char *key = ucl_object_key(obj); + for (const auto &obj : top) { + std::string key = obj.key(); - if (strcmp(key, "debug") == 0) { - if (obj->type == UCL_INT) - conf_set_debug(ucl_object_toint(obj)); + if (key == "debug") { + if (obj.type() == UCL_INT) + conf_set_debug(obj.int_value()); else { log_warnx("\"debug\" property value is not integer"); return (false); } } - if (strcmp(key, "timeout") == 0) { - if (obj->type == UCL_INT) - conf_set_timeout(ucl_object_toint(obj)); + if (key == "timeout") { + if (obj.type() == UCL_INT) + conf_set_timeout(obj.int_value()); else { log_warnx("\"timeout\" property value is not integer"); return (false); } } - if (strcmp(key, "maxproc") == 0) { - if (obj->type == UCL_INT) - conf_set_maxproc(ucl_object_toint(obj)); + if (key == "maxproc") { + if (obj.type() == UCL_INT) + conf_set_maxproc(obj.int_value()); else { log_warnx("\"maxproc\" property value is not integer"); return (false); } } - if (strcmp(key, "pidfile") == 0) { - if (obj->type == UCL_STRING) { + if (key == "pidfile") { + if (obj.type() == UCL_STRING) { if (!conf_set_pidfile_path( - ucl_object_tostring(obj))) + obj.string_value().c_str())) return (false); } else { log_warnx("\"pidfile\" property value is not string"); @@ -337,16 +318,14 @@ uclparse_toplevel(const ucl_object_t *top) } } - if (strcmp(key, "isns-server") == 0) { - if (obj->type == UCL_ARRAY) { - iter = NULL; - while ((child = ucl_iterate_object(obj, &iter, - true))) { - if (child->type != UCL_STRING) + if (key == "isns-server") { + if (obj.type() == UCL_ARRAY) { + for (const auto &child : obj) { + if (child.type() != UCL_STRING) return (false); if (!isns_add_server( - ucl_object_tostring(child))) + child.string_value().c_str())) return (false); } } else { @@ -356,30 +335,29 @@ uclparse_toplevel(const ucl_object_t *top) } } - if (strcmp(key, "isns-period") == 0) { - if (obj->type == UCL_INT) - conf_set_isns_period(ucl_object_toint(obj)); + if (key == "isns-period") { + if (obj.type() == UCL_INT) + conf_set_isns_period(obj.int_value()); else { log_warnx("\"isns-period\" property value is not integer"); return (false); } } - if (strcmp(key, "isns-timeout") == 0) { - if (obj->type == UCL_INT) - conf_set_isns_timeout(ucl_object_toint(obj)); + if (key == "isns-timeout") { + if (obj.type() == UCL_INT) + conf_set_isns_timeout(obj.int_value()); else { log_warnx("\"isns-timeout\" property value is not integer"); return (false); } } - if (strcmp(key, "auth-group") == 0) { - if (obj->type == UCL_OBJECT) { - iter = NULL; - while ((child = ucl_iterate_object(obj, &iter, true))) { + if (key == "auth-group") { + if (obj.type() == UCL_OBJECT) { + for (const auto &child : obj) { if (!uclparse_auth_group( - ucl_object_key(child), child)) + child.key().c_str(), child)) return (false); } } else { @@ -388,12 +366,11 @@ uclparse_toplevel(const ucl_object_t *top) } } - if (strcmp(key, "portal-group") == 0) { - if (obj->type == UCL_OBJECT) { - iter = NULL; - while ((child = ucl_iterate_object(obj, &iter, true))) { + if (key == "portal-group") { + if (obj.type() == UCL_OBJECT) { + for (const auto &child : obj) { if (!uclparse_portal_group( - ucl_object_key(child), child)) + child.key().c_str(), child)) return (false); } } else { @@ -402,11 +379,10 @@ uclparse_toplevel(const ucl_object_t *top) } } - if (strcmp(key, "lun") == 0) { - if (obj->type == UCL_OBJECT) { - iter = NULL; - while ((child = ucl_iterate_object(obj, &iter, true))) { - if (!uclparse_lun(ucl_object_key(child), + if (key == "lun") { + if (obj.type() == UCL_OBJECT) { + for (const auto &child : obj) { + if (!uclparse_lun(child.key().c_str(), child)) return (false); } @@ -418,17 +394,14 @@ uclparse_toplevel(const ucl_object_t *top) } /* Pass 2 - targets */ - it = NULL; - while ((obj = ucl_iterate_object(top, &it, true))) { - const char *key = ucl_object_key(obj); - - if (strcmp(key, "target") == 0) { - if (obj->type == UCL_OBJECT) { - iter = NULL; - while ((child = ucl_iterate_object(obj, &iter, - true))) { + for (const auto &obj : top) { + std::string key = obj.key(); + + if (key == "target") { + if (obj.type() == UCL_OBJECT) { + for (const auto &child : obj) { if (!uclparse_target( - ucl_object_key(child), child)) + child.key().c_str(), child)) return (false); } } else { @@ -442,33 +415,25 @@ uclparse_toplevel(const ucl_object_t *top) } static bool -uclparse_auth_group(const char *name, const ucl_object_t *top) +uclparse_auth_group(const char *name, const ucl::Ucl &top) { - ucl_object_iter_t it = NULL, it2 = NULL; - const ucl_object_t *obj = NULL, *tmp = NULL; - const char *key; - if (!auth_group_start(name)) return (false); - while ((obj = ucl_iterate_object(top, &it, true))) { - key = ucl_object_key(obj); + for (const auto &obj : top) { + std::string key = obj.key(); - if (strcmp(key, "auth-type") == 0) { - const char *value = ucl_object_tostring(obj); - - if (!auth_group_set_type(value)) + if (key == "auth-type") { + if (!auth_group_set_type(obj.string_value().c_str())) goto fail; } - if (strcmp(key, "chap") == 0) { - if (obj->type == UCL_OBJECT) { + if (key == "chap") { + if (obj.type() == UCL_OBJECT) { if (!uclparse_chap(name, obj)) goto fail; - } else if (obj->type == UCL_ARRAY) { - it2 = NULL; - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!uclparse_chap(name, tmp)) goto fail; } @@ -480,14 +445,12 @@ uclparse_auth_group(const char *name, const ucl_object_t *top) } } - if (strcmp(key, "chap-mutual") == 0) { - if (obj->type == UCL_OBJECT) { + if (key == "chap-mutual") { + if (obj.type() == UCL_OBJECT) { if (!uclparse_chap_mutual(name, obj)) goto fail; - } else if (obj->type == UCL_ARRAY) { - it2 = NULL; - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!uclparse_chap_mutual(name, tmp)) goto fail; } @@ -499,21 +462,15 @@ uclparse_auth_group(const char *name, const ucl_object_t *top) } } - if (strcmp(key, "initiator-name") == 0) { - if (obj->type == UCL_STRING) { - const char *value = ucl_object_tostring(obj); - - if (!auth_group_add_initiator_name(value)) + if (key == "initiator-name") { + if (obj.type() == UCL_STRING) { + if (!auth_group_add_initiator_name( + obj.string_value().c_str())) goto fail; - } else if (obj->type == UCL_ARRAY) { - it2 = NULL; - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { - const char *value = - ucl_object_tostring(tmp); - + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!auth_group_add_initiator_name( - value)) + tmp.string_value().c_str())) goto fail; } } else { @@ -524,21 +481,15 @@ uclparse_auth_group(const char *name, const ucl_object_t *top) } } - if (strcmp(key, "initiator-portal") == 0) { - if (obj->type == UCL_STRING) { - const char *value = ucl_object_tostring(obj); - - if (!auth_group_add_initiator_portal(value)) + if (key == "initiator-portal") { + if (obj.type() == UCL_STRING) { + if (!auth_group_add_initiator_portal( + obj.string_value().c_str())) goto fail; - } else if (obj->type == UCL_ARRAY) { - it2 = NULL; - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { - const char *value = - ucl_object_tostring(tmp); - + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!auth_group_add_initiator_portal( - value)) + tmp.string_value().c_str())) goto fail; } } else { @@ -559,62 +510,60 @@ fail: static bool uclparse_dscp(const char *group_type, const char *pg_name, - const ucl_object_t *obj) + const ucl::Ucl &obj) { - const char *key; - - if ((obj->type != UCL_STRING) && (obj->type != UCL_INT)) { + if ((obj.type() != UCL_STRING) && (obj.type() != UCL_INT)) { log_warnx("\"dscp\" property of %s group \"%s\" is not a " "string or integer", group_type, pg_name); return (false); } - if (obj->type == UCL_INT) - return (portal_group_set_dscp(ucl_object_toint(obj))); + if (obj.type() == UCL_INT) + return (portal_group_set_dscp(obj.int_value())); - key = ucl_object_tostring(obj); - if (strcmp(key, "be") == 0 || strcmp(key, "cs0") == 0) + std::string key = obj.key(); + if (key == "be" || key == "cs0") portal_group_set_dscp(IPTOS_DSCP_CS0 >> 2); - else if (strcmp(key, "ef") == 0) + else if (key == "ef") portal_group_set_dscp(IPTOS_DSCP_EF >> 2); - else if (strcmp(key, "cs0") == 0) + else if (key == "cs0") portal_group_set_dscp(IPTOS_DSCP_CS0 >> 2); - else if (strcmp(key, "cs1") == 0) + else if (key == "cs1") portal_group_set_dscp(IPTOS_DSCP_CS1 >> 2); - else if (strcmp(key, "cs2") == 0) + else if (key == "cs2") portal_group_set_dscp(IPTOS_DSCP_CS2 >> 2); - else if (strcmp(key, "cs3") == 0) + else if (key == "cs3") portal_group_set_dscp(IPTOS_DSCP_CS3 >> 2); - else if (strcmp(key, "cs4") == 0) + else if (key == "cs4") portal_group_set_dscp(IPTOS_DSCP_CS4 >> 2); - else if (strcmp(key, "cs5") == 0) + else if (key == "cs5") portal_group_set_dscp(IPTOS_DSCP_CS5 >> 2); - else if (strcmp(key, "cs6") == 0) + else if (key == "cs6") portal_group_set_dscp(IPTOS_DSCP_CS6 >> 2); - else if (strcmp(key, "cs7") == 0) + else if (key == "cs7") portal_group_set_dscp(IPTOS_DSCP_CS7 >> 2); - else if (strcmp(key, "af11") == 0) + else if (key == "af11") portal_group_set_dscp(IPTOS_DSCP_AF11 >> 2); - else if (strcmp(key, "af12") == 0) + else if (key == "af12") portal_group_set_dscp(IPTOS_DSCP_AF12 >> 2); - else if (strcmp(key, "af13") == 0) + else if (key == "af13") portal_group_set_dscp(IPTOS_DSCP_AF13 >> 2); - else if (strcmp(key, "af21") == 0) + else if (key == "af21") portal_group_set_dscp(IPTOS_DSCP_AF21 >> 2); - else if (strcmp(key, "af22") == 0) + else if (key == "af22") portal_group_set_dscp(IPTOS_DSCP_AF22 >> 2); - else if (strcmp(key, "af23") == 0) + else if (key == "af23") portal_group_set_dscp(IPTOS_DSCP_AF23 >> 2); - else if (strcmp(key, "af31") == 0) + else if (key == "af31") portal_group_set_dscp(IPTOS_DSCP_AF31 >> 2); - else if (strcmp(key, "af32") == 0) + else if (key == "af32") portal_group_set_dscp(IPTOS_DSCP_AF32 >> 2); - else if (strcmp(key, "af33") == 0) + else if (key == "af33") portal_group_set_dscp(IPTOS_DSCP_AF33 >> 2); - else if (strcmp(key, "af41") == 0) + else if (key == "af41") portal_group_set_dscp(IPTOS_DSCP_AF41 >> 2); - else if (strcmp(key, "af42") == 0) + else if (key == "af42") portal_group_set_dscp(IPTOS_DSCP_AF42 >> 2); - else if (strcmp(key, "af43") == 0) + else if (key == "af43") portal_group_set_dscp(IPTOS_DSCP_AF43 >> 2); else { log_warnx("\"dscp\" property value is not a supported textual value"); @@ -625,31 +574,27 @@ uclparse_dscp(const char *group_type, const char *pg_name, static bool uclparse_pcp(const char *group_type, const char *pg_name, - const ucl_object_t *obj) + const ucl::Ucl &obj) { - if (obj->type != UCL_INT) { + if (obj.type() != UCL_INT) { log_warnx("\"pcp\" property of %s group \"%s\" is not an " "integer", group_type, pg_name); return (false); } - return (portal_group_set_pcp(ucl_object_toint(obj))); + return (portal_group_set_pcp(obj.int_value())); } static bool -uclparse_portal_group(const char *name, const ucl_object_t *top) +uclparse_portal_group(const char *name, const ucl::Ucl &top) { - ucl_object_iter_t it = NULL, it2 = NULL; - const ucl_object_t *obj = NULL, *tmp = NULL; - const char *key; - if (!portal_group_start(name)) return (false); - while ((obj = ucl_iterate_object(top, &it, true))) { - key = ucl_object_key(obj); + for (const auto &obj : top) { + std::string key = obj.key(); - if (strcmp(key, "discovery-auth-group") == 0) { - if (obj->type != UCL_STRING) { + if (key == "discovery-auth-group") { + if (obj.type() != UCL_STRING) { log_warnx("\"discovery-auth-group\" property " "of portal-group \"%s\" is not a string", name); @@ -657,36 +602,36 @@ uclparse_portal_group(const char *name, const ucl_object_t *top) } if (!portal_group_set_discovery_auth_group( - ucl_object_tostring(obj))) + obj.string_value().c_str())) goto fail; } - if (strcmp(key, "discovery-filter") == 0) { - if (obj->type != UCL_STRING) { + if (key == "discovery-filter") { + if (obj.type() != UCL_STRING) { log_warnx("\"discovery-filter\" property of " "portal-group \"%s\" is not a string", name); goto fail; } - if (!portal_group_set_filter(ucl_object_tostring(obj))) + if (!portal_group_set_filter( + obj.string_value().c_str())) goto fail; } - if (strcmp(key, "foreign") == 0) { + if (key == "foreign") { portal_group_set_foreign(); } - if (strcmp(key, "listen") == 0) { - if (obj->type == UCL_STRING) { + if (key == "listen") { + if (obj.type() == UCL_STRING) { if (!portal_group_add_listen( - ucl_object_tostring(obj), false)) + obj.string_value().c_str(), false)) goto fail; - } else if (obj->type == UCL_ARRAY) { - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!portal_group_add_listen( - ucl_object_tostring(tmp), + tmp.string_value().c_str(), false)) goto fail; } @@ -698,16 +643,15 @@ uclparse_portal_group(const char *name, const ucl_object_t *top) } } - if (strcmp(key, "listen-iser") == 0) { - if (obj->type == UCL_STRING) { + if (key == "listen-iser") { + if (obj.type() == UCL_STRING) { if (!portal_group_add_listen( - ucl_object_tostring(obj), true)) + obj.string_value().c_str(), true)) goto fail; - } else if (obj->type == UCL_ARRAY) { - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { + } else if (obj.type() == UCL_ARRAY) { + for (const auto &tmp : obj) { if (!portal_group_add_listen( - ucl_object_tostring(tmp), + tmp.string_value().c_str(), true)) goto fail; } @@ -719,20 +663,21 @@ uclparse_portal_group(const char *name, const ucl_object_t *top) } } - if (strcmp(key, "offload") == 0) { - if (obj->type != UCL_STRING) { + if (key == "offload") { + if (obj.type() != UCL_STRING) { log_warnx("\"offload\" property of " "portal-group \"%s\" is not a string", name); goto fail; } - if (!portal_group_set_offload(ucl_object_tostring(obj))) + if (!portal_group_set_offload( + obj.string_value().c_str())) goto fail; } - if (strcmp(key, "redirect") == 0) { - if (obj->type != UCL_STRING) { + if (key == "redirect") { + if (obj.type() != UCL_STRING) { log_warnx("\"listen\" property of " "portal-group \"%s\" is not a string", name); @@ -740,43 +685,42 @@ uclparse_portal_group(const char *name, const ucl_object_t *top) } if (!portal_group_set_redirection( - ucl_object_tostring(obj))) + obj.string_value().c_str())) goto fail; } - if (strcmp(key, "options") == 0) { - if (obj->type != UCL_OBJECT) { + if (key == "options") { + if (obj.type() != UCL_OBJECT) { log_warnx("\"options\" property of portal group " "\"%s\" is not an object", name); goto fail; } - while ((tmp = ucl_iterate_object(obj, &it2, - true))) { + for (const auto &tmp : obj) { if (!portal_group_add_option( - ucl_object_key(tmp), - ucl_object_tostring_forced(tmp))) + tmp.key().c_str(), + tmp.forced_string_value().c_str())) goto fail; } } - if (strcmp(key, "tag") == 0) { - if (obj->type != UCL_INT) { + if (key == "tag") { + if (obj.type() != UCL_INT) { log_warnx("\"tag\" property of portal group " "\"%s\" is not an integer", name); goto fail; } - portal_group_set_tag(ucl_object_toint(obj)); + portal_group_set_tag(obj.int_value()); } - if (strcmp(key, "dscp") == 0) { + if (key == "dscp") { if (!uclparse_dscp("portal", name, obj)) goto fail; } - if (strcmp(key, "pcp") == 0) { + if (key == "pcp") { if (!uclparse_pcp("portal", name, obj)) goto fail; } @@ -790,58 +734,53 @@ fail: } static bool -uclparse_target(const char *name, const ucl_object_t *top) +uclparse_target(const char *name, const ucl::Ucl &top) { - ucl_object_iter_t it = NULL, it2 = NULL; - const ucl_object_t *obj = NULL, *tmp = NULL; - const char *key; - if (!target_start(name)) return (false); *** 380 LINES SKIPPED *** From nobody Mon Aug 4 19:46:42 2025 X-Original-To: dev-commits-src-main@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 4bwnBC1s2Yz63RJF; Mon, 04 Aug 2025 19:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBB4zrBz4KXc; Mon, 04 Aug 2025 19:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336802; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gLcYFrE+qkpgrL61BRAs8ChzQx0xZ8UthFJa42kePYQ=; b=lhizlA3DuAwwyuUAq5d4Wnu+ZZ7SEZg0mqP4JjQgQp+bFs+BP7ScOTjhYBwsO/X2wa+MOn 6SQTwHMJ5P/95TFlpd6iWMTeIqNkBzanix3fJMQaIkZdf90CDVfS44GzUXo8nc+JpG72zS ixLehPtBWzBaNGDqmTrFPp0YqlL/Q5IyWOxT73JpTK5INSfVqRacACeYt5APb+pBxL1lox V62fPtdS6o7sp7Rq4Cb1DSeS3RPYCg9RbOQQcBdmfgPk64J9UdyolpyaLJxB+wohD/JuV8 YP+C1mUcKwXAHuaKds75TQt4hTPtRUEJ5Q2dDL0Q3mbWYco2gE4nR/Vhs/afYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336802; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gLcYFrE+qkpgrL61BRAs8ChzQx0xZ8UthFJa42kePYQ=; b=jWxJ0OQ28dBhSPVmvUa4PVzbQXsEsxvGdhVNgRrBVNfGy6beBy7U3dSa91kmFZo5Ftnim+ mIKexpK7fwSd7eVnnmDkrM/NRW+eggnaRhD4R6RtsiE63WmNbfTA4R1Rc16uW8WzOU/8yw nCRW6BwKoVNARdAQ13MnThkZjK+uEmBqzZbW0FWYo7q6lNqfFMGbbDvqUBWcdK5cFWhNhb F7T4Czmdff7gBfQ1gTyKyxZ3K4fcEETTK0EK/avD/Qft2RbOr5wG4mesSo2n7IsHHpXtku SAYfscDFffCVF2rGUyVpQUBhKj380PtpUSwueDfCHxFyxhZVVSGMV8XaoOBygA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336802; a=rsa-sha256; cv=none; b=crXNpyo1F825PYYOEgEdJiTC63U+dabnI653MVGp2NMFW6/K2LusNoeeeiSOkTDOx0xUD6 7JGg0Rx06CfrmhNgX5AYmLdDIq3NVtnqNwlAXJypx8xhNhZWsjuSoPqlVRw1PrOf6Au9Wv MDpqe5JKRKH3oINXEvEfHiQFoE2I6aHjfLuduD7ALvTn/rHhPBvhGynC7RBZTtUjJNoW43 NpTBtGjleh0DPOj94CDYTFz2/ZbSwKlXrnalgwCm5Y7om4JGJQhbFoXbS127DxQ6bCjXwn fh4XofmLG0fw175FckKzrFBD5Qfk4vCABFrNiQ4dqsY4RpOxsSXK85OAaU0yxw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBB4Z8pz13B8; Mon, 04 Aug 2025 19:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkg5I098893; Mon, 4 Aug 2025 19:46:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkgJC098890; Mon, 4 Aug 2025 19:46:42 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:42 GMT Message-Id: <202508041946.574JkgJC098890@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 7f912714c536 - main - ctld: Convert struct auth to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7f912714c53644ea18fc58ffa364918ccfa22999 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7f912714c53644ea18fc58ffa364918ccfa22999 commit 7f912714c53644ea18fc58ffa364918ccfa22999 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Convert struct auth to a C++ class Use private std::string to hold secret and mutual authentication strings along with accessors to retrieve constant C versions of those strings. Add a helper function to determine if an auth object contains mutual credentials. Instead of storing the user name in the structure, use an unordered_map<> with the username as the key for the ag_auths member of auth_group. Add a parse error if multiple credentials specify the same user. Previously the code always used the first credential when verifying and ignored additional credentials silently. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 72 +++++++++++++--------------------------------- usr.sbin/ctld/ctld.hh | 28 +++++++++++++----- usr.sbin/ctld/discovery.cc | 2 +- usr.sbin/ctld/login.cc | 31 ++++++++++---------- 4 files changed, 57 insertions(+), 76 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index ba65befa2d0a..558ddb8ac6aa 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -143,42 +143,14 @@ conf_delete(struct conf *conf) free(conf); } -static struct auth * -auth_new(struct auth_group *ag) -{ - struct auth *auth; - - auth = reinterpret_cast(calloc(1, sizeof(*auth))); - if (auth == NULL) - log_err(1, "calloc"); - auth->a_auth_group = ag; - TAILQ_INSERT_TAIL(&ag->ag_auths, auth, a_next); - return (auth); -} - -static void -auth_delete(struct auth *auth) -{ - TAILQ_REMOVE(&auth->a_auth_group->ag_auths, auth, a_next); - - free(auth->a_user); - free(auth->a_secret); - free(auth->a_mutual_user); - free(auth->a_mutual_secret); - free(auth); -} - const struct auth * auth_find(const struct auth_group *ag, const char *user) { - const struct auth *auth; + auto it = ag->ag_auths.find(user); + if (it == ag->ag_auths.end()) + return (nullptr); - TAILQ_FOREACH(auth, &ag->ag_auths, a_next) { - if (strcmp(auth->a_user, user) == 0) - return (auth); - } - - return (NULL); + return (&it->second); } static void @@ -188,6 +160,7 @@ auth_check_secret_length(const struct auth_group *ag, const char *user, size_t len; len = strlen(secret); + assert(len != 0); if (len > 16) { log_warnx("%s for user \"%s\", %s, is too long; it should be " "at most 16 characters long", secret_type, user, @@ -204,8 +177,6 @@ bool auth_new_chap(struct auth_group *ag, const char *user, const char *secret) { - struct auth *auth; - if (ag->ag_type == AG_TYPE_UNKNOWN) ag->ag_type = AG_TYPE_CHAP; if (ag->ag_type != AG_TYPE_CHAP) { @@ -216,9 +187,12 @@ auth_new_chap(struct auth_group *ag, const char *user, auth_check_secret_length(ag, user, secret, "secret"); - auth = auth_new(ag); - auth->a_user = checked_strdup(user); - auth->a_secret = checked_strdup(secret); + const auto &pair = ag->ag_auths.try_emplace(user, secret); + if (!pair.second) { + log_warnx("duplicate credentials for user \"%s\" for %s", + user, ag->ag_label); + return (false); + } return (true); } @@ -227,8 +201,6 @@ bool auth_new_chap_mutual(struct auth_group *ag, const char *user, const char *secret, const char *user2, const char *secret2) { - struct auth *auth; - if (ag->ag_type == AG_TYPE_UNKNOWN) ag->ag_type = AG_TYPE_CHAP_MUTUAL; if (ag->ag_type != AG_TYPE_CHAP_MUTUAL) { @@ -240,11 +212,13 @@ auth_new_chap_mutual(struct auth_group *ag, const char *user, auth_check_secret_length(ag, user, secret, "secret"); auth_check_secret_length(ag, user, secret2, "mutual secret"); - auth = auth_new(ag); - auth->a_user = checked_strdup(user); - auth->a_secret = checked_strdup(secret); - auth->a_mutual_user = checked_strdup(user2); - auth->a_mutual_secret = checked_strdup(secret2); + const auto &pair = ag->ag_auths.try_emplace(user, secret, user2, + secret2); + if (!pair.second) { + log_warnx("duplicate credentials for user \"%s\" for %s", + user, ag->ag_label); + return (false); + } return (true); } @@ -442,13 +416,10 @@ auth_group_create(struct conf *conf, const char *name, char *label) { struct auth_group *ag; - ag = reinterpret_cast(calloc(1, sizeof(*ag))); - if (ag == NULL) - log_err(1, "calloc"); + ag = new auth_group(); if (name != NULL) ag->ag_name = checked_strdup(name); ag->ag_label = label; - TAILQ_INIT(&ag->ag_auths); TAILQ_INIT(&ag->ag_names); TAILQ_INIT(&ag->ag_portals); ag->ag_conf = conf; @@ -485,14 +456,11 @@ auth_group_new(struct conf *conf, struct target *target) void auth_group_delete(struct auth_group *ag) { - struct auth *auth, *auth_tmp; struct auth_name *auth_name, *auth_name_tmp; struct auth_portal *auth_portal, *auth_portal_tmp; TAILQ_REMOVE(&ag->ag_conf->conf_auth_groups, ag, ag_next); - TAILQ_FOREACH_SAFE(auth, &ag->ag_auths, a_next, auth_tmp) - auth_delete(auth); TAILQ_FOREACH_SAFE(auth_name, &ag->ag_names, an_next, auth_name_tmp) auth_name_delete(auth_name); TAILQ_FOREACH_SAFE(auth_portal, &ag->ag_portals, ap_next, @@ -500,7 +468,7 @@ auth_group_delete(struct auth_group *ag) auth_portal_delete(auth_portal); free(ag->ag_label); free(ag->ag_name); - free(ag); + delete ag; } struct auth_group * diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 61e453d8dc23..a2cedeaf77da 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -41,6 +41,10 @@ #include #include +#include +#include +#include + #define DEFAULT_CONFIG_PATH "/etc/ctl.conf" #define DEFAULT_PIDFILE "/var/run/ctld.pid" #define DEFAULT_BLOCKSIZE 512 @@ -50,12 +54,22 @@ #define SOCKBUF_SIZE 1048576 struct auth { - TAILQ_ENTRY(auth) a_next; - struct auth_group *a_auth_group; - char *a_user; - char *a_secret; - char *a_mutual_user; - char *a_mutual_secret; + auth(std::string_view secret) : a_secret(secret) {} + auth(std::string_view secret, std::string_view mutual_user, + std::string_view mutual_secret) : + a_secret(secret), a_mutual_user(mutual_user), + a_mutual_secret(mutual_secret) {} + + bool mutual() const { return !a_mutual_user.empty(); } + + const char *secret() const { return a_secret.c_str(); } + const char *mutual_user() const { return a_mutual_user.c_str(); } + const char *mutual_secret() const { return a_mutual_secret.c_str(); } + +private: + std::string a_secret; + std::string a_mutual_user; + std::string a_mutual_secret; }; struct auth_name { @@ -84,7 +98,7 @@ struct auth_group { char *ag_name; char *ag_label; int ag_type; - TAILQ_HEAD(, auth) ag_auths; + std::unordered_map ag_auths; TAILQ_HEAD(, auth_name) ag_names; TAILQ_HEAD(, auth_portal) ag_portals; }; diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index 3cf1b94a9619..c4bfb94669f9 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -196,7 +196,7 @@ discovery_target_filtered_out(const struct ctld_connection *conn, return (true); } - error = chap_authenticate(conn->conn_chap, auth->a_secret); + error = chap_authenticate(conn->conn_chap, auth->secret()); if (error != 0) { log_debugx("password for CHAP user \"%s\" doesn't " "match target \"%s\"; skipping", diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index e891a3ed4b67..549fa0c397ad 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -336,7 +336,7 @@ login_send_chap_c(struct pdu *request, struct chap *chap) static struct pdu * login_receive_chap_r(struct connection *conn, struct auth_group *ag, - struct chap *chap, const struct auth **authp) + struct chap *chap, const struct auth **authp, std::string &user) { struct pdu *request; struct keys *request_keys; @@ -376,15 +376,13 @@ login_receive_chap_r(struct connection *conn, struct auth_group *ag, chap_n); } - assert(auth->a_secret != NULL); - assert(strlen(auth->a_secret) > 0); - - error = chap_authenticate(chap, auth->a_secret); + error = chap_authenticate(chap, auth->secret()); if (error != 0) { login_send_error(request, 0x02, 0x01); log_errx(1, "CHAP authentication failed for user \"%s\"", - auth->a_user); + chap_n); } + user = chap_n; keys_delete(request_keys); @@ -394,7 +392,7 @@ login_receive_chap_r(struct connection *conn, struct auth_group *ag, static void login_send_chap_success(struct pdu *request, - const struct auth *auth) + const struct auth *auth, const std::string &user) { struct pdu *response; struct keys *request_keys, *response_keys; @@ -424,17 +422,17 @@ login_send_chap_success(struct pdu *request, log_errx(1, "initiator requested target " "authentication, but didn't send CHAP_C"); } - if (auth->a_auth_group->ag_type != AG_TYPE_CHAP_MUTUAL) { + if (!auth->mutual()) { login_send_error(request, 0x02, 0x01); log_errx(1, "initiator requests target authentication " "for user \"%s\", but mutual user/secret " - "is not set", auth->a_user); + "is not set", user.c_str()); } log_debugx("performing mutual authentication as user \"%s\"", - auth->a_mutual_user); + auth->mutual_user()); - rchap = rchap_new(auth->a_mutual_secret); + rchap = rchap_new(auth->mutual_secret()); error = rchap_receive(rchap, chap_i, chap_c); if (error != 0) { login_send_error(request, 0x02, 0x07); @@ -444,7 +442,7 @@ login_send_chap_success(struct pdu *request, chap_r = rchap_get_response(rchap); rchap_delete(rchap); response_keys = keys_new(); - keys_add(response_keys, "CHAP_N", auth->a_mutual_user); + keys_add(response_keys, "CHAP_N", auth->mutual_user()); keys_add(response_keys, "CHAP_R", chap_r); free(chap_r); keys_save_pdu(response_keys, response); @@ -461,6 +459,7 @@ login_send_chap_success(struct pdu *request, static void login_chap(struct ctld_connection *conn, struct auth_group *ag) { + std::string user; const struct auth *auth; struct chap *chap; struct pdu *request; @@ -488,20 +487,20 @@ login_chap(struct ctld_connection *conn, struct auth_group *ag) * Receive CHAP_N/CHAP_R PDU and authenticate. */ log_debugx("waiting for CHAP_N/CHAP_R"); - request = login_receive_chap_r(&conn->conn, ag, chap, &auth); + request = login_receive_chap_r(&conn->conn, ag, chap, &auth, user); /* * Yay, authentication succeeded! */ log_debugx("authentication succeeded for user \"%s\"; " - "transitioning to operational parameter negotiation", auth->a_user); - login_send_chap_success(request, auth); + "transitioning to operational parameter negotiation", user.c_str()); + login_send_chap_success(request, auth, user); pdu_delete(request); /* * Leave username and CHAP information for discovery(). */ - conn->conn_user = auth->a_user; + conn->conn_user = checked_strdup(user.c_str()); conn->conn_chap = chap; } From nobody Mon Aug 4 19:46:41 2025 X-Original-To: dev-commits-src-main@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 4bwnBC1gydz63RcG; Mon, 04 Aug 2025 19:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnB94fRKz4KDf; Mon, 04 Aug 2025 19:46:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336801; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c51VTjYcUQvnKlFSRO+b2nxN2HLZAIx78eRwfjmpjhI=; b=UDoaMwZFaNN5lDp3UBh7vc7TZL4kSI8f0gyOmF/EAXGOWAmJ9WjtBz5315MLTrU2hHmSPF 5SJvxAHkRXIA/7FoS+fhglO3eqluZFhqKcLFuxbPO2eop44ZT04fwNX/S9HXY/gZIBpmIh VWDUc5RovEGDXj6dm2eIk8Ije+KA2fu4beExj5JrZDUV9TfuhUw6ngeXC9XRbpysmz8UBm 9gcOwedTgxX9Px5J+wkutMvnF4nF9l22yj1cl75TTYBQWANZXRpugD/EDhgOAQcmic57vB oaV+0JUzbcnJ3UdRpfJP42Get0FSCrD0ZeTEW2QXesWl++/SXs1o0N/LTt5/6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336801; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c51VTjYcUQvnKlFSRO+b2nxN2HLZAIx78eRwfjmpjhI=; b=YqADqU1NHL8btC5A9i3h0KBS5ftV6TtYRnuQJpb+KU7x46H5d3pGsbn0/ZH/NBPkWSX6B8 LdVmm7lEOKjzZPXmIiSLzqe/wh5PgYfEAmqFuxyAgvabfstdk21+7j2T3u106XPUzJQ29+ 70dkyen5vmKtJZGfzKxuiwQG3judeNQRKkpWYnj1dJINdbL8D+lUuklIw3loYgm2VoCHWr CjFe/aHjitqf52YD6Rjgsy75Bavop/fy9Y0KecIQiRINOe61ppWgVy8Iww7AXCJ8Xpy6Lk 3afBVLwR9cqjTxvLatoh6Dxtb90C+RXqUJl9JTBDazwIueRXHNYdv4LqpSs67A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336801; a=rsa-sha256; cv=none; b=f7rz6VvnD+KPtLlK9FlEPPSBjetot2Gb4rQvWl8kXHfPJ5rsPkxLlVWsdX6qpoy8ifxGQM UGGrarSFhMYoaYJD5GvAVJfWdMqcdT2ztFQ5B/uoTNphWfL4xh6Bd+JfDm5VlAoZeUTnYm mu35JnM33UhrWn47KWitt+YJdCKrYzDLbyfHA45KvVp6tMFjbi0WHMTfPNJ/clPPidYCXb 1BK/Gxb/qCz1Z6j5F7pNVLo7fThKguJuiqBaVnucs4af2+1381RSmT2vVe0sSobDgTAaRp rtmCb/mQCV5fJIGCsQlRUz4j/aW66P3SVgUwfsWVFf/k4RCUG2meIFH0YcycLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnB93wPMz12qj; Mon, 04 Aug 2025 19:46:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkfM7098854; Mon, 4 Aug 2025 19:46:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkfOf098851; Mon, 4 Aug 2025 19:46:41 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:41 GMT Message-Id: <202508041946.574JkfOf098851@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 9a36ad4f5ada - main - ctld: Use scoped guards to finish configuration scopes in the UCL parser List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9a36ad4f5ada9a45492db0aea1a7cb1c77890192 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=9a36ad4f5ada9a45492db0aea1a7cb1c77890192 commit 9a36ad4f5ada9a45492db0aea1a7cb1c77890192 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Use scoped guards to finish configuration scopes in the UCL parser Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/uclparse.cc | 181 +++++++++++++++++++++++----------------------- 1 file changed, 90 insertions(+), 91 deletions(-) diff --git a/usr.sbin/ctld/uclparse.cc b/usr.sbin/ctld/uclparse.cc index 722b045effb6..843e727a2e52 100644 --- a/usr.sbin/ctld/uclparse.cc +++ b/usr.sbin/ctld/uclparse.cc @@ -47,6 +47,16 @@ #include "conf.h" #include "ctld.hh" +struct scope_exit { + using callback = void(); + scope_exit(callback *fn) : fn(fn) {} + + ~scope_exit() { fn(); } + +private: + callback *fn; +}; + static bool uclparse_toplevel(const ucl::Ucl &); static bool uclparse_chap(const char *, const ucl::Ucl &); static bool uclparse_chap_mutual(const char *, const ucl::Ucl &); @@ -259,6 +269,7 @@ uclparse_target_lun(const char *t_name, const ucl::Ucl &obj) if (!target_start_lun(id)) return (false); + scope_exit finisher(lun_finish); std::string lun_name = freebsd::stringf("lun %u for target \"%s\"", id, t_name); return (uclparse_lun_entries(lun_name.c_str(), obj)); @@ -420,45 +431,46 @@ uclparse_auth_group(const char *name, const ucl::Ucl &top) if (!auth_group_start(name)) return (false); + scope_exit finisher(auth_group_finish); for (const auto &obj : top) { std::string key = obj.key(); if (key == "auth-type") { if (!auth_group_set_type(obj.string_value().c_str())) - goto fail; + return false; } if (key == "chap") { if (obj.type() == UCL_OBJECT) { if (!uclparse_chap(name, obj)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!uclparse_chap(name, tmp)) - goto fail; + return false; } } else { log_warnx("\"chap\" property of auth-group " "\"%s\" is not an array or object", name); - goto fail; + return false; } } if (key == "chap-mutual") { if (obj.type() == UCL_OBJECT) { if (!uclparse_chap_mutual(name, obj)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!uclparse_chap_mutual(name, tmp)) - goto fail; + return false; } } else { log_warnx("\"chap-mutual\" property of " "auth-group \"%s\" is not an array or object", name); - goto fail; + return false; } } @@ -466,18 +478,18 @@ uclparse_auth_group(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!auth_group_add_initiator_name( obj.string_value().c_str())) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!auth_group_add_initiator_name( tmp.string_value().c_str())) - goto fail; + return false; } } else { log_warnx("\"initiator-name\" property of " "auth-group \"%s\" is not an array or string", name); - goto fail; + return false; } } @@ -485,27 +497,23 @@ uclparse_auth_group(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!auth_group_add_initiator_portal( obj.string_value().c_str())) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!auth_group_add_initiator_portal( tmp.string_value().c_str())) - goto fail; + return false; } } else { log_warnx("\"initiator-portal\" property of " "auth-group \"%s\" is not an array or string", name); - goto fail; + return false; } } } - auth_group_finish(); return (true); -fail: - auth_group_finish(); - return (false); } static bool @@ -590,6 +598,7 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) if (!portal_group_start(name)) return (false); + scope_exit finisher(portal_group_finish); for (const auto &obj : top) { std::string key = obj.key(); @@ -598,12 +607,12 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) log_warnx("\"discovery-auth-group\" property " "of portal-group \"%s\" is not a string", name); - goto fail; + return false; } if (!portal_group_set_discovery_auth_group( obj.string_value().c_str())) - goto fail; + return false; } if (key == "discovery-filter") { @@ -611,12 +620,12 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) log_warnx("\"discovery-filter\" property of " "portal-group \"%s\" is not a string", name); - goto fail; + return false; } if (!portal_group_set_filter( obj.string_value().c_str())) - goto fail; + return false; } if (key == "foreign") { @@ -627,19 +636,19 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!portal_group_add_listen( obj.string_value().c_str(), false)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!portal_group_add_listen( tmp.string_value().c_str(), false)) - goto fail; + return false; } } else { log_warnx("\"listen\" property of " "portal-group \"%s\" is not a string", name); - goto fail; + return false; } } @@ -647,19 +656,19 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!portal_group_add_listen( obj.string_value().c_str(), true)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!portal_group_add_listen( tmp.string_value().c_str(), true)) - goto fail; + return false; } } else { log_warnx("\"listen\" property of " "portal-group \"%s\" is not a string", name); - goto fail; + return false; } } @@ -668,12 +677,12 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) log_warnx("\"offload\" property of " "portal-group \"%s\" is not a string", name); - goto fail; + return false; } if (!portal_group_set_offload( obj.string_value().c_str())) - goto fail; + return false; } if (key == "redirect") { @@ -681,26 +690,26 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) log_warnx("\"listen\" property of " "portal-group \"%s\" is not a string", name); - goto fail; + return false; } if (!portal_group_set_redirection( obj.string_value().c_str())) - goto fail; + return false; } if (key == "options") { if (obj.type() != UCL_OBJECT) { log_warnx("\"options\" property of portal group " "\"%s\" is not an object", name); - goto fail; + return false; } for (const auto &tmp : obj) { if (!portal_group_add_option( tmp.key().c_str(), tmp.forced_string_value().c_str())) - goto fail; + return false; } } @@ -709,7 +718,7 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) log_warnx("\"tag\" property of portal group " "\"%s\" is not an integer", name); - goto fail; + return false; } portal_group_set_tag(obj.int_value()); @@ -717,20 +726,16 @@ uclparse_portal_group(const char *name, const ucl::Ucl &top) if (key == "dscp") { if (!uclparse_dscp("portal", name, obj)) - goto fail; + return false; } if (key == "pcp") { if (!uclparse_pcp("portal", name, obj)) - goto fail; + return false; } } - portal_group_finish(); return (true); -fail: - portal_group_finish(); - return (false); } static bool @@ -739,6 +744,7 @@ uclparse_target(const char *name, const ucl::Ucl &top) if (!target_start(name)) return (false); + scope_exit finisher(target_finish); for (const auto &obj : top) { std::string key = obj.key(); @@ -746,67 +752,67 @@ uclparse_target(const char *name, const ucl::Ucl &top) if (obj.type() != UCL_STRING) { log_warnx("\"alias\" property of target " "\"%s\" is not a string", name); - goto fail; + return false; } if (!target_set_alias(obj.string_value().c_str())) - goto fail; + return false; } if (key == "auth-group") { if (obj.type() != UCL_STRING) { log_warnx("\"auth-group\" property of target " "\"%s\" is not a string", name); - goto fail; + return false; } if (!target_set_auth_group(obj.string_value().c_str())) - goto fail; + return false; } if (key == "auth-type") { if (obj.type() != UCL_STRING) { log_warnx("\"auth-type\" property of target " "\"%s\" is not a string", name); - goto fail; + return false; } if (!target_set_auth_type(obj.string_value().c_str())) - goto fail; + return false; } if (key == "chap") { if (obj.type() == UCL_OBJECT) { if (!uclparse_target_chap(name, obj)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!uclparse_target_chap(name, tmp)) - goto fail; + return false; } } else { log_warnx("\"chap\" property of target " "\"%s\" is not an array or object", name); - goto fail; + return false; } } if (key == "chap-mutual") { if (obj.type() == UCL_OBJECT) { if (!uclparse_target_chap_mutual(name, obj)) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!uclparse_target_chap_mutual(name, tmp)) - goto fail; + return false; } } else { log_warnx("\"chap-mutual\" property of target " "\"%s\" is not an array or object", name); - goto fail; + return false; } } @@ -814,18 +820,18 @@ uclparse_target(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!target_add_initiator_name( obj.string_value().c_str())) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!target_add_initiator_name( tmp.string_value().c_str())) - goto fail; + return false; } } else { log_warnx("\"initiator-name\" property of " "target \"%s\" is not an array or string", name); - goto fail; + return false; } } @@ -833,18 +839,18 @@ uclparse_target(const char *name, const ucl::Ucl &top) if (obj.type() == UCL_STRING) { if (!target_add_initiator_portal( obj.string_value().c_str())) - goto fail; + return false; } else if (obj.type() == UCL_ARRAY) { for (const auto &tmp : obj) { if (!target_add_initiator_portal( tmp.string_value().c_str())) - goto fail; + return false; } } else { log_warnx("\"initiator-portal\" property of " "target \"%s\" is not an array or string", name); - goto fail; + return false; } } @@ -853,11 +859,11 @@ uclparse_target(const char *name, const ucl::Ucl &top) for (const auto &tmp : obj) { if (!uclparse_target_portal_group(name, tmp)) - goto fail; + return false; } } else { if (!uclparse_target_portal_group(name, obj)) - goto fail; + return false; } } @@ -865,37 +871,33 @@ uclparse_target(const char *name, const ucl::Ucl &top) if (obj.type() != UCL_STRING) { log_warnx("\"port\" property of target " "\"%s\" is not a string", name); - goto fail; + return false; } if (!target_set_physical_port(obj.string_value().c_str())) - goto fail; + return false; } if (key == "redirect") { if (obj.type() != UCL_STRING) { log_warnx("\"redirect\" property of target " "\"%s\" is not a string", name); - goto fail; + return false; } if (!target_set_redirection(obj.string_value().c_str())) - goto fail; + return false; } if (key == "lun") { for (const auto &tmp : obj) { if (!uclparse_target_lun(name, tmp)) - goto fail; + return false; } } } - target_finish(); return (true); -fail: - target_finish(); - return (false); } static bool @@ -904,6 +906,7 @@ uclparse_lun(const char *name, const ucl::Ucl &top) if (!lun_start(name)) return (false); + scope_exit finisher(lun_finish); std::string lun_name = freebsd::stringf("lun \"%s\"", name); return (uclparse_lun_entries(lun_name.c_str(), top)); } @@ -918,68 +921,68 @@ uclparse_lun_entries(const char *name, const ucl::Ucl &top) if (obj.type() != UCL_STRING) { log_warnx("\"backend\" property of %s " "is not a string", name); - goto fail; + return false; } if (!lun_set_backend(obj.string_value().c_str())) - goto fail; + return false; } if (key == "blocksize") { if (obj.type() != UCL_INT) { log_warnx("\"blocksize\" property of %s " "is not an integer", name); - goto fail; + return false; } if (!lun_set_blocksize(obj.int_value())) - goto fail; + return false; } if (key == "device-id") { if (obj.type() != UCL_STRING) { log_warnx("\"device-id\" property of %s " "is not an integer", name); - goto fail; + return false; } if (!lun_set_device_id(obj.string_value().c_str())) - goto fail; + return false; } if (key == "device-type") { if (obj.type() != UCL_STRING) { log_warnx("\"device-type\" property of %s " "is not an integer", name); - goto fail; + return false; } if (!lun_set_device_type(obj.string_value().c_str())) - goto fail; + return false; } if (key == "ctl-lun") { if (obj.type() != UCL_INT) { log_warnx("\"ctl-lun\" property of %s " "is not an integer", name); - goto fail; + return false; } if (!lun_set_ctl_lun(obj.int_value())) - goto fail; + return false; } if (key == "options") { if (obj.type() != UCL_OBJECT) { log_warnx("\"options\" property of %s " "is not an object", name); - goto fail; + return false; } for (const auto &child : obj) { if (!lun_add_option(child.key().c_str(), child.forced_string_value().c_str())) - goto fail; + return false; } } @@ -987,41 +990,37 @@ uclparse_lun_entries(const char *name, const ucl::Ucl &top) if (obj.type() != UCL_STRING) { log_warnx("\"path\" property of %s " "is not a string", name); - goto fail; + return false; } if (!lun_set_path(obj.string_value().c_str())) - goto fail; + return false; } if (key == "serial") { if (obj.type() != UCL_STRING) { log_warnx("\"serial\" property of %s " "is not a string", name); - goto fail; + return false; } if (!lun_set_serial(obj.string_value().c_str())) - goto fail; + return false; } if (key == "size") { if (obj.type() != UCL_INT) { log_warnx("\"size\" property of %s " "is not an integer", name); - goto fail; + return false; } if (!lun_set_size(obj.int_value())) - goto fail; + return false; } } - lun_finish(); return (true); -fail: - lun_finish(); - return (false); } bool From nobody Mon Aug 4 19:46:44 2025 X-Original-To: dev-commits-src-main@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 4bwnBF2lwfz63RcM; Mon, 04 Aug 2025 19:46:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBD6w0Dz4KVr; Mon, 04 Aug 2025 19:46:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336805; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=etkLKq3t8rwmne/RSZHufAkgPqPZhJaeGUdFWXL20n0=; b=FdMUQAtWdscIvGXlg3T+B8P9FE87fbGHAlwL5a/3gjgU4NKZO6tGuJQ23UUV++oaR4ZFL5 gSaBL9TvMXfPpmCZcB2i04I7v0d6Qb8o6e9/n33poWTHxubqIb1gb6Wuc1G+hOLcitCBbf P5CmJlQrPiAjpbC7GdODnJYnGscwQwjzoa13pyDBD63uyDN3obly+b8VabQh57lo29pNdp NRJJcEWOYfr/aSLJjfPlESGDGeJDP3cDIG8GDgF0ZrJBEjF3sg2vV1sS4Y4BN8bI7bamnU rwL3MxwyULhjCBVE8V9yC++8ys203nb5QwL8WgxkoFDra4PyitZqdvmHvE9pTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336805; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=etkLKq3t8rwmne/RSZHufAkgPqPZhJaeGUdFWXL20n0=; b=AEay9POY1KM47LXMdDG3WYks7VmbBnwyxAW9lAf/ZvOlNBOtVuXJ8HlCsqLkSjbfJCnZSR PdQQ+K22dyR7aWpM4h6haKKvqC4WGQWodP40RKHpdNURYYZUnXJVJFm+jhjWYCzcytruAf 9WsX0ZEuZGVJExFY2c3T48NIOXwbJoSrCkb17Ve9droXFaOmQpDSYkWjLpWOkKSpFAZGqp xZdlVQHO4E/VSikjEIFZwQIIfdAHfNQuyGktJ2KAR1xwikkSQYcAfW/1IsVFPAOti9zGOR q2Bi3GMdfy0fsMzpZoDyZcezyYazDEqc1w3Adst1iS0y2qPscKyOCcVPm4MUcQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336805; a=rsa-sha256; cv=none; b=LPhZBhcVRmPmvKkQMIvHikbja7SZqlIwp/YndniKxlv2E8BNhwdaOqde+4Uxq+MWpJs3Zd iA/HrdV2VFLvwCcWLlIG50ngsx3l+1pKMoBd/2yE+/B6o/AuOpCeahdEPMs0BCHTIkBnVP G59KMLn79BxehvocYdF10Rz81r7no6nSWNRpEHgLwKALIIW5ZlrA32vDV/3E38ZmF5ZA2Y P6gTrdHUPPLt91/bWpcTA8rhdE1WEVMjZa9gtFzvJD/aNkMEc3G7R8GJOkt7Bct+sFDjC4 /gftEBMQF68HxTxWUOG96hOSLeaGP/WyF1ua1VQr6wOW4fOb4VOvsjxquNZgWA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBD60KFz12nK; Mon, 04 Aug 2025 19:46:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jki7i098959; Mon, 4 Aug 2025 19:46:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkiNj098956; Mon, 4 Aug 2025 19:46:44 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:44 GMT Message-Id: <202508041946.574JkiNj098956@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ccb188268565 - main - ctld: Convert struct auth_portal to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ccb188268565a89c7f3649eccfd80e0fe7279e31 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ccb188268565a89c7f3649eccfd80e0fe7279e31 commit ccb188268565a89c7f3649eccfd80e0fe7279e31 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Convert struct auth_portal to a C++ class Pull logic to parse a portal address string into a sockaddr and mask into a parse() method. Reimplement the logic using operations on C++ std::string's instead of C string parsing. Pull logic from inside the loop in auth_portal_find() to compare a candidate socket address against a portal into a matches() method. Use a std::list of auth_portal objects instead of a TAILQ in struct auth_group. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 190 +++++++++++++++++++++++--------------------------- usr.sbin/ctld/ctld.hh | 23 +++--- 2 files changed, 100 insertions(+), 113 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 3ddccbfdb20e..396b8db13323 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -51,6 +51,8 @@ #include #include +#include + #include "conf.h" #include "ctld.hh" #include "isns.hh" @@ -241,135 +243,127 @@ auth_name_check(const struct auth_group *ag, const char *initiator_name) } bool -auth_portal_new(struct auth_group *ag, const char *portal) +auth_portal::parse(const char *portal) { - struct auth_portal *ap; - char *net, *mask, *str, *tmp; - int len, dm, m; + std::string net(portal); + std::string mask; - ap = reinterpret_cast(calloc(1, sizeof(*ap))); - if (ap == NULL) - log_err(1, "calloc"); - ap->ap_auth_group = ag; - ap->ap_initiator_portal = checked_strdup(portal); - mask = str = checked_strdup(portal); - net = strsep(&mask, "/"); - if (net[0] == '[') { - net++; - len = strlen(net); + /* Split into 'net' (address) and 'mask'. */ + size_t pos = net.find('/'); + if (pos != net.npos) { + mask = net.substr(pos + 1); + if (mask.empty()) + return false; + net.resize(pos); + } + if (net.empty()) + return false; + + /* + * If 'net' starts with a '[', ensure it ends with a ']' and + * force interpreting the address as IPv6. + */ + bool brackets = net[0] == '['; + if (brackets) { + net.erase(0, 1); + + size_t len = net.length(); if (len < 2) - goto error; + return false; if (net[len - 1] != ']') - goto error; - net[len - 1] = 0; - } else if (net[0] == '\0') - goto error; - if (str[0] == '[' || strchr(net, ':') != NULL) { + return false; + net.resize(len - 1); + } + + /* Parse address from 'net' and set default mask. */ + if (brackets || net.find(':') != net.npos) { struct sockaddr_in6 *sin6 = - (struct sockaddr_in6 *)&ap->ap_sa; + (struct sockaddr_in6 *)&ap_sa; sin6->sin6_len = sizeof(*sin6); sin6->sin6_family = AF_INET6; - if (inet_pton(AF_INET6, net, &sin6->sin6_addr) <= 0) - goto error; - dm = 128; + if (inet_pton(AF_INET6, net.c_str(), &sin6->sin6_addr) <= 0) + return false; + ap_mask = sizeof(sin6->sin6_addr) * 8; } else { struct sockaddr_in *sin = - (struct sockaddr_in *)&ap->ap_sa; + (struct sockaddr_in *)&ap_sa; sin->sin_len = sizeof(*sin); sin->sin_family = AF_INET; - if (inet_pton(AF_INET, net, &sin->sin_addr) <= 0) - goto error; - dm = 32; - } - if (mask != NULL) { - if (mask[0] == '\0') - goto error; - m = strtol(mask, &tmp, 0); - if (m < 0 || m > dm || tmp[0] != 0) - goto error; - } else - m = dm; - ap->ap_mask = m; - free(str); - TAILQ_INSERT_TAIL(&ag->ag_portals, ap, ap_next); - return (true); - -error: - free(str); - free(ap); - log_warnx("incorrect initiator portal \"%s\"", portal); - return (false); -} + if (inet_pton(AF_INET, net.c_str(), &sin->sin_addr) <= 0) + return false; + ap_mask = sizeof(sin->sin_addr) * 8; + } -static void -auth_portal_delete(struct auth_portal *ap) -{ - TAILQ_REMOVE(&ap->ap_auth_group->ag_portals, ap, ap_next); + /* Parse explicit mask if present. */ + if (!mask.empty()) { + char *tmp; + long m = strtol(mask.c_str(), &tmp, 0); + if (m < 0 || m > ap_mask || tmp[0] != 0) + return false; + ap_mask = m; + } - free(ap->ap_initiator_portal); - free(ap); + return true; } bool -auth_portal_defined(const struct auth_group *ag) +auth_portal_new(struct auth_group *ag, const char *portal) { - if (TAILQ_EMPTY(&ag->ag_portals)) + auth_portal ap; + if (!ap.parse(portal)) { + log_warnx("invalid initiator portal \"%s\"", portal); return (false); + } + + ag->ag_portals.emplace_back(ap); return (true); } -const struct auth_portal * -auth_portal_find(const struct auth_group *ag, const struct sockaddr_storage *ss) +bool +auth_portal::matches(const struct sockaddr *sa) const { - const struct auth_portal *ap; const uint8_t *a, *b; int i; - uint8_t bmask; - TAILQ_FOREACH(ap, &ag->ag_portals, ap_next) { - if (ap->ap_sa.ss_family != ss->ss_family) - continue; - if (ss->ss_family == AF_INET) { - a = (const uint8_t *) - &((const struct sockaddr_in *)ss)->sin_addr; - b = (const uint8_t *) - &((const struct sockaddr_in *)&ap->ap_sa)->sin_addr; - } else { - a = (const uint8_t *) - &((const struct sockaddr_in6 *)ss)->sin6_addr; - b = (const uint8_t *) - &((const struct sockaddr_in6 *)&ap->ap_sa)->sin6_addr; - } - for (i = 0; i < ap->ap_mask / 8; i++) { - if (a[i] != b[i]) - goto next; - } - if (ap->ap_mask % 8) { - bmask = 0xff << (8 - (ap->ap_mask % 8)); - if ((a[i] & bmask) != (b[i] & bmask)) - goto next; - } - return (ap); -next: - ; - } + if (ap_sa.ss_family != sa->sa_family) + return (false); - return (NULL); + if (sa->sa_family == AF_INET) { + a = (const uint8_t *) + &((const struct sockaddr_in *)sa)->sin_addr; + b = (const uint8_t *) + &((const struct sockaddr_in *)&ap_sa)->sin_addr; + } else { + a = (const uint8_t *) + &((const struct sockaddr_in6 *)sa)->sin6_addr; + b = (const uint8_t *) + &((const struct sockaddr_in6 *)&ap_sa)->sin6_addr; + } + for (i = 0; i < ap_mask / 8; i++) { + if (a[i] != b[i]) + return (false); + } + if ((ap_mask % 8) != 0) { + uint8_t bmask = 0xff << (8 - (ap_mask % 8)); + if ((a[i] & bmask) != (b[i] & bmask)) + return (false); + } + return (true); } bool -auth_portal_check(const struct auth_group *ag, const struct sockaddr_storage *sa) +auth_portal_check(const struct auth_group *ag, + const struct sockaddr_storage *sa) { - - if (!auth_portal_defined(ag)) + if (ag->ag_portals.empty()) return (true); - if (auth_portal_find(ag, sa) == NULL) - return (false); - - return (true); + for (const auth_portal &ap : ag->ag_portals) + if (ap.matches((const struct sockaddr *)sa)) + return (true); + return (false); } static struct auth_group * @@ -381,7 +375,6 @@ auth_group_create(struct conf *conf, const char *name, char *label) if (name != NULL) ag->ag_name = checked_strdup(name); ag->ag_label = label; - TAILQ_INIT(&ag->ag_portals); ag->ag_conf = conf; TAILQ_INSERT_TAIL(&conf->conf_auth_groups, ag, ag_next); @@ -416,13 +409,8 @@ auth_group_new(struct conf *conf, struct target *target) void auth_group_delete(struct auth_group *ag) { - struct auth_portal *auth_portal, *auth_portal_tmp; - TAILQ_REMOVE(&ag->ag_conf->conf_auth_groups, ag, ag_next); - TAILQ_FOREACH_SAFE(auth_portal, &ag->ag_portals, ap_next, - auth_portal_tmp) - auth_portal_delete(auth_portal); free(ag->ag_label); free(ag->ag_name); delete ag; diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 339793e90bf1..06b932a65453 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -74,11 +75,12 @@ private: }; struct auth_portal { - TAILQ_ENTRY(auth_portal) ap_next; - struct auth_group *ap_auth_group; - char *ap_initiator_portal; + bool matches(const struct sockaddr *sa) const; + bool parse(const char *portal); + +private: struct sockaddr_storage ap_sa; - int ap_mask; + int ap_mask = 0; }; #define AG_TYPE_UNKNOWN 0 @@ -95,7 +97,7 @@ struct auth_group { int ag_type; std::unordered_map ag_auths; std::unordered_set ag_names; - TAILQ_HEAD(, auth_portal) ag_portals; + std::list ag_portals; }; struct portal { @@ -286,13 +288,10 @@ bool auth_name_new(struct auth_group *ag, bool auth_name_check(const struct auth_group *ag, const char *initiator_name); -bool auth_portal_new(struct auth_group *ag, - const char *initiator_portal); -bool auth_portal_defined(const struct auth_group *ag); -const struct auth_portal *auth_portal_find(const struct auth_group *ag, - const struct sockaddr_storage *sa); -bool auth_portal_check(const struct auth_group *ag, - const struct sockaddr_storage *sa); +bool auth_portal_new(struct auth_group *ag, + const char *initiator_portal); +bool auth_portal_check(const struct auth_group *ag, + const struct sockaddr_storage *sa); struct portal_group *portal_group_new(struct conf *conf, const char *name); void portal_group_delete(struct portal_group *pg); From nobody Mon Aug 4 19:46:43 2025 X-Original-To: dev-commits-src-main@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 4bwnBD3vdjz63RcJ; Mon, 04 Aug 2025 19:46:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBC5wzMz4KZl; Mon, 04 Aug 2025 19:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336803; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F5j09gzKguwAxaYcEP+hP00OVBfKnhKwWjKmJVLwbv0=; b=Gubiq/m+xle7Dg8VR1g3pmDTaB1DurbAMshpWDrrrF0/0bAy7FPW4kyZcKHcRQIlP5xOIy Ohtt9JLsFI8T0hQXqQ543kt3XZu6ufv2svJYZUt8kf07K4D2+FCZaIXAqEurY/rvm3brXO SmPcULBufdo5m8N3ne4aZe4LAbtd3C7RA3NBVLNEAWJRnU+BevgPvs4EB13LC7xS661yrP HhzqwSrr1u4Oi5zdk+QY0fA1F2fuP2IIhLEbwZK1SYcirHXpcyzggZK+DMr8xoKSR781yX ReH17ijTFv74lgWZosXNTpwo1Tr2+k+fDJBLl/ZEZGqznJUvrYKf8lQb/p3wKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336803; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F5j09gzKguwAxaYcEP+hP00OVBfKnhKwWjKmJVLwbv0=; b=m+YbLkzjzYD9dMaXtKgcvkIqpoA3LHr48pdyXcmkwdk35yX70KOqrD/7RGNaFiG0ck+sBO qhtmDh/1wTEW79yvyX8F3L7lekkG81EKT5mWS6EbyJXd3KTGyruNvMEsMgDK5T921Sw9GT uKZg3iZBfzRAU1ukPosDkwe5cwn8pdJjTPGijMNzON56uHJGLLfSR/P2JDf9g6m9JAsWt2 sN6jvCu3foN1lzIxTqEqyIY4D6muZSQZdnjQurtHzEnAqKxbhojOfQ+uyzCogJNSiPg9uT A//TfyTTFJWKLEryQx44Z8jZ96CxWrcm4QOFkR2WJiqD/a/Msmu5Q+EmRkIigw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336803; a=rsa-sha256; cv=none; b=K/nUlU6rI/sjTKvnwaRkfbx83RzV2k2cCP5xYXmccT/zijiPmbARatDfpahDkJo0bS6w4C 0cAOAu7uJzJdtKb3JRSrGLMzHWW0fwzOKG7jbNCPzgG6XRtFgmiNrMBWQqSssphmoCG2cS eJ4vPWRw7qukQqqv4S8t5/+Uukz8UyjMdloc4SRXU6xhWznOt9UOcgQ4uQZe57ImJX9VVc o5SwdGmzilSFNLFyKI3Srrya4IIP/tJ+HyNGJZxOPLAtS15MBC8TWY46f8h2QC90fUMHsh 6lxqEU+Ol3d5oi/TghZg7djGyoIZksHj/NAcBgV1fBeN6lglXjMYKin4lcOdiQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBC5Qwbz12f5; Mon, 04 Aug 2025 19:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkhVW098926; Mon, 4 Aug 2025 19:46:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkhbi098923; Mon, 4 Aug 2025 19:46:43 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:43 GMT Message-Id: <202508041946.574Jkhbi098923@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 4c5e0172767d - main - ctld: Replace the auth_name linked list with an unordered_set<> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4c5e0172767d6a61d50c475023b81dc3e2049465 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4c5e0172767d6a61d50c475023b81dc3e2049465 commit 4c5e0172767d6a61d50c475023b81dc3e2049465 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Replace the auth_name linked list with an unordered_set<> Retire the struct auth_name type entirely and change the ag_names member of struct auth_group to be an unordered_set<> of std::string objects. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 51 ++++----------------------------------------------- usr.sbin/ctld/ctld.hh | 12 ++---------- 2 files changed, 6 insertions(+), 57 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 558ddb8ac6aa..3ddccbfdb20e 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -226,57 +226,18 @@ auth_new_chap_mutual(struct auth_group *ag, const char *user, bool auth_name_new(struct auth_group *ag, const char *name) { - struct auth_name *an; - - an = reinterpret_cast(calloc(1, sizeof(*an))); - if (an == NULL) - log_err(1, "calloc"); - an->an_auth_group = ag; - an->an_initiator_name = checked_strdup(name); - TAILQ_INSERT_TAIL(&ag->ag_names, an, an_next); + /* Silently ignore duplicates. */ + ag->ag_names.emplace(name); return (true); } -static void -auth_name_delete(struct auth_name *an) -{ - TAILQ_REMOVE(&an->an_auth_group->ag_names, an, an_next); - - free(an->an_initiator_name); - free(an); -} - -bool -auth_name_defined(const struct auth_group *ag) -{ - if (TAILQ_EMPTY(&ag->ag_names)) - return (false); - return (true); -} - -const struct auth_name * -auth_name_find(const struct auth_group *ag, const char *name) -{ - const struct auth_name *auth_name; - - TAILQ_FOREACH(auth_name, &ag->ag_names, an_next) { - if (strcmp(auth_name->an_initiator_name, name) == 0) - return (auth_name); - } - - return (NULL); -} - bool auth_name_check(const struct auth_group *ag, const char *initiator_name) { - if (!auth_name_defined(ag)) + if (ag->ag_names.empty()) return (true); - if (auth_name_find(ag, initiator_name) == NULL) - return (false); - - return (true); + return (ag->ag_names.count(initiator_name) != 0); } bool @@ -420,7 +381,6 @@ auth_group_create(struct conf *conf, const char *name, char *label) if (name != NULL) ag->ag_name = checked_strdup(name); ag->ag_label = label; - TAILQ_INIT(&ag->ag_names); TAILQ_INIT(&ag->ag_portals); ag->ag_conf = conf; TAILQ_INSERT_TAIL(&conf->conf_auth_groups, ag, ag_next); @@ -456,13 +416,10 @@ auth_group_new(struct conf *conf, struct target *target) void auth_group_delete(struct auth_group *ag) { - struct auth_name *auth_name, *auth_name_tmp; struct auth_portal *auth_portal, *auth_portal_tmp; TAILQ_REMOVE(&ag->ag_conf->conf_auth_groups, ag, ag_next); - TAILQ_FOREACH_SAFE(auth_name, &ag->ag_names, an_next, auth_name_tmp) - auth_name_delete(auth_name); TAILQ_FOREACH_SAFE(auth_portal, &ag->ag_portals, ap_next, auth_portal_tmp) auth_portal_delete(auth_portal); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index a2cedeaf77da..339793e90bf1 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -44,6 +44,7 @@ #include #include #include +#include #define DEFAULT_CONFIG_PATH "/etc/ctl.conf" #define DEFAULT_PIDFILE "/var/run/ctld.pid" @@ -72,12 +73,6 @@ private: std::string a_mutual_secret; }; -struct auth_name { - TAILQ_ENTRY(auth_name) an_next; - struct auth_group *an_auth_group; - char *an_initiator_name; -}; - struct auth_portal { TAILQ_ENTRY(auth_portal) ap_next; struct auth_group *ap_auth_group; @@ -99,7 +94,7 @@ struct auth_group { char *ag_label; int ag_type; std::unordered_map ag_auths; - TAILQ_HEAD(, auth_name) ag_names; + std::unordered_set ag_names; TAILQ_HEAD(, auth_portal) ag_portals; }; @@ -288,9 +283,6 @@ const struct auth *auth_find(const struct auth_group *ag, bool auth_name_new(struct auth_group *ag, const char *initiator_name); -bool auth_name_defined(const struct auth_group *ag); -const struct auth_name *auth_name_find(const struct auth_group *ag, - const char *initiator_name); bool auth_name_check(const struct auth_group *ag, const char *initiator_name); From nobody Mon Aug 4 19:46:45 2025 X-Original-To: dev-commits-src-main@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 4bwnBG5nWvz63QlQ; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBG0f4Tz4KbH; Mon, 04 Aug 2025 19:46:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336806; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KbSGemAj7CPilXt3cI++onYPUm0JQmC4XkbZKUh4qzA=; b=c6W3jyCnUQda3snVXCjV8oJ8tFUa8+gBa8LmmSHUJNYEMv3rNGpIeSgfjqHcoUlseKmQXp WFgMVrDgHj194I1b8x5ex+ZBxsE43hbXMtofpcf8SViXqwIt2CTY8n6kzUZsb1fET6FKgO NWf7fqHiKrXQ9eOvgQO8LcEsu/I5SxnZ1k+znn/fVHyvOtAbG/KvSF2Kd9a9Iz3oSs+ZFW wbmg/AV/sn7g+INF6ri49SA8TTnBNImtvy7OVWvO4JZ007CS1mtAR3CW/nP9W1Pfy2kI+K DEIc6EFvWiHANX2jCQDCdbPw0l8T5iFey+40tfM4ikqGXmPjvmxpiHzUAsTSrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336806; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KbSGemAj7CPilXt3cI++onYPUm0JQmC4XkbZKUh4qzA=; b=q/qeDWGblo36DftcnB+/GhCZE962BubFJFIfvLwJehWyITd0NnEVu87gIT54RpwZOpwzUh 8EKkDdkZ4PBYTkuA57IH4W9WkYWCb9L7hY5CjmYWL5vY+o9B8/LstbK92Gx+o/faz5CEPp g8RVfw5skmUbpNRaUc7M7TOF0CxlTCnw4gGQaVnDg5TGttRuxi0trrLvuY2gU6G1rdWt79 eSRL2gMXrJPxExgbFY7J7K940Ew3DVu9HascIa9ZAElZvSaJAtfk8vuzD+JYYjKuiVlbrp FqaxJkzDCpcSSNU7v/JTeCWeweGiPwFpVI8SCMsQhveL6eU6VOlR7VfuRfbxCA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336806; a=rsa-sha256; cv=none; b=yt3QHUu6l66qkpZLsBBY3RXz04bLhzDIOKYvGBMtaUrGyNMPnL3G4KTn2f+UA9dxCFkrYJ Y8r9ajc0hnPyIkmHMCf8tfSnyDLpc1vQCXwynI+2X/ReZ2YSi4IQuE42mf2n4Rdz8HVgUN Hh7NuH7AMK/zWzkLrzNRH7QHMQTa24WcqZXNGc/4qfJ3wvdLj56XhmBPJINesJZeZUchGU SOFxN1oXICfEAQ0n22v0QVEHLFDdt24xbIpe5SogqUitkObLSCe98J1VHB6AQFEm0Z0Coc QzDl1fUm6ghseiJcZQCfDmW6+rdvbdIBl6wRuXIUwu6npR8064fHO6zcmWXA8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBG00DQz12nL; Mon, 04 Aug 2025 19:46:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkjPB098993; Mon, 4 Aug 2025 19:46:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkj1e098990; Mon, 4 Aug 2025 19:46:45 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:45 GMT Message-Id: <202508041946.574Jkj1e098990@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 6b51ff931135 - main - ctld: Factor out a function for adding a private auth_group for a target List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6b51ff931135b7a18f12305c9b22f68863fb7898 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6b51ff931135b7a18f12305c9b22f68863fb7898 commit 6b51ff931135b7a18f12305c9b22f68863fb7898 Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Factor out a function for adding a private auth_group for a target Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 67 +++++++++++++++------------------------------------ 1 file changed, 19 insertions(+), 48 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index c9e1a2fb9968..10ce75237e35 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -515,13 +515,13 @@ target_finish(void) target = NULL; } -bool -target_add_chap(const char *user, const char *secret) +static bool +target_use_private_auth(const char *keyword) { if (target->t_auth_group != NULL) { if (target->t_auth_group->ag_name != NULL) { log_warnx("cannot use both auth-group and " - "chap for target \"%s\"", target->t_name); + "%s for target \"%s\"", keyword, target->t_name); return (false); } } else { @@ -529,6 +529,14 @@ target_add_chap(const char *user, const char *secret) if (target->t_auth_group == NULL) return (false); } + return (true); +} + +bool +target_add_chap(const char *user, const char *secret) +{ + if (!target_use_private_auth("chap")) + return (false); return (auth_new_chap(target->t_auth_group, user, secret)); } @@ -536,17 +544,8 @@ bool target_add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2) { - if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) { - log_warnx("cannot use both auth-group and " - "chap-mutual for target \"%s\"", target->t_name); - return (false); - } - } else { - target->t_auth_group = auth_group_new(conf, target); - if (target->t_auth_group == NULL) - return (false); - } + if (!target_use_private_auth("chap-mutual")) + return (false); return (auth_new_chap_mutual(target->t_auth_group, user, secret, user2, secret2)); } @@ -554,35 +553,16 @@ target_add_chap_mutual(const char *user, const char *secret, bool target_add_initiator_name(const char *name) { - if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) { - log_warnx("cannot use both auth-group and " - "initiator-name for target \"%s\"", target->t_name); - return (false); - } - } else { - target->t_auth_group = auth_group_new(conf, target); - if (target->t_auth_group == NULL) - return (false); - } + if (!target_use_private_auth("initiator-name")) + return (false); return (auth_name_new(target->t_auth_group, name)); } bool target_add_initiator_portal(const char *addr) { - if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) { - log_warnx("cannot use both auth-group and " - "initiator-portal for target \"%s\"", - target->t_name); - return (false); - } - } else { - target->t_auth_group = auth_group_new(conf, target); - if (target->t_auth_group == NULL) - return (false); - } + if (!target_use_private_auth("initiator-portal")) + return (false); return (auth_portal_new(target->t_auth_group, addr)); } @@ -684,17 +664,8 @@ target_set_auth_group(const char *name) bool target_set_auth_type(const char *type) { - if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) { - log_warnx("cannot use both auth-group and " - "auth-type for target \"%s\"", target->t_name); - return (false); - } - } else { - target->t_auth_group = auth_group_new(conf, target); - if (target->t_auth_group == NULL) - return (false); - } + if (!target_use_private_auth("auth-type")) + return (false); return (_auth_group_set_type(target->t_auth_group, type)); } From nobody Mon Aug 4 19:46:47 2025 X-Original-To: dev-commits-src-main@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 4bwnBJ0svVz63RVN; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBH1K6xz4KdR; Mon, 04 Aug 2025 19:46:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336807; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=niuaIN6i9TUcYCif5OpyYbIiaqKhxqhdhfSXR07NicY=; b=pdb3OyIA7yTCyRuN1MLFFSL9Mh0okCopyyCeGQ0Rya+BtVUCTSDGr3GXXULXJu1HhXJhCx K9earHyjCd1K1MWwPtIGJYpSKyUyW7K49Zj0WODnhpu4fV9wIzBZXntkMCvp+C/9n5HWwy mvR9cTYlZLptzwZFWwqmrg0SNco3T3kFBhqdg0KXpcddMmwQIlNsyilsXvD5EGkQ8TBRIf f/5TfYt1cvsspELbY/nVqZ1vxcX4rjgX0OtpnbonZdJe3FiWjWIcDJUW9IqhxzwMN/WLWm 4yJZlc0Duifz0y3Yc2B73Zam6f8vkYGRkgvXOGQEd7a5SuBpU+SUVNuUhJu9wQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336807; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=niuaIN6i9TUcYCif5OpyYbIiaqKhxqhdhfSXR07NicY=; b=T/VBrbFOxIo6e//OCL+i0HI/a1T3wEu/wbJ21F5ktTAesNCcVRfmBY96STn4z1Je/ePqKM 4zMmYJhOEY2SLSnFGe72szgTRMp8bHxNUkx98dPiTOCSiXe8UhUcQXJjzQ/04TsAzRY4wb HOyx0mvoWdqIn3Ba7lp+MlvQJdYmk/XD5MdJC/GIJxnuJoTN7ikcGDeXn4Pb/Yd/jDGI/J zO8m7s7tbkwDLDlqfWWd9jcL4j6UVpea/SKBJzyegFDE2HCgCOs6prwdHQYI4550xi6a3r YDjWg5k8d+wvcrd6ldjb7FhSlhpE8HCy/zeXYAaOsYHhBthKcg36TECd3DAzZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336807; a=rsa-sha256; cv=none; b=h/izFkezVEjSrKTsCoGe3oOEFiv7jfSwHX3y9Djt/LCuTO1bIa/102PXfs/hD5JmDiG2mU dkzcV52W6EW3hVKboh7OvPAgsGERMQG5K3PuVTtSuLB8sE6/BffrP4uQbbjUXqeczue6D1 3camBTS0yTVVU7BDYMt2tsH+M8/qn8XYz9Kpc6/vPEteIG2U5XVivXCNcre1I0+F2AfV/W SnORC8DKDl3j7aue1vCZCgrPo/N4BGgng8b10DVSIpNNhq2wMbaBrvHl2pKcZmiVN1UkMp 1JQegMhfbVmtbULIN99cLk0NIX5HxF4O10He07yuAbrs13v6GMwECFZNhPk/gQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBH0sFWz13B9; Mon, 04 Aug 2025 19:46:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkl5x099026; Mon, 4 Aug 2025 19:46:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JklOm099024; Mon, 4 Aug 2025 19:46:47 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:47 GMT Message-Id: <202508041946.574JklOm099024@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: e1849d9a8db4 - main - ctld: Use a bool to track if a target uses a private auth_group List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e1849d9a8db44087f04b3ecb11a4df9c308b08ac Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e1849d9a8db44087f04b3ecb11a4df9c308b08ac commit e1849d9a8db44087f04b3ecb11a4df9c308b08ac Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Use a bool to track if a target uses a private auth_group Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 11 ++++++----- usr.sbin/ctld/ctld.hh | 1 + usr.sbin/ctld/login.cc | 11 ++++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 10ce75237e35..4354d25147a4 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -519,7 +519,7 @@ static bool target_use_private_auth(const char *keyword) { if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) { + if (!target->t_private_auth) { log_warnx("cannot use both auth-group and " "%s for target \"%s\"", keyword, target->t_name); return (false); @@ -528,6 +528,7 @@ target_use_private_auth(const char *keyword) target->t_auth_group = auth_group_new(conf, target); if (target->t_auth_group == NULL) return (false); + target->t_private_auth = true; } return (true); } @@ -644,12 +645,12 @@ bool target_set_auth_group(const char *name) { if (target->t_auth_group != NULL) { - if (target->t_auth_group->ag_name != NULL) - log_warnx("auth-group for target \"%s\" " - "specified more than once", target->t_name); - else + if (target->t_private_auth) log_warnx("cannot use both auth-group and explicit " "authorisations for target \"%s\"", target->t_name); + else + log_warnx("auth-group for target \"%s\" " + "specified more than once", target->t_name); return (false); } target->t_auth_group = auth_group_find(conf, name); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 06b932a65453..fa0b2256f8be 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -195,6 +195,7 @@ struct target { char *t_redirection; /* Name of this target's physical port, if any, i.e. "isp0" */ char *t_pport; + bool t_private_auth; }; struct isns { diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index 549fa0c397ad..a282103e0b62 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -990,14 +990,15 @@ login(struct ctld_connection *conn) ag = conn->conn_port->p_auth_group; if (ag == NULL) ag = conn->conn_target->t_auth_group; - if (ag->ag_name != NULL) { + if (conn->conn_port->p_auth_group == NULL && + conn->conn_target->t_private_auth) { log_debugx("initiator requests to connect " - "to target \"%s\"; auth-group \"%s\"", - conn->conn_target->t_name, - ag->ag_name); + "to target \"%s\"", conn->conn_target->t_name); } else { log_debugx("initiator requests to connect " - "to target \"%s\"", conn->conn_target->t_name); + "to target \"%s\"; %s", + conn->conn_target->t_name, + ag->ag_label); } } else { assert(conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY); From nobody Mon Aug 4 19:46:48 2025 X-Original-To: dev-commits-src-main@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 4bwnBK3HPYz63QlR; Mon, 04 Aug 2025 19:46:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBJ39hYz4KkJ; Mon, 04 Aug 2025 19:46:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336808; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r6kCo3Z71+w4htvETtKy3aPDUuyfkbAbRlFgrYvsfr0=; b=MA+8dX79qNRNugG4vk6/1l7Zo9o9EpjvlML8yBO/IHdLeGB6uVdqKoSqD1/CUr7FesAbvU Z7Z/yUfa0V8JZ3aUxMAIqP9fhzJZ8pc7motLqj38DQTQa8O5Mj/jOKRY/gDb9SzL+V8yz4 K1frtBw5AD799Gky2EMEQJEAc6+oKhOAcaHDr3SM+27oMPj5uVCA0bDFLZI03SYm8oRH9p BEerV6+bvNO+zxAnkDlb5RY2QB0s7iKvpQ+0c991Ahu+6LFH9141Y+jvL4WDUht5yMBI04 sCrj4AF4PRlYDctddst2DVXW8/yAPjhKl6d3RIN9HdGzUZYmOXDM/gNMNEvCIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336808; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r6kCo3Z71+w4htvETtKy3aPDUuyfkbAbRlFgrYvsfr0=; b=JqirNgm150Ns4u52K6NLXeAmvtnrAdvUORm1ULfuTFtDilvuCyyKP9uem4OJW/IfbIIxeT Z1Dcu1qX6PnOyKI50muOPLogVcX4F+pHQ3swA4gBFPgLhsULvGIG53NQJEHzkllj6WoJSb iwEbq+5QQtJJRj1cmcrHIodv0Ca3CWtbe73o5GI/cD7u1I3D3wT6C4BBpvjKymuFLbwe7w Rt1e5rW6jccxuWqSAQwRrtahNIMK7YQh/bdQ9CiR4yGou3ou4DO3Y/+hDnhhkrGFAhunt0 iSblJOGVj4T7T9WzHB3IUk2WKbjGMEePQ5xFvoTtVsTB0sdVIoB5uHrLBzurGA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336808; a=rsa-sha256; cv=none; b=Pi6ZErkXkFYVgAz0iB2891BgRELAlttvIbLsjH9qatiP7vHpbCViALWFULCDLl8TtrQmIN BnWv41vSmbg6CZPr7Q5dCk8UcRDE5dITBMQf9pXVf8jGLZj1U5JI7In2pSEIEqrevDQr0q wcxzYxnEhdKc1Y6xgdlxL/uNz7zjxqBJQP/ujekDlSumeovjLnvTilHHIl/ILsuJvJj9Y/ YJQOlv8JZf4T+DMWLB8tj510bh41hamDTAAnK35BvzcbTJ5MtPID25y10OiAyZZmxiyrH8 a0gH+r2eAYDG0JvIrA+RyofsuzMiKZBQsKh9CYh+A9wJPWRYZ9SZrdBGD7wpyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBJ1cLJz12sq; Mon, 04 Aug 2025 19:46:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkmEZ099064; Mon, 4 Aug 2025 19:46:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkmB1099061; Mon, 4 Aug 2025 19:46:48 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:48 GMT Message-Id: <202508041946.574JkmB1099061@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: eb0dc901a541 - main - ctld: Convert struct auth_group to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: eb0dc901a54183dd8e2bd6ee37b64c7a3222301c Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=eb0dc901a54183dd8e2bd6ee37b64c7a3222301c commit eb0dc901a54183dd8e2bd6ee37b64c7a3222301c Author: John Baldwin AuthorDate: 2025-08-04 19:38:06 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:06 +0000 ctld: Convert struct auth_group to a C++ class Make data members private and convert functions for adding and checking user and initiator authentication into class methods. Use std::string to store the label for an auth_group and add a label() method to retrieve a const C string version for logging. Replace AG_TYPE_* macros with a scoped enum. Replace the TAILQ of auth_group objects in struct conf with an unordered_map<> of named auth_group objects. Anonymous auth_group objects for targets are no longer stored in a global data structure. Since a target can have a pointer to either named or anonymous objects, use a shared_ptr<> to store references to auth_group objects. Use the shared_ptr<>'s reference count to determine if a named auth_group is unused in conf_verify() instead of walking all the linked lists to check for references. While here, avoid making a second copy of socket address for a client and instead just store a pointer in ctld_connection. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 74 ++++--------- usr.sbin/ctld/ctld.cc | 260 ++++++++++++++++++++------------------------- usr.sbin/ctld/ctld.hh | 115 ++++++++++---------- usr.sbin/ctld/discovery.cc | 18 ++-- usr.sbin/ctld/login.cc | 35 +++--- 5 files changed, 221 insertions(+), 281 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 4354d25147a4..a30bf72c0469 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -114,64 +114,35 @@ conf_set_timeout(int timeout) conf->conf_timeout = timeout; } -static bool -_auth_group_set_type(struct auth_group *ag, const char *str) -{ - int type; - - if (strcmp(str, "none") == 0) { - type = AG_TYPE_NO_AUTHENTICATION; - } else if (strcmp(str, "deny") == 0) { - type = AG_TYPE_DENY; - } else if (strcmp(str, "chap") == 0) { - type = AG_TYPE_CHAP; - } else if (strcmp(str, "chap-mutual") == 0) { - type = AG_TYPE_CHAP_MUTUAL; - } else { - log_warnx("invalid auth-type \"%s\" for %s", str, ag->ag_label); - return (false); - } - - if (ag->ag_type != AG_TYPE_UNKNOWN && ag->ag_type != type) { - log_warnx("cannot set auth-type to \"%s\" for %s; " - "already has a different type", str, ag->ag_label); - return (false); - } - - ag->ag_type = type; - - return (true); -} - bool auth_group_add_chap(const char *user, const char *secret) { - return (auth_new_chap(auth_group, user, secret)); + return (auth_group->add_chap(user, secret)); } bool auth_group_add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2) { - return (auth_new_chap_mutual(auth_group, user, secret, user2, secret2)); + return (auth_group->add_chap_mutual(user, secret, user2, secret2)); } bool auth_group_add_initiator_name(const char *name) { - return (auth_name_new(auth_group, name)); + return (auth_group->add_initiator_name(name)); } bool auth_group_add_initiator_portal(const char *portal) { - return (auth_portal_new(auth_group, portal)); + return (auth_group->add_initiator_portal(portal)); } bool auth_group_set_type(const char *type) { - return (_auth_group_set_type(auth_group, type)); + return (auth_group->set_type(type)); } bool @@ -188,12 +159,12 @@ auth_group_start(const char *name) } conf->conf_default_ag_defined = true; - auth_group = auth_group_find(conf, "default"); + auth_group = auth_group_find(conf, "default").get(); return (true); } auth_group = auth_group_new(conf, name); - return (auth_group != NULL); + return (auth_group != nullptr); } void @@ -245,14 +216,14 @@ portal_group_add_option(const char *name, const char *value) bool portal_group_set_discovery_auth_group(const char *name) { - if (portal_group->pg_discovery_auth_group != NULL) { + if (portal_group->pg_discovery_auth_group != nullptr) { log_warnx("discovery-auth-group for portal-group " "\"%s\" specified more than once", portal_group->pg_name); return (false); } portal_group->pg_discovery_auth_group = auth_group_find(conf, name); - if (portal_group->pg_discovery_auth_group == NULL) { + if (portal_group->pg_discovery_auth_group == nullptr) { log_warnx("unknown discovery-auth-group \"%s\" " "for portal-group \"%s\"", name, portal_group->pg_name); return (false); @@ -518,15 +489,15 @@ target_finish(void) static bool target_use_private_auth(const char *keyword) { - if (target->t_auth_group != NULL) { + if (target->t_auth_group != nullptr) { if (!target->t_private_auth) { log_warnx("cannot use both auth-group and " "%s for target \"%s\"", keyword, target->t_name); return (false); } } else { - target->t_auth_group = auth_group_new(conf, target); - if (target->t_auth_group == NULL) + target->t_auth_group = auth_group_new(target); + if (target->t_auth_group == nullptr) return (false); target->t_private_auth = true; } @@ -538,7 +509,7 @@ target_add_chap(const char *user, const char *secret) { if (!target_use_private_auth("chap")) return (false); - return (auth_new_chap(target->t_auth_group, user, secret)); + return (target->t_auth_group->add_chap(user, secret)); } bool @@ -547,7 +518,7 @@ target_add_chap_mutual(const char *user, const char *secret, { if (!target_use_private_auth("chap-mutual")) return (false); - return (auth_new_chap_mutual(target->t_auth_group, user, secret, user2, + return (target->t_auth_group->add_chap_mutual(user, secret, user2, secret2)); } @@ -556,7 +527,7 @@ target_add_initiator_name(const char *name) { if (!target_use_private_auth("initiator-name")) return (false); - return (auth_name_new(target->t_auth_group, name)); + return (target->t_auth_group->add_initiator_name(name)); } bool @@ -564,7 +535,7 @@ target_add_initiator_portal(const char *addr) { if (!target_use_private_auth("initiator-portal")) return (false); - return (auth_portal_new(target->t_auth_group, addr)); + return (target->t_auth_group->add_initiator_portal(addr)); } bool @@ -599,7 +570,7 @@ bool target_add_portal_group(const char *pg_name, const char *ag_name) { struct portal_group *pg; - struct auth_group *ag; + auth_group_sp ag; struct port *p; pg = portal_group_find(conf, pg_name); @@ -616,8 +587,7 @@ target_add_portal_group(const char *pg_name, const char *ag_name) ag_name, target->t_name); return (false); } - } else - ag = NULL; + } p = port_new(conf, target, pg); if (p == NULL) { @@ -625,7 +595,7 @@ target_add_portal_group(const char *pg_name, const char *ag_name) pg_name, target->t_name); return (false); } - p->p_auth_group = ag; + p->p_auth_group = std::move(ag); return (true); } @@ -644,7 +614,7 @@ target_set_alias(const char *alias) bool target_set_auth_group(const char *name) { - if (target->t_auth_group != NULL) { + if (target->t_auth_group != nullptr) { if (target->t_private_auth) log_warnx("cannot use both auth-group and explicit " "authorisations for target \"%s\"", target->t_name); @@ -654,7 +624,7 @@ target_set_auth_group(const char *name) return (false); } target->t_auth_group = auth_group_find(conf, name); - if (target->t_auth_group == NULL) { + if (target->t_auth_group == nullptr) { log_warnx("unknown auth-group \"%s\" for target \"%s\"", name, target->t_name); return (false); @@ -667,7 +637,7 @@ target_set_auth_type(const char *type) { if (!target_use_private_auth("auth-type")) return (false); - return (_auth_group_set_type(target->t_auth_group, type)); + return (target->t_auth_group->set_type(type)); } bool diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 396b8db13323..b2cf31fff18f 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -100,12 +100,9 @@ conf_new(void) { struct conf *conf; - conf = reinterpret_cast(calloc(1, sizeof(*conf))); - if (conf == NULL) - log_err(1, "calloc"); + conf = new struct conf(); TAILQ_INIT(&conf->conf_luns); TAILQ_INIT(&conf->conf_targets); - TAILQ_INIT(&conf->conf_auth_groups); TAILQ_INIT(&conf->conf_ports); TAILQ_INIT(&conf->conf_portal_groups); TAILQ_INIT(&conf->conf_isns); @@ -124,7 +121,6 @@ conf_delete(struct conf *conf) { struct lun *lun, *ltmp; struct target *targ, *tmp; - struct auth_group *ag, *cagtmp; struct portal_group *pg, *cpgtmp; struct isns *is, *istmp; @@ -134,30 +130,65 @@ conf_delete(struct conf *conf) lun_delete(lun); TAILQ_FOREACH_SAFE(targ, &conf->conf_targets, t_next, tmp) target_delete(targ); - TAILQ_FOREACH_SAFE(ag, &conf->conf_auth_groups, ag_next, cagtmp) - auth_group_delete(ag); TAILQ_FOREACH_SAFE(pg, &conf->conf_portal_groups, pg_next, cpgtmp) portal_group_delete(pg); TAILQ_FOREACH_SAFE(is, &conf->conf_isns, i_next, istmp) isns_delete(is); assert(TAILQ_EMPTY(&conf->conf_ports)); free(conf->conf_pidfile_path); - free(conf); + delete conf; +} + +bool +auth_group::set_type(const char *str) +{ + auth_type type; + + if (strcmp(str, "none") == 0) { + type = auth_type::NO_AUTHENTICATION; + } else if (strcmp(str, "deny") == 0) { + type = auth_type::DENY; + } else if (strcmp(str, "chap") == 0) { + type = auth_type::CHAP; + } else if (strcmp(str, "chap-mutual") == 0) { + type = auth_type::CHAP_MUTUAL; + } else { + log_warnx("invalid auth-type \"%s\" for %s", str, label()); + return (false); + } + + if (ag_type != auth_type::UNKNOWN && ag_type != type) { + log_warnx("cannot set auth-type to \"%s\" for %s; " + "already has a different type", str, label()); + return (false); + } + + ag_type = type; + + return (true); +} + +void +auth_group::set_type(auth_type type) +{ + assert(ag_type == auth_type::UNKNOWN); + + ag_type = type; } const struct auth * -auth_find(const struct auth_group *ag, const char *user) +auth_group::find_auth(std::string_view user) const { - auto it = ag->ag_auths.find(user); - if (it == ag->ag_auths.end()) + auto it = ag_auths.find(std::string(user)); + if (it == ag_auths.end()) return (nullptr); return (&it->second); } -static void -auth_check_secret_length(const struct auth_group *ag, const char *user, - const char *secret, const char *secret_type) +void +auth_group::check_secret_length(const char *user, const char *secret, + const char *secret_type) { size_t len; @@ -165,34 +196,31 @@ auth_check_secret_length(const struct auth_group *ag, const char *user, assert(len != 0); if (len > 16) { log_warnx("%s for user \"%s\", %s, is too long; it should be " - "at most 16 characters long", secret_type, user, - ag->ag_label); + "at most 16 characters long", secret_type, user, label()); } if (len < 12) { log_warnx("%s for user \"%s\", %s, is too short; it should be " - "at least 12 characters long", secret_type, user, - ag->ag_label); + "at least 12 characters long", secret_type, user, label()); } } bool -auth_new_chap(struct auth_group *ag, const char *user, - const char *secret) +auth_group::add_chap(const char *user, const char *secret) { - if (ag->ag_type == AG_TYPE_UNKNOWN) - ag->ag_type = AG_TYPE_CHAP; - if (ag->ag_type != AG_TYPE_CHAP) { + if (ag_type == auth_type::UNKNOWN) + ag_type = auth_type::CHAP; + if (ag_type != auth_type::CHAP) { log_warnx("cannot mix \"chap\" authentication with " - "other types for %s", ag->ag_label); + "other types for %s", label()); return (false); } - auth_check_secret_length(ag, user, secret, "secret"); + check_secret_length(user, secret, "secret"); - const auto &pair = ag->ag_auths.try_emplace(user, secret); + const auto &pair = ag_auths.try_emplace(user, secret); if (!pair.second) { log_warnx("duplicate credentials for user \"%s\" for %s", - user, ag->ag_label); + user, label()); return (false); } @@ -200,25 +228,24 @@ auth_new_chap(struct auth_group *ag, const char *user, } bool -auth_new_chap_mutual(struct auth_group *ag, const char *user, - const char *secret, const char *user2, const char *secret2) +auth_group::add_chap_mutual(const char *user, const char *secret, + const char *user2, const char *secret2) { - if (ag->ag_type == AG_TYPE_UNKNOWN) - ag->ag_type = AG_TYPE_CHAP_MUTUAL; - if (ag->ag_type != AG_TYPE_CHAP_MUTUAL) { + if (ag_type == auth_type::UNKNOWN) + ag_type = auth_type::CHAP_MUTUAL; + if (ag_type != auth_type::CHAP_MUTUAL) { log_warnx("cannot mix \"chap-mutual\" authentication " - "with other types for %s", ag->ag_label); + "with other types for %s", label()); return (false); } - auth_check_secret_length(ag, user, secret, "secret"); - auth_check_secret_length(ag, user, secret2, "mutual secret"); + check_secret_length(user, secret, "secret"); + check_secret_length(user, secret2, "mutual secret"); - const auto &pair = ag->ag_auths.try_emplace(user, secret, user2, - secret2); + const auto &pair = ag_auths.try_emplace(user, secret, user2, secret2); if (!pair.second) { log_warnx("duplicate credentials for user \"%s\" for %s", - user, ag->ag_label); + user, label()); return (false); } @@ -226,20 +253,20 @@ auth_new_chap_mutual(struct auth_group *ag, const char *user, } bool -auth_name_new(struct auth_group *ag, const char *name) +auth_group::add_initiator_name(std::string_view name) { /* Silently ignore duplicates. */ - ag->ag_names.emplace(name); + ag_names.emplace(name); return (true); } bool -auth_name_check(const struct auth_group *ag, const char *initiator_name) +auth_group::initiator_permitted(std::string_view initiator_name) const { - if (ag->ag_names.empty()) + if (ag_names.empty()) return (true); - return (ag->ag_names.count(initiator_name) != 0); + return (ag_names.count(std::string(initiator_name)) != 0); } bool @@ -309,15 +336,16 @@ auth_portal::parse(const char *portal) } bool -auth_portal_new(struct auth_group *ag, const char *portal) +auth_group::add_initiator_portal(const char *portal) { auth_portal ap; if (!ap.parse(portal)) { - log_warnx("invalid initiator portal \"%s\"", portal); + log_warnx("invalid initiator portal \"%s\" for %s", portal, + label()); return (false); } - ag->ag_portals.emplace_back(ap); + ag_portals.emplace_back(ap); return (true); } @@ -354,80 +382,46 @@ auth_portal::matches(const struct sockaddr *sa) const } bool -auth_portal_check(const struct auth_group *ag, - const struct sockaddr_storage *sa) +auth_group::initiator_permitted(const struct sockaddr *sa) const { - if (ag->ag_portals.empty()) + if (ag_portals.empty()) return (true); - for (const auth_portal &ap : ag->ag_portals) - if (ap.matches((const struct sockaddr *)sa)) + for (const auth_portal &ap : ag_portals) + if (ap.matches(sa)) return (true); return (false); } -static struct auth_group * -auth_group_create(struct conf *conf, const char *name, char *label) -{ - struct auth_group *ag; - - ag = new auth_group(); - if (name != NULL) - ag->ag_name = checked_strdup(name); - ag->ag_label = label; - ag->ag_conf = conf; - TAILQ_INSERT_TAIL(&conf->conf_auth_groups, ag, ag_next); - - return (ag); -} - struct auth_group * auth_group_new(struct conf *conf, const char *name) { - struct auth_group *ag; - char *label; - - ag = auth_group_find(conf, name); - if (ag != NULL) { + const auto &pair = conf->conf_auth_groups.try_emplace(name, + std::make_shared(freebsd::stringf("auth-group \"%s\"", + name))); + if (!pair.second) { log_warnx("duplicated auth-group \"%s\"", name); return (NULL); } - asprintf(&label, "auth-group \"%s\"", name); - return (auth_group_create(conf, name, label)); + return (pair.first->second.get()); } -struct auth_group * -auth_group_new(struct conf *conf, struct target *target) +auth_group_sp +auth_group_new(struct target *target) { - char *label; - - asprintf(&label, "target \"%s\"", target->t_name); - return (auth_group_create(conf, NULL, label)); + return (std::make_shared(freebsd::stringf("target \"%s\"", + target->t_name))); } -void -auth_group_delete(struct auth_group *ag) -{ - TAILQ_REMOVE(&ag->ag_conf->conf_auth_groups, ag, ag_next); - - free(ag->ag_label); - free(ag->ag_name); - delete ag; -} - -struct auth_group * +auth_group_sp auth_group_find(const struct conf *conf, const char *name) { - struct auth_group *ag; - - assert(name != NULL); - TAILQ_FOREACH(ag, &conf->conf_auth_groups, ag_next) { - if (ag->ag_name != NULL && strcmp(ag->ag_name, name) == 0) - return (ag); - } + auto it = conf->conf_auth_groups.find(name); + if (it == conf->conf_auth_groups.end()) + return {}; - return (NULL); + return (it->second); } static struct portal * @@ -466,9 +460,7 @@ portal_group_new(struct conf *conf, const char *name) return (NULL); } - pg = reinterpret_cast(calloc(1, sizeof(*pg))); - if (pg == NULL) - log_err(1, "calloc"); + pg = new portal_group(); pg->pg_name = checked_strdup(name); pg->pg_options = nvlist_create(0); TAILQ_INIT(&pg->pg_portals); @@ -498,7 +490,7 @@ portal_group_delete(struct portal_group *pg) free(pg->pg_name); free(pg->pg_offload); free(pg->pg_redirection); - free(pg); + delete pg; } struct portal_group * @@ -920,9 +912,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg) free(name); return (NULL); } - port = reinterpret_cast(calloc(1, sizeof(*port))); - if (port == NULL) - log_err(1, "calloc"); + port = new struct port(); port->p_conf = conf; port->p_name = name; TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); @@ -965,9 +955,7 @@ port_new_ioctl(struct conf *conf, struct kports *kports, struct target *target, free(name); return (NULL); } - port = reinterpret_cast(calloc(1, sizeof(*port))); - if (port == NULL) - log_err(1, "calloc"); + port = new struct port(); port->p_conf = conf; port->p_name = name; port->p_ioctl_port = true; @@ -994,9 +982,7 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) free(name); return (NULL); } - port = reinterpret_cast(calloc(1, sizeof(*port))); - if (port == NULL) - log_err(1, "calloc"); + port = new struct port(); port->p_conf = conf; port->p_name = name; TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); @@ -1075,9 +1061,7 @@ target_new(struct conf *conf, const char *name) if (valid_iscsi_name(name, log_warnx) == false) { return (NULL); } - targ = reinterpret_cast(calloc(1, sizeof(*targ))); - if (targ == NULL) - log_err(1, "calloc"); + targ = new target(); targ->t_name = checked_strdup(name); /* @@ -1106,7 +1090,7 @@ target_delete(struct target *targ) free(targ->t_pport); free(targ->t_name); free(targ->t_redirection); - free(targ); + delete targ; } struct target * @@ -1260,7 +1244,7 @@ connection_new(struct portal *portal, int fd, const char *host, conn->conn.conn_socket = fd; conn->conn_portal = portal; conn->conn_initiator_addr = checked_strdup(host); - memcpy(&conn->conn_initiator_sa, client_sa, client_sa->sa_len); + conn->conn_initiator_sa = client_sa; return (conn); } @@ -1324,9 +1308,7 @@ conf_verify_lun(struct lun *lun) bool conf_verify(struct conf *conf) { - struct auth_group *ag; struct portal_group *pg; - struct port *port; struct target *targ; struct lun *lun; bool found; @@ -1393,32 +1375,16 @@ conf_verify(struct conf *conf) pg->pg_unassigned = true; } } - TAILQ_FOREACH(ag, &conf->conf_auth_groups, ag_next) { - found = false; - TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { - if (targ->t_auth_group == ag) { - found = true; - break; - } - } - TAILQ_FOREACH(port, &conf->conf_ports, p_next) { - if (port->p_auth_group == ag) { - found = true; - break; - } - } - TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { - if (pg->pg_discovery_auth_group == ag) { - found = true; - break; - } - } - if (!found && ag->ag_name != NULL && - strcmp(ag->ag_name, "default") != 0 && - strcmp(ag->ag_name, "no-authentication") != 0 && - strcmp(ag->ag_name, "no-access") != 0) { + for (const auto &kv : conf->conf_auth_groups) { + const std::string &ag_name = kv.first; + if (ag_name == "default" || + ag_name == "no-authentication" || + ag_name == "no-access") + continue; + + if (kv.second.use_count() == 1) { log_warnx("auth-group \"%s\" not assigned " - "to any target", ag->ag_name); + "to any target", ag_name.c_str()); } } @@ -2200,11 +2166,11 @@ conf_new_from_file(const char *path, bool ucl) ag = auth_group_new(conf, "no-authentication"); assert(ag != NULL); - ag->ag_type = AG_TYPE_NO_AUTHENTICATION; + ag->set_type(auth_type::NO_AUTHENTICATION); ag = auth_group_new(conf, "no-access"); assert(ag != NULL); - ag->ag_type = AG_TYPE_DENY; + ag->set_type(auth_type::DENY); pg = portal_group_new(conf, "default"); assert(pg != NULL); @@ -2226,9 +2192,9 @@ conf_new_from_file(const char *path, bool ucl) if (conf->conf_default_ag_defined == false) { log_debugx("auth-group \"default\" not defined; " "going with defaults"); - ag = auth_group_find(conf, "default"); + ag = auth_group_find(conf, "default").get(); assert(ag != NULL); - ag->ag_type = AG_TYPE_DENY; + ag->set_type(auth_type::DENY); } if (conf->conf_default_pg_defined == false) { diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index fa0b2256f8be..585e5d24663d 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -42,6 +42,7 @@ #include #include +#include #include #include #include @@ -83,23 +84,47 @@ private: int ap_mask = 0; }; -#define AG_TYPE_UNKNOWN 0 -#define AG_TYPE_DENY 1 -#define AG_TYPE_NO_AUTHENTICATION 2 -#define AG_TYPE_CHAP 3 -#define AG_TYPE_CHAP_MUTUAL 4 +enum class auth_type { + UNKNOWN, + DENY, + NO_AUTHENTICATION, + CHAP, + CHAP_MUTUAL +}; struct auth_group { - TAILQ_ENTRY(auth_group) ag_next; - struct conf *ag_conf; - char *ag_name; - char *ag_label; - int ag_type; + auth_group(std::string label) : ag_label(label) {} + + auth_type type() const { return ag_type; } + bool set_type(const char *str); + void set_type(auth_type type); + + const char *label() const { return ag_label.c_str(); } + + bool add_chap(const char *user, const char *secret); + bool add_chap_mutual(const char *user, const char *secret, + const char *user2, const char *secret2); + const struct auth *find_auth(std::string_view user) const; + + bool add_initiator_name(std::string_view initiator_name); + bool initiator_permitted(std::string_view initiator_name) const; + + bool add_initiator_portal(const char *initiator_portal); + bool initiator_permitted(const struct sockaddr *sa) const; + +private: + void check_secret_length(const char *user, const char *secret, + const char *secret_type); + + std::string ag_label; + auth_type ag_type = auth_type::UNKNOWN; std::unordered_map ag_auths; std::unordered_set ag_names; std::list ag_portals; }; +using auth_group_sp = std::shared_ptr; + struct portal { TAILQ_ENTRY(portal) p_next; struct portal_group *p_portal_group; @@ -125,14 +150,14 @@ struct portal_group { struct conf *pg_conf; nvlist_t *pg_options; char *pg_name; - struct auth_group *pg_discovery_auth_group; - int pg_discovery_filter; - bool pg_foreign; - bool pg_unassigned; + auth_group_sp pg_discovery_auth_group; + int pg_discovery_filter = PG_FILTER_UNKNOWN; + bool pg_foreign = false; + bool pg_unassigned = false; TAILQ_HEAD(, portal) pg_portals; TAILQ_HEAD(, port) pg_ports; - char *pg_offload; - char *pg_redirection; + char *pg_offload = nullptr; + char *pg_redirection = nullptr; int pg_dscp; int pg_pcp; @@ -156,15 +181,15 @@ struct port { TAILQ_ENTRY(port) p_ts; struct conf *p_conf; char *p_name; - struct auth_group *p_auth_group; - struct portal_group *p_portal_group; - struct pport *p_pport; + auth_group_sp p_auth_group; + struct portal_group *p_portal_group = nullptr; + struct pport *p_pport = nullptr; struct target *p_target; - bool p_ioctl_port; - int p_ioctl_pp; - int p_ioctl_vp; - uint32_t p_ctl_port; + bool p_ioctl_port = false; + int p_ioctl_pp = 0; + int p_ioctl_vp = 0; + uint32_t p_ctl_port = 0; }; struct lun { @@ -187,8 +212,8 @@ struct lun { struct target { TAILQ_ENTRY(target) t_next; struct conf *t_conf; - struct lun *t_luns[MAX_LUNS]; - struct auth_group *t_auth_group; + struct lun *t_luns[MAX_LUNS] = {}; + auth_group_sp t_auth_group; TAILQ_HEAD(, port) t_ports; char *t_name; char *t_alias; @@ -206,10 +231,10 @@ struct isns { }; struct conf { - char *conf_pidfile_path; + char *conf_pidfile_path = nullptr; TAILQ_HEAD(, lun) conf_luns; TAILQ_HEAD(, target) conf_targets; - TAILQ_HEAD(, auth_group) conf_auth_groups; + std::unordered_map conf_auth_groups; TAILQ_HEAD(, port) conf_ports; TAILQ_HEAD(, portal_group) conf_portal_groups; TAILQ_HEAD(, isns) conf_isns; @@ -220,13 +245,13 @@ struct conf { int conf_maxproc; #ifdef ICL_KERNEL_PROXY - int conf_portal_id; + int conf_portal_id = 0; #endif - struct pidfh *conf_pidfh; + struct pidfh *conf_pidfh = nullptr; - bool conf_default_pg_defined; - bool conf_default_ag_defined; - bool conf_kernel_port_on; + bool conf_default_pg_defined = false; + bool conf_default_ag_defined = false; + bool conf_kernel_port_on = false; }; /* Physical ports exposed by the kernel */ @@ -248,7 +273,7 @@ struct ctld_connection { char *conn_initiator_addr; char *conn_initiator_alias; uint8_t conn_initiator_isid[6]; - struct sockaddr_storage conn_initiator_sa; + const struct sockaddr *conn_initiator_sa; int conn_max_recv_data_segment_limit; int conn_max_send_data_segment_limit; int conn_max_burst_limit; @@ -270,30 +295,10 @@ void conf_start(struct conf *new_conf); bool conf_verify(struct conf *conf); struct auth_group *auth_group_new(struct conf *conf, const char *name); -struct auth_group *auth_group_new(struct conf *conf, - struct target *target); -void auth_group_delete(struct auth_group *ag); -struct auth_group *auth_group_find(const struct conf *conf, +auth_group_sp auth_group_new(struct target *target); +auth_group_sp auth_group_find(const struct conf *conf, const char *name); -bool auth_new_chap(struct auth_group *ag, const char *user, - const char *secret); -bool auth_new_chap_mutual(struct auth_group *ag, - const char *user, const char *secret, - const char *user2, const char *secret2); -const struct auth *auth_find(const struct auth_group *ag, - const char *user); - -bool auth_name_new(struct auth_group *ag, - const char *initiator_name); -bool auth_name_check(const struct auth_group *ag, - const char *initiator_name); - -bool auth_portal_new(struct auth_group *ag, - const char *initiator_portal); -bool auth_portal_check(const struct auth_group *ag, - const struct sockaddr_storage *sa); - struct portal_group *portal_group_new(struct conf *conf, const char *name); void portal_group_delete(struct portal_group *pg); struct portal_group *portal_group_find(const struct conf *conf, diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index c4bfb94669f9..5ef8a7e7027b 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -156,32 +156,32 @@ discovery_target_filtered_out(const struct ctld_connection *conn, int error; targ = port->p_target; - ag = port->p_auth_group; - if (ag == NULL) - ag = targ->t_auth_group; + ag = port->p_auth_group.get(); + if (ag == nullptr) + ag = targ->t_auth_group.get(); pg = conn->conn_portal->p_portal_group; assert(pg->pg_discovery_filter != PG_FILTER_UNKNOWN); if (pg->pg_discovery_filter >= PG_FILTER_PORTAL && - !auth_portal_check(ag, &conn->conn_initiator_sa)) { + !ag->initiator_permitted(conn->conn_initiator_sa)) { log_debugx("initiator does not match initiator portals " "allowed for target \"%s\"; skipping", targ->t_name); return (true); } if (pg->pg_discovery_filter >= PG_FILTER_PORTAL_NAME && - !auth_name_check(ag, conn->conn_initiator_name)) { + !ag->initiator_permitted(conn->conn_initiator_name)) { log_debugx("initiator does not match initiator names " "allowed for target \"%s\"; skipping", targ->t_name); return (true); } if (pg->pg_discovery_filter >= PG_FILTER_PORTAL_NAME_AUTH && - ag->ag_type != AG_TYPE_NO_AUTHENTICATION) { + ag->type() != auth_type::NO_AUTHENTICATION) { if (conn->conn_chap == NULL) { - assert(pg->pg_discovery_auth_group->ag_type == - AG_TYPE_NO_AUTHENTICATION); + assert(pg->pg_discovery_auth_group->type() == *** 114 LINES SKIPPED *** From nobody Mon Aug 4 19:46:49 2025 X-Original-To: dev-commits-src-main@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 4bwnBK4YTyz63RGB; Mon, 04 Aug 2025 19:46:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBK2rZVz4Kdv; Mon, 04 Aug 2025 19:46:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336809; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LoDxI60OM6GJ+c+MXr5HyY8d5CzoWKmFOwXluDCGCV4=; b=IXXnMFEBdmPN4+lX2Q8fSqABZ9A14lev7MGTG2C7HskhMgKXyYJyzoXzsNkZfct6Xvvvdj XrWkXi77p6R5VlcuaJVsQMYuwARLgxt67L2btlWM/j90ayu/zfwnpEhabfaqfBiu022xAu +WVtSf/cUjPf/S778JZb4IPJUCJp6X6B+MirSyi7dvdFAsnSRIyF5kPWOtbJDWB0glSqC8 mkZIAzZC/jCH2rMiTcgWTaNPeFl12xpCBbTBqhy523CI7jcPYuMl8cCNDDsDeHJieexQx4 h6gy8fdm8zfHz3W3OByxHdeNk/pGR/OG86QSQQ0+As81xpdejH7ibNYRqO0vHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336809; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LoDxI60OM6GJ+c+MXr5HyY8d5CzoWKmFOwXluDCGCV4=; b=DkXJ99c7EgnJRXT6h8Xnk1tPwiR6p+UpD4Nh33tELwasfMJ6/r5XlsNctLfJsKc6+XaHKS l6GeXYPIGXreokkhNdg0sdm0cw/WGBon+94fTIE9w0OznKltoqLDLSHXcZdQf/SwDmA94w B6yIcXIioJsGRCSLz+XiDh+uZFTHPnIkPlpBDfxb833zdOX5iv9xTDI6EFjdfuvU+jWjK7 53+Hp81Z4Oi6WSyjUT7ovu027WbWhBqO7sK1c2piVMU5RIbWzjpRd9msoAo0V0XTGTQbl1 i7bnB2IjL3wwJrUMueXPdpjkfmRUrn1o8uSWmoGFAV2CSXACzGHJXT+KOI07bg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336809; a=rsa-sha256; cv=none; b=e13YBeSWcUMexz2kA8CPVOjtp9+ryHc6ugbACf6VBl7HVmONQEPskF/Q4lZmDXb8OquFE3 yAnBWi8UXIo3ch6hvdD0zzYVGgeLjNgCYSAVXcS0/gvVfEv0MM8UXH4Vj/HonT5TqvwTsq RF34FQyyzZ+VM9W6YgLAVLcB6CmTY3VnbcnDXuMHM8DdFSPiiIfv9IjKOKOKM5/zyKnzel 4LKi3dFxAGpDTu+Ip8hkyQLunYMUXgioyr+137MiZFEPwvA84BcsW4ZmVea0XjAlfx0kaL 2Ow0KxQXU4YbbAuPQqyAh+AU1Ev9l7fvcC6khyPVzk9Sz8SxCqBQGpFksQ27aQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBK2JbPz13BB; Mon, 04 Aug 2025 19:46:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkn6O099099; Mon, 4 Aug 2025 19:46:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JknC4099096; Mon, 4 Aug 2025 19:46:49 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:49 GMT Message-Id: <202508041946.574JknC4099096@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 22ce7be762ea - main - libutil++: Add freebsd::addrinfo_up wrapper class for std::unique_ptr<> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 22ce7be762ea7b03a2c40ad52932023c69e1400f Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=22ce7be762ea7b03a2c40ad52932023c69e1400f commit 22ce7be762ea7b03a2c40ad52932023c69e1400f Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 libutil++: Add freebsd::addrinfo_up wrapper class for std::unique_ptr<> This class uses a custom deleter that calls freeaddrinfo(). Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- lib/libutil++/Makefile | 1 + lib/libutil++/freebsd::addrinfo_up.3 | 45 ++++++++++++++++++++++++++++++++++++ lib/libutil++/libutil++.hh | 16 +++++++++++++ 3 files changed, 62 insertions(+) diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile index ec83a9ad35f9..d53629b2e4e0 100644 --- a/lib/libutil++/Makefile +++ b/lib/libutil++/Makefile @@ -5,6 +5,7 @@ SHLIB_MAJOR= 1 SRCS= stringf.cc MAN+= freebsd::FILE_up.3 \ + freebsd::addrinfo_up.3 \ freebsd::malloc_up.3 \ freebsd::stringf.3 diff --git a/lib/libutil++/freebsd::addrinfo_up.3 b/lib/libutil++/freebsd::addrinfo_up.3 new file mode 100644 index 000000000000..4845a76bfb61 --- /dev/null +++ b/lib/libutil++/freebsd::addrinfo_up.3 @@ -0,0 +1,45 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::ADDRINFO_UP 3 +.Os +.Sh NAME +.Nm freebsd::addrinfo_up +.Nd std::unique_ptr specialization for lists of socket addresses +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Ft using addrinfo_up = std::unique_ptr; +.Sh DESCRIPTION +This class is a specialization of +.Vt std::unique_ptr +for socket addresses returned by +.Xr getaddrinfo 3 . +When a list of socket addresses managed by an instance of this class is +disposed, +.Xr freeaddrinfo 3 +is invoked to dispose of the list. +.Sh EXAMPLES +.Bd -literal -offset indent +freebsd::addrinfo_up +resolve_address(const char *address, const char *port) +{ + struct addrinfo hints, *ai; + int error; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + error = getaddrinfo(address, port, &hints, &ai); + if (error != 0) + return {}; + return freebsd::addrinfo_up(ai); +} +.Ed +.Sh SEE ALSO +.Xr getaddrinfo 3 diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh index 93cc2d9e6650..e9269b482a5c 100644 --- a/lib/libutil++/libutil++.hh +++ b/lib/libutil++/libutil++.hh @@ -8,6 +8,8 @@ #ifndef __LIBUTILPP_HH__ #define __LIBUTILPP_HH__ +#include + #include #include #include @@ -27,6 +29,20 @@ namespace freebsd { using FILE_up = std::unique_ptr; + /* + * addrinfo_up is a std::unique_ptr<> which uses + * freeaddrinfo() to destroy the wrapped pointer. It is + * intended to wrap arrays allocated by getaddrinfo(). + */ + struct freeaddrinfo_deleter { + void operator() (struct addrinfo *ai) const + { + freeaddrinfo(ai); + } + }; + + using addrinfo_up = std::unique_ptr; + /* * malloc_up is a std::unique_ptr<> which uses free() to * destroy the wrapped pointer. This can be used to wrap From nobody Mon Aug 4 19:46:50 2025 X-Original-To: dev-commits-src-main@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 4bwnBM39G1z63Rcc; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBL3QYyz4KWx; Mon, 04 Aug 2025 19:46:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336810; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZHfWJIKJY6hYf+YLGFyI3aX3t/GkcZLZ46GPUJqPMew=; b=eqZvoRGRoxBVAY4LP8LWYEiZr2GwqpnBXSqGiKE7R8F5BhyKJVh39eWueP2Wn2PwCMY//b IwuSqytuThzNYTAR6Z02QvzONqY0n5A2tXW+ucTJiRlgS5zz9NBe39ffaEYGAcfG5KjJZQ j894idHFTKbUEmc3vR1DcHpzifkF9OiFH4k63IMQFnQuUhmlrMAulWkFZgTuYFBKOXX588 egn9hOU4t6EMq/RYiNDsnEjblLIpLu5kRTUBdFF2MD/ZIK+dz6XR5k5JU/72G8A0NQhqwc lTERuInOor0L/SlVhcCZ9aP7IgKXJpJKesDyKpxvTNhTXBygV1sdBu+ybruGzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336810; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZHfWJIKJY6hYf+YLGFyI3aX3t/GkcZLZ46GPUJqPMew=; b=cMLOaytMgmWPrRt1Jc0ZN6dbipqpSwyIyvya4LiYtuxo/gpsfLSHumEOYw+6RhfXpGd7IU Y6/aqjBCy7m0YzJxS54zhwUqjlFCaep47380gC4ZXxCDexaPBwTy9JD9xiWlnccBWkgGlX EM6tlVQBb/2/B7p5MmQ7ST9TUCwOuYSRHe1r3PdLXLb/pK92xBBZSLaziBbIFbNwMstaCs cBsAhGpSO9fa2kTTjYyJ4TgCTeK6FlIYlovmAlUyXc7yqJqhtOYCDW2KeTsN1B5oTOiteo iyjrW38wDvLEmhPx9r3BauXlu8G6m12mZAX+LbjmKIbZoVS9MapvPj8M8jHIkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336810; a=rsa-sha256; cv=none; b=dHjBhVY3LiRY6T1CeAlOxsTp/rGl+EDtXJWYnnM3i216OcOnQSfudlxVXxbUfq0yRNPfjI RkIhKNZNr007ZrwYtxQlGRqoQenoLIcPKvDEa0Anma541DpFJtQPAO6J8Nn6zLWqdsLgJn HLaIY5BGh7P555vkuGnNzuXHWEbe3H58wpxc/CxufR1se8JIWPPXKDXRfjApJ89LEG4xKv 4zOWEzOLRzKIIPN0bmwRK8yKdbaIYt64SnexttUzpu1XBVDGU3h527W8BeV8AKOGngNkDj fVl7l6RUHPFwx/9CCMLTeBnFCk8Z5z7hST5iUVSaM1fxlsOTHQQw9gTTOW4v2w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBL31lSz12Z7; Mon, 04 Aug 2025 19:46:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkoZa099134; Mon, 4 Aug 2025 19:46:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkoWQ099131; Mon, 4 Aug 2025 19:46:50 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:50 GMT Message-Id: <202508041946.574JkoWQ099131@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: f61f75771f95 - main - ctld: Cleanups to parse_addr_port List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f61f75771f95b59fdbc6ebd71b8da9407374ad44 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=f61f75771f95b59fdbc6ebd71b8da9407374ad44 commit f61f75771f95b59fdbc6ebd71b8da9407374ad44 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Cleanups to parse_addr_port - Reimplement the address parsing logic using std::string operations instead of C string parsing. - Return a freebsd::addrinfo_up instance holding the allocated struct addrinfo chain. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 73 ++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index b2cf31fff18f..bf700d5b4051 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -506,51 +506,41 @@ portal_group_find(const struct conf *conf, const char *name) return (NULL); } -static int -parse_addr_port(char *arg, const char *def_port, struct addrinfo **ai) +static freebsd::addrinfo_up +parse_addr_port(const char *address, const char *def_port) { - struct addrinfo hints; - char *str, *addr, *ch; - const char *port; - int error, colons = 0; + struct addrinfo hints, *ai; + int error; - str = arg = strdup(arg); - if (arg[0] == '[') { + std::string addr(address); + std::string port(def_port); + if (addr[0] == '[') { /* * IPv6 address in square brackets, perhaps with port. */ - arg++; - addr = strsep(&arg, "]"); - if (arg == NULL) { - free(str); - return (1); - } - if (arg[0] == '\0') { - port = def_port; - } else if (arg[0] == ':') { - port = arg + 1; - } else { - free(str); - return (1); + addr.erase(0, 1); + size_t pos = addr.find(']'); + if (pos == 0 || pos == addr.npos) + return {}; + if (pos < addr.length() - 1) { + port = addr.substr(pos + 1); + if (port[0] != ':' || port.length() < 2) + return {}; + port.erase(0, 1); } + addr.resize(pos); } else { /* * Either IPv6 address without brackets - and without * a port - or IPv4 address. Just count the colons. */ - for (ch = arg; *ch != '\0'; ch++) { - if (*ch == ':') - colons++; - } - if (colons > 1) { - addr = arg; - port = def_port; - } else { - addr = strsep(&arg, ":"); - if (arg == NULL) - port = def_port; - else - port = arg; + size_t pos = addr.find(':'); + if (pos != addr.npos && addr.find(':', pos + 1) == addr.npos) { + /* Only a single colon at `pos`. */ + if (pos == addr.length() - 1) + return {}; + port = addr.substr(pos + 1); + addr.resize(pos); } } @@ -558,9 +548,10 @@ parse_addr_port(char *arg, const char *def_port, struct addrinfo **ai) hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; - error = getaddrinfo(addr, port, &hints, ai); - free(str); - return ((error != 0) ? 1 : 0); + error = getaddrinfo(addr.c_str(), port.c_str(), &hints, &ai); + if (error != 0) + return {}; + return freebsd::addrinfo_up(ai); } bool @@ -572,7 +563,8 @@ portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) portal->p_listen = checked_strdup(value); portal->p_iser = iser; - if (parse_addr_port(portal->p_listen, "3260", &portal->p_ai)) { + freebsd::addrinfo_up ai = parse_addr_port(portal->p_listen, "3260"); + if (!ai) { log_warnx("invalid listen address %s", portal->p_listen); portal_delete(portal); return (false); @@ -583,6 +575,7 @@ portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) * those into multiple portals. */ + portal->p_ai = ai.release(); return (true); } @@ -598,7 +591,8 @@ isns_new(struct conf *conf, const char *addr) TAILQ_INSERT_TAIL(&conf->conf_isns, isns, i_next); isns->i_addr = checked_strdup(addr); - if (parse_addr_port(isns->i_addr, "3205", &isns->i_ai)) { + freebsd::addrinfo_up ai = parse_addr_port(isns->i_addr, "3205"); + if (!ai) { log_warnx("invalid iSNS address %s", isns->i_addr); isns_delete(isns); return (false); @@ -609,6 +603,7 @@ isns_new(struct conf *conf, const char *addr) * those into multiple servers. */ + isns->i_ai = ai.release(); return (true); } From nobody Mon Aug 4 19:46:51 2025 X-Original-To: dev-commits-src-main@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 4bwnBM6dC0z63RGG; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBM45Lnz4KfL; Mon, 04 Aug 2025 19:46:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336811; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1sgWipzHK/mwtsm1uDdE8A3VmuGEU4VQYCu5/4sgNYE=; b=Lp4t6SDDuhYowHTNnSVmMWX5907RA6fd9wXtU693dPFB5X4JAVAI5LKN65wHVedtHXcuxg pE7UoIY9NdNTl1AUrzIpLc+SVG3UlrJ9mPsUVaMaupYg1Up83KLmMUqMccXr4OkVzNe4o7 xOgQtvIivT/W3fS+7h4ZK+T4KsmMabihAOY71aTaJpY+OrnRrHOnBVn0kZ+nFOXP843CzX aCYPvVHN1siXNyFlplHoyDe5jemZzNNVVRnXVLAu4yNbpfMBRnSTboYEMv/TO0hsgA4sIw c9zID6cyQK6U5qAaH8CE561Elbb3RJt0JzUvaEhV8geCNt6wb76QQpi2VZqlpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336811; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1sgWipzHK/mwtsm1uDdE8A3VmuGEU4VQYCu5/4sgNYE=; b=MQY2wfEgkX3K7h0DfgUVJJPs4K5UKeRVKlvn2qAcvsGLicKQRr+f4Y7N7EGFmIUkSj2rQA ZtZasgLivsffP3AVCI7XBg87gbRj+D1IXSG6/pDai/Ztd41B1vgeuk/0+/XwLtPze0IZBW HG8wIbAEaX6Pompd9Cr5utEg53Ch18BL7TGQlIv96mLwrNWRNWpra2N5kBy2I54zutqDaV M7TJ58EhMxMMRTO1HlpbsQLd3XNvilv5W3e597DijHqnvBdRgHUGUL8fvVEKbXV/mBR+k0 ebJp6kC9xq0dmf4/zw2/hA4RF9TIfJxRpEMnfGG1Qq3ymcWshYMRdSpFL8CXHw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336811; a=rsa-sha256; cv=none; b=evA+k9zfryy7McfDn7+6HEgsK7IppqxI0CVl0gr1FBx+ha1wP4OHKFo+yRZwZlgif3cDpg WMI/A9yM8vac4hZT91LQ/bpnIQD1TpdEKM67Hamo7vBD8qc9zhHH8gnymDHtSow/cjW67M 1IKd7PK9OxlTU40cjwWE+q0WnhzBqp+gU48asdBMbngHbgY14a0BHtfBeJrxuekDqfBEEV BH2e1KLRa2Ce2RlQnzmK0DkNFGLWEV4gQCNs4GhwAAhz4TfsRiTmsk6WDOYTkZZwdiFDDp 7PBdeL+2Upb2wOqAdqXEBYkaIPqoXM6vh3L81U8RM7VZTySMPtKLbYY/7Yjdbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBM3hLwz13BC; Mon, 04 Aug 2025 19:46:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkp0I099171; Mon, 4 Aug 2025 19:46:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkpov099169; Mon, 4 Aug 2025 19:46:51 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:51 GMT Message-Id: <202508041946.574Jkpov099169@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 1ee9931d6e6f - main - ctld: Convert struct isns_req to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1ee9931d6e6f0f9fc4151efcac225d742de9e6fa Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=1ee9931d6e6f0f9fc4151efcac225d742de9e6fa commit 1ee9931d6e6f0f9fc4151efcac225d742de9e6fa Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct isns_req to a C++ class Use a std::vector<> of chars to hold the iSNS packet. Convert the various isns_req_* functions to be class methods instead. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 113 +++++++++++++------------------- usr.sbin/ctld/isns.cc | 176 +++++++++++++++++++------------------------------- usr.sbin/ctld/isns.hh | 36 ++++++----- 3 files changed, 130 insertions(+), 195 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index bf700d5b4051..2c385baa8c5a 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -637,7 +637,7 @@ isns_do_connect(struct isns *isns) return(s); } -static int +static void isns_do_register(struct isns *isns, int s, const char *hostname) { struct conf *conf = isns->i_conf; @@ -645,122 +645,100 @@ isns_do_register(struct isns *isns, int s, const char *hostname) struct portal *portal; struct portal_group *pg; struct port *port; - struct isns_req *req; - int res = 0; uint32_t error; - req = isns_req_create(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT); - isns_req_add_str(req, 32, TAILQ_FIRST(&conf->conf_targets)->t_name); - isns_req_add_delim(req); - isns_req_add_str(req, 1, hostname); - isns_req_add_32(req, 2, 2); /* 2 -- iSCSI */ - isns_req_add_32(req, 6, conf->conf_isns_period); + isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT); + req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_delim(); + req.add_str(1, hostname); + req.add_32(2, 2); /* 2 -- iSCSI */ + req.add_32(6, conf->conf_isns_period); TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { if (pg->pg_unassigned) continue; TAILQ_FOREACH(portal, &pg->pg_portals, p_next) { - isns_req_add_addr(req, 16, portal->p_ai); - isns_req_add_port(req, 17, portal->p_ai); + req.add_addr(16, portal->p_ai); + req.add_port(17, portal->p_ai); } } TAILQ_FOREACH(target, &conf->conf_targets, t_next) { - isns_req_add_str(req, 32, target->t_name); - isns_req_add_32(req, 33, 1); /* 1 -- Target*/ + req.add_str(32, target->t_name); + req.add_32(33, 1); /* 1 -- Target*/ if (target->t_alias != NULL) - isns_req_add_str(req, 34, target->t_alias); + req.add_str(34, target->t_alias); TAILQ_FOREACH(port, &target->t_ports, p_ts) { if ((pg = port->p_portal_group) == NULL) continue; - isns_req_add_32(req, 51, pg->pg_tag); + req.add_32(51, pg->pg_tag); TAILQ_FOREACH(portal, &pg->pg_portals, p_next) { - isns_req_add_addr(req, 49, portal->p_ai); - isns_req_add_port(req, 50, portal->p_ai); + req.add_addr(49, portal->p_ai); + req.add_port(50, portal->p_ai); } } } - res = isns_req_send(s, req); - if (res < 0) { + if (!req.send(s)) { log_warn("send(2) failed for %s", isns->i_addr); - goto quit; + return; } - res = isns_req_receive(s, req); - if (res < 0) { + if (!req.receive(s)) { log_warn("receive(2) failed for %s", isns->i_addr); - goto quit; + return; } - error = isns_req_get_status(req); + error = req.get_status(); if (error != 0) { log_warnx("iSNS register error %d for %s", error, isns->i_addr); - res = -1; } -quit: - isns_req_free(req); - return (res); } -static int +static bool isns_do_check(struct isns *isns, int s, const char *hostname) { struct conf *conf = isns->i_conf; - struct isns_req *req; - int res = 0; uint32_t error; - req = isns_req_create(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT); - isns_req_add_str(req, 32, TAILQ_FIRST(&conf->conf_targets)->t_name); - isns_req_add_str(req, 1, hostname); - isns_req_add_delim(req); - isns_req_add(req, 2, 0, NULL); - res = isns_req_send(s, req); - if (res < 0) { + isns_req req(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT); + req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_str(1, hostname); + req.add_delim(); + req.add(2, 0, NULL); + if (!req.send(s)) { log_warn("send(2) failed for %s", isns->i_addr); - goto quit; + return (false); } - res = isns_req_receive(s, req); - if (res < 0) { + if (!req.receive(s)) { log_warn("receive(2) failed for %s", isns->i_addr); - goto quit; + return (false); } - error = isns_req_get_status(req); + error = req.get_status(); if (error != 0) { log_warnx("iSNS check error %d for %s", error, isns->i_addr); - res = -1; + return (false); } -quit: - isns_req_free(req); - return (res); + return (true); } -static int +static void isns_do_deregister(struct isns *isns, int s, const char *hostname) { struct conf *conf = isns->i_conf; - struct isns_req *req; - int res = 0; uint32_t error; - req = isns_req_create(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT); - isns_req_add_str(req, 32, TAILQ_FIRST(&conf->conf_targets)->t_name); - isns_req_add_delim(req); - isns_req_add_str(req, 1, hostname); - res = isns_req_send(s, req); - if (res < 0) { + isns_req req(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT); + req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_delim(); + req.add_str(1, hostname); + if (!req.send(s)) { log_warn("send(2) failed for %s", isns->i_addr); - goto quit; + return; } - res = isns_req_receive(s, req); - if (res < 0) { + if (!req.receive(s)) { log_warn("receive(2) failed for %s", isns->i_addr); - goto quit; + return; } - error = isns_req_get_status(req); + error = req.get_status(); if (error != 0) { log_warnx("iSNS deregister error %d for %s", error, isns->i_addr); - res = -1; } -quit: - isns_req_free(req); - return (res); } void @@ -795,7 +773,7 @@ void isns_check(struct isns *isns) { struct conf *conf = isns->i_conf; - int error, s, res; + int error, s; char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || @@ -811,8 +789,7 @@ isns_check(struct isns *isns) if (error != 0) log_err(1, "gethostname"); - res = isns_do_check(isns, s, hostname); - if (res < 0) { + if (!isns_do_check(isns, s, hostname)) { isns_do_deregister(isns, s, hostname); isns_do_register(isns, s, hostname); } diff --git a/usr.sbin/ctld/isns.cc b/usr.sbin/ctld/isns.cc index 2f1e0094c0bf..9e27999d2bf9 100644 --- a/usr.sbin/ctld/isns.cc +++ b/usr.sbin/ctld/isns.cc @@ -27,7 +27,7 @@ * */ -#include +#include #include #include #include @@ -43,129 +43,86 @@ #include "ctld.hh" #include "isns.hh" -struct isns_req * -isns_req_alloc(void) +isns_req::isns_req(uint16_t func, uint16_t flags) { - struct isns_req *req; + struct isns_hdr hdr; - req = reinterpret_cast(calloc(1, sizeof(struct isns_req))); - if (req == NULL) { - log_err(1, "calloc"); - return (NULL); - } - req->ir_buflen = sizeof(struct isns_hdr); - req->ir_usedlen = 0; - req->ir_buf = reinterpret_cast(calloc(1, req->ir_buflen)); - if (req->ir_buf == NULL) { - free(req); - log_err(1, "calloc"); - return (NULL); - } - return (req); -} - -struct isns_req * -isns_req_create(uint16_t func, uint16_t flags) -{ - struct isns_req *req; - struct isns_hdr *hdr; - - req = isns_req_alloc(); - req->ir_usedlen = sizeof(struct isns_hdr); - hdr = (struct isns_hdr *)req->ir_buf; - be16enc(hdr->ih_version, ISNS_VERSION); - be16enc(hdr->ih_function, func); - be16enc(hdr->ih_flags, flags); - return (req); + be16enc(&hdr.ih_version, ISNS_VERSION); + be16enc(&hdr.ih_function, func); + be16enc(&hdr.ih_flags, flags); + append(&hdr, sizeof(hdr)); } void -isns_req_free(struct isns_req *req) +isns_req::getspace(uint32_t len) { - - free(req->ir_buf); - free(req); + ir_buf.reserve(ir_buf.size() + len); } -static int -isns_req_getspace(struct isns_req *req, uint32_t len) +void +isns_req::append(const void *buf, size_t len) { - void *newbuf; - int newlen; - - if (req->ir_usedlen + len <= req->ir_buflen) - return (0); - newlen = 1 << flsl(req->ir_usedlen + len); - newbuf = realloc(req->ir_buf, newlen); - if (newbuf == NULL) { - log_err(1, "realloc"); - return (1); - } - req->ir_buf = reinterpret_cast(newbuf); - req->ir_buflen = newlen; - return (0); + const char *cp = reinterpret_cast(buf); + ir_buf.insert(ir_buf.end(), cp, cp + len); } void -isns_req_add(struct isns_req *req, uint32_t tag, uint32_t len, - const void *value) +isns_req::add(uint32_t tag, uint32_t len, const void *value) { - struct isns_tlv *tlv; + struct isns_tlv tlv; uint32_t vlen; - vlen = len + ((len & 3) ? (4 - (len & 3)) : 0); - isns_req_getspace(req, sizeof(*tlv) + vlen); - tlv = (struct isns_tlv *)&req->ir_buf[req->ir_usedlen]; - be32enc(tlv->it_tag, tag); - be32enc(tlv->it_length, vlen); - memcpy(tlv->it_value, value, len); + vlen = roundup2(len, 4); + getspace(sizeof(tlv) + vlen); + be32enc(&tlv.it_tag, tag); + be32enc(&tlv.it_length, vlen); + append(&tlv, sizeof(tlv)); + append(value, len); if (vlen != len) - memset(&tlv->it_value[len], 0, vlen - len); - req->ir_usedlen += sizeof(*tlv) + vlen; + ir_buf.insert(ir_buf.end(), vlen - len, 0); } void -isns_req_add_delim(struct isns_req *req) +isns_req::add_delim() { - - isns_req_add(req, 0, 0, NULL); + add(0, 0, nullptr); } void -isns_req_add_str(struct isns_req *req, uint32_t tag, const char *value) +isns_req::add_str(uint32_t tag, const char *value) { - isns_req_add(req, tag, strlen(value) + 1, value); + add(tag, strlen(value) + 1, value); } void -isns_req_add_32(struct isns_req *req, uint32_t tag, uint32_t value) +isns_req::add_32(uint32_t tag, uint32_t value) { uint32_t beval; be32enc(&beval, value); - isns_req_add(req, tag, sizeof(value), &beval); + add(tag, sizeof(value), &beval); } void -isns_req_add_addr(struct isns_req *req, uint32_t tag, struct addrinfo *ai) +isns_req::add_addr(uint32_t tag, const struct addrinfo *ai) { - struct sockaddr_in *in4; - struct sockaddr_in6 *in6; + const struct sockaddr_in *in4; + const struct sockaddr_in6 *in6; uint8_t buf[16]; switch (ai->ai_addr->sa_family) { case AF_INET: - in4 = (struct sockaddr_in *)(void *)ai->ai_addr; + in4 = (const struct sockaddr_in *)ai->ai_addr; memset(buf, 0, 10); buf[10] = 0xff; buf[11] = 0xff; memcpy(&buf[12], &in4->sin_addr, sizeof(in4->sin_addr)); - isns_req_add(req, tag, sizeof(buf), buf); + add(tag, sizeof(buf), buf); break; case AF_INET6: - in6 = (struct sockaddr_in6 *)(void *)ai->ai_addr; - isns_req_add(req, tag, sizeof(in6->sin6_addr), &in6->sin6_addr); + in6 = (const struct sockaddr_in6 *)ai->ai_addr; + add(tag, sizeof(in6->sin6_addr), &in6->sin6_addr); break; default: log_errx(1, "Unsupported address family %d", @@ -174,22 +131,22 @@ isns_req_add_addr(struct isns_req *req, uint32_t tag, struct addrinfo *ai) } void -isns_req_add_port(struct isns_req *req, uint32_t tag, struct addrinfo *ai) +isns_req::add_port(uint32_t tag, const struct addrinfo *ai) { - struct sockaddr_in *in4; - struct sockaddr_in6 *in6; + const struct sockaddr_in *in4; + const struct sockaddr_in6 *in6; uint32_t buf; switch (ai->ai_addr->sa_family) { case AF_INET: - in4 = (struct sockaddr_in *)(void *)ai->ai_addr; + in4 = (const struct sockaddr_in *)ai->ai_addr; be32enc(&buf, ntohs(in4->sin_port)); - isns_req_add(req, tag, sizeof(buf), &buf); + add(tag, sizeof(buf), &buf); break; case AF_INET6: - in6 = (struct sockaddr_in6 *)(void *)ai->ai_addr; + in6 = (const struct sockaddr_in6 *)ai->ai_addr; be32enc(&buf, ntohs(in6->sin6_port)); - isns_req_add(req, tag, sizeof(buf), &buf); + add(tag, sizeof(buf), &buf); break; default: log_errx(1, "Unsupported address family %d", @@ -197,55 +154,54 @@ isns_req_add_port(struct isns_req *req, uint32_t tag, struct addrinfo *ai) } } -int -isns_req_send(int s, struct isns_req *req) +bool +isns_req::send(int s) { struct isns_hdr *hdr; int res; - hdr = (struct isns_hdr *)req->ir_buf; - be16enc(hdr->ih_length, req->ir_usedlen - sizeof(*hdr)); + hdr = (struct isns_hdr *)ir_buf.data(); + be16enc(hdr->ih_length, ir_buf.size() - sizeof(*hdr)); be16enc(hdr->ih_flags, be16dec(hdr->ih_flags) | ISNS_FLAG_LAST | ISNS_FLAG_FIRST); be16enc(hdr->ih_transaction, 0); be16enc(hdr->ih_sequence, 0); - res = write(s, req->ir_buf, req->ir_usedlen); - return ((res < 0) ? -1 : 0); + res = write(s, ir_buf.data(), ir_buf.size()); + return (res > 0 && (size_t)res == ir_buf.size()); } -int -isns_req_receive(int s, struct isns_req *req) +bool +isns_req::receive(int s) { struct isns_hdr *hdr; ssize_t res, len; - req->ir_usedlen = 0; - isns_req_getspace(req, sizeof(*hdr)); - res = read(s, req->ir_buf, sizeof(*hdr)); - if (res < (ssize_t)sizeof(*hdr)) - return (-1); - req->ir_usedlen = sizeof(*hdr); - hdr = (struct isns_hdr *)req->ir_buf; + ir_buf.resize(sizeof(*hdr)); + res = read(s, ir_buf.data(), sizeof(*hdr)); + if (res < (ssize_t)sizeof(*hdr)) { + ir_buf.clear(); + return (false); + } + hdr = (struct isns_hdr *)ir_buf.data(); if (be16dec(hdr->ih_version) != ISNS_VERSION) - return (-1); + return (false); if ((be16dec(hdr->ih_flags) & (ISNS_FLAG_LAST | ISNS_FLAG_FIRST)) != (ISNS_FLAG_LAST | ISNS_FLAG_FIRST)) - return (-1); + return (false); len = be16dec(hdr->ih_length); - isns_req_getspace(req, len); - res = read(s, &req->ir_buf[req->ir_usedlen], len); + ir_buf.resize(sizeof(*hdr) + len); + res = read(s, ir_buf.data() + sizeof(*hdr), len); if (res < len) - return (-1); - req->ir_usedlen += len; - return (0); + return (false); + return (res == len); } uint32_t -isns_req_get_status(struct isns_req *req) +isns_req::get_status() { - if (req->ir_usedlen < sizeof(struct isns_hdr) + 4) + if (ir_buf.size() < sizeof(struct isns_hdr) + 4) return (-1); - return (be32dec(&req->ir_buf[sizeof(struct isns_hdr)])); + return (be32dec(&ir_buf[sizeof(struct isns_hdr)])); } diff --git a/usr.sbin/ctld/isns.hh b/usr.sbin/ctld/isns.hh index 259a98f8b6be..79a288f7d133 100644 --- a/usr.sbin/ctld/isns.hh +++ b/usr.sbin/ctld/isns.hh @@ -27,6 +27,8 @@ #ifndef __ISNS_HH__ #define __ISNS_HH__ +#include + #define ISNS_VERSION 0x0001 #define ISNS_FUNC_DEVATTRREG 0x0001 @@ -68,23 +70,23 @@ struct isns_tlv { }; struct isns_req { - u_int ir_buflen; - u_int ir_usedlen; - uint8_t *ir_buf; -}; + isns_req() {} + isns_req(uint16_t func, uint16_t flags); -struct isns_req * isns_req_alloc(void); -struct isns_req * isns_req_create(uint16_t func, uint16_t flags); -void isns_req_free(struct isns_req *req); -void isns_req_add(struct isns_req *req, uint32_t tag, uint32_t len, - const void *value); -void isns_req_add_delim(struct isns_req *req); -void isns_req_add_str(struct isns_req *req, uint32_t tag, const char *value); -void isns_req_add_32(struct isns_req *req, uint32_t tag, uint32_t value); -void isns_req_add_addr(struct isns_req *req, uint32_t tag, struct addrinfo *ai); -void isns_req_add_port(struct isns_req *req, uint32_t tag, struct addrinfo *ai); -int isns_req_send(int s, struct isns_req *req); -int isns_req_receive(int s, struct isns_req *req); -uint32_t isns_req_get_status(struct isns_req *req); + void add(uint32_t tag, uint32_t len, const void *value); + void add_delim(); + void add_str(uint32_t tag, const char *value); + void add_32(uint32_t tag, uint32_t value); + void add_addr(uint32_t tag, const struct addrinfo *ai); + void add_port(uint32_t tag, const struct addrinfo *ai); + bool send(int s); + bool receive(int s); + uint32_t get_status(); +private: + void getspace(uint32_t len); + void append(const void *buf, size_t len); + + std::vector ir_buf; +}; #endif /* __ISNS_HH__ */ From nobody Mon Aug 4 19:46:52 2025 X-Original-To: dev-commits-src-main@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 4bwnBP6GPgz63RJX; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBN4zFCz4Kcj; Mon, 04 Aug 2025 19:46:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336812; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZ3TyaR3zg4FoAsx8TKaPNOuA4NXOH6LyOBcv2S9fWw=; b=DmARWi2MnDzV+KfmJ6U/PPZURzaaN1ek9WfaKMofYuxJLHa2xVPRaww5Bmd5m+YLOJuzvS hspy2Wrep5nBNpYE8CWxcEQJK2zm3C/rSFbjmeijGnjam4sfQbhJEql6I9etfKlVAWRV08 qcDRXk3zIqbbpiijSMOOeJlKcbE8bHcZzuyZELr/RQEG/i7BBTOpxxqdPW+SFBrGaMT5O4 AMn5BvZRyItC6lmjjwwTT1ssEQJ6ddd21rCKRdV9XKksS9sEg8wVJVaxbQMbFrRd42Gv7x 0VONp9qg5VQE8ZT1A1EcDqcN982nL3LNC+vSWpSEC8ul97+UzND9WNC/JR4X0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336812; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZ3TyaR3zg4FoAsx8TKaPNOuA4NXOH6LyOBcv2S9fWw=; b=m/rTaBR6h+eyTkoeWWKUAioYJ8gm6/69Q7vfwUBu8E01ytXlSyOs54m3FK/gkaAFuJrLyX sM91MEAEJkqdzmYRVCXBT4/7ufLpk9175InyVKKz15wNp7wwc2i2dsvvYjO0+l44UDbOlS to8Li00xqvea3bT79jPlX7CqgGR0eNWWVOxhF8IS5kTWkZcV5WHME1+3F4AOQf3IiBGZEn jiWT6Q0jy25F9I5vI1L8kk8+Kw6A2MG7C+w3U1Ke4XGabxhTgMHtdrPZg2E1748LOCF3sJ H0jxE5hNBvTekf7HrZ1gImBEO1IuaiKv4l11lKQAiBpmxSEZYT8bn+jeN7843A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336812; a=rsa-sha256; cv=none; b=BmarV0qTU8epFjZYZRfpVPWtX0A1a1pPtvTySExYrdHIn26uWOCZAHTGhloZbd+Qntqmnn 3RNGp+XVzvWfcqpr0mSKuvOcWAkRzojZNt4ovQTLcwtUzAPvgNzp86Qy0Ka2mfvtHuRtU0 CqsZsR1hB178OA1MHGeCsUpVTGskIdVe855Za+nBWtYLgHzNMQEIwP7d9bJVpQxTRxn7aY y5Z15oGaRi8aMXxwUVsidIe5IA1uahL2GhNmnUSqebZTn00aiKOM6F+f6re+B9S5ZztWRF ykpzbbEIoOM/v9LctcpKxybThCduMgx+hrc0eXecgLEw5PEIj9rjXDT0iIw+UQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBN4ZYzz12W6; Mon, 04 Aug 2025 19:46:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkqF7099206; Mon, 4 Aug 2025 19:46:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkqrA099203; Mon, 4 Aug 2025 19:46:52 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:52 GMT Message-Id: <202508041946.574JkqrA099203@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 937e92b5f7cc - main - libutil++: Add freebsd::fd_up class to manage file descriptors List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 937e92b5f7cc9495368e64f2d5b45312f6595ed2 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=937e92b5f7cc9495368e64f2d5b45312f6595ed2 commit 937e92b5f7cc9495368e64f2d5b45312f6595ed2 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 libutil++: Add freebsd::fd_up class to manage file descriptors This class aims to provide a std::unique_ptr<>-like interface in that it assumes exclusive ownership of a file descriptor. The descriptor is closed when the object is destroyed. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- lib/libutil++/Makefile | 1 + lib/libutil++/freebsd::fd_up.3 | 78 ++++++++++++++++++++++++++++++++++++++++++ lib/libutil++/libutil++.hh | 71 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile index d53629b2e4e0..e64c9fe6cb75 100644 --- a/lib/libutil++/Makefile +++ b/lib/libutil++/Makefile @@ -6,6 +6,7 @@ SRCS= stringf.cc MAN+= freebsd::FILE_up.3 \ freebsd::addrinfo_up.3 \ + freebsd::fd_up.3 \ freebsd::malloc_up.3 \ freebsd::stringf.3 diff --git a/lib/libutil++/freebsd::fd_up.3 b/lib/libutil++/freebsd::fd_up.3 new file mode 100644 index 000000000000..2ef2241a5c40 --- /dev/null +++ b/lib/libutil++/freebsd::fd_up.3 @@ -0,0 +1,78 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::STRINGF 3 +.Os +.Sh NAME +.Nm freebsd::fd_up +.Nd own a file descriptor +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Pp +.Vt class freebsd::fd_up +{ +.Bd -ragged -offset indent +.Fn fd_up +.Fn fd_up "int fd" +.Fn fd_up "fd_up &&other" +.Fn ~fd_up +.Ft int +.Fn get +.Ft int +.Fn release +.Ft void +.Fn reset "int newfd = -1" +.Ft "fd_up &" +.Fn operator= "fd_up &&other" +.Ft "fd_up &" +.Fn operator= "int fd" +.Fn "explicit operator bool" +.Fn "operator int" +.Ed +}; +.Sh DESCRIPTION +Each instance of this class owns a file descriptor. +This class is patterned on std::unique_ptr, +but instead of owning a pointer to an object, +this class owns a file descriptor. +The currently-owned file descriptor is disposed by invoking +.Xr close 2 +when an instance of this class is destroyed. +The currently-owned file descriptor is also disposed if it is replaced by the +.Fn reset +method or assignment operators. +.Pp +The +.Fn get +method returns the current file descriptor value while retaining ownership. +.Pp +The +.Fn release +method relinquishes ownership of the current file descriptor and returns the +value of the previously-owned file descriptor. +.Pp +The explicit +.Vt bool +conversion operator permits testing the validity of an object. +The operator returns true if the instance owns a valid file descriptor. +.Pp +The implicit +.Vt int +conversion operator permits passing an instance of this class directly as +an argument to existing functions which expect a file descriptor. +.Sh EXAMPLES +.Bd -literal -offset indent +freebsd::fd_up fd(open("/dev/null", O_RDWR)); +if (!fd) + err(1, "open"); +write(fd, "test", 4); +// `fd' is implicitly closed on destruction +.Ed +.Sh SEE ALSO +.Xr close 2 diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh index e9269b482a5c..616bbecd8a12 100644 --- a/lib/libutil++/libutil++.hh +++ b/lib/libutil++/libutil++.hh @@ -9,6 +9,7 @@ #define __LIBUTILPP_HH__ #include +#include #include #include @@ -43,6 +44,76 @@ namespace freebsd { using addrinfo_up = std::unique_ptr; + /* + * This class is intended to function similar to unique_ptr<>, + * but it contains a file descriptor rather than a pointer to + * an object. On destruction the descriptor is closed via + * close(2). + * + * Similar to unique_ptr<>, release() returns ownership of the + * file descriptor to the caller. reset() closes the current + * file descriptor and takes ownership of a new one. A move + * constructor permits ownership to be transferred via + * std::move(). An integer file descriptor can be assigned + * directly which is equivalent to calling reset(). + * + * An explicit bool conversion operator permits testing this + * class in logical expressions. It returns true if it + * contains a valid descriptor. + * + * An implicit int conversion operator returns the underlying + * file descriptor allowing objects of this type to be passed + * directly to APIs such as connect(), listen(), etc. + */ + class fd_up { + public: + fd_up() : fd(-1) {} + fd_up(int fd) : fd(fd) {} + fd_up(fd_up &&other) : fd(other.release()) {} + fd_up(fd_up const &) = delete; + + ~fd_up() { reset(); } + + int get() const { return (fd); } + + int release() + { + int oldfd = fd; + + fd = -1; + return (oldfd); + } + + void reset(int newfd = -1) + { + if (fd >= 0) + close(fd); + fd = newfd; + } + + fd_up &operator=(fd_up &&other) noexcept + { + if (this == &other) + return *this; + + reset(other.release()); + return *this; + } + + fd_up &operator=(fd_up const &) = delete; + + fd_up &operator=(int newfd) + { + reset(newfd); + return *this; + } + + explicit operator bool() const { return fd >= 0; } + operator int() const { return fd; } + private: + int fd; + }; + /* * malloc_up is a std::unique_ptr<> which uses free() to * destroy the wrapped pointer. This can be used to wrap From nobody Mon Aug 4 19:46:54 2025 X-Original-To: dev-commits-src-main@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 4bwnBR41Jlz63RGb; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBR0cWFz4KwC; Mon, 04 Aug 2025 19:46:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336815; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AL2UsqefGSgG0LEtvlfFVI+As81466u0EoHprb8Misw=; b=byQakSAH8yVQ7y1KalqBmKCKBvLxcD/LEGDrrJm6b/m1y3JcuEPRTTKBDvqA+loWwIsEkg x+/WlxFfxsBYnngdPRElaxiu9ETspJiKhW5kWZwFOq4pHBQEC9r/0kB0VAYx3IlqJWsTU9 mpLw8L6AKhRD96WZLezi1t2x8Fi8M5sbLlkGdo9ILtx1xeEMoTFGaF9yH/boUONJoLkGT/ Fbb7hLLGULg5AVsWULnfZ/BGIC5kDHsAgY4ZphG0F+MzgNaeLNjcS86SjzjpCbGxgaB3ND n2wQKHlZ5seW1ZCUi4PhluZddsxRjqlpgbu3bVyfxJWj/FowkOvRu6G7ksSPyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336815; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AL2UsqefGSgG0LEtvlfFVI+As81466u0EoHprb8Misw=; b=WVdtNUDGWQfCkOtiZqIOTNJxUFYnTlx7icLwOvfc2ESnV2cod1lYlJ0yz1tYCx9uljejZn 2BDWbyEFmU/hs0NE9XYE9K7AaUDjF17PzYGwZ3EEkiaK4wIEeCxqpfBnOJPHg46QrdDFqY INVuhLtGDe+nmCVdIMyWWMC7FrAHpb/ExZNyfmjHQJhThmcYH6oXv2/Hx/9lX1kJoQqC0w 2hgw1OnnfxDs/8Qc5xyRePwv65X5HHeHOwANd1WQLcoRarwMoeLyTx+kooPIgix0ds9foc bJdZML+eDf5NGdn89QLxKe78Zw60wXGMWW6eAcZJ5d8oGlUj3lbKpgKwQxDDDg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336815; a=rsa-sha256; cv=none; b=UwLSkxY5m/SrpnNd1a7V7hDnjyxEPgLyTmEHihT610Jv9WaLHtsZabmcBJkWrudJAPHztD JV48xJomuxCcSx6X1t4vpVnaCkV1mEvF0rS2FSjwgVhYWVkmI2pObsAx5N1TCLSIdoJYcC nw/oEfIY47xM5qu4S9jzPBeGSorXzgMtNMz6eochfrTPHOAqByMciBZXLa+TWeiT6xdmin nFsVz6veaocxhOfRLRuBL2zny46Pu5/ZH3TIVNgpDG2UbN6D5r6RvOiPs2RGr4I6kc42sm zzaFqdtFPDBgnknk2Fy5PtygmfiRMARhQtRqI5QTSLWIokKMszjSKJ0Sa2lYbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBQ67MQz12f6; Mon, 04 Aug 2025 19:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jksd5099286; Mon, 4 Aug 2025 19:46:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JksX9099283; Mon, 4 Aug 2025 19:46:54 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:54 GMT Message-Id: <202508041946.574JksX9099283@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 63ffcf6971a3 - main - libutil++: Add freebsd::nvlist_up wrapper class for std::unique_ptr<> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 63ffcf6971a36e00efc138c3261b499aa48e102f Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=63ffcf6971a36e00efc138c3261b499aa48e102f commit 63ffcf6971a36e00efc138c3261b499aa48e102f Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 libutil++: Add freebsd::nvlist_up wrapper class for std::unique_ptr<> This class uses a custom deleter that calls nvlist_destroy(). Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- lib/libutil++/Makefile | 1 + lib/libutil++/freebsd::nvlist_up.3 | 37 +++++++++++++++++++++++++++++++++++++ lib/libutil++/libutil++.hh | 14 ++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile index e64c9fe6cb75..3389e7e21b11 100644 --- a/lib/libutil++/Makefile +++ b/lib/libutil++/Makefile @@ -8,6 +8,7 @@ MAN+= freebsd::FILE_up.3 \ freebsd::addrinfo_up.3 \ freebsd::fd_up.3 \ freebsd::malloc_up.3 \ + freebsd::nvlist_up.3 \ freebsd::stringf.3 .include diff --git a/lib/libutil++/freebsd::nvlist_up.3 b/lib/libutil++/freebsd::nvlist_up.3 new file mode 100644 index 000000000000..43f76cf3ead3 --- /dev/null +++ b/lib/libutil++/freebsd::nvlist_up.3 @@ -0,0 +1,37 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::NVLIST_UP 3 +.Os +.Sh NAME +.Nm freebsd::nvlist_up +.Nd std::unique_ptr specialization for name/value pairs +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Ft using nvlist_up = std::unique_ptr; +.Sh DESCRIPTION +This class is a specialization of +.Vt std::unique_ptr +for +.Vt nvlist_t +objects. +When an +.Vt nvlist_t +object managed by an instance of this class is disposed, +.Xr nvlist_destroy 3 +is invoked to dispose of the object. +.Sh EXAMPLES +.Bd -literal -offset indent +freebsd::nvlist_up nvl(nvlist_create(0)); +nvlist_add_number(nvl.get(), "answer", 42); +nvlist_add_bool(nvl.get(), "valid", true); +// `nvl' is implicitly destroyed +.Ed +.Sh SEE ALSO +.Xr nvlist_destroy 3 diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh index 616bbecd8a12..121633c4deea 100644 --- a/lib/libutil++/libutil++.hh +++ b/lib/libutil++/libutil++.hh @@ -8,6 +8,7 @@ #ifndef __LIBUTILPP_HH__ #define __LIBUTILPP_HH__ +#include #include #include @@ -131,6 +132,19 @@ namespace freebsd { template using malloc_up = std::unique_ptr>; + /* + * nvlist_up is a std::unique_ptr<> for nvlist_t objects which + * uses nvlist_destroy() to destroy the wrapped pointer. + */ + struct nvlist_deleter { + void operator() (nvlist_t *nvl) const + { + nvlist_destroy(nvl); + } + }; + + using nvlist_up = std::unique_ptr; + /* * Returns a std::string containing the same output as * sprintf(). Throws std::bad_alloc if an error occurs. From nobody Mon Aug 4 19:46:53 2025 X-Original-To: dev-commits-src-main@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 4bwnBR3k6sz63Qlw; Mon, 04 Aug 2025 19:46: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBP681rz4KZX; Mon, 04 Aug 2025 19:46:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336813; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vwBrvTdMe0qk3AAVb0cPfHu10B55QN5H/f5cCSUNJh8=; b=sOiQ/bXh64Rzx4YVoeSXRuwXSdBZ2d5GkIvvCuiN3YJ52REtp03wWV5dsA0mPUVrbk0G/C VOxNn0vywsuXl/chq5mH8q5sD2zZM66JRVoKkAbA018rIh2DFzY1nZGBLGkE/nHX1JRDLm ueT2YxeNNOuTIEX53Vb3AsKEzvdehYRwfC52to208XMVDeXPKVoasntEwTaqkbAG1dlOV/ ZfXY2JT7i2U8eq35HzrV3PquFtMkj0NYgG1Oty4L++t5Fl99KGlSqHkO4V3RherGhZU6uU QhDuxfaSLfJazvU7N8TDjTyCbVGKbWNPUuwlOU5lWPfHQrIjP/QgLbozPuUgtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336813; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vwBrvTdMe0qk3AAVb0cPfHu10B55QN5H/f5cCSUNJh8=; b=XRXA5b1lVkfGBQ1PYz5bnlmjqVBU5Bm3NzoJZpOE/nkp2k3LajxbDTxUkKoX9lbNbeY8p0 SVGAj7on9SO9axPnyuQZuRAH99uAOWBQfvCCPMBAZ2hdLNwXWjuwAsbjnm0IrWHm5SFULR C5Gr5AIsJaZCvZ6C+Q4IRsIxZJ4jwHnMl5WKI18vzU7r8KYAxO9/ATAQn0jo6wNHU2XfBw Al6w8heY5s5/vB8E1v3j3GIT9P3g4glc4qMj6VzqxnlYPeMlcBiXJHCD2xFZ1OFJtNVdjR 6teKJ7UecsdFzTTLQM3sAdQOgheMXqAXerKIEoGzOZ1U4iXPODV50k/2MCsfmA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336813; a=rsa-sha256; cv=none; b=ZHHHfRZ/fwCopm462DAUhnJX1mgPdLvawKhAGbZ8auScxeuH/LCQoZcrj9pQjFq+Da5F8C 7GOq4x9GVO98b8v6GGim+asV/PD+cujVMGTevXuY91/MIO/iWQpqOyifchnX8YM0Dq9njd zs6y/uOtBrZFKtg5eTjkJYu3OH4KYeJvcYjnAoW/cM7fN0CDIdyyiQ+sRVBX1myn5Al8/N ZvnapCqYdMFAhAwWbyJQmn2FFYxzYSpJEwHbeyo3zMGCvzMfCrQWshczMa9987V4l2RyRj NI7yKvonAZffHP5ePQAJmXammd76zcQycJXCHpnD2y0cfUHuEX9w+q2qGBX4hw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBP59QPz13BD; Mon, 04 Aug 2025 19:46:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkrfH099244; Mon, 4 Aug 2025 19:46:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkrwo099240; Mon, 4 Aug 2025 19:46:53 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:53 GMT Message-Id: <202508041946.574Jkrwo099240@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 5b0f19262952 - main - ctld: Convert struct portal to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5b0f19262952e7d39fe9a94a0e21c739275e643b Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=5b0f19262952e7d39fe9a94a0e21c739275e643b commit 5b0f19262952e7d39fe9a94a0e21c739275e643b Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct portal to a C++ class - Convert portal_init_socket and portal_reuse_socket into class methods. Move the logic to handle proxy portal setup into the init_socket method so that some fields can remain private. - Add accessors for a few other members (most are const) so that all the fields can be private. - Use std::string, freebsd::addrinfo_up, and freebsd::fd_up classes to manage fields owned exclusively. - Add a vector of proxy portal pointers to struct conf and use the index into the vector as the portal ID. This replaces an O(n^2) loop to find the portal for a portal ID returned by kernel_accept with a direct lookup. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 248 +++++++++++++++++++-------------------------- usr.sbin/ctld/ctld.hh | 41 +++++--- usr.sbin/ctld/discovery.cc | 11 +- usr.sbin/ctld/kernel.cc | 9 +- usr.sbin/ctld/login.cc | 11 +- 5 files changed, 146 insertions(+), 174 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 2c385baa8c5a..bb35d5ad68de 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -139,6 +139,23 @@ conf_delete(struct conf *conf) delete conf; } +#ifdef ICL_KERNEL_PROXY +int +conf::add_proxy_portal(portal *portal) +{ + conf_proxy_portals.push_back(portal); + return (conf_proxy_portals.size() - 1); +} + +portal * +conf::proxy_portal(int id) +{ + if (id >= conf_proxy_portals.size()) + return (nullptr); + return (conf_proxy_portals[id]); +} +#endif + bool auth_group::set_type(const char *str) { @@ -424,31 +441,6 @@ auth_group_find(const struct conf *conf, const char *name) return (it->second); } -static struct portal * -portal_new(struct portal_group *pg) -{ - struct portal *portal; - - portal = reinterpret_cast(calloc(1, sizeof(*portal))); - if (portal == NULL) - log_err(1, "calloc"); - TAILQ_INIT(&portal->p_targets); - portal->p_portal_group = pg; - TAILQ_INSERT_TAIL(&pg->pg_portals, portal, p_next); - return (portal); -} - -static void -portal_delete(struct portal *portal) -{ - - TAILQ_REMOVE(&portal->p_portal_group->pg_portals, portal, p_next); - if (portal->p_ai != NULL) - freeaddrinfo(portal->p_ai); - free(portal->p_listen); - free(portal); -} - struct portal_group * portal_group_new(struct conf *conf, const char *name) { @@ -463,7 +455,6 @@ portal_group_new(struct conf *conf, const char *name) pg = new portal_group(); pg->pg_name = checked_strdup(name); pg->pg_options = nvlist_create(0); - TAILQ_INIT(&pg->pg_portals); TAILQ_INIT(&pg->pg_ports); pg->pg_conf = conf; pg->pg_tag = 0; /* Assigned later in conf_apply(). */ @@ -477,15 +468,12 @@ portal_group_new(struct conf *conf, const char *name) void portal_group_delete(struct portal_group *pg) { - struct portal *portal, *tmp; struct port *port, *tport; TAILQ_FOREACH_SAFE(port, &pg->pg_ports, p_pgs, tport) port_delete(port); TAILQ_REMOVE(&pg->pg_conf->conf_portal_groups, pg, pg_next); - TAILQ_FOREACH_SAFE(portal, &pg->pg_portals, p_next, tmp) - portal_delete(portal); nvlist_destroy(pg->pg_options); free(pg->pg_name); free(pg->pg_offload); @@ -557,16 +545,9 @@ parse_addr_port(const char *address, const char *def_port) bool portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) { - struct portal *portal; - - portal = portal_new(pg); - portal->p_listen = checked_strdup(value); - portal->p_iser = iser; - - freebsd::addrinfo_up ai = parse_addr_port(portal->p_listen, "3260"); + freebsd::addrinfo_up ai = parse_addr_port(value, "3260"); if (!ai) { - log_warnx("invalid listen address %s", portal->p_listen); - portal_delete(portal); + log_warnx("invalid listen address %s", value); return (false); } @@ -575,7 +556,8 @@ portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) * those into multiple portals. */ - portal->p_ai = ai.release(); + pg->pg_portals.emplace_back(std::make_unique(pg, value, iser, + std::move(ai))); return (true); } @@ -642,7 +624,6 @@ isns_do_register(struct isns *isns, int s, const char *hostname) { struct conf *conf = isns->i_conf; struct target *target; - struct portal *portal; struct portal_group *pg; struct port *port; uint32_t error; @@ -656,9 +637,9 @@ isns_do_register(struct isns *isns, int s, const char *hostname) TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { if (pg->pg_unassigned) continue; - TAILQ_FOREACH(portal, &pg->pg_portals, p_next) { - req.add_addr(16, portal->p_ai); - req.add_port(17, portal->p_ai); + for (const portal_up &portal : pg->pg_portals) { + req.add_addr(16, portal->ai()); + req.add_port(17, portal->ai()); } } TAILQ_FOREACH(target, &conf->conf_targets, t_next) { @@ -670,9 +651,9 @@ isns_do_register(struct isns *isns, int s, const char *hostname) if ((pg = port->p_portal_group) == NULL) continue; req.add_32(51, pg->pg_tag); - TAILQ_FOREACH(portal, &pg->pg_portals, p_next) { - req.add_addr(49, portal->p_ai); - req.add_port(50, portal->p_ai); + for (const portal_up &portal : pg->pg_portals) { + req.add_addr(49, portal->ai()); + req.add_port(50, portal->ai()); } } } @@ -1013,7 +994,7 @@ port_is_dummy(struct port *port) if (port->p_portal_group) { if (port->p_portal_group->pg_foreign) return (true); - if (TAILQ_EMPTY(&port->p_portal_group->pg_portals)) + if (port->p_portal_group->pg_portals.empty()) return (true); } return (false); @@ -1363,124 +1344,126 @@ conf_verify(struct conf *conf) return (true); } -static bool -portal_reuse_socket(struct portal *oldp, struct portal *newp) +bool +portal::reuse_socket(struct portal &oldp) { struct kevent kev; - if (strcmp(newp->p_listen, oldp->p_listen) != 0) + if (p_listen != oldp.p_listen) return (false); - if (oldp->p_socket <= 0) + if (!oldp.p_socket) return (false); - EV_SET(&kev, oldp->p_socket, EVFILT_READ, EV_ADD, 0, 0, newp); + EV_SET(&kev, oldp.p_socket, EVFILT_READ, EV_ADD, 0, 0, this); if (kevent(kqfd, &kev, 1, NULL, 0, NULL) == -1) return (false); - newp->p_socket = oldp->p_socket; - oldp->p_socket = 0; + p_socket = std::move(oldp.p_socket); return (true); } -static bool -portal_init_socket(struct portal *p) +bool +portal::init_socket() { - struct portal_group *pg = p->p_portal_group; + struct portal_group *pg = portal_group(); struct kevent kev; + freebsd::fd_up s; int error, sockbuf; int one = 1; - log_debugx("listening on %s, portal-group \"%s\"", - p->p_listen, pg->pg_name); - p->p_socket = socket(p->p_ai->ai_family, p->p_ai->ai_socktype, - p->p_ai->ai_protocol); - if (p->p_socket < 0) { - log_warn("socket(2) failed for %s", - p->p_listen); +#ifdef ICL_KERNEL_PROXY + if (proxy_mode) { + int id = pg->pg_conf->add_proxy_portal(this); + log_debugx("listening on %s, portal-group \"%s\", " + "portal id %d, using ICL proxy", listen(), pg->pg_name, + id); + kernel_listen(ai(), p_iser, id); + return (true); + } +#endif + assert(proxy_mode == false); + assert(p_iser == false); + + log_debugx("listening on %s, portal-group \"%s\"", listen(), + pg->pg_name); + s = ::socket(p_ai->ai_family, p_ai->ai_socktype, p_ai->ai_protocol); + if (!s) { + log_warn("socket(2) failed for %s", listen()); return (false); } sockbuf = SOCKBUF_SIZE; - if (setsockopt(p->p_socket, SOL_SOCKET, SO_RCVBUF, &sockbuf, + if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, &sockbuf, sizeof(sockbuf)) == -1) - log_warn("setsockopt(SO_RCVBUF) failed for %s", - p->p_listen); + log_warn("setsockopt(SO_RCVBUF) failed for %s", listen()); sockbuf = SOCKBUF_SIZE; - if (setsockopt(p->p_socket, SOL_SOCKET, SO_SNDBUF, &sockbuf, + if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &sockbuf, sizeof(sockbuf)) == -1) - log_warn("setsockopt(SO_SNDBUF) failed for %s", p->p_listen); - if (setsockopt(p->p_socket, SOL_SOCKET, SO_NO_DDP, &one, + log_warn("setsockopt(SO_SNDBUF) failed for %s", listen()); + if (setsockopt(s, SOL_SOCKET, SO_NO_DDP, &one, sizeof(one)) == -1) - log_warn("setsockopt(SO_NO_DDP) failed for %s", p->p_listen); - error = setsockopt(p->p_socket, SOL_SOCKET, SO_REUSEADDR, &one, + log_warn("setsockopt(SO_NO_DDP) failed for %s", listen()); + error = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); if (error != 0) { - log_warn("setsockopt(SO_REUSEADDR) failed for %s", p->p_listen); - close(p->p_socket); - p->p_socket = 0; + log_warn("setsockopt(SO_REUSEADDR) failed for %s", listen()); return (false); } if (pg->pg_dscp != -1) { /* Only allow the 6-bit DSCP field to be modified */ int tos = pg->pg_dscp << 2; - switch (p->p_ai->ai_family) { + switch (p_ai->ai_family) { case AF_INET: - if (setsockopt(p->p_socket, IPPROTO_IP, IP_TOS, + if (setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) == -1) log_warn("setsockopt(IP_TOS) failed for %s", - p->p_listen); + listen()); break; case AF_INET6: - if (setsockopt(p->p_socket, IPPROTO_IPV6, IPV6_TCLASS, + if (setsockopt(s, IPPROTO_IPV6, IPV6_TCLASS, &tos, sizeof(tos)) == -1) log_warn("setsockopt(IPV6_TCLASS) failed for %s", - p->p_listen); + listen()); break; } } if (pg->pg_pcp != -1) { int pcp = pg->pg_pcp; - switch (p->p_ai->ai_family) { + switch (p_ai->ai_family) { case AF_INET: - if (setsockopt(p->p_socket, IPPROTO_IP, IP_VLAN_PCP, + if (setsockopt(s, IPPROTO_IP, IP_VLAN_PCP, &pcp, sizeof(pcp)) == -1) log_warn("setsockopt(IP_VLAN_PCP) failed for %s", - p->p_listen); + listen()); break; case AF_INET6: - if (setsockopt(p->p_socket, IPPROTO_IPV6, IPV6_VLAN_PCP, + if (setsockopt(s, IPPROTO_IPV6, IPV6_VLAN_PCP, &pcp, sizeof(pcp)) == -1) log_warn("setsockopt(IPV6_VLAN_PCP) failed for %s", - p->p_listen); + listen()); break; } } - error = bind(p->p_socket, p->p_ai->ai_addr, - p->p_ai->ai_addrlen); + error = bind(s, p_ai->ai_addr, p_ai->ai_addrlen); if (error != 0) { - log_warn("bind(2) failed for %s", p->p_listen); - close(p->p_socket); - p->p_socket = 0; + log_warn("bind(2) failed for %s", listen()); return (false); } - error = listen(p->p_socket, -1); + error = ::listen(s, -1); if (error != 0) { - log_warn("listen(2) failed for %s", p->p_listen); - close(p->p_socket); - p->p_socket = 0; + log_warn("listen(2) failed for %s", listen()); return (false); } - EV_SET(&kev, p->p_socket, EVFILT_READ, EV_ADD, 0, 0, p); + EV_SET(&kev, s, EVFILT_READ, EV_ADD, 0, 0, this); error = kevent(kqfd, &kev, 1, NULL, 0, NULL); if (error == -1) { - log_warn("kevent(2) failed to register for %s", p->p_listen); - close(p->p_socket); - p->p_socket = 0; + log_warn("kevent(2) failed to register for %s", listen()); return (false); } + p_socket = std::move(s); return (true); } @@ -1489,7 +1472,6 @@ conf_apply(struct conf *oldconf, struct conf *newconf) { struct lun *oldlun, *newlun, *tmplun; struct portal_group *oldpg, *newpg; - struct portal *oldp, *newp; struct port *oldport, *newport, *tmpport; struct isns *oldns, *newns; int changed, cumulated_error = 0, error; @@ -1716,7 +1698,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) newpg->pg_name); continue; } - TAILQ_FOREACH(newp, &newpg->pg_portals, p_next) { + for (portal_up &newp : newpg->pg_portals) { /* * Try to find already open portal and reuse * the listening socket. We don't care about @@ -1725,39 +1707,18 @@ conf_apply(struct conf *oldconf, struct conf *newconf) */ TAILQ_FOREACH(oldpg, &oldconf->conf_portal_groups, pg_next) { - TAILQ_FOREACH(oldp, &oldpg->pg_portals, - p_next) { - if (portal_reuse_socket(oldp, newp)) + for (portal_up &oldp : oldpg->pg_portals) { + if (newp->reuse_socket(*oldp)) goto reused; } } - reused: - if (newp->p_socket > 0) { - /* - * We're done with this portal. - */ - continue; - } -#ifdef ICL_KERNEL_PROXY - if (proxy_mode) { - newpg->pg_conf->conf_portal_id++; - newp->p_id = newpg->pg_conf->conf_portal_id; - log_debugx("listening on %s, portal-group " - "\"%s\", portal id %d, using ICL proxy", - newp->p_listen, newpg->pg_name, newp->p_id); - kernel_listen(newp->p_ai, newp->p_iser, - newp->p_id); - continue; - } -#endif - assert(proxy_mode == false); - assert(newp->p_iser == false); - - if (!portal_init_socket(newp)) { + if (!newp->init_socket()) { cumulated_error++; continue; } + reused: + ; } } @@ -1765,13 +1726,12 @@ conf_apply(struct conf *oldconf, struct conf *newconf) * Go through the no longer used sockets, closing them. */ TAILQ_FOREACH(oldpg, &oldconf->conf_portal_groups, pg_next) { - TAILQ_FOREACH(oldp, &oldpg->pg_portals, p_next) { - if (oldp->p_socket <= 0) + for (portal_up &oldp : oldpg->pg_portals) { + if (oldp->socket() < 0) continue; log_debugx("closing socket for %s, portal-group \"%s\"", - oldp->p_listen, oldpg->pg_name); - close(oldp->p_socket); - oldp->p_socket = 0; + oldp->listen(), oldpg->pg_name); + oldp->close(); } } @@ -1903,12 +1863,14 @@ handle_connection(struct portal *portal, int fd, const struct sockaddr *client_sa, bool dont_fork) { struct ctld_connection *conn; + struct portal_group *pg; int error; pid_t pid; char host[NI_MAXHOST + 1]; struct conf *conf; - conf = portal->p_portal_group->pg_conf; + pg = portal->portal_group(); + conf = pg->pg_conf; if (dont_fork) { log_debugx("incoming connection; not forking due to -d flag"); @@ -1941,7 +1903,7 @@ handle_connection(struct portal *portal, int fd, log_errx(1, "getnameinfo: %s", gai_strerror(error)); log_debugx("accepted connection from %s; portal group \"%s\"", - host, portal->p_portal_group->pg_name); + host, pg->pg_name); log_set_peer_addr(host); setproctitle("%s", host); @@ -1986,18 +1948,12 @@ main_loop(bool dont_fork) log_debugx("incoming connection, id %d, portal id %d", connection_id, portal_id); - TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { - TAILQ_FOREACH(portal, &pg->pg_portals, p_next) { - if (portal->p_id == portal_id) { - goto found; - } - } - } - - log_errx(1, "kernel returned invalid portal_id %d", - portal_id); + portal = conf->proxy_portal(portal_id); + if (portal == nullptr) + log_errx(1, + "kernel returned invalid portal_id %d", + portal_id); -found: handle_connection(portal, connection_id, (struct sockaddr *)&client_sa, dont_fork); } else { @@ -2014,10 +1970,10 @@ found: switch (kev.filter) { case EVFILT_READ: portal = reinterpret_cast(kev.udata); - assert(portal->p_socket == (int)kev.ident); + assert(portal->socket() == (int)kev.ident); client_salen = sizeof(client_sa); - client_fd = accept(portal->p_socket, + client_fd = accept(portal->socket(), (struct sockaddr *)&client_sa, &client_salen); if (client_fd < 0) { diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 585e5d24663d..ea7f41f707b9 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -47,6 +47,7 @@ #include #include #include +#include #define DEFAULT_CONFIG_PATH "/etc/ctl.conf" #define DEFAULT_PIDFILE "/var/run/ctld.pid" @@ -126,19 +127,31 @@ private: using auth_group_sp = std::shared_ptr; struct portal { - TAILQ_ENTRY(portal) p_next; + portal(struct portal_group *pg, std::string_view listen, bool iser, + freebsd::addrinfo_up ai) : + p_portal_group(pg), p_listen(listen), p_ai(std::move(ai)), + p_iser(iser) {} + + bool reuse_socket(portal &oldp); + bool init_socket(); + + portal_group *portal_group() { return p_portal_group; } + const char *listen() const { return p_listen.c_str(); } + const addrinfo *ai() const { return p_ai.get(); } + int socket() const { return p_socket; } + void close() { p_socket.reset(); } + +private: struct portal_group *p_portal_group; + std::string p_listen; + freebsd::addrinfo_up p_ai; bool p_iser; - char *p_listen; - struct addrinfo *p_ai; -#ifdef ICL_KERNEL_PROXY - int p_id; -#endif - TAILQ_HEAD(, target) p_targets; - int p_socket; + freebsd::fd_up p_socket; }; +using portal_up = std::unique_ptr; + #define PG_FILTER_UNKNOWN 0 #define PG_FILTER_NONE 1 #define PG_FILTER_PORTAL 2 @@ -154,7 +167,7 @@ struct portal_group { int pg_discovery_filter = PG_FILTER_UNKNOWN; bool pg_foreign = false; bool pg_unassigned = false; - TAILQ_HEAD(, portal) pg_portals; + std::list pg_portals; TAILQ_HEAD(, port) pg_ports; char *pg_offload = nullptr; char *pg_redirection = nullptr; @@ -244,14 +257,18 @@ struct conf { int conf_timeout; int conf_maxproc; -#ifdef ICL_KERNEL_PROXY - int conf_portal_id = 0; -#endif struct pidfh *conf_pidfh = nullptr; bool conf_default_pg_defined = false; bool conf_default_ag_defined = false; bool conf_kernel_port_on = false; + +#ifdef ICL_KERNEL_PROXY + int add_proxy_portal(portal *); + portal *proxy_portal(int); +private: + std::vector conf_proxy_portals; +#endif }; /* Physical ports exposed by the kernel */ diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index 5ef8a7e7027b..59bdadb29eb2 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -102,18 +102,17 @@ static void discovery_add_target(struct keys *response_keys, const struct target *targ) { struct port *port; - struct portal *portal; char *buf; char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; - struct addrinfo *ai; + const struct addrinfo *ai; int ret; keys_add(response_keys, "TargetName", targ->t_name); TAILQ_FOREACH(port, &targ->t_ports, p_ts) { if (port->p_portal_group == NULL) continue; - TAILQ_FOREACH(portal, &port->p_portal_group->pg_portals, p_next) { - ai = portal->p_ai; + for (portal_up &portal : port->p_portal_group->pg_portals) { + ai = portal->ai(); ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV); @@ -159,7 +158,7 @@ discovery_target_filtered_out(const struct ctld_connection *conn, ag = port->p_auth_group.get(); if (ag == nullptr) ag = targ->t_auth_group.get(); - pg = conn->conn_portal->p_portal_group; + pg = conn->conn_portal->portal_group(); assert(pg->pg_discovery_filter != PG_FILTER_UNKNOWN); @@ -217,7 +216,7 @@ discovery(struct ctld_connection *conn) const struct portal_group *pg; const char *send_targets; - pg = conn->conn_portal->p_portal_group; + pg = conn->conn_portal->portal_group(); log_debugx("beginning discovery session; waiting for TextRequest PDU"); request_keys = text_read_request(&conn->conn, &request); diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index fbe6d9a2f22a..5a9a9f3c991f 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -841,6 +841,7 @@ kernel_lun_remove(struct lun *lun) void kernel_handoff(struct ctld_connection *conn) { + struct portal_group *pg = conn->conn_portal->portal_group(); struct ctl_iscsi req; bzero(&req, sizeof(req)); @@ -858,9 +859,8 @@ kernel_handoff(struct ctld_connection *conn) sizeof(req.data.handoff.initiator_isid)); strlcpy(req.data.handoff.target_name, conn->conn_target->t_name, sizeof(req.data.handoff.target_name)); - if (conn->conn_portal->p_portal_group->pg_offload != NULL) { - strlcpy(req.data.handoff.offload, - conn->conn_portal->p_portal_group->pg_offload, + if (pg->pg_offload != NULL) { + strlcpy(req.data.handoff.offload, pg->pg_offload, sizeof(req.data.handoff.offload)); } #ifdef ICL_KERNEL_PROXY @@ -871,8 +871,7 @@ kernel_handoff(struct ctld_connection *conn) #else req.data.handoff.socket = conn->conn.conn_socket; #endif - req.data.handoff.portal_group_tag = - conn->conn_portal->p_portal_group->pg_tag; + req.data.handoff.portal_group_tag = pg->pg_tag; if (conn->conn.conn_header_digest == CONN_DIGEST_CRC32C) req.data.handoff.header_digest = CTL_ISCSI_DIGEST_CRC32C; if (conn->conn.conn_data_digest == CONN_DIGEST_CRC32C) diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index 221a7af56cc6..416c867df08d 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -703,7 +703,7 @@ login_portal_redirect(struct ctld_connection *conn, struct pdu *request) { const struct portal_group *pg; - pg = conn->conn_portal->p_portal_group; + pg = conn->conn_portal->portal_group(); if (pg->pg_redirection == NULL) return (false); @@ -719,7 +719,7 @@ login_target_redirect(struct ctld_connection *conn, struct pdu *request) { const char *target_address; - assert(conn->conn_portal->p_portal_group->pg_redirection == NULL); + assert(conn->conn_portal->portal_group()->pg_redirection == NULL); if (conn->conn_target == NULL) return (false); @@ -738,6 +738,7 @@ login_target_redirect(struct ctld_connection *conn, struct pdu *request) static void login_negotiate(struct ctld_connection *conn, struct pdu *request) { + struct portal_group *pg = conn->conn_portal->portal_group(); struct pdu *response; struct iscsi_bhs_login_response *bhslr2; struct keys *request_keys, *response_keys; @@ -754,7 +755,7 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) conn->conn_max_send_data_segment_limit = (1 << 24) - 1; conn->conn_max_burst_limit = (1 << 24) - 1; conn->conn_first_burst_limit = (1 << 24) - 1; - kernel_limits(conn->conn_portal->p_portal_group->pg_offload, + kernel_limits(pg->pg_offload, conn->conn.conn_socket, &conn->conn_max_recv_data_segment_limit, &conn->conn_max_send_data_segment_limit, @@ -826,7 +827,7 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) keys_add(response_keys, "TargetAlias", conn->conn_target->t_alias); keys_add_int(response_keys, "TargetPortalGroupTag", - conn->conn_portal->p_portal_group->pg_tag); + pg->pg_tag); } for (i = 0; i < KEYS_MAX; i++) { @@ -916,7 +917,7 @@ login(struct ctld_connection *conn) log_errx(1, "received Login PDU with non-zero TSIH"); } - pg = conn->conn_portal->p_portal_group; + pg = conn->conn_portal->portal_group(); memcpy(conn->conn_initiator_isid, bhslr->bhslr_isid, sizeof(conn->conn_initiator_isid)); From nobody Mon Aug 4 19:46:56 2025 X-Original-To: dev-commits-src-main@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 4bwnBT5DXrz63RJp; Mon, 04 Aug 2025 19:46:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBT1sR9z4Kr0; Mon, 04 Aug 2025 19:46:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336817; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pNkYMEMTIlmMLT/pYSonUP47hyvu6m6oOfdL2EJjHaA=; b=F8mcOBAOsIKmTFHYsN7rCdDINUDPTVBLQA+L3Kt3iApXPUL8vCZO1GHIjQIoc3Tu95/lcN es98nJ3aTuC8CT9XySANiYelyGQXO0DY8SdahD8X/+KJKGErO8+MAe9UHdMieSxWSXjSza DtuRWAnf+BSkvNbf+q8nO9o2H7WDsyWZcJQPkE0QIEE4iOQUnYqI9tmghw4r6Am/uNT3X4 Ek8+lBrukZiUoOE8/Imrwtey2Z6+LLsZvWUDSh0PsDGg9OlWk7YBzF8ZuotBCtOcrpQ8D0 lJbeI9K99plE+nHdAqdGrDU8IaUxSJhDAGW6kM5SIPtem0PD8enwPFQA5y9UiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336817; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pNkYMEMTIlmMLT/pYSonUP47hyvu6m6oOfdL2EJjHaA=; b=MXAiAAZbHkCu/BSgDe5k1GPKKP7jQ/fsPLu1uIely4xpeynOjd4W5Pz7gvM7tgHJW10Q58 aPk5RB6Vg2ITf567CaliRRSy70L9zB3ShI4tf8se5aBIcnvhnhVTeTAZ/A/OB5vzH/V8CC NqvjJdPWeKMj8xn943WgUN/p5bJfqks9fmeSQ06Z0nGq/u9DDq1Zsd4I9BoEbEgAg05mw5 jGLZ0MN0hTON5eT5AIMwmwXRdMfRc99PNHWOEWHdumVUkqa8stXxs2uJn4HqQjjQ4aT9dP GYu+ZavsPS4zp/eJof7FJmFhSqSYlGzOGR/he2+9VVp2xbdNhEWweGcaHVQEAw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336817; a=rsa-sha256; cv=none; b=WTNpRsULUa8VWAOZvqcQ8aAasY8zCD4CQxwbf1/c7SlFBS8eGtIpUYRxSieSF/JyZpxHad kFvNVM83feVdo8ezgOe60434LMPC+2X3BCGhlA7wg/qiiIPnsvjOsXls0IOQq9XlM7nIZV C9kYggRJpyTVRDRUCxTAHzrZqdn52J8Cn0pt+uCIQ2hvKU4JiMMs7IutoTQkeLBV6IXFH9 s36w/lMYKJOnpeXtog18DYhMBaU19s0zPRu/cLOnpCI23MWVAZIFrQIlQ9k3LkbjuaHla6 YlgIEVvki5oKTxZVwDJXdVhJjsAVjXHICcnKNnrHLbWpl73inqjPi89VAA/0Tw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBT0Hjdz12nM; Mon, 04 Aug 2025 19:46:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkvpu099356; Mon, 4 Aug 2025 19:46:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkuof099353; Mon, 4 Aug 2025 19:46:56 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:56 GMT Message-Id: <202508041946.574Jkuof099353@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 6acc7afa34aa - main - ctld: Convert struct port to a hierarchy of C++ classes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6acc7afa34aa5da8d9132e927f2026e594e73701 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6acc7afa34aa5da8d9132e927f2026e594e73701 commit 6acc7afa34aa5da8d9132e927f2026e594e73701 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct port to a hierarchy of C++ classes The existing C struct port was used to describe three types of ports: iSCSI ports associated with a portal_group, ioctl ports, and "physical" ports associated with a kernel device. This change chooses to split these out into separate sub-classes of an abstract port base class. Virtual methods are used in a few places such as sending the class-specific CTL ioctls for creating and removing CTL kernel ports. For ownership purposes, a struct conf instance "owns" each port via a std::unique_ptr<> in a std::unordered_map<> indexed by name. Other objects such as targets and portal_groups can also contain collections of ports (targets hold a std::list of pointers, portal groups hold a std::unordered_map<> indexed by target names). One not-so-straightforward case is that if a new port fails to register, it is removed from the configuration. In that case, these other references also have to be removed explicitly. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 5 +- usr.sbin/ctld/ctld.cc | 332 ++++++++++++++++++++----------------------- usr.sbin/ctld/ctld.hh | 112 ++++++++++----- usr.sbin/ctld/discovery.cc | 24 ++-- usr.sbin/ctld/kernel.cc | 342 ++++++++++++++++++++++++--------------------- usr.sbin/ctld/login.cc | 6 +- 6 files changed, 435 insertions(+), 386 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index a30bf72c0469..2bf7b99409de 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -571,7 +571,6 @@ target_add_portal_group(const char *pg_name, const char *ag_name) { struct portal_group *pg; auth_group_sp ag; - struct port *p; pg = portal_group_find(conf, pg_name); if (pg == NULL) { @@ -589,13 +588,11 @@ target_add_portal_group(const char *pg_name, const char *ag_name) } } - p = port_new(conf, target, pg); - if (p == NULL) { + if (!port_new(conf, target, pg, std::move(ag))) { log_warnx("can't link portal-group \"%s\" to target \"%s\"", pg_name, target->t_name); return (false); } - p->p_auth_group = std::move(ag); return (true); } diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 07592a07c019..e8770cb9315d 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -103,7 +103,6 @@ conf_new(void) conf = new struct conf(); TAILQ_INIT(&conf->conf_luns); TAILQ_INIT(&conf->conf_targets); - TAILQ_INIT(&conf->conf_ports); TAILQ_INIT(&conf->conf_portal_groups); TAILQ_INIT(&conf->conf_isns); @@ -134,7 +133,6 @@ conf_delete(struct conf *conf) portal_group_delete(pg); TAILQ_FOREACH_SAFE(is, &conf->conf_isns, i_next, istmp) isns_delete(is); - assert(TAILQ_EMPTY(&conf->conf_ports)); free(conf->conf_pidfile_path); delete conf; } @@ -455,7 +453,6 @@ portal_group_new(struct conf *conf, const char *name) pg = new portal_group(); pg->pg_name = checked_strdup(name); pg->pg_options = nvlist_create(0); - TAILQ_INIT(&pg->pg_ports); pg->pg_conf = conf; pg->pg_tag = 0; /* Assigned later in conf_apply(). */ pg->pg_dscp = -1; @@ -468,10 +465,6 @@ portal_group_new(struct conf *conf, const char *name) void portal_group_delete(struct portal_group *pg) { - struct port *port, *tport; - - TAILQ_FOREACH_SAFE(port, &pg->pg_ports, p_pgs, tport) - port_delete(port); TAILQ_REMOVE(&pg->pg_conf->conf_portal_groups, pg, pg_next); nvlist_destroy(pg->pg_options); @@ -625,7 +618,6 @@ isns_do_register(struct isns *isns, int s, const char *hostname) struct conf *conf = isns->i_conf; struct target *target; struct portal_group *pg; - struct port *port; uint32_t error; isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT); @@ -647,8 +639,9 @@ isns_do_register(struct isns *isns, int s, const char *hostname) req.add_32(33, 1); /* 1 -- Target*/ if (target->t_alias != NULL) req.add_str(34, target->t_alias); - TAILQ_FOREACH(port, &target->t_ports, p_ts) { - if ((pg = port->p_portal_group) == NULL) + for (const port *port : target->t_ports) { + pg = port->portal_group(); + if (pg == nullptr) continue; req.add_32(51, pg->pg_tag); for (const portal_up &portal : pg->pg_portals) { @@ -801,12 +794,6 @@ isns_deregister(struct isns *isns) set_timeout(0, false); } -pport::~pport() -{ - if (pp_port != nullptr) - port_delete(pp_port); -} - bool kports::add_port(const char *name, uint32_t ctl_port) { @@ -834,151 +821,129 @@ kports::find_port(std::string_view name) return (&it->second); } -struct port * -port_new(struct conf *conf, struct target *target, struct portal_group *pg) -{ - struct port *port; - char *name; - int ret; - - ret = asprintf(&name, "%s-%s", pg->pg_name, target->t_name); - if (ret <= 0) - log_err(1, "asprintf"); - if (port_find(conf, name) != NULL) { - log_warnx("duplicate port \"%s\"", name); - free(name); - return (NULL); - } - port = new struct port(); - port->p_conf = conf; - port->p_name = name; - TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); - TAILQ_INSERT_TAIL(&target->t_ports, port, p_ts); - port->p_target = target; - TAILQ_INSERT_TAIL(&pg->pg_ports, port, p_pgs); - port->p_portal_group = pg; - return (port); +port::port(struct target *target) : + p_target(target) +{ + target->t_ports.push_back(this); } -struct port * -port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, - int pp, int vp) +void +port::clear_references() { - struct pport *pport; - struct port *port; - char *pname; - char *name; - int ret; - - ret = asprintf(&pname, "ioctl/%d/%d", pp, vp); - if (ret <= 0) { - log_err(1, "asprintf"); - return (NULL); - } - - pport = kports.find_port(pname); - if (pport != NULL) { - free(pname); - return (port_new_pp(conf, target, pport)); - } - - ret = asprintf(&name, "%s-%s", pname, target->t_name); - free(pname); + p_target->t_ports.remove(this); +} - if (ret <= 0) - log_err(1, "asprintf"); - if (port_find(conf, name) != NULL) { - log_warnx("duplicate port \"%s\"", name); - free(name); - return (NULL); - } - port = new struct port(); - port->p_conf = conf; - port->p_name = name; - port->p_ioctl_port = true; - port->p_ioctl_pp = pp; - port->p_ioctl_vp = vp; - TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); - TAILQ_INSERT_TAIL(&target->t_ports, port, p_ts); - port->p_target = target; - return (port); +portal_group_port::portal_group_port(struct target *target, + struct portal_group *pg, auth_group_sp ag) : + port(target), p_auth_group(ag), p_portal_group(pg) +{ + pg->pg_ports.emplace(target->t_name, this); } -struct port * -port_new_pp(struct conf *conf, struct target *target, struct pport *pp) +portal_group_port::portal_group_port(struct target *target, + struct portal_group *pg, uint32_t ctl_port) : + port(target), p_portal_group(pg) { - struct port *port; - char *name; - int ret; + p_ctl_port = ctl_port; + pg->pg_ports.emplace(target->t_name, this); +} - ret = asprintf(&name, "%s-%s", pp->name(), target->t_name); - if (ret <= 0) - log_err(1, "asprintf"); - if (port_find(conf, name) != NULL) { - log_warnx("duplicate port \"%s\"", name); - free(name); - return (NULL); - } - port = new struct port(); - port->p_conf = conf; - port->p_name = name; - TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); - TAILQ_INSERT_TAIL(&target->t_ports, port, p_ts); - port->p_target = target; - pp->link(port); - return (port); +bool +portal_group_port::is_dummy() const +{ + if (p_portal_group->pg_foreign) + return (true); + if (p_portal_group->pg_portals.empty()) + return (true); + return (false); } -struct port * -port_find(const struct conf *conf, const char *name) +void +portal_group_port::clear_references() { - struct port *port; + auto it = p_portal_group->pg_ports.find(p_target->t_name); + p_portal_group->pg_ports.erase(it); + port::clear_references(); +} - TAILQ_FOREACH(port, &conf->conf_ports, p_next) { - if (strcasecmp(port->p_name, name) == 0) - return (port); +bool +port_new(struct conf *conf, struct target *target, struct portal_group *pg, + auth_group_sp ag) +{ + std::string name = freebsd::stringf("%s-%s", pg->pg_name, + target->t_name); + const auto &pair = conf->conf_ports.try_emplace(name, + std::make_unique(target, pg, ag)); + if (!pair.second) { + log_warnx("duplicate port \"%s\"", name.c_str()); + return (false); } - return (NULL); + return (true); } -struct port * -port_find_in_pg(const struct portal_group *pg, const char *target) +bool +port_new(struct conf *conf, struct target *target, struct portal_group *pg, + uint32_t ctl_port) { - struct port *port; - - TAILQ_FOREACH(port, &pg->pg_ports, p_pgs) { - if (strcasecmp(port->p_target->t_name, target) == 0) - return (port); + std::string name = freebsd::stringf("%s-%s", pg->pg_name, + target->t_name); + const auto &pair = conf->conf_ports.try_emplace(name, + std::make_unique(target, pg, ctl_port)); + if (!pair.second) { + log_warnx("duplicate port \"%s\"", name.c_str()); + return (false); } - return (NULL); + return (true); } -void -port_delete(struct port *port) +static bool +port_new_pp(struct conf *conf, struct target *target, struct pport *pp) { + std::string name = freebsd::stringf("%s-%s", pp->name(), + target->t_name); + const auto &pair = conf->conf_ports.try_emplace(name, + std::make_unique(target, pp)); + if (!pair.second) { + log_warnx("duplicate port \"%s\"", name.c_str()); + return (false); + } - if (port->p_portal_group) - TAILQ_REMOVE(&port->p_portal_group->pg_ports, port, p_pgs); - if (port->p_target) - TAILQ_REMOVE(&port->p_target->t_ports, port, p_ts); - TAILQ_REMOVE(&port->p_conf->conf_ports, port, p_next); - free(port->p_name); - free(port); + pp->link(); + return (true); } -bool -port_is_dummy(struct port *port) +static bool +port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, + int pp, int vp) { + struct pport *pport; - if (port->p_portal_group) { - if (port->p_portal_group->pg_foreign) - return (true); - if (port->p_portal_group->pg_portals.empty()) - return (true); + std::string pname = freebsd::stringf("ioctl/%d/%d", pp, vp); + + pport = kports.find_port(pname); + if (pport != NULL) + return (port_new_pp(conf, target, pport)); + + std::string name = pname + "-" + target->t_name; + const auto &pair = conf->conf_ports.try_emplace(name, + std::make_unique(target, pp, vp)); + if (!pair.second) { + log_warnx("duplicate port \"%s\"", name.c_str()); + return (false); } - return (false); + + return (true); +} + +struct port * +port_find_in_pg(const struct portal_group *pg, const char *target) +{ + auto it = pg->pg_ports.find(target); + if (it == pg->pg_ports.end()) + return (nullptr); + return (it->second); } struct target * @@ -1006,7 +971,6 @@ target_new(struct conf *conf, const char *name) targ->t_name[i] = tolower(targ->t_name[i]); targ->t_conf = conf; - TAILQ_INIT(&targ->t_ports); TAILQ_INSERT_TAIL(&conf->conf_targets, targ, t_next); return (targ); @@ -1015,10 +979,6 @@ target_new(struct conf *conf, const char *name) void target_delete(struct target *targ) { - struct port *port, *tport; - - TAILQ_FOREACH_SAFE(port, &targ->t_ports, p_ts, tport) - port_delete(port); TAILQ_REMOVE(&targ->t_conf->conf_targets, targ, t_next); free(targ->t_pport); @@ -1261,10 +1221,10 @@ conf_verify(struct conf *conf) "default"); assert(targ->t_auth_group != NULL); } - if (TAILQ_EMPTY(&targ->t_ports)) { + if (targ->t_ports.empty()) { pg = portal_group_find(conf, "default"); assert(pg != NULL); - port_new(conf, targ, pg); + port_new(conf, targ, pg, nullptr); } found = false; for (i = 0; i < MAX_LUNS; i++) { @@ -1293,14 +1253,14 @@ conf_verify(struct conf *conf) pg->pg_discovery_filter = PG_FILTER_NONE; if (pg->pg_redirection != NULL) { - if (!TAILQ_EMPTY(&pg->pg_ports)) { + if (!pg->pg_ports.empty()) { log_debugx("portal-group \"%s\" assigned " "to target, but configured " "for redirection", pg->pg_name); } pg->pg_unassigned = false; - } else if (!TAILQ_EMPTY(&pg->pg_ports)) { + } else if (!pg->pg_ports.empty()) { pg->pg_unassigned = false; } else { if (strcmp(pg->pg_name, "default") != 0) @@ -1453,7 +1413,6 @@ conf_apply(struct conf *oldconf, struct conf *newconf) { struct lun *oldlun, *newlun, *tmplun; struct portal_group *oldpg, *newpg; - struct port *oldport, *newport, *tmpport; struct isns *oldns, *newns; int changed, cumulated_error = 0, error; @@ -1517,17 +1476,19 @@ conf_apply(struct conf *oldconf, struct conf *newconf) * First, remove any ports present in the old configuration * and missing in the new one. */ - TAILQ_FOREACH_SAFE(oldport, &oldconf->conf_ports, p_next, tmpport) { - if (port_is_dummy(oldport)) + for (const auto &kv : oldconf->conf_ports) { + const std::string &name = kv.first; + port *oldport = kv.second.get(); + + if (oldport->is_dummy()) continue; - newport = port_find(newconf, oldport->p_name); - if (newport != NULL && !port_is_dummy(newport)) + const auto it = newconf->conf_ports.find(name); + if (it != newconf->conf_ports.end() && + !it->second->is_dummy()) continue; - log_debugx("removing port \"%s\"", oldport->p_name); - error = kernel_port_remove(oldport); - if (error != 0) { - log_warnx("failed to remove port %s", - oldport->p_name); + log_debugx("removing port \"%s\"", name.c_str()); + if (!oldport->kernel_remove()) { + log_warnx("failed to remove port %s", name.c_str()); /* * XXX: Uncomment after fixing the root cause. * @@ -1640,30 +1601,46 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Now add new ports or modify existing ones. */ - TAILQ_FOREACH_SAFE(newport, &newconf->conf_ports, p_next, tmpport) { - if (port_is_dummy(newport)) - continue; - oldport = port_find(oldconf, newport->p_name); + for (auto it = newconf->conf_ports.begin(); + it != newconf->conf_ports.end(); ) { + const std::string &name = it->first; + port *newport = it->second.get(); - if (oldport == NULL || port_is_dummy(oldport)) { - log_debugx("adding port \"%s\"", newport->p_name); - error = kernel_port_add(newport); - } else { - log_debugx("updating port \"%s\"", newport->p_name); - newport->p_ctl_port = oldport->p_ctl_port; - error = kernel_port_update(newport, oldport); + if (newport->is_dummy()) { + it++; + continue; } - if (error != 0) { - log_warnx("failed to %s port %s", - (oldport == NULL) ? "add" : "update", - newport->p_name); - if (oldport == NULL || port_is_dummy(oldport)) - port_delete(newport); - /* - * XXX: Uncomment after fixing the root cause. - * - * cumulated_error++; - */ + const auto oldit = oldconf->conf_ports.find(name); + if (oldit == oldconf->conf_ports.end() || + oldit->second->is_dummy()) { + log_debugx("adding port \"%s\"", name.c_str()); + if (!newport->kernel_add()) { + log_warnx("failed to add port %s", + name.c_str()); + + /* + * XXX: Uncomment after fixing the + * root cause. + * + * cumulated_error++; + */ + + /* + * conf "owns" the port, but other + * objects contain pointers to this + * port that must be removed before + * deleting the port. + */ + newport->clear_references(); + it = newconf->conf_ports.erase(it); + } else + it++; + } else { + log_debugx("updating port \"%s\"", name.c_str()); + if (!newport->kernel_update(oldit->second.get())) + log_warnx("failed to update port %s", + name.c_str()); + it++; } } @@ -2134,7 +2111,6 @@ new_pports_from_conf(struct conf *conf, struct kports &kports) { struct target *targ; struct pport *pp; - struct port *tp; int ret, i_pp, i_vp; TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { @@ -2143,8 +2119,7 @@ new_pports_from_conf(struct conf *conf, struct kports &kports) ret = sscanf(targ->t_pport, "ioctl/%d/%d", &i_pp, &i_vp); if (ret > 0) { - tp = port_new_ioctl(conf, kports, targ, i_pp, i_vp); - if (tp == NULL) { + if (!port_new_ioctl(conf, kports, targ, i_pp, i_vp)) { log_warnx("can't create new ioctl port " "for target \"%s\"", targ->t_name); return (false); @@ -2165,8 +2140,7 @@ new_pports_from_conf(struct conf *conf, struct kports &kports) targ->t_pport, targ->t_name); return (false); } - tp = port_new_pp(conf, targ, pp); - if (tp == NULL) { + if (!port_new_pp(conf, targ, pp)) { log_warnx("can't link port \"%s\" to target \"%s\"", targ->t_pport, targ->t_name); return (false); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index ee50acf1f3e8..3d9c30b31977 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -57,6 +57,8 @@ #define MAX_LUNS 1024 #define SOCKBUF_SIZE 1048576 +struct port; + struct auth { auth(std::string_view secret) : a_secret(secret) {} auth(std::string_view secret, std::string_view mutual_user, @@ -168,7 +170,7 @@ struct portal_group { bool pg_foreign = false; bool pg_unassigned = false; std::list pg_portals; - TAILQ_HEAD(, port) pg_ports; + std::unordered_map pg_ports; char *pg_offload = nullptr; char *pg_redirection = nullptr; int pg_dscp; @@ -178,22 +180,79 @@ struct portal_group { }; struct port { - TAILQ_ENTRY(port) p_next; - TAILQ_ENTRY(port) p_pgs; - TAILQ_ENTRY(port) p_ts; - struct conf *p_conf; - char *p_name; - auth_group_sp p_auth_group; - struct portal_group *p_portal_group = nullptr; - struct pport *p_pport = nullptr; + port(struct target *target); + virtual ~port() = default; + + struct target *target() const { return p_target; } + virtual struct auth_group *auth_group() const { return nullptr; } + virtual struct portal_group *portal_group() const { return nullptr; } + + virtual bool is_dummy() const { return true; } + + virtual void clear_references(); + + bool kernel_add(); + bool kernel_update(const port *oport); + bool kernel_remove(); + + virtual bool kernel_create_port() = 0; + virtual bool kernel_remove_port() = 0; + +protected: struct target *p_target; - bool p_ioctl_port = false; - int p_ioctl_pp = 0; - int p_ioctl_vp = 0; uint32_t p_ctl_port = 0; }; +struct portal_group_port final : public port { + portal_group_port(struct target *target, struct portal_group *pg, + auth_group_sp ag); + portal_group_port(struct target *target, struct portal_group *pg, + uint32_t ctl_port); + ~portal_group_port() override = default; + + struct auth_group *auth_group() const override + { return p_auth_group.get(); } + struct portal_group *portal_group() const override + { return p_portal_group; } + + bool is_dummy() const override; + + void clear_references() override; + + bool kernel_create_port() override; + bool kernel_remove_port() override; + +private: + auth_group_sp p_auth_group; + struct portal_group *p_portal_group; +}; + +struct ioctl_port final : public port { + ioctl_port(struct target *target, int pp, int vp) : + port(target), p_ioctl_pp(pp), p_ioctl_vp(vp) {} + ~ioctl_port() override = default; + + bool kernel_create_port() override; + bool kernel_remove_port() override; + +private: + int p_ioctl_pp; + int p_ioctl_vp; +}; + +struct kernel_port final : public port { + kernel_port(struct target *target, struct pport *pp) : + port(target), p_pport(pp) {} + ~kernel_port() override = default; + + bool kernel_create_port() override; + bool kernel_remove_port() override; + +private: + struct pport *p_pport; +}; + struct lun { TAILQ_ENTRY(lun) l_next; struct conf *l_conf; @@ -216,7 +275,7 @@ struct target { struct conf *t_conf; struct lun *t_luns[MAX_LUNS] = {}; auth_group_sp t_auth_group; - TAILQ_HEAD(, port) t_ports; + std::list t_ports; char *t_name; char *t_alias; char *t_redirection; @@ -237,7 +296,7 @@ struct conf { TAILQ_HEAD(, lun) conf_luns; TAILQ_HEAD(, target) conf_targets; std::unordered_map conf_auth_groups; - TAILQ_HEAD(, port) conf_ports; + std::unordered_map> conf_ports; TAILQ_HEAD(, portal_group) conf_portal_groups; TAILQ_HEAD(, isns) conf_isns; int conf_isns_period; @@ -264,19 +323,17 @@ private: struct pport { pport(std::string_view name, uint32_t ctl_port) : pp_name(name), pp_ctl_port(ctl_port) {} - ~pport(); const char *name() const { return pp_name.c_str(); } uint32_t ctl_port() const { return pp_ctl_port; } - bool linked() const { return pp_port != nullptr; } - void link(struct port *port) { pp_port = port; } + bool linked() const { return pp_linked; } + void link() { pp_linked = true; } private: - struct port *pp_port; std::string pp_name; - uint32_t pp_ctl_port; + bool pp_linked; }; struct kports { @@ -341,18 +398,12 @@ void isns_register(struct isns *isns, struct isns *oldisns); void isns_check(struct isns *isns); void isns_deregister(struct isns *isns); -struct port *port_new(struct conf *conf, struct target *target, - struct portal_group *pg); -struct port *port_new_ioctl(struct conf *conf, - struct kports &kports, struct target *target, - int pp, int vp); -struct port *port_new_pp(struct conf *conf, struct target *target, - struct pport *pp); -struct port *port_find(const struct conf *conf, const char *name); +bool port_new(struct conf *conf, struct target *target, + struct portal_group *pg, auth_group_sp ag); +bool port_new(struct conf *conf, struct target *target, + struct portal_group *pg, uint32_t ctl_port); struct port *port_find_in_pg(const struct portal_group *pg, const char *target); -void port_delete(struct port *port); -bool port_is_dummy(struct port *port); struct target *target_new(struct conf *conf, const char *name); void target_delete(struct target *target); @@ -372,9 +423,6 @@ int kernel_lun_add(struct lun *lun); int kernel_lun_modify(struct lun *lun); int kernel_lun_remove(struct lun *lun); void kernel_handoff(struct ctld_connection *conn); -int kernel_port_add(struct port *port); -int kernel_port_update(struct port *port, struct port *old); -int kernel_port_remove(struct port *port); void kernel_capsicate(void); #ifdef ICL_KERNEL_PROXY diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index 59bdadb29eb2..d52d4919ddc5 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -101,17 +101,17 @@ logout_new_response(struct pdu *request) static void discovery_add_target(struct keys *response_keys, const struct target *targ) { - struct port *port; char *buf; char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; const struct addrinfo *ai; int ret; keys_add(response_keys, "TargetName", targ->t_name); - TAILQ_FOREACH(port, &targ->t_ports, p_ts) { - if (port->p_portal_group == NULL) + for (const port *port : targ->t_ports) { + const struct portal_group *pg = port->portal_group(); + if (pg == nullptr) continue; - for (portal_up &portal : port->p_portal_group->pg_portals) { + for (const portal_up &portal : pg->pg_portals) { ai = portal->ai(); ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), @@ -125,13 +125,13 @@ discovery_add_target(struct keys *response_keys, const struct target *targ) if (strcmp(hbuf, "0.0.0.0") == 0) continue; ret = asprintf(&buf, "%s:%s,%d", hbuf, sbuf, - port->p_portal_group->pg_tag); + pg->pg_tag); break; case AF_INET6: if (strcmp(hbuf, "::") == 0) continue; ret = asprintf(&buf, "[%s]:%s,%d", hbuf, sbuf, - port->p_portal_group->pg_tag); + pg->pg_tag); break; default: continue; @@ -154,8 +154,8 @@ discovery_target_filtered_out(const struct ctld_connection *conn, const struct auth *auth; int error; - targ = port->p_target; - ag = port->p_auth_group.get(); + targ = port->target(); + ag = port->auth_group(); if (ag == nullptr) ag = targ->t_auth_group.get(); pg = conn->conn_portal->portal_group(); @@ -228,12 +228,13 @@ discovery(struct ctld_connection *conn) response_keys = keys_new(); if (strcmp(send_targets, "All") == 0) { - TAILQ_FOREACH(port, &pg->pg_ports, p_pgs) { + for (const auto &kv : pg->pg_ports) { + port = kv.second; if (discovery_target_filtered_out(conn, port)) { /* Ignore this target. */ continue; } - discovery_add_target(response_keys, port->p_target); + discovery_add_target(response_keys, port->target()); } } else { port = port_find_in_pg(pg, send_targets); @@ -244,7 +245,8 @@ discovery(struct ctld_connection *conn) if (discovery_target_filtered_out(conn, port)) { /* Ignore this target. */ } else { - discovery_add_target(response_keys, port->p_target); + discovery_add_target(response_keys, + port->target()); } } } diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index eb3bfa1dc760..2325895a31fd 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -401,7 +401,6 @@ conf_new_from_kernel(struct kports &kports) struct conf *conf = NULL; struct target *targ; struct portal_group *pg; - struct port *cp; struct lun *cl; struct ctl_lun_list list; struct cctl_devlist_data devlist; @@ -575,12 +574,10 @@ retry_port: } } pg->pg_tag = port->cfiscsi_portal_group_tag; - cp = port_new(conf, targ, pg); - if (cp == NULL) { + if (!port_new(conf, targ, pg, port->port_id)) { log_warnx("port_new failed"); continue; } - cp->p_ctl_port = port->port_id; } while ((port = STAILQ_FIRST(&devlist.port_list))) { STAILQ_REMOVE_HEAD(&devlist.port_list, links); @@ -895,100 +892,118 @@ kernel_handoff(struct ctld_connection *conn) } } -int -kernel_port_add(struct port *port) +static bool +ctl_create_port(const char *driver, const nvlist_t *nvl, uint32_t *ctl_port) { - struct ctl_port_entry entry; struct ctl_req req; - struct ctl_lun_map lm; - struct target *targ = port->p_target; - struct portal_group *pg = port->p_portal_group; char result_buf[NVLIST_BUFSIZE]; - int error, i; + int error; - /* Create iSCSI port. */ - if (port->p_portal_group || port->p_ioctl_port) { - bzero(&req, sizeof(req)); - req.reqtype = CTL_REQ_CREATE; - - if (port->p_portal_group) { - strlcpy(req.driver, "iscsi", sizeof(req.driver)); - req.args_nvl = nvlist_clone(pg->pg_options); - nvlist_add_string(req.args_nvl, "cfiscsi_target", - targ->t_name); - nvlist_add_string(req.args_nvl, - "ctld_portal_group_name", pg->pg_name); - nvlist_add_stringf(req.args_nvl, - "cfiscsi_portal_group_tag", "%u", pg->pg_tag); - - if (targ->t_alias) { - nvlist_add_string(req.args_nvl, - "cfiscsi_target_alias", targ->t_alias); - } - } + bzero(&req, sizeof(req)); + req.reqtype = CTL_REQ_CREATE; - if (port->p_ioctl_port) { - strlcpy(req.driver, "ioctl", sizeof(req.driver)); - req.args_nvl = nvlist_create(0); - nvlist_add_stringf(req.args_nvl, "pp", "%d", - port->p_ioctl_pp); - nvlist_add_stringf(req.args_nvl, "vp", "%d", - port->p_ioctl_vp); - } + strlcpy(req.driver, driver, sizeof(req.driver)); + req.args = nvlist_pack(nvl, &req.args_len); + if (req.args == NULL) { + log_warn("error packing nvlist"); + return (false); + } - req.args = nvlist_pack(req.args_nvl, &req.args_len); - if (req.args == NULL) { - nvlist_destroy(req.args_nvl); - log_warn("error packing nvlist"); - return (1); - } + req.result = result_buf; + req.result_len = sizeof(result_buf); + error = ioctl(ctl_fd, CTL_PORT_REQ, &req); + free(req.args); - req.result = result_buf; - req.result_len = sizeof(result_buf); - error = ioctl(ctl_fd, CTL_PORT_REQ, &req); - free(req.args); - nvlist_destroy(req.args_nvl); + if (error != 0) { + log_warn("error issuing CTL_PORT_REQ ioctl"); + return (false); + } + if (req.status == CTL_LUN_ERROR) { + log_warnx("error returned from port creation request: %s", + req.error_str); + return (false); + } + if (req.status != CTL_LUN_OK) { + log_warnx("unknown port creation request status %d", + req.status); + return (false); + } - if (error != 0) { - log_warn("error issuing CTL_PORT_REQ ioctl"); - return (1); - } - if (req.status == CTL_LUN_ERROR) { - log_warnx("error returned from port creation request: %s", - req.error_str); - return (1); - } - if (req.status != CTL_LUN_OK) { - log_warnx("unknown port creation request status %d", - req.status); - return (1); - } + freebsd::nvlist_up result_nvl(nvlist_unpack(result_buf, req.result_len, + 0)); + if (result_nvl == NULL) { + log_warnx("error unpacking result nvlist"); + return (false); + } - req.result_nvl = nvlist_unpack(result_buf, req.result_len, 0); - if (req.result_nvl == NULL) { - log_warnx("error unpacking result nvlist"); - return (1); - } + *ctl_port = nvlist_get_number(result_nvl.get(), "port_id"); + return (true); +} - port->p_ctl_port = nvlist_get_number(req.result_nvl, "port_id"); - nvlist_destroy(req.result_nvl); - } else if (port->p_pport) { - port->p_ctl_port = port->p_pport->ctl_port(); - - if (strncmp(targ->t_name, "naa.", 4) == 0 && - strlen(targ->t_name) == 20) { - bzero(&entry, sizeof(entry)); - entry.port_type = CTL_PORT_NONE; *** 305 LINES SKIPPED *** From nobody Mon Aug 4 19:46:55 2025 X-Original-To: dev-commits-src-main@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 4bwnBT1L94z63RVg; Mon, 04 Aug 2025 19:46:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBS08lkz4Kqq; Mon, 04 Aug 2025 19:46:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336816; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=d86u4nPgkbmRAXeZQx1YPOw1u2jgr8koFxDUVW8E0oQ=; b=a3FeRIA9M5fCLkrWk/n/dAwpf5Bsu9Y0PhAEO2A8OzM92Q93Elr32roSzaNngRyE3RORBF 2Iv4xpqlm/5Q6nqx9bbKrQ+GU0fYWMM1KLlbFHJLzM/j9RCkcNDBmeu4u0byuA35eZ6fIf xwsz1KI8EadhFWzLA5vgaxuBqzof0HEDzatA/p1AFl4kNuLij96koMVuq9v3etlJvB11CA EpMz6B0VamCC9aOpKhaZARfV3a7+0P6oGXYCJMh/NfEC0FhGc0Hl5SSp+EFJ6+vjPw1m4U H4LF70GAm0lTG0REHK4u/lAX3Bemp2wLVjMYuMpmmwzCp4+t1aVnZkeTFm+m7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336816; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=d86u4nPgkbmRAXeZQx1YPOw1u2jgr8koFxDUVW8E0oQ=; b=BmmQP3ZwW1GK4ANdhs5PDe9as1hO/rDorj4wj06miy4YURlCXcvzL1XlCgxjpXowNSA9Kb BNSTsdspD1rJgfTf4Jjoj/hsWHiZ/3/kXjMlWgaah0cC/O2ZV1VogJuFknDs1koGG9x5Xi jq/xTCIEy55zerskilzOYBpRHgkESak/acMQf+rkWCyqJgDdup2ym5TUuKRDX9DWk0E7b/ gxs7eAccTLWlL+Qzxb+0rofPuKhP6E4yBQ+w2ibepxLXxT42BSX33fKyvIGfot05hCyFsO vCVzYN+Ug++x2ftyjqt/E8a6/9kLgNd4KwKozojJ3k2L5/Axmrq4ehWveva8iQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336816; a=rsa-sha256; cv=none; b=L83ApPlK8SS3fKOTwZljHP1l+BERZGbhs4igqtgMo8ICYNJY+7LOc/CgUAvkpD0n9Qd/VQ hUlUxKlM7w0tuRN3EPmLQw1fAmT3xXRQbTHzU4CX7ntNa2QEpkKYD2zZVA6EM2mrKSn0Ud Wj73RLygZDNIoTt6+e+WLUQrS3+N8BdsM5MG1jiihLUjWlIctClxjPnIyEYPiH1Pp681uY 0L8UdriflojLKMAHtLHJfG9YwMU3ohdN3pxgyN5IXTORmuqPHa8eBZDqPtvlcTI8mCoRy9 7e9ppGP7tfl9ik5+g0gCaZU43S2+/UBXYPgUg3StI5TiEJ33SBWHADgnwZOLRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBR6rxNz12qk; Mon, 04 Aug 2025 19:46:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JktaX099321; Mon, 4 Aug 2025 19:46:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JktYG099318; Mon, 4 Aug 2025 19:46:55 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:55 GMT Message-Id: <202508041946.574JktYG099318@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 4b1aac931465 - main - ctld: Convert struct pport and struct kports to C++ classes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4b1aac931465f39c5c26bfa1d5539a428d340f20 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4b1aac931465f39c5c26bfa1d5539a428d340f20 commit 4b1aac931465f39c5c26bfa1d5539a428d340f20 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct pport and struct kports to C++ classes - Use an unordered_map<> indexed by std::string to replace the TAILQ of pport objects in struct kports since pport objects are looked up name. Use a few wrapper methods around the unordered_map<> to simplify consumers. - Don't store a list of port pointers in pport. Only a single port is ever associated (previously the code failed with an error if the TAILQ wasn't empty when adding a port), so just store a pointer to a single port and replace the empty TAILQ test with checking if the pointer is null. - Use std::string for the pport name. - Add accessors (and a setter) for members of pport so that all the fields can be private. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 80 +++++++++++++++++++------------------------------ usr.sbin/ctld/ctld.hh | 47 ++++++++++++++++------------- usr.sbin/ctld/kernel.cc | 13 ++++---- 3 files changed, 61 insertions(+), 79 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index bb35d5ad68de..07592a07c019 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -801,53 +801,37 @@ isns_deregister(struct isns *isns) set_timeout(0, false); } -struct pport * -pport_new(struct kports *kports, const char *name, uint32_t ctl_port) +pport::~pport() { - struct pport *pp; - - pp = reinterpret_cast(calloc(1, sizeof(*pp))); - if (pp == NULL) - log_err(1, "calloc"); - pp->pp_kports = kports; - pp->pp_name = checked_strdup(name); - pp->pp_ctl_port = ctl_port; - TAILQ_INIT(&pp->pp_ports); - TAILQ_INSERT_TAIL(&kports->pports, pp, pp_next); - return (pp); + if (pp_port != nullptr) + port_delete(pp_port); } -struct pport * -pport_find(const struct kports *kports, const char *name) +bool +kports::add_port(const char *name, uint32_t ctl_port) { - struct pport *pp; - - TAILQ_FOREACH(pp, &kports->pports, pp_next) { - if (strcasecmp(pp->pp_name, name) == 0) - return (pp); + const auto &pair = pports.try_emplace(name, name, ctl_port); + if (!pair.second) { + log_warnx("duplicate kernel port \"%s\" (%u)", name, ctl_port); + return (false); } - return (NULL); + + return (true); } -struct pport * -pport_copy(struct pport *pp, struct kports *kports) +bool +kports::has_port(std::string_view name) { - struct pport *ppnew; - - ppnew = pport_new(kports, pp->pp_name, pp->pp_ctl_port); - return (ppnew); + return (pports.count(std::string(name)) > 0); } -void -pport_delete(struct pport *pp) +struct pport * +kports::find_port(std::string_view name) { - struct port *port, *tport; - - TAILQ_FOREACH_SAFE(port, &pp->pp_ports, p_ts, tport) - port_delete(port); - TAILQ_REMOVE(&pp->pp_kports->pports, pp, pp_next); - free(pp->pp_name); - free(pp); + auto it = pports.find(std::string(name)); + if (it == pports.end()) + return (nullptr); + return (&it->second); } struct port * @@ -877,7 +861,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg) } struct port * -port_new_ioctl(struct conf *conf, struct kports *kports, struct target *target, +port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, int pp, int vp) { struct pport *pport; @@ -892,7 +876,7 @@ port_new_ioctl(struct conf *conf, struct kports *kports, struct target *target, return (NULL); } - pport = pport_find(kports, pname); + pport = kports.find_port(pname); if (pport != NULL) { free(pname); return (port_new_pp(conf, target, pport)); @@ -927,7 +911,7 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) char *name; int ret; - ret = asprintf(&name, "%s-%s", pp->pp_name, target->t_name); + ret = asprintf(&name, "%s-%s", pp->name(), target->t_name); if (ret <= 0) log_err(1, "asprintf"); if (port_find(conf, name) != NULL) { @@ -941,8 +925,7 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) TAILQ_INSERT_TAIL(&conf->conf_ports, port, p_next); TAILQ_INSERT_TAIL(&target->t_ports, port, p_ts); port->p_target = target; - TAILQ_INSERT_TAIL(&pp->pp_ports, port, p_pps); - port->p_pport = pp; + pp->link(port); return (port); } @@ -978,8 +961,6 @@ port_delete(struct port *port) if (port->p_portal_group) TAILQ_REMOVE(&port->p_portal_group->pg_ports, port, p_pgs); - if (port->p_pport) - TAILQ_REMOVE(&port->p_pport->pp_ports, port, p_pps); if (port->p_target) TAILQ_REMOVE(&port->p_target->t_ports, port, p_ts); TAILQ_REMOVE(&port->p_conf->conf_ports, port, p_next); @@ -2149,7 +2130,7 @@ conf_new_from_file(const char *path, bool ucl) * with the config file. If necessary, create them. */ static bool -new_pports_from_conf(struct conf *conf, struct kports *kports) +new_pports_from_conf(struct conf *conf, struct kports &kports) { struct target *targ; struct pport *pp; @@ -2172,13 +2153,13 @@ new_pports_from_conf(struct conf *conf, struct kports *kports) continue; } - pp = pport_find(kports, targ->t_pport); + pp = kports.find_port(targ->t_pport); if (pp == NULL) { log_warnx("unknown port \"%s\" for target \"%s\"", targ->t_pport, targ->t_name); return (false); } - if (!TAILQ_EMPTY(&pp->pp_ports)) { + if (pp->linked()) { log_warnx("can't link port \"%s\" to target \"%s\", " "port already linked to some target", targ->t_pport, targ->t_name); @@ -2241,7 +2222,6 @@ main(int argc, char **argv) log_init(debug); kernel_init(); - TAILQ_INIT(&kports.pports); newconf = conf_new_from_file(config_path, use_ucl); if (newconf == NULL) @@ -2264,14 +2244,14 @@ main(int argc, char **argv) register_signals(); - oldconf = conf_new_from_kernel(&kports); + oldconf = conf_new_from_kernel(kports); if (debug > 0) { oldconf->conf_debug = debug; newconf->conf_debug = debug; } - if (!new_pports_from_conf(newconf, &kports)) + if (!new_pports_from_conf(newconf, kports)) log_errx(1, "Error associating physical ports; exiting"); if (daemonize) { @@ -2313,7 +2293,7 @@ main(int argc, char **argv) if (tmpconf == NULL) { log_warnx("configuration error, " "continuing with old configuration"); - } else if (!new_pports_from_conf(tmpconf, &kports)) { + } else if (!new_pports_from_conf(tmpconf, kports)) { log_warnx("Error associating physical ports, " "continuing with old configuration"); conf_delete(tmpconf); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index ea7f41f707b9..ee50acf1f3e8 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -177,20 +177,9 @@ struct portal_group { uint16_t pg_tag; }; -/* Ports created by the kernel. Perhaps the "p" means "physical" ? */ -struct pport { - TAILQ_ENTRY(pport) pp_next; - TAILQ_HEAD(, port) pp_ports; - struct kports *pp_kports; - char *pp_name; - - uint32_t pp_ctl_port; -}; - struct port { TAILQ_ENTRY(port) p_next; TAILQ_ENTRY(port) p_pgs; - TAILQ_ENTRY(port) p_pps; TAILQ_ENTRY(port) p_ts; struct conf *p_conf; char *p_name; @@ -272,8 +261,31 @@ private: }; /* Physical ports exposed by the kernel */ +struct pport { + pport(std::string_view name, uint32_t ctl_port) : pp_name(name), + pp_ctl_port(ctl_port) {} + ~pport(); + + const char *name() const { return pp_name.c_str(); } + uint32_t ctl_port() const { return pp_ctl_port; } + + bool linked() const { return pp_port != nullptr; } + void link(struct port *port) { pp_port = port; } + +private: + struct port *pp_port; + std::string pp_name; + + uint32_t pp_ctl_port; +}; + struct kports { - TAILQ_HEAD(, pport) pports; + bool add_port(const char *name, uint32_t ctl_port); + bool has_port(std::string_view name); + struct pport *find_port(std::string_view name); + +private: + std::unordered_map pports; }; #define CONN_SESSION_TYPE_NONE 0 @@ -305,7 +317,7 @@ bool parse_conf(const char *path); bool uclparse_conf(const char *path); struct conf *conf_new(void); -struct conf *conf_new_from_kernel(struct kports *kports); +struct conf *conf_new_from_kernel(struct kports &kports); void conf_delete(struct conf *conf); void conf_finish(void); void conf_start(struct conf *new_conf); @@ -329,17 +341,10 @@ void isns_register(struct isns *isns, struct isns *oldisns); void isns_check(struct isns *isns); void isns_deregister(struct isns *isns); -struct pport *pport_new(struct kports *kports, const char *name, - uint32_t ctl_port); -struct pport *pport_find(const struct kports *kports, - const char *name); -struct pport *pport_copy(struct pport *pp, struct kports *kports); -void pport_delete(struct pport *pport); - struct port *port_new(struct conf *conf, struct target *target, struct portal_group *pg); struct port *port_new_ioctl(struct conf *conf, - struct kports *kports, struct target *target, + struct kports &kports, struct target *target, int pp, int vp); struct port *port_new_pp(struct conf *conf, struct target *target, struct pport *pp); diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index 5a9a9f3c991f..eb3bfa1dc760 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -396,12 +396,11 @@ cctl_char_handler(void *user_data, const XML_Char *str, int len) } struct conf * -conf_new_from_kernel(struct kports *kports) +conf_new_from_kernel(struct kports &kports) { struct conf *conf = NULL; struct target *targ; struct portal_group *pg; - struct pport *pp; struct port *cp; struct lun *cl; struct ctl_lun_list list; @@ -542,11 +541,9 @@ retry_port: if (port->cfiscsi_target == NULL) { log_debugx("CTL port %u \"%s\" wasn't managed by ctld; ", port->port_id, name); - pp = pport_find(kports, name); - if (pp == NULL) { - pp = pport_new(kports, name, port->port_id); - if (pp == NULL) { - log_warnx("pport_new failed"); + if (!kports.has_port(name)) { + if (!kports.add_port(name, port->port_id)) { + log_warnx("kports::add_port failed"); continue; } } @@ -976,7 +973,7 @@ kernel_port_add(struct port *port) port->p_ctl_port = nvlist_get_number(req.result_nvl, "port_id"); nvlist_destroy(req.result_nvl); } else if (port->p_pport) { - port->p_ctl_port = port->p_pport->pp_ctl_port; + port->p_ctl_port = port->p_pport->ctl_port(); if (strncmp(targ->t_name, "naa.", 4) == 0 && strlen(targ->t_name) == 20) { From nobody Mon Aug 4 19:46:58 2025 X-Original-To: dev-commits-src-main@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 4bwnBW07KDz63QmM; Mon, 04 Aug 2025 19:46:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBV1frpz4L2L; Mon, 04 Aug 2025 19:46:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336818; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=62NOYEpTLZT93gZQbMZmt10i0AbRZM3SlvnlopWZTNg=; b=MuA8+B3aQDONlBELXjGPZHLuONd1quwr7NM3G3HKSDkyU3ei7V14naGrgDeBaDlyQYXkU8 7WCPkSKVY/ugt08husa9oBFMugp7JubhgSgjs5f2M6O81ZESznE6+fqvfbfL72UdbL4WJH wFKFVDG/u1fJ3a/Lbl1xwkNN8OGbxyal3YnWvIwzN9Qtl1LPJSyqxdhyRU62+dTQqFKoCn Qr1b52c+vgTTrV84qzXpa/llc8mrg5IS0binJ60+TU1o6YAxEk7SELkHbw7oEH4Yf8sn49 6Zw4lMqYCSkY+OVaXtBWorD0h/69McPYtSQdofGZb1BtxWkgIa7xNk0h/XSOxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336818; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=62NOYEpTLZT93gZQbMZmt10i0AbRZM3SlvnlopWZTNg=; b=hSqMldCspl0ychpZ+3U/wwwD59DrC7cMFPmA0UJ30B3XK0F2AhTzRSaN8cAj83GZHc/sT9 XQiiVB7QxW+88O0btzytjhuc9gp+FwuRttBtaTNLlF5jnHqqvABkPmHJtxOpXcB+Oug2eW SZ2Hcn8O3ALOvHdLSDSXKy0NZj9YDU9oWppZrN/3g9OdAYWEthtJSTXJXVT6Z1crh3Z3Qx swhJPxfUHMsjr9xNxPm5Gi/fQbgq0v8usBt2rqKCelilZ3rI9Ggqw0s7ea/amU5FfUs4nn 28ZKUPOSRlzrG3Qzb+1aLwAJKtIliMo9lS8xWvLzooQNwzbA1ldjdJAWpHjvZw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336818; a=rsa-sha256; cv=none; b=sa/XxEHqERk2qTl3DKJvjxA2QEB7YHe29ruGpal7Ycpa4q2T7Jes5e0w5rgWsFbx/okb0z jquyQMkRx5dRrvH69+r7agt7I71oAr1kJF69eTEugz4Rbs1SxdxiDt6EO9w1R1CDcQHJZQ QpObVQjoEF4I0OS5BHg1kWCbll74tAr8Z6o1xHNDZajsAW8fwNpEGj++xmq46YOO5AF/x9 wHlTZDWg5n27N7M7qQpwPjJYpr/XkvXp3EQa121oHVYpOQaczRluuw6JxSPycz92wrryvx S4KF7aH4G7hCBxNJr7WeOm4oAakjjmukBCaxeRNvUa/RMXWuiUv0pjVs1iKOCQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBV1CTvz12f7; Mon, 04 Aug 2025 19:46:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jkwqb099393; Mon, 4 Aug 2025 19:46:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jkwqx099390; Mon, 4 Aug 2025 19:46:58 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:58 GMT Message-Id: <202508041946.574Jkwqx099390@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: d6d8a7ba4216 - main - ctld: Convert struct portal_group to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d6d8a7ba4216d0f12e32c858d4332ba29cc7dc9b Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d6d8a7ba4216d0f12e32c858d4332ba29cc7dc9b commit d6d8a7ba4216d0f12e32c858d4332ba29cc7dc9b Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct portal_group to a C++ class - Use std::string, freebsd_nvlist_up to manage life cycle of class members. - Use an unordered_map<> keyed by std::string in struct conf to replace the previous TAILQ. - Replace PG_FILTER_* macros with a scoped enum. - Provide a variety of accessors as portal groups are widely used while keeping members private. - The logic to "move" sockets from existing portals to new portals when parsing new configuration is now split into several operations across the conf and portal_group classes to preserve some semblance of data hiding. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 94 +--------- usr.sbin/ctld/ctld.cc | 454 ++++++++++++++++++++++++++++++--------------- usr.sbin/ctld/ctld.hh | 92 ++++++--- usr.sbin/ctld/discovery.cc | 20 +- usr.sbin/ctld/kernel.cc | 18 +- usr.sbin/ctld/login.cc | 24 ++- 6 files changed, 415 insertions(+), 287 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 2bf7b99409de..ce2003b09880 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -204,135 +204,61 @@ portal_group_finish(void) bool portal_group_add_listen(const char *listen, bool iser) { - return (portal_group_add_portal(portal_group, listen, iser)); + return (portal_group->add_portal(listen, iser)); } bool portal_group_add_option(const char *name, const char *value) { - return (option_new(portal_group->pg_options, name, value)); + return (portal_group->add_option(name, value)); } bool portal_group_set_discovery_auth_group(const char *name) { - if (portal_group->pg_discovery_auth_group != nullptr) { - log_warnx("discovery-auth-group for portal-group " - "\"%s\" specified more than once", - portal_group->pg_name); - return (false); - } - portal_group->pg_discovery_auth_group = auth_group_find(conf, name); - if (portal_group->pg_discovery_auth_group == nullptr) { - log_warnx("unknown discovery-auth-group \"%s\" " - "for portal-group \"%s\"", name, portal_group->pg_name); - return (false); - } - return (true); + return (portal_group->set_discovery_auth_group(name)); } bool portal_group_set_dscp(u_int dscp) { - if (dscp >= 0x40) { - log_warnx("invalid DSCP value %u for portal-group \"%s\"", - dscp, portal_group->pg_name); - return (false); - } - - portal_group->pg_dscp = dscp; - return (true); + return (portal_group->set_dscp(dscp)); } bool portal_group_set_filter(const char *str) { - int filter; - - if (strcmp(str, "none") == 0) { - filter = PG_FILTER_NONE; - } else if (strcmp(str, "portal") == 0) { - filter = PG_FILTER_PORTAL; - } else if (strcmp(str, "portal-name") == 0) { - filter = PG_FILTER_PORTAL_NAME; - } else if (strcmp(str, "portal-name-auth") == 0) { - filter = PG_FILTER_PORTAL_NAME_AUTH; - } else { - log_warnx("invalid discovery-filter \"%s\" for portal-group " - "\"%s\"; valid values are \"none\", \"portal\", " - "\"portal-name\", and \"portal-name-auth\"", - str, portal_group->pg_name); - return (false); - } - - if (portal_group->pg_discovery_filter != PG_FILTER_UNKNOWN && - portal_group->pg_discovery_filter != filter) { - log_warnx("cannot set discovery-filter to \"%s\" for " - "portal-group \"%s\"; already has a different " - "value", str, portal_group->pg_name); - return (false); - } - - portal_group->pg_discovery_filter = filter; - - return (true); + return (portal_group->set_filter(str)); } void portal_group_set_foreign(void) { - portal_group->pg_foreign = true; + portal_group->set_foreign(); } bool portal_group_set_offload(const char *offload) { - - if (portal_group->pg_offload != NULL) { - log_warnx("cannot set offload to \"%s\" for " - "portal-group \"%s\"; already defined", - offload, portal_group->pg_name); - return (false); - } - - portal_group->pg_offload = checked_strdup(offload); - - return (true); + return (portal_group->set_offload(offload)); } bool portal_group_set_pcp(u_int pcp) { - if (pcp > 7) { - log_warnx("invalid PCP value %u for portal-group \"%s\"", - pcp, portal_group->pg_name); - return (false); - } - - portal_group->pg_pcp = pcp; - return (true); + return (portal_group->set_pcp(pcp)); } bool portal_group_set_redirection(const char *addr) { - - if (portal_group->pg_redirection != NULL) { - log_warnx("cannot set redirection to \"%s\" for " - "portal-group \"%s\"; already defined", - addr, portal_group->pg_name); - return (false); - } - - portal_group->pg_redirection = checked_strdup(addr); - - return (true); + return (portal_group->set_redirection(addr)); } void portal_group_set_tag(uint16_t tag) { - portal_group->pg_tag = tag; + portal_group->set_tag(tag); } bool diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index e8770cb9315d..8815034930b4 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -103,7 +103,6 @@ conf_new(void) conf = new struct conf(); TAILQ_INIT(&conf->conf_luns); TAILQ_INIT(&conf->conf_targets); - TAILQ_INIT(&conf->conf_portal_groups); TAILQ_INIT(&conf->conf_isns); conf->conf_isns_period = 900; @@ -120,7 +119,6 @@ conf_delete(struct conf *conf) { struct lun *lun, *ltmp; struct target *targ, *tmp; - struct portal_group *pg, *cpgtmp; struct isns *is, *istmp; assert(conf->conf_pidfh == NULL); @@ -129,8 +127,6 @@ conf_delete(struct conf *conf) lun_delete(lun); TAILQ_FOREACH_SAFE(targ, &conf->conf_targets, t_next, tmp) target_delete(targ); - TAILQ_FOREACH_SAFE(pg, &conf->conf_portal_groups, pg_next, cpgtmp) - portal_group_delete(pg); TAILQ_FOREACH_SAFE(is, &conf->conf_isns, i_next, istmp) isns_delete(is); free(conf->conf_pidfile_path); @@ -439,52 +435,42 @@ auth_group_find(const struct conf *conf, const char *name) return (it->second); } +portal_group::portal_group(struct conf *conf, std::string_view name) + : pg_conf(conf), pg_options(nvlist_create(0)), pg_name(name) +{ +} + struct portal_group * portal_group_new(struct conf *conf, const char *name) { - struct portal_group *pg; - - pg = portal_group_find(conf, name); - if (pg != NULL) { + auto pair = conf->conf_portal_groups.try_emplace(name, + std::make_unique(conf, name)); + if (!pair.second) { log_warnx("duplicated portal-group \"%s\"", name); - return (NULL); + return (nullptr); } - pg = new portal_group(); - pg->pg_name = checked_strdup(name); - pg->pg_options = nvlist_create(0); - pg->pg_conf = conf; - pg->pg_tag = 0; /* Assigned later in conf_apply(). */ - pg->pg_dscp = -1; - pg->pg_pcp = -1; - TAILQ_INSERT_TAIL(&conf->conf_portal_groups, pg, pg_next); - - return (pg); + return (pair.first->second.get()); } -void -portal_group_delete(struct portal_group *pg) +struct portal_group * +portal_group_find(struct conf *conf, const char *name) { - TAILQ_REMOVE(&pg->pg_conf->conf_portal_groups, pg, pg_next); + auto it = conf->conf_portal_groups.find(name); + if (it == conf->conf_portal_groups.end()) + return (nullptr); - nvlist_destroy(pg->pg_options); - free(pg->pg_name); - free(pg->pg_offload); - free(pg->pg_redirection); - delete pg; + return (it->second.get()); } -struct portal_group * -portal_group_find(const struct conf *conf, const char *name) +bool +portal_group::is_dummy() const { - struct portal_group *pg; - - TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { - if (strcmp(pg->pg_name, name) == 0) - return (pg); - } - - return (NULL); + if (pg_foreign) + return (true); + if (pg_portals.empty()) + return (true); + return (false); } static freebsd::addrinfo_up @@ -535,8 +521,27 @@ parse_addr_port(const char *address, const char *def_port) return freebsd::addrinfo_up(ai); } +void +portal_group::add_port(struct portal_group_port *port) +{ + pg_ports.emplace(port->target()->t_name, port); +} + +void +portal_group::remove_port(struct portal_group_port *port) +{ + auto it = pg_ports.find(port->target()->t_name); + pg_ports.erase(it); +} + +freebsd::nvlist_up +portal_group::options() const +{ + return (freebsd::nvlist_up(nvlist_clone(pg_options.get()))); +} + bool -portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) +portal_group::add_portal(const char *value, bool iser) { freebsd::addrinfo_up ai = parse_addr_port(value, "3260"); if (!ai) { @@ -549,11 +554,218 @@ portal_group_add_portal(struct portal_group *pg, const char *value, bool iser) * those into multiple portals. */ - pg->pg_portals.emplace_back(std::make_unique(pg, value, iser, + pg_portals.emplace_back(std::make_unique(this, value, iser, std::move(ai))); return (true); } +bool +portal_group::add_option(const char *name, const char *value) +{ + return (option_new(pg_options.get(), name, value)); +} + +bool +portal_group::set_discovery_auth_group(const char *ag_name) +{ + if (pg_discovery_auth_group != nullptr) { + log_warnx("discovery-auth-group for portal-group " + "\"%s\" specified more than once", name()); + return (false); + } + pg_discovery_auth_group = auth_group_find(pg_conf, ag_name); + if (pg_discovery_auth_group == nullptr) { + log_warnx("unknown discovery-auth-group \"%s\" " + "for portal-group \"%s\"", ag_name, name()); + return (false); + } + return (true); +} + +bool +portal_group::set_dscp(u_int dscp) +{ + if (dscp >= 0x40) { + log_warnx("invalid DSCP value %u for portal-group \"%s\"", + dscp, name()); + return (false); + } + + pg_dscp = dscp; + return (true); +} + +bool +portal_group::set_filter(const char *str) +{ + enum discovery_filter filter; + + if (strcmp(str, "none") == 0) { + filter = discovery_filter::NONE; + } else if (strcmp(str, "portal") == 0) { + filter = discovery_filter::PORTAL; + } else if (strcmp(str, "portal-name") == 0) { + filter = discovery_filter::PORTAL_NAME; + } else if (strcmp(str, "portal-name-auth") == 0) { + filter = discovery_filter::PORTAL_NAME_AUTH; + } else { + log_warnx("invalid discovery-filter \"%s\" for portal-group " + "\"%s\"; valid values are \"none\", \"portal\", " + "\"portal-name\", and \"portal-name-auth\"", + str, name()); + return (false); + } + + if (pg_discovery_filter != discovery_filter::UNKNOWN && + pg_discovery_filter != filter) { + log_warnx("cannot set discovery-filter to \"%s\" for " + "portal-group \"%s\"; already has a different " + "value", str, name()); + return (false); + } + + pg_discovery_filter = filter; + return (true); +} + +void +portal_group::set_foreign() +{ + pg_foreign = true; +} + +bool +portal_group::set_offload(const char *offload) +{ + if (!pg_offload.empty()) { + log_warnx("cannot set offload to \"%s\" for " + "portal-group \"%s\"; already defined", + offload, name()); + return (false); + } + + pg_offload = offload; + return (true); +} + +bool +portal_group::set_pcp(u_int pcp) +{ + if (pcp > 7) { + log_warnx("invalid PCP value %u for portal-group \"%s\"", + pcp, name()); + return (false); + } + + pg_pcp = pcp; + return (true); +} + +bool +portal_group::set_redirection(const char *addr) +{ + if (!pg_redirection.empty()) { + log_warnx("cannot set redirection to \"%s\" for " + "portal-group \"%s\"; already defined", + addr, name()); + return (false); + } + + pg_redirection = addr; + return (true); +} + +void +portal_group::set_tag(uint16_t tag) +{ + pg_tag = tag; +} + +void +portal_group::verify(struct conf *conf) +{ + if (pg_discovery_auth_group == nullptr) { + pg_discovery_auth_group = auth_group_find(conf, "default"); + assert(pg_discovery_auth_group != nullptr); + } + + if (pg_discovery_filter == discovery_filter::UNKNOWN) + pg_discovery_filter = discovery_filter::NONE; + + if (!pg_redirection.empty()) { + if (!pg_ports.empty()) { + log_debugx("portal-group \"%s\" assigned to target, " + "but configured for redirection", name()); + } + pg_assigned = true; + } else if (!pg_ports.empty()) { + pg_assigned = true; + } else { + if (pg_name != "default") + log_warnx("portal-group \"%s\" not assigned " + "to any target", name()); + pg_assigned = false; + } +} + +/* + * Try to reuse a socket for 'newp' from an existing socket in one of + * our portals. + */ +bool +portal_group::reuse_socket(struct portal &newp) +{ + for (portal_up &portal : pg_portals) { + if (newp.reuse_socket(*portal)) + return (true); + } + return (false); +} + +int +portal_group::open_sockets(struct conf &oldconf) +{ + int cumulated_error = 0; + + if (pg_foreign) + return (0); + + if (!pg_assigned) { + log_debugx("not listening on portal-group \"%s\", " + "not assigned to any target", name()); + return (0); + } + + for (portal_up &portal : pg_portals) { + /* + * Try to find already open portal and reuse the + * listening socket. We don't care about what portal + * or portal group that was, what matters is the + * listening address. + */ + if (oldconf.reuse_portal_group_socket(*portal)) + continue; + + if (!portal->init_socket()) { + cumulated_error++; + continue; + } + } + return (cumulated_error); +} + +void +portal_group::close_sockets() +{ + for (portal_up &portal : pg_portals) { + if (portal->socket() < 0) + continue; + log_debugx("closing socket for %s, portal-group \"%s\"", + portal->listen(), name()); + portal->close(); + } +} + bool isns_new(struct conf *conf, const char *addr) { @@ -617,7 +829,7 @@ isns_do_register(struct isns *isns, int s, const char *hostname) { struct conf *conf = isns->i_conf; struct target *target; - struct portal_group *pg; + const struct portal_group *pg; uint32_t error; isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT); @@ -626,10 +838,12 @@ isns_do_register(struct isns *isns, int s, const char *hostname) req.add_str(1, hostname); req.add_32(2, 2); /* 2 -- iSCSI */ req.add_32(6, conf->conf_isns_period); - TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { - if (pg->pg_unassigned) + for (const auto &kv : conf->conf_portal_groups) { + pg = kv.second.get(); + + if (!pg->assigned()) continue; - for (const portal_up &portal : pg->pg_portals) { + for (const portal_up &portal : pg->portals()) { req.add_addr(16, portal->ai()); req.add_port(17, portal->ai()); } @@ -643,8 +857,8 @@ isns_do_register(struct isns *isns, int s, const char *hostname) pg = port->portal_group(); if (pg == nullptr) continue; - req.add_32(51, pg->pg_tag); - for (const portal_up &portal : pg->pg_portals) { + req.add_32(51, pg->tag()); + for (const portal_up &portal : pg->portals()) { req.add_addr(49, portal->ai()); req.add_port(50, portal->ai()); } @@ -723,7 +937,7 @@ isns_register(struct isns *isns, struct isns *oldisns) char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || - TAILQ_EMPTY(&conf->conf_portal_groups)) + conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); s = isns_do_connect(isns); @@ -751,7 +965,7 @@ isns_check(struct isns *isns) char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || - TAILQ_EMPTY(&conf->conf_portal_groups)) + conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); s = isns_do_connect(isns); @@ -779,7 +993,7 @@ isns_deregister(struct isns *isns) char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || - TAILQ_EMPTY(&conf->conf_portal_groups)) + conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); s = isns_do_connect(isns); @@ -837,7 +1051,7 @@ portal_group_port::portal_group_port(struct target *target, struct portal_group *pg, auth_group_sp ag) : port(target), p_auth_group(ag), p_portal_group(pg) { - pg->pg_ports.emplace(target->t_name, this); + p_portal_group->add_port(this); } portal_group_port::portal_group_port(struct target *target, @@ -845,24 +1059,19 @@ portal_group_port::portal_group_port(struct target *target, port(target), p_portal_group(pg) { p_ctl_port = ctl_port; - pg->pg_ports.emplace(target->t_name, this); + p_portal_group->add_port(this); } bool portal_group_port::is_dummy() const { - if (p_portal_group->pg_foreign) - return (true); - if (p_portal_group->pg_portals.empty()) - return (true); - return (false); + return (p_portal_group->is_dummy()); } void portal_group_port::clear_references() { - auto it = p_portal_group->pg_ports.find(p_target->t_name); - p_portal_group->pg_ports.erase(it); + p_portal_group->remove_port(this); port::clear_references(); } @@ -870,7 +1079,7 @@ bool port_new(struct conf *conf, struct target *target, struct portal_group *pg, auth_group_sp ag) { - std::string name = freebsd::stringf("%s-%s", pg->pg_name, + std::string name = freebsd::stringf("%s-%s", pg->name(), target->t_name); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pg, ag)); @@ -886,7 +1095,7 @@ bool port_new(struct conf *conf, struct target *target, struct portal_group *pg, uint32_t ctl_port) { - std::string name = freebsd::stringf("%s-%s", pg->pg_name, + std::string name = freebsd::stringf("%s-%s", pg->name(), target->t_name); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pg, ctl_port)); @@ -937,11 +1146,11 @@ port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, return (true); } -struct port * -port_find_in_pg(const struct portal_group *pg, const char *target) +const struct port * +portal_group::find_port(std::string_view target) const { - auto it = pg->pg_ports.find(target); - if (it == pg->pg_ports.end()) + auto it = pg_ports.find(std::string(target)); + if (it == pg_ports.end()) return (nullptr); return (it->second); } @@ -1241,33 +1450,8 @@ conf_verify(struct conf *conf) targ->t_name); } } - TAILQ_FOREACH(pg, &conf->conf_portal_groups, pg_next) { - assert(pg->pg_name != NULL); - if (pg->pg_discovery_auth_group == NULL) { - pg->pg_discovery_auth_group = - auth_group_find(conf, "default"); - assert(pg->pg_discovery_auth_group != NULL); - } - - if (pg->pg_discovery_filter == PG_FILTER_UNKNOWN) - pg->pg_discovery_filter = PG_FILTER_NONE; - - if (pg->pg_redirection != NULL) { - if (!pg->pg_ports.empty()) { - log_debugx("portal-group \"%s\" assigned " - "to target, but configured " - "for redirection", - pg->pg_name); - } - pg->pg_unassigned = false; - } else if (!pg->pg_ports.empty()) { - pg->pg_unassigned = false; - } else { - if (strcmp(pg->pg_name, "default") != 0) - log_warnx("portal-group \"%s\" not assigned " - "to any target", pg->pg_name); - pg->pg_unassigned = true; - } + for (auto &kv : conf->conf_portal_groups) { + kv.second->verify(conf); } for (const auto &kv : conf->conf_auth_groups) { const std::string &ag_name = kv.first; @@ -1315,7 +1499,7 @@ portal::init_socket() #ifdef ICL_KERNEL_PROXY if (proxy_mode) { - int id = pg->pg_conf->add_proxy_portal(this); + int id = pg->conf()->add_proxy_portal(this); log_debugx("listening on %s, portal-group \"%s\", " "portal id %d, using ICL proxy", listen(), pg->pg_name, id); @@ -1327,7 +1511,7 @@ portal::init_socket() assert(p_iser == false); log_debugx("listening on %s, portal-group \"%s\"", listen(), - pg->pg_name); + pg->name()); s = ::socket(p_ai->ai_family, p_ai->ai_socktype, p_ai->ai_protocol); if (!s) { log_warn("socket(2) failed for %s", listen()); @@ -1352,9 +1536,9 @@ portal::init_socket() return (false); } - if (pg->pg_dscp != -1) { + if (pg->dscp() != -1) { /* Only allow the 6-bit DSCP field to be modified */ - int tos = pg->pg_dscp << 2; + int tos = pg->dscp() << 2; switch (p_ai->ai_family) { case AF_INET: if (setsockopt(s, IPPROTO_IP, IP_TOS, @@ -1370,8 +1554,8 @@ portal::init_socket() break; } } - if (pg->pg_pcp != -1) { - int pcp = pg->pg_pcp; + if (pg->pcp() != -1) { + int pcp = pg->pcp(); switch (p_ai->ai_family) { case AF_INET: if (setsockopt(s, IPPROTO_IP, IP_VLAN_PCP, @@ -1408,11 +1592,22 @@ portal::init_socket() return (true); } +bool +conf::reuse_portal_group_socket(struct portal &newp) +{ + for (auto &kv : conf_portal_groups) { + struct portal_group &pg = *kv.second; + + if (pg.reuse_socket(newp)) + return (true); + } + return (false); +} + static int conf_apply(struct conf *oldconf, struct conf *newconf) { struct lun *oldlun, *newlun, *tmplun; - struct portal_group *oldpg, *newpg; struct isns *oldns, *newns; int changed, cumulated_error = 0, error; @@ -1445,14 +1640,16 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Go through the new portal groups, assigning tags or preserving old. */ - TAILQ_FOREACH(newpg, &newconf->conf_portal_groups, pg_next) { - if (newpg->pg_tag != 0) + for (auto &kv : newconf->conf_portal_groups) { + struct portal_group &newpg = *kv.second; + + if (newpg.tag() != 0) continue; - oldpg = portal_group_find(oldconf, newpg->pg_name); - if (oldpg != NULL) - newpg->pg_tag = oldpg->pg_tag; + auto it = oldconf->conf_portal_groups.find(kv.first); + if (it != oldconf->conf_portal_groups.end()) + newpg.set_tag(it->second->tag()); else - newpg->pg_tag = ++last_portal_group_tag; + newpg.set_tag(++last_portal_group_tag); } /* Deregister on removed iSNS servers. */ @@ -1647,50 +1844,15 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Go through the new portals, opening the sockets as necessary. */ - TAILQ_FOREACH(newpg, &newconf->conf_portal_groups, pg_next) { - if (newpg->pg_foreign) - continue; - if (newpg->pg_unassigned) { - log_debugx("not listening on portal-group \"%s\", " - "not assigned to any target", - newpg->pg_name); - continue; - } - for (portal_up &newp : newpg->pg_portals) { - /* - * Try to find already open portal and reuse - * the listening socket. We don't care about - * what portal or portal group that was, what - * matters is the listening address. - */ - TAILQ_FOREACH(oldpg, &oldconf->conf_portal_groups, - pg_next) { - for (portal_up &oldp : oldpg->pg_portals) { - if (newp->reuse_socket(*oldp)) - goto reused; - } - } - - if (!newp->init_socket()) { - cumulated_error++; - continue; - } - reused: - ; - } + for (auto &kv : newconf->conf_portal_groups) { + cumulated_error += kv.second->open_sockets(*oldconf); } /* * Go through the no longer used sockets, closing them. */ - TAILQ_FOREACH(oldpg, &oldconf->conf_portal_groups, pg_next) { - for (portal_up &oldp : oldpg->pg_portals) { - if (oldp->socket() < 0) - continue; - log_debugx("closing socket for %s, portal-group \"%s\"", - oldp->listen(), oldpg->pg_name); - oldp->close(); - } + for (auto &kv : oldconf->conf_portal_groups) { + kv.second->close_sockets(); } /* (Re-)Register on remaining/new iSNS servers. */ @@ -1828,7 +1990,7 @@ handle_connection(struct portal *portal, int fd, struct conf *conf; pg = portal->portal_group(); - conf = pg->pg_conf; + conf = pg->conf(); if (dont_fork) { log_debugx("incoming connection; not forking due to -d flag"); @@ -1861,7 +2023,7 @@ handle_connection(struct portal *portal, int fd, log_errx(1, "getnameinfo: %s", gai_strerror(error)); log_debugx("accepted connection from %s; portal group \"%s\"", - host, pg->pg_name); + host, pg->name()); log_set_peer_addr(host); setproctitle("%s", host); @@ -2088,8 +2250,8 @@ conf_new_from_file(const char *path, bool ucl) "going with defaults"); pg = portal_group_find(conf, "default"); assert(pg != NULL); - portal_group_add_portal(pg, "0.0.0.0", false); - portal_group_add_portal(pg, "[::]", false); + pg->add_portal("0.0.0.0", false); + pg->add_portal("[::]", false); } conf->conf_kernel_port_on = true; diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 3d9c30b31977..afd49d172d15 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -154,31 +154,79 @@ private: using portal_up = std::unique_ptr; -#define PG_FILTER_UNKNOWN 0 -#define PG_FILTER_NONE 1 -#define PG_FILTER_PORTAL 2 -#define PG_FILTER_PORTAL_NAME 3 -#define PG_FILTER_PORTAL_NAME_AUTH 4 +enum class discovery_filter { + UNKNOWN, + NONE, + PORTAL, + PORTAL_NAME, + PORTAL_NAME_AUTH +}; struct portal_group { - TAILQ_ENTRY(portal_group) pg_next; + portal_group(struct conf *conf, std::string_view name); + + struct conf *conf() const { return pg_conf; } + const char *name() const { return pg_name.c_str(); } + bool assigned() const { return pg_assigned; } + bool is_dummy() const; + bool is_redirecting() const { return !pg_redirection.empty(); } + struct auth_group *discovery_auth_group() const + { return pg_discovery_auth_group.get(); } + discovery_filter discovery_filter() const + { return pg_discovery_filter; } + int dscp() const { return pg_dscp; } + const char *offload() const { return pg_offload.c_str(); } + const char *redirection() const { return pg_redirection.c_str(); } + int pcp() const { return pg_pcp; } + uint16_t tag() const { return pg_tag; } + + freebsd::nvlist_up options() const; + + const std::list &portals() const { return pg_portals; } + const std::unordered_map &ports() const + { return pg_ports; } + + bool add_portal(const char *value, bool iser); + bool add_option(const char *name, const char *value); + bool set_discovery_auth_group(const char *name); + bool set_dscp(u_int dscp); + bool set_filter(const char *str); + void set_foreign(); + bool set_offload(const char *offload); + bool set_pcp(u_int pcp); + bool set_redirection(const char *addr); + void set_tag(uint16_t tag); + + void add_port(struct portal_group_port *port); + const struct port *find_port(std::string_view target) const; + void remove_port(struct portal_group_port *port); + void verify(struct conf *conf); + + bool reuse_socket(struct portal &newp); + int open_sockets(struct conf &oldconf); + void close_sockets(); + +private: struct conf *pg_conf; - nvlist_t *pg_options; - char *pg_name; + freebsd::nvlist_up pg_options; + std::string pg_name; auth_group_sp pg_discovery_auth_group; - int pg_discovery_filter = PG_FILTER_UNKNOWN; + enum discovery_filter pg_discovery_filter = + discovery_filter::UNKNOWN; bool pg_foreign = false; - bool pg_unassigned = false; + bool pg_assigned = false; std::list pg_portals; std::unordered_map pg_ports; - char *pg_offload = nullptr; - char *pg_redirection = nullptr; - int pg_dscp; - int pg_pcp; + std::string pg_offload; + std::string pg_redirection; + int pg_dscp = -1; + int pg_pcp = -1; - uint16_t pg_tag; + uint16_t pg_tag = 0; }; +using portal_group_up = std::unique_ptr; + struct port { port(struct target *target); virtual ~port() = default; @@ -292,12 +340,14 @@ struct isns { }; *** 277 LINES SKIPPED *** From nobody Mon Aug 4 19:46:59 2025 X-Original-To: dev-commits-src-main@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 4bwnBX213Qz63RK1; Mon, 04 Aug 2025 19:47:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBW2qx0z4Kx8; Mon, 04 Aug 2025 19:46:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1W0ERksIkdwxIgzJN91Ew/4Hd4yZJoej6D3XuSa3uRs=; b=QKmepijJVXARDlSCoZ/AlL/A9vG/nRJMa6wEuactBYzuN19OG291zmxiYaij+uf9G7hjXk YDdvFTokW1Er4Iy/ooWKOQHLswhrCQhs8EqBSOTsAQoY1dLWk/RqSyfRErL8MCI6ocHKEX zfDLt3Xppcd1m8v2QrLZ0mDuRl+8p1wBzfSzLfuunjJg4xC4+chRDAh3WK/A8tZo1R20ce SdPSdGXe9sCibdrJEZs+iH7GrUEA3EetJd0pKD10Q3SU/4osqHoYW9MpDRYEahlE99q+41 fWFYNI001znMvmHc63fQ3bT30/0vIZfsMCt+R0dcbNIcpu5jT5LIvEefXjlMQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1W0ERksIkdwxIgzJN91Ew/4Hd4yZJoej6D3XuSa3uRs=; b=U36U8Smpf5FqGWAYEuC93MMROLGdv4brogUZLXlRsrFvJCqqyDnhxSsmITMG2Ecx7NnSKN l9J9HWwFqqXUwo+YjhWGOUUbWuGyVJfNm4iIEtPhrh/rkJbaE/hbsSyx+4EXFrDUi2AqRt PskcS+TsQmdc15uwdEYcGu1QTjDYuAxknivLQUP1qW+ZzTilLMUm9jki+WrPfA9mMvePz7 nGtDYofTqnKeiHr5FcrBjik7i+6OOPW3zwIHrep0wT3VgMDSIVew5RzWU48sXn8KCpi3Q2 7oMAn5tHLoPJLdwPYCaordek8tu/V8HYTYLPILyjV6GrZmmkGzdzj9rrMDBa5w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336819; a=rsa-sha256; cv=none; b=oAvwZyS+qEloeD99Hr99XTkqdkTzDm96gnHZGERPMuzjRqxq+GRtNCqBMK4Ce748a7IE7b Oe1r6QBj+svD5rf+I9sGHfkWN5gWbhZ/BDovXjna4LX7GRZpE4fJvl02M3FIo0nk52TcI+ 5tHoxb4ouk5Cc9cBbbrJwDwjPa76fFondLuCMQhz0Jf6IfbpsElK/T3bC1dra/9Q32mHYd yAPAOOGLAkS0mEOXahbbad7p4TZz1eiFxUFNF2+UQmmNVf9Nz1AolM/BsOzTsoRVcdQhSS LDV+yoZu3QzFfFj7cC9KUt1O23Mdl2nkGMEQw6k4bunTU0sBRASFU++cImhVQg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBW2RZhz12nN; Mon, 04 Aug 2025 19:46:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574JkxZ5099429; Mon, 4 Aug 2025 19:46:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574JkxNP099425; Mon, 4 Aug 2025 19:46:59 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:46:59 GMT Message-Id: <202508041946.574JkxNP099425@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 0aa09b7a2a37 - main - ctld: Convert struct isns to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0aa09b7a2a37a437525d1b803ceb7342f37b3034 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0aa09b7a2a37a437525d1b803ceb7342f37b3034 commit 0aa09b7a2a37a437525d1b803ceb7342f37b3034 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct isns to a C++ class - Use std::string and freebsd::addrinfo_up for members. - Add methods to open a connection and to send a request and parse its response. - Refactor existing isns_do_* functions to just construct requests from a configuration. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 224 +++++++++++++++++++------------------------------- usr.sbin/ctld/ctld.hh | 27 ++++-- usr.sbin/ctld/isns.cc | 3 +- usr.sbin/ctld/isns.hh | 5 +- 4 files changed, 110 insertions(+), 149 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 8815034930b4..29bbea126273 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -103,7 +103,6 @@ conf_new(void) conf = new struct conf(); TAILQ_INIT(&conf->conf_luns); TAILQ_INIT(&conf->conf_targets); - TAILQ_INIT(&conf->conf_isns); conf->conf_isns_period = 900; conf->conf_isns_timeout = 5; @@ -119,7 +118,6 @@ conf_delete(struct conf *conf) { struct lun *lun, *ltmp; struct target *targ, *tmp; - struct isns *is, *istmp; assert(conf->conf_pidfh == NULL); @@ -127,8 +125,6 @@ conf_delete(struct conf *conf) lun_delete(lun); TAILQ_FOREACH_SAFE(targ, &conf->conf_targets, t_next, tmp) target_delete(targ); - TAILQ_FOREACH_SAFE(is, &conf->conf_isns, i_next, istmp) - isns_delete(is); free(conf->conf_pidfile_path); delete conf; } @@ -769,19 +765,14 @@ portal_group::close_sockets() bool isns_new(struct conf *conf, const char *addr) { - struct isns *isns; - - isns = reinterpret_cast(calloc(1, sizeof(*isns))); - if (isns == NULL) - log_err(1, "calloc"); - isns->i_conf = conf; - TAILQ_INSERT_TAIL(&conf->conf_isns, isns, i_next); - isns->i_addr = checked_strdup(addr); + if (conf->conf_isns.count(addr) > 0) { + log_warnx("duplicate iSNS address %s", addr); + return (false); + } - freebsd::addrinfo_up ai = parse_addr_port(isns->i_addr, "3205"); + freebsd::addrinfo_up ai = parse_addr_port(addr, "3205"); if (!ai) { - log_warnx("invalid iSNS address %s", isns->i_addr); - isns_delete(isns); + log_warnx("invalid iSNS address %s", addr); return (false); } @@ -790,49 +781,54 @@ isns_new(struct conf *conf, const char *addr) * those into multiple servers. */ - isns->i_ai = ai.release(); + conf->conf_isns.emplace(addr, isns(addr, std::move(ai))); return (true); } -void -isns_delete(struct isns *isns) +freebsd::fd_up +isns::connect() { + freebsd::fd_up s; - TAILQ_REMOVE(&isns->i_conf->conf_isns, isns, i_next); - free(isns->i_addr); - if (isns->i_ai != NULL) - freeaddrinfo(isns->i_ai); - free(isns); + s = socket(i_ai->ai_family, i_ai->ai_socktype, i_ai->ai_protocol); + if (!s) { + log_warn("socket(2) failed for %s", addr()); + return (s); + } + if (::connect(s, i_ai->ai_addr, i_ai->ai_addrlen)) { + log_warn("connect(2) failed for %s", addr()); + s.reset(); + } + return (s); } -static int -isns_do_connect(struct isns *isns) +bool +isns::send_request(int s, struct isns_req req) { - int s; - - s = socket(isns->i_ai->ai_family, isns->i_ai->ai_socktype, - isns->i_ai->ai_protocol); - if (s < 0) { - log_warn("socket(2) failed for %s", isns->i_addr); - return (-1); + if (!req.send(s)) { + log_warn("send(2) failed for %s", addr()); + return (false); } - if (connect(s, isns->i_ai->ai_addr, isns->i_ai->ai_addrlen)) { - log_warn("connect(2) failed for %s", isns->i_addr); - close(s); - return (-1); + if (!req.receive(s)) { + log_warn("receive(2) failed for %s", addr()); + return (false); } - return(s); + uint32_t error = req.get_status(); + if (error != 0) { + log_warnx("iSNS %s error %u for %s", req.descr(), error, + addr()); + return (false); + } + return (true); } -static void -isns_do_register(struct isns *isns, int s, const char *hostname) +static struct isns_req +isns_register_request(struct conf *conf, const char *hostname) { - struct conf *conf = isns->i_conf; struct target *target; const struct portal_group *pg; - uint32_t error; - isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT); + isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT, "register"); req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); req.add_delim(); req.add_str(1, hostname); @@ -864,84 +860,43 @@ isns_do_register(struct isns *isns, int s, const char *hostname) } } } - if (!req.send(s)) { - log_warn("send(2) failed for %s", isns->i_addr); - return; - } - if (!req.receive(s)) { - log_warn("receive(2) failed for %s", isns->i_addr); - return; - } - error = req.get_status(); - if (error != 0) { - log_warnx("iSNS register error %d for %s", error, isns->i_addr); - } + return (req); } -static bool -isns_do_check(struct isns *isns, int s, const char *hostname) +static struct isns_req +isns_check_request(struct conf *conf, const char *hostname) { - struct conf *conf = isns->i_conf; - uint32_t error; - - isns_req req(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT); + isns_req req(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT, "check"); req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); req.add_str(1, hostname); req.add_delim(); req.add(2, 0, NULL); - if (!req.send(s)) { - log_warn("send(2) failed for %s", isns->i_addr); - return (false); - } - if (!req.receive(s)) { - log_warn("receive(2) failed for %s", isns->i_addr); - return (false); - } - error = req.get_status(); - if (error != 0) { - log_warnx("iSNS check error %d for %s", error, isns->i_addr); - return (false); - } - return (true); + return (req); } -static void -isns_do_deregister(struct isns *isns, int s, const char *hostname) +static struct isns_req +isns_deregister_request(struct conf *conf, const char *hostname) { - struct conf *conf = isns->i_conf; - uint32_t error; - - isns_req req(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT); + isns_req req(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT, "deregister"); req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); req.add_delim(); req.add_str(1, hostname); - if (!req.send(s)) { - log_warn("send(2) failed for %s", isns->i_addr); - return; - } - if (!req.receive(s)) { - log_warn("receive(2) failed for %s", isns->i_addr); - return; - } - error = req.get_status(); - if (error != 0) { - log_warnx("iSNS deregister error %d for %s", error, isns->i_addr); - } + return (req); } void -isns_register(struct isns *isns, struct isns *oldisns) +isns_register_targets(struct conf *conf, struct isns *isns, + struct conf *oldconf) { - struct conf *conf = isns->i_conf; - int error, s; + int error; char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); - s = isns_do_connect(isns); - if (s < 0) { + freebsd::fd_up s = isns->connect(); + if (!s) { set_timeout(0, false); return; } @@ -949,27 +904,26 @@ isns_register(struct isns *isns, struct isns *oldisns) if (error != 0) log_err(1, "gethostname"); - if (oldisns == NULL || TAILQ_EMPTY(&oldisns->i_conf->conf_targets)) - oldisns = isns; - isns_do_deregister(oldisns, s, hostname); - isns_do_register(isns, s, hostname); - close(s); + if (oldconf == NULL || TAILQ_EMPTY(&oldconf->conf_targets)) + oldconf = conf; + isns->send_request(s, isns_deregister_request(oldconf, hostname)); + isns->send_request(s, isns_register_request(conf, hostname)); + s.reset(); set_timeout(0, false); } void -isns_check(struct isns *isns) +isns_check(struct conf *conf, struct isns *isns) { - struct conf *conf = isns->i_conf; - int error, s; + int error; char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); - s = isns_do_connect(isns); - if (s < 0) { + freebsd::fd_up s = isns->connect(); + if (!s) { set_timeout(0, false); return; } @@ -977,34 +931,33 @@ isns_check(struct isns *isns) if (error != 0) log_err(1, "gethostname"); - if (!isns_do_check(isns, s, hostname)) { - isns_do_deregister(isns, s, hostname); - isns_do_register(isns, s, hostname); + if (!isns->send_request(s, isns_check_request(conf, hostname))) { + isns->send_request(s, isns_deregister_request(conf, hostname)); + isns->send_request(s, isns_register_request(conf, hostname)); } - close(s); + s.reset(); set_timeout(0, false); } void -isns_deregister(struct isns *isns) +isns_deregister_targets(struct conf *conf, struct isns *isns) { - struct conf *conf = isns->i_conf; - int error, s; + int error; char hostname[256]; if (TAILQ_EMPTY(&conf->conf_targets) || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); - s = isns_do_connect(isns); - if (s < 0) + freebsd::fd_up s = isns->connect(); + if (!s) return; error = gethostname(hostname, sizeof(hostname)); if (error != 0) log_err(1, "gethostname"); - isns_do_deregister(isns, s, hostname); - close(s); + isns->send_request(s, isns_deregister_request(conf, hostname)); + s.reset(); set_timeout(0, false); } @@ -1608,7 +1561,6 @@ static int conf_apply(struct conf *oldconf, struct conf *newconf) { struct lun *oldlun, *newlun, *tmplun; - struct isns *oldns, *newns; int changed, cumulated_error = 0, error; if (oldconf->conf_debug != newconf->conf_debug) { @@ -1653,13 +1605,9 @@ conf_apply(struct conf *oldconf, struct conf *newconf) } /* Deregister on removed iSNS servers. */ - TAILQ_FOREACH(oldns, &oldconf->conf_isns, i_next) { - TAILQ_FOREACH(newns, &newconf->conf_isns, i_next) { - if (strcmp(oldns->i_addr, newns->i_addr) == 0) - break; - } - if (newns == NULL) - isns_deregister(oldns); + for (auto &kv : oldconf->conf_isns) { + if (newconf->conf_isns.count(kv.first) == 0) + isns_deregister_targets(oldconf, &kv.second); } /* @@ -1856,16 +1804,16 @@ conf_apply(struct conf *oldconf, struct conf *newconf) } /* (Re-)Register on remaining/new iSNS servers. */ - TAILQ_FOREACH(newns, &newconf->conf_isns, i_next) { - TAILQ_FOREACH(oldns, &oldconf->conf_isns, i_next) { - if (strcmp(oldns->i_addr, newns->i_addr) == 0) - break; - } - isns_register(newns, oldns); + for (auto &kv : newconf->conf_isns) { + auto it = oldconf->conf_isns.find(kv.first); + if (it == oldconf->conf_isns.end()) + isns_register_targets(newconf, &kv.second, nullptr); + else + isns_register_targets(newconf, &kv.second, oldconf); } /* Schedule iSNS update */ - if (!TAILQ_EMPTY(&newconf->conf_isns)) + if (!newconf->conf_isns.empty()) set_timeout((newconf->conf_isns_period + 2) / 3, false); return (cumulated_error); @@ -2316,7 +2264,6 @@ main(int argc, char **argv) { struct kports kports; struct conf *oldconf, *newconf, *tmpconf; - struct isns *newns; const char *config_path = DEFAULT_CONFIG_PATH; int debug = 0, ch, error; pid_t otherpid; @@ -2416,7 +2363,7 @@ main(int argc, char **argv) pidfile_write(newconf->conf_pidfh); /* Schedule iSNS update */ - if (!TAILQ_EMPTY(&newconf->conf_isns)) + if (!newconf->conf_isns.empty()) set_timeout((newconf->conf_isns_period + 2) / 3, false); for (;;) { @@ -2475,10 +2422,11 @@ main(int argc, char **argv) assert(nchildren >= 0); if (timed_out()) { set_timeout(0, false); - TAILQ_FOREACH(newns, &newconf->conf_isns, i_next) - isns_check(newns); + for (auto &kv : newconf->conf_isns) + isns_check(newconf, &kv.second); + /* Schedule iSNS update */ - if (!TAILQ_EMPTY(&newconf->conf_isns)) { + if (!newconf->conf_isns.empty()) { set_timeout((newconf->conf_isns_period + 2) / 3, false); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index afd49d172d15..5ccb24160eac 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -57,6 +57,7 @@ #define MAX_LUNS 1024 #define SOCKBUF_SIZE 1048576 +struct isns_req; struct port; struct auth { @@ -333,10 +334,17 @@ struct target { }; struct isns { - TAILQ_ENTRY(isns) i_next; - struct conf *i_conf; - char *i_addr; - struct addrinfo *i_ai; + isns(std::string_view addr, freebsd::addrinfo_up ai) : + i_addr(addr), i_ai(std::move(ai)) {} + + const char *addr() const { return i_addr.c_str(); } + + freebsd::fd_up connect(); + bool send_request(int s, struct isns_req req); + +private: + std::string i_addr; + freebsd::addrinfo_up i_ai; }; struct conf { @@ -348,7 +356,7 @@ struct conf { std::unordered_map conf_auth_groups; std::unordered_map> conf_ports; std::unordered_map conf_portal_groups; - TAILQ_HEAD(, isns) conf_isns; + std::unordered_map conf_isns; int conf_isns_period; int conf_isns_timeout; int conf_debug; @@ -439,10 +447,11 @@ struct portal_group *portal_group_new(struct conf *conf, const char *name); struct portal_group *portal_group_find(struct conf *conf, const char *name); bool isns_new(struct conf *conf, const char *addr); -void isns_delete(struct isns *is); -void isns_register(struct isns *isns, struct isns *oldisns); -void isns_check(struct isns *isns); -void isns_deregister(struct isns *isns); +void isns_check(struct conf *conf, struct isns *isns); +void isns_deregister_targets(struct conf *conf, + struct isns *isns); +void isns_register_targets(struct conf *conf, + struct isns *isns, struct conf *oldconf); bool port_new(struct conf *conf, struct target *target, struct portal_group *pg, auth_group_sp ag); diff --git a/usr.sbin/ctld/isns.cc b/usr.sbin/ctld/isns.cc index 9e27999d2bf9..9877a4bc000d 100644 --- a/usr.sbin/ctld/isns.cc +++ b/usr.sbin/ctld/isns.cc @@ -43,7 +43,8 @@ #include "ctld.hh" #include "isns.hh" -isns_req::isns_req(uint16_t func, uint16_t flags) +isns_req::isns_req(uint16_t func, uint16_t flags, const char *descr) + : ir_descr(descr) { struct isns_hdr hdr; diff --git a/usr.sbin/ctld/isns.hh b/usr.sbin/ctld/isns.hh index 79a288f7d133..08a479626338 100644 --- a/usr.sbin/ctld/isns.hh +++ b/usr.sbin/ctld/isns.hh @@ -71,7 +71,9 @@ struct isns_tlv { struct isns_req { isns_req() {} - isns_req(uint16_t func, uint16_t flags); + isns_req(uint16_t func, uint16_t flags, const char *descr); + + const char *descr() const { return ir_descr; } void add(uint32_t tag, uint32_t len, const void *value); void add_delim(); @@ -87,6 +89,7 @@ private: void append(const void *buf, size_t len); std::vector ir_buf; + const char *ir_descr; }; #endif /* __ISNS_HH__ */ From nobody Mon Aug 4 19:47:01 2025 X-Original-To: dev-commits-src-main@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 4bwnBZ4Kxwz63Rgl; Mon, 04 Aug 2025 19:47:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBY54C2z4Kq6; Mon, 04 Aug 2025 19:47:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336821; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FdZWB3QQUkwTfrUoKkqwX+1/EKk1Dl9K8mwUedx6slA=; b=lxq2JhPmz7gxbSvvKO2zr5b6kv0quTl8zNic9VCAYV3VRfmy7O0KsvQDMZQeNpf+Mv0vGw ZccF2DPMnOk7lKx1OO0HIlF6KiYCgyADBd288UEBHv+ZvAtggX1Vzz8rfair1GTP1alHt5 miMxDfa/LEGCAIYM62Nfpee7jw/GFe33qsCcS4khhR6qdlkJhVQjdMX39rauofS4DaBjba zbs9WeEogcv64lbIVbenZRneQYV4tZ8tL9EL0WHpTG/Df7+HeEMwHQCVt5d/Db5cvqkIkB xR1lGmTl7G6aTzEkGJvDNeMDPbdnemEW2u+bqryd9wlZnM4esIR5ERLt8FfzHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336821; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FdZWB3QQUkwTfrUoKkqwX+1/EKk1Dl9K8mwUedx6slA=; b=elWOltLHrDhNhkJARSWryYy9kaJj1ULTrdN24GRYKRAreLavGC7SthVKWh0G8z+lU6Aqc3 5EdzZK/x4tOH42sgtuWcMVTFmtowBEObZEKZmHwc2EGM+FBUe4FTur91rri/yxXV45a4S5 +fNY3a8sev0qjsAirpD42neSCC5sKWsrfQEmAUSiMuFkg+G33CaHG//mTy3XgpWehv5Wm4 4/T+wvZ1i/sSu9GyB5Zc9TaBpnlp88ZyLdZSTMvLYkbpez+/5kSPOhcdkSt9sMFDt3sieF +1qrHUcueUX/2DlVNpL0z38FY2VCXEPDKskzJBGWra29Yp9gcmUTcWGm26polg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336821; a=rsa-sha256; cv=none; b=AuKmuadussV/ziZmC0iyrt1TecCweI4+kYvPhVJxbNzk01LDGz5b1okkgGbNfoc6aUwH2Y 2rVCGY5uRnFY6M2BRLgVqF7Hz8Gc8BMV6rcY05BwTKJSwARWAoVx6ZQNkJ4JAroWtNytBv Z5A8vzucmYUyh5j2nSNaGDLhjeVJeISZLq5N1WSxaEbaoHXXc1mKiCC7gvA3Df7FAJ599U C3XrNUcZX93N7GJOcrGJzaeU1MhQUHPOeZv/Eklj7aEgJ8fJq2EsFAI7WZKPenV2HfL+oO I6+eCvjsiHFd4575KqOWe+uj4YH9kxkGdGJxfQeDJWa5TfQijWdZj5wa5ppwCw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBY3x2Fz12nP; Mon, 04 Aug 2025 19:47:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl1Ll099508; Mon, 4 Aug 2025 19:47:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl1xa099505; Mon, 4 Aug 2025 19:47:01 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:01 GMT Message-Id: <202508041947.574Jl1xa099505@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 2bb9180bb5d0 - main - ctld: Convert struct target to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2bb9180bb5d0054bf79529d6a1cb56b61a94629a Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=2bb9180bb5d0054bf79529d6a1cb56b61a94629a commit 2bb9180bb5d0054bf79529d6a1cb56b61a94629a Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct target to a C++ class - Use std::string for string members. - Use std::array for the array of LUN pointers indexed by LUN id. - Move meat of the target_* functions from conf.cc into class methods. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 165 ++---------------- usr.sbin/ctld/ctld.cc | 406 ++++++++++++++++++++++++++++++++------------- usr.sbin/ctld/ctld.hh | 55 +++++- usr.sbin/ctld/discovery.cc | 16 +- usr.sbin/ctld/kernel.cc | 28 ++-- usr.sbin/ctld/login.cc | 22 +-- 6 files changed, 384 insertions(+), 308 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 8913cccd5889..81451009067c 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -341,217 +341,78 @@ target_finish(void) target = NULL; } -static bool -target_use_private_auth(const char *keyword) -{ - if (target->t_auth_group != nullptr) { - if (!target->t_private_auth) { - log_warnx("cannot use both auth-group and " - "%s for target \"%s\"", keyword, target->t_name); - return (false); - } - } else { - target->t_auth_group = auth_group_new(target); - if (target->t_auth_group == nullptr) - return (false); - target->t_private_auth = true; - } - return (true); -} - bool target_add_chap(const char *user, const char *secret) { - if (!target_use_private_auth("chap")) - return (false); - return (target->t_auth_group->add_chap(user, secret)); + return (target->add_chap(user, secret)); } bool target_add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2) { - if (!target_use_private_auth("chap-mutual")) - return (false); - return (target->t_auth_group->add_chap_mutual(user, secret, user2, - secret2)); + return (target->add_chap_mutual(user, secret, user2, secret2)); } bool target_add_initiator_name(const char *name) { - if (!target_use_private_auth("initiator-name")) - return (false); - return (target->t_auth_group->add_initiator_name(name)); + return (target->add_initiator_name(name)); } bool target_add_initiator_portal(const char *addr) { - if (!target_use_private_auth("initiator-portal")) - return (false); - return (target->t_auth_group->add_initiator_portal(addr)); + return (target->add_initiator_portal(addr)); } bool target_add_lun(u_int id, const char *name) { - struct lun *t_lun; - - if (id >= MAX_LUNS) { - log_warnx("LUN %u too big for target \"%s\"", id, - target->t_name); - return (false); - } - - if (target->t_luns[id] != NULL) { - log_warnx("duplicate LUN %u for target \"%s\"", id, - target->t_name); - return (false); - } - - t_lun = lun_find(conf, name); - if (t_lun == NULL) { - log_warnx("unknown LUN named %s used for target \"%s\"", - name, target->t_name); - return (false); - } - - target->t_luns[id] = t_lun; - return (true); + return (target->add_lun(id, name)); } bool target_add_portal_group(const char *pg_name, const char *ag_name) { - struct portal_group *pg; - auth_group_sp ag; - - pg = portal_group_find(conf, pg_name); - if (pg == NULL) { - log_warnx("unknown portal-group \"%s\" for target \"%s\"", - pg_name, target->t_name); - return (false); - } - - if (ag_name != NULL) { - ag = auth_group_find(conf, ag_name); - if (ag == NULL) { - log_warnx("unknown auth-group \"%s\" for target \"%s\"", - ag_name, target->t_name); - return (false); - } - } - - if (!port_new(conf, target, pg, std::move(ag))) { - log_warnx("can't link portal-group \"%s\" to target \"%s\"", - pg_name, target->t_name); - return (false); - } - return (true); + return (target->add_portal_group(pg_name, ag_name)); } bool target_set_alias(const char *alias) { - if (target->t_alias != NULL) { - log_warnx("alias for target \"%s\" specified more than once", - target->t_name); - return (false); - } - target->t_alias = checked_strdup(alias); - return (true); + return (target->set_alias(alias)); } bool target_set_auth_group(const char *name) { - if (target->t_auth_group != nullptr) { - if (target->t_private_auth) - log_warnx("cannot use both auth-group and explicit " - "authorisations for target \"%s\"", target->t_name); - else - log_warnx("auth-group for target \"%s\" " - "specified more than once", target->t_name); - return (false); - } - target->t_auth_group = auth_group_find(conf, name); - if (target->t_auth_group == nullptr) { - log_warnx("unknown auth-group \"%s\" for target \"%s\"", name, - target->t_name); - return (false); - } - return (true); + return (target->set_auth_group(name)); } bool target_set_auth_type(const char *type) { - if (!target_use_private_auth("auth-type")) - return (false); - return (target->t_auth_group->set_type(type)); + return (target->set_auth_type(type)); } bool target_set_physical_port(const char *pport) { - if (target->t_pport != NULL) { - log_warnx("cannot set multiple physical ports for target " - "\"%s\"", target->t_name); - return (false); - } - target->t_pport = checked_strdup(pport); - return (true); + return (target->set_physical_port(pport)); } bool target_set_redirection(const char *addr) { - - if (target->t_redirection != NULL) { - log_warnx("cannot set redirection to \"%s\" for " - "target \"%s\"; already defined", - addr, target->t_name); - return (false); - } - - target->t_redirection = checked_strdup(addr); - - return (true); + return (target->set_redirection(addr)); } bool target_start_lun(u_int id) { - struct lun *new_lun; - char *name; - - if (id >= MAX_LUNS) { - log_warnx("LUN %u too big for target \"%s\"", id, - target->t_name); - return (false); - } - - if (target->t_luns[id] != NULL) { - log_warnx("duplicate LUN %u for target \"%s\"", id, - target->t_name); - return (false); - } - - if (asprintf(&name, "%s,lun,%u", target->t_name, id) <= 0) - log_err(1, "asprintf"); - - new_lun = lun_new(conf, name); - if (new_lun == NULL) - return (false); - - new_lun->set_scsiname(name); - free(name); - - target->t_luns[id] = new_lun; - - lun = new_lun; - return (true); + lun = target->start_lun(id); + return (lun != nullptr); } bool diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 1dbc6988b9d1..2aaba32ed101 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -51,6 +51,7 @@ #include #include +#include #include #include "conf.h" @@ -101,7 +102,6 @@ conf_new(void) struct conf *conf; conf = new struct conf(); - TAILQ_INIT(&conf->conf_targets); conf->conf_isns_period = 900; conf->conf_isns_timeout = 5; @@ -115,12 +115,8 @@ conf_new(void) void conf_delete(struct conf *conf) { - struct target *targ, *tmp; - assert(conf->conf_pidfh == NULL); - TAILQ_FOREACH_SAFE(targ, &conf->conf_targets, t_next, tmp) - target_delete(targ); free(conf->conf_pidfile_path); delete conf; } @@ -410,13 +406,6 @@ auth_group_new(struct conf *conf, const char *name) return (pair.first->second.get()); } -auth_group_sp -auth_group_new(struct target *target) -{ - return (std::make_shared(freebsd::stringf("target \"%s\"", - target->t_name))); -} - auth_group_sp auth_group_find(const struct conf *conf, const char *name) { @@ -516,13 +505,13 @@ parse_addr_port(const char *address, const char *def_port) void portal_group::add_port(struct portal_group_port *port) { - pg_ports.emplace(port->target()->t_name, port); + pg_ports.emplace(port->target()->name(), port); } void portal_group::remove_port(struct portal_group_port *port) { - auto it = pg_ports.find(port->target()->t_name); + auto it = pg_ports.find(port->target()->name()); pg_ports.erase(it); } @@ -821,11 +810,10 @@ isns::send_request(int s, struct isns_req req) static struct isns_req isns_register_request(struct conf *conf, const char *hostname) { - struct target *target; const struct portal_group *pg; isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT, "register"); - req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_str(32, conf->conf_first_target->name()); req.add_delim(); req.add_str(1, hostname); req.add_32(2, 2); /* 2 -- iSCSI */ @@ -840,12 +828,14 @@ isns_register_request(struct conf *conf, const char *hostname) req.add_port(17, portal->ai()); } } - TAILQ_FOREACH(target, &conf->conf_targets, t_next) { - req.add_str(32, target->t_name); + for (const auto &kv : conf->conf_targets) { + const struct target *target = kv.second.get(); + + req.add_str(32, target->name()); req.add_32(33, 1); /* 1 -- Target*/ - if (target->t_alias != NULL) - req.add_str(34, target->t_alias); - for (const port *port : target->t_ports) { + if (target->has_alias()) + req.add_str(34, target->alias()); + for (const port *port : target->ports()) { pg = port->portal_group(); if (pg == nullptr) continue; @@ -863,7 +853,7 @@ static struct isns_req isns_check_request(struct conf *conf, const char *hostname) { isns_req req(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT, "check"); - req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_str(32, conf->conf_first_target->name()); req.add_str(1, hostname); req.add_delim(); req.add(2, 0, NULL); @@ -874,7 +864,7 @@ static struct isns_req isns_deregister_request(struct conf *conf, const char *hostname) { isns_req req(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT, "deregister"); - req.add_str(32, TAILQ_FIRST(&conf->conf_targets)->t_name); + req.add_str(32, conf->conf_first_target->name()); req.add_delim(); req.add_str(1, hostname); return (req); @@ -887,8 +877,7 @@ isns_register_targets(struct conf *conf, struct isns *isns, int error; char hostname[256]; - if (TAILQ_EMPTY(&conf->conf_targets) || - conf->conf_portal_groups.empty()) + if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); freebsd::fd_up s = isns->connect(); @@ -900,7 +889,7 @@ isns_register_targets(struct conf *conf, struct isns *isns, if (error != 0) log_err(1, "gethostname"); - if (oldconf == NULL || TAILQ_EMPTY(&oldconf->conf_targets)) + if (oldconf == nullptr || oldconf->conf_first_target == nullptr) oldconf = conf; isns->send_request(s, isns_deregister_request(oldconf, hostname)); isns->send_request(s, isns_register_request(conf, hostname)); @@ -914,8 +903,7 @@ isns_check(struct conf *conf, struct isns *isns) int error; char hostname[256]; - if (TAILQ_EMPTY(&conf->conf_targets) || - conf->conf_portal_groups.empty()) + if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); freebsd::fd_up s = isns->connect(); @@ -941,8 +929,7 @@ isns_deregister_targets(struct conf *conf, struct isns *isns) int error; char hostname[256]; - if (TAILQ_EMPTY(&conf->conf_targets) || - conf->conf_portal_groups.empty()) + if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) return; set_timeout(conf->conf_isns_timeout, false); freebsd::fd_up s = isns->connect(); @@ -987,13 +974,13 @@ kports::find_port(std::string_view name) port::port(struct target *target) : p_target(target) { - target->t_ports.push_back(this); + target->add_port(this); } void port::clear_references() { - p_target->t_ports.remove(this); + p_target->remove_port(this); } portal_group_port::portal_group_port(struct target *target, @@ -1029,7 +1016,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg, auth_group_sp ag) { std::string name = freebsd::stringf("%s-%s", pg->name(), - target->t_name); + target->name()); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pg, ag)); if (!pair.second) { @@ -1045,7 +1032,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg, uint32_t ctl_port) { std::string name = freebsd::stringf("%s-%s", pg->name(), - target->t_name); + target->name()); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pg, ctl_port)); if (!pair.second) { @@ -1060,7 +1047,7 @@ static bool port_new_pp(struct conf *conf, struct target *target, struct pport *pp) { std::string name = freebsd::stringf("%s-%s", pp->name(), - target->t_name); + target->name()); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pp)); if (!pair.second) { @@ -1084,7 +1071,7 @@ port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, if (pport != NULL) return (port_new_pp(conf, target, pport)); - std::string name = pname + "-" + target->t_name; + std::string name = pname + "-" + target->name(); const auto &pair = conf->conf_ports.try_emplace(name, std::make_unique(target, pp, vp)); if (!pair.second) { @@ -1107,55 +1094,280 @@ portal_group::find_port(std::string_view target) const struct target * target_new(struct conf *conf, const char *name) { - struct target *targ; - int i, len; + if (!valid_iscsi_name(name, log_warnx)) + return (nullptr); + + /* + * RFC 3722 requires us to normalize the name to lowercase. + */ + std::string t_name(name); + for (char &c : t_name) + c = tolower(c); - targ = target_find(conf, name); - if (targ != NULL) { + auto const &pair = conf->conf_targets.try_emplace(t_name, + std::make_unique(conf, t_name)); + if (!pair.second) { log_warnx("duplicated target \"%s\"", name); return (NULL); } - if (valid_iscsi_name(name, log_warnx) == false) { - return (NULL); + + if (conf->conf_first_target == nullptr) + conf->conf_first_target = pair.first->second.get(); + return (pair.first->second.get()); +} + +struct target * +target_find(struct conf *conf, const char *name) +{ + auto it = conf->conf_targets.find(name); + if (it == conf->conf_targets.end()) + return (nullptr); + return (it->second.get()); +} + +bool +target::use_private_auth(const char *keyword) +{ + if (t_private_auth) + return (true); + + if (t_auth_group != nullptr) { + log_warnx("cannot use both auth-group and %s for target \"%s\"", + keyword, name()); + return (false); } - targ = new target(); - targ->t_name = checked_strdup(name); - /* - * RFC 3722 requires us to normalize the name to lowercase. - */ - len = strlen(name); - for (i = 0; i < len; i++) - targ->t_name[i] = tolower(targ->t_name[i]); + std::string label = freebsd::stringf("target \"%s\"", name()); + t_auth_group = std::make_shared(label); + t_private_auth = true; + return (true); +} + +bool +target::add_chap(const char *user, const char *secret) +{ + if (!use_private_auth("chap")) + return (false); + return (t_auth_group->add_chap(user, secret)); +} + +bool +target::add_chap_mutual(const char *user, const char *secret, + const char *user2, const char *secret2) +{ + if (!use_private_auth("chap-mutual")) + return (false); + return (t_auth_group->add_chap_mutual(user, secret, user2, secret2)); +} + +bool +target::add_initiator_name(std::string_view name) +{ + if (!use_private_auth("initiator-name")) + return (false); + return (t_auth_group->add_initiator_name(name)); +} + +bool +target::add_initiator_portal(const char *addr) +{ + if (!use_private_auth("initiator-portal")) + return (false); + return (t_auth_group->add_initiator_portal(addr)); +} + +bool +target::add_lun(u_int id, const char *lun_name) +{ + struct lun *t_lun; + + if (id >= MAX_LUNS) { + log_warnx("LUN %u too big for target \"%s\"", id, name()); + return (false); + } + + if (t_luns[id] != NULL) { + log_warnx("duplicate LUN %u for target \"%s\"", id, name()); + return (false); + } + + t_lun = lun_find(t_conf, lun_name); + if (t_lun == NULL) { + log_warnx("unknown LUN named %s used for target \"%s\"", + lun_name, name()); + return (false); + } + + t_luns[id] = t_lun; + return (true); +} + +bool +target::add_portal_group(const char *pg_name, const char *ag_name) +{ + struct portal_group *pg; + auth_group_sp ag; + + pg = portal_group_find(t_conf, pg_name); + if (pg == NULL) { + log_warnx("unknown portal-group \"%s\" for target \"%s\"", + pg_name, name()); + return (false); + } + + if (ag_name != NULL) { + ag = auth_group_find(t_conf, ag_name); + if (ag == NULL) { + log_warnx("unknown auth-group \"%s\" for target \"%s\"", + ag_name, name()); + return (false); + } + } + + if (!port_new(t_conf, this, pg, std::move(ag))) { + log_warnx("can't link portal-group \"%s\" to target \"%s\"", + pg_name, name()); + return (false); + } + return (true); +} + +bool +target::set_alias(std::string_view alias) +{ + if (has_alias()) { + log_warnx("alias for target \"%s\" specified more than once", + name()); + return (false); + } + t_alias = alias; + return (true); +} + +bool +target::set_auth_group(const char *ag_name) +{ + if (t_auth_group != nullptr) { + if (t_private_auth) + log_warnx("cannot use both auth-group and explicit " + "authorisations for target \"%s\"", name()); + else + log_warnx("auth-group for target \"%s\" " + "specified more than once", name()); + return (false); + } + t_auth_group = auth_group_find(t_conf, ag_name); + if (t_auth_group == nullptr) { + log_warnx("unknown auth-group \"%s\" for target \"%s\"", + ag_name, name()); + return (false); + } + return (true); +} + +bool +target::set_auth_type(const char *type) +{ + if (!use_private_auth("auth-type")) + return (false); + return (t_auth_group->set_type(type)); +} + +bool +target::set_physical_port(std::string_view pport) +{ + if (!t_pport.empty()) { + log_warnx("cannot set multiple physical ports for target " + "\"%s\"", name()); + return (false); + } + t_pport = pport; + return (true); +} + +bool +target::set_redirection(const char *addr) +{ + if (!t_redirection.empty()) { + log_warnx("cannot set redirection to \"%s\" for " + "target \"%s\"; already defined", + addr, name()); + return (false); + } - targ->t_conf = conf; - TAILQ_INSERT_TAIL(&conf->conf_targets, targ, t_next); + t_redirection = addr; + return (true); +} + +struct lun * +target::start_lun(u_int id) +{ + struct lun *new_lun; - return (targ); + if (id >= MAX_LUNS) { + log_warnx("LUN %u too big for target \"%s\"", id, + name()); + return (nullptr); + } + + if (t_luns[id] != NULL) { + log_warnx("duplicate LUN %u for target \"%s\"", id, + name()); + return (nullptr); + } + + std::string lun_name = freebsd::stringf("%s,lun,%u", name(), id); + new_lun = lun_new(t_conf, lun_name.c_str()); + if (new_lun == nullptr) + return (nullptr); + + new_lun->set_scsiname(lun_name.c_str()); + + t_luns[id] = new_lun; + + return (new_lun); } void -target_delete(struct target *targ) +target::add_port(struct port *port) { - TAILQ_REMOVE(&targ->t_conf->conf_targets, targ, t_next); + t_ports.push_back(port); +} - free(targ->t_pport); - free(targ->t_name); - free(targ->t_redirection); - delete targ; +void +target::remove_port(struct port *port) +{ + t_ports.remove(port); } -struct target * -target_find(struct conf *conf, const char *name) +void +target::remove_lun(struct lun *lun) { - struct target *targ; + /* XXX: clang is not able to deduce the type without the cast. */ + std::replace(t_luns.begin(), t_luns.end(), lun, + static_cast(nullptr)); +} - TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { - if (strcasecmp(targ->t_name, name) == 0) - return (targ); +void +target::verify() +{ + if (t_auth_group == nullptr) { + t_auth_group = auth_group_find(t_conf, "default"); + assert(t_auth_group != nullptr); + } + if (t_ports.empty()) { + struct portal_group *pg = portal_group_find(t_conf, "default"); + assert(pg != NULL); + port_new(t_conf, this, pg, nullptr); } - return (NULL); + bool found = std::any_of(t_luns.begin(), t_luns.end(), + [](struct lun *lun) { return (lun != nullptr); }); + if (!found && t_redirection.empty()) + log_warnx("no LUNs defined for target \"%s\"", name()); + if (found && !t_redirection.empty()) + log_debugx("target \"%s\" contains luns, but configured " + "for redirection", name()); } lun::lun(struct conf *conf, std::string_view name) @@ -1178,15 +1390,8 @@ lun_new(struct conf *conf, const char *name) static void conf_delete_target_luns(struct conf *conf, struct lun *lun) { - struct target *targ; - int i; - - TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { - for (i = 0; i < MAX_LUNS; i++) { - if (targ->t_luns[i] == lun) - targ->t_luns[i] = NULL; - } - } + for (const auto &kv : conf->conf_targets) + kv.second->remove_lun(lun); } struct lun * @@ -1518,11 +1723,6 @@ lun::verify() bool conf_verify(struct conf *conf) { - struct portal_group *pg; - struct target *targ; - bool found; - int i; - if (conf->conf_pidfile_path == NULL) conf->conf_pidfile_path = checked_strdup(DEFAULT_PIDFILE); @@ -1546,31 +1746,8 @@ conf_verify(struct conf *conf) } } - TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { - if (targ->t_auth_group == NULL) { - targ->t_auth_group = auth_group_find(conf, - "default"); - assert(targ->t_auth_group != NULL); - } - if (targ->t_ports.empty()) { - pg = portal_group_find(conf, "default"); - assert(pg != NULL); - port_new(conf, targ, pg, nullptr); - } - found = false; - for (i = 0; i < MAX_LUNS; i++) { - if (targ->t_luns[i] != NULL) - found = true; - } - if (!found && targ->t_redirection == NULL) { - log_warnx("no LUNs defined for target \"%s\"", - targ->t_name); - } - if (found && targ->t_redirection != NULL) { - log_debugx("target \"%s\" contains luns, " - " but configured for redirection", - targ->t_name); - } + for (auto &kv : conf->conf_targets) { + kv.second->verify(); } for (auto &kv : conf->conf_portal_groups) { kv.second->verify(conf); @@ -2361,40 +2538,41 @@ conf_new_from_file(const char *path, bool ucl) static bool new_pports_from_conf(struct conf *conf, struct kports &kports) { - struct target *targ; struct pport *pp; int ret, i_pp, i_vp; - TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { - if (!targ->t_pport) + for (auto &kv : conf->conf_targets) { + struct target *targ = kv.second.get(); + + if (!targ->has_pport()) continue; - ret = sscanf(targ->t_pport, "ioctl/%d/%d", &i_pp, &i_vp); + ret = sscanf(targ->pport(), "ioctl/%d/%d", &i_pp, &i_vp); if (ret > 0) { if (!port_new_ioctl(conf, kports, targ, i_pp, i_vp)) { log_warnx("can't create new ioctl port " - "for target \"%s\"", targ->t_name); + "for target \"%s\"", targ->name()); return (false); } continue; } - pp = kports.find_port(targ->t_pport); + pp = kports.find_port(targ->pport()); if (pp == NULL) { log_warnx("unknown port \"%s\" for target \"%s\"", - targ->t_pport, targ->t_name); + targ->pport(), targ->name()); return (false); } if (pp->linked()) { log_warnx("can't link port \"%s\" to target \"%s\", " "port already linked to some target", - targ->t_pport, targ->t_name); + targ->pport(), targ->name()); return (false); } if (!port_new_pp(conf, targ, pp)) { log_warnx("can't link port \"%s\" to target \"%s\"", - targ->t_pport, targ->t_name); + targ->pport(), targ->name()); return (false); } } diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 7fb0ed7a8bea..a242a3282b31 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -347,16 +348,53 @@ private: }; struct target { - TAILQ_ENTRY(target) t_next; + target(struct conf *conf, std::string_view name) : + t_conf(conf), t_name(name) {} + + bool has_alias() const { return !t_alias.empty(); } + bool has_pport() const { return !t_pport.empty(); } + bool has_redirection() const { return !t_redirection.empty(); } + const char *alias() const { return t_alias.c_str(); } + const char *name() const { return t_name.c_str(); } + const char *pport() const { return t_pport.c_str(); } + bool private_auth() const { return t_private_auth; } + const char *redirection() const { return t_redirection.c_str(); } + + struct auth_group *auth_group() const { return t_auth_group.get(); } + const std::list &ports() const { return t_ports; } + const struct lun *lun(int idx) const { return t_luns[idx]; } + + bool add_chap(const char *user, const char *secret); + bool add_chap_mutual(const char *user, const char *secret, + const char *user2, const char *secret2); + bool add_initiator_name(std::string_view name); + bool add_initiator_portal(const char *addr); + bool add_lun(u_int id, const char *lun_name); + bool add_portal_group(const char *pg_name, const char *ag_name); + bool set_alias(std::string_view alias); + bool set_auth_group(const char *ag_name); + bool set_auth_type(const char *type); + bool set_physical_port(std::string_view pport); + bool set_redirection(const char *addr); + struct lun *start_lun(u_int id); + + void add_port(struct port *port); + void remove_lun(struct lun *lun); + void remove_port(struct port *port); + void verify(); + +private: + bool use_private_auth(const char *keyword); + struct conf *t_conf; - struct lun *t_luns[MAX_LUNS] = {}; + std::array t_luns; auth_group_sp t_auth_group; std::list t_ports; - char *t_name; - char *t_alias; - char *t_redirection; + std::string t_name; + std::string t_alias; + std::string t_redirection; /* Name of this target's physical port, if any, i.e. "isp0" */ - char *t_pport; + std::string t_pport; bool t_private_auth; }; @@ -379,11 +417,12 @@ struct conf { char *conf_pidfile_path = nullptr; std::unordered_map> conf_luns; - TAILQ_HEAD(, target) conf_targets; + std::unordered_map> conf_targets; std::unordered_map conf_auth_groups; std::unordered_map> conf_ports; std::unordered_map conf_portal_groups; std::unordered_map conf_isns; + struct target *conf_first_target = nullptr; int conf_isns_period; int conf_isns_timeout; int conf_debug; @@ -466,7 +505,6 @@ void conf_start(struct conf *new_conf); bool conf_verify(struct conf *conf); struct auth_group *auth_group_new(struct conf *conf, const char *name); -auth_group_sp auth_group_new(struct target *target); *** 233 LINES SKIPPED *** From nobody Mon Aug 4 19:47:00 2025 X-Original-To: dev-commits-src-main@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 4bwnBX5wf2z63QmQ; Mon, 04 Aug 2025 19:47:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBX3Z1Nz4KxH; Mon, 04 Aug 2025 19:47:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336820; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hscSsLK+4lWmScr6pplWxv/JeI4EYBgWsiu8zue9pnk=; b=UdWQX/e0Zu7DgwUUDLMZ68m6cQ0wo+r3U38RR2ePm99z/yNyh3P5/qCivQAj9F6gYqenAE m3ZCp5bt/66yaZQuRshZiWo/OKD2aT8Kq0nxjNNY1ZHSZI2hphM3WdeciZMIB9vf1ccMxs DEjUDJiuecXVXsRwp7moypD2vj7YPRtGcVCrNeFhbOvmCgj2MRaEPZs7dld6PP5PrfYfvK rNbLt0AODoAUQnq/l5P1wDy7OWqqnjVHz7hoRYuZW4DSxblzJo7cNgujQweTWT4uOJZ3Vz SbPQu9lnyp334sI6EVT6JvC9D7TD9D4JHDw+3trWxu8LQltOCaGEuG6tkm9Jrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336820; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hscSsLK+4lWmScr6pplWxv/JeI4EYBgWsiu8zue9pnk=; b=ZcZP4hsIkWZC6tvzKL9T8Nbu8BVbXlq9X4GIEfW5bIZ4tVXoZfoKVrTe+mv1J+ZeKU9cdz YsrGZgeZ9N+HSSojZnkZZgVjU/srU7H302nxNY8AJB8PwvYvnqE64DD7ZWZuiTTu1e9woU gbrKVKCNQuqc6Qd+p1Evy4V/vuWSnqLgZjSaHtfiN/CS1+nhAVz6ssrVV6YVk3ZJ03r88T SCrujLu+/rUY2SPGQDxCLWnJ3CV3tRl/v2Ht3I73VkuQE0NNTSSBeiWHuRqo0EkmDTTJMh 2IVjIU/yNq2fDlIobsnJLeEFKBNddgi6TV/1p/s8YbIIdQNz7sa0QRZXViiyVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336820; a=rsa-sha256; cv=none; b=CChgYZHwSn1nVSI0IvrE5Z2W2gv8qkqWnWkoxlK5ODPOskkDTabGWGtv1H0Ln6ec6wuuft f10jr8ImQZDr93p+dP4DQ9X3l3P8Zapa8Y5p23FPrpNbf6qEGSuYHjq80BxN+m/p5mIsoh tryjL+FlWwU4oAcFk2GIX1l8y4OEK0lSZGw04glqq2Hsn/7voBz0UrcKkKf1vrvlXAhWo0 yAm2S21TRdgNUJTnkKj2tTaSiMyfUmX3k39qqE2dFQGBAmw7hyh8pnxhAzJHV1RucMoulx Yj8GUVahkyEKYiFohY+zZNiurvxB6E6i30bFuNfjeKXjAzlTZik08hgUVp0Q9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBX2vv3z12f8; Mon, 04 Aug 2025 19:47:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl0EJ099474; Mon, 4 Aug 2025 19:47:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl0Sv099471; Mon, 4 Aug 2025 19:47:00 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:00 GMT Message-Id: <202508041947.574Jl0Sv099471@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: afcae14d2f24 - main - ctld: Convert struct lun to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: afcae14d2f241484c9c52aaa130a313eec0991c9 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=afcae14d2f241484c9c52aaa130a313eec0991c9 commit afcae14d2f241484c9c52aaa130a313eec0991c9 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct lun to a C++ class - Use std::string and freebsd::nvlist_up for class members. - Turn most lun_* and kernel_lun_* functions into class methods. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 91 ++-------- usr.sbin/ctld/ctld.cc | 434 ++++++++++++++++++++++++++++++++---------------- usr.sbin/ctld/ctld.hh | 60 ++++--- usr.sbin/ctld/kernel.cc | 159 +++++++----------- 4 files changed, 401 insertions(+), 343 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index ce2003b09880..8913cccd5889 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -277,126 +277,55 @@ lun_finish(void) bool lun_add_option(const char *name, const char *value) { - return (option_new(lun->l_options, name, value)); + return (lun->add_option(name, value)); } bool lun_set_backend(const char *value) { - if (lun->l_backend != NULL) { - log_warnx("backend for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - - lun->l_backend = checked_strdup(value); - return (true); + return (lun->set_backend(value)); } bool lun_set_blocksize(size_t value) { - if (lun->l_blocksize != 0) { - log_warnx("blocksize for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - lun->l_blocksize = value; - return (true); + return (lun->set_blocksize(value)); } bool lun_set_device_type(const char *value) { - const char *errstr; - int device_type; - - if (strcasecmp(value, "disk") == 0 || - strcasecmp(value, "direct") == 0) - device_type = T_DIRECT; - else if (strcasecmp(value, "processor") == 0) - device_type = T_PROCESSOR; - else if (strcasecmp(value, "cd") == 0 || - strcasecmp(value, "cdrom") == 0 || - strcasecmp(value, "dvd") == 0 || - strcasecmp(value, "dvdrom") == 0) - device_type = T_CDROM; - else { - device_type = strtonum(value, 0, 15, &errstr); - if (errstr != NULL) { - log_warnx("invalid device-type \"%s\" for lun \"%s\"", value, - lun->l_name); - return (false); - } - } - - lun->l_device_type = device_type; - return (true); + return (lun->set_device_type(value)); } bool lun_set_device_id(const char *value) { - if (lun->l_device_id != NULL) { - log_warnx("device_id for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - - lun->l_device_id = checked_strdup(value); - return (true); + return (lun->set_device_id(value)); } bool lun_set_path(const char *value) { - if (lun->l_path != NULL) { - log_warnx("path for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - - lun->l_path = checked_strdup(value); - return (true); + return (lun->set_path(value)); } bool lun_set_serial(const char *value) { - if (lun->l_serial != NULL) { - log_warnx("serial for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - - lun->l_serial = checked_strdup(value); - return (true); + return (lun->set_serial(value)); } bool lun_set_size(uint64_t value) { - if (lun->l_size != 0) { - log_warnx("size for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - - lun->l_size = value; - return (true); + return (lun->set_size(value)); } bool lun_set_ctl_lun(uint32_t value) { - - if (lun->l_ctl_lun >= 0) { - log_warnx("ctl_lun for lun \"%s\" specified more than once", - lun->l_name); - return (false); - } - lun->l_ctl_lun = value; - return (true); + return (lun->set_ctl_lun(value)); } bool @@ -616,7 +545,7 @@ target_start_lun(u_int id) if (new_lun == NULL) return (false); - lun_set_scsiname(new_lun, name); + new_lun->set_scsiname(name); free(name); target->t_luns[id] = new_lun; diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 29bbea126273..1dbc6988b9d1 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -101,7 +101,6 @@ conf_new(void) struct conf *conf; conf = new struct conf(); - TAILQ_INIT(&conf->conf_luns); TAILQ_INIT(&conf->conf_targets); conf->conf_isns_period = 900; @@ -116,13 +115,10 @@ conf_new(void) void conf_delete(struct conf *conf) { - struct lun *lun, *ltmp; struct target *targ, *tmp; assert(conf->conf_pidfh == NULL); - TAILQ_FOREACH_SAFE(lun, &conf->conf_luns, l_next, ltmp) - lun_delete(lun); TAILQ_FOREACH_SAFE(targ, &conf->conf_targets, t_next, tmp) target_delete(targ); free(conf->conf_pidfile_path); @@ -1162,71 +1158,243 @@ target_find(struct conf *conf, const char *name) return (NULL); } +lun::lun(struct conf *conf, std::string_view name) + : l_conf(conf), l_options(nvlist_create(0)), l_name(name) +{ +} + struct lun * lun_new(struct conf *conf, const char *name) { - struct lun *lun; - - lun = lun_find(conf, name); - if (lun != NULL) { + const auto &pair = conf->conf_luns.try_emplace(name, + std::make_unique(conf, name)); + if (!pair.second) { log_warnx("duplicated lun \"%s\"", name); return (NULL); } - - lun = reinterpret_cast(calloc(1, sizeof(*lun))); - if (lun == NULL) - log_err(1, "calloc"); - lun->l_conf = conf; - lun->l_name = checked_strdup(name); - lun->l_options = nvlist_create(0); - TAILQ_INSERT_TAIL(&conf->conf_luns, lun, l_next); - lun->l_ctl_lun = -1; - - return (lun); + return (pair.first->second.get()); } -void -lun_delete(struct lun *lun) +static void +conf_delete_target_luns(struct conf *conf, struct lun *lun) { struct target *targ; int i; - TAILQ_FOREACH(targ, &lun->l_conf->conf_targets, t_next) { + TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { for (i = 0; i < MAX_LUNS; i++) { if (targ->t_luns[i] == lun) targ->t_luns[i] = NULL; } } - TAILQ_REMOVE(&lun->l_conf->conf_luns, lun, l_next); - - nvlist_destroy(lun->l_options); - free(lun->l_name); - free(lun->l_backend); - free(lun->l_device_id); - free(lun->l_path); - free(lun->l_scsiname); - free(lun->l_serial); - free(lun); } struct lun * lun_find(const struct conf *conf, const char *name) { - struct lun *lun; + auto it = conf->conf_luns.find(name); + if (it == conf->conf_luns.end()) + return (nullptr); + return (it->second.get()); +} - TAILQ_FOREACH(lun, &conf->conf_luns, l_next) { - if (strcmp(lun->l_name, name) == 0) - return (lun); +static void +nvlist_replace_string(nvlist_t *nvl, const char *name, const char *value) +{ + if (nvlist_exists_string(nvl, name)) + nvlist_free_string(nvl, name); + nvlist_add_string(nvl, name, value); +} + +freebsd::nvlist_up +lun::options() const +{ + freebsd::nvlist_up nvl(nvlist_clone(l_options.get())); + if (!l_path.empty()) + nvlist_replace_string(nvl.get(), "file", l_path.c_str()); + + nvlist_replace_string(nvl.get(), "ctld_name", l_name.c_str()); + + if (!nvlist_exists_string(nvl.get(), "scsiname") && + !l_scsiname.empty()) + nvlist_add_string(nvl.get(), "scsiname", l_scsiname.c_str()); + return (nvl); +} + +bool +lun::add_option(const char *name, const char *value) +{ + return (option_new(l_options.get(), name, value)); +} + +bool +lun::set_backend(std::string_view value) +{ + if (!l_backend.empty()) { + log_warnx("backend for lun \"%s\" specified more than once", + name()); + return (false); } - return (NULL); + l_backend = value; + return (true); +} + +bool +lun::set_blocksize(size_t value) +{ + if (l_blocksize != 0) { + log_warnx("blocksize for lun \"%s\" specified more than once", + name()); + return (false); + } + l_blocksize = value; + return (true); +} + +bool +lun::set_ctl_lun(uint32_t value) +{ + if (l_ctl_lun >= 0) { + log_warnx("ctl_lun for lun \"%s\" specified more than once", + name()); + return (false); + } + + l_ctl_lun = value; + return (true); +} + +bool +lun::set_device_type(uint8_t device_type) +{ + if (device_type > 15) { + log_warnx("invalid device-type \"%u\" for lun \"%s\"", + device_type, name()); + return (false); + } + + l_device_type = device_type; + return (true); +} + +bool +lun::set_device_type(const char *value) +{ + const char *errstr; + int device_type; + + if (strcasecmp(value, "disk") == 0 || + strcasecmp(value, "direct") == 0) + device_type = T_DIRECT; + else if (strcasecmp(value, "processor") == 0) + device_type = T_PROCESSOR; + else if (strcasecmp(value, "cd") == 0 || + strcasecmp(value, "cdrom") == 0 || + strcasecmp(value, "dvd") == 0 || + strcasecmp(value, "dvdrom") == 0) + device_type = T_CDROM; + else { + device_type = strtonum(value, 0, 15, &errstr); + if (errstr != NULL) { + log_warnx("invalid device-type \"%s\" for lun \"%s\"", + value, name()); + return (false); + } + } + + l_device_type = device_type; + return (true); +} + +bool +lun::set_device_id(std::string_view value) +{ + if (!l_device_id.empty()) { + log_warnx("device_id for lun \"%s\" specified more than once", + name()); + return (false); + } + + l_device_id = value; + return (true); +} + +bool +lun::set_path(std::string_view value) +{ + if (!l_path.empty()) { + log_warnx("path for lun \"%s\" specified more than once", + name()); + return (false); + } + + l_path = value; + return (true); } void -lun_set_scsiname(struct lun *lun, const char *value) +lun::set_scsiname(std::string_view value) { - free(lun->l_scsiname); - lun->l_scsiname = checked_strdup(value); + l_scsiname = value; +} + +bool +lun::set_serial(std::string_view value) +{ + if (!l_serial.empty()) { + log_warnx("serial for lun \"%s\" specified more than once", + name()); + return (false); + } + + l_serial = value; + return (true); +} + +bool +lun::set_size(uint64_t value) +{ + if (l_size != 0) { + log_warnx("size for lun \"%s\" specified more than once", + name()); + return (false); + } + + l_size = value; + return (true); +} + + +bool +lun::changed(const struct lun &newlun) const +{ + if (l_backend != newlun.l_backend) { + log_debugx("backend for lun \"%s\", CTL lun %d changed; " + "removing", name(), l_ctl_lun); + return (true); + } + if (l_blocksize != newlun.l_blocksize) { + log_debugx("blocksize for lun \"%s\", CTL lun %d changed; " + "removing", name(), l_ctl_lun); + return (true); + } + if (l_device_id != newlun.l_device_id) { + log_debugx("device-id for lun \"%s\", CTL lun %d changed; " + "removing", name(), l_ctl_lun); + return (true); + } + if (l_path != newlun.l_path) { + log_debugx("path for lun \"%s\", CTL lun %d, changed; " + "removing", name(), l_ctl_lun); + return (true); + } + if (l_serial != newlun.l_serial) { + log_debugx("serial for lun \"%s\", CTL lun %d changed; " + "removing", name(), l_ctl_lun); + return (true); + } + return (false); } bool @@ -1305,59 +1473,45 @@ connection_new(struct portal *portal, int fd, const char *host, return (conn); } -static bool -conf_verify_lun(struct lun *lun) +bool +lun::verify() { - const struct lun *lun2; - - if (lun->l_backend == NULL) - lun->l_backend = checked_strdup("block"); - if (strcmp(lun->l_backend, "block") == 0) { - if (lun->l_path == NULL) { + if (l_backend.empty()) + l_backend = "block"; + if (l_backend == "block") { + if (l_path.empty()) { log_warnx("missing path for lun \"%s\"", - lun->l_name); + name()); return (false); } - } else if (strcmp(lun->l_backend, "ramdisk") == 0) { - if (lun->l_size == 0) { + } else if (l_backend == "ramdisk") { + if (l_size == 0) { log_warnx("missing size for ramdisk-backed lun \"%s\"", - lun->l_name); + name()); return (false); } - if (lun->l_path != NULL) { + if (!l_path.empty()) { log_warnx("path must not be specified " "for ramdisk-backed lun \"%s\"", - lun->l_name); + name()); return (false); } } - if (lun->l_blocksize == 0) { - if (lun->l_device_type == T_CDROM) - lun->l_blocksize = DEFAULT_CD_BLOCKSIZE; + if (l_blocksize == 0) { + if (l_device_type == T_CDROM) + l_blocksize = DEFAULT_CD_BLOCKSIZE; else - lun->l_blocksize = DEFAULT_BLOCKSIZE; - } else if (lun->l_blocksize < 0) { - log_warnx("invalid blocksize for lun \"%s\"; " - "must be larger than 0", lun->l_name); + l_blocksize = DEFAULT_BLOCKSIZE; + } else if (l_blocksize < 0) { + log_warnx("invalid blocksize %d for lun \"%s\"; " + "must be larger than 0", l_blocksize, name()); return (false); } - if (lun->l_size != 0 && lun->l_size % lun->l_blocksize != 0) { + if (l_size != 0 && (l_size % l_blocksize) != 0) { log_warnx("invalid size for lun \"%s\"; " - "must be multiple of blocksize", lun->l_name); + "must be multiple of blocksize", name()); return (false); } - TAILQ_FOREACH(lun2, &lun->l_conf->conf_luns, l_next) { - if (lun == lun2) - continue; - if (lun->l_path != NULL && lun2->l_path != NULL && - strcmp(lun->l_path, lun2->l_path) == 0) { - log_debugx("WARNING: path \"%s\" duplicated " - "between lun \"%s\", and " - "lun \"%s\"", lun->l_path, - lun->l_name, lun2->l_name); - } - } - return (true); } @@ -1366,17 +1520,32 @@ conf_verify(struct conf *conf) { struct portal_group *pg; struct target *targ; - struct lun *lun; bool found; int i; if (conf->conf_pidfile_path == NULL) conf->conf_pidfile_path = checked_strdup(DEFAULT_PIDFILE); - TAILQ_FOREACH(lun, &conf->conf_luns, l_next) { - if (!conf_verify_lun(lun)) + std::unordered_map path_map; + for (const auto &kv : conf->conf_luns) { + struct lun *lun = kv.second.get(); + if (!lun->verify()) return (false); + + const std::string &path = lun->path(); + if (path.empty()) + continue; + + const auto &pair = path_map.try_emplace(path, lun); + if (!pair.second) { + struct lun *lun2 = pair.first->second; + log_debugx("WARNING: path \"%s\" duplicated " + "between lun \"%s\", and " + "lun \"%s\"", path.c_str(), + lun->name(), lun2->name()); + } } + TAILQ_FOREACH(targ, &conf->conf_targets, t_next) { if (targ->t_auth_group == NULL) { targ->t_auth_group = auth_group_find(conf, @@ -1560,8 +1729,7 @@ conf::reuse_portal_group_socket(struct portal &newp) static int conf_apply(struct conf *oldconf, struct conf *newconf) { - struct lun *oldlun, *newlun, *tmplun; - int changed, cumulated_error = 0, error; + int cumulated_error = 0; if (oldconf->conf_debug != newconf->conf_debug) { log_debugx("changing debug level to %d", newconf->conf_debug); @@ -1646,101 +1814,75 @@ conf_apply(struct conf *oldconf, struct conf *newconf) * Second, remove any LUNs present in the old configuration * and missing in the new one. */ - TAILQ_FOREACH_SAFE(oldlun, &oldconf->conf_luns, l_next, tmplun) { - newlun = lun_find(newconf, oldlun->l_name); - if (newlun == NULL) { + for (auto it = oldconf->conf_luns.begin(); + it != oldconf->conf_luns.end(); ) { + struct lun *oldlun = it->second.get(); + + auto newit = newconf->conf_luns.find(it->first); + if (newit == newconf->conf_luns.end()) { log_debugx("lun \"%s\", CTL lun %d " "not found in new configuration; " - "removing", oldlun->l_name, oldlun->l_ctl_lun); - error = kernel_lun_remove(oldlun); - if (error != 0) { + "removing", oldlun->name(), oldlun->ctl_lun()); + if (!oldlun->kernel_remove()) { log_warnx("failed to remove lun \"%s\", " "CTL lun %d", - oldlun->l_name, oldlun->l_ctl_lun); + oldlun->name(), oldlun->ctl_lun()); cumulated_error++; } + it++; continue; } /* * Also remove the LUNs changed by more than size. */ - changed = 0; - assert(oldlun->l_backend != NULL); - assert(newlun->l_backend != NULL); - if (strcmp(newlun->l_backend, oldlun->l_backend) != 0) { - log_debugx("backend for lun \"%s\", " - "CTL lun %d changed; removing", - oldlun->l_name, oldlun->l_ctl_lun); - changed = 1; - } - if (oldlun->l_blocksize != newlun->l_blocksize) { - log_debugx("blocksize for lun \"%s\", " - "CTL lun %d changed; removing", - oldlun->l_name, oldlun->l_ctl_lun); - changed = 1; - } - if (newlun->l_device_id != NULL && - (oldlun->l_device_id == NULL || - strcmp(oldlun->l_device_id, newlun->l_device_id) != - 0)) { - log_debugx("device-id for lun \"%s\", " - "CTL lun %d changed; removing", - oldlun->l_name, oldlun->l_ctl_lun); - changed = 1; - } - if (newlun->l_path != NULL && - (oldlun->l_path == NULL || - strcmp(oldlun->l_path, newlun->l_path) != 0)) { - log_debugx("path for lun \"%s\", " - "CTL lun %d, changed; removing", - oldlun->l_name, oldlun->l_ctl_lun); - changed = 1; - } - if (newlun->l_serial != NULL && - (oldlun->l_serial == NULL || - strcmp(oldlun->l_serial, newlun->l_serial) != 0)) { - log_debugx("serial for lun \"%s\", " - "CTL lun %d changed; removing", - oldlun->l_name, oldlun->l_ctl_lun); - changed = 1; - } - if (changed) { - error = kernel_lun_remove(oldlun); - if (error != 0) { + struct lun *newlun = newit->second.get(); + if (oldlun->changed(*newlun)) { + if (!oldlun->kernel_remove()) { log_warnx("failed to remove lun \"%s\", " "CTL lun %d", - oldlun->l_name, oldlun->l_ctl_lun); + oldlun->name(), oldlun->ctl_lun()); cumulated_error++; } - lun_delete(oldlun); + + /* + * Delete the lun from the old configuration + * so it is added as a new LUN below. + */ + it = oldconf->conf_luns.erase(it); continue; } - newlun->l_ctl_lun = oldlun->l_ctl_lun; + newlun->set_ctl_lun(oldlun->ctl_lun()); + it++; } - TAILQ_FOREACH_SAFE(newlun, &newconf->conf_luns, l_next, tmplun) { - oldlun = lun_find(oldconf, newlun->l_name); - if (oldlun != NULL) { + for (auto it = newconf->conf_luns.begin(); + it != newconf->conf_luns.end(); ) { + struct lun *newlun = it->second.get(); + + auto oldit = oldconf->conf_luns.find(it->first); + if (oldit != oldconf->conf_luns.end()) { log_debugx("modifying lun \"%s\", CTL lun %d", - newlun->l_name, newlun->l_ctl_lun); - error = kernel_lun_modify(newlun); - if (error != 0) { + newlun->name(), newlun->ctl_lun()); + if (!newlun->kernel_modify()) { log_warnx("failed to " "modify lun \"%s\", CTL lun %d", - newlun->l_name, newlun->l_ctl_lun); + newlun->name(), newlun->ctl_lun()); cumulated_error++; } + it++; continue; } - log_debugx("adding lun \"%s\"", newlun->l_name); - error = kernel_lun_add(newlun); - if (error != 0) { - log_warnx("failed to add lun \"%s\"", newlun->l_name); - lun_delete(newlun); + + log_debugx("adding lun \"%s\"", newlun->name()); + if (!newlun->kernel_add()) { + log_warnx("failed to add lun \"%s\"", newlun->name()); + conf_delete_target_luns(newconf, newlun); + it = newconf->conf_luns.erase(it); cumulated_error++; - } + } else + it++; } /* diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 5ccb24160eac..7fb0ed7a8bea 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -303,20 +303,47 @@ private: }; struct lun { - TAILQ_ENTRY(lun) l_next; + lun(struct conf *conf, std::string_view name); + + const char *name() const { return l_name.c_str(); } + const std::string &path() const { return l_path; } + int ctl_lun() const { return l_ctl_lun; } + + freebsd::nvlist_up options() const; + + bool add_option(const char *name, const char *value); + bool set_backend(std::string_view value); + bool set_blocksize(size_t value); + bool set_ctl_lun(uint32_t value); + bool set_device_type(uint8_t device_type); + bool set_device_type(const char *value); + bool set_device_id(std::string_view value); + bool set_path(std::string_view value); + void set_scsiname(std::string_view value); + bool set_serial(std::string_view value); + bool set_size(uint64_t value); + + bool changed(const struct lun &old) const; + bool verify(); + + bool kernel_add(); + bool kernel_modify() const; + bool kernel_remove() const; + +private: struct conf *l_conf; - nvlist_t *l_options; - char *l_name; - char *l_backend; - uint8_t l_device_type; - int l_blocksize; - char *l_device_id; - char *l_path; - char *l_scsiname; - char *l_serial; - uint64_t l_size; - - int l_ctl_lun; + freebsd::nvlist_up l_options; + std::string l_name; + std::string l_backend; + uint8_t l_device_type = 0; + int l_blocksize = 0; + std::string l_device_id; + std::string l_path; + std::string l_scsiname; + std::string l_serial; + uint64_t l_size = 0; + + int l_ctl_lun = -1; }; struct target { @@ -351,7 +378,7 @@ struct conf { bool reuse_portal_group_socket(struct portal &newp); char *conf_pidfile_path = nullptr; - TAILQ_HEAD(, lun) conf_luns; + std::unordered_map> conf_luns; TAILQ_HEAD(, target) conf_targets; std::unordered_map conf_auth_groups; std::unordered_map> conf_ports; @@ -464,17 +491,12 @@ struct target *target_find(struct conf *conf, const char *name); struct lun *lun_new(struct conf *conf, const char *name); -void lun_delete(struct lun *lun); struct lun *lun_find(const struct conf *conf, const char *name); -void lun_set_scsiname(struct lun *lun, const char *value); bool option_new(nvlist_t *nvl, const char *name, const char *value); void kernel_init(void); -int kernel_lun_add(struct lun *lun); -int kernel_lun_modify(struct lun *lun); -int kernel_lun_remove(struct lun *lun); void kernel_handoff(struct ctld_connection *conn); void kernel_capsicate(void); diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index 8ccfd3cd55fa..7ce1bf210027 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -410,7 +410,7 @@ conf_new_from_kernel(struct kports &kports) const char *key; char *str, *name; void *cookie; - int error, len, retval; + int len, retval; bzero(&devlist, sizeof(devlist)); STAILQ_INIT(&devlist.lun_list); @@ -602,7 +602,7 @@ retry_port: log_warnx("found CTL lun %ju \"%s\", " "also backed by CTL lun %d; ignoring", (uintmax_t)lun->lun_id, lun->ctld_name, - cl->l_ctl_lun); + cl->ctl_lun()); continue; } @@ -614,34 +614,27 @@ retry_port: log_warnx("lun_new failed"); continue; } - cl->l_backend = lun->backend_type; - lun->backend_type = NULL; - cl->l_device_type = lun->device_type; - cl->l_blocksize = lun->blocksize; - cl->l_device_id = lun->device_id; - lun->device_id = NULL; - cl->l_serial = lun->serial_number; - lun->serial_number = NULL; - cl->l_size = lun->size_blocks * cl->l_blocksize; - cl->l_ctl_lun = lun->lun_id; + cl->set_backend(lun->backend_type); + cl->set_device_type(lun->device_type); + cl->set_blocksize(lun->blocksize); + cl->set_device_id(lun->device_id); + cl->set_serial(lun->serial_number); + cl->set_size(lun->size_blocks * lun->blocksize); + cl->set_ctl_lun(lun->lun_id); cookie = NULL; while ((key = nvlist_next(lun->attr_list, NULL, &cookie)) != NULL) { if (strcmp(key, "file") == 0 || strcmp(key, "dev") == 0) { - cl->l_path = checked_strdup( - cnvlist_get_string(cookie)); + cl->set_path(cnvlist_get_string(cookie)); continue; } - nvlist_add_string(cl->l_options, key, - cnvlist_get_string(cookie)); - error = nvlist_error(cl->l_options); - if (error != 0) - log_warnc(error, "unable to add CTL lun option " + if (!cl->add_option(key, cnvlist_get_string(cookie))) + log_warnx("unable to add CTL lun option " "%s for CTL lun %ju \"%s\"", key, (uintmax_t)lun->lun_id, - cl->l_name); + cl->name()); } } while ((lun = STAILQ_FIRST(&devlist.lun_list))) { @@ -653,65 +646,47 @@ retry_port: return (conf); } -static void -nvlist_replace_string(nvlist_t *nvl, const char *name, const char *value) -{ - if (nvlist_exists_string(nvl, name)) - nvlist_free_string(nvl, name); - nvlist_add_string(nvl, name, value); -} - -int -kernel_lun_add(struct lun *lun) +bool +lun::kernel_add() { struct ctl_lun_req req; int error; bzero(&req, sizeof(req)); - strlcpy(req.backend, lun->l_backend, sizeof(req.backend)); + strlcpy(req.backend, l_backend.c_str(), sizeof(req.backend)); req.reqtype = CTL_LUNREQ_CREATE; - req.reqdata.create.blocksize_bytes = lun->l_blocksize; + req.reqdata.create.blocksize_bytes = l_blocksize; - if (lun->l_size != 0) - req.reqdata.create.lun_size_bytes = lun->l_size; + if (l_size != 0) + req.reqdata.create.lun_size_bytes = l_size; - if (lun->l_ctl_lun >= 0) { - req.reqdata.create.req_lun_id = lun->l_ctl_lun; + if (l_ctl_lun >= 0) { + req.reqdata.create.req_lun_id = l_ctl_lun; req.reqdata.create.flags |= CTL_LUN_FLAG_ID_REQ; } req.reqdata.create.flags |= CTL_LUN_FLAG_DEV_TYPE; - req.reqdata.create.device_type = lun->l_device_type; + req.reqdata.create.device_type = l_device_type; - if (lun->l_serial != NULL) { - strncpy((char *)req.reqdata.create.serial_num, lun->l_serial, + if (!l_serial.empty()) { + strncpy((char *)req.reqdata.create.serial_num, l_serial.c_str(), sizeof(req.reqdata.create.serial_num)); req.reqdata.create.flags |= CTL_LUN_FLAG_SERIAL_NUM; } - if (lun->l_device_id != NULL) { - strncpy((char *)req.reqdata.create.device_id, lun->l_device_id, - sizeof(req.reqdata.create.device_id)); + if (!l_device_id.empty()) { + strncpy((char *)req.reqdata.create.device_id, + l_device_id.c_str(), sizeof(req.reqdata.create.device_id)); req.reqdata.create.flags |= CTL_LUN_FLAG_DEVID; } - if (lun->l_path != NULL) - nvlist_replace_string(lun->l_options, "file", lun->l_path); - - nvlist_replace_string(lun->l_options, "ctld_name", lun->l_name); - - if (!nvlist_exists_string(lun->l_options, "scsiname") && - lun->l_scsiname != NULL) - nvlist_add_string(lun->l_options, "scsiname", lun->l_scsiname); - - if (!nvlist_empty(lun->l_options)) { - req.args = nvlist_pack(lun->l_options, &req.args_len); - if (req.args == NULL) { - log_warn("error packing nvlist"); - return (1); - } *** 174 LINES SKIPPED *** From nobody Mon Aug 4 19:47:02 2025 X-Original-To: dev-commits-src-main@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 4bwnBb10gqz63RK4; Mon, 04 Aug 2025 19:47:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBZ5LKlz4KmS; Mon, 04 Aug 2025 19:47:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5d0q0imluC36mKDidIdIAC0AoOjkpT0Al6VMJrf6VXw=; b=Ocl8x1Aa9lxzGLRkOR0hYXOhsihcv7wqc2OhXO4llLnUcxx941RzBwynge41cptMzZ35gq d+PrG56OUmZGJPfhOG1iKffZsJKZLuohsMFC1zOfzvoAum2yYJD78SrG/lwaZdFAi05lYx xYI5P1EDGKCg1XJZuM2tUShaCUGhbb9avOSVSschSfWrXs/X4kei7d7jCgys8aV33L51Il al0rbmlKhVvxwlvWje7HnmwNgVJsXExu0EFk4Vkr73iK+qF51dr62uzkMy9u/bYUnRq9ob KrhQvfshkKldZStR6OpeQfX3dPUcJI8y1odwzOiuOsyqX3Mj7RsyfvvgaeDsVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5d0q0imluC36mKDidIdIAC0AoOjkpT0Al6VMJrf6VXw=; b=qoW0rKh5i1/6xEwWR/Ii3NB2kXxxsdIXElG5uSTfK+922CIc2t0kDC6xQhi1Z3FL2+qJoq XRCl0yJ9uwZVbZqqfCxlX+iFIB1//SVNKegSOjc4Eshi1NvYCtNTHHpP6BrOcQBf5++ogp cRHBO8RD5pVuK7HYpCdBu5qS4Y6jbos9djE1qg2kCCoF6aMJlSkRRU+bXHJaUQ4shyvClz G9FGGxfVwwFuW/LWRU+HUA6KX99kOdIvV8pgNvofxyEed5DM8ELO3nnzhpL784EWNqvOug OL7RcII08xPEWoMxkgaeiInxHoCGX6Crz3rKCV4mfe0aLDia3B8+AHmQKtt9rg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336822; a=rsa-sha256; cv=none; b=O0E5AA4c9zcL4gX2mHSyuTx+3NwaO5u8vBLZYvYKr/RIMunvVTFm339dm8KB1IAWdMbT3o ztwwb1B1wgbFOvZxBj2U/0IyKV4khED5qKw8+0iz2CMs8IKpCzNh/YNlZD1E/WQjTgiERU uHoBpjqoQ0jpWTyc8uQqg+cBGcOAnaokRUo+jTbvVOIGbn8hvJq81G1zDUNEu5IgRFPrsS /fSjUBTl4dKgvn94N9KYCCnw8BxRn5hYrexKHeQOsJ40r3+/ev2W0Xns4OtZZgeGMILwc9 YoO/yYr/hbvXSmxW6EZxy6Sjghhu4p7kL7M/8gC0h5LiF7jtyJ98F4BRPz6igg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBZ4tlrz12nQ; Mon, 04 Aug 2025 19:47:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl24t099542; Mon, 4 Aug 2025 19:47:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl2S3099539; Mon, 4 Aug 2025 19:47:02 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:02 GMT Message-Id: <202508041947.574Jl2S3099539@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 7be913e00d79 - main - libutil++: Add freebsd::pidfile wrapper class around struct pidfh List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7be913e00d79b3bf740049797fbc3f6ab8193995 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7be913e00d79b3bf740049797fbc3f6ab8193995 commit 7be913e00d79b3bf740049797fbc3f6ab8193995 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 libutil++: Add freebsd::pidfile wrapper class around struct pidfh This class wraps the pidfile_* API from libutil. The destructor calls pidfile_remove() when an object is destroyed. This class is similar to std::unique_ptr<> in that it retains exclusive ownership of the pidfh object. In addition to release and reset methods, write, close, and fileno methods are provided as wrappers for pidfile_*. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- lib/libutil++/Makefile | 1 + lib/libutil++/freebsd::pidfile.3 | 110 ++++++++++++++++++++++++++++++++++++ lib/libutil++/libutil++.hh | 74 ++++++++++++++++++++++++ lib/libutil++/tests/Makefile | 3 + lib/libutil++/tests/pidfile_test.cc | 44 +++++++++++++++ 5 files changed, 232 insertions(+) diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile index 3389e7e21b11..df3074c2278e 100644 --- a/lib/libutil++/Makefile +++ b/lib/libutil++/Makefile @@ -9,6 +9,7 @@ MAN+= freebsd::FILE_up.3 \ freebsd::fd_up.3 \ freebsd::malloc_up.3 \ freebsd::nvlist_up.3 \ + freebsd::pidfile.3 \ freebsd::stringf.3 .include diff --git a/lib/libutil++/freebsd::pidfile.3 b/lib/libutil++/freebsd::pidfile.3 new file mode 100644 index 000000000000..fb67253f5c02 --- /dev/null +++ b/lib/libutil++/freebsd::pidfile.3 @@ -0,0 +1,110 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Chelsio Communications, Inc. +.\" Written by: John Baldwin +.\" +.Dd July 31, 2025 +.Dt FREEBSD::STRINGF 3 +.Os +.Sh NAME +.Nm freebsd::pidfile +.Nd own a PID file handle +.Sh LIBRARY +.Lb libutil++ +.Sh SYNOPSIS +.In libutil++.hh +.Pp +.Vt class freebsd::pidfile +{ +.Bd -ragged -offset indent +.Fn pidfile +.Fn pidfile "struct pidfh *pfh" +.Fn pidfile "pidfile &&other" +.Fn ~pidfile +.Ft struct pidfh * +.Fn release +.Ft void +.Fn reset "struct pidfh *newpfh = nullptr" +.Ft int +.Fn write +.Ft int +.Fn close +.Ft int +.Fn fileno +.Ft "pidfile &" +.Fn operator= "pidfile &&other" +.Ft "pidfile &" +.Fn operator= "struct pidfh *pfh" +.Fn "explicit operator bool" +.Ed +}; +.Sh DESCRIPTION +Each instance of this class owns a PID file handle created by +.Xr pidfile_open 3 . +This class is patterned on std::unique_ptr; +however, +rather than exporting the raw pointer via a +.Fn get +method, +this class provides wrapper methods for each of the other +.Xr pidfile 3 +functions. +The currently-owned PID file is removed by invoking +.Xr pidfile_remove 3 +when an instance of this class is destroyed. +The currently-owned PID file is also removed if it is replaced by the +.Fn reset +method or assignment operators. +.Pp +The +.Fn release +method relinquishes ownership of the current PID file handle and returns the +value of the previously-owned PID file handle. +.Pp +The +.Fn write +method writes out the PID of the current process to the PID file via +.Xr pidfile_write 3 . +.Pp +The +.Fn close +method closes the current PID file without removing it via +.Xr pidfile_close 3 . +If the close succeeds, the PID file handle is no longer valid. +.Pp +The +.Fn fileno +method returns the underlying file descriptor for the current PID file via +.Xr pidfile_fileno 3 . +.Pp +The explicit +.Vt bool +conversion operator permits testing the validity of an object. +The operator returns true if the instance owns a valid PID file handle. +.Sh EXAMPLES +.Bd -literal -offset indent +int +main() +{ + freebsd::pidfile pf(pidfile_open("/var/run/daemon.pid", + 0600, NULL)); + if (!pf) + err(1, "pidfile_open"); + + if (daemon(0, 0) == -1) { + warn("daemon"); + return 1; + } + + pf->write(); + + for (;;) { + /* Do Work */ + } + + return 0; +} +.Ed +.Sh SEE ALSO +.Xr pidfile 3 diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh index 121633c4deea..ecf737f2fcb0 100644 --- a/lib/libutil++/libutil++.hh +++ b/lib/libutil++/libutil++.hh @@ -9,6 +9,7 @@ #define __LIBUTILPP_HH__ #include +#include #include #include @@ -145,6 +146,79 @@ namespace freebsd { using nvlist_up = std::unique_ptr; + /* + * A wrapper class for the pidfile_* API. The destructor + * calls pidfile_remove() when an object is destroyed. This + * class is similar to std::unique_ptr<> in that it retains + * exclusive ownership of the pidfh object. + * + * In addition to release() and reset methods(), write(), + * close(), and fileno() methods are provided as wrappers for + * pidfile_*. + */ + class pidfile { + public: + pidfile() = default; + pidfile(struct pidfh *pfh) : pfh(pfh) {} + pidfile(pidfile &&other) : pfh(other.release()) {} + pidfile(pidfile const &) = delete; + + ~pidfile() { reset(); } + + struct pidfh *release() + { + struct pidfh *oldpfh = pfh; + + pfh = nullptr; + return (oldpfh); + } + + void reset(struct pidfh *newpfh = nullptr) + { + if (pfh != nullptr) + pidfile_remove(pfh); + pfh = newpfh; + } + + int write() + { + return (pidfile_write(pfh)); + } + + int close() + { + int rv = pidfile_close(pfh); + if (rv == 0) + pfh = nullptr; + return (rv); + } + + int fileno() + { + return (pidfile_fileno(pfh)); + } + + pidfile &operator=(pidfile &&other) noexcept + { + if (this == &other) + return *this; + reset(other.release()); + return *this; + } + + pidfile &operator=(pidfile const &) = delete; + + pidfile &operator=(struct pidfh *newpfh) + { + reset(newpfh); + return *this; + } + + explicit operator bool() const { return pfh != nullptr; } + private: + struct pidfh *pfh = nullptr; + }; + /* * Returns a std::string containing the same output as * sprintf(). Throws std::bad_alloc if an error occurs. diff --git a/lib/libutil++/tests/Makefile b/lib/libutil++/tests/Makefile index 81b7be4f5660..e7720d122f36 100644 --- a/lib/libutil++/tests/Makefile +++ b/lib/libutil++/tests/Makefile @@ -1,9 +1,12 @@ PACKAGE= tests +ATF_TESTS_CXX+= pidfile_test ATF_TESTS_CXX+= stringf_test ATF_TESTS_CXX+= up_test CFLAGS+= -I${SRCTOP}/lib/libutil++ LIBADD+= util++ +LIBADD.pidfile_test+= util + .include diff --git a/lib/libutil++/tests/pidfile_test.cc b/lib/libutil++/tests/pidfile_test.cc new file mode 100644 index 000000000000..067f10e8fab8 --- /dev/null +++ b/lib/libutil++/tests/pidfile_test.cc @@ -0,0 +1,44 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Chelsio Communications, Inc. + * Written by: John Baldwin + */ + +#include +#include +#include + +#include + +ATF_TEST_CASE_WITHOUT_HEAD(basic); +ATF_TEST_CASE_BODY(basic) +{ + pid_t other; + struct pidfh *pfh = pidfile_open("test_pidfile", 0600, &other); + ATF_REQUIRE(pfh != nullptr); + ATF_REQUIRE(pidfile_fileno(pfh) >= 0); + + struct stat sb; + ATF_REQUIRE(fstat(pidfile_fileno(pfh), &sb) == 0); + ATF_REQUIRE_EQ(0, sb.st_size); + + freebsd::pidfile pf(pfh); + ATF_REQUIRE_EQ(pidfile_fileno(pfh), pf.fileno()); + + ATF_REQUIRE(pf.write() == 0); + + ATF_REQUIRE(fstat(pf.fileno(), &sb) == 0); + ATF_REQUIRE(sb.st_size > 0); + + ATF_REQUIRE(pf.close() == 0); + ATF_REQUIRE(pf.fileno() == -1); + ATF_REQUIRE_EQ(EDOOFUS, errno); + + ATF_REQUIRE(unlink("test_pidfile") == 0); +} + +ATF_INIT_TEST_CASES(tcs) +{ + ATF_ADD_TEST_CASE(tcs, basic); +} From nobody Mon Aug 4 19:47:05 2025 X-Original-To: dev-commits-src-main@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 4bwnBf1sfkz63RK6; Mon, 04 Aug 2025 19:47:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBd73D3z4L1K; Mon, 04 Aug 2025 19:47:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336826; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HxUOfTvNq4hsA8hJapYVFvmkuBVvQOv8RlBFuHPN7aU=; b=B7FJXk4wpjVY5kFm4eOqvq26WG2wzM9dcIFzvLCFFP7A+Mffp+tduTDqiGK64fdUKOzEhl 4tG1hguxxBCn6ll84N2JEJA1mSr7ozwcGhlQI6ext8Z3IGvNSgvPwsD0ovK8ajdRg1d+vI TMi+oxo9mBGjNax2noH/HMTcIggG69WnZmbIgN+qAxU6smSW/KHvUY+Q/QwEv8vx7ZCnp9 dRrEZrpVKvJtJDja5fFc7dJuNNNujOROYbZ/JLulGKwMDoR47ir9tNSG8dFQQipFvbmNxK 7zZTWUsZmDXn56yVwGQmFSPK6BPY0eJrISC0C/bj7UnNEHTR6JjfFdPZvlLMDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336826; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HxUOfTvNq4hsA8hJapYVFvmkuBVvQOv8RlBFuHPN7aU=; b=vHY34BB7ieNCGHlfVwFEQvTSJo0AaunpfGe5dpWoyTulezYYF1ST6miQ1dVNCAr+kNEcVo OYUDncBETlChXoQk7CNyT2qDa4p4bj5DW2gpWqegXA3CbHsC/VlJxc5RlV6D97X4XVCYGI moKUg/Eg1lvarGeVP4/bmj5tDCTCBnm48spUde1pn1bJ4N+Iro2thN5D+6xny38DpKmOZo 3XxCtuaxafKFTpOpioKHzw435dxukctlCTq7jSflN8SF8y9X5SPLWTmN8MlATvBFB8jvZd dsLtJMFu9YH1VnV+nnz05GBsmPyQSowaVgqja9TtRiEfcSOGGyl4ASFuClAa0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336826; a=rsa-sha256; cv=none; b=NELmIKto/mVNuRk3q5krt/dW0F48sEu/1KxUy0x83n/vi1C8O9MzseHEBjgwBszBIxsaiQ Tisn+YiXbZQEdMzMPrSVDk0fGZ/z/LySpRN5URke98e7ZI8zrfX+7OKXIBz4bI7JMywdPJ yhlR/kXUGAYuX/dJ4TO+qzCInISbxcj1/XGQEtsIJFvqga5twraK1488BG9VC2+WXmH/qg TZzZBl4kf3ImQFWfta47oRsF2MPrcFkpBKy44d5E75pdbn1FiGzj1S0pOaAfenEwejr2fF ogQBEC3xmqFuoJIzp4KwePmyHIqQbUiOpEIAY16t+ilRNQI1qUC+SUC6bqDVBA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBd6VYkz12W7; Mon, 04 Aug 2025 19:47:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl5km099653; Mon, 4 Aug 2025 19:47:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl5jh099650; Mon, 4 Aug 2025 19:47:05 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:05 GMT Message-Id: <202508041947.574Jl5jh099650@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ed076901ec80 - main - ctld: Convert struct ctld_connection to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ed076901ec80e23804ef432cfa7edeb10c4f9ede Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ed076901ec80e23804ef432cfa7edeb10c4f9ede commit ed076901ec80e23804ef432cfa7edeb10c4f9ede Author: John Baldwin AuthorDate: 2025-08-04 19:38:08 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:08 +0000 ctld: Convert struct ctld_connection to a C++ class Note that some of the functions for handling iSCSI login, discovery, and kernel handoff are now functions of this class as they are logical operations on an iSCSI connection and need access to various members of this class. This also fixes some memory leaks as ctld_connection wasn't properly torn down once a connection finishes. These leaks were harmless in practice since the ctld process exits after handling each connection. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 37 +++---- usr.sbin/ctld/ctld.hh | 54 ++++++---- usr.sbin/ctld/discovery.cc | 36 +++---- usr.sbin/ctld/kernel.cc | 48 ++++----- usr.sbin/ctld/login.cc | 246 ++++++++++++++++++++++----------------------- 5 files changed, 213 insertions(+), 208 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 63b5f9164205..23d01364a6a4 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -1753,22 +1753,18 @@ pdu_fail(const struct connection *conn __unused, const char *reason __unused) { } -static struct ctld_connection * -connection_new(struct portal *portal, int fd, const char *host, - const struct sockaddr *client_sa) +ctld_connection::ctld_connection(struct portal *portal, int fd, + const char *host, const struct sockaddr *client_sa) : + conn_portal(portal), conn_initiator_addr(host), + conn_initiator_sa(client_sa) { - struct ctld_connection *conn; - - conn = reinterpret_cast(calloc(1, sizeof(*conn))); - if (conn == NULL) - log_err(1, "calloc"); - connection_init(&conn->conn, &conn_ops, proxy_mode); - conn->conn.conn_socket = fd; - conn->conn_portal = portal; - conn->conn_initiator_addr = checked_strdup(host); - conn->conn_initiator_sa = client_sa; + connection_init(&conn, &conn_ops, proxy_mode); + conn.conn_socket = fd; +} - return (conn); +ctld_connection::~ctld_connection() +{ + chap_delete(conn_chap); } bool @@ -2349,7 +2345,6 @@ static void handle_connection(struct portal *portal, int fd, const struct sockaddr *client_sa, bool dont_fork) { - struct ctld_connection *conn; struct portal_group *pg; int error; pid_t pid; @@ -2395,16 +2390,16 @@ handle_connection(struct portal *portal, int fd, log_set_peer_addr(host); setproctitle("%s", host); - conn = connection_new(portal, fd, host, client_sa); + ctld_connection conn(portal, fd, host, client_sa); start_timer(conf->timeout(), true); kernel_capsicate(); - login(conn); - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { - kernel_handoff(conn); + conn.login(); + if (conn.session_type() == CONN_SESSION_TYPE_NORMAL) { + conn.kernel_handoff(); log_debugx("connection handed off to the kernel"); } else { - assert(conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY); - discovery(conn); + assert(conn.session_type() == CONN_SESSION_TYPE_DISCOVERY); + conn.discovery(); } log_debugx("nothing more to do; exiting"); exit(0); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 1a71971c6a1d..059f719668f9 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -533,22 +533,43 @@ private: #define CONN_SESSION_TYPE_NORMAL 2 struct ctld_connection { + ctld_connection(struct portal *portal, int fd, const char *host, + const struct sockaddr *client_sa); + ~ctld_connection(); + + int session_type() const { return conn_session_type; } + + void login(); + void discovery(); + void kernel_handoff(); +private: + void login_chap(struct auth_group *ag); + void login_negotiate_key(struct pdu *request, const char *name, + const char *value, bool skipped_security, + struct keys *response_keys); + bool login_portal_redirect(struct pdu *request); + bool login_target_redirect(struct pdu *request); + void login_negotiate(struct pdu *request); + void login_wait_transition(); + + bool discovery_target_filtered_out(const struct port *port) const; + struct connection conn; - struct portal *conn_portal; - const struct port *conn_port; - struct target *conn_target; - int conn_session_type; - char *conn_initiator_name; - char *conn_initiator_addr; - char *conn_initiator_alias; + struct portal *conn_portal = nullptr; + const struct port *conn_port = nullptr; + struct target *conn_target = nullptr; + int conn_session_type = CONN_SESSION_TYPE_NONE; + std::string conn_initiator_name; + std::string conn_initiator_addr; + std::string conn_initiator_alias; uint8_t conn_initiator_isid[6]; - const struct sockaddr *conn_initiator_sa; - int conn_max_recv_data_segment_limit; - int conn_max_send_data_segment_limit; - int conn_max_burst_limit; - int conn_first_burst_limit; - const char *conn_user; - struct chap *conn_chap; + const struct sockaddr *conn_initiator_sa = nullptr; + int conn_max_recv_data_segment_limit = 0; + int conn_max_send_data_segment_limit = 0; + int conn_max_burst_limit = 0; + int conn_first_burst_limit = 0; + std::string conn_user; + struct chap *conn_chap = nullptr; }; extern int ctl_fd; @@ -564,7 +585,6 @@ bool option_new(nvlist_t *nvl, const char *name, const char *value); void kernel_init(void); -void kernel_handoff(struct ctld_connection *conn); void kernel_capsicate(void); #ifdef ICL_KERNEL_PROXY @@ -577,10 +597,6 @@ void kernel_send(struct pdu *pdu); void kernel_receive(struct pdu *pdu); #endif -void login(struct ctld_connection *conn); - -void discovery(struct ctld_connection *conn); - void start_timer(int timeout, bool fatal = false); void stop_timer(); diff --git a/usr.sbin/ctld/discovery.cc b/usr.sbin/ctld/discovery.cc index a98b5746735a..3c9f1cfa1dac 100644 --- a/usr.sbin/ctld/discovery.cc +++ b/usr.sbin/ctld/discovery.cc @@ -144,9 +144,8 @@ discovery_add_target(struct keys *response_keys, const struct target *targ) } } -static bool -discovery_target_filtered_out(const struct ctld_connection *conn, - const struct port *port) +bool +ctld_connection::discovery_target_filtered_out(const struct port *port) const { const struct auth_group *ag; const struct portal_group *pg; @@ -158,19 +157,19 @@ discovery_target_filtered_out(const struct ctld_connection *conn, ag = port->auth_group(); if (ag == nullptr) ag = targ->auth_group(); - pg = conn->conn_portal->portal_group(); + pg = conn_portal->portal_group(); assert(pg->discovery_filter() != discovery_filter::UNKNOWN); if (pg->discovery_filter() >= discovery_filter::PORTAL && - !ag->initiator_permitted(conn->conn_initiator_sa)) { + !ag->initiator_permitted(conn_initiator_sa)) { log_debugx("initiator does not match initiator portals " "allowed for target \"%s\"; skipping", targ->name()); return (true); } if (pg->discovery_filter() >= discovery_filter::PORTAL_NAME && - !ag->initiator_permitted(conn->conn_initiator_name)) { + !ag->initiator_permitted(conn_initiator_name)) { log_debugx("initiator does not match initiator names " "allowed for target \"%s\"; skipping", targ->name()); return (true); @@ -178,7 +177,7 @@ discovery_target_filtered_out(const struct ctld_connection *conn, if (pg->discovery_filter() >= discovery_filter::PORTAL_NAME_AUTH && ag->type() != auth_type::NO_AUTHENTICATION) { - if (conn->conn_chap == NULL) { + if (conn_chap == nullptr) { assert(pg->discovery_auth_group()->type() == auth_type::NO_AUTHENTICATION); @@ -187,19 +186,20 @@ discovery_target_filtered_out(const struct ctld_connection *conn, return (true); } - assert(conn->conn_user != NULL); - auth = ag->find_auth(conn->conn_user); + assert(!conn_user.empty()); + auth = ag->find_auth(conn_user); if (auth == NULL) { log_debugx("CHAP user \"%s\" doesn't match target " - "\"%s\"; skipping", conn->conn_user, targ->name()); + "\"%s\"; skipping", conn_user.c_str(), + targ->name()); return (true); } - error = chap_authenticate(conn->conn_chap, auth->secret()); + error = chap_authenticate(conn_chap, auth->secret()); if (error != 0) { log_debugx("password for CHAP user \"%s\" doesn't " "match target \"%s\"; skipping", - conn->conn_user, targ->name()); + conn_user.c_str(), targ->name()); return (true); } } @@ -208,7 +208,7 @@ discovery_target_filtered_out(const struct ctld_connection *conn, } void -discovery(struct ctld_connection *conn) +ctld_connection::discovery() { struct pdu *request, *response; struct keys *request_keys, *response_keys; @@ -216,10 +216,10 @@ discovery(struct ctld_connection *conn) const struct portal_group *pg; const char *send_targets; - pg = conn->conn_portal->portal_group(); + pg = conn_portal->portal_group(); log_debugx("beginning discovery session; waiting for TextRequest PDU"); - request_keys = text_read_request(&conn->conn, &request); + request_keys = text_read_request(&conn, &request); send_targets = keys_find(request_keys, "SendTargets"); if (send_targets == NULL) @@ -230,7 +230,7 @@ discovery(struct ctld_connection *conn) if (strcmp(send_targets, "All") == 0) { for (const auto &kv : pg->ports()) { port = kv.second; - if (discovery_target_filtered_out(conn, port)) { + if (discovery_target_filtered_out(port)) { /* Ignore this target. */ continue; } @@ -242,7 +242,7 @@ discovery(struct ctld_connection *conn) log_debugx("initiator requested information on unknown " "target \"%s\"; returning nothing", send_targets); } else { - if (discovery_target_filtered_out(conn, port)) { + if (discovery_target_filtered_out(port)) { /* Ignore this target. */ } else { discovery_add_target(response_keys, @@ -257,7 +257,7 @@ discovery(struct ctld_connection *conn) keys_delete(request_keys); log_debugx("done sending targets; waiting for Logout PDU"); - request = logout_receive(&conn->conn); + request = logout_receive(&conn); response = logout_new_response(request); pdu_send(response); diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index 10b5f16768fd..39bbb4290e84 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -706,51 +706,51 @@ lun::kernel_remove() const } void -kernel_handoff(struct ctld_connection *conn) +ctld_connection::kernel_handoff() { - struct portal_group *pg = conn->conn_portal->portal_group(); + struct portal_group *pg = conn_portal->portal_group(); struct ctl_iscsi req; bzero(&req, sizeof(req)); req.type = CTL_ISCSI_HANDOFF; - strlcpy(req.data.handoff.initiator_name, - conn->conn_initiator_name, sizeof(req.data.handoff.initiator_name)); - strlcpy(req.data.handoff.initiator_addr, - conn->conn_initiator_addr, sizeof(req.data.handoff.initiator_addr)); - if (conn->conn_initiator_alias != NULL) { + strlcpy(req.data.handoff.initiator_name, conn_initiator_name.c_str(), + sizeof(req.data.handoff.initiator_name)); + strlcpy(req.data.handoff.initiator_addr, conn_initiator_addr.c_str(), + sizeof(req.data.handoff.initiator_addr)); + if (!conn_initiator_alias.empty()) { strlcpy(req.data.handoff.initiator_alias, - conn->conn_initiator_alias, sizeof(req.data.handoff.initiator_alias)); + conn_initiator_alias.c_str(), + sizeof(req.data.handoff.initiator_alias)); } - memcpy(req.data.handoff.initiator_isid, conn->conn_initiator_isid, + memcpy(req.data.handoff.initiator_isid, conn_initiator_isid, sizeof(req.data.handoff.initiator_isid)); - strlcpy(req.data.handoff.target_name, - conn->conn_target->name(), sizeof(req.data.handoff.target_name)); + strlcpy(req.data.handoff.target_name, conn_target->name(), + sizeof(req.data.handoff.target_name)); strlcpy(req.data.handoff.offload, pg->offload(), sizeof(req.data.handoff.offload)); #ifdef ICL_KERNEL_PROXY if (proxy_mode) - req.data.handoff.connection_id = conn->conn.conn_socket; + req.data.handoff.connection_id = conn.conn_socket; else - req.data.handoff.socket = conn->conn.conn_socket; + req.data.handoff.socket = conn.conn_socket; #else - req.data.handoff.socket = conn->conn.conn_socket; + req.data.handoff.socket = conn.conn_socket; #endif req.data.handoff.portal_group_tag = pg->tag(); - if (conn->conn.conn_header_digest == CONN_DIGEST_CRC32C) + if (conn.conn_header_digest == CONN_DIGEST_CRC32C) req.data.handoff.header_digest = CTL_ISCSI_DIGEST_CRC32C; - if (conn->conn.conn_data_digest == CONN_DIGEST_CRC32C) + if (conn.conn_data_digest == CONN_DIGEST_CRC32C) req.data.handoff.data_digest = CTL_ISCSI_DIGEST_CRC32C; - req.data.handoff.cmdsn = conn->conn.conn_cmdsn; - req.data.handoff.statsn = conn->conn.conn_statsn; + req.data.handoff.cmdsn = conn.conn_cmdsn; + req.data.handoff.statsn = conn.conn_statsn; req.data.handoff.max_recv_data_segment_length = - conn->conn.conn_max_recv_data_segment_length; + conn.conn_max_recv_data_segment_length; req.data.handoff.max_send_data_segment_length = - conn->conn.conn_max_send_data_segment_length; - req.data.handoff.max_burst_length = conn->conn.conn_max_burst_length; - req.data.handoff.first_burst_length = - conn->conn.conn_first_burst_length; - req.data.handoff.immediate_data = conn->conn.conn_immediate_data; + conn.conn_max_send_data_segment_length; + req.data.handoff.max_burst_length = conn.conn_max_burst_length; + req.data.handoff.first_burst_length = conn.conn_first_burst_length; + req.data.handoff.immediate_data = conn.conn_immediate_data; if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) { log_err(1, "error issuing CTL_ISCSI ioctl; " diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index 61f32dcb0f51..aa62cd4c8b5b 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -454,8 +454,8 @@ login_send_chap_success(struct pdu *request, pdu_delete(response); } -static void -login_chap(struct ctld_connection *conn, struct auth_group *ag) +void +ctld_connection::login_chap(struct auth_group *ag) { std::string user; const struct auth *auth; @@ -466,7 +466,7 @@ login_chap(struct ctld_connection *conn, struct auth_group *ag) * Receive CHAP_A PDU. */ log_debugx("beginning CHAP authentication; waiting for CHAP_A"); - request = login_receive_chap_a(&conn->conn); + request = login_receive_chap_a(&conn); /* * Generate the challenge. @@ -485,7 +485,7 @@ login_chap(struct ctld_connection *conn, struct auth_group *ag) * Receive CHAP_N/CHAP_R PDU and authenticate. */ log_debugx("waiting for CHAP_N/CHAP_R"); - request = login_receive_chap_r(&conn->conn, ag, chap, &auth, user); + request = login_receive_chap_r(&conn, ag, chap, &auth, user); /* * Yay, authentication succeeded! @@ -498,19 +498,18 @@ login_chap(struct ctld_connection *conn, struct auth_group *ag) /* * Leave username and CHAP information for discovery(). */ - conn->conn_user = checked_strdup(user.c_str()); - conn->conn_chap = chap; + conn_user = user; + conn_chap = chap; } -static void -login_negotiate_key(struct pdu *request, const char *name, +void +ctld_connection::login_negotiate_key(struct pdu *request, const char *name, const char *value, bool skipped_security, struct keys *response_keys) { int which; size_t tmp; - struct ctld_connection *conn; - conn = (struct ctld_connection *)request->pdu_connection; + assert(request->pdu_connection == &conn); if (strcmp(name, "InitiatorName") == 0) { if (!skipped_security) @@ -522,16 +521,14 @@ login_negotiate_key(struct pdu *request, const char *name, if (!skipped_security) log_errx(1, "initiator resent TargetName"); } else if (strcmp(name, "InitiatorAlias") == 0) { - if (conn->conn_initiator_alias != NULL) - free(conn->conn_initiator_alias); - conn->conn_initiator_alias = checked_strdup(value); + conn_initiator_alias = value; } else if (strcmp(value, "Irrelevant") == 0) { /* Ignore. */ } else if (strcmp(name, "HeaderDigest") == 0) { /* * We don't handle digests for discovery sessions. */ - if (conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { + if (conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { log_debugx("discovery session; digests disabled"); keys_add(response_keys, name, "None"); return; @@ -542,7 +539,7 @@ login_negotiate_key(struct pdu *request, const char *name, case 1: log_debugx("initiator prefers CRC32C " "for header digest; we'll use it"); - conn->conn.conn_header_digest = CONN_DIGEST_CRC32C; + conn.conn_header_digest = CONN_DIGEST_CRC32C; keys_add(response_keys, name, "CRC32C"); break; case 2: @@ -557,7 +554,7 @@ login_negotiate_key(struct pdu *request, const char *name, break; } } else if (strcmp(name, "DataDigest") == 0) { - if (conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { + if (conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { log_debugx("discovery session; digests disabled"); keys_add(response_keys, name, "None"); return; @@ -568,7 +565,7 @@ login_negotiate_key(struct pdu *request, const char *name, case 1: log_debugx("initiator prefers CRC32C " "for data digest; we'll use it"); - conn->conn.conn_data_digest = CONN_DIGEST_CRC32C; + conn.conn_data_digest = CONN_DIGEST_CRC32C; keys_add(response_keys, name, "CRC32C"); break; case 2: @@ -587,15 +584,15 @@ login_negotiate_key(struct pdu *request, const char *name, } else if (strcmp(name, "InitialR2T") == 0) { keys_add(response_keys, name, "Yes"); } else if (strcmp(name, "ImmediateData") == 0) { - if (conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { + if (conn_session_type == CONN_SESSION_TYPE_DISCOVERY) { log_debugx("discovery session; ImmediateData irrelevant"); keys_add(response_keys, name, "Irrelevant"); } else { if (strcmp(value, "Yes") == 0) { - conn->conn.conn_immediate_data = true; + conn.conn_immediate_data = true; keys_add(response_keys, name, "Yes"); } else { - conn->conn.conn_immediate_data = false; + conn.conn_immediate_data = false; keys_add(response_keys, name, "No"); } } @@ -613,25 +610,25 @@ login_negotiate_key(struct pdu *request, const char *name, * our MaxRecvDataSegmentLength is not influenced by the * initiator in any way. */ - if ((int)tmp > conn->conn_max_send_data_segment_limit) { + if ((int)tmp > conn_max_send_data_segment_limit) { log_debugx("capping MaxRecvDataSegmentLength " "from %zd to %d", tmp, - conn->conn_max_send_data_segment_limit); - tmp = conn->conn_max_send_data_segment_limit; + conn_max_send_data_segment_limit); + tmp = conn_max_send_data_segment_limit; } - conn->conn.conn_max_send_data_segment_length = tmp; + conn.conn_max_send_data_segment_length = tmp; } else if (strcmp(name, "MaxBurstLength") == 0) { tmp = strtoul(value, NULL, 10); if (tmp <= 0) { login_send_error(request, 0x02, 0x00); log_errx(1, "received invalid MaxBurstLength"); } - if ((int)tmp > conn->conn_max_burst_limit) { + if ((int)tmp > conn_max_burst_limit) { log_debugx("capping MaxBurstLength from %zd to %d", - tmp, conn->conn_max_burst_limit); - tmp = conn->conn_max_burst_limit; + tmp, conn_max_burst_limit); + tmp = conn_max_burst_limit; } - conn->conn.conn_max_burst_length = tmp; + conn.conn_max_burst_length = tmp; keys_add_int(response_keys, name, tmp); } else if (strcmp(name, "FirstBurstLength") == 0) { tmp = strtoul(value, NULL, 10); @@ -639,12 +636,12 @@ login_negotiate_key(struct pdu *request, const char *name, login_send_error(request, 0x02, 0x00); log_errx(1, "received invalid FirstBurstLength"); } - if ((int)tmp > conn->conn_first_burst_limit) { + if ((int)tmp > conn_first_burst_limit) { log_debugx("capping FirstBurstLength from %zd to %d", - tmp, conn->conn_first_burst_limit); - tmp = conn->conn_first_burst_limit; + tmp, conn_first_burst_limit); + tmp = conn_first_burst_limit; } - conn->conn.conn_first_burst_length = tmp; + conn.conn_first_burst_length = tmp; keys_add_int(response_keys, name, tmp); } else if (strcmp(name, "DefaultTime2Wait") == 0) { keys_add(response_keys, name, value); @@ -696,12 +693,12 @@ login_redirect(struct pdu *request, const char *target_address) keys_delete(response_keys); } -static bool -login_portal_redirect(struct ctld_connection *conn, struct pdu *request) +bool +ctld_connection::login_portal_redirect(struct pdu *request) { const struct portal_group *pg; - pg = conn->conn_portal->portal_group(); + pg = conn_portal->portal_group(); if (!pg->is_redirecting()) return (false); @@ -712,87 +709,84 @@ login_portal_redirect(struct ctld_connection *conn, struct pdu *request) return (true); } -static bool -login_target_redirect(struct ctld_connection *conn, struct pdu *request) +bool +ctld_connection::login_target_redirect(struct pdu *request) { const char *target_address; - assert(!conn->conn_portal->portal_group()->is_redirecting()); + assert(!conn_portal->portal_group()->is_redirecting()); - if (conn->conn_target == NULL) + if (conn_target == NULL) return (false); - if (!conn->conn_target->has_redirection()) + if (!conn_target->has_redirection()) return (false); - target_address = conn->conn_target->redirection(); + target_address = conn_target->redirection(); log_debugx("target \"%s\" configured to redirect to %s", - conn->conn_target->name(), target_address); + conn_target->name(), target_address); login_redirect(request, target_address); return (true); } -static void -login_negotiate(struct ctld_connection *conn, struct pdu *request) +void +ctld_connection::login_negotiate(struct pdu *request) { - struct portal_group *pg = conn->conn_portal->portal_group(); + struct portal_group *pg = conn_portal->portal_group(); struct pdu *response; struct iscsi_bhs_login_response *bhslr2; struct keys *request_keys, *response_keys; int i; bool redirected, skipped_security; - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { + if (conn_session_type == CONN_SESSION_TYPE_NORMAL) { /* * Query the kernel for various size limits. In case of * offload, it depends on hardware capabilities. */ - assert(conn->conn_target != NULL); - conn->conn_max_recv_data_segment_limit = (1 << 24) - 1; - conn->conn_max_send_data_segment_limit = (1 << 24) - 1; - conn->conn_max_burst_limit = (1 << 24) - 1; - conn->conn_first_burst_limit = (1 << 24) - 1; + assert(conn_target != NULL); + conn_max_recv_data_segment_limit = (1 << 24) - 1; + conn_max_send_data_segment_limit = (1 << 24) - 1; + conn_max_burst_limit = (1 << 24) - 1; + conn_first_burst_limit = (1 << 24) - 1; kernel_limits(pg->offload(), - conn->conn.conn_socket, - &conn->conn_max_recv_data_segment_limit, - &conn->conn_max_send_data_segment_limit, - &conn->conn_max_burst_limit, - &conn->conn_first_burst_limit); + conn.conn_socket, + &conn_max_recv_data_segment_limit, + &conn_max_send_data_segment_limit, + &conn_max_burst_limit, + &conn_first_burst_limit); /* We expect legal, usable values at this point. */ - assert(conn->conn_max_recv_data_segment_limit >= 512); - assert(conn->conn_max_recv_data_segment_limit < (1 << 24)); - assert(conn->conn_max_send_data_segment_limit >= 512); - assert(conn->conn_max_send_data_segment_limit < (1 << 24)); - assert(conn->conn_max_burst_limit >= 512); - assert(conn->conn_max_burst_limit < (1 << 24)); - assert(conn->conn_first_burst_limit >= 512); - assert(conn->conn_first_burst_limit < (1 << 24)); - assert(conn->conn_first_burst_limit <= - conn->conn_max_burst_limit); + assert(conn_max_recv_data_segment_limit >= 512); + assert(conn_max_recv_data_segment_limit < (1 << 24)); + assert(conn_max_send_data_segment_limit >= 512); + assert(conn_max_send_data_segment_limit < (1 << 24)); + assert(conn_max_burst_limit >= 512); + assert(conn_max_burst_limit < (1 << 24)); + assert(conn_first_burst_limit >= 512); + assert(conn_first_burst_limit < (1 << 24)); + assert(conn_first_burst_limit <= conn_max_burst_limit); /* * Limit default send length in case it won't be negotiated. * We can't do it for other limits, since they may affect both * sender and receiver operation, and we must obey defaults. */ - if (conn->conn_max_send_data_segment_limit < - conn->conn.conn_max_send_data_segment_length) { - conn->conn.conn_max_send_data_segment_length = - conn->conn_max_send_data_segment_limit; + if (conn_max_send_data_segment_limit < + conn.conn_max_send_data_segment_length) { + conn.conn_max_send_data_segment_length = + conn_max_send_data_segment_limit; } } else { - conn->conn_max_recv_data_segment_limit = - MAX_DATA_SEGMENT_LENGTH; - conn->conn_max_send_data_segment_limit = - MAX_DATA_SEGMENT_LENGTH; + conn_max_recv_data_segment_limit = MAX_DATA_SEGMENT_LENGTH; + conn_max_send_data_segment_limit = MAX_DATA_SEGMENT_LENGTH; } if (request == NULL) { log_debugx("beginning operational parameter negotiation; " "waiting for Login PDU"); - request = login_receive(&conn->conn, false); + request = login_receive(&conn, false); skipped_security = false; } else skipped_security = true; @@ -803,7 +797,7 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) * authentication, but MUST be accepted afterwards; that's * why we're doing it here and not earlier. */ - redirected = login_target_redirect(conn, request); + redirected = login_target_redirect(request); if (redirected) { log_debugx("initiator redirected; exiting"); exit(0); @@ -820,10 +814,10 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) response_keys = keys_new(); if (skipped_security && - conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { - if (conn->conn_target->has_alias()) + conn_session_type == CONN_SESSION_TYPE_NORMAL) { + if (conn_target->has_alias()) keys_add(response_keys, - "TargetAlias", conn->conn_target->alias()); + "TargetAlias", conn_target->alias()); keys_add_int(response_keys, "TargetPortalGroupTag", pg->tag()); } @@ -844,16 +838,15 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) * pairs in the order they are in the request we might have ended up * with illegal values here. */ - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL && - conn->conn.conn_first_burst_length > - conn->conn.conn_max_burst_length) { + if (conn_session_type == CONN_SESSION_TYPE_NORMAL && + conn.conn_first_burst_length > conn.conn_max_burst_length) { log_errx(1, "initiator sent FirstBurstLength > MaxBurstLength"); } - conn->conn.conn_max_recv_data_segment_length = - conn->conn_max_recv_data_segment_limit; + conn.conn_max_recv_data_segment_length = + conn_max_recv_data_segment_limit; keys_add_int(response_keys, "MaxRecvDataSegmentLength", - conn->conn.conn_max_recv_data_segment_length); + conn.conn_max_recv_data_segment_length); log_debugx("operational parameter negotiation done; " "transitioning to Full Feature Phase"); @@ -866,14 +859,14 @@ login_negotiate(struct ctld_connection *conn, struct pdu *request) keys_delete(request_keys); } -static void -login_wait_transition(struct ctld_connection *conn) +void +ctld_connection::login_wait_transition() { struct pdu *request, *response; struct iscsi_bhs_login_request *bhslr; log_debugx("waiting for state transition request"); - request = login_receive(&conn->conn, false); + request = login_receive(&conn, false); bhslr = (struct iscsi_bhs_login_request *)request->pdu_bhs; if ((bhslr->bhslr_flags & BHSLR_FLAGS_TRANSIT) == 0) { login_send_error(request, 0x02, 0x00); @@ -887,11 +880,11 @@ login_wait_transition(struct ctld_connection *conn) pdu_send(response); pdu_delete(response); - login_negotiate(conn, NULL); + login_negotiate(nullptr); } void -login(struct ctld_connection *conn) +ctld_connection::login() { struct pdu *request, *response; struct iscsi_bhs_login_request *bhslr; @@ -908,17 +901,17 @@ login(struct ctld_connection *conn) * is required, or call appropriate authentication code. */ log_debugx("beginning Login Phase; waiting for Login PDU"); - request = login_receive(&conn->conn, true); + request = login_receive(&conn, true); bhslr = (struct iscsi_bhs_login_request *)request->pdu_bhs; if (bhslr->bhslr_tsih != 0) { login_send_error(request, 0x02, 0x0a); log_errx(1, "received Login PDU with non-zero TSIH"); } - pg = conn->conn_portal->portal_group(); + pg = conn_portal->portal_group(); - memcpy(conn->conn_initiator_isid, bhslr->bhslr_isid, - sizeof(conn->conn_initiator_isid)); + memcpy(conn_initiator_isid, bhslr->bhslr_isid, + sizeof(conn_initiator_isid)); /* * XXX: Implement the C flag some day. @@ -926,7 +919,7 @@ login(struct ctld_connection *conn) request_keys = keys_new(); keys_load_pdu(request_keys, request); - assert(conn->conn_initiator_name == NULL); + assert(conn_initiator_name.empty()); initiator_name = keys_find(request_keys, "InitiatorName"); if (initiator_name == NULL) { login_send_error(request, 0x02, 0x07); @@ -936,11 +929,12 @@ login(struct ctld_connection *conn) login_send_error(request, 0x02, 0x00); log_errx(1, "received Login PDU with invalid InitiatorName"); } - conn->conn_initiator_name = checked_strdup(initiator_name); - log_set_peer_name(conn->conn_initiator_name); - setproctitle("%s (%s)", conn->conn_initiator_addr, conn->conn_initiator_name); + conn_initiator_name = initiator_name; + log_set_peer_name(conn_initiator_name.c_str()); + setproctitle("%s (%s)", conn_initiator_addr.c_str(), + conn_initiator_name.c_str()); - redirected = login_portal_redirect(conn, request); + redirected = login_portal_redirect(request); if (redirected) { log_debugx("initiator redirected; exiting"); exit(0); @@ -948,58 +942,58 @@ login(struct ctld_connection *conn) initiator_alias = keys_find(request_keys, "InitiatorAlias"); if (initiator_alias != NULL) - conn->conn_initiator_alias = checked_strdup(initiator_alias); + conn_initiator_alias = initiator_alias; - assert(conn->conn_session_type == CONN_SESSION_TYPE_NONE); + assert(conn_session_type == CONN_SESSION_TYPE_NONE); session_type = keys_find(request_keys, "SessionType"); if (session_type != NULL) { if (strcmp(session_type, "Normal") == 0) { - conn->conn_session_type = CONN_SESSION_TYPE_NORMAL; + conn_session_type = CONN_SESSION_TYPE_NORMAL; } else if (strcmp(session_type, "Discovery") == 0) { - conn->conn_session_type = CONN_SESSION_TYPE_DISCOVERY; + conn_session_type = CONN_SESSION_TYPE_DISCOVERY; } else { login_send_error(request, 0x02, 0x00); log_errx(1, "received Login PDU with invalid " "SessionType \"%s\"", session_type); } } else - conn->conn_session_type = CONN_SESSION_TYPE_NORMAL; + conn_session_type = CONN_SESSION_TYPE_NORMAL; - assert(conn->conn_target == NULL); - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { + assert(conn_target == NULL); + if (conn_session_type == CONN_SESSION_TYPE_NORMAL) { target_name = keys_find(request_keys, "TargetName"); if (target_name == NULL) { login_send_error(request, 0x02, 0x07); log_errx(1, "received Login PDU without TargetName"); } - conn->conn_port = pg->find_port(target_name); - if (conn->conn_port == NULL) { + conn_port = pg->find_port(target_name); + if (conn_port == NULL) { login_send_error(request, 0x02, 0x03); log_errx(1, "requested target \"%s\" not found", target_name); } - conn->conn_target = conn->conn_port->target(); + conn_target = conn_port->target(); } /* * At this point we know what kind of authentication we need. */ - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { - ag = conn->conn_port->auth_group(); + if (conn_session_type == CONN_SESSION_TYPE_NORMAL) { + ag = conn_port->auth_group(); if (ag == nullptr) - ag = conn->conn_target->auth_group(); - if (conn->conn_port->auth_group() == nullptr && - conn->conn_target->private_auth()) { + ag = conn_target->auth_group(); + if (conn_port->auth_group() == nullptr && + conn_target->private_auth()) { log_debugx("initiator requests to connect " - "to target \"%s\"", conn->conn_target->name()); + "to target \"%s\"", conn_target->name()); } else { log_debugx("initiator requests to connect " "to target \"%s\"; %s", - conn->conn_target->name(), ag->label()); + conn_target->name(), ag->label()); } } else { - assert(conn->conn_session_type == CONN_SESSION_TYPE_DISCOVERY); + assert(conn_session_type == CONN_SESSION_TYPE_DISCOVERY); ag = pg->discovery_auth_group(); log_debugx("initiator requests discovery session; %s", ag->label()); @@ -1026,7 +1020,7 @@ login(struct ctld_connection *conn) log_errx(1, "initiator does not match allowed initiator names"); } - if (!ag->initiator_permitted(conn->conn_initiator_sa)) { + if (!ag->initiator_permitted(conn_initiator_sa)) { login_send_error(request, 0x02, 0x02); log_errx(1, "initiator does not match allowed " "initiator portals"); @@ -1047,7 +1041,7 @@ login(struct ctld_connection *conn) log_debugx("initiator skipped the authentication, " "and we don't need it; proceeding with negotiation"); - login_negotiate(conn, request); + login_negotiate(request); return; } @@ -1082,10 +1076,10 @@ login(struct ctld_connection *conn) fail = true; } } - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { - if (conn->conn_target->has_alias()) + if (conn_session_type == CONN_SESSION_TYPE_NORMAL) { + if (conn_target->has_alias()) keys_add(response_keys, - "TargetAlias", conn->conn_target->alias()); + "TargetAlias", conn_target->alias()); keys_add_int(response_keys, "TargetPortalGroupTag", pg->tag()); } @@ -1103,11 +1097,11 @@ login(struct ctld_connection *conn) } if (ag->type() != auth_type::NO_AUTHENTICATION) { - login_chap(conn, ag); - login_negotiate(conn, NULL); + login_chap(ag); + login_negotiate(nullptr); } else if (trans) { - login_negotiate(conn, NULL); + login_negotiate(nullptr); } else { - login_wait_transition(conn); + login_wait_transition(); } } From nobody Mon Aug 4 19:47:03 2025 X-Original-To: dev-commits-src-main@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 4bwnBc0xcbz63RWK; Mon, 04 Aug 2025 19:47:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBb5jCXz4L3G; Mon, 04 Aug 2025 19:47:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3x0XR1+MHS21sNi5WFs9HFA4ew2uzv2WFAlk/6aFmT4=; b=S1M4KxWL4avEOwYmtH562Py624C92HOGD9LcbLfnCg8/q4CJ/IuB4aTd/ANXOcX6048YGg Tka5seL7Ys10qQfGFL3ccyMsrZ3HjMSH8gOBaERAYLMBlgwaYmvsvIwTaRPx/Q6nVtDbvt V+RCrthQ6umzh5BUMHRweCvPn0LWvO6WnbSiKOjdY/pwf3EvhqG0kZkFsCJf7A80v4OuHn 3Xu0aRyJY3AIO2T52DF4r9RJnfir5IpBHRkjCQoatgO+vwb+SmeaX2bzYkNemUVoQ9lVIW bz0bmltp40Pflvd0meEU/h+oUiAU1I3DriWBDW/EQM1SgvTA8yTfxTu9OZhldA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3x0XR1+MHS21sNi5WFs9HFA4ew2uzv2WFAlk/6aFmT4=; b=ozdVF14p6JrV2VLmo8vmKa1VtzHzywpHO7/0+i01qTsHtALf1jrJdMTAz/XpSvmch1YhaY u3ry4GeeIMkhXm9GEj2KxD38hu78FSfYZ0pv1kE+OLnTBbodwGhqSgsQnm/z2YtJR/RSGs zUwsc8UYIwe86+e9UvTaPd2S3OBWKXSHrRAMRbIc+IHq2NgSHpZoFU+rJNXJUH3AamTD8s V4fCu+9Ql2hibA/dYezKPlNh8p4HCOb0vGDemFs4EJsFkdowBc6RcqVNMoXIo+j9V7nBsy P5TkLJl6yPgaYY2FldbVSSnNt5uCP7mTXaDuS8CDHR0/5itkiNht6BFlEBLQyg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336823; a=rsa-sha256; cv=none; b=hITAIE6l2ID4hQRNvMzSH2uCpVG/pM1Y+f2IUjfrw3wLIOjNiJUJWYnKjEhvx04hpXN6Dy gNRpi7gyi/ltisDyUyxxqVLXUopgcojLL5MStXOy6EdtG1/sLlP981OioIwP6+u+9B9WwI Kxc818DuaT7rPSMXRQ1m+uJ6TGfwS+H95GPAAOydZML6PSkgarRfpy+QdJBrvz5t5Suopt iVMd9XKHkO9Ysy0zqfc6TOHYrdANlRRRdwJqyNJX54XflTf0kx8/BwHWzZJa+WeMjzcyu2 kj9NnvPDEzFPdFamZDXmPPWJnRWrVIzS1NKtBjTJ7eMqrUI1AbjED1aesM6VZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBb5F6Rz12lh; Mon, 04 Aug 2025 19:47:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl3wP099581; Mon, 4 Aug 2025 19:47:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl3av099574; Mon, 4 Aug 2025 19:47:03 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:03 GMT Message-Id: <202508041947.574Jl3av099574@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 888ec3a71912 - main - ctld: Convert struct conf to a C++ class List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 888ec3a71912994e4585a6444962de691b56d5d6 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=888ec3a71912994e4585a6444962de691b56d5d6 commit 888ec3a71912994e4585a6444962de691b56d5d6 Author: John Baldwin AuthorDate: 2025-08-04 19:38:07 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:07 +0000 ctld: Convert struct conf to a C++ class - Various functions to add or lookup configuration objects are now methods of the conf class. - Use std::string and freebsd::pidfile for various members. - Rename the global set_timeout() to start_timer() to avoid shadowing conf::set_timeout() and also split out a separate stop_timer(). Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/conf.cc | 63 ++---- usr.sbin/ctld/ctld.cc | 564 +++++++++++++++++++++++++++--------------------- usr.sbin/ctld/ctld.hh | 109 ++++++---- usr.sbin/ctld/kernel.cc | 28 +-- 4 files changed, 416 insertions(+), 348 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 81451009067c..2eae12c31d0c 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -70,48 +70,43 @@ conf_finish(void) bool isns_add_server(const char *addr) { - return (isns_new(conf, addr)); + return (conf->add_isns(addr)); } void conf_set_debug(int debug) { - conf->conf_debug = debug; + conf->set_debug(debug); } void conf_set_isns_period(int period) { - conf->conf_isns_period = period; + conf->set_isns_period(period); } void conf_set_isns_timeout(int timeout) { - conf->conf_isns_timeout = timeout; + conf->set_isns_timeout(timeout); } void conf_set_maxproc(int maxproc) { - conf->conf_maxproc = maxproc; + conf->set_maxproc(maxproc); } bool conf_set_pidfile_path(const char *path) { - if (conf->conf_pidfile_path != NULL) { - log_warnx("pidfile specified more than once"); - return (false); - } - conf->conf_pidfile_path = checked_strdup(path); - return (true); + return (conf->set_pidfile_path(path)); } void conf_set_timeout(int timeout) { - conf->conf_timeout = timeout; + conf->set_timeout(timeout); } bool @@ -148,22 +143,10 @@ auth_group_set_type(const char *type) bool auth_group_start(const char *name) { - /* - * Make it possible to redefine the default auth-group. but - * only once. - */ - if (strcmp(name, "default") == 0) { - if (conf->conf_default_ag_defined) { - log_warnx("duplicated auth-group \"default\""); - return (false); - } - - conf->conf_default_ag_defined = true; - auth_group = auth_group_find(conf, "default").get(); - return (true); - } - - auth_group = auth_group_new(conf, name); + if (strcmp(name, "default") == 0) + auth_group = conf->define_default_auth_group(); + else + auth_group = conf->add_auth_group(name); return (auth_group != nullptr); } @@ -176,22 +159,10 @@ auth_group_finish(void) bool portal_group_start(const char *name) { - /* - * Make it possible to redefine the default portal-group. but - * only once. - */ - if (strcmp(name, "default") == 0) { - if (conf->conf_default_pg_defined) { - log_warnx("duplicated portal-group \"default\""); - return (false); - } - - conf->conf_default_pg_defined = true; - portal_group = portal_group_find(conf, "default"); - return (true); - } - - portal_group = portal_group_new(conf, name); + if (strcmp(name, "default") == 0) + portal_group = conf->define_default_portal_group(); + else + portal_group = conf->add_portal_group(name); return (portal_group != NULL); } @@ -264,7 +235,7 @@ portal_group_set_tag(uint16_t tag) bool lun_start(const char *name) { - lun = lun_new(conf, name); + lun = conf->add_lun(name); return (lun != NULL); } @@ -331,7 +302,7 @@ lun_set_ctl_lun(uint32_t value) bool target_start(const char *name) { - target = target_new(conf, name); + target = conf->add_target(name); return (target != NULL); } diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 2aaba32ed101..d3106a00d417 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -96,29 +96,75 @@ usage(void) exit(1); } -struct conf * -conf_new(void) +void +conf::set_debug(int debug) { - struct conf *conf; + conf_debug = debug; +} - conf = new struct conf(); +void +conf::set_isns_period(int period) +{ + conf_isns_period = period; +} - conf->conf_isns_period = 900; - conf->conf_isns_timeout = 5; - conf->conf_debug = 0; - conf->conf_timeout = 60; - conf->conf_maxproc = 30; +void +conf::set_isns_timeout(int timeout) +{ + conf_isns_timeout = timeout; +} - return (conf); +void +conf::set_maxproc(int maxproc) +{ + conf_maxproc = maxproc; +} + +void +conf::set_timeout(int timeout) +{ + conf_timeout = timeout; +} + +bool +conf::set_pidfile_path(std::string_view path) +{ + if (!conf_pidfile_path.empty()) { + log_warnx("pidfile specified more than once"); + return (false); + } + conf_pidfile_path = path; + return (true); +} + +void +conf::open_pidfile() +{ + const char *path; + pid_t otherpid; + + assert(!conf_pidfile_path.empty()); + path = conf_pidfile_path.c_str(); + log_debugx("opening pidfile %s", path); + conf_pidfile = pidfile_open(path, 0600, &otherpid); + if (!conf_pidfile) { + if (errno == EEXIST) + log_errx(1, "daemon already running, pid: %jd.", + (intmax_t)otherpid); + log_err(1, "cannot open or create pidfile \"%s\"", path); + } } void -conf_delete(struct conf *conf) +conf::write_pidfile() { - assert(conf->conf_pidfh == NULL); + conf_pidfile.write(); +} - free(conf->conf_pidfile_path); - delete conf; +void +conf::close_pidfile() +{ + conf_pidfile.close(); } #ifdef ICL_KERNEL_PROXY @@ -393,9 +439,9 @@ auth_group::initiator_permitted(const struct sockaddr *sa) const } struct auth_group * -auth_group_new(struct conf *conf, const char *name) +conf::add_auth_group(const char *name) { - const auto &pair = conf->conf_auth_groups.try_emplace(name, + const auto &pair = conf_auth_groups.try_emplace(name, std::make_shared(freebsd::stringf("auth-group \"%s\"", name))); if (!pair.second) { @@ -406,11 +452,26 @@ auth_group_new(struct conf *conf, const char *name) return (pair.first->second.get()); } +/* + * Make it possible to redefine the default auth-group, but only once. + */ +struct auth_group * +conf::define_default_auth_group() +{ + if (conf_default_ag_defined) { + log_warnx("duplicated auth-group \"default\""); + return (nullptr); + } + + conf_default_ag_defined = true; + return (find_auth_group("default").get()); +} + auth_group_sp -auth_group_find(const struct conf *conf, const char *name) +conf::find_auth_group(std::string_view name) { - auto it = conf->conf_auth_groups.find(name); - if (it == conf->conf_auth_groups.end()) + auto it = conf_auth_groups.find(std::string(name)); + if (it == conf_auth_groups.end()) return {}; return (it->second); @@ -422,10 +483,10 @@ portal_group::portal_group(struct conf *conf, std::string_view name) } struct portal_group * -portal_group_new(struct conf *conf, const char *name) +conf::add_portal_group(const char *name) { - auto pair = conf->conf_portal_groups.try_emplace(name, - std::make_unique(conf, name)); + auto pair = conf_portal_groups.try_emplace(name, + std::make_unique(this, name)); if (!pair.second) { log_warnx("duplicated portal-group \"%s\"", name); return (nullptr); @@ -434,11 +495,27 @@ portal_group_new(struct conf *conf, const char *name) return (pair.first->second.get()); } +/* + * Make it possible to redefine the default portal-group, but only + * once. + */ +struct portal_group * +conf::define_default_portal_group() +{ + if (conf_default_pg_defined) { + log_warnx("duplicated portal-group \"default\""); + return (nullptr); + } + + conf_default_pg_defined = true; + return (find_portal_group("default")); +} + struct portal_group * -portal_group_find(struct conf *conf, const char *name) +conf::find_portal_group(std::string_view name) { - auto it = conf->conf_portal_groups.find(name); - if (it == conf->conf_portal_groups.end()) + auto it = conf_portal_groups.find(std::string(name)); + if (it == conf_portal_groups.end()) return (nullptr); return (it->second.get()); @@ -554,7 +631,7 @@ portal_group::set_discovery_auth_group(const char *ag_name) "\"%s\" specified more than once", name()); return (false); } - pg_discovery_auth_group = auth_group_find(pg_conf, ag_name); + pg_discovery_auth_group = pg_conf->find_auth_group(ag_name); if (pg_discovery_auth_group == nullptr) { log_warnx("unknown discovery-auth-group \"%s\" " "for portal-group \"%s\"", ag_name, name()); @@ -666,7 +743,7 @@ void portal_group::verify(struct conf *conf) { if (pg_discovery_auth_group == nullptr) { - pg_discovery_auth_group = auth_group_find(conf, "default"); + pg_discovery_auth_group = conf->find_auth_group("default"); assert(pg_discovery_auth_group != nullptr); } @@ -748,9 +825,9 @@ portal_group::close_sockets() } bool -isns_new(struct conf *conf, const char *addr) +conf::add_isns(const char *addr) { - if (conf->conf_isns.count(addr) > 0) { + if (conf_isns.count(addr) > 0) { log_warnx("duplicate iSNS address %s", addr); return (false); } @@ -766,10 +843,11 @@ isns_new(struct conf *conf, const char *addr) * those into multiple servers. */ - conf->conf_isns.emplace(addr, isns(addr, std::move(ai))); + conf_isns.emplace(addr, isns(addr, std::move(ai))); return (true); } + freebsd::fd_up isns::connect() { @@ -807,18 +885,18 @@ isns::send_request(int s, struct isns_req req) return (true); } -static struct isns_req -isns_register_request(struct conf *conf, const char *hostname) +struct isns_req +conf::isns_register_request(const char *hostname) { const struct portal_group *pg; isns_req req(ISNS_FUNC_DEVATTRREG, ISNS_FLAG_CLIENT, "register"); - req.add_str(32, conf->conf_first_target->name()); + req.add_str(32, conf_first_target->name()); req.add_delim(); req.add_str(1, hostname); req.add_32(2, 2); /* 2 -- iSCSI */ - req.add_32(6, conf->conf_isns_period); - for (const auto &kv : conf->conf_portal_groups) { + req.add_32(6, conf_isns_period); + for (const auto &kv : conf_portal_groups) { pg = kv.second.get(); if (!pg->assigned()) @@ -828,7 +906,7 @@ isns_register_request(struct conf *conf, const char *hostname) req.add_port(17, portal->ai()); } } - for (const auto &kv : conf->conf_targets) { + for (const auto &kv : conf_targets) { const struct target *target = kv.second.get(); req.add_str(32, target->name()); @@ -849,40 +927,39 @@ isns_register_request(struct conf *conf, const char *hostname) return (req); } -static struct isns_req -isns_check_request(struct conf *conf, const char *hostname) +struct isns_req +conf::isns_check_request(const char *hostname) { isns_req req(ISNS_FUNC_DEVATTRQRY, ISNS_FLAG_CLIENT, "check"); - req.add_str(32, conf->conf_first_target->name()); + req.add_str(32, conf_first_target->name()); req.add_str(1, hostname); req.add_delim(); req.add(2, 0, NULL); return (req); } -static struct isns_req -isns_deregister_request(struct conf *conf, const char *hostname) +struct isns_req +conf::isns_deregister_request(const char *hostname) { isns_req req(ISNS_FUNC_DEVDEREG, ISNS_FLAG_CLIENT, "deregister"); - req.add_str(32, conf->conf_first_target->name()); + req.add_str(32, conf_first_target->name()); req.add_delim(); req.add_str(1, hostname); return (req); } void -isns_register_targets(struct conf *conf, struct isns *isns, - struct conf *oldconf) +conf::isns_register_targets(struct isns *isns, struct conf *oldconf) { int error; char hostname[256]; - if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) + if (conf_targets.empty() || conf_portal_groups.empty()) return; - set_timeout(conf->conf_isns_timeout, false); + start_timer(conf_isns_timeout); freebsd::fd_up s = isns->connect(); if (!s) { - set_timeout(0, false); + stop_timer(); return; } error = gethostname(hostname, sizeof(hostname)); @@ -890,48 +967,48 @@ isns_register_targets(struct conf *conf, struct isns *isns, log_err(1, "gethostname"); if (oldconf == nullptr || oldconf->conf_first_target == nullptr) - oldconf = conf; - isns->send_request(s, isns_deregister_request(oldconf, hostname)); - isns->send_request(s, isns_register_request(conf, hostname)); + oldconf = this; + isns->send_request(s, oldconf->isns_deregister_request(hostname)); + isns->send_request(s, isns_register_request(hostname)); s.reset(); - set_timeout(0, false); + stop_timer(); } void -isns_check(struct conf *conf, struct isns *isns) +conf::isns_check(struct isns *isns) { int error; char hostname[256]; - if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) + if (conf_targets.empty() || conf_portal_groups.empty()) return; - set_timeout(conf->conf_isns_timeout, false); + start_timer(conf_isns_timeout); freebsd::fd_up s = isns->connect(); if (!s) { - set_timeout(0, false); + stop_timer(); return; } error = gethostname(hostname, sizeof(hostname)); if (error != 0) log_err(1, "gethostname"); - if (!isns->send_request(s, isns_check_request(conf, hostname))) { - isns->send_request(s, isns_deregister_request(conf, hostname)); - isns->send_request(s, isns_register_request(conf, hostname)); + if (!isns->send_request(s, isns_check_request(hostname))) { + isns->send_request(s, isns_deregister_request(hostname)); + isns->send_request(s, isns_register_request(hostname)); } s.reset(); - set_timeout(0, false); + stop_timer(); } void -isns_deregister_targets(struct conf *conf, struct isns *isns) +conf::isns_deregister_targets(struct isns *isns) { int error; char hostname[256]; - if (conf->conf_targets.empty() || conf->conf_portal_groups.empty()) + if (conf_targets.empty() || conf_portal_groups.empty()) return; - set_timeout(conf->conf_isns_timeout, false); + start_timer(conf_isns_timeout); freebsd::fd_up s = isns->connect(); if (!s) return; @@ -939,9 +1016,26 @@ isns_deregister_targets(struct conf *conf, struct isns *isns) if (error != 0) log_err(1, "gethostname"); - isns->send_request(s, isns_deregister_request(conf, hostname)); + isns->send_request(s, isns_deregister_request(hostname)); s.reset(); - set_timeout(0, false); + stop_timer(); +} + +void +conf::isns_schedule_update() +{ + if (!conf_isns.empty()) + start_timer((conf_isns_period + 2) / 3); +} + +void +conf::isns_update() +{ + stop_timer(); + for (auto &kv : conf_isns) + isns_check(&kv.second); + + isns_schedule_update(); } bool @@ -1012,12 +1106,11 @@ portal_group_port::clear_references() } bool -port_new(struct conf *conf, struct target *target, struct portal_group *pg, - auth_group_sp ag) +conf::add_port(struct target *target, struct portal_group *pg, auth_group_sp ag) { std::string name = freebsd::stringf("%s-%s", pg->name(), target->name()); - const auto &pair = conf->conf_ports.try_emplace(name, + const auto &pair = conf_ports.try_emplace(name, std::make_unique(target, pg, ag)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); @@ -1028,12 +1121,12 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg, } bool -port_new(struct conf *conf, struct target *target, struct portal_group *pg, +conf::add_port(struct target *target, struct portal_group *pg, uint32_t ctl_port) { std::string name = freebsd::stringf("%s-%s", pg->name(), target->name()); - const auto &pair = conf->conf_ports.try_emplace(name, + const auto &pair = conf_ports.try_emplace(name, std::make_unique(target, pg, ctl_port)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); @@ -1043,12 +1136,12 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg, return (true); } -static bool -port_new_pp(struct conf *conf, struct target *target, struct pport *pp) +bool +conf::add_port(struct target *target, struct pport *pp) { std::string name = freebsd::stringf("%s-%s", pp->name(), target->name()); - const auto &pair = conf->conf_ports.try_emplace(name, + const auto &pair = conf_ports.try_emplace(name, std::make_unique(target, pp)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); @@ -1059,9 +1152,8 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) return (true); } -static bool -port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, - int pp, int vp) +bool +conf::add_port(struct kports &kports, struct target *target, int pp, int vp) { struct pport *pport; @@ -1069,10 +1161,10 @@ port_new_ioctl(struct conf *conf, struct kports &kports, struct target *target, pport = kports.find_port(pname); if (pport != NULL) - return (port_new_pp(conf, target, pport)); + return (add_port(target, pport)); std::string name = pname + "-" + target->name(); - const auto &pair = conf->conf_ports.try_emplace(name, + const auto &pair = conf_ports.try_emplace(name, std::make_unique(target, pp, vp)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); @@ -1092,7 +1184,7 @@ portal_group::find_port(std::string_view target) const } struct target * -target_new(struct conf *conf, const char *name) +conf::add_target(const char *name) { if (!valid_iscsi_name(name, log_warnx)) return (nullptr); @@ -1104,23 +1196,23 @@ target_new(struct conf *conf, const char *name) for (char &c : t_name) c = tolower(c); - auto const &pair = conf->conf_targets.try_emplace(t_name, - std::make_unique(conf, t_name)); + auto const &pair = conf_targets.try_emplace(t_name, + std::make_unique(this, t_name)); if (!pair.second) { log_warnx("duplicated target \"%s\"", name); return (NULL); } - if (conf->conf_first_target == nullptr) - conf->conf_first_target = pair.first->second.get(); + if (conf_first_target == nullptr) + conf_first_target = pair.first->second.get(); return (pair.first->second.get()); } struct target * -target_find(struct conf *conf, const char *name) +conf::find_target(std::string_view name) { - auto it = conf->conf_targets.find(name); - if (it == conf->conf_targets.end()) + auto it = conf_targets.find(std::string(name)); + if (it == conf_targets.end()) return (nullptr); return (it->second.get()); } @@ -1191,7 +1283,7 @@ target::add_lun(u_int id, const char *lun_name) return (false); } - t_lun = lun_find(t_conf, lun_name); + t_lun = t_conf->find_lun(lun_name); if (t_lun == NULL) { log_warnx("unknown LUN named %s used for target \"%s\"", lun_name, name()); @@ -1208,7 +1300,7 @@ target::add_portal_group(const char *pg_name, const char *ag_name) struct portal_group *pg; auth_group_sp ag; - pg = portal_group_find(t_conf, pg_name); + pg = t_conf->find_portal_group(pg_name); if (pg == NULL) { log_warnx("unknown portal-group \"%s\" for target \"%s\"", pg_name, name()); @@ -1216,7 +1308,7 @@ target::add_portal_group(const char *pg_name, const char *ag_name) } if (ag_name != NULL) { - ag = auth_group_find(t_conf, ag_name); + ag = t_conf->find_auth_group(ag_name); if (ag == NULL) { log_warnx("unknown auth-group \"%s\" for target \"%s\"", ag_name, name()); @@ -1224,7 +1316,7 @@ target::add_portal_group(const char *pg_name, const char *ag_name) } } - if (!port_new(t_conf, this, pg, std::move(ag))) { + if (!t_conf->add_port(this, pg, std::move(ag))) { log_warnx("can't link portal-group \"%s\" to target \"%s\"", pg_name, name()); return (false); @@ -1256,7 +1348,7 @@ target::set_auth_group(const char *ag_name) "specified more than once", name()); return (false); } - t_auth_group = auth_group_find(t_conf, ag_name); + t_auth_group = t_conf->find_auth_group(ag_name); if (t_auth_group == nullptr) { log_warnx("unknown auth-group \"%s\" for target \"%s\"", ag_name, name()); @@ -1317,7 +1409,7 @@ target::start_lun(u_int id) } std::string lun_name = freebsd::stringf("%s,lun,%u", name(), id); - new_lun = lun_new(t_conf, lun_name.c_str()); + new_lun = t_conf->add_lun(lun_name.c_str()); if (new_lun == nullptr) return (nullptr); @@ -1352,13 +1444,13 @@ void target::verify() { if (t_auth_group == nullptr) { - t_auth_group = auth_group_find(t_conf, "default"); + t_auth_group = t_conf->find_auth_group("default"); assert(t_auth_group != nullptr); } if (t_ports.empty()) { - struct portal_group *pg = portal_group_find(t_conf, "default"); + struct portal_group *pg = t_conf->find_portal_group("default"); assert(pg != NULL); - port_new(t_conf, this, pg, nullptr); + t_conf->add_port(this, pg, nullptr); } bool found = std::any_of(t_luns.begin(), t_luns.end(), @@ -1376,10 +1468,10 @@ lun::lun(struct conf *conf, std::string_view name) } struct lun * -lun_new(struct conf *conf, const char *name) +conf::add_lun(const char *name) { - const auto &pair = conf->conf_luns.try_emplace(name, - std::make_unique(conf, name)); + const auto &pair = conf_luns.try_emplace(name, + std::make_unique(this, name)); if (!pair.second) { log_warnx("duplicated lun \"%s\"", name); return (NULL); @@ -1387,18 +1479,18 @@ lun_new(struct conf *conf, const char *name) return (pair.first->second.get()); } -static void -conf_delete_target_luns(struct conf *conf, struct lun *lun) +void +conf::delete_target_luns(struct lun *lun) { - for (const auto &kv : conf->conf_targets) + for (const auto &kv : conf_targets) kv.second->remove_lun(lun); } struct lun * -lun_find(const struct conf *conf, const char *name) +conf::find_lun(std::string_view name) { - auto it = conf->conf_luns.find(name); - if (it == conf->conf_luns.end()) + auto it = conf_luns.find(std::string(name)); + if (it == conf_luns.end()) return (nullptr); return (it->second.get()); } @@ -1721,13 +1813,13 @@ lun::verify() } bool -conf_verify(struct conf *conf) +conf::verify() { - if (conf->conf_pidfile_path == NULL) - conf->conf_pidfile_path = checked_strdup(DEFAULT_PIDFILE); + if (conf_pidfile_path.empty()) + conf_pidfile_path = DEFAULT_PIDFILE; std::unordered_map path_map; - for (const auto &kv : conf->conf_luns) { + for (const auto &kv : conf_luns) { struct lun *lun = kv.second.get(); if (!lun->verify()) return (false); @@ -1746,13 +1838,13 @@ conf_verify(struct conf *conf) } } - for (auto &kv : conf->conf_targets) { + for (auto &kv : conf_targets) { kv.second->verify(); } - for (auto &kv : conf->conf_portal_groups) { - kv.second->verify(conf); + for (auto &kv : conf_portal_groups) { + kv.second->verify(this); } - for (const auto &kv : conf->conf_auth_groups) { + for (const auto &kv : conf_auth_groups) { const std::string &ag_name = kv.first; if (ag_name == "default" || ag_name == "no-authentication" || @@ -1903,41 +1995,44 @@ conf::reuse_portal_group_socket(struct portal &newp) return (false); } -static int -conf_apply(struct conf *oldconf, struct conf *newconf) +int +conf::apply(struct conf *oldconf) { int cumulated_error = 0; - if (oldconf->conf_debug != newconf->conf_debug) { - log_debugx("changing debug level to %d", newconf->conf_debug); - log_init(newconf->conf_debug); + if (oldconf->conf_debug != conf_debug) { + log_debugx("changing debug level to %d", conf_debug); + log_init(conf_debug); } - if (oldconf->conf_pidfile_path != NULL && - newconf->conf_pidfile_path != NULL) - { - if (strcmp(oldconf->conf_pidfile_path, - newconf->conf_pidfile_path) != 0) - { + /* + * On startup, oldconf created via conf_new_from_kernel will + * not contain a valid pidfile_path, and the current + * conf_pidfile will already own the pidfile. On shutdown, + * the temporary newconf will not contain a valid + * pidfile_path, and the pidfile will be cleaned up when the + * oldconf is deleted. + */ + if (!oldconf->conf_pidfile_path.empty() && + !conf_pidfile_path.empty()) { + if (oldconf->conf_pidfile_path != conf_pidfile_path) { /* pidfile has changed. rename it */ log_debugx("moving pidfile to %s", - newconf->conf_pidfile_path); - if (rename(oldconf->conf_pidfile_path, - newconf->conf_pidfile_path)) - { + conf_pidfile_path.c_str()); + if (rename(oldconf->conf_pidfile_path.c_str(), + conf_pidfile_path.c_str()) != 0) { log_err(1, "renaming pidfile %s -> %s", - oldconf->conf_pidfile_path, - newconf->conf_pidfile_path); + oldconf->conf_pidfile_path.c_str(), + conf_pidfile_path.c_str()); } } - newconf->conf_pidfh = oldconf->conf_pidfh; - oldconf->conf_pidfh = NULL; + conf_pidfile = std::move(oldconf->conf_pidfile); } /* * Go through the new portal groups, assigning tags or preserving old. */ - for (auto &kv : newconf->conf_portal_groups) { + for (auto &kv : conf_portal_groups) { struct portal_group &newpg = *kv.second; if (newpg.tag() != 0) @@ -1951,14 +2046,14 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* Deregister on removed iSNS servers. */ for (auto &kv : oldconf->conf_isns) { - if (newconf->conf_isns.count(kv.first) == 0) - isns_deregister_targets(oldconf, &kv.second); + if (conf_isns.count(kv.first) == 0) + oldconf->isns_deregister_targets(&kv.second); } /* * XXX: If target or lun removal fails, we should somehow "move" - * the old lun or target into newconf, so that subsequent - * conf_apply() would try to remove them again. That would + * the old lun or target into this, so that subsequent + * conf::apply() would try to remove them again. That would * be somewhat hairy, though, and lun deletion failures don't * really happen, so leave it as it is for now. */ @@ -1972,9 +2067,8 @@ conf_apply(struct conf *oldconf, struct conf *newconf) if (oldport->is_dummy()) continue; - const auto it = newconf->conf_ports.find(name); - if (it != newconf->conf_ports.end() && - !it->second->is_dummy()) + const auto it = conf_ports.find(name); + if (it != conf_ports.end() && !it->second->is_dummy()) continue; log_debugx("removing port \"%s\"", name.c_str()); if (!oldport->kernel_remove()) { @@ -1995,8 +2089,8 @@ conf_apply(struct conf *oldconf, struct conf *newconf) it != oldconf->conf_luns.end(); ) { struct lun *oldlun = it->second.get(); - auto newit = newconf->conf_luns.find(it->first); - if (newit == newconf->conf_luns.end()) { + auto newit = conf_luns.find(it->first); + if (newit == conf_luns.end()) { log_debugx("lun \"%s\", CTL lun %d " "not found in new configuration; " "removing", oldlun->name(), oldlun->ctl_lun()); @@ -2034,8 +2128,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) it++; } - for (auto it = newconf->conf_luns.begin(); - it != newconf->conf_luns.end(); ) { + for (auto it = conf_luns.begin(); it != conf_luns.end(); ) { struct lun *newlun = it->second.get(); auto oldit = oldconf->conf_luns.find(it->first); @@ -2055,8 +2148,8 @@ conf_apply(struct conf *oldconf, struct conf *newconf) log_debugx("adding lun \"%s\"", newlun->name()); if (!newlun->kernel_add()) { log_warnx("failed to add lun \"%s\"", newlun->name()); - conf_delete_target_luns(newconf, newlun); - it = newconf->conf_luns.erase(it); + delete_target_luns(newlun); + it = conf_luns.erase(it); cumulated_error++; } else it++; @@ -2065,8 +2158,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Now add new ports or modify existing ones. */ - for (auto it = newconf->conf_ports.begin(); - it != newconf->conf_ports.end(); ) { + for (auto it = conf_ports.begin(); it != conf_ports.end(); ) { const std::string &name = it->first; port *newport = it->second.get(); @@ -2096,7 +2188,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) * deleting the port. */ newport->clear_references(); - it = newconf->conf_ports.erase(it); + it = conf_ports.erase(it); } else it++; } else { @@ -2111,7 +2203,7 @@ conf_apply(struct conf *oldconf, struct conf *newconf) /* * Go through the new portals, opening the sockets as necessary. */ - for (auto &kv : newconf->conf_portal_groups) { + for (auto &kv : conf_portal_groups) { cumulated_error += kv.second->open_sockets(*oldconf); } @@ -2123,17 +2215,15 @@ conf_apply(struct conf *oldconf, struct conf *newconf) } /* (Re-)Register on remaining/new iSNS servers. */ - for (auto &kv : newconf->conf_isns) { + for (auto &kv : conf_isns) { auto it = oldconf->conf_isns.find(kv.first); if (it == oldconf->conf_isns.end()) - isns_register_targets(newconf, &kv.second, nullptr); + isns_register_targets(&kv.second, nullptr); else *** 617 LINES SKIPPED *** From nobody Mon Aug 4 19:47:04 2025 X-Original-To: dev-commits-src-main@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 4bwnBd2Z90z63RjG; Mon, 04 Aug 2025 19:47:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwnBc6YRyz4L3W; Mon, 04 Aug 2025 19:47:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5Y4lPTvLtv4cN7lDBn8ZTMPmb0HJBuxDS5owfXgyLsc=; b=Wo6+c+i00cJeufp5YNFG+GEmmyjjbC41NERZPsMaA+5nDp8uS43x4dqPoRQ7FE4vvaVyn6 TXpPQSA5oe7E/8NVSyBkGzPRG5ROuCE7YLabZdP7Pny5aJHXfk+e9g+s3zSjqzSMFuWXM9 SlSpxh7pfaD4oZ/FcptaxHICYcyHJj6SVGo3vo9e07g2Q0wOl6+JU9Ket0jwbuVJ8YI8NJ dK/momYQsYLWwFi8CIQiEwxkdfy3GcjD4geH7yVypPvxNdIqo0ZllDHUqwNUVtPUrD7wiE bv1Tv2sK0GIAcwWzijKKJVHw3ZZtrq17IGiLqUlcwD8qWb/0YwVxPIXePjE0mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754336824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5Y4lPTvLtv4cN7lDBn8ZTMPmb0HJBuxDS5owfXgyLsc=; b=XxfEoK+1ZtUECaLJl/L9rFEzzin7bX9fqCsq/tVXJPdTxz3APMF/rdsDcGE00ICABf6LEi mJd97YF8ZWS0GAGL9m7QR7EGVDPyj/Oqrsl3fBSowdxsocRiE6NvyAiIuPueThhrlP1Ady 0pfDiRwrXi5DIOjVG35cgKTR79DB4yR1Fu40dsmuV6dpWYCOkAPCkC8t1Mtrn4828ERa1p IKgpDyryvUiVFqTg7lO6I/CGHxBh2JG5Io1hlnhQMqml5Vf9S8lI7YTlunKVguxuIdHi6I JzV+7mWqpPZq5CswaAQh0+HIM4b7ZTUTLgFPhze3ZE3LRjTQSgz0UE7mU70KRA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754336824; a=rsa-sha256; cv=none; b=xu1wF8BNSr5H+l7Y/1qDIH+vAsZ/jRWazlynhNh9GBTBiikdDG2A8/DwvIKldfjU856QXc N8ZL+3MtnlzQTSewknMAduY294RBprPoDP3Ti/QVYTchykSqF6YimSMrUAQzPkfJkon5gI QmQfOoWJBOYtKuXVAB8XO+lsMV45f0ElX25NSeBSBBMmWy70ObNevNsr+ead39sR85EUoC Qq1Z/QND4RcLAGIT7AC6p46lJDfoTHRMsHFUkuxrBE24+G3VlVuSKaCzzqs6byJP7oa4GC IZ3RX16DREdPnfYTDz16Vakg2w7B91sy3F3aIdRbmW6SQUG42MACFpRK2ErIDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwnBc5v2Jz12f9; Mon, 04 Aug 2025 19:47:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574Jl4Lc099614; Mon, 4 Aug 2025 19:47:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574Jl4wm099611; Mon, 4 Aug 2025 19:47:04 GMT (envelope-from git) Date: Mon, 4 Aug 2025 19:47:04 GMT Message-Id: <202508041947.574Jl4wm099611@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: c6f1e9b8a412 - main - ctld: Simplify XML parsing memory management List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c6f1e9b8a412e4ab7ca5b144708c170d790e4567 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=c6f1e9b8a412e4ab7ca5b144708c170d790e4567 commit c6f1e9b8a412e4ab7ca5b144708c170d790e4567 Author: John Baldwin AuthorDate: 2025-08-04 19:38:08 +0000 Commit: John Baldwin CommitDate: 2025-08-04 19:38:08 +0000 ctld: Simplify XML parsing memory management Use C++ STL containers (std::string, std::list) for the data structure holding the parsed output of the XML configuration obtained from the kernel. This simplifies the code in various places and removes the need for manual memory freeing (which was incomplete). Use a std::list of pairs of std::string objects for the port and LUN attribute lists instead of an nvlist. Use a std::vector for the resizable buffer receiving XML results via ioctl(). Also, reuse the buffer from CTL_LUN_LIST for CTL_PORT_LIST rather than doing a free() only to turn around and malloc() again. While here, split out the code for fetching and parsing the XML into a separate function. Sponsored by: Chelsio Communications Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 --- usr.sbin/ctld/ctld.cc | 5 +- usr.sbin/ctld/ctld.hh | 2 +- usr.sbin/ctld/kernel.cc | 364 ++++++++++++++++++------------------------------ 3 files changed, 139 insertions(+), 232 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index d3106a00d417..63b5f9164205 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -1039,11 +1039,12 @@ conf::isns_update() } bool -kports::add_port(const char *name, uint32_t ctl_port) +kports::add_port(std::string &name, uint32_t ctl_port) { const auto &pair = pports.try_emplace(name, name, ctl_port); if (!pair.second) { - log_warnx("duplicate kernel port \"%s\" (%u)", name, ctl_port); + log_warnx("duplicate kernel port \"%s\" (%u)", name.c_str(), + ctl_port); return (false); } diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 5bce604fd80a..1a71971c6a1d 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -520,7 +520,7 @@ private: }; struct kports { - bool add_port(const char *name, uint32_t ctl_port); + bool add_port(std::string &name, uint32_t ctl_port); bool has_port(std::string_view name); struct pport *find_port(std::string_view name); diff --git a/usr.sbin/ctld/kernel.cc b/usr.sbin/ctld/kernel.cc index afaa4f8d2306..10b5f16768fd 100644 --- a/usr.sbin/ctld/kernel.cc +++ b/usr.sbin/ctld/kernel.cc @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -109,42 +108,40 @@ kernel_init(void) /* * Backend LUN information. */ +using attr_list = std::list>; + struct cctl_lun { uint64_t lun_id; - char *backend_type; + std::string backend_type; uint8_t device_type; uint64_t size_blocks; uint32_t blocksize; - char *serial_number; - char *device_id; - char *ctld_name; - nvlist_t *attr_list; - STAILQ_ENTRY(cctl_lun) links; + std::string serial_number; + std::string device_id; + std::string ctld_name; + attr_list attr_list; }; struct cctl_port { uint32_t port_id; - char *port_frontend; - char *port_name; + std::string port_frontend; + std::string port_name; int pp; int vp; int cfiscsi_state; - char *cfiscsi_target; + std::string cfiscsi_target; uint16_t cfiscsi_portal_group_tag; - char *ctld_portal_group_name; - nvlist_t *attr_list; - STAILQ_ENTRY(cctl_port) links; + std::string ctld_portal_group_name; + attr_list attr_list; }; struct cctl_devlist_data { - int num_luns; - STAILQ_HEAD(,cctl_lun) lun_list; - struct cctl_lun *cur_lun; - int num_ports; - STAILQ_HEAD(,cctl_port) port_list; - struct cctl_port *cur_port; - int level; - struct sbuf *cur_sb[32]; + std::list lun_list; + struct cctl_lun *cur_lun = nullptr; + std::list port_list; + struct cctl_port *cur_port = nullptr; + u_int level = 0; + struct sbuf *cur_sb[32] = {}; }; static void @@ -157,9 +154,8 @@ cctl_start_element(void *user_data, const char *name, const char **attr) devlist = (struct cctl_devlist_data *)user_data; cur_lun = devlist->cur_lun; devlist->level++; - if ((u_int)devlist->level >= (sizeof(devlist->cur_sb) / - sizeof(devlist->cur_sb[0]))) - log_errx(1, "%s: too many nesting levels, %zd max", __func__, + if (devlist->level >= nitems(devlist->cur_sb)) + log_errx(1, "%s: too many nesting levels, %zu max", __func__, nitems(devlist->cur_sb)); devlist->cur_sb[devlist->level] = sbuf_new_auto(); @@ -171,17 +167,11 @@ cctl_start_element(void *user_data, const char *name, const char **attr) log_errx(1, "%s: improper lun element nesting", __func__); - cur_lun = reinterpret_cast(calloc(1, sizeof(*cur_lun))); - if (cur_lun == NULL) - log_err(1, "%s: cannot allocate %zd bytes", __func__, - sizeof(*cur_lun)); + devlist->lun_list.emplace_back(); + cur_lun = &devlist->lun_list.back(); - devlist->num_luns++; devlist->cur_lun = cur_lun; - cur_lun->attr_list = nvlist_create(0); - STAILQ_INSERT_TAIL(&devlist->lun_list, cur_lun, links); - for (i = 0; attr[i] != NULL; i += 2) { if (strcmp(attr[i], "id") == 0) { cur_lun->lun_id = strtoull(attr[i+1], NULL, 0); @@ -198,8 +188,7 @@ cctl_end_element(void *user_data, const char *name) { struct cctl_devlist_data *devlist; struct cctl_lun *cur_lun; - char *str; - int error; + std::string str; devlist = (struct cctl_devlist_data *)user_data; cur_lun = devlist->cur_lun; @@ -213,55 +202,39 @@ cctl_end_element(void *user_data, const char *name) devlist->level, name); sbuf_finish(devlist->cur_sb[devlist->level]); - str = checked_strdup(sbuf_data(devlist->cur_sb[devlist->level])); - - if (strlen(str) == 0) { - free(str); - str = NULL; - } + str = sbuf_data(devlist->cur_sb[devlist->level]); sbuf_delete(devlist->cur_sb[devlist->level]); devlist->cur_sb[devlist->level] = NULL; devlist->level--; if (strcmp(name, "backend_type") == 0) { - cur_lun->backend_type = str; - str = NULL; + cur_lun->backend_type = std::move(str); } else if (strcmp(name, "lun_type") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_lun->device_type = strtoull(str, NULL, 0); + cur_lun->device_type = strtoull(str.c_str(), NULL, 0); } else if (strcmp(name, "size") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_lun->size_blocks = strtoull(str, NULL, 0); + cur_lun->size_blocks = strtoull(str.c_str(), NULL, 0); } else if (strcmp(name, "blocksize") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_lun->blocksize = strtoul(str, NULL, 0); + cur_lun->blocksize = strtoul(str.c_str(), NULL, 0); } else if (strcmp(name, "serial_number") == 0) { - cur_lun->serial_number = str; - str = NULL; + cur_lun->serial_number = std::move(str); } else if (strcmp(name, "device_id") == 0) { - cur_lun->device_id = str; - str = NULL; + cur_lun->device_id = std::move(str); } else if (strcmp(name, "ctld_name") == 0) { - cur_lun->ctld_name = str; - str = NULL; + cur_lun->ctld_name = std::move(str); } else if (strcmp(name, "lun") == 0) { devlist->cur_lun = NULL; } else if (strcmp(name, "ctllunlist") == 0) { /* Nothing. */ } else { - nvlist_move_string(cur_lun->attr_list, name, str); - error = nvlist_error(cur_lun->attr_list); - if (error != 0) - log_errc(1, error, "%s: failed to add nv pair for %s", - __func__, name); - str = NULL; + cur_lun->attr_list.emplace_back(name, std::move(str)); } - - free(str); } static void @@ -274,9 +247,8 @@ cctl_start_pelement(void *user_data, const char *name, const char **attr) devlist = (struct cctl_devlist_data *)user_data; cur_port = devlist->cur_port; devlist->level++; - if ((u_int)devlist->level >= (sizeof(devlist->cur_sb) / - sizeof(devlist->cur_sb[0]))) - log_errx(1, "%s: too many nesting levels, %zd max", __func__, + if (devlist->level >= nitems(devlist->cur_sb)) + log_errx(1, "%s: too many nesting levels, %zu max", __func__, nitems(devlist->cur_sb)); devlist->cur_sb[devlist->level] = sbuf_new_auto(); @@ -288,17 +260,10 @@ cctl_start_pelement(void *user_data, const char *name, const char **attr) log_errx(1, "%s: improper port element nesting (%s)", __func__, name); - cur_port = reinterpret_cast(calloc(1, sizeof(*cur_port))); - if (cur_port == NULL) - log_err(1, "%s: cannot allocate %zd bytes", __func__, - sizeof(*cur_port)); - - devlist->num_ports++; + devlist->port_list.emplace_back(); + cur_port = &devlist->port_list.back(); devlist->cur_port = cur_port; - cur_port->attr_list = nvlist_create(0); - STAILQ_INSERT_TAIL(&devlist->port_list, cur_port, links); - for (i = 0; attr[i] != NULL; i += 2) { if (strcmp(attr[i], "id") == 0) { cur_port->port_id = strtoul(attr[i+1], NULL, 0); @@ -315,8 +280,7 @@ cctl_end_pelement(void *user_data, const char *name) { struct cctl_devlist_data *devlist; struct cctl_port *cur_port; - char *str; - int error; + std::string str; devlist = (struct cctl_devlist_data *)user_data; cur_port = devlist->cur_port; @@ -330,59 +294,43 @@ cctl_end_pelement(void *user_data, const char *name) devlist->level, name); sbuf_finish(devlist->cur_sb[devlist->level]); - str = checked_strdup(sbuf_data(devlist->cur_sb[devlist->level])); - - if (strlen(str) == 0) { - free(str); - str = NULL; - } + str = sbuf_data(devlist->cur_sb[devlist->level]); sbuf_delete(devlist->cur_sb[devlist->level]); devlist->cur_sb[devlist->level] = NULL; devlist->level--; if (strcmp(name, "frontend_type") == 0) { - cur_port->port_frontend = str; - str = NULL; + cur_port->port_frontend = std::move(str); } else if (strcmp(name, "port_name") == 0) { - cur_port->port_name = str; - str = NULL; + cur_port->port_name = std::move(str); } else if (strcmp(name, "physical_port") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_port->pp = strtoul(str, NULL, 0); + cur_port->pp = strtoul(str.c_str(), NULL, 0); } else if (strcmp(name, "virtual_port") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_port->vp = strtoul(str, NULL, 0); + cur_port->vp = strtoul(str.c_str(), NULL, 0); } else if (strcmp(name, "cfiscsi_target") == 0) { - cur_port->cfiscsi_target = str; - str = NULL; + cur_port->cfiscsi_target = std::move(str); } else if (strcmp(name, "cfiscsi_state") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_port->cfiscsi_state = strtoul(str, NULL, 0); + cur_port->cfiscsi_state = strtoul(str.c_str(), NULL, 0); } else if (strcmp(name, "cfiscsi_portal_group_tag") == 0) { - if (str == NULL) + if (str.empty()) log_errx(1, "%s: %s missing its argument", __func__, name); - cur_port->cfiscsi_portal_group_tag = strtoul(str, NULL, 0); + cur_port->cfiscsi_portal_group_tag = strtoul(str.c_str(), NULL, 0); } else if (strcmp(name, "ctld_portal_group_name") == 0) { - cur_port->ctld_portal_group_name = str; - str = NULL; + cur_port->ctld_portal_group_name = std::move(str); } else if (strcmp(name, "targ_port") == 0) { devlist->cur_port = NULL; } else if (strcmp(name, "ctlportlist") == 0) { /* Nothing. */ } else { - nvlist_move_string(cur_port->attr_list, name, str); - error = nvlist_error(cur_port->attr_list); - if (error != 0) - log_errc(1, error, "%s: failed to add nv pair for %s", - __func__, name); - str = NULL; + cur_port->attr_list.emplace_back(name, std::move(str)); } - - free(str); } static void @@ -395,255 +343,213 @@ cctl_char_handler(void *user_data, const XML_Char *str, int len) sbuf_bcat(devlist->cur_sb[devlist->level], str, len); } -conf_up -conf_new_from_kernel(struct kports &kports) +static bool +parse_kernel_config(struct cctl_devlist_data &devlist) { - struct target *targ; - struct portal_group *pg; - struct lun *cl; struct ctl_lun_list list; - struct cctl_devlist_data devlist; - struct cctl_lun *lun; - struct cctl_port *port; XML_Parser parser; - const char *key; - char *str, *name; - void *cookie; - int len, retval; - - bzero(&devlist, sizeof(devlist)); - STAILQ_INIT(&devlist.lun_list); - STAILQ_INIT(&devlist.port_list); - - log_debugx("obtaining previously configured CTL luns from the kernel"); + int retval; - str = NULL; - len = 4096; + std::vector buf(4096); retry: - str = reinterpret_cast(realloc(str, len)); - if (str == NULL) - log_err(1, "realloc"); - bzero(&list, sizeof(list)); - list.alloc_len = len; + list.alloc_len = buf.size(); list.status = CTL_LUN_LIST_NONE; - list.lun_xml = str; + list.lun_xml = buf.data(); if (ioctl(ctl_fd, CTL_LUN_LIST, &list) == -1) { log_warn("error issuing CTL_LUN_LIST ioctl"); - free(str); - return (NULL); + return (false); } if (list.status == CTL_LUN_LIST_ERROR) { log_warnx("error returned from CTL_LUN_LIST ioctl: %s", list.error_str); - free(str); - return (NULL); + return (false); } if (list.status == CTL_LUN_LIST_NEED_MORE_SPACE) { - len = len << 1; + buf.resize(buf.size() << 1); goto retry; } parser = XML_ParserCreate(NULL); if (parser == NULL) { log_warnx("unable to create XML parser"); - free(str); - return (NULL); + return (false); } XML_SetUserData(parser, &devlist); XML_SetElementHandler(parser, cctl_start_element, cctl_end_element); XML_SetCharacterDataHandler(parser, cctl_char_handler); - retval = XML_Parse(parser, str, strlen(str), 1); + retval = XML_Parse(parser, buf.data(), strlen(buf.data()), 1); XML_ParserFree(parser); - free(str); if (retval != 1) { log_warnx("XML_Parse failed"); - return (NULL); + return (false); } - str = NULL; - len = 4096; retry_port: - str = reinterpret_cast(realloc(str, len)); - if (str == NULL) - log_err(1, "realloc"); - bzero(&list, sizeof(list)); - list.alloc_len = len; + list.alloc_len = buf.size(); list.status = CTL_LUN_LIST_NONE; - list.lun_xml = str; + list.lun_xml = buf.data(); if (ioctl(ctl_fd, CTL_PORT_LIST, &list) == -1) { log_warn("error issuing CTL_PORT_LIST ioctl"); - free(str); - return (NULL); + return (false); } if (list.status == CTL_LUN_LIST_ERROR) { log_warnx("error returned from CTL_PORT_LIST ioctl: %s", list.error_str); - free(str); - return (NULL); + return (false); } if (list.status == CTL_LUN_LIST_NEED_MORE_SPACE) { - len = len << 1; + buf.resize(buf.size() << 1); goto retry_port; } parser = XML_ParserCreate(NULL); if (parser == NULL) { log_warnx("unable to create XML parser"); - free(str); - return (NULL); + return (false); } XML_SetUserData(parser, &devlist); XML_SetElementHandler(parser, cctl_start_pelement, cctl_end_pelement); XML_SetCharacterDataHandler(parser, cctl_char_handler); - retval = XML_Parse(parser, str, strlen(str), 1); + retval = XML_Parse(parser, buf.data(), strlen(buf.data()), 1); XML_ParserFree(parser); - free(str); if (retval != 1) { log_warnx("XML_Parse failed"); - return (NULL); + return (false); } + return (true); +} + +conf_up +conf_new_from_kernel(struct kports &kports) +{ + struct cctl_devlist_data devlist; + + log_debugx("obtaining previously configured CTL luns from the kernel"); + + if (!parse_kernel_config(devlist)) + return {}; + conf_up conf = std::make_unique(); - name = NULL; - STAILQ_FOREACH(port, &devlist.port_list, links) { - if (strcmp(port->port_frontend, "ha") == 0) + for (const auto &port : devlist.port_list) { + if (port.port_frontend == "ha") continue; - free(name); - if (port->pp == 0 && port->vp == 0) { - name = checked_strdup(port->port_name); - } else if (port->vp == 0) { - retval = asprintf(&name, "%s/%d", - port->port_name, port->pp); - if (retval <= 0) - log_err(1, "asprintf"); - } else { - retval = asprintf(&name, "%s/%d/%d", - port->port_name, port->pp, port->vp); - if (retval <= 0) - log_err(1, "asprintf"); + + std::string name = port.port_name; + if (port.pp != 0) { + name += "/" + std::to_string(port.pp); + if (port.vp != 0) + name += "/" + std::to_string(port.vp); } - if (port->cfiscsi_target == NULL) { + if (port.cfiscsi_target.empty()) { log_debugx("CTL port %u \"%s\" wasn't managed by ctld; ", - port->port_id, name); + port.port_id, name.c_str()); if (!kports.has_port(name)) { - if (!kports.add_port(name, port->port_id)) { + if (!kports.add_port(name, port.port_id)) { log_warnx("kports::add_port failed"); continue; } } continue; } - if (port->cfiscsi_state != 1) { + if (port.cfiscsi_state != 1) { log_debugx("CTL port %ju is not active (%d); ignoring", - (uintmax_t)port->port_id, port->cfiscsi_state); + (uintmax_t)port.port_id, port.cfiscsi_state); continue; } - targ = conf->find_target(port->cfiscsi_target); + const char *t_name = port.cfiscsi_target.c_str(); + struct target *targ = conf->find_target(t_name); if (targ == NULL) { - targ = conf->add_target(port->cfiscsi_target); + targ = conf->add_target(t_name); if (targ == NULL) { log_warnx("Failed to add target \"%s\"", - port->cfiscsi_target); + t_name); continue; } } - if (port->ctld_portal_group_name == NULL) + if (port.ctld_portal_group_name.empty()) continue; - pg = conf->find_portal_group(port->ctld_portal_group_name); + const char *pg_name = port.ctld_portal_group_name.c_str(); + struct portal_group *pg = conf->find_portal_group(pg_name); if (pg == NULL) { - pg = conf->add_portal_group(port->ctld_portal_group_name); + pg = conf->add_portal_group(pg_name); if (pg == NULL) { log_warnx("Failed to add portal_group \"%s\"", - port->ctld_portal_group_name); + pg_name); continue; } } - pg->set_tag(port->cfiscsi_portal_group_tag); - if (!conf->add_port(targ, pg, port->port_id)) { + pg->set_tag(port.cfiscsi_portal_group_tag); + if (!conf->add_port(targ, pg, port.port_id)) { log_warnx("Failed to add port for target \"%s\" and portal-group \"%s\"", - port->cfiscsi_target, port->ctld_portal_group_name); + t_name, pg_name); continue; } } - while ((port = STAILQ_FIRST(&devlist.port_list))) { - STAILQ_REMOVE_HEAD(&devlist.port_list, links); - free(port->port_frontend); - free(port->port_name); - free(port->cfiscsi_target); - free(port->ctld_portal_group_name); - nvlist_destroy(port->attr_list); - free(port); - } - free(name); - STAILQ_FOREACH(lun, &devlist.lun_list, links) { - if (lun->ctld_name == NULL) { + for (const auto &lun : devlist.lun_list) { + if (lun.ctld_name.empty()) { log_debugx("CTL lun %ju wasn't managed by ctld; " - "ignoring", (uintmax_t)lun->lun_id); + "ignoring", (uintmax_t)lun.lun_id); continue; } - cl = conf->find_lun(lun->ctld_name); + const char *l_name = lun.ctld_name.c_str(); + struct lun *cl = conf->find_lun(l_name); if (cl != NULL) { log_warnx("found CTL lun %ju \"%s\", " "also backed by CTL lun %d; ignoring", - (uintmax_t)lun->lun_id, lun->ctld_name, + (uintmax_t)lun.lun_id, l_name, cl->ctl_lun()); continue; } log_debugx("found CTL lun %ju \"%s\"", - (uintmax_t)lun->lun_id, lun->ctld_name); + (uintmax_t)lun.lun_id, l_name); - cl = conf->add_lun(lun->ctld_name); + cl = conf->add_lun(l_name); if (cl == NULL) { log_warnx("lun_new failed"); continue; } - cl->set_backend(lun->backend_type); - cl->set_device_type(lun->device_type); - cl->set_blocksize(lun->blocksize); - cl->set_device_id(lun->device_id); - cl->set_serial(lun->serial_number); - cl->set_size(lun->size_blocks * lun->blocksize); - cl->set_ctl_lun(lun->lun_id); - - cookie = NULL; - while ((key = nvlist_next(lun->attr_list, NULL, &cookie)) != - NULL) { - if (strcmp(key, "file") == 0 || - strcmp(key, "dev") == 0) { - cl->set_path(cnvlist_get_string(cookie)); + cl->set_backend(lun.backend_type.c_str()); + cl->set_device_type(lun.device_type); + cl->set_blocksize(lun.blocksize); + cl->set_device_id(lun.device_id.c_str()); + cl->set_serial(lun.serial_number.c_str()); + cl->set_size(lun.size_blocks * lun.blocksize); + cl->set_ctl_lun(lun.lun_id); + + for (const auto &pair : lun.attr_list) { + const char *key = pair.first.c_str(); + const char *value = pair.second.c_str(); + if (pair.first == "file" || pair.first == "dev") { + cl->set_path(value); continue; } - if (!cl->add_option(key, cnvlist_get_string(cookie))) + if (!cl->add_option(key, value)) log_warnx("unable to add CTL lun option " "%s for CTL lun %ju \"%s\"", - key, (uintmax_t)lun->lun_id, + key, (uintmax_t)lun.lun_id, cl->name()); } } - while ((lun = STAILQ_FIRST(&devlist.lun_list))) { - STAILQ_REMOVE_HEAD(&devlist.lun_list, links); - nvlist_destroy(lun->attr_list); - free(lun); - } return (conf); } From nobody Mon Aug 4 20:05:49 2025 X-Original-To: dev-commits-src-main@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 4bwncG1tWjz63SLX; Mon, 04 Aug 2025 20:05:50 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwncF6jwTz3HLl; Mon, 04 Aug 2025 20:05:49 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754337950; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xcdl4EyH88sXB5eAo7z330lfNS5VgJVXi5v8qnI0QK0=; b=fXMUCauvTaebX2qhRcjRGDPKA5a/AGIax3Q+zDQDC2//GDLYvVjknL4hiLqfIzg0qxV5xf D0LfIbrjDZD/t22quCwqbCo/bmuVJsUJI/Z/H5lb3pWbQm0bgoWZOSyYdmyHTC6fE3SHYr PkMRhdcjaUte/qNcig+jg+65Yrwean4BlKzO3LtaWJmvC4KM4tr9IuMiEYvnWTz3Ku0aIW kOG50JKFOP9vDbUawPDc6R3fr7F2gP87zKPWpKsPy+zx0sxeViUODHSaLcnue1p332q4Bx /mMnFnNWUzRV0et08ASvse8uHRu2xLGhtx8c+fhwwdjhukc9oegapbhNmr3zkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754337950; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xcdl4EyH88sXB5eAo7z330lfNS5VgJVXi5v8qnI0QK0=; b=aL8Qr5abHiRdWbCksM9cCUN8vGZalhip4i+ECDc0LmgMAdkt4lTRVFUUsTqb0LpuOdt865 HAsxcCyA/ZeoBlDY9CCGWUn+XmGLb5JXeLROVeNztK8PHuu64sfNLjKhkMeRRVYk/SenVO Gf85C+/Rj9c3QfYu12/bksNf04uis0TYeGXXD0cEgRmr5mOHraG6B+Dc4TOiFVaTT/vWVc +W+9A9CnV7xqs4rsvG7DUJqqnR9lnsJDmWGym1Cv944NEolMRT7YleEMEBzBBepCYwkj9/ peYL6Z4GNW8Wwpq+hVO/xMdKB0kLjIu7PeBb1hmtctCVdYtAG5MWefu6XTw6ag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754337950; a=rsa-sha256; cv=none; b=aO/clJVzL+SwzX8e2w2BZF+H8LCBRYTG1NMAqQXuYkOiKBWthKE9Wsz3GfrYUTzaAt4fBY pXcL5axhlST92denZ6eUA7Jth/cKWlAX9bKRWlRTssFwHljnB5hP2Eyi4V4mWwreTVIodP RJyA8Q8q5dP90d5VCuHZcoFQzdV/nOmCfzgaWLjoWa2vzkeMWRM/TzghFcmL1YMMk0xnio IHQWnwlKtBxfwdg8ViJFM8VktiptzZWh7aEATPCBUt2CBT1SS65ddkypO3SimEg4n6Fu2r Yn1QA9pHNXdpkK08KraqojpMGAt3BnBos7uHOwia54KQzTrfG6hzDt0nObYrfA== Received: from [IPV6:2601:5c0:4202:5670:3cb2:220f:177b:6972] (unknown [IPv6:2601:5c0:4202:5670:3cb2:220f:177b:6972]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bwncF5BfMzJZ1; Mon, 04 Aug 2025 20:05:49 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <54b1695f-4ada-451b-91fc-46b188576fba@FreeBSD.org> Date: Mon, 4 Aug 2025 16:05:49 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 47586ffc8bde - main - libucl: Add a ucl::Ucl::forced_string_value method Content-Language: en-US From: John Baldwin To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508041946.574JkdH8098783@gitrepo.freebsd.org> In-Reply-To: <202508041946.574JkdH8098783@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/4/25 15:46, John Baldwin wrote: > The branch main has been updated by jhb: > > URL: https://cgit.FreeBSD.org/src/commit/?id=47586ffc8bde236bab65da05ad3c0a660709ba96 > > commit 47586ffc8bde236bab65da05ad3c0a660709ba96 > Author: John Baldwin > AuthorDate: 2025-08-04 19:38:06 +0000 > Commit: John Baldwin > CommitDate: 2025-08-04 19:38:06 +0000 > > libucl: Add a ucl::Ucl::forced_string_value method > > This is a wrapper around ucl_object_tostring_forced. > > Sponsored by: Chelsio Communications > Pull Request: https://github.com/freebsd/freebsd-src/pull/1794 FYI, this changed was already merged upstream here: https://github.com/vstakhov/libucl/pull/317 -- John Baldwin From nobody Mon Aug 4 22:08:08 2025 X-Original-To: dev-commits-src-main@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 4bwrKP15Rwz63ZsV; Mon, 04 Aug 2025 22:08: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwrKP09kyz3Rsp; Mon, 04 Aug 2025 22:08:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754345289; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ULcczyqkQ1fnyEFiKTWaMqzsN74+/FLBdcgmxvXaLjI=; b=drYRffd6JFp8u7sP5t+vF2QxjZ/l0IuBtkw6/HQ6MN9dy/VhJMCD1a+7lKVzwowTyOcVS9 b5hacUahCm0Z5sIpkCHZZ7dfTQVreCzj88lB5ireqyuFCN1vZmZkLArNNSLfh6bEx7UQ2H OywR3Df19z+9TPgqYAR0HZFXiPZNRAPBxV8SEJkVjY+/c3c8UHq4+Z8e8sEC10e/c5oO+g VlmSMloXiNbmB9/TbwL4t6vQl/L106DX7+mBgPSOi+P17r3RaPCFqWERwO4DCCLe4e4eBb bub+4yGLvpmAlBJgMjvw8EAXdHjqpHLIWG0DaFso45yIiAXLLr4iHXxGh8Gk4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754345289; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ULcczyqkQ1fnyEFiKTWaMqzsN74+/FLBdcgmxvXaLjI=; b=KQB3e7PxGfE0QuZ55cPJSBBu9VkjgFOEQBJNYPIpyfqkhvZQWyxAElXhs4B8OYVsCiU0vu 9FERC1YgITOjtsHqeSoT6v9hgizkRUP4vBW9BFdDi66wf5QQNPfHE/w1APJHVYU0nrxfG5 NKLokunMfk+Vu5cZBJ/keBhA7JneelKLcfe83VednOuCKaWcRhKdWcWIhb6vW33pmfVABL rTTGnQ0zZR7Gn1u3RAL+NuusgWbqhorO1MbRjIbHLF/y5ykX44srRzj5K2bLSjanfdPNml Rahx1feIpKrdmQ1Y6598OE0nC2YgmKC1tbkWkupTGJA/Nnp1WIS9EiEpLyRIvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754345289; a=rsa-sha256; cv=none; b=kOotg6PXswX4Qg5WyMPsWoQMf9YruA5jK0dOmPElmfiIq0VyC3rKBdnD9nXuFeWbMltQ/s /Mk0CSW6S0Y7eANtOvh9ZSM7W8BNT7Lo/Vd0mOZjRlrzbsEL1EpUPmLlmTvP+kRM0LmW09 dz7Wjj0LZ7vOjbraXG2OoHkN/trcvEa1lQ8nmygfOu1zZlLX/cB94Cdy2bAHd/rrzLI5rd Q3EYGI4ZEK6AoSXu+62cBUuVDrMZr1vMi+foKAjUhTthcCdOJizl3mi4kMNBY0mjCLHBO+ 65pr+GfwAi/SzGT77oQuzwjXNWxo6dvBRF7T517COrchwPXcfUDatDgeCgVCWg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwrKN6nSqz16jG; Mon, 04 Aug 2025 22:08:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574M88b7063282; Mon, 4 Aug 2025 22:08:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574M88EI063279; Mon, 4 Aug 2025 22:08:08 GMT (envelope-from git) Date: Mon, 4 Aug 2025 22:08:08 GMT Message-Id: <202508042208.574M88EI063279@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: e2ac6de6e4ed - main - p9fs: Set vnode state in p9fs_vget_common() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e2ac6de6e4edc1c6e7bfdfb0ec8fcf62f46d503f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e2ac6de6e4edc1c6e7bfdfb0ec8fcf62f46d503f commit e2ac6de6e4edc1c6e7bfdfb0ec8fcf62f46d503f Author: Mark Johnston AuthorDate: 2025-08-04 15:07:05 +0000 Commit: Mark Johnston CommitDate: 2025-08-04 22:06:17 +0000 p9fs: Set vnode state in p9fs_vget_common() Once a new vnode is visible from the mountpoint hash, we should set its state from VSTATE_UNINITIALIZED to VSTATE_CONSTRUCTED. I do not think this affects correctness at all, but the bug trips a check in vop_unlock_debugpost(), previously hidden under options DEBUG_VFS_LOCKS. Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D51720 --- sys/fs/p9fs/p9fs_vfsops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/fs/p9fs/p9fs_vfsops.c b/sys/fs/p9fs/p9fs_vfsops.c index 3451bc052187..e0e91e7e1709 100644 --- a/sys/fs/p9fs/p9fs_vfsops.c +++ b/sys/fs/p9fs/p9fs_vfsops.c @@ -374,7 +374,7 @@ p9fs_vget_common(struct mount *mp, struct p9fs_node *np, int flags, STAILQ_INSERT_TAIL(&vses->virt_node_list, np, p9fs_node_next); np->flags |= P9FS_NODE_IN_SESSION; P9FS_UNLOCK(vses); - + vn_set_state(vp, VSTATE_CONSTRUCTED); *vpp = vp; } else { /* From nobody Mon Aug 4 22:26:53 2025 X-Original-To: dev-commits-src-main@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 4bwrl13P9Mz63brk; Mon, 04 Aug 2025 22:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwrl12gc5z3T4P; Mon, 04 Aug 2025 22:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754346413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6X5+oalPawZpU8vEH+DXDVSdomq36SMnwSCxPxpfTPQ=; b=YwYLLErTzbgL/GLYIehJ4VF7YPn7LfTu9Wph1tRYsRc5nKCoKb2zHYuupHIpy6TC0nszb2 b9+y/8MTKRsLabKonp5WLzF1JXm+EZJAYKtlF9slaJypvf+JT5ta0iqvGjS5uo+eDpmRDW XkZq8YYc2YP6cF3DD1ZtEqXYns/ASSDMEI/XcL6cy2Alpm9sGWRrNwrwTUuiT17v/OLjzT nC5s5PJ/NWMOHHZDIMWd+0+0Wp8jL+9SCCqmj3fJwFxu6krByb9Is+0qk2ViP/JntrYVXu tipp7r2hql1PKrX4UJ25E2Q/cPQM7VIOLRi/UvNpHpi5sSqqRQW8B55ykGpADg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754346413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6X5+oalPawZpU8vEH+DXDVSdomq36SMnwSCxPxpfTPQ=; b=Tgv3lucvLvjzfZ7aiQsQ9zkAOa8QeOIHOdLoeFCKkKu8MGYoQearamE2An6saxc4aoiFcw E+eBkQMXLcMxxxbcgnF3fUWwg7c125iZrzGI1ObuB4b31eIZXjrT35thxM++LuE03Xixr4 2AQAgW5eYfmWO1G5lceiFS78ulGV1FWV+47iWWUtIgbqmJGClfMkfAhNF2Pbsl2IjxDUit JTZRetsPl3kxqAeeh2sZ487gXtdPTu+Gue6q1vERvoApTfzv7g2u31fAZpOBH2jkHYkw0y n1rvLBIdDul+6Fm+00+A8OqUerp/a04NsP8ySJZI71XjQiz/5KQmfijzPyakFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754346413; a=rsa-sha256; cv=none; b=K7j5irmgVc8Qcxe9yHF7fdMuE5yzucfxw0b/hOoWRMlGIMs0TqxRN5I1gh+RmEy4VFLBqH AN9Tgae/GIZrvnYMNpJozK7oHCJJAPypf5bm+u67Ey2Z8xZ9C+TZYc44P1LSdDv1ujMHIl cUYFgn5FMkWUKe14QIFof10Lv1zXXUjpGoMfRn+FjTr85JkkAEd7M+YsXYJQHZycO4y8dg hayJmWW5U+vdSdzrnRrvhs6wUVUXM6/y+W4BQweNXy0AkyOxcpgmTmRoSOTqpTrGHyBccW A1keMisJUEt5fIclRz8Ro3aPjCzAy10V2aOhls1NChSC1ByJUi/cR0OGMh7m3Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwrl11s6Qz16gd; Mon, 04 Aug 2025 22:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574MQrRc000822; Mon, 4 Aug 2025 22:26:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574MQr4f000819; Mon, 4 Aug 2025 22:26:53 GMT (envelope-from git) Date: Mon, 4 Aug 2025 22:26:53 GMT Message-Id: <202508042226.574MQr4f000819@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: fd50bb3f7cd0 - main - vop_fsync_debugprepost(): take account of nullfs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fd50bb3f7cd0762755ba6bf12d506da2544d4756 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd50bb3f7cd0762755ba6bf12d506da2544d4756 commit fd50bb3f7cd0762755ba6bf12d506da2544d4756 Author: Konstantin Belousov AuthorDate: 2025-08-04 20:12:28 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-04 22:26:25 +0000 vop_fsync_debugprepost(): take account of nullfs Reported by: netchild Reviewed and tested by: markj Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51730 --- sys/kern/vfs_subr.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 4eac8bb0c8bb..a6e38be89291 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -5897,6 +5897,8 @@ vop_fplookup_symlink_debugpost(void *ap __unused, int rc __unused) static void vop_fsync_debugprepost(struct vnode *vp, const char *name) { + struct mount *mp; + if (vp->v_type == VCHR) ; /* @@ -5914,10 +5916,16 @@ vop_fsync_debugprepost(struct vnode *vp, const char *name) * should still be caught when the stacked filesystem * invokes VOP_FSYNC() on the underlying filesystem. */ - else if (MNT_SHARED_WRITES(vp->v_mount)) - ASSERT_VOP_LOCKED(vp, name); - else - ASSERT_VOP_ELOCKED(vp, name); + else { + mp = NULL; + VOP_GETWRITEMOUNT(vp, &mp); + if (vn_lktype_write(mp, vp) == LK_SHARED) + ASSERT_VOP_LOCKED(vp, name); + else + ASSERT_VOP_ELOCKED(vp, name); + if (mp != NULL) + vfs_rel(mp); + } } void From nobody Mon Aug 4 23:10:10 2025 X-Original-To: dev-commits-src-main@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 4bwshz2kSgz63drr; Mon, 04 Aug 2025 23:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwshz1zxQz3XyV; Mon, 04 Aug 2025 23:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754349011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/tYHXJ+rqND1leDokLRe45v8PB2O3/hZjRpbUtYDLEM=; b=yc4crea153hbCAPtKO4hr0Z3mnRfjajWQ7sXal6MYkJQWjsiBEMTN3E5YSgYNekxrbkNIQ cfMDjjElKgIgGb9PJpvjBMZWAUY2DZyzy2BkumkRJtVpygIoEnEu5fD+d8bEuoWwzgbRnr 5KAECepY2L2YVT5BmVmjMcKmv+h0jcJFJTp6FycCU9eitIsl1/+dzMM8z60PUpPmev1ByE 5D31sJ1lgow1FhlzusfN7bgPqRKqIa96/0sDDnEO6Rk+3w6h02Pub5IBWfR6sRtijI+kRV UG9wyAClDXlUUspxo/o/CYDsH8mvsY1D7V2iGjnhtycsaZW13bu1yDraos2FTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754349011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/tYHXJ+rqND1leDokLRe45v8PB2O3/hZjRpbUtYDLEM=; b=or0R7Um56DGVJEtPjAGcQ0G8n4PKRV/yURy1wPui1R/LtuKfzl3o3z+el/5SxhO4m/Orvt IlZ99JaInPZWWxeqFXceXuJ9zFtFz+MSWcfB3cZ45D2iPXNbS3Z+MFfLo1v7jWOGphVL21 ZHDH4IMjssdj28dFmI3FCQbPa7KG3nFA0/auU6K9q8nZ7qeLlXc3NpC+FIKFglbAx1CW8i axkbGHOnClStc0fQRQhtEmkne2TW1vP0nKwa/9fX8RdrGQDJjEFf9RulCEA4/+cmwhSTBv RIHi5DwA2oQWhvsU+TyYlg8BkAvzOvAcnj50EQ03qSqe7Qj/tCG4foXEvide0g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754349011; a=rsa-sha256; cv=none; b=Qt4ka87wC+qJU4+yL6gt76tk+4gE6zufKr9TP7DmajUh0lAN+HJTb1bbVVRIvVKXnn3l6Z ZQkCOadkqnkEnZPglT4G+KV/0w5ey0r9GtHUfBCbRn+ANc2SzUPra6hCqokeTgLrGl4376 3GPNFLopcI6c0CmBEYD27mx/sevYjlxxpAWw21N7Esa3s4wADRYc1xOxf1BOfJ96P4EjvQ 9LqyJRop6cCDblhQ13n9NrXIxteRlS7cpYe97X/YcKac4pL4EDUI+OyWYOnUFFVfjbvjFT mXrs57V2tTfevAzyLagBdsU9tqsyFfI/NULiiKOtwkpzwTqa+2Uf+bMHcYfIZQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwshz0nQyz18FK; Mon, 04 Aug 2025 23:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574NAAUA082016; Mon, 4 Aug 2025 23:10:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574NAAYB082004; Mon, 4 Aug 2025 23:10:10 GMT (envelope-from git) Date: Mon, 4 Aug 2025 23:10:10 GMT Message-Id: <202508042310.574NAAYB082004@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 28f618fcc2b4 - main - kern: fix a panic in crcopysafe() found by syzkaller List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 28f618fcc2b42066f68a9459e4178adffe08d35b Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=28f618fcc2b42066f68a9459e4178adffe08d35b commit 28f618fcc2b42066f68a9459e4178adffe08d35b Author: Kyle Evans AuthorDate: 2025-08-04 23:09:58 +0000 Commit: Kyle Evans CommitDate: 2025-08-04 23:09:58 +0000 kern: fix a panic in crcopysafe() found by syzkaller crcopysafe() attempts to crextend() the new ucred's group allocation with the number of allocated group slots (`cr_asize`) from the ucred to copy rather than the latter's actual number of supplementary groups. However, the number of allocated group slots can exceed `ngroups_max` for certain values of it (because of rounding to the next power-of-2 or page on allocation), making `crextend()` trip on a check that the passed value should be lower than `ngroups_max`. This was not a problem before be1f7435ef218b1 because the effective max storage was NGROUPS_MAX + 1 (1024) to account for the egid being included in cr_groups. Now that we're back down to NGROUPS_MAX, the max allocation will tend to be 1024 and exceed our max groups. Switch crcopysafe() to extend until we have enough allocated to fit the previous group set, and call crextend() with the number of groups that the old ucred had. This avoids relying on implementation details of crextend() up-sizing our requests and ensures we only have as large of an allocation as we need to fulfill the request. Reviewed by: olce Reported by: syzbot+4e68da43c26f357a2b7e@syzkaller.appspotmail.com Fixes: be1f7435ef218b1 ("kern: start tracking cr_gid outside [...]") Differential Revision: https://reviews.freebsd.org/D51660 --- sys/kern/kern_prot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 6bdef84a34c1..bbb622547598 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -2773,8 +2773,8 @@ crcopysafe(struct proc *p, struct ucred *cr) PROC_LOCK_ASSERT(p, MA_OWNED); oldcred = p->p_ucred; - while (cr->cr_agroups < oldcred->cr_agroups) { - groups = oldcred->cr_agroups; + while (cr->cr_agroups < oldcred->cr_ngroups) { + groups = oldcred->cr_ngroups; PROC_UNLOCK(p); crextend(cr, groups); PROC_LOCK(p); From nobody Mon Aug 4 23:10:12 2025 X-Original-To: dev-commits-src-main@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 4bwsj069qgz63dhc; Mon, 04 Aug 2025 23:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwsj03Gp7z3XcT; Mon, 04 Aug 2025 23:10:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754349012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0zhvZPaYB1RjU1sZEiQWCLge87BXyHgbaTgBnv6l5/I=; b=YRqeBN0P6d4BNDy/Cubrs0ZHy1mLg2UCo4Pp9v5s85i5bKfXnZ/N7jQD9277xehBQMLrcG dKBVGel/pKhs6kpxtRVTbDNJn9ge1Y1jh/VyVR9+iRXLAOZl1uyiTylivJBlejxOhmLyEF VwT7s69ogW9oD+4SfEVaQ98ziNDukwOhZnyePzZORZvq54x7jB5/a08+ldXX7dtsTrh80R FtlyZ+JbXYIjgOt6Nrz8QyKwTjpr2O4Aje/0VB207LorFxtlpvmBjJ5JQ/EO0AVzyUAD19 gE3yyGxSRAZhbEuwsUFZmMzEBYGxFSUibG8UVpc0W1Y7NY/SiT+Kxv2GAuxBeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754349012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0zhvZPaYB1RjU1sZEiQWCLge87BXyHgbaTgBnv6l5/I=; b=diN1GBax7XV/4uzWvxJLlIac3O4QGZpFvVPwxyiT2JjzqSXsE/ZD1D6djFb87/BcttFJl2 oacP/jybA5c/rVPFULnLl2jCuDPcwI9MytED0xK2spPEb7kDYRl9WguZh2ZU92lkP2CcS7 l2sDvdWv1ImXen70tW63gp3W9H4F9QNt5hA5ybk0BNAuA4uNFH3GggVWGkC1EatU6ZPHiD kfQum2tVnzOh7ulBDmxASvEcSJXZSh2ErYpFRHliAaMI0EM3e99L8qsY+Xrw3itT+veyZX MHmkqTDPDWXo/qz2WlslbL2+TiBO/d89BWM/NJWHtwIcRzt/D64CR2f8j5WaKA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754349012; a=rsa-sha256; cv=none; b=UZ7SrSnYCVIa6QB1LYUSUgGRfAu66g7g6ismMfvQX7/Koh5feLt5fIg5fbaEaTUbcLS5Hp 9yyPvZXFhUQ/8AUQy3ItOyVaFQAoWWBTmA/+et3WBkLBmol5EZVlet/Dwf21HCSGSD/J6t ekMwq5LcR1dVG5Ierx51u7QsSRI0skJzmqOJ96INGKRKZ+X8a9GD4Nj4Pql6Z8gIagYt0C bj9dC1noy9pzr/gfTpZkTixnSSWYBbS62yTw82OOUmTvfk7AT2/tRlBR/755Ez5/C94FNz zGLjoirR9AqDukPKwUqh0vdFeDvXMVhCb6lwoYPVv5HmTavaL5vfSDskPkNWpQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwsj00zXGz17dH; Mon, 04 Aug 2025 23:10:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574NAC5K082677; Mon, 4 Aug 2025 23:10:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574NACFQ082674; Mon, 4 Aug 2025 23:10:12 GMT (envelope-from git) Date: Mon, 4 Aug 2025 23:10:12 GMT Message-Id: <202508042310.574NACFQ082674@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 90b315233a33 - main - id: revert to historical and documented behavior for `id` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 90b315233a3362b7427e2d2649eaa8acf0da197a Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=90b315233a3362b7427e2d2649eaa8acf0da197a commit 90b315233a3362b7427e2d2649eaa8acf0da197a Author: Kyle Evans AuthorDate: 2025-08-04 23:09:58 +0000 Commit: Kyle Evans CommitDate: 2025-08-04 23:09:58 +0000 id: revert to historical and documented behavior for `id` The manpage claims that we display the credentials for the calling process if no user/flags are specified, but this has not been true since r145628 / 68b9b81e792a9108d. Currently, we display: - uid from the calling process - gid from /etc/passwd - egid from the calling process, if different from that gid - supplementary groups from the calling process This doesn't really match the description in the manpage, and it doesn't match other implementations. Fix it to use the current process credentials for the gid as well. Drop the extra arguments to id_print(), since these facts can be derived from whether we're displaying live data (`pw == NULL`) or not. Reviewed by: olce Differential Revision: https://reviews.freebsd.org/D51689 --- usr.bin/id/id.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/usr.bin/id/id.c b/usr.bin/id/id.c index dfd2e89a7e78..7112e0dddb91 100644 --- a/usr.bin/id/id.c +++ b/usr.bin/id/id.c @@ -40,13 +40,14 @@ #include #include #include +#include #include #include #include #include #include -static void id_print(struct passwd *, int, int, int); +static void id_print(struct passwd *); static void pline(struct passwd *); static void pretty(struct passwd *); #ifdef USE_BSM_AUDIT @@ -202,14 +203,7 @@ main(int argc, char *argv[]) exit(0); } - if (pw) { - id_print(pw, 1, 0, 0); - } - else { - id = getuid(); - pw = getpwuid(id); - id_print(pw, 0, 1, 1); - } + id_print(pw); exit(0); } @@ -254,7 +248,7 @@ pretty(struct passwd *pw) } static void -id_print(struct passwd *pw, int use_ggl, int p_euid, int p_egid) +id_print(struct passwd *pw) { struct group *gr; gid_t gid, egid, lastgid; @@ -263,21 +257,24 @@ id_print(struct passwd *pw, int use_ggl, int p_euid, int p_egid) long ngroups_max; gid_t *groups; const char *fmt; + bool print_dbinfo; - if (pw != NULL) { + print_dbinfo = pw != NULL; + if (print_dbinfo) { uid = pw->pw_uid; gid = pw->pw_gid; } else { uid = getuid(); gid = getgid(); + pw = getpwuid(uid); } ngroups_max = sysconf(_SC_NGROUPS_MAX) + 1; if ((groups = malloc(sizeof(gid_t) * ngroups_max)) == NULL) err(1, "malloc"); - if (use_ggl && pw != NULL) { + if (print_dbinfo) { ngroups = ngroups_max; getgrouplist(pw->pw_name, gid, groups, &ngroups); } @@ -285,19 +282,23 @@ id_print(struct passwd *pw, int use_ggl, int p_euid, int p_egid) ngroups = getgroups(ngroups_max, groups); } + /* + * We always resolve uids and gids where we can to a name, even if we + * are printing the running process credentials, to be nice. + */ if (pw != NULL) printf("uid=%u(%s)", uid, pw->pw_name); - else - printf("uid=%u", getuid()); + else + printf("uid=%u", uid); printf(" gid=%u", gid); if ((gr = getgrgid(gid))) (void)printf("(%s)", gr->gr_name); - if (p_euid && (euid = geteuid()) != uid) { + if (!print_dbinfo && (euid = geteuid()) != uid) { (void)printf(" euid=%u", euid); if ((pw = getpwuid(euid))) (void)printf("(%s)", pw->pw_name); } - if (p_egid && (egid = getegid()) != gid) { + if (!print_dbinfo && (egid = getegid()) != gid) { (void)printf(" egid=%u", egid); if ((gr = getgrgid(egid))) (void)printf("(%s)", gr->gr_name); From nobody Mon Aug 4 23:39:23 2025 X-Original-To: dev-commits-src-main@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 4bwtLh2KLpz63gNW; Mon, 04 Aug 2025 23:39: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwtLh1Zbqz3b7Q; Mon, 04 Aug 2025 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754350764; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LdRMGqHtUxC2QZuKqe2gkqvWi34QOOfG6MzOAMqI5Ek=; b=dH3QxiCMJFfuh0Pp1PUDhxlh+itJaxQ6HRr+sVvyjt9f324BVfWjr6TqoFRyjyeJW+AvxG 4pXtj4eAd8yKVGI+vxLShqY4v46qwRB5e/VMfEI0ouppf4sCwWcqi5S10YTzGLzlWyL1lE rbajiJMvonCfiLRlkahMTjMqSu1/5TGzAJ84E/CZC+PHPS+aQyFgQHl+81Ml3kPIor0Bx/ v9yC/8sb7eqcSA5Ng8XAyyZCd5RvZPje/spW3tXztPnV1NkUnnr4bm+fZDnavAL0qa7Wmh vCs+8fPtkeKqp8fUtfJis8PgAxrXh0H84O6TSEolsapkfo8tT0LJjT3ITF5urQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754350764; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LdRMGqHtUxC2QZuKqe2gkqvWi34QOOfG6MzOAMqI5Ek=; b=thL0PC/48g2WOumaNcoJfxCIxPY+XU/CNaOEiEq7LTNcVHdHx8Wee1ZmFfiOBpZYXTZSO9 2ztosCfw9ZAMja9iDZaOttefJZ4MWLbE8UpgRrnTRqdi2veQPimAOfQyCPof9AbUwe/1Lw Es3CisJZ/c2TxNXiMxCupkXRRe4ILrGd/a6AkhCUEP3HL1D4yYhmS1lB81cwD7e+m7Sn/w TVj+SnIuf2OOfQcPBocvau/I9uiiAokTJt7Z61XopYR4piyGXmVTrYwhwrYtMPGGNJ+LJW bozH9+jAEX9y73GwfsSY0O1lwECTtf8BECgA16BLQbu+3ZoNlUJcY2CmB7waxw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754350764; a=rsa-sha256; cv=none; b=WWWQ5I6BHfzKJrd+ru8oxRTM+L5ImVHCD2nW6rYNdRsx6yX6m404lODdkPWiUhWtULm4Ti kb5rbnc5hccobu6roQYEi0L2Nu75Rp6rM8KtkH+arxF5FHYWHQUxU7gLEujWSgN0t7rDNi JoUUySBbSracmFVt/C7jFl9oPXXpqNgly1sPFC1pXB+hoEmU9iH+rPjh8Vb8ke+61MKFjZ Hldd/V4mYl1bP8ct8aBZkkoiLu9JeVJt7wkcc1Yepw2bnNINUA0y+9qlD7UCnjXddEQiMk 9cbReDmQL9rNR72OVr9onKu6qtO2dUDqbyujfxccNr2e26/EpCKXof7XOUkZKg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwtLh0tNHz18hW; Mon, 04 Aug 2025 23:39:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 574NdNJx032980; Mon, 4 Aug 2025 23:39:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 574NdNmf032977; Mon, 4 Aug 2025 23:39:23 GMT (envelope-from git) Date: Mon, 4 Aug 2025 23:39:23 GMT Message-Id: <202508042339.574NdNmf032977@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 51affb7e9716 - main - nfscl: Fix GetACL so that it does not want a reply cached List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 51affb7e97161e260f6d99cb0904daf7cc9f51a7 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=51affb7e97161e260f6d99cb0904daf7cc9f51a7 commit 51affb7e97161e260f6d99cb0904daf7cc9f51a7 Author: Rick Macklem AuthorDate: 2025-08-04 23:36:28 +0000 Commit: Rick Macklem CommitDate: 2025-08-04 23:36:28 +0000 nfscl: Fix GetACL so that it does not want a reply cached Without this patch, an NFSv4.1/4.2 GetACL RPC requests that the session cache the reply. In some cases, the reply may be too large to cache, resulting in a NFS4ERR_X error from the server. Since a GetACL is idempotent, disable reply caching for it, by setting that it can generate a large reply. Tested against a Linux server with a large ACL on a file. MFC after: 2 weeks --- sys/fs/nfs/nfs_commonsubs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index 4ffc4ce5c29f..67e33193ecec 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -218,7 +218,7 @@ NFSD_VNET_DEFINE_STATIC(u_char *, nfsrv_dnsname) = NULL; */ static int nfs_bigreply[NFSV42_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; /* local functions */ From nobody Mon Aug 4 23:54:54 2025 X-Original-To: dev-commits-src-main@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 4bwths579Jz63hDS for ; Mon, 04 Aug 2025 23:55:09 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwths2MVqz3d8j for ; Mon, 04 Aug 2025 23:55:09 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3b78a034f17so3328644f8f.2 for ; Mon, 04 Aug 2025 16:55:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754351707; x=1754956507; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DxKsCYlsS8gyYMstNfPYB7fWfIMIVv76B10jKjgGaDI=; b=L5lgTld/flgUI47wn5QkhaaJKSmAdCLHsyi/LeFCyk1/7m6zC7IhyJsaCuctgms2HF yFOnBAP/2rAUmJLDyBOi93A2WLfA9Pbv8/GAYjMyTUsnPS90tWxMVR8uLyCKiukgdb55 PFdizdFtUVgkf05wA0/5M7zRkFDi/5RRlu+7x3z+O8rAEbdBA5FHqdS6DEPj9t1Q8Lar QqrOZslgtXevjrHA3tzocVbPGGpEFh0V0i2QQTZfculMJcSEvUVOgQ2OH+Wya339viGV U1mDHrBU/D7OYrow8dMdUtfnVKfECDmXE08Ap5UFgUtp6XvlyIBGBnPvap6qWP5EpddF kgPw== X-Forwarded-Encrypted: i=1; AJvYcCXjPdlSUPoaAnc2IDvXZ2QOWilNmttuUIlsGXu88DtQ7rXamVCFuAtVHVfOT6JH8Y/w+HNTjuxh2nMeMPGj/sAWeG2p9A==@freebsd.org X-Gm-Message-State: AOJu0Yz0zKNyrZJqY4a1uqBwV7NWAgPNgrldFxj9u3u24x2vGsYXu/e9 80CwXls84QV5nvyqNpFbGjtzzuLaGoEQu2/PmKzOte9r2YiWuipN6/yuSAjQqAx2XyU= X-Gm-Gg: ASbGnctKzvL1fuGejYwjnhQ43G/qEVmzss8SQJoEjOfzYwuKKgnphq2nnNU1Fdy6Gzm zxxkAhTgvayH2OloFWx+hypbF360MhFpOHU/s+EPI8Gr2ezk1qFg/XqgG4F2jjC63qBQuycWn3/ YuNq9I1PpSMkJ9T8N9JrXbh8A/zz4at2EsZ3QO4nr3UqE+Vld2YHysNc3IhetPdjjqJx2L73QYC 1pavXoCSMH7dGfkxUC8RJiuzUFj0QzJ1jXRaTEFJ6uzU912e51JMankEgKjgpmMbG8XOGSzxbI0 dZViOeIlY3E2qYBwUJyPWYUROykBpm5jIJTYlB2MPOkQ3gnBg5EAimJzazXcpWQrzneMF5ie2p0 VDPPCcbWBZvtJyCGwbl4rcu6gJkILs+j9kRZiaXsw0tNW33kMSTg5Cmn1k3lg+VV+Zzn4r6E= X-Google-Smtp-Source: AGHT+IHZRfcc6l5s7NmaUSxPar7IE+uwQPqa9f2gwcAnCcluHZzWOFNkibzNvMPxNsYPVSKdyP6xJg== X-Received: by 2002:a5d:5849:0:b0:3b7:7563:9fde with SMTP id ffacd0b85a97d-3b8d946c00bmr8796210f8f.2.1754351706823; Mon, 04 Aug 2025 16:55:06 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8e9464f46sm2911366f8f.19.2025.08.04.16.55.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Aug 2025 16:55:05 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 51affb7e9716 - main - nfscl: Fix GetACL so that it does not want a reply cached From: Jessica Clarke In-Reply-To: <202508042339.574NdNmf032977@gitrepo.freebsd.org> Date: Tue, 5 Aug 2025 00:54:54 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: <202508042339.574NdNmf032977@gitrepo.freebsd.org> To: Rick Macklem X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4bwths2MVqz3d8j X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 5 Aug 2025, at 00:39, Rick Macklem wrote: > The branch main has been updated by rmacklem: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D51affb7e97161e260f6d99cb0904daf7= cc9f51a7 >=20 > commit 51affb7e97161e260f6d99cb0904daf7cc9f51a7 > Author: Rick Macklem > AuthorDate: 2025-08-04 23:36:28 +0000 > Commit: Rick Macklem > CommitDate: 2025-08-04 23:36:28 +0000 >=20 > nfscl: Fix GetACL so that it does not want a reply cached >=20 > Without this patch, an NFSv4.1/4.2 GetACL RPC requests that > the session cache the reply. In some cases, the reply may > be too large to cache, resulting in a NFS4ERR_X > error from the server. >=20 > Since a GetACL is idempotent, disable reply caching for it, > by setting that it can generate a large reply. > Tested against a Linux server with a large ACL on a file. >=20 > MFC after: 2 weeks > --- > sys/fs/nfs/nfs_commonsubs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) >=20 > diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c > index 4ffc4ce5c29f..67e33193ecec 100644 > --- a/sys/fs/nfs/nfs_commonsubs.c > +++ b/sys/fs/nfs/nfs_commonsubs.c > @@ -218,7 +218,7 @@ NFSD_VNET_DEFINE_STATIC(u_char *, nfsrv_dnsname) =3D= NULL; > */ > static int nfs_bigreply[NFSV42_NPROCS] =3D { 0, 0, 0, 1, 0, 1, 1, 0, = 0, 0, 0, > 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, = 0, 0, 0, > - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, = 0, 0, 0, > + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, = 0, 0, 0, > 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; This would be much more readable and maintainable as a C99 designated initialiser. Jess > /* local functions */ From nobody Tue Aug 5 00:00:10 2025 X-Original-To: dev-commits-src-main@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 4bwtq12jfnz63h1L; Tue, 05 Aug 2025 00:00:29 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwtq10ghgz3dHJ; Tue, 05 Aug 2025 00:00:29 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-af95ecfbd5bso322757266b.1; Mon, 04 Aug 2025 17:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754352023; x=1754956823; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=PptMeIbR4oHSVJEUt6GzWqMbv0iv3zJ01RaRh4BSM08=; b=AEdgSKfN29ANua4KaYe6Kz0e3Ue1w1yBmNSorDjOBTGnuxIvF06yMqap26v/eEI/Od xTbPS1d4EDUI1UPQ/LSsoiEM5Vnggk7po19ECkSZYTBE3SHweY+ZSyuvqKOpn0zw/862 RZnGEozvM2Fgvg9HzIl+Y+LIvLsUGUr6zRDxRy17+/piVCPgWoX1RnekKV8hbJ3hHneI F3S8nqq9EW/1tjojxd3IT/OLvqggknTDYmQbcsEmMYmc7qPM/BVoUD6Lf0N3Qy9AXgjG 6yRJxFJc8lOgDogViBTc709i9IS+f8w7wIne67CParxd/T7sQ5aZXt5OcAKxwnRHjelx fkpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754352023; x=1754956823; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PptMeIbR4oHSVJEUt6GzWqMbv0iv3zJ01RaRh4BSM08=; b=Y8yx5BM2CKAr7b3/FTnSqVHlWL+vHLI4EMI5/TPBddG6CloKLYiSCc/IJDdBaGMzg5 kjb3GT6/A9kXFoK+a3qgD04aPYeV9yiB1v93mVy1Iym58jl6nXl7h/9gOvupNx2OKurm TySLC+WUVKnxQemqiP1EVV+bSOGw/eIWka3C2kbDGmrZ0lIqbuPRAIJ16EupU/SAah25 F/DbhDgXiu1BirxUG+/P8kp4OnGGoke/1LHC0Xg5PQLCPWs0U+sfUBNbCqphVgtkaFEq XtMDF4m4vatpG08LBU5LaWjbGRkRKAoh79WwPyrX1dJRsdLiX3D0KAg2Kl5hXKqlQ34X tukA== X-Forwarded-Encrypted: i=1; AJvYcCUJzR9d1/oMeqooUsJLi6hMft2fhQ3vbtP5CNHkg2BD8rcT/UmqMK3a6HJJbkUCEWXO1QzA2v8E6nOm71NYtjc=@freebsd.org, AJvYcCUSPT9izFdNrUDgkAcuQCne1K6JLHO2lQ+WEglpAa3VkXZQaLFoBPHoD/09564j2O7pob9S5Q5kUX5vxXbJ/6oSKccG@freebsd.org, AJvYcCW7rR7L+bUX0M9d/oOrTKnjO7IaKOQqVVKgt+wVuJCR0eYKE2z0xgGUt7Zs3QnaMc5+9FUSZrM3Bp3+R9z1OLRv+JEZrqw=@freebsd.org X-Gm-Message-State: AOJu0YxyC21EcEOV5dcmAmdBN074D6XHj2ypLY0I5wQiInzpVIBaZxLo MD0eTY3s59Ashqjux71DyllqECFo693Qa8BEvYQtjuHgIIEZYvTQW6Q1KBFewswef4DNdvrviCt Foizh7/6N3YrU2zwVPYsdU5tcFnEQuHBo X-Gm-Gg: ASbGnct7t82FrpzpjTgmIms3kdXZK40QEtSP5NINFpOIMwzUOgjymIL/InC5IWe5fKJ 3o1XnqEakGuxBYaC95JwZ4WzZ/onr6cHWMpUOFWhNI+cxl71+uZjoNVZs4pyHsv1gY1XJToKB6K 98oOP1eLgnuPF+LdoXxqnp6kSb2qj0YB0np8eIAoyX2+w+x1/Z/NAQlfuliiZYgaZvruhP6Q6ut byIR1QQs7CRMXObH1CDQLwmXEed7LbW40EIMFs= X-Google-Smtp-Source: AGHT+IHV3JK7FpQCTXny6jOm9bNDTu+Qu9b9b9yPUB29IZLV1CPfEeCgJ3XUHRSXmJ9C/grkveJa//xBPVb+cyyYJz4= X-Received: by 2002:a17:906:f192:b0:af9:44fe:dea1 with SMTP id a640c23a62f3a-af944fee3b8mr814360066b.23.1754352022431; Mon, 04 Aug 2025 17:00:22 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508042339.574NdNmf032977@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Mon, 4 Aug 2025 17:00:10 -0700 X-Gm-Features: Ac12FXyQzN6vGD1dponzZmNCNIiDYk1KJIHZMYmUBDEc8nSCNXgzh-zLTdbPmHw Message-ID: Subject: Re: git: 51affb7e9716 - main - nfscl: Fix GetACL so that it does not want a reply cached To: Jessica Clarke Cc: Rick Macklem , "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4bwtq10ghgz3dHJ X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] On Mon, Aug 4, 2025 at 4:55=E2=80=AFPM Jessica Clarke = wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > On 5 Aug 2025, at 00:39, Rick Macklem wrote: > > > The branch main has been updated by rmacklem: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D51affb7e97161e260f6d99cb= 0904daf7cc9f51a7 > > > > commit 51affb7e97161e260f6d99cb0904daf7cc9f51a7 > > Author: Rick Macklem > > AuthorDate: 2025-08-04 23:36:28 +0000 > > Commit: Rick Macklem > > CommitDate: 2025-08-04 23:36:28 +0000 > > > > nfscl: Fix GetACL so that it does not want a reply cached > > > > Without this patch, an NFSv4.1/4.2 GetACL RPC requests that > > the session cache the reply. In some cases, the reply may > > be too large to cache, resulting in a NFS4ERR_X > > error from the server. > > > > Since a GetACL is idempotent, disable reply caching for it, > > by setting that it can generate a large reply. > > Tested against a Linux server with a large ACL on a file. > > > > MFC after: 2 weeks > > --- > > sys/fs/nfs/nfs_commonsubs.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c > > index 4ffc4ce5c29f..67e33193ecec 100644 > > --- a/sys/fs/nfs/nfs_commonsubs.c > > +++ b/sys/fs/nfs/nfs_commonsubs.c > > @@ -218,7 +218,7 @@ NFSD_VNET_DEFINE_STATIC(u_char *, nfsrv_dnsname) = =3D NULL; > > */ > > static int nfs_bigreply[NFSV42_NPROCS] =3D { 0, 0, 0, 1, 0, 1, 1, 0, 0,= 0, 0, > > 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0= , 0, 0, > > - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, = 0, 0, 0, > > + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, = 0, 0, 0, > > 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; > > This would be much more readable and maintainable as a C99 designated > initialiser. You are more than welcome to patch it. (Some of this code is decades old and I am just trying to keep up with keeping it working for things like the MIT Kerberos transition. See D51731 as an example.) I could probably think of many nice cleanups, but I am one retired guy who does this as a hobby (not paid any $$ by anyone to do it). rick > > Jess > > > /* local functions */ > From nobody Tue Aug 5 02:11:09 2025 X-Original-To: dev-commits-src-main@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 4bwxjp1S96z63ptJ; Tue, 05 Aug 2025 02:11: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bwxjp0WRFz3sHd; Tue, 05 Aug 2025 02:11:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754359870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IW90hEcww39q5xsrSdGTUurjcn9GRMPcp8IBI8gNZBk=; b=LnNRxMWSPE7dbU6fqFAh+vlgJE/QiWb23Qll2UT9HYcg/1kLTYLyGjPLQs8i1KvceHj018 3IgLJYocG6kK+BsuDeE4JeLQXCN1pgSDj6jWbAGHrIsJLAcZUecudlBXf7oyNon3K02Z4X XWanRUFBVsX/Akgo5X+NMqzojNxG0KeeDgBlvFp3oN2kzJbQ/kQCGxXBJ0HL+HvZ3ysPj7 FH8JX2zrwdITI+NDlDZOYVXha2di6djlGluFq6ZlxBvUYUIx0D/movbCOHCkWSjykCOzCK bCQ/fqRv+/AeYI9xAGHYUzOrbusObWWRhzgNpV7pCI5pN1mc0TY/FmODiMKbdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754359870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IW90hEcww39q5xsrSdGTUurjcn9GRMPcp8IBI8gNZBk=; b=qRUBFalFVBSaJIknNIIrLvJigmx8B1gBmpUUJGX0rKL+rJpkYkdqYqRe6gN29U+m1735ki 2M4n+Z1cRpFC1mAxKmJRYTUuA8M9ckGxrjtBEvO+cOpI8Oo/+1MUfTqKoE2lf4B5ulg8jm 2goWRBcRHwkyIEmel9lyY8+aBX9HazL612M+KjUgup7B8+XkfUA9d7fmPIWT14hYuLkTEc nN/wDQwTtqOQr6+9cfLQOPOujsD5puIII3WAonCiNey/qY1r2NEB7Wja9MZveD4w6v5y/p PWRF0fskDcMvCdqfltk4D42PrCM8E5tCEGaMaYYMmHYfU9fbYhPP+iV992NLNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754359870; a=rsa-sha256; cv=none; b=rXEeavmj4RGcwkXS9NxwwpR4ZupthlqPK6k//W66A9FMDcp3hQj/BeMIU8JCD9MDE37S10 oLvOKPXutuxPdlkYC5yH27zOLEeUr7g1i1RpTTzSsprxSAAguDSLasUMoFueNzOHUXsW/3 D1hxBYjyHOONoQR0JJz7d55dOCIlttpJTAykVUhVrrAGjy7q+5MXoya1XulPXqjjugfrmm 812UV71eqX8TKthpM5rfc3W85+Y2+vLbu9Goe5amf/tZB8NjPC2hlFKySiXC5BNSd/Fjew GLcnA17qagI4DzS1n6t6cwnPm1Ixy5QmzDc5hR11jyIsZa0gZfSox8AcwiCuvg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bwxjn6tGBzfv; Tue, 05 Aug 2025 02:11:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5752B97f026807; Tue, 5 Aug 2025 02:11:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5752B9NN026804; Tue, 5 Aug 2025 02:11:09 GMT (envelope-from git) Date: Tue, 5 Aug 2025 02:11:09 GMT Message-Id: <202508050211.5752B9NN026804@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ahmad Khalifa Subject: git: 057686379c8b - main - release/amd64: cleanup code duplication List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: vexeduxr X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 057686379c8bc24c3d2b78c3aa2e5d8b70221120 Auto-Submitted: auto-generated The branch main has been updated by vexeduxr: URL: https://cgit.FreeBSD.org/src/commit/?id=057686379c8bc24c3d2b78c3aa2e5d8b70221120 commit 057686379c8bc24c3d2b78c3aa2e5d8b70221120 Author: Ahmad Khalifa AuthorDate: 2025-01-11 13:33:20 +0000 Commit: Ahmad Khalifa CommitDate: 2025-08-05 01:48:45 +0000 release/amd64: cleanup code duplication Approved by: imp (mentor) Pull Request: https://github.com/freebsd/freebsd-src/pull/1571 Closes: https://github.com/freebsd/freebsd-src/pull/1571 --- release/amd64/make-memstick.sh | 6 ++---- release/amd64/mkisoimages.sh | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/release/amd64/make-memstick.sh b/release/amd64/make-memstick.sh index cec4b27b5b96..770b128fd9f9 100755 --- a/release/amd64/make-memstick.sh +++ b/release/amd64/make-memstick.sh @@ -62,11 +62,9 @@ fi # Make an ESP in a file. espfilename=$(mktemp /tmp/efiboot.XXXXXX) if [ -f "${BASEBITSDIR}/boot/loader_ia32.efi" ]; then - make_esp_file ${espfilename} ${fat32min} ${BASEBITSDIR}/boot/loader.efi bootx64 \ - ${BASEBITSDIR}/boot/loader_ia32.efi bootia32 -else - make_esp_file ${espfilename} ${fat32min} ${BASEBITSDIR}/boot/loader.efi + extra_args="${BASEBITSDIR}/boot/loader_ia32.efi bootia32" fi +make_esp_file ${espfilename} ${fat32min} ${BASEBITSDIR}/boot/loader.efi bootx64 ${extra_args} ${MKIMG} -s mbr \ -b ${BASEBITSDIR}/boot/mbr \ diff --git a/release/amd64/mkisoimages.sh b/release/amd64/mkisoimages.sh index 8f7163e05261..01677ae787f9 100644 --- a/release/amd64/mkisoimages.sh +++ b/release/amd64/mkisoimages.sh @@ -54,11 +54,9 @@ if [ "$1" = "-b" ]; then # ESP file size in KB. espsize="2048" if [ -f "${BASEBITSDIR}/boot/loader_ia32.efi" ]; then - make_esp_file ${espfilename} ${espsize} ${BASEBITSDIR}/boot/loader.efi bootx64 \ - ${BASEBITSDIR}/boot/loader_ia32.efi bootia32 - else - make_esp_file ${espfilename} ${espsize} ${BASEBITSDIR}/boot/loader.efi + extra_args="${BASEBITSDIR}/boot/loader_ia32.efi bootia32" fi + make_esp_file ${espfilename} ${espsize} ${BASEBITSDIR}/boot/loader.efi bootx64 ${extra_args} bootable="$bootable -o bootimage=i386;${espfilename} -o no-emul-boot -o platformid=efi" shift From nobody Tue Aug 5 04:53:37 2025 X-Original-To: dev-commits-src-main@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 4bx1KJ3Mrtz640fH; Tue, 05 Aug 2025 04:53:40 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta003.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bx1KJ0pPPz49mY; Tue, 05 Aug 2025 04:53:40 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4002a.ext.cloudfilter.net ([10.228.9.250]) by cmsmtp with ESMTPS id ir3ouUshB9JM2j9gBuKlmb; Tue, 05 Aug 2025 04:53:39 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id j9gAulP7Sl5eGj9gAusYEn; Tue, 05 Aug 2025 04:53:39 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=EO6l0EZC c=1 sm=1 tr=0 ts=68918e53 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=2OwXVqhp2XgA:10 a=6I5d2MoRAAAA:8 a=NEAV23lmAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=KgqGlhll2NFQbpsQ06QA:9 a=CjuIK1q_8ugA:10 a=LK5xJRSDVpKd5WXXoEvA:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id AFA6C1DE0; Mon, 04 Aug 2025 21:53:37 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id 7BB31682; Mon, 04 Aug 2025 21:53:37 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Brooks Davis cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 73ed0c7992fd - main - krb5: install gssapi_krb5/gssapi/gssapi.h once In-reply-to: <202508041259.574Cx6mA025169@gitrepo.freebsd.org> References: <202508041259.574Cx6mA025169@gitrepo.freebsd.org> Comments: In-reply-to Brooks Davis message dated "Mon, 04 Aug 2025 12:59:06 +0000." List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 04 Aug 2025 21:53:37 -0700 Message-Id: <20250805045337.7BB31682@slippy.cwsent.com> X-CMAE-Envelope: MS4xfOlyaThexPeYobOhdgxoHUROEpF9E5bulMYT4ezbIq6f7SraB114gPCFejaOdHxNUjDjZNpcBu4XdqvS6ZL0v5Yr73nZu1Ih+QN1glz5StudUMR/ZykH m0nauYeSQ/xpilX8SoTORckQ51uGuHb9PVGm+LdAzOQ+Vt5TJ+rqlpZIuPEjR954RxbrTxi/Mn5eIVIs/MhMuboREw+8Ofa0BsQA6g1IMfnIDc417vGr4a0u CKAN9RvocZz1zkykwbv2E/q+xCPAku64AI7Foy5xvcbfXOBisLnWElK/u0diXxz/vrtiEISmDok8vJPYNeZN+e1aeqj1vntvK0GFOnc/III= X-Rspamd-Queue-Id: 4bx1KJ0pPPz49mY X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US] In message <202508041259.574Cx6mA025169@gitrepo.freebsd.org>, Brooks Davis writ es: > The branch main has been updated by brooks: > > URL: https://cgit.FreeBSD.org/src/commit/?id=73ed0c7992fd5f6148374d5dbf5c7b37 > a2eba1a8 > > commit 73ed0c7992fd5f6148374d5dbf5c7b37a2eba1a8 > Author: Brooks Davis > AuthorDate: 2025-08-04 09:33:40 +0000 > Commit: Brooks Davis > CommitDate: 2025-08-04 12:58:46 +0000 > > krb5: install gssapi_krb5/gssapi/gssapi.h once > > Somewhat arbitrarily chose krb5/lib/gssapi/Makefile to install it. > > PR: 288594 > Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 > --- > krb5/include/Makefile | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/krb5/include/Makefile b/krb5/include/Makefile > index c7b3f0f10a99..a2d29fcb1530 100644 > --- a/krb5/include/Makefile > +++ b/krb5/include/Makefile > @@ -17,7 +17,7 @@ SUBDIR= krb5_private krb5 gssrpc gssapi > > SUBDIR_PARALLEL= > > -INCSGROUPS= INCS GSSAPI_KRB5 > +INCSGROUPS= INCS > > INCSDIR= ${INCLUDEDIR} > > @@ -27,9 +27,6 @@ INCS= kdb.h \ > krad.h \ > krb5.h > > -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5/gssapi > -GSSAPI_KRB5= gssapi.h > - With this we must now apply D51661 or any app that wishes to compile against our MIT KRB5 will fail because /usr/src/lib/libgssapi cannot directly support MIT KRB5. Our libgssapi is incompatible with MIT KRB5. > CLEANFILES= osconf.new > > # XXX The output of this needs to be verified against the osconf.h I created > -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e**(i*pi)+1=0 From nobody Tue Aug 5 10:38:47 2025 X-Original-To: dev-commits-src-main@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 4bx8zX5W3yz64JSM; Tue, 05 Aug 2025 10:38:48 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bx8zX4pxqz3kkM; Tue, 05 Aug 2025 10:38:48 +0000 (UTC) (envelope-from brooks@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754390328; 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: in-reply-to:in-reply-to:references:references; bh=b9i4xFfe+yT3O7uF8Tk3vNqLRD84n0vo1q8MZ/txysQ=; b=MYQ1wHwF85PSYvyrUv5a9i8CI9847cMlnnN2PWDRm+iizbr9PexJSoz0Q/4rWKZ1JMHAce dIRQfMBRLZ+yPVFhKEoz4SKzuCU+lv5yK1CqilfZk7cMn+gegoKLYS0m0G1KHpoYDarJPM m6U7E2lue7MPJ8DJL3aN4lB+Vwa79Eb2a/9WicvXbN13Hb9AdiPW8RFjhiGfM2vwxwaQdp YkqE52HDVZvWVanPTdpeXm3KvupadyL5hWTEPgXhs9vnm3vgHmy6APX13fjvHfzsOGD7HB diltFms5c2AEzCcqespBFtlaXvl0nJd+VlqOPLW+AKwSSe88Yg9HlwF0brhCRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754390328; 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: in-reply-to:in-reply-to:references:references; bh=b9i4xFfe+yT3O7uF8Tk3vNqLRD84n0vo1q8MZ/txysQ=; b=ntcbZpNjG7CpOf+dBtevHJCoXju6xk+/JayXKnLwJNjhB7rrXMIYRFK9WfSoDc1P91o/xa IzZCSDK+tn2pJpDiZaAd1nyOw31212jodUaD7w+qWz6yQSnExVVQqEl79eMa2WSDclfZob uCMAxs33tj6IKpXr2n17O44L8OzoVuL7yesuTfHiw6HCBA9XbyknEXN2L5lYPzVC5q70SQ 1UVqvIH6PzVyIcVnAzHTk0pUwdXELekLU25WrjmHkj2t/Byrj4PjIBXa4GjNtMRDtqe9eg Ld9uaMc3Hu3oA+SpxfEpRlIieNIPbOehhVueWgY20TtrmH8jnIIkTCWdwMATNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754390328; a=rsa-sha256; cv=none; b=inuME7JvrESml+KfHBd4sxqm7UdFSW7Odg0V9TtJXVZMTD8udca0FZr+fu1WFmJX4QGBdz SOEi/X3YgkR0RrHvlZLRq6CVsYVcdwYuvaNb78kZbAlcuwpjZQcL6qe7MdpdlgJJFfkK9L kB3uAuM++evEoy6rUVJmBqP7wOtvD8tYiKetxwQcIcZHnXcsWriQDCtumKvxK4y1c4rUiw BZqoaQEpnNErCp+6h4+94OXzWwzZ0sIUzm2Y1xKmfGWTeXV4eC0afIdXI8IZPRTGfWL3gm NRlfmM5BkDLzLXBJZpB3ZLF4cWU3ZKESWoG4ggVNYm2A2NFxSYN1iBbSfk5byw== Received: from spindle.one-eyed-alien.net (spindle.one-eyed-alien.net [199.48.129.229]) (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: brooks/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bx8zX3v6Wzsn3; Tue, 05 Aug 2025 10:38:48 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: by spindle.one-eyed-alien.net (Postfix, from userid 3001) id CED2F3C01A0; Tue, 05 Aug 2025 10:38:47 +0000 (UTC) Date: Tue, 5 Aug 2025 10:38:47 +0000 From: Brooks Davis To: Cy Schubert Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 73ed0c7992fd - main - krb5: install gssapi_krb5/gssapi/gssapi.h once Message-ID: References: <202508041259.574Cx6mA025169@gitrepo.freebsd.org> <20250805045337.7BB31682@slippy.cwsent.com> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250805045337.7BB31682@slippy.cwsent.com> On Mon, Aug 04, 2025 at 09:53:37PM -0700, Cy Schubert wrote: > In message <202508041259.574Cx6mA025169@gitrepo.freebsd.org>, Brooks Davis > writ > es: > > The branch main has been updated by brooks: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=73ed0c7992fd5f6148374d5dbf5c7b37 > > a2eba1a8 > > > > commit 73ed0c7992fd5f6148374d5dbf5c7b37a2eba1a8 > > Author: Brooks Davis > > AuthorDate: 2025-08-04 09:33:40 +0000 > > Commit: Brooks Davis > > CommitDate: 2025-08-04 12:58:46 +0000 > > > > krb5: install gssapi_krb5/gssapi/gssapi.h once > > > > Somewhat arbitrarily chose krb5/lib/gssapi/Makefile to install it. > > > > PR: 288594 > > Pull Request: https://github.com/freebsd/freebsd-src/pull/1801 > > --- > > krb5/include/Makefile | 5 +---- > > 1 file changed, 1 insertion(+), 4 deletions(-) > > > > diff --git a/krb5/include/Makefile b/krb5/include/Makefile > > index c7b3f0f10a99..a2d29fcb1530 100644 > > --- a/krb5/include/Makefile > > +++ b/krb5/include/Makefile > > @@ -17,7 +17,7 @@ SUBDIR= krb5_private krb5 gssrpc gssapi > > > > SUBDIR_PARALLEL= > > > > -INCSGROUPS= INCS GSSAPI_KRB5 > > +INCSGROUPS= INCS > > > > INCSDIR= ${INCLUDEDIR} > > > > @@ -27,9 +27,6 @@ INCS= kdb.h \ > > krad.h \ > > krb5.h > > > > -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5/gssapi > > -GSSAPI_KRB5= gssapi.h > > - > > With this we must now apply D51661 or any app that wishes to compile > against our MIT KRB5 will fail because /usr/src/lib/libgssapi cannot > directly support MIT KRB5. Our libgssapi is incompatible with MIT KRB5. What was there was somehow installing two copies that differed which is quite broken and possibably racy. The Cirrus-CI error was: error: ./usr/include/gssapi_krb5/gssapi/gssapi.h exists in multiple locations and with different meta: line 15452,15513. off by "size" I'm happy to revert this and remove the entries in krb5/lib/gssapi/generic/Makefile.inc instead if that's more correct. -- Brooks From nobody Tue Aug 5 14:03:14 2025 X-Original-To: dev-commits-src-main@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 4bxFWQ6MgDz63GKh; Tue, 05 Aug 2025 14:03: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWQ5Bs8z3FCT; Tue, 05 Aug 2025 14:03:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EUZrhUnVLqdB+cY2Gx4rCKZFg6f+rb5pwZ8JhpDaXuM=; b=KO+uEwTQGMYEA8HTRXWO5g+u+nlB9+0IBYL7NRVUj+qTUIyJoiZkYco/7HObUHIIFv/rs+ Nek7HVNgHHPrG7oNoeoAFISXLyLlF+Flkq5HwQX6SX+ZG7NaPoRdnE5DrcXfKfU80c7oWx dyhML4m5ybAgu9B36PZxpaajlQhNLodrAYxgGPCmWrx+w5LMe63iUuprJNazRMlhBrZTXF iMD3ywab19BLMxaZ9pGXmEKoUl4iTQRKxSTZCe8WEWTIP+uNtHIUYmlzZJRKTBW/npxvlF KL7P7rg6Gpr+Ny+RQDxr4Exnzy/DmmlCq9cQesL8kUuXwa7QYHz28JhCMpNRrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EUZrhUnVLqdB+cY2Gx4rCKZFg6f+rb5pwZ8JhpDaXuM=; b=DZefJSHQ5eJRVY/55hZDP1ed7tqCpV2OCVCpWcjrgXrKW+aWIF50bFnwoq/e23xqdi0mU5 aITtVv1V5E7pEEKbWwRw1LlKRVRcuR/cDwdSeRrh2YT4V1GXh0h46/OxVgWzl6B4B+ivV5 J8GMAjxSFyH7SKruvuKflBIWlEsHDNog9bhBneSbM1v59xHnEohqBs+8U4XGuZ0GK+1Vg+ fOOlY5WCrasWg6HECIZDPUzf/uD29TcTTj7iBpywZI5P8wEJQl1euXj7KuhPe2LCN+uFNs 3SWCCIUbUo2HggP7ZxZjwA9gbHfbQLelNhEqGpUpZMtIXQLBmZIZER0nIYzcbA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402594; a=rsa-sha256; cv=none; b=I4ayaLbgNpj8l5LxPPwW1uEWUWwLF12bugyBJGm33yg8Dy/hmt7cEY93F1xgV6G5Sm2sFQ BrZDE6fm4uuKRNtzBeAE8D2lrO7zIKxmOI4pDaTHKpkret045mMRxRp8hP8rvUcrAYumqv wg6XR3aS7fR9qTFGitDwmhU0iwl7zi+tqk1zqenzGgJVQG0tjClC7BueCVgyaPJanqVVCk FJHpexahUR9bAUMKnmGtRR2SBkN+IZHsmlIo0JgMqsukm0thczP2CnyUiRBTcwXv5CVS7O odpITQh+bLND11P+X5oq+hnEgjs8Pyi0gWcv0K14oofNWTSDIilAiO/evy+prQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWQ4Q0wzdgj; Tue, 05 Aug 2025 14:03:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3EG1070527; Tue, 5 Aug 2025 14:03:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3ESl070524; Tue, 5 Aug 2025 14:03:14 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:14 GMT Message-Id: <202508051403.575E3ESl070524@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: 1bc515184d87 - main - bhyve: scan PCI device ID to properly set BDSM address List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1bc515184d875964c95c7732738fd8d8ae0511cb Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=1bc515184d875964c95c7732738fd8d8ae0511cb commit 1bc515184d875964c95c7732738fd8d8ae0511cb Author: Corvin Köhne AuthorDate: 2025-06-12 07:56:57 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 13:49:28 +0000 bhyve: scan PCI device ID to properly set BDSM address The address and size of the BDSM register has changed in recent Intel GPUs. To account for that change, we have to detect the GPU generation. We've recently added all known PCI IDs of Intel GPUs from Linux. Make use of this header to scan the device ID and properly set the BDSM address. Note that even though a bunch of devices is listed in our device array, not all device will work properly. Especially some old devices may not support VT-d, required for passthrough in general, at all. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D50807 --- usr.sbin/bhyve/amd64/pci_gvt-d.c | 98 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/usr.sbin/bhyve/amd64/pci_gvt-d.c b/usr.sbin/bhyve/amd64/pci_gvt-d.c index 60bf460d71ed..e506b75e77fe 100644 --- a/usr.sbin/bhyve/amd64/pci_gvt-d.c +++ b/usr.sbin/bhyve/amd64/pci_gvt-d.c @@ -20,6 +20,7 @@ #include "amd64/e820.h" #include "pci_gvt-d-opregion.h" #include "pci_passthru.h" +#include "pciids_intel_gpus.h" #define KB (1024UL) #define MB (1024 * KB) @@ -41,6 +42,89 @@ #define GVT_D_MAP_OPREGION 1 #define GVT_D_MAP_VBT 2 +static int +set_bdsm_gen3(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa) +{ + struct passthru_softc *sc = pi->pi_arg; + uint32_t bdsm; + int error; + + bdsm = pci_host_read_config(passthru_get_sel(sc), PCIR_BDSM, 4); + + /* Protect the BDSM register in PCI space. */ + pci_set_cfgdata32(pi, PCIR_BDSM, + bdsm_gpa | (bdsm & (PCIM_BDSM_GSM_ALIGNMENT - 1))); + error = set_pcir_handler(sc, PCIR_BDSM, 4, passthru_cfgread_emulate, + passthru_cfgwrite_emulate); + if (error) { + warnx("%s: Failed to setup handler for BDSM register!", __func__); + return (error); + } + + return (0); +} + +struct igd_ops { + int (*set_bdsm)(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa); +}; + +static const struct igd_ops igd_ops_gen3 = { .set_bdsm = set_bdsm_gen3 }; + +struct igd_device { + uint32_t device_id; + const struct igd_ops *ops; +}; + +#define IGD_DEVICE(_device_id, _ops) \ + { \ + .device_id = (_device_id), \ + .ops = (_ops), \ + } + +static const struct igd_device igd_devices[] = { + INTEL_I915G_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_I915GM_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_I945G_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_I945GM_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_VLV_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_PNV_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_I965GM_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_GM45_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_G45_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_ILK_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_SNB_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_IVB_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_HSW_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_BDW_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_CHV_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_SKL_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_BXT_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_KBL_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_CFL_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_WHL_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_CML_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_GLK_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_CNL_IDS(IGD_DEVICE, &igd_ops_gen3), +}; + +static const struct igd_ops * +get_igd_ops(struct pci_devinst *const pi) +{ + struct passthru_softc *sc = pi->pi_arg; + uint16_t device_id; + + device_id = pci_host_read_config(passthru_get_sel(sc), PCIR_DEVICE, + 0x02); + for (size_t i = 0; i < nitems(igd_devices); i++) { + if (igd_devices[i].device_id != device_id) + continue; + + return (igd_devices[i].ops); + } + + return (NULL); +} + static int gvt_d_probe(struct pci_devinst *const pi) { @@ -108,8 +192,8 @@ gvt_d_setup_gsm(struct pci_devinst *const pi) { struct passthru_softc *sc; struct passthru_mmio_mapping *gsm; + const struct igd_ops *igd_ops; size_t sysctl_len; - uint32_t bdsm; int error; sc = pi->pi_arg; @@ -170,12 +254,14 @@ gvt_d_setup_gsm(struct pci_devinst *const pi) "Warning: Unable to reuse host address of Graphics Stolen Memory. GPU passthrough might not work properly."); } - bdsm = pci_host_read_config(passthru_get_sel(sc), PCIR_BDSM, 4); - pci_set_cfgdata32(pi, PCIR_BDSM, - gsm->gpa | (bdsm & (PCIM_BDSM_GSM_ALIGNMENT - 1))); + igd_ops = get_igd_ops(pi); + if (igd_ops == NULL) { + warn("%s: Unknown IGD device. It's not supported yet!", + __func__); + return (-1); + } - return (set_pcir_handler(sc, PCIR_BDSM, 4, passthru_cfgread_emulate, - passthru_cfgwrite_emulate)); + return (igd_ops->set_bdsm(pi, gsm->gpa)); } static int From nobody Tue Aug 5 14:03:15 2025 X-Original-To: dev-commits-src-main@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 4bxFWS2gnPz63GtM; Tue, 05 Aug 2025 14:03: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWR5XtBz3FQH; Tue, 05 Aug 2025 14:03:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402595; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=S091PNxp62pJ5Ef8SVchokWUfCZORtWNQHG685ptDlM=; b=mXCtTxJIqRIOBhgxQzOk3r9l7rVnD8yU3DZ5wjN5dr0I8hZMJ5rbBGfHfMKZjDi12cy/9X qAK1l0LQ5T912nFbarww2c0/wCXb8yh90oynWbxKuSc9jAOvM/D6ir6tqLTqVhXrd9MATr LDYdrM7qgezm8QngZ4jxnC5wlEnCBTBRWuRkijoBkfMB5UZdS0QhSYi/9ELadrPXWpzA3c KyeQh10ah7vpTeJ6Dz8nLYVflNhE4hXMzCO3NM7RAp1CQDi3mAXzfV4/4px414Jz5B7gay PV4Rvc8BZpzV9yNqMS7FXCb0trK3nGRi0LKyn8a0utA2a8ZDh7gtJ0Dv8yKPOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402595; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=S091PNxp62pJ5Ef8SVchokWUfCZORtWNQHG685ptDlM=; b=J3qORwKJszSw0aFD3fYhRuo7Q1YG9B7dmhdI6rthWwdl3kQDkYgTJ3qzEhErBoJCHzVfZj xtG8q5wVi2NCvsYRIWT3NICY2Y6baZUtOHiheML/OOVYZOHd1LoWph0/cCZEFhx93dZGOb 7mOaz7pVLCRAjRFdFBP85EmbXQshFk8bPBQaIh5ZNIFE+w22aJsb6bUHXYiSMaYpVOBR8W +ggcyAcn6+RlSAj+b7RNove+0kCcJgw91U839g+mhd6gFyQHuJl9nRbLEIirGHalnRiF2Y ArYXa5jq0V5shdVJyrcw9IIImeFyeL/oJlLjvybtwN2nrTLgxxjMySHQPyAVog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402595; a=rsa-sha256; cv=none; b=D1DuPgr2MK5ykofYyG3dns9qtxyW89fUUxO5rit6gRBoScZIX3WpTbHSz/fcIRkTM8bi4r K1BexQreK//jSZkWjKKwWP4yjxJm8rGeOiKON+RJwNxmKuAIdo5T1pa6ysfAojrX56CP8J Yek7LnBgc5Q0MQQ4Yit3kFszH2NXq9UuAjjhPAylqleOY08ho4TFAaAVksFe09hDWlG4mc MCA5MArkWJAEUbw6r0EYGK7Ezpo15EqHmRPwh7x4D6Gzc5lUvmVUb6/kAmIvc5abKW4EMA iMUKLsOGe6ofiOY73PbG6qacOfXbNqRM7pVQMpOKFiBZ1tb6K3RwhmwCRFzsJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWR57rlzfK2; Tue, 05 Aug 2025 14:03:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3FOD070565; Tue, 5 Aug 2025 14:03:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3FBS070562; Tue, 5 Aug 2025 14:03:15 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:15 GMT Message-Id: <202508051403.575E3FBS070562@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: 9eddbaa5bba2 - main - bhyve: add GVT-d support for graphics gen 11 and newer List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9eddbaa5bba20c1a276d4711a4e9271e5f200ee1 Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=9eddbaa5bba20c1a276d4711a4e9271e5f200ee1 commit 9eddbaa5bba20c1a276d4711a4e9271e5f200ee1 Author: Corvin Köhne AuthorDate: 2023-12-15 11:29:19 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 14:02:08 +0000 bhyve: add GVT-d support for graphics gen 11 and newer The BDSM (Base Data Stolen Memory) register changed. Older generations are using a 32 bit register. On newer generations a different register address is used and the size was changed to 64 bit to permit allocating graphics stolen memory above 4 GB. Bhyve has to detect that and properly emulate the correct register. Reviewed by: jhb, markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D45338 --- usr.sbin/bhyve/amd64/pci_gvt-d.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/usr.sbin/bhyve/amd64/pci_gvt-d.c b/usr.sbin/bhyve/amd64/pci_gvt-d.c index e506b75e77fe..630c5caf4b7b 100644 --- a/usr.sbin/bhyve/amd64/pci_gvt-d.c +++ b/usr.sbin/bhyve/amd64/pci_gvt-d.c @@ -33,6 +33,7 @@ #define PCI_VENDOR_INTEL 0x8086 #define PCIR_BDSM 0x5C /* Base of Data Stolen Memory register */ +#define PCIR_BDSM_GEN11 0xC0 #define PCIR_ASLS_CTL 0xFC /* Opregion start address register */ #define PCIM_BDSM_GSM_ALIGNMENT \ @@ -64,12 +65,37 @@ set_bdsm_gen3(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa) return (0); } +static int +set_bdsm_gen11(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa) +{ + struct passthru_softc *sc = pi->pi_arg; + uint64_t bdsm; + int error; + + bdsm = pci_host_read_config(passthru_get_sel(sc), PCIR_BDSM_GEN11, 8); + + /* Protect the BDSM register in PCI space. */ + pci_set_cfgdata32(pi, PCIR_BDSM_GEN11, + bdsm_gpa | (bdsm & (PCIM_BDSM_GSM_ALIGNMENT - 1))); + pci_set_cfgdata32(pi, PCIR_BDSM_GEN11 + 4, bdsm_gpa >> 32); + error = set_pcir_handler(sc, PCIR_BDSM_GEN11, 8, passthru_cfgread_emulate, + passthru_cfgwrite_emulate); + if (error) { + warnx("%s: Failed to setup handler for BDSM register!\n", __func__); + return (error); + } + + return (0); +} + struct igd_ops { int (*set_bdsm)(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa); }; static const struct igd_ops igd_ops_gen3 = { .set_bdsm = set_bdsm_gen3 }; +static const struct igd_ops igd_ops_gen11 = { .set_bdsm = set_bdsm_gen11 }; + struct igd_device { uint32_t device_id; const struct igd_ops *ops; @@ -105,6 +131,17 @@ static const struct igd_device igd_devices[] = { INTEL_CML_IDS(IGD_DEVICE, &igd_ops_gen3), INTEL_GLK_IDS(IGD_DEVICE, &igd_ops_gen3), INTEL_CNL_IDS(IGD_DEVICE, &igd_ops_gen3), + INTEL_ICL_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_EHL_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_JSL_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_TGL_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_RKL_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_ADLS_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_ADLP_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_ADLN_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_RPLS_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_RPLU_IDS(IGD_DEVICE, &igd_ops_gen11), + INTEL_RPLP_IDS(IGD_DEVICE, &igd_ops_gen11), }; static const struct igd_ops * From nobody Tue Aug 5 14:03:16 2025 X-Original-To: dev-commits-src-main@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 4bxFWT1S6hz63GLl; Tue, 05 Aug 2025 14:03: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWS6Vryz3FQM; Tue, 05 Aug 2025 14:03:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402596; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Y6srb2kGt5XKiRFzQiocBhLevu4lVicsXbGoJBzH2Bc=; b=VBInd6hbjriE9rnaBxb7DPA+VwCLMAuxX6C0hXlqD5W7+H2b2qZaw/sCEPcQUCq5mUsvNW 27Pm2grmI8x2tP1tKfaOBox+iQWm7eC6xKYhNeMBZGirpaYyvj/ShELP7b/Y7vtZudS7J+ MBOufY/k7esyVMI7Qjyo3qbUsbhFK/g/5IwEt4Pv14TFkvNItDBNZHBbPTd+OTRd7yEgbf v5jylTfMMfavXG5wkHNF0dgtFnNlJesrsWGLH96+qWovxkHSOMLMgIsO7tgLo6Mx8g1Eqp DD6BP2JvFvOXVlgpJjjepKT6XygxQwBny9PyqI0gjVoN1CkmbewGEENdzi5pgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402596; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Y6srb2kGt5XKiRFzQiocBhLevu4lVicsXbGoJBzH2Bc=; b=OArbaDGB6JH3O+oK+FiPC6jIGc/XKOFU7xNyxAoGCegoMXUUZ6HnKtJ1Fjt/gEU+DUeBW/ 8iBGQ0JBIs6KFNrlpO0MUHQ9s5q/DXBkXmNopyzbys3SzW+lZrkpifhPgtC5cxDlrgC5Ya HcvtA6H9gekm29/RENvyjk/rAfsZ7/bgXnMlUgqB7xOkoCoJZfryihJFvAAGROpc6zagnx ZxDyq6fy7EZRlGPdLNf+XpUk22/UulWKdL7QaXK/2dkTlNS+j8KIzbqZjPomAz+ZAnGx5q aeXykWmZymV3oAUbpxmFOYjthcDLZ40pgtIAhZ3srl1VkC5iE7kfqoMLdNLkdg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402596; a=rsa-sha256; cv=none; b=U9oJRcOW40xI3tXCfUHVDILPfVeraV3Ck7HNPYRBAhHPgxqn5JRuhq6k9vowDHzcp5YXrG P2uBJvh0WcnPEocyY19d2ksCxdmjcUgNngH8BlahrJIF8dYdm3rzdIX2flqjLKQdNYKNZA l6t+9n9dctPdya95LCNQeK69VUGNcO07lsLlmW2S9v+6LbC6GGnqPtXDXGdMOTcsu4S4hw ZdDteDYxtDMppqpvnbebrwoCzrA1dtet30ZyfTRhBpahWoTcuzr45J2ylcxL3yDP5ZIjkm e1ODe8Mmv2nl/qnim/y5AoQ9NaPKNHv9VEqLDKSFOJzXlCrzOw7irB03Z7IgJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWS65BGzfK3; Tue, 05 Aug 2025 14:03:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3GIN070601; Tue, 5 Aug 2025 14:03:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3GEj070598; Tue, 5 Aug 2025 14:03:16 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:16 GMT Message-Id: <202508051403.575E3GEj070598@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: df6c805ca125 - main - bhyve: add BAR handler list for passthru devices List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: df6c805ca12527d87051136ee5cf32f28e32d8cb Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=df6c805ca12527d87051136ee5cf32f28e32d8cb commit df6c805ca12527d87051136ee5cf32f28e32d8cb Author: Corvin Köhne AuthorDate: 2024-01-08 13:55:49 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 14:02:08 +0000 bhyve: add BAR handler list for passthru devices We have to emulate some specific register of a BAR for passthru devices. Our current use case are Intels integrated graphic devices. They mirror some of their PCI config space into the MMIO space. Unfortunately, the Windows driver reads from MMIO instead of PCI config space. For that reason, we have to trap and emulate those register. Instead of implementing a quirk for this special device, we're implementing a generic approach by using a list of trapped register. That's much cleaner and can be reused. E.g. Nvidia GPUs mirror their PCI config space in MMIO too and we can reuse it to trap the MSI-X table in the future. Note that the handling of this new list requires a larger patch. For that reason, we split it into multiple commits. This means that the list isn't used yet. This commit adds the callback on BAR reads and writes. Some subsequent commit will add the trap for BAR regions and an interface to easily add protected regions. Reviewed by: jhb, markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D45339 --- usr.sbin/bhyve/pci_passthru.c | 59 ++++++++++++++++++++++++++++++++++++++++--- usr.sbin/bhyve/pci_passthru.h | 4 +++ 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index a82078f6e036..0cc5b777b842 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -79,6 +79,14 @@ static int pcifd = -1; SET_DECLARE(passthru_dev_set, struct passthru_dev); +struct passthru_bar_handler { + TAILQ_ENTRY(passthru_bar_handler) chain; + uint64_t off; + uint64_t size; + passthru_read_handler read; + passthru_write_handler write; +}; + struct passthru_softc { struct pci_devinst *psc_pi; /* ROM is handled like a BAR */ @@ -96,6 +104,9 @@ struct passthru_softc { struct passthru_mmio_mapping psc_mmio_map[PASSTHRU_MMIO_MAX]; cfgread_handler psc_pcir_rhandler[PCI_REGMAX + 1]; cfgwrite_handler psc_pcir_whandler[PCI_REGMAX + 1]; + + TAILQ_HEAD(, + passthru_bar_handler) psc_bar_handler[PCI_BARMAX_WITH_ROM + 1]; }; static int @@ -947,6 +958,9 @@ passthru_init(struct pci_devinst *pi, nvlist_t *nvl) pi->pi_arg = sc; sc->psc_pi = pi; + for (uint8_t i = 0; i < PCI_BARMAX_WITH_ROM + 1; ++i) + TAILQ_INIT(&sc->psc_bar_handler[i]); + /* initialize config space */ if ((error = cfginit(pi, bus, slot, func)) != 0) goto done; @@ -1166,6 +1180,7 @@ passthru_write(struct pci_devinst *pi, int baridx, uint64_t offset, int size, uint64_t value) { struct passthru_softc *sc; + struct passthru_bar_handler *handler; struct pci_bar_ioreq pio; sc = pi->pi_arg; @@ -1173,9 +1188,27 @@ passthru_write(struct pci_devinst *pi, int baridx, uint64_t offset, int size, if (baridx == pci_msix_table_bar(pi)) { msix_table_write(sc, offset, size, value); } else { - assert(pi->pi_bar[baridx].type == PCIBAR_IO); assert(size == 1 || size == 2 || size == 4); - assert(offset <= UINT32_MAX && offset + size <= UINT32_MAX); + + TAILQ_FOREACH(handler, &sc->psc_bar_handler[baridx], chain) { + if (offset >= handler->off + handler->size) { + continue; + } else if (offset < handler->off) { + assert(offset + size < handler->off); + /* + * The list is sorted in ascending order, so all + * remaining handlers will have an even larger + * offset. + */ + break; + } + + assert(offset + size <= handler->off + handler->size); + + handler->write(pi, baridx, + offset - handler->off, size, value); + return; + } bzero(&pio, sizeof(pio)); pio.pbi_sel = sc->psc_sel; @@ -1193,6 +1226,7 @@ static uint64_t passthru_read(struct pci_devinst *pi, int baridx, uint64_t offset, int size) { struct passthru_softc *sc; + struct passthru_bar_handler *handler; struct pci_bar_ioreq pio; uint64_t val; @@ -1201,9 +1235,26 @@ passthru_read(struct pci_devinst *pi, int baridx, uint64_t offset, int size) if (baridx == pci_msix_table_bar(pi)) { val = msix_table_read(sc, offset, size); } else { - assert(pi->pi_bar[baridx].type == PCIBAR_IO); assert(size == 1 || size == 2 || size == 4); - assert(offset <= UINT32_MAX && offset + size <= UINT32_MAX); + + TAILQ_FOREACH(handler, &sc->psc_bar_handler[baridx], chain) { + if (offset >= handler->off + handler->size) { + continue; + } else if (offset < handler->off) { + assert(offset + size < handler->off); + /* + * The list is sorted in ascending order, so all + * remaining handlers will have an even larger + * offset. + */ + break; + } + + assert(offset + size <= handler->off + handler->size); + + return (handler->read(pi, baridx, + offset - handler->off, size)); + } bzero(&pio, sizeof(pio)); pio.pbi_sel = sc->psc_sel; diff --git a/usr.sbin/bhyve/pci_passthru.h b/usr.sbin/bhyve/pci_passthru.h index a89ad287cbc5..fc3fdbc1719f 100644 --- a/usr.sbin/bhyve/pci_passthru.h +++ b/usr.sbin/bhyve/pci_passthru.h @@ -35,6 +35,10 @@ typedef int (*cfgread_handler)(struct passthru_softc *sc, struct pci_devinst *pi, int coff, int bytes, uint32_t *rv); typedef int (*cfgwrite_handler)(struct passthru_softc *sc, struct pci_devinst *pi, int coff, int bytes, uint32_t val); +typedef uint64_t (*passthru_read_handler)(struct pci_devinst *pi, int baridx, + uint64_t offset, int size); +typedef void (*passthru_write_handler)(struct pci_devinst *pi, int baridx, uint64_t offset, + int size, uint64_t val); uint32_t pci_host_read_config(const struct pcisel *sel, long reg, int width); void pci_host_write_config(const struct pcisel *sel, long reg, int width, From nobody Tue Aug 5 14:03:17 2025 X-Original-To: dev-commits-src-main@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 4bxFWW10G3z63Gy2; Tue, 05 Aug 2025 14:03:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWV0WDnz3FT0; Tue, 05 Aug 2025 14:03:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402598; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R7Q3pNCY9ynnkL3qtrb5PfAncx7zUyBgaMyoGEP0/Vw=; b=kLmn7i7bSClszFrXj4oOp/af1rH7PWdjZkZeM1nB0IrUic5ZQB+KJqN9Z7cIIULkaxUkmI JTO+STOxTviLcABbK6gEiRxm3dLkZRlvx4xpoUGq9UTY7tpYizINM0uIIwigEB2j9whxub 1/xThWl+AcGbRqe9e12E7EtNTHBb3Rgjnsia0mXI+po3EYW329oW/0IqYNNkIHqpAXq+uD E9WYUbz9R3kWKX/dvjo5gYmc+ZcjkpmmihlTzK0XURRFVkpz7kNYFLnSpXB6XR3TAcJoTa 6PwBlX1K/tlMCel/wCsstmMSUL35aDL/ri7CRnvHa95vq1lH6pxaAagcHTEWKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402598; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R7Q3pNCY9ynnkL3qtrb5PfAncx7zUyBgaMyoGEP0/Vw=; b=qWswib9SaPoTqPJxsATbqyi7bQO2I5m/2CIQ/bSubmMX4kdiHenmCliDDsRmpwMmFfLNbi isMu6AYY43rbzajLsUolU6EqnEtN0greMz8S776zpAi8DRsHWLj3lxP5vOHJ8IeQJ/uiNw N4hktSWHctOfloYWqfknod+lC9+VYciIzYhD79niWbhbZuo25GNfVL5bqF7rL3jj0XbnW+ cjW2qeD8OkqdRNp+u4i05fxdVs+2ZA5zCJ1EjSD6iDg58auhHwZrVKREC2GgbTD7cXoF6v R57160GmGSjTldDLWqztfKkJnLd85cXy5ao+rHre6UJrErJFPO33IA3jzPgzOA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402598; a=rsa-sha256; cv=none; b=hu/dhsXyNFhalhcBfFu33IsYyHwUjvw4XwD1JaJgbavPWKL0l9bh1PRALfH0uk6ZdxSpQr qY06rX+3bVeW1TZDdKSyeeUKocdiEP3rfhHCfeZeCcrwPqrKerSMeDgGfOx2YLzrOQ1yMB 7xUGcwfymld0MfbUABFVAId7mAH6szxd9XIEJCX5D2jfxfvdmsF6PuKs+HZCcaOofVDoxs IihltiMiKxUuncXgbIGr5XN60GjuGQdTTK1JmKpW3bugDSVoPVuOgogQKj5DLCMuGaD8Z+ 3tQDf3/SCwcdpsMtKIDDUPTvVHTDks/MQKpruwDtPbguoZ/aael8U2+sra4SxA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWT71bDzfLC; Tue, 05 Aug 2025 14:03:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3H4j070637; Tue, 5 Aug 2025 14:03:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3Hrb070634; Tue, 5 Aug 2025 14:03:17 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:17 GMT Message-Id: <202508051403.575E3Hrb070634@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: f841cb63687b - main - bhyve: trap protected BAR regions of passthru devices List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f841cb63687ba7d4285bcd35f3bdbb51253c41d8 Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=f841cb63687ba7d4285bcd35f3bdbb51253c41d8 commit f841cb63687ba7d4285bcd35f3bdbb51253c41d8 Author: Corvin Köhne AuthorDate: 2024-01-08 14:01:45 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 14:02:09 +0000 bhyve: trap protected BAR regions of passthru devices At the moment, the list of protected BAR regions is unused by the passthru emulation. Make use of it when mapping the BAR regions. This causes bhyve to trap those regions. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D45340 --- usr.sbin/bhyve/pci_passthru.c | 57 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 0cc5b777b842..2b84c561927a 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -1323,27 +1323,64 @@ passthru_msix_addr(struct pci_devinst *pi, int baridx, int enabled, } } -static void -passthru_mmio_addr(struct pci_devinst *pi, int baridx, int enabled, - uint64_t address) +static int +passthru_mmio_map(struct pci_devinst *pi, int baridx, int enabled, + uint64_t address, uint64_t off, uint64_t size) { struct passthru_softc *sc; sc = pi->pi_arg; if (!enabled) { if (vm_unmap_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - sc->psc_bar[baridx].size) != 0) + sc->psc_sel.pc_dev, sc->psc_sel.pc_func, address + off, + size) != 0) { warnx("pci_passthru: unmap_pptdev_mmio failed"); + return (-1); + } } else { if (vm_map_pptdev_mmio(pi->pi_vmctx, sc->psc_sel.pc_bus, - sc->psc_sel.pc_dev, - sc->psc_sel.pc_func, address, - sc->psc_bar[baridx].size, - sc->psc_bar[baridx].addr) != 0) + sc->psc_sel.pc_dev, sc->psc_sel.pc_func, address + off, + size, sc->psc_bar[baridx].addr + off) != 0) { warnx("pci_passthru: map_pptdev_mmio failed"); + return (-1); + } + } + + return (0); +} + +static void +passthru_mmio_addr(struct pci_devinst *pi, int baridx, int enabled, + uint64_t address) +{ + struct passthru_softc *sc; + struct passthru_bar_handler *handler; + uint64_t off; + + sc = pi->pi_arg; + + off = 0; + + /* The queue is sorted by offset in ascending order. */ + TAILQ_FOREACH(handler, &sc->psc_bar_handler[baridx], chain) { + uint64_t handler_off = trunc_page(handler->off); + uint64_t handler_end = round_page(handler->off + handler->size); + + /* + * When two handlers point to the same page, handler_off can be + * lower than off. That's fine because we have nothing to do in + * that case. + */ + if (handler_off > off) { + passthru_mmio_map(pi, baridx, enabled, address, off, + handler_off - off); + } + + off = handler_end; } + + passthru_mmio_map(pi, baridx, enabled, address, off, + sc->psc_bar[baridx].size - off); } static void From nobody Tue Aug 5 14:03:18 2025 X-Original-To: dev-commits-src-main@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 4bxFWW3LHBz63GtT; Tue, 05 Aug 2025 14:03:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWW0qqtz3FNW; Tue, 05 Aug 2025 14:03:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402599; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sRNM5V2wgvnaqf2l0gSJHtgQeKOmtgNP6GQbPY361WE=; b=hGms2Ez9rLrPapxGnmMXzEAailFJ8UyQ2dm/xrD3CozWJMR0vsVQVBcCvCEvhrgPkAV92v vKlfvw7DQ03WYkya4K7bPM8UlL+C860AwbB9lu6O4h7tAQM1TYt5SvbNiYCsXsnsZFw3P3 keGWsJ+qMTCvQMzi0Dj+/QUDcmEn6qtRfh4Il81DDgrgldXvqDn+/deMQKyADQSRzeStvx Qvf/sC4ENwvUIZMTLatGHt9io/mNW618rvYoVbY1KBJkgn9dHtJ4q1p1VhPK5NLz3BhvVh pJaB2mPMjlUs8Z/BZjcy16Dw6i0U+JSmNYzqgE3WAhaB//tp9VBOT2VHUR1K4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402599; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sRNM5V2wgvnaqf2l0gSJHtgQeKOmtgNP6GQbPY361WE=; b=opLLj0eJ4x4fjEEqKjTr78sG5+tc1NqOEnDOVHXd0+QJ7FLWrHxKEKZ43l/GFPU1MCXLEj YDrnd4HdRDgS09HEJigv9n29e9Oemdf00P14hwc1IkQrpGMPJqhkQFZTLx+fu2GB5cqhob hGcFeUugpfLAckUDhWLnM5u8brZ3p8+HaBvooSR38Aj+Ld4JY8LZI43lDEmz464yH5+mvZ IWnLeu8PoYP53LXHwgKJo4ManVijkqqraN6y0Qjm+Ms1X3lrLWraOrVjnF81znczaRotJ/ v0PxNn/4bWQvnt+nsRC090MOwA0RH2sPwsYbwBK9HyPLVApQhHPiblC3lzr5PQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402599; a=rsa-sha256; cv=none; b=ENPnH1QgtIv/ka/G87VyeGuZxfbiTzDST0RjaoX2xOdQdIFXvkJaVCnzvnNQzjaV2GhHLp 6rEj9ifoUDnKUNX6tSMm1JL+vfGYLPruEXSYy+m1V6gfYYJPPAl21CBQHb54YQwEH3h6tR CRzO77p3Zyp95S5+G+tU9cAbaSbaeA1O0GuwgrszEB84I5eO0UBSuqy9GnRz7gtBhokHAh CFEzvX4haNmm1fWd1rkfEPdH0+N+D9eLGSLOtp8cNmq9GqIz6h0sef+oQJaXB8OeKq6yuA MnJE2dSxbaZstM2OI5PSozYeUQN4wyjotrBnY0sNAUYsOt3jMnU0thfS2HZPaw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWW0GM0zdgk; Tue, 05 Aug 2025 14:03:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3I3e070672; Tue, 5 Aug 2025 14:03:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3IP8070669; Tue, 5 Aug 2025 14:03:18 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:18 GMT Message-Id: <202508051403.575E3IP8070669@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: 6dda2653bd0e - main - bhyve: add interface to protect BAR regions of passthru devices List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6dda2653bd0ee297b114682972b11d6d3c74a6a6 Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=6dda2653bd0ee297b114682972b11d6d3c74a6a6 commit 6dda2653bd0ee297b114682972b11d6d3c74a6a6 Author: Corvin Köhne AuthorDate: 2024-01-08 14:04:04 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 14:02:09 +0000 bhyve: add interface to protect BAR regions of passthru devices We need an interface for protecting BAR regions to make it easier to use this feature and to make it usable by external emulations like the GVT-d emulation. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D45341 --- usr.sbin/bhyve/pci_passthru.c | 39 +++++++++++++++++++++++++++++++++++++++ usr.sbin/bhyve/pci_passthru.h | 3 +++ 2 files changed, 42 insertions(+) diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 2b84c561927a..8ddcd8bd56e8 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -752,6 +752,45 @@ set_pcir_handler(struct passthru_softc *sc, int reg, int len, return (0); } +int +passthru_set_bar_handler(struct passthru_softc *sc, int baridx, uint64_t off, + uint64_t size, passthru_read_handler rhandler, + passthru_write_handler whandler) +{ + struct passthru_bar_handler *handler_new; + struct passthru_bar_handler *handler; + + assert(sc->psc_bar[baridx].type == PCIBAR_IO || + sc->psc_bar[baridx].type == PCIBAR_MEM32 || + sc->psc_bar[baridx].type == PCIBAR_MEM64); + assert(sc->psc_bar[baridx].size >= off + size); + assert(off < off + size); + + handler_new = malloc(sizeof(struct passthru_bar_handler)); + if (handler_new == NULL) { + return (ENOMEM); + } + + handler_new->off = off; + handler_new->size = size; + handler_new->read = rhandler; + handler_new->write = whandler; + + TAILQ_FOREACH(handler, &sc->psc_bar_handler[baridx], chain) { + if (handler->off < handler_new->off) { + assert(handler->off + handler->size < handler_new->off); + continue; + } + assert(handler->off > handler_new->off + handler_new->size); + TAILQ_INSERT_BEFORE(handler, handler_new, chain); + return (0); + } + + TAILQ_INSERT_TAIL(&sc->psc_bar_handler[baridx], handler_new, chain); + + return (0); +} + static int passthru_legacy_config(nvlist_t *nvl, const char *opts) { diff --git a/usr.sbin/bhyve/pci_passthru.h b/usr.sbin/bhyve/pci_passthru.h index fc3fdbc1719f..9e7b27d95735 100644 --- a/usr.sbin/bhyve/pci_passthru.h +++ b/usr.sbin/bhyve/pci_passthru.h @@ -53,3 +53,6 @@ struct passthru_mmio_mapping *passthru_get_mmio(struct passthru_softc *sc, struct pcisel *passthru_get_sel(struct passthru_softc *sc); int set_pcir_handler(struct passthru_softc *sc, int reg, int len, cfgread_handler rhandler, cfgwrite_handler whandler); +int passthru_set_bar_handler(struct passthru_softc *sc, int baridx, + uint64_t off, uint64_t size, passthru_read_handler rhandler, + passthru_write_handler whandler); From nobody Tue Aug 5 14:03:20 2025 X-Original-To: dev-commits-src-main@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 4bxFWX4K59z63GFd; Tue, 05 Aug 2025 14:03: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFWX1rnFz3FNd; Tue, 05 Aug 2025 14:03:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402600; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iiBkN0H57knyVrEPpFOggWkCwBlZWR8VhDj9+UFFji0=; b=h1ke8Fo8MEIVxn+0Xg2ZK2RUA3WTNvcKoAFEowrvPjblnFD/WjDRFAL/SqHE7U1yYX4hQl /kv0V4TI+7G+Zz+qY2XwabvVkCDZYjJQo9yHE/7KL+bWA2KuI+G4jzcxx2AM9a+ZOpMPVo ATJF1UX3fIlhlSGFJvwcoyTH1rhhLszIV8wCbgrFjfvEcUGo4vyYtfILYf7kKcUY9zJY3G TeCmc6hdciiKPl/EufYzTR/kJ3fcoJXooEUdP5tJ3xajNQaR236gVHOwHK7JiX/NF4QkDG qZJ2RjId2fExlNMs0+LIbfu8v/JkvPfVVYyPZkZ2TGaMfk7CieidqSUsMAVGmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754402600; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iiBkN0H57knyVrEPpFOggWkCwBlZWR8VhDj9+UFFji0=; b=fXB1kSwR2D/qsgpkXjNO8oRIopUExC6KP1CK3EMyUQg3cLz6ShG4BmlVo7WgGJdB1VXNmP 02kauMGdEomnQ3gYn5l22ghEy3gAZunj2nB3oMXaryN6IbGsYCdnjhhy/lcyOb7Zvd2M2b jXnD+WieMbYBrAoUSiAsxcflpphWRNSA+tGHdZ4nlV0SbaMCv9mNvalV8q6sqBR6R0ighI uf/PvKKFTnybUvzVuPp+TxC+XZy0ZrTqwDdZ/hugCg6A38WfGgN62dcxRoUyM7F+agjlG0 xYs95OZccyeEB9/eDcSFl/AD3fH/tmG4UvB7+yplGm/bIHPqMnfsw6dg3UqtNw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754402600; a=rsa-sha256; cv=none; b=OifyTJGVnhbg+wiNIXjfvPUiQsFPXqNF3mg/K4eSlbL7NIaC1vYoWdwatPZdawmMQiThu7 UG/GU1bdSTvn14REEEv8UyCZMGpgYMoF0hz0NjMEOHM89UhF0LIuSUXIsl5NnI5ehAjp9j 2RTw80BreQtvW5TAXXB03Tx2SlWtYiyRmBlDm6TcRzgDfV0SrsuoLtfy0h/4zSKf3nBDfl gFSKMiDhuKR+pRZirVnvVWJdgPQwd8IGCPhOqseZ/sbxCxkyS7G+58KCKNewXyQFKzpT8c 55XFfbzVNyJbC+uxyICTNarTPUJmgMtsPcbwiz+NyXYl9v1mqR98spssG4Byow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxFWX1Dqdzf64; Tue, 05 Aug 2025 14:03:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575E3KUC070708; Tue, 5 Aug 2025 14:03:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575E3K3s070705; Tue, 5 Aug 2025 14:03:20 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:03:20 GMT Message-Id: <202508051403.575E3K3s070705@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Corvin =?utf-8?Q?K=C3=B6hne?= Subject: git: 6374c45fbaf7 - main - bhyve: protect MMIO mapped BDSM register List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6374c45fbaf76d31b2090e5f93bb5c0f3d4883a5 Auto-Submitted: auto-generated The branch main has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=6374c45fbaf76d31b2090e5f93bb5c0f3d4883a5 commit 6374c45fbaf76d31b2090e5f93bb5c0f3d4883a5 Author: Corvin Köhne AuthorDate: 2024-01-08 14:05:56 +0000 Commit: Corvin Köhne CommitDate: 2025-08-05 14:02:09 +0000 bhyve: protect MMIO mapped BDSM register The Windows graphics driver reads the value of the BDSM register from MMIO space. This value makes no sense in our virtual environment because it's a host address. Therefore, we have to trap and emulate it. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D45342 --- usr.sbin/bhyve/amd64/pci_gvt-d.c | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/usr.sbin/bhyve/amd64/pci_gvt-d.c b/usr.sbin/bhyve/amd64/pci_gvt-d.c index 630c5caf4b7b..0ea53689f2b2 100644 --- a/usr.sbin/bhyve/amd64/pci_gvt-d.c +++ b/usr.sbin/bhyve/amd64/pci_gvt-d.c @@ -39,10 +39,47 @@ #define PCIM_BDSM_GSM_ALIGNMENT \ 0x00100000 /* Graphics Stolen Memory is 1 MB aligned */ +#define BDSM_GEN11_MMIO_ADDRESS 0x1080C0 + #define GVT_D_MAP_GSM 0 #define GVT_D_MAP_OPREGION 1 #define GVT_D_MAP_VBT 2 +static uint64_t +gvt_d_dsmbase_read(struct pci_devinst *pi, int baridx __unused, uint64_t offset, + int size) +{ + switch (size) { + case 1: + return (pci_get_cfgdata8(pi, PCIR_BDSM_GEN11 + offset)); + case 2: + return (pci_get_cfgdata16(pi, PCIR_BDSM_GEN11 + offset)); + case 4: + return (pci_get_cfgdata32(pi, PCIR_BDSM_GEN11 + offset)); + default: + return (UINT64_MAX); + } +} + +static void +gvt_d_dsmbase_write(struct pci_devinst *pi, int baridx __unused, + uint64_t offset, int size, uint64_t val) +{ + switch (size) { + case 1: + pci_set_cfgdata8(pi, PCIR_BDSM_GEN11 + offset, val); + break; + case 2: + pci_set_cfgdata16(pi, PCIR_BDSM_GEN11 + offset, val); + break; + case 4: + pci_set_cfgdata32(pi, PCIR_BDSM_GEN11 + offset, val); + break; + default: + break; + } +} + static int set_bdsm_gen3(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa) { @@ -85,6 +122,14 @@ set_bdsm_gen11(struct pci_devinst *const pi, vm_paddr_t bdsm_gpa) return (error); } + /* Protect the BDSM register in MMIO space. */ + error = passthru_set_bar_handler(sc, 0, BDSM_GEN11_MMIO_ADDRESS, sizeof(uint64_t), + gvt_d_dsmbase_read, gvt_d_dsmbase_write); + if (error) { + warnx("%s: Failed to setup handler for BDSM mirror!\n", __func__); + return (error); + } + return (0); } From nobody Tue Aug 5 14:21:59 2025 X-Original-To: dev-commits-src-main@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 4bxFxD6kdVz63Hr0; Tue, 05 Aug 2025 14:22:08 +0000 (UTC) (envelope-from ronald-lists@klop.ws) Received: from smtp-relay-int.realworks.nl (smtp-relay-int.realworks.nl [31.134.205.98]) (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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxFxC2cc9z3Jm7; Tue, 05 Aug 2025 14:22:07 +0000 (UTC) (envelope-from ronald-lists@klop.ws) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=klop.ws header.s=rw2 header.b="md2mxWo/"; spf=pass (mx1.freebsd.org: domain of ronald-lists@klop.ws designates 31.134.205.98 as permitted sender) smtp.mailfrom=ronald-lists@klop.ws; dmarc=pass (policy=quarantine) header.from=klop.ws Date: Tue, 5 Aug 2025 16:21:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=klop.ws; s=rw2; t=1754403720; 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: in-reply-to:in-reply-to:references:references; bh=ybbjzYMhe6KuLRXcpHxUUbiK9X9vWEFECeWfnv5ethg=; b=md2mxWo/+sMMwE/QcQp7jCqlW+UicrRJRl5vny51OSfDTt9dP0/Z11lY2zr1ahasgPiINq XToxl19ok3TjScYgHvT3I+WtsxSOFqBmGnKrjRRjEQNZoYDMNCRh/gQ49t0G1gGuXUuPfc Q/ASn5FUqOCybRA9d7TOj9yQ/M07W89yXIggSlh3+Lq7gejQjLUHoHDrm3XFvdboI/F6aE JjtCr7XLpgFqHck8AkKSAbXGE+YJSi8/0QQlXvsI1APkEi6GL6Yqwo/C4SgFpRsRdh49cC S36zyQiZ5Sc23UBzbIptrNNWn+grhqLzoc7hUlNu9pi3Ko0+lQdErG2hGVeJKQ== From: Ronald Klop To: Olivier Cochard Cc: dev-commits-src-all@FreeBSD.org, src-committers@FreeBSD.org, dev-commits-src-main@FreeBSD.org Message-ID: <1198413631.51.1754403719719@mailrelay> In-Reply-To: <202507310024.56V0OSTw062028@gitrepo.freebsd.org> References: <202507310024.56V0OSTw062028@gitrepo.freebsd.org> Subject: Re: git: a01ce3b87d83 - main - swapon: Improve tests for non-standard kernel page size and small media List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_50_1107529542.1754403719361" X-Mailer: Realworks (760.538) Importance: Normal X-Priority: 3 (Normal) X-Spamd-Result: default: False [-3.40 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.998]; DMARC_POLICY_ALLOW(-0.50)[klop.ws,quarantine]; MID_RHS_NOT_FQDN(0.50)[]; R_DKIM_ALLOW(-0.20)[klop.ws:s=rw2]; R_SPF_ALLOW(-0.20)[+ip4:31.134.205.64/26]; ONCE_RECEIVED(0.10)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; TO_DN_SOME(0.00)[]; ASN(0.00)[asn:51088, ipnet:31.134.200.0/21, country:NL]; RCVD_COUNT_ZERO(0.00)[0]; MLMMJ_DEST(0.00)[dev-commits-src-all@FreeBSD.org,dev-commits-src-main@FreeBSD.org]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; FROM_EQ_ENVFROM(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; HAS_X_PRIO_THREE(0.00)[3]; DKIM_TRACE(0.00)[klop.ws:+] X-Rspamd-Queue-Id: 4bxFxC2cc9z3Jm7 X-Spamd-Bar: --- ------=_Part_50_1107529542.1754403719361 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Thanks for this work! =C3=B0=C2=9F=C2=91=C2=8D I had it in the back of my mind to take a look at it some day. As I was sur= prised by the previous behaviour. Is this comment still correct? ------=_Part_50_1107529542.1754403719361 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thanks for this work! =C3=B0=C2=9F=C2=91=C2=8D
I had it in the back of my mind to take a look at it some day. As I was sur= prised by the previous behaviour.

Is this comment still correct? ------=_Part_50_1107529542.1754403719361-- From nobody Tue Aug 5 14:53:35 2025 X-Original-To: dev-commits-src-main@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 4bxGdX1DW1z63KN9; Tue, 05 Aug 2025 14:53: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxGdX0fP7z3MBQ; Tue, 05 Aug 2025 14:53:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754405616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MAR6JT6NTb8Ij4zu1AiJMxtUtjUAPMuNUSaO/97P+zI=; b=pMAeq+7JatyKERhamJhCAmWhqg0JJXoDkLA3Hxg7t7NxGsJowtdGs7k1zExsA9DoSrIFbJ wBxYMG8Bd9eYnFCzTX2+ZiN0lRHrAi0ntEnBPiQHOgONjQGWerlG8Yr3s5BKiUCEm6++mH bgjyewTIX9ikXUAlSO/Qx7wPEY3vmpkwWBylZXJacIFQDx2qtXOCJFqyewuKqxDfDWjMR0 K5VAoFjwFc2JrocbcIRheSTGD22zSVUiC8RC+N9afGNkW2Mn4P5r9qO3LC8fpqHuLHexst BrUjVYx9hcN1TWyGml7YhagdMzPKtEK/SvyVxwZmRb/vFZynTsc+1jF9ByV97w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754405616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MAR6JT6NTb8Ij4zu1AiJMxtUtjUAPMuNUSaO/97P+zI=; b=pcyhBI3PvYFTY/76dxqYVehbVGAl0K7qvtcqWNOPisqGYR8qgyaZY1kIAL/ACxmHIiCZX0 bc2dTibwNA2AMk7XBUlSn7tEh3SfAiI6VyzoGhClfSr47fjdSvGtdoJgmHdWb3+A7ltFZN HornY1LuZ4IfEXYseIFtUwU8P8z9fMVFV1JHuIgAPg8ywq5DXHKS2v0Z2j0aW4tCdqruTw R83WSGRCS6YGV8Gj05xlpSr+/5Yimw6fDyQhOn5+odLJRpQiRbk9fbL677ewrXSpcknC9c NeOQlTSzrzmsPjlsMnkYGZayMZPuaCINMH+aZ7gRw+s6mihbptJMCi8MnABSgQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754405616; a=rsa-sha256; cv=none; b=MXpOOa6fxOQwEqUuFxu1oOfRRRKY2RK4gSut4LU8x8QORxahgm5GC+TFHd/d8uuMPiFrHm Q3SkZiqRoApkJJTwL2U6cZhkVV9elG0JK7RDqzBfYgpYk9OfLjf3wHjSVHpQZdem+GN10+ AbrH/zTS52xb5xFuzQCXsZXRw6e2UNFdOY6FE9hruDVSD7XdkG5qWeKJ3Ucl0luCjcFqS7 VXeNkHkiZroZQRnksvGl9s82838AsFR0BRYuon7cw+y3DtMu39cH7x9AiAOrbWjxyEE3NY wTIuGTtP0WMZbY4sv5UGc076kzMaIV6UVjHG4JiY/manzTt3d/DMZUpiSHuGHw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxGdX0BdPzgL5; Tue, 05 Aug 2025 14:53:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575ErZct064024; Tue, 5 Aug 2025 14:53:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575ErZXQ064021; Tue, 5 Aug 2025 14:53:35 GMT (envelope-from git) Date: Tue, 5 Aug 2025 14:53:35 GMT Message-Id: <202508051453.575ErZXQ064021@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ronald Klop Subject: git: 590493c14190 - main - if_epair(4): use ether_gen_addr(9) for stable MAC address List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ronald X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 590493c1419092e98f7ad1dcadb886973502341e Auto-Submitted: auto-generated The branch main has been updated by ronald: URL: https://cgit.FreeBSD.org/src/commit/?id=590493c1419092e98f7ad1dcadb886973502341e commit 590493c1419092e98f7ad1dcadb886973502341e Author: Ronald Klop AuthorDate: 2025-07-03 16:33:03 +0000 Commit: Ronald Klop CommitDate: 2025-08-05 14:53:04 +0000 if_epair(4): use ether_gen_addr(9) for stable MAC address Before this change epair interfaces get a random MAC. This does not help dhcp/dyndns when an epair gets destroyed/recreated after restart of a jail. With this change: $ sysctl net.link.epair.ether_gen_addr=0 $ ifconfig epair8 create > /dev/null; ifconfig epair8a | grep ether; ifconfig epair8b | grep ether; ifconfig epair8a destroy ether 02:cb:78:56:e4:0a ether 02:cb:78:56:e4:0b $ ifconfig epair8 create > /dev/null; ifconfig epair8a | grep ether; ifconfig epair8b | grep ether; ifconfig epair8a destroy ether 02:8b:9b:6a:8f:0a ether 02:8b:9b:6a:8f:0b $ sysctl net.link.epair.ether_gen_addr=1 $ ifconfig epair8 create > /dev/null; ifconfig epair8a | grep ether; ifconfig epair8b | grep ether; ifconfig epair8a destroy ether 58:9c:fc:10:2b:b4 ether 58:9c:fc:00:39:10 $ ifconfig epair8 create > /dev/null; ifconfig epair8a | grep ether; ifconfig epair8b | grep ether; ifconfig epair8a destroy ether 58:9c:fc:10:2b:b4 ether 58:9c:fc:00:39:10 A follow up commit will change the default to 1 in main. Approved by: bz,ivy,kp MFC after: 2 weeks Relnotes: yes Differential Revision: https://reviews.freebsd.org/D51157 --- sys/net/if_epair.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 7051e31565d4..4d35584925a1 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -58,6 +58,7 @@ #include #include #include +#include #include #include @@ -97,6 +98,15 @@ static unsigned int next_index = 0; #define EPAIR_LOCK() mtx_lock(&epair_n_index_mtx) #define EPAIR_UNLOCK() mtx_unlock(&epair_n_index_mtx) +SYSCTL_DECL(_net_link); +static SYSCTL_NODE(_net_link, OID_AUTO, epair, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, + "Pair of virtual cross-over connected Ethernet-like interfaces"); + +static bool use_ether_gen_addr = false; +SYSCTL_BOOL(_net_link_epair, OID_AUTO, ether_gen_addr, CTLFLAG_RWTUN, + &use_ether_gen_addr, false, + "Generate MAC with FreeBSD OUI using ether_gen_addr(9)"); + struct epair_softc; struct epair_queue { struct mtx mtx; @@ -495,6 +505,17 @@ epair_clone_match(struct if_clone *ifc, const char *name) return (1); } +static void +epair_generate_mac_byname(struct epair_softc *sc, uint8_t eaddr[]) +{ + struct ether_addr gen_eaddr; + int i; + + ether_gen_addr_byname(if_name(sc->ifp), &gen_eaddr); + for (i = 0; i < ETHER_ADDR_LEN; i++) + eaddr[i] = gen_eaddr.octet[i]; +} + static void epair_clone_add(struct if_clone *ifc, struct epair_softc *scb) { @@ -502,9 +523,12 @@ epair_clone_add(struct if_clone *ifc, struct epair_softc *scb) uint8_t eaddr[ETHER_ADDR_LEN]; /* 00:00:00:00:00:00 */ ifp = scb->ifp; - /* Copy epairNa etheraddr and change the last byte. */ - memcpy(eaddr, scb->oifp->if_hw_addr, ETHER_ADDR_LEN); - eaddr[5] = 0x0b; + if (!use_ether_gen_addr) { + /* Copy epairNa etheraddr and change the last byte. */ + memcpy(eaddr, scb->oifp->if_hw_addr, ETHER_ADDR_LEN); + eaddr[5] = 0x0b; + } else + epair_generate_mac_byname(scb, eaddr); ether_ifattach(ifp, eaddr); if_clone_addif(ifc, ifp); @@ -719,7 +743,10 @@ epair_clone_create(struct if_clone *ifc, char *name, size_t len, /* Finish initialization of interface a. */ ifp = sca->ifp; epair_setup_ifp(sca, name, unit); - epair_generate_mac(sca, eaddr); + if (!use_ether_gen_addr) + epair_generate_mac(sca, eaddr); + else + epair_generate_mac_byname(sca, eaddr); ether_ifattach(ifp, eaddr); From nobody Tue Aug 5 16:29:11 2025 X-Original-To: dev-commits-src-main@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 4bxJlq3zBqz63QnQ; Tue, 05 Aug 2025 16:29: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxJlq3HNtz3WkR; Tue, 05 Aug 2025 16:29:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NCEA/dfXVVGt4yA2Pl+fGVZpIT7v4H7nWZakq0/lyjA=; b=RlK+l/tj3XeyQGxruJNDetwiYetOs6uH08X0siCTJevRgj/l2A2PJrmeToPK6WKa4cU2Ng foXrBDPSS5q3IGDMgvX/UYvBvJoaJuAUAm5aKcx1AuMAhFIoDcRuPUjkU43lPtmfDA4feI 7IxjuMM6HI33VF/KZMYhqLG996ZgNeBlZjLQlmvhT4VPCzxSTvhgLwL/I4XJE0hg/gp8fN 5+Lek6CVYGbLc7rWzgBy3UNJhAFWJMTP0ietL8pFIq0n6qNS1DnDGD4og7LH4DVEEj9cCc dqBP1qDtodCxK8L9FwvrGtGhejcFNu0ilIY+UJyvOOUipgZM94DkKcBNvFN0gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NCEA/dfXVVGt4yA2Pl+fGVZpIT7v4H7nWZakq0/lyjA=; b=DiKvaptZx4gQnG37oSvKJo8/R5QpyiFBhWrQUG4TSKchCCulEi+0JoX86Tsk6DPW4Rj8tQ rROTh3luDFwsfy8ivTnXUONUl+EVh9OMnyl50GtVrmrLXI1FihgnNTThNtZ9uKdaLmUIMd sXR0YWz7qjXLV/0wsRiiylnuiHq8qLVD2icBFWmCh4FqTvkoHtuJ25SvnDS+bM7tQaQ40r PqCqOhl26Y1hVdIBxQhMjsi1+qU3fAzxOIpx3YK6Jv/fbLbGayypVAEyqQXFCNg+CX1Lpb zVhVPjp6+fKh22mcjoTlOxHjnuPks0Dttib1pdU6VKo6vdhVcDeugO9Z/ndouQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754411351; a=rsa-sha256; cv=none; b=l1LDw9MhDj8mhePIgWFOdRKd/7a3OqrteTfY9NJV+F7+2boQ/8I0RuZSvW9SffdwqFtcVy rNPgd+X/7DLqZwED5XF7+oFQCzfwwaK8+ATGr7rOQh8XV917LdkrBXNJG2wsg0cg7eld6Z ks9aVi3mSDRMeilkdbhredEPX+cJtzejtscGYYGNuio8n7OgIwt2s+XXK6M+Y2bA5Aswge ddhYCsZVDod+ZnYrO7mBv3P/DjsyEa6HrfS8ljI4yG3++fZblZagVjSdlECSf5Vz4XmdG6 M4k7o3xqp94rZ4Z4CC1k8qbzMZu7VO1sJeqnI1p9IsvaTdWwf7u6okic4MnQyw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxJlq2GT3zjh7; Tue, 05 Aug 2025 16:29:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575GTB40035921; Tue, 5 Aug 2025 16:29:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575GTBYK035918; Tue, 5 Aug 2025 16:29:11 GMT (envelope-from git) Date: Tue, 5 Aug 2025 16:29:11 GMT Message-Id: <202508051629.575GTBYK035918@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andriy Gapon Subject: git: 6eb503116e88 - main - sdio: don't use CAM_PRIORITY_NONE for queued CCB-s List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: avg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6eb503116e88cc430c2c9f01f48aa979fb0a7e1b Auto-Submitted: auto-generated The branch main has been updated by avg: URL: https://cgit.FreeBSD.org/src/commit/?id=6eb503116e88cc430c2c9f01f48aa979fb0a7e1b commit 6eb503116e88cc430c2c9f01f48aa979fb0a7e1b Author: Andriy Gapon AuthorDate: 2025-08-05 14:40:21 +0000 Commit: Andriy Gapon CommitDate: 2025-08-05 16:27:12 +0000 sdio: don't use CAM_PRIORITY_NONE for queued CCB-s This is similar to changes done in other CAM drivers and fixes a panic because of a sanity check added in b4b166b8c46b. While here, remove unneeded ccb setup in sdiobdiscover. It's possible that ccb allocation in that function is not needed as well, but I wasn't sure about that. MFC after: 1 week --- sys/dev/sdio/sdiob.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sys/dev/sdio/sdiob.c b/sys/dev/sdio/sdiob.c index 4ec2058fa2e4..cb2cc0da6b77 100644 --- a/sys/dev/sdio/sdiob.c +++ b/sys/dev/sdio/sdiob.c @@ -150,7 +150,7 @@ sdiob_rw_direct_sc(struct sdiob_softc *sc, uint8_t fn, uint32_t addr, bool wr, sc->ccb = xpt_alloc_ccb(); else memset(sc->ccb, 0, sizeof(*sc->ccb)); - xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); + xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, ("%s(fn=%d, addr=%#02x, wr=%d, *val=%#02x)\n", __func__, fn, addr, wr, *val)); @@ -250,7 +250,7 @@ sdiob_rw_extended_cam(struct sdiob_softc *sc, uint8_t fn, uint32_t addr, sc->ccb = xpt_alloc_ccb(); else memset(sc->ccb, 0, sizeof(*sc->ccb)); - xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); + xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, ("%s(fn=%d addr=%#0x wr=%d b_count=%u blksz=%u buf=%p incr=%d)\n", __func__, fn, addr, wr, b_count, blksz, buffer, incaddr)); @@ -977,9 +977,6 @@ sdiobdiscover(void *context, int pending) if (sc->ccb == NULL) sc->ccb = xpt_alloc_ccb(); - else - memset(sc->ccb, 0, sizeof(*sc->ccb)); - xpt_setup_ccb(&sc->ccb->ccb_h, periph->path, CAM_PRIORITY_NONE); /* * Read CCCR and FBR of each function, get manufacturer and device IDs, From nobody Tue Aug 5 16:33:45 2025 X-Original-To: dev-commits-src-main@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 4bxJs5694Hz63R5q; Tue, 05 Aug 2025 16:33:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxJs55LTvz3XWR; Tue, 05 Aug 2025 16:33:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=leaN9e7Srqsjz3gDV9kD6TOLFg/zPnjoQZWaASMy38k=; b=OVtUmukXEjl5qVIJkhOgmlxpzwaE1gDbl5ymcis6E9KP320yPdIJ9yUKP88byxPxRT62/h q63IsnxmKP5Y0NIZoQnkrEHZKSUSrhkeUxbqHXCvjNE5owY+KjjayEiBjzvL1l2EEDwHb8 Bul8LeegmrL6KpfwlQ3jWroqU1408iZQQcKtv+r4PoQunwgbLtZ0WKK+9QCAc00ZWWmc9R Qf9qZ3VB4Wv23+P7q4w4Bqxh87M7TlbU3vjadMVs1L8P/Z2gcjSmPe15QJxLvTJZaV/Yl5 UurSLQP9k2DtbasHodW/EoAnFGl1PnQCnsmhC+DQaBRZzP9v5/ZACEYW33QX2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=leaN9e7Srqsjz3gDV9kD6TOLFg/zPnjoQZWaASMy38k=; b=BlAv0xNldCQ8hWjta/X+Diy1RV3AM/Nzl5BAiHFF+DJGTpv6qHMNwfKi6JBnSn+mjRfdWG MDMsXrC//BZ/Wzeq1GivXp9yRfv6AV73mu90hemJi4I2s4AXGdR0fk+hgnR7WjGfaIBJfU 8WvNCEWfrJ+L+yrSbsNXCyrVH/YS6paE9+akITIZFS4DsHlSMJ1O3JYuXcs7FEEf0OBHrS Z0KyxoUXyljmpec/AkZKfmmfw74/+Z7575I5g5HlkDM2fl/BtMR2e64PXoQ8XYlAiNamam bigakVZk52T08aSEAgCufj3tOSkRowIwSjFCAXZByEsRk5KI4Sq3pJbfnr+xwQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754411625; a=rsa-sha256; cv=none; b=M7D66O1hoLW43iisN5uiiSzvXUCS/G+jHe/6rFhRdwRl0/SugG6w+YHIYU8/1qQTza/j4L jwVqLgYndMOJSH1SNLr96j03asaZzhPH+/TjJQN5KsiEMLiL3MwfRbhbXllzbxZhkKhT71 +NGguvoqS3sWUU8uuaZSxLeRrVsTQ1bgTiWIeqZsZn/8qBdUlZhJKhwbQZEq9jep0b7fmX fGkW6QCpPWWb00IgI/aEEbPS1lVmL5+BTP/3IPJKOn1+SWfMpVEzf2kA0SZdxdsaVDw0GB Ej/OL+RGti0VkjV0Ot8Hb650G228m7/cuXYPocRvJP9jr5OJMrSqN3VPAzUNVw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxJs54vJWzk2G; Tue, 05 Aug 2025 16:33:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575GXjnF053169; Tue, 5 Aug 2025 16:33:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575GXjVf053166; Tue, 5 Aug 2025 16:33:45 GMT (envelope-from git) Date: Tue, 5 Aug 2025 16:33:45 GMT Message-Id: <202508051633.575GXjVf053166@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 383e7290c0b5 - main - krb5: Add missing gssapi header List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 383e7290c0b5f25c5377cfce07debef7d59f76a3 Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=383e7290c0b5f25c5377cfce07debef7d59f76a3 commit 383e7290c0b5f25c5377cfce07debef7d59f76a3 Author: Cy Schubert AuthorDate: 2025-07-31 14:49:02 +0000 Commit: Cy Schubert CommitDate: 2025-08-05 16:32:42 +0000 krb5: Add missing gssapi header Fixes: ee3960cba106 --- krb5/lib/gssapi/mechglue/Makefile.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/krb5/lib/gssapi/mechglue/Makefile.inc b/krb5/lib/gssapi/mechglue/Makefile.inc index bb0d436e08d1..c54cdf37b55b 100644 --- a/krb5/lib/gssapi/mechglue/Makefile.inc +++ b/krb5/lib/gssapi/mechglue/Makefile.inc @@ -72,3 +72,5 @@ SRCS+= g_accept_sec_context.c \ g_wrap_aead.c \ g_wrap_iov.c \ gssd_pname_to_uid.c + +GSSAPI_INCS+= mechglue.h From nobody Tue Aug 5 16:33:46 2025 X-Original-To: dev-commits-src-main@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 4bxJs711JCz63RH6; Tue, 05 Aug 2025 16:33: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxJs66W2nz3XqT; Tue, 05 Aug 2025 16:33:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=S1HkhG9hcgESKy9Im8gev/rGF4r8oYo8ksGFpJlPYWw=; b=X4H8zBy5xpteBAiREmqFynAPppH3oX2Uy/EtAu0eq26FORM4FB2Z0j0eUZRKoIzpoLWhSv jsMMLgdqQoRxshIAk0EEnfWQlvSR0RtDPxG7avHC7UCGZBXlCRJA9vFzoaDNuGw7/9JuDu orIskn7f1rW6eMAeo0sQ2Amf+XN+3jI+RMiKqYWrSxYEJVQuqkMzHg2KodZLc7MnA9Y0w6 kHxOySf4vjbSZl0PP/+ZEzHerks+VHe4aR3N5kGj2Lsyuo73sJJMQBPoD6cMJgjVr1W0Jr hDMy5W74wVYxwRRU/1wL7gw+4twqwlBPYRWzscRwzp2xZiS3fCDAYInRimoOkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=S1HkhG9hcgESKy9Im8gev/rGF4r8oYo8ksGFpJlPYWw=; b=apZLKTcSeH+ihPOFpfR25X+Dk5LveX0EL3HGxPM2kM02VQakbjf9ZTdKaSjNyFrwFSx5HE KkdVC/AfASWmldDgFo7rybgjW9Ysb8XyhOBpkXZWZClHJnNEX3O6gNTRf2z31QW8m1QomB 6jwPBuxkDx5u+fOB1LMG7V+48vmOecDIrkkTJt8Co/zCLOK3WyzD5XycghB1vduGpQGzXA M7kpUao+yHGQUbpGAqh/boeR85I5zmuwLVQqR/P1fG0UItdBJpDzjrpy8Ma6xCWHg9dFRD s311PF46Z+1ksQXQfXq3At097SUXPxYJ8BxIKL+6WwaTEnwxLRFHdeJfZ7Dcpw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754411626; a=rsa-sha256; cv=none; b=tTLugBYm3/e7fdVxE+h9cWFySUrQoaPHa3c3hurypCGvGEIDfX5kzd7N5ZZZMMFrj4mGtA 1sh0TpieR40YRY8OcYo7cN/ZcxYokF4mh9SPjyPY/tLujS6Z8oSn2oqebVuqx8h3CBDbnK dxKEd4ax/jUWUuNZE3LBlWEd8+V8qlRK6pQSmgrDTa5lJnJHs1FZ+HDn3Kovpc4JP+KlHh 1TQSzN8GhUb6gv6YdPV+KQjL1oDHgVR5U3x5bEM/UtxMOh6S0ycprnyww/0TwaiTW/CFf7 5viVAklJhDhgF1GXtYI567GTGI+Q0ZZ5OdXDAtk0ICJTKQSHjBfkr7cN95q9wg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxJs65w6qzkDK; Tue, 05 Aug 2025 16:33:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575GXkCS053203; Tue, 5 Aug 2025 16:33:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575GXktg053200; Tue, 5 Aug 2025 16:33:46 GMT (envelope-from git) Date: Tue, 5 Aug 2025 16:33:46 GMT Message-Id: <202508051633.575GXktg053200@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 3a99a0961d44 - main - krb5: Remove Heimdal library when MK_MITKRB5 is enabled List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3a99a0961d44ed661a19d8d746f6e3ea5d97e1ee Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=3a99a0961d44ed661a19d8d746f6e3ea5d97e1ee commit 3a99a0961d44ed661a19d8d746f6e3ea5d97e1ee Author: Cy Schubert AuthorDate: 2025-08-01 06:01:43 +0000 Commit: Cy Schubert CommitDate: 2025-08-05 16:32:43 +0000 krb5: Remove Heimdal library when MK_MITKRB5 is enabled Fixes: af2593e3212c --- tools/build/mk/OptionalObsoleteFiles.inc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 580be4362a18..58ca2a49b801 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -2837,6 +2837,9 @@ OLD_FILES+=usr/lib/libgssapi_krb5.a OLD_FILES+=usr/lib/libgssapi_krb5.so OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 OLD_FILES+=usr/lib/libgssapi_krb5_p.a +OLD_FILES+=usr/lib/libgssapi_mech.a +OLD_FILES+=usr/lib/libgssapi_mech.so +OLD_LIBS+=usr/lib/libgssapi_mech.so.10 OLD_FILES+=usr/lib/libgssapi_ntlm.a OLD_FILES+=usr/lib/libgssapi_ntlm.so OLD_LIBS+=usr/lib/libgssapi_ntlm.so.10 @@ -4919,6 +4922,9 @@ OLD_LIBS+=usr/lib/libcom_err.so.5 OLD_FILES+=usr/lib/libcom_err_p.a OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 OLD_FILES+=usr/lib/libgssapi_krb5_p.a +OLD_FILES+=usr/lib/libgssapi_mech.a +OLD_FILES+=usr/lib/libgssapi_mech.so +OLD_LIBS+=usr/lib/libgssapi_mech.so.10 OLD_FILES+=usr/lib/libgssapi_ntlm.a OLD_FILES+=usr/lib/libgssapi_ntlm.so OLD_LIBS+=usr/lib/libgssapi_ntlm.so.10 From nobody Tue Aug 5 16:33:47 2025 X-Original-To: dev-commits-src-main@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 4bxJs849Vqz63R8f; Tue, 05 Aug 2025 16:33: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxJs81Vqsz3Xm8; Tue, 05 Aug 2025 16:33:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=T+uIbuzIF99x41gj7+6qnzTpJ0TxfUH1yVwd3S9TirI=; b=k0g2QtTJmDl4dgmGWF1xJpWlWhSUWW/yXTJEjs3lyNNKpjeF2buoIN3oGnqfFJsAUtmDLr TwS0Mklo/W+HGdvv9SCvqNrndoCfy2Q/dP2nqMqwQDc2TgT/diYij6xzZz3SLLi5Uqjs3e fvVKk3pvseWwFDY4Br3ySYFIVRanVQkTfyWBRBp/eF9rO3R/JWNf2WTzXv0XHStEgZJzcr Vr2AiA4cpmGDO1CYGgxsdVHJFnZXHP24a/uyl+aJ3dUgg/aVu+U+M/VqkdqP96SfDHLA/D nkPff8nIUZ0DNTr9eMyIoFNS9eHAhy5Ytne5OywWvSoptUbJxWRGeDM91xg22w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754411628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=T+uIbuzIF99x41gj7+6qnzTpJ0TxfUH1yVwd3S9TirI=; b=XTbBlRJU9rYhb4zDbVRneUKQwGTNvAABs2WUJxl2JOko9WY5iHuvtdJrFkCt0+P72VfyxM zbSYaUasmlcyI58TgoIU9iqDu5uATl9sVVERMwCrqmb7Xb+/tMWFrXLujeXmL6OJgMOhdA 0SdZriEemah5QNUxjZACA4TP70gDvHRtH9D/ApdVd5SdZqBTM3d+OvO9efBnxEeSru++8L n3i8IcLj0Ef1TJczwl0DMttsUZCTJf+y2tQw1IqrJx3uZPIIZ+mf2TqJQ5i1bnUn5y446b okl8MzNjc7/w+lhkgs855aAJp5NZ3uM/wpqB4F/9/3mLLaqhNekzNrqEIuUOeg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754411628; a=rsa-sha256; cv=none; b=VOU9VZg7A+aJ8YpFH4YilVEi5vyhX6qC0V99x8e2/yt8uGIxsd+BJMb7UEVXRf9qMH61qO 8YRz5Z3kPRzaKC7Dacd8yjx53BNBK8wDBtnU8HOPWKhOz72GCcdSMLjX6L5ZrXWpnREf2w UL56SIzSTXrWm5Kc99aDnBRL5FNLYZSRu6H/pXuqcp2fnMlk/bsKCbU2JHccUbxp1ocRSq BOcHAbb/V3Ljy+tfPhGF7DMbazDrfKFSZPTAbdOkoChEwBQuNP3P/rbxecVQT/CVSPxrA3 cTAaGAWbbmF7Q8Gba8KKXSUZkV5f1ozBvGTqirWVs5HtlWtc3A1JxLbJ+VJi+A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxJs76yNgzkDL; Tue, 05 Aug 2025 16:33:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575GXlXe053239; Tue, 5 Aug 2025 16:33:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575GXlw9053236; Tue, 5 Aug 2025 16:33:47 GMT (envelope-from git) Date: Tue, 5 Aug 2025 16:33:47 GMT Message-Id: <202508051633.575GXlw9053236@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 9a726ef24134 - main - krb5: Move compile_et to /usr/bin as it was with Heimdal List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9a726ef241344d5a67bb0c465a43fcf79f94a33f Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=9a726ef241344d5a67bb0c465a43fcf79f94a33f commit 9a726ef241344d5a67bb0c465a43fcf79f94a33f Author: Cy Schubert AuthorDate: 2025-08-01 06:21:42 +0000 Commit: Cy Schubert CommitDate: 2025-08-05 16:33:03 +0000 krb5: Move compile_et to /usr/bin as it was with Heimdal Fixes: ee3960cba106 --- ObsoleteFiles.inc | 3 +++ krb5/util/compile_et/Makefile | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 0a4a7a073dcf..6308e51331b0 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -59,6 +59,9 @@ OLD_FILES+=lib/libopencsd.so.0 OLD_FILES+=usr/lib/libopencsd.a OLD_FILES+=usr/lib/libopencsd.so +# 20250801: Move compile_et to /usr/sbin +OLD_FILES+=usr/share/et/compile_et + # 20250728: zfsboot (MBR) removed OLD_FILES+=boot/zfsboot OLD_FILES+=usr/share/man/man8/zfsboot.8.gz diff --git a/krb5/util/compile_et/Makefile b/krb5/util/compile_et/Makefile index 03446f2d7d1c..3d48b39cab27 100644 --- a/krb5/util/compile_et/Makefile +++ b/krb5/util/compile_et/Makefile @@ -19,10 +19,6 @@ BINDIR?= /usr/bin MAN= compile_et.1 CLEANFILES= compile_et -.if !defined(BOOTSTRAPPING) -SCRIPTSDIR= ${SHAREDIR}/et -.endif - compile_et: compile_et.sh sh ${SRC_ETDIR}/config_script ${SRC_ETDIR}/compile_et.sh \ "${KRB5_ETDIR}" /usr/bin/awk /usr/bin/sed > ${.TARGET} From nobody Tue Aug 5 17:21:40 2025 X-Original-To: dev-commits-src-main@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 4bxKwP4CBFz63Ty6; Tue, 05 Aug 2025 17:21:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxKwN4PXxz3dm0; Tue, 05 Aug 2025 17:21:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754414501; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=47ZpuXgEbpPrQz8DoJESuhNcIDIpGbeKEi67pfYlkFE=; b=EPwLz111oAXavgSa9DKFQebIxuoncc0kIc8htXxYCM9Sd2JzzPVIJvwH8sTpwkqmbvPkun lqBdupWGhrJP+YKUzhZ2cUWonuqF0bdoNSJn0wTZ+tbwb8r5BwXNv4kCY54EErVXhUP6su F7/+02koPkZITzcCvbUeWYfWkiSIkI4Zj9ymnm86nBm3ik8cQ+BiVmjob86oTSxIfUFLBE luv6npF7P2GXCPbXGlbY+3MympFYiI6zY6fyGrGn4UmwmBWE+j7BMzSoitGb2DUby2w2C1 t6O0UXtYTNqrbpwQWY78eyqQemvCXFueDU7mRkGguCm8nefCsp/qNvcCXYCXXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754414501; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=47ZpuXgEbpPrQz8DoJESuhNcIDIpGbeKEi67pfYlkFE=; b=t29k0EBeguP90HczAOolV1n/Eeou4CdPXZNCszIABsxLuynQg6wkPSzqKwzw3ZZtgZIDvF h8yJt6cQ47bkGiJwl4KSpLt0ZoZgRpN8/SL9/80LVLCxZCrXmPTrM7OBLBk1hcGtaGy5Rn 7Y0aTPq0VuhsjCJh/Wgr9Rbr7dhckUz9VP6Yf7erzzHQ1SRtTLuMpp43bkB9DKQLW7oShk f3N6iABuEOxjwGnCxinbaF+cfq7sfsGGM9+SZCY6vBtXuylZ3dFZyvE3yDX7cwH2pFUJ4b 2hUHSZ8Ki1vuwmj5MVml/y/yreV0Xp51sSDTTLDKfdj6/MDEHLGEDeg5J8rtZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754414501; a=rsa-sha256; cv=none; b=ezNwm2rvdm0JMo0zkeEIdGXMrgl8M5en8h5gCmlQqijmLdDwcoeanoVvBnl8ailaUi2/tL 0WRd6UDo83scvFS1f6vWZ+hxQVE2IxRENoMrMuE6TyIolnvlf0DOUCej4plv1XQMXT154T esc7GyFX13yLfzu/OCCesOat4AdY0o++74GtvIJjdEndzr1n6dheLcrCBfguDuJOpV71Gx Zuclrk1SXYzaxn1jatpPB4QfYycbMhyQPnYIyYSmvEnq2xQem3+UcIyqMsZNMwIPVnSQoc rPn/qhnDxBnBldTCuwiZntzw2rPE9t9q6YSRJ4XV31u9GmZiyID2MQjgMEXyFg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxKwN3qYXzlJT; Tue, 05 Aug 2025 17:21:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575HLeGQ043692; Tue, 5 Aug 2025 17:21:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575HLeQE043689; Tue, 5 Aug 2025 17:21:40 GMT (envelope-from git) Date: Tue, 5 Aug 2025 17:21:40 GMT Message-Id: <202508051721.575HLeQE043689@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: d1bcdbd2470f - main - libutil++: Add package definition List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d1bcdbd2470fe49515911f8da0abf50545adaf24 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=d1bcdbd2470fe49515911f8da0abf50545adaf24 commit d1bcdbd2470fe49515911f8da0abf50545adaf24 Author: Lexi Winter AuthorDate: 2025-08-05 17:14:09 +0000 Commit: Lexi Winter CommitDate: 2025-08-05 17:14:09 +0000 libutil++: Add package definition Fixes: b3127a2dc25a --- release/packages/ucl/libutil++-all.ucl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/release/packages/ucl/libutil++-all.ucl b/release/packages/ucl/libutil++-all.ucl new file mode 100644 index 000000000000..dfd77215dbc5 --- /dev/null +++ b/release/packages/ucl/libutil++-all.ucl @@ -0,0 +1,4 @@ +comment = "C++ utility library" +desc = < To: John Baldwin Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: b3127a2dc25a - main - libutil++: New library containing C++ utility classes for use in base Message-ID: Mail-Followup-To: John Baldwin , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202508041946.574JkZoB098666@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="IpUpAabaBsZZJqLl" Content-Disposition: inline In-Reply-To: <202508041946.574JkZoB098666@gitrepo.freebsd.org> --IpUpAabaBsZZJqLl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline John Baldwin: > +++ b/lib/libutil++/Makefile > @@ -0,0 +1,16 @@ > +PACKAGE= lib${LIB} this broke the pkgbase build: when you add a new package, you must also add its package definition in release/packages/ucl/-all.ucl. (fixed in d1bcdbd2470fe49515911f8da0abf50545adaf24.) --IpUpAabaBsZZJqLl Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQSyjTg96lp3RifySyn1nT63mIK/YAUCaJI+YwAKCRD1nT63mIK/ YN48AP9+PdQcNQymLzWZezIx3hVP1bpD5XZKrXAOtmQzwKIRogEAhFTFmROvMaeR qgRu/5Y1oPaRDeNu3Wn1V+N1aMSK/wQ= =oZM6 -----END PGP SIGNATURE----- --IpUpAabaBsZZJqLl-- From nobody Tue Aug 5 19:26:01 2025 X-Original-To: dev-commits-src-main@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 4bxNgs74V7z63cWf; Tue, 05 Aug 2025 19:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxNgs6Gk1z3qXP; Tue, 05 Aug 2025 19:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2RAw1jzZE7TvI1zII+FjmQQxcLOWGvYkP5BQ9B41bfI=; b=e3D9q8PACAUCLGD0EMiU7KVJw6qox7kkKUW97xCifuNJpZhdzTOkMp+7F8C1wsc9pDhcxM UUPMqiN9rVfA2UR7Uiz60GcrZh2dDH1mwumi6PR1ZUurBTNDHjwCsOgIJpMt3QCgt38EXw sPV8RQWKF0iRtkvWDzRqZ137b7UbcBj42v0kY83JcmnWa4VWifc+ZPbLPr++u9N/iXZOar 6ldIDEpd4+ehOTNcMAux9apfsNDza7eA2Mb9XrSR/cnqIXVwcA9vUOUXJfUVKZsvS0RTSJ VEpVx86Pi1+IVOYYQMJIHZ93t6di+0znclazOebU02uxVssFPSaojbkTvRvs9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2RAw1jzZE7TvI1zII+FjmQQxcLOWGvYkP5BQ9B41bfI=; b=BtYxUblb1eRDZ0E8ZuV282wqfImxZkCS/F/8EBEMLhM9l1P3+3EIqI50H26qXlg3tz+UOV OVkWFWxwsNO1EPOUEKxNu/ym1SA63GFvk0JVwecmRZA6zl5CvF5UffnRCu8T9GWNy3q74B mjoz3JN/r+DPRv5wLJG+Cq81n2v+AqSkKNA+TmI2/p7h3GqzDMnMH7QrzasGv2/W9mny0F gJIUOK8rDfZhfdrSdFplzSbNGocCR4mxTQUPIibCR6c2N5hWYbUYdhq+7+r7qgHf6pAIRT d7rXGlFVWBezfxbi7GrVL+Yil+cZGM/CWCwB8qAjQEhHT28MYtH1s3ssxZxVsQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754421961; a=rsa-sha256; cv=none; b=OckBXyQKopVZ1G/mkumH8CkD7cdM7YUvGKY/GjIHZKmu0TdSXFwPVX9hUF7RtjU78w+3qN XadLGH0eRePdabwvpDp1mrd4fp3SFQ5JO1MnQAhC09P41AeYAmE3exPo1rc6E/PfzKAL7T YWd0x0IG8sE0jRuk5GwFj6HWDowk4g603zhHUihE68LWwjwt8/L/L2asNE/ft4LafGjtaj qZ/bnjZHzFX4blUGIjFgQDDD3fax+J5mpEE/O8bbsGrAoVgiuk0+TECBQqdOidRmvgIOvJ /wXdeCPVPc/WEI/Tmr3c8DHtod4Phg0QTo6QwD7VdM/dE1hMLKcE7AnxRcx6kw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxNgs57mrzpPK; Tue, 05 Aug 2025 19:26:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575JQ1Vi074566; Tue, 5 Aug 2025 19:26:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575JQ1Zf074563; Tue, 5 Aug 2025 19:26:01 GMT (envelope-from git) Date: Tue, 5 Aug 2025 19:26:01 GMT Message-Id: <202508051926.575JQ1Zf074563@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: d43ac3b76ef7 - main - bridge: Make 802.1ad (Q-in-Q) configurable List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d43ac3b76ef7897c72dcc6153cb1c33363b7b024 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=d43ac3b76ef7897c72dcc6153cb1c33363b7b024 commit d43ac3b76ef7897c72dcc6153cb1c33363b7b024 Author: Lexi Winter AuthorDate: 2025-08-05 17:43:31 +0000 Commit: Lexi Winter CommitDate: 2025-08-05 18:34:47 +0000 bridge: Make 802.1ad (Q-in-Q) configurable Allowing tag stacking by default can permit VLAN-hopping attacks in certain configurations. To mitigate this, disallow sending Q-in-Q frames by default unless the new "qinq" option is enabled on the interface. The bridge flag "defqinq" can be used to restore the previous behaviour of allowing Q-in-Q on all interfaces. The bridge.4 changes from the differential are omitted here and will be landed via D51185. Reviewed by: kevans, pauamma_gundo.com (manpages) Differential Revision: https://reviews.freebsd.org/D51227 --- sbin/ifconfig/ifbridge.c | 18 ++++++++++++++++++ sbin/ifconfig/ifconfig.8 | 20 +++++++++++++++++++- sys/net/if_bridge.c | 24 ++++++++++++++++++++++++ sys/net/if_bridgevar.h | 8 ++++---- tests/sys/net/if_bridge_test.sh | 36 +++++++++++++++++++++++------------- 5 files changed, 88 insertions(+), 18 deletions(-) diff --git a/sbin/ifconfig/ifbridge.c b/sbin/ifconfig/ifbridge.c index 335ed9bf513f..3566acdcf54c 100644 --- a/sbin/ifconfig/ifbridge.c +++ b/sbin/ifconfig/ifbridge.c @@ -883,6 +883,18 @@ unsetbridge_defuntagged(if_ctx *ctx, const char *val __unused, int dummy __unuse err(1, "BRDGSDEFPVID"); } +static void +setbridge_qinq(if_ctx *ctx, const char *val, int dummy __unused) +{ + do_bridgeflag(ctx, val, IFBIF_QINQ, 1); +} + +static void +unsetbridge_qinq(if_ctx *ctx, const char *val, int dummy __unused) +{ + do_bridgeflag(ctx, val, IFBIF_QINQ, 0); +} + static struct cmd bridge_cmds[] = { DEF_CMD_ARG("addm", setbridge_add), DEF_CMD_ARG("deletem", setbridge_delete), @@ -933,6 +945,12 @@ static struct cmd bridge_cmds[] = { unsetbridge_flags), DEF_CMD_ARG("defuntagged", setbridge_defuntagged), DEF_CMD("-defuntagged", 0, unsetbridge_defuntagged), + DEF_CMD("defqinq", (int32_t)IFBRF_DEFQINQ, + setbridge_flags), + DEF_CMD("-defqinq", (int32_t)IFBRF_DEFQINQ, + unsetbridge_flags), + DEF_CMD_ARG("qinq", setbridge_qinq), + DEF_CMD_ARG("-qinq", unsetbridge_qinq), }; static struct afswtch af_bridge = { diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index 06ec62197fba..69a81f72421f 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 30, 2025 +.Dd August 5, 2025 .Dt IFCONFIG 8 .Os .Sh NAME @@ -2747,6 +2747,24 @@ Remove the provided list of VLAN IDs from the interface's VLAN access list. The list should be formatted as described for .Cm tagged . +.It Cm qinq Ar interface +Allow this interface to send 802.1ad +.Dq Q-in-Q +frames. +.It Cm -qinq Ar interface +Do not allow this interface to send 802.1ad +.Dq Q-in-Q +frames. +This is the default behavior. +.It Cm defqinq +Enable the +.Cm qinq +option by default on newly added members. +.It Cm -defqinq +Do not enable the +.Cm qinq +option by default on newly added members. +This is the default behavior. .El .Ss Link Aggregation and Link Failover Parameters The following parameters are specific to lagg interfaces: diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 46e54339a171..26ea4400e67d 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -1496,6 +1496,8 @@ bridge_ioctl_add(struct bridge_softc *sc, void *arg) bif->bif_savedcaps = ifs->if_capenable; if (sc->sc_flags & IFBRF_VLANFILTER) bif->bif_pvid = sc->sc_defpvid; + if (sc->sc_flags & IFBRF_DEFQINQ) + bif->bif_flags |= IFBIF_QINQ; /* * Assign the interface's MAC address to the bridge if it's the first @@ -2828,6 +2830,16 @@ bridge_input(struct ifnet *ifp, struct mbuf *m) NET_EPOCH_ASSERT(); + /* We need the Ethernet header later, so make sure we have it now. */ + if (m->m_len < ETHER_HDR_LEN) { + m = m_pullup(m, ETHER_HDR_LEN); + if (m == NULL) { + if_inc_counter(sc->sc_ifp, IFCOUNTER_IERRORS, 1); + m_freem(m); + return (NULL); + } + } + eh = mtod(m, struct ether_header *); vlan = VLANTAGOF(m); @@ -3250,6 +3262,18 @@ bridge_vfilter_in(const struct bridge_iflist *sbif, struct mbuf *m) if ((sbif->bif_sc->sc_flags & IFBRF_VLANFILTER) == 0) return (true); + /* If Q-in-Q is disabled, check for stacked tags. */ + if ((sbif->bif_flags & IFBIF_QINQ) == 0) { + struct ether_header *eh; + uint16_t proto; + + eh = mtod(m, struct ether_header *); + proto = ntohs(eh->ether_type); + + if (proto == ETHERTYPE_VLAN || proto == ETHERTYPE_QINQ) + return (false); + } + if (vlan == DOT1Q_VID_NULL) { /* * The frame doesn't have a tag. If the interface does not diff --git a/sys/net/if_bridgevar.h b/sys/net/if_bridgevar.h index 6718c5ebcc34..15194fecff7c 100644 --- a/sys/net/if_bridgevar.h +++ b/sys/net/if_bridgevar.h @@ -136,8 +136,9 @@ typedef uint32_t ifbr_flags_t; #define IFBRF_VLANFILTER (1U<<0) /* VLAN filtering enabled */ +#define IFBRF_DEFQINQ (1U<<1) /* 802.1ad Q-in-Q allowed by default */ -#define IFBRFBITS "\020\01VLANFILTER" +#define IFBRFBITS "\020\01VLANFILTER\02DEFQINQ" /* * Generic bridge control request. @@ -172,12 +173,11 @@ struct ifbreq { #define IFBIF_BSTP_ADMEDGE 0x0200 /* member stp admin edge enabled */ #define IFBIF_BSTP_ADMCOST 0x0400 /* member stp admin path cost */ #define IFBIF_PRIVATE 0x0800 /* if is a private segment */ -/* was IFBIF_VLANFILTER 0x1000 */ -#define IFBIF_QINQ 0x2000 /* if allows 802.1ad Q-in-Q */ +#define IFBIF_QINQ 0x1000 /* if allows 802.1ad Q-in-Q */ #define IFBIFBITS "\020\001LEARNING\002DISCOVER\003STP\004SPAN" \ "\005STICKY\014PRIVATE\006EDGE\007AUTOEDGE\010PTP" \ - "\011AUTOPTP" + "\011AUTOPTP\015QINQ" #define IFBIFMASK ~(IFBIF_BSTP_EDGE|IFBIF_BSTP_AUTOEDGE|IFBIF_BSTP_PTP| \ IFBIF_BSTP_AUTOPTP|IFBIF_BSTP_ADMEDGE| \ IFBIF_BSTP_ADMCOST) /* not saved */ diff --git a/tests/sys/net/if_bridge_test.sh b/tests/sys/net/if_bridge_test.sh index 534144f46632..8a6c730014ce 100755 --- a/tests/sys/net/if_bridge_test.sh +++ b/tests/sys/net/if_bridge_test.sh @@ -1268,21 +1268,25 @@ vlan_qinq_body() # Create a QinQ trunk between the two jails. The outer (provider) tag # is 5, and the inner tag is 10. - jexec one ifconfig ${epone}b up - jexec one ifconfig ${epone}b.5 create vlanproto 802.1ad up - jexec one ifconfig ${epone}b.5.10 create inet 192.0.2.1/24 up + atf_check -s exit:0 jexec one ifconfig ${epone}b up + atf_check -s exit:0 jexec one \ + ifconfig ${epone}b.5 create vlanproto 802.1ad up + atf_check -s exit:0 jexec one \ + ifconfig ${epone}b.5.10 create inet 192.0.2.1/24 up - jexec two ifconfig ${eptwo}b up - jexec two ifconfig ${eptwo}b.5 create vlanproto 802.1ad up - jexec two ifconfig ${eptwo}b.5.10 create inet 192.0.2.2/24 up + atf_check -s exit:0 jexec two ifconfig ${eptwo}b up + atf_check -s exit:0 jexec two ifconfig \ + ${eptwo}b.5 create vlanproto 802.1ad up + atf_check -s exit:0 jexec two ifconfig \ + ${eptwo}b.5.10 create inet 192.0.2.2/24 up bridge=$(vnet_mkbridge) - ifconfig ${bridge} up - ifconfig ${epone}a up - ifconfig ${eptwo}a up - ifconfig ${bridge} addm ${epone}a vlanfilter ${epone}a - ifconfig ${bridge} addm ${eptwo}a vlanfilter ${eptwo}a + atf_check -s exit:0 ifconfig ${bridge} vlanfilter defqinq up + atf_check -s exit:0 ifconfig ${epone}a up + atf_check -s exit:0 ifconfig ${eptwo}a up + atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a + atf_check -s exit:0 ifconfig ${bridge} addm ${eptwo}a # Right now there are no VLANs on the access list, so everything # should be blocked. @@ -1290,10 +1294,16 @@ vlan_qinq_body() atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 # Add the provider tag to the access list; now traffic should be passed. - ifconfig ${bridge} +tagged ${epone}a 5 - ifconfig ${bridge} +tagged ${eptwo}a 5 + atf_check -s exit:0 ifconfig ${bridge} +tagged ${epone}a 5 + atf_check -s exit:0 ifconfig ${bridge} +tagged ${eptwo}a 5 atf_check -s exit:0 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:0 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 + + # Remove the qinq flag from one of the interfaces; traffic should + # be blocked again. + atf_check -s exit:0 ifconfig ${bridge} -qinq ${epone}a + atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 + atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 } vlan_qinq_cleanup() From nobody Tue Aug 5 19:26:02 2025 X-Original-To: dev-commits-src-main@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 4bxNgt70f9z63cBl; Tue, 05 Aug 2025 19:26:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxNgt5zq5z3qQl; Tue, 05 Aug 2025 19:26:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421962; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3c07bxxsj3IWtkziecwKTLCjPayxVeMNhXHr72uj9qs=; b=KrZj7Nf98wcG10PQKTC3875iYbmiAcCY7npzYeWcSEpH4Ge7kgVcDMVqqYkvLKx65PAqZL 1//1Jhx95537g7umNM29FIdWHsyoOuJKXb3ib84V33QxpkvQfKJzpq6JShI2ygaWBGSFGu n0Y/6gcWt6fc0833wpqPCcZqVxuj1V1KU6rUO/VFoWa/lqvtBmNKoVHDaJxcS1N4OnfoQi 8cgvVzcV/QMGfVPPKc0rnQIGv88QGsmvm+cOJ09DXJCoJ1GUv+NypKU0JqOb+oPfXpu0mA U/6s9VwaryYgfnneQJXo4eMBSLkDqlILl4pE4wzoJAKjYhhHGcoU/NVHZRFhOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421962; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3c07bxxsj3IWtkziecwKTLCjPayxVeMNhXHr72uj9qs=; b=IOTt+Rm0mugZz0kfBUNhfRWGkQgf7LqHJL2/66/XiuTJI1Bd3OHp8jOkSEadfsBWYV/Fy0 eppTpQvVNuf56rQKUsyyDUJYSpkWe2s8MxBLaxLmUmftkATKZYvrSgLr9Pa3+T96KgkJhb B9dJcjY9ui9lu9/ScKpeo4mltAY5Yv/8mL7/Pn+lx+OJjRha6yM2M3pjkdQveIIuf5qOAH HbIq7GeYUS3SQgIJmMGLJghslk+f5ucKZohIfkYN01XHY5QNkl68MFsid3ymBO9i3rxPh+ 0wW7sM0jhw2r1y2qK05rE0+Yggy8j9gUFKrOlteacY3XkzTjZTxA/cyDAtKNQQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754421962; a=rsa-sha256; cv=none; b=Dd/1QE99DC7Qrv01ryYMImUESvYXm7vSddyXKhCXziDsqShpHPBhRkGF/KqLpWHeKfgHff Kgj/H/sh2xZXyJBnaCYiHtUBuUYihsNerwSjC2dTlvs8ikKZeQJ64PFFlEqELs8xMeC7oI mzvcc73QjWAaC6lmrG3kVWQrABaolobh4oVEf5Ao2ab7WeVvSJx038+37336FikXu9stuk jyM63/rsWLnkAr+OKU1Ska7GyfZzqCzrAdYfAwKvUQUnVBVZY5sDi6I1X8pQPuXq5YjnUc yanVHYHntWQVtiN0btOyaHS3QMHOiyhDdh+wPCUyQ7XiUhdXFP7+0nXrfnDHxw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxNgt5WtWzp0h; Tue, 05 Aug 2025 19:26:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575JQ2LK074600; Tue, 5 Aug 2025 19:26:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575JQ2fJ074597; Tue, 5 Aug 2025 19:26:02 GMT (envelope-from git) Date: Tue, 5 Aug 2025 19:26:02 GMT Message-Id: <202508051926.575JQ2fJ074597@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: f94c370de6e7 - main - bridge: Allow VLAN protocol to be configured List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f94c370de6e7d32cd3b635893870438b744214e7 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=f94c370de6e7d32cd3b635893870438b744214e7 commit f94c370de6e7d32cd3b635893870438b744214e7 Author: Lexi Winter AuthorDate: 2025-08-05 17:51:11 +0000 Commit: Lexi Winter CommitDate: 2025-08-05 18:35:30 +0000 bridge: Allow VLAN protocol to be configured Add a new per-interface option "ifvlanproto", which can be either "802.1q" (the default) or "802.1ad". This controls what type of tag we attach to outgoing packets on the interface. Reviewed by: pauamma_gundo.com (manpages) Differential Revision: https://reviews.freebsd.org/D51231 --- sbin/ifconfig/ifbridge.c | 38 ++++++++++++++++++++++++++++++++++++++ sbin/ifconfig/ifconfig.8 | 11 +++++++++++ sys/net/if_bridge.c | 36 ++++++++++++++++++++++++++++++++---- sys/net/if_bridgevar.h | 3 +++ 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/sbin/ifconfig/ifbridge.c b/sbin/ifconfig/ifbridge.c index 3566acdcf54c..d02d92d10b59 100644 --- a/sbin/ifconfig/ifbridge.c +++ b/sbin/ifconfig/ifbridge.c @@ -190,6 +190,21 @@ print_vlans(ifbvlan_set_t *vlans) } } +static char const * +vlan_proto_name(uint16_t proto) +{ + switch (proto) { + case 0: + return "none"; + case ETHERTYPE_VLAN: + return "802.1q"; + case ETHERTYPE_QINQ: + return "802.1ad"; + default: + return "unknown"; + } +} + static void bridge_status(if_ctx *ctx) { @@ -261,6 +276,9 @@ bridge_status(if_ctx *ctx) else printf(" ", state); } + if (member->ifbr_vlanproto != 0) + printf(" vlan protocol %s", + vlan_proto_name(member->ifbr_vlanproto)); if (member->ifbr_pvid != 0) printf(" untagged %u", (unsigned)member->ifbr_pvid); print_vlans(&bridge->member_vlans[i]); @@ -895,6 +913,25 @@ unsetbridge_qinq(if_ctx *ctx, const char *val, int dummy __unused) do_bridgeflag(ctx, val, IFBIF_QINQ, 0); } +static void +setbridge_ifvlanproto(if_ctx *ctx, const char *ifname, const char *proto) +{ + struct ifbreq req; + + memset(&req, 0, sizeof(req)); + strlcpy(req.ifbr_ifsname, ifname, sizeof(req.ifbr_ifsname)); + + if (strcmp(proto, "802.1q") == 0) + req.ifbr_vlanproto = ETHERTYPE_VLAN; + else if (strcmp(proto, "802.1ad") == 0) + req.ifbr_vlanproto = ETHERTYPE_QINQ; + else + errx(1, "unrecognised VLAN protocol: %s", proto); + + if (do_cmd(ctx, BRDGSIFVLANPROTO, &req, sizeof(req), 1) < 0) + err(1, "BRDGSIFVLANPROTO"); +} + static struct cmd bridge_cmds[] = { DEF_CMD_ARG("addm", setbridge_add), DEF_CMD_ARG("deletem", setbridge_delete), @@ -936,6 +973,7 @@ static struct cmd bridge_cmds[] = { DEF_CMD_ARG2("tagged", setbridge_tagged), DEF_CMD_ARG2("+tagged", addbridge_tagged), DEF_CMD_ARG2("-tagged", delbridge_tagged), + DEF_CMD_ARG2("ifvlanproto", setbridge_ifvlanproto), DEF_CMD_ARG("timeout", setbridge_timeout), DEF_CMD_ARG("private", setbridge_private), DEF_CMD_ARG("-private", unsetbridge_private), diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index 69a81f72421f..d7b2570ab20d 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -2765,6 +2765,17 @@ Do not enable the .Cm qinq option by default on newly added members. This is the default behavior. +.It Cm ifvlanproto Ar interface Ar proto +Set the VLAN encapsulation protocol on +.Ar interface +to +.Ar proto , +which must be either +.Dq 802.1q +or +.Dq 802.1ad . +The default is +.Dq 802.1q . .El .Ss Link Aggregation and Link Failover Parameters The following parameters are specific to lagg interfaces: diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 26ea4400e67d..945318c5af1a 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -259,6 +259,7 @@ struct bridge_iflist { struct epoch_context bif_epoch_ctx; ether_vlanid_t bif_pvid; /* port vlan id */ ifbvlan_set_t bif_vlan_set; /* if allowed tagged vlans */ + uint16_t bif_vlanproto; /* vlan protocol */ }; /* @@ -423,6 +424,7 @@ static int bridge_ioctl_gflags(struct bridge_softc *, void *); static int bridge_ioctl_sflags(struct bridge_softc *, void *); static int bridge_ioctl_gdefpvid(struct bridge_softc *, void *); static int bridge_ioctl_sdefpvid(struct bridge_softc *, void *); +static int bridge_ioctl_svlanproto(struct bridge_softc *, void *); static int bridge_pfil(struct mbuf **, struct ifnet *, struct ifnet *, int); #ifdef INET @@ -654,6 +656,9 @@ static const struct bridge_control bridge_control_table[] = { { bridge_ioctl_sdefpvid, sizeof(struct ifbrparam), BC_F_COPYIN|BC_F_SUSER }, + + { bridge_ioctl_svlanproto, sizeof(struct ifbreq), + BC_F_COPYIN|BC_F_SUSER }, }; static const int bridge_control_table_size = nitems(bridge_control_table); @@ -1494,6 +1499,7 @@ bridge_ioctl_add(struct bridge_softc *sc, void *arg) bif->bif_ifp = ifs; bif->bif_flags = IFBIF_LEARNING | IFBIF_DISCOVER; bif->bif_savedcaps = ifs->if_capenable; + bif->bif_vlanproto = ETHERTYPE_VLAN; if (sc->sc_flags & IFBRF_VLANFILTER) bif->bif_pvid = sc->sc_defpvid; if (sc->sc_flags & IFBRF_DEFQINQ) @@ -1579,6 +1585,7 @@ bridge_ioctl_gifflags(struct bridge_softc *sc, void *arg) req->ifbr_addrmax = bif->bif_addrmax; req->ifbr_addrexceeded = bif->bif_addrexceeded; req->ifbr_pvid = bif->bif_pvid; + req->ifbr_vlanproto = bif->bif_vlanproto; /* Copy STP state options as flags */ if (bp->bp_operedge) @@ -2254,6 +2261,24 @@ bridge_ioctl_sdefpvid(struct bridge_softc *sc, void *arg) return (0); } +static int +bridge_ioctl_svlanproto(struct bridge_softc *sc, void *arg) +{ + struct ifbreq *req = arg; + struct bridge_iflist *bif; + + bif = bridge_lookup_member(sc, req->ifbr_ifsname); + if (bif == NULL) + return (EXTERROR(ENOENT, "Interface is not a bridge member")); + + if (req->ifbr_vlanproto != ETHERTYPE_VLAN && + req->ifbr_vlanproto != ETHERTYPE_QINQ) + return (EXTERROR(EINVAL, "Invalid VLAN protocol")); + + bif->bif_vlanproto = req->ifbr_vlanproto; + + return (0); +} /* * bridge_ifdetach: * @@ -2397,12 +2422,15 @@ bridge_enqueue(struct bridge_softc *sc, struct ifnet *dst_ifp, struct mbuf *m, } /* - * If underlying interface can not do VLAN tag insertion itself - * then attach a packet tag that holds it. + * There are two cases where we have to insert our own tag: + * if the member interface doesn't support hardware tagging, + * or if the tag proto is not 802.1q. */ if ((m->m_flags & M_VLANTAG) && - (dst_ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0) { - m = ether_vlanencap(m, m->m_pkthdr.ether_vtag); + ((dst_ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0 || + bif->bif_vlanproto != ETHERTYPE_VLAN)) { + m = ether_vlanencap_proto(m, m->m_pkthdr.ether_vtag, + bif->bif_vlanproto); if (m == NULL) { if_printf(dst_ifp, "unable to prepend VLAN header\n"); diff --git a/sys/net/if_bridgevar.h b/sys/net/if_bridgevar.h index 15194fecff7c..b0f579f688ac 100644 --- a/sys/net/if_bridgevar.h +++ b/sys/net/if_bridgevar.h @@ -131,6 +131,7 @@ #define BRDGSFLAGS 35 /* set bridge flags (ifbrparam) */ #define BRDGGDEFPVID 36 /* get default pvid (ifbrparam) */ #define BRDGSDEFPVID 37 /* set default pvid (ifbrparam) */ +#define BRDGSIFVLANPROTO 38 /* set if vlan protocol (ifbreq) */ /* BRDGSFLAGS, Bridge flags (non-interface-specific) */ typedef uint32_t ifbr_flags_t; @@ -157,6 +158,7 @@ struct ifbreq { uint32_t ifbr_addrmax; /* member if addr max */ uint32_t ifbr_addrexceeded; /* member if addr violations */ ether_vlanid_t ifbr_pvid; /* member if PVID */ + uint16_t ifbr_vlanproto; /* member if VLAN protocol */ uint8_t pad[32]; }; @@ -252,6 +254,7 @@ struct ifbrparam { * addresses */ #define ifbrp_flags ifbrp_ifbrpu.ifbrpu_int32 /* bridge flags */ #define ifbrp_defpvid ifbrp_ifbrpu.ifbrpu_int16 /* default pvid */ +#define ifbrp_vlanproto ifbrp_ifbrpu.ifbrpu_int8 /* vlan protocol */ /* * Bridge current operational parameters structure. From nobody Tue Aug 5 19:26:03 2025 X-Original-To: dev-commits-src-main@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 4bxNgw0vwKz63cGK; Tue, 05 Aug 2025 19:26:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxNgv6sbLz3qBR; Tue, 05 Aug 2025 19:26:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421964; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yi2p6Nx/N38mLhbgOzBj2kdgWLNgG9bpYrSm4Ho6n+I=; b=RILTdU77xOWpdnyKpE2Sg3aYS3rEjNqUS/4hPsiqPSyMBnSMrpWRsb/E2aFqog+x46CGKr Gs/+dw5kLQhDrevsBEWXRlFMd02HGk5CwP/X2YKgs35QaWYOL+G+4nfHBUzWNCULLzpcjG i4lRxuplL8x08PIKwIQtZtlykqglWi4wjfO3AdDTri/Nm8zSr4UhBrJMb5vyQdAuH8kdGd xiuPlLaPVrmQk7WAGkiA/peqSTudJji3E3cuGHT87W9UpxH1k5ejg0JMN8dUdrt5wKWzsZ FoRgOKiMfkoXt3RNLStaVtf/Vv7RVSTDVdoQyybBy7V3zmuHXvlsNaKthzeN1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421964; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yi2p6Nx/N38mLhbgOzBj2kdgWLNgG9bpYrSm4Ho6n+I=; b=gAJYW1XdMq0q14l8VrbIACMzBvtyn3XLdhCbImHZTbbwOfkndsZh4oMBpy1o6+xNHVqSTQ UjRgiRYZxj+9dNxWUbLBgUd0Cn4+CTn7ybo6Z2r70AQHqjSqbwNI7tGP7leo0YbhyGzAzf ICLItOIewhT2gsLTUi6SCa1f13rAUue9O+2mUobz/iMEGpTQR+vZJmgK2O65AQ/nfE4IKv oI3CG9q7X0zC3o27wL1TSP0+ZWVCQ6KMmglOZNqF2JF8xE46uXQzOVNogNTj+UIhiVP19y lxjNfevxA7Bs36/6fZTm/muZAM+iOzJ2/DhVsx0UH5qAkP4BeAYsASnJsa4OrA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754421964; a=rsa-sha256; cv=none; b=AwMjn7VOIEwCWER7L7suePs2neG2iDuNOoMA1/k46q14DOef+TnbHYzX75vnGUuomlFwSW Hi6SS3jQyAQBWYNt8a7d3Jgiu8lM2W4l1lFzHgsh/2Tgcz5uLEVJsuQnbOs2BdfGBEuzBN hjo614Wi2QnF8H/ic0JmoLLMqXaT25o3twfy8Cjmp7Vjg9SgF5Z7x4LrEiHODPKbZvi/lN WOaiYVBUKPMO/Z1DFRLnPLS7Ca3zkrW+9/G54+gXk3E+Hs+uP3Hw9aNvlSgPD7i75sw2+M 2pUMw58kxsm+flLAif7Mitcbx59SuB3lVM6kWuOQLWtbv6y3eotgYuNzPOk7tw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxNgv6SXRzp5P; Tue, 05 Aug 2025 19:26:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575JQ3iw074640; Tue, 5 Aug 2025 19:26:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575JQ30u074637; Tue, 5 Aug 2025 19:26:03 GMT (envelope-from git) Date: Tue, 5 Aug 2025 19:26:03 GMT Message-Id: <202508051926.575JQ30u074637@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 7d99569d4051 - main - bridge: Make the vlan(4) shunt more robust List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d99569d40510b627f0790c2b9630b5903e926b9 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=7d99569d40510b627f0790c2b9630b5903e926b9 commit 7d99569d40510b627f0790c2b9630b5903e926b9 Author: Lexi Winter AuthorDate: 2025-08-05 18:18:52 +0000 Commit: Lexi Winter CommitDate: 2025-08-05 18:35:30 +0000 bridge: Make the vlan(4) shunt more robust When bridge(4) and vlan(4) are both configured on the same physical interface, bridge handles incoming packets first and needs to shunt some packets to vlan(4). Right now, that shunt is done if the packet is destined for the Ethernet address of the member interface it was received on, and has a vlan tag. This is not ideal for two reasons: * It leaks some of the "special" behaviour of member_ifaddrs=1 even when member_ifaddrs is set to 0. * It means the vlan interface only receives locally-destined traffic, so anything that needs to receive other traffic won't work. Change the behaviour so that if a member interface has a vlan trunk configured, *all* tagged packets are unconditionally passed back to ether_input, which will send them to vlan(4). This somewhat changes the observable behaviour of vlan(4): since bridge(4) places all member interfaces in promiscuous mode, the vlan interface will now receive all traffic on that vlan. This shouldn't break any real-world configurations because it's only receiving more traffic; any traffic that was previously received is still received. Configuring both vlan(4) and bridge(4) on the same interface is probably not something we want to support long term, but for now this makes the code cleaner and the user-visible behaviour simpler and more predictable. Differential Revision: https://reviews.freebsd.org/D51677 --- sys/net/if_bridge.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 945318c5af1a..3aed54c58e04 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -2871,6 +2871,16 @@ bridge_input(struct ifnet *ifp, struct mbuf *m) eh = mtod(m, struct ether_header *); vlan = VLANTAGOF(m); + /* + * If this frame has a VLAN tag and the receiving interface has a + * vlan(4) trunk, then it is is destined for vlan(4), not for us. + * This means if vlan(4) and bridge(4) are configured on the same + * interface, vlan(4) is preferred, which is what users typically + * expect. + */ + if (vlan != DOT1Q_VID_NULL && ifp->if_vlantrunk != NULL) + return (m); + bif = ifp->if_bridge; if (bif) sc = bif->bif_sc; @@ -3071,19 +3081,13 @@ bridge_input(struct ifnet *ifp, struct mbuf *m) do { GRAB_OUR_PACKETS(bifp) } while (0); /* - * Check the interface the packet arrived on. For tagged frames, - * we need to do this even if member_ifaddrs is disabled because - * vlan(4) might need to handle the traffic. + * If member_ifaddrs is enabled, see if the packet is destined for + * one of the members' addresses. */ - if (V_member_ifaddrs || (vlan && ifp->if_vlantrunk)) + if (V_member_ifaddrs) { + /* Check the interface the packet arrived on. */ do { GRAB_OUR_PACKETS(ifp) } while (0); - /* - * We only need to check other members interface if member_ifaddrs - * is enabled; otherwise we should have never traffic destined for - * a member's lladdr. - */ - if (V_member_ifaddrs) { CK_LIST_FOREACH(bif2, &sc->sc_iflist, bif_next) { GRAB_OUR_PACKETS(bif2->bif_ifp) } From nobody Tue Aug 5 19:26:04 2025 X-Original-To: dev-commits-src-main@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 4bxNgx6swRz63cGW; Tue, 05 Aug 2025 19:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxNgx1bBnz3qVT; Tue, 05 Aug 2025 19:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kJ5rqV4WJNfC2KOtLua0L4rht3Gk6gzRzC8KLgxt+rc=; b=tC2RpvIFdCP2r1yu/IlmiBBLL6qrFxFRV14u+xsNFwUCeaz40c4llpB9KRJQ4IWc/eSHFj bnxwK03w6lRJY3+BItgWPANLPbNf9lGTRYL5tJpDhRMHkAzSLwFzTbmI4dvxd1dkO5RjAk ZNal8gWaorjNTfOMK6lDrxNgaIfH/mv1dduae66Nab1Ye7v+NNijgXcXv734DDKoFUI+Sa 4YGTGxHc8sxe4vhbanFqrC2GKNHzHxcsr31dQPdhEqYzYdfuy0jepH4APYJQ146LCdIt68 w14mMZmmqlhNiZElx/MABIQZ2KBAKGf6SkFUxwtM/bB0pBcbynjtmaeipAtABw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754421965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kJ5rqV4WJNfC2KOtLua0L4rht3Gk6gzRzC8KLgxt+rc=; b=yJHS90Pl7fwM4jA+dUqtI+2RFgsftzrFDvElNSvX8Q7MXog5Ey/FhatOz1yAuQD0R7I2mg QDxiJ68GLAAETyhOCVHdebPU1/WrOKS05aZMTmuE3fvU1zLCTrLJ2iAXY1KcGpeOIJDbQP OFmMKiXczUzY/ARbeUROfLkUjnjI+41iQeuXwCGOWoAjjrpwXYZI6eS2fHwTk3Lk7q3YTW zUir9UXECqBfC2k+rnyFZI2N4dCtHY9uMxwEkxa3CZ+siNOB6CLM2ouAEOWJfcaJU+ZdQ0 9SiwZW93YxwiNXw+hkpGQU6+7lF5PpvP4DHv6T0lK6yqSq6rOORYdfCCutN4LA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754421965; a=rsa-sha256; cv=none; b=iXQAIDHxExl4uW6xcD9DfbxhtsledpoeeQV59bHOUKH6ws4FQfJnj3zXAe2btFWjFazdV1 HWWBfchgv5wYcirNmUVzrHnDacF+JQgb3SJdAWLL74WMv6vCwt/IwBIUAewwZlFTS2daYl Eff3iNZOzRGhDkDfdpY3Kf/cOBzPdWj72pPWk6s1IakETTL7HbM1GNxUHy5YX7mRqJuEJ/ 3DSo9wnPX4dynybU9uzYfopjDUT/ldkaDoTEtAIJUMwHnyqtP12TcQZBtAVgTkoKXgOuIS j5HdGW8rW69upPB8eYSnffE5P7OGBbq88gAz/FjWVYfMncp67/qPfFkeOgW8Hw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxNgx04sCznnP; Tue, 05 Aug 2025 19:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575JQ4hJ074679; Tue, 5 Aug 2025 19:26:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575JQ4Tk074676; Tue, 5 Aug 2025 19:26:04 GMT (envelope-from git) Date: Tue, 5 Aug 2025 19:26:04 GMT Message-Id: <202508051926.575JQ4Tk074676@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: c41469a89f74 - main - ifconfig: Improve bridge vlan filtering syntax List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c41469a89f74e921ccbab09074c7b24edacbcc85 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=c41469a89f74e921ccbab09074c7b24edacbcc85 commit c41469a89f74e921ccbab09074c7b24edacbcc85 Author: Lexi Winter AuthorDate: 2025-08-05 18:27:09 +0000 Commit: Lexi Winter CommitDate: 2025-08-05 19:25:37 +0000 ifconfig: Improve bridge vlan filtering syntax The current syntax to add an interface to a filtering bridge requires repeating the interface name up to three times: ifconfig bridge0 addm ix0 untagged ix0 10 tagged ix0 100-199 Since at least one of these options nearly always needs to be set, this results in excessively verbose configuration. Extend "addm" to support optional arguments, and add two arguments, "untagged" and "tagged", which infer the interface name from the addm command. Now the interface only has to be given once: ifconfig bridge0 addm ix0 untagged 10 tagged 100-199 To avoid confusion with the existing untagged and tagged commands, rename those to ifuntagged and iftagged. In future, this syntax will make it possible to add an interface and set its vlan configuration atomically (once the API supports that), but switching to the new syntax now means we don't need to change it after 15.0. Differential Revision: https://reviews.freebsd.org/D51707 --- sbin/ifconfig/ifbridge.c | 81 +++++++++++++++++++++++++++++++++-------- sbin/ifconfig/ifconfig.8 | 31 ++++++++++++---- tests/sys/net/if_bridge_test.sh | 73 +++++++++++++++++-------------------- 3 files changed, 122 insertions(+), 63 deletions(-) diff --git a/sbin/ifconfig/ifbridge.c b/sbin/ifconfig/ifbridge.c index d02d92d10b59..eff443447c13 100644 --- a/sbin/ifconfig/ifbridge.c +++ b/sbin/ifconfig/ifbridge.c @@ -60,6 +60,10 @@ #include "ifconfig.h" +static int parse_vlans(ifbvlan_set_t *set, const char *str); +static int get_val(const char *cp, u_long *valp); +static int get_vlan_id(const char *cp, ether_vlanid_t *valp); + static const char *stpstates[] = { STP_STATES }; static const char *stpproto[] = { STP_PROTOS }; static const char *stproles[] = { STP_ROLES }; @@ -288,15 +292,62 @@ bridge_status(if_ctx *ctx) ifconfig_bridge_free_bridge_status(bridge); } -static void -setbridge_add(if_ctx *ctx, const char *val, int dummy __unused) +static int +setbridge_add(if_ctx *ctx, int argc, const char *const *argv) { struct ifbreq req; + struct ifbif_vlan_req vlreq; + int oargc = argc; memset(&req, 0, sizeof(req)); - strlcpy(req.ifbr_ifsname, val, sizeof(req.ifbr_ifsname)); + memset(&vlreq, 0, sizeof(vlreq)); + + if (argc < 1) + errx(1, "usage: addm [opts ...]"); + + strlcpy(req.ifbr_ifsname, argv[0], sizeof(req.ifbr_ifsname)); + --argc; ++argv; + + while (argc) { + if (strcmp(argv[0], "untagged") == 0) { + if (argc < 2) + errx(1, "usage: untagged "); + + if (get_vlan_id(argv[1], &req.ifbr_pvid) < 0) + errx(1, "invalid VLAN identifier: %s", argv[1]); + + argc -= 2; + argv += 2; + } else if (strcmp(argv[0], "tagged") == 0) { + if (argc < 2) + errx(1, "usage: tagged "); + + vlreq.bv_op = BRDG_VLAN_OP_SET; + strlcpy(vlreq.bv_ifname, req.ifbr_ifsname, + sizeof(vlreq.bv_ifname)); + if (parse_vlans(&vlreq.bv_set, argv[1]) != 0) + errx(1, "invalid vlan set: %s", argv[1]); + + argc -= 2; + argv += 2; + } else { + break; + } + } + if (do_cmd(ctx, BRDGADD, &req, sizeof(req), 1) < 0) - err(1, "BRDGADD %s", val); + err(1, "BRDGADD %s", req.ifbr_ifsname); + + if (req.ifbr_pvid != 0 && + do_cmd(ctx, BRDGSIFPVID, &req, sizeof(req), 1) < 0) + err(1, "BRDGSIFPVID %s %u", req.ifbr_ifsname, + (unsigned)req.ifbr_pvid); + + if (vlreq.bv_op != 0 && + do_cmd(ctx, BRDGSIFVLANSET, &vlreq, sizeof(vlreq), 1) < 0) + err(1, "BRDGSIFVLANSET %s", req.ifbr_ifsname); + + return (oargc - argc); } static void @@ -684,7 +735,7 @@ setbridge_ifpathcost(if_ctx *ctx, const char *ifn, const char *cost) } static void -setbridge_untagged(if_ctx *ctx, const char *ifn, const char *vlanid) +setbridge_ifuntagged(if_ctx *ctx, const char *ifn, const char *vlanid) { struct ifbreq req; @@ -699,7 +750,7 @@ setbridge_untagged(if_ctx *ctx, const char *ifn, const char *vlanid) } static void -unsetbridge_untagged(if_ctx *ctx, const char *ifn, int dummy __unused) +unsetbridge_ifuntagged(if_ctx *ctx, const char *ifn, int dummy __unused) { struct ifbreq req; @@ -831,19 +882,19 @@ set_bridge_vlanset(if_ctx *ctx, const char *ifn, const char *vlans, int op) } static void -setbridge_tagged(if_ctx *ctx, const char *ifn, const char *vlans) +setbridge_iftagged(if_ctx *ctx, const char *ifn, const char *vlans) { set_bridge_vlanset(ctx, ifn, vlans, BRDG_VLAN_OP_SET); } static void -addbridge_tagged(if_ctx *ctx, const char *ifn, const char *vlans) +addbridge_iftagged(if_ctx *ctx, const char *ifn, const char *vlans) { set_bridge_vlanset(ctx, ifn, vlans, BRDG_VLAN_OP_ADD); } static void -delbridge_tagged(if_ctx *ctx, const char *ifn, const char *vlans) +delbridge_iftagged(if_ctx *ctx, const char *ifn, const char *vlans) { set_bridge_vlanset(ctx, ifn, vlans, BRDG_VLAN_OP_DEL); } @@ -933,7 +984,7 @@ setbridge_ifvlanproto(if_ctx *ctx, const char *ifname, const char *proto) } static struct cmd bridge_cmds[] = { - DEF_CMD_ARG("addm", setbridge_add), + DEF_CMD_VARG("addm", setbridge_add), DEF_CMD_ARG("deletem", setbridge_delete), DEF_CMD_ARG("discover", setbridge_discover), DEF_CMD_ARG("-discover", unsetbridge_discover), @@ -968,11 +1019,11 @@ static struct cmd bridge_cmds[] = { DEF_CMD_ARG2("ifpriority", setbridge_ifpriority), DEF_CMD_ARG2("ifpathcost", setbridge_ifpathcost), DEF_CMD_ARG2("ifmaxaddr", setbridge_ifmaxaddr), - DEF_CMD_ARG2("untagged", setbridge_untagged), - DEF_CMD_ARG("-untagged", unsetbridge_untagged), - DEF_CMD_ARG2("tagged", setbridge_tagged), - DEF_CMD_ARG2("+tagged", addbridge_tagged), - DEF_CMD_ARG2("-tagged", delbridge_tagged), + DEF_CMD_ARG2("ifuntagged", setbridge_ifuntagged), + DEF_CMD_ARG("-ifuntagged", unsetbridge_ifuntagged), + DEF_CMD_ARG2("iftagged", setbridge_iftagged), + DEF_CMD_ARG2("+iftagged", addbridge_iftagged), + DEF_CMD_ARG2("-iftagged", delbridge_iftagged), DEF_CMD_ARG2("ifvlanproto", setbridge_ifvlanproto), DEF_CMD_ARG("timeout", setbridge_timeout), DEF_CMD_ARG("private", setbridge_private), diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index d7b2570ab20d..b562f9e4c0c5 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -2494,12 +2494,27 @@ compatibility. .Ss Bridge Interface Parameters The following parameters are specific to bridge interfaces: .Bl -tag -width indent -.It Cm addm Ar interface +.It Cm addm Ar interface Op Ar options ... Add the interface named by .Ar interface as a member of the bridge. The interface is put into promiscuous mode so that it can receive every packet sent on the network. +.Pp +The interface name may be followed by one or more of the following +.Ar options : +.Bl -tag -width ".Cm untagged Ar vlan-id" +.It Cm untagged Ar vlan-id +Set the untagged VLAN identifier for the interface. +This is equivalent to the +.Cm ifuntagged +command. +.It Cm tagged Ar vlan-set +Set the allowed VLAN list for the interface. +This is equivalent to the +.Cm iftagged +command. +.El .It Cm deletem Ar interface Remove the interface named by .Ar interface @@ -2715,9 +2730,9 @@ Enable VLAN filtering on the bridge. .It Cm -vlanfilter Disable VLAN filtering on the bridge. This is the default. -.It Cm untagged Ar interface Ar vlan-id +.It Cm ifuntagged Ar interface Ar vlan-id Set the untagged VLAN identifier for an interface. -.It Cm -untagged Ar interface Ar vlan-id +.It Cm -ifuntagged Ar interface Ar vlan-id Clear the untagged VLAN identifier for an interface. .It Cm defuntagged Ar vlan-id Enable the @@ -2727,7 +2742,7 @@ option by default on newly added members. Do not enable the .Cm untagged option by default on newly added members. -.It Cm tagged Ar interface Ar vlan-list +.It Cm iftagged Ar interface Ar vlan-list Set the interface's VLAN access list to the provided list of VLANs. The list should be a comma-separated list of one or more VLAN IDs or ranges formatted as @@ -2738,15 +2753,15 @@ meaning the empty set, or the value .Dq all meaning all VLANs (1-4094). -.It Cm +tagged Ar interface Ar vlan-list +.It Cm +iftagged Ar interface Ar vlan-list Add the provided list of VLAN IDs to the interface's VLAN access list. The list should be formatted as described for -.Cm tagged . -.It Cm -tagged Ar interface Ar vlan-list +.Cm iftagged . +.It Cm -iftagged Ar interface Ar vlan-list Remove the provided list of VLAN IDs from the interface's VLAN access list. The list should be formatted as described for -.Cm tagged . +.Cm iftagged . .It Cm qinq Ar interface Allow this interface to send 802.1ad .Dq Q-in-Q diff --git a/tests/sys/net/if_bridge_test.sh b/tests/sys/net/if_bridge_test.sh index 8a6c730014ce..906f586d2483 100755 --- a/tests/sys/net/if_bridge_test.sh +++ b/tests/sys/net/if_bridge_test.sh @@ -922,15 +922,15 @@ vlan_pvid_body() ifconfig ${bridge} vlanfilter up ifconfig ${epone}a up ifconfig ${eptwo}a up - ifconfig ${bridge} addm ${epone}a untagged ${epone}a 20 - ifconfig ${bridge} addm ${eptwo}a untagged ${eptwo}a 20 + ifconfig ${bridge} addm ${epone}a untagged 20 + ifconfig ${bridge} addm ${eptwo}a untagged 20 # With VLAN filtering enabled, traffic should be passed. atf_check -s exit:0 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:0 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 # Removed the untagged VLAN on one port; traffic should not be passed. - ifconfig ${bridge} -untagged ${epone}a + ifconfig ${bridge} -ifuntagged ${epone}a atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 } @@ -966,10 +966,8 @@ vlan_pvid_filtered_body() atf_check -s exit:0 ifconfig ${bridge} vlanfilter up atf_check -s exit:0 ifconfig ${epone}a up atf_check -s exit:0 ifconfig ${eptwo}a up - atf_check -s exit:0 ifconfig ${bridge} \ - addm ${epone}a untagged ${epone}a 20 - atf_check -s exit:0 ifconfig ${bridge} \ - addm ${eptwo}a untagged ${eptwo}a 30 + atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a untagged 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${eptwo}a untagged 30 atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 @@ -1011,10 +1009,8 @@ vlan_pvid_tagged_body() atf_check -s exit:0 ifconfig ${bridge} vlanfilter up atf_check -s exit:0 ifconfig ${epone}a up atf_check -s exit:0 ifconfig ${eptwo}a up - atf_check -s exit:0 ifconfig ${bridge} \ - addm ${epone}a untagged ${epone}a 20 - atf_check -s exit:0 ifconfig ${bridge} \ - addm ${eptwo}a untagged ${eptwo}a 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a untagged 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${eptwo}a untagged 20 # Tagged frames should not be passed. atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 @@ -1055,10 +1051,8 @@ vlan_pvid_1q_body() bridge=$(vnet_mkbridge) atf_check -s exit:0 ifconfig ${bridge} vlanfilter up - atf_check -s exit:0 ifconfig ${bridge} \ - addm ${epone}a untagged ${epone}a 20 - atf_check -s exit:0 ifconfig ${bridge} addm ${eptwo}a \ - tagged ${eptwo}a 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a untagged 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${eptwo}a tagged 20 atf_check -s exit:0 ifconfig ${epone}a up atf_check -s exit:0 ifconfig ${eptwo}a up @@ -1116,25 +1110,25 @@ vlan_filtering_body() # Set the untagged vlan on both ports to 20 and make sure traffic is # still blocked. We intentionally do not pass tagged traffic for the # untagged vlan. - atf_check -s exit:0 ifconfig ${bridge} untagged ${epone}a 20 - atf_check -s exit:0 ifconfig ${bridge} untagged ${eptwo}a 20 + atf_check -s exit:0 ifconfig ${bridge} ifuntagged ${epone}a 20 + atf_check -s exit:0 ifconfig ${bridge} ifuntagged ${eptwo}a 20 atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 - atf_check -s exit:0 ifconfig ${bridge} -untagged ${epone}a - atf_check -s exit:0 ifconfig ${bridge} -untagged ${eptwo}a + atf_check -s exit:0 ifconfig ${bridge} -ifuntagged ${epone}a + atf_check -s exit:0 ifconfig ${bridge} -ifuntagged ${eptwo}a # Add VLANs 10-30 to the access list; now access should be allowed. - atf_check -s exit:0 ifconfig ${bridge} +tagged ${epone}a 10-30 - atf_check -s exit:0 ifconfig ${bridge} +tagged ${eptwo}a 10-30 + atf_check -s exit:0 ifconfig ${bridge} +iftagged ${epone}a 10-30 + atf_check -s exit:0 ifconfig ${bridge} +iftagged ${eptwo}a 10-30 atf_check -s exit:0 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:0 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 # Remove vlan 20 from the access list, now access should be blocked # again. - atf_check -s exit:0 ifconfig ${bridge} -tagged ${epone}a 20 - atf_check -s exit:0 ifconfig ${bridge} -tagged ${eptwo}a 20 + atf_check -s exit:0 ifconfig ${bridge} -iftagged ${epone}a 20 + atf_check -s exit:0 ifconfig ${bridge} -iftagged ${eptwo}a 20 atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 } @@ -1145,16 +1139,16 @@ vlan_filtering_cleanup() } # -# Test the ifconfig 'tagged' option. +# Test the ifconfig 'iftagged' option. # -atf_test_case "vlan_ifconfig_tagged" "cleanup" -vlan_ifconfig_tagged_head() +atf_test_case "vlan_ifconfig_iftagged" "cleanup" +vlan_ifconfig_iftagged_head() { - atf_set descr 'test the ifconfig tagged option' + atf_set descr 'test the ifconfig iftagged option' atf_set require.user root } -vlan_ifconfig_tagged_body() +vlan_ifconfig_iftagged_body() { vnet_init vnet_init_bridge @@ -1170,34 +1164,34 @@ vlan_ifconfig_tagged_body() atf_check -s exit:0 -o not-match:"tagged" ifconfig ${bridge} # Add vlans 100-149. - atf_check -s exit:0 ifconfig ${bridge} tagged ${ep}a 100-149 + atf_check -s exit:0 ifconfig ${bridge} iftagged ${ep}a 100-149 atf_check -s exit:0 -o match:"tagged 100-149" ifconfig ${bridge} # Replace the vlan list with 139-199. - atf_check -s exit:0 ifconfig ${bridge} tagged ${ep}a 139-199 + atf_check -s exit:0 ifconfig ${bridge} iftagged ${ep}a 139-199 atf_check -s exit:0 -o match:"tagged 139-199" ifconfig ${bridge} # Add vlans 100-170. - atf_check -s exit:0 ifconfig ${bridge} +tagged ${ep}a 100-170 + atf_check -s exit:0 ifconfig ${bridge} +iftagged ${ep}a 100-170 atf_check -s exit:0 -o match:"tagged 100-199" ifconfig ${bridge} # Remove vlans 104, 105, and 150-159 - atf_check -s exit:0 ifconfig ${bridge} -tagged ${ep}a 104,105,150-159 + atf_check -s exit:0 ifconfig ${bridge} -iftagged ${ep}a 104,105,150-159 atf_check -s exit:0 -o match:"tagged 100-103,106-149,160-199" \ ifconfig ${bridge} # Remove the entire vlan list. - atf_check -s exit:0 ifconfig ${bridge} tagged ${ep}a none + atf_check -s exit:0 ifconfig ${bridge} iftagged ${ep}a none atf_check -s exit:0 -o not-match:"tagged" ifconfig ${bridge} # Test some invalid vlans sets. for bad_vlan in -1 0 4096 4097 foo 0-10 4000-5000 foo-40 40-foo; do atf_check -s exit:1 -e ignore \ - ifconfig ${bridge} tagged "$bad_vlan" + ifconfig ${bridge} iftagged "$bad_vlan" done } -vlan_ifconfig_tagged_cleanup() +vlan_ifconfig_iftagged_cleanup() { vnet_cleanup } @@ -1229,8 +1223,7 @@ vlan_svi_body() atf_check -s exit:0 ifconfig ${bridge} vlanfilter up atf_check -s exit:0 ifconfig ${epone}a up - atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a \ - tagged ${epone}a 20 + atf_check -s exit:0 ifconfig ${bridge} addm ${epone}a tagged 20 svi=$(vnet_mkvlan) atf_check -s exit:0 ifconfig ${svi} vlan 20 vlandev ${bridge} @@ -1294,8 +1287,8 @@ vlan_qinq_body() atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 # Add the provider tag to the access list; now traffic should be passed. - atf_check -s exit:0 ifconfig ${bridge} +tagged ${epone}a 5 - atf_check -s exit:0 ifconfig ${bridge} +tagged ${eptwo}a 5 + atf_check -s exit:0 ifconfig ${bridge} +iftagged ${epone}a 5 + atf_check -s exit:0 ifconfig ${bridge} +iftagged ${eptwo}a 5 atf_check -s exit:0 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 atf_check -s exit:0 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 @@ -1411,7 +1404,7 @@ atf_init_test_cases() atf_add_test_case "vlan_pvid_filtered" atf_add_test_case "vlan_pvid_tagged" atf_add_test_case "vlan_filtering" - atf_add_test_case "vlan_ifconfig_tagged" + atf_add_test_case "vlan_ifconfig_iftagged" atf_add_test_case "vlan_svi" atf_add_test_case "vlan_qinq" atf_add_test_case "vlan_defuntagged" From nobody Tue Aug 5 19:49:49 2025 X-Original-To: dev-commits-src-main@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 4bxPCK5B18z63dVF; Tue, 05 Aug 2025 19:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxPCK41RJz3t1V; Tue, 05 Aug 2025 19:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754423389; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=V0aY8wjQHFFmjC9rNJJWCF6uzPIDIKT953LUnsjHMoU=; b=UevtbCcFf8WsXp2XGjwEfdLQw/wMoaRYg2NTO7NbG69fXE8VIUeRfMY3GjDDRHZwjP66fR O0aE6iKyWa0zF8Tc3b2PpGPFbYCDCK3bfLBhTTQWjVFMbIVeeDxIERgvGg7hyZ/xBaDzVF MOoeSu68koEIN4sQX5ML58/ANTrkrWHZlKBd6T92FM6NK4zL+GwxNcZJy9sWafw2/j79gn cUKKtLlfW7sBIgs+Htx9vKLMQkdYSZGd7x2Ktm0XH8ZRX+8UA6bdCM8t1LEMYXLspp3t/M fVF6e7ZAxVPvyhYmKhU1BWj18NDhyZB3v0e4Yy4NGJjIRXIloOaSyjRpheeOVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754423389; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=V0aY8wjQHFFmjC9rNJJWCF6uzPIDIKT953LUnsjHMoU=; b=e1N5ru/zWly7Gcs/Qf+uFnOP4eVL/T13YcjVj4GsG3mFd7oVQJnN+LKY0GFBrDuG6Yu8rz GdrEuR3ad11X0mkuTdo+4/bG2n5La1OYauQevLDAqObUd+Istgt7ySXv7QTFPVvFG5Zjk2 JmW7h3XL++lP1YwaW+qiP0ZsERnoq6JFW/6BZuMSohfl2lh0Qpopa//szhJqr0A9NLpq6f kdka8rEfM7Os1kJPcwc73Zjsa4zmf4hThSUc5MnsvEQhCI19w6O7aTDJgDyi289GahHoUF fAQwzupSTGjIKpta0eloy1LXadexrHVv/2cJWqOj8w/afmvBLahZAHCc/izEJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754423389; a=rsa-sha256; cv=none; b=ICPLY+0tFy8te9m18QnJKkkeS+dW2L82Ofi8AG7rnBQbnyyFpxo/PnHykIQYmLs3zvCIUJ zTWSsRjjT5bBkcjQlcpC94DaY0bZkKZntheJZ3JJvac5SGBTIzwQDRc/5d489FOxfaztSU A+3AIq3/vWkFk2e7KCV8SJLkka1WvxT7aXRZnSXRHYidQL16H+zTwtRVg1Wt0dkveOIXrw PQv/f3OeZpWWJqFutcjAMUvWtKdHP1F4stBIdiSHhfat0bCI+WeVFA0zwtkeZIa7gnh9Tv BXSEYmEnXkSs2C7LmjXrbjGl8HMXRmHf9JFMwBFvW3cfe41gPL2rdb6UzdFEaw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxPCK3KyYzpm7; Tue, 05 Aug 2025 19:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575JnnIF013527; Tue, 5 Aug 2025 19:49:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575Jnngk013524; Tue, 5 Aug 2025 19:49:49 GMT (envelope-from git) Date: Tue, 5 Aug 2025 19:49:49 GMT Message-Id: <202508051949.575Jnngk013524@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 62e5a3629483 - main - krb5: Remove et directory List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 62e5a3629483d44cdc6662deb5913c88dc2d700e Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=62e5a3629483d44cdc6662deb5913c88dc2d700e commit 62e5a3629483d44cdc6662deb5913c88dc2d700e Author: Cy Schubert AuthorDate: 2025-08-05 19:47:36 +0000 Commit: Cy Schubert CommitDate: 2025-08-05 19:48:48 +0000 krb5: Remove et directory Reported and patch by: "Herbert J. Skuhra" Fixes: 9a726ef24134 --- ObsoleteFiles.inc | 1 + etc/mtree/BSD.usr.dist | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 6308e51331b0..cc6a29c25f5d 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -61,6 +61,7 @@ OLD_FILES+=usr/lib/libopencsd.so # 20250801: Move compile_et to /usr/sbin OLD_FILES+=usr/share/et/compile_et +OLD_DIRS+=usr/share/et # 20250728: zfsboot (MBR) removed OLD_FILES+=boot/zfsboot diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index ffdd82ae9911..68977a6b8282 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -267,8 +267,6 @@ .. dtrace .. - et - .. examples BSD_daemon .. From nobody Tue Aug 5 20:21:50 2025 X-Original-To: dev-commits-src-main@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 4bxPwG4Xxrz63gQd; Tue, 05 Aug 2025 20:21:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxPwG4Gcnz42NF; Tue, 05 Aug 2025 20:21:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754425310; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MxOrMYZS2ktDGl/QX0EH30VpHKtvWyd8e/Q93NdGow8=; b=prc6SYN5AcqUaDbzujtF6r4PAlk09m8RNnPswwMTmszrC5PUEEiab4/FIl0NiMF653lifJ i1ugWrnWVYRVGJ0JqT7tNHEOmTBMfQwyddd1xiB++W1P1F4erEmHGL7RGONafkmAV9vMLW jTBMDJm0sfwhOl6F31zz1Yd1R+XS8KYiS/cwO6NDTdP+ag5iem6X3uHn9KGfGYElZU7NCE k2SPqI5UOM8LxoCFmsYxbk/3HXw8TrpBOsDJvNe6bhiEphuIhG02kQPBu+ULzwTpo1Chry Cg+LeO3wJ7W/W7DyAd/mrQsVV6VLXE/6PtbTOz5rCobQ3g4uOGrHiFv8rRY2FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754425310; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MxOrMYZS2ktDGl/QX0EH30VpHKtvWyd8e/Q93NdGow8=; b=A1Jwg0Dcdh0Ut69mJdjkLNt4h7ZvRji4XWYT1KEPxGAqgZd2R4JMBqGRCphvcz/pXa96YG 3Qnv5KUY2LWIvqmc+CVGtkJ9YDSmIzWn4emr6g2qY09vQo9/3ovUlUMHTnEi2LdKhDfSYm xFqm7RvYXTR/oxRobdRBJc6XbJBUNq7CY++PauUEqUTA/CfS/EkjXwhUoyqS0OtPZHpAac Lnh0LfbjZ9KuvZQmNebA4wcDAbJ+rhkYOcmsqbZZs3zu8e5rSWg+c5EQ8Mzrr4LNmLDoZx v3LskdeO5ShB532ZkcK2b/Y4UETGlIyusGSDJ14307OitqfOaz4xlBkB7STN6A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754425310; a=rsa-sha256; cv=none; b=YHSY5LhEs7OvA9vslMBR5lAahVpMPk7+EpbjlW3NFdVXrjjbENSh75eZVo6xXe15LPw6YM Hk6Qm3XXdyk2KwxmfSUDjTlZOTSqPDPK6XP7M0ZzJOoTCW0sGjaM1zLpK7Q9zwAn1PScnq FchFeMJfQnMgXVOLK8wm0j2AHgnqWQzv1HMyr56c2jEm0T8kS/JZhjyH5v+0IjYLUTyzJ8 95HRUgpEh9y8veD/s9bNpWZ4JWZ6GASXwvVeRKXw5DgZXHZSZEQq+56go7rZBUnlOWNJnv b+5d5bhNp1nEdvMa2huxLdVdS4GuUDVjHJMgELMeAO6vsIPdx2yeC9Y+051Taw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxPwG3rCWzqn9; Tue, 05 Aug 2025 20:21:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575KLor1084347; Tue, 5 Aug 2025 20:21:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575KLosa084344; Tue, 5 Aug 2025 20:21:50 GMT (envelope-from git) Date: Tue, 5 Aug 2025 20:21:50 GMT Message-Id: <202508052021.575KLosa084344@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: 024f676b399f - main - sbin/newfs_msdos: add support for exFAT file systems List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 024f676b399fc8acee7288c543d32c581328833c Auto-Submitted: auto-generated The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=024f676b399fc8acee7288c543d32c581328833c commit 024f676b399fc8acee7288c543d32c581328833c Author: Stefan Eßer AuthorDate: 2025-08-05 20:12:18 +0000 Commit: Stefan Eßer CommitDate: 2025-08-05 20:12:18 +0000 sbin/newfs_msdos: add support for exFAT file systems Add support for the creation of exFAT file systems, if invoked as newfs_exfat. Reviewed by: olce Approved by: olce, mckusick MFC after: 4 weeks Relnotes: yes Differential Revision: https://reviews.freebsd.org/D48727 --- sbin/newfs_msdos/Makefile | 7 + sbin/newfs_msdos/mkfs_msdos.c | 1279 ++++++++++++++++++++++++++++++++++++++-- sbin/newfs_msdos/mkfs_msdos.h | 3 +- sbin/newfs_msdos/newfs_msdos.8 | 44 +- sbin/newfs_msdos/newfs_msdos.c | 36 +- 5 files changed, 1305 insertions(+), 64 deletions(-) diff --git a/sbin/newfs_msdos/Makefile b/sbin/newfs_msdos/Makefile index bd5b3486b6b6..74c4c90cb41b 100644 --- a/sbin/newfs_msdos/Makefile +++ b/sbin/newfs_msdos/Makefile @@ -5,6 +5,13 @@ PROG= newfs_msdos MAN= newfs_msdos.8 SRCS= newfs_msdos.c mkfs_msdos.c +LINKS= ${BINDIR}/newfs_msdos ${BINDIR}/newfs_exfat +MLINKS= newfs_msdos.8 newfs_exfat.8 + +.if ${MK_ICONV} == "yes" +CFLAGS+=-DWITH_ICONV +.endif + # XXX - this is verboten .if ${MACHINE_CPUARCH} == "arm" WARNS?= 3 diff --git a/sbin/newfs_msdos/mkfs_msdos.c b/sbin/newfs_msdos/mkfs_msdos.c index dcc2bb982efc..70ec3b8f345c 100644 --- a/sbin/newfs_msdos/mkfs_msdos.c +++ b/sbin/newfs_msdos/mkfs_msdos.c @@ -1,5 +1,6 @@ /* * Copyright (c) 1998 Robert Nordier + * Copyright (c) 2025 Stefan Eßer * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,6 +36,7 @@ #include #include #endif +#include #include #include #include @@ -44,9 +46,14 @@ #include #include #include +#ifdef WITH_ICONV +#include +#include +#endif #include #include #include +#include #include #include #include @@ -61,11 +68,14 @@ #define DOSMAGIC 0xaa55 /* DOS magic number */ #define MINBPS 512 /* minimum bytes per sector */ -#define MAXBPS 4096 /* maximum bytes per sector */ +#define MAXBPS 4096 /* maximum bytes per sector */ #define MAXSPC 128 /* maximum sectors per cluster */ +#define MAXBPC_EX (1<<25) /* maximum sectors per cluster exFAT */ #define MAXNFT 16 /* maximum number of FATs */ +#define MAXNFT_EX 2 /* maximum number of FATs exFAT */ #define DEFBLK 4096 /* default block size */ #define DEFBLK16 2048 /* default block size FAT16 */ +#define DEFBLK_EX (128*1024) /* default block size exFAT */ #define DEFRDE 512 /* default root directory entries */ #define RESFTE 2 /* reserved FAT entries */ #define MINCLS12 1U /* minimum FAT12 clusters */ @@ -78,23 +88,25 @@ #define mincls(fat) ((fat) == 12 ? MINCLS12 : \ (fat) == 16 ? MINCLS16 : \ MINCLS32) - #define maxcls(fat) ((fat) == 12 ? MAXCLS12 : \ (fat) == 16 ? MAXCLS16 : \ MAXCLS32) -#define mk1(p, x) \ - (p) = (u_int8_t)(x) +#define BOOTSEC 0 /* boot sector offset */ +#define EXTBOOTSEC 1 /* extended boot sector offset */ +#define EXTBOOTSECCNT 8 /* number of extended boot sectors */ +#define OEMPARMSEC 9 /* OEM parameter sector offset */ +#define RESERVEDSEC 10 /* reserved sector */ +#define BOOTCKSUMSEC 11 /* checksum sector */ +#define BACKUPSECOFS 12 /* backup boot sector region offset */ -#define mk2(p, x) \ - (p)[0] = (u_int8_t)(x), \ - (p)[1] = (u_int8_t)((x) >> 010) +#define EX_DE_ALLOCMAP 0x81 /* cluster allocation bitmap */ +#define EX_DE_UPCASETABLE 0x82 /* UTF-16 upper case translation */ +#define EX_DE_LABEL 0x83 /* volume label */ -#define mk4(p, x) \ - (p)[0] = (u_int8_t)(x), \ - (p)[1] = (u_int8_t)((x) >> 010), \ - (p)[2] = (u_int8_t)((x) >> 020), \ - (p)[3] = (u_int8_t)((x) >> 030) +#define mk1(p, x) (p) = (u_int8_t)(x) +#define mk2(p, x) le16enc(p, x) +#define mk4(p, x) le32enc(p, x) struct bs { u_int8_t bsJump[3]; /* bootstrap entry point */ @@ -135,6 +147,30 @@ struct bsx { u_int8_t exFileSysType[8]; /* file system type */ } __packed; +struct bsexfat { + u_int8_t bsJump[3]; /* bootstrap entry point */ + u_int8_t bsFileSystemName[8]; /* OEM name and version "EXFAT " */ + u_int8_t bsUnused[53]; /* unused DOS parameter area */ + u_int8_t bsPartitionOffset[8]; /* start of partition on device */ + u_int8_t bsVolumeLength[8]; /* number of sectors in volume */ + u_int8_t bsFatOffset[4]; /* phys. sector of start of FAT */ + u_int8_t bsFatLength[4]; /* number of sectors per FAT */ + u_int8_t bsClusterHeapOffset[4]; /* phys. sector of cluster #2 */ + u_int8_t bsClusterCount[4]; /* number of clusters */ + u_int8_t bsRootClust[4]; /* start cluster for root directory */ + u_int8_t bsVolSerialNumber[4]; /* volume serial number */ + u_int8_t bsFSVers[2]; /* ExFat file system revision */ + u_int8_t bsVolumeFlags[2]; /* volume status, e.g. dirty */ + u_int8_t bsBytesPerSecShift; /* log2 of bytes per sector */ + u_int8_t bsSecPerClustShift; /* log2 of sectors per cluster */ + u_int8_t bsFATs; /* number of FATs */ + u_int8_t bsDriveSelect; /* extended INT 13h drive number */ + u_int8_t bsPercentInUse; /* percentage of clusters in use */ + u_int8_t bsReserved[7]; /* reserved for future expansion */ + u_int8_t bsBootCode[390]; /* pad so structure is 512b */ + u_int8_t bsBootSectSig[2]; /* DOSMAGIC */ +} __packed; + struct de { u_int8_t deName[11]; /* name and extension */ u_int8_t deAttributes; /* attributes */ @@ -157,14 +193,57 @@ struct bpb { u_int bpbSecPerTrack; /* sectors per track */ u_int bpbHeads; /* drive heads */ u_int bpbHiddenSecs; /* hidden sectors */ - u_int bpbHugeSectors; /* big total sectors */ + u_quad_t bpbHugeSectors; /* big total sectors */ u_int bpbBigFATsecs; /* big sectors per FAT */ u_int bpbRootClust; /* root directory start cluster */ u_int bpbFSInfo; /* file system info sector */ u_int bpbBackup; /* backup boot sector */ + u_int bpbUsedBitmapClust1; /* used block bitmap cluster 1 */ + u_int bpbUsedBitmapClust2; /* used block bitmap cluster 2 */ + u_int bpbUpcaseTableClust; /* upcase table cluster */ + u_int bpbClusterHeapOffset; /* start of EXFAT data area */ + u_int bpbBPSshift; /* bytes per sector shift value */ + u_int bpbSPCshift; /* sectors per cluster shift value */ + u_int bpbClusterCount; /* number of clusters */ + u_int bpbUpcaseTableSectors; /* upcase table sectors */ + u_int bpbUsedBitmapSectors; /* used block bitmap sectors */ }; -#define BPBGAP 0, 0, 0, 0, 0, 0 +/* + * Structure of an EXFAT allocation bitmap (cluster heap) entry. + */ +struct exfatdir_bitmap { + uint8_t type; /* entry type == 0x81 */ + uint8_t flags; /* secondary flags */ +#define EX_FLAG_BITMAP2 0x01 /* entry is pointing to 2nd bitmap */ + uint8_t reserved[18]; + uint8_t firstcluster[4];/* first bitmap cluster */ + uint8_t datalength[8]; /* size of bitmap in bytes */ +}; + +/* + * Structure of an EXFAT UTF-16 upper case translation table entry. + */ +struct exfatdir_upcasetable { + uint8_t type; /* entry type == 0x82 */ + uint8_t reserved1[3]; + uint8_t chksum[4]; /* checksum of compressed table */ + uint8_t reserved2[12]; + uint8_t firstcluster[4]; /* first bitmap cluster */ + uint8_t datalength[8]; /* size of bitmap in bytes */ +}; + +/* + * Structure of an EXFAT volume label entry. + */ +struct exfatdir_label { + uint8_t type; /* entry type == 0x83 */ + uint8_t namelength; /* number of UTF-16 characters */ + uint8_t label[22]; /* up to 11 UTF-16 characters */ + uint8_t reserved[8]; +}; + +#define BPBGAP 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 static struct { const char *name; @@ -214,6 +293,745 @@ static const u_int8_t bootcode[] = { 0 }; +/* + * Up-case table recommended in section 7.2.5.1 of the exFAT File System + * Specification. + */ +static u_int compr_upcase_table_cksum = 0xE619D30D; + +static uint8_t compr_upcase_table[] = { + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, + 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, + 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, + 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, + 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, + 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, + 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, + 0x60, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, + 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x7B, 0x00, + 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, + 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x88, 0x00, 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, + 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, + 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x98, 0x00, 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, + 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, + 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, + 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, + 0xA8, 0x00, 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, + 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, + 0xB0, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, + 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, + 0xB8, 0x00, 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, + 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, + 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, + 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, + 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, + 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, + 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00, + 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, + 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0xDF, 0x00, + 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, + 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, + 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, + 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, + 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xF7, 0x00, + 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, + 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0x78, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, + 0x04, 0x01, 0x04, 0x01, 0x06, 0x01, 0x06, 0x01, + 0x08, 0x01, 0x08, 0x01, 0x0A, 0x01, 0x0A, 0x01, + 0x0C, 0x01, 0x0C, 0x01, 0x0E, 0x01, 0x0E, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x12, 0x01, 0x12, 0x01, + 0x14, 0x01, 0x14, 0x01, 0x16, 0x01, 0x16, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x1A, 0x01, + 0x1C, 0x01, 0x1C, 0x01, 0x1E, 0x01, 0x1E, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x28, 0x01, 0x28, 0x01, 0x2A, 0x01, 0x2A, 0x01, + 0x2C, 0x01, 0x2C, 0x01, 0x2E, 0x01, 0x2E, 0x01, + 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x36, 0x01, 0x36, 0x01, + 0x38, 0x01, 0x39, 0x01, 0x39, 0x01, 0x3B, 0x01, + 0x3B, 0x01, 0x3D, 0x01, 0x3D, 0x01, 0x3F, 0x01, + 0x3F, 0x01, 0x41, 0x01, 0x41, 0x01, 0x43, 0x01, + 0x43, 0x01, 0x45, 0x01, 0x45, 0x01, 0x47, 0x01, + 0x47, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4A, 0x01, + 0x4C, 0x01, 0x4C, 0x01, 0x4E, 0x01, 0x4E, 0x01, + 0x50, 0x01, 0x50, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x54, 0x01, 0x54, 0x01, 0x56, 0x01, 0x56, 0x01, + 0x58, 0x01, 0x58, 0x01, 0x5A, 0x01, 0x5A, 0x01, + 0x5C, 0x01, 0x5C, 0x01, 0x5E, 0x01, 0x5E, 0x01, + 0x60, 0x01, 0x60, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x64, 0x01, 0x64, 0x01, 0x66, 0x01, 0x66, 0x01, + 0x68, 0x01, 0x68, 0x01, 0x6A, 0x01, 0x6A, 0x01, + 0x6C, 0x01, 0x6C, 0x01, 0x6E, 0x01, 0x6E, 0x01, + 0x70, 0x01, 0x70, 0x01, 0x72, 0x01, 0x72, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x76, 0x01, 0x76, 0x01, + 0x78, 0x01, 0x79, 0x01, 0x79, 0x01, 0x7B, 0x01, + 0x7B, 0x01, 0x7D, 0x01, 0x7D, 0x01, 0x7F, 0x01, + 0x43, 0x02, 0x81, 0x01, 0x82, 0x01, 0x82, 0x01, + 0x84, 0x01, 0x84, 0x01, 0x86, 0x01, 0x87, 0x01, + 0x87, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01, + 0x8B, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8F, 0x01, + 0x90, 0x01, 0x91, 0x01, 0x91, 0x01, 0x93, 0x01, + 0x94, 0x01, 0xF6, 0x01, 0x96, 0x01, 0x97, 0x01, + 0x98, 0x01, 0x98, 0x01, 0x3D, 0x02, 0x9B, 0x01, + 0x9C, 0x01, 0x9D, 0x01, 0x20, 0x02, 0x9F, 0x01, + 0xA0, 0x01, 0xA0, 0x01, 0xA2, 0x01, 0xA2, 0x01, + 0xA4, 0x01, 0xA4, 0x01, 0xA6, 0x01, 0xA7, 0x01, + 0xA7, 0x01, 0xA9, 0x01, 0xAA, 0x01, 0xAB, 0x01, + 0xAC, 0x01, 0xAC, 0x01, 0xAE, 0x01, 0xAF, 0x01, + 0xAF, 0x01, 0xB1, 0x01, 0xB2, 0x01, 0xB3, 0x01, + 0xB3, 0x01, 0xB5, 0x01, 0xB5, 0x01, 0xB7, 0x01, + 0xB8, 0x01, 0xB8, 0x01, 0xBA, 0x01, 0xBB, 0x01, + 0xBC, 0x01, 0xBC, 0x01, 0xBE, 0x01, 0xF7, 0x01, + 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01, + 0xC4, 0x01, 0xC5, 0x01, 0xC4, 0x01, 0xC7, 0x01, + 0xC8, 0x01, 0xC7, 0x01, 0xCA, 0x01, 0xCB, 0x01, + 0xCA, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCF, 0x01, + 0xCF, 0x01, 0xD1, 0x01, 0xD1, 0x01, 0xD3, 0x01, + 0xD3, 0x01, 0xD5, 0x01, 0xD5, 0x01, 0xD7, 0x01, + 0xD7, 0x01, 0xD9, 0x01, 0xD9, 0x01, 0xDB, 0x01, + 0xDB, 0x01, 0x8E, 0x01, 0xDE, 0x01, 0xDE, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE2, 0x01, 0xE2, 0x01, + 0xE4, 0x01, 0xE4, 0x01, 0xE6, 0x01, 0xE6, 0x01, + 0xE8, 0x01, 0xE8, 0x01, 0xEA, 0x01, 0xEA, 0x01, + 0xEC, 0x01, 0xEC, 0x01, 0xEE, 0x01, 0xEE, 0x01, + 0xF0, 0x01, 0xF1, 0x01, 0xF2, 0x01, 0xF1, 0x01, + 0xF4, 0x01, 0xF4, 0x01, 0xF6, 0x01, 0xF7, 0x01, + 0xF8, 0x01, 0xF8, 0x01, 0xFA, 0x01, 0xFA, 0x01, + 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0xFE, 0x01, + 0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x04, 0x02, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, + 0x08, 0x02, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, + 0x0C, 0x02, 0x0C, 0x02, 0x0E, 0x02, 0x0E, 0x02, + 0x10, 0x02, 0x10, 0x02, 0x12, 0x02, 0x12, 0x02, + 0x14, 0x02, 0x14, 0x02, 0x16, 0x02, 0x16, 0x02, + 0x18, 0x02, 0x18, 0x02, 0x1A, 0x02, 0x1A, 0x02, + 0x1C, 0x02, 0x1C, 0x02, 0x1E, 0x02, 0x1E, 0x02, + 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x24, 0x02, 0x24, 0x02, 0x26, 0x02, 0x26, 0x02, + 0x28, 0x02, 0x28, 0x02, 0x2A, 0x02, 0x2A, 0x02, + 0x2C, 0x02, 0x2C, 0x02, 0x2E, 0x02, 0x2E, 0x02, + 0x30, 0x02, 0x30, 0x02, 0x32, 0x02, 0x32, 0x02, + 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, + 0x38, 0x02, 0x39, 0x02, 0x65, 0x2C, 0x3B, 0x02, + 0x3B, 0x02, 0x3D, 0x02, 0x66, 0x2C, 0x3F, 0x02, + 0x40, 0x02, 0x41, 0x02, 0x41, 0x02, 0x43, 0x02, + 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x46, 0x02, + 0x48, 0x02, 0x48, 0x02, 0x4A, 0x02, 0x4A, 0x02, + 0x4C, 0x02, 0x4C, 0x02, 0x4E, 0x02, 0x4E, 0x02, + 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x81, 0x01, + 0x86, 0x01, 0x55, 0x02, 0x89, 0x01, 0x8A, 0x01, + 0x58, 0x02, 0x8F, 0x01, 0x5A, 0x02, 0x90, 0x01, + 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5F, 0x02, + 0x93, 0x01, 0x61, 0x02, 0x62, 0x02, 0x94, 0x01, + 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, + 0x97, 0x01, 0x96, 0x01, 0x6A, 0x02, 0x62, 0x2C, + 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x9C, 0x01, + 0x70, 0x02, 0x71, 0x02, 0x9D, 0x01, 0x73, 0x02, + 0x74, 0x02, 0x9F, 0x01, 0x76, 0x02, 0x77, 0x02, + 0x78, 0x02, 0x79, 0x02, 0x7A, 0x02, 0x7B, 0x02, + 0x7C, 0x02, 0x64, 0x2C, 0x7E, 0x02, 0x7F, 0x02, + 0xA6, 0x01, 0x81, 0x02, 0x82, 0x02, 0xA9, 0x01, + 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, + 0xAE, 0x01, 0x44, 0x02, 0xB1, 0x01, 0xB2, 0x01, + 0x45, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8F, 0x02, + 0x90, 0x02, 0x91, 0x02, 0xB7, 0x01, 0x93, 0x02, + 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, + 0x98, 0x02, 0x99, 0x02, 0x9A, 0x02, 0x9B, 0x02, + 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9F, 0x02, + 0xA0, 0x02, 0xA1, 0x02, 0xA2, 0x02, 0xA3, 0x02, + 0xA4, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, + 0xA8, 0x02, 0xA9, 0x02, 0xAA, 0x02, 0xAB, 0x02, + 0xAC, 0x02, 0xAD, 0x02, 0xAE, 0x02, 0xAF, 0x02, + 0xB0, 0x02, 0xB1, 0x02, 0xB2, 0x02, 0xB3, 0x02, + 0xB4, 0x02, 0xB5, 0x02, 0xB6, 0x02, 0xB7, 0x02, + 0xB8, 0x02, 0xB9, 0x02, 0xBA, 0x02, 0xBB, 0x02, + 0xBC, 0x02, 0xBD, 0x02, 0xBE, 0x02, 0xBF, 0x02, + 0xC0, 0x02, 0xC1, 0x02, 0xC2, 0x02, 0xC3, 0x02, + 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, + 0xC8, 0x02, 0xC9, 0x02, 0xCA, 0x02, 0xCB, 0x02, + 0xCC, 0x02, 0xCD, 0x02, 0xCE, 0x02, 0xCF, 0x02, + 0xD0, 0x02, 0xD1, 0x02, 0xD2, 0x02, 0xD3, 0x02, + 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0xD7, 0x02, + 0xD8, 0x02, 0xD9, 0x02, 0xDA, 0x02, 0xDB, 0x02, + 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x02, 0xDF, 0x02, + 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02, + 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x02, + 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, + 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x02, + 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, + 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, + 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, + 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, + 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x03, 0x03, + 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, + 0x08, 0x03, 0x09, 0x03, 0x0A, 0x03, 0x0B, 0x03, + 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0F, 0x03, + 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, + 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, 0x03, + 0x18, 0x03, 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, + 0x1C, 0x03, 0x1D, 0x03, 0x1E, 0x03, 0x1F, 0x03, + 0x20, 0x03, 0x21, 0x03, 0x22, 0x03, 0x23, 0x03, + 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, + 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, + 0x2C, 0x03, 0x2D, 0x03, 0x2E, 0x03, 0x2F, 0x03, + 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, + 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, + 0x38, 0x03, 0x39, 0x03, 0x3A, 0x03, 0x3B, 0x03, + 0x3C, 0x03, 0x3D, 0x03, 0x3E, 0x03, 0x3F, 0x03, + 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, + 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, + 0x48, 0x03, 0x49, 0x03, 0x4A, 0x03, 0x4B, 0x03, + 0x4C, 0x03, 0x4D, 0x03, 0x4E, 0x03, 0x4F, 0x03, + 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, + 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, + 0x58, 0x03, 0x59, 0x03, 0x5A, 0x03, 0x5B, 0x03, + 0x5C, 0x03, 0x5D, 0x03, 0x5E, 0x03, 0x5F, 0x03, + 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, + 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, + 0x68, 0x03, 0x69, 0x03, 0x6A, 0x03, 0x6B, 0x03, + 0x6C, 0x03, 0x6D, 0x03, 0x6E, 0x03, 0x6F, 0x03, + 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, + 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, + 0x78, 0x03, 0x79, 0x03, 0x7A, 0x03, 0xFD, 0x03, + 0xFE, 0x03, 0xFF, 0x03, 0x7E, 0x03, 0x7F, 0x03, + 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, + 0x84, 0x03, 0x85, 0x03, 0x86, 0x03, 0x87, 0x03, + 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, 0x8B, 0x03, + 0x8C, 0x03, 0x8D, 0x03, 0x8E, 0x03, 0x8F, 0x03, + 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, + 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, + 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, + 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9F, 0x03, + 0xA0, 0x03, 0xA1, 0x03, 0xA2, 0x03, 0xA3, 0x03, + 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, + 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, + 0x86, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, + 0xB0, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, + 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, + 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, + 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9F, 0x03, + 0xA0, 0x03, 0xA1, 0x03, 0xA3, 0x03, 0xA3, 0x03, + 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, + 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, + 0x8C, 0x03, 0x8E, 0x03, 0x8F, 0x03, 0xCF, 0x03, + 0xD0, 0x03, 0xD1, 0x03, 0xD2, 0x03, 0xD3, 0x03, + 0xD4, 0x03, 0xD5, 0x03, 0xD6, 0x03, 0xD7, 0x03, + 0xD8, 0x03, 0xD8, 0x03, 0xDA, 0x03, 0xDA, 0x03, + 0xDC, 0x03, 0xDC, 0x03, 0xDE, 0x03, 0xDE, 0x03, + 0xE0, 0x03, 0xE0, 0x03, 0xE2, 0x03, 0xE2, 0x03, + 0xE4, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE6, 0x03, + 0xE8, 0x03, 0xE8, 0x03, 0xEA, 0x03, 0xEA, 0x03, + 0xEC, 0x03, 0xEC, 0x03, 0xEE, 0x03, 0xEE, 0x03, + 0xF0, 0x03, 0xF1, 0x03, 0xF9, 0x03, 0xF3, 0x03, + 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, + 0xF7, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFA, 0x03, + 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x03, + 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, + 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, + 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, + 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0F, 0x04, + 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, + 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, + 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, + 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1F, 0x04, + 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, + 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, + 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, + 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2F, 0x04, + 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, + 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, + 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, + 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1F, 0x04, + 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, + 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, + 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, + 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2F, 0x04, + 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, + 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, + 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, + 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0F, 0x04, + 0x60, 0x04, 0x60, 0x04, 0x62, 0x04, 0x62, 0x04, + 0x64, 0x04, 0x64, 0x04, 0x66, 0x04, 0x66, 0x04, + 0x68, 0x04, 0x68, 0x04, 0x6A, 0x04, 0x6A, 0x04, + 0x6C, 0x04, 0x6C, 0x04, 0x6E, 0x04, 0x6E, 0x04, + 0x70, 0x04, 0x70, 0x04, 0x72, 0x04, 0x72, 0x04, + 0x74, 0x04, 0x74, 0x04, 0x76, 0x04, 0x76, 0x04, + 0x78, 0x04, 0x78, 0x04, 0x7A, 0x04, 0x7A, 0x04, + 0x7C, 0x04, 0x7C, 0x04, 0x7E, 0x04, 0x7E, 0x04, + 0x80, 0x04, 0x80, 0x04, 0x82, 0x04, 0x83, 0x04, + 0x84, 0x04, 0x85, 0x04, 0x86, 0x04, 0x87, 0x04, + 0x88, 0x04, 0x89, 0x04, 0x8A, 0x04, 0x8A, 0x04, + 0x8C, 0x04, 0x8C, 0x04, 0x8E, 0x04, 0x8E, 0x04, + 0x90, 0x04, 0x90, 0x04, 0x92, 0x04, 0x92, 0x04, + 0x94, 0x04, 0x94, 0x04, 0x96, 0x04, 0x96, 0x04, + 0x98, 0x04, 0x98, 0x04, 0x9A, 0x04, 0x9A, 0x04, + 0x9C, 0x04, 0x9C, 0x04, 0x9E, 0x04, 0x9E, 0x04, + 0xA0, 0x04, 0xA0, 0x04, 0xA2, 0x04, 0xA2, 0x04, + 0xA4, 0x04, 0xA4, 0x04, 0xA6, 0x04, 0xA6, 0x04, + 0xA8, 0x04, 0xA8, 0x04, 0xAA, 0x04, 0xAA, 0x04, + 0xAC, 0x04, 0xAC, 0x04, 0xAE, 0x04, 0xAE, 0x04, + 0xB0, 0x04, 0xB0, 0x04, 0xB2, 0x04, 0xB2, 0x04, + 0xB4, 0x04, 0xB4, 0x04, 0xB6, 0x04, 0xB6, 0x04, + 0xB8, 0x04, 0xB8, 0x04, 0xBA, 0x04, 0xBA, 0x04, + 0xBC, 0x04, 0xBC, 0x04, 0xBE, 0x04, 0xBE, 0x04, + 0xC0, 0x04, 0xC1, 0x04, 0xC1, 0x04, 0xC3, 0x04, + 0xC3, 0x04, 0xC5, 0x04, 0xC5, 0x04, 0xC7, 0x04, + 0xC7, 0x04, 0xC9, 0x04, 0xC9, 0x04, 0xCB, 0x04, + 0xCB, 0x04, 0xCD, 0x04, 0xCD, 0x04, 0xC0, 0x04, + 0xD0, 0x04, 0xD0, 0x04, 0xD2, 0x04, 0xD2, 0x04, + 0xD4, 0x04, 0xD4, 0x04, 0xD6, 0x04, 0xD6, 0x04, + 0xD8, 0x04, 0xD8, 0x04, 0xDA, 0x04, 0xDA, 0x04, + 0xDC, 0x04, 0xDC, 0x04, 0xDE, 0x04, 0xDE, 0x04, + 0xE0, 0x04, 0xE0, 0x04, 0xE2, 0x04, 0xE2, 0x04, + 0xE4, 0x04, 0xE4, 0x04, 0xE6, 0x04, 0xE6, 0x04, + 0xE8, 0x04, 0xE8, 0x04, 0xEA, 0x04, 0xEA, 0x04, + 0xEC, 0x04, 0xEC, 0x04, 0xEE, 0x04, 0xEE, 0x04, + 0xF0, 0x04, 0xF0, 0x04, 0xF2, 0x04, 0xF2, 0x04, + 0xF4, 0x04, 0xF4, 0x04, 0xF6, 0x04, 0xF6, 0x04, + 0xF8, 0x04, 0xF8, 0x04, 0xFA, 0x04, 0xFA, 0x04, + 0xFC, 0x04, 0xFC, 0x04, 0xFE, 0x04, 0xFE, 0x04, + 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x02, 0x05, + 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, + 0x08, 0x05, 0x08, 0x05, 0x0A, 0x05, 0x0A, 0x05, + 0x0C, 0x05, 0x0C, 0x05, 0x0E, 0x05, 0x0E, 0x05, + 0x10, 0x05, 0x10, 0x05, 0x12, 0x05, 0x12, 0x05, + 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, 0x05, + 0x18, 0x05, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, + 0x1C, 0x05, 0x1D, 0x05, 0x1E, 0x05, 0x1F, 0x05, + 0x20, 0x05, 0x21, 0x05, 0x22, 0x05, 0x23, 0x05, + 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0x27, 0x05, + 0x28, 0x05, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x05, + 0x2C, 0x05, 0x2D, 0x05, 0x2E, 0x05, 0x2F, 0x05, + 0x30, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, + 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, + 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, + 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3F, 0x05, + 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, + 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, + 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, + 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4F, 0x05, + 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, + 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, 0x05, + 0x58, 0x05, 0x59, 0x05, 0x5A, 0x05, 0x5B, 0x05, + 0x5C, 0x05, 0x5D, 0x05, 0x5E, 0x05, 0x5F, 0x05, + 0x60, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, + 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, + 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, + 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3F, 0x05, + 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, + 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, + 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, + 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4F, 0x05, + 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, + 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0xFF, 0xFF, + 0xF6, 0x17, 0x63, 0x2C, 0x7E, 0x1D, 0x7F, 0x1D, + 0x80, 0x1D, 0x81, 0x1D, 0x82, 0x1D, 0x83, 0x1D, + 0x84, 0x1D, 0x85, 0x1D, 0x86, 0x1D, 0x87, 0x1D, + 0x88, 0x1D, 0x89, 0x1D, 0x8A, 0x1D, 0x8B, 0x1D, + 0x8C, 0x1D, 0x8D, 0x1D, 0x8E, 0x1D, 0x8F, 0x1D, + 0x90, 0x1D, 0x91, 0x1D, 0x92, 0x1D, 0x93, 0x1D, + 0x94, 0x1D, 0x95, 0x1D, 0x96, 0x1D, 0x97, 0x1D, + 0x98, 0x1D, 0x99, 0x1D, 0x9A, 0x1D, 0x9B, 0x1D, + 0x9C, 0x1D, 0x9D, 0x1D, 0x9E, 0x1D, 0x9F, 0x1D, + 0xA0, 0x1D, 0xA1, 0x1D, 0xA2, 0x1D, 0xA3, 0x1D, + 0xA4, 0x1D, 0xA5, 0x1D, 0xA6, 0x1D, 0xA7, 0x1D, + 0xA8, 0x1D, 0xA9, 0x1D, 0xAA, 0x1D, 0xAB, 0x1D, + 0xAC, 0x1D, 0xAD, 0x1D, 0xAE, 0x1D, 0xAF, 0x1D, + 0xB0, 0x1D, 0xB1, 0x1D, 0xB2, 0x1D, 0xB3, 0x1D, + 0xB4, 0x1D, 0xB5, 0x1D, 0xB6, 0x1D, 0xB7, 0x1D, + 0xB8, 0x1D, 0xB9, 0x1D, 0xBA, 0x1D, 0xBB, 0x1D, + 0xBC, 0x1D, 0xBD, 0x1D, 0xBE, 0x1D, 0xBF, 0x1D, + 0xC0, 0x1D, 0xC1, 0x1D, 0xC2, 0x1D, 0xC3, 0x1D, + 0xC4, 0x1D, 0xC5, 0x1D, 0xC6, 0x1D, 0xC7, 0x1D, + 0xC8, 0x1D, 0xC9, 0x1D, 0xCA, 0x1D, 0xCB, 0x1D, + 0xCC, 0x1D, 0xCD, 0x1D, 0xCE, 0x1D, 0xCF, 0x1D, + 0xD0, 0x1D, 0xD1, 0x1D, 0xD2, 0x1D, 0xD3, 0x1D, + 0xD4, 0x1D, 0xD5, 0x1D, 0xD6, 0x1D, 0xD7, 0x1D, + 0xD8, 0x1D, 0xD9, 0x1D, 0xDA, 0x1D, 0xDB, 0x1D, + 0xDC, 0x1D, 0xDD, 0x1D, 0xDE, 0x1D, 0xDF, 0x1D, + 0xE0, 0x1D, 0xE1, 0x1D, 0xE2, 0x1D, 0xE3, 0x1D, + 0xE4, 0x1D, 0xE5, 0x1D, 0xE6, 0x1D, 0xE7, 0x1D, + 0xE8, 0x1D, 0xE9, 0x1D, 0xEA, 0x1D, 0xEB, 0x1D, + 0xEC, 0x1D, 0xED, 0x1D, 0xEE, 0x1D, 0xEF, 0x1D, + 0xF0, 0x1D, 0xF1, 0x1D, 0xF2, 0x1D, 0xF3, 0x1D, + 0xF4, 0x1D, 0xF5, 0x1D, 0xF6, 0x1D, 0xF7, 0x1D, + 0xF8, 0x1D, 0xF9, 0x1D, 0xFA, 0x1D, 0xFB, 0x1D, + 0xFC, 0x1D, 0xFD, 0x1D, 0xFE, 0x1D, 0xFF, 0x1D, + 0x00, 0x1E, 0x00, 0x1E, 0x02, 0x1E, 0x02, 0x1E, + 0x04, 0x1E, 0x04, 0x1E, 0x06, 0x1E, 0x06, 0x1E, + 0x08, 0x1E, 0x08, 0x1E, 0x0A, 0x1E, 0x0A, 0x1E, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0E, 0x1E, 0x0E, 0x1E, + 0x10, 0x1E, 0x10, 0x1E, 0x12, 0x1E, 0x12, 0x1E, + 0x14, 0x1E, 0x14, 0x1E, 0x16, 0x1E, 0x16, 0x1E, + 0x18, 0x1E, 0x18, 0x1E, 0x1A, 0x1E, 0x1A, 0x1E, + 0x1C, 0x1E, 0x1C, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, + 0x20, 0x1E, 0x20, 0x1E, 0x22, 0x1E, 0x22, 0x1E, + 0x24, 0x1E, 0x24, 0x1E, 0x26, 0x1E, 0x26, 0x1E, + 0x28, 0x1E, 0x28, 0x1E, 0x2A, 0x1E, 0x2A, 0x1E, + 0x2C, 0x1E, 0x2C, 0x1E, 0x2E, 0x1E, 0x2E, 0x1E, + 0x30, 0x1E, 0x30, 0x1E, 0x32, 0x1E, 0x32, 0x1E, + 0x34, 0x1E, 0x34, 0x1E, 0x36, 0x1E, 0x36, 0x1E, + 0x38, 0x1E, 0x38, 0x1E, 0x3A, 0x1E, 0x3A, 0x1E, + 0x3C, 0x1E, 0x3C, 0x1E, 0x3E, 0x1E, 0x3E, 0x1E, + 0x40, 0x1E, 0x40, 0x1E, 0x42, 0x1E, 0x42, 0x1E, + 0x44, 0x1E, 0x44, 0x1E, 0x46, 0x1E, 0x46, 0x1E, + 0x48, 0x1E, 0x48, 0x1E, 0x4A, 0x1E, 0x4A, 0x1E, + 0x4C, 0x1E, 0x4C, 0x1E, 0x4E, 0x1E, 0x4E, 0x1E, + 0x50, 0x1E, 0x50, 0x1E, 0x52, 0x1E, 0x52, 0x1E, + 0x54, 0x1E, 0x54, 0x1E, 0x56, 0x1E, 0x56, 0x1E, + 0x58, 0x1E, 0x58, 0x1E, 0x5A, 0x1E, 0x5A, 0x1E, + 0x5C, 0x1E, 0x5C, 0x1E, 0x5E, 0x1E, 0x5E, 0x1E, + 0x60, 0x1E, 0x60, 0x1E, 0x62, 0x1E, 0x62, 0x1E, + 0x64, 0x1E, 0x64, 0x1E, 0x66, 0x1E, 0x66, 0x1E, + 0x68, 0x1E, 0x68, 0x1E, 0x6A, 0x1E, 0x6A, 0x1E, + 0x6C, 0x1E, 0x6C, 0x1E, 0x6E, 0x1E, 0x6E, 0x1E, + 0x70, 0x1E, 0x70, 0x1E, 0x72, 0x1E, 0x72, 0x1E, + 0x74, 0x1E, 0x74, 0x1E, 0x76, 0x1E, 0x76, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x7A, 0x1E, 0x7A, 0x1E, + 0x7C, 0x1E, 0x7C, 0x1E, 0x7E, 0x1E, 0x7E, 0x1E, + 0x80, 0x1E, 0x80, 0x1E, 0x82, 0x1E, 0x82, 0x1E, + 0x84, 0x1E, 0x84, 0x1E, 0x86, 0x1E, 0x86, 0x1E, + 0x88, 0x1E, 0x88, 0x1E, 0x8A, 0x1E, 0x8A, 0x1E, + 0x8C, 0x1E, 0x8C, 0x1E, 0x8E, 0x1E, 0x8E, 0x1E, + 0x90, 0x1E, 0x90, 0x1E, 0x92, 0x1E, 0x92, 0x1E, + 0x94, 0x1E, 0x94, 0x1E, 0x96, 0x1E, 0x97, 0x1E, + 0x98, 0x1E, 0x99, 0x1E, 0x9A, 0x1E, 0x9B, 0x1E, + 0x9C, 0x1E, 0x9D, 0x1E, 0x9E, 0x1E, 0x9F, 0x1E, + 0xA0, 0x1E, 0xA0, 0x1E, 0xA2, 0x1E, 0xA2, 0x1E, + 0xA4, 0x1E, 0xA4, 0x1E, 0xA6, 0x1E, 0xA6, 0x1E, + 0xA8, 0x1E, 0xA8, 0x1E, 0xAA, 0x1E, 0xAA, 0x1E, + 0xAC, 0x1E, 0xAC, 0x1E, 0xAE, 0x1E, 0xAE, 0x1E, + 0xB0, 0x1E, 0xB0, 0x1E, 0xB2, 0x1E, 0xB2, 0x1E, + 0xB4, 0x1E, 0xB4, 0x1E, 0xB6, 0x1E, 0xB6, 0x1E, + 0xB8, 0x1E, 0xB8, 0x1E, 0xBA, 0x1E, 0xBA, 0x1E, + 0xBC, 0x1E, 0xBC, 0x1E, 0xBE, 0x1E, 0xBE, 0x1E, + 0xC0, 0x1E, 0xC0, 0x1E, 0xC2, 0x1E, 0xC2, 0x1E, + 0xC4, 0x1E, 0xC4, 0x1E, 0xC6, 0x1E, 0xC6, 0x1E, + 0xC8, 0x1E, 0xC8, 0x1E, 0xCA, 0x1E, 0xCA, 0x1E, + 0xCC, 0x1E, 0xCC, 0x1E, 0xCE, 0x1E, 0xCE, 0x1E, + 0xD0, 0x1E, 0xD0, 0x1E, 0xD2, 0x1E, 0xD2, 0x1E, + 0xD4, 0x1E, 0xD4, 0x1E, 0xD6, 0x1E, 0xD6, 0x1E, + 0xD8, 0x1E, 0xD8, 0x1E, 0xDA, 0x1E, 0xDA, 0x1E, + 0xDC, 0x1E, 0xDC, 0x1E, 0xDE, 0x1E, 0xDE, 0x1E, + 0xE0, 0x1E, 0xE0, 0x1E, 0xE2, 0x1E, 0xE2, 0x1E, + 0xE4, 0x1E, 0xE4, 0x1E, 0xE6, 0x1E, 0xE6, 0x1E, + 0xE8, 0x1E, 0xE8, 0x1E, 0xEA, 0x1E, 0xEA, 0x1E, + 0xEC, 0x1E, 0xEC, 0x1E, 0xEE, 0x1E, 0xEE, 0x1E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF2, 0x1E, 0xF2, 0x1E, + 0xF4, 0x1E, 0xF4, 0x1E, 0xF6, 0x1E, 0xF6, 0x1E, + 0xF8, 0x1E, 0xF8, 0x1E, 0xFA, 0x1E, 0xFB, 0x1E, + 0xFC, 0x1E, 0xFD, 0x1E, 0xFE, 0x1E, 0xFF, 0x1E, + 0x08, 0x1F, 0x09, 0x1F, 0x0A, 0x1F, 0x0B, 0x1F, + 0x0C, 0x1F, 0x0D, 0x1F, 0x0E, 0x1F, 0x0F, 0x1F, + 0x08, 0x1F, 0x09, 0x1F, 0x0A, 0x1F, 0x0B, 0x1F, + 0x0C, 0x1F, 0x0D, 0x1F, 0x0E, 0x1F, 0x0F, 0x1F, + 0x18, 0x1F, 0x19, 0x1F, 0x1A, 0x1F, 0x1B, 0x1F, + 0x1C, 0x1F, 0x1D, 0x1F, 0x16, 0x1F, 0x17, 0x1F, + 0x18, 0x1F, 0x19, 0x1F, 0x1A, 0x1F, 0x1B, 0x1F, + 0x1C, 0x1F, 0x1D, 0x1F, 0x1E, 0x1F, 0x1F, 0x1F, + 0x28, 0x1F, 0x29, 0x1F, 0x2A, 0x1F, 0x2B, 0x1F, + 0x2C, 0x1F, 0x2D, 0x1F, 0x2E, 0x1F, 0x2F, 0x1F, + 0x28, 0x1F, 0x29, 0x1F, 0x2A, 0x1F, 0x2B, 0x1F, + 0x2C, 0x1F, 0x2D, 0x1F, 0x2E, 0x1F, 0x2F, 0x1F, + 0x38, 0x1F, 0x39, 0x1F, 0x3A, 0x1F, 0x3B, 0x1F, + 0x3C, 0x1F, 0x3D, 0x1F, 0x3E, 0x1F, 0x3F, 0x1F, + 0x38, 0x1F, 0x39, 0x1F, 0x3A, 0x1F, 0x3B, 0x1F, + 0x3C, 0x1F, 0x3D, 0x1F, 0x3E, 0x1F, 0x3F, 0x1F, + 0x48, 0x1F, 0x49, 0x1F, 0x4A, 0x1F, 0x4B, 0x1F, + 0x4C, 0x1F, 0x4D, 0x1F, 0x46, 0x1F, 0x47, 0x1F, + 0x48, 0x1F, 0x49, 0x1F, 0x4A, 0x1F, 0x4B, 0x1F, + 0x4C, 0x1F, 0x4D, 0x1F, 0x4E, 0x1F, 0x4F, 0x1F, + 0x50, 0x1F, 0x59, 0x1F, 0x52, 0x1F, 0x5B, 0x1F, + 0x54, 0x1F, 0x5D, 0x1F, 0x56, 0x1F, 0x5F, 0x1F, + 0x58, 0x1F, 0x59, 0x1F, 0x5A, 0x1F, 0x5B, 0x1F, + 0x5C, 0x1F, 0x5D, 0x1F, 0x5E, 0x1F, 0x5F, 0x1F, + 0x68, 0x1F, 0x69, 0x1F, 0x6A, 0x1F, 0x6B, 0x1F, + 0x6C, 0x1F, 0x6D, 0x1F, 0x6E, 0x1F, 0x6F, 0x1F, + 0x68, 0x1F, 0x69, 0x1F, 0x6A, 0x1F, 0x6B, 0x1F, + 0x6C, 0x1F, 0x6D, 0x1F, 0x6E, 0x1F, 0x6F, 0x1F, + 0xBA, 0x1F, 0xBB, 0x1F, 0xC8, 0x1F, 0xC9, 0x1F, + 0xCA, 0x1F, 0xCB, 0x1F, 0xDA, 0x1F, 0xDB, 0x1F, + 0xF8, 0x1F, 0xF9, 0x1F, 0xEA, 0x1F, 0xEB, 0x1F, + 0xFA, 0x1F, 0xFB, 0x1F, 0x7E, 0x1F, 0x7F, 0x1F, + 0x88, 0x1F, 0x89, 0x1F, 0x8A, 0x1F, 0x8B, 0x1F, + 0x8C, 0x1F, 0x8D, 0x1F, 0x8E, 0x1F, 0x8F, 0x1F, + 0x88, 0x1F, 0x89, 0x1F, 0x8A, 0x1F, 0x8B, 0x1F, + 0x8C, 0x1F, 0x8D, 0x1F, 0x8E, 0x1F, 0x8F, 0x1F, + 0x98, 0x1F, 0x99, 0x1F, 0x9A, 0x1F, 0x9B, 0x1F, + 0x9C, 0x1F, 0x9D, 0x1F, 0x9E, 0x1F, 0x9F, 0x1F, + 0x98, 0x1F, 0x99, 0x1F, 0x9A, 0x1F, 0x9B, 0x1F, + 0x9C, 0x1F, 0x9D, 0x1F, 0x9E, 0x1F, 0x9F, 0x1F, + 0xA8, 0x1F, 0xA9, 0x1F, 0xAA, 0x1F, 0xAB, 0x1F, + 0xAC, 0x1F, 0xAD, 0x1F, 0xAE, 0x1F, 0xAF, 0x1F, + 0xA8, 0x1F, 0xA9, 0x1F, 0xAA, 0x1F, 0xAB, 0x1F, + 0xAC, 0x1F, 0xAD, 0x1F, 0xAE, 0x1F, 0xAF, 0x1F, + 0xB8, 0x1F, 0xB9, 0x1F, 0xB2, 0x1F, 0xBC, 0x1F, + 0xB4, 0x1F, 0xB5, 0x1F, 0xB6, 0x1F, 0xB7, 0x1F, + 0xB8, 0x1F, 0xB9, 0x1F, 0xBA, 0x1F, 0xBB, 0x1F, + 0xBC, 0x1F, 0xBD, 0x1F, 0xBE, 0x1F, 0xBF, 0x1F, + 0xC0, 0x1F, 0xC1, 0x1F, 0xC2, 0x1F, 0xC3, 0x1F, + 0xC4, 0x1F, 0xC5, 0x1F, 0xC6, 0x1F, 0xC7, 0x1F, + 0xC8, 0x1F, 0xC9, 0x1F, 0xCA, 0x1F, 0xCB, 0x1F, + 0xC3, 0x1F, 0xCD, 0x1F, 0xCE, 0x1F, 0xCF, 0x1F, + 0xD8, 0x1F, 0xD9, 0x1F, 0xD2, 0x1F, 0xD3, 0x1F, + 0xD4, 0x1F, 0xD5, 0x1F, 0xD6, 0x1F, 0xD7, 0x1F, + 0xD8, 0x1F, 0xD9, 0x1F, 0xDA, 0x1F, 0xDB, 0x1F, + 0xDC, 0x1F, 0xDD, 0x1F, 0xDE, 0x1F, 0xDF, 0x1F, + 0xE8, 0x1F, 0xE9, 0x1F, 0xE2, 0x1F, 0xE3, 0x1F, + 0xE4, 0x1F, 0xEC, 0x1F, 0xE6, 0x1F, 0xE7, 0x1F, + 0xE8, 0x1F, 0xE9, 0x1F, 0xEA, 0x1F, 0xEB, 0x1F, + 0xEC, 0x1F, 0xED, 0x1F, 0xEE, 0x1F, 0xEF, 0x1F, + 0xF0, 0x1F, 0xF1, 0x1F, 0xF2, 0x1F, 0xF3, 0x1F, + 0xF4, 0x1F, 0xF5, 0x1F, 0xF6, 0x1F, 0xF7, 0x1F, + 0xF8, 0x1F, 0xF9, 0x1F, 0xFA, 0x1F, 0xFB, 0x1F, + 0xF3, 0x1F, 0xFD, 0x1F, 0xFE, 0x1F, 0xFF, 0x1F, + 0x00, 0x20, 0x01, 0x20, 0x02, 0x20, 0x03, 0x20, + 0x04, 0x20, 0x05, 0x20, 0x06, 0x20, 0x07, 0x20, + 0x08, 0x20, 0x09, 0x20, 0x0A, 0x20, 0x0B, 0x20, + 0x0C, 0x20, 0x0D, 0x20, 0x0E, 0x20, 0x0F, 0x20, + 0x10, 0x20, 0x11, 0x20, 0x12, 0x20, 0x13, 0x20, + 0x14, 0x20, 0x15, 0x20, 0x16, 0x20, 0x17, 0x20, + 0x18, 0x20, 0x19, 0x20, 0x1A, 0x20, 0x1B, 0x20, + 0x1C, 0x20, 0x1D, 0x20, 0x1E, 0x20, 0x1F, 0x20, + 0x20, 0x20, 0x21, 0x20, 0x22, 0x20, 0x23, 0x20, + 0x24, 0x20, 0x25, 0x20, 0x26, 0x20, 0x27, 0x20, + 0x28, 0x20, 0x29, 0x20, 0x2A, 0x20, 0x2B, 0x20, + 0x2C, 0x20, 0x2D, 0x20, 0x2E, 0x20, 0x2F, 0x20, + 0x30, 0x20, 0x31, 0x20, 0x32, 0x20, 0x33, 0x20, + 0x34, 0x20, 0x35, 0x20, 0x36, 0x20, 0x37, 0x20, + 0x38, 0x20, 0x39, 0x20, 0x3A, 0x20, 0x3B, 0x20, + 0x3C, 0x20, 0x3D, 0x20, 0x3E, 0x20, 0x3F, 0x20, + 0x40, 0x20, 0x41, 0x20, 0x42, 0x20, 0x43, 0x20, + 0x44, 0x20, 0x45, 0x20, 0x46, 0x20, 0x47, 0x20, + 0x48, 0x20, 0x49, 0x20, 0x4A, 0x20, 0x4B, 0x20, + 0x4C, 0x20, 0x4D, 0x20, 0x4E, 0x20, 0x4F, 0x20, + 0x50, 0x20, 0x51, 0x20, 0x52, 0x20, 0x53, 0x20, + 0x54, 0x20, 0x55, 0x20, 0x56, 0x20, 0x57, 0x20, + 0x58, 0x20, 0x59, 0x20, 0x5A, 0x20, 0x5B, 0x20, + 0x5C, 0x20, 0x5D, 0x20, 0x5E, 0x20, 0x5F, 0x20, + 0x60, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x20, + 0x64, 0x20, 0x65, 0x20, 0x66, 0x20, 0x67, 0x20, + 0x68, 0x20, 0x69, 0x20, 0x6A, 0x20, 0x6B, 0x20, + 0x6C, 0x20, 0x6D, 0x20, 0x6E, 0x20, 0x6F, 0x20, + 0x70, 0x20, 0x71, 0x20, 0x72, 0x20, 0x73, 0x20, + 0x74, 0x20, 0x75, 0x20, 0x76, 0x20, 0x77, 0x20, + 0x78, 0x20, 0x79, 0x20, 0x7A, 0x20, 0x7B, 0x20, + 0x7C, 0x20, 0x7D, 0x20, 0x7E, 0x20, 0x7F, 0x20, + 0x80, 0x20, 0x81, 0x20, 0x82, 0x20, 0x83, 0x20, + 0x84, 0x20, 0x85, 0x20, 0x86, 0x20, 0x87, 0x20, + 0x88, 0x20, 0x89, 0x20, 0x8A, 0x20, 0x8B, 0x20, + 0x8C, 0x20, 0x8D, 0x20, 0x8E, 0x20, 0x8F, 0x20, + 0x90, 0x20, 0x91, 0x20, 0x92, 0x20, 0x93, 0x20, + 0x94, 0x20, 0x95, 0x20, 0x96, 0x20, 0x97, 0x20, + 0x98, 0x20, 0x99, 0x20, 0x9A, 0x20, 0x9B, 0x20, + 0x9C, 0x20, 0x9D, 0x20, 0x9E, 0x20, 0x9F, 0x20, + 0xA0, 0x20, 0xA1, 0x20, 0xA2, 0x20, 0xA3, 0x20, + 0xA4, 0x20, 0xA5, 0x20, 0xA6, 0x20, 0xA7, 0x20, + 0xA8, 0x20, 0xA9, 0x20, 0xAA, 0x20, 0xAB, 0x20, + 0xAC, 0x20, 0xAD, 0x20, 0xAE, 0x20, 0xAF, 0x20, + 0xB0, 0x20, 0xB1, 0x20, 0xB2, 0x20, 0xB3, 0x20, + 0xB4, 0x20, 0xB5, 0x20, 0xB6, 0x20, 0xB7, 0x20, + 0xB8, 0x20, 0xB9, 0x20, 0xBA, 0x20, 0xBB, 0x20, + 0xBC, 0x20, 0xBD, 0x20, 0xBE, 0x20, 0xBF, 0x20, + 0xC0, 0x20, 0xC1, 0x20, 0xC2, 0x20, 0xC3, 0x20, + 0xC4, 0x20, 0xC5, 0x20, 0xC6, 0x20, 0xC7, 0x20, + 0xC8, 0x20, 0xC9, 0x20, 0xCA, 0x20, 0xCB, 0x20, + 0xCC, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xCF, 0x20, + 0xD0, 0x20, 0xD1, 0x20, 0xD2, 0x20, 0xD3, 0x20, + 0xD4, 0x20, 0xD5, 0x20, 0xD6, 0x20, 0xD7, 0x20, + 0xD8, 0x20, 0xD9, 0x20, 0xDA, 0x20, 0xDB, 0x20, + 0xDC, 0x20, 0xDD, 0x20, 0xDE, 0x20, 0xDF, 0x20, + 0xE0, 0x20, 0xE1, 0x20, 0xE2, 0x20, 0xE3, 0x20, + 0xE4, 0x20, 0xE5, 0x20, 0xE6, 0x20, 0xE7, 0x20, + 0xE8, 0x20, 0xE9, 0x20, 0xEA, 0x20, 0xEB, 0x20, + 0xEC, 0x20, 0xED, 0x20, 0xEE, 0x20, 0xEF, 0x20, + 0xF0, 0x20, 0xF1, 0x20, 0xF2, 0x20, 0xF3, 0x20, + 0xF4, 0x20, 0xF5, 0x20, 0xF6, 0x20, 0xF7, 0x20, + 0xF8, 0x20, 0xF9, 0x20, 0xFA, 0x20, 0xFB, 0x20, + 0xFC, 0x20, 0xFD, 0x20, 0xFE, 0x20, 0xFF, 0x20, + 0x00, 0x21, 0x01, 0x21, 0x02, 0x21, 0x03, 0x21, + 0x04, 0x21, 0x05, 0x21, 0x06, 0x21, 0x07, 0x21, + 0x08, 0x21, 0x09, 0x21, 0x0A, 0x21, 0x0B, 0x21, + 0x0C, 0x21, 0x0D, 0x21, 0x0E, 0x21, 0x0F, 0x21, + 0x10, 0x21, 0x11, 0x21, 0x12, 0x21, 0x13, 0x21, + 0x14, 0x21, 0x15, 0x21, 0x16, 0x21, 0x17, 0x21, + 0x18, 0x21, 0x19, 0x21, 0x1A, 0x21, 0x1B, 0x21, + 0x1C, 0x21, 0x1D, 0x21, 0x1E, 0x21, 0x1F, 0x21, + 0x20, 0x21, 0x21, 0x21, 0x22, 0x21, 0x23, 0x21, + 0x24, 0x21, 0x25, 0x21, 0x26, 0x21, 0x27, 0x21, + 0x28, 0x21, 0x29, 0x21, 0x2A, 0x21, 0x2B, 0x21, + 0x2C, 0x21, 0x2D, 0x21, 0x2E, 0x21, 0x2F, 0x21, + 0x30, 0x21, 0x31, 0x21, 0x32, 0x21, 0x33, 0x21, + 0x34, 0x21, 0x35, 0x21, 0x36, 0x21, 0x37, 0x21, + 0x38, 0x21, 0x39, 0x21, 0x3A, 0x21, 0x3B, 0x21, + 0x3C, 0x21, 0x3D, 0x21, 0x3E, 0x21, 0x3F, 0x21, + 0x40, 0x21, 0x41, 0x21, 0x42, 0x21, 0x43, 0x21, + 0x44, 0x21, 0x45, 0x21, 0x46, 0x21, 0x47, 0x21, + 0x48, 0x21, 0x49, 0x21, 0x4A, 0x21, 0x4B, 0x21, + 0x4C, 0x21, 0x4D, 0x21, 0x32, 0x21, 0x4F, 0x21, + 0x50, 0x21, 0x51, 0x21, 0x52, 0x21, 0x53, 0x21, + 0x54, 0x21, 0x55, 0x21, 0x56, 0x21, 0x57, 0x21, + 0x58, 0x21, 0x59, 0x21, 0x5A, 0x21, 0x5B, 0x21, + 0x5C, 0x21, 0x5D, 0x21, 0x5E, 0x21, 0x5F, 0x21, + 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, + 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, + 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, + 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6F, 0x21, + 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, + 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, + 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, + 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6F, 0x21, + 0x80, 0x21, 0x81, 0x21, 0x82, 0x21, 0x83, 0x21, + 0x83, 0x21, 0xFF, 0xFF, 0x4B, 0x03, 0xB6, 0x24, + 0xB7, 0x24, 0xB8, 0x24, 0xB9, 0x24, 0xBA, 0x24, + 0xBB, 0x24, 0xBC, 0x24, 0xBD, 0x24, 0xBE, 0x24, + 0xBF, 0x24, 0xC0, 0x24, 0xC1, 0x24, 0xC2, 0x24, + 0xC3, 0x24, 0xC4, 0x24, 0xC5, 0x24, 0xC6, 0x24, + 0xC7, 0x24, 0xC8, 0x24, 0xC9, 0x24, 0xCA, 0x24, + 0xCB, 0x24, 0xCC, 0x24, 0xCD, 0x24, 0xCE, 0x24, + 0xCF, 0x24, 0xFF, 0xFF, 0x46, 0x07, 0x00, 0x2C, + 0x01, 0x2C, 0x02, 0x2C, 0x03, 0x2C, 0x04, 0x2C, + 0x05, 0x2C, 0x06, 0x2C, 0x07, 0x2C, 0x08, 0x2C, + 0x09, 0x2C, 0x0A, 0x2C, 0x0B, 0x2C, 0x0C, 0x2C, + 0x0D, 0x2C, 0x0E, 0x2C, 0x0F, 0x2C, 0x10, 0x2C, + 0x11, 0x2C, 0x12, 0x2C, 0x13, 0x2C, 0x14, 0x2C, + 0x15, 0x2C, 0x16, 0x2C, 0x17, 0x2C, 0x18, 0x2C, + 0x19, 0x2C, 0x1A, 0x2C, 0x1B, 0x2C, 0x1C, 0x2C, + 0x1D, 0x2C, 0x1E, 0x2C, 0x1F, 0x2C, 0x20, 0x2C, + 0x21, 0x2C, 0x22, 0x2C, 0x23, 0x2C, 0x24, 0x2C, + 0x25, 0x2C, 0x26, 0x2C, 0x27, 0x2C, 0x28, 0x2C, + 0x29, 0x2C, 0x2A, 0x2C, 0x2B, 0x2C, 0x2C, 0x2C, + 0x2D, 0x2C, 0x2E, 0x2C, 0x5F, 0x2C, 0x60, 0x2C, + 0x60, 0x2C, 0x62, 0x2C, 0x63, 0x2C, 0x64, 0x2C, + 0x65, 0x2C, 0x66, 0x2C, 0x67, 0x2C, 0x67, 0x2C, + 0x69, 0x2C, 0x69, 0x2C, 0x6B, 0x2C, 0x6B, 0x2C, + 0x6D, 0x2C, 0x6E, 0x2C, 0x6F, 0x2C, 0x70, 0x2C, + 0x71, 0x2C, 0x72, 0x2C, 0x73, 0x2C, 0x74, 0x2C, + 0x75, 0x2C, 0x75, 0x2C, 0x77, 0x2C, 0x78, 0x2C, + 0x79, 0x2C, 0x7A, 0x2C, 0x7B, 0x2C, 0x7C, 0x2C, + 0x7D, 0x2C, 0x7E, 0x2C, 0x7F, 0x2C, 0x80, 0x2C, + 0x80, 0x2C, 0x82, 0x2C, 0x82, 0x2C, 0x84, 0x2C, + 0x84, 0x2C, 0x86, 0x2C, 0x86, 0x2C, 0x88, 0x2C, + 0x88, 0x2C, 0x8A, 0x2C, 0x8A, 0x2C, 0x8C, 0x2C, + 0x8C, 0x2C, 0x8E, 0x2C, 0x8E, 0x2C, 0x90, 0x2C, + 0x90, 0x2C, 0x92, 0x2C, 0x92, 0x2C, 0x94, 0x2C, + 0x94, 0x2C, 0x96, 0x2C, 0x96, 0x2C, 0x98, 0x2C, + 0x98, 0x2C, 0x9A, 0x2C, 0x9A, 0x2C, 0x9C, 0x2C, + 0x9C, 0x2C, 0x9E, 0x2C, 0x9E, 0x2C, 0xA0, 0x2C, + 0xA0, 0x2C, 0xA2, 0x2C, 0xA2, 0x2C, 0xA4, 0x2C, + 0xA4, 0x2C, 0xA6, 0x2C, 0xA6, 0x2C, 0xA8, 0x2C, + 0xA8, 0x2C, 0xAA, 0x2C, 0xAA, 0x2C, 0xAC, 0x2C, + 0xAC, 0x2C, 0xAE, 0x2C, 0xAE, 0x2C, 0xB0, 0x2C, + 0xB0, 0x2C, 0xB2, 0x2C, 0xB2, 0x2C, 0xB4, 0x2C, + 0xB4, 0x2C, 0xB6, 0x2C, 0xB6, 0x2C, 0xB8, 0x2C, + 0xB8, 0x2C, 0xBA, 0x2C, 0xBA, 0x2C, 0xBC, 0x2C, + 0xBC, 0x2C, 0xBE, 0x2C, 0xBE, 0x2C, 0xC0, 0x2C, + 0xC0, 0x2C, 0xC2, 0x2C, 0xC2, 0x2C, 0xC4, 0x2C, + 0xC4, 0x2C, 0xC6, 0x2C, 0xC6, 0x2C, 0xC8, 0x2C, + 0xC8, 0x2C, 0xCA, 0x2C, 0xCA, 0x2C, 0xCC, 0x2C, + 0xCC, 0x2C, 0xCE, 0x2C, 0xCE, 0x2C, 0xD0, 0x2C, + 0xD0, 0x2C, 0xD2, 0x2C, 0xD2, 0x2C, 0xD4, 0x2C, + 0xD4, 0x2C, 0xD6, 0x2C, 0xD6, 0x2C, 0xD8, 0x2C, + 0xD8, 0x2C, 0xDA, 0x2C, 0xDA, 0x2C, 0xDC, 0x2C, + 0xDC, 0x2C, 0xDE, 0x2C, 0xDE, 0x2C, 0xE0, 0x2C, + 0xE0, 0x2C, 0xE2, 0x2C, 0xE2, 0x2C, 0xE4, 0x2C, + 0xE5, 0x2C, 0xE6, 0x2C, 0xE7, 0x2C, 0xE8, 0x2C, + 0xE9, 0x2C, 0xEA, 0x2C, 0xEB, 0x2C, 0xEC, 0x2C, + 0xED, 0x2C, 0xEE, 0x2C, 0xEF, 0x2C, 0xF0, 0x2C, + 0xF1, 0x2C, 0xF2, 0x2C, 0xF3, 0x2C, 0xF4, 0x2C, + 0xF5, 0x2C, 0xF6, 0x2C, 0xF7, 0x2C, 0xF8, 0x2C, + 0xF9, 0x2C, 0xFA, 0x2C, 0xFB, 0x2C, 0xFC, 0x2C, + 0xFD, 0x2C, 0xFE, 0x2C, 0xFF, 0x2C, 0xA0, 0x10, + 0xA1, 0x10, 0xA2, 0x10, 0xA3, 0x10, 0xA4, 0x10, + 0xA5, 0x10, 0xA6, 0x10, 0xA7, 0x10, 0xA8, 0x10, + 0xA9, 0x10, 0xAA, 0x10, 0xAB, 0x10, 0xAC, 0x10, + 0xAD, 0x10, 0xAE, 0x10, 0xAF, 0x10, 0xB0, 0x10, + 0xB1, 0x10, 0xB2, 0x10, 0xB3, 0x10, 0xB4, 0x10, + 0xB5, 0x10, 0xB6, 0x10, 0xB7, 0x10, 0xB8, 0x10, + 0xB9, 0x10, 0xBA, 0x10, 0xBB, 0x10, 0xBC, 0x10, + 0xBD, 0x10, 0xBE, 0x10, 0xBF, 0x10, 0xC0, 0x10, + 0xC1, 0x10, 0xC2, 0x10, 0xC3, 0x10, 0xC4, 0x10, + 0xC5, 0x10, 0xFF, 0xFF, 0x1B, 0xD2, 0x21, 0xFF, + 0x22, 0xFF, 0x23, 0xFF, 0x24, 0xFF, 0x25, 0xFF, + 0x26, 0xFF, 0x27, 0xFF, 0x28, 0xFF, 0x29, 0xFF, + 0x2A, 0xFF, 0x2B, 0xFF, 0x2C, 0xFF, 0x2D, 0xFF, + 0x2E, 0xFF, 0x2F, 0xFF, 0x30, 0xFF, 0x31, 0xFF, + 0x32, 0xFF, 0x33, 0xFF, 0x34, 0xFF, 0x35, 0xFF, + 0x36, 0xFF, 0x37, 0xFF, 0x38, 0xFF, 0x39, 0xFF, + 0x3A, 0xFF, 0x5B, 0xFF, 0x5C, 0xFF, 0x5D, 0xFF, + 0x5E, 0xFF, 0x5F, 0xFF, 0x60, 0xFF, 0x61, 0xFF, + 0x62, 0xFF, 0x63, 0xFF, 0x64, 0xFF, 0x65, 0xFF, + 0x66, 0xFF, 0x67, 0xFF, 0x68, 0xFF, 0x69, 0xFF, + 0x6A, 0xFF, 0x6B, 0xFF, 0x6C, 0xFF, 0x6D, 0xFF, + 0x6E, 0xFF, 0x6F, 0xFF, 0x70, 0xFF, 0x71, 0xFF, + 0x72, 0xFF, 0x73, 0xFF, 0x74, 0xFF, 0x75, 0xFF, + 0x76, 0xFF, 0x77, 0xFF, 0x78, 0xFF, 0x79, 0xFF, + 0x7A, 0xFF, 0x7B, 0xFF, 0x7C, 0xFF, 0x7D, 0xFF, + 0x7E, 0xFF, 0x7F, 0xFF, 0x80, 0xFF, 0x81, 0xFF, + 0x82, 0xFF, 0x83, 0xFF, 0x84, 0xFF, 0x85, 0xFF, + 0x86, 0xFF, 0x87, 0xFF, 0x88, 0xFF, 0x89, 0xFF, + 0x8A, 0xFF, 0x8B, 0xFF, 0x8C, 0xFF, 0x8D, 0xFF, + 0x8E, 0xFF, 0x8F, 0xFF, 0x90, 0xFF, 0x91, 0xFF, + 0x92, 0xFF, 0x93, 0xFF, 0x94, 0xFF, 0x95, 0xFF, + 0x96, 0xFF, 0x97, 0xFF, 0x98, 0xFF, 0x99, 0xFF, + 0x9A, 0xFF, 0x9B, 0xFF, 0x9C, 0xFF, 0x9D, 0xFF, + 0x9E, 0xFF, 0x9F, 0xFF, 0xA0, 0xFF, 0xA1, 0xFF, + 0xA2, 0xFF, 0xA3, 0xFF, 0xA4, 0xFF, 0xA5, 0xFF, + 0xA6, 0xFF, 0xA7, 0xFF, 0xA8, 0xFF, 0xA9, 0xFF, + 0xAA, 0xFF, 0xAB, 0xFF, 0xAC, 0xFF, 0xAD, 0xFF, + 0xAE, 0xFF, 0xAF, 0xFF, 0xB0, 0xFF, 0xB1, 0xFF, + 0xB2, 0xFF, 0xB3, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF, + 0xB6, 0xFF, 0xB7, 0xFF, 0xB8, 0xFF, 0xB9, 0xFF, + 0xBA, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, + 0xBE, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC1, 0xFF, + 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC5, 0xFF, + 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xC9, 0xFF, + 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF, + 0xCE, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, + 0xD2, 0xFF, 0xD3, 0xFF, 0xD4, 0xFF, 0xD5, 0xFF, + 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, + 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, + 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, + 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, + 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF, + 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, + 0xEE, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, + 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, + 0xF6, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, + 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF +}; + static volatile sig_atomic_t got_siginfo; static void infohandler(int); @@ -227,7 +1045,320 @@ static void print_bpb(struct bpb *); static int ckgeom(const char *, u_int, const char *); static void mklabel(u_int8_t *, const char *); static int oklabel(const char *); +static int exfat_oklabel(const u_int8_t *, int len); static void setstr(u_int8_t *, const char *, size_t); +static void fill_exfat_buffer(u_int8_t *, u_int, const struct bpb *, const struct msdos_options *); + +static int +u8to16char(const u_char **u8strp, u_long *u8lenp, u_char **u16strp, u_long *u16lenp) { + u_long more; + unsigned temp; + u_char c; + + if (*u8lenp == 0) + return (0); *** 791 LINES SKIPPED *** From nobody Tue Aug 5 20:32:20 2025 X-Original-To: dev-commits-src-main@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 4bxQ8S4N3Xz63gqG; Tue, 05 Aug 2025 20:32:24 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxQ8S2HjWz42hR; Tue, 05 Aug 2025 20:32:24 +0000 (UTC) (envelope-from bz@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754425944; 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: in-reply-to:in-reply-to:references:references; bh=Mr3CgSGMPpk3U6Ib31015xFpynPd92DTBddeXkIM+8Q=; b=u5QoiPJhsZQnyRAlzQEJCnaxn6yuzGrwkDynm6h1o/GrpdcZzFCPJKJJmvi8i41qW8j6jq vX+kgapr/B9I4nUpmzL3ljS53xttQo/fKVk5HPdRMRlhPkZCe2nQz3LeFYLfOB/gMV8Mye 8rNRbGJQzpm3U0CeovFWTtHsddpiI4z4fIxeBsh8WsnOreWJ5pvmaa5AYhBn/qAsJDVe+v E+mmhgCOCZyqfgyzfyMc1lNP5T7jLaR0cx5SaYFYPY+R+JVy2zT0Hqi6CmAavu+FgeCUTb aqSwGrjjYn47tBPZscEfi9bXncUQje8otdXM1kL4vn40aM3e6a5nEkRRExfZ3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754425944; 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: in-reply-to:in-reply-to:references:references; bh=Mr3CgSGMPpk3U6Ib31015xFpynPd92DTBddeXkIM+8Q=; b=ICLoEhq+9NU9qKsAng4EFnfXgmJ3y0/YiPyO2Jpf3DITR3VtedzZqGDcKMoOUMpiyejoeZ Wo7bz9RIqY9hwDZBS76BMEqI/cxlp7C5UAHNVo/ZLfBNfv/pVpC4b0KnQdolw5ExUXmi3G FLH8LTkydOfXvVyLWwKWWgqjybrqZkPQeQhAlzsLp+HUNUiv1x/LAi9ubdFQJ1fShq0Lhw 5bRKtmJh9Aoq+Uhp9UHUCElrp1rnqq3DiIi79zbllpnl3ptY+ag8VaRsdbtPjaa7Xr68la YYf5rUPLtVk16SoLBXNIWaxk+u/4NWPrd6r1GWT60dNKWnYPVC5kC5gtCD7ZyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754425944; a=rsa-sha256; cv=none; b=M7sOGYBL761HkqrkBe+TebKqpJsceuVpDno46m98fSdlBtEP5tbsD6r5Q/ZbYwUiT8yj+R bkM5k5m8GuTHDTpa2vhYRRDsHy7zpD8sJOEtI1UCMjRcOUOgyxqDygLEsEmESmNP9JbMu9 GhyeNLYfmjg6rNgPTepxWVBkwpyj/PqRWli0H9N2BwphRGx/uagXTCh/7BTSnvwez14qPY HDGQJrb/OaLSg47p4np+yHg5CQK2Gy+rxnfYA6CDt9CH/aDKWy+i9EvJ97bxB1+YHQN5a4 14qKJrBpq0iIs7Y8UQ0XgQtpovKkLeK2Fmxcc1sW67GC23NJcjREVrYhqk4QXA== Received: from mx-01.divo.sbone.de (mx-01.divo.sbone.de [IPv6:2003:a:140a:2200:6:594:fffe:19]) (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 ECDSA (prime256v1) client-digest SHA256) (Client CN "mx-01.divo.sbone.de", Issuer "E5" (verified OK)) (Authenticated sender: bz/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxQ8S0tgfz15mj; Tue, 05 Aug 2025 20:32:24 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:1025]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by mx-01.divo.sbone.de (Postfix) with ESMTPS id E6CA1A64808; Tue, 05 Aug 2025 20:32:16 +0000 (UTC) Received: from content-filter.t4-02.sbone.de (content-filter.t4-02.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:2742]) (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) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id 3DDCA2D029E1; Tue, 5 Aug 2025 20:32:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:4902:0:7404:2:1025]) by content-filter.t4-02.sbone.de (content-filter.t4-02.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:2742]) (amavisd-new, port 10024) with ESMTP id jNmC1oAdWZB4; Tue, 5 Aug 2025 20:32:21 +0000 (UTC) Received: from strong-iwl0.sbone.de (strong-iwl0.sbone.de [IPv6:fde9:577b:c1a9:4902:a66b:b6ff:fe40:39a9]) (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) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id DE3592D029D8; Tue, 5 Aug 2025 20:32:20 +0000 (UTC) Date: Tue, 5 Aug 2025 20:32:20 +0000 (UTC) From: "Bjoern A. Zeeb" To: Andriy Gapon cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 6eb503116e88 - main - sdio: don't use CAM_PRIORITY_NONE for queued CCB-s In-Reply-To: <202508051629.575GTBYK035918@gitrepo.freebsd.org> Message-ID: <030509rq-32n5-3rn0-98nq-o154pqo676s9@SerrOFQ.bet> References: <202508051629.575GTBYK035918@gitrepo.freebsd.org> X-OpenPGP-Key-Id: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed On Tue, 5 Aug 2025, Andriy Gapon wrote: > The branch main has been updated by avg: > > URL: https://cgit.FreeBSD.org/src/commit/?id=6eb503116e88cc430c2c9f01f48aa979fb0a7e1b > > commit 6eb503116e88cc430c2c9f01f48aa979fb0a7e1b > Author: Andriy Gapon > AuthorDate: 2025-08-05 14:40:21 +0000 > Commit: Andriy Gapon > CommitDate: 2025-08-05 16:27:12 +0000 > > sdio: don't use CAM_PRIORITY_NONE for queued CCB-s > > This is similar to changes done in other CAM drivers and fixes a panic > because of a sanity check added in b4b166b8c46b. > > While here, remove unneeded ccb setup in sdiobdiscover. > It's possible that ccb allocation in that function is not needed as > well, but I wasn't sure about that. I have a lot more changes to sdio here; I would appreciate if they go through review if you have more. Are you testing this with any device? > MFC after: 1 week > --- > sys/dev/sdio/sdiob.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/sys/dev/sdio/sdiob.c b/sys/dev/sdio/sdiob.c > index 4ec2058fa2e4..cb2cc0da6b77 100644 > --- a/sys/dev/sdio/sdiob.c > +++ b/sys/dev/sdio/sdiob.c > @@ -150,7 +150,7 @@ sdiob_rw_direct_sc(struct sdiob_softc *sc, uint8_t fn, uint32_t addr, bool wr, > sc->ccb = xpt_alloc_ccb(); > else > memset(sc->ccb, 0, sizeof(*sc->ccb)); > - xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); > + xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); > CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, > ("%s(fn=%d, addr=%#02x, wr=%d, *val=%#02x)\n", __func__, > fn, addr, wr, *val)); > @@ -250,7 +250,7 @@ sdiob_rw_extended_cam(struct sdiob_softc *sc, uint8_t fn, uint32_t addr, > sc->ccb = xpt_alloc_ccb(); > else > memset(sc->ccb, 0, sizeof(*sc->ccb)); > - xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); > + xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); > CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, > ("%s(fn=%d addr=%#0x wr=%d b_count=%u blksz=%u buf=%p incr=%d)\n", > __func__, fn, addr, wr, b_count, blksz, buffer, incaddr)); > @@ -977,9 +977,6 @@ sdiobdiscover(void *context, int pending) > > if (sc->ccb == NULL) > sc->ccb = xpt_alloc_ccb(); > - else > - memset(sc->ccb, 0, sizeof(*sc->ccb)); > - xpt_setup_ccb(&sc->ccb->ccb_h, periph->path, CAM_PRIORITY_NONE); This likely just made a problem worse of ccb re-use. I have locally changed them to be allocated/freed per transaction now. > /* > * Read CCCR and FBR of each function, get manufacturer and device IDs, > -- Bjoern A. Zeeb r15:7 From nobody Tue Aug 5 22:06:05 2025 X-Original-To: dev-commits-src-main@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 4bxSDY5K3gz63mQk; Tue, 05 Aug 2025 22:06:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSDY44TGz4Hct; Tue, 05 Aug 2025 22:06:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754431565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f4vJACGawBt19TwgCgiNan2xe/qU8uuwUx2f6zONmMc=; b=EpGeW6UoTe9DkX3r309PT4+pjUvRkqGd/aHWilv6g2VYE2zs4sG+WDeQfXjtSZzjOBX+Ix RXh9xCLw1PC/0D/lTWVr6ukjoZRM4bslB9dXYIJBSDeLCMB1RtjbuQ+0nVJzDx4+2tHFif /DWoGg7Sm8FiFwbcHZZv1YRpMxjA1PsGyE9+ApIXLSpTtp5Dou06CRaAjhpYy+bE0bUHzl NzZr2hcvGR7ZQik/q0wdmUnAu5lVlkVKfMD04UDTks3bIS/2KFhvHeDWBq/I+VZt+iPLex iR4HTTZzgFKuQwQxrMDkb8iL5I7hDsBYBTRo/0uCO4FcOgenLaCI94J75JnKJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754431565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f4vJACGawBt19TwgCgiNan2xe/qU8uuwUx2f6zONmMc=; b=i+Rx4lHAOD7VVs0Iv1QxE5DCZFJIQpLpH6HJD0yDEKmuNFw0gtwaRqoyXLec9cF7eAHnbR vbilRR+qL0DDmSAvZWOw6oEXpmu4DBgA/j3T4hBDnaliRY9cNw5/1EJy58y1NklT1T/l6Y JP+VPjwG4w8S5c3T+4zXJXbvKm2k51HIcLQg8hHTkLrzVdp50+16AOypcYx9jqFHcCWELY /U+Sdy+JYqzhC2s/KjEzfM7NnYQeSDtQ4o0wU3qwAehHJx70waSlmtJ47HTIQ7uNrc7Bol fNVcVFeS1WNALB6jG0SvHquqLzzn3gtp9UGUWPh9TrP2lpbjWgFjpaGAyYa1Dg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754431565; a=rsa-sha256; cv=none; b=V+Ca4LGLcGMIn32xuwse6HM/fJmgVCx8/rlhlmWHXDsqCFcdxPhMuESq42WNqUEGm3SFa+ Q/W7belcuXWGNjSzS62R6KVVgNTUNxTiJneGrEebSmANdzgIzMjtoMtZtX4bSmENLjuiOL OXzkoK9SGau5/uFG5Jiif5S5QSJ1XPVNbLl6gxBKxtB4bFqbMknHleJkF4Bjuu35C14ncS 3i2ROW6FgsOAMXmv6SVjGGDFQAeXVk9ROgdZr5P48S8zI1E8IVp8l+XzI04rr6/RavPMCO 4TvnWmKhv17ns1yGMkL3lnZ1SAs6vvHTgTYMVtESz9hzmCCbkHA2RS8X9ykIVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSDY3f3fztLQ; Tue, 05 Aug 2025 22:06:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575M65uj076251; Tue, 5 Aug 2025 22:06:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575M65Yg076248; Tue, 5 Aug 2025 22:06:05 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:06:05 GMT Message-Id: <202508052206.575M65Yg076248@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: e9792345d36c - main - freebsd-version.8: Remove freebsd-update paragraph List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e9792345d36c96dbb49f3ee996f75384a4cca532 Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=e9792345d36c96dbb49f3ee996f75384a4cca532 commit e9792345d36c96dbb49f3ee996f75384a4cca532 Author: Alexander Ziaee AuthorDate: 2025-08-05 22:05:04 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-05 22:05:29 +0000 freebsd-version.8: Remove freebsd-update paragraph For the sunset of freebsd-update in 15.0R, remove a paragraph claiming this utility should work even if using freebsd-update. MFC: never Reviewed by: 0mp, bcr Differential Revision: https://reviews.freebsd.org/D51160 --- bin/freebsd-version/freebsd-version.1 | 8 -------- 1 file changed, 8 deletions(-) diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1 index 82ea9c707d69..27ed69b38bc5 100644 --- a/bin/freebsd-version/freebsd-version.1 +++ b/bin/freebsd-version/freebsd-version.1 @@ -75,14 +75,6 @@ version, next the userland version, and finally the userland version of the specified jails, on separate lines. If neither is specified, it will print the userland version only. .Sh IMPLEMENTATION NOTES -The -.Nm -utility should provide the correct answer in the vast majority of -cases, including on systems kept up-to-date using -.Xr freebsd-update 8 , -which does not update the kernel version unless the kernel itself was -affected by the latest patch. -.Pp To determine the name (and hence the location) of a custom kernel, the .Nm utility will attempt to parse From nobody Tue Aug 5 22:28:06 2025 X-Original-To: dev-commits-src-main@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 4bxSjz2079z63nVy; Tue, 05 Aug 2025 22:28: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSjz17gmz4LWx; Tue, 05 Aug 2025 22:28:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vnqJwzRwEr6YAzfSekkJNTVFq+qzDJWZSlInAVa7zwI=; b=yfII5Ed/n9Fz774L2g64+hUst/SffW5I9ilFbBJshD929/0NJecb0VZMwUmUS3a0yAbZu4 JsZ6ZAikco28kz1bJIlOwuc8u6Y5UlPtFlJtAgGjpAl/qD6JZi1AYdUantqSUADoEf9qDV jO4rtptvobeg34AwEBmi5z2V6agoPrEYMrcuc11c118fR8CqTXn9WtYdmgbWz4md4SETf+ aPQ5uDXdaZIMNjMj5cMrKhzjbYBL4jl4c3LBDC9gqweVzXLjPSJ5gCPorWmkJ3NwxaSe0a ipxXSdQ0XfmACKLFRoevhfCAP0rFWWOTzGCuk+H+cU2F4Q7VCuZTPRdtRQ5dng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vnqJwzRwEr6YAzfSekkJNTVFq+qzDJWZSlInAVa7zwI=; b=y1a/PbPoXJz77RCpQCwLghUvYCIaNctiytLpVSA4YsgwKz7XezOV6P1ePpkBVIq1hKY1/5 OInNm5/XN5ljEKXlnspyEGig9gF58xZ2a9nWrGsg4L1mIsVwmt8saN4snhi3qn+WlF70Ed 3HBnbN8Ng+PkfHH3HOoCfn6Tb8+H+rkjPh5bqUoRK4+nXr7txUC+dfrEqAohxbOT//xRCr Pb3NpIKSAtiBtfLPd5y+Rt4Nm21Q8t1lXLt5XrWj8WfigN9dou+WpnZqxJpkbyL7pKOB6s bBcYT3fhGqVSlh0Wz+kcwWDrHvxDpRjGtQCBGjnM+pQuRtwHkKWjxsNTJ3OG3A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432887; a=rsa-sha256; cv=none; b=V356wkoYhtyMRGaLgZ3aKQJQozwJOo56NunoRQn/nFUF502IwrpD61U+XWY5l9deliZXk5 nIXfga9qS77NhKIpoNb1rrUf1Kw2ug0eTQmtYugbxH3UsAWz5m7RNd+TVJ0ZFgJar0YiV+ duO6gEaTvViaJckwv1n4qdQIrwY0h28KDE9YPIkW1lJ0jPnQyx6B2AQvGYuEmc0AbHEccH q8JC6rSFpI2a6CEvDXmS34jlJWp1YsvdqH9kgpLtVgXCrDlPoRqdqmD8KiQpwDpVdVCttN YDZOiG0DRchaT9uM75atunS4At2DAlih7paumvHs+zoPIxeNKTsFhEA3TGUHrA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSjz0kg2zv2t; Tue, 05 Aug 2025 22:28:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MS7ZU014288; Tue, 5 Aug 2025 22:28:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MS6wk014285; Tue, 5 Aug 2025 22:28:06 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:06 GMT Message-Id: <202508052228.575MS6wk014285@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 8b388995b8b2 - main - pf: convert DIOCRADDADDRS to netlink List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8b388995b8b2f399d056679f5234dafcbe4dddd5 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8b388995b8b2f399d056679f5234dafcbe4dddd5 commit 8b388995b8b2f399d056679f5234dafcbe4dddd5 Author: Kristof Provost AuthorDate: 2025-07-14 12:40:44 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:14 +0000 pf: convert DIOCRADDADDRS to netlink Add up to 64 addresses at once. We are limited by the netlink socket buffer, so we can only add a limited number at once. Sponsored by: Rubicon Communications, LLC ("Netgate") --- contrib/pf/authpf/authpf.c | 2 +- lib/libpfctl/libpfctl.c | 100 ++++++++++++++++++++++++++++++++++++++++++ lib/libpfctl/libpfctl.h | 2 + sbin/pfctl/pfctl_radix.c | 2 +- sys/netpfil/pf/pf_ioctl.c | 1 + sys/netpfil/pf/pf_nl.c | 90 +++++++++++++++++++++++++++++++++++++ sys/netpfil/pf/pf_nl.h | 17 +++++++ sys/netpfil/pf/pf_table.c | 2 +- tests/sys/netpfil/pf/table.sh | 42 ++++++++++++++++++ 9 files changed, 255 insertions(+), 3 deletions(-) diff --git a/contrib/pf/authpf/authpf.c b/contrib/pf/authpf/authpf.c index 73cc9a7dc657..5d1b33019c4b 100644 --- a/contrib/pf/authpf/authpf.c +++ b/contrib/pf/authpf/authpf.c @@ -863,7 +863,7 @@ change_table(int add, const char *ip_src) } if (add) - ret = pfctl_table_add_addrs(pfctl_fd(pfh), &tbl, &addr, 1, NULL, 0); + ret = pfctl_table_add_addrs_h(pfh, &tbl, &addr, 1, NULL, 0); else ret = pfctl_table_del_addrs(pfctl_fd(pfh), &tbl, &addr, 1, NULL, 0); diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 104777352d8b..29c792bd72ed 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -2397,6 +2397,106 @@ pfctl_table_add_addrs(int dev, struct pfr_table *tbl, struct pfr_addr return (0); } +static void +snl_add_msg_attr_table(struct snl_writer *nw, uint32_t type, + const struct pfr_table *tbl) +{ + int off; + + off = snl_add_msg_attr_nested(nw, type); + + snl_add_msg_attr_string(nw, PF_T_ANCHOR, tbl->pfrt_anchor); + snl_add_msg_attr_string(nw, PF_T_NAME, tbl->pfrt_name); + snl_add_msg_attr_u32(nw, PF_T_TABLE_FLAGS, tbl->pfrt_flags); + + snl_end_attr_nested(nw, off); +} + +static void +snl_add_msg_attr_pfr_addr(struct snl_writer *nw, uint32_t type, + const struct pfr_addr *addr) +{ + int off; + + off = snl_add_msg_attr_nested(nw, type); + + snl_add_msg_attr_u8(nw, PFR_A_AF, addr->pfra_af); + snl_add_msg_attr_u8(nw, PFR_A_NET, addr->pfra_net); + snl_add_msg_attr_bool(nw, PFR_A_NOT, addr->pfra_not); + snl_add_msg_attr_ip6(nw, PFR_A_ADDR, &addr->pfra_ip6addr); + + snl_end_attr_nested(nw, off); +} + +static struct snl_attr_parser ap_table_add_addr[] = { + { .type = PF_TA_NBR_ADDED, .off = 0, .cb = snl_attr_get_uint32 }, +}; +SNL_DECLARE_PARSER(table_add_addr_parser, struct genlmsghdr, snl_f_p_empty, ap_table_add_addr); + +static int +_pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pfr_addr + *addrs, int size, int *nadd, int flags) +{ + struct snl_writer nw; + struct snl_errmsg_data e = {}; + struct nlmsghdr *hdr; + uint32_t seq_id; + uint32_t added; + int family_id; + + family_id = snl_get_genl_family(&h->ss, PFNL_FAMILY_NAME); + if (family_id == 0) + return (ENOTSUP); + + snl_init_writer(&h->ss, &nw); + hdr = snl_create_genl_msg_request(&nw, family_id, PFNL_CMD_TABLE_ADD_ADDR); + + snl_add_msg_attr_table(&nw, PF_TA_TABLE, tbl); + snl_add_msg_attr_u32(&nw, PF_TA_FLAGS, flags); + for (int i = 0; i < size && i < 256; i++) + snl_add_msg_attr_pfr_addr(&nw, PF_TA_ADDR, &addrs[i]); + + if ((hdr = snl_finalize_msg(&nw)) == NULL) + return (ENXIO); + seq_id = hdr->nlmsg_seq; + + if (! snl_send_message(&h->ss, hdr)) + return (ENXIO); + + while ((hdr = snl_read_reply_multi(&h->ss, seq_id, &e)) != NULL) { + if (! snl_parse_nlmsg(&h->ss, hdr, &table_add_addr_parser, &added)) + continue; + } + + if (nadd) + *nadd = added; + + return (e.error); +} + +int +pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pfr_addr + *addr, int size, int *nadd, int flags) +{ + int ret; + int off = 0; + int partial_added; + + do { + ret = _pfctl_table_add_addrs_h(h, tbl, &addr[off], size - off, &partial_added, flags); + if (ret != 0) + break; + if (nadd) + *nadd += partial_added; + off += partial_added; + } while (off < size); + + if (nadd) + *nadd = off; + + return (ret); +} + int pfctl_table_del_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *ndel, int flags) diff --git a/lib/libpfctl/libpfctl.h b/lib/libpfctl/libpfctl.h index 116f9243fda9..5c052b01b294 100644 --- a/lib/libpfctl/libpfctl.h +++ b/lib/libpfctl/libpfctl.h @@ -511,6 +511,8 @@ int pfctl_clear_nat(int dev, const char *anchorname); int pfctl_clear_eth_rules(int dev, const char *anchorname); int pfctl_set_syncookies(int dev, const struct pfctl_syncookies *s); int pfctl_get_syncookies(int dev, struct pfctl_syncookies *s); +int pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pfr_addr + *addr, int size, int *nadd, int flags); int pfctl_table_add_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *nadd, int flags); int pfctl_table_del_addrs(int dev, struct pfr_table *tbl, struct pfr_addr diff --git a/sbin/pfctl/pfctl_radix.c b/sbin/pfctl/pfctl_radix.c index 00e4207d377b..4100a9ea0446 100644 --- a/sbin/pfctl/pfctl_radix.c +++ b/sbin/pfctl/pfctl_radix.c @@ -122,7 +122,7 @@ pfr_add_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size, { int ret; - ret = pfctl_table_add_addrs(dev, tbl, addr, size, nadd, flags); + ret = pfctl_table_add_addrs_h(pfh, tbl, addr, size, nadd, flags); if (ret) { errno = ret; return (-1); diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 178ee01649c6..08ae2057653b 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -4973,6 +4973,7 @@ DIOCCHANGEADDR_error: goto fail; } PF_RULES_WLOCK(); + io->pfrio_nadd = 0; error = pfr_add_addrs(&io->pfrio_table, pfras, io->pfrio_size, &io->pfrio_nadd, io->pfrio_flags | PFR_FLAG_USERIOCTL); diff --git a/sys/netpfil/pf/pf_nl.c b/sys/netpfil/pf/pf_nl.c index c5de1e84a287..f9e6c97f385c 100644 --- a/sys/netpfil/pf/pf_nl.c +++ b/sys/netpfil/pf/pf_nl.c @@ -2082,6 +2082,88 @@ pf_handle_clear_addrs(struct nlmsghdr *hdr, struct nl_pstate *npt) return (error); } +TAILQ_HEAD(pfr_addrq, pfr_addr_item); +struct nl_parsed_table_addrs { + struct pfr_table table; + uint32_t flags; + struct pfr_addr addrs[256]; + size_t addr_count; + int nadd; +}; +#define _OUT(_field) offsetof(struct pfr_addr, _field) +static const struct nlattr_parser nla_p_pfr_addr[] = { + { .type = PFR_A_AF, .off = _OUT(pfra_af), .cb = nlattr_get_uint8 }, + { .type = PFR_A_NET, .off = _OUT(pfra_net), .cb = nlattr_get_uint8 }, + { .type = PFR_A_NOT, .off = _OUT(pfra_not), .cb = nlattr_get_bool }, + { .type = PFR_A_ADDR, .off = _OUT(pfra_u), .cb = nlattr_get_in6_addr }, +}; +#undef _OUT +NL_DECLARE_ATTR_PARSER(pfra_addr_parser, nla_p_pfr_addr); + +static int +nlattr_get_pfr_addr(struct nlattr *nla, struct nl_pstate *npt, const void *arg, + void *target) +{ + struct nl_parsed_table_addrs *attrs = target; + struct pfr_addr addr = { 0 }; + int error; + + if (attrs->addr_count >= nitems(attrs->addrs)) + return (E2BIG); + + error = nlattr_get_nested(nla, npt, &pfra_addr_parser, &addr); + if (error != 0) + return (error); + + memcpy(&attrs->addrs[attrs->addr_count], &addr, sizeof(addr)); + attrs->addr_count++; + + return (0); +} + +NL_DECLARE_ATTR_PARSER(nested_table_parser, nla_p_table); + +#define _OUT(_field) offsetof(struct nl_parsed_table_addrs, _field) +static const struct nlattr_parser nla_p_table_addr[] = { + { .type = PF_TA_TABLE, .off = _OUT(table), .arg = &nested_table_parser, .cb = nlattr_get_nested }, + { .type = PF_TA_ADDR, .cb = nlattr_get_pfr_addr }, + { .type = PF_TA_FLAGS, .off = _OUT(flags), .cb = nlattr_get_uint32 }, +}; +NL_DECLARE_PARSER(table_addr_parser, struct genlmsghdr, nlf_p_empty, nla_p_table_addr); +#undef _OUT +static int +pf_handle_table_add_addrs(struct nlmsghdr *hdr, struct nl_pstate *npt) +{ + struct nl_parsed_table_addrs attrs = { 0 }; + struct nl_writer *nw = npt->nw; + struct genlmsghdr *ghdr_new; + int error; + + error = nl_parse_nlmsg(hdr, &table_addr_parser, npt, &attrs); + if (error != 0) + return (error); + + PF_RULES_WLOCK(); + error = pfr_add_addrs(&attrs.table, &attrs.addrs[0], + attrs.addr_count, &attrs.nadd, attrs.flags | PFR_FLAG_USERIOCTL); + PF_RULES_WUNLOCK(); + + if (!nlmsg_reply(nw, hdr, sizeof(struct genlmsghdr))) + return (ENOMEM); + + ghdr_new = nlmsg_reserve_object(nw, struct genlmsghdr); + ghdr_new->cmd = PFNL_CMD_TABLE_ADD_ADDR; + ghdr_new->version = 0; + ghdr_new->reserved = 0; + + nlattr_add_u32(nw, PF_TA_NBR_ADDED, attrs.nadd); + + if (!nlmsg_end(nw)) + return (ENOMEM); + + return (error); +} + static const struct nlhdr_parser *all_parsers[] = { &state_parser, &addrule_parser, @@ -2096,6 +2178,7 @@ static const struct nlhdr_parser *all_parsers[] = { &add_addr_parser, &ruleset_parser, &table_parser, + &table_addr_parser, }; static uint16_t family_id; @@ -2318,6 +2401,13 @@ static const struct genl_cmd pf_cmds[] = { .cmd_flags = GENL_CMD_CAP_DO | GENL_CMD_CAP_HASPOL, .cmd_priv = PRIV_NETINET_PF, }, + { + .cmd_num = PFNL_CMD_TABLE_ADD_ADDR, + .cmd_name = "TABLE_ADD_ADDRS", + .cmd_cb = pf_handle_table_add_addrs, + .cmd_flags = GENL_CMD_CAP_DO | GENL_CMD_CAP_HASPOL, + .cmd_priv = PRIV_NETINET_PF, + }, }; void diff --git a/sys/netpfil/pf/pf_nl.h b/sys/netpfil/pf/pf_nl.h index d263a0b22deb..8a24230158e7 100644 --- a/sys/netpfil/pf/pf_nl.h +++ b/sys/netpfil/pf/pf_nl.h @@ -67,6 +67,7 @@ enum { PFNL_CMD_GET_TSTATS = 29, PFNL_CMD_CLR_TSTATS = 30, PFNL_CMD_CLR_ADDRS = 31, + PFNL_CMD_TABLE_ADD_ADDR = 32, __PFNL_CMD_MAX, }; #define PFNL_CMD_MAX (__PFNL_CMD_MAX -1) @@ -461,6 +462,22 @@ enum pf_tstats_t { PF_TS_NZERO = 9, /* u64 */ }; +enum pfr_addr_t { + PFR_A_UNSPEC, + PFR_A_AF = 1, /* uint8_t */ + PFR_A_NET = 2, /* uint8_t */ + PFR_A_NOT = 3, /* bool */ + PFR_A_ADDR = 4, /* in6_addr */ +}; + +enum pf_table_addrs_t { + PF_TA_UNSPEC, + PF_TA_TABLE = 1, /* nested, pf_table_t */ + PF_TA_ADDR = 2, /* nested, pfr_addr_t */ + PF_TA_FLAGS = 3, /* u32 */ + PF_TA_NBR_ADDED = 4, /* u32 */ +}; + #ifdef _KERNEL void pf_nl_register(void); diff --git a/sys/netpfil/pf/pf_table.c b/sys/netpfil/pf/pf_table.c index ecc185f89ad7..73ec18fa7646 100644 --- a/sys/netpfil/pf/pf_table.c +++ b/sys/netpfil/pf/pf_table.c @@ -294,7 +294,7 @@ pfr_add_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size, else pfr_destroy_kentries(&workq); if (nadd != NULL) - *nadd = xadd; + *nadd += xadd; pfr_destroy_ktable(tmpkt, 0); return (0); _bad: diff --git a/tests/sys/netpfil/pf/table.sh b/tests/sys/netpfil/pf/table.sh index 5e5fccdaca20..c773518e95e4 100644 --- a/tests/sys/netpfil/pf/table.sh +++ b/tests/sys/netpfil/pf/table.sh @@ -610,6 +610,47 @@ flush_cleanup() pft_cleanup } +atf_test_case "large" "cleanup" +large_head() +{ + atf_set descr 'Test loading a large list of addresses' + atf_set require.user root +} + +large_body() +{ + pft_init + pwd=$(pwd) + + vnet_mkjail alcatraz + + for i in `seq 1 255`; do + for j in `seq 1 255`; do + echo "1.2.${i}.${j}" >> ${pwd}/foo.lst + done + done + expected=$(wc -l foo.lst | awk '{ print $1; }') + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "table " \ + "pass in from " \ + "pass" + + atf_check -s exit:0 \ + -e match:"${expected}/${expected} addresses added." \ + jexec alcatraz pfctl -t foo -T add -f ${pwd}/foo.lst + actual=$(jexec alcatraz pfctl -t foo -T show | wc -l | awk '{ print $1; }') + if [[ $actual -ne $expected ]]; then + atf_fail "Unexpected number of table entries $expected $acual" + fi +} + +large_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "v4_counters" @@ -625,4 +666,5 @@ atf_init_test_cases() atf_add_test_case "precreate" atf_add_test_case "anchor" atf_add_test_case "flush" + atf_add_test_case "large" } From nobody Tue Aug 5 22:28:08 2025 X-Original-To: dev-commits-src-main@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 4bxSk048mlz63nl1; Tue, 05 Aug 2025 22:28: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk01nYmz4LZ7; Tue, 05 Aug 2025 22:28:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432888; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c7HSHHxPIck0ZoSVBmB+zsP4ClKBiNDSywNBjlJwlvE=; b=fwG7JTuLdrpxvKhcJDUtemJtniDDm8x7TSls6rFgrEz//SvI6us1CTue7+XmwuNbiohg2S JYcQco2rhIO33QG7XysTxyZbn18O/56bSXpWEGw76sHF4HEqkmt6azlVPubOFKSUI6BWdg Oa+7cmWvK73+0t56rhQEAXMAnhHTzcBn6ts6ghvsJOxtkZnPBA9t2fa/2vd0sCum1NG0bI jKHVGh2kAPpohniVk/le/QLBKvwldQ91mGe0TGTPn9URCIL3yNB8D0NO055gu80XTfakDu mMpfEuauoK/9Lk9ooxGSFWsKIOWsAPNtzWnPM7OEgdMINX8l3CaBk39sC46DiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432888; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c7HSHHxPIck0ZoSVBmB+zsP4ClKBiNDSywNBjlJwlvE=; b=nFsbBC62yPDeG/2Ixs24UI2CkcwPHZI/d9ydiBKtNcXWG1fY6BFsQ7WPcK35O9oNXevp+6 yAP2fY31w8uNjhU7a+TmXNSvSNPP0j/uLDR0Vygysv2vfwHtyMzzawccysJapwuwtEkA4H b5DABjI1/Up8Y6EbiVP75pEKgqxHuwU0MZXFkP2pfSXnVrQJAyp6+fnqdWH8vNl7/ROSe5 oqZmDC21IPIOFQ35UWl4CnjM2AyZZTZT35H/Sn4uAR6xyQVoMm6Ax76d/hIox7wMYq4T2R w2DWfPfmKRzBKRujmtodv3sN0XzLSKEPO9zM5ywZDxaOKnzYCs8GGASbchfIAg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432888; a=rsa-sha256; cv=none; b=RQ2+37LtpCd0TVH6azOW1N1GQH1+kVAKYR5fFto5LaYAxuVINfPvN3bvTB7v5FC+sLzSR6 B+LYu77N+G20SddQzMyuTaz9WIGxiLDtA7HgqpGy9FWplBJzimBHE2aFF2li50RoqY2FDv CEikdGopwGLROp3CVBLMbQ05XCCeMSL6wbNCaSTgfq2y/XI4WqO3qlf/XRgWJZ+FEy/eP6 aK842IXh3zM3bbhJ1Mp/OSkkLhilir0jEoCW8cP+DSpowWd3hklotiZdlNivWQTSmr+97L TzzZbUpY/ZLo8lz0WlArqlmtjk7rrdONJhxQo2i4m+aFyKzK0KjJFjUyiGaaDg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk01LR7ztht; Tue, 05 Aug 2025 22:28:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MS8Hm014328; Tue, 5 Aug 2025 22:28:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MS8j8014325; Tue, 5 Aug 2025 22:28:08 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:08 GMT Message-Id: <202508052228.575MS8j8014325@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: bad279e12deb - main - pf: convert DIOCRDELADDRS to netlink List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bad279e12deb3e4e4528dbc6b06f56aefb165b15 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=bad279e12deb3e4e4528dbc6b06f56aefb165b15 commit bad279e12deb3e4e4528dbc6b06f56aefb165b15 Author: Kristof Provost AuthorDate: 2025-08-01 14:18:52 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:14 +0000 pf: convert DIOCRDELADDRS to netlink Sponsored by: Rubicon Communications, LLC ("Netgate") --- contrib/pf/authpf/authpf.c | 2 +- lib/libpfctl/libpfctl.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++ lib/libpfctl/libpfctl.h | 2 ++ sbin/pfctl/pfctl_radix.c | 2 +- sys/netpfil/pf/pf_nl.c | 42 ++++++++++++++++++++++++++++ sys/netpfil/pf/pf_nl.h | 2 ++ 6 files changed, 117 insertions(+), 2 deletions(-) diff --git a/contrib/pf/authpf/authpf.c b/contrib/pf/authpf/authpf.c index 5d1b33019c4b..14d3d41b6e21 100644 --- a/contrib/pf/authpf/authpf.c +++ b/contrib/pf/authpf/authpf.c @@ -865,7 +865,7 @@ change_table(int add, const char *ip_src) if (add) ret = pfctl_table_add_addrs_h(pfh, &tbl, &addr, 1, NULL, 0); else - ret = pfctl_table_del_addrs(pfctl_fd(pfh), &tbl, &addr, 1, NULL, 0); + ret = pfctl_table_del_addrs_h(pfh, &tbl, &addr, 1, NULL, 0); if (ret != 0 && ret != ESRCH) { diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 29c792bd72ed..cbd9d4677146 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -2497,6 +2497,51 @@ pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pf return (ret); } +static struct snl_attr_parser ap_table_del_addr[] = { + { .type = PF_TA_NBR_DELETED, .off = 0, .cb = snl_attr_get_uint32 }, +}; +SNL_DECLARE_PARSER(table_del_addr_parser, struct genlmsghdr, snl_f_p_empty, ap_table_del_addr); +static int +_pfctl_table_del_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pfr_addr + *addrs, int size, int *ndel, int flags) +{ + struct snl_writer nw; + struct snl_errmsg_data e = {}; + struct nlmsghdr *hdr; + uint32_t seq_id; + uint32_t deleted; + int family_id; + + family_id = snl_get_genl_family(&h->ss, PFNL_FAMILY_NAME); + if (family_id == 0) + return (ENOTSUP); + + snl_init_writer(&h->ss, &nw); + hdr = snl_create_genl_msg_request(&nw, family_id, PFNL_CMD_TABLE_DEL_ADDR); + + snl_add_msg_attr_table(&nw, PF_TA_TABLE, tbl); + snl_add_msg_attr_u32(&nw, PF_TA_FLAGS, flags); + for (int i = 0; i < size && i < 256; i++) + snl_add_msg_attr_pfr_addr(&nw, PF_TA_ADDR, &addrs[i]); + + if ((hdr = snl_finalize_msg(&nw)) == NULL) + return (ENXIO); + seq_id = hdr->nlmsg_seq; + + if (! snl_send_message(&h->ss, hdr)) + return (ENXIO); + + while ((hdr = snl_read_reply_multi(&h->ss, seq_id, &e)) != NULL) { + if (! snl_parse_nlmsg(&h->ss, hdr, &table_del_addr_parser, &deleted)) + continue; + } + + if (ndel) + *ndel = deleted; + + return (e.error); +} + int pfctl_table_del_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *ndel, int flags) @@ -2520,6 +2565,30 @@ pfctl_table_del_addrs(int dev, struct pfr_table *tbl, struct pfr_addr return (0); } +int +pfctl_table_del_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pfr_addr + *addr, int size, int *ndel, int flags) +{ + int ret; + int off = 0; + int partial_deleted; + + do { + ret = _pfctl_table_del_addrs_h(h, tbl, &addr[off], size - off, + &partial_deleted, flags); + if (ret != 0) + break; + if (ndel) + *ndel += partial_deleted; + off += partial_deleted; + } while (off < size); + + if (ndel) + *ndel = off; + + return (ret); +} + int pfctl_table_set_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *size2, int *nadd, int *ndel, int *nchange, int flags) diff --git a/lib/libpfctl/libpfctl.h b/lib/libpfctl/libpfctl.h index 5c052b01b294..f6c8f6a2ccdb 100644 --- a/lib/libpfctl/libpfctl.h +++ b/lib/libpfctl/libpfctl.h @@ -515,6 +515,8 @@ int pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struc *addr, int size, int *nadd, int flags); int pfctl_table_add_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *nadd, int flags); +int pfctl_table_del_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, + struct pfr_addr *addr, int size, int *ndel, int flags); int pfctl_table_del_addrs(int dev, struct pfr_table *tbl, struct pfr_addr *addr, int size, int *ndel, int flags); int pfctl_table_set_addrs(int dev, struct pfr_table *tbl, struct pfr_addr diff --git a/sbin/pfctl/pfctl_radix.c b/sbin/pfctl/pfctl_radix.c index 4100a9ea0446..0fe9ca8813bb 100644 --- a/sbin/pfctl/pfctl_radix.c +++ b/sbin/pfctl/pfctl_radix.c @@ -136,7 +136,7 @@ pfr_del_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size, { int ret; - ret = pfctl_table_del_addrs(dev, tbl, addr, size, ndel, flags); + ret = pfctl_table_del_addrs_h(pfh, tbl, addr, size, ndel, flags); if (ret) { errno = ret; return (-1); diff --git a/sys/netpfil/pf/pf_nl.c b/sys/netpfil/pf/pf_nl.c index f9e6c97f385c..09754359ec2d 100644 --- a/sys/netpfil/pf/pf_nl.c +++ b/sys/netpfil/pf/pf_nl.c @@ -2089,6 +2089,7 @@ struct nl_parsed_table_addrs { struct pfr_addr addrs[256]; size_t addr_count; int nadd; + int ndel; }; #define _OUT(_field) offsetof(struct pfr_addr, _field) static const struct nlattr_parser nla_p_pfr_addr[] = { @@ -2131,6 +2132,7 @@ static const struct nlattr_parser nla_p_table_addr[] = { }; NL_DECLARE_PARSER(table_addr_parser, struct genlmsghdr, nlf_p_empty, nla_p_table_addr); #undef _OUT + static int pf_handle_table_add_addrs(struct nlmsghdr *hdr, struct nl_pstate *npt) { @@ -2164,6 +2166,39 @@ pf_handle_table_add_addrs(struct nlmsghdr *hdr, struct nl_pstate *npt) return (error); } +static int +pf_handle_table_del_addrs(struct nlmsghdr *hdr, struct nl_pstate *npt) +{ + struct nl_parsed_table_addrs attrs = { 0 }; + struct nl_writer *nw = npt->nw; + struct genlmsghdr *ghdr_new; + int error; + + error = nl_parse_nlmsg(hdr, &table_addr_parser, npt, &attrs); + if (error != 0) + return (error); + + PF_RULES_WLOCK(); + error = pfr_del_addrs(&attrs.table, &attrs.addrs[0], + attrs.addr_count, &attrs.ndel, attrs.flags | PFR_FLAG_USERIOCTL); + PF_RULES_WUNLOCK(); + + if (!nlmsg_reply(nw, hdr, sizeof(struct genlmsghdr))) + return (ENOMEM); + + ghdr_new = nlmsg_reserve_object(nw, struct genlmsghdr); + ghdr_new->cmd = PFNL_CMD_TABLE_DEL_ADDR; + ghdr_new->version = 0; + ghdr_new->reserved = 0; + + nlattr_add_u32(nw, PF_TA_NBR_DELETED, attrs.ndel); + + if (!nlmsg_end(nw)) + return (ENOMEM); + + return (error); +} + static const struct nlhdr_parser *all_parsers[] = { &state_parser, &addrule_parser, @@ -2408,6 +2443,13 @@ static const struct genl_cmd pf_cmds[] = { .cmd_flags = GENL_CMD_CAP_DO | GENL_CMD_CAP_HASPOL, .cmd_priv = PRIV_NETINET_PF, }, + { + .cmd_num = PFNL_CMD_TABLE_DEL_ADDR, + .cmd_name = "TABLE_DEL_ADDRS", + .cmd_cb = pf_handle_table_del_addrs, + .cmd_flags = GENL_CMD_CAP_DO | GENL_CMD_CAP_HASPOL, + .cmd_priv = PRIV_NETINET_PF, + }, }; void diff --git a/sys/netpfil/pf/pf_nl.h b/sys/netpfil/pf/pf_nl.h index 8a24230158e7..87daac393821 100644 --- a/sys/netpfil/pf/pf_nl.h +++ b/sys/netpfil/pf/pf_nl.h @@ -68,6 +68,7 @@ enum { PFNL_CMD_CLR_TSTATS = 30, PFNL_CMD_CLR_ADDRS = 31, PFNL_CMD_TABLE_ADD_ADDR = 32, + PFNL_CMD_TABLE_DEL_ADDR = 33, __PFNL_CMD_MAX, }; #define PFNL_CMD_MAX (__PFNL_CMD_MAX -1) @@ -476,6 +477,7 @@ enum pf_table_addrs_t { PF_TA_ADDR = 2, /* nested, pfr_addr_t */ PF_TA_FLAGS = 3, /* u32 */ PF_TA_NBR_ADDED = 4, /* u32 */ + PF_TA_NBR_DELETED = 5, /* u32 */ }; #ifdef _KERNEL From nobody Tue Aug 5 22:28:09 2025 X-Original-To: dev-commits-src-main@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 4bxSk20xpzz63nW5; Tue, 05 Aug 2025 22:28: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk132fnz4LVB; Tue, 05 Aug 2025 22:28:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432889; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gXuEYM6RKRod6tRh/k6UX3DmSG05DNWZpxq0vR12zjU=; b=isN8qex3GyuhzEmDjs9ReF4UqyPcL7dNoDUYq6sYPTGL41i7P9YouseJAE5Qod4aomvXvv amOSWvWMhk7ybzi7VmWl4WWbGDqOiVy9yGRinV1zXmyBYEv1NeIYcnA3RbX6My7ELOaw8b TaTJuluVwSoDZhcpGYzkdiihCWC0gptVcSOV1kOyvw5elN2HScHHR/GIEKJVgEgVP4OmD5 uYgEkk7ZSB1g+TUb+jwcFa/8z3EQ3sbH8d66OiGdBJWl3GVqn8G/9NUWy6pgihrUl4R7pJ 1cBngOvfocefWEbaPjZ0YZXJJ1Ra/AA2lKDfaGpR6tuGksH+asT/jS7ZzNqxYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432889; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gXuEYM6RKRod6tRh/k6UX3DmSG05DNWZpxq0vR12zjU=; b=H+gf252C5XvzQzm3vZzlgDYilA5Y00JWHtym/cRizMFydRCmlnrfoA3OALt+CvzFaSEjRG FjB54/0UkP7JQjkrPbyBS/Kxy0FeQ/Y+eBAxhKtuKWguw8hO/Ed8eoLA5wnFuGfjlrAwIt iCfmhsoAas3v5UX7TzlYIIC/kmcdIIVRYIPLAMFBkpipxJIPy3wP+zUBWo2BHzH0fI+foe piv8JM2KgDUzvYMa8g9nr5xikENQjecnab60RV+Dp4uBmw8B7EBl86LlKt5O+pyFsdsViV v64z1OSrUH3nAO9ZrnibCbGKcfYmc5a6l7GGgzAaLXUhrmrmpgZFlQXxn+Uukw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432889; a=rsa-sha256; cv=none; b=TMYOkg2u9nO3kHg8Qh4LoDsot6KarK66a6kaOHfS/UmCaow++eBMSCdwLUzT9tbLIbliis D7PVYtpcWi4D623Kpi7cFzJ/n5r1qbNY34+VW2Yj2jKx1VvTBg17xBeIlc8+1tvS2Ee5FA 3EoGWD3F9Hn1xvWoA1XBmV8U18O3bHuNJUcN/hQMYS65iGmkaK+276qp66+nZ5VYgZoTnM Q/jvQ00UeenHVD61aG1ATct3oMrLIu8UXYFwOpWu9BrZMVBUCkE3EbS2IKqcNDFNuXHWts 2llt2cbnLZx8e6b0Mc0JZBPS3HLRjdp+a040/JN2rMkzQjlYTdwwCfezIBu9zw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk12bBZztbt; Tue, 05 Aug 2025 22:28:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MS9jQ014360; Tue, 5 Aug 2025 22:28:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MS93i014357; Tue, 5 Aug 2025 22:28:09 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:09 GMT Message-Id: <202508052228.575MS93i014357@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 17ac89e1dfc3 - main - pf.conf.5: rework the text on mtu and mss List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 17ac89e1dfc3b34658b5430ae860e88085876896 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=17ac89e1dfc3b34658b5430ae860e88085876896 commit 17ac89e1dfc3b34658b5430ae860e88085876896 Author: Kristof Provost AuthorDate: 2025-07-18 16:58:51 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:15 +0000 pf.conf.5: rework the text on mtu and mss According to some notes from sthen; ok sthen Obtained from: OpenBSD, jmc , 7f29e7e980 Sponsored by: Rubicon Communications, LLC ("Netgate") --- share/man/man5/pf.conf.5 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5 index 8954e872c231..1c40765f908a 100644 --- a/share/man/man5/pf.conf.5 +++ b/share/man/man5/pf.conf.5 @@ -27,7 +27,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 9, 2025 +.Dd July 18, 2025 .Dt PF.CONF 5 .Os .Sh NAME @@ -855,7 +855,15 @@ modifier to ensure unique IP identifiers. .It Ar min-ttl Aq Ar number Enforces a minimum TTL for matching IP packets. .It Ar max-mss Aq Ar number -Enforces a maximum MSS for matching TCP packets. +Reduces the maximum segment size (MSS) +on TCP SYN packets to be no greater than +.Ar number . +This is sometimes required in scenarios where the two endpoints +of a TCP connection are not able to carry similar sized packets +and the resulting mismatch can lead to packet fragmentation or loss. +Note that setting the MSS this way can have undesirable effects, +such as interfering with the OS detection features of +.Xr pf 4 . .It Xo Ar set-tos Aq Ar string .No \*(Ba Aq Ar number .Xc From nobody Tue Aug 5 22:28:10 2025 X-Original-To: dev-commits-src-main@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 4bxSk33cB6z63nQZ; Tue, 05 Aug 2025 22:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk23ps3z4LRN; Tue, 05 Aug 2025 22:28:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fIXd2wEOX7Nu+nasq8485fVQQMMhkq2oGbxRgCALlVw=; b=xXsYY7OnHVWSl7Mcd1Gbl1sZC1GqC5sOgfxt01yDd3oTYykm+/kz8kWxXOdLLuVK4Wy3vh Pveka0MMaNHm39jbwrwnGGBLYi3b/Xq9d2G8jH1wtsc5/wqLzC7j3SmA8vPS/2GhwygJxn Jv7lv/ln8YtDwtGNhiyMKgZLX0aK4+UbnG2vDMZw8xD9FDv/XZZ/9bT+ojvF6J3phu9Fkw v6nFQXqmHKWNDekKFXOqcqnRooMsuI+CC48ZPmyp8Shh2i1/SnWW22eQKZH3ZmhrcpW2uz MhrjVh2GD034MJZPsrenSbgQ6y5D/9GS66LZpuxWEzhWGkkfCefyJiXhFwtbPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fIXd2wEOX7Nu+nasq8485fVQQMMhkq2oGbxRgCALlVw=; b=dQFwJI2NWGY18EPFjLK/TcKsUxhIZxAwFzftuwWy3tkBuLbfkbAn7744GkiabHtlYutXhD /tOSxA40x3YA6H8uOFjNaVJu1ZYpV/Zah0pLw37VvAY/9bKkJiOL2WWQ6oAeftnug6lTID fi3Ken7oUWwWjyVoS2L+oLdKd8sVD/FsYUzG4pn0uxGcxahEzHsmMN+dgjIWn9vRtRvVJ1 3+r3VM6ksn9i4l+j0JjYoQzkDMxuWwditQuQHMKK8q81aL4bz8sP30vOfb4NHtHmLdq2Mc ZLAUQ7jWIOOAaOA2HRrbrHb12Ci3j4D1dr4yPvNIqSAsEHUjv9Du9Fj9bqc2fA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432890; a=rsa-sha256; cv=none; b=iDJPkwupyHHK/W+g3TnpNehQ+luwxxOAJHAf8omDaIrPeal3f45rUOH4R4l/Zwdy/4dnhp YpLav9MGoVBaggPOkXPAETUmVEV81RAhXwxSvYvzYcxlCg5oczPL14pCkov5WueUwEG1DH SiG1bB+AD20zsw1emxkrD0y4AeibS6S8K3uTIM8J9OCX4FAJyl4bGl3LxfQy0ppIGQz3X4 lH6d+Gq23NmnkuU1TXUI54Vy71+lpRnf3ijsvB3mLy+xRG5ZCTydHWGCjyyl+4Z2nfmORz /b0s7hhto+N/av1wY0lqYZozIdZcF8bGWyUvESbVtcDO3xeNlMIwFyR9PDQEcg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk23KvKztbv; Tue, 05 Aug 2025 22:28:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSAWr014392; Tue, 5 Aug 2025 22:28:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSA9d014389; Tue, 5 Aug 2025 22:28:10 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:10 GMT Message-Id: <202508052228.575MSA9d014389@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 31131a9d6a20 - main - pf: allocate pf_kanchor from a pool List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 31131a9d6a20e62de43550531aea3a31ea8103cc Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=31131a9d6a20e62de43550531aea3a31ea8103cc commit 31131a9d6a20e62de43550531aea3a31ea8103cc Author: Kristof Provost AuthorDate: 2025-07-30 15:14:26 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:15 +0000 pf: allocate pf_kanchor from a pool Add a pool for the allocation of the pf_anchor struct. It was possible to exhaust kernel memory by repeatedly calling pfioctl DIOCXBEGIN with different anchor names. OK bluhm@ Reported-by: syzbot+9dd98cbce69e26f0fc11@syzkaller.appspotmail.com Obtained from: OpenBSD, mbuhl , fa90ac5c78 Obtained from: OpenBSD, mbuhl , c259202341 Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/pfctl.c | 1 + sys/net/pfvar.h | 2 ++ sys/netpfil/pf/pf.c | 8 ++++++++ sys/netpfil/pf/pf.h | 3 ++- sys/netpfil/pf/pf_ioctl.c | 1 + sys/netpfil/pf/pf_norm.c | 1 + sys/netpfil/pf/pf_ruleset.c | 8 ++++---- 7 files changed, 19 insertions(+), 5 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 9aa50a73ba04..a96eed7fc94a 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -183,6 +183,7 @@ static const struct { { "src-nodes", PF_LIMIT_SRC_NODES }, { "frags", PF_LIMIT_FRAGS }, { "table-entries", PF_LIMIT_TABLE_ENTRIES }, + { "anchors", PF_LIMIT_ANCHORS }, { NULL, 0 } }; diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 8dae95c2cc2e..c933ff395992 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -2338,6 +2338,8 @@ VNET_DECLARE(uma_zone_t, pf_udp_mapping_z); #define V_pf_udp_mapping_z VNET(pf_udp_mapping_z) VNET_DECLARE(uma_zone_t, pf_state_scrub_z); #define V_pf_state_scrub_z VNET(pf_state_scrub_z) +VNET_DECLARE(uma_zone_t, pf_anchor_z); +#define V_pf_anchor_z VNET(pf_anchor_z) extern void pf_purge_thread(void *); extern void pf_unload_vnet_purge(void); diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 4801b3e2c766..408d0d3c96e3 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1254,6 +1254,14 @@ pf_initialize(void) MTX_DEF | MTX_DUPOK); } + /* Anchors */ + V_pf_anchor_z = uma_zcreate("pf anchors", + sizeof(struct pf_kanchor), NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, 0); + V_pf_limits[PF_LIMIT_ANCHORS].zone = V_pf_anchor_z; + uma_zone_set_max(V_pf_anchor_z, PF_ANCHOR_HIWAT); + uma_zone_set_warning(V_pf_anchor_z, "PF anchor limit reached"); + /* ALTQ */ TAILQ_INIT(&V_pf_altqs[0]); TAILQ_INIT(&V_pf_altqs[1]); diff --git a/sys/netpfil/pf/pf.h b/sys/netpfil/pf/pf.h index cfff58064922..a41443fb9404 100644 --- a/sys/netpfil/pf/pf.h +++ b/sys/netpfil/pf/pf.h @@ -120,7 +120,7 @@ enum { enum { PF_NOPFROUTE, PF_FASTROUTE, PF_ROUTETO, PF_DUPTO, PF_REPLYTO }; enum { PF_LIMIT_STATES, PF_LIMIT_SRC_NODES, PF_LIMIT_FRAGS, - PF_LIMIT_TABLE_ENTRIES, PF_LIMIT_MAX }; + PF_LIMIT_TABLE_ENTRIES, PF_LIMIT_ANCHORS, PF_LIMIT_MAX }; #define PF_POOL_IDMASK 0x0f enum { PF_POOL_NONE, PF_POOL_BITMASK, PF_POOL_RANDOM, PF_POOL_SRCHASH, PF_POOL_ROUNDROBIN }; @@ -490,6 +490,7 @@ struct pf_osfp_ioctl { #define PF_ANCHOR_NAME_SIZE 64 #define PF_ANCHOR_MAXPATH (MAXPATHLEN - PF_ANCHOR_NAME_SIZE - 1) +#define PF_ANCHOR_HIWAT 512 #define PF_OPTIMIZER_TABLE_PFX "__automatic_" struct pf_rule { diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 08ae2057653b..935747d9f58a 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -331,6 +331,7 @@ pfattach_vnet(void) V_pf_limits[PF_LIMIT_STATES].limit = PFSTATE_HIWAT; V_pf_limits[PF_LIMIT_SRC_NODES].limit = PFSNODE_HIWAT; + V_pf_limits[PF_LIMIT_ANCHORS].limit = PF_ANCHOR_HIWAT; RB_INIT(&V_pf_anchors); pf_init_kruleset(&pf_main_ruleset); diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index 8cea9557633c..2b822dca55b5 100644 --- a/sys/netpfil/pf/pf_norm.c +++ b/sys/netpfil/pf/pf_norm.c @@ -118,6 +118,7 @@ VNET_DEFINE_STATIC(uma_zone_t, pf_frnode_z); #define V_pf_frnode_z VNET(pf_frnode_z) VNET_DEFINE_STATIC(uma_zone_t, pf_frag_z); #define V_pf_frag_z VNET(pf_frag_z) +VNET_DEFINE(uma_zone_t, pf_anchor_z); TAILQ_HEAD(pf_fragqueue, pf_fragment); TAILQ_HEAD(pf_cachequeue, pf_fragment); diff --git a/sys/netpfil/pf/pf_ruleset.c b/sys/netpfil/pf/pf_ruleset.c index 43b51f2933f4..7f21b3f8fc47 100644 --- a/sys/netpfil/pf/pf_ruleset.c +++ b/sys/netpfil/pf/pf_ruleset.c @@ -238,7 +238,7 @@ pf_create_kanchor(struct pf_kanchor *parent, const char *aname) ((parent != NULL) && (strlen(parent->path) >= PF_ANCHOR_MAXPATH))) return (NULL); - anchor = rs_malloc(sizeof(*anchor)); + anchor = uma_zalloc(V_pf_anchor_z, M_NOWAIT | M_ZERO); if (anchor == NULL) return (NULL); @@ -259,7 +259,7 @@ pf_create_kanchor(struct pf_kanchor *parent, const char *aname) printf("%s: RB_INSERT1 " "'%s' '%s' collides with '%s' '%s'\n", __func__, anchor->path, anchor->name, dup->path, dup->name); - rs_free(anchor); + uma_zfree(V_pf_anchor_z, anchor); return (NULL); } @@ -273,7 +273,7 @@ pf_create_kanchor(struct pf_kanchor *parent, const char *aname) anchor->name, dup->path, dup->name); RB_REMOVE(pf_kanchor_global, &V_pf_anchors, anchor); - rs_free(anchor); + uma_zfree(V_pf_anchor_z, anchor); return (NULL); } } @@ -350,7 +350,7 @@ pf_remove_if_empty_kruleset(struct pf_kruleset *ruleset) if ((parent = ruleset->anchor->parent) != NULL) RB_REMOVE(pf_kanchor_node, &parent->children, ruleset->anchor); - rs_free(ruleset->anchor); + uma_zfree(V_pf_anchor_z, ruleset->anchor); if (parent == NULL) return; ruleset = &parent->ruleset; From nobody Tue Aug 5 22:28:12 2025 X-Original-To: dev-commits-src-main@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 4bxSk51Lyfz63nN2; Tue, 05 Aug 2025 22:28:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk466ylz4LXR; Tue, 05 Aug 2025 22:28:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432892; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/Qiwcn3gySxSfa7RWbQXHvFkO3DhfX1y+oP+pGGU5s=; b=jSTRvngOM+G6b8D2BuvyIHZjIeDtNIoR/bJXlqUnvfhSpx2iGDNukSdCyOWMkt0OvEZk8b iU2JXoHVB5mzAXGTssjzTFORFDkI88qcFh8rov+iSr6B4blx9qvKXQq9tzDitgbimLDKIc gxTHr77jOy1asYeMme9wxF9twYxoYm6HCDo/RGTmOUnaLatgkoRURVXp5fJHArueUxZmnB Qu0Ww0wwhPdq3P7/JBTkCwTEVl3gneBVfGC/FTsVy0zkVur1H/dM1PkpLrUZS9DG2Ll7u0 10D4eATmOeCdTqpZG4mCm8EJqMEaPtLGAHx1iIIL8H7M6r5IDmWTxgHpw9yPyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432892; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/Qiwcn3gySxSfa7RWbQXHvFkO3DhfX1y+oP+pGGU5s=; b=sKf6YfiGw3QCTY5YHf8ivdQOEkEXllEjNvmSh/Gsr0Y02dKmrD+miK86T/fENWZe+qV1VH RSG8ad9qUvBBeWIqORBBZ+biImp6wIPBhmiiMvFnCHNRjk+nczqI8AAhwi4WeYiyzo1cDJ 8zbLyUnPqoOExrHvP4OgDIEST2FBy49v0yk4tD3xRNYi7JhAFzR4e5TGgAPtjrdKDrmoyW isXpqtzLp9wPAMNN6e4ht+G4Aotl5CZryd4Cc8bPN7TSF8HbkQ9gGKo6hLmsM4MslND3ix eD2MQ1NmelwywVO99uIYvG3jEbGw+23TXBWraJPryO2cxfnQarhb4UVBxK/bHw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432892; a=rsa-sha256; cv=none; b=rIJSk382JKJQ6YQgnxPuW3k4wg+aG18x4eqR0KNMRj78bGzGZwxKV0UfRblmtzCTAMsZ63 ixTsQ3MbDb4xmi57bPb6GCMNIWLZVZpCNIvsJ/6KrIYdUJVHHAC/aKDc/wiNunG+GsY8NE 8fV0pj3im3TTfvVcn5dfU72uKMFWYdfeM26hquZsjMGJ3QPUOoGMGx2enXlYFzbmZ9WfCx FtVa+I/yz/ZE7hvCPb//txPHuiuEYJil152lzv93FXAz96lC8fqrrBDOpEHJJ86w2KZ9yD gfqP8FsdC3FmDdlf7RvzX45XRZUm3F1zEpwOkidTUaj9QS78Mer6GzpXkyVorg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk45Ly7ztwC; Tue, 05 Aug 2025 22:28:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSC93014458; Tue, 5 Aug 2025 22:28:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSC2I014455; Tue, 5 Aug 2025 22:28:12 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:12 GMT Message-Id: <202508052228.575MSC2I014455@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: d8761e109d4d - main - pf.conf.5: document limit-item "anchors"; from martin vahlensieck List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d8761e109d4d562bf119a4b7d04f92e5e0ad885e Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=d8761e109d4d562bf119a4b7d04f92e5e0ad885e commit d8761e109d4d562bf119a4b7d04f92e5e0ad885e Author: Kristof Provost AuthorDate: 2025-07-30 15:32:34 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:15 +0000 pf.conf.5: document limit-item "anchors"; from martin vahlensieck while here, rework the "set limit" section: - use a simple list - add some missing defaults and limit-item mbuhl helped fill in some of the blanks ok kn Obtained from: OpenBSD, jmc , 4fbb390c4b Sponsored by: Rubicon Communications, LLC ("Netgate") --- share/man/man5/pf.conf.5 | 61 +++++++++++++++++++----------------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5 index 1c40765f908a..a9ae823257a4 100644 --- a/share/man/man5/pf.conf.5 +++ b/share/man/man5/pf.conf.5 @@ -27,7 +27,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 18, 2025 +.Dd July 30, 2025 .Dt PF.CONF 5 .Os .Sh NAME @@ -392,50 +392,37 @@ See .Xr zone 9 for an explanation of memory pools. .Pp -For example, -.Bd -literal -offset indent -set limit states 20000 -.Ed -.Pp -sets the maximum number of entries in the memory pool used by state table -entries (generated by +Limits can be set on the following: +.Bl -tag -width pktdelay_pkts +.It Cm states +Set the maximum number of entries in the memory pool used by state table +entries (those generated by .Ar pass rules which do not specify -.Ar no state ) -to 20000. -Using -.Bd -literal -offset indent -set limit frags 20000 -.Ed -.Pp -sets the maximum number of entries in the memory pool used for fragment -reassembly (generated by the -.Ar set reassemble -option or -.Ar scrub -rules) to 20000. -Using -.Bd -literal -offset indent -set limit src-nodes 2000 -.Ed -.Pp -sets the maximum number of entries in the memory pool used for tracking +.Cm no state ) . +The default is 100000. +.It Cm src-nodes +Set the maximum number of entries in the memory pool used for tracking source IP addresses (generated by the .Ar sticky-address and .Ar src.track -options) to 2000. -Using -.Bd -literal -offset indent -set limit table-entries 100000 -.Ed -.Pp -sets the limit on the overall number of addresses that can be stored -in tables to 100000. +options). +The default is 10000. +.It Cm table-entries +Set the number of addresses that can be stored in tables. +The default is 200000. +.It Cm anchors +Set the number of anchors that can exist. +The default is 512. +.It Cm eth-anchors +Set the number of anchors that can exist. +The default is 512. +.El .Pp -Various limits can be combined on a single line: +Multiple limits can be combined on a single line: .Bd -literal -offset indent -set limit { states 20000, frags 20000, src-nodes 2000 } +set limit { states 20000, frags 2000, src-nodes 2000 } .Ed .It Ar set ruleset-optimization .Bl -tag -width xxxxxxxx -compact From nobody Tue Aug 5 22:28:11 2025 X-Original-To: dev-commits-src-main@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 4bxSk41Dzlz63nl5; Tue, 05 Aug 2025 22:28: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk34nzzz4LRg; Tue, 05 Aug 2025 22:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0sGTPLPgKjNIYkvXKw3hJqgARFHsnmnSj+AXX3TWCYo=; b=sLxNLo6p84Jnt1wLXqekLNmmFy1U7eEf+BcaDDkEElkQ7HqScBHOFL1PKaMGWcZMDxJSbB Vm+7fcQ3XDMRp23V/+b5WIKlKNBfXWzy3nKCJ3jHrEh5bSTUWqx4EYlzugKvJBGd9T0g5/ ArHUxZbIOlJZQn1m7JQImds/iXbEX3hUaY6j3CwttkOaIfYChbjEK0LdNJrIcClECjbl09 6/4dzggOirARyWuHfUC/opKrKbUH4CJ9KpgD3rTspICFIHmI0dNhBcCydAeTFRkLPh7kh8 eeLXSecpcy2o6H5Drobqicj62M+BPyPVegMJ44MoUqIRMiJ3wOi3ZSH1UtLQSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0sGTPLPgKjNIYkvXKw3hJqgARFHsnmnSj+AXX3TWCYo=; b=oYD3zeqgDoP7uriD3Su+qB7XqdJeNlOPxB6bDPlpDshOVGmDy0n4sX01LnBcjnW6vAk7AD rHU1841+NUoo2wDX1GpHx3nWQrmqb5jrKSGzkGWEAoTQq2sYb4X8jlDvDDuFNVzEWFLZPr uNStaIxGiu9AHIErp0kulIB63OMya2F5GQrmxgo24Z3Z8brHTdMurjaRffIs7lv99XvTgb GtwAM4y8Y5ivbzV5NsEz8NdbfCDh71D/GHb0Nbw54XNcOi9MEJDnA6mHRjoT+h6D2MzHwz brYaMup/q4GwwhWGuUsYSExdyYbwJhxrzIttU6WzWKIzKE4vLBDvTJSCSnnvPg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432891; a=rsa-sha256; cv=none; b=w64JSpoyxok/pN7ixBTxDx/+fonqrnj19HGzjSjwioBZzsvgRt2VbSnc7aN6YlmSYUtJlm s/6wb1/UAi0mWLDrUWcPNv6YRU0gU8e9aNseNmryl0q7+mWYqA/L+E6XR46YQfdeDW+Bl+ zhkojc8Ca7zl77t7//NpcvmF4o6p7zLGj79TPLzEHheDF14QLddieDPgFRYtwbXcuwfcCW 0auv8WsifqjNlKkLgyXh0qIXZSUSAjzeqBRyDBbUAykrVEby6b9gkoQxfVSAFSZs3AYrXh XLeRtCTIfQmFdmGnizXqZKEsqHGyWD9VEQxVZ1UTZdocMXYzvFq5qROtnPFpMg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk34PhPztwB; Tue, 05 Aug 2025 22:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSBAn014424; Tue, 5 Aug 2025 22:28:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSBHu014421; Tue, 5 Aug 2025 22:28:11 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:11 GMT Message-Id: <202508052228.575MSBHu014421@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 029532e77b92 - main - pf: also allocate ethernet anchors from a UMA zone List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 029532e77b92d0c74976e3e3fc79a0ca5e0e3dc0 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=029532e77b92d0c74976e3e3fc79a0ca5e0e3dc0 commit 029532e77b92d0c74976e3e3fc79a0ca5e0e3dc0 Author: Kristof Provost AuthorDate: 2025-07-30 15:22:36 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:15 +0000 pf: also allocate ethernet anchors from a UMA zone As per the previous commit, ensure we can't endlessly allocate ethernet anchors. Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/pfctl.c | 1 + sys/net/pfvar.h | 2 ++ sys/netpfil/pf/pf.c | 7 +++++++ sys/netpfil/pf/pf.h | 3 ++- sys/netpfil/pf/pf_ioctl.c | 1 + sys/netpfil/pf/pf_norm.c | 1 + sys/netpfil/pf/pf_ruleset.c | 8 ++++---- 7 files changed, 18 insertions(+), 5 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index a96eed7fc94a..ae772395e0ef 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -184,6 +184,7 @@ static const struct { { "frags", PF_LIMIT_FRAGS }, { "table-entries", PF_LIMIT_TABLE_ENTRIES }, { "anchors", PF_LIMIT_ANCHORS }, + { "eth-anchors", PF_LIMIT_ETH_ANCHORS }, { NULL, 0 } }; diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index c933ff395992..c397f0b67896 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -2340,6 +2340,8 @@ VNET_DECLARE(uma_zone_t, pf_state_scrub_z); #define V_pf_state_scrub_z VNET(pf_state_scrub_z) VNET_DECLARE(uma_zone_t, pf_anchor_z); #define V_pf_anchor_z VNET(pf_anchor_z) +VNET_DECLARE(uma_zone_t, pf_eth_anchor_z); +#define V_pf_eth_anchor_z VNET(pf_eth_anchor_z) extern void pf_purge_thread(void *); extern void pf_unload_vnet_purge(void); diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 408d0d3c96e3..19702fde7d22 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1262,6 +1262,13 @@ pf_initialize(void) uma_zone_set_max(V_pf_anchor_z, PF_ANCHOR_HIWAT); uma_zone_set_warning(V_pf_anchor_z, "PF anchor limit reached"); + V_pf_eth_anchor_z = uma_zcreate("pf Ethernet anchors", + sizeof(struct pf_keth_anchor), NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, 0); + V_pf_limits[PF_LIMIT_ETH_ANCHORS].zone = V_pf_eth_anchor_z; + uma_zone_set_max(V_pf_eth_anchor_z, PF_ANCHOR_HIWAT); + uma_zone_set_warning(V_pf_eth_anchor_z, "PF Ethernet anchor limit reached"); + /* ALTQ */ TAILQ_INIT(&V_pf_altqs[0]); TAILQ_INIT(&V_pf_altqs[1]); diff --git a/sys/netpfil/pf/pf.h b/sys/netpfil/pf/pf.h index a41443fb9404..51b3fd6390e1 100644 --- a/sys/netpfil/pf/pf.h +++ b/sys/netpfil/pf/pf.h @@ -120,7 +120,8 @@ enum { enum { PF_NOPFROUTE, PF_FASTROUTE, PF_ROUTETO, PF_DUPTO, PF_REPLYTO }; enum { PF_LIMIT_STATES, PF_LIMIT_SRC_NODES, PF_LIMIT_FRAGS, - PF_LIMIT_TABLE_ENTRIES, PF_LIMIT_ANCHORS, PF_LIMIT_MAX }; + PF_LIMIT_TABLE_ENTRIES, PF_LIMIT_ANCHORS, PF_LIMIT_ETH_ANCHORS, + PF_LIMIT_MAX }; #define PF_POOL_IDMASK 0x0f enum { PF_POOL_NONE, PF_POOL_BITMASK, PF_POOL_RANDOM, PF_POOL_SRCHASH, PF_POOL_ROUNDROBIN }; diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 935747d9f58a..b6f5d74b5b42 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -332,6 +332,7 @@ pfattach_vnet(void) V_pf_limits[PF_LIMIT_STATES].limit = PFSTATE_HIWAT; V_pf_limits[PF_LIMIT_SRC_NODES].limit = PFSNODE_HIWAT; V_pf_limits[PF_LIMIT_ANCHORS].limit = PF_ANCHOR_HIWAT; + V_pf_limits[PF_LIMIT_ETH_ANCHORS].limit = PF_ANCHOR_HIWAT; RB_INIT(&V_pf_anchors); pf_init_kruleset(&pf_main_ruleset); diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index 2b822dca55b5..a684d778ab42 100644 --- a/sys/netpfil/pf/pf_norm.c +++ b/sys/netpfil/pf/pf_norm.c @@ -119,6 +119,7 @@ VNET_DEFINE_STATIC(uma_zone_t, pf_frnode_z); VNET_DEFINE_STATIC(uma_zone_t, pf_frag_z); #define V_pf_frag_z VNET(pf_frag_z) VNET_DEFINE(uma_zone_t, pf_anchor_z); +VNET_DEFINE(uma_zone_t, pf_eth_anchor_z); TAILQ_HEAD(pf_fragqueue, pf_fragment); TAILQ_HEAD(pf_cachequeue, pf_fragment); diff --git a/sys/netpfil/pf/pf_ruleset.c b/sys/netpfil/pf/pf_ruleset.c index 7f21b3f8fc47..039908a53126 100644 --- a/sys/netpfil/pf/pf_ruleset.c +++ b/sys/netpfil/pf/pf_ruleset.c @@ -613,7 +613,7 @@ pf_find_or_create_keth_ruleset(const char *path) rs_free(p); return (NULL); } - anchor = (struct pf_keth_anchor *)rs_malloc(sizeof(*anchor)); + anchor = uma_zalloc(V_pf_eth_anchor_z, M_NOWAIT | M_ZERO); if (anchor == NULL) { rs_free(p); return (NULL); @@ -631,7 +631,7 @@ pf_find_or_create_keth_ruleset(const char *path) printf("%s: RB_INSERT1 " "'%s' '%s' collides with '%s' '%s'\n", __func__, anchor->path, anchor->name, dup->path, dup->name); - rs_free(anchor); + uma_zfree(V_pf_eth_anchor_z, anchor); rs_free(p); return (NULL); } @@ -645,7 +645,7 @@ pf_find_or_create_keth_ruleset(const char *path) anchor->name, dup->path, dup->name); RB_REMOVE(pf_keth_anchor_global, &V_pf_keth_anchors, anchor); - rs_free(anchor); + uma_zfree(V_pf_eth_anchor_z, anchor); rs_free(p); return (NULL); } @@ -754,7 +754,7 @@ pf_remove_if_empty_keth_ruleset(struct pf_keth_ruleset *ruleset) if ((parent = ruleset->anchor->parent) != NULL) RB_REMOVE(pf_keth_anchor_node, &parent->children, ruleset->anchor); - rs_free(ruleset->anchor); + uma_zfree(V_pf_eth_anchor_z, ruleset->anchor); if (parent == NULL) return; ruleset = &parent->ruleset; From nobody Tue Aug 5 22:28:13 2025 X-Original-To: dev-commits-src-main@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 4bxSk65s9kz63nWB; Tue, 05 Aug 2025 22:28: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk56hz9z4LgB; Tue, 05 Aug 2025 22:28:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432894; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kQtGybqJ2dHD/+4J/cymplP4WtzMByBXaUTTfuYvq0Y=; b=e+vZVSvXxjN1PYnooEC0uU+I9oqpOkNMfvq6CG2zd2iFGHHMwMRfxaKu/9H9eQcAApsDI5 BW0gKxlEd9rUAFxxDKnWIBOSS28CBc+OugtcdWveCEf7on1VHiqEabKaC7rbzI8v6DZueS bsMVA26NRsBnCQzhVnbr8REX9QXxPLTy1fLWrQJe8xjyI/jn0412uFgYp0GiFB0xxU3e8W TW+Ax+9Q46L63pXT1IDmKrEwZ23wp96DMFHOMxz1QzUyb/umeBDrODpLYhO+J3GIy2Igis lM1ACaSVS9hmJJ2RBXIavPUZA2c+FNHFdU3jFEKOo30RkCudmX6h0TIG/06nuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432894; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kQtGybqJ2dHD/+4J/cymplP4WtzMByBXaUTTfuYvq0Y=; b=KQPHN2Z09xTT24BtPLE/k4xWJuxFAHDgN1noe1wCFQ5jjduk+7UhCKjjx7FF8iNfwKtZSA deZ2+HqZqi3r2dT4OOxWqjUBwQM1GSur2CUBRDyyJlcN0Uj5xb3EglvJiCAh6hVzGrJH6q 2bxLfaBjkeo4El6GI97w58rdfhdHsE2fHpEUBD62lnmvWT13YHsd1AX2m4fjxAVVqnVKK3 ImqRUuryteqWCU1Y0aNZaQsd+au15q6RZO62W8Os/PIqMwW7Npdk8Y/zjHk7QerFBp3QPC 1aLHCTKYqsvaGzsRh7T59CQ3tbMkHqhRrRi3nUwKQYgZ2DU5Zn0IruDImK6F3Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432894; a=rsa-sha256; cv=none; b=az5t70uuBzeRgGIwBB8GEOQ6oiTZ4m51zL1kTzZIedqG8/Igyuuz/oYKOVygyreeUMN7wN V+XjKTmVqNjJpFj7xrQC4GiGlbt1AFal44nQ3aaQvzAH3cWuyKxZKhC9uNX6ur0WmltJhU 6V2bKjMVnABhl17FTFOaqwqg7f45J9KhQM4QKyD44Bc/ld+l6PxYWiH1P8T4v/QGOGHdgf 0BBAkbydWWVU3Rqmp4J5BkfSlWfWKs3PHr+B1Z/pbIXkhV+DEqrXm3OBlFkVwC5DIuHGpH Zioz1cSOczOdEA6UGtTdBxSOqGgIT/4yUgchTAAjqnxEr9d0DrNKgVJw94tHdQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk55zxXztYn; Tue, 05 Aug 2025 22:28:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSDC6014493; Tue, 5 Aug 2025 22:28:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSDX8014490; Tue, 5 Aug 2025 22:28:13 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:13 GMT Message-Id: <202508052228.575MSDX8014490@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 301bd2998dc6 - main - pfctl: memset the pfctl struct in pfctl_reset() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 301bd2998dc686e2e51147f65e11f30fe321f7dc Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=301bd2998dc686e2e51147f65e11f30fe321f7dc commit 301bd2998dc686e2e51147f65e11f30fe321f7dc Author: Kristof Provost AuthorDate: 2025-07-30 15:34:12 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:16 +0000 pfctl: memset the pfctl struct in pfctl_reset() OK jan@ Obtained from: OpenBSD, mbuhl , 94c97b180b Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/pfctl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index ae772395e0ef..36bdd9705830 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -3139,6 +3139,7 @@ pfctl_reset(int dev, int opts) struct pfr_buffer t; int i; + memset(&pf, 0, sizeof(pf)); pf.dev = dev; pf.h = pfh; pfctl_init_options(&pf); From nobody Tue Aug 5 22:28:14 2025 X-Original-To: dev-commits-src-main@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 4bxSk76Ntsz63nl7; Tue, 05 Aug 2025 22:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk70PWBz4LSL; Tue, 05 Aug 2025 22:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432895; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h4/nytLZCeEXQi7k3BMM1x9HqG632KcHfARWPFMdWzw=; b=A0v0jvO0NiFdpdlJENIoJzgqEViy8MPHhYbeY63RGQ3JXUVWwlrVSpo/6XPgDBX4UxwtQc oAZQ0ci/9sayic1wlz7sj8dT8HwIzav44GiLXSrB2Gfe+vZe0EKhw54dTl2Hs4elhHrcTY R+IWbT33eJAigCD3xDIUWGOE0109j3XtzgD3WJf6N+Wvb6VR94h2Oxzii1MUuVypKFTPYU 7dAzLOQu417W4iZ+hluPw0B0t1c11kzuXWLfgTOZC/2USsqs6JsvdKlg3R/C7GqV0RAI0n q8ByNxqkJFD3Rp5uKNEIo/WCTsY5nVFt1IQDUqE7KuOds+xdRhLA+I59bS66oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432895; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h4/nytLZCeEXQi7k3BMM1x9HqG632KcHfARWPFMdWzw=; b=ouNMCxX0vMEGQKk+z+ZJZ156pTI/Yts0TlTLz+qy+7Cuj+3VUpAad//YLC6puhMhAjwkxB +wpiGby1dUBecNGYSOzr3HotuSGzelESfDrEEfSjs6qLwwXHeYgXRXPcicAocEElyYgNAm wz3AQkpcHAdLVfTuYbvAwXU1DsOagKHZK3xBfItf3QivRB07OiCvtFACWZ6tTMTB5l2iWP OgH4A1Pd5oS6++HDjUiUzPKV3HbJYuCl5LDhQIisPhTFxSu7vmfH7yRNiIiPZal/MYpu5W 7WIM+cFmVtvJ/2JLMmNa7aNh3ZD6bk/MeyvrU711E7jzqaBD3umNtB/e1uD2mg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432895; a=rsa-sha256; cv=none; b=lzF0qjtvNSbGnvRIxJ2pLTNgtcX2V6vAsOFZ8I2xQClbZPn05hI373eDByHYwdyj/W27QF gFX0gUr7L9T5T3O+QqOrpSTrlsVr2j8/LpRu+nIbob+LDAne1+u1GyJD5aQMbErC69NPDY Xg007RSeyqL7GnsvhxgzlETZFyyyYeAV2Ckd6prxMnQJISOPMSdUSU8EmPO5ieeQSBiKdr MRofPiSXeHxZ8X1C3R/FDnHHYWi2CglLLyexUiyF7fNCIejGfKCZfWBmum+HIGZ5TxZeuk CvcvTCaUOONRAmYz3IAuo1QxehhN5yTI4N8n+JkjxcU9oz2Nv0eKB4glukaKSA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk66wbfztwD; Tue, 05 Aug 2025 22:28:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSEp7014528; Tue, 5 Aug 2025 22:28:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSE6i014525; Tue, 5 Aug 2025 22:28:14 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:14 GMT Message-Id: <202508052228.575MSE6i014525@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: f2e956c915fd - main - pf tests: robustness improvement List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f2e956c915fd8a0f7a9aa9ed8873a9d15db0d0ae Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=f2e956c915fd8a0f7a9aa9ed8873a9d15db0d0ae commit f2e956c915fd8a0f7a9aa9ed8873a9d15db0d0ae Author: Kristof Provost AuthorDate: 2025-08-01 11:50:20 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:16 +0000 pf tests: robustness improvement Make a few tests less likely to intermittently fail by giving background server processes a bit more time to finish starting. Sponsored by: Rubicon Communications, LLC ("Netgate") --- tests/sys/netpfil/pf/nat64.sh | 12 ++++++------ tests/sys/netpfil/pf/sctp.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/tests/sys/netpfil/pf/nat64.sh b/tests/sys/netpfil/pf/nat64.sh index da95a7bf9893..f92a69f2abce 100644 --- a/tests/sys/netpfil/pf/nat64.sh +++ b/tests/sys/netpfil/pf/nat64.sh @@ -200,7 +200,7 @@ tcp_in_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(nc -w 3 -6 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; @@ -230,7 +230,7 @@ tcp_out_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(nc -w 3 -6 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; @@ -260,7 +260,7 @@ udp_in_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(echo bar | nc -w 3 -6 -u 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; @@ -290,7 +290,7 @@ udp_out_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(echo bar | nc -w 3 -6 -u 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; @@ -323,7 +323,7 @@ sctp_in_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(echo bar | nc --sctp -w 3 -6 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; @@ -356,7 +356,7 @@ sctp_out_body() # Sanity check & delay for nc startup atf_check -s exit:0 -o ignore \ - ping6 -c 1 64:ff9b::192.0.2.2 + ping6 -c 3 64:ff9b::192.0.2.2 rcv=$(echo bar | nc --sctp -w 3 -6 64:ff9b::c000:202 1234) if [ "${rcv}" != "foo" ]; diff --git a/tests/sys/netpfil/pf/sctp.py b/tests/sys/netpfil/pf/sctp.py index da42ce527195..f492f26b63a1 100644 --- a/tests/sys/netpfil/pf/sctp.py +++ b/tests/sys/netpfil/pf/sctp.py @@ -271,6 +271,9 @@ class TestSCTP(VnetTestTemplate): "pass inet proto sctp to 192.0.2.0/24", "pass on lo"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234) client.send(b"hello", 0) @@ -309,6 +312,9 @@ class TestSCTP(VnetTestTemplate): "pass on lo", "pass inet proto sctp from 192.0.2.0/24"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234, "192.0.2.1") client.send(b"hello", 0) @@ -379,6 +385,9 @@ class TestSCTP(VnetTestTemplate): "pass on lo", "pass inet proto sctp to 192.0.2.0/24"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234) client.send(b"hello", 0) @@ -410,6 +419,9 @@ class TestSCTP(VnetTestTemplate): "pass on lo", "pass inet proto sctp to 192.0.2.0/24"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234) client.send(b"hello", 0) @@ -440,6 +452,9 @@ class TestSCTP(VnetTestTemplate): "pass on lo", "pass inet proto sctp to 192.0.2.0/24"]) + # Give the server some time to come up + time.sleep(3) + # Set up a connection, which will try to create states for all addresses # we have assigned client = SCTPClient("192.0.2.3", 1234) @@ -464,6 +479,9 @@ class TestSCTP(VnetTestTemplate): "pass inet proto sctp to 192.0.2.3", "pass on lo"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234) client.send(b"hello", 0) @@ -502,6 +520,9 @@ class TestSCTP(VnetTestTemplate): "pass inet proto sctp to 192.0.2.3 keep state (allow-related)", "pass on lo"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("192.0.2.3", 1234) client.send(b"hello", 0) @@ -558,6 +579,9 @@ class TestSCTPv6(VnetTestTemplate): "pass on lo", "pass inet6 proto sctp to 2001:db8::0/64"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("2001:db8::3", 1234) client.send(b"hello", 0) @@ -596,6 +620,9 @@ class TestSCTPv6(VnetTestTemplate): "pass on lo", "pass inet6 proto sctp from 2001:db8::/64"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("2001:db8::3", 1234, "2001:db8::1") client.send(b"hello", 0) @@ -665,6 +692,9 @@ class TestSCTPv6(VnetTestTemplate): "pass on lo", "pass inet6 proto sctp to 2001:db8::0/64"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("2001:db8::3", 1234) client.send(b"hello", 0) @@ -696,6 +726,9 @@ class TestSCTPv6(VnetTestTemplate): "pass on lo", "pass inet6 proto sctp to 2001:db8::0/64"]) + # Give the server some time to come up + time.sleep(3) + # Sanity check, we can communicate with the primary address. client = SCTPClient("2001:db8::3", 1234) client.send(b"hello", 0) From nobody Tue Aug 5 22:28:16 2025 X-Original-To: dev-commits-src-main@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 4bxSk86Bgvz63nH4; Tue, 05 Aug 2025 22:28:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxSk828h5z4Ljk; Tue, 05 Aug 2025 22:28:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IodTIMkGDQMSO4Tnkx4hqUtM/BxDl6eVcFRSoCY0VIY=; b=vAsCliK91kgTKNFWcNXjG6l5V3LqD76YepLApS3/JwKy6LiHGK8I8SOG0FD7UIgPmVaQnW VaR79G2ww69/IEkKTN/J8VRpEHf5WUEWcKXigbmGNT4DUZfqfAwq+brq9ODIUIAoauXrFr i/cRfagmqBcbMp7OkB/WC18JT2ksskzBgERO+j17M9T/znjX64Wtlh5zIpY14kzePigGjM jYMnT3CPJvehqEDcCk2ntcXpTNnFjMK8n4gkBbhZAajxkRYf8D7m3w9b7k52e7XGWrTS4/ FRcsI4DBQMMvBG30Peec4OPk/yhIvWkNVogHj5mijGqNQcwZOAsp+lBmsupsPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754432896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IodTIMkGDQMSO4Tnkx4hqUtM/BxDl6eVcFRSoCY0VIY=; b=fuQ7z1Iqgce0v1ZncxLF5vAydGpC0LVsyaDyVahq54nlYIIro/QY5imxvwqIrmHa4zvlP7 xNh9eLur+PfBeIa24Q1owR0uYjyyMXFujAhRoWpd69fp7V7sCo5q0jscI3BZotBTzJx2L/ /L5tKXu2cJP+OQ/DgHSH4HWiRu9tipcpiPrOGRYGGS8b6AesHunaBEkP3d52wnlrucVDui l27AFANTdtfB47CIXg1K8z7A3vh/AcvpfXzfG+u2EdiTwwOkkp6QuIINkegQIO+DLpYt8M 5xTly1IYizz6s/YA6xFpdc0dqHEaMwGPNG0tAi3mdR93BOFZ/dJ/rp5TCYWpyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754432896; a=rsa-sha256; cv=none; b=VeBaMsvZoOET1TmeDOCAfPXqqAhRUquP2ndvjNX+BXqDeKFFHCpTYvg2SUUo2gR68zNO21 pHlW30zDEj9tti0mp5BJm75L5OF7CmlefJZPvjLay62WrbQba0d7BC4cjAF8ph8HSmHNB4 yH5UU/SFp7ArOs4hWiTH+1Ned4lhIBIdWv/rIq7ePTPAWYz3Mlc6GtKeA+h0n0iNaMvfqo VRMIK6u/b7Xb/Q0u6/zxS7/XNOTPKGA511SrIX6o00LIvL/kwsAIpzUkQC0IgoIoQftjjC 5oZ7Cc/SuNQliS2fVGr0dzKCH5P4aTDAkURm6OklN/CIH2aZ0Zd4fWJUxleJnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxSk80SHJzv2v; Tue, 05 Aug 2025 22:28:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MSGYN014560; Tue, 5 Aug 2025 22:28:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MSGDn014557; Tue, 5 Aug 2025 22:28:16 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:28:16 GMT Message-Id: <202508052228.575MSGDn014557@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 8a309785c9b1 - main - pf: fix handling unreassembled fragments List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8a309785c9b186c809a5d4b017fc8cf849af1ddd Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8a309785c9b186c809a5d4b017fc8cf849af1ddd commit 8a309785c9b186c809a5d4b017fc8cf849af1ddd Author: Kristof Provost AuthorDate: 2025-08-04 08:29:09 +0000 Commit: Kristof Provost CommitDate: 2025-08-05 22:27:16 +0000 pf: fix handling unreassembled fragments If we handle a fragment and are configured not to reassemble it the pd->proto field will show the layer 4 protocol (i.e. UDP,TCP,SCTP,...) but pd->virtual_proto will show we're a fragment. In that case we also don't have the layer 4 checksum pointer. Have code that cares about L4 (e.g. NAT) check virtual_proto so it doesn't try to dereference a NULL pcksum field. PR: 288549 Reported by: Danilo Egea Gondolfo Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D51722 --- sys/netpfil/pf/pf.c | 4 +-- tests/sys/netpfil/pf/Makefile | 1 + tests/sys/netpfil/pf/frag4.py | 72 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 19702fde7d22..3fa7789efcfe 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -621,7 +621,7 @@ static void pf_packet_rework_nat(struct pf_pdesc *pd, int off, struct pf_state_key *nk) { - switch (pd->proto) { + switch (pd->virtual_proto) { case IPPROTO_TCP: { struct tcphdr *th = &pd->hdr.tcp; @@ -6391,7 +6391,7 @@ pf_translate_compat(struct pf_test_ctx *ctx) KASSERT(ctx->sk != NULL, ("%s: null sk", __func__)); KASSERT(ctx->nk != NULL, ("%s: null nk", __func__)); - switch (pd->proto) { + switch (pd->virtual_proto) { case IPPROTO_TCP: if (PF_ANEQ(&pd->nsaddr, &nk->addr[pd->sidx], pd->af) || nk->port[pd->sidx] != pd->nsport) { diff --git a/tests/sys/netpfil/pf/Makefile b/tests/sys/netpfil/pf/Makefile index 404d5adfb07a..616ffe560b3a 100644 --- a/tests/sys/netpfil/pf/Makefile +++ b/tests/sys/netpfil/pf/Makefile @@ -55,6 +55,7 @@ ATF_TESTS_SH+= altq \ tcp \ tos +ATF_TESTS_PYTEST+= frag4.py ATF_TESTS_PYTEST+= frag6.py ATF_TESTS_PYTEST+= header.py ATF_TESTS_PYTEST+= icmp.py diff --git a/tests/sys/netpfil/pf/frag4.py b/tests/sys/netpfil/pf/frag4.py new file mode 100644 index 000000000000..3303d2ee7780 --- /dev/null +++ b/tests/sys/netpfil/pf/frag4.py @@ -0,0 +1,72 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2025 Rubicon Communications, LLC (Netgate) +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +import pytest +from utils import DelayedSend +from atf_python.sys.net.tools import ToolsHelper +from atf_python.sys.net.vnet import VnetTestTemplate + +class TestFrag4_NoReassemble(VnetTestTemplate): + REQUIRED_MODULES = [ "pf" ] + TOPOLOGY = { + "vnet1": {"ifaces": ["if1"]}, + "vnet2": {"ifaces": ["if1", "if2"]}, + "vnet3": {"ifaces": ["if2"]}, + "if1": {"prefixes4": [("192.0.2.1/24", "192.0.2.2/24")]}, + "if2": {"prefixes4": [("198.51.100.1/24", "198.51.100.2/24")]}, + } + + def vnet2_handler(self, vnet): + outifname = vnet.iface_alias_map["if2"].name + + ToolsHelper.print_output("/sbin/pfctl -e") + ToolsHelper.pf_rules([ + "set reassemble no", + "nat on %s from 192.0.2.0/24 to any -> (%s)" % (outifname, outifname), + "pass out" + ]) + + ToolsHelper.print_output("/sbin/sysctl net.inet.ip.forwarding=1") + + def vnet3_handler(self, vnet): + # We deliberately don't set the default gateway here, so if we get a + # reply from this we know we did NAT in vnet2 + pass + + @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) + def test_udp_frag(self): + ToolsHelper.print_output("/sbin/route add default 192.0.2.2") + ToolsHelper.print_output("/sbin/ping -c 3 198.51.100.2") + + # Import in the correct vnet, so at to not confuse Scapy + import scapy.all as sp + + pkt = sp.IP(dst="198.51.100.2", frag=123) \ + / sp.UDP(dport=12345, sport=54321) + reply = sp.sr1(pkt, timeout=3) + # We don't expect a reply + assert not reply From nobody Tue Aug 5 22:53:28 2025 X-Original-To: dev-commits-src-main@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 4bxTHF0j6Zz63psm; Tue, 05 Aug 2025 22:53: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxTHD6zcwz3CXN; Tue, 05 Aug 2025 22:53:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754434409; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SenTTyDoLVQPVqdIV06RkM9tZMGyHCRx1sdMVHFazMw=; b=yC2PJmVEWwP+YtECu0D2qSL1WEy0v8Jpl14Z1lBsf55PmWk3loO5D6PvxNX1/T8Wb0qpno Nqo9Bpj3o22HXu3PrzIanlXjfpsU+Twh9Xm951BG3PTmhggRQYp/O7SgoTSZXeQExmGQnz e6I5xwagLCRkJz0eTSdrso8MB7/7/HphBEX3iKSxrGJMdj4cizhKaU0UrcCwiOUX+PdiL1 Ake0+YC/AIWEjObDnWd89VISw/ZtRJJfZBXTREDki0fadoBLqFM6HsbNn7vwvDxZrMfCYk yW+WKxEbSUomICqv31mQGRH08HBVA2nihJxFslUsd71ZWMuolQXzLQOEGvnexg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754434409; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SenTTyDoLVQPVqdIV06RkM9tZMGyHCRx1sdMVHFazMw=; b=tjTFTmukJzW32X4wfbumEebusMYyteM2w6Btf+vvov4/FzIvq2iQeb7zKXLejkI3qPmu6n 56E3BE9l6+mLP+T8FSjendF/R8askIjvfj3n7t1r7QiIJQJDof0GhllyN6b8M5lN6kBAKz JF6jIcDJZrFo6Esk24K/SNA6oJ1VsArsZa2vUfwak32PFSumWhJHpGPF+IEGqxuWEBZ+6h O6+elX/0PlmBmtqQkRift1OE0NEEo4QwSIGuiY/theqlr1Azs1GJXYEYa1cssidcvS9RDM N2lZxXCr1Sq0puw/IcrBXRr6VW5WS/pkrimgDTbDLDUVH3Oy31XIQkTl0EuQQg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754434409; a=rsa-sha256; cv=none; b=Ic8UlLnQmEo1Oj+e7TOK7Xbd3ahWyTlcZfEUWJt36rJ/qYC481Mjx6LX4gBHJAewTQWS7q PT5Ud73by05ajJG5OcEahn0LyUkIlCcv8AU+2B57GGQKEOkE3LcjLXmXXU63/mbS2OEBbG 4K9yqfBaMk0jiDjcvdZnvVNm8wWwCGRUrq6uK8pgxodKj7UFCdOa1DhF3cifVKWjB0mgkv 3LISiD/+RLvHH8Idj1pRMF5nNZy2hxbvsGcnLs03dbVyFBBo9MZZnBQwMkx7hdvX7+TWhf 3X3J2BUeHqHoz5JaZ1qj+8WQoxrUGmILz3aeXULCNmT9xqG8uLaMGkC0xd2r1Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxTHD6T8vzvZJ; Tue, 05 Aug 2025 22:53:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MrSLs069329; Tue, 5 Aug 2025 22:53:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575MrS6U069326; Tue, 5 Aug 2025 22:53:28 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:53:28 GMT Message-Id: <202508052253.575MrS6U069326@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 9e682c426093 - main - fusefs: don't fake the mountpoint's stat info before FUSE_INIT completes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9e682c426093a3afc0f609a1f04048b0beb021ec Auto-Submitted: auto-generated The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=9e682c426093a3afc0f609a1f04048b0beb021ec commit 9e682c426093a3afc0f609a1f04048b0beb021ec Author: Alan Somers AuthorDate: 2025-06-11 21:26:48 +0000 Commit: Alan Somers CommitDate: 2025-08-05 22:53:05 +0000 fusefs: don't fake the mountpoint's stat info before FUSE_INIT completes Ever since the first GSoC contribution, fusefs has had a curious behavior. If the daemon hasn't finished responding to FUSE_INIT, fuse_vnop_getattr would reply to VOP_GETATTR requests for the mountpoint by returning all zeros. I don't know why. It isn't necessary for unmounting, even if the daemon is dead. Delete that behavior. Now VOP_GETATTR for the mountpoint will wait for the daemon to be ready, just like it will for any other vnode. Reported by: Vassili Tchersky Sponsored by: ConnectWise Differential Revision: https://reviews.freebsd.org/D50800 --- sys/fs/fuse/fuse_vnops.c | 34 ++++++------------- tests/sys/fs/fusefs/pre-init.cc | 72 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 25 deletions(-) diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 32872e8f3f3a..b90ce60ec664 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -1219,36 +1219,20 @@ fuse_vnop_getattr(struct vop_getattr_args *ap) struct vattr *vap = ap->a_vap; struct ucred *cred = ap->a_cred; struct thread *td = curthread; - int err = 0; - int dataflags; - - dataflags = fuse_get_mpdata(vnode_mount(vp))->dataflags; - - /* Note that we are not bailing out on a dead file system just yet. */ - if (!(dataflags & FSESS_INITED)) { - if (!vnode_isvroot(vp)) { - fdata_set_dead(fuse_get_mpdata(vnode_mount(vp))); - return (EXTERROR(ENOTCONN, "FUSE daemon is not " - "initialized")); - } else { - goto fake; - } - } err = fuse_internal_getattr(vp, vap, cred, td); if (err == ENOTCONN && vnode_isvroot(vp)) { - /* see comment in fuse_vfsop_statfs() */ - goto fake; - } else { - return err; + /* + * We want to seem a legitimate fs even if the daemon is dead, + * so that, eg., we can still do path based unmounting after + * the daemon dies. + */ + err = 0; + bzero(vap, sizeof(*vap)); + vap->va_type = vnode_vtype(vp); } - -fake: - bzero(vap, sizeof(*vap)); - vap->va_type = vnode_vtype(vp); - - return 0; + return err; } /* diff --git a/tests/sys/fs/fusefs/pre-init.cc b/tests/sys/fs/fusefs/pre-init.cc index e990d3cafffa..2d3257500304 100644 --- a/tests/sys/fs/fusefs/pre-init.cc +++ b/tests/sys/fs/fusefs/pre-init.cc @@ -44,12 +44,26 @@ using namespace testing; /* Tests for behavior that happens before the server responds to FUSE_INIT */ class PreInit: public FuseTest { +public: void SetUp() { m_no_auto_init = true; FuseTest::SetUp(); } }; +/* + * Tests for behavior that happens before the server responds to FUSE_INIT, + * parameterized on default_permissions + */ +class PreInitP: public PreInit, + public WithParamInterface +{ +void SetUp() { + m_default_permissions = GetParam(); + PreInit::SetUp(); +} +}; + static void* unmount1(void* arg __unused) { ssize_t r; @@ -152,3 +166,61 @@ TEST_F(PreInit, signal_during_unmount_before_init) sem_post(&sem0); m_mock->join_daemon(); } + +/* + * If some process attempts VOP_GETATTR for the mountpoint before init is + * complete, fusefs should wait, just like it does for other VOPs. + * + * To verify that fuse_vnop_getattr does indeed wait for FUSE_INIT to complete, + * invoke the test like this: + * +> sudo cpuset -c -l 0 dtrace -i 'fbt:fusefs:fuse_internal_init_callback:' -i 'fbt:fusefs:fuse_vnop_getattr:' -c "./pre-init --gtest_filter=PI/PreInitP.getattr_before_init/0" +... +dtrace: pid 4224 has exited +CPU ID FUNCTION:NAME + 0 68670 fuse_vnop_getattr:entry + 0 68893 fuse_internal_init_callback:entry + 0 68894 fuse_internal_init_callback:return + 0 68671 fuse_vnop_getattr:return + * + * Note that fuse_vnop_getattr was entered first, but exitted last. + */ +TEST_P(PreInitP, getattr_before_init) +{ + struct stat sb; + nlink_t nlink = 12345; + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_INIT); + }, Eq(true)), + _) + ).WillOnce(Invoke(ReturnImmediate([&](auto in, auto& out) { + SET_OUT_HEADER_LEN(out, init); + out.body.init.major = FUSE_KERNEL_VERSION; + out.body.init.minor = FUSE_KERNEL_MINOR_VERSION; + out.body.init.flags = in.body.init.flags & m_init_flags; + out.body.init.max_write = m_maxwrite; + out.body.init.max_readahead = m_maxreadahead; + out.body.init.time_gran = m_time_gran; + nap(); /* Allow stat() to run first */ + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == FUSE_ROOT_ID); + }, Eq(true)), + _) + ).WillOnce(Invoke(ReturnImmediate([=](auto& in, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.ino = in.header.nodeid; + out.body.attr.attr.mode = S_IFDIR | 0644; + out.body.attr.attr.nlink = nlink; + out.body.attr.attr_valid = UINT64_MAX; + }))); + + EXPECT_EQ(0, stat("mountpoint", &sb)); + EXPECT_EQ(nlink, sb.st_nlink); +} + +INSTANTIATE_TEST_SUITE_P(PI, PreInitP, Bool()); From nobody Tue Aug 5 22:58:51 2025 X-Original-To: dev-commits-src-main@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 4bxTPZ3Fpnz63qJx; Tue, 05 Aug 2025 22:58:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxTPZ2lsGz3DMp; Tue, 05 Aug 2025 22:58:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754434738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zK/ctwtdsFTdh/gqRhLmRBe1YhZ19FuM+m08zQc+AUk=; b=c7//Vax1gZzleRa4abIO0e4u+1v6k/2bc4kP3Tesl0ZQe5VV4Fx0JuOXG+2IYacWygbsXC 7CZSrO/joucqJbIvxhr0BJ+/sUdvFOEJUO69vwYGUJQkIU9toY7edd3aUSfxbEsBtXwBn+ e46vGjtyGaCI4byk8nKUq3HQWnBsNZgIe5MA2jYpdHbCUgNSKAQk/RLdhP2onySHdvLmcp WEpH6A2kSTeCWDdr+COw52r0G7Mwn/Wzj+KdORhhkjVvWUJav6PRLuxum81hRNqiEE2oaf +KJSM49hCY6NVHgDuLN9KmUS1f64Ghg/hx66S6PJRaUHTHIXPHb6irzXjlePLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754434738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zK/ctwtdsFTdh/gqRhLmRBe1YhZ19FuM+m08zQc+AUk=; b=ttzLV0Xl09Xuq3dE91QDQpFYpWeZQiQciiAGgaq+CDcGAGxoH0a7Z9IkZ9AHzcUae7fa/t ulkZIF1cMFq3XgMKv8Og517FsrgKbgDQ7oJyE5sARVXId9+3I1gIx4BR2UGePrrF47ks/w LjMPHQYqE+dgpYct4G1eQf8Wmd/dGuftodsriSkZf5kPkpLvcgONlKUDto+JilzhyQ07GA P9+beOzw/MQBHtkgDWD8pTpU8NfUCKr/yBLhE7lRoUpYfChA5kMUFRcjFrtmoMKZ0Zppmk bZe+LINIpJE+UR3U1mDRRbvO/3xU+Xhx71gWXdTzx2vunno4R8d6PghqXxlqkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754434738; a=rsa-sha256; cv=none; b=q0p75FuA/0Xcgv139Gvi1k8QPecjJiEQuxCGEbS4LBpdMiIWBeCCl4GrgVanOJFgUIktxV CyBu9C8HdocsaFAWQXY5qMjn+vFo6YKu05w/Jcx9fYYdGdXnug4CjysSl1/A3oQnSC0Lhk xMQU3WqzH9N4gXiuU3QVEYzHfA2PwsulbC9c/PxB6eFWCig+Q6DLXXeJT3HqkoGtxhOc3W Q5rJbTgSo2qjGlGvDvSqwUAJacGB1vjEAioNMVf0qBuNjdwtfN1a+yk6v5ogBIqfXCTVNH cuBazIOTqSRjU7yu0pdNFDLRE1taAMta4nElJTKw9G2/lZLhKGE7JlcdZtrBrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxTPZ2HQkzv9H; Tue, 05 Aug 2025 22:58:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575MwwlD071023; Tue, 5 Aug 2025 22:58:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575Mwpm8070986; Tue, 5 Aug 2025 22:58:51 GMT (envelope-from git) Date: Tue, 5 Aug 2025 22:58:51 GMT Message-Id: <202508052258.575Mwpm8070986@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Simon J. Gerraty" Subject: git: b4894eca1ade - main - Merge bmake-20250804 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b4894eca1ade4e9cec9afbe76021305d23bf914a Auto-Submitted: auto-generated The branch main has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=b4894eca1ade4e9cec9afbe76021305d23bf914a commit b4894eca1ade4e9cec9afbe76021305d23bf914a Merge: 9e682c426093 787302bde4d8 Author: Simon J. Gerraty AuthorDate: 2025-08-05 22:53:26 +0000 Commit: Simon J. Gerraty CommitDate: 2025-08-05 22:57:12 +0000 Merge bmake-20250804 Fixes bug in meta mode output capture. Merge commit '787302bde4d89279180303b753eb73b9bc6820b9' contrib/bmake/ChangeLog | 9 +++++++++ contrib/bmake/FILES | 2 ++ contrib/bmake/VERSION | 2 +- contrib/bmake/job.c | 6 +++--- contrib/bmake/meta.c | 8 ++++---- contrib/bmake/meta.h | 4 ++-- contrib/bmake/mk/ChangeLog | 17 +++++++++++++++++ contrib/bmake/mk/install-mk | 4 ++-- contrib/bmake/mk/meta2deps.py | 28 +++++++++++++++++++++++----- contrib/bmake/mk/meta2deps.sh | 14 ++++++++++++-- contrib/bmake/unit-tests/Makefile | 7 +++++-- contrib/bmake/unit-tests/meta-output.exp | 11 +++++++++++ contrib/bmake/unit-tests/meta-output.mk | 30 ++++++++++++++++++++++++++++++ usr.bin/bmake/Makefile | 2 ++ usr.bin/bmake/Makefile.config | 2 +- usr.bin/bmake/unit-tests/Makefile | 7 +++++-- 16 files changed, 129 insertions(+), 24 deletions(-) diff --cc contrib/bmake/mk/install-mk index 8d354de17cb9,3ed5fd63ee5c..3ed5fd63ee5c mode 100644,100755..100755 --- a/contrib/bmake/mk/install-mk +++ b/contrib/bmake/mk/install-mk diff --cc contrib/bmake/unit-tests/meta-output.exp index 000000000000,37ef54b4e49e..37ef54b4e49e mode 000000,100644..100644 --- a/contrib/bmake/unit-tests/meta-output.exp +++ b/contrib/bmake/unit-tests/meta-output.exp diff --cc contrib/bmake/unit-tests/meta-output.mk index 000000000000,104091df5d00..104091df5d00 mode 000000,100644..100644 --- a/contrib/bmake/unit-tests/meta-output.mk +++ b/contrib/bmake/unit-tests/meta-output.mk diff --cc usr.bin/bmake/Makefile index bbceea3ae8c2,000000000000..a8bcdfd9f859 mode 100644,000000..100644 --- a/usr.bin/bmake/Makefile +++ b/usr.bin/bmake/Makefile @@@ -1,201 -1,0 +1,203 @@@ +# This is a generated file, do NOT edit! +# See contrib/bmake/bsd.after-import.mk +# + +SRCTOP?= ${.CURDIR:H:H} + +# look here first for config.h +CFLAGS+= -I${.CURDIR} + +# for after-import +CLEANDIRS+= FreeBSD +CLEANFILES+= bootstrap + +# $Id: Makefile,v 1.133 2025/03/08 20:12:56 sjg Exp $ + +PROG?= ${.CURDIR:T} + +SRCS= \ + arch.c \ + buf.c \ + compat.c \ + cond.c \ + dir.c \ + for.c \ + hash.c \ + job.c \ + lst.c \ + main.c \ + make.c \ + make_malloc.c \ + meta.c \ + metachar.c \ + parse.c \ + str.c \ + suff.c \ + targ.c \ + trace.c \ + util.c \ + var.c + +.MAIN: all + +MAN= ${PROG}.1 +SRCS.${MAN}= ${srcdir}/make.1 + +.-include "Makefile.inc" + +# this file gets generated by configure +.-include "Makefile.config" + +.if !empty(LIBOBJS) +SRCS+= ${LIBOBJS:T:.o=.c} +.endif + +# just in case +prefix?= /usr +srcdir?= ${.PARSEDIR} +srcdir:= ${srcdir} + +DEFAULT_SYS_PATH?= ${prefix}/share/mk + +CPPFLAGS+= -DUSE_META +CFLAGS+= ${CPPFLAGS} +CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\" +CFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE +CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}} +COPTS.main.c+= "-DMAKE_VERSION=\"${_MAKE_VERSION}\"" + +.for x in FORCE_MAKE_OS FORCE_MACHINE FORCE_MACHINE_ARCH +.ifdef $x +COPTS.main.c+= "-D$x=\"${$x}\"" +.endif +.endfor + +# meta mode can be useful even without filemon +# should be set by now +USE_FILEMON?= no +.if ${USE_FILEMON:tl} != "no" +.PATH: ${srcdir}/filemon +SRCS+= filemon_${USE_FILEMON}.c +COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu} +COPTS.job.c+= ${COPTS.meta.c} + +.if ${USE_FILEMON} == "dev" +FILEMON_H?= /usr/include/dev/filemon/filemon.h +.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h" +COPTS.filemon_dev.c+= -DHAVE_FILEMON_H -I${FILEMON_H:H} +.endif +.elif ${USE_FILEMON} == "ktrace" +COPTS.filemon_ktrace.c+= -Wno-error=unused-parameter +.endif + +.endif # USE_FILEMON + +.PATH: ${srcdir} + + +.if make(obj) || make(clean) +SUBDIR.${MK_TESTS}+= unit-tests +.endif + ++MAN1= ${MAN} ++ +.if ${MK_GEN_MAN:Uno} == "yes" + +# we use this to generate ${MAN} +.include <${srcdir}/mk/genfiles.mk> + +.if ${PROG} != "make" +CLEANFILES+= my.history +SED_CMDS.${MAN}+= \ + -e '/^.Dt/s/MAKE/${PROG:tu}/' \ + -e '/^.Nm/s/make/${PROG}/' \ + +.endif + +.if ${CLEANFILES:U:Mmy.history} != "" +${MAN}: my.history +my.history: + @(echo ".Nm"; \ + echo "is derived from NetBSD"; \ + echo ".Xr make 1 ."; \ + echo "It uses autoconf to facilitate portability to other platforms."; \ + echo ".Pp") > $@ + +SED_CMDS.${MAN}+= \ + -e '/^.Sh HISTORY/rmy.history' \ + -e '/^.Sh HISTORY/,/BUGS/s,^.Nm,make,' \ + +.endif + +.if ${.MAKE.OS:N*BSD} != "" +# assume .Nx is not supported +SED_CMDS.${MAN}+= -e 's/^\.Nx/NetBSD/' +.endif + +# watch out for a late change of PROG +.if !empty(SRCS.${MAN}) +.NOPATH: ${MAN} +${MAN}: ${SRCS.${MAN}} _GENFILES_USE + +all man beforeinstall: ${MAN} +_mfromdir= . +.endif +.endif # MK_GEN_MAN + +MANTARGET?= cat +MANDEST?= ${MANDIR}/${MANTARGET}1 + +.if ${MANTARGET} == "cat" +_mfromdir= ${srcdir} +.endif + +.include + +CPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H +COPTS.var.c+= -Wno-cast-qual +COPTS.job.c+= -Wno-format-nonliteral +COPTS.parse.c+= -Wno-format-nonliteral +COPTS.var.c+= -Wno-format-nonliteral + +# Force these +SHAREDIR= ${SHAREDIR.bmake:U${prefix}/share} +BINDIR= ${BINDIR.bmake:U${prefix}/bin} +MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man} + +${OBJS}: config.h + + +# A simple unit-test driver to help catch regressions +TEST_MAKE?= ${.OBJDIR}/${PROG:T} +accept test: .NOMETA + cd ${.CURDIR}/unit-tests && \ + MAKEFLAGS= ${TEST_MAKE} -r -m / ${.TARGET} ${TESTS:DTESTS=${TESTS:Q}} + + +.if make(test) && ${MK_AUTO_OBJ} == "yes" +# The test target above visits unit-tests with -r -m / +# which prevents MK_AUTO_OBJ doing its job +# so do it here +.if defined(MAKEOBJDIRPREFIX) || ${MAKEOBJDIR:U:M*/*} != "" +_utobj= ${.OBJDIR}/unit-tests +.else +_utobj= ${.CURDIR}/unit-tests/${MAKEOBJDIR:Uobj} +.endif +utobj: .NOMETA + @test -d ${_utobj} && exit 0; \ + echo "[Creating ${_utobj}...]"; \ + umask ${OBJDIR_UMASK:U002}; \ + mkdir -p ${_utobj} +test: utobj +.endif + +# override some simple things +BINDIR= /usr/bin +MANDIR= /usr/share/man/man + +# make sure we get this +CFLAGS+= ${COPTS.${.IMPSRC:T}} + +after-import: ${SRCTOP}/contrib/bmake/bsd.after-import.mk + cd ${.CURDIR} && ${.MAKE} -f ${SRCTOP}/contrib/bmake/bsd.after-import.mk + diff --cc usr.bin/bmake/Makefile.config index 8ff6c81b8c78,000000000000..2415f9d3882c mode 100644,000000..100644 --- a/usr.bin/bmake/Makefile.config +++ b/usr.bin/bmake/Makefile.config @@@ -1,28 -1,0 +1,28 @@@ +# This is a generated file, do NOT edit! +# See contrib/bmake/bsd.after-import.mk +# + +SRCTOP?= ${.CURDIR:H:H} + +# things set by configure + - _MAKE_VERSION?=20250707 ++_MAKE_VERSION?=20250804 + +prefix?= /usr +srcdir= ${SRCTOP}/contrib/bmake +CC?= cc +MAKE_OS?= +DEFAULT_SYS_PATH?= .../share/mk:/usr/share/mk + +EGREP= egrep +CPPFLAGS+= +CFLAGS+= ${CPPFLAGS} -DHAVE_CONFIG_H +LDFLAGS+= +LIBOBJS+= ${LIBOBJDIR}stresep$U.o +LDADD+= +USE_META?= yes +USE_FILEMON?= dev +FILEMON_H?= /usr/include/dev/filemon/filemon.h +BMAKE_PATH_MAX?= 1024 +# used if MAXPATHLEN not defined +CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX} diff --cc usr.bin/bmake/unit-tests/Makefile index d4ee6f33f862,000000000000..66bdc04321e8 mode 100644,000000..100644 --- a/usr.bin/bmake/unit-tests/Makefile +++ b/usr.bin/bmake/unit-tests/Makefile @@@ -1,921 -1,0 +1,924 @@@ +# This is a generated file, do NOT edit! +# See contrib/bmake/bsd.after-import.mk +# - # $Id: Makefile,v 1.240 2025/06/30 18:40:54 sjg Exp $ ++# $Id: Makefile,v 1.245 2025/08/05 16:18:07 sjg Exp $ +# - # $NetBSD: Makefile,v 1.369 2025/06/29 09:40:13 rillig Exp $ ++# $NetBSD: Makefile,v 1.372 2025/08/04 22:44:49 sjg Exp $ +# +# Unit tests for make(1) +# +# The main targets are: +# +# all: +# run all the tests +# test: +# run 'all', and compare to expected results +# accept: +# move generated output to expected results +# +# Settable variables +# +# TEST_MAKE +# The make program to be tested. +# +# +# Adding a test case +# +# Each feature should get its own set of tests in its own suitably +# named makefile (*.mk), with its own set of expected results (*.exp), +# and it should be added to the TESTS list. +# + +.MAIN: all + +# we use these below but we might be an older make +.MAKE.OS?= ${uname -s:L:sh} +.MAKE.UID?= ${id -u:L:sh} + +# for many tests we need a TMPDIR that will not collide +# with other users. +.if ${.OBJDIR} != ${.CURDIR} +# easy +TMPDIR:= ${.OBJDIR}/tmp +.elif defined(TMPDIR) +TMPDIR:= ${TMPDIR}/uid${.MAKE.UID} +.else +TMPDIR:= /tmp/uid${.MAKE.UID} +.endif +# make sure it exists +.if !exist(${TMPDIR}) +_!= mkdir -p ${TMPDIR} +.endif +# and clean it up - outside the context of +# any target that might be using it. +.END: rm-tmpdir +rm-tmpdir: .NOMETA + @rm -rf ${TMPDIR} + +# Each test is in a sub-makefile. +# Keep the list sorted. +# Any test that is commented out must be ignored in +# src/tests/usr.bin/make/t_make.sh as well. +#TESTS+= archive +#TESTS+= archive-suffix +TESTS+= char-005c-reverse-solidus +TESTS+= cmd-errors +TESTS+= cmd-errors-jobs +TESTS+= cmd-errors-lint +TESTS+= cmd-interrupt +TESTS+= cmdline +TESTS+= cmdline-redirect-stdin +TESTS+= cmdline-undefined +TESTS+= comment +TESTS+= compat-error +TESTS+= cond-cmp-numeric +TESTS+= cond-cmp-numeric-eq +TESTS+= cond-cmp-numeric-ge +TESTS+= cond-cmp-numeric-gt +TESTS+= cond-cmp-numeric-le +TESTS+= cond-cmp-numeric-lt +TESTS+= cond-cmp-numeric-ne +TESTS+= cond-cmp-string +TESTS+= cond-cmp-unary +TESTS+= cond-eof +TESTS+= cond-func +TESTS+= cond-func-commands +TESTS+= cond-func-defined +TESTS+= cond-func-empty +TESTS+= cond-func-exists +TESTS+= cond-func-make +TESTS+= cond-func-make-main +TESTS+= cond-func-target +TESTS+= cond-late +TESTS+= cond-op +TESTS+= cond-op-and +TESTS+= cond-op-and-lint +TESTS+= cond-op-not +TESTS+= cond-op-or +TESTS+= cond-op-or-lint +TESTS+= cond-op-parentheses +TESTS+= cond-short +TESTS+= cond-token-number +TESTS+= cond-token-plain +TESTS+= cond-token-string +TESTS+= cond-token-var +TESTS+= cond-undef-lint +TESTS+= counter +TESTS+= counter-append +TESTS+= dep +TESTS+= dep-colon +TESTS+= dep-colon-bug-cross-file +TESTS+= dep-double-colon +TESTS+= dep-double-colon-indep +TESTS+= dep-duplicate +TESTS+= dep-exclam +TESTS+= dep-none +TESTS+= dep-op-missing +TESTS+= dep-percent +TESTS+= dep-var +TESTS+= dep-wildcards +TESTS+= depsrc +TESTS+= depsrc-end +TESTS+= depsrc-exec +TESTS+= depsrc-ignore +TESTS+= depsrc-made +TESTS+= depsrc-make +TESTS+= depsrc-meta +TESTS+= depsrc-nometa +TESTS+= depsrc-nometa_cmp +TESTS+= depsrc-nopath +TESTS+= depsrc-notmain +TESTS+= depsrc-optional +TESTS+= depsrc-phony +TESTS+= depsrc-precious +TESTS+= depsrc-recursive +TESTS+= depsrc-silent +TESTS+= depsrc-use +TESTS+= depsrc-usebefore +TESTS+= depsrc-usebefore-double-colon +TESTS+= depsrc-wait +TESTS+= deptgt +TESTS+= deptgt-begin +TESTS+= deptgt-begin-fail +TESTS+= deptgt-begin-fail-indirect +TESTS+= deptgt-default +TESTS+= deptgt-delete_on_error +TESTS+= deptgt-end +TESTS+= deptgt-end-fail +TESTS+= deptgt-end-fail-all +TESTS+= deptgt-end-fail-indirect +TESTS+= deptgt-end-jobs +TESTS+= deptgt-error +TESTS+= deptgt-ignore +TESTS+= deptgt-interrupt +TESTS+= deptgt-main +TESTS+= deptgt-makeflags +TESTS+= deptgt-no_parallel +TESTS+= deptgt-nopath +TESTS+= deptgt-notparallel +TESTS+= deptgt-objdir +TESTS+= deptgt-order +TESTS+= deptgt-path +TESTS+= deptgt-path-suffix +TESTS+= deptgt-phony +TESTS+= deptgt-posix +TESTS+= deptgt-precious +TESTS+= deptgt-shell +TESTS+= deptgt-silent +TESTS+= deptgt-silent-jobs +TESTS+= deptgt-stale +TESTS+= deptgt-suffixes +TESTS+= dir +TESTS+= dir-expand-path +TESTS+= directive +TESTS+= directive-dinclude +TESTS+= directive-elif +TESTS+= directive-elifdef +TESTS+= directive-elifmake +TESTS+= directive-elifndef +TESTS+= directive-elifnmake +TESTS+= directive-else +TESTS+= directive-endfor +TESTS+= directive-endif +TESTS+= directive-error +TESTS+= directive-export +TESTS+= directive-export-env +TESTS+= directive-export-impl +TESTS+= directive-export-gmake +TESTS+= directive-export-literal +TESTS+= directive-for +TESTS+= directive-for-break +TESTS+= directive-for-empty +TESTS+= directive-for-errors +TESTS+= directive-for-escape +TESTS+= directive-for-generating-endif +TESTS+= directive-for-if +TESTS+= directive-for-lines +TESTS+= directive-for-null +TESTS+= directive-hyphen-include +TESTS+= directive-if +TESTS+= directive-if-nested +TESTS+= directive-ifdef +TESTS+= directive-ifmake +TESTS+= directive-ifndef +TESTS+= directive-ifnmake +TESTS+= directive-include +TESTS+= directive-include-fatal +TESTS+= directive-include-guard +TESTS+= directive-info +TESTS+= directive-misspellings +TESTS+= directive-sinclude +TESTS+= directive-undef +TESTS+= directive-unexport +TESTS+= directive-unexport-env +TESTS+= directive-warning +TESTS+= dollar +TESTS+= doterror +TESTS+= dotwait +TESTS+= error +TESTS+= # escape # broken by reverting POSIX changes +TESTS+= export +TESTS+= export-all +TESTS+= export-env +TESTS+= export-variants +TESTS+= gnode-submake +TESTS+= hanoi-include +TESTS+= impsrc +TESTS+= include-main +TESTS+= job-flags +TESTS+= job-output +TESTS+= job-output-long-lines +TESTS+= job-output-null +TESTS+= jobs-empty-commands +TESTS+= jobs-empty-commands-error +TESTS+= jobs-error-indirect +TESTS+= jobs-error-nested +TESTS+= jobs-error-nested-make +TESTS+= lint +TESTS+= make-exported +TESTS+= meta-cmd-cmp ++TESTS+= meta-output +TESTS+= moderrs +TESTS+= modmisc +.if ${.MAKE.UID} > 0 +TESTS+= objdir-writable +.endif +TESTS+= opt +TESTS+= opt-backwards +TESTS+= opt-chdir +TESTS+= opt-debug +TESTS+= opt-debug-all +TESTS+= opt-debug-archive +TESTS+= opt-debug-curdir +TESTS+= opt-debug-cond +TESTS+= opt-debug-dir +TESTS+= opt-debug-errors +TESTS+= opt-debug-errors-jobs +TESTS+= opt-debug-file +TESTS+= opt-debug-for +TESTS+= opt-debug-graph1 +TESTS+= opt-debug-graph2 +TESTS+= opt-debug-graph3 +TESTS+= opt-debug-hash +TESTS+= opt-debug-jobs +TESTS+= opt-debug-lint +TESTS+= opt-debug-loud +TESTS+= opt-debug-meta +TESTS+= opt-debug-making +TESTS+= opt-debug-no-rm +TESTS+= opt-debug-parse +TESTS+= opt-debug-suff +TESTS+= opt-debug-targets +TESTS+= opt-debug-varraw +TESTS+= opt-debug-var +TESTS+= opt-debug-x-trace +TESTS+= opt-define +TESTS+= opt-env +TESTS+= opt-file +TESTS+= opt-ignore +TESTS+= opt-include-dir +TESTS+= opt-jobs +TESTS+= opt-jobs-internal +TESTS+= opt-jobs-no-action +TESTS+= opt-keep-going +TESTS+= opt-keep-going-indirect +TESTS+= opt-keep-going-multiple +TESTS+= opt-m-include-dir +TESTS+= opt-no-action +TESTS+= opt-no-action-at-all +TESTS+= opt-no-action-runflags +TESTS+= opt-no-action-touch +TESTS+= opt-query +TESTS+= opt-raw +TESTS+= opt-silent +TESTS+= opt-touch +TESTS+= opt-touch-jobs +TESTS+= opt-tracefile +TESTS+= opt-var-expanded +TESTS+= opt-var-literal +TESTS+= opt-version +TESTS+= opt-warnings-as-errors +TESTS+= opt-where-am-i +TESTS+= opt-x-reduce-exported +TESTS+= order +TESTS+= parse +TESTS+= parse-var +TESTS+= phony-end +TESTS+= posix +TESTS+= posix-execution +TESTS+= posix-expansion +TESTS+= posix-varassign +TESTS+= # posix1 # broken by reverting POSIX changes +TESTS+= recursive +TESTS+= sh +TESTS+= sh-dots +TESTS+= sh-errctl +TESTS+= sh-flags +TESTS+= sh-jobs +TESTS+= sh-jobs-error +TESTS+= sh-leading-at +TESTS+= sh-leading-hyphen +TESTS+= sh-leading-plus +TESTS+= sh-meta-chars +TESTS+= sh-multi-line +TESTS+= sh-single-line +TESTS+= shell-csh +TESTS+= shell-custom +.if exists(/bin/ksh) +TESTS+= shell-ksh +.endif +TESTS+= shell-sh +TESTS+= suff +TESTS+= suff-add-later +TESTS+= suff-clear-regular +TESTS+= suff-clear-single +TESTS+= suff-incomplete +TESTS+= suff-lookup +TESTS+= suff-main +TESTS+= suff-main-several +TESTS+= suff-phony +TESTS+= suff-rebuild +TESTS+= suff-self +TESTS+= suff-transform-debug +TESTS+= suff-transform-endless +TESTS+= suff-transform-expand +TESTS+= suff-transform-select +TESTS+= suff-use +TESTS+= sunshcmd +TESTS+= ternary +TESTS+= unexport +TESTS+= unexport-env +TESTS+= use-inference +TESTS+= var-readonly +TESTS+= var-scope +TESTS+= var-scope-cmdline +TESTS+= var-scope-env +TESTS+= var-scope-global +TESTS+= var-scope-local +TESTS+= var-scope-local-legacy +TESTS+= var-eval-short +TESTS+= var-op +TESTS+= var-op-append +TESTS+= var-op-assign +TESTS+= var-op-default +TESTS+= var-op-expand +TESTS+= var-op-shell +TESTS+= var-op-sunsh +TESTS+= var-recursive +TESTS+= varcmd +TESTS+= vardebug +TESTS+= varfind +TESTS+= varmisc +TESTS+= varmod +TESTS+= varmod-assign +TESTS+= varmod-assign-shell +TESTS+= varmod-defined +TESTS+= varmod-edge +TESTS+= varmod-exclam-shell +TESTS+= varmod-extension +TESTS+= varmod-gmtime +TESTS+= varmod-hash +TESTS+= varmod-head +TESTS+= varmod-ifelse +TESTS+= varmod-indirect +TESTS+= varmod-l-name-to-value +TESTS+= varmod-localtime +TESTS+= varmod-loop +TESTS+= varmod-loop-delete +TESTS+= varmod-loop-varname +TESTS+= varmod-match +TESTS+= varmod-match-escape +TESTS+= varmod-mtime +TESTS+= varmod-no-match +TESTS+= varmod-order +TESTS+= varmod-order-numeric +TESTS+= varmod-order-reverse +TESTS+= varmod-order-shuffle +TESTS+= varmod-order-string +TESTS+= varmod-path +TESTS+= varmod-quote +TESTS+= varmod-quote-dollar +TESTS+= varmod-range +TESTS+= varmod-remember +TESTS+= varmod-root +TESTS+= varmod-select-words +TESTS+= varmod-shell +TESTS+= varmod-subst +TESTS+= varmod-subst-regex +TESTS+= varmod-sun-shell +TESTS+= varmod-sysv +TESTS+= varmod-tail +TESTS+= varmod-to-abs +TESTS+= varmod-to-lower +TESTS+= varmod-to-many-words +TESTS+= varmod-to-one-word +TESTS+= varmod-to-separator +TESTS+= varmod-to-title +TESTS+= varmod-to-upper +TESTS+= varmod-undefined +TESTS+= varmod-unique +TESTS+= varname +TESTS+= varname-circumflex +TESTS+= varname-dollar +TESTS+= varname-dot-alltargets +TESTS+= varname-dot-curdir +TESTS+= varname-dot-includes +TESTS+= varname-dot-includedfromdir +TESTS+= varname-dot-includedfromfile +TESTS+= varname-dot-libs +TESTS+= varname-dot-make-dependfile +TESTS+= varname-dot-make-expand_variables +TESTS+= varname-dot-make-exported +TESTS+= varname-dot-make-jobs +TESTS+= varname-dot-make-jobs-prefix +TESTS+= varname-dot-make-level +TESTS+= varname-dot-make-makefile_preference +TESTS+= varname-dot-make-makefiles +TESTS+= varname-dot-make-meta-bailiwick +TESTS+= varname-dot-make-meta-created +TESTS+= varname-dot-make-meta-files +.if ${.MAKE.PATH_FILEMON:Uno:Nktrace:N/dev*} == "" && ${TMPDIR:N/tmp*:N/var/tmp*} != "" +# these tests will not work if TMPDIR is or is a subdir of +# /tmp or /var/tmp +.if ${.MAKE.PATH_FILEMON:N/dev/*} != "" || exists(${.MAKE.PATH_FILEMON}) +TESTS+= varname-dot-make-meta-ignore_filter +TESTS+= varname-dot-make-meta-ignore_paths +TESTS+= varname-dot-make-meta-ignore_patterns +TESTS+= varname-dot-make-path_filemon +.else +.warning Skipping tests that require ${.MAKE.PATH_FILEMON} +.endif +.endif +TESTS+= varname-dot-make-meta-prefix +TESTS+= varname-dot-make-mode +TESTS+= varname-dot-make-pid +TESTS+= varname-dot-make-ppid +TESTS+= varname-dot-make-save_dollars +TESTS+= varname-dot-makeflags +TESTS+= varname-dot-makeoverrides +TESTS+= varname-dot-newline +TESTS+= varname-dot-objdir +TESTS+= varname-dot-parsedir +TESTS+= varname-dot-parsefile +TESTS+= varname-dot-path +TESTS+= varname-dot-shell +TESTS+= varname-dot-suffixes +TESTS+= varname-dot-targets +TESTS+= varname-empty +TESTS+= varname-make +TESTS+= varname-make_stack_trace +TESTS+= varname-make_print_var_on_error +TESTS+= varname-make_print_var_on_error-jobs +TESTS+= varname-makefile +TESTS+= varname-makeflags +TESTS+= varname-pwd +TESTS+= varname-vpath +TESTS+= varparse-dynamic +TESTS+= varparse-errors +TESTS+= varparse-mod +TESTS+= varparse-undef-partial + +# some shells have quirks +_shell:= ${.SHELL:tA:T} +.if ${_shell} == "dash" +# dash fails -x output +BROKEN_TESTS+= opt-debug-x-trace +.elif ${_shell:N*ksh*} == "" +BROKEN_TESTS+= \ + deptgt-silent-jobs \ + job-flags \ + job-output-long-lines \ + opt-debug-x-trace \ + sh-flags \ + var-op-shell \ + +.if ${_shell:Nmksh} == "" +# more broken that pdksh +BROKEN_TESTS+= \ + opt-jobs-no-action \ + sh-errctl \ + sh-leading-hyphen \ + +.endif +.endif + +.if ${UTC_1:Uno} == "" +# this will not work if UTC_1 is set empty +BROKEN_TESTS+= varmod-localtime +.endif + +.if ${.MAKE.OS:NDarwin} == "" +BROKEN_TESTS+= shell-ksh +.endif + +.if ${.MAKE.OS:NIRIX*} == "" +BROKEN_TESTS+= \ + cmd-interrupt \ + deptgt-interrupt \ + job-output-null \ + opt-chdir \ + opt-debug-x-trace \ + sh-leading-hyphen \ + +.endif + +.if ${.MAKE.OS} == "SCO_SV" +BROKEN_TESTS+= \ + opt-debug-graph[23] \ + varmod-localtime \ + varmod-to-separator \ + +.if ${_shell} == "bash" +BROKEN_TESTS+= job-output-null +.else +BROKEN_TESTS+= \ + cmd-interrupt \ + job-flags \ + +.endif +.endif + +# Some tests just do not work on some platforms or environments +# so allow for some filtering. +.if !empty(BROKEN_TESTS) +.warning Skipping broken tests: ${BROKEN_TESTS:O:u} +TESTS:= ${TESTS:${BROKEN_TESTS:S,^,N,:ts:}} +.endif + +# Ideas for more tests: +# char-0020-space.mk +# escape-cond-str.mk +# escape-cond-func-arg.mk +# escape-varmod.mk +# escape-varmod-define.mk +# escape-varmod-match.mk +# escape-varname.mk +# escape-varassign-varname.mk +# escape-varassign-varname-cmdline.mk +# escape-varassign-value.mk +# escape-varassign-value-cmdline.mk +# escape-dependency-source.mk +# escape-dependency-target.mk +# escape-for-varname.mk +# escape-for-item.mk +# posix-*.mk (see posix.mk and posix1.mk) + +# Additional environment variables for some of the tests. +# The base environment is -i PATH="$PATH". +ENV.depsrc-optional+= TZ=UTC +ENV.deptgt-phony+= MAKESYSPATH=. +ENV.directive-undef= ENV_VAR=env-value +ENV.opt-env= FROM_ENV=value-from-env +ENV.opt-m-include-dir= ${MAKEOBJDIR:DMAKEOBJDIR=${MAKEOBJDIR}} +ENV.varmisc= FROM_ENV=env +ENV.varmisc+= FROM_ENV_BEFORE=env +ENV.varmisc+= FROM_ENV_AFTER=env +ENV.varmod-localtime+= TZ=${UTC_1:UEurope/Berlin} +ENV.varname-vpath+= VPATH=varname-vpath.dir:varname-vpath.dir2 + +# Override make flags for some of the tests; default is -k. +# If possible, write ".MAKEFLAGS: -dv" in the test .mk file instead of +# settings FLAGS.test=-dv here, since that is closer to the test code. +FLAGS.cond-func-make= via-cmdline +FLAGS.doterror= # none, especially not -k +FLAGS.jobs-error-indirect= # none, especially not -k +FLAGS.jobs-error-nested= # none, especially not -k +FLAGS.jobs-error-nested-make= # none, especially not -k +FLAGS.varname-empty= -dv '$${:U}=cmdline-u' '=cmdline-plain' + +# Some tests need extra postprocessing. +SED_CMDS.deptgt-phony= ${STD_SED_CMDS.dd} +SED_CMDS.dir= ${STD_SED_CMDS.dd} +SED_CMDS.directive-include-guard= \ + -e '/\.MAKEFLAGS/d' \ + -e '/^Parsing .*:[1-9][0-9]*:/d' \ + -e '/^SetFilenameVars:/d' \ + -e '/^ParseDependency/d' \ + -e '/^ParseEOF:/d' +SED_CMDS.export= -e '/^[^=_A-Za-z0-9]*=/d' ++SED_CMDS.export+= -e '/^DIFF/d' +.if ${.MAKE.OS:NCygwin} == "" +SED_CMDS.export+= -e '/^WINDIR=/d' -e '/^SYSTEMROOT=/d' +.endif +SED_CMDS.export-all= ${SED_CMDS.export} +SED_CMDS.export-env= ${SED_CMDS.export} +SED_CMDS.cmdline= -e 's,uid${.MAKE.UID}/,,' +SED_CMDS.job-output-long-lines= \ + ${:D Job separators on their own line are ok. } \ + -e '/^--- job-[ab] ---$$/d' \ + ${:D Plain output lines are ok as well. } \ + ${:D They may come in multiples of 1024 or as 10000. } \ + -e '/^aa*$$/d' \ + -e '/^bb*$$/d' \ + ${:D The following lines should rather not occur since the job } \ + ${:D marker should always be at the beginning of the line. } \ + -e '/^aa*--- job-b ---$$/d' \ + -e '/^bb*--- job-a ---$$/d' +SED_CMDS.opt-chdir= -e 's,\(nonexistent\).[1-9][0-9]*,\1,' \ + -e '/name/s,file,File,' \ + -e 's,no such,No such,' \ + -e 's,Filename,File name,' + +# meta line numbers can vary based on filemon implementation +SED_CMDS.meta-ignore= -e 's,\(\.meta:\)[1-9][0-9]*:,\1:,' + +SED_CMDS.opt-chdir= -e 's,\(nonexistent\).[1-9][0-9]*,\1,' +SED_CMDS.opt-debug-graph1= ${STD_SED_CMDS.dg1} +SED_CMDS.opt-debug-graph2= ${STD_SED_CMDS.dg2} +SED_CMDS.opt-debug-graph3= ${STD_SED_CMDS.dg3} +SED_CMDS.opt-debug-hash= -e 's,\(entries\)=[1-9][0-9],\1=,' +SED_CMDS.opt-debug-jobs= ${STD_SED_CMDS.dj} +SED_CMDS.opt-debug-lint+= ${STD_SED_CMDS.regex} +SED_CMDS.opt-jobs-no-action= ${STD_SED_CMDS.hide-from-output} +SED_CMDS.opt-no-action-runflags= ${STD_SED_CMDS.hide-from-output} +SED_CMDS.opt-where-am-i= -e '/usr.obj/d' +# For Compat_RunCommand, useShell == false. +SED_CMDS.sh-dots= -e 's,^.*\.\.\.:.*,,' +# For Compat_RunCommand, useShell == true. +SED_CMDS.sh-dots+= -e 's,^make: exec(\(.*\)): .*$$,,' +SED_CMDS.sh-dots+= -e 's,^\(\*\*\* Error code \)[1-9][0-9]*,\1,' +# Race condition between the child's stdout and make's status. +SED_CMDS.sh-errctl= ${STD_SED_CMDS.dj} +SED_CMDS.sh-errctl+= -e '/^Process with pid/d' +SED_CMDS.sh-errctl+= -e '/^JobFinish:/d' +SED_CMDS.sh-flags= ${STD_SED_CMDS.hide-from-output} +SED_CMDS.shell-csh= ${STD_SED_CMDS.white-space} +SED_CMDS.sh-leading-hyphen= ${STD_SED_CMDS.shell} +SED_CMDS.suff-main+= ${STD_SED_CMDS.dg1} +SED_CMDS.suff-main-several+= ${STD_SED_CMDS.dg1} +SED_CMDS.suff-transform-debug+= ${STD_SED_CMDS.dg1} +SED_CMDS.var-op-shell+= ${STD_SED_CMDS.shell} +SED_CMDS.var-op-shell+= -e '/command/s,No such.*,not found,' +SED_CMDS.var-op-shell+= ${STD_SED_CMDS.white-space} +SED_CMDS.vardebug+= -e 's,${.SHELL},,' +SED_CMDS.varmod-mtime+= -e "s,\(mtime for .*\): .*,\1: ," +SED_CMDS.varmod-subst-regex+= ${STD_SED_CMDS.regex} +SED_CMDS.varparse-errors+= ${STD_SED_CMDS.timestamp} +SED_CMDS.varname-dot-make-meta-ignore_filter+= ${SED_CMDS.meta-ignore} +SED_CMDS.varname-dot-make-meta-ignore_paths+= ${SED_CMDS.meta-ignore} +SED_CMDS.varname-dot-make-meta-ignore_patterns+= ${SED_CMDS.meta-ignore} +SED_CMDS.varname-dot-parsedir= -e '/in some cases/ s,^make: [^:]*:,make: :,' +SED_CMDS.varname-dot-parsefile= -e '/in some cases/ s,^make: [^:]*:,make: :,' +SED_CMDS.varname-dot-shell= -e 's, = /[^ ]*, = (details omitted),g' +SED_CMDS.varname-dot-shell+= -e 's,"/[^" ]*","(details omitted)",g' +SED_CMDS.varname-dot-shell+= -e 's,\[/[^] ]*\],[(details omitted)],g' +SED_CMDS.varname-empty= ${.OBJDIR .PARSEDIR .PATH .SHELL .SYSPATH:L:@v@-e '/\\$v/d'@} + +# Some tests need an additional round of postprocessing. +POSTPROC.depsrc-wait= sed -e '/^---/d' -e 's,^\(: Making 3[abc]\)[123]$$,\1,' +POSTPROC.deptgt-suffixes= awk '/^\#\*\*\* Suffixes/,/^never-stop/' +POSTPROC.gnode-submake= awk '/Begin input graph/, /^$$/' +POSTPROC.varname-dot-make-mode= sed 's,^\(: Making [abc]\)[123]$$,\1,' + +# Some tests reuse other tests, which makes them unnecessarily fragile. +export-all.rawout: export.mk +unexport.rawout: export.mk +unexport-env.rawout: export.mk + +# End of the configuration section. + +# Some standard sed commands, to be used in the SED_CMDS above. + +# In tests that use the debugging option -dd, ignore debugging output that is +# only logged in -DCLEANUP mode. +STD_SED_CMDS.dd= -e '/^OpenDirs_Done:/d' +STD_SED_CMDS.dd+= -e '/^CachedDir /d' *** 239 LINES SKIPPED *** From nobody Tue Aug 5 23:57:58 2025 X-Original-To: dev-commits-src-main@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 4bxVjf2WGGz63tV2; Tue, 05 Aug 2025 23:57:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxVjf1ZgWz3HjV; Tue, 05 Aug 2025 23:57:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754438278; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Kp51/cGwjCoeYuwRldjDa4GhrWI9D9LLgMTOwUB6SI8=; b=JQv9gy6uxCH19ThB8/t0jDTSgblnYoJN0CXmW++2PCGD4umcz8pjALNXf2iWoeo4Q6s1PB y230pGY+vLGZxt3exgYkWM+u9hBZLNKUdGf9GeBivtbdGg7DVIiE4ZgECca3PXeIuE235E kJAgEbjqVdgaSrNhy/DW+X+v4udUF8YgNnfjviGnrk9Aq6GNxcpfR4+SusMWPPWEoOE/22 3wtPo9/10MSX+xjCPLLQDaX9Y1dPHSRl5/V00yR5V1K3W2kBehdMsmxQ5IAtlEZV74z1sF bmbEQ1pVakJMwByicwuoDbBB6trg8iZo9U13uphOk2yexnXZc824KET6tIdt3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754438278; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Kp51/cGwjCoeYuwRldjDa4GhrWI9D9LLgMTOwUB6SI8=; b=aq7jJQAzvoEgZ+dhMUAy9mhAOSVfhnhFNs0W6JoEyQPViruWQyzfpEo6irAyzKvfx2srke J68kaUSvFiT7L+bmIuoBeDcd+LockpFPkGPCc3z+T+TX+RIjiHvvCdv8L8e1iacB41KCW6 VW0/RCZzg7s6zjpPEswevIy/S4fR4EgWnttsYzvmq6KbRCCIQB7C4pLgmmpDHvLPfCeSXB wc6BMAVLreWw5qXPHAv7RwdP1ruyqICeymAhUXine/hhI9iYBguUgSWpW8T8NwyMR3fgcr rqCqR4JUSZsxx1lF1wnGzIWHKuS7EOOPifnjmwIjaEE0b8vsahp4YTFHc+nznw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754438278; a=rsa-sha256; cv=none; b=yNVuykxDDdM9oMwIeeZ5vm2QTzdYYXuFwA1LOvaK/GJR1DhVu7f+JaijlGDzZvvChBkb+p mw68T9BykpD4de58zgOGmXWbEHF5nHEUTuh9MzedgAay7Rr86ECCSM7jr2QaMTUgvKXhC4 ZvZ7d7Nh71ah+hyJ5XUTm8zBnTkwZ37K9rWZ3LX/0FELNzF0wQdWgOreOYbrn+dcePo9e1 vFNK0wxVJHGjkNHYyYOCZa4rA0MkTdexRzLqYRSpBW8JJcTTKR4Plja/A2EpugkSGK9UpH eFJ3s9Nc9QArHlJdh7dQ9hXGuZbc8NiaGcI5DRVwrNolfs2W+Xw75d7cdRY8BQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxVjf14Wszwmv; Tue, 05 Aug 2025 23:57:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 575NvwnO083134; Tue, 5 Aug 2025 23:57:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 575Nvwgl083131; Tue, 5 Aug 2025 23:57:58 GMT (envelope-from git) Date: Tue, 5 Aug 2025 23:57:58 GMT Message-Id: <202508052357.575Nvwgl083131@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: c72188d85a79 - main - racct: Improve handling of the pcpu resource List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c72188d85a793c7610208beafb83af544de6e3b7 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c72188d85a793c7610208beafb83af544de6e3b7 commit c72188d85a793c7610208beafb83af544de6e3b7 Author: Cyril Zhang AuthorDate: 2025-08-05 23:20:56 +0000 Commit: Mark Johnston CommitDate: 2025-08-05 23:33:55 +0000 racct: Improve handling of the pcpu resource The previous scheme would inflate the CPU consumption of short-lived processes. For containers (e.g., processes, jails), the total pcpu usage was computed as a sum of the pcpu usage of all constituent threads, which makes little sense for a decaying average. Instead, aggregate wallclock time of all on-CPU threads and compute the pcpu resource as a decaying average as the sum. This gives much more reasonable and accurate values in various simple tests. PR: 235556 Reviewed by: markj MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30878 --- sys/kern/kern_racct.c | 307 +++++++++++++++++++++++++------------------------- sys/sys/proc.h | 1 - sys/sys/racct.h | 6 +- 3 files changed, 156 insertions(+), 158 deletions(-) diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c index 7ee3b9e2048a..7351e9cb6313 100644 --- a/sys/kern/kern_racct.c +++ b/sys/kern/kern_racct.c @@ -96,6 +96,13 @@ static void racct_sub_cred_locked(struct ucred *cred, int resource, uint64_t amount); static void racct_add_cred_locked(struct ucred *cred, int resource, uint64_t amount); +static int racct_set_locked(struct proc *p, int resource, uint64_t amount, + int force); +static void racct_updatepcpu_locked(struct proc *p); +static void racct_updatepcpu_racct_locked(struct racct *racct); +static void racct_updatepcpu_containers(void); +static void racct_settime_locked(struct proc *p, bool exit); +static void racct_zeropcpu_locked(struct proc *p); SDT_PROVIDER_DEFINE(racct); SDT_PROBE_DEFINE3(racct, , rusage, add, @@ -308,68 +315,6 @@ fixpt_t ccpu_exp[] = { #define CCPU_EXP_MAX 110 -/* - * This function is analogical to the getpcpu() function in the ps(1) command. - * They should both calculate in the same way so that the racct %cpu - * calculations are consistent with the values shown by the ps(1) tool. - * The calculations are more complex in the 4BSD scheduler because of the value - * of the ccpu variable. In ULE it is defined to be zero which saves us some - * work. - */ -static uint64_t -racct_getpcpu(struct proc *p, u_int pcpu) -{ - u_int swtime; -#ifdef SCHED_4BSD - fixpt_t pctcpu, pctcpu_next; -#endif - fixpt_t p_pctcpu; - struct thread *td; - - ASSERT_RACCT_ENABLED(); - KASSERT((p->p_flag & P_IDLEPROC) == 0, - ("racct_getpcpu: idle process %p", p)); - - swtime = (ticks - p->p_swtick) / hz; - - /* - * For short-lived processes, the sched_pctcpu() returns small - * values even for cpu intensive processes. Therefore we use - * our own estimate in this case. - */ - if (swtime < RACCT_PCPU_SECS) - return (pcpu); - - p_pctcpu = 0; - FOREACH_THREAD_IN_PROC(p, td) { - thread_lock(td); -#ifdef SCHED_4BSD - pctcpu = sched_pctcpu(td); - /* Count also the yet unfinished second. */ - pctcpu_next = (pctcpu * ccpu_exp[1]) >> FSHIFT; - pctcpu_next += sched_pctcpu_delta(td); - p_pctcpu += max(pctcpu, pctcpu_next); -#else - /* - * In ULE the %cpu statistics are updated on every - * sched_pctcpu() call. So special calculations to - * account for the latest (unfinished) second are - * not needed. - */ - p_pctcpu += sched_pctcpu(td); -#endif - thread_unlock(td); - } - -#ifdef SCHED_4BSD - if (swtime <= CCPU_EXP_MAX) - return ((100 * (uint64_t)p_pctcpu * 1000000) / - (FSCALE - ccpu_exp[swtime])); -#endif - - return ((100 * (uint64_t)p_pctcpu * 1000000) / FSCALE); -} - static void racct_add_racct(struct racct *dest, const struct racct *src) { @@ -499,19 +444,6 @@ racct_adjust_resource(struct racct *racct, int resource, ("%s: resource %d usage < 0", __func__, resource)); racct->r_resources[resource] = 0; } - - /* - * There are some cases where the racct %cpu resource would grow - * beyond 100% per core. For example in racct_proc_exit() we add - * the process %cpu usage to the ucred racct containers. If too - * many processes terminated in a short time span, the ucred %cpu - * resource could grow too much. Also, the 4BSD scheduler sometimes - * returns for a thread more than 100% cpu usage. So we set a sane - * boundary here to 100% * the maximum number of CPUs. - */ - if ((resource == RACCT_PCTCPU) && - (racct->r_resources[RACCT_PCTCPU] > 100 * 1000000 * (int64_t)MAXCPU)) - racct->r_resources[RACCT_PCTCPU] = 100 * 1000000 * (int64_t)MAXCPU; } static int @@ -635,10 +567,44 @@ racct_add_buf(struct proc *p, const struct buf *bp, int is_write) RACCT_UNLOCK(); } +static void +racct_settime_locked(struct proc *p, bool exit) +{ + struct thread *td; + struct timeval wallclock; + uint64_t runtime; + + ASSERT_RACCT_ENABLED(); + RACCT_LOCK_ASSERT(); + PROC_LOCK_ASSERT(p, MA_OWNED); + + if (exit) { + /* + * proc_reap() has already calculated rux + * and added crux to rux. + */ + runtime = cputick2usec(p->p_rux.rux_runtime - + p->p_crux.rux_runtime); + } else { + PROC_STATLOCK(p); + FOREACH_THREAD_IN_PROC(p, td) + ruxagg(p, td); + PROC_STATUNLOCK(p); + runtime = cputick2usec(p->p_rux.rux_runtime); + } + microuptime(&wallclock); + timevalsub(&wallclock, &p->p_stats->p_start); + + racct_set_locked(p, RACCT_CPU, runtime, 0); + racct_set_locked(p, RACCT_WALLCLOCK, + (uint64_t)wallclock.tv_sec * 1000000 + + wallclock.tv_usec, 0); +} + static int racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) { - int64_t old_amount, decayed_amount, diff_proc, diff_cred; + int64_t old_amount, diff_proc, diff_cred; #ifdef RCTL int error; #endif @@ -655,17 +621,7 @@ racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) * The diffs may be negative. */ diff_proc = amount - old_amount; - if (resource == RACCT_PCTCPU) { - /* - * Resources in per-credential racct containers may decay. - * If this is the case, we need to calculate the difference - * between the new amount and the proportional value of the - * old amount that has decayed in the ucred racct containers. - */ - decayed_amount = old_amount * RACCT_DECAY_FACTOR / FSCALE; - diff_cred = amount - decayed_amount; - } else - diff_cred = diff_proc; + diff_cred = diff_proc; #ifdef notyet KASSERT(diff_proc >= 0 || RACCT_CAN_DROP(resource), ("%s: usage of non-droppable resource %d dropping", __func__, @@ -908,8 +864,6 @@ racct_proc_fork(struct proc *parent, struct proc *child) goto out; #endif - /* Init process cpu time. */ - child->p_prev_runtime = 0; child->p_throttled = 0; /* @@ -964,37 +918,16 @@ racct_proc_fork_done(struct proc *child) void racct_proc_exit(struct proc *p) { - struct timeval wallclock; - uint64_t pct_estimate, pct, runtime; int i; if (!racct_enable) return; PROC_LOCK(p); - /* - * We don't need to calculate rux, proc_reap() has already done this. - */ - runtime = cputick2usec(p->p_rux.rux_runtime); -#ifdef notyet - KASSERT(runtime >= p->p_prev_runtime, ("runtime < p_prev_runtime")); -#else - if (runtime < p->p_prev_runtime) - runtime = p->p_prev_runtime; -#endif - microuptime(&wallclock); - timevalsub(&wallclock, &p->p_stats->p_start); - if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) { - pct_estimate = (1000000 * runtime * 100) / - ((uint64_t)wallclock.tv_sec * 1000000 + - wallclock.tv_usec); - } else - pct_estimate = 0; - pct = racct_getpcpu(p, pct_estimate); - RACCT_LOCK(); - racct_set_locked(p, RACCT_CPU, runtime, 0); - racct_add_cred_locked(p->p_ucred, RACCT_PCTCPU, pct); + + racct_settime_locked(p, true); + racct_zeropcpu_locked(p); KASSERT(p->p_racct->r_resources[RACCT_RSS] == 0, ("process reaped with %ju allocated for RSS\n", @@ -1068,6 +1001,10 @@ racct_move(struct racct *dest, struct racct *src) RACCT_LOCK(); racct_add_racct(dest, src); racct_sub_racct(src, src); + dest->r_runtime = src->r_runtime; + dest->r_time = src->r_time; + src->r_runtime = 0; + timevalsub(&src->r_time, &src->r_time); RACCT_UNLOCK(); } @@ -1170,8 +1107,6 @@ racct_proc_wakeup(struct proc *p) static void racct_decay_callback(struct racct *racct, void *dummy1, void *dummy2) { - int64_t r_old, r_new; - ASSERT_RACCT_ENABLED(); RACCT_LOCK_ASSERT(); @@ -1181,15 +1116,6 @@ racct_decay_callback(struct racct *racct, void *dummy1, void *dummy2) rctl_throttle_decay(racct, RACCT_READIOPS); rctl_throttle_decay(racct, RACCT_WRITEIOPS); #endif - - r_old = racct->r_resources[RACCT_PCTCPU]; - - /* If there is nothing to decay, just exit. */ - if (r_old <= 0) - return; - - r_new = r_old * RACCT_DECAY_FACTOR / FSCALE; - racct->r_resources[RACCT_PCTCPU] = r_new; } static void @@ -1220,16 +1146,106 @@ racct_decay(void) racct_decay_post, NULL, NULL); } +static void +racct_updatepcpu_racct_locked(struct racct *racct) +{ + struct timeval diff; + uint64_t elapsed; + uint64_t runtime; + uint64_t newpcpu; + uint64_t oldpcpu; + + ASSERT_RACCT_ENABLED(); + RACCT_LOCK_ASSERT(); + + /* Difference between now and previously-recorded time. */ + microuptime(&diff); + timevalsub(&diff, &racct->r_time); + elapsed = (uint64_t)diff.tv_sec * 1000000 + diff.tv_usec; + + /* Difference between current and previously-recorded runtime. */ + runtime = racct->r_resources[RACCT_CPU] - racct->r_runtime; + + newpcpu = runtime * 100 * 1000000 / elapsed; + oldpcpu = racct->r_resources[RACCT_PCTCPU]; + /* + * This calculation is equivalent to + * (1 - 0.3) * newpcpu + 0.3 * oldpcpu + * where RACCT_DECAY_FACTOR = 0.3 * FSCALE. + */ + racct->r_resources[RACCT_PCTCPU] = ((FSCALE - RACCT_DECAY_FACTOR) * + newpcpu + RACCT_DECAY_FACTOR * oldpcpu) / FSCALE; + if (racct->r_resources[RACCT_PCTCPU] > + 100 * 1000000 * (uint64_t)mp_ncpus) + racct->r_resources[RACCT_PCTCPU] = 100 * 1000000 * + (uint64_t)mp_ncpus; + + /* Record current times. */ + racct->r_runtime = racct->r_resources[RACCT_CPU]; + timevaladd(&racct->r_time, &diff); +} + +static void +racct_zeropcpu_locked(struct proc *p) +{ + ASSERT_RACCT_ENABLED(); + PROC_LOCK_ASSERT(p, MA_OWNED); + + p->p_racct->r_resources[RACCT_PCTCPU] = 0; +} + +static void +racct_updatepcpu_locked(struct proc *p) +{ + ASSERT_RACCT_ENABLED(); + PROC_LOCK_ASSERT(p, MA_OWNED); + + racct_updatepcpu_racct_locked(p->p_racct); +} + +static void +racct_updatepcpu_pre(void) +{ + + RACCT_LOCK(); +} + +static void +racct_updatepcpu_post(void) +{ + + RACCT_UNLOCK(); +} + +static void +racct_updatepcpu_racct_callback(struct racct *racct, void *dummy1, void *dummy2) +{ + racct_updatepcpu_racct_locked(racct); +} + +static void +racct_updatepcpu_containers(void) +{ + ASSERT_RACCT_ENABLED(); + + ui_racct_foreach(racct_updatepcpu_racct_callback, racct_updatepcpu_pre, + racct_updatepcpu_post, NULL, NULL); + loginclass_racct_foreach(racct_updatepcpu_racct_callback, racct_updatepcpu_pre, + racct_updatepcpu_post, NULL, NULL); + prison_racct_foreach(racct_updatepcpu_racct_callback, racct_updatepcpu_pre, + racct_updatepcpu_post, NULL, NULL); +} + static void racctd(void) { - struct thread *td; struct proc *p; - struct timeval wallclock; - uint64_t pct, pct_estimate, runtime; + struct proc *idle; ASSERT_RACCT_ENABLED(); + idle = STAILQ_FIRST(&cpuhead)->pc_idlethread->td_proc; + for (;;) { racct_decay(); @@ -1237,36 +1253,16 @@ racctd(void) FOREACH_PROC_IN_SYSTEM(p) { PROC_LOCK(p); + if (p == idle) { + PROC_UNLOCK(p); + continue; + } if (p->p_state != PRS_NORMAL || (p->p_flag & P_IDLEPROC) != 0) { - if (p->p_state == PRS_ZOMBIE) - racct_set(p, RACCT_PCTCPU, 0); PROC_UNLOCK(p); continue; } - microuptime(&wallclock); - timevalsub(&wallclock, &p->p_stats->p_start); - PROC_STATLOCK(p); - FOREACH_THREAD_IN_PROC(p, td) - ruxagg(p, td); - runtime = cputick2usec(p->p_rux.rux_runtime); - PROC_STATUNLOCK(p); -#ifdef notyet - KASSERT(runtime >= p->p_prev_runtime, - ("runtime < p_prev_runtime")); -#else - if (runtime < p->p_prev_runtime) - runtime = p->p_prev_runtime; -#endif - p->p_prev_runtime = runtime; - if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) { - pct_estimate = (1000000 * runtime * 100) / - ((uint64_t)wallclock.tv_sec * 1000000 + - wallclock.tv_usec); - } else - pct_estimate = 0; - pct = racct_getpcpu(p, pct_estimate); RACCT_LOCK(); #ifdef RCTL rctl_throttle_decay(p->p_racct, RACCT_READBPS); @@ -1274,11 +1270,8 @@ racctd(void) rctl_throttle_decay(p->p_racct, RACCT_READIOPS); rctl_throttle_decay(p->p_racct, RACCT_WRITEIOPS); #endif - racct_set_locked(p, RACCT_PCTCPU, pct, 1); - racct_set_locked(p, RACCT_CPU, runtime, 0); - racct_set_locked(p, RACCT_WALLCLOCK, - (uint64_t)wallclock.tv_sec * 1000000 + - wallclock.tv_usec, 0); + racct_settime_locked(p, false); + racct_updatepcpu_locked(p); RACCT_UNLOCK(); PROC_UNLOCK(p); } @@ -1306,6 +1299,8 @@ racctd(void) PROC_UNLOCK(p); } sx_sunlock(&allproc_lock); + + racct_updatepcpu_containers(); pause("-", hz); } } diff --git a/sys/sys/proc.h b/sys/sys/proc.h index af9cafa99dd0..9140cee56885 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -763,7 +763,6 @@ struct proc { LIST_HEAD(, mqueue_notifier) p_mqnotifier; /* (c) mqueue notifiers.*/ struct kdtrace_proc *p_dtrace; /* (*) DTrace-specific data. */ struct cv p_pwait; /* (*) wait cv for exit/exec. */ - uint64_t p_prev_runtime; /* (c) Resource usage accounting. */ struct racct *p_racct; /* (b) Resource accounting. */ int p_throttled; /* (c) Flag for racct pcpu throttling */ /* diff --git a/sys/sys/racct.h b/sys/sys/racct.h index c6020b82c865..92b50353774e 100644 --- a/sys/sys/racct.h +++ b/sys/sys/racct.h @@ -141,13 +141,17 @@ extern bool racct_enable; /* * The 'racct' structure defines resource consumption for a particular - * subject, such as process or jail. + * subject, such as process or jail. It also contains the total + * cpu time and real time of the subject, recorded at the most recent + * time that RACCT_PCPU was updated. * * This structure must be filled with zeroes initially. */ struct racct { int64_t r_resources[RACCT_MAX + 1]; LIST_HEAD(, rctl_rule_link) r_rule_links; + uint64_t r_runtime; + struct timeval r_time; }; SYSCTL_DECL(_kern_racct); From nobody Wed Aug 6 05:12:09 2025 X-Original-To: dev-commits-src-main@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 4bxdhG0k8vz64Bm0; Wed, 06 Aug 2025 05:12:14 +0000 (UTC) (envelope-from avg@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxdhF4Nj6z3pZZ; Wed, 06 Aug 2025 05:12:13 +0000 (UTC) (envelope-from avg@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754457133; 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:autocrypt:autocrypt; bh=8tv0zMSMiRaSthyvbEVev0O2TVEwByHZmds/Us+ZT5Y=; b=AabeAlBHZEwOE/BGQQTAJEo57O662CMwWAyzsTDs0HyWatm1L2HqRbFcQGdc2FyKrbszsd Hk3bI9atob75XT6zXANyEMog17FT+ipIjjy4I5qoGmpqZXXetrNXYEtkHfQUsPn/xaqEuk ma8dxed4+FThpI08tAKNX/VvmVJBsriEZ52ODje3ap8+QRnXJx2nOUMTKLGdaya4ye0BY1 IEonJFj89gkel9S0yQUJGwvnbIFldPFrvYl41obgOuCYIWo9b0FTidxoIp3U0Wdl0ZrkPz NfinzuD7PJGpIAL9a5TjnHk44SKf9Sb8mwgrak5FUWB036gBlvKnjeuDiV5wiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754457133; 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:autocrypt:autocrypt; bh=8tv0zMSMiRaSthyvbEVev0O2TVEwByHZmds/Us+ZT5Y=; b=LmbwV2lLxDeBuz6VumLfpZNxeVnGSlhumMOQLzld65UWmHaWIyANShUhnaDjc3OfFrptjo SUK78nfctWzITMb4Rc2XuHwZ16XbyQ2RVewXdYMsVY6q6gxY7j6wbhyFgxlZyqYJ7+i77b iZANV31DSxUOs1Siezkj7vEVpt154QvLC3Q1Luemh1gCsrEb+364NeNCfIpQVNUl5ezFD1 qGarpdEdL6adVjt5B983jvFoIXuh6Q1ldSPNUqoANMhvt4ABQFKeUwox48sZutL5GJ/ukR HaaVrT8PL+14firWjvIqWeYiyCmKLjqKRvNKcg4WAa09v4GAgs2ruVs4TUZ4dw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754457133; a=rsa-sha256; cv=none; b=syVkvJbsSl4wDyxcUW8c1jsNynEC4Ozs5qFqXZvtiuqNkWQZftJ0PeWiGaVX3n9WTSgxel xL89ciqnTh0wuzRl3/nl27oHuN2PXoGD7UKvn9n7BxdjiruVxXsd6rqDWpx5KZdkCiE5qs Vj5yudKK+diIc0EG753JWnj6KUbVip2MIKr17iaJN7o0G6ruhiFWBJTfASDEmBFEBro8Us XGhzevfKMXgL8YhhNLVIao6/WWFBwzngsMOBzAW2SKKm8ZD/otkmDWiCxNesQvKxJtiake ZXxO45whxCR7kD7Uu75ZXIoXgKAGV9kPD8nDq2/H5hr57NP0mPpwlne9Pvz1lg== Received: from [192.168.0.88] (unknown [93.188.39.137]) (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: avg/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxdhD50s8z3LT; Wed, 06 Aug 2025 05:12:12 +0000 (UTC) (envelope-from avg@FreeBSD.org) Message-ID: <504491b6-932a-4e68-a324-2f7fc2637f63@FreeBSD.org> Date: Wed, 6 Aug 2025 08:12:09 +0300 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andriy Gapon Subject: Re: git: 6eb503116e88 - main - sdio: don't use CAM_PRIORITY_NONE for queued CCB-s To: "Bjoern A. Zeeb" Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508051629.575GTBYK035918@gitrepo.freebsd.org> <030509rq-32n5-3rn0-98nq-o154pqo676s9@SerrOFQ.bet> Content-Language: en-US Autocrypt: addr=avg@FreeBSD.org; keydata= xsDNBGcKrHEBDADRvwQOK0b/yo4ys5cs6bOQMhEh4xtfbaZ/CU00cpPgUip3sOZCdrtMWlRC g25z97prxE9pKueZi+HXDhIPpa9xl14ghqF4oYScuJ1i18HyiOH2y5Q3Vv/TtFiSzicd3EAu QgS3jVidpgDSPDdj2Yz3UxYpZ+PuFl6nOnvCvqOFcjUlzKCyPaiN2b86l1Nscmhnc+zQ/faB erUOEFEDQbWMA5YfXi8HrbeR16hfRfGt7E0aMDlIj9FIPIq71UWMN9CimPgs4+rbNr1MAlLa z4GxSDhVYZEY5rqtCzr+PLXboRQWnaUwXl0/biw9enf17NHdYv1SNAFTX2eC4dZ3qBVI74dS PgNprm+PMfz+6Hhs/dAv+Nan5nVhg3EFIjYTiy0MnjMSq8uI0v0ykpAGAcJJ5xl6d23aLxgN 6f0z6pJRCO0hGPgU7UzvFD0MxJxmbzqdT1R51KDan1oD41b+tjl2LMBuCDCoB0U44Pu0zLdp xMfFTxCXtwIYKIUxwd28jwMAEQEAAc0eQW5kcml5IEdhcG9uIDxhdmdARnJlZUJTRC5vcmc+ wsENBBMBCAA3FiEEmXvSmjiQFHPVOpLnzDOt5NLj67sFAmcKrHEFCQeEzgACGwMECwkIBwUV CAkKCwUWAgMBAAAKCRDMM63k0uPru5tSDACFK15LLbq89RSQ6QMnjiIm1t/wYJyumb519MHu Dhzxx1lbr8oghf0RHtF6kYRLQPaW2VdToi74pRobd3CN4bhZKDLSL6WfTn17RfavDjL6Njwp KBo30CkOeYKWq1mDmo0xEoQj8cc7ybEZnus+YScZOpj8Ti4EFwhRt6SHer7YDb161IHKL8m4 MsCxpFSGEjbKj8Iul3Ri/fTOO8w14ivcuEEQIvJt4/+4YV5Az8G23wKzL/3aJ7SOT3oYGmR9 atBTmVO3DlODjM+rZLegd8SfLSPTcBTHspWE5duemIzZbEX3BP77r3Qx4Fo5Tkit3bG1XVar yPQato+sFGFEGifdE9USBQoAoOaaeZevwAWjDU0TIuCT0CUe0sKtQuNP4LRq0n9EEHOXBu9a CfdMhFUSkAZnuE7miSVwgPvoVNJ1stA37EXLN/sVsWik7wslTQ5vF81VpdGFiwoQPOe2XEKh ogcwGSnXbwv1gD4x+Gz/7Y+kFyr1NY+4/nSaeXVcS2fOwM0EZwqscgEMAMQTe6ypAmQe/TFO HqKD2hfFKdksTptKi6uEh8xIwct8G/0FBldDWXo9eu8CGr/ZrDg0/bAwJxbaLRQCMH19Gq2Y hLvZ1QK5GQJVzZKcqfxbF2LiDUTs6WkdOBIhGpdDy7p1xFrvqCGCtNFYHuGYm067EozibBSF BWAPstKu2FQuVHZNMOfs7p3OIz3Yfqu9woXDeg3/8G2qVQJINe+8EwXKlhgh4CyDbq7nAZoA kIu1SE9z9u3WI5mcNy/0dFmVUsFxBqRC3ewbvzie8tKyZ9yFOlaZPT0Y4nRBXQTI3mLZ8zQ8 mtrWK5OOmrJ02kdeO9RBXe+OMaUUWMf92ZIoBFb4HP6N+B+4N1y1OwULousfl7JRoYxA4MRL ls7E2sSoJvrEBTJB3Pc34xu8rsJ1A5V3NgN6djX8yEZYpTRkcmrBeWy/ofDqZPVqneAx0LRm eldDS9msXDW4KXODyPZ+9unvmHAcoH0xaBYaSH44CDZDQDg4LNcmbOvuu1TEXBJhjQARAQAB wsD8BBgBCAAmFiEEmXvSmjiQFHPVOpLnzDOt5NLj67sFAmcKrHMFCQeEzgACGwwACgkQzDOt 5NLj67sUCAv5AXqgWnYN9EblapMbZjkiqL8pZQ0GNqh+Pg9FwbyULxjtRTO6rD4D0IxizByb ef+neeUNyYlagt5nfKMysEr0SU/gHKCi8vyTF/63ukMrGUNGmJJxrndl5ZYKC6j6eX7twrZF L1Uvlmn6FnQ22red5kHO93fDjG4zaDIZvHfwj7kzjZ4tpC7Byinf88s14mdZeScc0PnU2hj4 UGYju/wg2FF4YxaZYhcmdTiRYY0Wx85XSMZv19pnn78sadEuRvfRd4JTmw++j1xGXeqQGWzz /CTG5/Ex9GAkQ02hZbmi236byDXoet4G8TEyOph9QFVkV9bNd0jQZaFZPGEj4PSPUYGAF7s5 xJaNGgctC3aZ7WjEv1FBoo44XCU4xcjJ1wZQUrHxRhx6TW0Jtcl0U9qfKFW30TSPo6RyiXuj X4ltWKAtjoXB8nUmEJckaz7IRu2b4pXDeazZuz5JBygUs10yJjDxh2vFQZo0KaBAPx9MZlPn gpPTjT15L8xGftEjQXF6 In-Reply-To: <030509rq-32n5-3rn0-98nq-o154pqo676s9@SerrOFQ.bet> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 05/08/2025 23:32, Bjoern A. Zeeb wrote: > On Tue, 5 Aug 2025, Andriy Gapon wrote: > >> The branch main has been updated by avg: >> >> URL: https://cgit.FreeBSD.org/src/commit/? >> id=6eb503116e88cc430c2c9f01f48aa979fb0a7e1b >> >> commit 6eb503116e88cc430c2c9f01f48aa979fb0a7e1b >> Author:     Andriy Gapon >> AuthorDate: 2025-08-05 14:40:21 +0000 >> Commit:     Andriy Gapon >> CommitDate: 2025-08-05 16:27:12 +0000 >> >>    sdio: don't use CAM_PRIORITY_NONE for queued CCB-s >> >>    This is similar to changes done in other CAM drivers and fixes a panic >>    because of a sanity check added in b4b166b8c46b. >> >>    While here, remove unneeded ccb setup in sdiobdiscover. >>    It's possible that ccb allocation in that function is not needed as >>    well, but I wasn't sure about that. > > I have a lot more changes to sdio here;  I would appreciate if they go > through review if you have more. Sorry about that. No, this was a one-off change to fix a panic on boot after an upgrade. I didn't see any recent non-trivial activity in the file, so I skipped a review. > Are you testing this with any device? Not really testing but I have an old Orange Pi PC Plus which got broken (panic on boot) after an update to the latest main (+INVARIANTS). I think that it has a WiFi device on SDIO. sdiob0: on aw_mmc1 sdiob0 at aw_mmc_sim1 bus 0 scbus1 target 0 lun 0 sdiob0: Relative addr: 00000001 Card features: Card IO OCR: 00fc0000 >>    MFC after:      1 week >> --- >> sys/dev/sdio/sdiob.c | 7 ++----- >> 1 file changed, 2 insertions(+), 5 deletions(-) >> >> diff --git a/sys/dev/sdio/sdiob.c b/sys/dev/sdio/sdiob.c >> index 4ec2058fa2e4..cb2cc0da6b77 100644 >> --- a/sys/dev/sdio/sdiob.c >> +++ b/sys/dev/sdio/sdiob.c >> @@ -150,7 +150,7 @@ sdiob_rw_direct_sc(struct sdiob_softc *sc, uint8_t fn, >> uint32_t addr, bool wr, >>         sc->ccb = xpt_alloc_ccb(); >>     else >>         memset(sc->ccb, 0, sizeof(*sc->ccb)); >> -    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); >> +    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); >>     CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, >>         ("%s(fn=%d, addr=%#02x, wr=%d, *val=%#02x)\n", __func__, >>         fn, addr, wr, *val)); >> @@ -250,7 +250,7 @@ sdiob_rw_extended_cam(struct sdiob_softc *sc, uint8_t fn, >> uint32_t addr, >>         sc->ccb = xpt_alloc_ccb(); >>     else >>         memset(sc->ccb, 0, sizeof(*sc->ccb)); >> -    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); >> +    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NORMAL); >>     CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, >>         ("%s(fn=%d addr=%#0x wr=%d b_count=%u blksz=%u buf=%p incr=%d)\n", >>         __func__, fn, addr, wr, b_count, blksz, buffer, incaddr)); >> @@ -977,9 +977,6 @@ sdiobdiscover(void *context, int pending) >> >>     if (sc->ccb == NULL) >>         sc->ccb = xpt_alloc_ccb(); >> -    else >> -        memset(sc->ccb, 0, sizeof(*sc->ccb)); >> -    xpt_setup_ccb(&sc->ccb->ccb_h, periph->path, CAM_PRIORITY_NONE); > > This likely just made a problem worse of ccb re-use.  I have locally > changed them to be allocated/freed per transaction now. From my examination of the code, the sc->ccb is always re-initialized before actual use. I mean memset + xpt_setup_ccb in sdiob_rw_direct_sc and sdiob_rw_extended_cam. -- Andriy Gapon From nobody Wed Aug 6 08:27:25 2025 X-Original-To: dev-commits-src-main@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 4bxk1T2Xssz63PVn; Wed, 06 Aug 2025 08:27:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxk1T1s7Xz49Xy; Wed, 06 Aug 2025 08:27:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754468845; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SVfVj09fDRlAqY3/+68X2bgTSpWH1gBxq64OJt4f6UA=; b=WJMXScBv7cFR2XHVxwPSHjWbQcj7JouyDw45mjzeqLY7KQkx0GwLhx/UuQFYRh+rClGVBk 9Ukpwq95WV+byNH1mPavBKylHSgBfccBmIfWHtUBLpxAASvlNwQmVvtpaNDXif005CEfBd 6Srzr8retKH5NIyV1fn0iGzy3e57zUsFw2gL4qa+vMuWi63r7ZjYXkVg9rpmhuOugCEd9K 1pVfccEB3lRJBmgIdlFyjxjy4KUnZy8GGVIIBGNu4l3ZjdjqEXOCUYX5+koLSD/ZPy9dCy g1OPNki4Kyx2OdhnChziAb4E0DgKH2P4LIMn9M4oBsIA9JB+qM1pTRpJF5EK9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754468845; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SVfVj09fDRlAqY3/+68X2bgTSpWH1gBxq64OJt4f6UA=; b=nJaxA8ApeWAshCScohhDEj+g9gkmZZBtvlBY2KEdwpYso8WTdk6UOdIMGQRht8MiNdtK9I o3ptbCqYNZ2zUlfEhJPL4WZ/wiCwrABBHTlCaJKnO0xUuo9XM7drDX0JXAlUmQrBGwevFB kxWTcUDqr4FcG9WbYZ856Hc2X7P+jWWo1u1dgZ/YfQBNAxefYN4whOMaBfH0JCOw5eR0+p zX/XtWaYNosZeOvpQFT3jklPKVhwbBzr4OoayAG/yeihLqY/HCU6wfBjrRSQjpJj5Egtwz ITbFx+DQlQZXEtHe2OefZ2pe9E4Y94Z9VW5La5hfaVBttXaqgxZ8efWH02EJWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754468845; a=rsa-sha256; cv=none; b=rhSQq7iU/tv/slPn72XrsiAN9vEthR2bvXzd4YiPUucJCq/GQv8keyGGAC7aOVE12b3o1f 5pPW/uodEaoKca/YPMuesxDhYTSWEW25zu6KnDtGHWafOPfA6Etm8Sl0+q61l51q6SRzd+ Qw5CX01NxQiI7Zv/UxWT08zSuY29ACjpOAyyo+s5rjCnzngDVlOmJJqr7tPQ6CYOMJecUX pGLWumoTpNUrPcXr5th7sPGJCNuhDKSL6ku40kzOfRxXCQLoMCxUj7nX6K5Uva0O6cR0i8 axBE7M3Mg3sbkSuUj4l5vUNJjHWAY+R0X61NRfcV7ShALqCY2U0ctveGIGVshw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxk1T1JBPz1Bly; Wed, 06 Aug 2025 08:27:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5768RPVN042475; Wed, 6 Aug 2025 08:27:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5768RPoW042472; Wed, 6 Aug 2025 08:27:25 GMT (envelope-from git) Date: Wed, 6 Aug 2025 08:27:25 GMT Message-Id: <202508060827.5768RPoW042472@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 717bbade2485 - main - rack, bbr: minor cleanup List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 717bbade24857fd52724e9bb5ffdcfa0310f0a48 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=717bbade24857fd52724e9bb5ffdcfa0310f0a48 commit 717bbade24857fd52724e9bb5ffdcfa0310f0a48 Author: Michael Tuexen AuthorDate: 2025-08-06 10:24:54 +0000 Commit: Michael Tuexen CommitDate: 2025-08-06 10:24:54 +0000 rack, bbr: minor cleanup No functional change intended. Reviewed by: Nick Banks MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51734 --- sys/netinet/tcp_stacks/rack_bbr_common.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack_bbr_common.c b/sys/netinet/tcp_stacks/rack_bbr_common.c index d1c4ba58bf55..fb013d3d17f0 100644 --- a/sys/netinet/tcp_stacks/rack_bbr_common.c +++ b/sys/netinet/tcp_stacks/rack_bbr_common.c @@ -509,11 +509,9 @@ void ctf_do_dropwithreset(struct mbuf *m, struct tcpcb *tp, struct tcphdr *th, int32_t rstreason, int32_t tlen) { - if (tp != NULL) { - tcp_dropwithreset(m, th, tp, tlen, rstreason); + tcp_dropwithreset(m, th, tp, tlen, rstreason); + if (tp != NULL) INP_WUNLOCK(tptoinpcb(tp)); - } else - tcp_dropwithreset(m, th, NULL, tlen, rstreason); } void From nobody Wed Aug 6 08:30:30 2025 X-Original-To: dev-commits-src-main@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 4bxk522xNsz63PfP; Wed, 06 Aug 2025 08:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxk52287tz49tR; Wed, 06 Aug 2025 08:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754469030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OwAZjcd0Zo3CvIOpgr1vEL1I4nz/5O3ltA9O7GHMAM8=; b=yxRt6DzX+OTGgct7f8TEXtB7I8f31uk9g/8rCbFgTSEiFknzVXTEbNNnp/Z6i2qQ7Uba8S rIixY27n+LJtjKZkgY4a8onL/Yx0ptmtRgsuDW0MyfDqQkaN6gST+zSB8jZFwRWd0Ulj52 rYM8/QCNMrdsm3D3uZKRhFTUZIvJIMCFJqDFxN7LacLxBefzKWFrlDC2swXozrOoXPOU6r Q+xdXmXu+oetNTke1YvilOTsWVOmTRYvnJQ2/xMas7peWEsZ8l7HnWSeyWl1cGhN026WqR fWx0nli9zWfmomjUmOJ0MNFYXKPgsZM7P7E15GRPq55o8WpJu+RiZt4PpnZcjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754469030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OwAZjcd0Zo3CvIOpgr1vEL1I4nz/5O3ltA9O7GHMAM8=; b=NnLpHob+LJ3CFtTsojwZ39yipLZnbr8NYMhR4eU7d9L0cENYBPa8igKJ3agA3UTxuhgJi4 63izLGORuR0Yy3YUknwY8eMz6iWxKAkfYCTRQ6FGvp/x+xdhIqOlpIhcypm7Dhs6L4nmP/ UbooeYGce52gA195kFiYA1wySLQE7kHb/JFbtFjbjQJgGkIeeW4L9058KhfduxyDNpom6M euQZrWuyio+cNYtra0LdAPbqewpW78SNEusV1P7Wi01KHvYnF7fONhcIpw43z0AHmt2GqB 5jA+6LcopmmOYoFBc/2Q8HReas9snIN9xMI6q5RChz9AroVU3kFD4fx2F0krUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754469030; a=rsa-sha256; cv=none; b=xqG5UkRg862udinkgUiBR2AjL3HkVeKuW+nw8sjIyNi4PC3e6QBDHs2HNx0PMlKvJxODgW S6ZMf9kb0Hq7q0kugPjUSKTS9aAMU43h1PetHhOKzg/jlmAF9gQshNuqtaCeSnrPttugkb k9jdva8mJOVSxjAXaoSJ+2kisjGP9oZlI5o71pD68P9+cOGxfVFqZdyuEteB0VI3Vpqw2d oSAd2s0Gi5tzC9HB4M2/8/HztZDkZMlF2qTMNuZ0rl+GkZeTFMBGlVI5SDjTRaD+xwNdyy fX2fvU2GYUhzzl+onOLinLjxXH73qUQpKM6W2c8FbhwBEy6HwiqXoBsG2ms20Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxk521Rdwz1C1H; Wed, 06 Aug 2025 08:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5768UUTO052136; Wed, 6 Aug 2025 08:30:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5768UUcN052133; Wed, 6 Aug 2025 08:30:30 GMT (envelope-from git) Date: Wed, 6 Aug 2025 08:30:30 GMT Message-Id: <202508060830.5768UUcN052133@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: feeb19201dca - main - tcp: improve consistency of KASSERTs in tcp_sack.c List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: feeb19201dca8364a07b2432161c5cfd8f98b2f5 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=feeb19201dca8364a07b2432161c5cfd8f98b2f5 commit feeb19201dca8364a07b2432161c5cfd8f98b2f5 Author: Michael Tuexen AuthorDate: 2025-08-06 10:28:17 +0000 Commit: Michael Tuexen CommitDate: 2025-08-06 10:28:17 +0000 tcp: improve consistency of KASSERTs in tcp_sack.c When panicing, don't print the condition, which was violated, but the condition which holds at the time of the panic. Reviewed by: Nick Banks MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51726 --- sys/netinet/tcp_sack.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index 4405098a8620..f48e60207cc2 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -283,7 +283,7 @@ tcp_update_sack_list(struct tcpcb *tp, tcp_seq rcv_start, tcp_seq rcv_end) INP_WLOCK_ASSERT(tptoinpcb(tp)); /* Check arguments. */ - KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("rcv_start <= rcv_end")); + KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("SEG_GT(rcv_start, rcv_end)")); if ((rcv_start == rcv_end) && (tp->rcv_numsacks >= 1) && @@ -498,8 +498,8 @@ tcp_sackhole_free(struct tcpcb *tp, struct sackhole *hole) tp->snd_numholes--; atomic_subtract_int(&V_tcp_sack_globalholes, 1); - KASSERT(tp->snd_numholes >= 0, ("tp->snd_numholes >= 0")); - KASSERT(V_tcp_sack_globalholes >= 0, ("tcp_sack_globalholes >= 0")); + KASSERT(tp->snd_numholes >= 0, ("tp->snd_numholes < 0")); + KASSERT(V_tcp_sack_globalholes >= 0, ("tcp_sack_globalholes < 0")); } /* @@ -684,7 +684,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) delivered_data += sblkp->end - sblkp->start; tp->sackhint.hole_bytes += temp->end - temp->start; KASSERT(tp->sackhint.hole_bytes >= 0, - ("sackhint hole bytes >= 0")); + ("sackhint hole bytes < 0")); tp->snd_fack = sblkp->end; sblkp--; sack_changed = SACK_NEWLOSS; @@ -783,7 +783,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) tp->sackhint.sack_bytes_rexmit -= (SEQ_MIN(cur->rxmit, cur->end) - cur->start); KASSERT(tp->sackhint.sack_bytes_rexmit >= 0, - ("sackhint bytes rtx >= 0")); + ("sackhint bytes rtx < 0")); sack_changed = SACK_CHANGE; if (SEQ_LEQ(sblkp->start, cur->start)) { /* Data acks at least the beginning of hole. */ @@ -874,13 +874,13 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) if (TAILQ_EMPTY(&tp->snd_holes)) { KASSERT(tp->sackhint.hole_bytes == 0, - ("SACK scoreboard empty, but accounting non-zero\n")); + ("SACK scoreboard empty, but sackhint hole bytes != 0")); tp->sackhint.sack_bytes_rexmit = 0; tp->sackhint.sacked_bytes = 0; tp->sackhint.lost_bytes = 0; } else { KASSERT(tp->sackhint.hole_bytes > 0, - ("SACK scoreboard not empty, but has no bytes\n")); + ("SACK scoreboard not empty, but sackhint hole bytes <= 0")); tp->sackhint.delivered_data = delivered_data; tp->sackhint.sacked_bytes += delivered_data - left_edge_delta; KASSERT((tp->sackhint.sacked_bytes >= 0), ("sacked_bytes < 0")); @@ -918,9 +918,9 @@ tcp_free_sackholes(struct tcpcb *tp) tp->sackhint.hole_bytes = 0; tp->sackhint.lost_bytes = 0; - KASSERT(tp->snd_numholes == 0, ("tp->snd_numholes == 0")); + KASSERT(tp->snd_numholes == 0, ("tp->snd_numholes != 0")); KASSERT(tp->sackhint.nexthole == NULL, - ("tp->sackhint.nexthole == NULL")); + ("tp->sackhint.nexthole != NULL")); } /* @@ -1061,11 +1061,15 @@ tcp_sack_output(struct tcpcb *tp, int *sack_bytes_rexmt) } } } - KASSERT(SEQ_LT(hole->start, hole->end), ("%s: hole.start >= hole.end", __func__)); + KASSERT(SEQ_LT(hole->start, hole->end), + ("%s: SEQ_GEQ(hole.start, hole.end)", __func__)); if (!(V_tcp_do_newsack)) { - KASSERT(SEQ_LT(hole->start, tp->snd_fack), ("%s: hole.start >= snd.fack", __func__)); - KASSERT(SEQ_LT(hole->end, tp->snd_fack), ("%s: hole.end >= snd.fack", __func__)); - KASSERT(SEQ_LT(hole->rxmit, tp->snd_fack), ("%s: hole.rxmit >= snd.fack", __func__)); + KASSERT(SEQ_LT(hole->start, tp->snd_fack), + ("%s: SEG_GEQ(hole.start, snd.fack)", __func__)); + KASSERT(SEQ_LT(hole->end, tp->snd_fack), + ("%s: SEG_GEQ(hole.end, snd.fack)", __func__)); + KASSERT(SEQ_LT(hole->rxmit, tp->snd_fack), + ("%s: SEQ_GEQ(hole.rxmit, snd.fack)", __func__)); if (SEQ_GEQ(hole->start, hole->end) || SEQ_GEQ(hole->start, tp->snd_fack) || SEQ_GEQ(hole->end, tp->snd_fack) || From nobody Wed Aug 6 08:35:40 2025 X-Original-To: dev-commits-src-main@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 4bxkC10p6Hz63Q3X; Wed, 06 Aug 2025 08:35:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxkC10C2Vz3CnR; Wed, 06 Aug 2025 08:35:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754469341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=19Q+V3iP9sYaxfbzzGDS2QPt0uqpxyIRzyaQFc5zwiE=; b=XYJZie3ktqz/k4iXU5qyzcduB1rd3vrpKVng54wjMU2JIEpA6kI6Sz71wxqsQsAf3CvWmF p7E8uMZxW6NApiAQL3M1SGHk5/dcsARSZgsRAHpIPFBFmaHVexqNPB1dNmYVeTitiYeLxx laXmm1fxwhfA27OyiWzO2EqZvvHkeUyAWp14q4/1ORtyjLw7l2cFooY2gTc9ZsCHqBgmCE OmLdkH2xCjHgcTQIRko01jrDQvvrtQToNgCy7JWnF8qaZRVB8CYtw+3CngTvoZy6s+29yH aDw5u5vYEv0U9bsVv2aFgNfh7D/hyESf/dik8YBw5nHHRC76+vHK2aT9+V/yig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754469341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=19Q+V3iP9sYaxfbzzGDS2QPt0uqpxyIRzyaQFc5zwiE=; b=Xy6liPzPePg+8u6QVhNuhljbWvWjnGxH6BvrWLUBk0GTWRHiyD2Ws5PSQR+rBsqMpan+sk hOKQigWcq6N1BSqnI79yVHYPYzGyAfvjZpn77jWRk5VCY1Tp9xIYb61mZZ9E1V/4vZiVa4 nL21cwcUETuH81qRtZxy5Ey2x0hUkuD2UqL3wMKKdHYjz08Ylx+W+lyYzyf19N016V3+rA 9HWybfUkqNsb7Hwpn9la8adbarmv5GwhN4etkhYY1I0/HbcqrHvyIqB+d20Uj2l0mY0mI5 KaMF/STST0NCvFCiPET9YuSrCWZCh8qVmCOSRl2KMbz3aXWVZW8/LV9ev2gmrw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754469341; a=rsa-sha256; cv=none; b=PZkOYJvyZ7BoSuynSvtrSBZdOCNpnn33G3MpKZXpcK1yauyXpBpU/2Apb9Lz96XSXlry4l ax6N5JYbSzBbcrOCe+FxKqtHQJ5s0MuDi7sHxutaxKeJA6E6lZZuMW0+XUv0eXtwY3fui3 P054Rw15qo+cqXKm5r9XqMgnwOtGrRPYgKS2uzWiJdxtxg+f9xAi3tIVJh2WzGf0MqMXTa cq5HB1A7IbUIWvvfB68AtqdLLRSiT7G1aePiv6Vc68AtgfI25FIltOSb2/EnWnblGEpYOz q1KTFQ8Q1ug5ZvkN6gHduw//NZL45HJSKziQAomexYlSeZS2+KRjZLENLT79Xw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxkC06hVQz1CTY; Wed, 06 Aug 2025 08:35:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5768Ze3U060252; Wed, 6 Aug 2025 08:35:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5768ZekS060249; Wed, 6 Aug 2025 08:35:40 GMT (envelope-from git) Date: Wed, 6 Aug 2025 08:35:40 GMT Message-Id: <202508060835.5768ZekS060249@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 0950ab7d7695 - main - tcp sack: improve computation of delivered_data List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0950ab7d76951ea8e65f25a68511dc809339e802 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=0950ab7d76951ea8e65f25a68511dc809339e802 commit 0950ab7d76951ea8e65f25a68511dc809339e802 Author: Michael Tuexen AuthorDate: 2025-08-06 10:33:17 +0000 Commit: Michael Tuexen CommitDate: 2025-08-06 10:33:17 +0000 tcp sack: improve computation of delivered_data delivered_data is the number of bytes, which have newly been delivered to the peer. This includes the number of bytes cumulatively acknowledged and selectively acknowledged. Reviewed by: rscheff MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51718 --- sys/netinet/tcp_sack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index f48e60207cc2..66275cb04bdd 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -583,6 +583,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) */ if (SEQ_LT(tp->snd_una, th_ack) && !TAILQ_EMPTY(&tp->snd_holes)) { left_edge_delta = th_ack - tp->snd_una; + delivered_data += left_edge_delta; sack_blocks[num_sack_blks].start = tp->snd_una; sack_blocks[num_sack_blks++].end = th_ack; /* @@ -590,7 +591,6 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) * due to DSACK blocks */ if (SEQ_LT(tp->snd_fack, th_ack)) { - delivered_data += th_ack - tp->snd_una; tp->snd_fack = th_ack; sack_changed = SACK_CHANGE; } From nobody Wed Aug 6 11:07:29 2025 X-Original-To: dev-commits-src-main@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 4bxnZ93JjHz63Z5B; Wed, 06 Aug 2025 11:07: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxnZ92Yy0z3Vrr; Wed, 06 Aug 2025 11:07:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754478449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JoUW7ttPet0kfKsladH0q+t0zop8ova+iE2+D2EU2F0=; b=w4PzewbvS5aLT2Uz6ADU67ks928bY/K1HsDICQUAGw4IZ+wxpSRBNJe9PJhVd35IPs9Xji aUIrBWYmmgSyCXvSLkIt4AGUH8OjQ2Yh2kAf4nMERGavKxPZgMuDw0HZpqOD0JHWyMzueH L122Z2syDmSDxoczTwxnEXXpyvt+e3Y1VoO33a2+EnqP5qY0mNDeO0kxapiwMcRPsG8XvE Wnt0OCs/4hkaVOzPtXmshXCyrbEk7YiSV1PFZzhQeJq68yBCYPTwtFMGEZxKoavjYDzkzH +s5MIZsQ3cK5DpV8pLWeg8fbUq4KJFg28bnNGuM6MgD9vPVxQup9M0iHhXsKlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754478449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JoUW7ttPet0kfKsladH0q+t0zop8ova+iE2+D2EU2F0=; b=QIGmlO/aVc215iCYoHsrcRJ3KYh+hf2mKswX58QmpP/OfK+qkQZc7/Ahj89uMPMBtB9Etj x08j9qN8j3h8F1OVSKSrvIEtl+rWhP8EIz4cHwwUY8URQc1Z79QOgnKqafW/ghZ8z2SjB6 EJEKQY3n2BIMDDeMPZY88iEm9V67FsbAt+i4ImLOGajDdOvB5nUbWRUuOBE6uLUtqXi0+A CLtLch1cRCHGbeD/mjhp05+8H7tk2mwf8JCMpODfCMH/TBLgihmEXH11Iqgofh6iyC8Rub q1rF3iJQ1oTjdzQP7QteDvgxz6RdcPA9fzsIkLR0B4FoXoWMom/f92UF7EPOEQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754478449; a=rsa-sha256; cv=none; b=sWtzlII/ojQMC/3/RSsiqsVgscVLFrAN+nPsBJ+5OCQx5SwWy7i/xePamS3pnzRxKUgjRW Z/w6p2Cl4gXqWIc/qIPu7D8hQYeEmrK+1Bx0Zw8AxWdMUxS4QXDTSCi7w9W4Q3laJfvvB2 IbUUfh8jBloOKN4MvyxU60XP2kUN2OIvzbw0LAGkyh+nMPLdDvSIeQIG2jK8yXa9pqSYSr hoITsfeoWBVHSBPr06pdWTk+26/E19GJMMqbE7Ya9CTATn/4UdzBv1/eQum6oAveNCQsgz M/gGv+NK+Z83CYgf5iKqhM0a1gF6aj/iuto+yBx4+3GxkCsC/h6h3iSoBzBqmQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxnZ91wPVz2sl; Wed, 06 Aug 2025 11:07:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576B7TLf042734; Wed, 6 Aug 2025 11:07:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576B7Tru042731; Wed, 6 Aug 2025 11:07:29 GMT (envelope-from git) Date: Wed, 6 Aug 2025 11:07:29 GMT Message-Id: <202508061107.576B7Tru042731@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ronald Klop Subject: git: 3a2d4a1017e5 - main - Change the default of net.link.epair.ether_gen_addr 0 -> 1. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ronald X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3a2d4a1017e57f19f5a101da15acbdd861d353ae Auto-Submitted: auto-generated The branch main has been updated by ronald: URL: https://cgit.FreeBSD.org/src/commit/?id=3a2d4a1017e57f19f5a101da15acbdd861d353ae commit 3a2d4a1017e57f19f5a101da15acbdd861d353ae Author: Ronald Klop AuthorDate: 2025-08-06 10:59:33 +0000 Commit: Ronald Klop CommitDate: 2025-08-06 11:07:14 +0000 Change the default of net.link.epair.ether_gen_addr 0 -> 1. Now if_epair(4) uses ether_gen_addr(9) to generate a stable MAC. This feature was committed in 590493c1419092. Approved by: kp MFC after: never Relnotes: yes Differential Revision: https://reviews.freebsd.org/D51157 --- UPDATING | 6 ++++++ sys/net/if_epair.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index 60c974198934..1e729624f1e9 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20250806: + if_epair(4) now uses ether_gen_addr(9) to generate a stable MAC + address. + To keep using the random address, set the loader tunable + net.link.epair.ether_gen_addr=0. + 20250804: bsdconfig (including sysrc(8)) has moved to the new bsdconfig package. If you use pkgbase and wish to use bsdconfig, you should diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 4d35584925a1..a213a84e17db 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -102,7 +102,7 @@ SYSCTL_DECL(_net_link); static SYSCTL_NODE(_net_link, OID_AUTO, epair, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "Pair of virtual cross-over connected Ethernet-like interfaces"); -static bool use_ether_gen_addr = false; +static bool use_ether_gen_addr = true; SYSCTL_BOOL(_net_link_epair, OID_AUTO, ether_gen_addr, CTLFLAG_RWTUN, &use_ether_gen_addr, false, "Generate MAC with FreeBSD OUI using ether_gen_addr(9)"); From nobody Wed Aug 6 11:35:45 2025 X-Original-To: dev-commits-src-main@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 4bxppz4VyJz63cnL; Wed, 06 Aug 2025 12:03:39 +0000 (UTC) (envelope-from fluffy@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxppz48r8z3bSN; Wed, 06 Aug 2025 12:03:39 +0000 (UTC) (envelope-from fluffy@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754481819; 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; bh=9bT8UdRJtIceYt1CSuq757SA4StmS/n5IDzfdXN5FtE=; b=C19wWbnEY4v3khgCy/MjBuxa4+kkDDwb6R5zYXLw44KThiG9asmDD9iBZZX8Ertz/j1Y5b L5sBalfAfWher4QZnzbSWEJLXUOVnhajhMmwQ8W4uJYpDGvwTOOksBAuy3GoRKMRc+UnYc WBzf9gTiQr0p9rwu7xGoBGVTRsyAOGUZAfPJ+VTmmOoZO5rGEVEX9klGm8dbiq8wsj8IS0 w9EILlul9uE93UQxPdGquFPEpCdfjQq5MDbKTaVsg2cYWAn4hlSPxxHjsWxGKeb63EChVQ FHYNkMdWPDIDjoPmA1+ANfhpWRFU0+UoZDQnO588CINrnMHijfR5QiNoPS7dmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754481819; 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; bh=9bT8UdRJtIceYt1CSuq757SA4StmS/n5IDzfdXN5FtE=; b=vkeRs688lYn/Gg2Q8dhl8Rd7/uiaT1d07qeE+vaxxUqMJS1Nv4U55uX2sRQiuov/dOJHXD b5Za4hihC+Gw3c+V98vFjXU2anZ+p965xNU4MCl+bDJLElhbMxFfdcbx/f3WXdAFC7rlOP ahjOmhCGb58lvbW3R8VZ+bvSwMv+KlMpzZd5eLLwVLSMqQP6WX7v2GX8lvUtQgapo1dTtn D2v2uANrZWBZbp/UVY0+FMLR9uszapcIut0X95k5ZA+3PE7yRDsfliqdumaHn057FUM4z0 pnCuTj77KEO4G6tDbtoTphF2waVUPSCfTXCaxH2IGxD+YSxs1Harf3c+72pwDg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754481819; a=rsa-sha256; cv=none; b=SbUdM+kspaBlwo7VndFQ3UhkU9btwFC71gW/U5RbqUwsWLPGAoYaXD0QrSNj7e3oV7GnWl uE+opnq8w0R5aWoXErAUdSB076+hS6FHNzu7GJLYhsxR34BZVze++FKLirq/GZnpgHsX4L +C4/iZAeeVI0/jkTwEhn5nRYi33TJok6K6ov8kT09jsuKaOmcA9XzCGvhZG9FfEGvlGDTs Z3SVtBQ9T/UIgMqtliusNeMEZDXN2ayQ3kdsMDnFVseju6Rf+yW0csQDfythFKcxtpWqfW 7+b8uctyFvyn7lew+t5lXaUXaW1rhVz8gQ+Mj4+IdqCMEW/RdUeHQg6xtV5Kng== Received: from [100.90.182.247] (unknown [176.15.165.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: fluffy) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxppx6bSNzBkZ; Wed, 06 Aug 2025 12:03:37 +0000 (UTC) (envelope-from fluffy@FreeBSD.org) Date: Wed, 6 Aug 2025 14:35:45 +0300 From: Dima Panov To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org, =?utf-8?Q?Stefan_E=C3=9Fer?= Message-ID: <911ba5d9-c753-402a-8bbe-ec09834424f0@Canary> In-Reply-To: <202508052021.575KLosa084344@gitrepo.freebsd.org> References: <202508052021.575KLosa084344@gitrepo.freebsd.org> Subject: git: 024f676b399f - main - sbin/newfs_msdos: add support for exFAT file systems X-Canary-Draft: 3 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="68933e11_606e017d_a630" --68933e11_606e017d_a630 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello=21 This breaks i386 build due to bad types conversion --- mkfs=5Fmsdos.o --- /opt/poudriere/jails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:11= 18:59: error: incompatible pointer types passing 'u=5Flong *' (aka 'unsig= ned long *') to parameter of type 'size=5Ft *' (aka 'unsigned int *') =5B= -Werror,-Wincompatible-pointer-types=5D 1118 =7C error =3D iconv(u8to16function, =5F=5FDECONST(char**, u8strp), u= 8lenp, =7C =5E=7E=7E=7E=7E=7E /usr/obj/opt/poudriere/jails/150i386/usr/src/i386.i386/tmp/usr/include/ic= onv.h:56:27: note: passing argument to parameter here 56 =7C size=5Ft * =5F=5Frestrict, char ** =5F=5Frestrict, =7C =5E /opt/poudriere/jails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:11= 19:23: error: incompatible pointer types passing 'u=5Flong *' (aka 'unsig= ned long *') to parameter of type 'size=5Ft *' (aka 'unsigned int *') =5B= -Werror,-Wincompatible-pointer-types=5D 1119 =7C (char**)u16strp, u16lenp); =7C =5E=7E=7E=7E=7E=7E=7E /usr/obj/opt/poudriere/jails/150i386/usr/src/i386.i386/tmp/usr/include/ic= onv.h:57:27: note: passing argument to parameter here 57 =7C size=5Ft * =5F=5Frestrict); =7C =5E /opt/poudriere/jails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:17= 44:8: error: format specifies type 'unsigned long' but the argument has t= ype 'u=5Fquad=5Ft' (aka 'unsigned long long') =5B-Werror,-Wformat=5D 1743 =7C warnx(=22warning: =46AT type limits file system to %lu sectors=22= , =7C =7E=7E=7E =7C %llu 1744 =7C bpb.bpbHugeSectors); =7C =5E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E 3 errors generated. *** =5Bmkfs=5Fmsdos.o=5D Error code 1 -- Dima. (desktop, kde, x11, office, ports-secteam)=40=46reeBSD team (fluffy=40=46reeBSD.org, https://t.me/=46luffyBSD) > On =D0=B2=D1=82=D0=BE=D1=80=D0=BD=D0=B8=D0=BA, =D0=B0=D0=B2=D0=B3. 05, = 2025 at 11:21 PM, Stefan E=C3=9Fer wrote: > The branch main has been updated by se: > > URL: https://cgit.=46reeBSD.org/src/commit/=3Fid=3D024f676b399fc8acee72= 88c543d32c581328833c > > commit 024f676b399fc8acee7288c543d32c581328833c > Author: Stefan E=C3=9Fer > AuthorDate: 2025-08-05 20:12:18 +0000 > Commit: Stefan E=C3=9Fer > CommitDate: 2025-08-05 20:12:18 +0000 > > sbin/newfs=5Fmsdos: add support for ex=46AT file systems > > Add support for the creation of ex=46AT file systems, if invoked as > newfs=5Fexfat. > > Reviewed by: olce > Approved by: olce, mckusick > M=46C after: 4 weeks > Relnotes: yes > Differential Revision: https://reviews.freebsd.org/D48727 > --- > sbin/newfs=5Fmsdos/Makefile =7C 7 + > sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c =7C 1279 ++++++++++++++++++++++++++++= ++++++++++-- > sbin/newfs=5Fmsdos/mkfs=5Fmsdos.h =7C 3 +- > sbin/newfs=5Fmsdos/newfs=5Fmsdos.8 =7C 44 +- > sbin/newfs=5Fmsdos/newfs=5Fmsdos.c =7C 36 +- > 5 files changed, 1305 insertions(+), 64 deletions(-) > > diff --git a/sbin/newfs=5Fmsdos/Makefile b/sbin/newfs=5Fmsdos/Makefile > index bd5b3486b6b6..74c4c90cb41b 100644 > --- a/sbin/newfs=5Fmsdos/Makefile > +++ b/sbin/newfs=5Fmsdos/Makefile > =40=40 -5,6 +5,13 =40=40 PROG=3D newfs=5Fmsdos > MAN=3D newfs=5Fmsdos.8 > SRCS=3D newfs=5Fmsdos.c mkfs=5Fmsdos.c > > +LINKS=3D =24=7BBINDIR=7D/newfs=5Fmsdos =24=7BBINDIR=7D/newfs=5Fexfat > +MLINKS=3D newfs=5Fmsdos.8 newfs=5Fexfat.8 > + > +.if =24=7BMK=5FICONV=7D =3D=3D =22yes=22 > +C=46LAGS+=3D-DWITH=5FICONV > +.endif > + > =23 XXX - this is verboten > .if =24=7BMACHINE=5FCPUARCH=7D =3D=3D =22arm=22 > WARNS=3F=3D 3 > diff --git a/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c b/sbin/newfs=5Fmsdos/mkf= s=5Fmsdos.c > index dcc2bb982efc..70ec3b8f345c 100644 > --- a/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c > +++ b/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c > =40=40 -1,5 +1,6 =40=40 > /* > * Copyright (c) 1998 Robert Nordier > + * Copyright (c) 2025 Stefan E=C3=9Fer > * All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > =40=40 -35,6 +36,7 =40=40 > =23include > =23include > =23endif > +=23include > =23include > =23include > =23include > =40=40 -44,9 +46,14 =40=40 > =23include > =23include > =23include > +=23ifdef WITH=5FICONV > +=23include > +=23include > +=23endif > =23include > =23include > =23include > +=23include > =23include > =23include > =23include > =40=40 -61,11 +68,14 =40=40 > > =23define DOSMAGIC 0xaa55 /* DOS magic number */ > =23define MINBPS 512 /* minimum bytes per sector */ > -=23define MAXBPS 4096 /* maximum bytes per sector */ > +=23define MAXBPS 4096 /* maximum bytes per sector */ > =23define MAXSPC 128 /* maximum sectors per cluster */ > +=23define MAXBPC=5FEX (1<<25) /* maximum sectors per cluster ex=46AT *= / > =23define MAXN=46T 16 /* maximum number of =46ATs */ > +=23define MAXN=46T=5FEX 2 /* maximum number of =46ATs ex=46AT */ > =23define DE=46BLK 4096 /* default block size */ > =23define DE=46BLK16 2048 /* default block size =46AT16 */ > +=23define DE=46BLK=5FEX (128*1024) /* default block size ex=46AT */ > =23define DE=46RDE 512 /* default root directory entries */ > =23define RES=46TE 2 /* reserved =46AT entries */ > =23define MINCLS12 1U /* minimum =46AT12 clusters */ > =40=40 -78,23 +88,25 =40=40 > =23define mincls(fat) ((fat) =3D=3D 12 =3F MINCLS12 : =5C > (fat) =3D=3D 16 =3F MINCLS16 : =5C > MINCLS32) > - > =23define maxcls(fat) ((fat) =3D=3D 12 =3F MAXCLS12 : =5C > (fat) =3D=3D 16 =3F MAXCLS16 : =5C > MAXCLS32) > > -=23define mk1(p, x) =5C > - (p) =3D (u=5Fint8=5Ft)(x) > +=23define BOOTSEC 0 /* boot sector offset */ > +=23define EXTBOOTSEC 1 /* extended boot sector offset */ > +=23define EXTBOOTSECCNT 8 /* number of extended boot sectors */ > +=23define OEMPARMSEC 9 /* OEM parameter sector offset */ > +=23define RESERVEDSEC 10 /* reserved sector */ > +=23define BOOTCKSUMSEC 11 /* checksum sector */ > +=23define BACKUPSECO=46S 12 /* backup boot sector region offset */ > > -=23define mk2(p, x) =5C > - (p)=5B0=5D =3D (u=5Fint8=5Ft)(x), =5C > - (p)=5B1=5D =3D (u=5Fint8=5Ft)((x) >> 010) > +=23define EX=5FDE=5FALLOCMAP 0x81 /* cluster allocation bitmap */ > +=23define EX=5FDE=5FUPCASETABLE 0x82 /* UT=46-16 upper case translatio= n */ > +=23define EX=5FDE=5FLABEL 0x83 /* volume label */ > > -=23define mk4(p, x) =5C > - (p)=5B0=5D =3D (u=5Fint8=5Ft)(x), =5C > - (p)=5B1=5D =3D (u=5Fint8=5Ft)((x) >> 010), =5C > - (p)=5B2=5D =3D (u=5Fint8=5Ft)((x) >> 020), =5C > - (p)=5B3=5D =3D (u=5Fint8=5Ft)((x) >> 030) > +=23define mk1(p, x) (p) =3D (u=5Fint8=5Ft)(x) > +=23define mk2(p, x) le16enc(p, x) > +=23define mk4(p, x) le32enc(p, x) > > struct bs =7B > u=5Fint8=5Ft bsJump=5B3=5D; /* bootstrap entry point */ > =40=40 -135,6 +147,30 =40=40 struct bsx =7B > u=5Fint8=5Ft ex=46ileSysType=5B8=5D; /* file system type */ > =7D =5F=5Fpacked; > > +struct bsexfat =7B > + u=5Fint8=5Ft bsJump=5B3=5D; /* bootstrap entry point */ > + u=5Fint8=5Ft bs=46ileSystemName=5B8=5D; /* OEM name and version =22EX= =46AT =22 */ > + u=5Fint8=5Ft bsUnused=5B53=5D; /* unused DOS parameter area */ > + u=5Fint8=5Ft bsPartitionOffset=5B8=5D; /* start of partition on devic= e */ > + u=5Fint8=5Ft bsVolumeLength=5B8=5D; /* number of sectors in volume */= > + u=5Fint8=5Ft bs=46atOffset=5B4=5D; /* phys. sector of start of =46AT = */ > + u=5Fint8=5Ft bs=46atLength=5B4=5D; /* number of sectors per =46AT */ > + u=5Fint8=5Ft bsClusterHeapOffset=5B4=5D; /* phys. sector of cluster =23= 2 */ > + u=5Fint8=5Ft bsClusterCount=5B4=5D; /* number of clusters */ > + u=5Fint8=5Ft bsRootClust=5B4=5D; /* start cluster for root directory = */ > + u=5Fint8=5Ft bsVolSerialNumber=5B4=5D; /* volume serial number */ > + u=5Fint8=5Ft bs=46SVers=5B2=5D; /* Ex=46at file system revision */ > + u=5Fint8=5Ft bsVolume=46lags=5B2=5D; /* volume status, e.g. dirty */ > + u=5Fint8=5Ft bsBytesPerSecShift; /* log2 of bytes per sector */ > + u=5Fint8=5Ft bsSecPerClustShift; /* log2 of sectors per cluster */ > + u=5Fint8=5Ft bs=46ATs; /* number of =46ATs */ > + u=5Fint8=5Ft bsDriveSelect; /* extended INT 13h drive number */ > + u=5Fint8=5Ft bsPercentInUse; /* percentage of clusters in use */ > + u=5Fint8=5Ft bsReserved=5B7=5D; /* reserved for future expansion */ > + u=5Fint8=5Ft bsBootCode=5B390=5D; /* pad so structure is 512b */ > + u=5Fint8=5Ft bsBootSectSig=5B2=5D; /* DOSMAGIC */ > +=7D =5F=5Fpacked; > + > struct de =7B > u=5Fint8=5Ft deName=5B11=5D; /* name and extension */ > u=5Fint8=5Ft deAttributes; /* attributes */ > =40=40 -157,14 +193,57 =40=40 struct bpb =7B > u=5Fint bpbSecPerTrack; /* sectors per track */ > u=5Fint bpbHeads; /* drive heads */ > u=5Fint bpbHiddenSecs; /* hidden sectors */ > - u=5Fint bpbHugeSectors; /* big total sectors */ > + u=5Fquad=5Ft bpbHugeSectors; /* big total sectors */ > u=5Fint bpbBig=46ATsecs; /* big sectors per =46AT */ > u=5Fint bpbRootClust; /* root directory start cluster */ > u=5Fint bpb=46SInfo; /* file system info sector */ > u=5Fint bpbBackup; /* backup boot sector */ > + u=5Fint bpbUsedBitmapClust1; /* used block bitmap cluster 1 */ > + u=5Fint bpbUsedBitmapClust2; /* used block bitmap cluster 2 */ > + u=5Fint bpbUpcaseTableClust; /* upcase table cluster */ > + u=5Fint bpbClusterHeapOffset; /* start of EX=46AT data area */ > + u=5Fint bpbBPSshift; /* bytes per sector shift value */ > + u=5Fint bpbSPCshift; /* sectors per cluster shift value */ > + u=5Fint bpbClusterCount; /* number of clusters */ > + u=5Fint bpbUpcaseTableSectors; /* upcase table sectors */ > + u=5Fint bpbUsedBitmapSectors; /* used block bitmap sectors */ > =7D; > > -=23define BPBGAP 0, 0, 0, 0, 0, 0 > +/* > + * Structure of an EX=46AT allocation bitmap (cluster heap) entry. > + */ > +struct exfatdir=5Fbitmap =7B > + uint8=5Ft type; /* entry type =3D=3D 0x81 */ > + uint8=5Ft flags; /* secondary flags */ > +=23define EX=5F=46LAG=5FBITMAP2 0x01 /* entry is pointing to 2nd bitma= p */ > + uint8=5Ft reserved=5B18=5D; > + uint8=5Ft firstcluster=5B4=5D;/* first bitmap cluster */ > + uint8=5Ft datalength=5B8=5D; /* size of bitmap in bytes */ > +=7D; > + > +/* > + * Structure of an EX=46AT UT=46-16 upper case translation table entry= . > + */ > +struct exfatdir=5Fupcasetable =7B > + uint8=5Ft type; /* entry type =3D=3D 0x82 */ > + uint8=5Ft reserved1=5B3=5D; > + uint8=5Ft chksum=5B4=5D; /* checksum of compressed table */ > + uint8=5Ft reserved2=5B12=5D; > + uint8=5Ft firstcluster=5B4=5D; /* first bitmap cluster */ > + uint8=5Ft datalength=5B8=5D; /* size of bitmap in bytes */ > +=7D; > + > +/* > + * Structure of an EX=46AT volume label entry. > + */ > +struct exfatdir=5Flabel =7B > + uint8=5Ft type; /* entry type =3D=3D 0x83 */ > + uint8=5Ft namelength; /* number of UT=46-16 characters */ > + uint8=5Ft label=5B22=5D; /* up to 11 UT=46-16 characters */ > + uint8=5Ft reserved=5B8=5D; > +=7D; > + > +=23define BPBGAP 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 > > static struct =7B > const char *name; > =40=40 -214,6 +293,745 =40=40 static const u=5Fint8=5Ft bootcode=5B=5D = =3D =7B > 0 > =7D; > > +/* > + * Up-case table recommended in section 7.2.5.1 of the ex=46AT =46ile = System > + * Specification. > + */ > +static u=5Fint compr=5Fupcase=5Ftable=5Fcksum =3D 0xE619D30D; > + > +static uint8=5Ft compr=5Fupcase=5Ftable=5B=5D =3D =7B > + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, > + 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, > + 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, > + 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0=46, 0x00, > + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, > + 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, > + 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, > + 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1=46, 0x00, > + 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, > + 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, > + 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, > + 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2=46, 0x00, > + 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, > + 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, > + 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, > + 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3=46, 0x00, > + 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, > + 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, > + 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, > + 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4=46, 0x00, > + 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, > + 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, > + 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, > + 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5=46, 0x00, > + 0x60, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, > + 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, > + 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, > + 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4=46, 0x00, > + 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, > + 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, > + 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x7B, 0x00, > + 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7=46, 0x00, > + 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, > + 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, > + 0x88, 0x00, 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, > + 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8=46, 0x00, > + 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, > + 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, > + 0x98, 0x00, 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, > + 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9=46, 0x00, > + 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, > + 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, > + 0xA8, 0x00, 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, > + 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xA=46, 0x00, > + 0xB0, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, > + 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, > + 0xB8, 0x00, 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, > + 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xB=46, 0x00, > + 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, > + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, > + 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, > + 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xC=46, 0x00, > + 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, > + 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00, > + 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, > + 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0xD=46, 0x00, > + 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, > + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, > + 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, > + 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xC=46, 0x00, > + 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, > + 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0x=467, 0x00, > + 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, > + 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0x78, 0x01, > + 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, > + 0x04, 0x01, 0x04, 0x01, 0x06, 0x01, 0x06, 0x01, > + 0x08, 0x01, 0x08, 0x01, 0x0A, 0x01, 0x0A, 0x01, > + 0x0C, 0x01, 0x0C, 0x01, 0x0E, 0x01, 0x0E, 0x01, > + 0x10, 0x01, 0x10, 0x01, 0x12, 0x01, 0x12, 0x01, > + 0x14, 0x01, 0x14, 0x01, 0x16, 0x01, 0x16, 0x01, > + 0x18, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x1A, 0x01, > + 0x1C, 0x01, 0x1C, 0x01, 0x1E, 0x01, 0x1E, 0x01, > + 0x20, 0x01, 0x20, 0x01, 0x22, 0x01, 0x22, 0x01, > + 0x24, 0x01, 0x24, 0x01, 0x26, 0x01, 0x26, 0x01, > + 0x28, 0x01, 0x28, 0x01, 0x2A, 0x01, 0x2A, 0x01, > + 0x2C, 0x01, 0x2C, 0x01, 0x2E, 0x01, 0x2E, 0x01, > + 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01, > + 0x34, 0x01, 0x34, 0x01, 0x36, 0x01, 0x36, 0x01, > + 0x38, 0x01, 0x39, 0x01, 0x39, 0x01, 0x3B, 0x01, > + 0x3B, 0x01, 0x3D, 0x01, 0x3D, 0x01, 0x3=46, 0x01, > + 0x3=46, 0x01, 0x41, 0x01, 0x41, 0x01, 0x43, 0x01, > + 0x43, 0x01, 0x45, 0x01, 0x45, 0x01, 0x47, 0x01, > + 0x47, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4A, 0x01, > + 0x4C, 0x01, 0x4C, 0x01, 0x4E, 0x01, 0x4E, 0x01, > + 0x50, 0x01, 0x50, 0x01, 0x52, 0x01, 0x52, 0x01, > + 0x54, 0x01, 0x54, 0x01, 0x56, 0x01, 0x56, 0x01, > + 0x58, 0x01, 0x58, 0x01, 0x5A, 0x01, 0x5A, 0x01, > + 0x5C, 0x01, 0x5C, 0x01, 0x5E, 0x01, 0x5E, 0x01, > + 0x60, 0x01, 0x60, 0x01, 0x62, 0x01, 0x62, 0x01, > + 0x64, 0x01, 0x64, 0x01, 0x66, 0x01, 0x66, 0x01, > + 0x68, 0x01, 0x68, 0x01, 0x6A, 0x01, 0x6A, 0x01, > + 0x6C, 0x01, 0x6C, 0x01, 0x6E, 0x01, 0x6E, 0x01, > + 0x70, 0x01, 0x70, 0x01, 0x72, 0x01, 0x72, 0x01, > + 0x74, 0x01, 0x74, 0x01, 0x76, 0x01, 0x76, 0x01, > + 0x78, 0x01, 0x79, 0x01, 0x79, 0x01, 0x7B, 0x01, > + 0x7B, 0x01, 0x7D, 0x01, 0x7D, 0x01, 0x7=46, 0x01, > + 0x43, 0x02, 0x81, 0x01, 0x82, 0x01, 0x82, 0x01, > + 0x84, 0x01, 0x84, 0x01, 0x86, 0x01, 0x87, 0x01, > + 0x87, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01, > + 0x8B, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8=46, 0x01, > + 0x90, 0x01, 0x91, 0x01, 0x91, 0x01, 0x93, 0x01, > + 0x94, 0x01, 0x=466, 0x01, 0x96, 0x01, 0x97, 0x01, > + 0x98, 0x01, 0x98, 0x01, 0x3D, 0x02, 0x9B, 0x01, > + 0x9C, 0x01, 0x9D, 0x01, 0x20, 0x02, 0x9=46, 0x01, > + 0xA0, 0x01, 0xA0, 0x01, 0xA2, 0x01, 0xA2, 0x01, > + 0xA4, 0x01, 0xA4, 0x01, 0xA6, 0x01, 0xA7, 0x01, > + 0xA7, 0x01, 0xA9, 0x01, 0xAA, 0x01, 0xAB, 0x01, > + 0xAC, 0x01, 0xAC, 0x01, 0xAE, 0x01, 0xA=46, 0x01, > + 0xA=46, 0x01, 0xB1, 0x01, 0xB2, 0x01, 0xB3, 0x01, > + 0xB3, 0x01, 0xB5, 0x01, 0xB5, 0x01, 0xB7, 0x01, > + 0xB8, 0x01, 0xB8, 0x01, 0xBA, 0x01, 0xBB, 0x01, > + 0xBC, 0x01, 0xBC, 0x01, 0xBE, 0x01, 0x=467, 0x01, > + 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01, > + 0xC4, 0x01, 0xC5, 0x01, 0xC4, 0x01, 0xC7, 0x01, > + 0xC8, 0x01, 0xC7, 0x01, 0xCA, 0x01, 0xCB, 0x01, > + 0xCA, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xC=46, 0x01, > + 0xC=46, 0x01, 0xD1, 0x01, 0xD1, 0x01, 0xD3, 0x01, > + 0xD3, 0x01, 0xD5, 0x01, 0xD5, 0x01, 0xD7, 0x01, > + 0xD7, 0x01, 0xD9, 0x01, 0xD9, 0x01, 0xDB, 0x01, > + 0xDB, 0x01, 0x8E, 0x01, 0xDE, 0x01, 0xDE, 0x01, > + 0xE0, 0x01, 0xE0, 0x01, 0xE2, 0x01, 0xE2, 0x01, > + 0xE4, 0x01, 0xE4, 0x01, 0xE6, 0x01, 0xE6, 0x01, > + 0xE8, 0x01, 0xE8, 0x01, 0xEA, 0x01, 0xEA, 0x01, > + 0xEC, 0x01, 0xEC, 0x01, 0xEE, 0x01, 0xEE, 0x01, > + 0x=460, 0x01, 0x=461, 0x01, 0x=462, 0x01, 0x=461, 0x01, > + 0x=464, 0x01, 0x=464, 0x01, 0x=466, 0x01, 0x=467, 0x01, > + 0x=468, 0x01, 0x=468, 0x01, 0x=46A, 0x01, 0x=46A, 0x01, > + 0x=46C, 0x01, 0x=46C, 0x01, 0x=46E, 0x01, 0x=46E, 0x01, > + 0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, > + 0x04, 0x02, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, > + 0x08, 0x02, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, > + 0x0C, 0x02, 0x0C, 0x02, 0x0E, 0x02, 0x0E, 0x02, > + 0x10, 0x02, 0x10, 0x02, 0x12, 0x02, 0x12, 0x02, > + 0x14, 0x02, 0x14, 0x02, 0x16, 0x02, 0x16, 0x02, > + 0x18, 0x02, 0x18, 0x02, 0x1A, 0x02, 0x1A, 0x02, > + 0x1C, 0x02, 0x1C, 0x02, 0x1E, 0x02, 0x1E, 0x02, > + 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x22, 0x02, > + 0x24, 0x02, 0x24, 0x02, 0x26, 0x02, 0x26, 0x02, > + 0x28, 0x02, 0x28, 0x02, 0x2A, 0x02, 0x2A, 0x02, > + 0x2C, 0x02, 0x2C, 0x02, 0x2E, 0x02, 0x2E, 0x02, > + 0x30, 0x02, 0x30, 0x02, 0x32, 0x02, 0x32, 0x02, > + 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, > + 0x38, 0x02, 0x39, 0x02, 0x65, 0x2C, 0x3B, 0x02, > + 0x3B, 0x02, 0x3D, 0x02, 0x66, 0x2C, 0x3=46, 0x02, > + 0x40, 0x02, 0x41, 0x02, 0x41, 0x02, 0x43, 0x02, > + 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x46, 0x02, > + 0x48, 0x02, 0x48, 0x02, 0x4A, 0x02, 0x4A, 0x02, > + 0x4C, 0x02, 0x4C, 0x02, 0x4E, 0x02, 0x4E, 0x02, > + 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x81, 0x01, > + 0x86, 0x01, 0x55, 0x02, 0x89, 0x01, 0x8A, 0x01, > + 0x58, 0x02, 0x8=46, 0x01, 0x5A, 0x02, 0x90, 0x01, > + 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5=46, 0x02, > + 0x93, 0x01, 0x61, 0x02, 0x62, 0x02, 0x94, 0x01, > + 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, > + 0x97, 0x01, 0x96, 0x01, 0x6A, 0x02, 0x62, 0x2C, > + 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x9C, 0x01, > + 0x70, 0x02, 0x71, 0x02, 0x9D, 0x01, 0x73, 0x02, > + 0x74, 0x02, 0x9=46, 0x01, 0x76, 0x02, 0x77, 0x02, > + 0x78, 0x02, 0x79, 0x02, 0x7A, 0x02, 0x7B, 0x02, > + 0x7C, 0x02, 0x64, 0x2C, 0x7E, 0x02, 0x7=46, 0x02, > + 0xA6, 0x01, 0x81, 0x02, 0x82, 0x02, 0xA9, 0x01, > + 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, > + 0xAE, 0x01, 0x44, 0x02, 0xB1, 0x01, 0xB2, 0x01, > + 0x45, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8=46, 0x02, > + 0x90, 0x02, 0x91, 0x02, 0xB7, 0x01, 0x93, 0x02, > + 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, > + 0x98, 0x02, 0x99, 0x02, 0x9A, 0x02, 0x9B, 0x02, > + 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9=46, 0x02, > + 0xA0, 0x02, 0xA1, 0x02, 0xA2, 0x02, 0xA3, 0x02, > + 0xA4, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, > + 0xA8, 0x02, 0xA9, 0x02, 0xAA, 0x02, 0xAB, 0x02, > + 0xAC, 0x02, 0xAD, 0x02, 0xAE, 0x02, 0xA=46, 0x02, > + 0xB0, 0x02, 0xB1, 0x02, 0xB2, 0x02, 0xB3, 0x02, > + 0xB4, 0x02, 0xB5, 0x02, 0xB6, 0x02, 0xB7, 0x02, > + 0xB8, 0x02, 0xB9, 0x02, 0xBA, 0x02, 0xBB, 0x02, > + 0xBC, 0x02, 0xBD, 0x02, 0xBE, 0x02, 0xB=46, 0x02, > + 0xC0, 0x02, 0xC1, 0x02, 0xC2, 0x02, 0xC3, 0x02, > + 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, > + 0xC8, 0x02, 0xC9, 0x02, 0xCA, 0x02, 0xCB, 0x02, > + 0xCC, 0x02, 0xCD, 0x02, 0xCE, 0x02, 0xC=46, 0x02, > + 0xD0, 0x02, 0xD1, 0x02, 0xD2, 0x02, 0xD3, 0x02, > + 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0xD7, 0x02, > + 0xD8, 0x02, 0xD9, 0x02, 0xDA, 0x02, 0xDB, 0x02, > + 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x02, 0xD=46, 0x02, > + 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02, > + 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x02, > + 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, > + 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xE=46, 0x02, > + 0x=460, 0x02, 0x=461, 0x02, 0x=462, 0x02, 0x=463, 0x02, > + 0x=464, 0x02, 0x=465, 0x02, 0x=466, 0x02, 0x=467, 0x02, > + 0x=468, 0x02, 0x=469, 0x02, 0x=46A, 0x02, 0x=46B, 0x02, > + 0x=46C, 0x02, 0x=46D, 0x02, 0x=46E, 0x02, 0x=46=46, 0x02, > + 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x03, 0x03, > + 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, > + 0x08, 0x03, 0x09, 0x03, 0x0A, 0x03, 0x0B, 0x03, > + 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0=46, 0x03, > + 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, > + 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, 0x03, > + 0x18, 0x03, 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, > + 0x1C, 0x03, 0x1D, 0x03, 0x1E, 0x03, 0x1=46, 0x03, > + 0x20, 0x03, 0x21, 0x03, 0x22, 0x03, 0x23, 0x03, > + 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, > + 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, > + 0x2C, 0x03, 0x2D, 0x03, 0x2E, 0x03, 0x2=46, 0x03, > + 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, > + 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, > + 0x38, 0x03, 0x39, 0x03, 0x3A, 0x03, 0x3B, 0x03, > + 0x3C, 0x03, 0x3D, 0x03, 0x3E, 0x03, 0x3=46, 0x03, > + 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, > + 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, > + 0x48, 0x03, 0x49, 0x03, 0x4A, 0x03, 0x4B, 0x03, > + 0x4C, 0x03, 0x4D, 0x03, 0x4E, 0x03, 0x4=46, 0x03, > + 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, > + 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, > + 0x58, 0x03, 0x59, 0x03, 0x5A, 0x03, 0x5B, 0x03, > + 0x5C, 0x03, 0x5D, 0x03, 0x5E, 0x03, 0x5=46, 0x03, > + 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, > + 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, > + 0x68, 0x03, 0x69, 0x03, 0x6A, 0x03, 0x6B, 0x03, > + 0x6C, 0x03, 0x6D, 0x03, 0x6E, 0x03, 0x6=46, 0x03, > + 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, > + 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, > + 0x78, 0x03, 0x79, 0x03, 0x7A, 0x03, 0x=46D, 0x03, > + 0x=46E, 0x03, 0x=46=46, 0x03, 0x7E, 0x03, 0x7=46, 0x03, > + 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, > + 0x84, 0x03, 0x85, 0x03, 0x86, 0x03, 0x87, 0x03, > + 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, 0x8B, 0x03, > + 0x8C, 0x03, 0x8D, 0x03, 0x8E, 0x03, 0x8=46, 0x03, > + 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, > + 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, > + 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, > + 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9=46, 0x03, > + 0xA0, 0x03, 0xA1, 0x03, 0xA2, 0x03, 0xA3, 0x03, > + 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, > + 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, > + 0x86, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, > + 0xB0, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, > + 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, > + 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, > + 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9=46, 0x03, > + 0xA0, 0x03, 0xA1, 0x03, 0xA3, 0x03, 0xA3, 0x03, > + 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, > + 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, > + 0x8C, 0x03, 0x8E, 0x03, 0x8=46, 0x03, 0xC=46, 0x03, > + 0xD0, 0x03, 0xD1, 0x03, 0xD2, 0x03, 0xD3, 0x03, > + 0xD4, 0x03, 0xD5, 0x03, 0xD6, 0x03, 0xD7, 0x03, > + 0xD8, 0x03, 0xD8, 0x03, 0xDA, 0x03, 0xDA, 0x03, > + 0xDC, 0x03, 0xDC, 0x03, 0xDE, 0x03, 0xDE, 0x03, > + 0xE0, 0x03, 0xE0, 0x03, 0xE2, 0x03, 0xE2, 0x03, > + 0xE4, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE6, 0x03, > + 0xE8, 0x03, 0xE8, 0x03, 0xEA, 0x03, 0xEA, 0x03, > + 0xEC, 0x03, 0xEC, 0x03, 0xEE, 0x03, 0xEE, 0x03, > + 0x=460, 0x03, 0x=461, 0x03, 0x=469, 0x03, 0x=463, 0x03, > + 0x=464, 0x03, 0x=465, 0x03, 0x=466, 0x03, 0x=467, 0x03, > + 0x=467, 0x03, 0x=469, 0x03, 0x=46A, 0x03, 0x=46A, 0x03, > + 0x=46C, 0x03, 0x=46D, 0x03, 0x=46E, 0x03, 0x=46=46, 0x03, > + 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, > + 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, > + 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, > + 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0=46, 0x04, > + 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, > + 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, > + 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, > + 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1=46, 0x04, > + 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, > + 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, > + 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, > + 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2=46, 0x04, > + 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, > + 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, > + 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, > + 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1=46, 0x04, > + 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, > + 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, > + 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, > + 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2=46, 0x04, > + 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, > + 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, > + 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, > + 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0=46, 0x04, > + 0x60, 0x04, 0x60, 0x04, 0x62, 0x04, 0x62, 0x04, > + 0x64, 0x04, 0x64, 0x04, 0x66, 0x04, 0x66, 0x04, > + 0x68, 0x04, 0x68, 0x04, 0x6A, 0x04, 0x6A, 0x04, > + 0x6C, 0x04, 0x6C, 0x04, 0x6E, 0x04, 0x6E, 0x04, > + 0x70, 0x04, 0x70, 0x04, 0x72, 0x04, 0x72, 0x04, > + 0x74, 0x04, 0x74, 0x04, 0x76, 0x04, 0x76, 0x04, > + 0x78, 0x04, 0x78, 0x04, 0x7A, 0x04, 0x7A, 0x04, > + 0x7C, 0x04, 0x7C, 0x04, 0x7E, 0x04, 0x7E, 0x04, > + 0x80, 0x04, 0x80, 0x04, 0x82, 0x04, 0x83, 0x04, > + 0x84, 0x04, 0x85, 0x04, 0x86, 0x04, 0x87, 0x04, > + 0x88, 0x04, 0x89, 0x04, 0x8A, 0x04, 0x8A, 0x04, > + 0x8C, 0x04, 0x8C, 0x04, 0x8E, 0x04, 0x8E, 0x04, > + 0x90, 0x04, 0x90, 0x04, 0x92, 0x04, 0x92, 0x04, > + 0x94, 0x04, 0x94, 0x04, 0x96, 0x04, 0x96, 0x04, > + 0x98, 0x04, 0x98, 0x04, 0x9A, 0x04, 0x9A, 0x04, > + 0x9C, 0x04, 0x9C, 0x04, 0x9E, 0x04, 0x9E, 0x04, > + 0xA0, 0x04, 0xA0, 0x04, 0xA2, 0x04, 0xA2, 0x04, > + 0xA4, 0x04, 0xA4, 0x04, 0xA6, 0x04, 0xA6, 0x04, > + 0xA8, 0x04, 0xA8, 0x04, 0xAA, 0x04, 0xAA, 0x04, > + 0xAC, 0x04, 0xAC, 0x04, 0xAE, 0x04, 0xAE, 0x04, > + 0xB0, 0x04, 0xB0, 0x04, 0xB2, 0x04, 0xB2, 0x04, > + 0xB4, 0x04, 0xB4, 0x04, 0xB6, 0x04, 0xB6, 0x04, > + 0xB8, 0x04, 0xB8, 0x04, 0xBA, 0x04, 0xBA, 0x04, > + 0xBC, 0x04, 0xBC, 0x04, 0xBE, 0x04, 0xBE, 0x04, > + 0xC0, 0x04, 0xC1, 0x04, 0xC1, 0x04, 0xC3, 0x04, > + 0xC3, 0x04, 0xC5, 0x04, 0xC5, 0x04, 0xC7, 0x04, > + 0xC7, 0x04, 0xC9, 0x04, 0xC9, 0x04, 0xCB, 0x04, > + 0xCB, 0x04, 0xCD, 0x04, 0xCD, 0x04, 0xC0, 0x04, > + 0xD0, 0x04, 0xD0, 0x04, 0xD2, 0x04, 0xD2, 0x04, > + 0xD4, 0x04, 0xD4, 0x04, 0xD6, 0x04, 0xD6, 0x04, > + 0xD8, 0x04, 0xD8, 0x04, 0xDA, 0x04, 0xDA, 0x04, > + 0xDC, 0x04, 0xDC, 0x04, 0xDE, 0x04, 0xDE, 0x04, > + 0xE0, 0x04, 0xE0, 0x04, 0xE2, 0x04, 0xE2, 0x04, > + 0xE4, 0x04, 0xE4, 0x04, 0xE6, 0x04, 0xE6, 0x04, > + 0xE8, 0x04, 0xE8, 0x04, 0xEA, 0x04, 0xEA, 0x04, > + 0xEC, 0x04, 0xEC, 0x04, 0xEE, 0x04, 0xEE, 0x04, > + 0x=460, 0x04, 0x=460, 0x04, 0x=462, 0x04, 0x=462, 0x04, > + 0x=464, 0x04, 0x=464, 0x04, 0x=466, 0x04, 0x=466, 0x04, > + 0x=468, 0x04, 0x=468, 0x04, 0x=46A, 0x04, 0x=46A, 0x04, > + 0x=46C, 0x04, 0x=46C, 0x04, 0x=46E, 0x04, 0x=46E, 0x04, > + 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x02, 0x05, > + 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, > + 0x08, 0x05, 0x08, 0x05, 0x0A, 0x05, 0x0A, 0x05, > + 0x0C, 0x05, 0x0C, 0x05, 0x0E, 0x05, 0x0E, 0x05, > + 0x10, 0x05, 0x10, 0x05, 0x12, 0x05, 0x12, 0x05, > + 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, 0x05, > + 0x18, 0x05, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, > + 0x1C, 0x05, 0x1D, 0x05, 0x1E, 0x05, 0x1=46, 0x05, > + 0x20, 0x05, 0x21, 0x05, 0x22, 0x05, 0x23, 0x05, > + 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0x27, 0x05, > + 0x28, 0x05, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x05, > + 0x2C, 0x05, 0x2D, 0x05, 0x2E, 0x05, 0x2=46, 0x05, > + 0x30, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, > + 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, > + 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, > + 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3=46, 0x05, > + 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, > + 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, > + 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, > + 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4=46, 0x05, > + 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, > + 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, 0x05, > + 0x58, 0x05, 0x59, 0x05, 0x5A, 0x05, 0x5B, 0x05, > + 0x5C, 0x05, 0x5D, 0x05, 0x5E, 0x05, 0x5=46, 0x05, > + 0x60, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, > + 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, > + 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, > + 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3=46, 0x05, > + 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, > + 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, > + 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, > + 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4=46, 0x05, > + 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, > + 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x=46=46, 0x=46=46, > + 0x=466, 0x17, 0x63, 0x2C, 0x7E, 0x1D, 0x7=46, 0x1D, > + 0x80, 0x1D, 0x81, 0x1D, 0x82, 0x1D, 0x83, 0x1D, > + 0x84, 0x1D, 0x85, 0x1D, 0x86, 0x1D, 0x87, 0x1D, > + 0x88, 0x1D, 0x89, 0x1D, 0x8A, 0x1D, 0x8B, 0x1D, > + 0x8C, 0x1D, 0x8D, 0x1D, 0x8E, 0x1D, 0x8=46, 0x1D, > + 0x90, 0x1D, 0x91, 0x1D, 0x92, 0x1D, 0x93, 0x1D, > + 0x94, 0x1D, 0x95, 0x1D, 0x96, 0x1D, 0x97, 0x1D, > + 0x98, 0x1D, 0x99, 0x1D, 0x9A, 0x1D, 0x9B, 0x1D, > + 0x9C, 0x1D, 0x9D, 0x1D, 0x9E, 0x1D, 0x9=46, 0x1D, > + 0xA0, 0x1D, 0xA1, 0x1D, 0xA2, 0x1D, 0xA3, 0x1D, > + 0xA4, 0x1D, 0xA5, 0x1D, 0xA6, 0x1D, 0xA7, 0x1D, > + 0xA8, 0x1D, 0xA9, 0x1D, 0xAA, 0x1D, 0xAB, 0x1D, > + 0xAC, 0x1D, 0xAD, 0x1D, 0xAE, 0x1D, 0xA=46, 0x1D, > + 0xB0, 0x1D, 0xB1, 0x1D, 0xB2, 0x1D, 0xB3, 0x1D, > + 0xB4, 0x1D, 0xB5, 0x1D, 0xB6, 0x1D, 0xB7, 0x1D, > + 0xB8, 0x1D, 0xB9, 0x1D, 0xBA, 0x1D, 0xBB, 0x1D, > + 0xBC, 0x1D, 0xBD, 0x1D, 0xBE, 0x1D, 0xB=46, 0x1D, > + 0xC0, 0x1D, 0xC1, 0x1D, 0xC2, 0x1D, 0xC3, 0x1D, > + 0xC4, 0x1D, 0xC5, 0x1D, 0xC6, 0x1D, 0xC7, 0x1D, > + 0xC8, 0x1D, 0xC9, 0x1D, 0xCA, 0x1D, 0xCB, 0x1D, > + 0xCC, 0x1D, 0xCD, 0x1D, 0xCE, 0x1D, 0xC=46, 0x1D, > + 0xD0, 0x1D, 0xD1, 0x1D, 0xD2, 0x1D, 0xD3, 0x1D, > + 0xD4, 0x1D, 0xD5, 0x1D, 0xD6, 0x1D, 0xD7, 0x1D, > + 0xD8, 0x1D, 0xD9, 0x1D, 0xDA, 0x1D, 0xDB, 0x1D, > + 0xDC, 0x1D, 0xDD, 0x1D, 0xDE, 0x1D, 0xD=46, 0x1D, > + 0xE0, 0x1D, 0xE1, 0x1D, 0xE2, 0x1D, 0xE3, 0x1D, > + 0xE4, 0x1D, 0xE5, 0x1D, 0xE6, 0x1D, 0xE7, 0x1D, > + 0xE8, 0x1D, 0xE9, 0x1D, 0xEA, 0x1D, 0xEB, 0x1D, > + 0xEC, 0x1D, 0xED, 0x1D, 0xEE, 0x1D, 0xE=46, 0x1D, > + 0x=460, 0x1D, 0x=461, 0x1D, 0x=462, 0x1D, 0x=463, 0x1D, > + 0x=464, 0x1D, 0x=465, 0x1D, 0x=466, 0x1D, 0x=467, 0x1D, > + 0x=468, 0x1D, 0x=469, 0x1D, 0x=46A, 0x1D, 0x=46B, 0x1D, > + 0x=46C, 0x1D, 0x=46D, 0x1D, 0x=46E, 0x1D, 0x=46=46, 0x1D, > + 0x00, 0x1E, 0x00, 0x1E, 0x02, 0x1E, 0x02, 0x1E, > + 0x04, 0x1E, 0x04, 0x1E, 0x06, 0x1E, 0x06, 0x1E, > + 0x08, 0x1E, 0x08, 0x1E, 0x0A, 0x1E, 0x0A, 0x1E, > + 0x0C, 0x1E, 0x0C, 0x1E, 0x0E, 0x1E, 0x0E, 0x1E, > + 0x10, 0x1E, 0x10, 0x1E, 0x12, 0x1E, 0x12, 0x1E, > + 0x14, 0x1E, 0x14, 0x1E, 0x16, 0x1E, 0x16, 0x1E, > + 0x18, 0x1E, 0x18, 0x1E, 0x1A, 0x1E, 0x1A, 0x1E, > + 0x1C, 0x1E, 0x1C, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, > + 0x20, 0x1E, 0x20, 0x1E, 0x22, 0x1E, 0x22, 0x1E, > + 0x24, 0x1E, 0x24, 0x1E, 0x26, 0x1E, 0x26, 0x1E, > + 0x28, 0x1E, 0x28, 0x1E, 0x2A, 0x1E, 0x2A, 0x1E, > + 0x2C, 0x1E, 0x2C, 0x1E, 0x2E, 0x1E, 0x2E, 0x1E, > + 0x30, 0x1E, 0x30, 0x1E, 0x32, 0x1E, 0x32, 0x1E, > + 0x34, 0x1E, 0x34, 0x1E, 0x36, 0x1E, 0x36, 0x1E, > + 0x38, 0x1E, 0x38, 0x1E, 0x3A, 0x1E, 0x3A, 0x1E, > + 0x3C, 0x1E, 0x3C, 0x1E, 0x3E, 0x1E, 0x3E, 0x1E, > + 0x40, 0x1E, 0x40, 0x1E, 0x42, 0x1E, 0x42, 0x1E, > + 0x44, 0x1E, 0x44, 0x1E, 0x46, 0x1E, 0x46, 0x1E, > + 0x48, 0x1E, 0x48, 0x1E, 0x4A, 0x1E, 0x4A, 0x1E, > + 0x4C, 0x1E, 0x4C, 0x1E, 0x4E, 0x1E, 0x4E, 0x1E, > + 0x50, 0x1E, 0x50, 0x1E, 0x52, 0x1E, 0x52, 0x1E, > + 0x54, 0x1E, 0x54, 0x1E, 0x56, 0x1E, 0x56, 0x1E, > + 0x58, 0x1E, 0x58, 0x1E, 0x5A, 0x1E, 0x5A, 0x1E, > + 0x5C, 0x1E, 0x5C, 0x1E, 0x5E, 0x1E, 0x5E, 0x1E, > + 0x60, 0x1E, 0x60, 0x1E, 0x62, 0x1E, 0x62, 0x1E, > + 0x64, 0x1E, 0x64, 0x1E, 0x66, 0x1E, 0x66, 0x1E, > + 0x68, 0x1E, 0x68, 0x1E, 0x6A, 0x1E, 0x6A, 0x1E, > + 0x6C, 0x1E, 0x6C, 0x1E, 0x6E, 0x1E, 0x6E, 0x1E, > + 0x70, 0x1E, 0x70, 0x1E, 0x72, 0x1E, 0x72, 0x1E, > + 0x74, 0x1E, 0x74, 0x1E, 0x76, 0x1E, 0x76, 0x1E, > + 0x78, 0x1E, 0x78, 0x1E, 0x7A, 0x1E, 0x7A, 0x1E, > + 0x7C, 0x1E, 0x7C, 0x1E, 0x7E, 0x1E, 0x7E, 0x1E, > + 0x80, 0x1E, 0x80, 0x1E, 0x82, 0x1E, 0x82, 0x1E, > + 0x84, 0x1E, 0x84, 0x1E, 0x86, 0x1E, 0x86, 0x1E, > + 0x88, 0x1E, 0x88, 0x1E, 0x8A, 0x1E, 0x8A, 0x1E, > + 0x8C, 0x1E, 0x8C, 0x1E, 0x8E, 0x1E, 0x8E, 0x1E, > + 0x90, 0x1E, 0x90, 0x1E, 0x92, 0x1E, 0x92, 0x1E, > + 0x94, 0x1E, 0x94, 0x1E, 0x96, 0x1E, 0x97, 0x1E, > + 0x98, 0x1E, 0x99, 0x1E, 0x9A, 0x1E, 0x9B, 0x1E, > + 0x9C, 0x1E, 0x9D, 0x1E, 0x9E, 0x1E, 0x9=46, 0x1E, > + 0xA0, 0x1E, 0xA0, 0x1E, 0xA2, 0x1E, 0xA2, 0x1E, > + 0xA4, 0x1E, 0xA4, 0x1E, 0xA6, 0x1E, 0xA6, 0x1E, > + 0xA8, 0x1E, 0xA8, 0x1E, 0xAA, 0x1E, 0xAA, 0x1E, > + 0xAC, 0x1E, 0xAC, 0x1E, 0xAE, 0x1E, 0xAE, 0x1E, > + 0xB0, 0x1E, 0xB0, 0x1E, 0xB2, 0x1E, 0xB2, 0x1E, > + 0xB4, 0x1E, 0xB4, 0x1E, 0xB6, 0x1E, 0xB6, 0x1E, > + 0xB8, 0x1E, 0xB8, 0x1E, 0xBA, 0x1E, 0xBA, 0x1E, > + 0xBC, 0x1E, 0xBC, 0x1E, 0xBE, 0x1E, 0xBE, 0x1E, > + 0xC0, 0x1E, 0xC0, 0x1E, 0xC2, 0x1E, 0xC2, 0x1E, > + 0xC4, 0x1E, 0xC4, 0x1E, 0xC6, 0x1E, 0xC6, 0x1E, > + 0xC8, 0x1E, 0xC8, 0x1E, 0xCA, 0x1E, 0xCA, 0x1E, > + 0xCC, 0x1E, 0xCC, 0x1E, 0xCE, 0x1E, 0xCE, 0x1E, > + 0xD0, 0x1E, 0xD0, 0x1E, 0xD2, 0x1E, 0xD2, 0x1E, > + 0xD4, 0x1E, 0xD4, 0x1E, 0xD6, 0x1E, 0xD6, 0x1E, > + 0xD8, 0x1E, 0xD8, 0x1E, 0xDA, 0x1E, 0xDA, 0x1E, > + 0xDC, 0x1E, 0xDC, 0x1E, 0xDE, 0x1E, 0xDE, 0x1E, > + 0xE0, 0x1E, 0xE0, 0x1E, 0xE2, 0x1E, 0xE2, 0x1E, > + 0xE4, 0x1E, 0xE4, 0x1E, 0xE6, 0x1E, 0xE6, 0x1E, > + 0xE8, 0x1E, 0xE8, 0x1E, 0xEA, 0x1E, 0xEA, 0x1E, > + 0xEC, 0x1E, 0xEC, 0x1E, 0xEE, 0x1E, 0xEE, 0x1E, > + 0x=460, 0x1E, 0x=460, 0x1E, 0x=462, 0x1E, 0x=462, 0x1E, > + 0x=464, 0x1E, 0x=464, 0x1E, 0x=466, 0x1E, 0x=466, 0x1E, > + 0x=468, 0x1E, 0x=468, 0x1E, 0x=46A, 0x1E, 0x=46B, 0x1E, > + 0x=46C, 0x1E, 0x=46D, 0x1E, 0x=46E, 0x1E, 0x=46=46, 0x1E, > + 0x08, 0x1=46, 0x09, 0x1=46, 0x0A, 0x1=46, 0x0B, 0x1=46, > + 0x0C, 0x1=46, 0x0D, 0x1=46, 0x0E, 0x1=46, 0x0=46, 0x1=46, > + 0x08, 0x1=46, 0x09, 0x1=46, 0x0A, 0x1=46, 0x0B, 0x1=46, > + 0x0C, 0x1=46, 0x0D, 0x1=46, 0x0E, 0x1=46, 0x0=46, 0x1=46, > + 0x18, 0x1=46, 0x19, 0x1=46, 0x1A, 0x1=46, 0x1B, 0x1=46, > + 0x1C, 0x1=46, 0x1D, 0x1=46, 0x16, 0x1=46, 0x17, 0x1=46, > + 0x18, 0x1=46, 0x19, 0x1=46, 0x1A, 0x1=46, 0x1B, 0x1=46, > + 0x1C, 0x1=46, 0x1D, 0x1=46, 0x1E, 0x1=46, 0x1=46, 0x1=46, > + 0x28, 0x1=46, 0x29, 0x1=46, 0x2A, 0x1=46, 0x2B, 0x1=46, > + 0x2C, 0x1=46, 0x2D, 0x1=46, 0x2E, 0x1=46, 0x2=46, 0x1=46, > + 0x28, 0x1=46, 0x29, 0x1=46, 0x2A, 0x1=46, 0x2B, 0x1=46, > + 0x2C, 0x1=46, 0x2D, 0x1=46, 0x2E, 0x1=46, 0x2=46, 0x1=46, > + 0x38, 0x1=46, 0x39, 0x1=46, 0x3A, 0x1=46, 0x3B, 0x1=46, > + 0x3C, 0x1=46, 0x3D, 0x1=46, 0x3E, 0x1=46, 0x3=46, 0x1=46, > + 0x38, 0x1=46, 0x39, 0x1=46, 0x3A, 0x1=46, 0x3B, 0x1=46, > + 0x3C, 0x1=46, 0x3D, 0x1=46, 0x3E, 0x1=46, 0x3=46, 0x1=46, > + 0x48, 0x1=46, 0x49, 0x1=46, 0x4A, 0x1=46, 0x4B, 0x1=46, > + 0x4C, 0x1=46, 0x4D, 0x1=46, 0x46, 0x1=46, 0x47, 0x1=46, > + 0x48, 0x1=46, 0x49, 0x1=46, 0x4A, 0x1=46, 0x4B, 0x1=46, > + 0x4C, 0x1=46, 0x4D, 0x1=46, 0x4E, 0x1=46, 0x4=46, 0x1=46, > + 0x50, 0x1=46, 0x59, 0x1=46, 0x52, 0x1=46, 0x5B, 0x1=46, > + 0x54, 0x1=46, 0x5D, 0x1=46, 0x56, 0x1=46, 0x5=46, 0x1=46, > + 0x58, 0x1=46, 0x59, 0x1=46, 0x5A, 0x1=46, 0x5B, 0x1=46, > + 0x5C, 0x1=46, 0x5D, 0x1=46, 0x5E, 0x1=46, 0x5=46, 0x1=46, > + 0x68, 0x1=46, 0x69, 0x1=46, 0x6A, 0x1=46, 0x6B, 0x1=46, > + 0x6C, 0x1=46, 0x6D, 0x1=46, 0x6E, 0x1=46, 0x6=46, 0x1=46, > + 0x68, 0x1=46, 0x69, 0x1=46, 0x6A, 0x1=46, 0x6B, 0x1=46, > + 0x6C, 0x1=46, 0x6D, 0x1=46, 0x6E, 0x1=46, 0x6=46, 0x1=46, > + 0xBA, 0x1=46, 0xBB, 0x1=46, 0xC8, 0x1=46, 0xC9, 0x1=46, > + 0xCA, 0x1=46, 0xCB, 0x1=46, 0xDA, 0x1=46, 0xDB, 0x1=46, > + 0x=468, 0x1=46, 0x=469, 0x1=46, 0xEA, 0x1=46, 0xEB, 0x1=46, > + 0x=46A, 0x1=46, 0x=46B, 0x1=46, 0x7E, 0x1=46, 0x7=46, 0x1=46, > + 0x88, 0x1=46, 0x89, 0x1=46, 0x8A, 0x1=46, 0x8B, 0x1=46, > + 0x8C, 0x1=46, 0x8D, 0x1=46, 0x8E, 0x1=46, 0x8=46, 0x1=46, > + 0x88, 0x1=46, 0x89, 0x1=46, 0x8A, 0x1=46, 0x8B, 0x1=46, > + 0x8C, 0x1=46, 0x8D, 0x1=46, 0x8E, 0x1=46, 0x8=46, 0x1=46, > + 0x98, 0x1=46, 0x99, 0x1=46, 0x9A, 0x1=46, 0x9B, 0x1=46, > + 0x9C, 0x1=46, 0x9D, 0x1=46, 0x9E, 0x1=46, 0x9=46, 0x1=46, > + 0x98, 0x1=46, 0x99, 0x1=46, 0x9A, 0x1=46, 0x9B, 0x1=46, > + 0x9C, 0x1=46, 0x9D, 0x1=46, 0x9E, 0x1=46, 0x9=46, 0x1=46, > + 0xA8, 0x1=46, 0xA9, 0x1=46, 0xAA, 0x1=46, 0xAB, 0x1=46, > + 0xAC, 0x1=46, 0xAD, 0x1=46, 0xAE, 0x1=46, 0xA=46, 0x1=46, > + 0xA8, 0x1=46, 0xA9, 0x1=46, 0xAA, 0x1=46, 0xAB, 0x1=46, > + 0xAC, 0x1=46, 0xAD, 0x1=46, 0xAE, 0x1=46, 0xA=46, 0x1=46, > + 0xB8, 0x1=46, 0xB9, 0x1=46, 0xB2, 0x1=46, 0xBC, 0x1=46, > + 0xB4, 0x1=46, 0xB5, 0x1=46, 0xB6, 0x1=46, 0xB7, 0x1=46, > + 0xB8, 0x1=46, 0xB9, 0x1=46, 0xBA, 0x1=46, 0xBB, 0x1=46, > + 0xBC, 0x1=46, 0xBD, 0x1=46, 0xBE, 0x1=46, 0xB=46, 0x1=46, > + 0xC0, 0x1=46, 0xC1, 0x1=46, 0xC2, 0x1=46, 0xC3, 0x1=46, > + 0xC4, 0x1=46, 0xC5, 0x1=46, 0xC6, 0x1=46, 0xC7, 0x1=46, > + 0xC8, 0x1=46, 0xC9, 0x1=46, 0xCA, 0x1=46, 0xCB, 0x1=46, > + 0xC3, 0x1=46, 0xCD, 0x1=46, 0xCE, 0x1=46, 0xC=46, 0x1=46, > + 0xD8, 0x1=46, 0xD9, 0x1=46, 0xD2, 0x1=46, 0xD3, 0x1=46, > + 0xD4, 0x1=46, 0xD5, 0x1=46, 0xD6, 0x1=46, 0xD7, 0x1=46, > + 0xD8, 0x1=46, 0xD9, 0x1=46, 0xDA, 0x1=46, 0xDB, 0x1=46, > + 0xDC, 0x1=46, 0xDD, 0x1=46, 0xDE, 0x1=46, 0xD=46, 0x1=46, > + 0xE8, 0x1=46, 0xE9, 0x1=46, 0xE2, 0x1=46, 0xE3, 0x1=46, > + 0xE4, 0x1=46, 0xEC, 0x1=46, 0xE6, 0x1=46, 0xE7, 0x1=46, > + 0xE8, 0x1=46, 0xE9, 0x1=46, 0xEA, 0x1=46, 0xEB, 0x1=46, > + 0xEC, 0x1=46, 0xED, 0x1=46, 0xEE, 0x1=46, 0xE=46, 0x1=46, > + 0x=460, 0x1=46, 0x=461, 0x1=46, 0x=462, 0x1=46, 0x=463, 0x1=46, > + 0x=464, 0x1=46, 0x=465, 0x1=46, 0x=466, 0x1=46, 0x=467, 0x1=46, > + 0x=468, 0x1=46, 0x=469, 0x1=46, 0x=46A, 0x1=46, 0x=46B, 0x1=46, > + 0x=463, 0x1=46, 0x=46D, 0x1=46, 0x=46E, 0x1=46, 0x=46=46, 0x1=46, > + 0x00, 0x20, 0x01, 0x20, 0x02, 0x20, 0x03, 0x20, > + 0x04, 0x20, 0x05, 0x20, 0x06, 0x20, 0x07, 0x20, > + 0x08, 0x20, 0x09, 0x20, 0x0A, 0x20, 0x0B, 0x20, > + 0x0C, 0x20, 0x0D, 0x20, 0x0E, 0x20, 0x0=46, 0x20, > + 0x10, 0x20, 0x11, 0x20, 0x12, 0x20, 0x13, 0x20, > + 0x14, 0x20, 0x15, 0x20, 0x16, 0x20, 0x17, 0x20, > + 0x18, 0x20, 0x19, 0x20, 0x1A, 0x20, 0x1B, 0x20, > + 0x1C, 0x20, 0x1D, 0x20, 0x1E, 0x20, 0x1=46, 0x20, > + 0x20, 0x20, 0x21, 0x20, 0x22, 0x20, 0x23, 0x20, > + 0x24, 0x20, 0x25, 0x20, 0x26, 0x20, 0x27, 0x20, > + 0x28, 0x20, 0x29, 0x20, 0x2A, 0x20, 0x2B, 0x20, > + 0x2C, 0x20, 0x2D, 0x20, 0x2E, 0x20, 0x2=46, 0x20, > + 0x30, 0x20, 0x31, 0x20, 0x32, 0x20, 0x33, 0x20, > + 0x34, 0x20, 0x35, 0x20, 0x36, 0x20, 0x37, 0x20, > + 0x38, 0x20, 0x39, 0x20, 0x3A, 0x20, 0x3B, 0x20, > + 0x3C, 0x20, 0x3D, 0x20, 0x3E, 0x20, 0x3=46, 0x20, > + 0x40, 0x20, 0x41, 0x20, 0x42, 0x20, 0x43, 0x20, > + 0x44, 0x20, 0x45, 0x20, 0x46, 0x20, 0x47, 0x20, > + 0x48, 0x20, 0x49, 0x20, 0x4A, 0x20, 0x4B, 0x20, > + 0x4C, 0x20, 0x4D, 0x20, 0x4E, 0x20, 0x4=46, 0x20, > + 0x50, 0x20, 0x51, 0x20, 0x52, 0x20, 0x53, 0x20, > + 0x54, 0x20, 0x55, 0x20, 0x56, 0x20, 0x57, 0x20, > + 0x58, 0x20, 0x59, 0x20, 0x5A, 0x20, 0x5B, 0x20, > + 0x5C, 0x20, 0x5D, 0x20, 0x5E, 0x20, 0x5=46, 0x20, > + 0x60, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x20, > + 0x64, 0x20, 0x65, 0x20, 0x66, 0x20, 0x67, 0x20, > + 0x68, 0x20, 0x69, 0x20, 0x6A, 0x20, 0x6B, 0x20, > + 0x6C, 0x20, 0x6D, 0x20, 0x6E, 0x20, 0x6=46, 0x20, > + 0x70, 0x20, 0x71, 0x20, 0x72, 0x20, 0x73, 0x20, > + 0x74, 0x20, 0x75, 0x20, 0x76, 0x20, 0x77, 0x20, > + 0x78, 0x20, 0x79, 0x20, 0x7A, 0x20, 0x7B, 0x20, > + 0x7C, 0x20, 0x7D, 0x20, 0x7E, 0x20, 0x7=46, 0x20, > + 0x80, 0x20, 0x81, 0x20, 0x82, 0x20, 0x83, 0x20, > + 0x84, 0x20, 0x85, 0x20, 0x86, 0x20, 0x87, 0x20, > + 0x88, 0x20, 0x89, 0x20, 0x8A, 0x20, 0x8B, 0x20, > + 0x8C, 0x20, 0x8D, 0x20, 0x8E, 0x20, 0x8=46, 0x20, > + 0x90, 0x20, 0x91, 0x20, 0x92, 0x20, 0x93, 0x20, > + 0x94, 0x20, 0x95, 0x20, 0x96, 0x20, 0x97, 0x20, > + 0x98, 0x20, 0x99, 0x20, 0x9A, 0x20, 0x9B, 0x20, > + 0x9C, 0x20, 0x9D, 0x20, 0x9E, 0x20, 0x9=46, 0x20, > + 0xA0, 0x20, 0xA1, 0x20, 0xA2, 0x20, 0xA3, 0x20, > + 0xA4, 0x20, 0xA5, 0x20, 0xA6, 0x20, 0xA7, 0x20, > + 0xA8, 0x20, 0xA9, 0x20, 0xAA, 0x20, 0xAB, 0x20, > + 0xAC, 0x20, 0xAD, 0x20, 0xAE, 0x20, 0xA=46, 0x20, > + 0xB0, 0x20, 0xB1, 0x20, 0xB2, 0x20, 0xB3, 0x20, > + 0xB4, 0x20, 0xB5, 0x20, 0xB6, 0x20, 0xB7, 0x20, > + 0xB8, 0x20, 0xB9, 0x20, 0xBA, 0x20, 0xBB, 0x20, > + 0xBC, 0x20, 0xBD, 0x20, 0xBE, 0x20, 0xB=46, 0x20, > + 0xC0, 0x20, 0xC1, 0x20, 0xC2, 0x20, 0xC3, 0x20, > + 0xC4, 0x20, 0xC5, 0x20, 0xC6, 0x20, 0xC7, 0x20, > + 0xC8, 0x20, 0xC9, 0x20, 0xCA, 0x20, 0xCB, 0x20, > + 0xCC, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xC=46, 0x20, > + 0xD0, 0x20, 0xD1, 0x20, 0xD2, 0x20, 0xD3, 0x20, > + 0xD4, 0x20, 0xD5, 0x20, 0xD6, 0x20, 0xD7, 0x20, > + 0xD8, 0x20, 0xD9, 0x20, 0xDA, 0x20, 0xDB, 0x20, > + 0xDC, 0x20, 0xDD, 0x20, 0xDE, 0x20, 0xD=46, 0x20, > + 0xE0, 0x20, 0xE1, 0x20, 0xE2, 0x20, 0xE3, 0x20, > + 0xE4, 0x20, 0xE5, 0x20, 0xE6, 0x20, 0xE7, 0x20, > + 0xE8, 0x20, 0xE9, 0x20, 0xEA, 0x20, 0xEB, 0x20, > + 0xEC, 0x20, 0xED, 0x20, 0xEE, 0x20, 0xE=46, 0x20, > + 0x=460, 0x20, 0x=461, 0x20, 0x=462, 0x20, 0x=463, 0x20, > + 0x=464, 0x20, 0x=465, 0x20, 0x=466, 0x20, 0x=467, 0x20, > + 0x=468, 0x20, 0x=469, 0x20, 0x=46A, 0x20, 0x=46B, 0x20, > + 0x=46C, 0x20, 0x=46D, 0x20, 0x=46E, 0x20, 0x=46=46, 0x20, > + 0x00, 0x21, 0x01, 0x21, 0x02, 0x21, 0x03, 0x21, > + 0x04, 0x21, 0x05, 0x21, 0x06, 0x21, 0x07, 0x21, > + 0x08, 0x21, 0x09, 0x21, 0x0A, 0x21, 0x0B, 0x21, > + 0x0C, 0x21, 0x0D, 0x21, 0x0E, 0x21, 0x0=46, 0x21, > + 0x10, 0x21, 0x11, 0x21, 0x12, 0x21, 0x13, 0x21, > + 0x14, 0x21, 0x15, 0x21, 0x16, 0x21, 0x17, 0x21, > + 0x18, 0x21, 0x19, 0x21, 0x1A, 0x21, 0x1B, 0x21, > + 0x1C, 0x21, 0x1D, 0x21, 0x1E, 0x21, 0x1=46, 0x21, > + 0x20, 0x21, 0x21, 0x21, 0x22, 0x21, 0x23, 0x21, > + 0x24, 0x21, 0x25, 0x21, 0x26, 0x21, 0x27, 0x21, > + 0x28, 0x21, 0x29, 0x21, 0x2A, 0x21, 0x2B, 0x21, > + 0x2C, 0x21, 0x2D, 0x21, 0x2E, 0x21, 0x2=46, 0x21, > + 0x30, 0x21, 0x31, 0x21, 0x32, 0x21, 0x33, 0x21, > + 0x34, 0x21, 0x35, 0x21, 0x36, 0x21, 0x37, 0x21, > + 0x38, 0x21, 0x39, 0x21, 0x3A, 0x21, 0x3B, 0x21, > + 0x3C, 0x21, 0x3D, 0x21, 0x3E, 0x21, 0x3=46, 0x21, > + 0x40, 0x21, 0x41, 0x21, 0x42, 0x21, 0x43, 0x21, > + 0x44, 0x21, 0x45, 0x21, 0x46, 0x21, 0x47, 0x21, > + 0x48, 0x21, 0x49, 0x21, 0x4A, 0x21, 0x4B, 0x21, > + 0x4C, 0x21, 0x4D, 0x21, 0x32, 0x21, 0x4=46, 0x21, > + 0x50, 0x21, 0x51, 0x21, 0x52, 0x21, 0x53, 0x21, > + 0x54, 0x21, 0x55, 0x21, 0x56, 0x21, 0x57, 0x21, > + 0x58, 0x21, 0x59, 0x21, 0x5A, 0x21, 0x5B, 0x21, > + 0x5C, 0x21, 0x5D, 0x21, 0x5E, 0x21, 0x5=46, 0x21, > + 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, > + 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, > + 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, > + 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6=46, 0x21, > + 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, > + 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, > + 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, > + 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6=46, 0x21, > + 0x80, 0x21, 0x81, 0x21, 0x82, 0x21, 0x83, 0x21, > + 0x83, 0x21, 0x=46=46, 0x=46=46, 0x4B, 0x03, 0xB6, 0x24, > + 0xB7, 0x24, 0xB8, 0x24, 0xB9, 0x24, 0xBA, 0x24, > + 0xBB, 0x24, 0xBC, 0x24, 0xBD, 0x24, 0xBE, 0x24, > + 0xB=46, 0x24, 0xC0, 0x24, 0xC1, 0x24, 0xC2, 0x24, > + 0xC3, 0x24, 0xC4, 0x24, 0xC5, 0x24, 0xC6, 0x24, > + 0xC7, 0x24, 0xC8, 0x24, 0xC9, 0x24, 0xCA, 0x24, > + 0xCB, 0x24, 0xCC, 0x24, 0xCD, 0x24, 0xCE, 0x24, > + 0xC=46, 0x24, 0x=46=46, 0x=46=46, 0x46, 0x07, 0x00, 0x2C, > + 0x01, 0x2C, 0x02, 0x2C, 0x03, 0x2C, 0x04, 0x2C, > + 0x05, 0x2C, 0x06, 0x2C, 0x07, 0x2C, 0x08, 0x2C, > + 0x09, 0x2C, 0x0A, 0x2C, 0x0B, 0x2C, 0x0C, 0x2C, > + 0x0D, 0x2C, 0x0E, 0x2C, 0x0=46, 0x2C, 0x10, 0x2C, > + 0x11, 0x2C, 0x12, 0x2C, 0x13, 0x2C, 0x14, 0x2C, > + 0x15, 0x2C, 0x16, 0x2C, 0x17, 0x2C, 0x18, 0x2C, > + 0x19, 0x2C, 0x1A, 0x2C, 0x1B, 0x2C, 0x1C, 0x2C, > + 0x1D, 0x2C, 0x1E, 0x2C, 0x1=46, 0x2C, 0x20, 0x2C, > + 0x21, 0x2C, 0x22, 0x2C, 0x23, 0x2C, 0x24, 0x2C, > + 0x25, 0x2C, 0x26, 0x2C, 0x27, 0x2C, 0x28, 0x2C, > + 0x29, 0x2C, 0x2A, 0x2C, 0x2B, 0x2C, 0x2C, 0x2C, > + 0x2D, 0x2C, 0x2E, 0x2C, 0x5=46, 0x2C, 0x60, 0x2C, > + 0x60, 0x2C, 0x62, 0x2C, 0x63, 0x2C, 0x64, 0x2C, > + 0x65, 0x2C, 0x66, 0x2C, 0x67, 0x2C, 0x67, 0x2C, > + 0x69, 0x2C, 0x69, 0x2C, 0x6B, 0x2C, 0x6B, 0x2C, > + 0x6D, 0x2C, 0x6E, 0x2C, 0x6=46, 0x2C, 0x70, 0x2C, > + 0x71, 0x2C, 0x72, 0x2C, 0x73, 0x2C, 0x74, 0x2C, > + 0x75, 0x2C, 0x75, 0x2C, 0x77, 0x2C, 0x78, 0x2C, > + 0x79, 0x2C, 0x7A, 0x2C, 0x7B, 0x2C, 0x7C, 0x2C, > + 0x7D, 0x2C, 0x7E, 0x2C, 0x7=46, 0x2C, 0x80, 0x2C, > + 0x80, 0x2C, 0x82, 0x2C, 0x82, 0x2C, 0x84, 0x2C, > + 0x84, 0x2C, 0x86, 0x2C, 0x86, 0x2C, 0x88, 0x2C, > + 0x88, 0x2C, 0x8A, 0x2C, 0x8A, 0x2C, 0x8C, 0x2C, > + 0x8C, 0x2C, 0x8E, 0x2C, 0x8E, 0x2C, 0x90, 0x2C, > + 0x90, 0x2C, 0x92, 0x2C, 0x92, 0x2C, 0x94, 0x2C, > + 0x94, 0x2C, 0x96, 0x2C, 0x96, 0x2C, 0x98, 0x2C, > + 0x98, 0x2C, 0x9A, 0x2C, 0x9A, 0x2C, 0x9C, 0x2C, > + 0x9C, 0x2C, 0x9E, 0x2C, 0x9E, 0x2C, 0xA0, 0x2C, > + 0xA0, 0x2C, 0xA2, 0x2C, 0xA2, 0x2C, 0xA4, 0x2C, > + 0xA4, 0x2C, 0xA6, 0x2C, 0xA6, 0x2C, 0xA8, 0x2C, > + 0xA8, 0x2C, 0xAA, 0x2C, 0xAA, 0x2C, 0xAC, 0x2C, > + 0xAC, 0x2C, 0xAE, 0x2C, 0xAE, 0x2C, 0xB0, 0x2C, > + 0xB0, 0x2C, 0xB2, 0x2C, 0xB2, 0x2C, 0xB4, 0x2C, > + 0xB4, 0x2C, 0xB6, 0x2C, 0xB6, 0x2C, 0xB8, 0x2C, > + 0xB8, 0x2C, 0xBA, 0x2C, 0xBA, 0x2C, 0xBC, 0x2C, > + 0xBC, 0x2C, 0xBE, 0x2C, 0xBE, 0x2C, 0xC0, 0x2C, > + 0xC0, 0x2C, 0xC2, 0x2C, 0xC2, 0x2C, 0xC4, 0x2C, > + 0xC4, 0x2C, 0xC6, 0x2C, 0xC6, 0x2C, 0xC8, 0x2C, > + 0xC8, 0x2C, 0xCA, 0x2C, 0xCA, 0x2C, 0xCC, 0x2C, > + 0xCC, 0x2C, 0xCE, 0x2C, 0xCE, 0x2C, 0xD0, 0x2C, > + 0xD0, 0x2C, 0xD2, 0x2C, 0xD2, 0x2C, 0xD4, 0x2C, > + 0xD4, 0x2C, 0xD6, 0x2C, 0xD6, 0x2C, 0xD8, 0x2C, > + 0xD8, 0x2C, 0xDA, 0x2C, 0xDA, 0x2C, 0xDC, 0x2C, > + 0xDC, 0x2C, 0xDE, 0x2C, 0xDE, 0x2C, 0xE0, 0x2C, > + 0xE0, 0x2C, 0xE2, 0x2C, 0xE2, 0x2C, 0xE4, 0x2C, > + 0xE5, 0x2C, 0xE6, 0x2C, 0xE7, 0x2C, 0xE8, 0x2C, > + 0xE9, 0x2C, 0xEA, 0x2C, 0xEB, 0x2C, 0xEC, 0x2C, > + 0xED, 0x2C, 0xEE, 0x2C, 0xE=46, 0x2C, 0x=460, 0x2C, > + 0x=461, 0x2C, 0x=462, 0x2C, 0x=463, 0x2C, 0x=464, 0x2C, > + 0x=465, 0x2C, 0x=466, 0x2C, 0x=467, 0x2C, 0x=468, 0x2C, > + 0x=469, 0x2C, 0x=46A, 0x2C, 0x=46B, 0x2C, 0x=46C, 0x2C, > + 0x=46D, 0x2C, 0x=46E, 0x2C, 0x=46=46, 0x2C, 0xA0, 0x10, > + 0xA1, 0x10, 0xA2, 0x10, 0xA3, 0x10, 0xA4, 0x10, > + 0xA5, 0x10, 0xA6, 0x10, 0xA7, 0x10, 0xA8, 0x10, > + 0xA9, 0x10, 0xAA, 0x10, 0xAB, 0x10, 0xAC, 0x10, > + 0xAD, 0x10, 0xAE, 0x10, 0xA=46, 0x10, 0xB0, 0x10, > + 0xB1, 0x10, 0xB2, 0x10, 0xB3, 0x10, 0xB4, 0x10, > + 0xB5, 0x10, 0xB6, 0x10, 0xB7, 0x10, 0xB8, 0x10, > + 0xB9, 0x10, 0xBA, 0x10, 0xBB, 0x10, 0xBC, 0x10, > + 0xBD, 0x10, 0xBE, 0x10, 0xB=46, 0x10, 0xC0, 0x10, > + 0xC1, 0x10, 0xC2, 0x10, 0xC3, 0x10, 0xC4, 0x10, > + 0xC5, 0x10, 0x=46=46, 0x=46=46, 0x1B, 0xD2, 0x21, 0x=46=46, > + 0x22, 0x=46=46, 0x23, 0x=46=46, 0x24, 0x=46=46, 0x25, 0x=46=46, > + 0x26, 0x=46=46, 0x27, 0x=46=46, 0x28, 0x=46=46, 0x29, 0x=46=46, > + 0x2A, 0x=46=46, 0x2B, 0x=46=46, 0x2C, 0x=46=46, 0x2D, 0x=46=46, > + 0x2E, 0x=46=46, 0x2=46, 0x=46=46, 0x30, 0x=46=46, 0x31, 0x=46=46, > + 0x32, 0x=46=46, 0x33, 0x=46=46, 0x34, 0x=46=46, 0x35, 0x=46=46, > + 0x36, 0x=46=46, 0x37, 0x=46=46, 0x38, 0x=46=46, 0x39, 0x=46=46, > + 0x3A, 0x=46=46, 0x5B, 0x=46=46, 0x5C, 0x=46=46, 0x5D, 0x=46=46, > + 0x5E, 0x=46=46, 0x5=46, 0x=46=46, 0x60, 0x=46=46, 0x61, 0x=46=46, > + 0x62, 0x=46=46, 0x63, 0x=46=46, 0x64, 0x=46=46, 0x65, 0x=46=46, > + 0x66, 0x=46=46, 0x67, 0x=46=46, 0x68, 0x=46=46, 0x69, 0x=46=46, > + 0x6A, 0x=46=46, 0x6B, 0x=46=46, 0x6C, 0x=46=46, 0x6D, 0x=46=46, > + 0x6E, 0x=46=46, 0x6=46, 0x=46=46, 0x70, 0x=46=46, 0x71, 0x=46=46, > + 0x72, 0x=46=46, 0x73, 0x=46=46, 0x74, 0x=46=46, 0x75, 0x=46=46, > + 0x76, 0x=46=46, 0x77, 0x=46=46, 0x78, 0x=46=46, 0x79, 0x=46=46, > + 0x7A, 0x=46=46, 0x7B, 0x=46=46, 0x7C, 0x=46=46, 0x7D, 0x=46=46, > + 0x7E, 0x=46=46, 0x7=46, 0x=46=46, 0x80, 0x=46=46, 0x81, 0x=46=46, > + 0x82, 0x=46=46, 0x83, 0x=46=46, 0x84, 0x=46=46, 0x85, 0x=46=46, > + 0x86, 0x=46=46, 0x87, 0x=46=46, 0x88, 0x=46=46, 0x89, 0x=46=46, > + 0x8A, 0x=46=46, 0x8B, 0x=46=46, 0x8C, 0x=46=46, 0x8D, 0x=46=46, > + 0x8E, 0x=46=46, 0x8=46, 0x=46=46, 0x90, 0x=46=46, 0x91, 0x=46=46, > + 0x92, 0x=46=46, 0x93, 0x=46=46, 0x94, 0x=46=46, 0x95, 0x=46=46, > + 0x96, 0x=46=46, 0x97, 0x=46=46, 0x98, 0x=46=46, 0x99, 0x=46=46, > + 0x9A, 0x=46=46, 0x9B, 0x=46=46, 0x9C, 0x=46=46, 0x9D, 0x=46=46, > + 0x9E, 0x=46=46, 0x9=46, 0x=46=46, 0xA0, 0x=46=46, 0xA1, 0x=46=46, > + 0xA2, 0x=46=46, 0xA3, 0x=46=46, 0xA4, 0x=46=46, 0xA5, 0x=46=46, > + 0xA6, 0x=46=46, 0xA7, 0x=46=46, 0xA8, 0x=46=46, 0xA9, 0x=46=46, > + 0xAA, 0x=46=46, 0xAB, 0x=46=46, 0xAC, 0x=46=46, 0xAD, 0x=46=46, > + 0xAE, 0x=46=46, 0xA=46, 0x=46=46, 0xB0, 0x=46=46, 0xB1, 0x=46=46, > + 0xB2, 0x=46=46, 0xB3, 0x=46=46, 0xB4, 0x=46=46, 0xB5, 0x=46=46, > + 0xB6, 0x=46=46, 0xB7, 0x=46=46, 0xB8, 0x=46=46, 0xB9, 0x=46=46, > + 0xBA, 0x=46=46, 0xBB, 0x=46=46, 0xBC, 0x=46=46, 0xBD, 0x=46=46, > + 0xBE, 0x=46=46, 0xB=46, 0x=46=46, 0xC0, 0x=46=46, 0xC1, 0x=46=46, > + 0xC2, 0x=46=46, 0xC3, 0x=46=46, 0xC4, 0x=46=46, 0xC5, 0x=46=46, > + 0xC6, 0x=46=46, 0xC7, 0x=46=46, 0xC8, 0x=46=46, 0xC9, 0x=46=46, > + 0xCA, 0x=46=46, 0xCB, 0x=46=46, 0xCC, 0x=46=46, 0xCD, 0x=46=46, > + 0xCE, 0x=46=46, 0xC=46, 0x=46=46, 0xD0, 0x=46=46, 0xD1, 0x=46=46, > + 0xD2, 0x=46=46, 0xD3, 0x=46=46, 0xD4, 0x=46=46, 0xD5, 0x=46=46, > + 0xD6, 0x=46=46, 0xD7, 0x=46=46, 0xD8, 0x=46=46, 0xD9, 0x=46=46, > + 0xDA, 0x=46=46, 0xDB, 0x=46=46, 0xDC, 0x=46=46, 0xDD, 0x=46=46, > + 0xDE, 0x=46=46, 0xD=46, 0x=46=46, 0xE0, 0x=46=46, 0xE1, 0x=46=46, > + 0xE2, 0x=46=46, 0xE3, 0x=46=46, 0xE4, 0x=46=46, 0xE5, 0x=46=46, > + 0xE6, 0x=46=46, 0xE7, 0x=46=46, 0xE8, 0x=46=46, 0xE9, 0x=46=46, > + 0xEA, 0x=46=46, 0xEB, 0x=46=46, 0xEC, 0x=46=46, 0xED, 0x=46=46, > + 0xEE, 0x=46=46, 0xE=46, 0x=46=46, 0x=460, 0x=46=46, 0x=461, 0x=46=46,= > + 0x=462, 0x=46=46, 0x=463, 0x=46=46, 0x=464, 0x=46=46, 0x=465, 0x=46=46= , > + 0x=466, 0x=46=46, 0x=467, 0x=46=46, 0x=468, 0x=46=46, 0x=469, 0x=46=46= , > + 0x=46A, 0x=46=46, 0x=46B, 0x=46=46, 0x=46C, 0x=46=46, 0x=46D, 0x=46=46= , > + 0x=46E, 0x=46=46, 0x=46=46, 0x=46=46 > +=7D; > + > static volatile sig=5Fatomic=5Ft got=5Fsiginfo; > static void infohandler(int); > > =40=40 -227,7 +1045,320 =40=40 static void print=5Fbpb(struct bpb *); > static int ckgeom(const char *, u=5Fint, const char *); > static void mklabel(u=5Fint8=5Ft *, const char *); > static int oklabel(const char *); > +static int exfat=5Foklabel(const u=5Fint8=5Ft *, int len); > static void setstr(u=5Fint8=5Ft *, const char *, size=5Ft); > +static void fill=5Fexfat=5Fbuffer(u=5Fint8=5Ft *, u=5Fint, const struc= t bpb *, const struct msdos=5Foptions *); > + > +static int > +u8to16char(const u=5Fchar **u8strp, u=5Flong *u8lenp, u=5Fchar **u16st= rp, u=5Flong *u16lenp) =7B > + u=5Flong more; > + unsigned temp; > + u=5Fchar c; > + > + if (*u8lenp =3D=3D 0) > + return (0); > *** 791 LINES SKIPPED *** > --68933e11_606e017d_a630 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline <= meta name=3D=22viewport=22 content=3D=22width=3Ddevice-width, initial-sca= le=3D1.0, user-scalable=3Dno=22> 3D=22=22
Hello=21

This bre= aks i386 build due to bad types conversion

--- mkfs=5Fmsdos.o ---

/opt/poudriere/j= ails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:1118:59: error: in= compatible pointer types passing 'u=5Flong *' (aka 'unsigned long *') to = parameter of type 'size=5Ft *' (aka 'unsigned int *') =5B-Werror,-Wincomp= atible-pointer-types=5D

=C2=A01118 =7C =C2=A0 =C2= =A0 =C2=A0 =C2=A0 error =3D iconv(u8to16function, =5F=5FDECONST(char**, u= 8strp), u8lenp,

=C2=A0 =C2=A0 =C2=A0 =7C=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =5E=7E=7E=7E=7E=7E

/usr/obj/opt/poudriere/jails= /150i386/usr/src/i386.i386/tmp/usr/include/iconv.h:56:27: note: passing a= rgument to parameter here

=C2=A0=C2=A0 56 =7C =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 size=5Ft * =5F=5Frestrict, cha= r ** =5F=5Frestrict,

=C2=A0 =C2=A0 =C2=A0 =7C=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =5E

/= opt/poudriere/jails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:111= 9:23: error: incompatible pointer types passing 'u=5Flong *' (aka 'unsign= ed long *') to parameter of type 'size=5Ft *' (aka 'unsigned int *') =5B-= Werror,-Wincompatible-pointer-types=5D

=C2=A0111= 9 =7C =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (char**)u16strp, u16lenp)= ;

=C2=A0 =C2=A0 =C2=A0 =7C=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =5E=7E=7E=7E=7E=7E=7E

/usr/obj/opt/poudr= iere/jails/150i386/usr/src/i386.i386/tmp/usr/include/iconv.h:57:27: note:= passing argument to parameter here

=C2=A0=C2=A0= 57 =7C =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 size=5Ft * =5F=5F= restrict);

=C2=A0 =C2=A0 =C2=A0 =7C=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =5E

/opt/poudriere/= jails/150i386/usr/src/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c:1744:8: error: fo= rmat specifies type 'unsigned long' but the argument has type 'u=5Fquad=5F= t' (aka 'unsigned long long') =5B-Werror,-Wformat=5D

=C2=A01743 =7C =C2=A0 =C2=A0 =C2=A0 =C2=A0 warnx(=22warning: =46AT type = limits file system to %lu sectors=22,

=C2=A0 =C2= =A0 =C2=A0 =7C=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =7E=7E=7E=

=C2=A0 =C2=A0 =C2=A0 =7C=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 %llu

=C2=A01744 =7C =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bpb.bpbHugeSectors);=

=C2=A0 =C2=A0 =C2=A0 =7C =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =5E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E=7E<= /span>

3 errors generated.

***= =5Bmkfs=5Fmsdos.o=5D Error code 1


--
Dima. (desktop, = kde, x11, office, ports-secteam)=40=46reeBSD team
(fluffy=40=46= reeBSD.org, https://t.me/=46luffyBSD)

<= /div>
On =D0=B2=D1=82=D0=BE=D1=80=D0=BD=D0=B8=D0=BA= , =D0=B0=D0=B2=D0=B3. 05, 2025 at 11:21 PM, Stefan E=C3=9Fer <se=40=46reeBSD.org> wrote:
The branch main has been updated by se:

URL: https://cgi= t.=46reeBSD.org/src/commit/=3Fid=3D024f676b399fc8acee7288c543d32c58132883= 3c

commit 024f676b399fc8acee7288c543d32c581328833c
Author: S= tefan E=C3=9Fer <se=40=46reeBSD.org>
AuthorDate: 2025-08-05 20:= 12:18 +0000
Commit: Stefan E=C3=9Fer <se=40=46reeBSD.org>
C= ommitDate: 2025-08-05 20:12:18 +0000

sbin/newfs=5Fmsdos: add su= pport for ex=46AT file systems

Add support for the creation of = ex=46AT file systems, if invoked as
newfs=5Fexfat.

Reviewe= d by: olce
Approved by: olce, mckusick
M=46C after: 4 weeks Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D= 48727
---
sbin/newfs=5Fmsdos/Makefile =7C 7 +
sbin/newfs=5F= msdos/mkfs=5Fmsdos.c =7C 1279 ++++++++++++++++++++++++++++++++++++++-- sbin/newfs=5Fmsdos/mkfs=5Fmsdos.h =7C 3 +-
sbin/newfs=5Fmsdos/new= fs=5Fmsdos.8 =7C 44 +-
sbin/newfs=5Fmsdos/newfs=5Fmsdos.c =7C 36 +- =
5 files changed, 1305 insertions(+), 64 deletions(-)

diff -= -git a/sbin/newfs=5Fmsdos/Makefile b/sbin/newfs=5Fmsdos/Makefile
inde= x bd5b3486b6b6..74c4c90cb41b 100644
--- a/sbin/newfs=5Fmsdos/Makefile=
+++ b/sbin/newfs=5Fmsdos/Makefile
=40=40 -5,6 +5,13 =40=40 PROG=3D= newfs=5Fmsdos
MAN=3D newfs=5Fmsdos.8
SRCS=3D newfs=5Fmsdos.c m= kfs=5Fmsdos.c

+LINKS=3D =24=7BBINDIR=7D/newfs=5Fmsdos =24=7BBIND= IR=7D/newfs=5Fexfat
+MLINKS=3D newfs=5Fmsdos.8 newfs=5Fexfat.8
+ =
+.if =24=7BMK=5FICONV=7D =3D=3D =22yes=22
+C=46LAGS+=3D-DWITH=5FI= CONV
+.endif
+
=23 XXX - this is verboten
.if =24=7BMAC= HINE=5FCPUARCH=7D =3D=3D =22arm=22
WARNS=3F=3D 3
diff --git a/sb= in/newfs=5Fmsdos/mkfs=5Fmsdos.c b/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c
i= ndex dcc2bb982efc..70ec3b8f345c 100644
--- a/sbin/newfs=5Fmsdos/mkfs=5F= msdos.c
+++ b/sbin/newfs=5Fmsdos/mkfs=5Fmsdos.c
=40=40 -1,5 +1,6 = =40=40
/*
* Copyright (c) 1998 Robert Nordier
+ * Copyright= (c) 2025 Stefan E=C3=9Fer
* All rights reserved.
*
* Redi= stribution and use in source and binary forms, with or without
=40=40= -35,6 +36,7 =40=40
=23include <sys/disklabel.h>
=23inclu= de <sys/mount.h>
=23endif
+=23include <sys/endian.h>=
=23include <sys/stat.h>
=23include <sys/sysctl.h> =
=23include <sys/time.h>
=40=40 -44,9 +46,14 =40=40
=23= include <err.h>
=23include <errno.h>
=23include <= ;fcntl.h>
+=23ifdef WITH=5FICONV
+=23include <iconv.h> <= br>+=23include <locale.h>
+=23endif
=23include <inttype= s.h>
=23include <paths.h>
=23include <signal.h> =
+=23include <stddef.h>
=23include <stdio.h>
=23= include <stdlib.h>
=23include <string.h>
=40=40 -61,= 11 +68,14 =40=40

=23define DOSMAGIC 0xaa55 /* DOS magic number = */
=23define MINBPS 512 /* minimum bytes per sector */
-=23defin= e MAXBPS 4096 /* maximum bytes per sector */
+=23define MAXBPS 4096 /= * maximum bytes per sector */
=23define MAXSPC 128 /* maximum sector= s per cluster */
+=23define MAXBPC=5FEX (1<<25) /* maximum sect= ors per cluster ex=46AT */
=23define MAXN=46T 16 /* maximum number o= f =46ATs */
+=23define MAXN=46T=5FEX 2 /* maximum number of =46ATs ex= =46AT */
=23define DE=46BLK 4096 /* default block size */
=23de= fine DE=46BLK16 2048 /* default block size =46AT16 */
+=23define DE=46= BLK=5FEX (128*1024) /* default block size ex=46AT */
=23define DE=46= RDE 512 /* default root directory entries */
=23define RES=46TE 2 /*= reserved =46AT entries */
=23define MINCLS12 1U /* minimum =46AT12 = clusters */
=40=40 -78,23 +88,25 =40=40
=23define mincls(fat) ((= fat) =3D=3D 12 =3F MINCLS12 : =5C
(fat) =3D=3D 16 =3F MINCLS16 : =5C=
MINCLS32)
-
=23define maxcls(fat) ((fat) =3D=3D 12 =3F MAX= CLS12 : =5C
(fat) =3D=3D 16 =3F MAXCLS16 : =5C
MAXCLS32)
<= br>-=23define mk1(p, x) =5C
- (p) =3D (u=5Fint8=5Ft)(x)
+=23defin= e BOOTSEC 0 /* boot sector offset */
+=23define EXTBOOTSEC 1 /* exten= ded boot sector offset */
+=23define EXTBOOTSECCNT 8 /* number of ext= ended boot sectors */
+=23define OEMPARMSEC 9 /* OEM parameter sector= offset */
+=23define RESERVEDSEC 10 /* reserved sector */
+=23de= fine BOOTCKSUMSEC 11 /* checksum sector */
+=23define BACKUPSECO=46S = 12 /* backup boot sector region offset */

-=23define mk2(p, x) =5C=
- (p)=5B0=5D =3D (u=5Fint8=5Ft)(x), =5C
- (p)=5B1=5D =3D (u=5Fin= t8=5Ft)((x) >> 010)
+=23define EX=5FDE=5FALLOCMAP 0x81 /* clust= er allocation bitmap */
+=23define EX=5FDE=5FUPCASETABLE 0x82 /* UT=46= -16 upper case translation */
+=23define EX=5FDE=5FLABEL 0x83 /* volu= me label */

-=23define mk4(p, x) =5C
- (p)=5B0=5D =3D (u=5Fi= nt8=5Ft)(x), =5C
- (p)=5B1=5D =3D (u=5Fint8=5Ft)((x) >> 010), =5C=
- (p)=5B2=5D =3D (u=5Fint8=5Ft)((x) >> 020), =5C
- (p)=5B3= =5D =3D (u=5Fint8=5Ft)((x) >> 030)
+=23define mk1(p, x) (p) =3D= (u=5Fint8=5Ft)(x)
+=23define mk2(p, x) le16enc(p, x)
+=23define = mk4(p, x) le32enc(p, x)

struct bs =7B
u=5Fint8=5Ft bsJump=5B= 3=5D; /* bootstrap entry point */
=40=40 -135,6 +147,30 =40=40 struct= bsx =7B
u=5Fint8=5Ft ex=46ileSysType=5B8=5D; /* file system type */=
=7D =5F=5Fpacked;

+struct bsexfat =7B
+ u=5Fint8=5Ft b= sJump=5B3=5D; /* bootstrap entry point */
+ u=5Fint8=5Ft bs=46ileSyst= emName=5B8=5D; /* OEM name and version =22EX=46AT =22 */
+ u=5Fint8=5F= t bsUnused=5B53=5D; /* unused DOS parameter area */
+ u=5Fint8=5Ft bs= PartitionOffset=5B8=5D; /* start of partition on device */
+ u=5Fint8= =5Ft bsVolumeLength=5B8=5D; /* number of sectors in volume */
+ u=5Fi= nt8=5Ft bs=46atOffset=5B4=5D; /* phys. sector of start of =46AT */
+ = u=5Fint8=5Ft bs=46atLength=5B4=5D; /* number of sectors per =46AT */
= + u=5Fint8=5Ft bsClusterHeapOffset=5B4=5D; /* phys. sector of cluster =23= 2 */
+ u=5Fint8=5Ft bsClusterCount=5B4=5D; /* number of clusters */ <= br>+ u=5Fint8=5Ft bsRootClust=5B4=5D; /* start cluster for root directory= */
+ u=5Fint8=5Ft bsVolSerialNumber=5B4=5D; /* volume serial number = */
+ u=5Fint8=5Ft bs=46SVers=5B2=5D; /* Ex=46at file system revision = */
+ u=5Fint8=5Ft bsVolume=46lags=5B2=5D; /* volume status, e.g. dirt= y */
+ u=5Fint8=5Ft bsBytesPerSecShift; /* log2 of bytes per sector *= /
+ u=5Fint8=5Ft bsSecPerClustShift; /* log2 of sectors per cluster *= /
+ u=5Fint8=5Ft bs=46ATs; /* number of =46ATs */
+ u=5Fint8=5Ft = bsDriveSelect; /* extended INT 13h drive number */
+ u=5Fint8=5Ft bsP= ercentInUse; /* percentage of clusters in use */
+ u=5Fint8=5Ft bsRes= erved=5B7=5D; /* reserved for future expansion */
+ u=5Fint8=5Ft bsBo= otCode=5B390=5D; /* pad so structure is 512b */
+ u=5Fint8=5Ft bsBoot= SectSig=5B2=5D; /* DOSMAGIC */
+=7D =5F=5Fpacked;
+
struct d= e =7B
u=5Fint8=5Ft deName=5B11=5D; /* name and extension */
u=5F= int8=5Ft deAttributes; /* attributes */
=40=40 -157,14 +193,57 =40=40= struct bpb =7B
u=5Fint bpbSecPerTrack; /* sectors per track */
= u=5Fint bpbHeads; /* drive heads */
u=5Fint bpbHiddenSecs; /* hidde= n sectors */
- u=5Fint bpbHugeSectors; /* big total sectors */
+ = u=5Fquad=5Ft bpbHugeSectors; /* big total sectors */
u=5Fint bpbBig=46= ATsecs; /* big sectors per =46AT */
u=5Fint bpbRootClust; /* root di= rectory start cluster */
u=5Fint bpb=46SInfo; /* file system info se= ctor */
u=5Fint bpbBackup; /* backup boot sector */
+ u=5Fint bp= bUsedBitmapClust1; /* used block bitmap cluster 1 */
+ u=5Fint bpbUse= dBitmapClust2; /* used block bitmap cluster 2 */
+ u=5Fint bpbUpcaseT= ableClust; /* upcase table cluster */
+ u=5Fint bpbClusterHeapOffset;= /* start of EX=46AT data area */
+ u=5Fint bpbBPSshift; /* bytes per= sector shift value */
+ u=5Fint bpbSPCshift; /* sectors per cluster = shift value */
+ u=5Fint bpbClusterCount; /* number of clusters */ + u=5Fint bpbUpcaseTableSectors; /* upcase table sectors */
+ u=5Fi= nt bpbUsedBitmapSectors; /* used block bitmap sectors */
=7D;
<= br>-=23define BPBGAP 0, 0, 0, 0, 0, 0
+/*
+ * Structure of an EX=46= AT allocation bitmap (cluster heap) entry.
+ */
+struct exfatdir=5F= bitmap =7B
+ uint8=5Ft type; /* entry type =3D=3D 0x81 */
+ uint8= =5Ft flags; /* secondary flags */
+=23define EX=5F=46LAG=5FBITMAP2 0x= 01 /* entry is pointing to 2nd bitmap */
+ uint8=5Ft reserved=5B18=5D= ;
+ uint8=5Ft firstcluster=5B4=5D;/* first bitmap cluster */
+ ui= nt8=5Ft datalength=5B8=5D; /* size of bitmap in bytes */
+=7D;
+ =
+/*
+ * Structure of an EX=46AT UT=46-16 upper case translation t= able entry.
+ */
+struct exfatdir=5Fupcasetable =7B
+ uint8=5F= t type; /* entry type =3D=3D 0x82 */
+ uint8=5Ft reserved1=5B3=5D; + uint8=5Ft chksum=5B4=5D; /* checksum of compressed table */
+ uin= t8=5Ft reserved2=5B12=5D;
+ uint8=5Ft firstcluster=5B4=5D; /* first b= itmap cluster */
+ uint8=5Ft datalength=5B8=5D; /* size of bitmap in = bytes */
+=7D;
+
+/*
+ * Structure of an EX=46AT volume l= abel entry.
+ */
+struct exfatdir=5Flabel =7B
+ uint8=5Ft typ= e; /* entry type =3D=3D 0x83 */
+ uint8=5Ft namelength; /* number of = UT=46-16 characters */
+ uint8=5Ft label=5B22=5D; /* up to 11 UT=46-1= 6 characters */
+ uint8=5Ft reserved=5B8=5D;
+=7D;
+
+=23= define BPBGAP 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

stati= c struct =7B
const char *name;
=40=40 -214,6 +293,745 =40=40 sta= tic const u=5Fint8=5Ft bootcode=5B=5D =3D =7B
0
=7D;

+= /*
+ * Up-case table recommended in section 7.2.5.1 of the ex=46AT =46= ile System
+ * Specification.
+ */
+static u=5Fint compr=5Fup= case=5Ftable=5Fcksum =3D 0xE619D30D;
+
+static uint8=5Ft compr=5F= upcase=5Ftable=5B=5D =3D =7B
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x= 03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x0= 8, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00,
+ 0x0C, 0x00, 0x0D, 0x00= , 0x0E, 0x00, 0x0=46, 0x00,
+ 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x1= 3, 0x00,
+ 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00,
+ 0x18= , 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00,
+ 0x1C, 0x00, 0x1D, 0x00,= 0x1E, 0x00, 0x1=46, 0x00,
+ 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23= , 0x00,
+ 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00,
+ 0x28,= 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00,
+ 0x2C, 0x00, 0x2D, 0x00, = 0x2E, 0x00, 0x2=46, 0x00,
+ 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33,= 0x00,
+ 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00,
+ 0x38, = 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00,
+ 0x3C, 0x00, 0x3D, 0x00, 0= x3E, 0x00, 0x3=46, 0x00,
+ 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, = 0x00,
+ 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00,
+ 0x48, 0= x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00,
+ 0x4C, 0x00, 0x4D, 0x00, 0x= 4E, 0x00, 0x4=46, 0x00,
+ 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0= x00,
+ 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00,
+ 0x58, 0x= 00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00,
+ 0x5C, 0x00, 0x5D, 0x00, 0x5= E, 0x00, 0x5=46, 0x00,
+ 0x60, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x= 00,
+ 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00,
+ 0x48, 0x0= 0, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00,
+ 0x4C, 0x00, 0x4D, 0x00, 0x4E= , 0x00, 0x4=46, 0x00,
+ 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x0= 0,
+ 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00,
+ 0x58, 0x00= , 0x59, 0x00, 0x5A, 0x00, 0x7B, 0x00,
+ 0x7C, 0x00, 0x7D, 0x00, 0x7E,= 0x00, 0x7=46, 0x00,
+ 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00= ,
+ 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00,
+ 0x88, 0x00,= 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00,
+ 0x8C, 0x00, 0x8D, 0x00, 0x8E, = 0x00, 0x8=46, 0x00,
+ 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00,=
+ 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00,
+ 0x98, 0x00, = 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00,
+ 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0= x00, 0x9=46, 0x00,
+ 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, =
+ 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00,
+ 0xA8, 0x00, 0= xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00,
+ 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x= 00, 0xA=46, 0x00,
+ 0xB0, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, <= br>+ 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00,
+ 0xB8, 0x00, 0x= B9, 0x00, 0xBA, 0x00, 0xBB, 0x00,
+ 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x0= 0, 0xB=46, 0x00,
+ 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00,
+ 0xC8, 0x00, 0xC= 9, 0x00, 0xCA, 0x00, 0xCB, 0x00,
+ 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00= , 0xC=46, 0x00,
+ 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, + 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00,
+ 0xD8, 0x00, 0xD9= , 0x00, 0xDA, 0x00, 0xDB, 0x00,
+ 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00,= 0xD=46, 0x00,
+ 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00,
= + 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00,
+ 0xC8, 0x00, 0xC9,= 0x00, 0xCA, 0x00, 0xCB, 0x00,
+ 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, = 0xC=46, 0x00,
+ 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00,
+= 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0x=467, 0x00,
+ 0xD8, 0x00, 0xD9= , 0x00, 0xDA, 0x00, 0xDB, 0x00,
+ 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00,= 0x78, 0x01,
+ 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01,
+ = 0x04, 0x01, 0x04, 0x01, 0x06, 0x01, 0x06, 0x01,
+ 0x08, 0x01, 0x08, 0= x01, 0x0A, 0x01, 0x0A, 0x01,
+ 0x0C, 0x01, 0x0C, 0x01, 0x0E, 0x01, 0x= 0E, 0x01,
+ 0x10, 0x01, 0x10, 0x01, 0x12, 0x01, 0x12, 0x01,
+ 0x1= 4, 0x01, 0x14, 0x01, 0x16, 0x01, 0x16, 0x01,
+ 0x18, 0x01, 0x18, 0x01= , 0x1A, 0x01, 0x1A, 0x01,
+ 0x1C, 0x01, 0x1C, 0x01, 0x1E, 0x01, 0x1E,= 0x01,
+ 0x20, 0x01, 0x20, 0x01, 0x22, 0x01, 0x22, 0x01,
+ 0x24, = 0x01, 0x24, 0x01, 0x26, 0x01, 0x26, 0x01,
+ 0x28, 0x01, 0x28, 0x01, 0= x2A, 0x01, 0x2A, 0x01,
+ 0x2C, 0x01, 0x2C, 0x01, 0x2E, 0x01, 0x2E, 0x= 01,
+ 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01,
+ 0x34, 0x0= 1, 0x34, 0x01, 0x36, 0x01, 0x36, 0x01,
+ 0x38, 0x01, 0x39, 0x01, 0x39= , 0x01, 0x3B, 0x01,
+ 0x3B, 0x01, 0x3D, 0x01, 0x3D, 0x01, 0x3=46, 0x0= 1,
+ 0x3=46, 0x01, 0x41, 0x01, 0x41, 0x01, 0x43, 0x01,
+ 0x43, 0x= 01, 0x45, 0x01, 0x45, 0x01, 0x47, 0x01,
+ 0x47, 0x01, 0x49, 0x01, 0x4= A, 0x01, 0x4A, 0x01,
+ 0x4C, 0x01, 0x4C, 0x01, 0x4E, 0x01, 0x4E, 0x01= ,
+ 0x50, 0x01, 0x50, 0x01, 0x52, 0x01, 0x52, 0x01,
+ 0x54, 0x01,= 0x54, 0x01, 0x56, 0x01, 0x56, 0x01,
+ 0x58, 0x01, 0x58, 0x01, 0x5A, = 0x01, 0x5A, 0x01,
+ 0x5C, 0x01, 0x5C, 0x01, 0x5E, 0x01, 0x5E, 0x01, <= br>+ 0x60, 0x01, 0x60, 0x01, 0x62, 0x01, 0x62, 0x01,
+ 0x64, 0x01, 0x= 64, 0x01, 0x66, 0x01, 0x66, 0x01,
+ 0x68, 0x01, 0x68, 0x01, 0x6A, 0x0= 1, 0x6A, 0x01,
+ 0x6C, 0x01, 0x6C, 0x01, 0x6E, 0x01, 0x6E, 0x01,
= + 0x70, 0x01, 0x70, 0x01, 0x72, 0x01, 0x72, 0x01,
+ 0x74, 0x01, 0x74,= 0x01, 0x76, 0x01, 0x76, 0x01,
+ 0x78, 0x01, 0x79, 0x01, 0x79, 0x01, = 0x7B, 0x01,
+ 0x7B, 0x01, 0x7D, 0x01, 0x7D, 0x01, 0x7=46, 0x01,
+= 0x43, 0x02, 0x81, 0x01, 0x82, 0x01, 0x82, 0x01,
+ 0x84, 0x01, 0x84, = 0x01, 0x86, 0x01, 0x87, 0x01,
+ 0x87, 0x01, 0x89, 0x01, 0x8A, 0x01, 0= x8B, 0x01,
+ 0x8B, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8=46, 0x01,
+ = 0x90, 0x01, 0x91, 0x01, 0x91, 0x01, 0x93, 0x01,
+ 0x94, 0x01, 0x=466,= 0x01, 0x96, 0x01, 0x97, 0x01,
+ 0x98, 0x01, 0x98, 0x01, 0x3D, 0x02, = 0x9B, 0x01,
+ 0x9C, 0x01, 0x9D, 0x01, 0x20, 0x02, 0x9=46, 0x01,
+= 0xA0, 0x01, 0xA0, 0x01, 0xA2, 0x01, 0xA2, 0x01,
+ 0xA4, 0x01, 0xA4, = 0x01, 0xA6, 0x01, 0xA7, 0x01,
+ 0xA7, 0x01, 0xA9, 0x01, 0xAA, 0x01, 0= xAB, 0x01,
+ 0xAC, 0x01, 0xAC, 0x01, 0xAE, 0x01, 0xA=46, 0x01,
+ = 0xA=46, 0x01, 0xB1, 0x01, 0xB2, 0x01, 0xB3, 0x01,
+ 0xB3, 0x01, 0xB5,= 0x01, 0xB5, 0x01, 0xB7, 0x01,
+ 0xB8, 0x01, 0xB8, 0x01, 0xBA, 0x01, = 0xBB, 0x01,
+ 0xBC, 0x01, 0xBC, 0x01, 0xBE, 0x01, 0x=467, 0x01,
+= 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01,
+ 0xC4, 0x01, 0xC5, = 0x01, 0xC4, 0x01, 0xC7, 0x01,
+ 0xC8, 0x01, 0xC7, 0x01, 0xCA, 0x01, 0= xCB, 0x01,
+ 0xCA, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xC=46, 0x01,
+ = 0xC=46, 0x01, 0xD1, 0x01, 0xD1, 0x01, 0xD3, 0x01,
+ 0xD3, 0x01, 0xD5,= 0x01, 0xD5, 0x01, 0xD7, 0x01,
+ 0xD7, 0x01, 0xD9, 0x01, 0xD9, 0x01, = 0xDB, 0x01,
+ 0xDB, 0x01, 0x8E, 0x01, 0xDE, 0x01, 0xDE, 0x01,
+ 0= xE0, 0x01, 0xE0, 0x01, 0xE2, 0x01, 0xE2, 0x01,
+ 0xE4, 0x01, 0xE4, 0x= 01, 0xE6, 0x01, 0xE6, 0x01,
+ 0xE8, 0x01, 0xE8, 0x01, 0xEA, 0x01, 0xE= A, 0x01,
+ 0xEC, 0x01, 0xEC, 0x01, 0xEE, 0x01, 0xEE, 0x01,
+ 0x=46= 0, 0x01, 0x=461, 0x01, 0x=462, 0x01, 0x=461, 0x01,
+ 0x=464, 0x01, 0x= =464, 0x01, 0x=466, 0x01, 0x=467, 0x01,
+ 0x=468, 0x01, 0x=468, 0x01,= 0x=46A, 0x01, 0x=46A, 0x01,
+ 0x=46C, 0x01, 0x=46C, 0x01, 0x=46E, 0x= 01, 0x=46E, 0x01,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, <= br>+ 0x04, 0x02, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02,
+ 0x08, 0x02, 0x= 08, 0x02, 0x0A, 0x02, 0x0A, 0x02,
+ 0x0C, 0x02, 0x0C, 0x02, 0x0E, 0x0= 2, 0x0E, 0x02,
+ 0x10, 0x02, 0x10, 0x02, 0x12, 0x02, 0x12, 0x02,
= + 0x14, 0x02, 0x14, 0x02, 0x16, 0x02, 0x16, 0x02,
+ 0x18, 0x02, 0x18,= 0x02, 0x1A, 0x02, 0x1A, 0x02,
+ 0x1C, 0x02, 0x1C, 0x02, 0x1E, 0x02, = 0x1E, 0x02,
+ 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x22, 0x02,
+ 0= x24, 0x02, 0x24, 0x02, 0x26, 0x02, 0x26, 0x02,
+ 0x28, 0x02, 0x28, 0x= 02, 0x2A, 0x02, 0x2A, 0x02,
+ 0x2C, 0x02, 0x2C, 0x02, 0x2E, 0x02, 0x2= E, 0x02,
+ 0x30, 0x02, 0x30, 0x02, 0x32, 0x02, 0x32, 0x02,
+ 0x34= , 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02,
+ 0x38, 0x02, 0x39, 0x02,= 0x65, 0x2C, 0x3B, 0x02,
+ 0x3B, 0x02, 0x3D, 0x02, 0x66, 0x2C, 0x3=46= , 0x02,
+ 0x40, 0x02, 0x41, 0x02, 0x41, 0x02, 0x43, 0x02,
+ 0x44,= 0x02, 0x45, 0x02, 0x46, 0x02, 0x46, 0x02,
+ 0x48, 0x02, 0x48, 0x02, = 0x4A, 0x02, 0x4A, 0x02,
+ 0x4C, 0x02, 0x4C, 0x02, 0x4E, 0x02, 0x4E, 0= x02,
+ 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x81, 0x01,
+ 0x86, 0x= 01, 0x55, 0x02, 0x89, 0x01, 0x8A, 0x01,
+ 0x58, 0x02, 0x8=46, 0x01, 0= x5A, 0x02, 0x90, 0x01,
+ 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5=46, = 0x02,
+ 0x93, 0x01, 0x61, 0x02, 0x62, 0x02, 0x94, 0x01,
+ 0x64, 0= x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02,
+ 0x97, 0x01, 0x96, 0x01, 0x= 6A, 0x02, 0x62, 0x2C,
+ 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x9C, 0x0= 1,
+ 0x70, 0x02, 0x71, 0x02, 0x9D, 0x01, 0x73, 0x02,
+ 0x74, 0x02= , 0x9=46, 0x01, 0x76, 0x02, 0x77, 0x02,
+ 0x78, 0x02, 0x79, 0x02, 0x7= A, 0x02, 0x7B, 0x02,
+ 0x7C, 0x02, 0x64, 0x2C, 0x7E, 0x02, 0x7=46, 0x= 02,
+ 0xA6, 0x01, 0x81, 0x02, 0x82, 0x02, 0xA9, 0x01,
+ 0x84, 0x0= 2, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02,
+ 0xAE, 0x01, 0x44, 0x02, 0xB1= , 0x01, 0xB2, 0x01,
+ 0x45, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8=46, 0x0= 2,
+ 0x90, 0x02, 0x91, 0x02, 0xB7, 0x01, 0x93, 0x02,
+ 0x94, 0x02= , 0x95, 0x02, 0x96, 0x02, 0x97, 0x02,
+ 0x98, 0x02, 0x99, 0x02, 0x9A,= 0x02, 0x9B, 0x02,
+ 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9=46, 0x02= ,
+ 0xA0, 0x02, 0xA1, 0x02, 0xA2, 0x02, 0xA3, 0x02,
+ 0xA4, 0x02,= 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02,
+ 0xA8, 0x02, 0xA9, 0x02, 0xAA, = 0x02, 0xAB, 0x02,
+ 0xAC, 0x02, 0xAD, 0x02, 0xAE, 0x02, 0xA=46, 0x02,=
+ 0xB0, 0x02, 0xB1, 0x02, 0xB2, 0x02, 0xB3, 0x02,
+ 0xB4, 0x02, = 0xB5, 0x02, 0xB6, 0x02, 0xB7, 0x02,
+ 0xB8, 0x02, 0xB9, 0x02, 0xBA, 0= x02, 0xBB, 0x02,
+ 0xBC, 0x02, 0xBD, 0x02, 0xBE, 0x02, 0xB=46, 0x02, =
+ 0xC0, 0x02, 0xC1, 0x02, 0xC2, 0x02, 0xC3, 0x02,
+ 0xC4, 0x02, 0= xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02,
+ 0xC8, 0x02, 0xC9, 0x02, 0xCA, 0x= 02, 0xCB, 0x02,
+ 0xCC, 0x02, 0xCD, 0x02, 0xCE, 0x02, 0xC=46, 0x02, <= br>+ 0xD0, 0x02, 0xD1, 0x02, 0xD2, 0x02, 0xD3, 0x02,
+ 0xD4, 0x02, 0x= D5, 0x02, 0xD6, 0x02, 0xD7, 0x02,
+ 0xD8, 0x02, 0xD9, 0x02, 0xDA, 0x0= 2, 0xDB, 0x02,
+ 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x02, 0xD=46, 0x02, + 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02,
+ 0xE4, 0x02, 0xE= 5, 0x02, 0xE6, 0x02, 0xE7, 0x02,
+ 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02= , 0xEB, 0x02,
+ 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xE=46, 0x02, + 0x=460, 0x02, 0x=461, 0x02, 0x=462, 0x02, 0x=463, 0x02,
+ 0x=464, = 0x02, 0x=465, 0x02, 0x=466, 0x02, 0x=467, 0x02,
+ 0x=468, 0x02, 0x=46= 9, 0x02, 0x=46A, 0x02, 0x=46B, 0x02,
+ 0x=46C, 0x02, 0x=46D, 0x02, 0x= =46E, 0x02, 0x=46=46, 0x02,
+ 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x0= 3, 0x03,
+ 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03,
+ 0x08= , 0x03, 0x09, 0x03, 0x0A, 0x03, 0x0B, 0x03,
+ 0x0C, 0x03, 0x0D, 0x03,= 0x0E, 0x03, 0x0=46, 0x03,
+ 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13= , 0x03,
+ 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, 0x03,
+ 0x18,= 0x03, 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03,
+ 0x1C, 0x03, 0x1D, 0x03, = 0x1E, 0x03, 0x1=46, 0x03,
+ 0x20, 0x03, 0x21, 0x03, 0x22, 0x03, 0x23,= 0x03,
+ 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03,
+ 0x28, = 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03,
+ 0x2C, 0x03, 0x2D, 0x03, 0= x2E, 0x03, 0x2=46, 0x03,
+ 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x33, = 0x03,
+ 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03,
+ 0x38, 0= x03, 0x39, 0x03, 0x3A, 0x03, 0x3B, 0x03,
+ 0x3C, 0x03, 0x3D, 0x03, 0x= 3E, 0x03, 0x3=46, 0x03,
+ 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0= x03,
+ 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03,
+ 0x48, 0x= 03, 0x49, 0x03, 0x4A, 0x03, 0x4B, 0x03,
+ 0x4C, 0x03, 0x4D, 0x03, 0x4= E, 0x03, 0x4=46, 0x03,
+ 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x= 03,
+ 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03,
+ 0x58, 0x0= 3, 0x59, 0x03, 0x5A, 0x03, 0x5B, 0x03,
+ 0x5C, 0x03, 0x5D, 0x03, 0x5E= , 0x03, 0x5=46, 0x03,
+ 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x0= 3,
+ 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03,
+ 0x68, 0x03= , 0x69, 0x03, 0x6A, 0x03, 0x6B, 0x03,
+ 0x6C, 0x03, 0x6D, 0x03, 0x6E,= 0x03, 0x6=46, 0x03,
+ 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03= ,
+ 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03,
+ 0x78, 0x03,= 0x79, 0x03, 0x7A, 0x03, 0x=46D, 0x03,
+ 0x=46E, 0x03, 0x=46=46, 0x03= , 0x7E, 0x03, 0x7=46, 0x03,
+ 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x8= 3, 0x03,
+ 0x84, 0x03, 0x85, 0x03, 0x86, 0x03, 0x87, 0x03,
+ 0x88= , 0x03, 0x89, 0x03, 0x8A, 0x03, 0x8B, 0x03,
+ 0x8C, 0x03, 0x8D, 0x03,= 0x8E, 0x03, 0x8=46, 0x03,
+ 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93= , 0x03,
+ 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03,
+ 0x98,= 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03,
+ 0x9C, 0x03, 0x9D, 0x03, = 0x9E, 0x03, 0x9=46, 0x03,
+ 0xA0, 0x03, 0xA1, 0x03, 0xA2, 0x03, 0xA3,= 0x03,
+ 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03,
+ 0xA8, = 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03,
+ 0x86, 0x03, 0x88, 0x03, 0= x89, 0x03, 0x8A, 0x03,
+ 0xB0, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x= 03,
+ 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03,
+ 0x98, 0x0= 3, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03,
+ 0x9C, 0x03, 0x9D, 0x03, 0x9E= , 0x03, 0x9=46, 0x03,
+ 0xA0, 0x03, 0xA1, 0x03, 0xA3, 0x03, 0xA3, 0x0= 3,
+ 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03,
+ 0xA8, 0x03= , 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03,
+ 0x8C, 0x03, 0x8E, 0x03, 0x8=46= , 0x03, 0xC=46, 0x03,
+ 0xD0, 0x03, 0xD1, 0x03, 0xD2, 0x03, 0xD3, 0x0= 3,
+ 0xD4, 0x03, 0xD5, 0x03, 0xD6, 0x03, 0xD7, 0x03,
+ 0xD8, 0x03= , 0xD8, 0x03, 0xDA, 0x03, 0xDA, 0x03,
+ 0xDC, 0x03, 0xDC, 0x03, 0xDE,= 0x03, 0xDE, 0x03,
+ 0xE0, 0x03, 0xE0, 0x03, 0xE2, 0x03, 0xE2, 0x03, =
+ 0xE4, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE6, 0x03,
+ 0xE8, 0x03, 0= xE8, 0x03, 0xEA, 0x03, 0xEA, 0x03,
+ 0xEC, 0x03, 0xEC, 0x03, 0xEE, 0x= 03, 0xEE, 0x03,
+ 0x=460, 0x03, 0x=461, 0x03, 0x=469, 0x03, 0x=463, 0= x03,
+ 0x=464, 0x03, 0x=465, 0x03, 0x=466, 0x03, 0x=467, 0x03,
+ = 0x=467, 0x03, 0x=469, 0x03, 0x=46A, 0x03, 0x=46A, 0x03,
+ 0x=46C, 0x0= 3, 0x=46D, 0x03, 0x=46E, 0x03, 0x=46=46, 0x03,
+ 0x00, 0x04, 0x01, 0x= 04, 0x02, 0x04, 0x03, 0x04,
+ 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x0= 7, 0x04,
+ 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04,
+ 0x0C= , 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0=46, 0x04,
+ 0x10, 0x04, 0x11, 0x0= 4, 0x12, 0x04, 0x13, 0x04,
+ 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17= , 0x04,
+ 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04,
+ 0x1C,= 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1=46, 0x04,
+ 0x20, 0x04, 0x21, 0x04= , 0x22, 0x04, 0x23, 0x04,
+ 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27,= 0x04,
+ 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04,
+ 0x2C, = 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2=46, 0x04,
+ 0x10, 0x04, 0x11, 0x04,= 0x12, 0x04, 0x13, 0x04,
+ 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, = 0x04,
+ 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04,
+ 0x1C, 0= x04, 0x1D, 0x04, 0x1E, 0x04, 0x1=46, 0x04,
+ 0x20, 0x04, 0x21, 0x04, = 0x22, 0x04, 0x23, 0x04,
+ 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0= x04,
+ 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04,
+ 0x2C, 0x= 04, 0x2D, 0x04, 0x2E, 0x04, 0x2=46, 0x04,
+ 0x00, 0x04, 0x01, 0x04, 0= x02, 0x04, 0x03, 0x04,
+ 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x= 04,
+ 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04,
+ 0x0C, 0x0= 4, 0x0D, 0x04, 0x0E, 0x04, 0x0=46, 0x04,
+ 0x60, 0x04, 0x60, 0x04, 0x= 62, 0x04, 0x62, 0x04,
+ 0x64, 0x04, 0x64, 0x04, 0x66, 0x04, 0x66, 0x0= 4,
+ 0x68, 0x04, 0x68, 0x04, 0x6A, 0x04, 0x6A, 0x04,
+ 0x6C, 0x04= , 0x6C, 0x04, 0x6E, 0x04, 0x6E, 0x04,
+ 0x70, 0x04, 0x70, 0x04, 0x72,= 0x04, 0x72, 0x04,
+ 0x74, 0x04, 0x74, 0x04, 0x76, 0x04, 0x76, 0x04, =
+ 0x78, 0x04, 0x78, 0x04, 0x7A, 0x04, 0x7A, 0x04,
+ 0x7C, 0x04, 0= x7C, 0x04, 0x7E, 0x04, 0x7E, 0x04,
+ 0x80, 0x04, 0x80, 0x04, 0x82, 0x= 04, 0x83, 0x04,
+ 0x84, 0x04, 0x85, 0x04, 0x86, 0x04, 0x87, 0x04, + 0x88, 0x04, 0x89, 0x04, 0x8A, 0x04, 0x8A, 0x04,
+ 0x8C, 0x04, 0x8C= , 0x04, 0x8E, 0x04, 0x8E, 0x04,
+ 0x90, 0x04, 0x90, 0x04, 0x92, 0x04,= 0x92, 0x04,
+ 0x94, 0x04, 0x94, 0x04, 0x96, 0x04, 0x96, 0x04,
+ = 0x98, 0x04, 0x98, 0x04, 0x9A, 0x04, 0x9A, 0x04,
+ 0x9C, 0x04, 0x9C, 0= x04, 0x9E, 0x04, 0x9E, 0x04,
+ 0xA0, 0x04, 0xA0, 0x04, 0xA2, 0x04, 0x= A2, 0x04,
+ 0xA4, 0x04, 0xA4, 0x04, 0xA6, 0x04, 0xA6, 0x04,
+ 0xA= 8, 0x04, 0xA8, 0x04, 0xAA, 0x04, 0xAA, 0x04,
+ 0xAC, 0x04, 0xAC, 0x04= , 0xAE, 0x04, 0xAE, 0x04,
+ 0xB0, 0x04, 0xB0, 0x04, 0xB2, 0x04, 0xB2,= 0x04,
+ 0xB4, 0x04, 0xB4, 0x04, 0xB6, 0x04, 0xB6, 0x04,
+ 0xB8, = 0x04, 0xB8, 0x04, 0xBA, 0x04, 0xBA, 0x04,
+ 0xBC, 0x04, 0xBC, 0x04, 0= xBE, 0x04, 0xBE, 0x04,
+ 0xC0, 0x04, 0xC1, 0x04, 0xC1, 0x04, 0xC3, 0x= 04,
+ 0xC3, 0x04, 0xC5, 0x04, 0xC5, 0x04, 0xC7, 0x04,
+ 0xC7, 0x0= 4, 0xC9, 0x04, 0xC9, 0x04, 0xCB, 0x04,
+ 0xCB, 0x04, 0xCD, 0x04, 0xCD= , 0x04, 0xC0, 0x04,
+ 0xD0, 0x04, 0xD0, 0x04, 0xD2, 0x04, 0xD2, 0x04,=
+ 0xD4, 0x04, 0xD4, 0x04, 0xD6, 0x04, 0xD6, 0x04,
+ 0xD8, 0x04, = 0xD8, 0x04, 0xDA, 0x04, 0xDA, 0x04,
+ 0xDC, 0x04, 0xDC, 0x04, 0xDE, 0= x04, 0xDE, 0x04,
+ 0xE0, 0x04, 0xE0, 0x04, 0xE2, 0x04, 0xE2, 0x04, + 0xE4, 0x04, 0xE4, 0x04, 0xE6, 0x04, 0xE6, 0x04,
+ 0xE8, 0x04, 0xE= 8, 0x04, 0xEA, 0x04, 0xEA, 0x04,
+ 0xEC, 0x04, 0xEC, 0x04, 0xEE, 0x04= , 0xEE, 0x04,
+ 0x=460, 0x04, 0x=460, 0x04, 0x=462, 0x04, 0x=462, 0x0= 4,
+ 0x=464, 0x04, 0x=464, 0x04, 0x=466, 0x04, 0x=466, 0x04,
+ 0x= =468, 0x04, 0x=468, 0x04, 0x=46A, 0x04, 0x=46A, 0x04,
+ 0x=46C, 0x04,= 0x=46C, 0x04, 0x=46E, 0x04, 0x=46E, 0x04,
+ 0x00, 0x05, 0x00, 0x05, = 0x02, 0x05, 0x02, 0x05,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06, 0= x05,
+ 0x08, 0x05, 0x08, 0x05, 0x0A, 0x05, 0x0A, 0x05,
+ 0x0C, 0x= 05, 0x0C, 0x05, 0x0E, 0x05, 0x0E, 0x05,
+ 0x10, 0x05, 0x10, 0x05, 0x1= 2, 0x05, 0x12, 0x05,
+ 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, 0x05= ,
+ 0x18, 0x05, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05,
+ 0x1C, 0x05,= 0x1D, 0x05, 0x1E, 0x05, 0x1=46, 0x05,
+ 0x20, 0x05, 0x21, 0x05, 0x22= , 0x05, 0x23, 0x05,
+ 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0x27, 0x05,=
+ 0x28, 0x05, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x05,
+ 0x2C, 0x05, = 0x2D, 0x05, 0x2E, 0x05, 0x2=46, 0x05,
+ 0x30, 0x05, 0x31, 0x05, 0x32,= 0x05, 0x33, 0x05,
+ 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, =
+ 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05,
+ 0x3C, 0x05, 0= x3D, 0x05, 0x3E, 0x05, 0x3=46, 0x05,
+ 0x40, 0x05, 0x41, 0x05, 0x42, = 0x05, 0x43, 0x05,
+ 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, <= br>+ 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05,
+ 0x4C, 0x05, 0x= 4D, 0x05, 0x4E, 0x05, 0x4=46, 0x05,
+ 0x50, 0x05, 0x51, 0x05, 0x52, 0= x05, 0x53, 0x05,
+ 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, 0x05, + 0x58, 0x05, 0x59, 0x05, 0x5A, 0x05, 0x5B, 0x05,
+ 0x5C, 0x05, 0x5= D, 0x05, 0x5E, 0x05, 0x5=46, 0x05,
+ 0x60, 0x05, 0x31, 0x05, 0x32, 0x= 05, 0x33, 0x05,
+ 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, + 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05,
+ 0x3C, 0x05, 0x3D= , 0x05, 0x3E, 0x05, 0x3=46, 0x05,
+ 0x40, 0x05, 0x41, 0x05, 0x42, 0x0= 5, 0x43, 0x05,
+ 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05,
= + 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05,
+ 0x4C, 0x05, 0x4D,= 0x05, 0x4E, 0x05, 0x4=46, 0x05,
+ 0x50, 0x05, 0x51, 0x05, 0x52, 0x05= , 0x53, 0x05,
+ 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x=46=46, 0x=46=46= ,
+ 0x=466, 0x17, 0x63, 0x2C, 0x7E, 0x1D, 0x7=46, 0x1D,
+ 0x80, 0= x1D, 0x81, 0x1D, 0x82, 0x1D, 0x83, 0x1D,
+ 0x84, 0x1D, 0x85, 0x1D, 0x= 86, 0x1D, 0x87, 0x1D,
+ 0x88, 0x1D, 0x89, 0x1D, 0x8A, 0x1D, 0x8B, 0x1= D,
+ 0x8C, 0x1D, 0x8D, 0x1D, 0x8E, 0x1D, 0x8=46, 0x1D,
+ 0x90, 0x= 1D, 0x91, 0x1D, 0x92, 0x1D, 0x93, 0x1D,
+ 0x94, 0x1D, 0x95, 0x1D, 0x9= 6, 0x1D, 0x97, 0x1D,
+ 0x98, 0x1D, 0x99, 0x1D, 0x9A, 0x1D, 0x9B, 0x1D= ,
+ 0x9C, 0x1D, 0x9D, 0x1D, 0x9E, 0x1D, 0x9=46, 0x1D,
+ 0xA0, 0x1= D, 0xA1, 0x1D, 0xA2, 0x1D, 0xA3, 0x1D,
+ 0xA4, 0x1D, 0xA5, 0x1D, 0xA6= , 0x1D, 0xA7, 0x1D,
+ 0xA8, 0x1D, 0xA9, 0x1D, 0xAA, 0x1D, 0xAB, 0x1D,=
+ 0xAC, 0x1D, 0xAD, 0x1D, 0xAE, 0x1D, 0xA=46, 0x1D,
+ 0xB0, 0x1D= , 0xB1, 0x1D, 0xB2, 0x1D, 0xB3, 0x1D,
+ 0xB4, 0x1D, 0xB5, 0x1D, 0xB6,= 0x1D, 0xB7, 0x1D,
+ 0xB8, 0x1D, 0xB9, 0x1D, 0xBA, 0x1D, 0xBB, 0x1D, =
+ 0xBC, 0x1D, 0xBD, 0x1D, 0xBE, 0x1D, 0xB=46, 0x1D,
+ 0xC0, 0x1D,= 0xC1, 0x1D, 0xC2, 0x1D, 0xC3, 0x1D,
+ 0xC4, 0x1D, 0xC5, 0x1D, 0xC6, = 0x1D, 0xC7, 0x1D,
+ 0xC8, 0x1D, 0xC9, 0x1D, 0xCA, 0x1D, 0xCB, 0x1D, <= br>+ 0xCC, 0x1D, 0xCD, 0x1D, 0xCE, 0x1D, 0xC=46, 0x1D,
+ 0xD0, 0x1D, = 0xD1, 0x1D, 0xD2, 0x1D, 0xD3, 0x1D,
+ 0xD4, 0x1D, 0xD5, 0x1D, 0xD6, 0= x1D, 0xD7, 0x1D,
+ 0xD8, 0x1D, 0xD9, 0x1D, 0xDA, 0x1D, 0xDB, 0x1D, + 0xDC, 0x1D, 0xDD, 0x1D, 0xDE, 0x1D, 0xD=46, 0x1D,
+ 0xE0, 0x1D, 0= xE1, 0x1D, 0xE2, 0x1D, 0xE3, 0x1D,
+ 0xE4, 0x1D, 0xE5, 0x1D, 0xE6, 0x= 1D, 0xE7, 0x1D,
+ 0xE8, 0x1D, 0xE9, 0x1D, 0xEA, 0x1D, 0xEB, 0x1D, + 0xEC, 0x1D, 0xED, 0x1D, 0xEE, 0x1D, 0xE=46, 0x1D,
+ 0x=460, 0x1D, = 0x=461, 0x1D, 0x=462, 0x1D, 0x=463, 0x1D,
+ 0x=464, 0x1D, 0x=465, 0x1= D, 0x=466, 0x1D, 0x=467, 0x1D,
+ 0x=468, 0x1D, 0x=469, 0x1D, 0x=46A, = 0x1D, 0x=46B, 0x1D,
+ 0x=46C, 0x1D, 0x=46D, 0x1D, 0x=46E, 0x1D, 0x=46= =46, 0x1D,
+ 0x00, 0x1E, 0x00, 0x1E, 0x02, 0x1E, 0x02, 0x1E,
+ 0x= 04, 0x1E, 0x04, 0x1E, 0x06, 0x1E, 0x06, 0x1E,
+ 0x08, 0x1E, 0x08, 0x1= E, 0x0A, 0x1E, 0x0A, 0x1E,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0E, 0x1E, 0x0E= , 0x1E,
+ 0x10, 0x1E, 0x10, 0x1E, 0x12, 0x1E, 0x12, 0x1E,
+ 0x14,= 0x1E, 0x14, 0x1E, 0x16, 0x1E, 0x16, 0x1E,
+ 0x18, 0x1E, 0x18, 0x1E, = 0x1A, 0x1E, 0x1A, 0x1E,
+ 0x1C, 0x1E, 0x1C, 0x1E, 0x1E, 0x1E, 0x1E, 0= x1E,
+ 0x20, 0x1E, 0x20, 0x1E, 0x22, 0x1E, 0x22, 0x1E,
+ 0x24, 0x= 1E, 0x24, 0x1E, 0x26, 0x1E, 0x26, 0x1E,
+ 0x28, 0x1E, 0x28, 0x1E, 0x2= A, 0x1E, 0x2A, 0x1E,
+ 0x2C, 0x1E, 0x2C, 0x1E, 0x2E, 0x1E, 0x2E, 0x1E= ,
+ 0x30, 0x1E, 0x30, 0x1E, 0x32, 0x1E, 0x32, 0x1E,
+ 0x34, 0x1E,= 0x34, 0x1E, 0x36, 0x1E, 0x36, 0x1E,
+ 0x38, 0x1E, 0x38, 0x1E, 0x3A, = 0x1E, 0x3A, 0x1E,
+ 0x3C, 0x1E, 0x3C, 0x1E, 0x3E, 0x1E, 0x3E, 0x1E, <= br>+ 0x40, 0x1E, 0x40, 0x1E, 0x42, 0x1E, 0x42, 0x1E,
+ 0x44, 0x1E, 0x= 44, 0x1E, 0x46, 0x1E, 0x46, 0x1E,
+ 0x48, 0x1E, 0x48, 0x1E, 0x4A, 0x1= E, 0x4A, 0x1E,
+ 0x4C, 0x1E, 0x4C, 0x1E, 0x4E, 0x1E, 0x4E, 0x1E,
= + 0x50, 0x1E, 0x50, 0x1E, 0x52, 0x1E, 0x52, 0x1E,
+ 0x54, 0x1E, 0x54,= 0x1E, 0x56, 0x1E, 0x56, 0x1E,
+ 0x58, 0x1E, 0x58, 0x1E, 0x5A, 0x1E, = 0x5A, 0x1E,
+ 0x5C, 0x1E, 0x5C, 0x1E, 0x5E, 0x1E, 0x5E, 0x1E,
+ 0= x60, 0x1E, 0x60, 0x1E, 0x62, 0x1E, 0x62, 0x1E,
+ 0x64, 0x1E, 0x64, 0x= 1E, 0x66, 0x1E, 0x66, 0x1E,
+ 0x68, 0x1E, 0x68, 0x1E, 0x6A, 0x1E, 0x6= A, 0x1E,
+ 0x6C, 0x1E, 0x6C, 0x1E, 0x6E, 0x1E, 0x6E, 0x1E,
+ 0x70= , 0x1E, 0x70, 0x1E, 0x72, 0x1E, 0x72, 0x1E,
+ 0x74, 0x1E, 0x74, 0x1E,= 0x76, 0x1E, 0x76, 0x1E,
+ 0x78, 0x1E, 0x78, 0x1E, 0x7A, 0x1E, 0x7A, = 0x1E,
+ 0x7C, 0x1E, 0x7C, 0x1E, 0x7E, 0x1E, 0x7E, 0x1E,
+ 0x80, 0= x1E, 0x80, 0x1E, 0x82, 0x1E, 0x82, 0x1E,
+ 0x84, 0x1E, 0x84, 0x1E, 0x= 86, 0x1E, 0x86, 0x1E,
+ 0x88, 0x1E, 0x88, 0x1E, 0x8A, 0x1E, 0x8A, 0x1= E,
+ 0x8C, 0x1E, 0x8C, 0x1E, 0x8E, 0x1E, 0x8E, 0x1E,
+ 0x90, 0x1E= , 0x90, 0x1E, 0x92, 0x1E, 0x92, 0x1E,
+ 0x94, 0x1E, 0x94, 0x1E, 0x96,= 0x1E, 0x97, 0x1E,
+ 0x98, 0x1E, 0x99, 0x1E, 0x9A, 0x1E, 0x9B, 0x1E, =
+ 0x9C, 0x1E, 0x9D, 0x1E, 0x9E, 0x1E, 0x9=46, 0x1E,
+ 0xA0, 0x1E,= 0xA0, 0x1E, 0xA2, 0x1E, 0xA2, 0x1E,
+ 0xA4, 0x1E, 0xA4, 0x1E, 0xA6, = 0x1E, 0xA6, 0x1E,
+ 0xA8, 0x1E, 0xA8, 0x1E, 0xAA, 0x1E, 0xAA, 0x1E, <= br>+ 0xAC, 0x1E, 0xAC, 0x1E, 0xAE, 0x1E, 0xAE, 0x1E,
+ 0xB0, 0x1E, 0x= B0, 0x1E, 0xB2, 0x1E, 0xB2, 0x1E,
+ 0xB4, 0x1E, 0xB4, 0x1E, 0xB6, 0x1= E, 0xB6, 0x1E,
+ 0xB8, 0x1E, 0xB8, 0x1E, 0xBA, 0x1E, 0xBA, 0x1E,
= + 0xBC, 0x1E, 0xBC, 0x1E, 0xBE, 0x1E, 0xBE, 0x1E,
+ 0xC0, 0x1E, 0xC0,= 0x1E, 0xC2, 0x1E, 0xC2, 0x1E,
+ 0xC4, 0x1E, 0xC4, 0x1E, 0xC6, 0x1E, = 0xC6, 0x1E,
+ 0xC8, 0x1E, 0xC8, 0x1E, 0xCA, 0x1E, 0xCA, 0x1E,
+ 0= xCC, 0x1E, 0xCC, 0x1E, 0xCE, 0x1E, 0xCE, 0x1E,
+ 0xD0, 0x1E, 0xD0, 0x= 1E, 0xD2, 0x1E, 0xD2, 0x1E,
+ 0xD4, 0x1E, 0xD4, 0x1E, 0xD6, 0x1E, 0xD= 6, 0x1E,
+ 0xD8, 0x1E, 0xD8, 0x1E, 0xDA, 0x1E, 0xDA, 0x1E,
+ 0xDC= , 0x1E, 0xDC, 0x1E, 0xDE, 0x1E, 0xDE, 0x1E,
+ 0xE0, 0x1E, 0xE0, 0x1E,= 0xE2, 0x1E, 0xE2, 0x1E,
+ 0xE4, 0x1E, 0xE4, 0x1E, 0xE6, 0x1E, 0xE6, = 0x1E,
+ 0xE8, 0x1E, 0xE8, 0x1E, 0xEA, 0x1E, 0xEA, 0x1E,
+ 0xEC, 0= x1E, 0xEC, 0x1E, 0xEE, 0x1E, 0xEE, 0x1E,
+ 0x=460, 0x1E, 0x=460, 0x1E= , 0x=462, 0x1E, 0x=462, 0x1E,
+ 0x=464, 0x1E, 0x=464, 0x1E, 0x=466, 0= x1E, 0x=466, 0x1E,
+ 0x=468, 0x1E, 0x=468, 0x1E, 0x=46A, 0x1E, 0x=46B= , 0x1E,
+ 0x=46C, 0x1E, 0x=46D, 0x1E, 0x=46E, 0x1E, 0x=46=46, 0x1E, <= br>+ 0x08, 0x1=46, 0x09, 0x1=46, 0x0A, 0x1=46, 0x0B, 0x1=46,
+ 0x0C, = 0x1=46, 0x0D, 0x1=46, 0x0E, 0x1=46, 0x0=46, 0x1=46,
+ 0x08, 0x1=46, 0= x09, 0x1=46, 0x0A, 0x1=46, 0x0B, 0x1=46,
+ 0x0C, 0x1=46, 0x0D, 0x1=46= , 0x0E, 0x1=46, 0x0=46, 0x1=46,
+ 0x18, 0x1=46, 0x19, 0x1=46, 0x1A, 0= x1=46, 0x1B, 0x1=46,
+ 0x1C, 0x1=46, 0x1D, 0x1=46, 0x16, 0x1=46, 0x17= , 0x1=46,
+ 0x18, 0x1=46, 0x19, 0x1=46, 0x1A, 0x1=46, 0x1B, 0x1=46, <= br>+ 0x1C, 0x1=46, 0x1D, 0x1=46, 0x1E, 0x1=46, 0x1=46, 0x1=46,
+ 0x28= , 0x1=46, 0x29, 0x1=46, 0x2A, 0x1=46, 0x2B, 0x1=46,
+ 0x2C, 0x1=46, 0= x2D, 0x1=46, 0x2E, 0x1=46, 0x2=46, 0x1=46,
+ 0x28, 0x1=46, 0x29, 0x1=46= , 0x2A, 0x1=46, 0x2B, 0x1=46,
+ 0x2C, 0x1=46, 0x2D, 0x1=46, 0x2E, 0x1= =46, 0x2=46, 0x1=46,
+ 0x38, 0x1=46, 0x39, 0x1=46, 0x3A, 0x1=46, 0x3B= , 0x1=46,
+ 0x3C, 0x1=46, 0x3D, 0x1=46, 0x3E, 0x1=46, 0x3=46, 0x1=46,=
+ 0x38, 0x1=46, 0x39, 0x1=46, 0x3A, 0x1=46, 0x3B, 0x1=46,
+ 0x3C= , 0x1=46, 0x3D, 0x1=46, 0x3E, 0x1=46, 0x3=46, 0x1=46,
+ 0x48, 0x1=46,= 0x49, 0x1=46, 0x4A, 0x1=46, 0x4B, 0x1=46,
+ 0x4C, 0x1=46, 0x4D, 0x1=46= , 0x46, 0x1=46, 0x47, 0x1=46,
+ 0x48, 0x1=46, 0x49, 0x1=46, 0x4A, 0x1= =46, 0x4B, 0x1=46,
+ 0x4C, 0x1=46, 0x4D, 0x1=46, 0x4E, 0x1=46, 0x4=46= , 0x1=46,
+ 0x50, 0x1=46, 0x59, 0x1=46, 0x52, 0x1=46, 0x5B, 0x1=46, <= br>+ 0x54, 0x1=46, 0x5D, 0x1=46, 0x56, 0x1=46, 0x5=46, 0x1=46,
+ 0x58= , 0x1=46, 0x59, 0x1=46, 0x5A, 0x1=46, 0x5B, 0x1=46,
+ 0x5C, 0x1=46, 0= x5D, 0x1=46, 0x5E, 0x1=46, 0x5=46, 0x1=46,
+ 0x68, 0x1=46, 0x69, 0x1=46= , 0x6A, 0x1=46, 0x6B, 0x1=46,
+ 0x6C, 0x1=46, 0x6D, 0x1=46, 0x6E, 0x1= =46, 0x6=46, 0x1=46,
+ 0x68, 0x1=46, 0x69, 0x1=46, 0x6A, 0x1=46, 0x6B= , 0x1=46,
+ 0x6C, 0x1=46, 0x6D, 0x1=46, 0x6E, 0x1=46, 0x6=46, 0x1=46,=
+ 0xBA, 0x1=46, 0xBB, 0x1=46, 0xC8, 0x1=46, 0xC9, 0x1=46,
+ 0xCA= , 0x1=46, 0xCB, 0x1=46, 0xDA, 0x1=46, 0xDB, 0x1=46,
+ 0x=468, 0x1=46,= 0x=469, 0x1=46, 0xEA, 0x1=46, 0xEB, 0x1=46,
+ 0x=46A, 0x1=46, 0x=46B= , 0x1=46, 0x7E, 0x1=46, 0x7=46, 0x1=46,
+ 0x88, 0x1=46, 0x89, 0x1=46,= 0x8A, 0x1=46, 0x8B, 0x1=46,
+ 0x8C, 0x1=46, 0x8D, 0x1=46, 0x8E, 0x1=46= , 0x8=46, 0x1=46,
+ 0x88, 0x1=46, 0x89, 0x1=46, 0x8A, 0x1=46, 0x8B, 0= x1=46,
+ 0x8C, 0x1=46, 0x8D, 0x1=46, 0x8E, 0x1=46, 0x8=46, 0x1=46, + 0x98, 0x1=46, 0x99, 0x1=46, 0x9A, 0x1=46, 0x9B, 0x1=46,
+ 0x9C, 0= x1=46, 0x9D, 0x1=46, 0x9E, 0x1=46, 0x9=46, 0x1=46,
+ 0x98, 0x1=46, 0x= 99, 0x1=46, 0x9A, 0x1=46, 0x9B, 0x1=46,
+ 0x9C, 0x1=46, 0x9D, 0x1=46,= 0x9E, 0x1=46, 0x9=46, 0x1=46,
+ 0xA8, 0x1=46, 0xA9, 0x1=46, 0xAA, 0x= 1=46, 0xAB, 0x1=46,
+ 0xAC, 0x1=46, 0xAD, 0x1=46, 0xAE, 0x1=46, 0xA=46= , 0x1=46,
+ 0xA8, 0x1=46, 0xA9, 0x1=46, 0xAA, 0x1=46, 0xAB, 0x1=46, <= br>+ 0xAC, 0x1=46, 0xAD, 0x1=46, 0xAE, 0x1=46, 0xA=46, 0x1=46,
+ 0xB8= , 0x1=46, 0xB9, 0x1=46, 0xB2, 0x1=46, 0xBC, 0x1=46,
+ 0xB4, 0x1=46, 0= xB5, 0x1=46, 0xB6, 0x1=46, 0xB7, 0x1=46,
+ 0xB8, 0x1=46, 0xB9, 0x1=46= , 0xBA, 0x1=46, 0xBB, 0x1=46,
+ 0xBC, 0x1=46, 0xBD, 0x1=46, 0xBE, 0x1= =46, 0xB=46, 0x1=46,
+ 0xC0, 0x1=46, 0xC1, 0x1=46, 0xC2, 0x1=46, 0xC3= , 0x1=46,
+ 0xC4, 0x1=46, 0xC5, 0x1=46, 0xC6, 0x1=46, 0xC7, 0x1=46, <= br>+ 0xC8, 0x1=46, 0xC9, 0x1=46, 0xCA, 0x1=46, 0xCB, 0x1=46,
+ 0xC3, = 0x1=46, 0xCD, 0x1=46, 0xCE, 0x1=46, 0xC=46, 0x1=46,
+ 0xD8, 0x1=46, 0= xD9, 0x1=46, 0xD2, 0x1=46, 0xD3, 0x1=46,
+ 0xD4, 0x1=46, 0xD5, 0x1=46= , 0xD6, 0x1=46, 0xD7, 0x1=46,
+ 0xD8, 0x1=46, 0xD9, 0x1=46, 0xDA, 0x1= =46, 0xDB, 0x1=46,
+ 0xDC, 0x1=46, 0xDD, 0x1=46, 0xDE, 0x1=46, 0xD=46= , 0x1=46,
+ 0xE8, 0x1=46, 0xE9, 0x1=46, 0xE2, 0x1=46, 0xE3, 0x1=46, <= br>+ 0xE4, 0x1=46, 0xEC, 0x1=46, 0xE6, 0x1=46, 0xE7, 0x1=46,
+ 0xE8, = 0x1=46, 0xE9, 0x1=46, 0xEA, 0x1=46, 0xEB, 0x1=46,
+ 0xEC, 0x1=46, 0xE= D, 0x1=46, 0xEE, 0x1=46, 0xE=46, 0x1=46,
+ 0x=460, 0x1=46, 0x=461, 0x= 1=46, 0x=462, 0x1=46, 0x=463, 0x1=46,
+ 0x=464, 0x1=46, 0x=465, 0x1=46= , 0x=466, 0x1=46, 0x=467, 0x1=46,
+ 0x=468, 0x1=46, 0x=469, 0x1=46, 0= x=46A, 0x1=46, 0x=46B, 0x1=46,
+ 0x=463, 0x1=46, 0x=46D, 0x1=46, 0x=46= E, 0x1=46, 0x=46=46, 0x1=46,
+ 0x00, 0x20, 0x01, 0x20, 0x02, 0x20, 0x= 03, 0x20,
+ 0x04, 0x20, 0x05, 0x20, 0x06, 0x20, 0x07, 0x20,
+ 0x0= 8, 0x20, 0x09, 0x20, 0x0A, 0x20, 0x0B, 0x20,
+ 0x0C, 0x20, 0x0D, 0x20= , 0x0E, 0x20, 0x0=46, 0x20,
+ 0x10, 0x20, 0x11, 0x20, 0x12, 0x20, 0x1= 3, 0x20,
+ 0x14, 0x20, 0x15, 0x20, 0x16, 0x20, 0x17, 0x20,
+ 0x18= , 0x20, 0x19, 0x20, 0x1A, 0x20, 0x1B, 0x20,
+ 0x1C, 0x20, 0x1D, 0x20,= 0x1E, 0x20, 0x1=46, 0x20,
+ 0x20, 0x20, 0x21, 0x20, 0x22, 0x20, 0x23= , 0x20,
+ 0x24, 0x20, 0x25, 0x20, 0x26, 0x20, 0x27, 0x20,
+ 0x28,= 0x20, 0x29, 0x20, 0x2A, 0x20, 0x2B, 0x20,
+ 0x2C, 0x20, 0x2D, 0x20, = 0x2E, 0x20, 0x2=46, 0x20,
+ 0x30, 0x20, 0x31, 0x20, 0x32, 0x20, 0x33,= 0x20,
+ 0x34, 0x20, 0x35, 0x20, 0x36, 0x20, 0x37, 0x20,
+ 0x38, = 0x20, 0x39, 0x20, 0x3A, 0x20, 0x3B, 0x20,
+ 0x3C, 0x20, 0x3D, 0x20, 0= x3E, 0x20, 0x3=46, 0x20,
+ 0x40, 0x20, 0x41, 0x20, 0x42, 0x20, 0x43, = 0x20,
+ 0x44, 0x20, 0x45, 0x20, 0x46, 0x20, 0x47, 0x20,
+ 0x48, 0= x20, 0x49, 0x20, 0x4A, 0x20, 0x4B, 0x20,
+ 0x4C, 0x20, 0x4D, 0x20, 0x= 4E, 0x20, 0x4=46, 0x20,
+ 0x50, 0x20, 0x51, 0x20, 0x52, 0x20, 0x53, 0= x20,
+ 0x54, 0x20, 0x55, 0x20, 0x56, 0x20, 0x57, 0x20,
+ 0x58, 0x= 20, 0x59, 0x20, 0x5A, 0x20, 0x5B, 0x20,
+ 0x5C, 0x20, 0x5D, 0x20, 0x5= E, 0x20, 0x5=46, 0x20,
+ 0x60, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x= 20,
+ 0x64, 0x20, 0x65, 0x20, 0x66, 0x20, 0x67, 0x20,
+ 0x68, 0x2= 0, 0x69, 0x20, 0x6A, 0x20, 0x6B, 0x20,
+ 0x6C, 0x20, 0x6D, 0x20, 0x6E= , 0x20, 0x6=46, 0x20,
+ 0x70, 0x20, 0x71, 0x20, 0x72, 0x20, 0x73, 0x2= 0,
+ 0x74, 0x20, 0x75, 0x20, 0x76, 0x20, 0x77, 0x20,
+ 0x78, 0x20= , 0x79, 0x20, 0x7A, 0x20, 0x7B, 0x20,
+ 0x7C, 0x20, 0x7D, 0x20, 0x7E,= 0x20, 0x7=46, 0x20,
+ 0x80, 0x20, 0x81, 0x20, 0x82, 0x20, 0x83, 0x20= ,
+ 0x84, 0x20, 0x85, 0x20, 0x86, 0x20, 0x87, 0x20,
+ 0x88, 0x20,= 0x89, 0x20, 0x8A, 0x20, 0x8B, 0x20,
+ 0x8C, 0x20, 0x8D, 0x20, 0x8E, = 0x20, 0x8=46, 0x20,
+ 0x90, 0x20, 0x91, 0x20, 0x92, 0x20, 0x93, 0x20,=
+ 0x94, 0x20, 0x95, 0x20, 0x96, 0x20, 0x97, 0x20,
+ 0x98, 0x20, = 0x99, 0x20, 0x9A, 0x20, 0x9B, 0x20,
+ 0x9C, 0x20, 0x9D, 0x20, 0x9E, 0= x20, 0x9=46, 0x20,
+ 0xA0, 0x20, 0xA1, 0x20, 0xA2, 0x20, 0xA3, 0x20, =
+ 0xA4, 0x20, 0xA5, 0x20, 0xA6, 0x20, 0xA7, 0x20,
+ 0xA8, 0x20, 0= xA9, 0x20, 0xAA, 0x20, 0xAB, 0x20,
+ 0xAC, 0x20, 0xAD, 0x20, 0xAE, 0x= 20, 0xA=46, 0x20,
+ 0xB0, 0x20, 0xB1, 0x20, 0xB2, 0x20, 0xB3, 0x20, <= br>+ 0xB4, 0x20, 0xB5, 0x20, 0xB6, 0x20, 0xB7, 0x20,
+ 0xB8, 0x20, 0x= B9, 0x20, 0xBA, 0x20, 0xBB, 0x20,
+ 0xBC, 0x20, 0xBD, 0x20, 0xBE, 0x2= 0, 0xB=46, 0x20,
+ 0xC0, 0x20, 0xC1, 0x20, 0xC2, 0x20, 0xC3, 0x20, + 0xC4, 0x20, 0xC5, 0x20, 0xC6, 0x20, 0xC7, 0x20,
+ 0xC8, 0x20, 0xC= 9, 0x20, 0xCA, 0x20, 0xCB, 0x20,
+ 0xCC, 0x20, 0xCD, 0x20, 0xCE, 0x20= , 0xC=46, 0x20,
+ 0xD0, 0x20, 0xD1, 0x20, 0xD2, 0x20, 0xD3, 0x20, + 0xD4, 0x20, 0xD5, 0x20, 0xD6, 0x20, 0xD7, 0x20,
+ 0xD8, 0x20, 0xD9= , 0x20, 0xDA, 0x20, 0xDB, 0x20,
+ 0xDC, 0x20, 0xDD, 0x20, 0xDE, 0x20,= 0xD=46, 0x20,
+ 0xE0, 0x20, 0xE1, 0x20, 0xE2, 0x20, 0xE3, 0x20,
= + 0xE4, 0x20, 0xE5, 0x20, 0xE6, 0x20, 0xE7, 0x20,
+ 0xE8, 0x20, 0xE9,= 0x20, 0xEA, 0x20, 0xEB, 0x20,
+ 0xEC, 0x20, 0xED, 0x20, 0xEE, 0x20, = 0xE=46, 0x20,
+ 0x=460, 0x20, 0x=461, 0x20, 0x=462, 0x20, 0x=463, 0x2= 0,
+ 0x=464, 0x20, 0x=465, 0x20, 0x=466, 0x20, 0x=467, 0x20,
+ 0x= =468, 0x20, 0x=469, 0x20, 0x=46A, 0x20, 0x=46B, 0x20,
+ 0x=46C, 0x20,= 0x=46D, 0x20, 0x=46E, 0x20, 0x=46=46, 0x20,
+ 0x00, 0x21, 0x01, 0x21= , 0x02, 0x21, 0x03, 0x21,
+ 0x04, 0x21, 0x05, 0x21, 0x06, 0x21, 0x07,= 0x21,
+ 0x08, 0x21, 0x09, 0x21, 0x0A, 0x21, 0x0B, 0x21,
+ 0x0C, = 0x21, 0x0D, 0x21, 0x0E, 0x21, 0x0=46, 0x21,
+ 0x10, 0x21, 0x11, 0x21,= 0x12, 0x21, 0x13, 0x21,
+ 0x14, 0x21, 0x15, 0x21, 0x16, 0x21, 0x17, = 0x21,
+ 0x18, 0x21, 0x19, 0x21, 0x1A, 0x21, 0x1B, 0x21,
+ 0x1C, 0= x21, 0x1D, 0x21, 0x1E, 0x21, 0x1=46, 0x21,
+ 0x20, 0x21, 0x21, 0x21, = 0x22, 0x21, 0x23, 0x21,
+ 0x24, 0x21, 0x25, 0x21, 0x26, 0x21, 0x27, 0= x21,
+ 0x28, 0x21, 0x29, 0x21, 0x2A, 0x21, 0x2B, 0x21,
+ 0x2C, 0x= 21, 0x2D, 0x21, 0x2E, 0x21, 0x2=46, 0x21,
+ 0x30, 0x21, 0x31, 0x21, 0= x32, 0x21, 0x33, 0x21,
+ 0x34, 0x21, 0x35, 0x21, 0x36, 0x21, 0x37, 0x= 21,
+ 0x38, 0x21, 0x39, 0x21, 0x3A, 0x21, 0x3B, 0x21,
+ 0x3C, 0x2= 1, 0x3D, 0x21, 0x3E, 0x21, 0x3=46, 0x21,
+ 0x40, 0x21, 0x41, 0x21, 0x= 42, 0x21, 0x43, 0x21,
+ 0x44, 0x21, 0x45, 0x21, 0x46, 0x21, 0x47, 0x2= 1,
+ 0x48, 0x21, 0x49, 0x21, 0x4A, 0x21, 0x4B, 0x21,
+ 0x4C, 0x21= , 0x4D, 0x21, 0x32, 0x21, 0x4=46, 0x21,
+ 0x50, 0x21, 0x51, 0x21, 0x5= 2, 0x21, 0x53, 0x21,
+ 0x54, 0x21, 0x55, 0x21, 0x56, 0x21, 0x57, 0x21= ,
+ 0x58, 0x21, 0x59, 0x21, 0x5A, 0x21, 0x5B, 0x21,
+ 0x5C, 0x21,= 0x5D, 0x21, 0x5E, 0x21, 0x5=46, 0x21,
+ 0x60, 0x21, 0x61, 0x21, 0x62= , 0x21, 0x63, 0x21,
+ 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21,=
+ 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21,
+ 0x6C, 0x21, = 0x6D, 0x21, 0x6E, 0x21, 0x6=46, 0x21,
+ 0x60, 0x21, 0x61, 0x21, 0x62,= 0x21, 0x63, 0x21,
+ 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, =
+ 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21,
+ 0x6C, 0x21, 0= x6D, 0x21, 0x6E, 0x21, 0x6=46, 0x21,
+ 0x80, 0x21, 0x81, 0x21, 0x82, = 0x21, 0x83, 0x21,
+ 0x83, 0x21, 0x=46=46, 0x=46=46, 0x4B, 0x03, 0xB6,= 0x24,
+ 0xB7, 0x24, 0xB8, 0x24, 0xB9, 0x24, 0xBA, 0x24,
+ 0xBB, = 0x24, 0xBC, 0x24, 0xBD, 0x24, 0xBE, 0x24,
+ 0xB=46, 0x24, 0xC0, 0x24,= 0xC1, 0x24, 0xC2, 0x24,
+ 0xC3, 0x24, 0xC4, 0x24, 0xC5, 0x24, 0xC6, = 0x24,
+ 0xC7, 0x24, 0xC8, 0x24, 0xC9, 0x24, 0xCA, 0x24,
+ 0xCB, 0= x24, 0xCC, 0x24, 0xCD, 0x24, 0xCE, 0x24,
+ 0xC=46, 0x24, 0x=46=46, 0x= =46=46, 0x46, 0x07, 0x00, 0x2C,
+ 0x01, 0x2C, 0x02, 0x2C, 0x03, 0x2C,= 0x04, 0x2C,
+ 0x05, 0x2C, 0x06, 0x2C, 0x07, 0x2C, 0x08, 0x2C,
+ = 0x09, 0x2C, 0x0A, 0x2C, 0x0B, 0x2C, 0x0C, 0x2C,
+ 0x0D, 0x2C, 0x0E, 0= x2C, 0x0=46, 0x2C, 0x10, 0x2C,
+ 0x11, 0x2C, 0x12, 0x2C, 0x13, 0x2C, = 0x14, 0x2C,
+ 0x15, 0x2C, 0x16, 0x2C, 0x17, 0x2C, 0x18, 0x2C,
+ 0= x19, 0x2C, 0x1A, 0x2C, 0x1B, 0x2C, 0x1C, 0x2C,
+ 0x1D, 0x2C, 0x1E, 0x= 2C, 0x1=46, 0x2C, 0x20, 0x2C,
+ 0x21, 0x2C, 0x22, 0x2C, 0x23, 0x2C, 0= x24, 0x2C,
+ 0x25, 0x2C, 0x26, 0x2C, 0x27, 0x2C, 0x28, 0x2C,
+ 0x= 29, 0x2C, 0x2A, 0x2C, 0x2B, 0x2C, 0x2C, 0x2C,
+ 0x2D, 0x2C, 0x2E, 0x2= C, 0x5=46, 0x2C, 0x60, 0x2C,
+ 0x60, 0x2C, 0x62, 0x2C, 0x63, 0x2C, 0x= 64, 0x2C,
+ 0x65, 0x2C, 0x66, 0x2C, 0x67, 0x2C, 0x67, 0x2C,
+ 0x6= 9, 0x2C, 0x69, 0x2C, 0x6B, 0x2C, 0x6B, 0x2C,
+ 0x6D, 0x2C, 0x6E, 0x2C= , 0x6=46, 0x2C, 0x70, 0x2C,
+ 0x71, 0x2C, 0x72, 0x2C, 0x73, 0x2C, 0x7= 4, 0x2C,
+ 0x75, 0x2C, 0x75, 0x2C, 0x77, 0x2C, 0x78, 0x2C,
+ 0x79= , 0x2C, 0x7A, 0x2C, 0x7B, 0x2C, 0x7C, 0x2C,
+ 0x7D, 0x2C, 0x7E, 0x2C,= 0x7=46, 0x2C, 0x80, 0x2C,
+ 0x80, 0x2C, 0x82, 0x2C, 0x82, 0x2C, 0x84= , 0x2C,
+ 0x84, 0x2C, 0x86, 0x2C, 0x86, 0x2C, 0x88, 0x2C,
+ 0x88,= 0x2C, 0x8A, 0x2C, 0x8A, 0x2C, 0x8C, 0x2C,
+ 0x8C, 0x2C, 0x8E, 0x2C, = 0x8E, 0x2C, 0x90, 0x2C,
+ 0x90, 0x2C, 0x92, 0x2C, 0x92, 0x2C, 0x94, 0= x2C,
+ 0x94, 0x2C, 0x96, 0x2C, 0x96, 0x2C, 0x98, 0x2C,
+ 0x98, 0x= 2C, 0x9A, 0x2C, 0x9A, 0x2C, 0x9C, 0x2C,
+ 0x9C, 0x2C, 0x9E, 0x2C, 0x9= E, 0x2C, 0xA0, 0x2C,
+ 0xA0, 0x2C, 0xA2, 0x2C, 0xA2, 0x2C, 0xA4, 0x2C= ,
+ 0xA4, 0x2C, 0xA6, 0x2C, 0xA6, 0x2C, 0xA8, 0x2C,
+ 0xA8, 0x2C,= 0xAA, 0x2C, 0xAA, 0x2C, 0xAC, 0x2C,
+ 0xAC, 0x2C, 0xAE, 0x2C, 0xAE, = 0x2C, 0xB0, 0x2C,
+ 0xB0, 0x2C, 0xB2, 0x2C, 0xB2, 0x2C, 0xB4, 0x2C, <= br>+ 0xB4, 0x2C, 0xB6, 0x2C, 0xB6, 0x2C, 0xB8, 0x2C,
+ 0xB8, 0x2C, 0x= BA, 0x2C, 0xBA, 0x2C, 0xBC, 0x2C,
+ 0xBC, 0x2C, 0xBE, 0x2C, 0xBE, 0x2= C, 0xC0, 0x2C,
+ 0xC0, 0x2C, 0xC2, 0x2C, 0xC2, 0x2C, 0xC4, 0x2C,
= + 0xC4, 0x2C, 0xC6, 0x2C, 0xC6, 0x2C, 0xC8, 0x2C,
+ 0xC8, 0x2C, 0xCA,= 0x2C, 0xCA, 0x2C, 0xCC, 0x2C,
+ 0xCC, 0x2C, 0xCE, 0x2C, 0xCE, 0x2C, = 0xD0, 0x2C,
+ 0xD0, 0x2C, 0xD2, 0x2C, 0xD2, 0x2C, 0xD4, 0x2C,
+ 0= xD4, 0x2C, 0xD6, 0x2C, 0xD6, 0x2C, 0xD8, 0x2C,
+ 0xD8, 0x2C, 0xDA, 0x= 2C, 0xDA, 0x2C, 0xDC, 0x2C,
+ 0xDC, 0x2C, 0xDE, 0x2C, 0xDE, 0x2C, 0xE= 0, 0x2C,
+ 0xE0, 0x2C, 0xE2, 0x2C, 0xE2, 0x2C, 0xE4, 0x2C,
+ 0xE5= , 0x2C, 0xE6, 0x2C, 0xE7, 0x2C, 0xE8, 0x2C,
+ 0xE9, 0x2C, 0xEA, 0x2C,= 0xEB, 0x2C, 0xEC, 0x2C,
+ 0xED, 0x2C, 0xEE, 0x2C, 0xE=46, 0x2C, 0x=46= 0, 0x2C,
+ 0x=461, 0x2C, 0x=462, 0x2C, 0x=463, 0x2C, 0x=464, 0x2C, + 0x=465, 0x2C, 0x=466, 0x2C, 0x=467, 0x2C, 0x=468, 0x2C,
+ 0x=469,= 0x2C, 0x=46A, 0x2C, 0x=46B, 0x2C, 0x=46C, 0x2C,
+ 0x=46D, 0x2C, 0x=46= E, 0x2C, 0x=46=46, 0x2C, 0xA0, 0x10,
+ 0xA1, 0x10, 0xA2, 0x10, 0xA3, = 0x10, 0xA4, 0x10,
+ 0xA5, 0x10, 0xA6, 0x10, 0xA7, 0x10, 0xA8, 0x10, <= br>+ 0xA9, 0x10, 0xAA, 0x10, 0xAB, 0x10, 0xAC, 0x10,
+ 0xAD, 0x10, 0x= AE, 0x10, 0xA=46, 0x10, 0xB0, 0x10,
+ 0xB1, 0x10, 0xB2, 0x10, 0xB3, 0= x10, 0xB4, 0x10,
+ 0xB5, 0x10, 0xB6, 0x10, 0xB7, 0x10, 0xB8, 0x10, + 0xB9, 0x10, 0xBA, 0x10, 0xBB, 0x10, 0xBC, 0x10,
+ 0xBD, 0x10, 0xB= E, 0x10, 0xB=46, 0x10, 0xC0, 0x10,
+ 0xC1, 0x10, 0xC2, 0x10, 0xC3, 0x= 10, 0xC4, 0x10,
+ 0xC5, 0x10, 0x=46=46, 0x=46=46, 0x1B, 0xD2, 0x21, 0= x=46=46,
+ 0x22, 0x=46=46, 0x23, 0x=46=46, 0x24, 0x=46=46, 0x25, 0x=46= =46,
+ 0x26, 0x=46=46, 0x27, 0x=46=46, 0x28, 0x=46=46, 0x29, 0x=46=46= ,
+ 0x2A, 0x=46=46, 0x2B, 0x=46=46, 0x2C, 0x=46=46, 0x2D, 0x=46=46, <= br>+ 0x2E, 0x=46=46, 0x2=46, 0x=46=46, 0x30, 0x=46=46, 0x31, 0x=46=46, + 0x32, 0x=46=46, 0x33, 0x=46=46, 0x34, 0x=46=46, 0x35, 0x=46=46,
+= 0x36, 0x=46=46, 0x37, 0x=46=46, 0x38, 0x=46=46, 0x39, 0x=46=46,
+ 0x= 3A, 0x=46=46, 0x5B, 0x=46=46, 0x5C, 0x=46=46, 0x5D, 0x=46=46,
+ 0x5E,= 0x=46=46, 0x5=46, 0x=46=46, 0x60, 0x=46=46, 0x61, 0x=46=46,
+ 0x62, = 0x=46=46, 0x63, 0x=46=46, 0x64, 0x=46=46, 0x65, 0x=46=46,
+ 0x66, 0x=46= =46, 0x67, 0x=46=46, 0x68, 0x=46=46, 0x69, 0x=46=46,
+ 0x6A, 0x=46=46= , 0x6B, 0x=46=46, 0x6C, 0x=46=46, 0x6D, 0x=46=46,
+ 0x6E, 0x=46=46, 0= x6=46, 0x=46=46, 0x70, 0x=46=46, 0x71, 0x=46=46,
+ 0x72, 0x=46=46, 0x= 73, 0x=46=46, 0x74, 0x=46=46, 0x75, 0x=46=46,
+ 0x76, 0x=46=46, 0x77,= 0x=46=46, 0x78, 0x=46=46, 0x79, 0x=46=46,
+ 0x7A, 0x=46=46, 0x7B, 0x= =46=46, 0x7C, 0x=46=46, 0x7D, 0x=46=46,
+ 0x7E, 0x=46=46, 0x7=46, 0x=46= =46, 0x80, 0x=46=46, 0x81, 0x=46=46,
+ 0x82, 0x=46=46, 0x83, 0x=46=46= , 0x84, 0x=46=46, 0x85, 0x=46=46,
+ 0x86, 0x=46=46, 0x87, 0x=46=46, 0= x88, 0x=46=46, 0x89, 0x=46=46,
+ 0x8A, 0x=46=46, 0x8B, 0x=46=46, 0x8C= , 0x=46=46, 0x8D, 0x=46=46,
+ 0x8E, 0x=46=46, 0x8=46, 0x=46=46, 0x90,= 0x=46=46, 0x91, 0x=46=46,
+ 0x92, 0x=46=46, 0x93, 0x=46=46, 0x94, 0x= =46=46, 0x95, 0x=46=46,
+ 0x96, 0x=46=46, 0x97, 0x=46=46, 0x98, 0x=46= =46, 0x99, 0x=46=46,
+ 0x9A, 0x=46=46, 0x9B, 0x=46=46, 0x9C, 0x=46=46= , 0x9D, 0x=46=46,
+ 0x9E, 0x=46=46, 0x9=46, 0x=46=46, 0xA0, 0x=46=46,= 0xA1, 0x=46=46,
+ 0xA2, 0x=46=46, 0xA3, 0x=46=46, 0xA4, 0x=46=46, 0x= A5, 0x=46=46,
+ 0xA6, 0x=46=46, 0xA7, 0x=46=46, 0xA8, 0x=46=46, 0xA9,= 0x=46=46,
+ 0xAA, 0x=46=46, 0xAB, 0x=46=46, 0xAC, 0x=46=46, 0xAD, 0x= =46=46,
+ 0xAE, 0x=46=46, 0xA=46, 0x=46=46, 0xB0, 0x=46=46, 0xB1, 0x=46= =46,
+ 0xB2, 0x=46=46, 0xB3, 0x=46=46, 0xB4, 0x=46=46, 0xB5, 0x=46=46= ,
+ 0xB6, 0x=46=46, 0xB7, 0x=46=46, 0xB8, 0x=46=46, 0xB9, 0x=46=46, <= br>+ 0xBA, 0x=46=46, 0xBB, 0x=46=46, 0xBC, 0x=46=46, 0xBD, 0x=46=46,
= + 0xBE, 0x=46=46, 0xB=46, 0x=46=46, 0xC0, 0x=46=46, 0xC1, 0x=46=46,
+= 0xC2, 0x=46=46, 0xC3, 0x=46=46, 0xC4, 0x=46=46, 0xC5, 0x=46=46,
+ 0x= C6, 0x=46=46, 0xC7, 0x=46=46, 0xC8, 0x=46=46, 0xC9, 0x=46=46,
+ 0xCA,= 0x=46=46, 0xCB, 0x=46=46, 0xCC, 0x=46=46, 0xCD, 0x=46=46,
+ 0xCE, 0x= =46=46, 0xC=46, 0x=46=46, 0xD0, 0x=46=46, 0xD1, 0x=46=46,
+ 0xD2, 0x=46= =46, 0xD3, 0x=46=46, 0xD4, 0x=46=46, 0xD5, 0x=46=46,
+ 0xD6, 0x=46=46= , 0xD7, 0x=46=46, 0xD8, 0x=46=46, 0xD9, 0x=46=46,
+ 0xDA, 0x=46=46, 0= xDB, 0x=46=46, 0xDC, 0x=46=46, 0xDD, 0x=46=46,
+ 0xDE, 0x=46=46, 0xD=46= , 0x=46=46, 0xE0, 0x=46=46, 0xE1, 0x=46=46,
+ 0xE2, 0x=46=46, 0xE3, 0= x=46=46, 0xE4, 0x=46=46, 0xE5, 0x=46=46,
+ 0xE6, 0x=46=46, 0xE7, 0x=46= =46, 0xE8, 0x=46=46, 0xE9, 0x=46=46,
+ 0xEA, 0x=46=46, 0xEB, 0x=46=46= , 0xEC, 0x=46=46, 0xED, 0x=46=46,
+ 0xEE, 0x=46=46, 0xE=46, 0x=46=46,= 0x=460, 0x=46=46, 0x=461, 0x=46=46,
+ 0x=462, 0x=46=46, 0x=463, 0x=46= =46, 0x=464, 0x=46=46, 0x=465, 0x=46=46,
+ 0x=466, 0x=46=46, 0x=467, = 0x=46=46, 0x=468, 0x=46=46, 0x=469, 0x=46=46,
+ 0x=46A, 0x=46=46, 0x=46= B, 0x=46=46, 0x=46C, 0x=46=46, 0x=46D, 0x=46=46,
+ 0x=46E, 0x=46=46, = 0x=46=46, 0x=46=46
+=7D;
+
static volatile sig=5Fatomic=5Ft = got=5Fsiginfo;
static void infohandler(int);

=40=40 -227,7 = +1045,320 =40=40 static void print=5Fbpb(struct bpb *);
static int c= kgeom(const char *, u=5Fint, const char *);
static void mklabel(u=5F= int8=5Ft *, const char *);
static int oklabel(const char *);
+st= atic int exfat=5Foklabel(const u=5Fint8=5Ft *, int len);
static void= setstr(u=5Fint8=5Ft *, const char *, size=5Ft);
+static void fill=5F= exfat=5Fbuffer(u=5Fint8=5Ft *, u=5Fint, const struct bpb *, const struct = msdos=5Foptions *);
+
+static int
+u8to16char(const u=5Fchar = **u8strp, u=5Flong *u8lenp, u=5Fchar **u16strp, u=5Flong *u16lenp) =7B + u=5Flong more;
+ unsigned temp;
+ u=5Fchar c;
+
+ if = (*u8lenp =3D=3D 0)
+ return (0);
*** 791 LINES SKIPPED ***
<= br>
--68933e11_606e017d_a630-- From nobody Wed Aug 6 12:51:54 2025 X-Original-To: dev-commits-src-main@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 4bxqtg1J8bz63gS2; Wed, 06 Aug 2025 12:51: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxqtf6LNvz3fYt; Wed, 06 Aug 2025 12:51:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKVKYdmGtSfKqmuzeHUWS950ymkcDyjP3JRNuO2yFpw=; b=WbhXVurzaxwO2smoANX3CASxqZUyp0Dkii/Kw/ctCQG0SITDJdSx2BUFjjbMhLPKTwZeV7 wWV3blMXzumiKMa59sHGVHxpIvC/wTDFVWgeafX7BKIcJojIljg83bzWhEsFbO74HQwG+c HRBGoktdZhJ9PbcSuU8JqqUlLqcmXwBpuBA4vqE+7RzSq6zwIXKCN12HRnK7ZZQAalMhX8 xI52EH9VXYnkZtY4k1+ept6YvBnJDrO+Qm02icseU+oNMp23BsacbkwcP3693h5w+S98NW 5sj7mU3eMD4tkm37x8B6hp6rNsCF+cIRT3DJo7sZmCUVlNYt2qjX25c6jd6Pbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKVKYdmGtSfKqmuzeHUWS950ymkcDyjP3JRNuO2yFpw=; b=v6Jf3edY/kJaTHB+Sn5DCjTgTFEiQFD/ZPniPm5IEaJWR86h77Q3m7nflQh7tbn116w0HO 6xqGXCIInV1uPdriK4ueJCO9Y5Nl2wqyOouVHW0bqm2KvSbHhrG16+xp0DkD7IveFIP2Iy vAXiGFXIZTDM0vNeT7WRcZWZzEa/p4j4wX30qgKsS2+p/ahBLscVFerC8+W4ItFf07hZNX uxJpTkaPeMEHHB6ShsmUfYqfB1ctw0Xwr55Y4froR5In1k8AYomMYajLb8aHz8/zLilllu W3PGUTpZqQW0T7fPVmrh/Sejtty300XZn6PJAlHxEJQlnikDzFS5BL8sRGtReA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754484714; a=rsa-sha256; cv=none; b=rB/2pDewWaw36p24PZdZfvjDgZhSHRKQ1coMmpIhz15qaty6i9w03PTcCRO9XYXeQqUGZG UO4L4/zgs8XvbXNaUKFUnaiBMnpEtLcolvmjyAgdbr29FsfBL0Gj6wSRniDBCgXSu8i1Tp PyqCTcbmLKQWBQLNLXEnh99N0N1WZRhDr3gm+U7uuD44fYf7CKvENMiVCi/CCHleY5kPXH jMWKvHrYMxpoLhbDpcfZFSZASOP9TA4lN5O2h8XTsmv3AX3huM+iypJNDuU8O1W8yhSCB9 O3pCYNexzGlKqhQdAz+lQxSHBLNqjANFrgOi8+HWeVRip/ziyjlvUzG3gcV5vA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxqtf5vz4z67l; Wed, 06 Aug 2025 12:51:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576CpshU046042; Wed, 6 Aug 2025 12:51:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576CpsB2046039; Wed, 6 Aug 2025 12:51:54 GMT (envelope-from git) Date: Wed, 6 Aug 2025 12:51:54 GMT Message-Id: <202508061251.576CpsB2046039@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: b59aecef032e - main - libc: stop trying to create __ symbols List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b59aecef032eb8287ccdac003341f397214fc9ee Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=b59aecef032eb8287ccdac003341f397214fc9ee commit b59aecef032eb8287ccdac003341f397214fc9ee Author: Brooks Davis AuthorDate: 2025-08-06 11:23:49 +0000 Commit: Brooks Davis CommitDate: 2025-08-06 11:31:24 +0000 libc: stop trying to create __ symbols When we switched to an interposing table (commit 8495e8b1e9e1) for cancelation points we stopped having concrete implementations of __ and instead use __sys_ and __thr_. These entries of the form: __weak_reference(__sys_, __); seem to be intended to preserve these symbols, but they have no effect as __sys_ isn't defined in the translation units in question. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51668 --- lib/libc/sys/accept.c | 2 -- lib/libc/sys/accept4.c | 2 -- lib/libc/sys/aio_suspend.c | 2 -- lib/libc/sys/clock_nanosleep.c | 2 -- lib/libc/sys/close.c | 2 -- lib/libc/sys/connect.c | 2 -- lib/libc/sys/fork.c | 2 -- lib/libc/sys/fsync.c | 2 -- lib/libc/sys/kevent.c | 2 -- lib/libc/sys/msync.c | 2 -- lib/libc/sys/nanosleep.c | 2 -- lib/libc/sys/open.c | 2 -- lib/libc/sys/openat.c | 1 - lib/libc/sys/poll.c | 2 -- lib/libc/sys/ppoll.c | 2 -- lib/libc/sys/pselect.c | 2 -- lib/libc/sys/read.c | 2 -- lib/libc/sys/readv.c | 2 -- lib/libc/sys/recvfrom.c | 2 -- lib/libc/sys/recvmsg.c | 2 -- lib/libc/sys/select.c | 2 -- lib/libc/sys/sendmsg.c | 2 -- lib/libc/sys/sendto.c | 2 -- lib/libc/sys/setcontext.c | 1 - lib/libc/sys/sigaction.c | 1 - lib/libc/sys/sigprocmask.c | 1 - lib/libc/sys/sigsuspend.c | 1 - lib/libc/sys/sigtimedwait.c | 2 -- lib/libc/sys/sigwaitinfo.c | 2 -- lib/libc/sys/swapcontext.c | 1 - lib/libc/sys/wait4.c | 2 -- lib/libc/sys/wait6.c | 2 -- lib/libc/sys/write.c | 2 -- lib/libc/sys/writev.c | 2 -- 34 files changed, 62 deletions(-) diff --git a/lib/libc/sys/accept.c b/lib/libc/sys/accept.c index 95c8b4a58c74..c6fb040ab6d6 100644 --- a/lib/libc/sys/accept.c +++ b/lib/libc/sys/accept.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_accept, __accept); - #pragma weak accept int accept(int s, struct sockaddr *addr, socklen_t *addrlen) diff --git a/lib/libc/sys/accept4.c b/lib/libc/sys/accept4.c index 1a1f75c9f528..146dde9ae6fa 100644 --- a/lib/libc/sys/accept4.c +++ b/lib/libc/sys/accept4.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_accept4, __accept4); - #pragma weak accept4 int accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags) diff --git a/lib/libc/sys/aio_suspend.c b/lib/libc/sys/aio_suspend.c index 592cb5b0e1d7..5a7774705ac2 100644 --- a/lib/libc/sys/aio_suspend.c +++ b/lib/libc/sys/aio_suspend.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_aio_suspend, __aio_suspend); - #pragma weak aio_suspend int aio_suspend(const struct aiocb * const iocbs[], int niocb, diff --git a/lib/libc/sys/clock_nanosleep.c b/lib/libc/sys/clock_nanosleep.c index a50af30e1fb3..db14bd46f85e 100644 --- a/lib/libc/sys/clock_nanosleep.c +++ b/lib/libc/sys/clock_nanosleep.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_clock_nanosleep, __clock_nanosleep); - #pragma weak clock_nanosleep int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, diff --git a/lib/libc/sys/close.c b/lib/libc/sys/close.c index 08a5419361a9..8aa2b9b6ad13 100644 --- a/lib/libc/sys/close.c +++ b/lib/libc/sys/close.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_close, __close); - #pragma weak close int close(int fd) diff --git a/lib/libc/sys/connect.c b/lib/libc/sys/connect.c index e64451683abc..f27813b63df0 100644 --- a/lib/libc/sys/connect.c +++ b/lib/libc/sys/connect.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_connect, __connect); - #pragma weak connect int connect(int s, const struct sockaddr *addr, socklen_t addrlen) diff --git a/lib/libc/sys/fork.c b/lib/libc/sys/fork.c index e907c51b5cee..3af81c14ffb3 100644 --- a/lib/libc/sys/fork.c +++ b/lib/libc/sys/fork.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_fork, __fork); - #pragma weak fork pid_t fork(void) diff --git a/lib/libc/sys/fsync.c b/lib/libc/sys/fsync.c index e542c8cdea48..c58b29ca6a77 100644 --- a/lib/libc/sys/fsync.c +++ b/lib/libc/sys/fsync.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_fsync, __fsync); - int fsync(int fd) { diff --git a/lib/libc/sys/kevent.c b/lib/libc/sys/kevent.c index f16ac89a36c6..e395e16c67f5 100644 --- a/lib/libc/sys/kevent.c +++ b/lib/libc/sys/kevent.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_kevent, __kevent); - #pragma weak kevent int kevent(int kq, const struct kevent *changelist, int nchanges, diff --git a/lib/libc/sys/msync.c b/lib/libc/sys/msync.c index f825db97b947..11dd988300eb 100644 --- a/lib/libc/sys/msync.c +++ b/lib/libc/sys/msync.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_msync, __msync); - #pragma weak msync int msync(void *addr, size_t len, int flags) diff --git a/lib/libc/sys/nanosleep.c b/lib/libc/sys/nanosleep.c index bd0794c3af8e..23c07e3bf5fc 100644 --- a/lib/libc/sys/nanosleep.c +++ b/lib/libc/sys/nanosleep.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_nanosleep, __nanosleep); - #pragma weak nanosleep int nanosleep(const struct timespec *rqtp, struct timespec *rmtp) diff --git a/lib/libc/sys/open.c b/lib/libc/sys/open.c index 57c07637d2aa..dd7bedebf141 100644 --- a/lib/libc/sys/open.c +++ b/lib/libc/sys/open.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_open, __open); - #pragma weak open int open(const char *path, int flags, ...) diff --git a/lib/libc/sys/openat.c b/lib/libc/sys/openat.c index 1cd8e7d90745..ba937cae3a3e 100644 --- a/lib/libc/sys/openat.c +++ b/lib/libc/sys/openat.c @@ -34,7 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_openat, __openat); __sym_compat(openat, __impl_openat, FBSD_1.1); __weak_reference(openat, __impl_openat); __sym_default(openat, openat, FBSD_1.2); diff --git a/lib/libc/sys/poll.c b/lib/libc/sys/poll.c index 5e000f7e728f..8c6a89adb2cb 100644 --- a/lib/libc/sys/poll.c +++ b/lib/libc/sys/poll.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_poll, __poll); - int __weak_symbol __ssp_real(poll)(struct pollfd pfd[], nfds_t nfds, int timeout) { diff --git a/lib/libc/sys/ppoll.c b/lib/libc/sys/ppoll.c index 72c0b5d5e421..5ffc35a8cbb0 100644 --- a/lib/libc/sys/ppoll.c +++ b/lib/libc/sys/ppoll.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_ppoll, __ppoll); - int __weak_symbol __ssp_real(ppoll)(struct pollfd pfd[], nfds_t nfds, const struct timespec *__restrict timeout, diff --git a/lib/libc/sys/pselect.c b/lib/libc/sys/pselect.c index 38477e39af44..2c1c9896d6b9 100644 --- a/lib/libc/sys/pselect.c +++ b/lib/libc/sys/pselect.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_pselect, __pselect); - #pragma weak pselect int pselect(int n, fd_set *rs, fd_set *ws, fd_set *es, const struct timespec *t, diff --git a/lib/libc/sys/read.c b/lib/libc/sys/read.c index b4610e0c38c3..75cc7e42b013 100644 --- a/lib/libc/sys/read.c +++ b/lib/libc/sys/read.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_read, __read); - #pragma weak read ssize_t read(int fd, void *buf, size_t nbytes) diff --git a/lib/libc/sys/readv.c b/lib/libc/sys/readv.c index 2729f6ed99da..83b4bf9ba3e6 100644 --- a/lib/libc/sys/readv.c +++ b/lib/libc/sys/readv.c @@ -36,8 +36,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_readv, __readv); - ssize_t __weak_symbol __ssp_real(readv)(int fd, const struct iovec *iov, int iovcnt) { diff --git a/lib/libc/sys/recvfrom.c b/lib/libc/sys/recvfrom.c index 0cdbd8a4ccaa..f7e2dd2ca6c8 100644 --- a/lib/libc/sys/recvfrom.c +++ b/lib/libc/sys/recvfrom.c @@ -35,8 +35,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_recvfrom, __recvfrom); - ssize_t __weak_symbol __ssp_real(recvfrom)(int s, void *buf, size_t len, int flags, struct sockaddr * __restrict from, socklen_t * __restrict fromlen) diff --git a/lib/libc/sys/recvmsg.c b/lib/libc/sys/recvmsg.c index ce0f5e0478cd..7c820c47b325 100644 --- a/lib/libc/sys/recvmsg.c +++ b/lib/libc/sys/recvmsg.c @@ -35,8 +35,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_recvmsg, __recvmsg); - ssize_t __weak_symbol __ssp_real(recvmsg)(int s, struct msghdr *msg, int flags) { diff --git a/lib/libc/sys/select.c b/lib/libc/sys/select.c index bbbcfc8bf1e0..909449f17da8 100644 --- a/lib/libc/sys/select.c +++ b/lib/libc/sys/select.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_select, __select); - #pragma weak select int select(int n, fd_set *rs, fd_set *ws, fd_set *es, struct timeval *t) diff --git a/lib/libc/sys/sendmsg.c b/lib/libc/sys/sendmsg.c index fd4e41837c48..6c5fb4021ce3 100644 --- a/lib/libc/sys/sendmsg.c +++ b/lib/libc/sys/sendmsg.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sendmsg, __sendmsg); - #pragma weak sendmsg ssize_t sendmsg(int s, const struct msghdr *msg, int flags) diff --git a/lib/libc/sys/sendto.c b/lib/libc/sys/sendto.c index 708fc6ec9368..b8a173f434a9 100644 --- a/lib/libc/sys/sendto.c +++ b/lib/libc/sys/sendto.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sendto, __sendto); - #pragma weak sendto ssize_t sendto(int s, const void *msg, size_t len, int flags, diff --git a/lib/libc/sys/setcontext.c b/lib/libc/sys/setcontext.c index 96b5dc115067..a750c4dfea30 100644 --- a/lib/libc/sys/setcontext.c +++ b/lib/libc/sys/setcontext.c @@ -33,7 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_setcontext, __setcontext); __sym_compat(setcontext, __impl_setcontext, FBSD_1.0); __weak_reference(setcontext, __impl_setcontext); __sym_default(setcontext, setcontext, FBSD_1.2); diff --git a/lib/libc/sys/sigaction.c b/lib/libc/sys/sigaction.c index 809881ca4d3f..7ce177895c81 100644 --- a/lib/libc/sys/sigaction.c +++ b/lib/libc/sys/sigaction.c @@ -33,7 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sigaction, __sigaction); __weak_reference(sigaction, __libc_sigaction); #pragma weak sigaction diff --git a/lib/libc/sys/sigprocmask.c b/lib/libc/sys/sigprocmask.c index 96cb9586509b..8b7fb6fb8e74 100644 --- a/lib/libc/sys/sigprocmask.c +++ b/lib/libc/sys/sigprocmask.c @@ -33,7 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sigprocmask, __sigprocmask); __weak_reference(sigprocmask, __libc_sigprocmask); #pragma weak sigprocmask diff --git a/lib/libc/sys/sigsuspend.c b/lib/libc/sys/sigsuspend.c index e5a9495f9f39..ac117650ed1b 100644 --- a/lib/libc/sys/sigsuspend.c +++ b/lib/libc/sys/sigsuspend.c @@ -33,7 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sigsuspend, __sigsuspend); __weak_reference(sigsuspend, __libc_sigsuspend); #pragma weak sigsuspend diff --git a/lib/libc/sys/sigtimedwait.c b/lib/libc/sys/sigtimedwait.c index 839e5fe4d992..4efa69555f39 100644 --- a/lib/libc/sys/sigtimedwait.c +++ b/lib/libc/sys/sigtimedwait.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sigtimedwait, __sigtimedwait); - #pragma weak sigtimedwait int sigtimedwait(const sigset_t * __restrict set, siginfo_t * __restrict info, diff --git a/lib/libc/sys/sigwaitinfo.c b/lib/libc/sys/sigwaitinfo.c index 611d09c3c221..e94777b731e6 100644 --- a/lib/libc/sys/sigwaitinfo.c +++ b/lib/libc/sys/sigwaitinfo.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_sigwaitinfo, __sigwaitinfo); - #pragma weak sigwaitinfo int sigwaitinfo(const sigset_t * __restrict set, siginfo_t * __restrict info) diff --git a/lib/libc/sys/swapcontext.c b/lib/libc/sys/swapcontext.c index b69a5b19e698..69d4dfea16b5 100644 --- a/lib/libc/sys/swapcontext.c +++ b/lib/libc/sys/swapcontext.c @@ -35,7 +35,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_swapcontext, __swapcontext); __sym_compat(swapcontext, __impl_swapcontext, FBSD_1.0); __weak_reference(swapcontext, __impl_swapcontext); __sym_default(swapcontext, swapcontext, FBSD_1.2); diff --git a/lib/libc/sys/wait4.c b/lib/libc/sys/wait4.c index 57b0071ef87f..1d30c2d44c19 100644 --- a/lib/libc/sys/wait4.c +++ b/lib/libc/sys/wait4.c @@ -33,8 +33,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_wait4, __wait4); - #pragma weak wait4 pid_t wait4(pid_t pid, int *status, int options, struct rusage *ru) diff --git a/lib/libc/sys/wait6.c b/lib/libc/sys/wait6.c index 118a7ef6b99e..70817bdb441c 100644 --- a/lib/libc/sys/wait6.c +++ b/lib/libc/sys/wait6.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_wait6, __wait6); - #pragma weak wait6 pid_t wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *ru, diff --git a/lib/libc/sys/write.c b/lib/libc/sys/write.c index 5880856b8af8..15e2d22fdbc5 100644 --- a/lib/libc/sys/write.c +++ b/lib/libc/sys/write.c @@ -34,8 +34,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_write, __write); - #pragma weak write ssize_t write(int fd, const void *buf, size_t nbytes) diff --git a/lib/libc/sys/writev.c b/lib/libc/sys/writev.c index 9a32cb603ab8..b642c6af9a89 100644 --- a/lib/libc/sys/writev.c +++ b/lib/libc/sys/writev.c @@ -35,8 +35,6 @@ #include #include "libc_private.h" -__weak_reference(__sys_writev, __writev); - #pragma weak writev ssize_t writev(int fd, const struct iovec *iov, int iovcnt) From nobody Wed Aug 6 12:51:55 2025 X-Original-To: dev-commits-src-main@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 4bxqth2qSJz63gZq; Wed, 06 Aug 2025 12:51: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxqtg6xmDz3fP5; Wed, 06 Aug 2025 12:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uFvKzLLlbT/vhZVS4oylTRfLdjks/kmetq88Fk+3D80=; b=f9i86B6lD7N7E9DWMsW4rg0MdlyRIdVsjDH1AIygoAyYC+4oIbQYO12wOCe2yGqQudBcFk yMPyM0gEgc8M6Ub9K9Y1vKVF31lGm+cnyNDtTWt1q1okwMWkx5uo9MdFwIKBPq5XyAvMcv aJw6umOuKodwN4MEhLYbDR24/oCmtEvagvveEs45hMvwLMlhQwDzkkUu4ubgqofk7fvux4 28x/6XraNumJm8uP/CCl0KyWoeFNTERIwgCIvbnlnU3ef79+ZP5LGaDYGenPvZ91PZ/P84 WRXQHUBTICMUeZCIcBIAMwpMqwYpDTKix03DzFD0//dYO4jJ6buaQbsvuPvBuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uFvKzLLlbT/vhZVS4oylTRfLdjks/kmetq88Fk+3D80=; b=M2dHU2q+vWk9SHwC4x5KTA+5lgzJhN8J81B+fAtW+AV5WIdOgaScLPmdHp9cBTpFAU93CF DjR0DDwlWlQ0YTigBCbAOEJDgU4xRClCndavBb0Gc9oHRMxmC3hZWsLnzvGOb4PoxVXhsP VIZ0dPqK9glg9FCTM002BFJsGUhW1Vxhj4KUH0HEQQUOIig73hCkxNsn1TacKMefEf8hBR YxBUw7ffVJ+3g3K5Z0BW+WlsQRnw06M3X3sCpN1tPOpG6QPYaT69PE7QDG7rtbrynuRc6F CQw5sUwWx4DyISIie946u0Cm5ss1Vnvu7XgP5zp8fF6tYqrS5B3zUa3HI4j3pw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754484716; a=rsa-sha256; cv=none; b=xvNT23Ik1DdYdq20i7eCb2+0tE4JuXfkJFrU966Uek3T//dpjODR0524eDuT9tjQ9sI7f3 m3sOKVJpEetpS2trPgz0ctUJFmzJNG+Bqpnr/6ax/SjpdKdf96wBzaL2BdFGEeYXWqHk9i +qFBejFwTDtNjaOSOX4FN7q4u4/NmHLKov9iTSl/b2t/yoOLapAYt00C/+P6eMiI8DfQhU hnrsvZDEtWPGauRdqEo+jVe7yGEcMp8o1enEj1cReYN4O5Wuqs+BSIByEYqfw0amVCE4Lk LcTS167U8iocCISwKRIjeq9DvIo7vb5B9oMeusiCliYeBjEBA5tdqaUbdlhC+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxqtg6V4hz5my; Wed, 06 Aug 2025 12:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576CptJg046077; Wed, 6 Aug 2025 12:51:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576Cpt7L046074; Wed, 6 Aug 2025 12:51:55 GMT (envelope-from git) Date: Wed, 6 Aug 2025 12:51:55 GMT Message-Id: <202508061251.576Cpt7L046074@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 40a4508c4f90 - main - libthr: GC unused _sigsuspend() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 40a4508c4f90565fbc6db6e226c45b03155c4b60 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=40a4508c4f90565fbc6db6e226c45b03155c4b60 commit 40a4508c4f90565fbc6db6e226c45b03155c4b60 Author: Brooks Davis AuthorDate: 2025-08-06 11:24:01 +0000 Commit: Brooks Davis CommitDate: 2025-08-06 11:31:24 +0000 libthr: GC unused _sigsuspend() There are no consumers and it isn't a public symbol. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D51670 --- lib/libthr/thread/thr_init.c | 1 - lib/libthr/thread/thr_sig.c | 8 -------- 2 files changed, 9 deletions(-) diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c index 64cf7d004070..0f9e3749d75f 100644 --- a/lib/libthr/thread/thr_init.c +++ b/lib/libthr/thread/thr_init.c @@ -170,7 +170,6 @@ STATIC_LIB_REQUIRE(_sem_trywait); STATIC_LIB_REQUIRE(_sem_wait); STATIC_LIB_REQUIRE(_sigaction); STATIC_LIB_REQUIRE(_sigprocmask); -STATIC_LIB_REQUIRE(_sigsuspend); STATIC_LIB_REQUIRE(_sigtimedwait); STATIC_LIB_REQUIRE(_sigwait); STATIC_LIB_REQUIRE(_sigwaitinfo); diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c index 2cd3de512d1c..4bff5497a804 100644 --- a/lib/libthr/thread/thr_sig.c +++ b/lib/libthr/thread/thr_sig.c @@ -682,14 +682,6 @@ _thr_sigmask(int how, const sigset_t *set, sigset_t *oset) return (0); } -int -_sigsuspend(const sigset_t *set) -{ - sigset_t newset; - - return (__sys_sigsuspend(thr_remove_thr_signals(set, &newset))); -} - int __thr_sigsuspend(const sigset_t *set) { From nobody Wed Aug 6 12:51:56 2025 X-Original-To: dev-commits-src-main@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 4bxqtj2mWsz63gVP; Wed, 06 Aug 2025 12:51:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxqtj0xyhz3fK3; Wed, 06 Aug 2025 12:51:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484717; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+lDUwMPOZkjYVyOykYgIw2FPx4o4CNLNz6/+WXUjz+0=; b=I0Qx9cZyzeugnVToLmcQdMvPSpaKo1nedvvEAnFhImCUv0Zr3UcHr/5eRDEPddxT5KDLZ6 WUz8nGT0W9iAMlPIWQcCfkhFtk2WDsvb/LxA7a+wLKT2fXxQnmOYxJ00U8YGXeXCC/Z+0P eW7MF4RpPqMRiLP+kyj+qsIS0MQiY7R8qW6dYdXrE4vgeXQ2aufwuDA1J1XZEhiYxlVQIn cShZcYTrI2dVltv2dpX92eNt1zTPEpE11i9dNg3/Zo2nZ4C15DicMfJiNIXPGvgYhOOWNM ZAlG+HrxPD1V2n2bD68gK+dwTXpnWP6dRV5SlMQ+dqfUhwIozMsRv6eu59iI6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754484717; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+lDUwMPOZkjYVyOykYgIw2FPx4o4CNLNz6/+WXUjz+0=; b=lddRMqI/GYUfWQu7cuoFspKNYWU50uiMseTUYC7KP51j4bGOOm1cJZD1+/kQMvwgmOXyla 1xRqVOAU1GJvO/TTJlpg+culy9oBVBla2y9Ii5NrMwtK8PdRNHwztVd3dX5WvjIIy/NMjU 5VQk3WtWYhnUFa2OQKTQW/4rsALRqNVAVyybETAOtPvlt2HcZ5rJYN/zjPcaYGJykGtpfJ l0X8pOhe8qdmeqcIIDOOeOh3gs5aV7ayD52en+JWuBKhXJaHehbUfISk6TrY3giVbLtAts JMbt+kpjjzMPGOotMx3v1eSN78jhOIvWeG9Fu2k5b6fxYm2a2br1q4xzSaCoZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754484717; a=rsa-sha256; cv=none; b=ajE9BdK9AKOGuM8+88+yAM0jX0/aTVHZUOeTwZVomP9vu4tS0apMLNJSmPtpkPx4FG9AtH /IjGm6LOWU94nkefaShjxqFTlt0KjSQqTkg4zmrwmrSo3/lsxh5r8fbArXsMb4GnpUleoh 7R68t+rZ+QGowNHfQwIx1ttZ3ldHsz0bfZ4EER+ybbyXtpyxd9ZSg3vcErTshwgsHW6MJ7 fNOhFzbEn5ldz7amQIErCUr8pOPyhPydXEf+pxf27II6zZapCdAyyjmdXuZRRNKbK9LsxU tWVJi/GrohXZOvn84TPo9U9CeGGRVGMpX9XzIQz7rXgZRRPW4rJrCeDq2vOasw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxqtj0F0vz5qn; Wed, 06 Aug 2025 12:51:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576CpuVa046112; Wed, 6 Aug 2025 12:51:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576CpuUo046109; Wed, 6 Aug 2025 12:51:56 GMT (envelope-from git) Date: Wed, 6 Aug 2025 12:51:56 GMT Message-Id: <202508061251.576CpuUo046109@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 401d39e38937 - main - libsys: add a dependency for syscall stubs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 401d39e38937c130f4aaacc7817fabfaa4aeeee7 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=401d39e38937c130f4aaacc7817fabfaa4aeeee7 commit 401d39e38937c130f4aaacc7817fabfaa4aeeee7 Author: Brooks Davis AuthorDate: 2025-08-06 11:28:34 +0000 Commit: Brooks Davis CommitDate: 2025-08-06 11:31:24 +0000 libsys: add a dependency for syscall stubs Make syscall stubs generated by lib/libsys/Makefile.sys depend on it. This will have some false positives, but generating and assembling them is fast. Also add slightly dubious dependencies on compat.h and SYS.h. While here, fix the comment documenting the assembly origin. Reviewed by: kib, emaste Differential Revision: https://reviews.freebsd.org/D51671 --- lib/libsys/Makefile.sys | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/libsys/Makefile.sys b/lib/libsys/Makefile.sys index 3eb4bf85153d..7871731dcdcd 100644 --- a/lib/libsys/Makefile.sys +++ b/lib/libsys/Makefile.sys @@ -135,15 +135,28 @@ FEATURE_NOTE='\#include \nGNU_PROPERTY_AARCH64_FEATURE_1_NOTE( FEATURE_NOTE='' .endif -${SASM}: - printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET} +# Add this file as a dependency of the generated assembly along with +# the two included files compat.h and SYS.h. Depending on this Makefile +# will cause some needless regenerations, but handles both changes in +# generated assembly and movement between MIASM and PSEUDO/INTERPOSED. +# The dependency on compat.h and SYS.h should properly be on the +# .S->.o rules, but there are too many .o variants for it to +# be easy and touching the geneated source files has the same effect in +# practice. +__makefile_sys:= ${.PARSEDIR}/${.PARSEFILE} +__asm_deps= ${__makefile_sys} \ + ${LIBC_SRCTOP}/include/compat.h \ + ${LIBSYS_SRCTOP}/${LIBC_ARCH}/SYS.h + +${SASM}: ${__asm_deps} + printf '/* %sgenerated by libsys/Makefile.sys */\n' @ > ${.TARGET} printf '#include "compat.h"\n' >> ${.TARGET} printf '#include "SYS.h"\nRSYSCALL(${.PREFIX})\n' >> ${.TARGET} printf ${NOTE_GNU_STACK} >>${.TARGET} printf ${FEATURE_NOTE} >> ${.TARGET} -${SPSEUDO}: - printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET} +${SPSEUDO}: ${__asm_deps} + printf '/* %sgenerated by libsys/Makefile.sys */\n' @ > ${.TARGET} printf '#include "compat.h"\n' >> ${.TARGET} printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \ >> ${.TARGET} From nobody Wed Aug 6 13:37:38 2025 X-Original-To: dev-commits-src-main@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 4bxrvR4JZqz63jTN; Wed, 06 Aug 2025 13:37:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxrvR1Hccz3kBG; Wed, 06 Aug 2025 13:37:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487459; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jt8HLJ0zfWa70HmGAvO7UGBg1KOE6xre1q0lCtUi8cU=; b=c0AB9tVJ/ShqX4RgKO5sfdyriJNNMFQKXOV+3ac7BIMm2qv4HxdqYMYbCxBOyNzwtBxGk6 wCWMhA+hjn6qIMX0soF2/8ETDFNuTxDPWFFVZmrMC/DYb+SzKGaVXiRxsPUeyWATHhtgLo 1wonqu3Ul04lAiYI1k0Q2r90jJwR37xq4hgqd7p616/Kjp4+tlK5ZBgYWFk5pXndTXQn9N iAspJyYy+MGENv5tHmH9khY4forIflWyhVzkVNLc4MKAmuhecVj4r8zMx/DpKWySYoCK7g v6UnCIAVWLxOCn8/xPxdIx4FyWdZYvNxsUNScNdllbIAqHG3jPQhX++FoATSEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487459; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jt8HLJ0zfWa70HmGAvO7UGBg1KOE6xre1q0lCtUi8cU=; b=tdxnzWKqUVc5zz9hwPqqag+JSZQ0T2NtTZWSItOMkQeWoOGwHmG5UXaxsGEdzZKSL9sG3m A64ixOnTDDkUq3i3hTnBsQxvMCjCixGIEHUwy7fbcTMU+yWGNtM7dI2yd7w9ig7jnXlK0p yE43ZPTLsZeVLF3q1ntTqxAcavfz3DmpDDxkIa6tvHd4jEedoR1qnMx/5/eHnC+F0qRwat ZVkGPhKWU5APZIDp2iieCfmCuTouLSG9bZjwHX0B94AAoiMUtXnVvyaMZfPzxztRerunKM ENYDxmJKCQPTh2xEGwEi+rEsmyOfy4s+DOtXxOAds4rHI00CerBm2uCpTqrGWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754487459; a=rsa-sha256; cv=none; b=Bsmc8RsnrCVF9KVcHl0+RuAGPLilNZ+2xgPZsbqjIwmcH3tML/BrchQwvgDcIZ0vrX+prH iKBT2Hi1kpjxrq2fs/jOEPlwHzSEbp906eVdbUoq9DGYNnCVPmdCFTi0G3pLMz+dfvRkpb uZ6peCJRaZeZ5OoT+dwj63SQiYeyHnqb/p+HjWEy9q6xKXaIRbkea5ECtBaRyMuR6a7G4B sst3q/kg/IIQZOg8L0YbCm32lLQOXm4XKbVbcnN2fQlzvCMeMlqpDMyehLHZw3J2J+JdSR Wgita4u1QIKCapNWPDysjpXmdrqa1US9PHXBElB/0C51q8KBPWyvPX5+cnA1Wg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxrvR0lnVz6cY; Wed, 06 Aug 2025 13:37:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Dbddk023980; Wed, 6 Aug 2025 13:37:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576DbcEv023976; Wed, 6 Aug 2025 13:37:38 GMT (envelope-from git) Date: Wed, 6 Aug 2025 13:37:38 GMT Message-Id: <202508061337.576DbcEv023976@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 1f9da4793cb1 - main - ObsoleteFiles: Deduplicate krb5 entries List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 1f9da4793cb1abfe393f34aa67504f949482808f Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1f9da4793cb1abfe393f34aa67504f949482808f commit 1f9da4793cb1abfe393f34aa67504f949482808f Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 13:36:36 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 13:36:36 +0000 ObsoleteFiles: Deduplicate krb5 entries Fixes: dd0ec030f8fd Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D51712 --- ObsoleteFiles.inc | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index cc6a29c25f5d..c33cab3da5ae 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -83,18 +83,6 @@ OLD_LIBS+=usr/lib/libkrb5.so.121 OLD_LIBS+=usr/lib/libkrb5profile.so.121 OLD_LIBS+=usr/lib/libkrb5support.so.121 OLD_LIBS+=usr/lib/libverto.so.121 -OLD_LIBS+=usr/lib/libcom_err.so.121 -OLD_LIBS+=usr/lib/libgssapi_krb5.so.121 -OLD_LIBS+=usr/lib/libgssrpc.so.121 -OLD_LIBS+=usr/lib/libk5crypto.so.121 -OLD_LIBS+=usr/lib/libkadm5clnt_mit.so.121 -OLD_LIBS+=usr/lib/libkadm5srv_mit.so.121 -OLD_LIBS+=usr/lib/libkdb5.so.121 -OLD_LIBS+=usr/lib/libkrad.so.121 -OLD_LIBS+=usr/lib/libkrb5.so.121 -OLD_LIBS+=usr/lib/libkrb5profile.so.121 -OLD_LIBS+=usr/lib/libkrb5support.so.121 -OLD_LIBS+=usr/lib/libverto.so.121 # 20250726: xargs tests rewritten OLD_FILES+=usr/tests/usr.bin/xargs/legacy_test From nobody Wed Aug 6 13:37:40 2025 X-Original-To: dev-commits-src-main@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 4bxrvS4WFYz63jtN; Wed, 06 Aug 2025 13:37:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxrvS2Dndz3jxH; Wed, 06 Aug 2025 13:37:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XHPNx57k6HQC4H+0h8AmLkbxL/PnW0getZszjGQkVDM=; b=AMSvXLQMiV8f6U80WGfjVprgdhUITmLngBHxYXj30P17RpKfmd6hIIeFImCuv3NMBj+GEx ilr/mOvnMRYcffgU1wYz4C+9/9OvLY8f/GV5qVz/D+asHHJBtbEVnCcLjDunsQ4gHDhx4X XGXV+FXU2zazzeV8bDAQcjg+Sk1M4SqnctjsSAynUFnqZ1ySZloGC/N758V5cjcglXJ4a9 X+08Ld+pq2Kpz5UXU3PskPDe0HWWJXdN0jihl7/7U1FLNq6mfc3KzEtbGLGHOwSGi/W2aL M7skF1RP4HFs1m+K9ijGCfleD3HBsRp8Fb5+iVPmsl23antnIvCW1AX812NjZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487460; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XHPNx57k6HQC4H+0h8AmLkbxL/PnW0getZszjGQkVDM=; b=ctPv/G+sjC5m0tMinTHoI6ripRvrwtwRC3ok2IUP3W/4fQkgZGoiPtkK5eiapK6u74oP25 BNadL7y8igz51Evu7twODAjuvBgbkz17nAoFE9318fuSjjbzW50auZCojPkk+YSPLXooji KZ50kGSvGjAs4gfRvyZCX+Kein+oKR/v6DChs0xOwj7uEjw4pUiCJQNBFaAUiVIbnOntxq YkYVW04BI/RyMUSaUmYrp+Jsp+iLwIsAfOt+DDi0p+WlmBWU0N9klwinptpBPFAjYBe3dN NDk1615zA6C6E9r09aBdwXdYBVHRx2di/Hy7gwcv3RlOogTRWcuJf7v9afJtfQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754487460; a=rsa-sha256; cv=none; b=axs5rOEu8evsQMzSACmO+vavqXjOJ9LQioc80+tPYQm63pGYHjii0HWDGi4QPPVWC1/e2H 68vbBrL2HEkCNuMsdalArCrJ/VLnMAhrS9vgDqYURO3UI5bdpaUHnT3KJzP1qoE48WDtsQ uxZm8Zfmp4smngsGKFxCmPMt3NNaFDE4I4vJc8BWTQE5rGXWvxLghn+pVfA/IazOv87Lno uCtieQZU4wGPCbKwrvJNI8aJaA+Qcx4Ed9qUmKKnlxYJdRGGILMcjFj8A0oERpFg427IwM t0gN1Zg70teFiv7TibpdGtuXPjvL7z/YguCnOnQRuzuRncoFnMwyuL880zf4nQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxrvS1pBGz6cZ; Wed, 06 Aug 2025 13:37:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576DbeIA024018; Wed, 6 Aug 2025 13:37:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576DbeZr024015; Wed, 6 Aug 2025 13:37:40 GMT (envelope-from git) Date: Wed, 6 Aug 2025 13:37:40 GMT Message-Id: <202508061337.576DbeZr024015@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 7b8c9de17448 - main - ObsoleteFiles: Fully remove publickey(5) stuff List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 7b8c9de17448110b42b8ea57f182a879b5ae4675 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=7b8c9de17448110b42b8ea57f182a879b5ae4675 commit 7b8c9de17448110b42b8ea57f182a879b5ae4675 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 13:36:41 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 13:36:41 +0000 ObsoleteFiles: Fully remove publickey(5) stuff Fixes: 9dcb984251b3 Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D51713 --- ObsoleteFiles.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index c33cab3da5ae..b921320a0e25 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -203,7 +203,7 @@ OLD_FILES+=usr/sbin/keyserv OLD_FILES+=usr/bin/newkey OLD_FILES+=usr/share/man/man1/chkey.1.gz OLD_FILES+=usr/share/man/man1/keylogin.1.gz -OLD_FILES+=usr/share/man/man1/keylogin.1.gz +OLD_FILES+=usr/share/man/man1/keylogout.1.gz OLD_FILES+=usr/share/man/man5/publickey.5.gz OLD_FILES+=usr/share/man/man8/keyserv.1.gz OLD_FILES+=etc/rc.d/keyserv From nobody Wed Aug 6 13:37:41 2025 X-Original-To: dev-commits-src-main@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 4bxrvT5KnDz63jTR; Wed, 06 Aug 2025 13:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxrvT3FFFz3jtm; Wed, 06 Aug 2025 13:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H92M2+vnjhSVJJs3JxMXoGVnzNDX3kiQ0G6E4OGPgV0=; b=JJcfizn2WOPGhNAkN+gRSK5QbplxhyvfeuFAxO8YRAz/U/GpuzzfFVZ0nWokdjM+6CKILR kWfWG35Qy2Yy7dulatdtpIAMDx1RFMhMhBLqWeB+Tl063L1t5UNoZB7yysMjz2Wt0nMUYn 6uEHtx4OG1dNjQffNx6/ADaCWqi85p3qkh4LprTkNWkn4v9JE69MloqWO4VMgmRKTSzG38 xzPZv5AacIJ2anSNWz9FpGsB2oePDQxsPEoAKLqIbNJgZnXkBC+3IIQPshjtRAbeAZqUqW 93ICfva0XaVo13/fiqR8mYnjCkxIohle//jokyQwLFgKF5+txoIb7HU/FHPH4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H92M2+vnjhSVJJs3JxMXoGVnzNDX3kiQ0G6E4OGPgV0=; b=q+1TZu6I52d7qo2qdVHF/LpM/+fFdbAF3PB8S1p79hhrEnPhANDinrgS0MDf3nBEMtUvFe O+SFWXhNdOMsMMnPA6PufA1rijxCMAREbbdACos/buUxZPWoJ37rUswBJGV9q8/Xcw67NC 6AAfXXp4UdvzqvZAsQwOEJXiwgX6T5+8iEL3GHxqprKe87m//KVHw1oo2leb0NB9lFn29e KPfHcBQuFrocYOlwlvbfXBlo5SsNPLjoDsU90IsCujgCp16q9XaWtQIs5jn11D1ISvm0M1 3ZBx6iibb7S29yBv/lbXYAn5k1TpHNkfWS2vXsyUghtS5bLZB6gtYXU5zSK5Wg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754487461; a=rsa-sha256; cv=none; b=q9m+NT7RpNPWQEdnz1mJAt7/dPDz7AmKnErUaXw/6fPKERPe6xrPApWyX0LiSZ37MgIT/T oyjj0MdpiUO9lCbjqeyRAYJWafOz6wn0WOaTLeQ4SoJXw8G4+gOD35//BNkpwXuSxFfwMl xHxOsB6dFVkLwvms7fA8FYKrXGEpWbjwzM2JhCqNO+B9DXah2VO4/0zHODYefVksWPlsZ7 3wOsuoXHvE80okIbgofYKrkMkcOcrFU8T5mfKp6V7MiVqogJhkaKhuvMlrhQ3TC/IuYYQp 4ESoYlm14GJ3P/r6QhP04yjOSuJnOwoAKRpLxAAojyRKPZZIJ1Wf7kce+6rrrw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxrvT2rKSz6WL; Wed, 06 Aug 2025 13:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Dbfok024055; Wed, 6 Aug 2025 13:37:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576DbfSc024052; Wed, 6 Aug 2025 13:37:41 GMT (envelope-from git) Date: Wed, 6 Aug 2025 13:37:41 GMT Message-Id: <202508061337.576DbfSc024052@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 662a0a01de58 - main - ObsoleteFiles: Remove old entries List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 662a0a01de584c698d1056ef8b36b16896f2470d Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=662a0a01de584c698d1056ef8b36b16896f2470d commit 662a0a01de584c698d1056ef8b36b16896f2470d Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 13:36:59 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 13:36:59 +0000 ObsoleteFiles: Remove old entries This removes entries that predate stable/12 and a few dupes. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D51714 --- ObsoleteFiles.inc | 8301 ----------------------------------------------------- 1 file changed, 8301 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index b921320a0e25..86a449c80a76 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -240,7 +240,6 @@ OLD_FILES+=usr/lib/libalias_skinny_p.a OLD_FILES+=usr/lib/libalias_smedia_p.a OLD_FILES+=usr/lib/libarchive_p.a OLD_FILES+=usr/lib/libasn1_p.a -OLD_FILES+=usr/lib/libauditd_p.a OLD_FILES+=usr/lib/libavl_p.a OLD_FILES+=usr/lib/libbe_p.a OLD_FILES+=usr/lib/libbegemot_p.a @@ -327,7 +326,6 @@ OLD_FILES+=usr/lib/libnss_tacplus_p.a OLD_FILES+=usr/lib/libnv_p.a OLD_FILES+=usr/lib/libnvpair_p.a OLD_FILES+=usr/lib/libopencsd_p.a -OLD_FILES+=usr/lib/libopie_p.a OLD_FILES+=usr/lib/libpanel_p.a OLD_FILES+=usr/lib/libpanelw_p.a OLD_FILES+=usr/lib/libpathconv_p.a @@ -340,7 +338,6 @@ OLD_FILES+=usr/lib/libprivateauditd_p.a OLD_FILES+=usr/lib/libprivatebsdstat_p.a OLD_FILES+=usr/lib/libprivatecbor_p.a OLD_FILES+=usr/lib/libprivatedevdctl_p.a -OLD_FILES+=usr/lib/libprivateevent_p.a OLD_FILES+=usr/lib/libprivateevent1_p.a OLD_FILES+=usr/lib/libprivatefido2_p.a OLD_FILES+=usr/lib/libprivategmock_main_p.a @@ -349,7 +346,6 @@ OLD_FILES+=usr/lib/libprivategtest_main_p.a OLD_FILES+=usr/lib/libprivategtest_p.a OLD_FILES+=usr/lib/libprivateheimipcc_p.a OLD_FILES+=usr/lib/libprivateheimipcs_p.a -OLD_FILES+=usr/lib/libprivateifconfig_p.a OLD_FILES+=usr/lib/libprivateldns_p.a OLD_FILES+=usr/lib/libprivatesqlite3_p.a OLD_FILES+=usr/lib/libprivatessh_p.a @@ -373,9 +369,7 @@ OLD_FILES+=usr/lib/libspl_p.a OLD_FILES+=usr/lib/libssl_p.a OLD_FILES+=usr/lib/libstats_p.a OLD_FILES+=usr/lib/libstdbuf_p.a -OLD_FILES+=usr/lib/libstdc++_p.a OLD_FILES+=usr/lib/libstdthreads_p.a -OLD_FILES+=usr/lib/libsupc++_p.a OLD_FILES+=usr/lib/libsysdecode_p.a OLD_FILES+=usr/lib/libtacplus_p.a OLD_FILES+=usr/lib/libtermcap_p.a @@ -11493,8300 +11487,5 @@ OLD_FILES+=usr/share/man/man4/nsp.4.gz OLD_FILES+=usr/share/man/man4/stg.4.gz # 20181021: mse(4) removal OLD_FILES+=usr/share/man/man4/mse.4.gz -# 20181015: Stale libcasper(3) files following r329452 -OLD_LIBS+=lib/casper/libcap_sysctl.so.0 -OLD_LIBS+=lib/casper/libcap_grp.so.0 -OLD_LIBS+=lib/casper/libcap_pwd.so.0 -OLD_LIBS+=lib/casper/libcap_random.so.0 -OLD_LIBS+=lib/casper/libcap_dns.so.0 -OLD_LIBS+=lib/casper/libcap_syslog.so.0 -# 20181012: rename of ixlv(4) to iavf(4) -OLD_FILES+=usr/share/man/man4/if_ixlv.4.gz -OLD_FILES+=usr/share/man/man4/ixlv.4.gz -# 20181009: OpenSSL 1.1.1 -OLD_FILES+=usr/include/openssl/des_old.h -OLD_FILES+=usr/include/openssl/dso.h -OLD_FILES+=usr/include/openssl/krb5_asn.h -OLD_FILES+=usr/include/openssl/kssl.h -OLD_FILES+=usr/include/openssl/pqueue.h -OLD_FILES+=usr/include/openssl/ssl23.h -OLD_FILES+=usr/include/openssl/ui_compat.h -OLD_FILES+=usr/share/openssl/man/man1/dss1.1.gz -OLD_FILES+=usr/share/openssl/man/man1/md2.1.gz -OLD_FILES+=usr/share/openssl/man/man1/md4.1.gz -OLD_FILES+=usr/share/openssl/man/man1/md5.1.gz -OLD_FILES+=usr/share/openssl/man/man1/mdc2.1.gz -OLD_FILES+=usr/share/openssl/man/man1/ripemd160.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha1.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha224.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha256.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha384.1.gz -OLD_FILES+=usr/share/openssl/man/man1/sha512.1.gz -OLD_FILES+=usr/share/openssl/man/man1/x509v3_config.1.gz -OLD_FILES+=usr/share/openssl/man/man3/ASN1_STRING_length_set.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BIO_get_conn_int_port.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BIO_get_conn_ip.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BIO_set.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BIO_set_conn_int_port.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BIO_set_conn_ip.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_get_thread_id.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_set_thread_id.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_thread_id.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_MONT_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_RECP_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BN_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_memdup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_memdup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_strdup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_strlcat.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_strlcpy.3.gz -OLD_FILES+=usr/share/openssl/man/man3/BUF_strndup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CMS_set1_signer_cert.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_cmp.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_cpy.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_current.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_get_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_hash.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_set_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_destroy_dynlockid.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_get_new_dynlockid.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_lock.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_num_locks.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_create_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_destroy_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_lock_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_locking_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/DES_ede3_cbcm_encrypt.3.gz -OLD_FILES+=usr/share/openssl/man/man3/DES_enc_read.3.gz -OLD_FILES+=usr/share/openssl/man/man3/DES_enc_write.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EC_KEY_get_key_method_data.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EC_KEY_insert_key_method_data.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EC_POINT_set_Jprojective_coordinates.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ERR_load_UI_strings.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_CIPHER_CTX_cleanup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_CIPHER_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_MAX_MD_SIZE.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_cleanup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_create.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_destroy.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEVP_PKEY_CTX_set_app_data.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_CTX_set_rsa_rsa_keygen_bits.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_get_default_digest.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_dss.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_dss1.3.gz -OLD_FILES+=usr/share/openssl/man/man3/EVP_sha.3.gz -OLD_FILES+=usr/share/openssl/man/man3/HMAC_CTX_cleanup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/HMAC_CTX_init.3.gz -OLD_FILES+=usr/share/openssl/man/man3/HMAC_cleanup.3.gz -OLD_FILES+=usr/share/openssl/man/man3/OPENSSL_ia32cap_loc.3.gz -OLD_FILES+=usr/share/openssl/man/man3/PEM.3.gz -OLD_FILES+=usr/share/openssl/man/man3/RAND_SSLeay.3.gz -OLD_FILES+=usr/share/openssl/man/man3/RSA_PKCS1_SSLeay.3.gz -OLD_FILES+=usr/share/openssl/man/man3/RSA_null_method.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_need_tmp_rsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_custom_cli_ext.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_default_read_ahead.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_tmp_rsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_tmp_rsa_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_add_session.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_flush_sessions.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_get_accept_state.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_get_msg_callback_arg.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_need_tmp_rsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_remove_session.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_set_tmp_rsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSL_set_tmp_rsa_callback.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLeay.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLeay_add_ssl_algorithms.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLeay_version.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLv2_client_method.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLv2_method.3.gz -OLD_FILES+=usr/share/openssl/man/man3/SSLv2_server_method.3.gz -OLD_FILES+=usr/share/openssl/man/man3/X509_STORE_CTX_set_chain.3.gz -OLD_FILES+=usr/share/openssl/man/man3/X509_STORE_CTX_trusted_stack.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/blowfish.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_add_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_check_top.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_cmp_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_div_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_dump.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_expand.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_expand2.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_fix_top.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_internal.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_add_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_comba4.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_comba8.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_high.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_low_normal.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_low_recursive.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_normal.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_part_recursive.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_recursive.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_mul_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_print.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_set_high.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_set_low.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_set_max.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_comba4.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_comba8.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_normal.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_recursive.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_sub_words.3.gz -OLD_FILES+=usr/share/openssl/man/man3/bn_wexpand.3.gz -OLD_FILES+=usr/share/openssl/man/man3/buffer.3.gz -OLD_FILES+=usr/share/openssl/man/man3/crypto.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPKParameters_bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPKParameters_fp.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPrivate_key.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_Netscape_RSA.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_PKCS8PrivateKey.3.gz -OLD_FILES+=usr/share/openssl/man/man3/d2i_Private_key.3.gz -OLD_FILES+=usr/share/openssl/man/man3/des.3.gz -OLD_FILES+=usr/share/openssl/man/man3/des_read_2passwords.3.gz -OLD_FILES+=usr/share/openssl/man/man3/des_read_password.3.gz -OLD_FILES+=usr/share/openssl/man/man3/des_read_pw.3.gz -OLD_FILES+=usr/share/openssl/man/man3/des_read_pw_string.3.gz -OLD_FILES+=usr/share/openssl/man/man3/dh.3.gz -OLD_FILES+=usr/share/openssl/man/man3/dsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ec.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ecdsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/engine.3.gz -OLD_FILES+=usr/share/openssl/man/man3/err.3.gz -OLD_FILES+=usr/share/openssl/man/man3/evp.3.gz -OLD_FILES+=usr/share/openssl/man/man3/hmac.3.gz -OLD_FILES+=usr/share/openssl/man/man3/i2d_ECPKParameters_bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/i2d_ECPKParameters_fp.3.gz -OLD_FILES+=usr/share/openssl/man/man3/i2d_Netscape_RSA.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_delete.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_doall.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_doall_arg.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_error.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_free.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_insert.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_new.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_node_stats.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_node_stats_bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_node_usage_stats.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_node_usage_stats_bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_retrieve.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_stats.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lh_stats_bio.3.gz -OLD_FILES+=usr/share/openssl/man/man3/lhash.3.gz -OLD_FILES+=usr/share/openssl/man/man3/md5.3.gz -OLD_FILES+=usr/share/openssl/man/man3/mdc2.3.gz -OLD_FILES+=usr/share/openssl/man/man3/pem.3.gz -OLD_FILES+=usr/share/openssl/man/man3/rand.3.gz -OLD_FILES+=usr/share/openssl/man/man3/rc4.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ripemd.3.gz -OLD_FILES+=usr/share/openssl/man/man3/rsa.3.gz -OLD_FILES+=usr/share/openssl/man/man3/sha.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ssl.3.gz -OLD_FILES+=usr/share/openssl/man/man3/threads.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ui.3.gz -OLD_FILES+=usr/share/openssl/man/man3/ui_compat.3.gz -OLD_FILES+=usr/share/openssl/man/man3/x509.3.gz -OLD_LIBS+=lib/libcrypto.so.8 -OLD_LIBS+=usr/lib/engines/lib4758cca.so -OLD_LIBS+=usr/lib/engines/libaep.so -OLD_LIBS+=usr/lib/engines/libatalla.so -OLD_LIBS+=usr/lib/engines/libcapi.so -OLD_LIBS+=usr/lib/engines/libchil.so -OLD_LIBS+=usr/lib/engines/libcswift.so -OLD_LIBS+=usr/lib/engines/libgost.so -OLD_LIBS+=usr/lib/engines/libnuron.so -OLD_LIBS+=usr/lib/engines/libsureware.so -OLD_LIBS+=usr/lib/engines/libubsec.so -OLD_LIBS+=usr/lib/libssl.so.8 -OLD_LIBS+=usr/lib32/lib4758cca.so -OLD_LIBS+=usr/lib32/libaep.so -OLD_LIBS+=usr/lib32/libatalla.so -OLD_LIBS+=usr/lib32/libcapi.so -OLD_LIBS+=usr/lib32/libchil.so -OLD_LIBS+=usr/lib32/libcswift.so -OLD_LIBS+=usr/lib32/libgost.so -OLD_LIBS+=usr/lib32/libnuron.so -OLD_LIBS+=usr/lib32/libsureware.so -OLD_LIBS+=usr/lib32/libubsec.so -# 20180824: libbe(3) SHLIBDIR fixed to reflect correct location -MOVED_LIBS+=usr/lib/libbe.so.1 -# 20180819: Remove deprecated arc4random(3) stir/addrandom interfaces -OLD_FILES+=usr/share/man/man3/arc4random_addrandom.3.gz -OLD_FILES+=usr/share/man/man3/arc4random_stir.3.gz -# 20180819: send-pr(1) placeholder removal -OLD_FILES+=usr/bin/send-pr -# 20180801: jedec_ts(4) removed -OLD_FILES+=usr/share/man/man4/jedec_ts.4.gz -# 20180725: Cleanup old libcasper.so.0 -OLD_LIBS+=lib/libcasper.so.0 -# 20180722: indent(1) option renamed, test files follow -OLD_FILES+=usr/bin/indent/tests/nsac.0 -OLD_FILES+=usr/bin/indent/tests/nsac.0.pro -OLD_FILES+=usr/bin/indent/tests/nsac.0.stdout -OLD_FILES+=usr/bin/indent/tests/sac.0 -OLD_FILES+=usr/bin/indent/tests/sac.0.pro -OLD_FILES+=usr/bin/indent/tests/sac.0.stdout -# 20180721: move of libmlx5.so.1 and libibverbs.so.1 -MOVED_LIBS+=usr/lib/libmlx5.so.1 -MOVED_LIBS+=usr/lib/libibverbs.so.1 -# 20180720: zfsloader.8 merged into loader.8 -OLD_FILES+=usr/share/man/man8/zfsloader.8.gz -# 20180710: old numa cleanup -OLD_FILES+=usr/include/sys/numa.h -OLD_FILES+=usr/share/man/man2/numa_getaffinity.2.gz -OLD_FILES+=usr/share/man/man2/numa_setaffinity.2.gz -OLD_FILES+=usr/share/man/man1/numactl.1.gz -OLD_FILES+=usr/bin/numactl -# 20180630: new clang import which bumps version from 6.0.0 to 6.0.1 -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/allocator_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/asan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/common_interface_defs.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/coverage_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/dfsan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/esan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/hwasan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/linux_syscall_hooks.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/lsan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/msan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/scudo_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/tsan_interface.h -OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/tsan_interface_atomic.h -OLD_DIRS+=usr/lib/clang/6.0.0/include/sanitizer -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_builtin_vars.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_cmath.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_complex_builtins.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_intrinsics.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_math_forward_declares.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_runtime_wrapper.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__stddef_max_align_t.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__wmmintrin_aes.h -OLD_FILES+=usr/lib/clang/6.0.0/include/__wmmintrin_pclmul.h -OLD_FILES+=usr/lib/clang/6.0.0/include/adxintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/altivec.h -OLD_FILES+=usr/lib/clang/6.0.0/include/ammintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/arm64intr.h -OLD_FILES+=usr/lib/clang/6.0.0/include/arm_acle.h -OLD_FILES+=usr/lib/clang/6.0.0/include/arm_neon.h -OLD_FILES+=usr/lib/clang/6.0.0/include/armintr.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx2intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512bitalgintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512bwintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512cdintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512dqintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512erintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512fintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512ifmaintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512ifmavlintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512pfintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmi2intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmiintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmivlintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlbitalgintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlbwintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlcdintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vldqintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlvbmi2intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlvnniintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vnniintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vpopcntdqintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vpopcntdqvlintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/avxintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/bmi2intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/bmiintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/cetintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/clflushoptintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/clwbintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/clzerointrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/cpuid.h -OLD_FILES+=usr/lib/clang/6.0.0/include/emmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/f16cintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/fma4intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/fmaintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/fxsrintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/gfniintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/htmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/htmxlintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/ia32intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/immintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/lwpintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/lzcntintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/mm3dnow.h -OLD_FILES+=usr/lib/clang/6.0.0/include/mm_malloc.h -OLD_FILES+=usr/lib/clang/6.0.0/include/mmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/module.modulemap -OLD_FILES+=usr/lib/clang/6.0.0/include/msa.h -OLD_FILES+=usr/lib/clang/6.0.0/include/mwaitxintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/nmmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/opencl-c.h -OLD_FILES+=usr/lib/clang/6.0.0/include/pkuintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/pmmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/popcntintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/prfchwintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/rdseedintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/rtmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/s390intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/shaintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/smmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/tbmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/tmmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/vadefs.h -OLD_FILES+=usr/lib/clang/6.0.0/include/vaesintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/vecintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/vpclmulqdqintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/wmmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/x86intrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xmmintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xopintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xsavecintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xsaveintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xsaveoptintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xsavesintrin.h -OLD_FILES+=usr/lib/clang/6.0.0/include/xtestintrin.h -OLD_DIRS+=usr/lib/clang/6.0.0/include -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-i386.so -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-x86_64.so -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-arm.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-armhf.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.safestack-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats_client-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a -OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a -OLD_DIRS+=usr/lib/clang/6.0.0/lib/freebsd -OLD_DIRS+=usr/lib/clang/6.0.0/lib -OLD_DIRS+=usr/lib/clang/6.0.0 -# 20180615: asf(8) removed -OLD_FILES+=usr/sbin/asf -OLD_FILES+=usr/share/man/man8/asf.8.gz -# 20180609: obsolete libc++ files missed from the 5.0.0 import -OLD_FILES+=usr/include/c++/v1/__refstring -OLD_FILES+=usr/include/c++/v1/__undef_min_max -OLD_FILES+=usr/include/c++/v1/tr1/__refstring -OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max -# 20180607: remove nls support from grep -OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/grep.cat -OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/grep.cat -OLD_FILES+=usr/share/nls/ja_JP.SJIS/grep.cat -OLD_FILES+=usr/share/nls/ja_JP.eucJP/grep.cat -OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/grep.cat -OLD_FILES+=usr/share/nls/zh_CN.UTF-8/grep.cat -OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/grep.cat -OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/grep.cat -OLD_FILES+=usr/share/nls/uk_UA.UTF-8/grep.cat -OLD_FILES+=usr/share/nls/ja_JP.UTF-8/grep.cat -# 20180528: libpcap update removed header file -OLD_FILES+=usr/include/pcap/export-defs.h -# 20180517: retire vxge -OLD_FILES+=usr/share/man/man4/if_vxge.4.gz -OLD_FILES+=usr/share/man/man4/vxge.4.gz -# 20180512: Rename Unbound tools -OLD_FILES+=usr/sbin/unbound -OLD_FILES+=usr/sbin/unbound-anchor -OLD_FILES+=usr/sbin/unbound-checkconf -OLD_FILES+=usr/sbin/unbound-control -OLD_FILES+=usr/share/man/man5/unbound.conf.5.gz -OLD_FILES+=usr/share/man/man8/unbound-anchor.8.gz -OLD_FILES+=usr/share/man/man8/unbound-checkconf.8.gz -OLD_FILES+=usr/share/man/man8/unbound-control.8.gz -OLD_FILES+=usr/share/man/man8/unbound.8.gz -# 20180508: retire nxge -OLD_FILES+=usr/share/man/man4/if_nxge.4.gz -OLD_FILES+=usr/share/man/man4/nxge.4.gz -# 20180505: rhosts -OLD_FILES+=usr/share/skel/dot.rhosts -# 20180502: retire ixgb -OLD_FILES+=usr/share/man/man4/if_ixgb.4.gz -OLD_FILES+=usr/share/man/man4/ixgb.4.gz -# 20180501: retire lmc -OLD_FILES+=usr/include/dev/lmc/if_lmc.h -OLD_DIRS+=usr/include/dev/lmc -OLD_FILES+=usr/sbin/lmcconfig -OLD_FILES+=usr/share/man/man4/lmc.4.gz -OLD_FILES+=usr/share/man/man4/if_lmc.4.gz -OLD_FILES+=usr/share/man/man8/lmcconfig.8.gz -# 20180417: remove fuswintr and suswintr -OLD_FILES+=usr/share/man/man9/fuswintr.9.gz -OLD_FILES+=usr/share/man/man9/suswintr.9.gz -# 20180413: remove Arcnet support -OLD_FILES+=usr/include/net/if_arc.h -OLD_FILES+=usr/share/man/man4/cm.4.gz -# 20180409: remove FDDI support -OLD_FILES+=usr/include/net/fddi.h -OLD_FILES+=usr/share/man/man4/fpa.4.gz -# 20180319: remove /boot/overlays, replaced by /boot/dtb/overlays -OLD_DIRS+=boot/overlays -# 20180311: remove sys/sys/i386/include/pcaudioio.h -.if ${TARGET_ARCH} == "i386" -OLD_FILES+=usr/include/machine/pcaudioio.h -.endif -# 20180310: remove sys/sys/dataacq.h -OLD_FILES+=usr/include/sys/dataacq.h -# 20180306: remove DTrace scripts made obsolete by dwatch(1) -OLD_FILES+=usr/share/dtrace/watch_execve -OLD_FILES+=usr/share/dtrace/watch_kill -OLD_FILES+=usr/share/dtrace/watch_vop_remove -# 20180212: move devmatch -OLD_FILES+=usr/sbin/devmatch -# 20180211: remove usb.conf -OLD_FILES+=etc/devd/usb.conf -# 20180208: remove c_rehash(1) -OLD_FILES+=usr/share/openssl/man/man1/c_rehash.1.gz -# 20180206: remove gdbtui -OLD_FILES+=usr/bin/gdbtui -# 20180201: Obsolete forth files -OLD_FILES+=boot/pcibios.4th -# 20180114: new clang import which bumps version from 5.0.1 to 6.0.0 -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/allocator_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/asan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/common_interface_defs.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/coverage_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/dfsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/esan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/linux_syscall_hooks.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/lsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/msan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface_atomic.h -OLD_DIRS+=usr/lib/clang/5.0.1/include/sanitizer -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_builtin_vars.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_cmath.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_complex_builtins.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_intrinsics.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_math_forward_declares.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_runtime_wrapper.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__stddef_max_align_t.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_aes.h -OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_pclmul.h -OLD_FILES+=usr/lib/clang/5.0.1/include/adxintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/altivec.h -OLD_FILES+=usr/lib/clang/5.0.1/include/ammintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/arm_acle.h -OLD_FILES+=usr/lib/clang/5.0.1/include/arm_neon.h -OLD_FILES+=usr/lib/clang/5.0.1/include/armintr.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx2intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512bwintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512cdintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512dqintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512erintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512fintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmaintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmavlintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512pfintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmiintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmivlintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlbwintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlcdintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vldqintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vpopcntdqintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/avxintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/bmi2intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/bmiintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/clflushoptintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/clzerointrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/cpuid.h -OLD_FILES+=usr/lib/clang/5.0.1/include/emmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/f16cintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/fma4intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/fmaintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/fxsrintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/htmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/htmxlintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/ia32intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/immintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/lwpintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/lzcntintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/mm3dnow.h -OLD_FILES+=usr/lib/clang/5.0.1/include/mm_malloc.h -OLD_FILES+=usr/lib/clang/5.0.1/include/mmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/module.modulemap -OLD_FILES+=usr/lib/clang/5.0.1/include/msa.h -OLD_FILES+=usr/lib/clang/5.0.1/include/mwaitxintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/nmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/opencl-c.h -OLD_FILES+=usr/lib/clang/5.0.1/include/pkuintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/pmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/popcntintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/prfchwintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/rdseedintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/rtmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/s390intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/shaintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/smmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/tbmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/tmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/vadefs.h -OLD_FILES+=usr/lib/clang/5.0.1/include/vecintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/wmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/x86intrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xopintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xsavecintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveoptintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xsavesintrin.h -OLD_FILES+=usr/lib/clang/5.0.1/include/xtestintrin.h -OLD_DIRS+=usr/lib/clang/5.0.1/include -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.so -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.so -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-arm.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-armhf.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a -OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a -OLD_DIRS+=usr/lib/clang/5.0.1/lib/freebsd -OLD_DIRS+=usr/lib/clang/5.0.1/lib -OLD_DIRS+=usr/lib/clang/5.0.1 -# 20180109: Remove vestiges of digi(4) driver -OLD_FILES+=usr/include/sys/digiio.h -OLD_FILES+=usr/sbin/digictl -OLD_FILES+=usr/share/man/man8/digictl.8.gz -# 20180107: Convert remaining geli(8) tests to ATF -OLD_FILES+=tests/sys/geom/class/eli/nokey_test.sh -OLD_FILES+=tests/sys/geom/class/eli/readonly_test.sh -# 20180106: Convert most geli(8) tests to ATF -OLD_FILES+=tests/sys/geom/class/eli/attach_d_test.sh -OLD_FILES+=tests/sys/geom/class/eli/configure_b_B_test.sh -OLD_FILES+=tests/sys/geom/class/eli/detach_l_test.sh -OLD_FILES+=tests/sys/geom/class/eli/init_B_test.sh -OLD_FILES+=tests/sys/geom/class/eli/init_J_test.sh -OLD_FILES+=tests/sys/geom/class/eli/init_a_test.sh -OLD_FILES+=tests/sys/geom/class/eli/init_alias_test.sh -OLD_FILES+=tests/sys/geom/class/eli/init_i_P_test.sh -OLD_FILES+=tests/sys/geom/class/eli/integrity_copy_test.sh -OLD_FILES+=tests/sys/geom/class/eli/integrity_data_test.sh -OLD_FILES+=tests/sys/geom/class/eli/integrity_hmac_test.sh -OLD_FILES+=tests/sys/geom/class/eli/onetime_a_test.sh -OLD_FILES+=tests/sys/geom/class/eli/onetime_d_test.sh -# 20171230: Remove /etc/skel from mtree -OLD_DIRS+=etc/skel -# 20171208: Remove basename_r(3) -OLD_FILES+=usr/share/man/man3/basename_r.3.gz -# 20171206: Remove sponge(1) -OLD_FILES+=usr/bin/sponge -OLD_FILES+=usr/share/man/man1/sponge.1.gz -# 20171204: Move fdformat man page from volume 1 to volume 8 -OLD_FILES+=usr/share/man/man1/fdformat.1.gz -# 20171203: libproc version bump -OLD_LIBS+=usr/lib/libproc.so.4 -# 20171203: new clang import which bumps version from 5.0.0 to 5.0.1 -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/allocator_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/asan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/common_interface_defs.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/coverage_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/dfsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/esan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/linux_syscall_hooks.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/lsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/msan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/tsan_interface.h -OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/tsan_interface_atomic.h -OLD_DIRS+=usr/lib/clang/5.0.0/include/sanitizer -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_builtin_vars.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_cmath.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_complex_builtins.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_intrinsics.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_math_forward_declares.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_runtime_wrapper.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__stddef_max_align_t.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__wmmintrin_aes.h -OLD_FILES+=usr/lib/clang/5.0.0/include/__wmmintrin_pclmul.h -OLD_FILES+=usr/lib/clang/5.0.0/include/adxintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/altivec.h -OLD_FILES+=usr/lib/clang/5.0.0/include/ammintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/arm_acle.h -OLD_FILES+=usr/lib/clang/5.0.0/include/arm_neon.h -OLD_FILES+=usr/lib/clang/5.0.0/include/armintr.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx2intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512bwintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512cdintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512dqintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512erintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512fintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512ifmaintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512ifmavlintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512pfintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vbmiintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vbmivlintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlbwintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlcdintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vldqintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vpopcntdqintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/avxintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/bmi2intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/bmiintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/clflushoptintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/clzerointrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/cpuid.h -OLD_FILES+=usr/lib/clang/5.0.0/include/emmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/f16cintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/fma4intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/fmaintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/fxsrintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/htmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/htmxlintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/ia32intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/immintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/lwpintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/lzcntintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/mm3dnow.h -OLD_FILES+=usr/lib/clang/5.0.0/include/mm_malloc.h -OLD_FILES+=usr/lib/clang/5.0.0/include/mmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/module.modulemap -OLD_FILES+=usr/lib/clang/5.0.0/include/msa.h -OLD_FILES+=usr/lib/clang/5.0.0/include/mwaitxintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/nmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/opencl-c.h -OLD_FILES+=usr/lib/clang/5.0.0/include/pkuintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/pmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/popcntintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/prfchwintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/rdseedintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/rtmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/s390intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/shaintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/smmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/tbmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/tmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/vadefs.h -OLD_FILES+=usr/lib/clang/5.0.0/include/vecintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/wmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/x86intrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xmmintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xopintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xsavecintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xsaveintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xsaveoptintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xsavesintrin.h -OLD_FILES+=usr/lib/clang/5.0.0/include/xtestintrin.h -OLD_DIRS+=usr/lib/clang/5.0.0/include -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-i386.so -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-x86_64.so -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-armhf.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a -OLD_DIRS+=usr/lib/clang/5.0.0/lib/freebsd -OLD_DIRS+=usr/lib/clang/5.0.0/lib -OLD_DIRS+=usr/lib/clang/5.0.0 -# 20171118: Remove old etc casper files -OLD_FILES+=etc/casper/system.dns -OLD_FILES+=etc/casper/system.grp -OLD_FILES+=etc/casper/system.pwd -OLD_FILES+=etc/casper/system.random -OLD_FILES+=etc/casper/system.sysctl -OLD_DIRS+=etc/casper -# 20171116: lint(1) removal -OLD_FILES+=usr/bin/lint -OLD_FILES+=usr/libexec/lint1 -OLD_FILES+=usr/libexec/lint2 -OLD_FILES+=usr/libdata/lint/llib-lposix.ln -OLD_FILES+=usr/libdata/lint/llib-lstdc.ln -OLD_FILES+=usr/share/man/man1/lint.1.gz -OLD_FILES+=usr/share/man/man7/lint.7.gz -OLD_DIRS+=usr/libdata/lint -# 20171114: Removal of all fortune datfiles other than freebsd-tips -OLD_FILES+=usr/share/games/fortune/fortunes -OLD_FILES+=usr/share/games/fortune/fortunes.dat -OLD_FILES+=usr/share/games/fortune/gerrold.limerick -OLD_FILES+=usr/share/games/fortune/gerrold.limerick.dat -OLD_FILES+=usr/share/games/fortune/limerick -OLD_FILES+=usr/share/games/fortune/limerick.dat -OLD_FILES+=usr/share/games/fortune/murphy -OLD_FILES+=usr/share/games/fortune/murphy-o -OLD_FILES+=usr/share/games/fortune/murphy-o.dat -OLD_FILES+=usr/share/games/fortune/murphy.dat -OLD_FILES+=usr/share/games/fortune/startrek -OLD_FILES+=usr/share/games/fortune/startrek.dat -OLD_FILES+=usr/share/games/fortune/zippy -OLD_FILES+=usr/share/games/fortune/zippy.dat -# 20171112: Removal of eqnchar definition -OLD_FILES+=usr/share/misc/eqnchar -# 20171110: Removal of mailaddr man page -OLD_FILES+=usr/share/man/man7/mailaddr.7.gz -# 20171108: Rename of NgSendMsgReply to NgSendReplyMsg -OLD_FILES+=usr/share/man/man3/NgSendMsgReply.3.gz -# 20171108: badsect(8) removal -OLD_FILES+=sbin/badsect -OLD_FILES+=rescue/badsect -OLD_FILES+=usr/share/man/man8/badsect.8.gz -# 20171105: fixing lib/libclang_rt CRTARCH for arm:armv[67] -.if ${MACHINE_ARCH:Marmv[67]*} != "" && \ - (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.a -OLD_LIBS+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.so -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a -OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a -.endif -# 20171104: libcap_random should be in /lib not in /usr/lib -OLD_LIBS+=usr/lib/libcap_random.so.0 -# 20171104: Casper can work only as shared library -OLD_FILES+=usr/lib/libcap_dns.a -OLD_FILES+=usr/lib/libcap_dns_p.a -OLD_FILES+=usr/lib/libcap_grp.a -OLD_FILES+=usr/lib/libcap_grp_p.a -OLD_FILES+=usr/lib/libcap_pwd.a -OLD_FILES+=usr/lib/libcap_pwd_p.a -OLD_FILES+=usr/lib/libcap_random.a -OLD_FILES+=usr/lib/libcap_random_p.a -OLD_FILES+=usr/lib/libcap_sysctl.a -OLD_FILES+=usr/lib/libcap_sysctl_p.a -OLD_FILES+=usr/lib/libcasper.a -OLD_FILES+=usr/lib/libcasper_p.a -# 20171031: Removal of adding_user man page -OLD_FILES+=usr/share/man/man7/adding_user.7.gz -# 20171031: Disconnected libpathconv tests -OLD_DIRS+=usr/tests/lib/libpathconv -# 20171017: Removal of mbpool(9) -OLD_FILES+=usr/include/sys/mbpool.h -OLD_FILES+=usr/share/man/man9/mbpool.9.gz -OLD_FILES+=usr/share/man/man9/mbp_destroy.9.gz -OLD_FILES+=usr/share/man/man9/mbp_alloc.9.gz -OLD_FILES+=usr/share/man/man9/mbp_ext_free.9.gz -OLD_FILES+=usr/share/man/man9/mbp_count.9.gz -OLD_FILES+=usr/share/man/man9/mbp_card_free.9.gz -OLD_FILES+=usr/share/man/man9/mbp_get_keep.9.gz -OLD_FILES+=usr/share/man/man9/mbp_free.9.gz -OLD_FILES+=usr/share/man/man9/mbp_get.9.gz -OLD_FILES+=usr/share/man/man9/mbp_create.9.gz -OLD_FILES+=usr/share/man/man9/mbp_sync.9.gz -# 20171010: Remove libstand -OLD_FILES+=usr/lib/libstand.a -OLD_FILES+=usr/lib/libstand_p.a -OLD_FILES+=usr/include/stand.h -OLD_FILES+=usr/share/man/man3/libstand.3.gz -# 20171003: remove RCMDS -OLD_FILES+=bin/rcp -OLD_FILES+=rescue/rcp -OLD_FILES+=usr/bin/rlogin -OLD_FILES+=usr/bin/rsh -OLD_FILES+=usr/libexec/rlogind -OLD_FILES+=usr/libexec/rshd -OLD_FILES+=usr/share/man/man1/rcp.1.gz -OLD_FILES+=usr/share/man/man1/rlogin.1.gz -OLD_FILES+=usr/share/man/man1/rsh.1.gz -OLD_FILES+=usr/share/man/man8/rlogind.8.gz -OLD_FILES+=usr/share/man/man8/rshd.8.gz -# 20170927: crshared -OLD_FILES+=usr/share/man/man9/crshared.9.gz -# 20170927: procctl -OLD_FILES+=usr/share/man/man8/procctl.8.gz -OLD_FILES+=usr/sbin/procctl -# 20170926: remove unneeded man aliases and locales directory -OLD_FILES+=usr/share/man/en.ISO8859-1/man1 -OLD_FILES+=usr/share/man/en.ISO8859-1/man2 -OLD_FILES+=usr/share/man/en.ISO8859-1/man3 -OLD_FILES+=usr/share/man/en.ISO8859-1/man4 -OLD_FILES+=usr/share/man/en.ISO8859-1/man5 -OLD_FILES+=usr/share/man/en.ISO8859-1/man6 -OLD_FILES+=usr/share/man/en.ISO8859-1/man7 -OLD_FILES+=usr/share/man/en.ISO8859-1/man8 -OLD_FILES+=usr/share/man/en.ISO8859-1/man9 -OLD_DIRS+=usr/share/man/en.ISO8859-1 -OLD_FILES+=usr/share/man/en.ISO8859-1/mandoc.db -OLD_FILES+=usr/share/man/en.UTF-8/man1 -OLD_FILES+=usr/share/man/en.UTF-8/man2 -OLD_FILES+=usr/share/man/en.UTF-8/man3 -OLD_FILES+=usr/share/man/en.UTF-8/man4 -OLD_FILES+=usr/share/man/en.UTF-8/man5 -OLD_FILES+=usr/share/man/en.UTF-8/man6 -OLD_FILES+=usr/share/man/en.UTF-8/man7 -OLD_FILES+=usr/share/man/en.UTF-8/man8 -OLD_FILES+=usr/share/man/en.UTF-8/man9 -OLD_FILES+=usr/share/man/en.UTF-8/mandoc.db -OLD_DIRS+=usr/share/man/en.UTF-8 -OLD_FILES+=usr/share/man/en.ISO8859-15 -OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/man1 -OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/man3 -OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/mandoc.db -OLD_DIRS+=usr/share/openssl/man/en.ISO8859-1 -OLD_FILES+=usr/share/openssl/man/en.ISO8859-15 -OLD_DIRS+=usr/share/man/ja/man1 -OLD_DIRS+=usr/share/man/ja/man2 -OLD_DIRS+=usr/share/man/ja/man3 -OLD_DIRS+=usr/share/man/ja/man4 -OLD_DIRS+=usr/share/man/ja/man5 -OLD_DIRS+=usr/share/man/ja/man6 -OLD_DIRS+=usr/share/man/ja/man7 -OLD_DIRS+=usr/share/man/ja/man8 -OLD_DIRS+=usr/share/man/ja/man9 -OLD_DIRS+=usr/share/man/ja -# 20170913: remove unneeded catman utility -OLD_FILES+=etc/periodic/weekly/330.catman -OLD_FILES+=usr/bin/catman -OLD_FILES+=usr/libexec/catman.local -OLD_FILES+=usr/share/man/man1/catman.1.gz -OLD_FILES+=usr/share/man/man8/catman.local.8.gz -OLD_DIRS+=usr/share/man/cat1 -OLD_DIRS+=usr/share/man/cat2 -OLD_DIRS+=usr/share/man/cat3 -OLD_DIRS+=usr/share/man/cat4/amd64 -OLD_DIRS+=usr/share/man/cat4/arm -OLD_DIRS+=usr/share/man/cat4/i386 -OLD_DIRS+=usr/share/man/cat4/powerpc -OLD_DIRS+=usr/share/man/cat4/sparc64 -OLD_DIRS+=usr/share/man/cat4 -OLD_DIRS+=usr/share/man/cat5 -OLD_DIRS+=usr/share/man/cat6 -OLD_DIRS+=usr/share/man/cat7 -OLD_DIRS+=usr/share/man/cat8/amd64 -OLD_DIRS+=usr/share/man/cat8/arm -OLD_DIRS+=usr/share/man/cat8/i386 -OLD_DIRS+=usr/share/man/cat8/powerpc -OLD_DIRS+=usr/share/man/cat8/sparc64 -OLD_DIRS+=usr/share/man/cat8 -OLD_DIRS+=usr/share/man/cat9 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat2 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat3 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/amd64 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/arm -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/i386 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/powerpc -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/sparc64 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat5 -OLD_DIRS+=usr/share/man/en.ISO8859-1/cat6 *** 7380 LINES SKIPPED *** From nobody Wed Aug 6 13:37:42 2025 X-Original-To: dev-commits-src-main@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 4bxrvV6kxYz63jp9; Wed, 06 Aug 2025 13:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxrvV4WTmz3k7j; Wed, 06 Aug 2025 13:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487462; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jGYrpmBFXMCnar5YbkcxXtKfFs9EUZhStm5xIBClKHs=; b=MR48cn0k9T77IwTE0NpjOVWDqSITc012Y8c7n02SLoyw3fwhdhX6QAiTa6lg4eE2Q7T1Gy HkT3OS+k/1e7mtIQGcAoU+pNDXhg3xflIFB8kCC2PjeaZ5ZA2NCWeSc300kF9uYIm4ClFv ZyWVoRNVo7605XPEgJaBVQeRdRPioLoLiBAhXzEJTevIFpmLyGCqS8QeOf8e3xk5MVvG/D co/oyzstd038n9VKAA5vmgsTRWwjdqUdipPYS8JernfY8c/zmexBCnvaLO/DijFBa38FY0 2TmaZ8wsU4WhV+xo/HXE2FXfIzJHSvImZ15H4RB+EHnhLtUpRbqdG/f2YFdlxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754487462; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jGYrpmBFXMCnar5YbkcxXtKfFs9EUZhStm5xIBClKHs=; b=sHRgZrUlrnhVk+FdkZxqTnOENAiHGwd6s1S/0oQ83QklN6OF3xsZ9+YdZY2LyP/6kcAl4F +LabEygiBbqj8PyRCJGhqTRqmieFsVHgsg1afmETxt1d5xFROSVGxaQWlbbuZB4tcI08bV TrtyOGxJ4IrcBW/B4zDz117b+D3ocYnSxZvJsHPoeNaMwX5TqJAvgJ/4Oc/fhgtOVlD+tc BYC+6/o9gOary2YqVk7kMDYJ9/zDfiVhF2QrjDCk+R9fCnPztqGgNUZ87c20QhGJT2wlH6 eLDv7QBB/TM1Rq2n9gEVi6JCKNNVri877JExrAses5P0LEvncV2FzNYY6nlluQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754487462; a=rsa-sha256; cv=none; b=C8hzn3Kg3GjVrLqqpcs80ltBvACHWyDeySVoNu+S1cVEGSCmMADBi/b3qE/rUwNSpDxTu9 T3vWjU7EQ0Wsk1GG3BZmtzmSEz6NjCbhZUmOZc5C/M2vqtQejEwmuloaEw2xOivnUQr2eg i+iiEEMauAChWsry6+SZu0I8Q1S4B13p99FGNiZxHWTEw1Uqo11u1YhsDPOVrw1fMY2rWQ /vT72hvyTblKDdB1/tPTRmNpSZLCObY9UaaQZ4mZyMRvQMgtvPcbToCowFo8R41oPU6vPL Uqr/2pvxXTHNd32Cy+8T58+2MRuH6UY/o0RnkRqYT1c4p/ordGIBzpasxiulKQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxrvV470jz712; Wed, 06 Aug 2025 13:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576DbgIR024092; Wed, 6 Aug 2025 13:37:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576DbgLe024089; Wed, 6 Aug 2025 13:37:42 GMT (envelope-from git) Date: Wed, 6 Aug 2025 13:37:42 GMT Message-Id: <202508061337.576DbgLe024089@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 3456a0de9465 - main - ObsoleteFiles: Stop looking for catpages List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 3456a0de9465335d4f1190b6a57abfeaf1639f4b Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3456a0de9465335d4f1190b6a57abfeaf1639f4b commit 3456a0de9465335d4f1190b6a57abfeaf1639f4b Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 13:37:06 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 13:37:06 +0000 ObsoleteFiles: Stop looking for catpages We stopped installing catpages in 2017, before stable/12. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D51715 --- Makefile.inc1 | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index b66743e154eb..e6c9b49eefa3 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -3588,16 +3588,6 @@ delete-old-files: .PHONY fi; \ done; \ done -# Remove catpages without corresponding manpages. - @exec 3<&0; \ - find ${DESTDIR}/usr/share/man/cat* ! -type d 2>/dev/null | sort | \ - sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ - while read catpage; do \ - read manpage; \ - if [ ! -e "$${manpage}" ]; then \ - rm ${RM_I} $${catpage} <&3; \ - fi; \ - done # Remove compressed copies of uncompressed manpages .if ${MK_MANCOMPRESS} != "yes" @exec 3<&0; \ @@ -3640,15 +3630,6 @@ check-old-files: .PHONY fi; \ done; \ done -# Check for catpages without corresponding manpages. - @find ${DESTDIR}/usr/share/man/cat* ! -type d 2>/dev/null | \ - sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ - while read catpage; do \ - read manpage; \ - if [ ! -e "$${manpage}" ]; then \ - echo $${catpage}; \ - fi; \ - done | sort # Check for compressed copies of uncompressed manpages .if ${MK_MANCOMPRESS} != "yes" @find ${DESTDIR}/usr/share/man ${DESTDIR}/usr/share/openssl/man ! -type d ! -name \*.gz 2>/dev/null | \ From nobody Wed Aug 6 13:50:46 2025 X-Original-To: dev-commits-src-main@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 4bxsBc0cV3z63kYm; Wed, 06 Aug 2025 13:50: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsBb3TdZz3nmZ; Wed, 06 Aug 2025 13:50:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754488247; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bv7LvXxPZGfq0W+9leqNkxm77wfjpgXYlIDL6q6YyuE=; b=eeM3SZRYQvpOWaxpJyKtJ/waA3LwAsLV3eraeBUwW7HtCujmte9oV06vxqr0mP76PMPQLe 4OdSpyQBfcUqyPtRZVCIWb2Y3RPREgjVhtxj6oac7J7gs4QwFiS2CuLe52K4KqAOEsohP5 417lU59cdU5Od3AxLvZ0DqYRDDgfJs76n1WgfLdhmlJgYsVOqHjEVzEpIUDSdCCC03IFpE D0GPfgToteSsQ3cOANM/I3DaCDr6gKSF44MoopfB0b9yhvprmhECtQJkvzRrI6Lc5CaJj3 3UbxjMYZGY+Cnkch7SBtPK7M1Tcsu1Hlya8O++vvp4CCIAGQJuAmrCVVapDJeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754488247; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bv7LvXxPZGfq0W+9leqNkxm77wfjpgXYlIDL6q6YyuE=; b=Nt9t5Hl8oliPyur34DAUiFxt0TuncwIFZ71vvlAj2qIkJJ9Yu1pXcAN0A3WbFmEfIrWuwY J7flHhiICyzQOm28Qp5v7R/M9VNlxXe9RYyrYczcVqoYNnqKKuK+iLZMLocs9eBBeOunYN 19XktQ1kbcqdCs4/7fpYWu1ZbB2NpayAo96vMbIuxt66YdGDi7Qpy5ps4BL9d2Db0Xx8Wd eL1kfqFokIHymx+sBQmri87Ezm6gB6SWw0/a6+VwU5/7eIuOoPa2Cv8qVJY4dt5cFmEgwT sbc07nNnr8moAa6Da+IvYQf1ukxkp1lwmvzD/dSmGpK2RFvvAewic18MAQ8XKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754488247; a=rsa-sha256; cv=none; b=D2cmwfXfzlOWD0l1zmjb2tTSSQeHz9+UcbR9isk59SFO23OGosO+51ijO7mqfOX2rV2kEZ 0QKbnfEX1UHQd+JDcgcH9wqPb+nBkt4+5Wy3Q2jKjPO0IBBqaNiNsskQbz0k2jAa11QAvd EGavP0UnwvyjMHVks0ImROQLOQ8v751U928hw7cdjo5vXY9RJun+bsDnqhp97XjxFczqSM Zz00K+44hvVqYnljWIvyFt1rqBaUpN8MBoPast/rqVkYdhplU9hHr2fZ3NCIckHUek3h6t 398Tk9dRMTZI234avIvJrzInyJzqQKjEzkbFkE1IKAqHJX0JeGOzOR7ItHKSCA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsBZ4LNHz7lq; Wed, 06 Aug 2025 13:50:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576DokFx052462; Wed, 6 Aug 2025 13:50:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576Dok1L052459; Wed, 6 Aug 2025 13:50:46 GMT (envelope-from git) Date: Wed, 6 Aug 2025 13:50:46 GMT Message-Id: <202508061350.576Dok1L052459@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 3caee2a93f23 - main - hastd: Fix nv data size check List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 3caee2a93f235ebcfe3a8ec99eb2c3f3e5b0438f Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=3caee2a93f235ebcfe3a8ec99eb2c3f3e5b0438f commit 3caee2a93f235ebcfe3a8ec99eb2c3f3e5b0438f Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 13:49:37 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 13:49:37 +0000 hastd: Fix nv data size check The data size check, as currently written, can be defeated by providing a very large number that rounds up to 0, which will pass the check (because zero plus the size of the header and name is smaller than the size of the message) but cause a segfault later when used to index the data array. Rewrite the data size check to take rounding into account, and add a cast to ensure the name size can't round up to zero. MFC after: 1 week PR: 266827 Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D51615 --- sbin/hastd/nv.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sbin/hastd/nv.c b/sbin/hastd/nv.c index 0730e4f2a794..16ab95cf0dc6 100644 --- a/sbin/hastd/nv.c +++ b/sbin/hastd/nv.c @@ -97,7 +97,7 @@ struct nvhdr { } __packed; #define NVH_DATA(nvh) ((unsigned char *)nvh + NVH_HSIZE(nvh)) #define NVH_HSIZE(nvh) \ - (sizeof(struct nvhdr) + roundup2((nvh)->nvh_namesize, 8)) + (sizeof(struct nvhdr) + roundup2((size_t)(nvh)->nvh_namesize, 8)) #define NVH_DSIZE(nvh) \ (((nvh)->nvh_type & NV_ORDER_MASK) == NV_ORDER_HOST ? \ (nvh)->nvh_dsize : \ @@ -247,11 +247,8 @@ nv_validate(struct nv *nv, size_t *extrap) break; } dsize = NVH_DSIZE(nvh); - if (dsize == 0) { - error = EINVAL; - break; - } - if (size < NVH_SIZE(nvh)) { + if (roundup2(dsize, 8) == 0 || + roundup2(dsize, 8) > size - NVH_HSIZE(nvh)) { error = EINVAL; break; } From nobody Wed Aug 6 13:54:52 2025 X-Original-To: dev-commits-src-main@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 4bxsHQ6g3Sz63l7N; Wed, 06 Aug 2025 13:54:58 +0000 (UTC) (envelope-from bz@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsHQ5KLcz3q0F; Wed, 06 Aug 2025 13:54:58 +0000 (UTC) (envelope-from bz@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754488498; 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: in-reply-to:in-reply-to:references:references; bh=+Egv37duUk16QjRHW0cBZv3zbGCkMR8vsY59XA6jLiI=; b=M/3O2MNUNNaGb5T6hSsLAzRLCWaT/RQtMiR0LPY6MOadFIpa02Rw0SlRHcZvRjJ+9HbphK OUu+PuC/t9/gJXXf705WNloqmQofPmnkvfeLdxiEwZa5GTMlHlh3ifdLZNauxAWxlYfpud cteOpyW9tu06T3MBwIR2Uq5GTrwSknf7621DIlOkABAfda6sXfZB/6Q+9K71wU4fVOgZdM ksRVROH14bCLP1Ofjs5mJPPCxzUzUlPm7A/PWBj7rGCbJE/ZSbPEH5i++phOAyNF67gC3S QX9WqZLRQD/85uwfuHIC9XNNLl2kUEF+hUMAJwBDHMOiXFFTEdLATc/0q66tpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754488498; 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: in-reply-to:in-reply-to:references:references; bh=+Egv37duUk16QjRHW0cBZv3zbGCkMR8vsY59XA6jLiI=; b=Mj7eOcFm6uPGdP1+BC5igmj3n1VxtrmoLPFXSA91cKINP586iCcgYTjenPcyd2zPQYWN2g jc9A4bPsSi39br8E/xQoabbm304sIwgfmxN/vgYyo+64WC2aytdPhUP8+snCNTG+KpgpZa 65K5reRWSeTA3FWQZfcVioOOQMz3o4DCZxEcEcTMByRoX3EvhLoxFUaL3KMtMgcnW32MBS HppDmf/83ud+0FioqIz3vQXbdBcXYLBw6P271tT6bZ9fbuZP1uRpBq/7g1Bgzx3SuDz5l7 3y5HQ1Vn65T4XbKsN5/FsSAyHLUddgt208iIemfj8riRcR/hQ+teEBCX/y8S7A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754488498; a=rsa-sha256; cv=none; b=HJcwq86QGe5JvwgZkov2iax6EWBeOyosGr6RJVQbI9+AcJl0XBsraAAxMn5xEks34Kk4At M/WM5lPgcCTHGkXwPxn9jASJjEBZAdpOxQcGOkJB1cYsKwHB+s1XRypPh8yhlUxYHzFpXW z4IUqR4sXwZyEpmjZK6J1XzrLoaNPpna18KpIGrjHso1EiTEX3hi7HJW09U35VmMSGMRwT ncXgc+bLaGkNgnpUYLKSOEWnwwE4lTtdfeTlilCHBsv4k1i34FNuv1S0lJjA9FpJsa+kIt SZv9kw2vjY8LJh/GlHOblW7YCKBcjivaJiXsa1gwWN9Dk2XZ5zC/pgoYPogn1w== Received: from mx-01.divo.sbone.de (mx-01.divo.sbone.de [IPv6:2003:a:140a:2200:6:594:fffe:19]) (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 ECDSA (prime256v1) client-digest SHA256) (Client CN "mx-01.divo.sbone.de", Issuer "E5" (verified OK)) (Authenticated sender: bz/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxsHQ28QTzF8h; Wed, 06 Aug 2025 13:54:58 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:1025]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by mx-01.divo.sbone.de (Postfix) with ESMTPS id 40676A64808; Wed, 06 Aug 2025 13:54:48 +0000 (UTC) Received: from content-filter.t4-02.sbone.de (content-filter.t4-02.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:2742]) (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) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id 9F1CF2D029E3; Wed, 6 Aug 2025 13:54:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:4902:0:7404:2:1025]) by content-filter.t4-02.sbone.de (content-filter.t4-02.sbone.de [IPv6:fde9:577b:c1a9:4902:0:7404:2:2742]) (amavisd-new, port 10024) with ESMTP id Bk-ByrgeQ1nV; Wed, 6 Aug 2025 13:54:52 +0000 (UTC) Received: from strong-iwl0.sbone.de (strong-iwl0.sbone.de [IPv6:fde9:577b:c1a9:4902:a66b:b6ff:fe40:39a9]) (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) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 61C8A2D029E1; Wed, 6 Aug 2025 13:54:52 +0000 (UTC) Date: Wed, 6 Aug 2025 13:54:52 +0000 (UTC) From: "Bjoern A. Zeeb" To: Andriy Gapon cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 6eb503116e88 - main - sdio: don't use CAM_PRIORITY_NONE for queued CCB-s In-Reply-To: <504491b6-932a-4e68-a324-2f7fc2637f63@FreeBSD.org> Message-ID: <9s0qo0o4-3275-p062-0qnq-nro5prqq2881@SerrOFQ.bet> References: <202508051629.575GTBYK035918@gitrepo.freebsd.org> <030509rq-32n5-3rn0-98nq-o154pqo676s9@SerrOFQ.bet> <504491b6-932a-4e68-a324-2f7fc2637f63@FreeBSD.org> X-OpenPGP-Key-Id: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1098556516-1822392576-1754488492=:4561" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1098556516-1822392576-1754488492=:4561 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT On Wed, 6 Aug 2025, Andriy Gapon wrote: > On 05/08/2025 23:32, Bjoern A. Zeeb wrote: >> On Tue, 5 Aug 2025, Andriy Gapon wrote: >> >>> The branch main has been updated by avg: >>> >>> URL: https://cgit.FreeBSD.org/src/commit/? >>> id=6eb503116e88cc430c2c9f01f48aa979fb0a7e1b >>> >>> commit 6eb503116e88cc430c2c9f01f48aa979fb0a7e1b >>> Author:     Andriy Gapon >>> AuthorDate: 2025-08-05 14:40:21 +0000 >>> Commit:     Andriy Gapon >>> CommitDate: 2025-08-05 16:27:12 +0000 >>> >>>    sdio: don't use CAM_PRIORITY_NONE for queued CCB-s >>> >>>    This is similar to changes done in other CAM drivers and fixes a panic >>>    because of a sanity check added in b4b166b8c46b. >>> >>>    While here, remove unneeded ccb setup in sdiobdiscover. >>>    It's possible that ccb allocation in that function is not needed as >>>    well, but I wasn't sure about that. >> >> I have a lot more changes to sdio here;  I would appreciate if they go >> through review if you have more. > > Sorry about that. > No, this was a one-off change to fix a panic on boot after an upgrade. Sorry, I fixed too many things recently incl. dwmmc and probably forgot that it didn't boot anymore (I likely had done the NONE->NORMAL change even before booting following imp's other changes) and didn't even notice. > I didn't see any recent non-trivial activity in the file, so I skipped a > review. > >> Are you testing this with any device? > > Not really testing but I have an old Orange Pi PC Plus which got broken > (panic on boot) after an update to the latest main (+INVARIANTS). I think > that it has a WiFi device on SDIO. What WiFi is that? Broadcom, Realtek or something else? > sdiob0: on aw_mmc1 > sdiob0 at aw_mmc_sim1 bus 0 scbus1 target 0 lun 0 > sdiob0: Relative addr: 00000001 > Card features: > Card IO OCR: 00fc0000 > > >>>    MFC after:      1 week >>> --- >>> sys/dev/sdio/sdiob.c | 7 ++----- >>> 1 file changed, 2 insertions(+), 5 deletions(-) >>> >>> diff --git a/sys/dev/sdio/sdiob.c b/sys/dev/sdio/sdiob.c >>> index 4ec2058fa2e4..cb2cc0da6b77 100644 >>> --- a/sys/dev/sdio/sdiob.c >>> +++ b/sys/dev/sdio/sdiob.c >>> @@ -150,7 +150,7 @@ sdiob_rw_direct_sc(struct sdiob_softc *sc, uint8_t fn, >>> uint32_t addr, bool wr, >>>         sc->ccb = xpt_alloc_ccb(); >>>     else >>>         memset(sc->ccb, 0, sizeof(*sc->ccb)); >>> -    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); >>> +    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, >>> CAM_PRIORITY_NORMAL); >>>     CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, >>>         ("%s(fn=%d, addr=%#02x, wr=%d, *val=%#02x)\n", __func__, >>>         fn, addr, wr, *val)); >>> @@ -250,7 +250,7 @@ sdiob_rw_extended_cam(struct sdiob_softc *sc, uint8_t >>> fn, uint32_t addr, >>>         sc->ccb = xpt_alloc_ccb(); >>>     else >>>         memset(sc->ccb, 0, sizeof(*sc->ccb)); >>> -    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, CAM_PRIORITY_NONE); >>> +    xpt_setup_ccb(&sc->ccb->ccb_h, sc->periph->path, >>> CAM_PRIORITY_NORMAL); >>>     CAM_DEBUG(sc->ccb->ccb_h.path, CAM_DEBUG_TRACE, >>>         ("%s(fn=%d addr=%#0x wr=%d b_count=%u blksz=%u buf=%p incr=%d)\n", >>>         __func__, fn, addr, wr, b_count, blksz, buffer, incaddr)); >>> @@ -977,9 +977,6 @@ sdiobdiscover(void *context, int pending) >>> >>>     if (sc->ccb == NULL) >>>         sc->ccb = xpt_alloc_ccb(); >>> -    else >>> -        memset(sc->ccb, 0, sizeof(*sc->ccb)); >>> -    xpt_setup_ccb(&sc->ccb->ccb_h, periph->path, CAM_PRIORITY_NONE); >> >> This likely just made a problem worse of ccb re-use.  I have locally >> changed them to be allocated/freed per transaction now. > From my examination of the code, the sc->ccb is always re-initialized before > actual use. I mean memset + xpt_setup_ccb in sdiob_rw_direct_sc and > sdiob_rw_extended_cam. > > -- Bjoern A. Zeeb r15:7 --1098556516-1822392576-1754488492=:4561-- From nobody Wed Aug 6 14:20:27 2025 X-Original-To: dev-commits-src-main@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 4bxsrq5nnJz63mg5; Wed, 06 Aug 2025 14:20: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsrq4yzsz3rgV; Wed, 06 Aug 2025 14:20:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gj1rf6rWg/rZ5pNFiMgw+WTKwh0woZnYQeo5rBiVWBI=; b=K+mfLFfLqZ2Yr1CZVxQV0+vWUpYe5iReuIBr5FDObEzmc4Dh4hXGgwZgxWW7OOcZsua4Vf dpiLs06OLyTnQkHm4cUaP3fyWonmFnPcyDMqnZB2bWvzivKDCp/IBr3Yf4bo8iYLVZSVEC FWcv4JslEvFnPAS8d8FZOWsqNV0m1zBwFzrjfpUVhAGA/HAaQgPITSJZ1oKM1HcOY+2oTR Jn85q/oGulg1ULN/bMCAFMt651VzAckAk0pipakI1PPJfyW4uc5C4f34OJbx3PLN+M9DQ/ nGz17IOZIX87atdttVwivIpVfKKjew4oLpvbJYlQkZMqUDGnn99eORIDtWJe+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gj1rf6rWg/rZ5pNFiMgw+WTKwh0woZnYQeo5rBiVWBI=; b=QT5lxMRDyW0pSgFWAE07/KpgwDiAk6v2yn1YFZuqbAkbKEM+4RgtCoM67RhHHA5sDTnqV1 7MeoYuou/F6qeerNZPwRY3a0NKqzHgufT1VrHmWV+RCv87xQXKVjkg6iAK13HhLEI2/cGS U66+k7BT6C5+pMP0kDJXjJAX1hnq7pAugpAbrNRkRGgICbGSp6HVKHHnYxyg1s/lQEYHkj nsBYAswDHwXSOfiQOLFQ5ckYyCuOacrKyiw3K45TdHSPcJkPFUQ9pEZ052yd9gLZtC3PP6 s96dEwpstsY6u8OmWeCVyqB1MsjzptAneFkyPZwj9r28Savkrzy0Rr9bRrkYJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490027; a=rsa-sha256; cv=none; b=i2jbHF5/E5V336VYqw54EN04+c8mHgh01U2Lg7KhnWCKKX0cc4dtx4BdXLlZ/D+wucvQWu Q5OkE+WDA9uxX/CUEEoOuLh1xdp8vjTNc7wUeiKhSc2yeM8XEaPVOSDpEDE2igfQ1VbLqN qJFLMLBFwq7XiRO36Bgl8H41dC55n/mjmfKQ6t0Q+jDJOSkXp4ndQoBTfcsnikPiUBytdd ClVCOz6hf6drvnkwaa1sxiSBlGzdsihZNTZtLq4rfJ5t1UJf28I/S0Qeb/6x2GiEK0BDWi FUdoGBXGDkZUgsk/FY4ivWMDc3MruMkmNBDtnMfK4I1so5osi1JozQi7kO6gWw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsrq4Xykz8Xh; Wed, 06 Aug 2025 14:20:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKRBQ009477; Wed, 6 Aug 2025 14:20:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKREb009474; Wed, 6 Aug 2025 14:20:27 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:27 GMT Message-Id: <202508061420.576EKREb009474@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 2525f9f84bbe - main - libusb: add missing function signature to header List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 2525f9f84bbec545c30da3870865f426aed2f0e3 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=2525f9f84bbec545c30da3870865f426aed2f0e3 commit 2525f9f84bbec545c30da3870865f426aed2f0e3 Author: ShengYi Hung AuthorDate: 2025-08-06 08:52:41 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: add missing function signature to header Approved by: markj (mentor), lwhsu (mentor) Fixes: 3eda34934097 ("libusb: implement libusb_fill_bulk_stream_transfer") Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51754 --- lib/libusb/libusb.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index 1803ff637738..14a4e930ac91 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -556,6 +556,7 @@ struct libusb_control_setup *libusb_control_transfer_get_setup(struct libusb_tra void libusb_fill_control_setup(uint8_t *buf, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength); void libusb_fill_control_transfer(struct libusb_transfer *transfer, libusb_device_handle *devh, uint8_t *buf, libusb_transfer_cb_fn callback, void *user_data, uint32_t timeout); void libusb_fill_bulk_transfer(struct libusb_transfer *transfer, libusb_device_handle *devh, uint8_t endpoint, uint8_t *buf, int length, libusb_transfer_cb_fn callback, void *user_data, uint32_t timeout); +void libusb_fill_bulk_stream_transfer(struct libusb_transfer *transfer, libusb_device_handle *dev_handle, unsigned char endpoint, uint32_t stream_id, unsigned char *buffer, int length, libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout); void libusb_fill_interrupt_transfer(struct libusb_transfer *transfer, libusb_device_handle *devh, uint8_t endpoint, uint8_t *buf, int length, libusb_transfer_cb_fn callback, void *user_data, uint32_t timeout); void libusb_fill_iso_transfer(struct libusb_transfer *transfer, libusb_device_handle *devh, uint8_t endpoint, uint8_t *buf, int length, int npacket, libusb_transfer_cb_fn callback, void *user_data, uint32_t timeout); From nobody Wed Aug 6 14:20:28 2025 X-Original-To: dev-commits-src-main@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 4bxsrs2CqSz63mTG; Wed, 06 Aug 2025 14:20: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsrr5slnz3rSJ; Wed, 06 Aug 2025 14:20:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490028; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YlbwqhZN+Vhd/41v5TV1sAr0sQgtRe8DEZW/uWRdwbk=; b=kR/1zoGMp9q1yP0pOEZsdL21HT/9MEd7+LNbTNxMWnADuaqa80Hu33986cZCgj+sDMJ86l 0FKkBMOvekIZLkVZ6MXzfB3bezNfvKMeZLd1NTKdmEmhub1TWnYcXGzZIt2WVf9Gq8srnk JciDw/6lcVeIS5rUyAkWTtoyPYovaWG7ztB87wgIfRDxWYn/CZZJ6P5zBpXmZBeyP8E9Ki 2RwvbJivqFjuTxHYwZjmd8113kIthvh8b13fi84tyYKcH8PldClwmRB7RfpkCn3JhoAI80 XvFzTmMWLAMCMwl+AjGH5OV+wNivIoGNI6AamVdqDEPAHXXQSY5YTZqitxz3gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490028; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YlbwqhZN+Vhd/41v5TV1sAr0sQgtRe8DEZW/uWRdwbk=; b=sC308pVj6bRNiMmngwBvKFt1AZX/qWhjc17uGe5m5Ua4dxfWnLxJ7kdP+VNVJf57UzpWVA PN9AfoVHTanob8QJqAXHmSppdEklvYAbLOZ7PIw5qYAsIwjEVQ/DKPmfclPhpQkE3/16TR A1qm2slNz/7AuE5AcdUUHEOI5uG5tBOCzyGBV55Ugite23qIr1fKN03Nzj74coHnpYXCs7 HPfFUAt704C3SeQD6OY5xBuPvod0EUTVyN833XG41f+yobodWUgk05bMzGywNVDwCJLgo0 vUbNeBXW9aJBZ7sWE+MC9IoH/D6mnOsi/smciS/AMcmoULhVAfDR9PIqbCFWRQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490028; a=rsa-sha256; cv=none; b=rOfb85U811sTreirpmpjvaQgVb12lRBy2OxI8k30yxMBgwynYtLzW5kx77T14wh+lVOxI8 gwNnAcVfBy4KoCZaSoOx0mi6Dr4liXgYazV15Oc0ueRj6z4PcHBPm/MjMoS5178rQ33F4K J0R5Cg4UkcOcXvq1lBXoTqgqGuhUe/PLhhRnSGa3vNh2vWAqaUZM8pcX0pTYtl/DCPePze IoO4mXQh1zVxmPbv/Ln41KwZTZMolCruG8LNCTwlXbkzNLshLyezSzd9edU4SdbFjVQ4H2 GLO4hi1QdK9Jd+rjA6hBFDUr6lsetcIMTe0DO6ptjtYZwoFH1rmWtETaloN+HA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsrr5SNhz879; Wed, 06 Aug 2025 14:20:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKS4N009513; Wed, 6 Aug 2025 14:20:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKSCe009510; Wed, 6 Aug 2025 14:20:28 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:28 GMT Message-Id: <202508061420.576EKSCe009510@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 8ddbb5e80099 - main - libusb: add libusb_usb_2_0_extension_attributes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 8ddbb5e80099d80650b529128f1998a126f67e0a Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=8ddbb5e80099d80650b529128f1998a126f67e0a commit 8ddbb5e80099d80650b529128f1998a126f67e0a Author: ShengYi Hung AuthorDate: 2025-08-05 16:17:44 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: add libusb_usb_2_0_extension_attributes Approved by: lwhsu (mentor), markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51745 --- lib/libusb/libusb.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index 14a4e930ac91..30a07acb306e 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -172,6 +172,10 @@ enum libusb_iso_usage_type { LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2, }; +enum libusb_usb_2_0_extension_attributes { + LIBUSB_BM_LPM_SUPPORT = 0x2, +}; + enum libusb_bos_type { LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1, LIBUSB_BT_USB_2_0_EXTENSION = 2, From nobody Wed Aug 6 14:20:29 2025 X-Original-To: dev-commits-src-main@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 4bxsrt6N1nz63mg7; Wed, 06 Aug 2025 14:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsrt1xxnz3rmD; Wed, 06 Aug 2025 14:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P/xY9jXDHYiNZb5cLTh9mrtpViv3bFyyTjCaUBBAydA=; b=TwruyFkEWK46pAsNSkFiriyedSNHrOL0HPdT1EzkyANTGA6wq8ThdYwJsFFjKOPyAnhyFC p9Q2q6o8hX3rQXWt2SZGo/SqBzl0MIk4fsXzfPtmr5ARR9HT6tREqiE7AcijuR7zwW/vN0 lM4dQpAgYAp9uwN8RECTBBC4p169LPqwTowNUoiyHgKuLjRcZha7K+t8FMNrlE7dYgVy4/ Qcm39Q7Xb+ZqnV9SavDe72gbIyd+g11IHgRCN3TYWSie3U45n0f8NJkVJKLWhqTlQbWRVy v724GeEd+uDAhAj4RYdDw8GGAiTcF1MRD7TeGiD0jDMHxYkAbShYemAEV/ilTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P/xY9jXDHYiNZb5cLTh9mrtpViv3bFyyTjCaUBBAydA=; b=KrNMcMoyXbc4PRWrTj0Ga+EyazvtSOHTJLXREgqk70hOEwvZhXSA2iQ9rKrusg4SgXq09H /emd4JMHIjnnZsN9Z5zVHn62HHuQaSmkIDMEGlxRc8KhhuEBwyPmJRH9wLqEGRcgZz3fLa lx/Di+ttd7l4BnnNvs+DPK+/ZgwItoRLilioauu+6ZDBK819gBLyQMy/EnoSDX6d/J5U9O 2Y0L7fkJjuNKWyNvjTzUFVtW96BhyhdgmxcaR5UQl2AWvFAj4euh8unsmmPjLo0VEdWbcw PAXfgyZ02QtTNosCzjN1lN0dadTxpAxdDTvyQi7BhfhKk/s3E+Cp/f9TICNg4g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490030; a=rsa-sha256; cv=none; b=QE3F0uPXnIafBoUYbpH6D0c410TETR5r0FcIOph2N9CatE893wegEe+n3TthBQTfw76VeC xE75p6Pm80uo4WWR45oWlcd7kgV0/fpra2JX5ATTbXI3QZQLlGEGXNuI80R4Kr950vuomm IPb/nmFhmreSiu0xCIhbRDgNS2UsE8IseyeZvjn8RTBmqdXH1whb2XnePq11RiezjlEOMP naAxyd+6hhDQrXvvHZmpx/KXDikkKU0NZjOQEriQU7xHzm0ZzlYus92B4zg5KkYkqGywEV WaKuIOZprv2v9KBdT0lPgmNjzp1ljJajH9F2w9CC9qhS/bl2FeAO+5/FOUlCJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsrs5hb7z87B; Wed, 06 Aug 2025 14:20:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKTXu009546; Wed, 6 Aug 2025 14:20:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKTEG009543; Wed, 6 Aug 2025 14:20:29 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:29 GMT Message-Id: <202508061420.576EKTEG009543@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: c43a85045166 - main - libusb: add libusb_supported_speed enum List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: c43a8504516643e747488011ede347b9fe2d7777 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=c43a8504516643e747488011ede347b9fe2d7777 commit c43a8504516643e747488011ede347b9fe2d7777 Author: ShengYi Hung AuthorDate: 2025-08-05 16:09:48 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: add libusb_supported_speed enum Approved by: lwhsu (mentor), markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51743 --- lib/libusb/libusb.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index 30a07acb306e..85e24bc68474 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -176,6 +176,13 @@ enum libusb_usb_2_0_extension_attributes { LIBUSB_BM_LPM_SUPPORT = 0x2, }; +enum libusb_supported_speed { + LIBUSB_LOW_SPEED_OPERATION = (1 << 0), + LIBUSB_FULL_SPEED_OPERATION = (1 << 1), + LIBUSB_HIGH_SPEED_OPERATION = (1 << 2), + LIBUSB_SUPER_SPEED_OPERATION = (1 << 3), +}; + enum libusb_bos_type { LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1, LIBUSB_BT_USB_2_0_EXTENSION = 2, From nobody Wed Aug 6 14:20:31 2025 X-Original-To: dev-commits-src-main@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 4bxsrw6vkwz63mj8; Wed, 06 Aug 2025 14:20: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsrw0znrz3rSn; Wed, 06 Aug 2025 14:20:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r3+HyZ5iRt1uUMaGS3gX8HkqjXGycRbg21GJMi5a9qY=; b=TL3zr0KzAvIAmY20CBbq6XyS5kqRYpZqfRIOKXupKWmObdmlPu5rlNjLUu9GWfvxI6sPyO JRdclVdzV8C5YfloJp0WMrWIwyonsyGM1YBETKdvITSnQiXZlgwjQI1AQ8z6yTQbsLmnfD RHDN1/hIW3Re1ps3YsJLmKxWNgS8dPGtrG84417hTK3VoIZ2x0rKydx4gqiWvROUNpT4MC XxpFaObPTDLxtE7B8xDPAQxmz95xOcoURIKo183yy9m93c8ktyLdxZfXf8+zKVLuEst/C1 G7NQNZa1FOTVxwVQT7cn+otI83HuTKRgFIvqS5zlZmLP18k3lRlUIS2G+4pxuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r3+HyZ5iRt1uUMaGS3gX8HkqjXGycRbg21GJMi5a9qY=; b=n4Eeedj6foKpvfL6B5QDTZ0KsXvrz8vjM4sVs4KDF1A+2M8Bf7gTcmERGFziFAhpxZvNMs gYAFge3w1kMTnSewuJiZDlH5p68urla37G5/M9ATWgdwKdAwK7FlKfGmMLdrE+yNR29Z0H b9+nOnllIC/aQQhq5aPcKoGzhiMH0fJDgFrvFdV0zOmoiBuo7uajSgZdJVrb2zDqRkV8BX gYl17mKu06N+QDiHcnneMOQ4ogXArv9YrbEpkaGqGZaWHwHKsNJdwh0cG8mBtEc+MVJxt2 e9gFBZ+/s2jX2Xj3TOYhbq26/LaAALJZ1rvrdSOKQ62gYAXcai/Ppu+6ptJX9A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490032; a=rsa-sha256; cv=none; b=SpZyXXubM+aoV3zMMGY7Dqqw/jC/iCiY2pHC6kODYPl9/UNGJd+9eaEqTOpwc44HUqxjds Jah1LcfMrnFvdPCzjhnJiAFKTsc4ZQSwYgvz2+LEZiuqaKKsEakKtgaqbwa19mD3Q8oTNZ 9ZU7YP8zYmDkA+/N4Pvd8ZURstU/cDVHufrAWg3UU5cPIPyNPmvvxRSkS18d8FtOpoUl5C JLdIugcKIAfCAsPiGBFMYQugcEjvH8nqoIEtRp42AA+ttOrY738F8CQpAPUj0ybbDfQaN5 gEO4kbJ7zZ/9DwyBEdGi8qs2zrctj68Of9TIs4hn2xnwAj/YM42xObl9AWNyug== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsrw0XXHz8K4; Wed, 06 Aug 2025 14:20:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKVUM009613; Wed, 6 Aug 2025 14:20:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKVP7009610; Wed, 6 Aug 2025 14:20:31 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:31 GMT Message-Id: <202508061420.576EKVP7009610@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 872065688515 - main - libusb: implement libusb_wrap_sys_device List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 872065688515c0c4549b568f7573eb9e7deeedd7 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=872065688515c0c4549b568f7573eb9e7deeedd7 commit 872065688515c0c4549b568f7573eb9e7deeedd7 Author: ShengYi Hung AuthorDate: 2025-08-05 12:59:06 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: implement libusb_wrap_sys_device The libusb_wrap_sys_device function can wrap an opened fd from the system into a libusb handler. However, in FreeBSD's libusb implementation, a USB device contains two fds: one for control transfers and another for normal (bulk, interrupt, isochronous) transfers. This design makes it impossible for FreeBSD to implement this function without exposing a different structure in libusb.h to provide two fds. Therefore, we return LIBUSB_ERROR_NOT_SUPPORTED to maintain API compatibility. Approved by: makrj (mentor), lwhsu (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51739 --- lib/libusb/libusb.3 | 8 ++++++++ lib/libusb/libusb.h | 1 + lib/libusb/libusb10.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/lib/libusb/libusb.3 b/lib/libusb/libusb.3 index 3093737c05d7..09140c914d68 100644 --- a/lib/libusb/libusb.3 +++ b/lib/libusb/libusb.3 @@ -209,6 +209,14 @@ Decrement the reference counter of the device .Fa dev . .Pp .Ft int +.Fn libusb_wrap_sys_device "libusb_context *ctx" "intptr_t sys_dev" "libusb_device_handle **dev_handle" +This function creates a libusb handler from a previously opened fd +.Fa sys_dev . +This function is provided for compatibility and is currently unimplemented. +It always returns +.Dv LIBUSB_ERROR_NOT_SUPPORTED . +.Pp +.Ft int .Fn libusb_open "libusb_device *dev" "libusb_device_handle **devh" Open a device and obtain a device_handle. Returns 0 on success, diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index d8a3e4b62995..277b551c46a1 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -506,6 +506,7 @@ int libusb_get_max_packet_size(libusb_device * dev, uint8_t endpoint); int libusb_get_max_iso_packet_size(libusb_device * dev, uint8_t endpoint); libusb_device *libusb_ref_device(libusb_device * dev); void libusb_unref_device(libusb_device * dev); +int libusb_wrap_sys_device(libusb_context *ctx, intptr_t sys_dev, libusb_device_handle **dev_handle); int libusb_open(libusb_device * dev, libusb_device_handle ** devh); libusb_device_handle *libusb_open_device_with_vid_pid(libusb_context * ctx, uint16_t vendor_id, uint16_t product_id); void libusb_close(libusb_device_handle * devh); diff --git a/lib/libusb/libusb10.c b/lib/libusb/libusb10.c index 5c116b39ea17..e226def0b7b6 100644 --- a/lib/libusb/libusb10.c +++ b/lib/libusb/libusb10.c @@ -1918,3 +1918,10 @@ libusb_dev_mem_free(libusb_device_handle *devh, unsigned char *buffer, { return (LIBUSB_ERROR_NOT_SUPPORTED); } + +int +libusb_wrap_sys_device(libusb_context *ctx, intptr_t sys_dev, + libusb_device_handle **dev_handle) +{ + return (LIBUSB_ERROR_NOT_SUPPORTED); +} From nobody Wed Aug 6 14:20:33 2025 X-Original-To: dev-commits-src-main@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 4bxsrx50jdz63mTL; Wed, 06 Aug 2025 14:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsrx2FKHz3rpy; Wed, 06 Aug 2025 14:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bsae7UJ8WZEbsC/S1cRUsz+zbLTiCOzt1lZqAd9HhoA=; b=cv3wwVcWLLNE8Gb/d0sj+HZB3p9FBLuP7DjPjQwUuRf/f0CebWOT8CRhxhzkEqAAQ1DLVk moUArn7I+O4PKWzvpOCeSOp4KIpIf32/Td71VJeJbvAxJwtrt00dneW2fDiIcnjYeAkFq1 l+4g46nYZoXdHvn3g4ScOe3tjs22pUqbgG/hC8+xFJJA/iin/xEQLxMizvZ9GnxJsafJD+ OGDMxlg6Yfns3iycjUNX6f/ELeMog1upkpFcN6M4V6jl6w9YLJbFKY+D0mDdy2ut5sKAwE 18T0MFTqF3+/YvkCGYQ5ckk+StAPgV9STLMIvWedU954EBeP2sm9xyTeOcNFaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bsae7UJ8WZEbsC/S1cRUsz+zbLTiCOzt1lZqAd9HhoA=; b=u9OlxJfvz337gnHFsMf4lfa9jop3k7JlE5hZEDGLkUYykHVzlrS3yz2XHPA42ySVaTz6PP IS7YNDPABP7dvFCTaJISbBlTKtJfl7Rxsr3Uxyibut4P9yFHrZ3m7+0xy7ZC3C4LRc9jMt Sd2FA4I1McfTcz/huRA/EeYb425wJcPOaUOMQlRr+pcdoz+3qiXXvmGkk9CF1XbqWvSNVV RIql39KZfuf4Tk+KdRYXj2pj1PwChRgXrPz2QFxKYYB/XGAgSccbpC0l3ktyCvYcNoIybN uzLeR+bmAPz9D4IidPsk/p3xsx6en2fPBEdSzrenaSfuiP97mHcaJXNOMGuHrA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490033; a=rsa-sha256; cv=none; b=wvxSYfZWdPg+bDH3UVxg1jhs/WZB60zs6Fn8U/DaTti/2oSs3ZsOoXuNgdcJMOZIQoE/Yg buXxNoFfaUcZqbgGAJcyLV+Co6L1H0zminoRmKw3LK07iz3xkGuYL0UMUmdnRC+QT2sB4f CUkWB25YOTWrSMxDyVTK4Xc83p/hFhWS0+lz3vfE42WpbzL0nhonpOBAU8pq1+s88NnEEG wA38SO20qn8EYVAfZXz5x0wXawc4Qp25yyhWwI36sf6T8RO2YnW9brLm/S/CSuj0xWF1qR AUxnVxAG2faf/d9mKnLFQIXDWVDr8xJvRWk3Q8IIR8pnLDNdyew4l1aVWGxtbQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsrx0z0fz7qM; Wed, 06 Aug 2025 14:20:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKXhE009654; Wed, 6 Aug 2025 14:20:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKX4g009651; Wed, 6 Aug 2025 14:20:33 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:33 GMT Message-Id: <202508061420.576EKX4g009651@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 315dec5ce6a2 - main - libusb: Add missing misc class in LIBUSB_CLASS List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 315dec5ce6a2512a9c269b3e0be4622f7fc3e5ef Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=315dec5ce6a2512a9c269b3e0be4622f7fc3e5ef commit 315dec5ce6a2512a9c269b3e0be4622f7fc3e5ef Author: ShengYi Hung AuthorDate: 2025-08-05 12:28:37 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: Add missing misc class in LIBUSB_CLASS Reviewed by: emaste Approved by: markj (mentor), lwhsu (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51738 --- lib/libusb/libusb.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index 277b551c46a1..a2ce4136f82a 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -66,6 +66,7 @@ enum libusb_class_code { LIBUSB_CLASS_PERSONAL_HEALTHCARE = 15, LIBUSB_CLASS_DIAGNOSTIC_DEVICE = 0xdc, LIBUSB_CLASS_WIRELESS = 0xe0, + LIBUSB_CLASS_MISCELLANEOUS = 0xef, LIBUSB_CLASS_APPLICATION = 0xfe, LIBUSB_CLASS_VENDOR_SPEC = 0xff, }; From nobody Wed Aug 6 14:20:34 2025 X-Original-To: dev-commits-src-main@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 4bxsry5H9rz63mVx; Wed, 06 Aug 2025 14:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxsry2WnXz3rhd; Wed, 06 Aug 2025 14:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hZkSoxjEQE71o/yaprBKCvy9d7VBbdlN1D8VYJYfYaU=; b=WIf9rP/axdedmDjkl8dv6jqmWj089638m7UFA6aEOne+cVRbnowIIg9pAnDJknKmv3zaRj KMl+l4KHnl8Cbthnztx6dNOPp4ICyokwwfdArLNht8tnLZTIfpJv4AZ3gWYbB4isdvTKuf gk6lh2HRJCgtcHbmvlS/eYG7pStqEkgQaWGN8TkHuu9xapeRiKV3raYLO16bWzm5iMBnXp lUKjSQq37ogGPge+vuT+YFAtexdXLtMuUFrb6qamutwKM3LGkcgXcSzvRpEZSBYy03PTRA gRmmuDPt51wrS5Tdx+eJJY73symBJ3foJjrtoOgFQ9KNbGY164lheR7KFKzT2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754490034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hZkSoxjEQE71o/yaprBKCvy9d7VBbdlN1D8VYJYfYaU=; b=tPfNayzzwnAWDcjFPeMKW0ss/hY/foOARdVS88VJufEXHVIPUYScdoB/hqh/R+LEgSi8uR 43DnHuk7BkbRanEoQoaGn0VklVtsbLRPBAQJx1PHIRphF7LFPs6YHuuNSz5S4nN40G0tI3 jfHNnJ6fOt3mOm3OeBHud0HoDdUFNBZo1sydLKGGeuJoYeqFlPcVMYdUBprs0QxQbym3bH 1XkgSFwynXE0ASN1MHn/F3zgWcD+UDKgGTV8gElMgD6EV6rBsz3I30valtTOpaZ7tRxmad /HkL7DtG82/PdR4UGfZKrOd7uP5tdqkei0+AjM3erhxrW5bI8ee7PlTNRu8L2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754490034; a=rsa-sha256; cv=none; b=M9qHLZUqAGz4F/0PorrZYNNxt2RjWtXmWsQnw2WaPQB9MSc/De8okdljR3ZvSMEouR2DdL c6oHNrxayWtopuDWP0ow47pRxvsEG7NrI4dk6ezzU1aUA7VQGX+ixJdL2Vr4wRBNIrA6Nc MDxjhl52P56BwjDMktLPLAALxedHdt0Mp9COLnx/5E/M2GC1LPnrlXzFmOnjKVS9fK229T QJ+oH1bV86s1/6jZagNj+5YYn0o/6nYAU4a+qZOaD+akbaabQVWiqzXMoxAHPmTmf78usi /vKXvU95FlJWBuAasTnMau4DiBa3eYDFEIP4Ga4GIuu/prTRLCbM7paBAPBvIg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxsry20ZHz84t; Wed, 06 Aug 2025 14:20:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576EKYCA009688; Wed, 6 Aug 2025 14:20:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576EKY1r009685; Wed, 6 Aug 2025 14:20:34 GMT (envelope-from git) Date: Wed, 6 Aug 2025 14:20:34 GMT Message-Id: <202508061420.576EKY1r009685@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: 20056f0e5a7f - main - libusb: implement libusb_get_platform_descriptor List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 20056f0e5a7fe8df85a9934150d32594d6fe84da Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=20056f0e5a7fe8df85a9934150d32594d6fe84da commit 20056f0e5a7fe8df85a9934150d32594d6fe84da Author: ShengYi Hung AuthorDate: 2025-07-11 03:55:37 +0000 Commit: ShengYi Hung CommitDate: 2025-08-06 14:05:40 +0000 libusb: implement libusb_get_platform_descriptor This adds a function introduced in libusb 1.0.27 to parse platform-specific USB descriptors, enabling access to vendor- or OS-specific information. Approved by: lwhsu (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51242 --- lib/libusb/libusb.3 | 15 ++++++++++++++ lib/libusb/libusb.h | 13 ++++++++++++ lib/libusb/libusb10_desc.c | 51 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/lib/libusb/libusb.3 b/lib/libusb/libusb.3 index 09140c914d68..607a7f645d95 100644 --- a/lib/libusb/libusb.3 +++ b/lib/libusb/libusb.3 @@ -544,6 +544,21 @@ libusb_free_container_id_descriptor function. .Fn libusb_free_container_id_descriptor "struct libusb_container_id_descriptor *container_id" This function is NULL safe and frees a parsed container ID descriptor given by .Fa container_id . +.Pp +.Ft int +.Fn libusb_get_platform_descriptor "struct libusb_context *ctx" "struct libusb_bos_dev_capability_descriptor *dev_cap" "struct libusb_platform_descriptor **platform_descriptor" +This function parses the platform descriptor from the descriptor given by +.Fa dev_cap +and stores a pointer to the parsed descriptor into +.Fa platform_descriptor . +Returns zero on success and a LIBUSB_ERROR code on failure. +On success the parsed platform descriptor must be freed using the +libusb_free_platform_descriptor function. +.Pp +.Ft void +.Fn libusb_free_platform_descriptor "struct libusb_platform_descriptor *platform_descriptor" +This function is NULL safe and frees a parsed platform descriptor given by +.Fa platform_descriptor . .Sh USB ASYNCHRONOUS I/O .Ft struct libusb_transfer * .Fn libusb_alloc_transfer "int iso_packets" diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h index a2ce4136f82a..623b56fb273b 100644 --- a/lib/libusb/libusb.h +++ b/lib/libusb/libusb.h @@ -107,6 +107,7 @@ enum libusb_device_capability_type { #define LIBUSB_BT_USB_2_0_EXTENSION_SIZE 7 #define LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE 10 #define LIBUSB_BT_CONTAINER_ID_SIZE 20 +#define LIBUSB_BT_PLATFORM_DESCRIPTOR_MIN_SIZE 20 #define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f #define LIBUSB_ENDPOINT_DIR_MASK 0x80 @@ -189,6 +190,7 @@ enum libusb_bos_type { LIBUSB_BT_USB_2_0_EXTENSION = 2, LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3, LIBUSB_BT_CONTAINER_ID = 4, + LIBUSB_BT_PLATFORM_DESCRIPTOR = 5, }; enum libusb_capability { @@ -446,6 +448,15 @@ typedef struct libusb_container_id_descriptor { uint8_t ContainerID[16]; } libusb_container_id_descriptor __aligned(sizeof(void *)); +typedef struct libusb_platform_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; + uint8_t bReserved; + uint8_t PlatformCapabilityUUID[16]; + uint8_t CapabilityData[]; +} libusb_platform_descriptor __aligned(sizeof(void *)); + typedef struct libusb_control_setup { uint8_t bmRequestType; uint8_t bRequest; @@ -554,6 +565,8 @@ int libusb_get_ss_usb_device_capability_descriptor(struct libusb_context *ctx, s void libusb_free_ss_usb_device_capability_descriptor(struct libusb_ss_usb_device_capability_descriptor *ss_usb_device_capability); int libusb_get_container_id_descriptor(struct libusb_context *ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct libusb_container_id_descriptor **container_id); void libusb_free_container_id_descriptor(struct libusb_container_id_descriptor *container_id); +int libusb_get_platform_descriptor(libusb_context *ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct libusb_platform_descriptor **platform_descriptor); +void libusb_free_platform_descriptor(struct libusb_platform_descriptor *platform_descriptor); /* Asynchronous device I/O */ diff --git a/lib/libusb/libusb10_desc.c b/lib/libusb/libusb10_desc.c index 5f4c46740688..7da5c84f4ad2 100644 --- a/lib/libusb/libusb10_desc.c +++ b/lib/libusb/libusb10_desc.c @@ -711,6 +711,55 @@ void libusb_free_container_id_descriptor( struct libusb_container_id_descriptor *container_id) { - free(container_id); } + +int +libusb_get_platform_descriptor(libusb_context *ctx, + struct libusb_bos_dev_capability_descriptor *bos_cap, + struct libusb_platform_descriptor **pd) +{ + struct libusb_platform_descriptor *desc; + uint8_t *cap_data; + + if (bos_cap == NULL || + bos_cap->bDescriptorType != LIBUSB_BT_PLATFORM_DESCRIPTOR || + pd == NULL) + return (LIBUSB_ERROR_INVALID_PARAM); + + if (bos_cap->bLength < LIBUSB_BT_PLATFORM_DESCRIPTOR_MIN_SIZE) + return (LIBUSB_ERROR_IO); + + cap_data = bos_cap->dev_capability_data; + desc = calloc(1, bos_cap->bLength); + if (desc == NULL) + return (LIBUSB_ERROR_NO_MEM); + + desc->bLength = bos_cap->bLength; + desc->bDescriptorType = LIBUSB_BT_PLATFORM_DESCRIPTOR; + desc->bDevCapabilityType = bos_cap->bDevCapabilityType; + desc->bReserved = cap_data[0]; + memcpy(desc->PlatformCapabilityUUID, cap_data + 1, + sizeof(desc->PlatformCapabilityUUID)); + + /* + * UUID (16 bytes) + bReserved + */ + cap_data += sizeof(desc->PlatformCapabilityUUID) + 1; + /* + * UUID (16 bytes) + bReserved + bLength + bDescriptortype + + * bDevCapabilitytype + */ + memcpy(desc->CapabilityData, cap_data, + bos_cap->bLength - (sizeof(desc->PlatformCapabilityUUID) + 4)); + *pd = desc; + + return (LIBUSB_SUCCESS); +} + +void +libusb_free_platform_descriptor( + struct libusb_platform_descriptor *platform_descriptor) +{ + free(platform_descriptor); +} From nobody Wed Aug 6 15:02:08 2025 X-Original-To: dev-commits-src-main@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 4bxtmw7092z63qJs; Wed, 06 Aug 2025 15:02: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxtmw60RWz42GG; Wed, 06 Aug 2025 15:02:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754492528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u9JKQfewbbY9NlzGN5CRFGbXz3SRrw+OiFRM6gQNnz0=; b=TWjG9Fdtq/xJSIvbUPxV2fVCfTEvItoFwmcnVgAPsVKlmaeJanep16Qf/0QfndTPNldvz2 BGiG7BlAzhxYr6alHkFMATZd5lB5zSPb/YPGXPoJUVgOi/wWhwsTkK0WcYzqL/ZbSwHDCy XubVB0lKNtItX2SMJoaBC+GxPEs+sTmuPylIPQ6BkEXiKdnvWmZfuy+y2E0Y/AxLNlR8Zc +0G92nSo/xDiPrVBqUxEgjv0mqEtLYiwQcS6tF/cLSPqasv548A7CzXI8gNDuzbQ2URka2 Vl9gXp2SyjJa+LRGFPMpUE/mycjMztIV7VVv/cTeoh2fGh8eR/+adxoBpEklkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754492528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u9JKQfewbbY9NlzGN5CRFGbXz3SRrw+OiFRM6gQNnz0=; b=HusTHLnywmMAyhBYh72E5uHsrYuE26ur9Kpv18TPkxuJgiL3SZuUqjKylmdktzMDkASlbo 3JOQ8oOrHAD4XUlc1zkRgbxlMHPYmLaKfxh9CBx17XJXuJB/MgMq2+x+iSlxmL7/w5Q4UK 6VaAdzE5nZKdkqwbtUn0zn6K6yDlx54Mv1TkXTa3Fc3u5Quxk4NpLsFKapLiZ1nT+wdXR0 vuZ9kUpRyUBi5WZzd9PR8dU2NOwRXOptLu8boVOijF9Kon7Yn7pGWkWngKh6pqEwrNR16S EJ6/XKqGEWgH4qL+YAY/3pTOcPay9hOynwwTZkGYIUZLXH0G5ArZjsbDxd5Zvg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754492528; a=rsa-sha256; cv=none; b=WJpCdfDcf6GbYbv0cyLtLakvcxvj4VM7NTVv/bpoNTcXmeR2r8brnvmA6N85VNSO92TetW XpPIunoazjsvd57h1ciUr9PwzuGA/aJ/klDXoMIAqOo8xqvIVXt5BStGJiJzrb7+qPuYm2 aIW5jS6ePyLAt0bIkLvm691E5XdJsdUVZ7GLW4WUUm0c16+tk0D/tzGkdWdA73Rdub6+S5 IFeFe1+NXae5gBtr5lZ12K6hCuGYjAlZ8PyyJEsQ8ZUx35t9BIJVaRK1LVwPkVqFsgiofF YXk0LG5jPm4LxdXSGQ0/nitWYJqCj0e+Obb+vI/WzgmUm4QSR592NdqYDvmNZA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxtmw5QPqz9bQ; Wed, 06 Aug 2025 15:02:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576F28NF088228; Wed, 6 Aug 2025 15:02:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576F28uJ088225; Wed, 6 Aug 2025 15:02:08 GMT (envelope-from git) Date: Wed, 6 Aug 2025 15:02:08 GMT Message-Id: <202508061502.576F28uJ088225@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: 0790d99e0b95 - main - man bluetooth/fwdownloaders: Clarify descriptions List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0790d99e0b951cfee5be0e1db4bc6fae972aeacb Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=0790d99e0b951cfee5be0e1db4bc6fae972aeacb commit 0790d99e0b951cfee5be0e1db4bc6fae972aeacb Author: Alexander Ziaee AuthorDate: 2025-08-06 14:57:31 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-06 14:57:41 +0000 man bluetooth/fwdownloaders: Clarify descriptions s/download/load/ to clarify the difference between these and fwget, our utility to install firmware packages, in apropos results. Also, include rtlbtfw, I missed that one last time. MFC after: 3 days Reviewed by: bz, pauamma Fixes: 2c901189bb65 (terse descriptions) Differential Revision: https://reviews.freebsd.org/D51333 --- usr.sbin/bluetooth/ath3kfw/ath3kfw.8 | 4 ++-- usr.sbin/bluetooth/bcmfw/bcmfw.8 | 4 ++-- usr.sbin/bluetooth/iwmbtfw/iwmbtfw.8 | 4 ++-- usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 | 4 ++-- usr.sbin/uathload/uathload.8 | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/usr.sbin/bluetooth/ath3kfw/ath3kfw.8 b/usr.sbin/bluetooth/ath3kfw/ath3kfw.8 index beb1b102b194..9e54445a012b 100644 --- a/usr.sbin/bluetooth/ath3kfw/ath3kfw.8 +++ b/usr.sbin/bluetooth/ath3kfw/ath3kfw.8 @@ -26,12 +26,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 31, 2024 +.Dd July 15, 2025 .Dt ATH3KFW 8 .Os .Sh NAME .Nm ath3kfw -.Nd download firmware for Atheros AR3011/AR3012 Bluetooth USB devices +.Nd load firmware for Atheros AR3011/AR3012 Bluetooth USB devices .Sh SYNOPSIS .Nm .Op Fl DI diff --git a/usr.sbin/bluetooth/bcmfw/bcmfw.8 b/usr.sbin/bluetooth/bcmfw/bcmfw.8 index 50e9739340ee..28f0cbbafe00 100644 --- a/usr.sbin/bluetooth/bcmfw/bcmfw.8 +++ b/usr.sbin/bluetooth/bcmfw/bcmfw.8 @@ -25,12 +25,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 31, 2024 +.Dd July 15, 2025 .Dt BCMFW 8 .Os .Sh NAME .Nm bcmfw -.Nd download firmware for Broadcom BCM2033 Bluetooth USB devices +.Nd load firmware for Broadcom BCM2033 Bluetooth USB devices .Sh SYNOPSIS .Nm .Op Fl h diff --git a/usr.sbin/bluetooth/iwmbtfw/iwmbtfw.8 b/usr.sbin/bluetooth/iwmbtfw/iwmbtfw.8 index 87f34435d3f4..ac32a675aa63 100644 --- a/usr.sbin/bluetooth/iwmbtfw/iwmbtfw.8 +++ b/usr.sbin/bluetooth/iwmbtfw/iwmbtfw.8 @@ -26,12 +26,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 15, 2024 +.Dd July 15, 2025 .Dt IWMBTFW 8 .Os .Sh NAME .Nm iwmbtfw -.Nd download firmware for Intel Wireless AC Bluetooth USB devices +.Nd load firmware for Intel Wireless AC Bluetooth USB devices .Sh SYNOPSIS .Nm .Op Fl DI diff --git a/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 b/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 index c3c0b83d97e5..5f037de1862e 100644 --- a/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 +++ b/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 @@ -23,12 +23,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 19, 2023 +.Dd July 15, 2025 .Dt RTLBTFW 8 .Os .Sh NAME .Nm rtlbtfw -.Nd firmware download utility for Realtek 87XX/88XX chip based Bluetooth +.Nd load firmware for Realtek 87XX/88XX Bluetooth USB devices USB devices .Sh SYNOPSIS .Nm diff --git a/usr.sbin/uathload/uathload.8 b/usr.sbin/uathload/uathload.8 index 41cb2b4c1da7..758e021a936e 100644 --- a/usr.sbin/uathload/uathload.8 +++ b/usr.sbin/uathload/uathload.8 @@ -23,12 +23,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 11, 2010 +.Dd July 15, 2025 .Dt UATHLOAD 8 .Os .Sh NAME .Nm uathload -.Nd "firmware loader for Atheros USB wireless driver" +.Nd load firmware for Atheros USB wireless devices" .Sh SYNOPSIS .Nm .Op Fl v From nobody Wed Aug 6 15:19:23 2025 X-Original-To: dev-commits-src-main@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 4bxv8q3MPBz63rV9; Wed, 06 Aug 2025 15:19: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxv8q2Zjhz462V; Wed, 06 Aug 2025 15:19:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754493563; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8atyDvazXn8xy1BdNjXSKIJJe8PlYe6+4rH4JCiJqzk=; b=L/n7Hoi8q9bdWlJzi4owHoKR3buUZtFjgTc6ZZuAdShCmtBhg7icvZFtr9PMn6bT3jojmI G58hoFoFACrWemZO/R/SYC7lpypXb6v2zBQr5u745v3Xuow3hZay5QqSDKWMzagk8BjmN+ Np5ayZ14Dzp9hKOWgDQpF38AyBOD246Yt6gzGthSY3glhCkzg+OXkPus9Z6CEXjE2WMKf+ 86wyRa1V3DpxM1U+Eq6rnFwqSRplVqVJIo6cdNSS59vacnv6tQ/aUsoaJ2x2tiPqlREtIg s28qAZX+jiIrMc6AefXTguMb7XmdO72G5SNjnaiATOAUsADHLv0+Dy1e7JSCPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754493563; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8atyDvazXn8xy1BdNjXSKIJJe8PlYe6+4rH4JCiJqzk=; b=wkeJnBFzo+ow4kaoIKu+Ln1eB+KgCe9pNfX4B8+DjuQeiOUHptuefQLTKwwHYaxVfwJq4B eV4raA7kxvkvTGdwrEfTyBmtTONablwzF30O+OFTgUM8lZ/ULkYc/WQY0/vTHjh96Y5jaB 5bBuBJey6FgqghKdgQtGJDNrbbs/z0hvR8z8NV1mb021/qDKK1+e4SmMtjtlZVKQIOktg0 e/FM09SAvsVK8Vq6dF6slEpA+MDVklBrSUJHcuBjUJHKAKI3EvZ9mgNTOdraIATF6/fx/0 W22PCJHKrKcnaGGR67LIVcO7cMKwl76rJJz+xwHCr2mX40ylyOrFgdxYi8wOyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754493563; a=rsa-sha256; cv=none; b=RmWwlIbsYRiD4NDHADheO9VxWcMUM2mepEuDQvts72H9Vp5M6mcy78m48tikbtOJWs5LwM 3bIlCmy/ZeQu+yq13XX6s/UTfsU31C8iTis1sMxF00eQlUeNXCY78NnP1qgBzCGa4hQ5U/ TjJ/rW7B8mwKZqNi6UZNEQObc1eu4dTc/+2kIaMMl2mvaI4MboiN8bEQcjmPD6rIYkdTnm w0/UWtygMr2H1yanMdXfRLhDNoRRcfL5EWAelfefJ7hb/wnB73lUwRqJy0lsev9CdKxwAz On8nA361K230+wlrGeFc6pvz/C6bBL4CxdGMIhKwRbWeu1V7j93iMJc0NNxNMw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxv8q1kvyzB01; Wed, 06 Aug 2025 15:19:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576FJN6k013351; Wed, 6 Aug 2025 15:19:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576FJNBn013349; Wed, 6 Aug 2025 15:19:23 GMT (envelope-from git) Date: Wed, 6 Aug 2025 15:19:23 GMT Message-Id: <202508061519.576FJNBn013349@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: fe1b8df27477 - main - uathload.8: Fix typo List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fe1b8df274774bed56314c5b8dc7397808dd761f Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=fe1b8df274774bed56314c5b8dc7397808dd761f commit fe1b8df274774bed56314c5b8dc7397808dd761f Author: Alexander Ziaee AuthorDate: 2025-08-06 15:17:31 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-06 15:18:59 +0000 uathload.8: Fix typo Fixes: 0790d99e0b951cfee (Clarify descriptions) --- usr.sbin/uathload/uathload.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/uathload/uathload.8 b/usr.sbin/uathload/uathload.8 index 758e021a936e..7889245058e9 100644 --- a/usr.sbin/uathload/uathload.8 +++ b/usr.sbin/uathload/uathload.8 @@ -28,7 +28,7 @@ .Os .Sh NAME .Nm uathload -.Nd load firmware for Atheros USB wireless devices" +.Nd load firmware for Atheros USB wireless devices .Sh SYNOPSIS .Nm .Op Fl v From nobody Wed Aug 6 15:22:53 2025 X-Original-To: dev-commits-src-main@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 4bxvDt5dtvz63rjV; Wed, 06 Aug 2025 15:22:54 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxvDt3X6wz46RT; Wed, 06 Aug 2025 15:22:54 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754493774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c4Tm1IqA0D9Y/Y0xNZlLflfNXhVUtXa1EUG5akCx0Io=; b=r8D3WLMQ/VqD6eB5fujXo9gvbQhB59Vz9Y44trlsz4tHPa+mpKs4cYADg4RMwusxReCtyS SX6/Of+2/9onWr3gWzRWSRTEyR6oPqsQmRhLzVuhumcnPetKltGiUBMoe2mRd1jx7gCTfU 4Je6os4Zz9xGVid9m0P2JhvCj/QWzvG1FbCaLz+iKRe7b0+iUHIYoZSaHWpHJjIqby94Ec gKJ8PfmXQmctRjUvPSIlEiTRRghgfOA+fLyi/cZEeW379+S3gIw2Bn4SMtXLs9Bnctbkyl u9sXPE/OsI3+FICU1qkucin1BkLEJqutEfQteLK9bhfC+Gl/V6gp7liCYC6jTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754493774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c4Tm1IqA0D9Y/Y0xNZlLflfNXhVUtXa1EUG5akCx0Io=; b=GVPiJLOdtbHgs6ppXqreJBBBswfhOcLb+85y1K+Rln1kMuXobE2IJPptHq7TzNlmOyfivR NtOyhpPhjZ8oasQYHh/I5MuJqjNDoFpE52mDS8E+r20tMNqx9J2Z9pMDVlunNESasuTQAo HLzyxdTcFbitTihaDJHAcdHsJG5+X2bzQzblG7prTq9zfsXhh4Sl2jZ3Prp6kvnsA+h43y PzI8GDSqxlCEKNfou1RP3v1xUTtEKq5zMsxJlTDWxwm3RBB2k2kJM7/E8gAThq6mYVj/Yh 5NDMJhNkwmyJKuZYWdMcGGjtoO+Qh81AKK8H+IMDNgmwyJpKM29HoBzxuKu8IA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754493774; a=rsa-sha256; cv=none; b=vDhrQReg3LLfxW5RR8DEafp4pQwkfEXZaH3iG44dec1plFmT+3RO/O8ceB8+qwsaUFMiF/ m8fW12rkJ705d3JkE+yuxV/z/oDfCPrxdzwscsdpqlX/dqdCw+zleld7ZJSKT8QZ8sKOli rfphrfF8AXvWGKsTYmkdZjRbeKjLCRkrsKPpk0NiDtZArB1EKsVwjS3v03RbMcB8hP6mcn FDxo2qEINKcR8HDUIXeVZqfUkHBbVgmXh4SmVPDX61sVhM8cq5etAPWOt9WYDhc8jK95at z4/ZqxgXgbM4UrjtIKgOCd8dWf82yPmKm/gxAIU6s921Pe19d2at7aovcp7xMQ== Received: from [IPV6:2601:5c0:4202:5670:c463:425d:db06:ab75] (unknown [IPv6:2601:5c0:4202:5670:c463:425d:db06:ab75]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxvDt1pc5zFfB; Wed, 06 Aug 2025 15:22:54 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <724b4f2f-6180-4df8-84d5-030d937b9462@FreeBSD.org> Date: Wed, 6 Aug 2025 11:22:53 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e9792345d36c - main - freebsd-version.8: Remove freebsd-update paragraph Content-Language: en-US To: Alexander Ziaee , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508052206.575M65Yg076248@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: <202508052206.575M65Yg076248@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/5/25 18:06, Alexander Ziaee wrote: > The branch main has been updated by ziaee: > > URL: https://cgit.FreeBSD.org/src/commit/?id=e9792345d36c96dbb49f3ee996f75384a4cca532 > > commit e9792345d36c96dbb49f3ee996f75384a4cca532 > Author: Alexander Ziaee > AuthorDate: 2025-08-05 22:05:04 +0000 > Commit: Alexander Ziaee > CommitDate: 2025-08-05 22:05:29 +0000 > > freebsd-version.8: Remove freebsd-update paragraph > > For the sunset of freebsd-update in 15.0R, remove a paragraph > claiming this utility should work even if using freebsd-update. > > MFC: never > Reviewed by: 0mp, bcr > Differential Revision: https://reviews.freebsd.org/D51160 Hmm, we might want to hold off on removing references to freebsd-update. First, 15.0 has to keep freebsd-update (and probably future releases) to permit updating older jails (e.g. jails running 14.x). Second, markj@ has been looking at adding a pkgbase backend for freebsd-update so that users could still use the freebsd-update UI, but it would use pkg instead of bspatch under the hood for 15.0 and later. -- John Baldwin From nobody Wed Aug 6 15:30:03 2025 X-Original-To: dev-commits-src-main@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 4bxvP81z2vz63rpd; Wed, 06 Aug 2025 15:30:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxvP81K9Fz479N; Wed, 06 Aug 2025 15:30:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754494204; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iaxjtWXZGhOHkwNox1uVwc5za35eXkFMRwbu4j2aZ+I=; b=vspPyoO8zNuodKfQqE4tANleTS7W5ZTlHYxgsK2/LVby1q5BL5q9SQhjh2YVEFcPAxyJH1 +HeBwnUE0baNlOzBF4Nva+UMAgAm7mchFVbrobWFVUuWHWv80oNeNPw9XbF7n1jjvy7Fat PAJcRLu0FxU5lrZaiU2B3ikjWQrS6E/Ezwqxx04/T2j5ZxsGHOGUJtbYR7Wx4+rvcM+wM7 6R06yFHJia2SMg1lptDeKQF9T5e7RZZVOQYUNXOeyJ1XMevRbCHcEYHdijHohGo+mNuWUY XdowQMUNDMWSDCMORFEdhG50KZEvI+2imvEIxqHAr8tl5xmNj2MSlEIuypDtOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754494204; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iaxjtWXZGhOHkwNox1uVwc5za35eXkFMRwbu4j2aZ+I=; b=C5lWxEX8BhExyOOWeh5dEfCP9gFwJu6luME6AtK4gZYHEpwmi0bYFdnnESXi4TzfrvFjJr H2We6bFlu4yQFL2FOkKg8exxMhV0RJgxeSKnsHiAgLB8hGmuYm6DbxCpCKYvVjuzgH0wOz ZYCw9pDsrIROjRitwqC/1hcwOzJFkI71RhwyP9UKafsuwhX0ejoKDFcXtn2U9N48ab+eeT altTMgKFxCi98tcKLb+ulvXkvI+XMwsyS8N8kGCmLTMcEM50txVAjOIbgAGRAW4M/abPnD I+0pFiPGaBRSZP/SumBJNszIYVGoJfbGxEKZ/oGb/5qSacrfEvXXQFgm09K65A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754494204; a=rsa-sha256; cv=none; b=fLpEEZDTLmQIVfifLiXvw1uLGgLZbBwyLLPzlrnfviQRfZY1jpmm3g5Mq4ykf2O8wxfT4K Ti/LiUWoTezNZvddyby1iCXioWSzVCApWdPLXUTvPm/FZE3Fs4aDPbkZJDD7UeTLyzfMqA r/vurVCYt5jTt4alPbvlcuc3K6BCwqi1d/CpjcJYBsGcEtZ7xJpOztqcDiwiQR4W4rbZEY lRczRKx3GgcSCLcXR37sY5wwHUS6XjJe8qMXYMh6rZQJtIc/1pN+WSOZlM5uqXsUsEUXjE MJcu0f6XnvqLqnS7T+EqtqJrgrD/hdX1DfcukScFMYUqjnt3zZCRezWI9q+F/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxvP80gzlzBK4; Wed, 06 Aug 2025 15:30:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576FU38b035268; Wed, 6 Aug 2025 15:30:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576FU37D035263; Wed, 6 Aug 2025 15:30:03 GMT (envelope-from git) Date: Wed, 6 Aug 2025 15:30:03 GMT Message-Id: <202508061530.576FU37D035263@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: e63297e1b61e - main - rtlbtfw.8: Fix typo List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e63297e1b61e4104ee51e4ed3e170cc2ed24ce38 Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=e63297e1b61e4104ee51e4ed3e170cc2ed24ce38 commit e63297e1b61e4104ee51e4ed3e170cc2ed24ce38 Author: Alexander Ziaee AuthorDate: 2025-08-06 15:28:31 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-06 15:28:31 +0000 rtlbtfw.8: Fix typo Fixes: 0790d99e0b951cfee (Clarify descriptions) --- usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 | 1 - 1 file changed, 1 deletion(-) diff --git a/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 b/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 index 5f037de1862e..5cae9c9d288d 100644 --- a/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 +++ b/usr.sbin/bluetooth/rtlbtfw/rtlbtfw.8 @@ -29,7 +29,6 @@ .Sh NAME .Nm rtlbtfw .Nd load firmware for Realtek 87XX/88XX Bluetooth USB devices -USB devices .Sh SYNOPSIS .Nm .Fl d Ar device_name From nobody Wed Aug 6 15:34:49 2025 X-Original-To: dev-commits-src-main@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 4bxvVj3ZQlz63sCf; Wed, 06 Aug 2025 15:34:53 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxvVj31myz4B7t; Wed, 06 Aug 2025 15:34:53 +0000 (UTC) (envelope-from avg@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754494493; 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:autocrypt:autocrypt; bh=uDTkOT8Cu06sw82R+8G7g8OBtwkgUmyxs+yfSYMtsNg=; b=dWIOscxJFbglhsfQUGEmJz092nJBK/SXvq2YeNpyyKztfxC29ZXIpJjcUp0gUrs3kNI9GO gN3O8XGlV380AsATs/hsdXcTCKab4NnOeRFE2Qccsan1SYcR+axHS1ZHvQdnCeJq/48F3U L5XrPYv5udplnBbm1K/49s3A/lKfqj+QzVSmrg+WALIAz3PaOYK95TtYT8JbJFTu/6PCFx zpAssNM7b/UF57uZI1tYFvz6OL5Lsyc5xUexhEbwI2NjAHNA+5RmyAB/ZhAuL/wUuFUs7D fejYo1aJ6gN/ht1ijGf2S9OxDIscqZcJ9PIE3+JR8CfzHnvFwjSeUOMaQckgqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754494493; 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:autocrypt:autocrypt; bh=uDTkOT8Cu06sw82R+8G7g8OBtwkgUmyxs+yfSYMtsNg=; b=RdlrAZLc59Bpnj5lPU4mYcA/lY2WMdGKmhacJd7tkvw20qTMauz4WSsE96zDZmq5tp3WFB 2Lrm2xMj1Mz2n6eneoEkqW/Cn4eZi3fQqJdNg0bH7zOw1dEAeslsuICwUQTCh5SVhe20v4 cAYykPqV3vAHfuEKdI+YjNvtVCyK5igy/LZEvKN7rckKbJNntpf6y/ydgdbZyc99cepg3W n8bwdGq9M9xO0ElkB/0Lp9fpjANzbYCSawaPSS6YLYtZTUNbXdYuuS8S9185GnjhBx4arr HFkl6OvqFjF/PE50GGDES+qL4jjTArVh7xf9Z1QsuPqwIG3tq23feuuU6rhrsQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754494493; a=rsa-sha256; cv=none; b=con0hAN9fo0uW09LGmrnh5lk6QHG9KuqCT5ydHnI3oUi8iDid/MlZnR6TDvy2IqxyT2pEj 7oi/LON0A9ehmocTF6vk/QqV0itLrEa7piwUVxHtkEjWIKY4RJ0UZvjOA/t5NvbqAOQV5Z XxzTWL5twPQ3s6SS6G0db+fvcfrVzAE40lo2vrPOlxEV4DazBowWuiNNcxrlt8PM2q1kYp fHqLBvlDCYG8mTIao/xZPcS3ArgHYfcV19X+xjzUzxgjgGlxOm2C605bjFG+r+2hDvSF5V W0QN5d9/Tbl5IegtwgkAPlFT5YFW6ETJMXLFm3LpTjvcbjXOpk3vTWgjePVKqg== Received: from [192.168.0.88] (unknown [93.188.39.137]) (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: avg/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bxvVh5GdBzFfJ; Wed, 06 Aug 2025 15:34:52 +0000 (UTC) (envelope-from avg@FreeBSD.org) Message-ID: <01a57761-04c9-406d-ab4c-7a9895430881@FreeBSD.org> Date: Wed, 6 Aug 2025 18:34:49 +0300 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andriy Gapon Subject: Re: git: 6eb503116e88 - main - sdio: don't use CAM_PRIORITY_NONE for queued CCB-s To: "Bjoern A. Zeeb" Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508051629.575GTBYK035918@gitrepo.freebsd.org> <030509rq-32n5-3rn0-98nq-o154pqo676s9@SerrOFQ.bet> <504491b6-932a-4e68-a324-2f7fc2637f63@FreeBSD.org> <9s0qo0o4-3275-p062-0qnq-nro5prqq2881@SerrOFQ.bet> Content-Language: en-US Autocrypt: addr=avg@FreeBSD.org; keydata= xsDNBGcKrHEBDADRvwQOK0b/yo4ys5cs6bOQMhEh4xtfbaZ/CU00cpPgUip3sOZCdrtMWlRC g25z97prxE9pKueZi+HXDhIPpa9xl14ghqF4oYScuJ1i18HyiOH2y5Q3Vv/TtFiSzicd3EAu QgS3jVidpgDSPDdj2Yz3UxYpZ+PuFl6nOnvCvqOFcjUlzKCyPaiN2b86l1Nscmhnc+zQ/faB erUOEFEDQbWMA5YfXi8HrbeR16hfRfGt7E0aMDlIj9FIPIq71UWMN9CimPgs4+rbNr1MAlLa z4GxSDhVYZEY5rqtCzr+PLXboRQWnaUwXl0/biw9enf17NHdYv1SNAFTX2eC4dZ3qBVI74dS PgNprm+PMfz+6Hhs/dAv+Nan5nVhg3EFIjYTiy0MnjMSq8uI0v0ykpAGAcJJ5xl6d23aLxgN 6f0z6pJRCO0hGPgU7UzvFD0MxJxmbzqdT1R51KDan1oD41b+tjl2LMBuCDCoB0U44Pu0zLdp xMfFTxCXtwIYKIUxwd28jwMAEQEAAc0eQW5kcml5IEdhcG9uIDxhdmdARnJlZUJTRC5vcmc+ wsENBBMBCAA3FiEEmXvSmjiQFHPVOpLnzDOt5NLj67sFAmcKrHEFCQeEzgACGwMECwkIBwUV CAkKCwUWAgMBAAAKCRDMM63k0uPru5tSDACFK15LLbq89RSQ6QMnjiIm1t/wYJyumb519MHu Dhzxx1lbr8oghf0RHtF6kYRLQPaW2VdToi74pRobd3CN4bhZKDLSL6WfTn17RfavDjL6Njwp KBo30CkOeYKWq1mDmo0xEoQj8cc7ybEZnus+YScZOpj8Ti4EFwhRt6SHer7YDb161IHKL8m4 MsCxpFSGEjbKj8Iul3Ri/fTOO8w14ivcuEEQIvJt4/+4YV5Az8G23wKzL/3aJ7SOT3oYGmR9 atBTmVO3DlODjM+rZLegd8SfLSPTcBTHspWE5duemIzZbEX3BP77r3Qx4Fo5Tkit3bG1XVar yPQato+sFGFEGifdE9USBQoAoOaaeZevwAWjDU0TIuCT0CUe0sKtQuNP4LRq0n9EEHOXBu9a CfdMhFUSkAZnuE7miSVwgPvoVNJ1stA37EXLN/sVsWik7wslTQ5vF81VpdGFiwoQPOe2XEKh ogcwGSnXbwv1gD4x+Gz/7Y+kFyr1NY+4/nSaeXVcS2fOwM0EZwqscgEMAMQTe6ypAmQe/TFO HqKD2hfFKdksTptKi6uEh8xIwct8G/0FBldDWXo9eu8CGr/ZrDg0/bAwJxbaLRQCMH19Gq2Y hLvZ1QK5GQJVzZKcqfxbF2LiDUTs6WkdOBIhGpdDy7p1xFrvqCGCtNFYHuGYm067EozibBSF BWAPstKu2FQuVHZNMOfs7p3OIz3Yfqu9woXDeg3/8G2qVQJINe+8EwXKlhgh4CyDbq7nAZoA kIu1SE9z9u3WI5mcNy/0dFmVUsFxBqRC3ewbvzie8tKyZ9yFOlaZPT0Y4nRBXQTI3mLZ8zQ8 mtrWK5OOmrJ02kdeO9RBXe+OMaUUWMf92ZIoBFb4HP6N+B+4N1y1OwULousfl7JRoYxA4MRL ls7E2sSoJvrEBTJB3Pc34xu8rsJ1A5V3NgN6djX8yEZYpTRkcmrBeWy/ofDqZPVqneAx0LRm eldDS9msXDW4KXODyPZ+9unvmHAcoH0xaBYaSH44CDZDQDg4LNcmbOvuu1TEXBJhjQARAQAB wsD8BBgBCAAmFiEEmXvSmjiQFHPVOpLnzDOt5NLj67sFAmcKrHMFCQeEzgACGwwACgkQzDOt 5NLj67sUCAv5AXqgWnYN9EblapMbZjkiqL8pZQ0GNqh+Pg9FwbyULxjtRTO6rD4D0IxizByb ef+neeUNyYlagt5nfKMysEr0SU/gHKCi8vyTF/63ukMrGUNGmJJxrndl5ZYKC6j6eX7twrZF L1Uvlmn6FnQ22red5kHO93fDjG4zaDIZvHfwj7kzjZ4tpC7Byinf88s14mdZeScc0PnU2hj4 UGYju/wg2FF4YxaZYhcmdTiRYY0Wx85XSMZv19pnn78sadEuRvfRd4JTmw++j1xGXeqQGWzz /CTG5/Ex9GAkQ02hZbmi236byDXoet4G8TEyOph9QFVkV9bNd0jQZaFZPGEj4PSPUYGAF7s5 xJaNGgctC3aZ7WjEv1FBoo44XCU4xcjJ1wZQUrHxRhx6TW0Jtcl0U9qfKFW30TSPo6RyiXuj X4ltWKAtjoXB8nUmEJckaz7IRu2b4pXDeazZuz5JBygUs10yJjDxh2vFQZo0KaBAPx9MZlPn gpPTjT15L8xGftEjQXF6 In-Reply-To: <9s0qo0o4-3275-p062-0qnq-nro5prqq2881@SerrOFQ.bet> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 06/08/2025 16:54, Bjoern A. Zeeb wrote: > On Wed, 6 Aug 2025, Andriy Gapon wrote: >> Not really testing but I have an old Orange Pi PC Plus which got broken (panic >> on boot) after an update to the latest main (+INVARIANTS).  I think that it >> has a WiFi device on SDIO. > > What WiFi is that?  Broadcom, Realtek or something else? According to "the internet" it's Realtek RTL8189FTV SDIO-based WiFi. -- Andriy Gapon From nobody Wed Aug 6 16:33:26 2025 X-Original-To: dev-commits-src-main@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 4bxwpG23jcz63why; Wed, 06 Aug 2025 16:33: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxwpG1QdVz3T8g; Wed, 06 Aug 2025 16:33:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754498006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i39VSG6xVncNncHcI1wK49fp7QZgEdWa08kRiyYr9Lw=; b=LC9jxY++UcWEzU+yAqECL4h6seUg20blb3pb9jEOZy7NKD+4p64S9/vgFP/AazmSwa4+LR Cv7P8G1K1xFrdah3qBR6Nv6QOgSt8SBm0AxOI76KUldUwldyYHH+P83qZqtzedQ03jHCyW hlJWPr9PUcX2H2IJwXEwf4ns5grQ3GD+EuV7V7sExdvMf6MdXGyb84e6TSQBLFMi1VTxUF vTd+2qbjNE5mDQi165xQNwRnfFU8ciHOaPsFqHQ0VfSa97uz9kP37fFFrPGYU9iOqcCOUd XG4dBoOJ9f0oNHqylvMrSZrYP9Sw8X8zYk0csCUxiesxqnYg3MYR4c3kv6RNiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754498006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i39VSG6xVncNncHcI1wK49fp7QZgEdWa08kRiyYr9Lw=; b=RqknrvHX0KHUVNFPi7fVoQ+UI0d3092W9LiKa2eNPRbPOnGfPZ1UmPtIsKKzpXR4RmBJDZ FJQ6RZvfTUHwVgV8ERpO81B2hvVjpyAUMlNrQXOh+ExGnsnNvwEGE3Cndd/veAQJuIRq3h EOFmt4ysYIbPxvEkkRo2OQYgVflR1MogKmNe7mfg9W3pPPGRyMaJbUULsEnXNsIvPXw3ci uaULDhjTXHujplE5uzYDgnwaGoK/Y2/iCfdgl/Q37iaCSH5/s+Egj8V+GpRsjxYfKzWL/d FnTi8ow21s942R0DB+buUFdz5cvI23bb96uqPt0fMLhJiNGLuV/gGnRz0M7ceQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754498006; a=rsa-sha256; cv=none; b=F7RWEYPA7n80+NwuvgSulPMH1eNa0X+MiEHKbfCP63v9hTjSuzRSDNw8qu++nMaLYqtMC+ wIus5ybu5KAiN1hORjGA6cRT4pXQ86kKYzYt7hoA57C4ZNRFXJ8ZRozlriuCUU49EP8rC4 gQDktj1A0Epkpb8TEI8E38cJCyOIHkpVW3iBSBZnNis7uF3DWMYLpF5CPBwamuXchCGLt1 l9LZs2EigQ4MoxQ0U0hMeFkE2XirUJMWgbgrqlt8M6wzZLD4JES80ecltoA9DazCCeYRaH qt+fwKDZ3I9OIk0TSV67RQpZkawrSEkK/QZd9oaeWC4oorYmBLLPE54C6t35SQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxwpG0WbXzCLP; Wed, 06 Aug 2025 16:33:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576GXQHk061858; Wed, 6 Aug 2025 16:33:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576GXQOv061855; Wed, 6 Aug 2025 16:33:26 GMT (envelope-from git) Date: Wed, 6 Aug 2025 16:33:26 GMT Message-Id: <202508061633.576GXQOv061855@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: 9c215e77b29a - main - freebsd-version.8: Add back freebsd-update paragraph List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9c215e77b29a7165fb2944118a69ab94e35357f0 Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=9c215e77b29a7165fb2944118a69ab94e35357f0 commit 9c215e77b29a7165fb2944118a69ab94e35357f0 Author: Alexander Ziaee AuthorDate: 2025-08-06 15:46:10 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-06 16:32:39 +0000 freebsd-version.8: Add back freebsd-update paragraph Someone may be working on making a pkg backend for freebsd-update so we can keep it. This reverts commit e9792345d36c96dbb49f3ee996f75384a4cca532. --- bin/freebsd-version/freebsd-version.1 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1 index 27ed69b38bc5..82ea9c707d69 100644 --- a/bin/freebsd-version/freebsd-version.1 +++ b/bin/freebsd-version/freebsd-version.1 @@ -75,6 +75,14 @@ version, next the userland version, and finally the userland version of the specified jails, on separate lines. If neither is specified, it will print the userland version only. .Sh IMPLEMENTATION NOTES +The +.Nm +utility should provide the correct answer in the vast majority of +cases, including on systems kept up-to-date using +.Xr freebsd-update 8 , +which does not update the kernel version unless the kernel itself was +affected by the latest patch. +.Pp To determine the name (and hence the location) of a custom kernel, the .Nm utility will attempt to parse From nobody Wed Aug 6 17:37:59 2025 X-Original-To: dev-commits-src-main@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 4bxyDl33rSz641Tb; Wed, 06 Aug 2025 17:37:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxyDl2VrNz3cVp; Wed, 06 Aug 2025 17:37:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WmXfUORgDF/mB2OgkET0/sWXtF5pND/HaqkNKftixsM=; b=aTr9EydvTwJpTMLbKJeQMnRYOy2sr2zccCRiTh5YLTQ9Sn9QKUdCfyK0VW6WCETWy54mB5 J3by5nV6Z5jsmX8pDaRSaQJls7G4xsM7sLc68PvjLWJaiC/KfHFRjLQH+If0cqQMlKVYTY WUgHV/t3oQJIyneHxyFvT0muFm0urqOndgOvzL5VtseTIW7DGrMsJiNJU4LPysQDBnTLZz 6H7KxuRwzfv4mkg9Y6Wd0JgPfN5Pd0fwj7kekwXvRHokVNfO3SBfKnZmuMrLz48JuajK// jdUFuS5rrKZFq8J8ZMFo2DIdZQ7z3+FwRRfbEEMfujNVBV8ApbU1pm8Xy9S92g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WmXfUORgDF/mB2OgkET0/sWXtF5pND/HaqkNKftixsM=; b=ksYTt/M65SAUYxR2amjhJP1GOKpSZtJ0wwZzWoo61ezaWW+Ih0WHBHj58Vclerc9NSC0yB iyAbYz9yluMxubdrxn1X+kyrH54IgNAaOnK/rOw1jS+04CPyldCm99nUNiL3SLHUzEhsdL HRfpSqG7uTUtbfJdVj1036A+tZ6ppfHT+0S2YORbXUbliiv1W1jfvqEvIHV421D+ZWciTW sIFPzdJetgGFXKFH0GYWDVFz91+x7ajVHHbyNTr8Fg7iTuEBUxAqg6fMs5sueIbU5z7sAt Taxs3+8LNS2/kmadqyzbSJe4BQGd1MENds7HWVXgSxOZvli4zlcckh0o441fzg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754501879; a=rsa-sha256; cv=none; b=uBPzpE7s9iRnl6ZN2f+1FUuVPKP99mWUri6zwpyuLJkt1PdehfztwaAykI5DH6pyFvsY0M ia+5dU1IjZTy/LFaCZwK7K7AR1GWLGVfNDoYsNx3NSgUijX6cZ79GDPCq4pAMoW6Xt3y5n jKw2OsBICVwRoMMtVvapP/gSSSwAwBxcEVgx4B2CgtDFnyYomsad8f+F8RrVOgGbe5tBsZ YVZm9JDnCmyJpYTDpPMEKJc0D22ObOpdqDw90FS9NxkWAmvDask03lWQzcl5vf5cB3OIYx MKThb9Ciyizu3cRnpIfco/z6fyItmN+GtqBZjCmNTkTfq7YX5ZjgPQ0ka3k0sw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxyDl1pvHzVpk; Wed, 06 Aug 2025 17:37:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Hbx7n076578; Wed, 6 Aug 2025 17:37:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576HbxiX076575; Wed, 6 Aug 2025 17:37:59 GMT (envelope-from git) Date: Wed, 6 Aug 2025 17:37:59 GMT Message-Id: <202508061737.576HbxiX076575@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 16597773bc90 - main - arm64: Add ADDR_IS_USER List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 16597773bc905086f5682c906bb44c51b3ac2c5a Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=16597773bc905086f5682c906bb44c51b3ac2c5a commit 16597773bc905086f5682c906bb44c51b3ac2c5a Author: Andrew Turner AuthorDate: 2025-07-31 13:59:59 +0000 Commit: Andrew Turner CommitDate: 2025-07-31 14:27:06 +0000 arm64: Add ADDR_IS_USER In most of the places we used ADDR_IS_KERNEL to decide which address space was being used it was to see if the address was for userspace. To make the checks more descriptive add ADDR_IS_USER rather than checking for not ADDR_IS_KERNEL. Reviewed by: alc, kib, markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51406 --- sys/arm64/arm64/pmap.c | 32 ++++++++++++++++---------------- sys/arm64/include/vmparam.h | 2 ++ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 2152f7fcc1c6..07955866bd1c 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -2915,13 +2915,13 @@ retry: l1 = pmap_l1(pmap, va); if (l1 != NULL && (pmap_load(l1) & ATTR_DESCR_MASK) == L1_TABLE) { l2 = pmap_l1_to_l2(l1, va); - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { /* Add a reference to the L2 page. */ l2pg = PTE_TO_VM_PAGE(pmap_load(l1)); l2pg->ref_count++; } else l2pg = NULL; - } else if (!ADDR_IS_KERNEL(va)) { + } else if (ADDR_IS_USER(va)) { /* Allocate a L2 page. */ l2pindex = pmap_l2_pindex(va) >> Ln_ENTRIES_SHIFT; l2pg = _pmap_alloc_l3(pmap, NUL2E + l2pindex, lockp); @@ -4082,7 +4082,7 @@ pmap_remove_l3_range(pmap_t pmap, pd_entry_t l2e, vm_offset_t sva, PMAP_LOCK_ASSERT(pmap, MA_OWNED); KASSERT(rounddown2(sva, L2_SIZE) + L2_SIZE == roundup2(eva, L2_SIZE), ("pmap_remove_l3_range: range crosses an L3 page table boundary")); - l3pg = !ADDR_IS_KERNEL(sva) ? PTE_TO_VM_PAGE(l2e) : NULL; + l3pg = ADDR_IS_USER(sva) ? PTE_TO_VM_PAGE(l2e) : NULL; va = eva; for (l3 = pmap_l2_to_l3(&l2e, sva); sva != eva; l3++, sva += L3_SIZE) { old_l3 = pmap_load(l3); @@ -5310,7 +5310,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, if ((flags & PMAP_ENTER_WIRED) != 0) new_l3 |= ATTR_SW_WIRED; if (pmap->pm_stage == PM_STAGE1) { - if (!ADDR_IS_KERNEL(va)) + if (ADDR_IS_USER(va)) new_l3 |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; else new_l3 |= ATTR_S1_UXN; @@ -5401,7 +5401,7 @@ retry: pde = pmap_pde(pmap, va, &lvl); if (pde != NULL && lvl == 2) { l3 = pmap_l2_to_l3(pde, va); - if (!ADDR_IS_KERNEL(va) && mpte == NULL) { + if (ADDR_IS_USER(va) && mpte == NULL) { mpte = PTE_TO_VM_PAGE(pmap_load(pde)); mpte->ref_count++; } @@ -5411,7 +5411,7 @@ retry: if ((pmap_load(l2) & ATTR_DESCR_MASK) == L2_BLOCK && (l3 = pmap_demote_l2_locked(pmap, l2, va, &lock)) != NULL) { l3 = &l3[pmap_l3_index(va)]; - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { mpte = PTE_TO_VM_PAGE(pmap_load(l2)); mpte->ref_count++; } @@ -5419,7 +5419,7 @@ retry: } /* We need to allocate an L3 table. */ } - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { nosleep = (flags & PMAP_ENTER_NOSLEEP) != 0; /* @@ -5657,7 +5657,7 @@ pmap_enter_l2_rx(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, if ((prot & VM_PROT_EXECUTE) == 0 || m->md.pv_memattr == VM_MEMATTR_DEVICE) new_l2 |= ATTR_S1_XN; - if (!ADDR_IS_KERNEL(va)) + if (ADDR_IS_USER(va)) new_l2 |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; else new_l2 |= ATTR_S1_UXN; @@ -5745,7 +5745,7 @@ pmap_enter_l2(pmap_t pmap, vm_offset_t va, pd_entry_t new_l2, u_int flags, "pmap_enter_l2: no space for va %#lx" " in pmap %p", va, pmap); return (KERN_NO_SPACE); - } else if (!ADDR_IS_KERNEL(va) || + } else if (ADDR_IS_USER(va) || !pmap_every_pte_zero(PTE_TO_PHYS(old_l2))) { if (l2pg != NULL) l2pg->ref_count--; @@ -5796,7 +5796,7 @@ pmap_enter_l2(pmap_t pmap, vm_offset_t va, pd_entry_t new_l2, u_int flags, } KASSERT(pmap_load(l2) == 0, ("pmap_enter_l2: non-zero L2 entry %p", l2)); - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { vm_page_free_pages_toq(&free, true); } else { KASSERT(SLIST_EMPTY(&free), @@ -5916,7 +5916,7 @@ pmap_enter_l3c_rx(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *ml3p, if ((prot & VM_PROT_EXECUTE) == 0 || m->md.pv_memattr == VM_MEMATTR_DEVICE) l3e |= ATTR_S1_XN; - if (!ADDR_IS_KERNEL(va)) + if (ADDR_IS_USER(va)) l3e |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; else l3e |= ATTR_S1_UXN; @@ -5948,7 +5948,7 @@ pmap_enter_l3c(pmap_t pmap, vm_offset_t va, pt_entry_t l3e, u_int flags, /* * If the L3 PTP is not resident, we attempt to create it here. */ - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { /* * Were we given the correct L3 PTP? If so, we can simply * increment its ref count. @@ -6224,7 +6224,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, * In the case that a page table page is not * resident, we are creating it here. */ - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { vm_pindex_t l2pindex; /* @@ -6310,7 +6310,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, if ((prot & VM_PROT_EXECUTE) == 0 || m->md.pv_memattr == VM_MEMATTR_DEVICE) l3_val |= ATTR_S1_XN; - if (!ADDR_IS_KERNEL(va)) + if (ADDR_IS_USER(va)) l3_val |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; else l3_val |= ATTR_S1_UXN; @@ -8528,7 +8528,7 @@ pmap_demote_l2_locked(pmap_t pmap, pt_entry_t *l2, vm_offset_t va, * region and early kernel memory are the only parts of the * kernel address space that must be handled here. */ - KASSERT(!ADDR_IS_KERNEL(va) || VIRT_IN_DMAP(va) || + KASSERT(ADDR_IS_USER(va) || VIRT_IN_DMAP(va) || (va >= VM_MIN_KERNEL_ADDRESS && va < kernel_vm_end), ("pmap_demote_l2: No saved mpte for va %#lx", va)); @@ -8555,7 +8555,7 @@ pmap_demote_l2_locked(pmap_t pmap, pt_entry_t *l2, vm_offset_t va, } ml3->pindex = pmap_l2_pindex(va); - if (!ADDR_IS_KERNEL(va)) { + if (ADDR_IS_USER(va)) { ml3->ref_count = NL3PG; pmap_resident_count_inc(pmap, 1); } diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h index 349849845e73..db3af1881282 100644 --- a/sys/arm64/include/vmparam.h +++ b/sys/arm64/include/vmparam.h @@ -213,6 +213,8 @@ /* If true addr is in the kernel address space */ #define ADDR_IS_KERNEL(addr) (((addr) & (1ul << 55)) == (1ul << 55)) +/* If true addr is in the user address space */ +#define ADDR_IS_USER(addr) (((addr) & (1ul << 55)) == 0) /* If true addr is in its canonical form (i.e. no TBI, PAC, etc.) */ #define ADDR_IS_CANONICAL(addr) \ (((addr) & 0xffff000000000000UL) == 0 || \ From nobody Wed Aug 6 17:38:00 2025 X-Original-To: dev-commits-src-main@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 4bxyDm3j3fz641Bk; Wed, 06 Aug 2025 17:38:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxyDm2YvXz3cY3; Wed, 06 Aug 2025 17:38:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4GUSE9Fn5eMHeYCpIf+zsZZPLH8th6styJMY15F0UV4=; b=TmmFQhIf5Cd/p24ZLl/AeUx82tL4RDYSL5TPKMFF7PSnXsHkcMn11gPzJ8IZAIcgY+2oBl 9hu4oX7wN+w9Nl4zFtQGAjjU1f8MIurMYjAc7jEBDngcacnT8uF3IsJA+0nXcCzUdcsz5G pZaFIlnewhxhiII51x1E/vxyvBh4qsJv3KuGCl6eWtPHywNzjf0iKK2jQf1U98ZK8PBLqB 3CvHeQB2dExkkm3CL7iXPU/+s30f8bzURB64PlsFXAwGJ/Q+L4kQhzzwmpF8b4mUrNtjQ4 PMpjcmZAnVQzkmXl+xyVAn+ZxV52SFDWegZ5rqctrLRYjcSKechXmv3tZdy+hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4GUSE9Fn5eMHeYCpIf+zsZZPLH8th6styJMY15F0UV4=; b=R7WBn2UNo9oaqPuSUORCqp9RQf/YV9K7xOE1JuXE1xVkKUSWlQgJr2etigMXJFl1hQxGXX DYfoixy4FFfsKnWhz0KleeLYEgfXq7u+hlvZ8jjqJL+X4ynoV7sLxP57dOFoY2VqMDQhYU 74rw1fA1TzLP3n9sxAgaGJsUdcURlf3OQfsUi+EY//MR0fGe3lxli3AcqdifW6/TljCveC JSaIFe6ieZMgimN4ves7+9Hn4U3dhk327r3LPohDtQYd3pFuJ9Aur6w+LuEfw3uGt4jxk5 O4neRR8QWZdNBcehoIWJwPHxUNQ537isgPwCP/9otCkwLAC6nGJcJvm0T0PnTQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754501880; a=rsa-sha256; cv=none; b=lQ0gWCBPiIMcP6WPm73D1LoBpyitj8AB4zlDt3+ETUmypMzxEerUIZiZyrpiOO0A72wRNF wTAQ/7ShkGBTu0ADa6xOJx/ltDpQfWD/9qQKo6vmCIq36gv8v6r2uv1HXWXZKB3hzo+L25 RMrJmTaj94kHPLn/MOOC2qsg2LWL6w3ikepYIFzOjw9afVlXvvgIpfEE++0rWhqQOdLdJW KDHBv6LwGMQDYbpx+E1mK4eVUYKqq78GUqgRKFVKKZgO5Zwchwc7/WtDlZCS2wtMOE82bc IlAiRTDOZdJvNlWMpT3A0Lzt+xzaOBuGcTyJoet5fBI3WYVwwxK561RTtynqQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxyDm29Y9zVcG; Wed, 06 Aug 2025 17:38:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Hc01d076622; Wed, 6 Aug 2025 17:38:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576Hc0wZ076618; Wed, 6 Aug 2025 17:38:00 GMT (envelope-from git) Date: Wed, 6 Aug 2025 17:38:00 GMT Message-Id: <202508061738.576Hc0wZ076618@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 81f07332c03f - main - arm64: tidy up Top-Byte-Ignore (TBI) in the kernel List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 81f07332c03fd2ac6efa8e15b1659a573d250329 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=81f07332c03fd2ac6efa8e15b1659a573d250329 commit 81f07332c03fd2ac6efa8e15b1659a573d250329 Author: Harry Moulton AuthorDate: 2025-07-31 14:10:57 +0000 Commit: Andrew Turner CommitDate: 2025-07-31 14:27:06 +0000 arm64: tidy up Top-Byte-Ignore (TBI) in the kernel In preparation for TBI to be enabled for processes from 15.0 we need to clean up copying data between userspace and the kernel. These functions will check the address is within the valid userspace range, however as the userspace and kernel ranges may overlap when TBI is enabled we need to mask off the top 8 bits. Processes not using TBI are unaffected as the hardware will still check all bits in the address, however this will happen at the first load/store instruction. Reviewed by: andrew Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D49119 --- sys/arm64/arm64/copyinout.S | 18 ++++++++++++++++-- sys/arm64/arm64/support.S | 9 ++++++++- sys/arm64/include/vmparam.h | 3 +++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/sys/arm64/arm64/copyinout.S b/sys/arm64/arm64/copyinout.S index 26dd0b4cf14f..e41c4b5f6734 100644 --- a/sys/arm64/arm64/copyinout.S +++ b/sys/arm64/arm64/copyinout.S @@ -37,7 +37,14 @@ #include "assym.inc" .macro check_user_access user_arg, size_arg, bad_access_func - adds x6, x\user_arg, x\size_arg + /* + * TBI is enabled from 15.0. Clear the top byte of the userspace + * address before checking whether it's within the given limit. + * The later load/store instructions will fault if TBI is disabled + * for the current process. + */ + and x6, x\user_arg, #(~TBI_ADDR_MASK) + adds x6, x6, x\size_arg b.cs \bad_access_func ldr x7, =VM_MAXUSER_ADDRESS cmp x6, x7 @@ -100,13 +107,20 @@ ENTRY(copyinstr) adr x6, copyio_fault /* Get the handler address */ SET_FAULT_HANDLER(x6, x7) /* Set the handler */ + /* + * As in check_user_access mask off the TBI bits for the cmp + * instruction. The load will fail trap if TBI is disabled, but we + * need to check the address didn't wrap. + */ + and x6, x0, #(~TBI_ADDR_MASK) ldr x7, =VM_MAXUSER_ADDRESS -1: cmp x0, x7 +1: cmp x6, x7 b.cs copyio_fault ldtrb w4, [x0] /* Load from uaddr */ add x0, x0, #1 /* Next char */ strb w4, [x1], #1 /* Store in kaddr */ add x5, x5, #1 /* count++ */ + add x6, x6, #1 /* Increment masked address */ cbz w4, 2f /* Break when NUL-terminated */ sub x2, x2, #1 /* len-- */ cbnz x2, 1b diff --git a/sys/arm64/arm64/support.S b/sys/arm64/arm64/support.S index 2d067c7f7730..bf6fc931e4b0 100644 --- a/sys/arm64/arm64/support.S +++ b/sys/arm64/arm64/support.S @@ -39,8 +39,15 @@ #include "assym.inc" .macro check_user_access user_arg, limit, bad_addr_func + /* + * TBI is enabled from 15.0. Clear the top byte of the userspace + * address before checking whether it's within the given limit. + * The later load/store instructions will fault if TBI is disabled + * for the current process. + */ + and x6, x\user_arg, #(~TBI_ADDR_MASK) ldr x7, =(\limit) - cmp x\user_arg, x7 + cmp x6, x7 b.cs \bad_addr_func .endm diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h index db3af1881282..c30ca1b2bff4 100644 --- a/sys/arm64/include/vmparam.h +++ b/sys/arm64/include/vmparam.h @@ -211,6 +211,9 @@ /* The address bits that hold a pointer authentication code */ #define PAC_ADDR_MASK (0xff7f000000000000UL) +/* The top-byte ignore address bits */ +#define TBI_ADDR_MASK 0xff00000000000000UL + /* If true addr is in the kernel address space */ #define ADDR_IS_KERNEL(addr) (((addr) & (1ul << 55)) == (1ul << 55)) /* If true addr is in the user address space */ From nobody Wed Aug 6 17:38:01 2025 X-Original-To: dev-commits-src-main@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 4bxyDn5QbJz641Bm; Wed, 06 Aug 2025 17:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxyDn3jtcz3cYC; Wed, 06 Aug 2025 17:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G085SWHCQ8/rm0ASkp3xztqm5LaN2eNbYrjhdmu7Jc0=; b=O/l9F2/vB9jbaFfmV7ZInsPNNMaVPWZb/Ra8SqUxb1sv4RGLCoDTbxlx5zp5xPOZK+ccdu oBhglE82XceQ8ARsKiCapZbIxSzVGoBZYyPOdPrDtAKwbhg4JQTN+kedsVH59etwCoC2gz x70JBWb3k4cp3/r7BQ9lZx+zvnMoZ4zuNlKKTsUtbzBM1MD62B0bQJGwfUCxtoFyiv5xop /n0/EfVetlc2ZlwWrDKXCOpQ+kG6nkRN36nC5AoCld9rTD8a8UdVykt1Co72yzbXq+1EVH 0gC4UtOIEh8FLS56hEunBtP6Jug9JH9RQGoWyhH8s38gO2vZMpi46QbwzRIDZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754501881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G085SWHCQ8/rm0ASkp3xztqm5LaN2eNbYrjhdmu7Jc0=; b=fIpmsn6WqpvDWTl49glkKlT809N4aJTu3ad4ywHayxLc2Rcz9FLkbHy29jWNArfxeB8Vhs rAT5YoIePGVOVk84CvLr2TrYEtjfxqKLe8mb5J/Jsh3JzJ16tIGCdEi2jAhrXkCEk7twad xjev/FhnldOi60YEV3PB9b46Y7KdNjisx61i8PmT5aLhuJDFPw89diT8tHfm7ohF2XWMcZ i/8ecYUrYX+37J8x2MiSXKk9j9XtR4F2l6KfM8epurU4xOad/q7aPAmm2AgeJvPPR/LZVq xFvQC7w5Z/5jkw1yAzu6sMjNUSQ6nuH3uaRFOFml3sn27b0DTXvyLPcHFbxv2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754501881; a=rsa-sha256; cv=none; b=osK9p01GFxolK9Va2WGwBJ2JjYGdobaDtrTFv8BVl3w7wLofsa8mpd6U02OEyDXNWtRJSA 2WJBbcwvemHHCkrKDUEz2DCtDKxnogCk9nFsEQti/DIIDS4gLUEDjZSi8dmULaTtX+REVD RBhX/slUuWP3MVj61XdkZsaAUhd8LPZ0NgF1e3bnCnvNQy0lhHDKLzVmVWTCP982TzZ0EM cyr3cxReHWO/Dkzyx0BpDCcGaX+tPqtOTFNTEZQeDd5rf4lKdTvqS1wwStk3+OVwRmMk6M zGKLxBWQifzYzSocCnDABwovxwwMtNhuu0mM2vyP0HWQsCdCO+ShZTwjLKYWcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bxyDn2mj7zV1K; Wed, 06 Aug 2025 17:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Hc1WW076656; Wed, 6 Aug 2025 17:38:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576Hc1GQ076652; Wed, 6 Aug 2025 17:38:01 GMT (envelope-from git) Date: Wed, 6 Aug 2025 17:38:01 GMT Message-Id: <202508061738.576Hc1GQ076652@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 6ff9bb7c3bb0 - main - arm64: Use a fixed value for sctlr_el1 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6ff9bb7c3bb089a85af067c4159cd942f204ba76 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=6ff9bb7c3bb089a85af067c4159cd942f204ba76 commit 6ff9bb7c3bb089a85af067c4159cd942f204ba76 Author: Andrew Turner AuthorDate: 2025-07-31 14:12:34 +0000 Commit: Andrew Turner CommitDate: 2025-07-31 14:27:06 +0000 arm64: Use a fixed value for sctlr_el1 We load a fixed value into sctlr_el1 in enter_kernel_el so there is no need to clear and set fields. Replace with a fixed list of fields that are set when the MMU is off an when it is on. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51011 --- sys/arm64/arm64/locore.S | 23 +++-------------------- sys/arm64/include/armreg.h | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index f200195906ac..4a10a2b4f2d3 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -319,14 +319,12 @@ LEND(mpentry_common) * - Configure EL2 to support running the kernel at EL1 and exit to that */ LENTRY(enter_kernel_el) -#define INIT_SCTLR_EL1 (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_EIS | \ - SCTLR_TSCXT | SCTLR_EOS) mrs x23, CurrentEL and x23, x23, #(CURRENTEL_EL_MASK) cmp x23, #(CURRENTEL_EL_EL2) b.eq 1f - ldr x2, =INIT_SCTLR_EL1 + ldr x2, =SCTLR_MMU_OFF msr sctlr_el1, x2 /* SCTLR_EOS is set so eret is a context synchronizing event so we * need an isb here to ensure it's observed by later instructions, @@ -370,7 +368,7 @@ LENTRY(enter_kernel_el) msr vmpidr_el2, x2 /* Set the initial sctlr_el1 */ - ldr x2, =INIT_SCTLR_EL1 + ldr x2, =SCTLR_MMU_OFF msr sctlr_el1, x2 /* Check for VHE */ @@ -442,7 +440,6 @@ LENTRY(enter_kernel_el) isb eret -#undef INIT_SCTLR_EL1 LEND(enter_kernel_el) /* @@ -1037,11 +1034,7 @@ LENTRY(start_mmu) /* * Setup SCTLR. */ - ldr x2, sctlr_set - ldr x3, sctlr_clear - mrs x1, sctlr_el1 - bic x1, x1, x3 /* Clear the required bits */ - orr x1, x1, x2 /* Set the required bits */ + ldr x1, =SCTLR_MMU_ON msr sctlr_el1, x1 isb @@ -1066,16 +1059,6 @@ tcr: .quad (TCR_TxSZ(64 - VIRT_BITS) | TCR_TG | \ TCR_SH1_IS | TCR_ORGN1_WBWA | TCR_IRGN1_WBWA | \ TCR_SH0_IS | TCR_ORGN0_WBWA | TCR_IRGN0_WBWA) -sctlr_set: - /* Bits to set */ - .quad (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_UCI | SCTLR_SPAN | \ - SCTLR_nTWE | SCTLR_nTWI | SCTLR_UCT | SCTLR_DZE | \ - SCTLR_I | SCTLR_SED | SCTLR_SA0 | SCTLR_SA | SCTLR_C | \ - SCTLR_M | SCTLR_CP15BEN | SCTLR_BT1 | SCTLR_BT0) -sctlr_clear: - /* Bits to clear */ - .quad (SCTLR_EE | SCTLR_E0E | SCTLR_IESB | SCTLR_WXN | SCTLR_UMA | \ - SCTLR_ITD | SCTLR_A) LEND(start_mmu) ENTRY(abort) diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h index 38b7f57f7853..500f35c48787 100644 --- a/sys/arm64/include/armreg.h +++ b/sys/arm64/include/armreg.h @@ -2608,6 +2608,26 @@ #define SCTLR_EnALS (UL(0x1) << 56) #define SCTLR_EPAN (UL(0x1) << 57) +#define SCTLR_MMU_OFF \ + (SCTLR_LSMAOE | SCTLR_nTLSMD | SCTLR_EIS | SCTLR_TSCXT | SCTLR_EOS) +#define SCTLR_MMU_ON \ + (SCTLR_MMU_OFF | \ + SCTLR_BT1 | \ + SCTLR_BT0 | \ + SCTLR_UCI | \ + SCTLR_SPAN | \ + SCTLR_nTWE | \ + SCTLR_nTWI | \ + SCTLR_UCT | \ + SCTLR_DZE | \ + SCTLR_I | \ + SCTLR_SED | \ + SCTLR_CP15BEN | \ + SCTLR_SA0 | \ + SCTLR_SA | \ + SCTLR_C | \ + SCTLR_M) + /* SCTLR_EL12 */ #define SCTLR_EL12_REG MRS_REG_ALT_NAME(SCTLR_EL12) #define SCTLR_EL12_op0 3 From nobody Wed Aug 6 17:43:47 2025 X-Original-To: dev-commits-src-main@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 4bxyMj0zH0z641b3 for ; Wed, 06 Aug 2025 17:44:01 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bxyMh5vLgz3h7B for ; Wed, 06 Aug 2025 17:44:00 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-459d40d16bdso1306775e9.0 for ; Wed, 06 Aug 2025 10:44:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754502239; x=1755107039; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lM7dp4qopC12gwFSy04v2ayPOgG9+xnoPj91o2kJy3w=; b=cT2hkG5bz7QetFadTutorSDT5Z3unoOSWdxS5jAzJl1TXt5NBxyZIFdxwScry0NkP+ H1sMSDWvc261uJHrCUryxfpu1TY/X1RmrAoB6xl5OG/ifzANA7EHiSNvwj6CDTb20oaQ 0blzkiypf9JKfb7KM9oxwQ4gMyBLHyDNL1MHWlS0yXyGOebMqQJR+UHISX1DmMc6xjwu Gy/j8HotvY+GiEHLpZIRH2o+T2Rlg6obL429rQ0hlvEbc+7C+9CZdUgpGWFsJVXhKFFm LlylgX1uDQV/yOyVKuv7iHH7Pw5VrhZeY/ykwJxkX3MJGXnPZRBZjP+dAW+xmQP9llQ4 TRcA== X-Forwarded-Encrypted: i=1; AJvYcCWP/C0Xkjli8WjIYpPP7xOexmGc64/RT3VylaiFyCn1xczSn0dpx185mv4NUoW9B0P+jSoBo3FalVhUOcTQ2C/K/WeGZw==@freebsd.org X-Gm-Message-State: AOJu0YwPcmK3V2z5A1jldrDBayQUqOjGvsojQT5pFzSZ2oaOAKE0pyoI AF6c3CAIFYqN2aiTv2bS/ksDLYn9PkbSo6Hf83ezQvjGuSIE8NWRyF2PkOz7jVrI6m3fEmS52MH 6ScJk X-Gm-Gg: ASbGnctF0v1BCsZg1b8nRng6vTJliE/RBxTvuyA4DtkEdiWJCuGzkglE3BvPFWhAeg1 OSaqXjazb5FbOeAofllvAFWLKIN88JpD/cLNqUgI2b9C/y1LVI/gRie5BMtdzzNfJox6KiD85vz LhnPc2B0VO9OjnttVbPk4y7xKhA2j2fkd0fphDzsveFH/mh4uuqcnj2/NVSi7Mr/MSd7bnP9y4N cIKNi4HCZeHpX41qslEwa1llilZqISrQ4TaIBsXkkmi2LXaz7SM+3gOmUv6WOpn5VBHLNVT3leO DmLp2XCxpaFb/UaD1VxjSo3Q+yASGqq2HjS7UrSCjkiUxnYJjkGxKTtLEuDWV+6Sg3fYZO9ROcI CV7lvbIfPKws5/Py3NU7XRqxMWAH9MzuBTwG2Epaw8iwvOpYYuQbJ/ocxTzfQoKgZUiriT6w= X-Google-Smtp-Source: AGHT+IFfiCvH2+aWTDadL11UmZ38S91TWsby+W0WUot7XtLkzgkiGY3X2Z5zltsfc2g7ilav3+MHpw== X-Received: by 2002:a05:600c:1ca0:b0:459:d8c2:80b2 with SMTP id 5b1f17b1804b1-459e7415e9cmr34365385e9.7.1754502238840; Wed, 06 Aug 2025 10:43:58 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459e3d37439sm40114285e9.2.2025.08.06.10.43.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Aug 2025 10:43:58 -0700 (PDT) Content-Type: text/plain; charset=utf-8 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 81f07332c03f - main - arm64: tidy up Top-Byte-Ignore (TBI) in the kernel From: Jessica Clarke In-Reply-To: <202508061738.576Hc0wZ076618@gitrepo.freebsd.org> Date: Wed, 6 Aug 2025 18:43:47 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: <202508061738.576Hc0wZ076618@gitrepo.freebsd.org> To: Andrew Turner X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4bxyMh5vLgz3h7B X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 6 Aug 2025, at 18:38, Andrew Turner wrote: >=20 > The branch main has been updated by andrew: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D81f07332c03fd2ac6efa8e15b1659a57= 3d250329 >=20 > commit 81f07332c03fd2ac6efa8e15b1659a573d250329 > Author: Harry Moulton > AuthorDate: 2025-07-31 14:10:57 +0000 > Commit: Andrew Turner > CommitDate: 2025-07-31 14:27:06 +0000 >=20 > arm64: tidy up Top-Byte-Ignore (TBI) in the kernel >=20 > In preparation for TBI to be enabled for processes from 15.0 we = need > to clean up copying data between userspace and the kernel. These > functions will check the address is within the valid userspace = range, > however as the userspace and kernel ranges may overlap when TBI is > enabled we need to mask off the top 8 bits. >=20 > Processes not using TBI are unaffected as the hardware will still > check all bits in the address, however this will happen at the = first > load/store instruction. I thought Linux=E2=80=99s ABI was that addresses passed to the kernel = must be canonical. Is that false, or is there a reason we=E2=80=99re diverging = from that design choice? Jessica > Reviewed by: andrew > Sponsored by: Arm Ltd > Differential Revision: https://reviews.freebsd.org/D49119 > --- > sys/arm64/arm64/copyinout.S | 18 ++++++++++++++++-- > sys/arm64/arm64/support.S | 9 ++++++++- > sys/arm64/include/vmparam.h | 3 +++ > 3 files changed, 27 insertions(+), 3 deletions(-) >=20 > diff --git a/sys/arm64/arm64/copyinout.S b/sys/arm64/arm64/copyinout.S > index 26dd0b4cf14f..e41c4b5f6734 100644 > --- a/sys/arm64/arm64/copyinout.S > +++ b/sys/arm64/arm64/copyinout.S > @@ -37,7 +37,14 @@ > #include "assym.inc" >=20 > .macro check_user_access user_arg, size_arg, bad_access_func > - adds x6, x\user_arg, x\size_arg > + /* > + * TBI is enabled from 15.0. Clear the top byte of the userspace > + * address before checking whether it's within the given limit. > + * The later load/store instructions will fault if TBI is disabled > + * for the current process. > + */ > + and x6, x\user_arg, #(~TBI_ADDR_MASK) > + adds x6, x6, x\size_arg > b.cs \bad_access_func > ldr x7, =3DVM_MAXUSER_ADDRESS > cmp x6, x7 > @@ -100,13 +107,20 @@ ENTRY(copyinstr) > adr x6, copyio_fault /* Get the handler address */ > SET_FAULT_HANDLER(x6, x7) /* Set the handler */ >=20 > + /* > + * As in check_user_access mask off the TBI bits for the cmp > + * instruction. The load will fail trap if TBI is disabled, but we > + * need to check the address didn't wrap. > + */ > + and x6, x0, #(~TBI_ADDR_MASK) > ldr x7, =3DVM_MAXUSER_ADDRESS > -1: cmp x0, x7 > +1: cmp x6, x7 > b.cs copyio_fault > ldtrb w4, [x0] /* Load from uaddr */ > add x0, x0, #1 /* Next char */ > strb w4, [x1], #1 /* Store in kaddr */ > add x5, x5, #1 /* count++ */ > + add x6, x6, #1 /* Increment masked address */ > cbz w4, 2f /* Break when NUL-terminated */ > sub x2, x2, #1 /* len-- */ > cbnz x2, 1b > diff --git a/sys/arm64/arm64/support.S b/sys/arm64/arm64/support.S > index 2d067c7f7730..bf6fc931e4b0 100644 > --- a/sys/arm64/arm64/support.S > +++ b/sys/arm64/arm64/support.S > @@ -39,8 +39,15 @@ > #include "assym.inc" >=20 > .macro check_user_access user_arg, limit, bad_addr_func > + /* > + * TBI is enabled from 15.0. Clear the top byte of the userspace > + * address before checking whether it's within the given limit. > + * The later load/store instructions will fault if TBI is disabled > + * for the current process. > + */ > + and x6, x\user_arg, #(~TBI_ADDR_MASK) > ldr x7, =3D(\limit) > - cmp x\user_arg, x7 > + cmp x6, x7 > b.cs \bad_addr_func > .endm >=20 > diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h > index db3af1881282..c30ca1b2bff4 100644 > --- a/sys/arm64/include/vmparam.h > +++ b/sys/arm64/include/vmparam.h > @@ -211,6 +211,9 @@ > /* The address bits that hold a pointer authentication code */ > #define PAC_ADDR_MASK (0xff7f000000000000UL) >=20 > +/* The top-byte ignore address bits */ > +#define TBI_ADDR_MASK 0xff00000000000000UL > + > /* If true addr is in the kernel address space */ > #define ADDR_IS_KERNEL(addr) (((addr) & (1ul << 55)) =3D=3D (1ul << = 55)) > /* If true addr is in the user address space */ From nobody Wed Aug 6 19:06:46 2025 X-Original-To: dev-commits-src-main@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 4by0CS5Pskz645xh for ; Wed, 06 Aug 2025 19:07:00 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by0CS11Hnz3r1w for ; Wed, 06 Aug 2025 19:07:00 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-459ddf8acf1so2825765e9.0 for ; Wed, 06 Aug 2025 12:07:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754507218; x=1755112018; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zUVjikg7tYNRPf312rGKn5df9vrxbZxWLVWjrgClLkM=; b=iTYY8pItwbmdmCWcLYAvP7eOMU3Z3ibUdvJG51brRCiUTT9UubspxYdMtQ3536+GNe tNb1MAHLM57kOfidKz5L4p3V7Fmawt6GDx2EQ7pXuuuyVyZ9XT/LlllFJ3IaZWDTv3eK Ma/lkAsf3WAcMYsvQj8QH6r21RlAvwiq4VEiK9rL4xgOx5rpuwJtIY71dx6zRfj+WA/T gABx6QbJRxj5BLVGvzHv/6MUF2Xz+lJFi1HiYQBnyWjWOQJSz8Al5+v+UCnHKVJyQOAW 1jNhSoi/K4hWkS3Pv7R6ow3EKBvkRlM8WcLX9l639jwDaKwMxVpg8xbOyFRn6RFfPbIr FqmQ== X-Forwarded-Encrypted: i=1; AJvYcCUN/jV9NC1WPAYz5yvzrH1GdUBblCMPNGoz+onkYeLKP9uwkpPrTi9UB9xj2PIow58xfIheFyeU/H9/CcPs9hOVIMzxCg==@freebsd.org X-Gm-Message-State: AOJu0Yzd4CWZAuR4nKcJdOtbT3kZowJxbYAjQuSle7NSw2RCNMZ+K8C8 oNbUnSH8ccBRk0HI/XxPwqm/BX9gJoI325MPG0SkPsgPpiN+wQBlu8vR1H3hjr+qdl0= X-Gm-Gg: ASbGnctdntLDr4H7MKsQbIoYhmcas8J3iJU487/oU3b/IaGnZevUqOaFQYXuTxbhZ9K sq2xwwFAfjzl71DKhX75HCe9WqxVsYx3PgUyTpFmsnQDGf0q6xm0Y+rTL9q2hCytuXXngqHwHwI x8ypnYLH1aQGXq5Qlh1APpDDba55GtEmaFrdfdSYzmQKtDtvgIx1GspjkHL45bmZ17siEdF95XQ vMTcBBXXjnp35LIrX3CJdEez9O0atdmF5CtfBri49j+kZ7doJKVdYL44PCdaAajn+Tgp2YxwA3i 8nfSbsXow3v+I0qthi8ECcL3e8GvaLacJ/ztJVqhh+lpUD1q+GdGXtZpaPfivxiuRY6R87MWHvI PBaQot9mqrAI/fGFkXO8DCqdAQe3K+OjcSM28aizbdxZqw1WWDW3U/Lw1xOl+n3L2zvyLLE0KBn zOq2Exgw== X-Google-Smtp-Source: AGHT+IFlucp5PnD9AA0AYFJcqV6eT7PLEadjTZpriJGe13ZroPUH60meWApRr4HVikNl2wdIiW6M/Q== X-Received: by 2002:a05:600c:524e:b0:458:bfe1:4a91 with SMTP id 5b1f17b1804b1-459e70d8261mr32345765e9.20.1754507217783; Wed, 06 Aug 2025 12:06:57 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c3bf956sm24518038f8f.24.2025.08.06.12.06.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Aug 2025 12:06:57 -0700 (PDT) Content-Type: text/plain; charset=utf-8 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 024f676b399f - main - sbin/newfs_msdos: add support for exFAT file systems From: Jessica Clarke In-Reply-To: <202508052021.575KLosa084344@gitrepo.freebsd.org> Date: Wed, 6 Aug 2025 20:06:46 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: <202508052021.575KLosa084344@gitrepo.freebsd.org> To: =?utf-8?Q?Stefan_E=C3=9Fer?= X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4by0CS11Hnz3r1w X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 5 Aug 2025, at 21:21, Stefan E=C3=9Fer wrote: >=20 > The branch main has been updated by se: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D024f676b399fc8acee7288c543d32c58= 1328833c >=20 > commit 024f676b399fc8acee7288c543d32c581328833c > Author: Stefan E=C3=9Fer > AuthorDate: 2025-08-05 20:12:18 +0000 > Commit: Stefan E=C3=9Fer > CommitDate: 2025-08-05 20:12:18 +0000 >=20 > sbin/newfs_msdos: add support for exFAT file systems >=20 > Add support for the creation of exFAT file systems, if invoked as > newfs_exfat. Why should newfs support creating file systems that cannot even be read by anything in-tree? This is just confusing to users, they=E2=80=99ll = try creating such file systems and then complain it doesn=E2=80=99t work, = and rightly so. It=E2=80=99s not even documented in the manpage that you = can=E2=80=99t actually use the result of this on FreeBSD, but even if you did that, people won=E2=80=99t read it, as they=E2=80=99ll reasonably expect that = newfs produces things FreeBSD can use. This also breaks cross-building from non-FreeBSD. Jessica From nobody Wed Aug 6 20:09:58 2025 X-Original-To: dev-commits-src-main@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 4by1c64JhKz64980; Wed, 06 Aug 2025 20:09:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1c63h4Yz41Q6; Wed, 06 Aug 2025 20:09:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754510998; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/7esBRQSybEV4WBUnRsTjD59wWBqYoRXenbqdRSe3gI=; b=buASw84lfrXRRWQXTSejakc2gA3DMqJxQsMkg34ULbsOxm98GktdsM9RG33pWQL+fDFY6C bZL56yhhgkeeUu/G68dVbFs2MYsAe8GHkhmYEOfNAggweCNwhpnlDpUvuLtZsm+K+d+nrw STdS+i+jaRa+eb9gdHgBxyNz6jvHAVUQueEcKPb7OOvgmWDD3xrOHibr3U2aQ9+8drXM7J M4+K5ESjcgiB5ml0RKUp9WpqnYBQs2cg0UWbi8QxumqqUuUJfhiftoo8k4ChPBr4rWQ6Gh Tz3keNKlGGtppL/rK4BL/dsTyeQmBIytCrG40RN+OyPuKJDLTqnS44n9+IlaEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754510998; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/7esBRQSybEV4WBUnRsTjD59wWBqYoRXenbqdRSe3gI=; b=SXp5pVqsTKSTRWGCYJSLlfkz+SFEC5kcbc7TbE+ovD2SDHF+4QMHYiv+Yo5sgCWksySTzI LEL2m4ixnb9dSUORAWY0T1ekVwycVC8UiEuRHKRZyvP9NJxLqxGQu+SogYCqHpn+wcnLmA ut5coSOky56KOyvOyYUrM/CEUtRlo2SdgscLdPb6VJLbBnVoOqgwQmuSSpp1+HrdHg4zkI qaFDxDe1+fzYJizs1+FlB8eJRWwVCWFwYWcoWgjH0Yt1/OF4PQJeZ9ZhLaDd3fB3ITTwRL FhKnPtmITfij0Ric8KKWAqlbp2CYIZu7SiQ2AFBFmeACBwJ2wsGWjpJwBfe04Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754510998; a=rsa-sha256; cv=none; b=ZQ3/OhxJoykU9r+yPx9y3DrENcObdoc4O8J6j2AeZifzIFXrZSPKOjzOIlHWru+PCHzVsU at4qp0xBTktL6jNhew9LHlY7kknDhuE+AyaZ1lwDfuYUCBmRtMdEDFseakiV+IplyJIpnk WgcBuWbET5el0rc9DzSRUk2Fe3XZuQImpJUg6R03Mdy7qWU7e9zeOe0mbAOJQPfMEk3fia JLg+Ziry7ClvJtNnYLY3s2+hzg2GmE/Qd6iOSWYLQBcmofxVh1wqmh0EL9N21ht4sD/zcq nhsQ8wHDJG2LOvgFtAJetdQSAw1ZeMcX+iqpxtoI5C2JSJqkqIVe4RMTfTRolw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1c62zxTzc9g; Wed, 06 Aug 2025 20:09:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576K9w3G059969; Wed, 6 Aug 2025 20:09:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576K9wc4059966; Wed, 6 Aug 2025 20:09:58 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:09:58 GMT Message-Id: <202508062009.576K9wc4059966@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: b14d3736c23e - main - libnvmf: Fix header to work with C++ List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b14d3736c23ea530491667c5eb68070bd12b05ca Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b14d3736c23ea530491667c5eb68070bd12b05ca commit b14d3736c23ea530491667c5eb68070bd12b05ca Author: John Baldwin AuthorDate: 2025-08-06 19:56:05 +0000 Commit: John Baldwin CommitDate: 2025-08-06 19:56:05 +0000 libnvmf: Fix header to work with C++ Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D51727 --- lib/libnvmf/libnvmf.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/libnvmf/libnvmf.h b/lib/libnvmf/libnvmf.h index 6b38fd286596..f095af8bb02a 100644 --- a/lib/libnvmf/libnvmf.h +++ b/lib/libnvmf/libnvmf.h @@ -51,6 +51,8 @@ struct nvmf_qpair_params { }; }; +__BEGIN_DECLS + /* Transport-independent APIs. */ /* @@ -384,4 +386,6 @@ int nvmf_reconnect_host(int fd, const struct nvme_discovery_log_entry *dle, */ int nvmf_connection_status(int fd, nvlist_t **nvlp); +__END_DECLS + #endif /* !__LIBNVMF_H__ */ From nobody Wed Aug 6 20:09:59 2025 X-Original-To: dev-commits-src-main@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 4by1c74bZfz649Bc; Wed, 06 Aug 2025 20:09:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1c73gnvz41KB; Wed, 06 Aug 2025 20:09:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754510999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MN/KS7PijVl9e1NdS3n9GKlsDdMKodoFk4tsYlUT6EQ=; b=FnZ5SiQwBF2V2Q6p+NFVt1edZVnvDbLTA7FsKtUFPaLtL4e7h8CcQrSMmpnxKSj+NNCW0a 5rWN2wEBREXoFuSjmWNlHoW/8ArFHDK9augljjsBqi383TCCzodKpROzG4oPKHyCWamqZT QQlsWhYiF7H9myFFuk/2ycQDxkdqt9UAElsS+i5YQHs2vuQrowHAcdLuXPS0mqCFQ8pI6B 5TdrtSgvRjPY/T3L2ZO3ZYewcR7FxpdRGuZxWw35OFG1fasWp3gFaKD9iWwzbM9Bl2lhct VINVZMrYsyh++vmTlY1yu2x0IlnBQ32JyQ3qKWpxmLdyyOsxYPx/0iLMMd6VCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754510999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MN/KS7PijVl9e1NdS3n9GKlsDdMKodoFk4tsYlUT6EQ=; b=wIR59Yxw+kVExGT9c+jzkKbRKa6mus8osiQZU2PMtBXZ+trDsHUH0m1YuzAwlv8rBdXsD/ 3h62xLOb/BtE9QDSD6V8eCB9gEI+JZyJP20K8brw3zBg0R5WRcunsLfhAVo8SSXAWb6it9 U0CutCRytaPmfO6U33+8D0I4B5X/HxH2sWSUkNd8TlxGXMJNfLMbXKpf65Ug8lUWpBwUjJ imLaXuws3OfIM1sr50u7htYIgXiFu7UqNRJ7qJCBcZoNCMBX1u3gY0qc4J2hsAjlXror80 mGbV/rRSXMiCm3wVuRrydSUwkoN9GH4iZV1y11lUTpeyNcZ1WfU5WGBHZD/3IA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754510999; a=rsa-sha256; cv=none; b=v9641tD/6GuCiqZ3i4JY7gUGKV/5KM/RGqXzjwa36kZJP0xyhr69id7W6N61kYWV/5S3e1 SqIPyYQ8jwvw5XYhY/+aRcJcSI+1WPjrHtkpJTjzK1qK3M1Vsp92nJTlIw61y+T3feyg4v eRvci8Qn3vAYgNtqe58sOEzMo9p+WodBMi9vgxgv6Yua+qTB9Vo+e3zfRpkLPYx9VGU67U xCePFH7uxIqZQuRwwmRywpFk+87aVzj2Ox5ujE76QlDOXOVCBmjYLiUznr+29PAmjdCvxV ltxXPX3EwfAjwGvSkmHJgq+DlGuLkmIRUqesp6GhIZwZ0z1GcWs0Qw5cDprUFg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1c738zwzc9h; Wed, 06 Aug 2025 20:09:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576K9xRO060004; Wed, 6 Aug 2025 20:09:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576K9xc7060001; Wed, 6 Aug 2025 20:09:59 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:09:59 GMT Message-Id: <202508062009.576K9xc7060001@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ffb02a356dfa - main - ctld: Refactor auth_group to support NVMe List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ffb02a356dfaed258b5c0c7065ab83c530d64aa7 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ffb02a356dfaed258b5c0c7065ab83c530d64aa7 commit ffb02a356dfaed258b5c0c7065ab83c530d64aa7 Author: John Baldwin AuthorDate: 2025-08-06 19:56:18 +0000 Commit: John Baldwin CommitDate: 2025-08-06 19:56:18 +0000 ctld: Refactor auth_group to support NVMe Split out a private method to parse a listen address and optional mask. This will avoid having to duplicate that code for NVMe host addresses. Rename the ag_names and ag_portals members to include "initiator" to indicate they are iSCSI-specific. Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D51728 --- usr.sbin/ctld/ctld.cc | 12 ++++++------ usr.sbin/ctld/ctld.hh | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 23d01364a6a4..29fc95c76a4f 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -301,17 +301,17 @@ bool auth_group::add_initiator_name(std::string_view name) { /* Silently ignore duplicates. */ - ag_names.emplace(name); + ag_initiator_names.emplace(name); return (true); } bool auth_group::initiator_permitted(std::string_view initiator_name) const { - if (ag_names.empty()) + if (ag_initiator_names.empty()) return (true); - return (ag_names.count(std::string(initiator_name)) != 0); + return (ag_initiator_names.count(std::string(initiator_name)) != 0); } bool @@ -390,7 +390,7 @@ auth_group::add_initiator_portal(const char *portal) return (false); } - ag_portals.emplace_back(ap); + ag_initiator_portals.emplace_back(ap); return (true); } @@ -429,10 +429,10 @@ auth_portal::matches(const struct sockaddr *sa) const bool auth_group::initiator_permitted(const struct sockaddr *sa) const { - if (ag_portals.empty()) + if (ag_initiator_portals.empty()) return (true); - for (const auth_portal &ap : ag_portals) + for (const auth_portal &ap : ag_initiator_portals) if (ap.matches(sa)) return (true); return (false); diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 059f719668f9..53479aa09d9d 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -124,8 +124,8 @@ private: std::string ag_label; auth_type ag_type = auth_type::UNKNOWN; std::unordered_map ag_auths; - std::unordered_set ag_names; - std::list ag_portals; + std::unordered_set ag_initiator_names; + std::list ag_initiator_portals; }; using auth_group_sp = std::shared_ptr; From nobody Wed Aug 6 20:10:00 2025 X-Original-To: dev-commits-src-main@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 4by1c95R41z649Bd; Wed, 06 Aug 2025 20:10:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1c901Vyz41Mq; Wed, 06 Aug 2025 20:10:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/ti2NW+WCRUNOX+TaDYl7OA+dy+spdqVwFmPFj99K0o=; b=M0+rwpHidsCYycy06dpDDsQoCicFbDDXUUUUWRFBi9HeOuIDc/gdwHsGH+qIysI3s4zfd+ Bc39sZqcvq2WfEpFVG9XBcWXaQqSe7wIyW8rZHnLxD8tPLMSiIE7z6DyhUooLeOpM4nw5g w1hh2/rv5Z3hLtfgnNi5PhHUQ8Aj4CtpxVDa0bS02gFdZo3AazWRGnbEsmOawYKEuE1cxp FkjihLfbg0V/9F8u/+UG8MNlwwvX96SvQuE0D9cQZD2qrpOi+Ysz/j6DyjfNyOfZoz3cfK 5zd/cl1n9BOugQF0FPrYcAj/5w/+EETyj9sBJClo8DfoLmQhsylYIUvsHcd2Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/ti2NW+WCRUNOX+TaDYl7OA+dy+spdqVwFmPFj99K0o=; b=D4D9RpqDj44ALz/d9y86B9ZYgOJzjUQXWl8WGiiTSWv7tDsY2aYf86im4vmNTDhFaa3wM/ wmaOwQfASA7GLzJArPxhli/Iu2j64uvk5w8Qjx92oclbgL9QabtnUlWhaqbsRyUZvfEKmE jH+jT6x7cS6Ef2WF25EL+FoOLpRVPoqXr/kIh0lNSq0hTZdE0ECNLaz7X9K/ZbN4qHLYQ7 T8ZHBbgSgOFidgHJg4GNf+HPqGgHC+Att4Rgd+hw89fNs3e7/g8aUaoHQHpwFBYZF9Ku1n t9MWqKmWyETFZqM34gyL2HDsJCu3ID/wVFtydyXu0c3Z+R+vJMCREJMgFQphzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511001; a=rsa-sha256; cv=none; b=IUn2MRNWzlkn7rw9+s9ptn98R/Eg16iJUgDrDb7OW21tKjEtXsaTaV3iZaoyb8tqNsTvx4 3YODqNaHzkAEjdpU8zifKffbB9F8Ah9m77Tfbnrr+uhFcFllOFSrZHjKl2WKU0DIzQXDtK p+Ax0/R2iNYBLcLMeGymnbCV3PjK1/fd8R6/0qaEyFgB9dI5WkDdkYKtFIN4uT2LSOjEpy xnBG6NNEHDpPK9auYI+SaSdK/0kEYjUN4Zl+8vz+cYZF/K09sX5fUaG22KohbnCFqkkuOp rnEYV9l2/1vwQkoR1QQ4L05/prat7gMzRqKkUTXlxdL2IhXybwHNfImjeqwTRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1c83hVYzbdw; Wed, 06 Aug 2025 20:10:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KA0xI060141; Wed, 6 Aug 2025 20:10:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KA0rD060098; Wed, 6 Aug 2025 20:10:00 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:10:00 GMT Message-Id: <202508062010.576KA0rD060098@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 7e844dcad22b - main - ctld: Add abstractions to support multiple target protocols List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e844dcad22bdbbdfa9c73271fe46b9ef963d34c Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7e844dcad22bdbbdfa9c73271fe46b9ef963d34c commit 7e844dcad22bdbbdfa9c73271fe46b9ef963d34c Author: John Baldwin AuthorDate: 2025-08-06 19:56:56 +0000 Commit: John Baldwin CommitDate: 2025-08-06 19:56:56 +0000 ctld: Add abstractions to support multiple target protocols This is a prerequisite for adding NVMe over Fabrics support. Convert portal_group, portal_group_port, and target into abstract classes with virtual methods to support protocol-specific methods. Add new iscsi_portal_group, iscsi_port, iscsi_portal and iscsi_target subclasses in a new iscsi.cc file and move some iSCSI-specific logic there. Rename ctld_connection to iscsi_connection and move it to a new iscsi.hh header. Move iscsi_connection methods out of ctld.cc and kernel.cc into iscsi.cc. Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D48772 --- usr.sbin/ctld/Makefile | 6 +- usr.sbin/ctld/conf.cc | 3 +- usr.sbin/ctld/ctld.cc | 349 ++++++++----------------------- usr.sbin/ctld/ctld.hh | 127 ++++++------ usr.sbin/ctld/discovery.cc | 5 +- usr.sbin/ctld/iscsi.cc | 508 +++++++++++++++++++++++++++++++++++++++++++++ usr.sbin/ctld/iscsi.hh | 78 +++++++ usr.sbin/ctld/kernel.cc | 193 +++++------------ usr.sbin/ctld/login.cc | 15 +- 9 files changed, 799 insertions(+), 485 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 26cc03c036cb..ad3a2661794a 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -5,7 +5,7 @@ CFLAGS+=-I${SRCTOP}/contrib/libucl/include PACKAGE= ctl PROG_CXX= ctld -SRCS= ctld.cc conf.cc discovery.cc isns.cc kernel.cc +SRCS= ctld.cc conf.cc discovery.cc iscsi.cc isns.cc kernel.cc SRCS+= login.cc parse.y token.l y.tab.h uclparse.cc CFLAGS+= -I${.CURDIR} CFLAGS+= -I${SRCTOP}/sys @@ -25,10 +25,6 @@ CLEANFILES= y.tab.c y.tab.h y.output NO_WMISSING_VARIABLE_DECLARATIONS= -.if ${MK_ISCSI} != "no" -CFLAGS+= -DWANT_ISCSI -.endif - .include CXXWARNFLAGS.uclparse.cc= -Wno-shadow -Wno-cast-qual diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index 2eae12c31d0c..d8f941e0bc52 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -175,7 +175,8 @@ portal_group_finish(void) bool portal_group_add_listen(const char *listen, bool iser) { - return (portal_group->add_portal(listen, iser)); + return (portal_group->add_portal(listen, iser ? portal_protocol::ISER : + portal_protocol::ISCSI)); } bool diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 29fc95c76a4f..4821bdb030c1 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -58,13 +58,6 @@ #include "ctld.hh" #include "isns.hh" -static bool timed_out(void); -#ifdef ICL_KERNEL_PROXY -static void pdu_receive_proxy(struct pdu *pdu); -static void pdu_send_proxy(struct pdu *pdu); -#endif /* ICL_KERNEL_PROXY */ -static void pdu_fail(const struct connection *conn, const char *reason); - bool proxy_mode = false; static volatile bool sighup_received = false; @@ -73,19 +66,6 @@ static volatile bool sigalrm_received = false; static int kqfd; static int nchildren = 0; -static uint16_t last_portal_group_tag = 0xff; - -static struct connection_ops conn_ops = { - .timed_out = timed_out, -#ifdef ICL_KERNEL_PROXY - .pdu_receive_proxy = pdu_receive_proxy, - .pdu_send_proxy = pdu_send_proxy, -#else - .pdu_receive_proxy = nullptr, - .pdu_send_proxy = nullptr, -#endif - .fail = pdu_fail, -}; static void usage(void) @@ -477,8 +457,8 @@ conf::find_auth_group(std::string_view name) return (it->second); } -portal_group::portal_group(struct conf *conf, std::string_view name) - : pg_conf(conf), pg_options(nvlist_create(0)), pg_name(name) +portal_group::portal_group(struct conf *conf, std::string_view name) : + pg_conf(conf), pg_options(nvlist_create(0)), pg_name(name) { } @@ -486,7 +466,7 @@ struct portal_group * conf::add_portal_group(const char *name) { auto pair = conf_portal_groups.try_emplace(name, - std::make_unique(this, name)); + iscsi_make_portal_group(this, name)); if (!pair.second) { log_warnx("duplicated portal-group \"%s\"", name); return (nullptr); @@ -531,7 +511,7 @@ portal_group::is_dummy() const return (false); } -static freebsd::addrinfo_up +freebsd::addrinfo_up parse_addr_port(const char *address, const char *def_port) { struct addrinfo hints, *ai; @@ -598,25 +578,6 @@ portal_group::options() const return (freebsd::nvlist_up(nvlist_clone(pg_options.get()))); } -bool -portal_group::add_portal(const char *value, bool iser) -{ - freebsd::addrinfo_up ai = parse_addr_port(value, "3260"); - if (!ai) { - log_warnx("invalid listen address %s", value); - return (false); - } - - /* - * XXX: getaddrinfo(3) may return multiple addresses; we should turn - * those into multiple portals. - */ - - pg_portals.emplace_back(std::make_unique(this, value, iser, - std::move(ai))); - return (true); -} - bool portal_group::add_option(const char *name, const char *value) { @@ -627,14 +588,14 @@ bool portal_group::set_discovery_auth_group(const char *ag_name) { if (pg_discovery_auth_group != nullptr) { - log_warnx("discovery-auth-group for portal-group " - "\"%s\" specified more than once", name()); + log_warnx("discovery-auth-group for %s " + "\"%s\" specified more than once", keyword(), name()); return (false); } pg_discovery_auth_group = pg_conf->find_auth_group(ag_name); if (pg_discovery_auth_group == nullptr) { log_warnx("unknown discovery-auth-group \"%s\" " - "for portal-group \"%s\"", ag_name, name()); + "for %s \"%s\"", ag_name, keyword(), name()); return (false); } return (true); @@ -644,8 +605,8 @@ bool portal_group::set_dscp(u_int dscp) { if (dscp >= 0x40) { - log_warnx("invalid DSCP value %u for portal-group \"%s\"", - dscp, name()); + log_warnx("invalid DSCP value %u for %s \"%s\"", + dscp, keyword(), name()); return (false); } @@ -653,39 +614,6 @@ portal_group::set_dscp(u_int dscp) return (true); } -bool -portal_group::set_filter(const char *str) -{ - enum discovery_filter filter; - - if (strcmp(str, "none") == 0) { - filter = discovery_filter::NONE; - } else if (strcmp(str, "portal") == 0) { - filter = discovery_filter::PORTAL; - } else if (strcmp(str, "portal-name") == 0) { - filter = discovery_filter::PORTAL_NAME; - } else if (strcmp(str, "portal-name-auth") == 0) { - filter = discovery_filter::PORTAL_NAME_AUTH; - } else { - log_warnx("invalid discovery-filter \"%s\" for portal-group " - "\"%s\"; valid values are \"none\", \"portal\", " - "\"portal-name\", and \"portal-name-auth\"", - str, name()); - return (false); - } - - if (pg_discovery_filter != discovery_filter::UNKNOWN && - pg_discovery_filter != filter) { - log_warnx("cannot set discovery-filter to \"%s\" for " - "portal-group \"%s\"; already has a different " - "value", str, name()); - return (false); - } - - pg_discovery_filter = filter; - return (true); -} - void portal_group::set_foreign() { @@ -697,8 +625,8 @@ portal_group::set_offload(const char *offload) { if (!pg_offload.empty()) { log_warnx("cannot set offload to \"%s\" for " - "portal-group \"%s\"; already defined", - offload, name()); + "%s \"%s\"; already defined", + offload, keyword(), name()); return (false); } @@ -710,8 +638,8 @@ bool portal_group::set_pcp(u_int pcp) { if (pcp > 7) { - log_warnx("invalid PCP value %u for portal-group \"%s\"", - pcp, name()); + log_warnx("invalid PCP value %u for %s \"%s\"", + pcp, keyword(), name()); return (false); } @@ -724,8 +652,8 @@ portal_group::set_redirection(const char *addr) { if (!pg_redirection.empty()) { log_warnx("cannot set redirection to \"%s\" for " - "portal-group \"%s\"; already defined", - addr, name()); + "%s \"%s\"; already defined", + addr, keyword(), name()); return (false); } @@ -752,16 +680,17 @@ portal_group::verify(struct conf *conf) if (!pg_redirection.empty()) { if (!pg_ports.empty()) { - log_debugx("portal-group \"%s\" assigned to target, " - "but configured for redirection", name()); + log_debugx("%s \"%s\" assigned to target, " + "but configured for redirection", keyword(), + name()); } pg_assigned = true; } else if (!pg_ports.empty()) { pg_assigned = true; } else { if (pg_name != "default") - log_warnx("portal-group \"%s\" not assigned " - "to any target", name()); + log_warnx("%s \"%s\" not assigned " + "to any target", keyword(), name()); pg_assigned = false; } } @@ -789,8 +718,8 @@ portal_group::open_sockets(struct conf &oldconf) return (0); if (!pg_assigned) { - log_debugx("not listening on portal-group \"%s\", " - "not assigned to any target", name()); + log_debugx("not listening on %s \"%s\", " + "not assigned to any target", keyword(), name()); return (0); } @@ -818,8 +747,8 @@ portal_group::close_sockets() for (portal_up &portal : pg_portals) { if (portal->socket() < 0) continue; - log_debugx("closing socket for %s, portal-group \"%s\"", - portal->listen(), name()); + log_debugx("closing socket for %s, %s \"%s\"", + portal->listen(), keyword(), name()); portal->close(); } } @@ -1111,8 +1040,8 @@ conf::add_port(struct target *target, struct portal_group *pg, auth_group_sp ag) { std::string name = freebsd::stringf("%s-%s", pg->name(), target->name()); - const auto &pair = conf_ports.try_emplace(name, - std::make_unique(target, pg, ag)); + const auto &pair = conf_ports.try_emplace(name, pg->create_port(target, + ag)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); return (false); @@ -1127,8 +1056,8 @@ conf::add_port(struct target *target, struct portal_group *pg, { std::string name = freebsd::stringf("%s-%s", pg->name(), target->name()); - const auto &pair = conf_ports.try_emplace(name, - std::make_unique(target, pg, ctl_port)); + const auto &pair = conf_ports.try_emplace(name, pg->create_port(target, + ctl_port)); if (!pair.second) { log_warnx("duplicate port \"%s\"", name.c_str()); return (false); @@ -1184,6 +1113,12 @@ portal_group::find_port(std::string_view target) const return (it->second); } +target::target(struct conf *conf, const char *keyword, std::string_view name) : + t_conf(conf), t_name(name) +{ + t_label = freebsd::stringf("%s \"%s\"", keyword, t_name.c_str()); +} + struct target * conf::add_target(const char *name) { @@ -1198,7 +1133,7 @@ conf::add_target(const char *name) c = tolower(c); auto const &pair = conf_targets.try_emplace(t_name, - std::make_unique(this, t_name)); + iscsi_make_target(this, t_name)); if (!pair.second) { log_warnx("duplicated target \"%s\"", name); return (NULL); @@ -1225,13 +1160,12 @@ target::use_private_auth(const char *keyword) return (true); if (t_auth_group != nullptr) { - log_warnx("cannot use both auth-group and %s for target \"%s\"", - keyword, name()); + log_warnx("cannot use both auth-group and %s for %s", + keyword, label()); return (false); } - std::string label = freebsd::stringf("target \"%s\"", name()); - t_auth_group = std::make_shared(label); + t_auth_group = std::make_shared(t_label); t_private_auth = true; return (true); } @@ -1254,40 +1188,24 @@ target::add_chap_mutual(const char *user, const char *secret, } bool -target::add_initiator_name(std::string_view name) -{ - if (!use_private_auth("initiator-name")) - return (false); - return (t_auth_group->add_initiator_name(name)); -} - -bool -target::add_initiator_portal(const char *addr) -{ - if (!use_private_auth("initiator-portal")) - return (false); - return (t_auth_group->add_initiator_portal(addr)); -} - -bool -target::add_lun(u_int id, const char *lun_name) +target::add_lun(u_int id, const char *lun_label, const char *lun_name) { struct lun *t_lun; if (id >= MAX_LUNS) { - log_warnx("LUN %u too big for target \"%s\"", id, name()); + log_warnx("%s too big for %s", lun_label, label()); return (false); } if (t_luns[id] != NULL) { - log_warnx("duplicate LUN %u for target \"%s\"", id, name()); + log_warnx("duplicate %s for %s", lun_label, label()); return (false); } t_lun = t_conf->find_lun(lun_name); if (t_lun == NULL) { - log_warnx("unknown LUN named %s used for target \"%s\"", - lun_name, name()); + log_warnx("unknown LUN named %s used for %s", lun_name, + label()); return (false); } @@ -1295,42 +1213,11 @@ target::add_lun(u_int id, const char *lun_name) return (true); } -bool -target::add_portal_group(const char *pg_name, const char *ag_name) -{ - struct portal_group *pg; - auth_group_sp ag; - - pg = t_conf->find_portal_group(pg_name); - if (pg == NULL) { - log_warnx("unknown portal-group \"%s\" for target \"%s\"", - pg_name, name()); - return (false); - } - - if (ag_name != NULL) { - ag = t_conf->find_auth_group(ag_name); - if (ag == NULL) { - log_warnx("unknown auth-group \"%s\" for target \"%s\"", - ag_name, name()); - return (false); - } - } - - if (!t_conf->add_port(this, pg, std::move(ag))) { - log_warnx("can't link portal-group \"%s\" to target \"%s\"", - pg_name, name()); - return (false); - } - return (true); -} - bool target::set_alias(std::string_view alias) { if (has_alias()) { - log_warnx("alias for target \"%s\" specified more than once", - name()); + log_warnx("alias for %s specified more than once", label()); return (false); } t_alias = alias; @@ -1343,16 +1230,16 @@ target::set_auth_group(const char *ag_name) if (t_auth_group != nullptr) { if (t_private_auth) log_warnx("cannot use both auth-group and explicit " - "authorisations for target \"%s\"", name()); + "authorisations for %s", label()); else - log_warnx("auth-group for target \"%s\" " - "specified more than once", name()); + log_warnx("auth-group for %s " + "specified more than once", label()); return (false); } t_auth_group = t_conf->find_auth_group(ag_name); if (t_auth_group == nullptr) { - log_warnx("unknown auth-group \"%s\" for target \"%s\"", - ag_name, name()); + log_warnx("unknown auth-group \"%s\" for %s", + ag_name, label()); return (false); } return (true); @@ -1383,8 +1270,8 @@ target::set_redirection(const char *addr) { if (!t_redirection.empty()) { log_warnx("cannot set redirection to \"%s\" for " - "target \"%s\"; already defined", - addr, name()); + "%s; already defined", + addr, label()); return (false); } @@ -1393,28 +1280,23 @@ target::set_redirection(const char *addr) } struct lun * -target::start_lun(u_int id) +target::start_lun(u_int id, const char *lun_label, const char *lun_name) { - struct lun *new_lun; - if (id >= MAX_LUNS) { - log_warnx("LUN %u too big for target \"%s\"", id, - name()); + log_warnx("%s too big for %s", lun_label, label()); return (nullptr); } if (t_luns[id] != NULL) { - log_warnx("duplicate LUN %u for target \"%s\"", id, - name()); + log_warnx("duplicate %s for %s", lun_label, label()); return (nullptr); } - std::string lun_name = freebsd::stringf("%s,lun,%u", name(), id); - new_lun = t_conf->add_lun(lun_name.c_str()); + struct lun *new_lun = t_conf->add_lun(lun_name); if (new_lun == nullptr) return (nullptr); - new_lun->set_scsiname(lun_name.c_str()); + new_lun->set_scsiname(lun_name); t_luns[id] = new_lun; @@ -1449,7 +1331,7 @@ target::verify() assert(t_auth_group != nullptr); } if (t_ports.empty()) { - struct portal_group *pg = t_conf->find_portal_group("default"); + struct portal_group *pg = default_portal_group(); assert(pg != NULL); t_conf->add_port(this, pg, nullptr); } @@ -1457,10 +1339,10 @@ target::verify() bool found = std::any_of(t_luns.begin(), t_luns.end(), [](struct lun *lun) { return (lun != nullptr); }); if (!found && t_redirection.empty()) - log_warnx("no LUNs defined for target \"%s\"", name()); + log_warnx("no LUNs defined for %s", label()); if (found && !t_redirection.empty()) - log_debugx("target \"%s\" contains luns, but configured " - "for redirection", name()); + log_debugx("%s contains LUNs, but configured " + "for redirection", label()); } lun::lun(struct conf *conf, std::string_view name) @@ -1714,59 +1596,6 @@ option_new(nvlist_t *nvl, const char *name, const char *value) return (true); } -#ifdef ICL_KERNEL_PROXY - -static void -pdu_receive_proxy(struct pdu *pdu) -{ - struct connection *conn; - size_t len; - - assert(proxy_mode); - conn = pdu->pdu_connection; - - kernel_receive(pdu); - - len = pdu_ahs_length(pdu); - if (len > 0) - log_errx(1, "protocol error: non-empty AHS"); - - len = pdu_data_segment_length(pdu); - assert(len <= (size_t)conn->conn_max_recv_data_segment_length); - pdu->pdu_data_len = len; -} - -static void -pdu_send_proxy(struct pdu *pdu) -{ - - assert(proxy_mode); - - pdu_set_data_segment_length(pdu, pdu->pdu_data_len); - kernel_send(pdu); -} - -#endif /* ICL_KERNEL_PROXY */ - -static void -pdu_fail(const struct connection *conn __unused, const char *reason __unused) -{ -} - -ctld_connection::ctld_connection(struct portal *portal, int fd, - const char *host, const struct sockaddr *client_sa) : - conn_portal(portal), conn_initiator_addr(host), - conn_initiator_sa(client_sa) -{ - connection_init(&conn, &conn_ops, proxy_mode); - conn.conn_socket = fd; -} - -ctld_connection::~ctld_connection() -{ - chap_delete(conn_chap); -} - bool lun::verify() { @@ -1882,23 +1711,23 @@ portal::init_socket() struct portal_group *pg = portal_group(); struct kevent kev; freebsd::fd_up s; - int error, sockbuf; + int error; int one = 1; #ifdef ICL_KERNEL_PROXY if (proxy_mode) { int id = pg->conf()->add_proxy_portal(this); - log_debugx("listening on %s, portal-group \"%s\", " - "portal id %d, using ICL proxy", listen(), pg->pg_name, - id); - kernel_listen(ai(), p_iser, id); + log_debugx("listening on %s, %s \"%s\", " + "portal id %d, using ICL proxy", listen(), pg->keyword(), + pg->name(), id); + kernel_listen(ai(), protocol() == ISER, id); return (true); } #endif assert(proxy_mode == false); - assert(p_iser == false); + assert(protocol() != portal_protocol::ISER); - log_debugx("listening on %s, portal-group \"%s\"", listen(), + log_debugx("listening on %s, %s \"%s\"", listen(), pg->keyword(), pg->name()); s = ::socket(p_ai->ai_family, p_ai->ai_socktype, p_ai->ai_protocol); if (!s) { @@ -1906,14 +1735,6 @@ portal::init_socket() return (false); } - sockbuf = SOCKBUF_SIZE; - if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, &sockbuf, - sizeof(sockbuf)) == -1) - log_warn("setsockopt(SO_RCVBUF) failed for %s", listen()); - sockbuf = SOCKBUF_SIZE; - if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &sockbuf, - sizeof(sockbuf)) == -1) - log_warn("setsockopt(SO_SNDBUF) failed for %s", listen()); if (setsockopt(s, SOL_SOCKET, SO_NO_DDP, &one, sizeof(one)) == -1) log_warn("setsockopt(SO_NO_DDP) failed for %s", listen()); @@ -1960,6 +1781,9 @@ portal::init_socket() } } + if (!init_socket_options(s)) + return (false); + error = bind(s, p_ai->ai_addr, p_ai->ai_addrlen); if (error != 0) { log_warn("bind(2) failed for %s", listen()); @@ -2038,7 +1862,7 @@ conf::apply(struct conf *oldconf) if (it != oldconf->conf_portal_groups.end()) newpg.set_tag(it->second->tag()); else - newpg.set_tag(++last_portal_group_tag); + newpg.allocate_tag(); } /* Deregister on removed iSNS servers. */ @@ -2225,7 +2049,7 @@ conf::apply(struct conf *oldconf) return (cumulated_error); } -static bool +bool timed_out(void) { @@ -2390,17 +2214,7 @@ handle_connection(struct portal *portal, int fd, log_set_peer_addr(host); setproctitle("%s", host); - ctld_connection conn(portal, fd, host, client_sa); - start_timer(conf->timeout(), true); - kernel_capsicate(); - conn.login(); - if (conn.session_type() == CONN_SESSION_TYPE_NORMAL) { - conn.kernel_handoff(); - log_debugx("connection handed off to the kernel"); - } else { - assert(conn.session_type() == CONN_SESSION_TYPE_DISCOVERY); - conn.discovery(); - } + portal->handle_connection(fd, host, client_sa); log_debugx("nothing more to do; exiting"); exit(0); } @@ -2612,8 +2426,7 @@ conf_new_from_file(const char *path, bool ucl) "going with defaults"); pg = conf->find_portal_group("default"); assert(pg != NULL); - pg->add_portal("0.0.0.0", false); - pg->add_portal("[::]", false); + pg->add_default_portals(); } if (!conf->verify()) { @@ -2644,7 +2457,7 @@ conf::add_pports(struct kports &kports) if (ret > 0) { if (!add_port(kports, targ, i_pp, i_vp)) { log_warnx("can't create new ioctl port " - "for target \"%s\"", targ->name()); + "for %s", targ->label()); return (false); } @@ -2653,19 +2466,19 @@ conf::add_pports(struct kports &kports) pp = kports.find_port(targ->pport()); if (pp == NULL) { - log_warnx("unknown port \"%s\" for target \"%s\"", - targ->pport(), targ->name()); + log_warnx("unknown port \"%s\" for %s", + targ->pport(), targ->label()); return (false); } if (pp->linked()) { - log_warnx("can't link port \"%s\" to target \"%s\", " + log_warnx("can't link port \"%s\" to %s, " "port already linked to some target", - targ->pport(), targ->name()); + targ->pport(), targ->label()); return (false); } if (!add_port(targ, pp)) { - log_warnx("can't link port \"%s\" to target \"%s\"", - targ->pport(), targ->name()); + log_warnx("can't link port \"%s\" to %s", + targ->pport(), targ->label()); return (false); } } diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 53479aa09d9d..7842f1bb5715 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -56,7 +56,6 @@ #define DEFAULT_CD_BLOCKSIZE 2048 #define MAX_LUNS 1024 -#define SOCKBUF_SIZE 1048576 struct isns_req; struct port; @@ -130,18 +129,28 @@ private: using auth_group_sp = std::shared_ptr; +enum class portal_protocol { + ISCSI, + ISER +}; + struct portal { - portal(struct portal_group *pg, std::string_view listen, bool iser, - freebsd::addrinfo_up ai) : + portal(struct portal_group *pg, std::string_view listen, + portal_protocol protocol, freebsd::addrinfo_up ai) : p_portal_group(pg), p_listen(listen), p_ai(std::move(ai)), - p_iser(iser) {} + p_protocol(protocol) {} + virtual ~portal() = default; bool reuse_socket(portal &oldp); bool init_socket(); + virtual bool init_socket_options(int s __unused) { return true; } + virtual void handle_connection(int fd, const char *host, + const struct sockaddr *client_sa) = 0; portal_group *portal_group() { return p_portal_group; } const char *listen() const { return p_listen.c_str(); } const addrinfo *ai() const { return p_ai.get(); } + portal_protocol protocol() const { return p_protocol; } int socket() const { return p_socket; } void close() { p_socket.reset(); } @@ -149,12 +158,13 @@ private: struct portal_group *p_portal_group; std::string p_listen; freebsd::addrinfo_up p_ai; - bool p_iser; + portal_protocol p_protocol; freebsd::fd_up p_socket; }; using portal_up = std::unique_ptr; +using port_up = std::unique_ptr; enum class discovery_filter { UNKNOWN, @@ -166,8 +176,10 @@ enum class discovery_filter { struct portal_group { portal_group(struct conf *conf, std::string_view name); + virtual ~portal_group() = default; struct conf *conf() const { return pg_conf; } + virtual const char *keyword() const = 0; const char *name() const { return pg_name.c_str(); } bool assigned() const { return pg_assigned; } bool is_dummy() const; @@ -188,17 +200,25 @@ struct portal_group { const std::unordered_map &ports() const { return pg_ports; } - bool add_portal(const char *value, bool iser); + virtual void allocate_tag() = 0; + virtual bool add_portal(const char *value, + portal_protocol protocol) = 0; + virtual void add_default_portals() = 0; bool add_option(const char *name, const char *value); bool set_discovery_auth_group(const char *name); bool set_dscp(u_int dscp); - bool set_filter(const char *str); + virtual bool set_filter(const char *str) = 0; void set_foreign(); bool set_offload(const char *offload); bool set_pcp(u_int pcp); bool set_redirection(const char *addr); void set_tag(uint16_t tag); + virtual port_up create_port(struct target *target, auth_group_sp ag) = + 0; + virtual port_up create_port(struct target *target, uint32_t ctl_port) = + 0; + void add_port(struct portal_group_port *port); const struct port *find_port(std::string_view target) const; void remove_port(struct portal_group_port *port); @@ -208,9 +228,10 @@ struct portal_group { int open_sockets(struct conf &oldconf); void close_sockets(); -private: +protected: struct conf *pg_conf; freebsd::nvlist_up pg_options; + const char *pg_keyword; std::string pg_name; auth_group_sp pg_discovery_auth_group; enum discovery_filter pg_discovery_filter = @@ -254,7 +275,7 @@ protected: uint32_t p_ctl_port = 0; }; -struct portal_group_port final : public port { +struct portal_group_port : public port { portal_group_port(struct target *target, struct portal_group *pg, auth_group_sp ag); portal_group_port(struct target *target, struct portal_group *pg, @@ -270,10 +291,7 @@ struct portal_group_port final : public port { void clear_references() override; - bool kernel_create_port() override; - bool kernel_remove_port() override; - -private: +protected: auth_group_sp p_auth_group; struct portal_group *p_portal_group; }; @@ -348,14 +366,15 @@ private: }; struct target { - target(struct conf *conf, std::string_view name) : - t_conf(conf), t_name(name) {} + target(struct conf *conf, const char *keyword, std::string_view name); + virtual ~target() = default; bool has_alias() const { return !t_alias.empty(); } bool has_pport() const { return !t_pport.empty(); } bool has_redirection() const { return !t_redirection.empty(); } const char *alias() const { return t_alias.c_str(); } const char *name() const { return t_name.c_str(); } + const char *label() const { return t_label.c_str(); } const char *pport() const { return t_pport.c_str(); } bool private_auth() const { return t_private_auth; } const char *redirection() const { return t_redirection.c_str(); } @@ -367,30 +386,36 @@ struct target { bool add_chap(const char *user, const char *secret); bool add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2); - bool add_initiator_name(std::string_view name); - bool add_initiator_portal(const char *addr); - bool add_lun(u_int id, const char *lun_name); - bool add_portal_group(const char *pg_name, const char *ag_name); + virtual bool add_initiator_name(std::string_view) { return false; } + virtual bool add_initiator_portal(const char *) { return false; } + virtual bool add_lun(u_int, const char *) { return false; } + virtual bool add_portal_group(const char *pg_name, + const char *ag_name) = 0; bool set_alias(std::string_view alias); bool set_auth_group(const char *ag_name); bool set_auth_type(const char *type); bool set_physical_port(std::string_view pport); bool set_redirection(const char *addr); - struct lun *start_lun(u_int id); + virtual struct lun *start_lun(u_int) { return nullptr; } void add_port(struct port *port); void remove_lun(struct lun *lun); void remove_port(struct port *port); void verify(); -private: +protected: bool use_private_auth(const char *keyword); + bool add_lun(u_int id, const char *lun_label, const char *lun_name); + struct lun *start_lun(u_int id, const char *lun_label, + const char *lun_name); + virtual struct portal_group *default_portal_group() = 0; struct conf *t_conf; std::array t_luns; auth_group_sp t_auth_group; std::list t_ports; std::string t_name; + std::string t_label; std::string t_alias; std::string t_redirection; /* Name of this target's physical port, if any, i.e. "isp0" */ @@ -398,6 +423,8 @@ private: bool t_private_auth; }; +using target_up = std::unique_ptr; + struct isns { isns(std::string_view addr, freebsd::addrinfo_up ai) : i_addr(addr), i_ai(std::move(ai)) {} @@ -528,50 +555,7 @@ private: std::unordered_map pports; }; -#define CONN_SESSION_TYPE_NONE 0 -#define CONN_SESSION_TYPE_DISCOVERY 1 -#define CONN_SESSION_TYPE_NORMAL 2 - -struct ctld_connection { - ctld_connection(struct portal *portal, int fd, const char *host, - const struct sockaddr *client_sa); - ~ctld_connection(); - - int session_type() const { return conn_session_type; } - - void login(); - void discovery(); - void kernel_handoff(); -private: - void login_chap(struct auth_group *ag); - void login_negotiate_key(struct pdu *request, const char *name, - const char *value, bool skipped_security, - struct keys *response_keys); - bool login_portal_redirect(struct pdu *request); - bool login_target_redirect(struct pdu *request); - void login_negotiate(struct pdu *request); - void login_wait_transition(); - - bool discovery_target_filtered_out(const struct port *port) const; - - struct connection conn; *** 991 LINES SKIPPED *** From nobody Wed Aug 6 20:10:02 2025 X-Original-To: dev-commits-src-main@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 4by1cB6X5vz649FJ; Wed, 06 Aug 2025 20:10:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1cB58ztz41Qf; Wed, 06 Aug 2025 20:10:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511002; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rrXr2WFB9B/ven1Bua8RQQ+wLKihx/BoCdgNKmAujmc=; b=qb18HnJyBuUzSJWglVzXrtwcC6Itu864/5vkeAwLuM+NArKzMkgFaD0gHJi/IhgCRPbi9g Gr+FBP08mI2nIOSOXPa11IIUNWnGP7bSnhxeWx2CJ3WAXxxcFn+YxVAo4svSrHv/NA57J8 xISAO8SLvw/p0zLlH7VP3VOmi2s7rR4CHdIHgtlRc+Pk4os/1LXGAfiu9ooqRkrfiofct8 FsMmKFtmSj4YZk/3VBc7mbrDFuvoox/0o0IRjhAgG/Vsl7iwqhDMMatCymLcAjf66oupL8 O5gZu6g1EMZvs3SN50JIsTKkRkuf8K/+fvXK0l+/SU8rHtNECkr2w3FoRGh4Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511002; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rrXr2WFB9B/ven1Bua8RQQ+wLKihx/BoCdgNKmAujmc=; b=Rc4t+3xdcXw+31SggkoLa5Mq154enjEN74TPQpI1ppD1NFAFdpAGI51om9EwpbC9ifnoxr dvrWeosZoIlMRI0B9lAxMpVQz+RUwCv6RREfCln30/A0GDt1BTIP597Aqh008ji80swpz1 /A4tYSwte4E9QNzPQ98JUaE4mJEQgbsJipkCfHgf9YjiOXQAi63ZyK2LiqqlCMczjhbY+u j1eUC5ceg/wEjWlH+bnJ8NdpdciAnsK8DuAka3CiUkgTMmVXRfzMqN1UkebbZuhM9XXZEk wgaEs4rg6shLh94Wm0Ims0vcVMiBXWJdQruWGgd/ZMA19/L4MRu+pIzcQM5h/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511002; a=rsa-sha256; cv=none; b=wOA19qvtaeqXisM0wEaJi21hXfPSbpfdOcODa+PP7a0zcdASXPcuFsCCTZxvLL8caZME6U IKJWL6eLUD8opiT2mpMH/n9TQ+8dyp3BtCqJSXiCsQa4kCmARz3rVyDlQ1Fin5eh6sEtro QeLcH8iHIx8E+n9lAMlVuDRlGCjG4sIxMSVi4cV6iP6VWg1DTz6nQq4vhLnTF8KXlg/TLP RW3P/9oRrVC9G34kCRZUqxoTYj4/4M2AtTcJzY5vRAXy65o/ocP5NjWeLH0kMdAofPN9wv CgVsAqKjxO9/WYYIPYugLji/WLl7djqPUkZr3tnIXJR3DbiMqixLSvW6F1tcUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1cB4b0Lzbdx; Wed, 06 Aug 2025 20:10:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KA26k062194; Wed, 6 Aug 2025 20:10:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KA2Mk062184; Wed, 6 Aug 2025 20:10:02 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:10:02 GMT Message-Id: <202508062010.576KA2Mk062184@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 66b5296f1b29 - main - ctld: Add support for NVMe over Fabrics List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 66b5296f1b29083634e2875ff08c32e7b6b866a8 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=66b5296f1b29083634e2875ff08c32e7b6b866a8 commit 66b5296f1b29083634e2875ff08c32e7b6b866a8 Author: John Baldwin AuthorDate: 2025-08-06 19:57:50 +0000 Commit: John Baldwin CommitDate: 2025-08-06 19:59:13 +0000 ctld: Add support for NVMe over Fabrics While the overall structure is similar for NVMeoF controllers and iSCSI targets, there are sufficient differences that NVMe support uses an alternate configuration syntax. - In authentication groups, permitted NVMeoF hosts can be allowed by names (NQNs) via "host-nqn" values (similar to "initiator-name" for iSCSI). Similarly, "host-address" accepts permitted host addresses similar to "initiator-portal" for iSCSI. - A new "transport-group" context enumerates transports that can be used by a group of NVMeoF controllers similar to the "portal-group" context for iSCSI. In this section, the "listen" keyword accepts a transport as well as an address to permit other types of transports besides TCP in the future. The "foreign", "offload", and "redirect" keywords are also not meaningful and thus not supported. - A new "controller" context describes an NVMeoF I/O controller similar to the "target" context for iSCSI. One key difference here is that "lun" objects are replaced by "namespace" objects. However, a "namespace" can reference a named global lun permitting LUNs to be shared between iSCSI targets and NVMeoF controllers. NB: Authentication via CHAP is not implemented for NVMeoF. Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D48773 --- usr.sbin/ctld/Makefile | 6 +- usr.sbin/ctld/conf.cc | 67 ++++++ usr.sbin/ctld/conf.h | 12 + usr.sbin/ctld/ctl.conf.5 | 242 ++++++++++++++++++- usr.sbin/ctld/ctld.cc | 166 +++++++++++++ usr.sbin/ctld/ctld.hh | 43 +++- usr.sbin/ctld/discovery.cc | 3 + usr.sbin/ctld/kernel.cc | 54 ++++- usr.sbin/ctld/nvmf.cc | 478 ++++++++++++++++++++++++++++++++++++ usr.sbin/ctld/nvmf.hh | 71 ++++++ usr.sbin/ctld/nvmf_discovery.cc | 518 ++++++++++++++++++++++++++++++++++++++++ usr.sbin/ctld/parse.y | 232 +++++++++++++++++- usr.sbin/ctld/token.l | 7 + usr.sbin/ctld/uclparse.cc | 381 +++++++++++++++++++++++++++++ 14 files changed, 2263 insertions(+), 17 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index ad3a2661794a..61efe8a05cfb 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -6,19 +6,21 @@ CFLAGS+=-I${SRCTOP}/contrib/libucl/include PACKAGE= ctl PROG_CXX= ctld SRCS= ctld.cc conf.cc discovery.cc iscsi.cc isns.cc kernel.cc -SRCS+= login.cc parse.y token.l y.tab.h uclparse.cc +SRCS+= login.cc nvmf.cc nvmf_discovery.cc +SRCS+= parse.y token.l y.tab.h uclparse.cc CFLAGS+= -I${.CURDIR} CFLAGS+= -I${SRCTOP}/sys CFLAGS+= -I${SRCTOP}/sys/cam/ctl CFLAGS+= -I${SRCTOP}/sys/dev/iscsi CFLAGS+= -I${SRCTOP}/lib/libiscsiutil CFLAGS+= -I${SRCTOP}/lib/libutil++ +CFLAGS+= -I${SRCTOP}/lib/libnvmf #CFLAGS+= -DICL_KERNEL_PROXY NO_WCAST_ALIGN= CXXWARNFLAGS.gcc= -Wno-shadow MAN= ctld.8 ctl.conf.5 -LIBADD= bsdxml iscsiutil md sbuf util ucl m nv util++ +LIBADD= bsdxml iscsiutil nvmf md sbuf util ucl m nv util++ YFLAGS+= -v CLEANFILES= y.tab.c y.tab.h y.output diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index d8f941e0bc52..ab76f8e2ed0b 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -122,6 +122,18 @@ auth_group_add_chap_mutual(const char *user, const char *secret, return (auth_group->add_chap_mutual(user, secret, user2, secret2)); } +bool +auth_group_add_host_address(const char *portal) +{ + return (auth_group->add_host_address(portal)); +} + +bool +auth_group_add_host_nqn(const char *name) +{ + return (auth_group->add_host_nqn(name)); +} + bool auth_group_add_initiator_name(const char *name) { @@ -233,6 +245,29 @@ portal_group_set_tag(uint16_t tag) portal_group->set_tag(tag); } +bool +transport_group_start(const char *name) +{ + if (strcmp(name, "default") == 0) + portal_group = conf->define_default_transport_group(); + else + portal_group = conf->add_transport_group(name); + return (portal_group != NULL); +} + +bool +transport_group_add_listen_discovery_tcp(const char *listen) +{ + return portal_group->add_portal(listen, + portal_protocol::NVME_DISCOVERY_TCP); +} + +bool +transport_group_add_listen_tcp(const char *listen) +{ + return portal_group->add_portal(listen, portal_protocol::NVME_TCP); +} + bool lun_start(const char *name) { @@ -387,6 +422,38 @@ target_start_lun(u_int id) return (lun != nullptr); } +bool +controller_start(const char *name) +{ + target = conf->add_controller(name); + return (target != nullptr); +} + +bool +controller_add_host_address(const char *addr) +{ + return (target->add_host_address(addr)); +} + +bool +controller_add_host_nqn(const char *name) +{ + return (target->add_host_nqn(name)); +} + +bool +controller_add_namespace(u_int id, const char *name) +{ + return (target->add_namespace(id, name)); +} + +bool +controller_start_namespace(u_int id) +{ + lun = target->start_namespace(id); + return (lun != nullptr); +} + bool parse_conf(const char *path) { diff --git a/usr.sbin/ctld/conf.h b/usr.sbin/ctld/conf.h index b13fd80e9fe5..642c8f234d30 100644 --- a/usr.sbin/ctld/conf.h +++ b/usr.sbin/ctld/conf.h @@ -43,6 +43,8 @@ void auth_group_finish(void); bool auth_group_add_chap(const char *user, const char *secret); bool auth_group_add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2); +bool auth_group_add_host_address(const char *portal); +bool auth_group_add_host_nqn(const char *name); bool auth_group_add_initiator_name(const char *name); bool auth_group_add_initiator_portal(const char *portal); bool auth_group_set_type(const char *type); @@ -69,6 +71,10 @@ bool portal_group_set_pcp(u_int pcp); bool portal_group_set_redirection(const char *addr); void portal_group_set_tag(uint16_t tag); +bool transport_group_start(const char *name); +bool transport_group_add_listen_discovery_tcp(const char *listen); +bool transport_group_add_listen_tcp(const char *listen); + bool target_start(const char *name); void target_finish(void); bool target_add_chap(const char *user, const char *secret); @@ -85,6 +91,12 @@ bool target_set_physical_port(const char *pport); bool target_set_redirection(const char *addr); bool target_start_lun(u_int id); +bool controller_start(const char *name); +bool controller_add_host_address(const char *addr); +bool controller_add_host_nqn(const char *name); +bool controller_add_namespace(u_int id, const char *name); +bool controller_start_namespace(u_int id); + bool lun_start(const char *name); void lun_finish(void); bool lun_add_option(const char *name, const char *value); diff --git a/usr.sbin/ctld/ctl.conf.5 b/usr.sbin/ctld/ctl.conf.5 index e42dd8067006..12f4186a6844 100644 --- a/usr.sbin/ctld/ctl.conf.5 +++ b/usr.sbin/ctld/ctl.conf.5 @@ -26,12 +26,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 26, 2025 +.Dd August 6, 2025 .Dt CTL.CONF 5 .Os .Sh NAME .Nm ctl.conf -.Nd CAM Target Layer / iSCSI target daemon configuration file +.Nd CAM Target Layer / iSCSI target / NVMeoF controller daemon configuration file .Sh DESCRIPTION The .Nm @@ -59,6 +59,11 @@ file is: .Dl ... } +.No transport-group Ar name No { +.Dl listen Ar transport Ar address +.Dl ... +} + .No target Ar name { .Dl auth-group Ar name .Dl portal-group Ar name @@ -67,6 +72,15 @@ file is: .Dl } .Dl ... } + +.No controller Ar name { +.Dl auth-group Ar name +.Dl transport-group Ar name +.Dl namespace Ar number No { +.Dl path Ar path +.Dl } +.Dl ... +} .Ed .Ss Global Context .Bl -tag -width indent @@ -94,16 +108,29 @@ Create a configuration context, defining a new portal-group, which can then be assigned to any number of targets. +.It Ic transport-group Ar name +Create a +.Sy transport-group +configuration context, +defining a new transport-group, +which can then be assigned to any number of NVMeoF controllers. .It Ic lun Ar name Create a .Sy lun -configuration context, defining a LUN to be exported by any number of targets. +configuration context, defining a LUN to be exported by any number of targets +or controllers. .It Ic target Ar name Create a .Sy target configuration context, which can optionally contain one or more .Sy lun contexts. +.It Ic controller Ar name +Create a +.Sy controller +configuration context, which can optionally contain one or more +.Sy namespace +contexts. .It Ic timeout Ar seconds The timeout for login sessions, after which the connection will be forcibly terminated. @@ -150,6 +177,19 @@ the configuration may only contain either or .Sy chap-mutual entries; it is an error to mix them. +.It Ic host-address Ar address Ns Op / Ns Ar prefixlen +An NVMeoF host address: an IPv4 or IPv6 address, optionally +followed by a literal slash and a prefix length. +Only NVMeoF hosts with an address matching one of the defined +addresses will be allowed to connect. +If not defined, there will be no restrictions based on host +address. +.It Ic host-nqn Ar name +An NVMeoF host name. +Only NVMeoF hosts with a name matching one of the defined +names will be allowed to connect. +If not defined, there will be no restrictions based on NVMe host +name. .It Ic initiator-name Ar initiator-name An iSCSI initiator name. Only initiators with a name matching one of the defined @@ -264,6 +304,75 @@ to .Qq Ar 7 . When omitted, the default for the outgoing interface is used. .El +.Ss transport-group Context +.Bl -tag -width indent +.It Ic discovery-auth-group Ar name +See the description for this option for +.Sy portal-group +contexts. +.It Ic discovery-filter Ar filter +Filter can be either +.Qq Ar none , +.Qq Ar address , +or +.Qq Ar address-name . +When set to +.Qq Ar none , +discovery will return all controllers assigned to that transport group. +When set to +.Qq Ar address , +discovery will not return controllers that cannot be accessed by the +host because of their +.Sy host-address . +When set to +.Qq Ar address-name , +the check will include both +.Sy host-address +and +.Sy host-nqn . +The default is +.Qq Ar none . +.It Ic listen Ar transport Ar address +An IPv4 or IPv6 address and port to listen on for incoming connections +using the specified NVMeoF transport. +Supported transports are +.Qq Ar tcp +.Pq for NVMe/TCP I/O controllers +and +.Qq Ar discovery-tcp +.Pq for NVMe/TCP discovery controllers . +.It Ic option Ar name Ar value +One of the following options: +.Bl -column "max_admin_qsize" "Default" "Transports" +.It Sy Name Ta Sy Default Ta Sy Transports Ta Sy Description +.It MAXH2CDATA Ta 256KiB Ta TCP Ta +Size in bytes of the maximum data payload size for data PDUs accepted from +remote hosts. +The value must be at least 4KiB and must be a multiple of 4. +.It SQFC Ta false Ta any Ta +Always enable SQ flow control. +.It HDGST Ta false Ta TCP Ta +Enable PDU header digests if requested by a remote host. +.It DDGST Ta false Ta TCP Ta +Enable PDU data digests if requested by a remote host. +.It max_admin_qsize Ta 4096 Ta any Ta +The maximum number of entries a remote host can request for an admin queue pair. +.It max_io_qsize Ta 65536 Ta any Ta +The maximum number of entries a remote host can request for an I/O queue pair. +.El +.It Ic tag Ar value +Unique 16-bit port ID for this +.Sy transport-group . +If not specified, the value is generated automatically. +.It Ic dscp Ar value +See the description for this option for +.Sy portal-group +contexts. +.It Ic pcp Ar value +See the description for this option for +.Sy portal-group +contexts. +.El .Ss target Context .Bl -tag -width indent .It Ic alias Ar text @@ -390,6 +499,101 @@ configuration context, defining a LUN exported by the parent target. This is an alternative to defining the LUN separately, useful in the common case of a LUN being exported by a single target. .El +.Ss controller Context +.Bl -tag -width indent +.It Ic auth-group Ar name +Assign a previously defined authentication group to the controller. +By default, controllers that do not specify their own auth settings, +using clauses such as +.Sy host-address +or +.Sy host-nqn , +are assigned to the +predefined +.Sy auth-group +.Qq Ar default , +which denies all access. +Another predefined +.Sy auth-group , +.Qq Ar no-authentication , +may be used to permit access +without authentication. +Note that this clause can be overridden using the second argument +to a +.Sy transport-group +clause. +.It Ic auth-type Ar type +Sets the authentication type. +Type can be either +.Qq Ar none +or +.Qq Ar deny . +In most cases it is not necessary to set the type using this clause; +it is usually used to disable authentication for a given +.Sy controller . +This clause is mutually exclusive with +.Sy auth-group ; +one cannot use +both in a single controller. +.It Ic host-address Ar address Ns Op / Ns Ar prefixlen +An NVMeoF host address: an IPv4 or IPv6 address, optionally +followed by a literal slash and a prefix length. +Only NVMeoF hosts with an address matching one of the defined +addresses will be allowed to connect. +If not defined, there will be no restrictions based on host +address. +This clause is mutually exclusive with +.Sy auth-group ; +one cannot use +both in a single controller. +.It Ic host-nqn Ar name +An NVMeoF host name. +Only NVMeoF hosts with a name matching one of the defined +names will be allowed to connect. +If not defined, there will be no restrictions based on NVMe host +name. +This clause is mutually exclusive with +.Sy auth-group ; +one cannot use +both in a single target. +.Pp +The +.Sy auth-type , +.Sy host-address , +and +.Sy host-nqn +clauses in the controller context provide an alternative to assigning an +.Sy auth-group +defined separately, useful in the common case of authentication settings +specific to a single controller. +.It Ic transport-group Ar name Op Ar ag-name +Assign a previously defined transport group to the controller. +The default transport group is +.Qq Ar default , +which makes the controller available +on TCP port 4420 on all configured IPv4 and IPv6 addresses. +The optional second argument specifies the +.Sy auth-group +for connections to this specific transport group group. +If the second argument is not specified, the controller +.Sy auth-group +is used. +.It Ic namespace Ar number Ar name +Export previously defined +.Sy lun +as an NVMe namespace from the parent controller. +.It Ic namespace Ar number +Create a +.Sy namespace +configuration context, defining an NVMe namespace exported by the parent target. +.Pp +This is an alternative to defining the namespace separately, +useful in the common case of a namespace being exported by a single controller. +.Sy namespace +configuration contexts accept the the same properties as +.Sy lun +contexts. +.El .Ss lun Context .Bl -tag -width indent .It Ic backend Ar block No | Ar ramdisk @@ -410,7 +614,7 @@ Global numeric identifier to use for a given LUN inside CTL. By default CTL allocates those IDs dynamically, but explicit specification may be needed for consistency in HA configurations. .It Ic device-id Ar string -The SCSI Device Identification string presented to the initiator. +The SCSI Device Identification string presented to iSCSI initiators. .It Ic device-type Ar type Specify the SCSI device type to use when creating the LUN. Currently CTL supports Direct Access (type 0), Processor (type 3) @@ -425,11 +629,11 @@ section of The path to the file, device node, or .Xr zfs 8 volume used to back the LUN. -For optimal performance, create the volume with the +For optimal performance, create ZFS volumes with the .Qq Ar volmode=dev property set. .It Ic serial Ar string -The SCSI serial number presented to the initiator. +The SCSI serial number presented to iSCSI initiators. .It Ic size Ar size The LUN size, in bytes or by number with a suffix of .Sy K , M , G , T @@ -498,6 +702,16 @@ target naa.50015178f369f092 { port isp1 lun 0 example_1 } + +controller nqn.2012-06.com.example:controller1 { + auth-group no-authentication; + namespace 1 example_1 + namespace 2 { + backend ramdisk + size 1G + option capacity 1G + } +} .Ed .Pp An equivalent configuration in UCL format, for use with @@ -585,6 +799,22 @@ target { } } } + +controller { + "nqn.2012-06.com.example:controller1" { + auth-group = no-authentication + namespace = { + 1 = example_1, + 2 { + backend = ramdisk + size = 1G + options { + capacity = 1G + } + } + } + } +} .Ed .Sh SEE ALSO .Xr ctl 4 , diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 451245b8d5fa..10c12f25068e 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +68,8 @@ static volatile bool sigalrm_received = false; static int kqfd; static int nchildren = 0; +uint32_t conf::global_genctr; + static void usage(void) { @@ -76,6 +79,11 @@ usage(void) exit(1); } +conf::conf() +{ + conf_genctr = global_genctr++; +} + void conf::set_debug(int debug) { @@ -277,6 +285,23 @@ auth_group::add_chap_mutual(const char *user, const char *secret, return (true); } +bool +auth_group::add_host_nqn(std::string_view nqn) +{ + /* Silently ignore duplicates. */ + ag_host_names.emplace(nqn); + return (true); +} + +bool +auth_group::host_permitted(std::string_view nqn) const +{ + if (ag_host_names.empty()) + return (true); + + return (ag_host_names.count(std::string(nqn)) != 0); +} + bool auth_group::add_initiator_name(std::string_view name) { @@ -360,6 +385,20 @@ auth_portal::parse(const char *portal) return true; } +bool +auth_group::add_host_address(const char *address) +{ + auth_portal ap; + if (!ap.parse(address)) { + log_warnx("invalid controller address \"%s\" for %s", address, + label()); + return (false); + } + + ag_host_addresses.emplace_back(ap); + return (true); +} + bool auth_group::add_initiator_portal(const char *portal) { @@ -406,6 +445,18 @@ auth_portal::matches(const struct sockaddr *sa) const return (true); } +bool +auth_group::host_permitted(const struct sockaddr *sa) const +{ + if (ag_host_addresses.empty()) + return (true); + + for (const auth_portal &ap : ag_host_addresses) + if (ap.matches(sa)) + return (true); + return (false); +} + bool auth_group::initiator_permitted(const struct sockaddr *sa) const { @@ -501,6 +552,45 @@ conf::find_portal_group(std::string_view name) return (it->second.get()); } +struct portal_group * +conf::add_transport_group(const char *name) +{ + auto pair = conf_transport_groups.try_emplace(name, + nvmf_make_transport_group(this, name)); + if (!pair.second) { + log_warnx("duplicated transport-group \"%s\"", name); + return (nullptr); + } + + return (pair.first->second.get()); +} + +/* + * Make it possible to redefine the default transport-group, but only + * once. + */ +struct portal_group * +conf::define_default_transport_group() +{ + if (conf_default_tg_defined) { + log_warnx("duplicated transport-group \"default\""); + return (nullptr); + } + + conf_default_tg_defined = true; + return (find_transport_group("default")); +} + +struct portal_group * +conf::find_transport_group(std::string_view name) +{ + auto it = conf_transport_groups.find(std::string(name)); + if (it == conf_transport_groups.end()) + return (nullptr); + + return (it->second.get()); +} + bool portal_group::is_dummy() const { @@ -1113,6 +1203,40 @@ portal_group::find_port(std::string_view target) const return (it->second); } +struct target * +conf::add_controller(const char *name) +{ + if (!nvmf_nqn_valid_strict(name)) { + log_warnx("controller name \"%s\" is invalid for NVMe", name); + return nullptr; + } + + /* + * Normalize the name to lowercase to match iSCSI. + */ + std::string t_name(name); + for (char &c : t_name) + c = tolower(c); + + auto const &pair = conf_controllers.try_emplace(t_name, + nvmf_make_controller(this, t_name)); + if (!pair.second) { + log_warnx("duplicated controller \"%s\"", name); + return nullptr; + } + + return pair.first->second.get(); +} + +struct target * +conf::find_controller(std::string_view name) +{ + auto it = conf_controllers.find(std::string(name)); + if (it == conf_controllers.end()) + return nullptr; + return it->second.get(); +} + target::target(struct conf *conf, const char *keyword, std::string_view name) : t_conf(conf), t_name(name) { @@ -1367,6 +1491,8 @@ conf::delete_target_luns(struct lun *lun) { for (const auto &kv : conf_targets) kv.second->remove_lun(lun); + for (const auto &kv : conf_controllers) + kv.second->remove_lun(lun); } struct lun * @@ -1667,9 +1793,15 @@ conf::verify() for (auto &kv : conf_targets) { kv.second->verify(); } + for (auto &kv : conf_controllers) { + kv.second->verify(); + } for (auto &kv : conf_portal_groups) { kv.second->verify(this); } + for (auto &kv : conf_transport_groups) { + kv.second->verify(this); + } for (const auto &kv : conf_auth_groups) { const std::string &ag_name = kv.first; if (ag_name == "default" || @@ -1813,6 +1945,12 @@ conf::reuse_portal_group_socket(struct portal &newp) if (pg.reuse_socket(newp)) return (true); } + for (auto &kv : conf_transport_groups) { + struct portal_group &pg = *kv.second; + + if (pg.reuse_socket(newp)) + return (true); + } return (false); } @@ -1864,6 +2002,17 @@ conf::apply(struct conf *oldconf) else newpg.allocate_tag(); } + for (auto &kv : conf_transport_groups) { + struct portal_group &newpg = *kv.second; + + if (newpg.tag() != 0) + continue; + auto it = oldconf->conf_transport_groups.find(kv.first); + if (it != oldconf->conf_transport_groups.end()) + newpg.set_tag(it->second->tag()); + else + newpg.allocate_tag(); + } /* Deregister on removed iSNS servers. */ for (auto &kv : oldconf->conf_isns) { @@ -2027,6 +2176,9 @@ conf::apply(struct conf *oldconf) for (auto &kv : conf_portal_groups) { cumulated_error += kv.second->open_sockets(*oldconf); } + for (auto &kv : conf_transport_groups) { + cumulated_error += kv.second->open_sockets(*oldconf); + } /* * Go through the no longer used sockets, closing them. @@ -2034,6 +2186,9 @@ conf::apply(struct conf *oldconf) for (auto &kv : oldconf->conf_portal_groups) { kv.second->close_sockets(); } + for (auto &kv : oldconf->conf_transport_groups) { + kv.second->close_sockets(); + } /* (Re-)Register on remaining/new iSNS servers. */ for (auto &kv : conf_isns) { @@ -2397,6 +2552,9 @@ conf_new_from_file(const char *path, bool ucl) pg = conf->add_portal_group("default"); assert(pg != NULL); + pg = conf->add_transport_group("default"); + assert(pg != NULL); + conf_start(conf.get()); if (ucl) valid = uclparse_conf(path); @@ -2427,6 +2585,14 @@ conf_new_from_file(const char *path, bool ucl) pg->add_default_portals(); } + if (!conf->default_portal_group_defined()) { + log_debugx("transport-group \"default\" not defined; " + "going with defaults"); + pg = conf->find_transport_group("default"); + assert(pg != NULL); + pg->add_default_portals(); + } + if (!conf->verify()) { conf.reset(); return {}; diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 6ecee3b73c4f..a5aab65e339b 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -110,6 +110,12 @@ struct auth_group { const char *user2, const char *secret2); const struct auth *find_auth(std::string_view user) const; + bool add_host_nqn(std::string_view nqn); + bool host_permitted(std::string_view nqn) const; + + bool add_host_address(const char *address); + bool host_permitted(const struct sockaddr *sa) const; + bool add_initiator_name(std::string_view initiator_name); bool initiator_permitted(std::string_view initiator_name) const; @@ -123,6 +129,8 @@ private: std::string ag_label; auth_type ag_type = auth_type::UNKNOWN; std::unordered_map ag_auths; + std::unordered_set ag_host_names; + std::list ag_host_addresses; std::unordered_set ag_initiator_names; std::list ag_initiator_portals; }; @@ -131,7 +139,9 @@ using auth_group_sp = std::shared_ptr; enum class portal_protocol { ISCSI, - ISER + ISER, + NVME_TCP, + NVME_DISCOVERY_TCP, }; struct portal { @@ -147,7 +157,7 @@ struct portal { virtual void handle_connection(freebsd::fd_up fd, const char *host, const struct sockaddr *client_sa) = 0; - portal_group *portal_group() { return p_portal_group; } + portal_group *portal_group() const { return p_portal_group; } const char *listen() const { return p_listen.c_str(); } const addrinfo *ai() const { return p_ai.get(); } portal_protocol protocol() const { return p_protocol; } @@ -386,9 +396,12 @@ struct target { bool add_chap(const char *user, const char *secret); bool add_chap_mutual(const char *user, const char *secret, const char *user2, const char *secret2); + virtual bool add_host_address(const char *) { return false; } + virtual bool add_host_nqn(std::string_view) { return false; } virtual bool add_initiator_name(std::string_view) { return false; } virtual bool add_initiator_portal(const char *) { return false; } virtual bool add_lun(u_int, const char *) { return false; } + virtual bool add_namespace(u_int, const char *) { return false; } virtual bool add_portal_group(const char *pg_name, const char *ag_name) = 0; bool set_alias(std::string_view alias); @@ -397,6 +410,7 @@ struct target { bool set_physical_port(std::string_view pport); bool set_redirection(const char *addr); virtual struct lun *start_lun(u_int) { return nullptr; } + virtual struct lun *start_namespace(u_int) { return nullptr; } void add_port(struct port *port); void remove_lun(struct lun *lun); @@ -440,13 +454,18 @@ private: }; struct conf { + conf(); + int maxproc() const { return conf_maxproc; } int timeout() const { return conf_timeout; } + uint32_t genctr() const { return conf_genctr; } bool default_auth_group_defined() const { return conf_default_ag_defined; } bool default_portal_group_defined() const { return conf_default_pg_defined; } + bool default_transport_group_defined() const + { return conf_default_tg_defined; } struct auth_group *add_auth_group(const char *ag_name); struct auth_group *define_default_auth_group(); @@ -456,6 +475,10 @@ struct conf { struct portal_group *define_default_portal_group(); struct portal_group *find_portal_group(std::string_view name); + struct portal_group *add_transport_group(const char *name); + struct portal_group *define_default_transport_group(); + struct portal_group *find_transport_group(std::string_view name); + bool add_port(struct target *target, struct portal_group *pg, auth_group_sp ag); bool add_port(struct target *target, struct portal_group *pg, @@ -465,6 +488,9 @@ struct conf { int vp); bool add_pports(struct kports &kports); + struct target *add_controller(const char *name); + struct target *find_controller(std::string_view name); + struct target *add_target(const char *name); struct target *find_target(std::string_view name); @@ -501,10 +527,12 @@ private: std::string conf_pidfile_path; std::unordered_map> conf_luns; - std::unordered_map> conf_targets; + std::unordered_map conf_targets; + std::unordered_map conf_controllers; std::unordered_map conf_auth_groups; std::unordered_map> conf_ports; std::unordered_map conf_portal_groups; + std::unordered_map conf_transport_groups; std::unordered_map conf_isns; struct target *conf_first_target = nullptr; int conf_isns_period = 900; @@ -512,12 +540,16 @@ private: int conf_debug = 0; int conf_timeout = 60; int conf_maxproc = 30; + uint32_t conf_genctr = 0; freebsd::pidfile conf_pidfile; bool conf_default_pg_defined = false; + bool conf_default_tg_defined = false; bool conf_default_ag_defined = false; + static uint32_t global_genctr; + #ifdef ICL_KERNEL_PROXY public: int add_proxy_portal(portal *); @@ -593,6 +625,11 @@ portal_group_up iscsi_make_portal_group(struct conf *conf, target_up iscsi_make_target(struct conf *conf, std::string_view name); +portal_group_up nvmf_make_transport_group(struct conf *conf, + std::string_view name); +target_up nvmf_make_controller(struct conf *conf, + std::string_view name); + void start_timer(int timeout, bool fatal = false); void stop_timer(); *** 1962 LINES SKIPPED *** From nobody Wed Aug 6 20:10:01 2025 X-Original-To: dev-commits-src-main@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 4by1cB3grwz648sJ; Wed, 06 Aug 2025 20:10:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1c94lN9z41W2; Wed, 06 Aug 2025 20:10:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DYygX3WlYItzeA1wtA/2nECGYYAD8FVfd4D3l9L5j/8=; b=s8wKMTias6JrZRbjPA9PyRLXdc0K3AUQAOyV6Ag76N4LfGXJ48a7WNhqCTIFZ2vqCvX5dt f4vGSQo68Z+sDNPfPK97bPHYnZ1sTUQf70pC6b4UNvociAnh6ehEPqFDP830S6Dd+3+6N1 0CZI39ujUB6pgNPBmV5VkM08y7ON+jG88MnIm3zJzxMdJF163tgbr7bT3kTSrY0a4Vs75l aPN33HVXEpb1MO64HsKw3Yj10yXm5v/IKVh5KhYc0oRPeMmGQtROwZQoWHXd3nX9zDvQod 7GzumaSGWsXhNBbjL6rl26RrBpRefJ3MHfO2NT95ncXQVFGsMMRc2x2YwwqwRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DYygX3WlYItzeA1wtA/2nECGYYAD8FVfd4D3l9L5j/8=; b=kbUPFZd4EeWwaQm2B2ZiMh6tiQtBl3G6sbrQ9qiPQE0z9x0xnL24OgLIz9U3RQklKHvB1O LtVJbELlwbRK/RLvH9fXkOfxH1yjdI/X8/+qtTQ1PC7eAudFuYHbJ3Zav9/zz0VPGfk6l0 KAEXBQE6Xcs+jULdWEAZO3leoG1atUiqI1vbgbZy9WKWiuzv2yowoDvKec8+oDVCmMeRkf 6zZcYfsSdcdXF09XtiiauP/ZyXz/JA6zFZEGBhEDiYPH2Ox8vy0AVsFPHbkOdD5GH8k/3w wxgB76OGtg2mN+G5LQPWhiNkyo7xcZImy1b49cvPbcJt/77zXSFehyXuXRMzGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511001; a=rsa-sha256; cv=none; b=gUgYthsS9W33vXrwOf0KLbERUQsAgraHzxCL0/Iu8+7/LRdU0Ltp3YUDeyDh+IDxQK4/Cm imzHXb31gJjew7k816z5GXEMqjs2aK+aFEgUnNKZBaGPt+IzsawGIunHhDxsM7WtFjCJ1J QI3AyaNYhnJNQOOXsZeAgPFFfNtX7Y0rXfHEKm60b0iMasy/6ZmMVIExADBOzFT1ZxVt8b 8xnNsYLHY6qlVAuE6ocR3o4hyNWvaJGuDhPxmkYOPPxOHDloI6/6rGGNEOhR11gEbFjbbn WvIW3wZ6XaqPhEzHDO/GPpD0O4uYM57FbOxNtTBb1WA76yfQMzqPqzfXPRivmg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1c94B4jzc8k; Wed, 06 Aug 2025 20:10:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KA1II061921; Wed, 6 Aug 2025 20:10:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KA1Hw061916; Wed, 6 Aug 2025 20:10:01 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:10:01 GMT Message-Id: <202508062010.576KA1Hw061916@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 40484d3117d9 - main - ctld: Use freebsd::fd_up to manage the lifecycle of accepted sockets List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 40484d3117d9520de3755d5c91ddb26ed7ce6bcb Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=40484d3117d9520de3755d5c91ddb26ed7ce6bcb commit 40484d3117d9520de3755d5c91ddb26ed7ce6bcb Author: John Baldwin AuthorDate: 2025-08-06 19:57:27 +0000 Commit: John Baldwin CommitDate: 2025-08-06 19:57:27 +0000 ctld: Use freebsd::fd_up to manage the lifecycle of accepted sockets Explicitly hand off ownership of accepted sockets to the portal::handle_connection method. Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D51729 --- usr.sbin/ctld/ctld.cc | 8 +++----- usr.sbin/ctld/ctld.hh | 2 +- usr.sbin/ctld/iscsi.cc | 12 ++++++------ usr.sbin/ctld/iscsi.hh | 5 +++-- usr.sbin/ctld/login.cc | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc index 4821bdb030c1..451245b8d5fa 100644 --- a/usr.sbin/ctld/ctld.cc +++ b/usr.sbin/ctld/ctld.cc @@ -2166,7 +2166,7 @@ wait_for_children(bool block) } static void -handle_connection(struct portal *portal, int fd, +handle_connection(struct portal *portal, freebsd::fd_up fd, const struct sockaddr *client_sa, bool dont_fork) { struct portal_group *pg; @@ -2197,10 +2197,8 @@ handle_connection(struct portal *portal, int fd, pid = fork(); if (pid < 0) log_err(1, "fork"); - if (pid > 0) { - close(fd); + if (pid > 0) return; - } conf->close_pidfile(); } @@ -2214,7 +2212,7 @@ handle_connection(struct portal *portal, int fd, log_set_peer_addr(host); setproctitle("%s", host); - portal->handle_connection(fd, host, client_sa); + portal->handle_connection(std::move(fd), host, client_sa); log_debugx("nothing more to do; exiting"); exit(0); } diff --git a/usr.sbin/ctld/ctld.hh b/usr.sbin/ctld/ctld.hh index 7842f1bb5715..6ecee3b73c4f 100644 --- a/usr.sbin/ctld/ctld.hh +++ b/usr.sbin/ctld/ctld.hh @@ -144,7 +144,7 @@ struct portal { bool reuse_socket(portal &oldp); bool init_socket(); virtual bool init_socket_options(int s __unused) { return true; } - virtual void handle_connection(int fd, const char *host, + virtual void handle_connection(freebsd::fd_up fd, const char *host, const struct sockaddr *client_sa) = 0; portal_group *portal_group() { return p_portal_group; } diff --git a/usr.sbin/ctld/iscsi.cc b/usr.sbin/ctld/iscsi.cc index 8d32974ab504..bee036b95bf2 100644 --- a/usr.sbin/ctld/iscsi.cc +++ b/usr.sbin/ctld/iscsi.cc @@ -61,7 +61,7 @@ struct iscsi_portal final : public portal { portal(pg, listen, protocol, std::move(ai)) {} bool init_socket_options(int s) override; - void handle_connection(int fd, const char *host, + void handle_connection(freebsd::fd_up fd, const char *host, const struct sockaddr *client_sa) override; }; @@ -410,13 +410,13 @@ pdu_fail(const struct connection *conn __unused, const char *reason __unused) { } -iscsi_connection::iscsi_connection(struct portal *portal, int fd, +iscsi_connection::iscsi_connection(struct portal *portal, freebsd::fd_up fd, const char *host, const struct sockaddr *client_sa) : - conn_portal(portal), conn_initiator_addr(host), + conn_portal(portal), conn_fd(std::move(fd)), conn_initiator_addr(host), conn_initiator_sa(client_sa) { connection_init(&conn, &conn_ops, proxy_mode); - conn.conn_socket = fd; + conn.conn_socket = conn_fd; } iscsi_connection::~iscsi_connection() @@ -496,12 +496,12 @@ iscsi_connection::handle() } void -iscsi_portal::handle_connection(int fd, const char *host, +iscsi_portal::handle_connection(freebsd::fd_up fd, const char *host, const struct sockaddr *client_sa) { struct conf *conf = portal_group()->conf(); - iscsi_connection conn(this, fd, host, client_sa); + iscsi_connection conn(this, std::move(fd), host, client_sa); start_timer(conf->timeout(), true); kernel_capsicate(); conn.handle(); diff --git a/usr.sbin/ctld/iscsi.hh b/usr.sbin/ctld/iscsi.hh index 5a6729541119..d510e8c6731b 100644 --- a/usr.sbin/ctld/iscsi.hh +++ b/usr.sbin/ctld/iscsi.hh @@ -36,8 +36,8 @@ #define CONN_SESSION_TYPE_NORMAL 2 struct iscsi_connection { - iscsi_connection(struct portal *portal, int fd, const char *host, - const struct sockaddr *client_sa); + iscsi_connection(struct portal *portal, freebsd::fd_up fd, + const char *host, const struct sockaddr *client_sa); ~iscsi_connection(); void handle(); @@ -61,6 +61,7 @@ private: struct portal *conn_portal = nullptr; const struct port *conn_port = nullptr; struct target *conn_target = nullptr; + freebsd::fd_up conn_fd; int conn_session_type = CONN_SESSION_TYPE_NONE; std::string conn_initiator_name; std::string conn_initiator_addr; diff --git a/usr.sbin/ctld/login.cc b/usr.sbin/ctld/login.cc index 87e8d3092fef..cda11cc1f21b 100644 --- a/usr.sbin/ctld/login.cc +++ b/usr.sbin/ctld/login.cc @@ -752,7 +752,7 @@ iscsi_connection::login_negotiate(struct pdu *request) conn_max_burst_limit = (1 << 24) - 1; conn_first_burst_limit = (1 << 24) - 1; kernel_limits(pg->offload(), - conn.conn_socket, + conn_fd, &conn_max_recv_data_segment_limit, &conn_max_send_data_segment_limit, &conn_max_burst_limit, From nobody Wed Aug 6 20:14:56 2025 X-Original-To: dev-commits-src-main@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 4by1js1rSQz649Y3; Wed, 06 Aug 2025 20:14:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1js17WSz44NB; Wed, 06 Aug 2025 20:14:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XSx8r0JtPhhnTkIIaPv/2DgOazq/ThHiqrMYRQMFAA0=; b=fs/kF3v60JPvHUoRPZi6FBtCgDBzHBnxYoo10YO3NS85lc+GnIhpaDs4ySHu+UVc8BNVA/ obvRahLMCJD3MGtQ+1K8WwD95sj1EG/xPLhteekgchHH9QcySqQ94A/rvxipR50mPpgbyK 0iAnzkS8IeCWeE61clf9oxNbYRQW1B4kDKTw3ntVVV6EQ82atlQVmLsY7cP6g73vrBeLHC 6lLZoF9NeohuxuwNN7t1v8i0aWltvud/CuEXOrXIpC1i9XZXaJjKFbwQxfP3yRLDnSS+Qj URivJ99YYf/xPdP486ldF/foD1iIp3k2Axg3Kl5igguGL2ynMk+JsM9Hvfl7UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XSx8r0JtPhhnTkIIaPv/2DgOazq/ThHiqrMYRQMFAA0=; b=EAhKCE4fvxwSdDKwRdOLy3V9A9MII0u9c2a2HkCx3IC0NtcPiYx9F/keUfiT57cy4Sm5ww lPcU6xCeKFZdex6gDvrtVYjcU3gCLplH1bGP2xE8m6AM6wrlVRb1tLk6bdrDJOqt59T5NM almlNRVEAJVUvKzH4BGKYDSrTBWvote3Kg0f2Mny/IFL//ncpXLtjolq9ZpVgN6oLd9fF3 YuAD4kFyaEruNWlSrNayJr029XSyoaHBhHum4khS7uC/qHPq2ifp64vt31IV/eVqF5129W muKzsdbTSxpU3uHhCKeH9KIaX6nfSWUPn9qo5v+nHWvCwz0VOKo7ZJvVBxbznw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511297; a=rsa-sha256; cv=none; b=ncAuDDdJbg0FNNyQ0RqlP7Dg4LRuz9ujdWGAtjjNUGaosJ9fyduILpSmeWMOIXoZRjVzKf bRTnxAamOLzuQIll6VrIDS7pbsNQWWB0DaHGtfJMmVVlOOn/VUStvceDnWp9YNxNrTC7BB 4b7+iSMcUKJqZi2pjFrALf3gXNXO42PPPhLkau0KYVDqfmcHyVLptDYs1UBtsRS8WJuphR 0j3baQktN5sEQNjECJN86ouUIkHBSIaaXRmKqnczRgvvOq2h77Tjj+QOEtzZaebCkocWaD Q5y8DYGh81LLIWjW8DngxLoPP8ZW8UzKDsBuRq5/5BWvDoWxowabyFT0nFEvJg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1js0f96zcBc; Wed, 06 Aug 2025 20:14:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KEu5n076880; Wed, 6 Aug 2025 20:14:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KEuN4076877; Wed, 6 Aug 2025 20:14:56 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:14:56 GMT Message-Id: <202508062014.576KEuN4076877@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: e68d702b3a1f - main - cross-build make.py: Handle lld brew packages on macOS List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e68d702b3a1fc52145e70d861db89a0f20bfc3a0 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e68d702b3a1fc52145e70d861db89a0f20bfc3a0 commit e68d702b3a1fc52145e70d861db89a0f20bfc3a0 Author: John Baldwin AuthorDate: 2025-08-06 20:13:13 +0000 Commit: John Baldwin CommitDate: 2025-08-06 20:13:13 +0000 cross-build make.py: Handle lld brew packages on macOS Homebrew uses separate packages for llvm and lld starting with llvm19. To handle this case automatically, pass the binary_name to default_cross_toolchain() and only use the automatic path for a given binary if the binary is found in the path (not just if the directory exists). Add a second clause for ld.lld that looks for a lld package if lld wasn't found in the llvm directory. Note that manually specifying the path cannot use a single --cross-bindir option. Instead, XLD must be manually set in addition to --cross-bindir when requesting a specific version. Reviewed by: arichardson Differential Revision: https://reviews.freebsd.org/D51653 --- tools/build/make.py | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/tools/build/make.py b/tools/build/make.py index ec42cb70dd21..618a2aa7abb0 100755 --- a/tools/build/make.py +++ b/tools/build/make.py @@ -40,6 +40,7 @@ # --cross-bindir=/path/to/cross/compiler buildworld -DWITH_FOO TARGET=foo # TARGET_ARCH=bar` import argparse +import functools import os import shlex import shutil @@ -178,24 +179,41 @@ def check_xtool_make_env_var(varname, binary_name): return global parsed_args if parsed_args.cross_bindir is None: - parsed_args.cross_bindir = default_cross_toolchain() + cross_bindir = default_cross_toolchain(binary_name) + else: + cross_bindir = parsed_args.cross_bindir return check_required_make_env_var(varname, binary_name, - parsed_args.cross_bindir) + cross_bindir) + + +@functools.cache +def brew_prefix(package: str) -> str: + path = subprocess.run(["brew", "--prefix", package], stdout=subprocess.PIPE, + stderr=subprocess.PIPE).stdout.strip() + debug("Inferred", package, "dir as", path) + return path.decode("utf-8") +def binary_path(bindir: str, binary_name: str) -> "Optional[str]": + try: + if bindir and Path(bindir, "bin", binary_name).exists(): + return str(Path(bindir, "bin")) + except OSError: + pass + return None -def default_cross_toolchain(): +def default_cross_toolchain(binary_name: str) -> str: # default to homebrew-installed clang on MacOS if available if sys.platform.startswith("darwin"): if shutil.which("brew"): - llvm_dir = subprocess.run([ - "brew", "--prefix", "llvm"], - stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.strip() - debug("Inferred LLVM dir as", llvm_dir) - try: - if llvm_dir and Path(llvm_dir.decode("utf-8"), "bin").exists(): - return str(Path(llvm_dir.decode("utf-8"), "bin")) - except OSError: - return None + bindir = binary_path(brew_prefix("llvm"), binary_name) + if bindir: + return bindir + + # brew installs lld as a separate package for LLVM 19 and later + if binary_name == "ld.lld": + bindir = binary_path(brew_prefix("lld"), binary_name) + if bindir: + return bindir return None From nobody Wed Aug 6 20:14:58 2025 X-Original-To: dev-commits-src-main@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 4by1jt4HcPz649DB; Wed, 06 Aug 2025 20:14:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1jt1xljz44WD; Wed, 06 Aug 2025 20:14:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511298; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZwQmnKd1eU1NTmRmTGREHmZ8lAb1LNyWIj2/+811tSI=; b=Q8JNNTZy1xTGikW4jOH4eBJUz0txEVeC4tKweQ8UkvIzkQqGCIL/r0vCIoFda8fdFFxcqj HPXJPeECGQ9dy0dfEXnYoyQeZ3jHzksnKIOXNqnOH4O/DPNIzrUM5vAbjnPpA5o6QJMTwZ R9kac2N1ov+V2g02CSBZVuJkj/E+/tNtnGjkjXDClqLHseSx1Gy30nfZ+a8BH2eG8OKxaO mnjP6Kecr9ng7oJRlG13Y5r1c6hTxAGtJkvO2RlEDXWGq/By4Aoq6iILCyn/kzC/oITpmq m2BK7+JzScpvv4XJlmSy3WRzjqkDsqjHGERGw+wWzJ2uo12Sf9IBhqdx9N/8eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511298; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZwQmnKd1eU1NTmRmTGREHmZ8lAb1LNyWIj2/+811tSI=; b=oYUGLUZRK3t/u4YXxid/26q5wSy2F5SEVtYsOho30LXgrYmbhChet3OYd+o4S7M6qXu4kS WPwPRhigDU+m72sHkTcjK75//bUn0M8TXvm+b7OASYtp93yM4MyjB9kGe7JhrFq5proSr8 n9KI/wP2sT+6LDiwfIkHN2oE3XM3xe1IV1OKAh29AIoBo7co+9Tl/bXHneLMaLX4nuXO2B 1ASXCZUKBFGMapQbMi4F2+nz1jm+uhzC7K8gA/AUhmTfxuhiI04Zg6rRDiBRs8VewGCv92 fGCef/4TPqCmJHLFz6Ors3l1Wcf88sS6IcoNbQkyaEhzWVQq17nayvInRpU0Cg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511298; a=rsa-sha256; cv=none; b=d9Y5wmdkhFT7Cn7WZG0iD1zBrFx7CRuw5UqxNFcpkiDZAWEKbg+GmxJkfb6rEJHHqwdc9X GjsVDQiKOK6vVv0Ql8ZxUUzYkmPDJ5hGx6y+jzbVbtWRo6Nktod+8Jk6aPF7oxo2sahjND XmSpTYTInpy8gpPBblOn/h23OM79g1AZPa58ghbi/ktqKyi7vNabVgh9lhawDj94g7cJ0W 2c3pwQgFDz/v19fYkbg8aOmWcXCXXbH97NS0ZMMbFr+ljngj6gQ8x+AXtQ8HNTfR+ttoXV OLXeYI4b1V7mXkBwjdVbvsHfrIrg82KIKCggVZH0dP3kc0bxWw3AlR6CgKtSPg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1jt1PGQzcKM; Wed, 06 Aug 2025 20:14:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KEwPA076914; Wed, 6 Aug 2025 20:14:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KEwif076911; Wed, 6 Aug 2025 20:14:58 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:14:58 GMT Message-Id: <202508062014.576KEwif076911@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 81fc74fd26da - main - cross-build make.py: Permit specifying cross toolchains by a package name List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 81fc74fd26da2f75c3010595db7a706c3e28d95b Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=81fc74fd26da2f75c3010595db7a706c3e28d95b commit 81fc74fd26da2f75c3010595db7a706c3e28d95b Author: John Baldwin AuthorDate: 2025-08-06 20:14:01 +0000 Commit: John Baldwin CommitDate: 2025-08-06 20:14:01 +0000 cross-build make.py: Permit specifying cross toolchains by a package name Add a --cross-toolchain option whose value is a package name. This is currently only supported with brew on macOS. A sample invocation is `--cross-toolchain=llvm@19`. Differential Revision: https://reviews.freebsd.org/D51741 --- tools/build/make.py | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/tools/build/make.py b/tools/build/make.py index 618a2aa7abb0..2f36a3e23e32 100755 --- a/tools/build/make.py +++ b/tools/build/make.py @@ -34,11 +34,22 @@ # On FreeBSD you can use it the same way as just calling make: # `MAKEOBJDIRPREFIX=~/obj ./tools/build/make.py buildworld -DWITH_FOO` # -# On Linux and MacOS you will either need to set XCC/XCXX/XLD/XCPP or pass -# --cross-bindir to specify the path to the cross-compiler bindir: -# `MAKEOBJDIRPREFIX=~/obj ./tools/build/make.py -# --cross-bindir=/path/to/cross/compiler buildworld -DWITH_FOO TARGET=foo -# TARGET_ARCH=bar` +# On Linux and MacOS you may need to explicitly indicate the cross toolchain +# to use. You can do this by: +# - setting XCC/XCXX/XLD/XCPP to the paths of each tool +# - using --cross-bindir to specify the path to the cross-compiler bindir: +# `MAKEOBJDIRPREFIX=~/obj ./tools/build/make.py +# --cross-bindir=/path/to/cross/compiler buildworld -DWITH_FOO TARGET=foo +# TARGET_ARCH=bar` +# - using --cross-toolchain to specify the package containing the cross-compiler +# (MacOS only currently): +# `MAKEOBJDIRPREFIX=~/obj ./tools/build/make.py +# --cross-toolchain=llvm@NN buildworld -DWITH_FOO TARGET=foo +# TARGET_ARCH=bar` +# +# On MacOS, this tool will search for an llvm toolchain installed via brew and +# use it as the cross toolchain if an explicit toolchain is not specified. + import argparse import functools import os @@ -160,7 +171,8 @@ def check_required_make_env_var(varname, binary_name, bindir): return if not bindir: sys.exit("Could not infer value for $" + varname + ". Either set $" + - varname + " or pass --cross-bindir=/cross/compiler/dir/bin") + varname + " or pass --cross-bindir=/cross/compiler/dir/bin" + + " or --cross-toolchain=") # try to infer the path to the tool guess = os.path.join(bindir, binary_name) if not os.path.isfile(guess): @@ -179,7 +191,8 @@ def check_xtool_make_env_var(varname, binary_name): return global parsed_args if parsed_args.cross_bindir is None: - cross_bindir = default_cross_toolchain(binary_name) + cross_bindir = cross_toolchain_bindir(binary_name, + parsed_args.cross_toolchain) else: cross_bindir = parsed_args.cross_bindir return check_required_make_env_var(varname, binary_name, @@ -201,17 +214,20 @@ def binary_path(bindir: str, binary_name: str) -> "Optional[str]": pass return None -def default_cross_toolchain(binary_name: str) -> str: +def cross_toolchain_bindir(binary_name: str, package: "Optional[str]") -> str: # default to homebrew-installed clang on MacOS if available if sys.platform.startswith("darwin"): if shutil.which("brew"): - bindir = binary_path(brew_prefix("llvm"), binary_name) + if not package: + package = "llvm" + bindir = binary_path(brew_prefix(package), binary_name) if bindir: return bindir # brew installs lld as a separate package for LLVM 19 and later if binary_name == "ld.lld": - bindir = binary_path(brew_prefix("lld"), binary_name) + lld_package = package.replace("llvm", "lld") + bindir = binary_path(brew_prefix(lld_package), binary_name) if bindir: return bindir return None @@ -233,6 +249,10 @@ if __name__ == "__main__": help="Compiler type to find in --cross-bindir (only " "needed if XCC/XCPP/XLD are not set)" "Note: using CC is currently highly experimental") + parser.add_argument("--cross-toolchain", default=None, + help="Name of package containing cc/c++/cpp/ld to build " + "target binaries (only needed if XCC/XCPP/XLD " + "are not set)") parser.add_argument("--host-compiler-type", choices=("cc", "clang", "gcc"), default="cc", help="Compiler type to find in --host-bindir (only " From nobody Wed Aug 6 20:14:59 2025 X-Original-To: dev-commits-src-main@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 4by1jw1CXxz64997; Wed, 06 Aug 2025 20:15:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1jv2nLKz44bX; Wed, 06 Aug 2025 20:14:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+WGuizzASOmclBoCJcNFWzW+vFp32vFLexpUw/m6mqQ=; b=JQHPs83XsiuzcPWkmCbLrh2wvaYfmApr7UWIfYPvzcPu0UgdI83wAsJqTKLsQYEI7QEsA0 Z6/U2ZKRbt9nDn2H+1LIAj4X4wc20WLR0zMI+P1u7ruHSOLAdvQubNIBnEKDZtnNyrqxgi o8IOZqOFgXgiMy7ANuG0HYekMgarCL2yWLpbhUyBErvApfddmZFquvnWxj3JLY7mSBP6zE EcckHRwR6EuIG7dII5hYgTIkeJd6xCHB2fr+4WuspqTBGiLtx99ajG8UJ9tUWzhmXw7Niv /1dYLoPP2MXmsyLitbyVLVzeH1GJG7Zmkauf8zqIsbnjQ6Dm/As3bkMVc25i3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+WGuizzASOmclBoCJcNFWzW+vFp32vFLexpUw/m6mqQ=; b=sYaJwonsZBei1DBeTo6VY0PmzBkggqsp1ymxOFs4FmYdpxGmPUufEMv2pHo1fd+DKSRRo/ rXLfZJTkRksg+e1Ijv9+EvBM4rfhQWWuqvqGT0a20syHdsQY6Wp/FnUQPrNRWrYFuul4rf /ETwmw7vtiRQAdzkXJZ3buRo2qULMpl5JfakPHZarMQTg+QErR4Bdm3k/Tk8cXwiG3oKKB giy/o/tr6VrJeMHpit3WJ7ohF+85FLBxBf1ME4XoITw9uD9lQQh9wIGd4EGUf2p7YjwHl5 m8R3R83sJmzPmlzQpjBJ15B5fvCtzzOoj+oCOC9VQMTdRU9Pa8lvRIaIhdPARA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511299; a=rsa-sha256; cv=none; b=qGS8XXy1k+4amjyPusetkXEw8zXBESJA4KGkgfQjDjZrcIdPlS/ifwCJBAQAOkO0LB2Is6 OYK9abhMAozPnkvyHMN47Al2T6B9gV0MjoADBEHM4IjMJeI6yDZ3FOiwZ24imLhjgnn/Hv W/MB3qWp1zE7pqnkEzDxgBJ3WHi8hByi3AKKoujokI46XhzgLtqJ0kxs2CDMv8vs7qClA/ EAqboubMkF9FiRNMJZ/bYeNFQ69zr0GcgKFrafKmQg/ZJUHqif7pDBoroygZKD/pRzkdK1 5AtGgLs0da3mZ79mIv+mvevsf2puNXdthbczr5Jb6tsG3HJwWSlJ31m24q0O6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by1jv2LxYzcQ3; Wed, 06 Aug 2025 20:14:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KExA5076948; Wed, 6 Aug 2025 20:14:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KExQP076945; Wed, 6 Aug 2025 20:14:59 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:14:59 GMT Message-Id: <202508062014.576KExQP076945@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ad43e7f47210 - main - .github: Use make.py's --cross-toolchain option on macOS List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ad43e7f4721080caedd29a21de9210f9b763ee4d Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ad43e7f4721080caedd29a21de9210f9b763ee4d commit ad43e7f4721080caedd29a21de9210f9b763ee4d Author: John Baldwin AuthorDate: 2025-08-06 20:14:37 +0000 Commit: John Baldwin CommitDate: 2025-08-06 20:14:37 +0000 .github: Use make.py's --cross-toolchain option on macOS Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51749 --- .github/workflows/cross-bootstrap-tools.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cross-bootstrap-tools.yml b/.github/workflows/cross-bootstrap-tools.yml index 540e05cbd6e2..8f0dd933ef09 100644 --- a/.github/workflows/cross-bootstrap-tools.yml +++ b/.github/workflows/cross-bootstrap-tools.yml @@ -31,7 +31,7 @@ jobs: pkgs: bmake libarchive-dev clang-18 lld-18 - os: macos-latest compiler: clang-18 - cross-bindir: /opt/homebrew/opt/llvm@18/bin + cross-toolchain: llvm@18 pkgs: bmake libarchive llvm@18 - target_arch: amd64 target: amd64 @@ -55,6 +55,9 @@ jobs: if [ -n "${{ matrix.cross-bindir }}" ]; then echo "EXTRA_BUILD_ARGS=--cross-bindir=${{ matrix.cross-bindir }}" >> $GITHUB_ENV fi + if [ -n "${{ matrix.cross-toolchain }}" ]; then + echo "EXTRA_BUILD_ARGS=--cross-toolchain=${{ matrix.cross-toolchain }}" >> $GITHUB_ENV + fi mkdir -p ../build echo "MAKEOBJDIRPREFIX=${PWD%/*}/build" >> $GITHUB_ENV # heh, works on Linux/BSD/macOS ... From nobody Wed Aug 6 20:23:37 2025 X-Original-To: dev-commits-src-main@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 4by1vt5W3zz64B76; Wed, 06 Aug 2025 20:23:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by1vt4ZC1z45fX; Wed, 06 Aug 2025 20:23:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511818; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q2ttkLCipuGrLXrSQImeYeB58p7S6oUhW4EGlupiztk=; b=W/vIsZoD13BPVEmMc/vEQPRP8RyGSENbkvRn9yUvJQpsbJqwYmEYFpn8Nhgej789gpSbyN X0U3mCj/taWLxuvPSmSpniwmn7CTfRXwFj3WLABRSHcY3l6zU7BASjQ20RaWl8JS4a2HKs 2wzpNF9HaOdK3ShhGmNxwdH/0TV35/fO7lz78wg/2SUMTDqCJTp3Cq44bsBJRaXnHgR+eL Stg4QbvDM/DbegnrAvdylYOuH9TXwnNqf9JL2+qrOo3CyjOHdY3/pIjcd4F4yKctEL4cEF LlRyaotzhoZ23/CePqiQbld6E35O1pDfQhMUDr8bBTnQyiQZKKitQ4wXCdwc5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754511818; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q2ttkLCipuGrLXrSQImeYeB58p7S6oUhW4EGlupiztk=; b=HD6isFIcG5InU/ROp4Krtre0dcs8TwDiT/mHV5fAMYSnBYp3YprDzjEljVhthTKduJmOcT tVeOTd2iqfUf9zv5bsRWROMFYh+O6BVwV5kOBgSzKWiMVONyhez/b0t1MHl8AbKCsQkf7z m8CzCyDRITjufI+GfPnnV5Bg/M5FJlmhdDVL8kQzkkPBq2ri2w974N0PvS+YESQO13xZSx 6Hwn0zwv7sKTMOS0w7DnoBroXisNnu4041q22PNM5taJ1AwKVLv4SHqvoPgFdUYFyjnKx4 N0d7OcJii5rMuJGzweUivUxU1/TsNsa1Gc1Mfj01Ts9q1cT01RGBdRbQ/8AUCQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754511818; a=rsa-sha256; cv=none; b=VHLXhelbEz6wVwkvQXqfQNiwRWQuovudP9OngFLt8JWTWPjVDJk7ttV8T6ROhARjbh7uTj v+HViGfd0h5vKRNjE1BLcnb8eWoPJIpdfIug/q6u6/GtaLbmu3OrK+vMO7RZgpRNccK4OA xbGHRANcPRxn0ZUgjJKfpJrWqB2VK1LNmbqakjTTqYKxxyK5ty9nV5y3k1z2nDrXa/y563 xQXUrAxR1v2vPUzNkg36MouB9JhsCr9PRspi90P7jYB7hNn+xLJ63zei3IVLj7kyjc93GQ tK1Y4Ut52n9yLEOkPGh6M9VO6UJfEo83RZTEf9HFOOueH+WfBBLo8WYhqiaiDw== Received: from [IPV6:2601:5c0:4202:5670:c463:425d:db06:ab75] (unknown [IPv6:2601:5c0:4202:5670:c463:425d:db06:ab75]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4by1vt2njKzNh6; Wed, 06 Aug 2025 20:23:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Wed, 6 Aug 2025 16:23:37 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 66b5296f1b29 - main - ctld: Add support for NVMe over Fabrics Content-Language: en-US From: John Baldwin To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508062010.576KA2Mk062184@gitrepo.freebsd.org> In-Reply-To: <202508062010.576KA2Mk062184@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/6/25 16:10, John Baldwin wrote: > The branch main has been updated by jhb: > > URL: https://cgit.FreeBSD.org/src/commit/?id=66b5296f1b29083634e2875ff08c32e7b6b866a8 > > commit 66b5296f1b29083634e2875ff08c32e7b6b866a8 > Author: John Baldwin > AuthorDate: 2025-08-06 19:57:50 +0000 > Commit: John Baldwin > CommitDate: 2025-08-06 19:59:13 +0000 > > ctld: Add support for NVMe over Fabrics > > While the overall structure is similar for NVMeoF controllers and > iSCSI targets, there are sufficient differences that NVMe support uses > an alternate configuration syntax. > > - In authentication groups, permitted NVMeoF hosts can be allowed by > names (NQNs) via "host-nqn" values (similar to "initiator-name" for > iSCSI). Similarly, "host-address" accepts permitted host addresses > similar to "initiator-portal" for iSCSI. > > - A new "transport-group" context enumerates transports that can be > used by a group of NVMeoF controllers similar to the "portal-group" > context for iSCSI. In this section, the "listen" keyword accepts a > transport as well as an address to permit other types of transports > besides TCP in the future. The "foreign", "offload", and "redirect" > keywords are also not meaningful and thus not supported. > > - A new "controller" context describes an NVMeoF I/O controller > similar to the "target" context for iSCSI. One key difference here > is that "lun" objects are replaced by "namespace" objects. However, > a "namespace" can reference a named global lun permitting LUNs to be > shared between iSCSI targets and NVMeoF controllers. > > NB: Authentication via CHAP is not implemented for NVMeoF. > > Reviewed by: imp > Sponsored by: Chelsio Communications > Differential Revision: https://reviews.freebsd.org/D48773 The config file (UCL) I used for most of my testing looks something like this (some settings omitted and names changed, etc.). It creates two LUNs that are exported by both iSCSI and NVMeoF (so you can access the same disk via either protocol). portal-group { pg0 { discovery-auth-group = no-authentication listen = [ 0.0.0.0, "[::]" ] offload = cxgbei } } lun { zvol { path /dev/zvol/bhyve/iscsi size 4GB }, ramdisk { backend ramdisk size 1G option capacity 1G } } target { "iqn.2001-03.com.example:myhost0" { auth-group = no-authentication portal-group = pg0 lun { 0 = zvol, 1 = ramdisk } } } controller { "nqn.2001-03.com.example:myhost0" { auth-group = no-authentication namespace { 1 = zvol, 2 = ramdisk } } } -- John Baldwin From nobody Wed Aug 6 20:43:40 2025 X-Original-To: dev-commits-src-main@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 4by2M066sJz64Bhl; Wed, 06 Aug 2025 20:43:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by2M04GWdz4940; Wed, 06 Aug 2025 20:43:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VlIhVCDSV95zzQY3xRT/DmDQFF9fkimTxTLM7eM48L8=; b=QbQm3kYaMhzCofF349jbAZ2y176HYrjhPyNDSwjbJBKp8HfVjieKGxMiggV2e0fAlkMGbA I7bbhwZAv4ywwsHeaUahMQpadrj7OovsLM9AE+dvNFt0Uf9BwxycwMnpoRT1BKKaj22hp0 jv0OhHz29YCVzY+quANfPyKfsCI5d7EariqSKLdEYjaU72thQTxZu+JzuPE91uwmWiui1E sh1d7FgqIUUYBpUkjEjWYwC9Jt+3Zz4pYjlCEwkstqL1x9REZrRRX468/GR5MaGaNHdjgQ mylww2LXHpynlG4hCvI3hnoJqOITo0W76SG2Y3oWS6Dilu/HqX8cK8xilJVdNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VlIhVCDSV95zzQY3xRT/DmDQFF9fkimTxTLM7eM48L8=; b=tBempd3DGe/yZ3DyJlz0IKCpClNe1/DwvGPPUpauQ4FJU/mC0Al5eYQD/wJzWj/WhniNGZ xEUfs7EHIRJIXr766IFbcc3v87Kc9hZMVGGfO5oRk6wO/l0hBD5m7nvSNysN3ytaS69iUy mMuaFy2hUZDgH1l1oIhyV984vMlrkdeQ36pSdNt/Y8QHpq0BgUVX8QsNiKMEh2h7fulIK8 rKEJnkacnTpo7WctwawAASibvANhe95sXOwsPYnBikD+hD6HJLy5yA2Niv5p1zoIbsMQqm 9CpR0zeK0yagnfZfVtkH67KvUK4vON868DF8fXyNWfduyURTI+SvI3ecYItgQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754513020; a=rsa-sha256; cv=none; b=tbYX+gT3dHCyd0n83YRD8Frjv/cZfPro3mJxMSoaCx7YUryAl8ZoF2pcZS2envdj/2twJr 40I+LsfPCh1UzDk4B0vzXnrLEWjOw/pPuWodbBqAFf8YmRM9F0YWb4K/aJVuo4Dtp8FJzz RyVAQuu/8q+8y5mBLnagWdm0GjcrFbS9yIwC/XWY4SOP7JaGs9tDgnh7p9dEkkRE1mGHAE e7x+eIebvtNAH6i6VT9NE59EhdPOcqwAkKNK19Rugd86faoroaNYhBYg6jMG3uGYalI2Fg qT/Tk1X6e7/s+qvPiW/Kxt0dTMWx2Sm2pFLEZbX7VrmwvynxwPBOlzr3SdlcLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by2M03lvSzdCG; Wed, 06 Aug 2025 20:43:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Khemu033623; Wed, 6 Aug 2025 20:43:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KhekA033620; Wed, 6 Aug 2025 20:43:40 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:43:40 GMT Message-Id: <202508062043.576KhekA033620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: ab1c6874e500 - main - libutil: Backward compatibility for expand_number() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: ab1c6874e5004a8ac4e6b077a4aee307e22628b1 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ab1c6874e5004a8ac4e6b077a4aee307e22628b1 commit ab1c6874e5004a8ac4e6b077a4aee307e22628b1 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 20:34:13 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 20:43:13 +0000 libutil: Backward compatibility for expand_number() Reimplement expand_number() in terms of expand_unsigned(), which takes a pointer to uint64_t like expand_number() did before. Provide a macro that picks the correct version based on the type of the argument. Fixes: 2e0caa7c7e14 Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D51723 --- lib/libutil/Symbol.map | 1 + lib/libutil/expand_number.3 | 58 +++++++++++++++++++++++--- lib/libutil/expand_number.c | 49 +++++++++++++++++++--- lib/libutil/libutil.h | 8 ++++ lib/libutil/tests/expand_number_test.c | 75 ++++++++++++++++++++++++++++++++++ 5 files changed, 181 insertions(+), 10 deletions(-) diff --git a/lib/libutil/Symbol.map b/lib/libutil/Symbol.map index 8c8fff451cd1..6b8a1ec099bf 100644 --- a/lib/libutil/Symbol.map +++ b/lib/libutil/Symbol.map @@ -13,6 +13,7 @@ FBSD_1.8 { cpuset_parselist; domainset_parselist; expand_number; + expand_unsigned; flopen; flopenat; forkpty; diff --git a/lib/libutil/expand_number.3 b/lib/libutil/expand_number.3 index 1b932400de69..b1833cedf406 100644 --- a/lib/libutil/expand_number.3 +++ b/lib/libutil/expand_number.3 @@ -24,11 +24,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 25, 2025 +.Dd August 6, 2025 .Dt EXPAND_NUMBER 3 .Os .Sh NAME -.Nm expand_number +.Nm expand_number , +.Nm expand_unsigned .Nd parse a number from human readable form .Sh LIBRARY .Lb libutil @@ -38,6 +39,10 @@ .Fo expand_number .Fa "const char *buf" "int64_t *num" .Fc +.Ft int +.Fo expand_unsigned +.Fa "const char *buf" "uint64_t *num" +.Fc .Sh DESCRIPTION The .Fn expand_number @@ -48,6 +53,17 @@ quantity in the location pointed to by its .Fa *num argument. .Pp +The +.Fn expand_unsigned +function is similar to +.Fn expand_number , +but accepts only positive numbers in the range +.Bq 0, Ns Dv UINT64_MAX . +.Pp +Both functions interpret the input +.Dq -0 +as 0. +.Pp The input string must consist of a decimal number, optionally preceded by a .Sq + @@ -81,20 +97,38 @@ is interpreted as 5, and .Dq 5kb is interpreted as 5,120). However, the usage of this suffix is discouraged. +.Pp +For backward compatibility reasons, if the compiler supports generic +selection, a macro is provided which automatically replaces calls to +.Fn expand_number +with calls to +.Fn expand_unsigned +if the type of the actual +.Va num +argument is compatible with +.Vt uint64_t * . .Sh RETURN VALUES .Rv -std .Sh ERRORS The .Fn expand_number -function will fail if: +and +.Fn expand_unsigned +functions will fail if: .Bl -tag -width Er .It Bq Er EINVAL The given string does not contain a valid number. .It Bq Er EINVAL An unrecognized suffix was encountered. .It Bq Er ERANGE -The given string represents a number which does not fit into a -.Vt int64_t . +The given string represents a number which does not fit into an +.Vt int64_t +(for +.Fn expand_number ) +or +.Vt uint64_t +(for +.Fn expand_unsigned ) . .El .Sh SEE ALSO .Xr humanize_number 3 @@ -103,3 +137,17 @@ The .Fn expand_number function first appeared in .Fx 6.3 . +The original implementation did not handle negative numbers correctly, +and it was switched to taking a +.Vt uint64_t * +and accepting only positive numbers in +.Fx 9.0 . +The +.Fn expand_unsigned +function was added, +and +.Fn expand_number +switched back to +.Vt int64_t * , +in +.Fx 15.0 . diff --git a/lib/libutil/expand_number.c b/lib/libutil/expand_number.c index f4c19d7867a3..a3313ba39d98 100644 --- a/lib/libutil/expand_number.c +++ b/lib/libutil/expand_number.c @@ -37,13 +37,12 @@ #include #include -int -expand_number(const char *buf, int64_t *num) +static int +expand_impl(const char *buf, uint64_t *num, bool *neg) { char *endptr; uintmax_t number; unsigned int shift; - bool neg; int serrno; /* @@ -52,10 +51,10 @@ expand_number(const char *buf, int64_t *num) while (isspace((unsigned char)*buf)) buf++; if (*buf == '-') { - neg = true; + *neg = true; buf++; } else { - neg = false; + *neg = false; if (*buf == '+') buf++; } @@ -127,6 +126,22 @@ expand_number(const char *buf, int64_t *num) } number <<= shift; + *num = number; + return (0); +} + +int +(expand_number)(const char *buf, int64_t *num) +{ + uint64_t number; + bool neg; + + /* + * Parse the number. + */ + if (expand_impl(buf, &number, &neg) != 0) + return (-1); + /* * Apply the sign and check for overflow. */ @@ -146,3 +161,27 @@ expand_number(const char *buf, int64_t *num) return (0); } + +int +expand_unsigned(const char *buf, uint64_t *num) +{ + uint64_t number; + bool neg; + + /* + * Parse the number. + */ + if (expand_impl(buf, &number, &neg) != 0) + return (-1); + + /* + * Negative numbers are out of range. + */ + if (neg && number > 0) { + errno = ERANGE; + return (-1); + } + + *num = number; + return (0); +} diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h index d27262e44daf..9b5b2abe7f09 100644 --- a/lib/libutil/libutil.h +++ b/lib/libutil/libutil.h @@ -89,6 +89,14 @@ __BEGIN_DECLS void clean_environment(const char * const *_white, const char * const *_more_white); int expand_number(const char *_buf, int64_t *_num); +int expand_unsigned(const char *_buf, uint64_t *_num); +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ + __has_extension(c_generic_selections) +#define expand_number(_buf, _num) \ + _Generic((_num), \ + uint64_t *: expand_unsigned, \ + default: expand_number)((_buf), (_num)) +#endif int extattr_namespace_to_string(int _attrnamespace, char **_string); int extattr_string_to_namespace(const char *_string, int *_attrnamespace); int flopen(const char *_path, int _flags, ...); diff --git a/lib/libutil/tests/expand_number_test.c b/lib/libutil/tests/expand_number_test.c index 8e7458994de4..8ff56e1ed01f 100644 --- a/lib/libutil/tests/expand_number_test.c +++ b/lib/libutil/tests/expand_number_test.c @@ -206,10 +206,85 @@ ATF_TC_BODY(expand_number__bad, tp) require_error(" + 1", EINVAL); } +ATF_TC_WITHOUT_HEAD(expand_unsigned); +ATF_TC_BODY(expand_unsigned, tp) +{ + static struct tc { + const char *str; + uint64_t num; + int error; + } tcs[] = { + { "0", 0, 0 }, + { "+0", 0, 0 }, + { "-0", 0, 0 }, + { "1", 1, 0 }, + { "+1", 1, 0 }, + { "-1", 0, ERANGE }, + { "18446744073709551615", UINT64_MAX, 0 }, + { "+18446744073709551615", UINT64_MAX, 0 }, + { "-18446744073709551615", 0, ERANGE }, + { 0 }, + }; + struct tc *tc; + uint64_t num; + int error, ret; + + for (tc = tcs; tc->str != NULL; tc++) { + ret = expand_number(tc->str, &num); + error = errno; + if (tc->error == 0) { + ATF_REQUIRE_EQ_MSG(0, ret, + "%s ret = %d", tc->str, ret); + ATF_REQUIRE_EQ_MSG(tc->num, num, + "%s num = %ju", tc->str, (uintmax_t)num); + } else { + ATF_REQUIRE_EQ_MSG(-1, ret, + "%s ret = %d", tc->str, ret); + ATF_REQUIRE_EQ_MSG(tc->error, error, + "%s errno = %d", tc->str, error); + } + } +} + +ATF_TC_WITHOUT_HEAD(expand_generic); +ATF_TC_BODY(expand_generic, tp) +{ + uint64_t uint64; + int64_t int64; + size_t size; + off_t off; + + ATF_REQUIRE_EQ(0, expand_number("18446744073709551615", &uint64)); + ATF_REQUIRE_EQ(UINT64_MAX, uint64); + ATF_REQUIRE_EQ(-1, expand_number("-1", &uint64)); + ATF_REQUIRE_EQ(ERANGE, errno); + + ATF_REQUIRE_EQ(0, expand_number("9223372036854775807", &int64)); + ATF_REQUIRE_EQ(INT64_MAX, int64); + ATF_REQUIRE_EQ(-1, expand_number("9223372036854775808", &int64)); + ATF_REQUIRE_EQ(ERANGE, errno); + ATF_REQUIRE_EQ(0, expand_number("-9223372036854775808", &int64)); + ATF_REQUIRE_EQ(INT64_MIN, int64); + + ATF_REQUIRE_EQ(0, expand_number("18446744073709551615", &size)); + ATF_REQUIRE_EQ(UINT64_MAX, size); + ATF_REQUIRE_EQ(-1, expand_number("-1", &size)); + ATF_REQUIRE_EQ(ERANGE, errno); + + ATF_REQUIRE_EQ(0, expand_number("9223372036854775807", &off)); + ATF_REQUIRE_EQ(INT64_MAX, off); + ATF_REQUIRE_EQ(-1, expand_number("9223372036854775808", &off)); + ATF_REQUIRE_EQ(ERANGE, errno); + ATF_REQUIRE_EQ(0, expand_number("-9223372036854775808", &off)); + ATF_REQUIRE_EQ(INT64_MIN, off); +} + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, expand_number__ok); ATF_TP_ADD_TC(tp, expand_number__bad); + ATF_TP_ADD_TC(tp, expand_unsigned); + ATF_TP_ADD_TC(tp, expand_generic); return (atf_no_error()); } From nobody Wed Aug 6 20:43:41 2025 X-Original-To: dev-commits-src-main@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 4by2M16Cnlz64Bvx; Wed, 06 Aug 2025 20:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by2M153ZJz48vs; Wed, 06 Aug 2025 20:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513021; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u+orTnNFFPf2x4JqpSoMjGvtPDbMPIatMYHdmq3y6Gs=; b=K5LwaAnA/WMegZJYbrcUs+X2rioitTwXarUDbjRn9D8haraNXc+Az+2HuP6wat1cN+a2Mu PM+npGZpXDXo6F8X9/gh9jjs93FMXdusAgdTBJSR0+ICnzQtlq8Ym9EmI+F7dP+Vl5EcU3 Lp85gP0IPiVYTfHys9RO1ATrlm3/iWbBFC3v9BvZZa7faQvkSBO0E93kuF7dUGMYxDhtBo n2lAKKt5pLFRLRvlhyCnrD9092bL1AdMlwHJM6M9dbMxI72Fx6oMPyHPNgFwdW4LziEyRM /cHWRbVUhLMPsnaampk8cC8EvZRKTDPbSnueHeBMPjDzfKCi8m3CkB3iz7FVUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513021; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u+orTnNFFPf2x4JqpSoMjGvtPDbMPIatMYHdmq3y6Gs=; b=AU6CCcSfCqBztKHVG0qvanX4cfrUOzGA0TY3UlYNMeE0vRn5VSz3oHz/xW8UAlIZWZuIsX 4ayB/RoMtN9I5tkZep24TpYzF1i7f/6QG16RgJZ4k8Rz0puLXTOLwGi8lDUj3syxKg1Fbq lzxga+WVw8CbgZMmYOClbh413d98Bcn8I2Yd5HAJWwyS7hNeK+2jqSEop7mQ4bgC8leaaZ MxBdcTHzfljpLHHVSaCdJ8IaxxD1U0cXwA1iVxkKKKCOHwtVDL9pxE/aZFVSIOkXh6Pbla 5MaMsUAd9JqPd1cyqsLhXGmUSi/EFmITTUnwN9zWc+ZKvs4Bgx0km75AuxZ43Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754513021; a=rsa-sha256; cv=none; b=EfdNgW+CAHqPyDVgpKzmfQ5H2HSm+B3pZ7EG/iAFCia3A12Q5wWgWwE+eedttZC852EzUY H8YfY99U/TCIvRdGEy43aBd98To4ehs8xNLIlIqMhNsuXt9rxQyXUedx+kjWdfZE3qwSDQ vDxVqzjJROroR6VKqoOV+hMsVt89Joi2yG7wvt8Lp+Y5Fse9wf/MqgFQ80hb0dykhAw0JM E4lupGRxXIxCXRQKd8rsQHRDmLp5BE0OKf2fMto3bRLh+tFComzxN5xZPkgN59rDYoPXhV bnpZ+OdklxMzmwyqb33Xn8f6yyAlmDcqnHXI9wVWv0dVp3qsLdIHGGPaTrdqRA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by2M14Z5vzdCH; Wed, 06 Aug 2025 20:43:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576KhfOB033660; Wed, 6 Aug 2025 20:43:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KhfVI033657; Wed, 6 Aug 2025 20:43:41 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:43:41 GMT Message-Id: <202508062043.576KhfVI033657@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: cc5276aed0c7 - main - libutil: Fix login_setcryptfmt() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: cc5276aed0c779dedfe2603c746620ed9f3e97d2 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=cc5276aed0c779dedfe2603c746620ed9f3e97d2 commit cc5276aed0c779dedfe2603c746620ed9f3e97d2 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 20:34:26 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 20:43:13 +0000 libutil: Fix login_setcryptfmt() Our dummy crypt_set_format() needs to be exported, otherwise it will be resolved at link time instead of load time, preventing the real crypt_set_format() in libcrypt from replacing it when present. PR: 288677 Fixes: 0c381b7f0570 Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D51746 --- lib/libutil/Symbol.map | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/libutil/Symbol.map b/lib/libutil/Symbol.map index 6b8a1ec099bf..2b28456f4406 100644 --- a/lib/libutil/Symbol.map +++ b/lib/libutil/Symbol.map @@ -120,6 +120,14 @@ FBSD_1.8 { uu_lock; uu_lockerr; uu_unlock; + + /* + * login_setcryptfmt() uses crypt_set_format() from libcrypt. To + * avoid forcing a hard dependency on libcrypt, we provide a weak + * stub. Applications that use login_setcryptfmt() should link + * with libcrypt, whose crypt_set_format() will override the stub. + */ + crypt_set_format; }; FBSDprivate_1.0 { From nobody Wed Aug 6 20:43:42 2025 X-Original-To: dev-commits-src-main@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 4by2M32S3bz64C73; Wed, 06 Aug 2025 20:43:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by2M25YwQz48tj; Wed, 06 Aug 2025 20:43:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513022; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dgVoLFhIvUU9fB1ofnF2Z7PX1GPv6kssrU3NM5wu8JQ=; b=KkCrioMW2+/xoo3jd8SsrD5+RRXicOhQAq8wGF5wojXH+oLQSBXw4LRg0x/PDgz5hHL5tB V7Sda9PznwCJdirj2KF6gOkCS5sgdszVqMuOXS2+lV2bBqCRRhZ5eDK1RqVpDvM/J/G8gN FEPrp3o/KyYp8jQHoGrFjTROeaRFWZdgWtes8ESdlz9RrNmI/RK5WF5cS0DvrIJ+l2fZv7 35Mv07TZMCIbkseyVQu77qHom00iL/rExgWVITEiLNktTlIdQaFwIaRB7tgWV5uQ1FAsR9 zxuwB/T0Etl7AK9FqFnYxSmi9TVhKz1sA/VHFs+trSNl/sIskkPQUg16gUL6eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754513022; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dgVoLFhIvUU9fB1ofnF2Z7PX1GPv6kssrU3NM5wu8JQ=; b=hQie8LiZEYvtebCbsEyUgnN2yHXng12GCF8n6Z6B5EgX9JBuU6EkovZ5hVBOnnerJ0upUW Mjaz+s9an90TTjQTzVgK43GQoTGzLBuRjjuFJuxcvXMPv+bOS+UeEc7C68r4a6m5idYtpR 9jbuQWhKTRvUdJBy9fsQtnNvzrS5vzTByXsP6zD+zag6eDW7ovP8U4Cn1IVUrxRCJmiEB3 NMveNmwNrLPfFKNJAiBbQ4MozSpNPbyyPZPsXgN7rmBodSkVMehwRR3+vsufqpsCJQC/lF MxarYFOp7tKTn6jtmFiQau5Ko7dYbvpFJ391phH73F98n70/29b85+3O6qfnJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754513022; a=rsa-sha256; cv=none; b=vMzPAqjNr1zWr2GYrxRZJeJjhlGYeAls6+n4JoaQIYWtPtKa6ypzbE0DbJ294Zwb0fGs12 5PL+njDjZ5222BYcU1FCweX3oNZnULHmUTQ/Px5iCnM+hb2G/QG6c6kYYW+z2GO6HRJ48h JUtHsn5zmTVKuKKUpJBN6uVFo9BZ36d42PwsUO/nHZFAdIJ2S1lzvb1VthYA+YTREC949J Mi4o5+Elauu2fkmANZ0pyXFlfzdh7zf91JTNLf8GvAdH85hx+VKYJVTyOftMhYZvCS4yNN LFbc6wogGrGA/2gGbUi7hUkvpwX1PaCuwOHN08jUMKyTBhyqYxWbwW1sV/Cpgg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by2M259rXzd28; Wed, 06 Aug 2025 20:43:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576Khg0h033696; Wed, 6 Aug 2025 20:43:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576KhgTY033693; Wed, 6 Aug 2025 20:43:42 GMT (envelope-from git) Date: Wed, 6 Aug 2025 20:43:42 GMT Message-Id: <202508062043.576KhgTY033693@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: d81c64d165d5 - main - tail: Fix -b, -c, -n options List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: d81c64d165d52f8ebcafadda5012d3bb2bdd25a9 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=d81c64d165d52f8ebcafadda5012d3bb2bdd25a9 commit d81c64d165d52f8ebcafadda5012d3bb2bdd25a9 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-06 20:34:34 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-06 20:43:13 +0000 tail: Fix -b, -c, -n options Switching from strtoll() to expand_number() was improper at the time as it only accepted positive numbers. Now that it also accepts negative numbers, the -b option is still broken because the same commit that switched to expand_number() also dropped the multiplication by units. Fixes: 643ac419fafb Reviewed by: delphij Differential Revision: https://reviews.freebsd.org/D51757 --- usr.bin/tail/tail.c | 12 ++++++----- usr.bin/tail/tests/tail_test.sh | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/usr.bin/tail/tail.c b/usr.bin/tail/tail.c index fc60a82287df..a92eee3881b4 100644 --- a/usr.bin/tail/tail.c +++ b/usr.bin/tail/tail.c @@ -95,15 +95,17 @@ main(int argc, char *argv[]) * -r is the entire file, not 10 lines. */ #define ARG(units, forward, backward) { \ + int64_t num; \ if (style) \ usage(); \ - if (expand_number(optarg, &off)) \ + if (expand_number(optarg, &num)) \ err(1, "illegal offset -- %s", optarg); \ - if (off > INT64_MAX / units || off < INT64_MIN / units ) \ + if (num > INT64_MAX / units || num < INT64_MIN / units) \ errx(1, "illegal offset -- %s", optarg); \ - switch(optarg[0]) { \ + off = num * units; \ + switch (optarg[0]) { \ case '+': \ - if (off) \ + if (off != 0) \ off -= (units); \ style = (forward); \ break; \ @@ -121,7 +123,7 @@ main(int argc, char *argv[]) off = 0; while ((ch = getopt_long(argc, argv, "+Fb:c:fn:qrv", long_opts, NULL)) != -1) - switch(ch) { + switch (ch) { case 'F': /* -F is superset of (and implies) -f */ Fflag = fflag = 1; break; diff --git a/usr.bin/tail/tests/tail_test.sh b/usr.bin/tail/tests/tail_test.sh index 9c941f8a2c2f..74d6908f7568 100755 --- a/usr.bin/tail/tests/tail_test.sh +++ b/usr.bin/tail/tests/tail_test.sh @@ -423,6 +423,51 @@ no_lf_at_eof_body() atf_check -o inline:"a\nb\nc" tail -4 infile } +atf_test_case tail_b +tail_b_head() +{ + atf_set "descr" "Test -b option" +} +tail_b_body() +{ + (jot -b a 256 ; jot -b b 256 ; jot -b c 256) >infile + (jot -b b 256 ; jot -b c 256) >outfile + # infile is 3 blocks long, outfile contains the last two + atf_check -o file:outfile tail -b +2 infile # start at the 2nd block + atf_check -o file:outfile tail -b -2 infile # 2 blocks from the end + atf_check -o file:outfile tail -b 2 infile # 2 blocks from the end +} + +atf_test_case tail_c +tail_c_head() +{ + atf_set "descr" "Test -c option" +} +tail_c_body() +{ + (jot -b a 256 ; jot -b b 256 ; jot -b c 256) >infile + (jot -b b 256 ; jot -b c 256) >outfile + # infile is 1536 bytes long, outfile contains the last 1024 + atf_check -o file:outfile tail -c +513 infile # start at the 513th byte + atf_check -o file:outfile tail -c -1024 infile # 1024 bytes from the end + atf_check -o file:outfile tail -c 1024 infile # 1024 bytes from the end +} + +atf_test_case tail_n +tail_n_head() +{ + atf_set "descr" "Test -n option" +} +tail_n_body() +{ + (jot -b a 256 ; jot -b b 256 ; jot -b c 256) >infile + (jot -b b 256 ; jot -b c 256) >outfile + # infile is 768 lines long, outfile contains the last 512 + atf_check -o file:outfile tail -n +257 infile # start at the 257th line + atf_check -o file:outfile tail -n -512 infile # 512 lines from the end + atf_check -o file:outfile tail -n 512 infile # 512 lines from the end +} + atf_init_test_cases() { atf_add_test_case empty_r @@ -448,4 +493,7 @@ atf_init_test_cases() atf_add_test_case verbose_header atf_add_test_case si_number atf_add_test_case no_lf_at_eof + atf_add_test_case tail_b + atf_add_test_case tail_c + atf_add_test_case tail_n } From nobody Wed Aug 6 21:26:56 2025 X-Original-To: dev-commits-src-main@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 4by3Jw2yQCz64DxH; Wed, 06 Aug 2025 21:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by3Jw2989z3HdT; Wed, 06 Aug 2025 21:26:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754515616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9LXm6AiGSh93QGeQOrKvO3OcnRoSxybv45a4HOvnOwE=; b=xT47+cN/cNS8xeHDMVTdxQ4Ws+fzZSn0Qc1eU5i2d1CYrj4woqj2W0RFBnXCLkpwAuAFSu 3RDWLaBXRt+0tsK9ZlMNePBK08l3IxSBeQeWJ3kc7P6iaVImGt9imOu147gv4VYuAon6wA gO1w0q+R8vgedaQsCzqHC754fmIXdf1HJkAORQ0gaPJcmZFhgpm5F7G+1R0K1LFBu1m5gY 5sELr3EeEf8Pa3rGCFs3/CBOBRU3BRQTu9UJH5Wa4Ru29+duKXe1nhmWnUJRq6ovNgXYXd BDT4k8NTDS9HdAgv1QQPQCgw0saguH5Rklhmuvsrv1D1DudKJhdjadRs89qXvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754515616; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9LXm6AiGSh93QGeQOrKvO3OcnRoSxybv45a4HOvnOwE=; b=uKOzUPCGTH/HSjf0s34zjcpSxKDTs0hgNQdogRdIYpXgaksnWISekW5iajKk2eSK11ernM 3kVa7/sPWy6LKyrqXbdKnqNQWkTES8FUa6Mf9sP3zjlFKD2TT8A9qxfLOvyTYKELKgiNUq LpB/zM8uQU2sIP0a6sIsfo15vdFBUyakB1xgFkd9VQQi9zqZ6TEal7HyN+G8GExIgHAOkg gdHS35OoVL41FJw9iBzGwDTHPZ9xbt9kxMljKWkqjQqDgYBsZ1o4tGXBt/57OL868JtJTN Ds+4JLwGdil0hNM0+sRCpG07NtGbnmyk57+/XIT+305AcsPW9CYp1w1R32z4IA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754515616; a=rsa-sha256; cv=none; b=dT7KRPYXPSPkhq6XRJeDwXt4y8z3fB64p7pL9To4RW0WNLpMr1ieqp4N3VHANKBfD+iKFN ZsQvHycJaNpeLzeDtwu9USYB2goCCZb6N8VnbsRUA5FW4jw81c8XxB8eL7iGqgu7el9mEK wBAeAeU4vI5bkTPRS4zcizrbD2byDLGzWVWb3bdVKHn67a4yJlvZIY0oLo6ZD1iNH2l98d EICo5VXiwOuOJ1ZKvhtbrq8pwGAPAClrE4uK8LIJK6VUCSMPtHOIJ09Z7LOdr27fnHejvM H+WIuVT4I/UGjY+LDpMEoiNIF8kE6cmWpMDS5tDzytK5q3Qb+n2F0B6Is2+cww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by3Jw1ckPzdZV; Wed, 06 Aug 2025 21:26:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576LQukU011112; Wed, 6 Aug 2025 21:26:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576LQu5M011109; Wed, 6 Aug 2025 21:26:56 GMT (envelope-from git) Date: Wed, 6 Aug 2025 21:26:56 GMT Message-Id: <202508062126.576LQu5M011109@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 7556b55f0d67 - main - time: Handle kern_clock_gettime() failures in kern_clock_nanosleep() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7556b55f0d67b7fc353ca509dee120dac18fc061 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=7556b55f0d67b7fc353ca509dee120dac18fc061 commit 7556b55f0d67b7fc353ca509dee120dac18fc061 Author: Mark Johnston AuthorDate: 2025-08-05 16:15:16 +0000 Commit: Mark Johnston CommitDate: 2025-08-06 21:24:36 +0000 time: Handle kern_clock_gettime() failures in kern_clock_nanosleep() kern_clock_gettime(CLOCK_TAI) can fail with EINVAL. Reported by: syzbot+e17e46b1f0b65027b005@syzkaller.appspotmail.com Reviewed by: imp, kib Fixes: 7b7ba7857ce8 ("Implement CLOCK_TAI") Differential Revision: https://reviews.freebsd.org/D51744 --- sys/kern/kern_time.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 9830e5093a3a..2a6f0989f6aa 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -571,7 +571,10 @@ kern_clock_nanosleep(struct thread *td, clockid_t clock_id, int flags, td->td_rtcgen = atomic_load_acq_int(&rtc_generation); error = kern_clock_gettime(td, clock_id, &now); - KASSERT(error == 0, ("kern_clock_gettime: %d", error)); + if (error != 0) { + td->td_rtcgen = 0; + return (error); + } timespecsub(&ts, &now, &ts); } if (ts.tv_sec < 0 || (ts.tv_sec == 0 && ts.tv_nsec == 0)) { From nobody Wed Aug 6 21:50:17 2025 X-Original-To: dev-commits-src-main@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 4by3qs6vWJz64GLp; Wed, 06 Aug 2025 21:50: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by3qs5ffpz3KV2; Wed, 06 Aug 2025 21:50:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754517017; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4WZnIR3kfoJgrju4iLjf9DvvRjEef13SoTRMfknWtX0=; b=I0GMmM9j/zj/GMpy1sHkJ+0tjO8Ye2BrB8J0buKaKxoAf7azH20/ejkq7f2eLUPhgRd0KW Rq+Nmm+j369+55c6ZGEisQq/I/FetX0Eg01xvK7QBpLmOhVVSKtxsPOeG6sRmCiR+ysfPN Mdtvdu67QeaoeFeX7jgFJgJasQxl943Ufzd0LgfGx5O5nWvfEo0NhdfVplJryP/5d34pxn NIo2GybAgWTG+Xt4KYp5tKqXZVGNaDk78HRXGYezV2zDEiPdGCBxGmvyK+2t2gt0vtaf/L 3UTVxBfxu+yMHtSDqGJnfYpTNz0Vw1yFJ0tK+qRHu92Mg59shOQeCAOiUBnzOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754517017; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4WZnIR3kfoJgrju4iLjf9DvvRjEef13SoTRMfknWtX0=; b=jDD45T+BVwODWViTkytKxI2a6KaJvIz4sajdwDlZJYP/7a6E7hW/BKAD/rhFhvjjElVQ/1 SGbP2QahgYcjdpHSNcEkjYTk31DvaruooGeXyhGBhHgHhZzdFcNuYtMYqqCPreOKdlCdVE +URjcWAaLZRmV+OM3vSrTWNZV4r5BqYkAEuVlYpBJdBoFEuzgHA1gD5tCwN4xs8EAtU6j8 AL7M2ZbbpfMd2cV7qtoGSSZ2UuhVf0/iqhwblNrD/N19WTFiYaQQ83ufEMkteIfkJke0o9 9O4DN2Cuk8QoWEwS9jk0KNRnSIOZS/pI6SEAvP/v11bVodDvFKxcdlSDsHhjyQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754517017; a=rsa-sha256; cv=none; b=E3RNZNVFJlxeXsmiul1O30IlX0goehtA5/szrDwmSw9hQjACqbiLhvWwEdDoFtA4vGng2h TUx0EpX9OjlBw4PrUtIcfXhIWRYEhVVLTHNAK5hAdPqTSVHeMTiFyHg1n+MrqGda9Nc5OT PoX61Sb+IqizvrcSpWT6pm9Th5hSGDWt+x1neVzURqbjoRQH6idJcHOw1LXlSh0Q/qr3wu 7P5vlRKqiX+WY8LQPFKWqpgsjEY8WmZtdZ1J1Y9T8NiI9DKEsbvqy5VGeGiT1dRD5pFymt gHpqGaJ8XYFSqggCge9sMO80JQwY7IMoZ2KKD09zTsyDxaDmUf3RgotpMhTtSA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by3qs4y97zfhB; Wed, 06 Aug 2025 21:50:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576LoHO6057502; Wed, 6 Aug 2025 21:50:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576LoHmC057491; Wed, 6 Aug 2025 21:50:17 GMT (envelope-from git) Date: Wed, 6 Aug 2025 21:50:17 GMT Message-Id: <202508062150.576LoHmC057491@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Richard Scheffenegger Subject: git: 65d4a8339984 - main - tcp: ensure SACK rxmit never ends up left of its hole List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 65d4a83399843cb4c6dd44061599390843c162db Auto-Submitted: auto-generated The branch main has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=65d4a83399843cb4c6dd44061599390843c162db commit 65d4a83399843cb4c6dd44061599390843c162db Author: Richard Scheffenegger AuthorDate: 2025-08-06 20:25:30 +0000 Commit: Richard Scheffenegger CommitDate: 2025-08-06 21:47:05 +0000 tcp: ensure SACK rxmit never ends up left of its hole When a RTO happens during SACK loss recovery, snd_recover can possibly pulled left. With Lost Retransmission Detection (LRD) this can lead to rxmit of a hole to end up pointing to the left of the hole, which is unexpected and leads to complications. Reviewed By: tuexen, #transport Sponsored by: NetApp, Inc. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D51725 --- sys/netinet/tcp_output.c | 2 +- sys/netinet/tcp_sack.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index bc5b42ee6f2c..2dfb7faf56e3 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1250,7 +1250,7 @@ send: * fack acks recoverypoint. */ if ((tp->t_flags & TF_LRD) && SEQ_GEQ(p->rxmit, p->end)) - p->rxmit = tp->snd_recover; + p->rxmit = SEQ_MAX(p->rxmit, tp->snd_recover); tp->sackhint.sack_bytes_rexmit += len; } if (IN_RECOVERY(tp->t_flags)) { diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index 66275cb04bdd..b6c55fac50b3 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -816,7 +816,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) cur->end = sblkp->start; cur->rxmit = SEQ_MIN(cur->rxmit, cur->end); if ((tp->t_flags & TF_LRD) && SEQ_GEQ(cur->rxmit, cur->end)) - cur->rxmit = tp->snd_recover; + cur->rxmit = SEQ_MAX(cur->rxmit, tp->snd_recover); } else { /* * ACKs some data in middle of a hole; need @@ -843,7 +843,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) cur->rxmit = SEQ_MIN(cur->rxmit, cur->end); if ((tp->t_flags & TF_LRD) && SEQ_GEQ(cur->rxmit, cur->end)) - cur->rxmit = tp->snd_recover; + cur->rxmit = SEQ_MAX(cur->rxmit, tp->snd_recover); delivered_data += (sblkp->end - sblkp->start); } } From nobody Wed Aug 6 21:57:29 2025 X-Original-To: dev-commits-src-main@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 4by4096JhLz64Glk; Wed, 06 Aug 2025 21: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by4095ZPrz3Px3; Wed, 06 Aug 2025 21: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=1754517449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=helLT/9IZkYMzzBlZ9Z+lKrR9Ns5EbgOM5UFE+GxC9E=; b=Bey8rb1FTdsARtQ/IGn+4FsS+Ysl/2jUvdpzwZE5uuLtwMcaoBuZ3agKkcYnzEVnzFs8Pv dpn4gndqJpd2zbvQP5NZEAS7QYi4LB4uXFx0UPCZy7b4XwEXGtVAqvQFOQ+iGQjGJHT6ue Qm/EXCrSqNalhRMg2F1BlHwG6oB3uYIFjQhJLdvQgM25uhAQVPqAQRxvwnfv5zQp3lihpg vdtqwWfoypuKUubyqD7KjhVgEx+7+HjIHpT3nmi951VrS5ZnyC1nxmAmSY4/rUliKBr8Ac NTdoUFjC87ig7ZabOVbiwx3VIIXJAfo2HpyiV6pANfaYKj86UxRfIXfY0TGQcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754517449; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=helLT/9IZkYMzzBlZ9Z+lKrR9Ns5EbgOM5UFE+GxC9E=; b=trMVKAgm7RFHgjEBDmCtalx6gl44RKMGkYu5+P60bP6JUMwe+OMHbf+PMp6T5B72dst1e1 Cd/+DA5q1tYW1UysK4Hgt6118uX5qvVQ2YpHG2TNUuPiup/DQQXPniTnijgGLkI57KAsOL bFIP2WMNJf3XTSiuZSVCaTPQGTXWk+RUemfJDPrDvh04mC8F9Ko0GCC/5egTua5w9iRN3w Oth3OOUKi8dGEcOD8d5zYOdPnp6PWjvpOgmOq0VxicEy+3HBeuXr867d1wESoZYZPKTKno uBRYN0EYqPjQZe1XNzsYPkUlPI06utVI4xbw2YCDEeYwbX0zqq6XqQOgo83whQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754517449; a=rsa-sha256; cv=none; b=W5w4H126+XEfymy9+lLprbyh2V7713DoNrsR8QAG3kxzGf+ZsHwjE333ua/9T99pEtX7gM 3PknHKd9V5MCtlwZ07xlJZBo6TJrcIjN4KppMWdy4SN2v7jKz8Q1ETbOYWnIKrMqYeeQf7 WQZa9MuHubAQQBPD8UP7nYykZyIREYmYYm6eKKji0Ciik9j86YL+A//fvTHPqVsWgpnZ4A 6T5QrC5gK2dTi7yO1LDf+e17sNMmlEcHlXySU7VR74RpoBdiIEDi4OmxLc9eM8oCtNd7hD 5NIjom34H7VEhEkMNwRdyNz8/8TPCftj6bPTf1cUeqrX/f6xi1mIHF1CdAwUpA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by409416hzfmB; Wed, 06 Aug 2025 21:57:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576LvT9f067104; Wed, 6 Aug 2025 21:57:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576LvTWh067101; Wed, 6 Aug 2025 21:57:29 GMT (envelope-from git) Date: Wed, 6 Aug 2025 21:57:29 GMT Message-Id: <202508062157.576LvTWh067101@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Stefan =?utf-8?Q?E=C3=9Fer?= Subject: git: 5c13952f167d - main - Revert "sbin/newfs_msdos: add support for exFAT file systems" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5c13952f167dc80aae3cfe879ca33f76a3da610e Auto-Submitted: auto-generated The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=5c13952f167dc80aae3cfe879ca33f76a3da610e commit 5c13952f167dc80aae3cfe879ca33f76a3da610e Author: Stefan Eßer AuthorDate: 2025-08-06 21:53:45 +0000 Commit: Stefan Eßer CommitDate: 2025-08-06 21:57:05 +0000 Revert "sbin/newfs_msdos: add support for exFAT file systems" This reverts commit 024f676b399fc8acee7288c543d32c581328833c. --- sbin/newfs_msdos/Makefile | 7 - sbin/newfs_msdos/mkfs_msdos.c | 1279 ++-------------------------------------- sbin/newfs_msdos/mkfs_msdos.h | 3 +- sbin/newfs_msdos/newfs_msdos.8 | 44 +- sbin/newfs_msdos/newfs_msdos.c | 36 +- 5 files changed, 64 insertions(+), 1305 deletions(-) diff --git a/sbin/newfs_msdos/Makefile b/sbin/newfs_msdos/Makefile index 74c4c90cb41b..bd5b3486b6b6 100644 --- a/sbin/newfs_msdos/Makefile +++ b/sbin/newfs_msdos/Makefile @@ -5,13 +5,6 @@ PROG= newfs_msdos MAN= newfs_msdos.8 SRCS= newfs_msdos.c mkfs_msdos.c -LINKS= ${BINDIR}/newfs_msdos ${BINDIR}/newfs_exfat -MLINKS= newfs_msdos.8 newfs_exfat.8 - -.if ${MK_ICONV} == "yes" -CFLAGS+=-DWITH_ICONV -.endif - # XXX - this is verboten .if ${MACHINE_CPUARCH} == "arm" WARNS?= 3 diff --git a/sbin/newfs_msdos/mkfs_msdos.c b/sbin/newfs_msdos/mkfs_msdos.c index 70ec3b8f345c..dcc2bb982efc 100644 --- a/sbin/newfs_msdos/mkfs_msdos.c +++ b/sbin/newfs_msdos/mkfs_msdos.c @@ -1,6 +1,5 @@ /* * Copyright (c) 1998 Robert Nordier - * Copyright (c) 2025 Stefan Eßer * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,7 +35,6 @@ #include #include #endif -#include #include #include #include @@ -46,14 +44,9 @@ #include #include #include -#ifdef WITH_ICONV -#include -#include -#endif #include #include #include -#include #include #include #include @@ -68,14 +61,11 @@ #define DOSMAGIC 0xaa55 /* DOS magic number */ #define MINBPS 512 /* minimum bytes per sector */ -#define MAXBPS 4096 /* maximum bytes per sector */ +#define MAXBPS 4096 /* maximum bytes per sector */ #define MAXSPC 128 /* maximum sectors per cluster */ -#define MAXBPC_EX (1<<25) /* maximum sectors per cluster exFAT */ #define MAXNFT 16 /* maximum number of FATs */ -#define MAXNFT_EX 2 /* maximum number of FATs exFAT */ #define DEFBLK 4096 /* default block size */ #define DEFBLK16 2048 /* default block size FAT16 */ -#define DEFBLK_EX (128*1024) /* default block size exFAT */ #define DEFRDE 512 /* default root directory entries */ #define RESFTE 2 /* reserved FAT entries */ #define MINCLS12 1U /* minimum FAT12 clusters */ @@ -88,25 +78,23 @@ #define mincls(fat) ((fat) == 12 ? MINCLS12 : \ (fat) == 16 ? MINCLS16 : \ MINCLS32) + #define maxcls(fat) ((fat) == 12 ? MAXCLS12 : \ (fat) == 16 ? MAXCLS16 : \ MAXCLS32) -#define BOOTSEC 0 /* boot sector offset */ -#define EXTBOOTSEC 1 /* extended boot sector offset */ -#define EXTBOOTSECCNT 8 /* number of extended boot sectors */ -#define OEMPARMSEC 9 /* OEM parameter sector offset */ -#define RESERVEDSEC 10 /* reserved sector */ -#define BOOTCKSUMSEC 11 /* checksum sector */ -#define BACKUPSECOFS 12 /* backup boot sector region offset */ +#define mk1(p, x) \ + (p) = (u_int8_t)(x) -#define EX_DE_ALLOCMAP 0x81 /* cluster allocation bitmap */ -#define EX_DE_UPCASETABLE 0x82 /* UTF-16 upper case translation */ -#define EX_DE_LABEL 0x83 /* volume label */ +#define mk2(p, x) \ + (p)[0] = (u_int8_t)(x), \ + (p)[1] = (u_int8_t)((x) >> 010) -#define mk1(p, x) (p) = (u_int8_t)(x) -#define mk2(p, x) le16enc(p, x) -#define mk4(p, x) le32enc(p, x) +#define mk4(p, x) \ + (p)[0] = (u_int8_t)(x), \ + (p)[1] = (u_int8_t)((x) >> 010), \ + (p)[2] = (u_int8_t)((x) >> 020), \ + (p)[3] = (u_int8_t)((x) >> 030) struct bs { u_int8_t bsJump[3]; /* bootstrap entry point */ @@ -147,30 +135,6 @@ struct bsx { u_int8_t exFileSysType[8]; /* file system type */ } __packed; -struct bsexfat { - u_int8_t bsJump[3]; /* bootstrap entry point */ - u_int8_t bsFileSystemName[8]; /* OEM name and version "EXFAT " */ - u_int8_t bsUnused[53]; /* unused DOS parameter area */ - u_int8_t bsPartitionOffset[8]; /* start of partition on device */ - u_int8_t bsVolumeLength[8]; /* number of sectors in volume */ - u_int8_t bsFatOffset[4]; /* phys. sector of start of FAT */ - u_int8_t bsFatLength[4]; /* number of sectors per FAT */ - u_int8_t bsClusterHeapOffset[4]; /* phys. sector of cluster #2 */ - u_int8_t bsClusterCount[4]; /* number of clusters */ - u_int8_t bsRootClust[4]; /* start cluster for root directory */ - u_int8_t bsVolSerialNumber[4]; /* volume serial number */ - u_int8_t bsFSVers[2]; /* ExFat file system revision */ - u_int8_t bsVolumeFlags[2]; /* volume status, e.g. dirty */ - u_int8_t bsBytesPerSecShift; /* log2 of bytes per sector */ - u_int8_t bsSecPerClustShift; /* log2 of sectors per cluster */ - u_int8_t bsFATs; /* number of FATs */ - u_int8_t bsDriveSelect; /* extended INT 13h drive number */ - u_int8_t bsPercentInUse; /* percentage of clusters in use */ - u_int8_t bsReserved[7]; /* reserved for future expansion */ - u_int8_t bsBootCode[390]; /* pad so structure is 512b */ - u_int8_t bsBootSectSig[2]; /* DOSMAGIC */ -} __packed; - struct de { u_int8_t deName[11]; /* name and extension */ u_int8_t deAttributes; /* attributes */ @@ -193,57 +157,14 @@ struct bpb { u_int bpbSecPerTrack; /* sectors per track */ u_int bpbHeads; /* drive heads */ u_int bpbHiddenSecs; /* hidden sectors */ - u_quad_t bpbHugeSectors; /* big total sectors */ + u_int bpbHugeSectors; /* big total sectors */ u_int bpbBigFATsecs; /* big sectors per FAT */ u_int bpbRootClust; /* root directory start cluster */ u_int bpbFSInfo; /* file system info sector */ u_int bpbBackup; /* backup boot sector */ - u_int bpbUsedBitmapClust1; /* used block bitmap cluster 1 */ - u_int bpbUsedBitmapClust2; /* used block bitmap cluster 2 */ - u_int bpbUpcaseTableClust; /* upcase table cluster */ - u_int bpbClusterHeapOffset; /* start of EXFAT data area */ - u_int bpbBPSshift; /* bytes per sector shift value */ - u_int bpbSPCshift; /* sectors per cluster shift value */ - u_int bpbClusterCount; /* number of clusters */ - u_int bpbUpcaseTableSectors; /* upcase table sectors */ - u_int bpbUsedBitmapSectors; /* used block bitmap sectors */ }; -/* - * Structure of an EXFAT allocation bitmap (cluster heap) entry. - */ -struct exfatdir_bitmap { - uint8_t type; /* entry type == 0x81 */ - uint8_t flags; /* secondary flags */ -#define EX_FLAG_BITMAP2 0x01 /* entry is pointing to 2nd bitmap */ - uint8_t reserved[18]; - uint8_t firstcluster[4];/* first bitmap cluster */ - uint8_t datalength[8]; /* size of bitmap in bytes */ -}; - -/* - * Structure of an EXFAT UTF-16 upper case translation table entry. - */ -struct exfatdir_upcasetable { - uint8_t type; /* entry type == 0x82 */ - uint8_t reserved1[3]; - uint8_t chksum[4]; /* checksum of compressed table */ - uint8_t reserved2[12]; - uint8_t firstcluster[4]; /* first bitmap cluster */ - uint8_t datalength[8]; /* size of bitmap in bytes */ -}; - -/* - * Structure of an EXFAT volume label entry. - */ -struct exfatdir_label { - uint8_t type; /* entry type == 0x83 */ - uint8_t namelength; /* number of UTF-16 characters */ - uint8_t label[22]; /* up to 11 UTF-16 characters */ - uint8_t reserved[8]; -}; - -#define BPBGAP 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +#define BPBGAP 0, 0, 0, 0, 0, 0 static struct { const char *name; @@ -293,745 +214,6 @@ static const u_int8_t bootcode[] = { 0 }; -/* - * Up-case table recommended in section 7.2.5.1 of the exFAT File System - * Specification. - */ -static u_int compr_upcase_table_cksum = 0xE619D30D; - -static uint8_t compr_upcase_table[] = { - 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, - 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, - 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, - 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, - 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, - 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, - 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, - 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, - 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, - 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, - 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, - 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, - 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, - 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, - 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, - 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, - 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, - 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, - 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, - 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, - 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, - 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, - 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, - 0x60, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, - 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, - 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, - 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, - 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, - 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, - 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x7B, 0x00, - 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, - 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, - 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, - 0x88, 0x00, 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, - 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, - 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, - 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, - 0x98, 0x00, 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, - 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, - 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, - 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, - 0xA8, 0x00, 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, - 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, - 0xB0, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, - 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, - 0xB8, 0x00, 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, - 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, - 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, - 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, - 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, - 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, - 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, - 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00, - 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, - 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0xDF, 0x00, - 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, - 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, - 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, - 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, - 0xD0, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, - 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xF7, 0x00, - 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, - 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0x78, 0x01, - 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, - 0x04, 0x01, 0x04, 0x01, 0x06, 0x01, 0x06, 0x01, - 0x08, 0x01, 0x08, 0x01, 0x0A, 0x01, 0x0A, 0x01, - 0x0C, 0x01, 0x0C, 0x01, 0x0E, 0x01, 0x0E, 0x01, - 0x10, 0x01, 0x10, 0x01, 0x12, 0x01, 0x12, 0x01, - 0x14, 0x01, 0x14, 0x01, 0x16, 0x01, 0x16, 0x01, - 0x18, 0x01, 0x18, 0x01, 0x1A, 0x01, 0x1A, 0x01, - 0x1C, 0x01, 0x1C, 0x01, 0x1E, 0x01, 0x1E, 0x01, - 0x20, 0x01, 0x20, 0x01, 0x22, 0x01, 0x22, 0x01, - 0x24, 0x01, 0x24, 0x01, 0x26, 0x01, 0x26, 0x01, - 0x28, 0x01, 0x28, 0x01, 0x2A, 0x01, 0x2A, 0x01, - 0x2C, 0x01, 0x2C, 0x01, 0x2E, 0x01, 0x2E, 0x01, - 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01, - 0x34, 0x01, 0x34, 0x01, 0x36, 0x01, 0x36, 0x01, - 0x38, 0x01, 0x39, 0x01, 0x39, 0x01, 0x3B, 0x01, - 0x3B, 0x01, 0x3D, 0x01, 0x3D, 0x01, 0x3F, 0x01, - 0x3F, 0x01, 0x41, 0x01, 0x41, 0x01, 0x43, 0x01, - 0x43, 0x01, 0x45, 0x01, 0x45, 0x01, 0x47, 0x01, - 0x47, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4A, 0x01, - 0x4C, 0x01, 0x4C, 0x01, 0x4E, 0x01, 0x4E, 0x01, - 0x50, 0x01, 0x50, 0x01, 0x52, 0x01, 0x52, 0x01, - 0x54, 0x01, 0x54, 0x01, 0x56, 0x01, 0x56, 0x01, - 0x58, 0x01, 0x58, 0x01, 0x5A, 0x01, 0x5A, 0x01, - 0x5C, 0x01, 0x5C, 0x01, 0x5E, 0x01, 0x5E, 0x01, - 0x60, 0x01, 0x60, 0x01, 0x62, 0x01, 0x62, 0x01, - 0x64, 0x01, 0x64, 0x01, 0x66, 0x01, 0x66, 0x01, - 0x68, 0x01, 0x68, 0x01, 0x6A, 0x01, 0x6A, 0x01, - 0x6C, 0x01, 0x6C, 0x01, 0x6E, 0x01, 0x6E, 0x01, - 0x70, 0x01, 0x70, 0x01, 0x72, 0x01, 0x72, 0x01, - 0x74, 0x01, 0x74, 0x01, 0x76, 0x01, 0x76, 0x01, - 0x78, 0x01, 0x79, 0x01, 0x79, 0x01, 0x7B, 0x01, - 0x7B, 0x01, 0x7D, 0x01, 0x7D, 0x01, 0x7F, 0x01, - 0x43, 0x02, 0x81, 0x01, 0x82, 0x01, 0x82, 0x01, - 0x84, 0x01, 0x84, 0x01, 0x86, 0x01, 0x87, 0x01, - 0x87, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01, - 0x8B, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8F, 0x01, - 0x90, 0x01, 0x91, 0x01, 0x91, 0x01, 0x93, 0x01, - 0x94, 0x01, 0xF6, 0x01, 0x96, 0x01, 0x97, 0x01, - 0x98, 0x01, 0x98, 0x01, 0x3D, 0x02, 0x9B, 0x01, - 0x9C, 0x01, 0x9D, 0x01, 0x20, 0x02, 0x9F, 0x01, - 0xA0, 0x01, 0xA0, 0x01, 0xA2, 0x01, 0xA2, 0x01, - 0xA4, 0x01, 0xA4, 0x01, 0xA6, 0x01, 0xA7, 0x01, - 0xA7, 0x01, 0xA9, 0x01, 0xAA, 0x01, 0xAB, 0x01, - 0xAC, 0x01, 0xAC, 0x01, 0xAE, 0x01, 0xAF, 0x01, - 0xAF, 0x01, 0xB1, 0x01, 0xB2, 0x01, 0xB3, 0x01, - 0xB3, 0x01, 0xB5, 0x01, 0xB5, 0x01, 0xB7, 0x01, - 0xB8, 0x01, 0xB8, 0x01, 0xBA, 0x01, 0xBB, 0x01, - 0xBC, 0x01, 0xBC, 0x01, 0xBE, 0x01, 0xF7, 0x01, - 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01, - 0xC4, 0x01, 0xC5, 0x01, 0xC4, 0x01, 0xC7, 0x01, - 0xC8, 0x01, 0xC7, 0x01, 0xCA, 0x01, 0xCB, 0x01, - 0xCA, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCF, 0x01, - 0xCF, 0x01, 0xD1, 0x01, 0xD1, 0x01, 0xD3, 0x01, - 0xD3, 0x01, 0xD5, 0x01, 0xD5, 0x01, 0xD7, 0x01, - 0xD7, 0x01, 0xD9, 0x01, 0xD9, 0x01, 0xDB, 0x01, - 0xDB, 0x01, 0x8E, 0x01, 0xDE, 0x01, 0xDE, 0x01, - 0xE0, 0x01, 0xE0, 0x01, 0xE2, 0x01, 0xE2, 0x01, - 0xE4, 0x01, 0xE4, 0x01, 0xE6, 0x01, 0xE6, 0x01, - 0xE8, 0x01, 0xE8, 0x01, 0xEA, 0x01, 0xEA, 0x01, - 0xEC, 0x01, 0xEC, 0x01, 0xEE, 0x01, 0xEE, 0x01, - 0xF0, 0x01, 0xF1, 0x01, 0xF2, 0x01, 0xF1, 0x01, - 0xF4, 0x01, 0xF4, 0x01, 0xF6, 0x01, 0xF7, 0x01, - 0xF8, 0x01, 0xF8, 0x01, 0xFA, 0x01, 0xFA, 0x01, - 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0xFE, 0x01, - 0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x04, 0x02, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, - 0x08, 0x02, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, - 0x0C, 0x02, 0x0C, 0x02, 0x0E, 0x02, 0x0E, 0x02, - 0x10, 0x02, 0x10, 0x02, 0x12, 0x02, 0x12, 0x02, - 0x14, 0x02, 0x14, 0x02, 0x16, 0x02, 0x16, 0x02, - 0x18, 0x02, 0x18, 0x02, 0x1A, 0x02, 0x1A, 0x02, - 0x1C, 0x02, 0x1C, 0x02, 0x1E, 0x02, 0x1E, 0x02, - 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x22, 0x02, - 0x24, 0x02, 0x24, 0x02, 0x26, 0x02, 0x26, 0x02, - 0x28, 0x02, 0x28, 0x02, 0x2A, 0x02, 0x2A, 0x02, - 0x2C, 0x02, 0x2C, 0x02, 0x2E, 0x02, 0x2E, 0x02, - 0x30, 0x02, 0x30, 0x02, 0x32, 0x02, 0x32, 0x02, - 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, - 0x38, 0x02, 0x39, 0x02, 0x65, 0x2C, 0x3B, 0x02, - 0x3B, 0x02, 0x3D, 0x02, 0x66, 0x2C, 0x3F, 0x02, - 0x40, 0x02, 0x41, 0x02, 0x41, 0x02, 0x43, 0x02, - 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x46, 0x02, - 0x48, 0x02, 0x48, 0x02, 0x4A, 0x02, 0x4A, 0x02, - 0x4C, 0x02, 0x4C, 0x02, 0x4E, 0x02, 0x4E, 0x02, - 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x81, 0x01, - 0x86, 0x01, 0x55, 0x02, 0x89, 0x01, 0x8A, 0x01, - 0x58, 0x02, 0x8F, 0x01, 0x5A, 0x02, 0x90, 0x01, - 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5F, 0x02, - 0x93, 0x01, 0x61, 0x02, 0x62, 0x02, 0x94, 0x01, - 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, - 0x97, 0x01, 0x96, 0x01, 0x6A, 0x02, 0x62, 0x2C, - 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x9C, 0x01, - 0x70, 0x02, 0x71, 0x02, 0x9D, 0x01, 0x73, 0x02, - 0x74, 0x02, 0x9F, 0x01, 0x76, 0x02, 0x77, 0x02, - 0x78, 0x02, 0x79, 0x02, 0x7A, 0x02, 0x7B, 0x02, - 0x7C, 0x02, 0x64, 0x2C, 0x7E, 0x02, 0x7F, 0x02, - 0xA6, 0x01, 0x81, 0x02, 0x82, 0x02, 0xA9, 0x01, - 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, - 0xAE, 0x01, 0x44, 0x02, 0xB1, 0x01, 0xB2, 0x01, - 0x45, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8F, 0x02, - 0x90, 0x02, 0x91, 0x02, 0xB7, 0x01, 0x93, 0x02, - 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, - 0x98, 0x02, 0x99, 0x02, 0x9A, 0x02, 0x9B, 0x02, - 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9F, 0x02, - 0xA0, 0x02, 0xA1, 0x02, 0xA2, 0x02, 0xA3, 0x02, - 0xA4, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, - 0xA8, 0x02, 0xA9, 0x02, 0xAA, 0x02, 0xAB, 0x02, - 0xAC, 0x02, 0xAD, 0x02, 0xAE, 0x02, 0xAF, 0x02, - 0xB0, 0x02, 0xB1, 0x02, 0xB2, 0x02, 0xB3, 0x02, - 0xB4, 0x02, 0xB5, 0x02, 0xB6, 0x02, 0xB7, 0x02, - 0xB8, 0x02, 0xB9, 0x02, 0xBA, 0x02, 0xBB, 0x02, - 0xBC, 0x02, 0xBD, 0x02, 0xBE, 0x02, 0xBF, 0x02, - 0xC0, 0x02, 0xC1, 0x02, 0xC2, 0x02, 0xC3, 0x02, - 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, - 0xC8, 0x02, 0xC9, 0x02, 0xCA, 0x02, 0xCB, 0x02, - 0xCC, 0x02, 0xCD, 0x02, 0xCE, 0x02, 0xCF, 0x02, - 0xD0, 0x02, 0xD1, 0x02, 0xD2, 0x02, 0xD3, 0x02, - 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0xD7, 0x02, - 0xD8, 0x02, 0xD9, 0x02, 0xDA, 0x02, 0xDB, 0x02, - 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x02, 0xDF, 0x02, - 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02, - 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x02, - 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, - 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x02, - 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, - 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, - 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, - 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, - 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x03, 0x03, - 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, - 0x08, 0x03, 0x09, 0x03, 0x0A, 0x03, 0x0B, 0x03, - 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0F, 0x03, - 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, - 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, 0x03, - 0x18, 0x03, 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, - 0x1C, 0x03, 0x1D, 0x03, 0x1E, 0x03, 0x1F, 0x03, - 0x20, 0x03, 0x21, 0x03, 0x22, 0x03, 0x23, 0x03, - 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, - 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, - 0x2C, 0x03, 0x2D, 0x03, 0x2E, 0x03, 0x2F, 0x03, - 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, - 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, - 0x38, 0x03, 0x39, 0x03, 0x3A, 0x03, 0x3B, 0x03, - 0x3C, 0x03, 0x3D, 0x03, 0x3E, 0x03, 0x3F, 0x03, - 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, - 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, - 0x48, 0x03, 0x49, 0x03, 0x4A, 0x03, 0x4B, 0x03, - 0x4C, 0x03, 0x4D, 0x03, 0x4E, 0x03, 0x4F, 0x03, - 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, - 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, - 0x58, 0x03, 0x59, 0x03, 0x5A, 0x03, 0x5B, 0x03, - 0x5C, 0x03, 0x5D, 0x03, 0x5E, 0x03, 0x5F, 0x03, - 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, - 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, - 0x68, 0x03, 0x69, 0x03, 0x6A, 0x03, 0x6B, 0x03, - 0x6C, 0x03, 0x6D, 0x03, 0x6E, 0x03, 0x6F, 0x03, - 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, - 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, - 0x78, 0x03, 0x79, 0x03, 0x7A, 0x03, 0xFD, 0x03, - 0xFE, 0x03, 0xFF, 0x03, 0x7E, 0x03, 0x7F, 0x03, - 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, - 0x84, 0x03, 0x85, 0x03, 0x86, 0x03, 0x87, 0x03, - 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, 0x8B, 0x03, - 0x8C, 0x03, 0x8D, 0x03, 0x8E, 0x03, 0x8F, 0x03, - 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, - 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, - 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, - 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9F, 0x03, - 0xA0, 0x03, 0xA1, 0x03, 0xA2, 0x03, 0xA3, 0x03, - 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, - 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, - 0x86, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8A, 0x03, - 0xB0, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, - 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, 0x97, 0x03, - 0x98, 0x03, 0x99, 0x03, 0x9A, 0x03, 0x9B, 0x03, - 0x9C, 0x03, 0x9D, 0x03, 0x9E, 0x03, 0x9F, 0x03, - 0xA0, 0x03, 0xA1, 0x03, 0xA3, 0x03, 0xA3, 0x03, - 0xA4, 0x03, 0xA5, 0x03, 0xA6, 0x03, 0xA7, 0x03, - 0xA8, 0x03, 0xA9, 0x03, 0xAA, 0x03, 0xAB, 0x03, - 0x8C, 0x03, 0x8E, 0x03, 0x8F, 0x03, 0xCF, 0x03, - 0xD0, 0x03, 0xD1, 0x03, 0xD2, 0x03, 0xD3, 0x03, - 0xD4, 0x03, 0xD5, 0x03, 0xD6, 0x03, 0xD7, 0x03, - 0xD8, 0x03, 0xD8, 0x03, 0xDA, 0x03, 0xDA, 0x03, - 0xDC, 0x03, 0xDC, 0x03, 0xDE, 0x03, 0xDE, 0x03, - 0xE0, 0x03, 0xE0, 0x03, 0xE2, 0x03, 0xE2, 0x03, - 0xE4, 0x03, 0xE4, 0x03, 0xE6, 0x03, 0xE6, 0x03, - 0xE8, 0x03, 0xE8, 0x03, 0xEA, 0x03, 0xEA, 0x03, - 0xEC, 0x03, 0xEC, 0x03, 0xEE, 0x03, 0xEE, 0x03, - 0xF0, 0x03, 0xF1, 0x03, 0xF9, 0x03, 0xF3, 0x03, - 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, - 0xF7, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFA, 0x03, - 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x03, - 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, - 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, - 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, - 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0F, 0x04, - 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, - 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, - 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, - 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1F, 0x04, - 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, - 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, - 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, - 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2F, 0x04, - 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, - 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x17, 0x04, - 0x18, 0x04, 0x19, 0x04, 0x1A, 0x04, 0x1B, 0x04, - 0x1C, 0x04, 0x1D, 0x04, 0x1E, 0x04, 0x1F, 0x04, - 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, - 0x24, 0x04, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, - 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, - 0x2C, 0x04, 0x2D, 0x04, 0x2E, 0x04, 0x2F, 0x04, - 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, - 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, - 0x08, 0x04, 0x09, 0x04, 0x0A, 0x04, 0x0B, 0x04, - 0x0C, 0x04, 0x0D, 0x04, 0x0E, 0x04, 0x0F, 0x04, - 0x60, 0x04, 0x60, 0x04, 0x62, 0x04, 0x62, 0x04, - 0x64, 0x04, 0x64, 0x04, 0x66, 0x04, 0x66, 0x04, - 0x68, 0x04, 0x68, 0x04, 0x6A, 0x04, 0x6A, 0x04, - 0x6C, 0x04, 0x6C, 0x04, 0x6E, 0x04, 0x6E, 0x04, - 0x70, 0x04, 0x70, 0x04, 0x72, 0x04, 0x72, 0x04, - 0x74, 0x04, 0x74, 0x04, 0x76, 0x04, 0x76, 0x04, - 0x78, 0x04, 0x78, 0x04, 0x7A, 0x04, 0x7A, 0x04, - 0x7C, 0x04, 0x7C, 0x04, 0x7E, 0x04, 0x7E, 0x04, - 0x80, 0x04, 0x80, 0x04, 0x82, 0x04, 0x83, 0x04, - 0x84, 0x04, 0x85, 0x04, 0x86, 0x04, 0x87, 0x04, - 0x88, 0x04, 0x89, 0x04, 0x8A, 0x04, 0x8A, 0x04, - 0x8C, 0x04, 0x8C, 0x04, 0x8E, 0x04, 0x8E, 0x04, - 0x90, 0x04, 0x90, 0x04, 0x92, 0x04, 0x92, 0x04, - 0x94, 0x04, 0x94, 0x04, 0x96, 0x04, 0x96, 0x04, - 0x98, 0x04, 0x98, 0x04, 0x9A, 0x04, 0x9A, 0x04, - 0x9C, 0x04, 0x9C, 0x04, 0x9E, 0x04, 0x9E, 0x04, - 0xA0, 0x04, 0xA0, 0x04, 0xA2, 0x04, 0xA2, 0x04, - 0xA4, 0x04, 0xA4, 0x04, 0xA6, 0x04, 0xA6, 0x04, - 0xA8, 0x04, 0xA8, 0x04, 0xAA, 0x04, 0xAA, 0x04, - 0xAC, 0x04, 0xAC, 0x04, 0xAE, 0x04, 0xAE, 0x04, - 0xB0, 0x04, 0xB0, 0x04, 0xB2, 0x04, 0xB2, 0x04, - 0xB4, 0x04, 0xB4, 0x04, 0xB6, 0x04, 0xB6, 0x04, - 0xB8, 0x04, 0xB8, 0x04, 0xBA, 0x04, 0xBA, 0x04, - 0xBC, 0x04, 0xBC, 0x04, 0xBE, 0x04, 0xBE, 0x04, - 0xC0, 0x04, 0xC1, 0x04, 0xC1, 0x04, 0xC3, 0x04, - 0xC3, 0x04, 0xC5, 0x04, 0xC5, 0x04, 0xC7, 0x04, - 0xC7, 0x04, 0xC9, 0x04, 0xC9, 0x04, 0xCB, 0x04, - 0xCB, 0x04, 0xCD, 0x04, 0xCD, 0x04, 0xC0, 0x04, - 0xD0, 0x04, 0xD0, 0x04, 0xD2, 0x04, 0xD2, 0x04, - 0xD4, 0x04, 0xD4, 0x04, 0xD6, 0x04, 0xD6, 0x04, - 0xD8, 0x04, 0xD8, 0x04, 0xDA, 0x04, 0xDA, 0x04, - 0xDC, 0x04, 0xDC, 0x04, 0xDE, 0x04, 0xDE, 0x04, - 0xE0, 0x04, 0xE0, 0x04, 0xE2, 0x04, 0xE2, 0x04, - 0xE4, 0x04, 0xE4, 0x04, 0xE6, 0x04, 0xE6, 0x04, - 0xE8, 0x04, 0xE8, 0x04, 0xEA, 0x04, 0xEA, 0x04, - 0xEC, 0x04, 0xEC, 0x04, 0xEE, 0x04, 0xEE, 0x04, - 0xF0, 0x04, 0xF0, 0x04, 0xF2, 0x04, 0xF2, 0x04, - 0xF4, 0x04, 0xF4, 0x04, 0xF6, 0x04, 0xF6, 0x04, - 0xF8, 0x04, 0xF8, 0x04, 0xFA, 0x04, 0xFA, 0x04, - 0xFC, 0x04, 0xFC, 0x04, 0xFE, 0x04, 0xFE, 0x04, - 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x02, 0x05, - 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, - 0x08, 0x05, 0x08, 0x05, 0x0A, 0x05, 0x0A, 0x05, - 0x0C, 0x05, 0x0C, 0x05, 0x0E, 0x05, 0x0E, 0x05, - 0x10, 0x05, 0x10, 0x05, 0x12, 0x05, 0x12, 0x05, - 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, 0x17, 0x05, - 0x18, 0x05, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, - 0x1C, 0x05, 0x1D, 0x05, 0x1E, 0x05, 0x1F, 0x05, - 0x20, 0x05, 0x21, 0x05, 0x22, 0x05, 0x23, 0x05, - 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0x27, 0x05, - 0x28, 0x05, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x05, - 0x2C, 0x05, 0x2D, 0x05, 0x2E, 0x05, 0x2F, 0x05, - 0x30, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, - 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, - 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, - 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3F, 0x05, - 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, - 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, - 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, - 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4F, 0x05, - 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, - 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, 0x05, - 0x58, 0x05, 0x59, 0x05, 0x5A, 0x05, 0x5B, 0x05, - 0x5C, 0x05, 0x5D, 0x05, 0x5E, 0x05, 0x5F, 0x05, - 0x60, 0x05, 0x31, 0x05, 0x32, 0x05, 0x33, 0x05, - 0x34, 0x05, 0x35, 0x05, 0x36, 0x05, 0x37, 0x05, - 0x38, 0x05, 0x39, 0x05, 0x3A, 0x05, 0x3B, 0x05, - 0x3C, 0x05, 0x3D, 0x05, 0x3E, 0x05, 0x3F, 0x05, - 0x40, 0x05, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, - 0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, - 0x48, 0x05, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x05, - 0x4C, 0x05, 0x4D, 0x05, 0x4E, 0x05, 0x4F, 0x05, - 0x50, 0x05, 0x51, 0x05, 0x52, 0x05, 0x53, 0x05, - 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, 0xFF, 0xFF, - 0xF6, 0x17, 0x63, 0x2C, 0x7E, 0x1D, 0x7F, 0x1D, - 0x80, 0x1D, 0x81, 0x1D, 0x82, 0x1D, 0x83, 0x1D, - 0x84, 0x1D, 0x85, 0x1D, 0x86, 0x1D, 0x87, 0x1D, - 0x88, 0x1D, 0x89, 0x1D, 0x8A, 0x1D, 0x8B, 0x1D, - 0x8C, 0x1D, 0x8D, 0x1D, 0x8E, 0x1D, 0x8F, 0x1D, - 0x90, 0x1D, 0x91, 0x1D, 0x92, 0x1D, 0x93, 0x1D, - 0x94, 0x1D, 0x95, 0x1D, 0x96, 0x1D, 0x97, 0x1D, - 0x98, 0x1D, 0x99, 0x1D, 0x9A, 0x1D, 0x9B, 0x1D, - 0x9C, 0x1D, 0x9D, 0x1D, 0x9E, 0x1D, 0x9F, 0x1D, - 0xA0, 0x1D, 0xA1, 0x1D, 0xA2, 0x1D, 0xA3, 0x1D, - 0xA4, 0x1D, 0xA5, 0x1D, 0xA6, 0x1D, 0xA7, 0x1D, - 0xA8, 0x1D, 0xA9, 0x1D, 0xAA, 0x1D, 0xAB, 0x1D, - 0xAC, 0x1D, 0xAD, 0x1D, 0xAE, 0x1D, 0xAF, 0x1D, - 0xB0, 0x1D, 0xB1, 0x1D, 0xB2, 0x1D, 0xB3, 0x1D, - 0xB4, 0x1D, 0xB5, 0x1D, 0xB6, 0x1D, 0xB7, 0x1D, - 0xB8, 0x1D, 0xB9, 0x1D, 0xBA, 0x1D, 0xBB, 0x1D, - 0xBC, 0x1D, 0xBD, 0x1D, 0xBE, 0x1D, 0xBF, 0x1D, - 0xC0, 0x1D, 0xC1, 0x1D, 0xC2, 0x1D, 0xC3, 0x1D, - 0xC4, 0x1D, 0xC5, 0x1D, 0xC6, 0x1D, 0xC7, 0x1D, - 0xC8, 0x1D, 0xC9, 0x1D, 0xCA, 0x1D, 0xCB, 0x1D, - 0xCC, 0x1D, 0xCD, 0x1D, 0xCE, 0x1D, 0xCF, 0x1D, - 0xD0, 0x1D, 0xD1, 0x1D, 0xD2, 0x1D, 0xD3, 0x1D, - 0xD4, 0x1D, 0xD5, 0x1D, 0xD6, 0x1D, 0xD7, 0x1D, - 0xD8, 0x1D, 0xD9, 0x1D, 0xDA, 0x1D, 0xDB, 0x1D, - 0xDC, 0x1D, 0xDD, 0x1D, 0xDE, 0x1D, 0xDF, 0x1D, - 0xE0, 0x1D, 0xE1, 0x1D, 0xE2, 0x1D, 0xE3, 0x1D, - 0xE4, 0x1D, 0xE5, 0x1D, 0xE6, 0x1D, 0xE7, 0x1D, - 0xE8, 0x1D, 0xE9, 0x1D, 0xEA, 0x1D, 0xEB, 0x1D, - 0xEC, 0x1D, 0xED, 0x1D, 0xEE, 0x1D, 0xEF, 0x1D, - 0xF0, 0x1D, 0xF1, 0x1D, 0xF2, 0x1D, 0xF3, 0x1D, - 0xF4, 0x1D, 0xF5, 0x1D, 0xF6, 0x1D, 0xF7, 0x1D, - 0xF8, 0x1D, 0xF9, 0x1D, 0xFA, 0x1D, 0xFB, 0x1D, - 0xFC, 0x1D, 0xFD, 0x1D, 0xFE, 0x1D, 0xFF, 0x1D, - 0x00, 0x1E, 0x00, 0x1E, 0x02, 0x1E, 0x02, 0x1E, - 0x04, 0x1E, 0x04, 0x1E, 0x06, 0x1E, 0x06, 0x1E, - 0x08, 0x1E, 0x08, 0x1E, 0x0A, 0x1E, 0x0A, 0x1E, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0E, 0x1E, 0x0E, 0x1E, - 0x10, 0x1E, 0x10, 0x1E, 0x12, 0x1E, 0x12, 0x1E, - 0x14, 0x1E, 0x14, 0x1E, 0x16, 0x1E, 0x16, 0x1E, - 0x18, 0x1E, 0x18, 0x1E, 0x1A, 0x1E, 0x1A, 0x1E, - 0x1C, 0x1E, 0x1C, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, - 0x20, 0x1E, 0x20, 0x1E, 0x22, 0x1E, 0x22, 0x1E, - 0x24, 0x1E, 0x24, 0x1E, 0x26, 0x1E, 0x26, 0x1E, - 0x28, 0x1E, 0x28, 0x1E, 0x2A, 0x1E, 0x2A, 0x1E, - 0x2C, 0x1E, 0x2C, 0x1E, 0x2E, 0x1E, 0x2E, 0x1E, - 0x30, 0x1E, 0x30, 0x1E, 0x32, 0x1E, 0x32, 0x1E, - 0x34, 0x1E, 0x34, 0x1E, 0x36, 0x1E, 0x36, 0x1E, - 0x38, 0x1E, 0x38, 0x1E, 0x3A, 0x1E, 0x3A, 0x1E, - 0x3C, 0x1E, 0x3C, 0x1E, 0x3E, 0x1E, 0x3E, 0x1E, - 0x40, 0x1E, 0x40, 0x1E, 0x42, 0x1E, 0x42, 0x1E, - 0x44, 0x1E, 0x44, 0x1E, 0x46, 0x1E, 0x46, 0x1E, - 0x48, 0x1E, 0x48, 0x1E, 0x4A, 0x1E, 0x4A, 0x1E, - 0x4C, 0x1E, 0x4C, 0x1E, 0x4E, 0x1E, 0x4E, 0x1E, - 0x50, 0x1E, 0x50, 0x1E, 0x52, 0x1E, 0x52, 0x1E, - 0x54, 0x1E, 0x54, 0x1E, 0x56, 0x1E, 0x56, 0x1E, - 0x58, 0x1E, 0x58, 0x1E, 0x5A, 0x1E, 0x5A, 0x1E, - 0x5C, 0x1E, 0x5C, 0x1E, 0x5E, 0x1E, 0x5E, 0x1E, - 0x60, 0x1E, 0x60, 0x1E, 0x62, 0x1E, 0x62, 0x1E, - 0x64, 0x1E, 0x64, 0x1E, 0x66, 0x1E, 0x66, 0x1E, - 0x68, 0x1E, 0x68, 0x1E, 0x6A, 0x1E, 0x6A, 0x1E, - 0x6C, 0x1E, 0x6C, 0x1E, 0x6E, 0x1E, 0x6E, 0x1E, - 0x70, 0x1E, 0x70, 0x1E, 0x72, 0x1E, 0x72, 0x1E, - 0x74, 0x1E, 0x74, 0x1E, 0x76, 0x1E, 0x76, 0x1E, - 0x78, 0x1E, 0x78, 0x1E, 0x7A, 0x1E, 0x7A, 0x1E, - 0x7C, 0x1E, 0x7C, 0x1E, 0x7E, 0x1E, 0x7E, 0x1E, - 0x80, 0x1E, 0x80, 0x1E, 0x82, 0x1E, 0x82, 0x1E, - 0x84, 0x1E, 0x84, 0x1E, 0x86, 0x1E, 0x86, 0x1E, - 0x88, 0x1E, 0x88, 0x1E, 0x8A, 0x1E, 0x8A, 0x1E, - 0x8C, 0x1E, 0x8C, 0x1E, 0x8E, 0x1E, 0x8E, 0x1E, - 0x90, 0x1E, 0x90, 0x1E, 0x92, 0x1E, 0x92, 0x1E, - 0x94, 0x1E, 0x94, 0x1E, 0x96, 0x1E, 0x97, 0x1E, - 0x98, 0x1E, 0x99, 0x1E, 0x9A, 0x1E, 0x9B, 0x1E, - 0x9C, 0x1E, 0x9D, 0x1E, 0x9E, 0x1E, 0x9F, 0x1E, - 0xA0, 0x1E, 0xA0, 0x1E, 0xA2, 0x1E, 0xA2, 0x1E, - 0xA4, 0x1E, 0xA4, 0x1E, 0xA6, 0x1E, 0xA6, 0x1E, - 0xA8, 0x1E, 0xA8, 0x1E, 0xAA, 0x1E, 0xAA, 0x1E, - 0xAC, 0x1E, 0xAC, 0x1E, 0xAE, 0x1E, 0xAE, 0x1E, - 0xB0, 0x1E, 0xB0, 0x1E, 0xB2, 0x1E, 0xB2, 0x1E, - 0xB4, 0x1E, 0xB4, 0x1E, 0xB6, 0x1E, 0xB6, 0x1E, - 0xB8, 0x1E, 0xB8, 0x1E, 0xBA, 0x1E, 0xBA, 0x1E, - 0xBC, 0x1E, 0xBC, 0x1E, 0xBE, 0x1E, 0xBE, 0x1E, - 0xC0, 0x1E, 0xC0, 0x1E, 0xC2, 0x1E, 0xC2, 0x1E, - 0xC4, 0x1E, 0xC4, 0x1E, 0xC6, 0x1E, 0xC6, 0x1E, - 0xC8, 0x1E, 0xC8, 0x1E, 0xCA, 0x1E, 0xCA, 0x1E, - 0xCC, 0x1E, 0xCC, 0x1E, 0xCE, 0x1E, 0xCE, 0x1E, - 0xD0, 0x1E, 0xD0, 0x1E, 0xD2, 0x1E, 0xD2, 0x1E, - 0xD4, 0x1E, 0xD4, 0x1E, 0xD6, 0x1E, 0xD6, 0x1E, - 0xD8, 0x1E, 0xD8, 0x1E, 0xDA, 0x1E, 0xDA, 0x1E, - 0xDC, 0x1E, 0xDC, 0x1E, 0xDE, 0x1E, 0xDE, 0x1E, - 0xE0, 0x1E, 0xE0, 0x1E, 0xE2, 0x1E, 0xE2, 0x1E, - 0xE4, 0x1E, 0xE4, 0x1E, 0xE6, 0x1E, 0xE6, 0x1E, - 0xE8, 0x1E, 0xE8, 0x1E, 0xEA, 0x1E, 0xEA, 0x1E, - 0xEC, 0x1E, 0xEC, 0x1E, 0xEE, 0x1E, 0xEE, 0x1E, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF2, 0x1E, 0xF2, 0x1E, - 0xF4, 0x1E, 0xF4, 0x1E, 0xF6, 0x1E, 0xF6, 0x1E, - 0xF8, 0x1E, 0xF8, 0x1E, 0xFA, 0x1E, 0xFB, 0x1E, - 0xFC, 0x1E, 0xFD, 0x1E, 0xFE, 0x1E, 0xFF, 0x1E, - 0x08, 0x1F, 0x09, 0x1F, 0x0A, 0x1F, 0x0B, 0x1F, - 0x0C, 0x1F, 0x0D, 0x1F, 0x0E, 0x1F, 0x0F, 0x1F, - 0x08, 0x1F, 0x09, 0x1F, 0x0A, 0x1F, 0x0B, 0x1F, - 0x0C, 0x1F, 0x0D, 0x1F, 0x0E, 0x1F, 0x0F, 0x1F, - 0x18, 0x1F, 0x19, 0x1F, 0x1A, 0x1F, 0x1B, 0x1F, - 0x1C, 0x1F, 0x1D, 0x1F, 0x16, 0x1F, 0x17, 0x1F, - 0x18, 0x1F, 0x19, 0x1F, 0x1A, 0x1F, 0x1B, 0x1F, - 0x1C, 0x1F, 0x1D, 0x1F, 0x1E, 0x1F, 0x1F, 0x1F, - 0x28, 0x1F, 0x29, 0x1F, 0x2A, 0x1F, 0x2B, 0x1F, - 0x2C, 0x1F, 0x2D, 0x1F, 0x2E, 0x1F, 0x2F, 0x1F, - 0x28, 0x1F, 0x29, 0x1F, 0x2A, 0x1F, 0x2B, 0x1F, - 0x2C, 0x1F, 0x2D, 0x1F, 0x2E, 0x1F, 0x2F, 0x1F, - 0x38, 0x1F, 0x39, 0x1F, 0x3A, 0x1F, 0x3B, 0x1F, - 0x3C, 0x1F, 0x3D, 0x1F, 0x3E, 0x1F, 0x3F, 0x1F, - 0x38, 0x1F, 0x39, 0x1F, 0x3A, 0x1F, 0x3B, 0x1F, - 0x3C, 0x1F, 0x3D, 0x1F, 0x3E, 0x1F, 0x3F, 0x1F, - 0x48, 0x1F, 0x49, 0x1F, 0x4A, 0x1F, 0x4B, 0x1F, - 0x4C, 0x1F, 0x4D, 0x1F, 0x46, 0x1F, 0x47, 0x1F, - 0x48, 0x1F, 0x49, 0x1F, 0x4A, 0x1F, 0x4B, 0x1F, - 0x4C, 0x1F, 0x4D, 0x1F, 0x4E, 0x1F, 0x4F, 0x1F, - 0x50, 0x1F, 0x59, 0x1F, 0x52, 0x1F, 0x5B, 0x1F, - 0x54, 0x1F, 0x5D, 0x1F, 0x56, 0x1F, 0x5F, 0x1F, - 0x58, 0x1F, 0x59, 0x1F, 0x5A, 0x1F, 0x5B, 0x1F, - 0x5C, 0x1F, 0x5D, 0x1F, 0x5E, 0x1F, 0x5F, 0x1F, - 0x68, 0x1F, 0x69, 0x1F, 0x6A, 0x1F, 0x6B, 0x1F, - 0x6C, 0x1F, 0x6D, 0x1F, 0x6E, 0x1F, 0x6F, 0x1F, - 0x68, 0x1F, 0x69, 0x1F, 0x6A, 0x1F, 0x6B, 0x1F, - 0x6C, 0x1F, 0x6D, 0x1F, 0x6E, 0x1F, 0x6F, 0x1F, - 0xBA, 0x1F, 0xBB, 0x1F, 0xC8, 0x1F, 0xC9, 0x1F, - 0xCA, 0x1F, 0xCB, 0x1F, 0xDA, 0x1F, 0xDB, 0x1F, - 0xF8, 0x1F, 0xF9, 0x1F, 0xEA, 0x1F, 0xEB, 0x1F, - 0xFA, 0x1F, 0xFB, 0x1F, 0x7E, 0x1F, 0x7F, 0x1F, - 0x88, 0x1F, 0x89, 0x1F, 0x8A, 0x1F, 0x8B, 0x1F, - 0x8C, 0x1F, 0x8D, 0x1F, 0x8E, 0x1F, 0x8F, 0x1F, - 0x88, 0x1F, 0x89, 0x1F, 0x8A, 0x1F, 0x8B, 0x1F, - 0x8C, 0x1F, 0x8D, 0x1F, 0x8E, 0x1F, 0x8F, 0x1F, - 0x98, 0x1F, 0x99, 0x1F, 0x9A, 0x1F, 0x9B, 0x1F, - 0x9C, 0x1F, 0x9D, 0x1F, 0x9E, 0x1F, 0x9F, 0x1F, - 0x98, 0x1F, 0x99, 0x1F, 0x9A, 0x1F, 0x9B, 0x1F, - 0x9C, 0x1F, 0x9D, 0x1F, 0x9E, 0x1F, 0x9F, 0x1F, - 0xA8, 0x1F, 0xA9, 0x1F, 0xAA, 0x1F, 0xAB, 0x1F, - 0xAC, 0x1F, 0xAD, 0x1F, 0xAE, 0x1F, 0xAF, 0x1F, - 0xA8, 0x1F, 0xA9, 0x1F, 0xAA, 0x1F, 0xAB, 0x1F, - 0xAC, 0x1F, 0xAD, 0x1F, 0xAE, 0x1F, 0xAF, 0x1F, - 0xB8, 0x1F, 0xB9, 0x1F, 0xB2, 0x1F, 0xBC, 0x1F, - 0xB4, 0x1F, 0xB5, 0x1F, 0xB6, 0x1F, 0xB7, 0x1F, - 0xB8, 0x1F, 0xB9, 0x1F, 0xBA, 0x1F, 0xBB, 0x1F, - 0xBC, 0x1F, 0xBD, 0x1F, 0xBE, 0x1F, 0xBF, 0x1F, - 0xC0, 0x1F, 0xC1, 0x1F, 0xC2, 0x1F, 0xC3, 0x1F, - 0xC4, 0x1F, 0xC5, 0x1F, 0xC6, 0x1F, 0xC7, 0x1F, - 0xC8, 0x1F, 0xC9, 0x1F, 0xCA, 0x1F, 0xCB, 0x1F, - 0xC3, 0x1F, 0xCD, 0x1F, 0xCE, 0x1F, 0xCF, 0x1F, - 0xD8, 0x1F, 0xD9, 0x1F, 0xD2, 0x1F, 0xD3, 0x1F, - 0xD4, 0x1F, 0xD5, 0x1F, 0xD6, 0x1F, 0xD7, 0x1F, - 0xD8, 0x1F, 0xD9, 0x1F, 0xDA, 0x1F, 0xDB, 0x1F, - 0xDC, 0x1F, 0xDD, 0x1F, 0xDE, 0x1F, 0xDF, 0x1F, - 0xE8, 0x1F, 0xE9, 0x1F, 0xE2, 0x1F, 0xE3, 0x1F, - 0xE4, 0x1F, 0xEC, 0x1F, 0xE6, 0x1F, 0xE7, 0x1F, - 0xE8, 0x1F, 0xE9, 0x1F, 0xEA, 0x1F, 0xEB, 0x1F, - 0xEC, 0x1F, 0xED, 0x1F, 0xEE, 0x1F, 0xEF, 0x1F, - 0xF0, 0x1F, 0xF1, 0x1F, 0xF2, 0x1F, 0xF3, 0x1F, - 0xF4, 0x1F, 0xF5, 0x1F, 0xF6, 0x1F, 0xF7, 0x1F, - 0xF8, 0x1F, 0xF9, 0x1F, 0xFA, 0x1F, 0xFB, 0x1F, - 0xF3, 0x1F, 0xFD, 0x1F, 0xFE, 0x1F, 0xFF, 0x1F, - 0x00, 0x20, 0x01, 0x20, 0x02, 0x20, 0x03, 0x20, - 0x04, 0x20, 0x05, 0x20, 0x06, 0x20, 0x07, 0x20, - 0x08, 0x20, 0x09, 0x20, 0x0A, 0x20, 0x0B, 0x20, - 0x0C, 0x20, 0x0D, 0x20, 0x0E, 0x20, 0x0F, 0x20, - 0x10, 0x20, 0x11, 0x20, 0x12, 0x20, 0x13, 0x20, - 0x14, 0x20, 0x15, 0x20, 0x16, 0x20, 0x17, 0x20, - 0x18, 0x20, 0x19, 0x20, 0x1A, 0x20, 0x1B, 0x20, - 0x1C, 0x20, 0x1D, 0x20, 0x1E, 0x20, 0x1F, 0x20, - 0x20, 0x20, 0x21, 0x20, 0x22, 0x20, 0x23, 0x20, - 0x24, 0x20, 0x25, 0x20, 0x26, 0x20, 0x27, 0x20, - 0x28, 0x20, 0x29, 0x20, 0x2A, 0x20, 0x2B, 0x20, - 0x2C, 0x20, 0x2D, 0x20, 0x2E, 0x20, 0x2F, 0x20, - 0x30, 0x20, 0x31, 0x20, 0x32, 0x20, 0x33, 0x20, - 0x34, 0x20, 0x35, 0x20, 0x36, 0x20, 0x37, 0x20, - 0x38, 0x20, 0x39, 0x20, 0x3A, 0x20, 0x3B, 0x20, - 0x3C, 0x20, 0x3D, 0x20, 0x3E, 0x20, 0x3F, 0x20, - 0x40, 0x20, 0x41, 0x20, 0x42, 0x20, 0x43, 0x20, - 0x44, 0x20, 0x45, 0x20, 0x46, 0x20, 0x47, 0x20, - 0x48, 0x20, 0x49, 0x20, 0x4A, 0x20, 0x4B, 0x20, - 0x4C, 0x20, 0x4D, 0x20, 0x4E, 0x20, 0x4F, 0x20, - 0x50, 0x20, 0x51, 0x20, 0x52, 0x20, 0x53, 0x20, - 0x54, 0x20, 0x55, 0x20, 0x56, 0x20, 0x57, 0x20, - 0x58, 0x20, 0x59, 0x20, 0x5A, 0x20, 0x5B, 0x20, - 0x5C, 0x20, 0x5D, 0x20, 0x5E, 0x20, 0x5F, 0x20, - 0x60, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x20, - 0x64, 0x20, 0x65, 0x20, 0x66, 0x20, 0x67, 0x20, - 0x68, 0x20, 0x69, 0x20, 0x6A, 0x20, 0x6B, 0x20, - 0x6C, 0x20, 0x6D, 0x20, 0x6E, 0x20, 0x6F, 0x20, - 0x70, 0x20, 0x71, 0x20, 0x72, 0x20, 0x73, 0x20, - 0x74, 0x20, 0x75, 0x20, 0x76, 0x20, 0x77, 0x20, - 0x78, 0x20, 0x79, 0x20, 0x7A, 0x20, 0x7B, 0x20, - 0x7C, 0x20, 0x7D, 0x20, 0x7E, 0x20, 0x7F, 0x20, - 0x80, 0x20, 0x81, 0x20, 0x82, 0x20, 0x83, 0x20, - 0x84, 0x20, 0x85, 0x20, 0x86, 0x20, 0x87, 0x20, - 0x88, 0x20, 0x89, 0x20, 0x8A, 0x20, 0x8B, 0x20, - 0x8C, 0x20, 0x8D, 0x20, 0x8E, 0x20, 0x8F, 0x20, - 0x90, 0x20, 0x91, 0x20, 0x92, 0x20, 0x93, 0x20, - 0x94, 0x20, 0x95, 0x20, 0x96, 0x20, 0x97, 0x20, - 0x98, 0x20, 0x99, 0x20, 0x9A, 0x20, 0x9B, 0x20, - 0x9C, 0x20, 0x9D, 0x20, 0x9E, 0x20, 0x9F, 0x20, - 0xA0, 0x20, 0xA1, 0x20, 0xA2, 0x20, 0xA3, 0x20, - 0xA4, 0x20, 0xA5, 0x20, 0xA6, 0x20, 0xA7, 0x20, - 0xA8, 0x20, 0xA9, 0x20, 0xAA, 0x20, 0xAB, 0x20, - 0xAC, 0x20, 0xAD, 0x20, 0xAE, 0x20, 0xAF, 0x20, - 0xB0, 0x20, 0xB1, 0x20, 0xB2, 0x20, 0xB3, 0x20, - 0xB4, 0x20, 0xB5, 0x20, 0xB6, 0x20, 0xB7, 0x20, - 0xB8, 0x20, 0xB9, 0x20, 0xBA, 0x20, 0xBB, 0x20, - 0xBC, 0x20, 0xBD, 0x20, 0xBE, 0x20, 0xBF, 0x20, - 0xC0, 0x20, 0xC1, 0x20, 0xC2, 0x20, 0xC3, 0x20, - 0xC4, 0x20, 0xC5, 0x20, 0xC6, 0x20, 0xC7, 0x20, - 0xC8, 0x20, 0xC9, 0x20, 0xCA, 0x20, 0xCB, 0x20, - 0xCC, 0x20, 0xCD, 0x20, 0xCE, 0x20, 0xCF, 0x20, - 0xD0, 0x20, 0xD1, 0x20, 0xD2, 0x20, 0xD3, 0x20, - 0xD4, 0x20, 0xD5, 0x20, 0xD6, 0x20, 0xD7, 0x20, - 0xD8, 0x20, 0xD9, 0x20, 0xDA, 0x20, 0xDB, 0x20, - 0xDC, 0x20, 0xDD, 0x20, 0xDE, 0x20, 0xDF, 0x20, - 0xE0, 0x20, 0xE1, 0x20, 0xE2, 0x20, 0xE3, 0x20, - 0xE4, 0x20, 0xE5, 0x20, 0xE6, 0x20, 0xE7, 0x20, - 0xE8, 0x20, 0xE9, 0x20, 0xEA, 0x20, 0xEB, 0x20, - 0xEC, 0x20, 0xED, 0x20, 0xEE, 0x20, 0xEF, 0x20, - 0xF0, 0x20, 0xF1, 0x20, 0xF2, 0x20, 0xF3, 0x20, - 0xF4, 0x20, 0xF5, 0x20, 0xF6, 0x20, 0xF7, 0x20, - 0xF8, 0x20, 0xF9, 0x20, 0xFA, 0x20, 0xFB, 0x20, - 0xFC, 0x20, 0xFD, 0x20, 0xFE, 0x20, 0xFF, 0x20, - 0x00, 0x21, 0x01, 0x21, 0x02, 0x21, 0x03, 0x21, - 0x04, 0x21, 0x05, 0x21, 0x06, 0x21, 0x07, 0x21, - 0x08, 0x21, 0x09, 0x21, 0x0A, 0x21, 0x0B, 0x21, - 0x0C, 0x21, 0x0D, 0x21, 0x0E, 0x21, 0x0F, 0x21, - 0x10, 0x21, 0x11, 0x21, 0x12, 0x21, 0x13, 0x21, - 0x14, 0x21, 0x15, 0x21, 0x16, 0x21, 0x17, 0x21, - 0x18, 0x21, 0x19, 0x21, 0x1A, 0x21, 0x1B, 0x21, - 0x1C, 0x21, 0x1D, 0x21, 0x1E, 0x21, 0x1F, 0x21, - 0x20, 0x21, 0x21, 0x21, 0x22, 0x21, 0x23, 0x21, - 0x24, 0x21, 0x25, 0x21, 0x26, 0x21, 0x27, 0x21, - 0x28, 0x21, 0x29, 0x21, 0x2A, 0x21, 0x2B, 0x21, - 0x2C, 0x21, 0x2D, 0x21, 0x2E, 0x21, 0x2F, 0x21, - 0x30, 0x21, 0x31, 0x21, 0x32, 0x21, 0x33, 0x21, - 0x34, 0x21, 0x35, 0x21, 0x36, 0x21, 0x37, 0x21, - 0x38, 0x21, 0x39, 0x21, 0x3A, 0x21, 0x3B, 0x21, - 0x3C, 0x21, 0x3D, 0x21, 0x3E, 0x21, 0x3F, 0x21, - 0x40, 0x21, 0x41, 0x21, 0x42, 0x21, 0x43, 0x21, - 0x44, 0x21, 0x45, 0x21, 0x46, 0x21, 0x47, 0x21, - 0x48, 0x21, 0x49, 0x21, 0x4A, 0x21, 0x4B, 0x21, - 0x4C, 0x21, 0x4D, 0x21, 0x32, 0x21, 0x4F, 0x21, - 0x50, 0x21, 0x51, 0x21, 0x52, 0x21, 0x53, 0x21, - 0x54, 0x21, 0x55, 0x21, 0x56, 0x21, 0x57, 0x21, - 0x58, 0x21, 0x59, 0x21, 0x5A, 0x21, 0x5B, 0x21, - 0x5C, 0x21, 0x5D, 0x21, 0x5E, 0x21, 0x5F, 0x21, - 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, - 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, - 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, - 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6F, 0x21, - 0x60, 0x21, 0x61, 0x21, 0x62, 0x21, 0x63, 0x21, - 0x64, 0x21, 0x65, 0x21, 0x66, 0x21, 0x67, 0x21, - 0x68, 0x21, 0x69, 0x21, 0x6A, 0x21, 0x6B, 0x21, - 0x6C, 0x21, 0x6D, 0x21, 0x6E, 0x21, 0x6F, 0x21, - 0x80, 0x21, 0x81, 0x21, 0x82, 0x21, 0x83, 0x21, - 0x83, 0x21, 0xFF, 0xFF, 0x4B, 0x03, 0xB6, 0x24, - 0xB7, 0x24, 0xB8, 0x24, 0xB9, 0x24, 0xBA, 0x24, - 0xBB, 0x24, 0xBC, 0x24, 0xBD, 0x24, 0xBE, 0x24, - 0xBF, 0x24, 0xC0, 0x24, 0xC1, 0x24, 0xC2, 0x24, - 0xC3, 0x24, 0xC4, 0x24, 0xC5, 0x24, 0xC6, 0x24, - 0xC7, 0x24, 0xC8, 0x24, 0xC9, 0x24, 0xCA, 0x24, - 0xCB, 0x24, 0xCC, 0x24, 0xCD, 0x24, 0xCE, 0x24, - 0xCF, 0x24, 0xFF, 0xFF, 0x46, 0x07, 0x00, 0x2C, - 0x01, 0x2C, 0x02, 0x2C, 0x03, 0x2C, 0x04, 0x2C, - 0x05, 0x2C, 0x06, 0x2C, 0x07, 0x2C, 0x08, 0x2C, - 0x09, 0x2C, 0x0A, 0x2C, 0x0B, 0x2C, 0x0C, 0x2C, - 0x0D, 0x2C, 0x0E, 0x2C, 0x0F, 0x2C, 0x10, 0x2C, - 0x11, 0x2C, 0x12, 0x2C, 0x13, 0x2C, 0x14, 0x2C, - 0x15, 0x2C, 0x16, 0x2C, 0x17, 0x2C, 0x18, 0x2C, - 0x19, 0x2C, 0x1A, 0x2C, 0x1B, 0x2C, 0x1C, 0x2C, - 0x1D, 0x2C, 0x1E, 0x2C, 0x1F, 0x2C, 0x20, 0x2C, - 0x21, 0x2C, 0x22, 0x2C, 0x23, 0x2C, 0x24, 0x2C, - 0x25, 0x2C, 0x26, 0x2C, 0x27, 0x2C, 0x28, 0x2C, - 0x29, 0x2C, 0x2A, 0x2C, 0x2B, 0x2C, 0x2C, 0x2C, - 0x2D, 0x2C, 0x2E, 0x2C, 0x5F, 0x2C, 0x60, 0x2C, - 0x60, 0x2C, 0x62, 0x2C, 0x63, 0x2C, 0x64, 0x2C, - 0x65, 0x2C, 0x66, 0x2C, 0x67, 0x2C, 0x67, 0x2C, - 0x69, 0x2C, 0x69, 0x2C, 0x6B, 0x2C, 0x6B, 0x2C, - 0x6D, 0x2C, 0x6E, 0x2C, 0x6F, 0x2C, 0x70, 0x2C, - 0x71, 0x2C, 0x72, 0x2C, 0x73, 0x2C, 0x74, 0x2C, - 0x75, 0x2C, 0x75, 0x2C, 0x77, 0x2C, 0x78, 0x2C, - 0x79, 0x2C, 0x7A, 0x2C, 0x7B, 0x2C, 0x7C, 0x2C, - 0x7D, 0x2C, 0x7E, 0x2C, 0x7F, 0x2C, 0x80, 0x2C, - 0x80, 0x2C, 0x82, 0x2C, 0x82, 0x2C, 0x84, 0x2C, - 0x84, 0x2C, 0x86, 0x2C, 0x86, 0x2C, 0x88, 0x2C, - 0x88, 0x2C, 0x8A, 0x2C, 0x8A, 0x2C, 0x8C, 0x2C, - 0x8C, 0x2C, 0x8E, 0x2C, 0x8E, 0x2C, 0x90, 0x2C, - 0x90, 0x2C, 0x92, 0x2C, 0x92, 0x2C, 0x94, 0x2C, - 0x94, 0x2C, 0x96, 0x2C, 0x96, 0x2C, 0x98, 0x2C, - 0x98, 0x2C, 0x9A, 0x2C, 0x9A, 0x2C, 0x9C, 0x2C, - 0x9C, 0x2C, 0x9E, 0x2C, 0x9E, 0x2C, 0xA0, 0x2C, - 0xA0, 0x2C, 0xA2, 0x2C, 0xA2, 0x2C, 0xA4, 0x2C, - 0xA4, 0x2C, 0xA6, 0x2C, 0xA6, 0x2C, 0xA8, 0x2C, - 0xA8, 0x2C, 0xAA, 0x2C, 0xAA, 0x2C, 0xAC, 0x2C, - 0xAC, 0x2C, 0xAE, 0x2C, 0xAE, 0x2C, 0xB0, 0x2C, - 0xB0, 0x2C, 0xB2, 0x2C, 0xB2, 0x2C, 0xB4, 0x2C, - 0xB4, 0x2C, 0xB6, 0x2C, 0xB6, 0x2C, 0xB8, 0x2C, - 0xB8, 0x2C, 0xBA, 0x2C, 0xBA, 0x2C, 0xBC, 0x2C, - 0xBC, 0x2C, 0xBE, 0x2C, 0xBE, 0x2C, 0xC0, 0x2C, - 0xC0, 0x2C, 0xC2, 0x2C, 0xC2, 0x2C, 0xC4, 0x2C, - 0xC4, 0x2C, 0xC6, 0x2C, 0xC6, 0x2C, 0xC8, 0x2C, - 0xC8, 0x2C, 0xCA, 0x2C, 0xCA, 0x2C, 0xCC, 0x2C, - 0xCC, 0x2C, 0xCE, 0x2C, 0xCE, 0x2C, 0xD0, 0x2C, - 0xD0, 0x2C, 0xD2, 0x2C, 0xD2, 0x2C, 0xD4, 0x2C, - 0xD4, 0x2C, 0xD6, 0x2C, 0xD6, 0x2C, 0xD8, 0x2C, - 0xD8, 0x2C, 0xDA, 0x2C, 0xDA, 0x2C, 0xDC, 0x2C, - 0xDC, 0x2C, 0xDE, 0x2C, 0xDE, 0x2C, 0xE0, 0x2C, - 0xE0, 0x2C, 0xE2, 0x2C, 0xE2, 0x2C, 0xE4, 0x2C, - 0xE5, 0x2C, 0xE6, 0x2C, 0xE7, 0x2C, 0xE8, 0x2C, - 0xE9, 0x2C, 0xEA, 0x2C, 0xEB, 0x2C, 0xEC, 0x2C, - 0xED, 0x2C, 0xEE, 0x2C, 0xEF, 0x2C, 0xF0, 0x2C, - 0xF1, 0x2C, 0xF2, 0x2C, 0xF3, 0x2C, 0xF4, 0x2C, - 0xF5, 0x2C, 0xF6, 0x2C, 0xF7, 0x2C, 0xF8, 0x2C, - 0xF9, 0x2C, 0xFA, 0x2C, 0xFB, 0x2C, 0xFC, 0x2C, - 0xFD, 0x2C, 0xFE, 0x2C, 0xFF, 0x2C, 0xA0, 0x10, - 0xA1, 0x10, 0xA2, 0x10, 0xA3, 0x10, 0xA4, 0x10, - 0xA5, 0x10, 0xA6, 0x10, 0xA7, 0x10, 0xA8, 0x10, - 0xA9, 0x10, 0xAA, 0x10, 0xAB, 0x10, 0xAC, 0x10, - 0xAD, 0x10, 0xAE, 0x10, 0xAF, 0x10, 0xB0, 0x10, - 0xB1, 0x10, 0xB2, 0x10, 0xB3, 0x10, 0xB4, 0x10, - 0xB5, 0x10, 0xB6, 0x10, 0xB7, 0x10, 0xB8, 0x10, - 0xB9, 0x10, 0xBA, 0x10, 0xBB, 0x10, 0xBC, 0x10, - 0xBD, 0x10, 0xBE, 0x10, 0xBF, 0x10, 0xC0, 0x10, - 0xC1, 0x10, 0xC2, 0x10, 0xC3, 0x10, 0xC4, 0x10, - 0xC5, 0x10, 0xFF, 0xFF, 0x1B, 0xD2, 0x21, 0xFF, - 0x22, 0xFF, 0x23, 0xFF, 0x24, 0xFF, 0x25, 0xFF, - 0x26, 0xFF, 0x27, 0xFF, 0x28, 0xFF, 0x29, 0xFF, - 0x2A, 0xFF, 0x2B, 0xFF, 0x2C, 0xFF, 0x2D, 0xFF, - 0x2E, 0xFF, 0x2F, 0xFF, 0x30, 0xFF, 0x31, 0xFF, - 0x32, 0xFF, 0x33, 0xFF, 0x34, 0xFF, 0x35, 0xFF, - 0x36, 0xFF, 0x37, 0xFF, 0x38, 0xFF, 0x39, 0xFF, - 0x3A, 0xFF, 0x5B, 0xFF, 0x5C, 0xFF, 0x5D, 0xFF, - 0x5E, 0xFF, 0x5F, 0xFF, 0x60, 0xFF, 0x61, 0xFF, - 0x62, 0xFF, 0x63, 0xFF, 0x64, 0xFF, 0x65, 0xFF, - 0x66, 0xFF, 0x67, 0xFF, 0x68, 0xFF, 0x69, 0xFF, - 0x6A, 0xFF, 0x6B, 0xFF, 0x6C, 0xFF, 0x6D, 0xFF, - 0x6E, 0xFF, 0x6F, 0xFF, 0x70, 0xFF, 0x71, 0xFF, - 0x72, 0xFF, 0x73, 0xFF, 0x74, 0xFF, 0x75, 0xFF, - 0x76, 0xFF, 0x77, 0xFF, 0x78, 0xFF, 0x79, 0xFF, - 0x7A, 0xFF, 0x7B, 0xFF, 0x7C, 0xFF, 0x7D, 0xFF, - 0x7E, 0xFF, 0x7F, 0xFF, 0x80, 0xFF, 0x81, 0xFF, - 0x82, 0xFF, 0x83, 0xFF, 0x84, 0xFF, 0x85, 0xFF, - 0x86, 0xFF, 0x87, 0xFF, 0x88, 0xFF, 0x89, 0xFF, - 0x8A, 0xFF, 0x8B, 0xFF, 0x8C, 0xFF, 0x8D, 0xFF, - 0x8E, 0xFF, 0x8F, 0xFF, 0x90, 0xFF, 0x91, 0xFF, - 0x92, 0xFF, 0x93, 0xFF, 0x94, 0xFF, 0x95, 0xFF, - 0x96, 0xFF, 0x97, 0xFF, 0x98, 0xFF, 0x99, 0xFF, - 0x9A, 0xFF, 0x9B, 0xFF, 0x9C, 0xFF, 0x9D, 0xFF, - 0x9E, 0xFF, 0x9F, 0xFF, 0xA0, 0xFF, 0xA1, 0xFF, - 0xA2, 0xFF, 0xA3, 0xFF, 0xA4, 0xFF, 0xA5, 0xFF, - 0xA6, 0xFF, 0xA7, 0xFF, 0xA8, 0xFF, 0xA9, 0xFF, - 0xAA, 0xFF, 0xAB, 0xFF, 0xAC, 0xFF, 0xAD, 0xFF, - 0xAE, 0xFF, 0xAF, 0xFF, 0xB0, 0xFF, 0xB1, 0xFF, - 0xB2, 0xFF, 0xB3, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF, - 0xB6, 0xFF, 0xB7, 0xFF, 0xB8, 0xFF, 0xB9, 0xFF, - 0xBA, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, - 0xBE, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC1, 0xFF, - 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC5, 0xFF, - 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xC9, 0xFF, - 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF, - 0xCE, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, - 0xD2, 0xFF, 0xD3, 0xFF, 0xD4, 0xFF, 0xD5, 0xFF, - 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, - 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, - 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, - 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, - 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF, - 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, - 0xEE, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, - 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, - 0xF6, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, - 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFF -}; - static volatile sig_atomic_t got_siginfo; static void infohandler(int); @@ -1045,320 +227,7 @@ static void print_bpb(struct bpb *); static int ckgeom(const char *, u_int, const char *); static void mklabel(u_int8_t *, const char *); static int oklabel(const char *); -static int exfat_oklabel(const u_int8_t *, int len); static void setstr(u_int8_t *, const char *, size_t); -static void fill_exfat_buffer(u_int8_t *, u_int, const struct bpb *, const struct msdos_options *); - -static int -u8to16char(const u_char **u8strp, u_long *u8lenp, u_char **u16strp, u_long *u16lenp) { - u_long more; - unsigned temp; - u_char c; - - if (*u8lenp == 0) - return (0); - - c = (*u8strp)[0]; - - if ((c & 0x80) == 0) { - temp = c; - more = 0; - } else if ((c & 0xe0) == 0xc0) { *** 784 LINES SKIPPED *** From nobody Wed Aug 6 22:29:35 2025 X-Original-To: dev-commits-src-main@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 4by4jG0thkz64JNc; Wed, 06 Aug 2025 22:29:38 +0000 (UTC) (envelope-from glebius@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by4jF6zyWz3VdG; Wed, 06 Aug 2025 22:29:37 +0000 (UTC) (envelope-from glebius@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754519378; 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: in-reply-to:in-reply-to:references:references; bh=tDem6P9sUWjDRt40BG3VGcqApq2DserpS8BiyOFM31g=; b=czC6slSuwWqYlYXa5RJrx4GAtCPs0jTZyWTqA7HMyy2jZiiPBkXlGGm4EZ4+y1OanEMRc0 OwtIkoSecCFL120UhKg5Ptr9KTc6mAIsgh8cF86mZKnd7y1am6sdazjUSb7RVU29uMltFo rYzeD1uRrZoOFld8RIouPvcqpVZ3WbS8dXViHo7nn6KNGDG3ckP4ROvNcyvY69u2HbnFFT QtK4seN/1DBpZJzQXxBcv+sqtsdXyclBqz/X9ld6QpwLdqKu7vDcPU26MaVksn6b3wpdTo qZk4HnLdMtghgCD8MI0mpAo+/BvMJTKLvvVkHcAkosCyeJAIr1WGpUfPj3xTFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754519378; 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: in-reply-to:in-reply-to:references:references; bh=tDem6P9sUWjDRt40BG3VGcqApq2DserpS8BiyOFM31g=; b=GuKMg4BiMyi2OdwedKa2puSfBmRJpEOKp+C9BGDpZ+5ur9H9oKDA3EklL+f73WNWYVEFwR 2Up51Ngp1AUNvXQnMMVApoxp6zaKJ2LbEmAEdxqVbLucSjEKQjJy+dnut9fPEZkZ9UCfTN C+p0YY5PMCvuzCU69kAxuWvCxIPCsx/6gwUahXJeL2kD7yTavw3MV12ixzmIzKYlRsuXQ1 81TGEiem6TclF3bHAz4Kv2idtv79Aaj8iHgngSnliPvsvRzx9UrKqMu6UKuBeh1ktgnHyS ffR8KJ3OFpZeO7+VDXp1GOQmE0RvE4UGoS63vhCYK8NA+HJEYwjCrdmq0EStWw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754519378; a=rsa-sha256; cv=none; b=u4N5B7rMCEi8IVfPPHzhMg+RtLGGDbiYMjDv7pvE8EUPbnsPeMhM7LqzzpoSccOg7KhZ0U KlgDRA4MsZ85Sy9rJiR7l8m1geKwngkXoDpP7X2PfrkBAj9MlZJSYEgdbRLTdEXzkdr+yw q3ooB4bt4q9txoLM1KmC4q95Ud7hRib4fz3V3yzbR78wR4QaCpeOWrUTbQtQFjOKNUvqZV ChWjDDKDO0i1HSs5PT+FQT6UKZAhmlsu1xK15jm/HEXjZUuTWjVBWWS5CQOsUVl9hvEL85 E4rCWQguESfWPhFLEhskSxKYdrpE1jqSUx1MilQ3ab5gPFt6HSToGTsjFngv2g== Received: from cell.glebi.us (glebi.us [162.251.186.162]) (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: glebius) by smtp.freebsd.org (Postfix) with ESMTPSA id 4by4jF2tZYzQff; Wed, 06 Aug 2025 22:29:37 +0000 (UTC) (envelope-from glebius@freebsd.org) Date: Wed, 6 Aug 2025 15:29:35 -0700 From: Gleb Smirnoff To: Michael Tuexen Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: feeb19201dca - main - tcp: improve consistency of KASSERTs in tcp_sack.c Message-ID: References: <202508060830.5768UUcN052133@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508060830.5768UUcN052133@gitrepo.freebsd.org> On Wed, Aug 06, 2025 at 08:30:30AM +0000, Michael Tuexen wrote: M> When panicing, don't print the condition, which was violated, M> but the condition which holds at the time of the panic. M> M> Reviewed by: Nick Banks M> MFC after: 1 week M> Sponsored by: Netflix, Inc. M> Differential Revision: https://reviews.freebsd.org/D51726 M> --- M> sys/netinet/tcp_sack.c | 30 +++++++++++++++++------------- M> 1 file changed, 17 insertions(+), 13 deletions(-) M> M> diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c M> index 4405098a8620..f48e60207cc2 100644 M> --- a/sys/netinet/tcp_sack.c M> +++ b/sys/netinet/tcp_sack.c M> @@ -283,7 +283,7 @@ tcp_update_sack_list(struct tcpcb *tp, tcp_seq rcv_start, tcp_seq rcv_end) M> INP_WLOCK_ASSERT(tptoinpcb(tp)); M> M> /* Check arguments. */ M> - KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("rcv_start <= rcv_end")); M> + KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("SEG_GT(rcv_start, rcv_end)")); M> M> if ((rcv_start == rcv_end) && M> (tp->rcv_numsacks >= 1) && M> @@ -498,8 +498,8 @@ tcp_sackhole_free(struct tcpcb *tp, struct sackhole *hole) M> tp->snd_numholes--; M> atomic_subtract_int(&V_tcp_sack_globalholes, 1); M> M> - KASSERT(tp->snd_numholes >= 0, ("tp->snd_numholes >= 0")); M> - KASSERT(V_tcp_sack_globalholes >= 0, ("tcp_sack_globalholes >= 0")); M> + KASSERT(tp->snd_numholes >= 0, ("tp->snd_numholes < 0")); M> + KASSERT(V_tcp_sack_globalholes >= 0, ("tcp_sack_globalholes < 0")); IMHO, better just through MPASS() instead of self-repetitive KASSERT. -- Gleb Smirnoff From nobody Wed Aug 6 22:35:37 2025 X-Original-To: dev-commits-src-main@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 4by4rD2k5Cz64Jfy; Wed, 06 Aug 2025 22:35:40 +0000 (UTC) (envelope-from glebius@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by4rD11Lcz3X89; Wed, 06 Aug 2025 22:35:40 +0000 (UTC) (envelope-from glebius@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754519740; 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: in-reply-to:in-reply-to:references:references; bh=2FXKLfKTiIlBkOfWkwwt2rOTdKfCOaXHudbRl2mT43c=; b=nE486xCtqAekQVSuJKXerWGAailibeVAgrRPDbDr0s62sRm6mG6fTascH6BXLm15oDvP0e HlJdzYuFAe0KbkVsmC+Rkrcp61q9afE6i2pw9AZUziEFBzzJoc03xmas+FVzHOeOllZVnW yVZFAJ2SsqmBxfIjI7qmUWhtHSpBcNeyJZeoZZaKu88qiBsAvibO95dZiDDNPtSwr+zfIO kzQY1yVTAagdZDjKCUQxtNNhmZEjF1kEIo3Xzr+V0w5dWZRufyo4Q+kefWcy5WQ4L39fyt YwBJY3doAfQlgsJuVOaucvv32Xbhx7HFbyImovX8d/trnvKpyooOGzKBwM2HcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754519740; 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: in-reply-to:in-reply-to:references:references; bh=2FXKLfKTiIlBkOfWkwwt2rOTdKfCOaXHudbRl2mT43c=; b=Se8eCngoDH+BmPdcqTt8XTw+BzZcwE0d9MqKitDC5TFppPhcwoM+0Wt740sBbJMh6CYAc1 kTuVCd6deePr+SZ4U/41HBf3hJYklovKWFiLoxGdQCG/bWHp2Wd1p4txpnJPXiE41L8fzL gABrZPTS+VHvbBPYclcq/2zOaYdQmd1tCJcSlJCSsZg41H1cWMUwRLrWMZJ8UI/NE7Osok SKmHiou+aLCTNT6lHJ8H/oH5hUjroEgIPNWwZ+2lfBHgvBsnUzLspfcuUt6AyV17+sUWXM dt8MZvUjlF7vGIwM48SH1fJKosNR65RA/Ntw5R+4YhS+qwbiRacj8/cg+3URBA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754519740; a=rsa-sha256; cv=none; b=yO5bmNL6vp0Nkri+Inr+g9qMfW/k47ZkxRcnZ+h1OGR6AauI2JwxHV9/3Yrq1y7AZ0/1id kFr8QhM7EzUc/o6dqAeFWC6d0JcVrE1kJSzk0G2YyZpCUku1thK5aRho8BszrtSXVOn+0s LTOAOMqtdeNTkmzFlw3NX+Cc7PLGAmMSe1C/yN/pEVrwPtqLARdaVyctXpPzgTt65zqzTp FGeSYF1DBSJ1GX2kp2H8lYYudpWHtZx40KAq+3LDBtwkBAOHLCzf1+we2CVjhszMTufUCx 6+d8nH2zcHuve4SvNyYXdDd2Q84dDoQqACBtsoMcd9p/ISryurgRE2S7Esy5Fg== Received: from cell.glebi.us (glebi.us [162.251.186.162]) (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: glebius) by smtp.freebsd.org (Postfix) with ESMTPSA id 4by4rC3DFxzR0k; Wed, 06 Aug 2025 22:35:39 +0000 (UTC) (envelope-from glebius@freebsd.org) Date: Wed, 6 Aug 2025 15:35:37 -0700 From: Gleb Smirnoff To: Michael Tuexen Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bcb298fa9e23 - main - sctp, tcp, udp: improve deferred computation of checksums Message-ID: References: <202508010817.5718HZM6067171@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508010817.5718HZM6067171@gitrepo.freebsd.org> Michael, On Fri, Aug 01, 2025 at 08:17:35AM +0000, Michael Tuexen wrote: M> When the SCTP, TCP, or UDP implementation send a packet, it does not M> compute the corresponding checksum but defers that. The network layer M> will determine whether the network interface selected for the packet M> has the requested capability and computes the checksum in software, M> if the selected network interface doesn't have the requested M> capability. M> Do this not only for packets being sent by the local SCTP, TCP, M> and UDP stack, but also when forwarding packets. Furthermore, when M> such packets are delivered to a local SCTP, TCP, or UDP stack, do not M> compute or validate the checksum, since such packets never have been on M> the wire. M> This allows to support checksum offloading also in the case of local M> virtual machines or jails. M> Support for epair, vtnet, and tap interfaces will be added in M> separate commits. Not a request for any action, but a general comment on the topic. Imagine we are developing an IP stack from scratch for modern computers. Most NICs do hardware checksumming, large fraction of installations run in containers/VMs and communicate via virtual interfaces. With modern reality we would probably do not do any checksumming in the stack at all, just completely ignore the checksum field. It would always be obligation of the NIC driver to care about the checksums. The existing software checksumming code would be just a library that drivers for legacy hardware call. Local traffic won't set and won't check checksums neither any related flags. -- Gleb Smirnoff From nobody Wed Aug 6 22:41:35 2025 X-Original-To: dev-commits-src-main@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 4by4z36XBsz64JhM; Wed, 06 Aug 2025 22:41:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by4z35vvJz3Y18; Wed, 06 Aug 2025 22:41:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754520095; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WfGB2mbEvF5vVnH42Z+/G6yddR7SOAnrHg/6SjVwT0s=; b=C3Q0pMx/3AQ8Nh067cwiaJd24GtVCTmY3fvTdtRWA/G5DSsfOd/Wj2MONbMVGcW4WdVtyQ A5WAf+OogsxDqeNRGnlhGIBqtiTtmwlGNf/cnA0DX+xbVy/6Uixm//9UP2B93J0VTnijMs ZxrK5wAW97110u8ueWdjddXk6vAItOoaS8pIydlQHhhGySmx+LjDzbLlptCMy/aTAGYFnH USfw4fJmiimCb2Qyf3bEi4dk2HM9BZEUlycNT0SYHkfchk8bKQLxPml/G4UwrbNGqUBUOx nhkiZpJyxQtQxW+iBXH0/+dooj1O5bh3+vFmqs55JNpPZalpXtT57lpcYBqtEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754520095; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WfGB2mbEvF5vVnH42Z+/G6yddR7SOAnrHg/6SjVwT0s=; b=sJirtPJ5iYGbGSF5mq23C+Vn5ogC7LQqywGQdaAfIXOCa5hJ1VRRAW1ulPp9ICaw+H13hq C8mDgy5f57wZzeBxy1ngAQpx2bFrFjovm2Pf5Ad2jwTYway9FumKaYZpGoOaWXez2OEUgj LzeVwj9u4kL3Q2euPwDVZLlLBvbnYZHZVRxIOZ+tn1EXQilobB6OCgoMt2C+X8+ZvbzZAQ 9f4RJ1Eaw7XXABGOlkxCB6TnR5/XPBmK5HHJ7UgUdD/Jvx6x1PRSesJ3/B6jTNLbPZ9i/c 2k3ZOjzY0XSHfZtDTm3J1XPUn0IZm3fH6JbDniF9amfy4nVMfTuauT4p+estFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754520095; a=rsa-sha256; cv=none; b=ktTNs8ylvN5W/yd57ZumJCRDRLEwlDav97Mfe1/MLuRdEqSOdIhOtQEXGGRIs+uXN5UK3S dplQ0zqh1+z5UId4AKAfTfvxay/2EJpxXBWHneXwnj7R+IX66zE1CHrVKu0fP4o00QbAjB 4TSa5WluUQpG7QexYJ7n4WlxsjI3hvekW7b3OVySW9V3CT5UwWG2QRvdCi4fqGmymVdBWm j4y2zjkNJOn3GodRGmaRwMsAc4SoG7AxXykr/BAEWRJryxMqramJoXI8axDCNCjOfWFsCR U1y9y585B8UxMKLXAmDRLuG0ItxOhC/nsJFqEDyAbP35obOJCIe7gpcyU8lfuQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by4z35CX5zh1F; Wed, 06 Aug 2025 22:41:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576MfZ7Z054054; Wed, 6 Aug 2025 22:41:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576MfZV6054051; Wed, 6 Aug 2025 22:41:35 GMT (envelope-from git) Date: Wed, 6 Aug 2025 22:41:35 GMT Message-Id: <202508062241.576MfZV6054051@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 554651ebf1c1 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 554651ebf1c1798fa8fb2560cab761ac3d219555 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=554651ebf1c1798fa8fb2560cab761ac3d219555 commit 554651ebf1c1798fa8fb2560cab761ac3d219555 Author: Rick Macklem AuthorDate: 2025-08-06 22:36:21 +0000 Commit: Rick Macklem CommitDate: 2025-08-06 22:37:20 +0000 kgssapi: Fix the kgssapi so that it can use MIT Kerberos Without this patch, the kgssapi uses detailed knowledge of the internal context structure for Heimdal (up to vers 1.5). It also does four upcalls to the gssd daemon to establish a server side RPCSEC_GSS context. This patch adds support for three new upcalls: gss_init_sec_context_lucid_v1() gss_accept_sec_context_lucid_v1() gss_supports_lucid() These are used to determine if the gssd can do the upcalls and uses them to avoid needing detailed Heimdal knowledge if they are supported. gss_init_sec_context_lucid_v1() and gss_accept_sec_context_lucid_v1() return the information needed to complete the RPCSEC_GSS context. They use gss_krb5_export_lucid_sec_context() to acquire the information from the libraries. (MIT Kerberos supports this and I believe newer versions of Heimdal does, as well). This avoids the need for detailed knowledge about MIT's internals and replaces the 2 or 4 (initiator or acceptor) upcalls with a single upcall to create the RPCSEC_GSS context. The old Heimdal (up to 1.5) support is left intact, but should be removed whenever Heimdal 1.5 is removed from /usr/src. It also modifies the Makefile so that the gssd is only built when MK_KERBEROS_SUPPORT != "no", since it is useless without Kerberos. Reviewed by: cy Differential Revision: https://reviews.freebsd.org/D51731 Differential Revision: https://reviews.freebsd.org/D51733 --- sys/kgssapi/gss_accept_sec_context.c | 145 +++++++++- sys/kgssapi/gss_impl.c | 8 +- sys/kgssapi/gss_init_sec_context.c | 145 +++++++++- sys/kgssapi/gssapi.h | 42 +++ sys/kgssapi/gssapi_impl.h | 2 +- sys/kgssapi/gssd.x | 79 +++++- sys/kgssapi/krb5/krb5_mech.c | 80 ++++++ sys/rpc/rpcsec_gss/rpcsec_gss.c | 50 +++- sys/rpc/rpcsec_gss/rpcsec_gss_int.h | 6 + sys/rpc/rpcsec_gss/svc_rpcsec_gss.c | 122 +++++++-- usr.sbin/Makefile | 2 + usr.sbin/gssd/Makefile | 9 +- usr.sbin/gssd/gssd.c | 506 ++++++++++++++++++++++++++++++++--- 13 files changed, 1110 insertions(+), 86 deletions(-) diff --git a/sys/kgssapi/gss_accept_sec_context.c b/sys/kgssapi/gss_accept_sec_context.c index 723ed9db9072..8a49b85be852 100644 --- a/sys/kgssapi/gss_accept_sec_context.c +++ b/sys/kgssapi/gss_accept_sec_context.c @@ -41,6 +41,11 @@ #include "gssd.h" #include "kgss_if.h" +/* + * This function should only be called when the gssd + * daemon running on the system is an old one that + * does not use gss_krb5_export_lucid_sec_context(). + */ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, const gss_cred_id_t acceptor_cred_handle, @@ -138,7 +143,145 @@ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx); + res.major_status = kgss_transfer_context(ctx, NULL); + + return (res.major_status); +} + +/* + * This function should be called when the gssd daemon is + * one that uses gss_krb5_export_lucid_sec_context(). + * There is a lot of code common with + * gss_accept_sec_context(). However, the structures used + * are not the same and future changes may be needed for + * this one. As such, I have not factored out the common + * code. + * gss_supports_lucid() may be used to check to see if the + * gssd daemon uses gss_krb5_export_lucid_sec_context(). + */ +OM_uint32 gss_accept_sec_context_lucid_v1(OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, + const gss_cred_id_t acceptor_cred_handle, + const gss_buffer_t input_token, + const gss_channel_bindings_t input_chan_bindings, + gss_name_t *src_name, + gss_OID *mech_type, + gss_buffer_t output_token, + OM_uint32 *ret_flags, + OM_uint32 *time_rec, + gss_cred_id_t *delegated_cred_handle, + gss_buffer_t exported_name, + uid_t *uidp, + gid_t *gidp, + int *numgroups, + gid_t *groups) +{ + struct accept_sec_context_lucid_v1_res res; + struct accept_sec_context_lucid_v1_args args; + enum clnt_stat stat; + gss_ctx_id_t ctx = *context_handle; + gss_name_t name; + gss_cred_id_t cred; + CLIENT *cl; + + cl = kgss_gssd_client(); + if (cl == NULL) { + *minor_status = 0; + return (GSS_S_FAILURE); + } + + if (ctx) + args.ctx = ctx->handle; + else + args.ctx = 0; + if (acceptor_cred_handle) + args.cred = acceptor_cred_handle->handle; + else + args.cred = 0; + args.input_token = *input_token; + args.input_chan_bindings = input_chan_bindings; + + bzero(&res, sizeof(res)); + stat = gssd_accept_sec_context_lucid_v1_1(&args, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (res.major_status != GSS_S_COMPLETE + && res.major_status != GSS_S_CONTINUE_NEEDED) { + *minor_status = res.minor_status; + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); + return (res.major_status); + } + + *minor_status = res.minor_status; + + if (!ctx) { + ctx = kgss_create_context(res.mech_type); + if (!ctx) { + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); + *minor_status = 0; + return (GSS_S_BAD_MECH); + } + } + *context_handle = ctx; + + ctx->handle = res.ctx; + name = malloc(sizeof(struct _gss_name_t), M_GSSAPI, M_WAITOK); + name->handle = res.src_name; + if (src_name) { + *src_name = name; + } else { + OM_uint32 junk; + gss_release_name(&junk, &name); + } + if (mech_type) + *mech_type = KGSS_MECH_TYPE(ctx); + kgss_copy_buffer(&res.output_token, output_token); + if (ret_flags) + *ret_flags = res.ret_flags; + if (time_rec) + *time_rec = res.time_rec; + cred = malloc(sizeof(struct _gss_cred_id_t), M_GSSAPI, M_WAITOK); + cred->handle = res.delegated_cred_handle; + if (delegated_cred_handle) { + *delegated_cred_handle = cred; + } else { + OM_uint32 junk; + gss_release_cred(&junk, &cred); + } + + /* + * If the context establishment is complete, export it from + * userland and hand the result (which includes key material + * etc.) to the kernel implementation. + */ + if (res.major_status == GSS_S_COMPLETE) { + int i, n; + + /* First, get the unix credentials. */ + *uidp = res.uid; + *gidp = res.gid; + n = res.gidlist.gidlist_len; + if (n > *numgroups) + n = *numgroups; + for (i = 0; i < n; i++) + groups[i] = res.gidlist.gidlist_val[i]; + *numgroups = n; + + /* Next, get the exported_name. */ + kgss_copy_buffer(&res.exported_name, exported_name); + + /* Now, handle the lucid credential setup. */ + res.major_status = kgss_transfer_context(ctx, &res.lucid); + if (res.major_status != GSS_S_COMPLETE) + printf("gss_accept_sec_context_lucid_v1: " + "transfer failed\n"); + } + + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); return (res.major_status); } diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c index e2569bea61f9..c9cd4d880695 100644 --- a/sys/kgssapi/gss_impl.c +++ b/sys/kgssapi/gss_impl.c @@ -192,13 +192,19 @@ kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token) } OM_uint32 -kgss_transfer_context(gss_ctx_id_t ctx) +kgss_transfer_context(gss_ctx_id_t ctx, void *lctx) { struct export_sec_context_res res; struct export_sec_context_args args; enum clnt_stat stat; OM_uint32 maj_stat; + if (lctx != NULL) { + maj_stat = KGSS_IMPORT(ctx, MIT_V1, lctx); + ctx->handle = 0; + return (maj_stat); + } + KGSS_CURVNET_SET_QUIET(KGSS_TD_TO_VNET(curthread)); if (!KGSS_VNET(kgss_gssd_handle)) { KGSS_CURVNET_RESTORE(); diff --git a/sys/kgssapi/gss_init_sec_context.c b/sys/kgssapi/gss_init_sec_context.c index fa0d3fb2ae19..a0f48fda8b29 100644 --- a/sys/kgssapi/gss_init_sec_context.c +++ b/sys/kgssapi/gss_init_sec_context.c @@ -42,6 +42,11 @@ #include "gssd.h" #include "kgss_if.h" +/* + * This function should only be called when the gssd + * daemon running on the system is an old one that + * does not use gss_krb5_export_lucid_sec_context(). + */ OM_uint32 gss_init_sec_context(OM_uint32 * minor_status, const gss_cred_id_t initiator_cred_handle, @@ -133,7 +138,145 @@ gss_init_sec_context(OM_uint32 * minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx); + res.major_status = kgss_transfer_context(ctx, NULL); + + return (res.major_status); +} + +OM_uint32 +gss_supports_lucid(uint32_t *minor_status, uint32_t *vers) +{ + struct supports_lucid_res res; + enum clnt_stat stat; + CLIENT *cl; + + *minor_status = 0; + + cl = kgss_gssd_client(); + if (cl == NULL) + return (GSS_S_FAILURE); + + bzero(&res, sizeof(res)); + stat = gssd_supports_lucid_1(NULL, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (vers) + *vers = res.vers; + + return (res.major_status); +} + +/* + * This function should be called when the gssd daemon is + * one that uses gss_krb5_export_lucid_sec_context(). + * There is a lot of code common with + * gss_init_sec_context(). However, the structures used + * are not the same and future changes may be needed for + * this one. As such, I have not factored out the common + * code. + * gss_supports_lucid() may be used to check to see if the + * gssd daemon uses gss_krb5_export_lucid_sec_context(). + */ +OM_uint32 +gss_init_sec_context_lucid_v1(OM_uint32 * minor_status, + const gss_cred_id_t initiator_cred_handle, + gss_ctx_id_t * context_handle, + const gss_name_t target_name, + const gss_OID input_mech_type, + OM_uint32 req_flags, + OM_uint32 time_req, + const gss_channel_bindings_t input_chan_bindings, + const gss_buffer_t input_token, + gss_OID * actual_mech_type, + gss_buffer_t output_token, + OM_uint32 * ret_flags, + OM_uint32 * time_rec) +{ + struct init_sec_context_lucid_v1_res res; + struct init_sec_context_lucid_v1_args args; + enum clnt_stat stat; + gss_ctx_id_t ctx = *context_handle; + CLIENT *cl; + + *minor_status = 0; + + cl = kgss_gssd_client(); + if (cl == NULL) + return (GSS_S_FAILURE); + + args.uid = curthread->td_ucred->cr_uid; + if (initiator_cred_handle) + args.cred = initiator_cred_handle->handle; + else + args.cred = 0; + if (ctx) + args.ctx = ctx->handle; + else + args.ctx = 0; + args.name = target_name->handle; + args.mech_type = input_mech_type; + args.req_flags = req_flags; + args.time_req = time_req; + args.input_chan_bindings = input_chan_bindings; + if (input_token) + args.input_token = *input_token; + else { + args.input_token.length = 0; + args.input_token.value = NULL; + } + + bzero(&res, sizeof(res)); + stat = gssd_init_sec_context_lucid_v1_1(&args, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (res.major_status != GSS_S_COMPLETE + && res.major_status != GSS_S_CONTINUE_NEEDED) { + *minor_status = res.minor_status; + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); + return (res.major_status); + } + + *minor_status = res.minor_status; + + if (!ctx) { + ctx = kgss_create_context(res.actual_mech_type); + if (!ctx) { + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); + *minor_status = 0; + return (GSS_S_BAD_MECH); + } + } + *context_handle = ctx; + ctx->handle = res.ctx; + if (actual_mech_type) + *actual_mech_type = KGSS_MECH_TYPE(ctx); + kgss_copy_buffer(&res.output_token, output_token); + if (ret_flags) + *ret_flags = res.ret_flags; + if (time_rec) + *time_rec = res.time_rec; + + /* + * If the context establishment is complete, export it from + * userland and hand the result (which includes key material + * etc.) to the kernel implementation. + */ + if (res.major_status == GSS_S_COMPLETE) { + res.major_status = kgss_transfer_context(ctx, &res.lucid); + if (res.major_status != GSS_S_COMPLETE) + printf("gss_init_sec_context_lucid_v1: " + "transfer failed\n"); + } + + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); return (res.major_status); } diff --git a/sys/kgssapi/gssapi.h b/sys/kgssapi/gssapi.h index 37cc8a1a5a09..cd4a4b508cc5 100644 --- a/sys/kgssapi/gssapi.h +++ b/sys/kgssapi/gssapi.h @@ -422,6 +422,28 @@ OM_uint32 gss_init_sec_context OM_uint32 * /* time_rec */ ); +OM_uint32 gss_init_sec_context_lucid_v1 + (OM_uint32 *, /* minor_status */ + const gss_cred_id_t, /* initiator_cred_handle */ + gss_ctx_id_t *, /* context_handle */ + const gss_name_t, /* target_name */ + const gss_OID, /* mech_type */ + OM_uint32, /* req_flags */ + OM_uint32, /* time_req */ + const gss_channel_bindings_t, + /* input_chan_bindings */ + const gss_buffer_t, /* input_token */ + gss_OID *, /* actual_mech_type */ + gss_buffer_t, /* output_token */ + OM_uint32 *, /* ret_flags */ + OM_uint32 * /* time_rec */ + ); + +OM_uint32 gss_supports_lucid + (OM_uint32 *, /* minor_status */ + OM_uint32 * /* vers */ + ); + OM_uint32 gss_accept_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ @@ -437,6 +459,26 @@ OM_uint32 gss_accept_sec_context gss_cred_id_t * /* delegated_cred_handle */ ); +OM_uint32 gss_accept_sec_context_lucid_v1 + (OM_uint32 *, /* minor_status */ + gss_ctx_id_t *, /* context_handle */ + const gss_cred_id_t, /* acceptor_cred_handle */ + const gss_buffer_t, /* input_token_buffer */ + const gss_channel_bindings_t, + /* input_chan_bindings */ + gss_name_t *, /* src_name */ + gss_OID *, /* mech_type */ + gss_buffer_t, /* output_token */ + OM_uint32 *, /* ret_flags */ + OM_uint32 *, /* time_rec */ + gss_cred_id_t *, /* delegated_cred_handle */ + gss_buffer_t, /* exported_name */ + uid_t *, /* Unix cred */ + gid_t *, + int *, /* Number of groups */ + gid_t * /* groups list */ + ); + OM_uint32 gss_delete_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ diff --git a/sys/kgssapi/gssapi_impl.h b/sys/kgssapi/gssapi_impl.h index 3279dc8da122..d8a85f20a602 100644 --- a/sys/kgssapi/gssapi_impl.h +++ b/sys/kgssapi/gssapi_impl.h @@ -78,5 +78,5 @@ extern gss_OID kgss_find_mech_by_name(const char *name); extern const char *kgss_find_mech_by_oid(const gss_OID oid); extern gss_ctx_id_t kgss_create_context(gss_OID mech_type); extern void kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token); -extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx); +extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx, void *lctx); extern void kgss_copy_buffer(const gss_buffer_t from, gss_buffer_t to); diff --git a/sys/kgssapi/gssd.x b/sys/kgssapi/gssd.x index b50f39b33554..bf63ba95f8df 100644 --- a/sys/kgssapi/gssd.x +++ b/sys/kgssapi/gssd.x @@ -48,6 +48,21 @@ typedef uint64_t gssd_ctx_id_t; typedef uint64_t gssd_cred_id_t; typedef uint64_t gssd_name_t; +struct kgss_lucid_desc { + uint32_t initiate; + uint32_t endtime; + uint64_t send_seq; + uint64_t recv_seq; + uint32_t protocol; + uint32_t rfc_sign; + uint32_t rfc_seal; + uint32_t have_subkey; + uint32_t ctx_type; + gss_buffer_desc ctx_key; + uint32_t subkey_type; + gss_buffer_desc subkey_key; +}; + struct init_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -70,6 +85,29 @@ struct init_sec_context_args { gss_buffer_desc input_token; }; +struct init_sec_context_lucid_v1_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gss_OID actual_mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; + kgss_lucid_desc lucid; +}; + +struct init_sec_context_lucid_v1_args { + uint32_t uid; + gssd_cred_id_t cred; + gssd_ctx_id_t ctx; + gssd_name_t name; + gss_OID mech_type; + uint32_t req_flags; + uint32_t time_req; + gss_channel_bindings_t input_chan_bindings; + gss_buffer_desc input_token; +}; + struct accept_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -89,6 +127,30 @@ struct accept_sec_context_args { gss_channel_bindings_t input_chan_bindings; }; +struct accept_sec_context_lucid_v1_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gssd_name_t src_name; + gss_OID mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; + gssd_cred_id_t delegated_cred_handle; + kgss_lucid_desc lucid; + gss_buffer_desc exported_name; + uint32_t uid; + uint32_t gid; + uint32_t gidlist<>; +}; + +struct accept_sec_context_lucid_v1_args { + gssd_ctx_id_t ctx; + gssd_cred_id_t cred; + gss_buffer_desc input_token; + gss_channel_bindings_t input_chan_bindings; +}; + struct delete_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -101,7 +163,8 @@ struct delete_sec_context_args { enum sec_context_format { KGSS_HEIMDAL_0_6, - KGSS_HEIMDAL_1_1 + KGSS_HEIMDAL_1_1, + MIT_V1 }; struct export_sec_context_res { @@ -229,6 +292,11 @@ struct ip_to_dns_args { char ip_addr; }; +struct supports_lucid_res { + uint32_t major_status; + uint32_t vers; +}; + program GSSD { version GSSDVERS { void GSSD_NULL(void) = 0; @@ -274,5 +342,14 @@ program GSSD { ip_to_dns_res GSSD_IP_TO_DNS(ip_to_dns_args) = 14; + + init_sec_context_lucid_v1_res + GSSD_INIT_SEC_CONTEXT_LUCID_V1(init_sec_context_lucid_v1_args) = 15; + + accept_sec_context_lucid_v1_res + GSSD_ACCEPT_SEC_CONTEXT_LUCID_V1(accept_sec_context_lucid_v1_args) = 16; + + supports_lucid_res + GSSD_SUPPORTS_LUCID(void) = 17; } = 1; } = 0x40677373; diff --git a/sys/kgssapi/krb5/krb5_mech.c b/sys/kgssapi/krb5/krb5_mech.c index 0b8fbc90fcd1..59d5b120e4fb 100644 --- a/sys/kgssapi/krb5/krb5_mech.c +++ b/sys/kgssapi/krb5/krb5_mech.c @@ -217,6 +217,18 @@ copy_key(struct krb5_keyblock *from, struct krb5_keyblock **to) *to = NULL; } +static void +copy_lucid_key(gss_buffer_desc *from, uint32_t type, struct krb5_keyblock *to) +{ + + to->kk_type = type; + to->kk_key.kd_length = from->length; + if (from->length > 0) { + to->kk_key.kd_data = malloc(from->length, M_GSSAPI, M_WAITOK); + memcpy(to->kk_key.kd_data, from->value, from->length); + } +} + /* * Return non-zero if we are initiator. */ @@ -401,6 +413,70 @@ krb5_init(gss_ctx_id_t ctx) mtx_init(&kc->kc_lock, "krb5 gss lock", NULL, MTX_DEF); } +static OM_uint32 +krb5_lucid_import(gss_ctx_id_t ctx, + enum sec_context_format format, + const gss_buffer_t context_token) +{ + struct krb5_context *kc = (struct krb5_context *)ctx; + kgss_lucid_desc *lctx = (kgss_lucid_desc *)context_token; + OM_uint32 res; + + kc->kc_more_flags = 0; + if (lctx->protocol == 0) { + kc->kc_cksumtype = lctx->rfc_sign; + kc->kc_keytype = lctx->rfc_seal; + copy_lucid_key(&lctx->ctx_key, lctx->ctx_type, + &kc->kc_keyblock); + } else if (lctx->protocol == 1) { + if (lctx->have_subkey != 0) { + if (lctx->initiate != 0) + copy_lucid_key(&lctx->subkey_key, + lctx->subkey_type, + &kc->kc_remote_subkey); + else + copy_lucid_key(&lctx->subkey_key, + lctx->subkey_type, + &kc->kc_local_subkey); + kc->kc_cksumtype = lctx->subkey_type; + kc->kc_keytype = lctx->subkey_type; + kc->kc_more_flags |= ACCEPTOR_SUBKEY; + } else { + if (lctx->initiate != 0) + copy_lucid_key(&lctx->ctx_key, + lctx->ctx_type, + &kc->kc_remote_subkey); + else + copy_lucid_key(&lctx->ctx_key, + lctx->ctx_type, + &kc->kc_local_subkey); + kc->kc_cksumtype = lctx->ctx_type; + kc->kc_keytype = lctx->ctx_type; + } + } else { + return (GSS_S_DEFECTIVE_TOKEN); + } + kc->kc_local_seqnumber = lctx->send_seq; + kc->kc_remote_seqnumber = lctx->recv_seq; + if (lctx->initiate != 0) + kc->kc_more_flags |= LOCAL; + kc->kc_lifetime = lctx->endtime; + kc->kc_msg_order.km_flags = 0; + + res = get_keys(kc); + if (GSS_ERROR(res)) + return (res); + + /* + * We don't need these anymore. + */ + delete_keyblock(&kc->kc_keyblock); + delete_keyblock(&kc->kc_local_subkey); + delete_keyblock(&kc->kc_remote_subkey); + + return (GSS_S_COMPLETE); +} + static OM_uint32 krb5_import(gss_ctx_id_t ctx, enum sec_context_format format, @@ -413,6 +489,10 @@ krb5_import(gss_ctx_id_t ctx, uint32_t flags; int i; + /* For MIT, just call krb5_lucid_import(). */ + if (format == MIT_V1) + return (krb5_lucid_import(ctx, format, context_token)); + /* * We support heimdal 0.6 and heimdal 1.1 */ diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss.c b/sys/rpc/rpcsec_gss/rpcsec_gss.c index 983dd251f81f..53770d139c61 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/rpcsec_gss.c @@ -746,6 +746,7 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) struct rpc_callextra ext; gss_OID mech_oid; gss_OID_set mechlist; + static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in rpc_gss_refresh()"); @@ -852,6 +853,14 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) goto out; } + if (my_krb_imp == KRBIMP_UNKNOWN) { + maj_stat = gss_supports_lucid(&min_stat, NULL); + if (maj_stat == GSS_S_COMPLETE) + my_krb_imp = KRBIMP_MIT; + else + my_krb_imp = KRBIMP_HESIOD1; + } + /* GSS context establishment loop. */ memset(&recv_token, 0, sizeof(recv_token)); memset(&gr, 0, sizeof(gr)); @@ -862,19 +871,34 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) for (;;) { crsave = td->td_ucred; td->td_ucred = gd->gd_ucred; - maj_stat = gss_init_sec_context(&min_stat, - gd->gd_options.my_cred, - &gd->gd_ctx, - name, - gd->gd_mech, - gd->gd_options.req_flags, - gd->gd_options.time_req, - gd->gd_options.input_channel_bindings, - recv_tokenp, - &gd->gd_mech, /* used mech */ - &send_token, - &options_ret->ret_flags, - &options_ret->time_req); + if (my_krb_imp == KRBIMP_MIT) + maj_stat = gss_init_sec_context_lucid_v1(&min_stat, + gd->gd_options.my_cred, + &gd->gd_ctx, + name, + gd->gd_mech, + gd->gd_options.req_flags, + gd->gd_options.time_req, + gd->gd_options.input_channel_bindings, + recv_tokenp, + &gd->gd_mech, /* used mech */ + &send_token, + &options_ret->ret_flags, + &options_ret->time_req); + else + maj_stat = gss_init_sec_context(&min_stat, + gd->gd_options.my_cred, + &gd->gd_ctx, + name, + gd->gd_mech, + gd->gd_options.req_flags, + gd->gd_options.time_req, + gd->gd_options.input_channel_bindings, + recv_tokenp, + &gd->gd_mech, /* used mech */ + &send_token, + &options_ret->ret_flags, + &options_ret->time_req); td->td_ucred = crsave; /* diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h index 3d643af8c498..02a7767220de 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h +++ b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h @@ -73,6 +73,12 @@ struct rpc_gss_init_res { /* Maximum sequence number value. */ #define MAXSEQ 0x80000000 +enum krb_imp { + KRBIMP_UNKNOWN, + KRBIMP_HESIOD1, + KRBIMP_MIT +}; + /* Prototypes. */ __BEGIN_DECLS diff --git a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c index 51077c71822c..e047c557c712 100644 --- a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c @@ -925,9 +925,29 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, OM_uint32 maj_stat = 0, min_stat = 0, ret_flags; OM_uint32 cred_lifetime; struct svc_rpc_gss_svc_name *sname; + gss_buffer_desc export_name; + rpc_gss_ucred_t *uc = &client->cl_ucred; + int numgroups; + static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in svc_rpc_gss_accept_context()"); + if (my_krb_imp == KRBIMP_UNKNOWN) { + maj_stat = gss_supports_lucid(&min_stat, NULL); + if (maj_stat == GSS_S_COMPLETE) + my_krb_imp = KRBIMP_MIT; + else + my_krb_imp = KRBIMP_HESIOD1; + min_stat = 0; + } + + if (my_krb_imp == KRBIMP_MIT) { + uc->uid = 65534; + uc->gid = 65534; + uc->gidlist = client->cl_gid_storage; + numgroups = NGROUPS; + } + /* Deserialize arguments. */ memset(&recv_tok, 0, sizeof(recv_tok)); @@ -949,18 +969,38 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, if (sname->sn_program == rqst->rq_prog && sname->sn_version == rqst->rq_vers) { retry: - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - &client->cl_creds); + if (my_krb_imp == KRBIMP_MIT) + gr->gr_major = + gss_accept_sec_context_lucid_v1( + &gr->gr_minor, + &client->cl_ctx, + sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + &client->cl_creds, + &export_name, + &uc->uid, + &uc->gid, + &numgroups, + &uc->gidlist[0]); + else + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + &client->cl_creds); if (gr->gr_major == GSS_S_CREDENTIALS_EXPIRED) { /* @@ -982,18 +1022,37 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, return (FALSE); } } else { - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - client->cl_sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - NULL); + if (my_krb_imp == KRBIMP_MIT) + gr->gr_major = gss_accept_sec_context_lucid_v1( + &gr->gr_minor, + &client->cl_ctx, + client->cl_sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + NULL, + &export_name, + &uc->uid, + &uc->gid, + &numgroups, + &uc->gidlist[0]); + else + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + client->cl_sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + NULL); } sx_xunlock(&svc_rpc_gss_lock); @@ -1009,8 +1068,12 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, rpc_gss_log_status("accept_sec_context", client->cl_mech, gr->gr_major, gr->gr_minor); client->cl_state = CLIENT_STALE; + if (my_krb_imp == KRBIMP_MIT) + uc->gidlen = 0; return (TRUE); } + if (my_krb_imp == KRBIMP_MIT) + uc->gidlen = numgroups; gr->gr_handle.value = &client->cl_id; gr->gr_handle.length = sizeof(client->cl_id); @@ -1022,8 +1085,6 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, client->cl_done_callback = FALSE; if (gr->gr_major == GSS_S_COMPLETE) { - gss_buffer_desc export_name; - /* * Change client expiration time to be near when the * client creds expire (or 24 hours if we can't figure @@ -1046,8 +1107,10 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, */ client->cl_rawcred.version = RPCSEC_GSS_VERSION; rpc_gss_oid_to_mech(mech, &client->cl_rawcred.mechanism); - maj_stat = gss_export_name(&min_stat, client->cl_cname, - &export_name); + maj_stat = GSS_S_COMPLETE; + if (my_krb_imp != KRBIMP_MIT) + maj_stat = gss_export_name(&min_stat, client->cl_cname, + &export_name); if (maj_stat != GSS_S_COMPLETE) { rpc_gss_log_status("gss_export_name", client->cl_mech, maj_stat, min_stat); @@ -1068,7 +1131,8 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, * Use gss_pname_to_uid to map to unix creds. For * kerberos5, this uses krb5_aname_to_localname. */ - svc_rpc_gss_build_ucred(client, client->cl_cname); + if (my_krb_imp != KRBIMP_MIT) + svc_rpc_gss_build_ucred(client, client->cl_cname); svc_rpc_gss_set_flavor(client); gss_release_name(&min_stat, &client->cl_cname); *** 693 LINES SKIPPED *** From nobody Wed Aug 6 22:44:57 2025 X-Original-To: dev-commits-src-main@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 4by5305Xg9z64K5R; Wed, 06 Aug 2025 22:45:00 +0000 (UTC) (envelope-from glebius@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by5304y3kz3YYq; Wed, 06 Aug 2025 22:45:00 +0000 (UTC) (envelope-from glebius@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754520300; 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: in-reply-to:in-reply-to:references:references; bh=xuC1kwrSttJtUtzIYO0VrJOLDa+EKCr8Sifw59TVWT4=; b=XHzQZgJW4gZWE+377ewQ5Ng/TCKKkGfVYNT50jIPoN2Ficd/OlIf/pYrKd9Hw5BhdnsWut rkdyrW5kCvzD82s+JqiADQawnh1D+SLiklSQms5LM5KB2BtfClQmqJReElbdFeN8yUbbZ2 3L2rywL9BPY0yDX4DNkhzs/Sg4PkEPdG8FBZL6X+jF43GoFg7vxzBkgZv8Y9o/Dgf4iABR 041Nz3gW3durp9giXFuMXavGOWZzvi7G4QkLXQbJ5UmmjwmEAgS8bxkdENXgEUST/md1sE 5DL+YQFr0+560kLQUFaZQYqMBGhVnewukxnZPcTklsiX3cqQfsUb+AwsH+Zp1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754520300; 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: in-reply-to:in-reply-to:references:references; bh=xuC1kwrSttJtUtzIYO0VrJOLDa+EKCr8Sifw59TVWT4=; b=mLfgxNMsvYaFRTtTCR4wp/vpd9EvESx/H+BPcrqn7PuujqKCsUiPpH+wRAop9qS1rHoV22 oBHW/aPLlvgaFztCuE+dnBcCCrsaK/IEC1QBAbna1+8RkRtQ47lC5Q8xup77DMqvAt/uIj z0+y2WA8sBIawnH7CfzLz4WGYELkLtXAUdW7NtPURVM763ZBHvCpulzV3iJUTL7CxjhrRb 1Jz26s0r2YuMTpA0fgq4RURJRoD3Rm3zUlay45QfNHhpYWbusDjcSezpM5zIyNO8I1KEfJ gKSUXrvc9gHFq7+X5xPW7sVQfm2cdvG/+za70W1ll1GSf3w5IH99XzY6BVffAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754520300; a=rsa-sha256; cv=none; b=jk1kTn03DjuvEe02u74D82v+N918oUezv5F+mFdwABiNVdL/DWWEVFgLtPdDz5hyYnO3g0 NYxRFWXQ6rSN2QAPcHeaAFs0gwH3dX88CnHgvHvPHI9psS+7YyJQOKAMmZ4f25D2TiM7Ib eshtipmGSk1bfx68B6CmyyZDA52OJ55dTU9tZpUe4Qo2+OMwTv0XXeFMUYjKhKBtnMM4Ck Zv81vjCLbWoQQxp6evlBuYYAOulGy2hJHzDcCkI3AL/OivhtQw8P7sLK3EGqbPXlTjmMSE TwqWCTVp2qQFFvxfGcppJTGUlIUIhpQTGaPOoWU0HFkYmmgJ0WK2RlhtHV6CXg== Received: from cell.glebi.us (glebi.us [162.251.186.162]) (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: glebius) by smtp.freebsd.org (Postfix) with ESMTPSA id 4by53010DxzQpl; Wed, 06 Aug 2025 22:44:59 +0000 (UTC) (envelope-from glebius@freebsd.org) Date: Wed, 6 Aug 2025 15:44:57 -0700 From: Gleb Smirnoff To: Rick Macklem Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 554651ebf1c1 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos Message-ID: References: <202508062241.576MfZV6054051@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508062241.576MfZV6054051@gitrepo.freebsd.org> On Wed, Aug 06, 2025 at 10:41:35PM +0000, Rick Macklem wrote: R> commit 554651ebf1c1798fa8fb2560cab761ac3d219555 R> Author: Rick Macklem R> AuthorDate: 2025-08-06 22:36:21 +0000 R> Commit: Rick Macklem R> CommitDate: 2025-08-06 22:37:20 +0000 R> R> kgssapi: Fix the kgssapi so that it can use MIT Kerberos Sorry for not testing this in time. Will test post-commit. Thanks a lot!!! -- Gleb Smirnoff From nobody Wed Aug 6 22:47:06 2025 X-Original-To: dev-commits-src-main@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 4by55q0Xxtz64KN8; Wed, 06 Aug 2025 22:47:27 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by55p5j8Tz3Yvh; Wed, 06 Aug 2025 22:47:26 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-af958127df5so58992266b.2; Wed, 06 Aug 2025 15:47:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754520439; x=1755125239; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=+bJewBAMasoxQFUuB4D6X3OKduGEdAE7WM3O0aJVEW0=; b=NTQQ1N4pjJ/SCJosMxSYw78WWMvwpHXmWaE05Upm/WTb2b8AKnOnHUibIofREdbaHZ 9C0kY5pjaEIHeHAneeAKB1w67DdOCZilf7g4Ogg9D2oKoj+skWuIUliOXdV6/zfmWuP+ /Q6DeSmwBRna0ylVhDalhCwMMg9XqSAtj1k3rFHhCt5DlXtQbuqWVbYzAJr5hSR348py i7cx8EAWIEFGfM+0E20eYBZmYj9Z9H/MnVO4UkgNW1xSZVdh1KHLBXfL6qpV70uU0lHE mzPUkOX+uiE5H6jk6iJxFh2lLTVB9SXHr3ShmLBrUAswf6VsBR4xgEeXFGbi3JkJWrqa YuUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754520439; x=1755125239; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+bJewBAMasoxQFUuB4D6X3OKduGEdAE7WM3O0aJVEW0=; b=BWmhzNBd1il+W1Y705ilPlqqg/zWqFKG5qRnZ4gpNTP7WXdnvn2bBWPRUDremhuS/9 z4Eq/eXgmeqQMEMMGcD5GrSB7QOW9bf14YkAB5f4gMFn7LVMC13K21mlc1KkP+gxHClP 3lL9tV7y4jnDdPQK4O3mOy3SNQNEHvTs6XvC+A9x2y259MOdGyXeZ/HyPlptAbFmf4jR xuWC4+r0R+0JrGFbX2PCnfaGXCcGtR+1JLoOLgI+viE9e7iQ4scVpS6tkR7B/depcHij FoVYX8UYBEi9+HVG5c24a661ihoYyrOBid8QGvS+JU5Fo49MxMc+YPd50jQ9GiXmSoFp Q8pw== X-Forwarded-Encrypted: i=1; AJvYcCUfbc3CrSSz7wa1BuCZCDVFUTxD1HcxY8oLQSkp4AfvMvdoSpp3E9W7/Ov18wFVJo6yaIXQ6udlT0v/Yz4/z5lRfkR5iXQ=@freebsd.org, AJvYcCV29fpDo5yrAD144hpuObmzQkS9IgO95tiGIO+Wg8vwSPLZs9RGvB3I8MxR8QAgi65gViKW5Lh7O83+PxDDlx0=@freebsd.org, AJvYcCW5nlyFO10e7VrRWq1LTtRAcUSxTSpzBKDv34PLzgYVDM4QapcOW1KPmKjiJZX92vE3eoOhDLzonHNVSU5LYuJuv6iv@freebsd.org X-Gm-Message-State: AOJu0YzZRqrC3C4u3xg/Qca/V/6W3XeSbiW+cdM02iMdf7zNZyfR+xCP C9gQW3cAMGI84XNREqANp8dWB8sQPGsn+TkLgEtICiCtJMKtvH0ba5ofb4p8BxWtQcRBPDsAxCL O5o2Vrgdwck5kv4qwd809sJeaD4AK/Bj+MJ0= X-Gm-Gg: ASbGnctL0GAN6Ifdr0aMwF+/HTK2W+XDonyNTM/tiF3n2M/B4T+B+YTQKM5m11CoDJN u3WxCXjruDJbwE1lP1I2R20YRBvtZsk5cwE1WfrZtvpS0H0IQUkkxaG4zbtMDenB5Zpbbfk/gtV ppGSPVSSWez777ux3T+Lv85u7FhTFTsV5RKe+P9mUGqMC+A/k/wD5kXKU97MHDlSOWoe/NfPKdR xaaSg3Ai+J9CKW5vaUFgb51kZSMh5V467P84g== X-Google-Smtp-Source: AGHT+IFR2gnrIp/xpZfZ94C2vbfPUV81YUZ0DkQDNJFSLczGUvL0In6kcbUTliaViji1Gvl5wYbvRp2pqM/FgsMfhXs= X-Received: by 2002:a17:907:b817:b0:af2:80c9:7220 with SMTP id a640c23a62f3a-af992b6c6efmr372066566b.36.1754520438743; Wed, 06 Aug 2025 15:47:18 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508062241.576MfZV6054051@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Wed, 6 Aug 2025 15:47:06 -0700 X-Gm-Features: Ac12FXwoFtCFEcbewi7BDO2H89HCSYip8wAoZTG68_cJKxbGnBDvGuZ8NEwEiZQ Message-ID: Subject: Re: git: 554651ebf1c1 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos To: Gleb Smirnoff Cc: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4by55p5j8Tz3Yvh X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] On Wed, Aug 6, 2025 at 3:45=E2=80=AFPM Gleb Smirnoff = wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > On Wed, Aug 06, 2025 at 10:41:35PM +0000, Rick Macklem wrote: > R> commit 554651ebf1c1798fa8fb2560cab761ac3d219555 > R> Author: Rick Macklem > R> AuthorDate: 2025-08-06 22:36:21 +0000 > R> Commit: Rick Macklem > R> CommitDate: 2025-08-06 22:37:20 +0000 > R> > R> kgssapi: Fix the kgssapi so that it can use MIT Kerberos > > Sorry for not testing this in time. Will test post-commit. No problem. Both cy@ and I were able to do some testing. If you find problems with it, let me know, rick > > Thanks a lot!!! > > -- > Gleb Smirnoff From nobody Wed Aug 6 22:50:12 2025 X-Original-To: dev-commits-src-main@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 4by59L4KBYz64KBS; Wed, 06 Aug 2025 22:50:30 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by59K59gGz3ZPF; Wed, 06 Aug 2025 22:50:29 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=L9ee1dJ3; spf=pass (mx1.freebsd.org: domain of rick.macklem@gmail.com designates 2a00:1450:4864:20::533 as permitted sender) smtp.mailfrom=rick.macklem@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-60bfcada295so586960a12.1; Wed, 06 Aug 2025 15:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754520626; x=1755125426; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=u8c9ddjoMM5ALnXnm9Wh0FKcptpU6uie3Gt5e2uUOu0=; b=L9ee1dJ31lY0wyL9zFVhh2hu+nCdBOs2TC5aGrT7IgY+ajoB37+07IzNsYCBFvJ5Dh 8lsyncRt4tCSh3wp+yCUVK/8fH5ZMr7Jv/DeVyGStGFcyIEsr5V9OxG6nlE0Ev9N5a0i KiDTZOs2BXMMPOwzrPEn6fXwv7FNytUzvQep5QJAiCNO0T/u4XiVsRCHzKyBT4J8gPBF GZu4Q39YJhmT+CEpRWQTkh0fI/jq2mpT6r1jJFjYOUGoFjFXzmuwRqwX8HRzExWL5met Z0QWisaVXpPR9rUIlLE1xx3cJoD5YCKdMCfyUwoOBVL6DfTLH+qs+AFjP+YeOkv4+/9M bQGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754520626; x=1755125426; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u8c9ddjoMM5ALnXnm9Wh0FKcptpU6uie3Gt5e2uUOu0=; b=LtE054UilTscaPjJPdkRbLOl0MLpYxienGjkbDdYuiDsLP59KhNQpb1TYq1Fgf23cR 4hisa4WmZPXNvrjguzik74SgezIVQ9qf1HwfncwgYUDw+CYu09oZYFCoFtbMVaxkSVpe 95xh1mhiktnKswIE5K+6OXf4o9vlgTW3qUuHmroT/ujvkmMsrqQ1N4ZnlvZaWAzPxf5g HiQPjrK24hUW+EZLKzyc1EybPISNhnUOjwV9JC5uHWoOv+z0TEn5JMP8ZN9uTd51U2/U hGeEr4WgMHQ8XnfZWFYO72yzhaOR+YQpqHDwDpfStn8bb4GtJ06lrKJMfVp3lRf2dLpW rnSQ== X-Forwarded-Encrypted: i=1; AJvYcCUTyxqkZUeY7Qkq4hKLZf1ZsHQC9uw0UmdILBMfIaLWMKoDutql5/UlE5Qsi2b336jkYJ3LmwKpCbUwuou7u/4zQfXvj3o=@freebsd.org, AJvYcCWWcmhxM+Yy2dpHUraViS01V4c3QZDJQs71onZNvLJbblj2mv6PsmofdQGOronWPsNQlOPNqzrCIUfRwq/mTgc=@freebsd.org, AJvYcCXBt0SCobIierNX1mEIARC2iGpvhNhnBwkBf/cgSlJIQnBvhwecjfz6qc2aduBZAyySAErn1FQLJcRCzbAbDSps1/xs@freebsd.org X-Gm-Message-State: AOJu0YyJ+gT+qQDjrVE8GAP+0brnZ7t+CA2sz4RAVefjtqV1CmsK9Ji6 tqbwVHCh19iyAEAMioVbRsO5tLjl4cgKGp9c7plaPxiQWOI6nBRoPA4WpfZoGWImPRHInAL1vX4 92SWkoN7Dt068SE2QvGDU1Taib4We/G/jHsI= X-Gm-Gg: ASbGncs/pVY78jGaBu7PU1lbmsSKiFU+kLEGarMBLxul8pdQ94U+7qwrz3HK7+95gAL AOZH5TNI5mQyAFGl/1jVKahn0zH0xEi6u5FsGqW7qxWWkRI2vtERXK+ijVtn+jgFDoHWmCkpP/s qrfhIg2UdV/huXnmNH8BdvV5S4kWXQWbW4AB43pPVi3Moj5G1hU8J84ZXZhfylJwzb72/xj4rIn NOBN3zZsfwL4OzD2gsvijXuBEpJiYB3q3auMA== X-Google-Smtp-Source: AGHT+IHbkg2qQGghji4gTMT5hajlnXIbZKTJ9IzE/Nf4PDwzBRMzaqPbDD29x1KlxxpKx+aHQDIWEWpN0oVoq3EnqqQ= X-Received: by 2002:a17:907:7296:b0:af9:3c68:f743 with SMTP id a640c23a62f3a-af992b6b4cemr333275866b.34.1754520626312; Wed, 06 Aug 2025 15:50:26 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508062241.576MfZV6054051@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Wed, 6 Aug 2025 15:50:12 -0700 X-Gm-Features: Ac12FXxx-VR2rjj6K703EZsmddS1KSyuR81RDpUmSnoJu59ZX1W6h4dLodPh0-c Message-ID: Subject: Re: git: 554651ebf1c1 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos To: Gleb Smirnoff Cc: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.999]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_LAST(0.00)[]; ARC_NA(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::533:from]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; FREEMAIL_FROM(0.00)[gmail.com]; TAGGED_FROM(0.00)[]; MISSING_XM_UA(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MID_RHS_MATCH_FROMTLD(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_ONE(0.00)[1]; RCPT_COUNT_FIVE(0.00)[5] X-Rspamd-Queue-Id: 4by59K59gGz3ZPF X-Spamd-Bar: --- On Wed, Aug 6, 2025 at 3:47=E2=80=AFPM Rick Macklem wrote: > > On Wed, Aug 6, 2025 at 3:45=E2=80=AFPM Gleb Smirnoff wrote: > > > > CAUTION: This email originated from outside of the University of Guelph= . Do not click links or open attachments unless you recognize the sender an= d know the content is safe. If in doubt, forward suspicious emails to IThel= p@uoguelph.ca. > > > > On Wed, Aug 06, 2025 at 10:41:35PM +0000, Rick Macklem wrote: > > R> commit 554651ebf1c1798fa8fb2560cab761ac3d219555 > > R> Author: Rick Macklem > > R> AuthorDate: 2025-08-06 22:36:21 +0000 > > R> Commit: Rick Macklem > > R> CommitDate: 2025-08-06 22:37:20 +0000 > > R> > > R> kgssapi: Fix the kgssapi so that it can use MIT Kerberos > > > > Sorry for not testing this in time. Will test post-commit. > No problem. Both cy@ and I were able to do some testing. Oh, and wait for cy@ to do his commit before testing. Otherwise it won't work unless you link to krb5 in /usr/local/lib. rick > > If you find problems with it, let me know, rick > > > > Thanks a lot!!! > > > > -- > > Gleb Smirnoff From nobody Wed Aug 6 23:15:36 2025 X-Original-To: dev-commits-src-main@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 4by5kK14JNz64M5Z; Wed, 06 Aug 2025 23:15:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by5kK08yFz3fnG; Wed, 06 Aug 2025 23:15:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754522137; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yWKzuKi8tQYP4UAD3TIkgm89UAc3+79W04hCmhON4tk=; b=rKOX9mvJD98t2ZEsnZa5PN3SPZZD1wc0klQmNV4ZC1s8KF2a36CAM5t5aPzXObKUXfPsuK 9kZ2V4uSS5fNE2yYpRFmz8XEJ0IvVFRBvnlKsCYWsk+G1ebAqrOBaJtF5+/o1yfSVavd6c Ku6vTkFlh74Dh0aWoGrqNTIbtFAm/aEYRFBeYr+jn3LK/gt8a+RSbF15oLZP1leMPOl56Y 4IHmzvxQPgxCYW/czR+M45ZjkXim1GqsJFr+W1bmjOIMZBzuOaBlqZfKuOS1DRz0uT9/mt zf4ExTojzS2iWsRvb5CE9oGvNmKojNwTQpSnH/YcFwV/SFUDNu0fxiex9jNZrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754522137; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yWKzuKi8tQYP4UAD3TIkgm89UAc3+79W04hCmhON4tk=; b=eilI5e0inipXVlMnuLOsas1gXILo55yZ3FlVbyPq5JP00X9i0g/ac54ZZD2i0V+smIWZi/ WL3cSN/9RPDQbJPtb84Y6WzD67e7U9b7D46xpJk17S92alyysUUMXFaCb/5/PMEbpwbZsi X7nwycIMhYqkAh4VR+x45go+dewruTvsnsjv0Yv1PJCxqW9Fr7+CewiFaO9mjOn3gCL1LT V63YxZNxdt7kwWb9lIPpBjf478RzhS2UAMMuZzO/UA6xkd1TrNwg/dRDB9RkV4G25ZOR8P jt7aIGVqv+CunRT53EoA4tyIhsdSTWjWbeQ6nIFB3qAEVHcZX6fVUgSrdPI74Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754522137; a=rsa-sha256; cv=none; b=mNJsUQLZyeCRSSXpT3DHPd2/RX2TvW6vt6EeO6OhJ6Wm9ukuXzTofkU0xu/21hIWofPPYX sUXDcKhR49iTY+9Ugq8T1BcCtZXQ/ocvz/L2QDa6wfeNJis0U0tMff5ytQhhVo8gHiBgw+ GaDCz0rsE5cUrtz2EWN8uNzECfyOSO3L+Se8xLHQVFcJqShI+WfmGcKQWS16UWh4EOF/9J lHAVXICcZRQ5pSRtiAiHm60yonsOZtkwAAWZb26ra4FzzfH3iJYjEYgJRgyRTssM+CWFfz 27MFpBo7DJ0Bi9d0uDfJSvv+0xLSXHBfjtbb741VEVq6nkD4waIzGwutXRnlxg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by5kJ6f9RzhWh; Wed, 06 Aug 2025 23:15:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 576NFaA8017701; Wed, 6 Aug 2025 23:15:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 576NFaLB017698; Wed, 6 Aug 2025 23:15:36 GMT (envelope-from git) Date: Wed, 6 Aug 2025 23:15:36 GMT Message-Id: <202508062315.576NFaLB017698@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 784069e172c5 - main - gssd: Fix build for now List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 784069e172c53cd5a5e27cda57fe2df01f53ab58 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=784069e172c53cd5a5e27cda57fe2df01f53ab58 commit 784069e172c53cd5a5e27cda57fe2df01f53ab58 Author: Rick Macklem AuthorDate: 2025-08-06 23:11:07 +0000 Commit: Rick Macklem CommitDate: 2025-08-06 23:11:07 +0000 gssd: Fix build for now Until cy@ commits his change, this change is needed to make the gssd build. It will not actually work correctly until the cy@ commit is done. I will revert this patch then. --- usr.sbin/gssd/gssd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c index 54d2062dd29a..1c20a585f626 100644 --- a/usr.sbin/gssd/gssd.c +++ b/usr.sbin/gssd/gssd.c @@ -50,9 +50,11 @@ #include #include #include -#include #ifdef MK_MITKRB5 +#include #include +#else +#include #endif #include #include From nobody Thu Aug 7 00:04:17 2025 X-Original-To: dev-commits-src-main@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 4by6pT6j4jz64P4g; Thu, 07 Aug 2025 00:04: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by6pT62X9z3mk1; Thu, 07 Aug 2025 00:04:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7r27cfcaRQpj+Q996jb1M3BQZObhFqGQhmEeAYLGhK8=; b=NXXM2fCyBDBJy6UwZ3ujVoRVJSCEzxpU1Q3QrTf/KcEuft3PsjaBqlalh8/SoGzf5TYUvt zjeFbhYy35xKdWR6LlwtqZpaIP3U4J6HG57GDk8wlivAyNzi/c4428FIAgf/3lA8OBnhQq jwBW1DvNk1Dz5eqoDJgDFpDxQ2hoSpVFqcSiZ0XzdpTWvwoHyEgQDHhemVQU1fY+RSCd7T jEdVwe5ZV29KOa+benh69End3M26fTU+xfdG06qG0dI8kM9Tkcq7Z9DPCA9c1PbtAy5H8K XVoP1u9Ry26uauqhTyM77l5teV8paIYLzOGJ4plV5xbT53/gELcQUJOTjUocqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7r27cfcaRQpj+Q996jb1M3BQZObhFqGQhmEeAYLGhK8=; b=IOMFYVN+dbL23EQs0xvNzEaBxSNKg+VT02XFhykF/WXVX/rX9Neo2jTiZ/8VQ1w5g7QspU PAPPxSTw6+FDx2fbOob6xxIjZpNpeZn7wmRYk5kNLd29F7kg7aKeaFMTukb9tkOXpwH4mS +6KQp2omNKhQLlAN/eszac8ymF1QvPiOhUSMoqfZkZDsnOxWenr6bY67bAbLZG5F1QCjla jwtBJdOsASCvM0AJ6vuYcDyOHCzIPjCrAvfe8UwAlXdC/QCKggvB9Sx0tamJi/RuYBxY4Z 65nbrypmdvKD7wJhW9+ORrc3H9NFIKySg+Wtahij5krlBfA2vAxbZQOvHyWNlA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754525057; a=rsa-sha256; cv=none; b=UecZ3Hp3+tiT3V3XLZ2DHKDlw3LSjBEjQrq1N8A10fqqqZeeN2p2pDMAGILkBa6FY+rjPL 1D/cM5xyd/QTSewzuaaDzKtQlgBgcBsDBRM+wGndeqq2n6sEqfQVjSmPLxOo5th7XXq4D2 ZLpn6aMOVDnIsffJXeCnnDytMQrft4/Ty4w3FrRjXbe9gha9fQeb4oGiFoTnzy3zPVQnkj kjJBS6oMXq+aJfcoFy/wPAylCJ93cW/yqOllNXiv41uGlG9IGwJvdv4IJ59qjmgc0bhnUj dI7jZD89iqL7QMuYsyfT/2sit6hdy1QarngW6l03aaxpO1Y9p0C0VV6+tD2Oyg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by6pT5TdKzjQ1; Thu, 07 Aug 2025 00:04:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57704Hjc013000; Thu, 7 Aug 2025 00:04:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57704HvV012996; Thu, 7 Aug 2025 00:04:17 GMT (envelope-from git) Date: Thu, 7 Aug 2025 00:04:17 GMT Message-Id: <202508070004.57704HvV012996@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 1a10f2f2042e - main - Revert "gssd: Fix build for now" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a10f2f2042e8d35f1684c08215a73db97f09827 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=1a10f2f2042e8d35f1684c08215a73db97f09827 commit 1a10f2f2042e8d35f1684c08215a73db97f09827 Author: Rick Macklem AuthorDate: 2025-08-07 00:00:45 +0000 Commit: Rick Macklem CommitDate: 2025-08-07 00:00:45 +0000 Revert "gssd: Fix build for now" This did not fix the build either. I'll revert both commits for now and wait for cy@ to do his commit. This reverts commit 784069e172c53cd5a5e27cda57fe2df01f53ab58. --- usr.sbin/gssd/gssd.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c index 1c20a585f626..54d2062dd29a 100644 --- a/usr.sbin/gssd/gssd.c +++ b/usr.sbin/gssd/gssd.c @@ -50,11 +50,9 @@ #include #include #include +#include #ifdef MK_MITKRB5 -#include #include -#else -#include #endif #include #include From nobody Thu Aug 7 00:06:35 2025 X-Original-To: dev-commits-src-main@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 4by6s71k2Rz64PPh; Thu, 07 Aug 2025 00:06:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by6s71PDmz3nN0; Thu, 07 Aug 2025 00:06:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525195; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F8pDrcKviPIUt4RLe9L4kus7HCIIfYGDz6z2X63BVFA=; b=rsvni0Xf7Id3x6ZZ/AscStUqHTmfCHpFLJ5jVegiNAht0HulJ9rvxLIuykN+em7KNrIEKW Sse1GjREPJu7nk5MqZf28PYE8xWQyLn7BMqW1FwM4AoplL9lnm9PPUx33vsvqN2sNAq6xw vWkmY+p0AgYismiozco8pQSzKU0q4Ev/RtQFQA/4pav8ApYqad+HpYXBJzz32lCKfU3azL SWHCkNHo1AcqxqLOgvXIDBSscuYX9BPcc3eylkhdsPSldVrF59h1wIjYsiy4qjWgWO0iQ1 mpRR4PO9/PxtWURayWNXY4DjNRZ8+mDtOY8cml7xT4MInW4CW5/63uop7zo7pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525195; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F8pDrcKviPIUt4RLe9L4kus7HCIIfYGDz6z2X63BVFA=; b=GzhICpAA+YGcvC4WfQ4khFzngyQBFIt6EEprWr57k7nirauuGzHCMuFYMQ9WagxwBPZZuG MpyFOSHiDQv8tG5kQIvB0aF56vRFvOVt/LNIs7sBmImJQivC1IGS1LdCYXdPhnJDlMuoRh qcOSAFLlMl4cEPjkjHGUpH+nEYT9pof6h9916uiDO3t9VBnMEqsRLi5pBDbNiYIV9Jq7px XO3XrhyG//gL5xdESNlbYgTLjSGdB9OzJpV0g4n8iJ6R9ElNrRzp0CM9OOaOv/twXBBEPV EyA7AUWInM/VrfIp+0Bo7Jf+1I4ZrB8a4C3toucw3o04PNpVNQgVmgjc8PdqPg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754525195; a=rsa-sha256; cv=none; b=LmlFQwdt8RBWQfEfBRzrtntzWn7NfyfL2T5nh3CmAvSknLXOcU5KUbbcbv0OptAxI3Dy25 kOObuvNQnBQzZlO+N4o8VJGxM7f+Uy5jLvr3sbegO9lz+KY0jjggFDDGOKD2KmUoPYVWzb 4tt7QtPA5kYhNIQHKORj/h/cfD1TTKYyPXNIHCeQIz1Z+aLaE6wk416/swd9oukzM2Bj4y 1uMe42+VFotZ4wMic/K3tPKonFfovsxZ2vdF1pGWjqBQDBO0eCulpR3oK0nsg5yQGO/xsl h0EHVWRf3eljahtlXHu/+BhBnZ2f5dpCJSHT19Nn/ymC11P9BxCA1fZu0RJbnQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by6s70zb9zjg9; Thu, 07 Aug 2025 00:06:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57706ZPH013825; Thu, 7 Aug 2025 00:06:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57706ZqI013822; Thu, 7 Aug 2025 00:06:35 GMT (envelope-from git) Date: Thu, 7 Aug 2025 00:06:35 GMT Message-Id: <202508070006.57706ZqI013822@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 4de9547f322b - main - Revert "kgssapi: Fix the kgssapi so that it can use MIT Kerberos" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4de9547f322bb26f146ddd4139610e927afc5ef0 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=4de9547f322bb26f146ddd4139610e927afc5ef0 commit 4de9547f322bb26f146ddd4139610e927afc5ef0 Author: Rick Macklem AuthorDate: 2025-08-07 00:03:20 +0000 Commit: Rick Macklem CommitDate: 2025-08-07 00:03:20 +0000 Revert "kgssapi: Fix the kgssapi so that it can use MIT Kerberos" This broke the build and will have to wait for cy@'s commit. This reverts commit 554651ebf1c1798fa8fb2560cab761ac3d219555. --- sys/kgssapi/gss_accept_sec_context.c | 145 +--------- sys/kgssapi/gss_impl.c | 8 +- sys/kgssapi/gss_init_sec_context.c | 145 +--------- sys/kgssapi/gssapi.h | 42 --- sys/kgssapi/gssapi_impl.h | 2 +- sys/kgssapi/gssd.x | 79 +----- sys/kgssapi/krb5/krb5_mech.c | 80 ------ sys/rpc/rpcsec_gss/rpcsec_gss.c | 50 +--- sys/rpc/rpcsec_gss/rpcsec_gss_int.h | 6 - sys/rpc/rpcsec_gss/svc_rpcsec_gss.c | 122 ++------- usr.sbin/Makefile | 2 - usr.sbin/gssd/Makefile | 9 +- usr.sbin/gssd/gssd.c | 506 +++-------------------------------- 13 files changed, 86 insertions(+), 1110 deletions(-) diff --git a/sys/kgssapi/gss_accept_sec_context.c b/sys/kgssapi/gss_accept_sec_context.c index 8a49b85be852..723ed9db9072 100644 --- a/sys/kgssapi/gss_accept_sec_context.c +++ b/sys/kgssapi/gss_accept_sec_context.c @@ -41,11 +41,6 @@ #include "gssd.h" #include "kgss_if.h" -/* - * This function should only be called when the gssd - * daemon running on the system is an old one that - * does not use gss_krb5_export_lucid_sec_context(). - */ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, const gss_cred_id_t acceptor_cred_handle, @@ -143,145 +138,7 @@ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx, NULL); - - return (res.major_status); -} - -/* - * This function should be called when the gssd daemon is - * one that uses gss_krb5_export_lucid_sec_context(). - * There is a lot of code common with - * gss_accept_sec_context(). However, the structures used - * are not the same and future changes may be needed for - * this one. As such, I have not factored out the common - * code. - * gss_supports_lucid() may be used to check to see if the - * gssd daemon uses gss_krb5_export_lucid_sec_context(). - */ -OM_uint32 gss_accept_sec_context_lucid_v1(OM_uint32 *minor_status, - gss_ctx_id_t *context_handle, - const gss_cred_id_t acceptor_cred_handle, - const gss_buffer_t input_token, - const gss_channel_bindings_t input_chan_bindings, - gss_name_t *src_name, - gss_OID *mech_type, - gss_buffer_t output_token, - OM_uint32 *ret_flags, - OM_uint32 *time_rec, - gss_cred_id_t *delegated_cred_handle, - gss_buffer_t exported_name, - uid_t *uidp, - gid_t *gidp, - int *numgroups, - gid_t *groups) -{ - struct accept_sec_context_lucid_v1_res res; - struct accept_sec_context_lucid_v1_args args; - enum clnt_stat stat; - gss_ctx_id_t ctx = *context_handle; - gss_name_t name; - gss_cred_id_t cred; - CLIENT *cl; - - cl = kgss_gssd_client(); - if (cl == NULL) { - *minor_status = 0; - return (GSS_S_FAILURE); - } - - if (ctx) - args.ctx = ctx->handle; - else - args.ctx = 0; - if (acceptor_cred_handle) - args.cred = acceptor_cred_handle->handle; - else - args.cred = 0; - args.input_token = *input_token; - args.input_chan_bindings = input_chan_bindings; - - bzero(&res, sizeof(res)); - stat = gssd_accept_sec_context_lucid_v1_1(&args, &res, cl); - CLNT_RELEASE(cl); - if (stat != RPC_SUCCESS) { - *minor_status = stat; - return (GSS_S_FAILURE); - } - - if (res.major_status != GSS_S_COMPLETE - && res.major_status != GSS_S_CONTINUE_NEEDED) { - *minor_status = res.minor_status; - xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); - return (res.major_status); - } - - *minor_status = res.minor_status; - - if (!ctx) { - ctx = kgss_create_context(res.mech_type); - if (!ctx) { - xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); - *minor_status = 0; - return (GSS_S_BAD_MECH); - } - } - *context_handle = ctx; - - ctx->handle = res.ctx; - name = malloc(sizeof(struct _gss_name_t), M_GSSAPI, M_WAITOK); - name->handle = res.src_name; - if (src_name) { - *src_name = name; - } else { - OM_uint32 junk; - gss_release_name(&junk, &name); - } - if (mech_type) - *mech_type = KGSS_MECH_TYPE(ctx); - kgss_copy_buffer(&res.output_token, output_token); - if (ret_flags) - *ret_flags = res.ret_flags; - if (time_rec) - *time_rec = res.time_rec; - cred = malloc(sizeof(struct _gss_cred_id_t), M_GSSAPI, M_WAITOK); - cred->handle = res.delegated_cred_handle; - if (delegated_cred_handle) { - *delegated_cred_handle = cred; - } else { - OM_uint32 junk; - gss_release_cred(&junk, &cred); - } - - /* - * If the context establishment is complete, export it from - * userland and hand the result (which includes key material - * etc.) to the kernel implementation. - */ - if (res.major_status == GSS_S_COMPLETE) { - int i, n; - - /* First, get the unix credentials. */ - *uidp = res.uid; - *gidp = res.gid; - n = res.gidlist.gidlist_len; - if (n > *numgroups) - n = *numgroups; - for (i = 0; i < n; i++) - groups[i] = res.gidlist.gidlist_val[i]; - *numgroups = n; - - /* Next, get the exported_name. */ - kgss_copy_buffer(&res.exported_name, exported_name); - - /* Now, handle the lucid credential setup. */ - res.major_status = kgss_transfer_context(ctx, &res.lucid); - if (res.major_status != GSS_S_COMPLETE) - printf("gss_accept_sec_context_lucid_v1: " - "transfer failed\n"); - } - - xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); + res.major_status = kgss_transfer_context(ctx); return (res.major_status); } diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c index c9cd4d880695..e2569bea61f9 100644 --- a/sys/kgssapi/gss_impl.c +++ b/sys/kgssapi/gss_impl.c @@ -192,19 +192,13 @@ kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token) } OM_uint32 -kgss_transfer_context(gss_ctx_id_t ctx, void *lctx) +kgss_transfer_context(gss_ctx_id_t ctx) { struct export_sec_context_res res; struct export_sec_context_args args; enum clnt_stat stat; OM_uint32 maj_stat; - if (lctx != NULL) { - maj_stat = KGSS_IMPORT(ctx, MIT_V1, lctx); - ctx->handle = 0; - return (maj_stat); - } - KGSS_CURVNET_SET_QUIET(KGSS_TD_TO_VNET(curthread)); if (!KGSS_VNET(kgss_gssd_handle)) { KGSS_CURVNET_RESTORE(); diff --git a/sys/kgssapi/gss_init_sec_context.c b/sys/kgssapi/gss_init_sec_context.c index a0f48fda8b29..fa0d3fb2ae19 100644 --- a/sys/kgssapi/gss_init_sec_context.c +++ b/sys/kgssapi/gss_init_sec_context.c @@ -42,11 +42,6 @@ #include "gssd.h" #include "kgss_if.h" -/* - * This function should only be called when the gssd - * daemon running on the system is an old one that - * does not use gss_krb5_export_lucid_sec_context(). - */ OM_uint32 gss_init_sec_context(OM_uint32 * minor_status, const gss_cred_id_t initiator_cred_handle, @@ -138,145 +133,7 @@ gss_init_sec_context(OM_uint32 * minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx, NULL); - - return (res.major_status); -} - -OM_uint32 -gss_supports_lucid(uint32_t *minor_status, uint32_t *vers) -{ - struct supports_lucid_res res; - enum clnt_stat stat; - CLIENT *cl; - - *minor_status = 0; - - cl = kgss_gssd_client(); - if (cl == NULL) - return (GSS_S_FAILURE); - - bzero(&res, sizeof(res)); - stat = gssd_supports_lucid_1(NULL, &res, cl); - CLNT_RELEASE(cl); - if (stat != RPC_SUCCESS) { - *minor_status = stat; - return (GSS_S_FAILURE); - } - - if (vers) - *vers = res.vers; - - return (res.major_status); -} - -/* - * This function should be called when the gssd daemon is - * one that uses gss_krb5_export_lucid_sec_context(). - * There is a lot of code common with - * gss_init_sec_context(). However, the structures used - * are not the same and future changes may be needed for - * this one. As such, I have not factored out the common - * code. - * gss_supports_lucid() may be used to check to see if the - * gssd daemon uses gss_krb5_export_lucid_sec_context(). - */ -OM_uint32 -gss_init_sec_context_lucid_v1(OM_uint32 * minor_status, - const gss_cred_id_t initiator_cred_handle, - gss_ctx_id_t * context_handle, - const gss_name_t target_name, - const gss_OID input_mech_type, - OM_uint32 req_flags, - OM_uint32 time_req, - const gss_channel_bindings_t input_chan_bindings, - const gss_buffer_t input_token, - gss_OID * actual_mech_type, - gss_buffer_t output_token, - OM_uint32 * ret_flags, - OM_uint32 * time_rec) -{ - struct init_sec_context_lucid_v1_res res; - struct init_sec_context_lucid_v1_args args; - enum clnt_stat stat; - gss_ctx_id_t ctx = *context_handle; - CLIENT *cl; - - *minor_status = 0; - - cl = kgss_gssd_client(); - if (cl == NULL) - return (GSS_S_FAILURE); - - args.uid = curthread->td_ucred->cr_uid; - if (initiator_cred_handle) - args.cred = initiator_cred_handle->handle; - else - args.cred = 0; - if (ctx) - args.ctx = ctx->handle; - else - args.ctx = 0; - args.name = target_name->handle; - args.mech_type = input_mech_type; - args.req_flags = req_flags; - args.time_req = time_req; - args.input_chan_bindings = input_chan_bindings; - if (input_token) - args.input_token = *input_token; - else { - args.input_token.length = 0; - args.input_token.value = NULL; - } - - bzero(&res, sizeof(res)); - stat = gssd_init_sec_context_lucid_v1_1(&args, &res, cl); - CLNT_RELEASE(cl); - if (stat != RPC_SUCCESS) { - *minor_status = stat; - return (GSS_S_FAILURE); - } - - if (res.major_status != GSS_S_COMPLETE - && res.major_status != GSS_S_CONTINUE_NEEDED) { - *minor_status = res.minor_status; - xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); - return (res.major_status); - } - - *minor_status = res.minor_status; - - if (!ctx) { - ctx = kgss_create_context(res.actual_mech_type); - if (!ctx) { - xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); - *minor_status = 0; - return (GSS_S_BAD_MECH); - } - } - *context_handle = ctx; - ctx->handle = res.ctx; - if (actual_mech_type) - *actual_mech_type = KGSS_MECH_TYPE(ctx); - kgss_copy_buffer(&res.output_token, output_token); - if (ret_flags) - *ret_flags = res.ret_flags; - if (time_rec) - *time_rec = res.time_rec; - - /* - * If the context establishment is complete, export it from - * userland and hand the result (which includes key material - * etc.) to the kernel implementation. - */ - if (res.major_status == GSS_S_COMPLETE) { - res.major_status = kgss_transfer_context(ctx, &res.lucid); - if (res.major_status != GSS_S_COMPLETE) - printf("gss_init_sec_context_lucid_v1: " - "transfer failed\n"); - } - - xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); + res.major_status = kgss_transfer_context(ctx); return (res.major_status); } diff --git a/sys/kgssapi/gssapi.h b/sys/kgssapi/gssapi.h index cd4a4b508cc5..37cc8a1a5a09 100644 --- a/sys/kgssapi/gssapi.h +++ b/sys/kgssapi/gssapi.h @@ -422,28 +422,6 @@ OM_uint32 gss_init_sec_context OM_uint32 * /* time_rec */ ); -OM_uint32 gss_init_sec_context_lucid_v1 - (OM_uint32 *, /* minor_status */ - const gss_cred_id_t, /* initiator_cred_handle */ - gss_ctx_id_t *, /* context_handle */ - const gss_name_t, /* target_name */ - const gss_OID, /* mech_type */ - OM_uint32, /* req_flags */ - OM_uint32, /* time_req */ - const gss_channel_bindings_t, - /* input_chan_bindings */ - const gss_buffer_t, /* input_token */ - gss_OID *, /* actual_mech_type */ - gss_buffer_t, /* output_token */ - OM_uint32 *, /* ret_flags */ - OM_uint32 * /* time_rec */ - ); - -OM_uint32 gss_supports_lucid - (OM_uint32 *, /* minor_status */ - OM_uint32 * /* vers */ - ); - OM_uint32 gss_accept_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ @@ -459,26 +437,6 @@ OM_uint32 gss_accept_sec_context gss_cred_id_t * /* delegated_cred_handle */ ); -OM_uint32 gss_accept_sec_context_lucid_v1 - (OM_uint32 *, /* minor_status */ - gss_ctx_id_t *, /* context_handle */ - const gss_cred_id_t, /* acceptor_cred_handle */ - const gss_buffer_t, /* input_token_buffer */ - const gss_channel_bindings_t, - /* input_chan_bindings */ - gss_name_t *, /* src_name */ - gss_OID *, /* mech_type */ - gss_buffer_t, /* output_token */ - OM_uint32 *, /* ret_flags */ - OM_uint32 *, /* time_rec */ - gss_cred_id_t *, /* delegated_cred_handle */ - gss_buffer_t, /* exported_name */ - uid_t *, /* Unix cred */ - gid_t *, - int *, /* Number of groups */ - gid_t * /* groups list */ - ); - OM_uint32 gss_delete_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ diff --git a/sys/kgssapi/gssapi_impl.h b/sys/kgssapi/gssapi_impl.h index d8a85f20a602..3279dc8da122 100644 --- a/sys/kgssapi/gssapi_impl.h +++ b/sys/kgssapi/gssapi_impl.h @@ -78,5 +78,5 @@ extern gss_OID kgss_find_mech_by_name(const char *name); extern const char *kgss_find_mech_by_oid(const gss_OID oid); extern gss_ctx_id_t kgss_create_context(gss_OID mech_type); extern void kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token); -extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx, void *lctx); +extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx); extern void kgss_copy_buffer(const gss_buffer_t from, gss_buffer_t to); diff --git a/sys/kgssapi/gssd.x b/sys/kgssapi/gssd.x index bf63ba95f8df..b50f39b33554 100644 --- a/sys/kgssapi/gssd.x +++ b/sys/kgssapi/gssd.x @@ -48,21 +48,6 @@ typedef uint64_t gssd_ctx_id_t; typedef uint64_t gssd_cred_id_t; typedef uint64_t gssd_name_t; -struct kgss_lucid_desc { - uint32_t initiate; - uint32_t endtime; - uint64_t send_seq; - uint64_t recv_seq; - uint32_t protocol; - uint32_t rfc_sign; - uint32_t rfc_seal; - uint32_t have_subkey; - uint32_t ctx_type; - gss_buffer_desc ctx_key; - uint32_t subkey_type; - gss_buffer_desc subkey_key; -}; - struct init_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -85,29 +70,6 @@ struct init_sec_context_args { gss_buffer_desc input_token; }; -struct init_sec_context_lucid_v1_res { - uint32_t major_status; - uint32_t minor_status; - gssd_ctx_id_t ctx; - gss_OID actual_mech_type; - gss_buffer_desc output_token; - uint32_t ret_flags; - uint32_t time_rec; - kgss_lucid_desc lucid; -}; - -struct init_sec_context_lucid_v1_args { - uint32_t uid; - gssd_cred_id_t cred; - gssd_ctx_id_t ctx; - gssd_name_t name; - gss_OID mech_type; - uint32_t req_flags; - uint32_t time_req; - gss_channel_bindings_t input_chan_bindings; - gss_buffer_desc input_token; -}; - struct accept_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -127,30 +89,6 @@ struct accept_sec_context_args { gss_channel_bindings_t input_chan_bindings; }; -struct accept_sec_context_lucid_v1_res { - uint32_t major_status; - uint32_t minor_status; - gssd_ctx_id_t ctx; - gssd_name_t src_name; - gss_OID mech_type; - gss_buffer_desc output_token; - uint32_t ret_flags; - uint32_t time_rec; - gssd_cred_id_t delegated_cred_handle; - kgss_lucid_desc lucid; - gss_buffer_desc exported_name; - uint32_t uid; - uint32_t gid; - uint32_t gidlist<>; -}; - -struct accept_sec_context_lucid_v1_args { - gssd_ctx_id_t ctx; - gssd_cred_id_t cred; - gss_buffer_desc input_token; - gss_channel_bindings_t input_chan_bindings; -}; - struct delete_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -163,8 +101,7 @@ struct delete_sec_context_args { enum sec_context_format { KGSS_HEIMDAL_0_6, - KGSS_HEIMDAL_1_1, - MIT_V1 + KGSS_HEIMDAL_1_1 }; struct export_sec_context_res { @@ -292,11 +229,6 @@ struct ip_to_dns_args { char ip_addr; }; -struct supports_lucid_res { - uint32_t major_status; - uint32_t vers; -}; - program GSSD { version GSSDVERS { void GSSD_NULL(void) = 0; @@ -342,14 +274,5 @@ program GSSD { ip_to_dns_res GSSD_IP_TO_DNS(ip_to_dns_args) = 14; - - init_sec_context_lucid_v1_res - GSSD_INIT_SEC_CONTEXT_LUCID_V1(init_sec_context_lucid_v1_args) = 15; - - accept_sec_context_lucid_v1_res - GSSD_ACCEPT_SEC_CONTEXT_LUCID_V1(accept_sec_context_lucid_v1_args) = 16; - - supports_lucid_res - GSSD_SUPPORTS_LUCID(void) = 17; } = 1; } = 0x40677373; diff --git a/sys/kgssapi/krb5/krb5_mech.c b/sys/kgssapi/krb5/krb5_mech.c index 59d5b120e4fb..0b8fbc90fcd1 100644 --- a/sys/kgssapi/krb5/krb5_mech.c +++ b/sys/kgssapi/krb5/krb5_mech.c @@ -217,18 +217,6 @@ copy_key(struct krb5_keyblock *from, struct krb5_keyblock **to) *to = NULL; } -static void -copy_lucid_key(gss_buffer_desc *from, uint32_t type, struct krb5_keyblock *to) -{ - - to->kk_type = type; - to->kk_key.kd_length = from->length; - if (from->length > 0) { - to->kk_key.kd_data = malloc(from->length, M_GSSAPI, M_WAITOK); - memcpy(to->kk_key.kd_data, from->value, from->length); - } -} - /* * Return non-zero if we are initiator. */ @@ -413,70 +401,6 @@ krb5_init(gss_ctx_id_t ctx) mtx_init(&kc->kc_lock, "krb5 gss lock", NULL, MTX_DEF); } -static OM_uint32 -krb5_lucid_import(gss_ctx_id_t ctx, - enum sec_context_format format, - const gss_buffer_t context_token) -{ - struct krb5_context *kc = (struct krb5_context *)ctx; - kgss_lucid_desc *lctx = (kgss_lucid_desc *)context_token; - OM_uint32 res; - - kc->kc_more_flags = 0; - if (lctx->protocol == 0) { - kc->kc_cksumtype = lctx->rfc_sign; - kc->kc_keytype = lctx->rfc_seal; - copy_lucid_key(&lctx->ctx_key, lctx->ctx_type, - &kc->kc_keyblock); - } else if (lctx->protocol == 1) { - if (lctx->have_subkey != 0) { - if (lctx->initiate != 0) - copy_lucid_key(&lctx->subkey_key, - lctx->subkey_type, - &kc->kc_remote_subkey); - else - copy_lucid_key(&lctx->subkey_key, - lctx->subkey_type, - &kc->kc_local_subkey); - kc->kc_cksumtype = lctx->subkey_type; - kc->kc_keytype = lctx->subkey_type; - kc->kc_more_flags |= ACCEPTOR_SUBKEY; - } else { - if (lctx->initiate != 0) - copy_lucid_key(&lctx->ctx_key, - lctx->ctx_type, - &kc->kc_remote_subkey); - else - copy_lucid_key(&lctx->ctx_key, - lctx->ctx_type, - &kc->kc_local_subkey); - kc->kc_cksumtype = lctx->ctx_type; - kc->kc_keytype = lctx->ctx_type; - } - } else { - return (GSS_S_DEFECTIVE_TOKEN); - } - kc->kc_local_seqnumber = lctx->send_seq; - kc->kc_remote_seqnumber = lctx->recv_seq; - if (lctx->initiate != 0) - kc->kc_more_flags |= LOCAL; - kc->kc_lifetime = lctx->endtime; - kc->kc_msg_order.km_flags = 0; - - res = get_keys(kc); - if (GSS_ERROR(res)) - return (res); - - /* - * We don't need these anymore. - */ - delete_keyblock(&kc->kc_keyblock); - delete_keyblock(&kc->kc_local_subkey); - delete_keyblock(&kc->kc_remote_subkey); - - return (GSS_S_COMPLETE); -} - static OM_uint32 krb5_import(gss_ctx_id_t ctx, enum sec_context_format format, @@ -489,10 +413,6 @@ krb5_import(gss_ctx_id_t ctx, uint32_t flags; int i; - /* For MIT, just call krb5_lucid_import(). */ - if (format == MIT_V1) - return (krb5_lucid_import(ctx, format, context_token)); - /* * We support heimdal 0.6 and heimdal 1.1 */ diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss.c b/sys/rpc/rpcsec_gss/rpcsec_gss.c index 53770d139c61..983dd251f81f 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/rpcsec_gss.c @@ -746,7 +746,6 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) struct rpc_callextra ext; gss_OID mech_oid; gss_OID_set mechlist; - static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in rpc_gss_refresh()"); @@ -853,14 +852,6 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) goto out; } - if (my_krb_imp == KRBIMP_UNKNOWN) { - maj_stat = gss_supports_lucid(&min_stat, NULL); - if (maj_stat == GSS_S_COMPLETE) - my_krb_imp = KRBIMP_MIT; - else - my_krb_imp = KRBIMP_HESIOD1; - } - /* GSS context establishment loop. */ memset(&recv_token, 0, sizeof(recv_token)); memset(&gr, 0, sizeof(gr)); @@ -871,34 +862,19 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) for (;;) { crsave = td->td_ucred; td->td_ucred = gd->gd_ucred; - if (my_krb_imp == KRBIMP_MIT) - maj_stat = gss_init_sec_context_lucid_v1(&min_stat, - gd->gd_options.my_cred, - &gd->gd_ctx, - name, - gd->gd_mech, - gd->gd_options.req_flags, - gd->gd_options.time_req, - gd->gd_options.input_channel_bindings, - recv_tokenp, - &gd->gd_mech, /* used mech */ - &send_token, - &options_ret->ret_flags, - &options_ret->time_req); - else - maj_stat = gss_init_sec_context(&min_stat, - gd->gd_options.my_cred, - &gd->gd_ctx, - name, - gd->gd_mech, - gd->gd_options.req_flags, - gd->gd_options.time_req, - gd->gd_options.input_channel_bindings, - recv_tokenp, - &gd->gd_mech, /* used mech */ - &send_token, - &options_ret->ret_flags, - &options_ret->time_req); + maj_stat = gss_init_sec_context(&min_stat, + gd->gd_options.my_cred, + &gd->gd_ctx, + name, + gd->gd_mech, + gd->gd_options.req_flags, + gd->gd_options.time_req, + gd->gd_options.input_channel_bindings, + recv_tokenp, + &gd->gd_mech, /* used mech */ + &send_token, + &options_ret->ret_flags, + &options_ret->time_req); td->td_ucred = crsave; /* diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h index 02a7767220de..3d643af8c498 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h +++ b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h @@ -73,12 +73,6 @@ struct rpc_gss_init_res { /* Maximum sequence number value. */ #define MAXSEQ 0x80000000 -enum krb_imp { - KRBIMP_UNKNOWN, - KRBIMP_HESIOD1, - KRBIMP_MIT -}; - /* Prototypes. */ __BEGIN_DECLS diff --git a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c index e047c557c712..51077c71822c 100644 --- a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c @@ -925,29 +925,9 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, OM_uint32 maj_stat = 0, min_stat = 0, ret_flags; OM_uint32 cred_lifetime; struct svc_rpc_gss_svc_name *sname; - gss_buffer_desc export_name; - rpc_gss_ucred_t *uc = &client->cl_ucred; - int numgroups; - static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in svc_rpc_gss_accept_context()"); - if (my_krb_imp == KRBIMP_UNKNOWN) { - maj_stat = gss_supports_lucid(&min_stat, NULL); - if (maj_stat == GSS_S_COMPLETE) - my_krb_imp = KRBIMP_MIT; - else - my_krb_imp = KRBIMP_HESIOD1; - min_stat = 0; - } - - if (my_krb_imp == KRBIMP_MIT) { - uc->uid = 65534; - uc->gid = 65534; - uc->gidlist = client->cl_gid_storage; - numgroups = NGROUPS; - } - /* Deserialize arguments. */ memset(&recv_tok, 0, sizeof(recv_tok)); @@ -969,38 +949,18 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, if (sname->sn_program == rqst->rq_prog && sname->sn_version == rqst->rq_vers) { retry: - if (my_krb_imp == KRBIMP_MIT) - gr->gr_major = - gss_accept_sec_context_lucid_v1( - &gr->gr_minor, - &client->cl_ctx, - sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - &client->cl_creds, - &export_name, - &uc->uid, - &uc->gid, - &numgroups, - &uc->gidlist[0]); - else - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - &client->cl_creds); + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + &client->cl_creds); if (gr->gr_major == GSS_S_CREDENTIALS_EXPIRED) { /* @@ -1022,37 +982,18 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, return (FALSE); } } else { - if (my_krb_imp == KRBIMP_MIT) - gr->gr_major = gss_accept_sec_context_lucid_v1( - &gr->gr_minor, - &client->cl_ctx, - client->cl_sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - NULL, - &export_name, - &uc->uid, - &uc->gid, - &numgroups, - &uc->gidlist[0]); - else - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - client->cl_sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - NULL); + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + client->cl_sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + NULL); } sx_xunlock(&svc_rpc_gss_lock); @@ -1068,12 +1009,8 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, rpc_gss_log_status("accept_sec_context", client->cl_mech, gr->gr_major, gr->gr_minor); client->cl_state = CLIENT_STALE; - if (my_krb_imp == KRBIMP_MIT) - uc->gidlen = 0; return (TRUE); } - if (my_krb_imp == KRBIMP_MIT) - uc->gidlen = numgroups; gr->gr_handle.value = &client->cl_id; gr->gr_handle.length = sizeof(client->cl_id); @@ -1085,6 +1022,8 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, client->cl_done_callback = FALSE; if (gr->gr_major == GSS_S_COMPLETE) { + gss_buffer_desc export_name; + /* * Change client expiration time to be near when the * client creds expire (or 24 hours if we can't figure @@ -1107,10 +1046,8 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, */ client->cl_rawcred.version = RPCSEC_GSS_VERSION; rpc_gss_oid_to_mech(mech, &client->cl_rawcred.mechanism); - maj_stat = GSS_S_COMPLETE; - if (my_krb_imp != KRBIMP_MIT) - maj_stat = gss_export_name(&min_stat, client->cl_cname, - &export_name); + maj_stat = gss_export_name(&min_stat, client->cl_cname, + &export_name); if (maj_stat != GSS_S_COMPLETE) { rpc_gss_log_status("gss_export_name", client->cl_mech, maj_stat, min_stat); @@ -1131,8 +1068,7 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, * Use gss_pname_to_uid to map to unix creds. For * kerberos5, this uses krb5_aname_to_localname. */ - if (my_krb_imp != KRBIMP_MIT) - svc_rpc_gss_build_ucred(client, client->cl_cname); + svc_rpc_gss_build_ucred(client, client->cl_cname); svc_rpc_gss_set_flavor(client); gss_release_name(&min_stat, &client->cl_cname); diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index 51908818e550..c361c1e5866d 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -140,9 +140,7 @@ SUBDIR.${MK_FLOPPY}+= fdformat SUBDIR.${MK_FLOPPY}+= fdread SUBDIR.${MK_FLOPPY}+= fdwrite SUBDIR.${MK_FREEBSD_UPDATE}+= freebsd-update -.if ${MK_KERBEROS_SUPPORT} != "no" SUBDIR.${MK_GSSAPI}+= gssd -.endif SUBDIR.${MK_GPIO}+= gpioctl SUBDIR.${MK_HYPERV}+= hyperv SUBDIR.${MK_INET6}+= ip6addrctl diff --git a/usr.sbin/gssd/Makefile b/usr.sbin/gssd/Makefile index 2cbe909c8178..569e2c7e18f5 100644 --- a/usr.sbin/gssd/Makefile +++ b/usr.sbin/gssd/Makefile @@ -9,13 +9,18 @@ SRCS= gssd.c gssd.h gssd_svc.c gssd_xdr.c gssd_prot.c CFLAGS+= -I. WARNS?= 1 +LIBADD= gssapi +.if ${MK_KERBEROS_SUPPORT} != "no" .if ${MK_MITKRB5} != "no" # MIT KRB5 -LIBADD= krb5 k5crypto krb5profile krb5support gssapi_krb5 +LIBADD+= krb5 k5crypto krb5profile krb5support CFLAGS+= -DMK_MITKRB5=yes .else # Heimdal -LIBADD= gssapi krb5 roken *** 661 LINES SKIPPED *** From nobody Thu Aug 7 00:10:25 2025 X-Original-To: dev-commits-src-main@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 4by6xY4pyHz64PWC; Thu, 07 Aug 2025 00:10: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by6xY338nz3p9v; Thu, 07 Aug 2025 00:10:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=42Bg9pSu0XZoiRJ5/9sZMne8aVwsX43pMbdoDZE5+Sw=; b=GX5yaJtOVpj8vxC3NCAj+qpggDnIdaaTXh0IHQJAi8W56g8t+STIJx064KCnwexP0n5MlE mJEOUJKhGJunjylX1Ry3JOYU8GyWE4+ihA6CZ26U3X1CPgGk1vfRs45+KB9SBQGRZx56Q+ KA0HrUrwHIrZiE5aa9AnzZT0Mr/jWxnHeH10xRcyFkgQm3wnDwkq6iJBnWcJU78eoTfNDN RDdsJ/TWp5iYZyfQ8mKNgqOctJDRWYitWkzwc3QfKeQsQ1L+XK37qBIMI9p66OJBEa+mcI sKQo5BUdqlOy56KKrbnGQgcxjCIomw9lpRdN2HfZpTqI5rovdhTZQ/HGHto7cA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754525425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=42Bg9pSu0XZoiRJ5/9sZMne8aVwsX43pMbdoDZE5+Sw=; b=wP1gGrcFNH46S7MPdreg2VohPoDrJwgjcB74YaG+0VJc3YOpVQdK0GAw5HZwrtbLIKe7jL xypExXex6dj1NHzQxoaPMe4ivXlCwfidI9STfJBRaDdUpeX7tnQHfuuIqVOEAnBbNyZJvD WVXnpUqULYz5AYrE2lhAxb3Wa/TsY7CSS3LZxRGzB39ME00lcTC13gh1aYjiv1h8hf4aCY c0mm3zGgMOu5bivf8M9sDawTEVR4ldR9CC/blQyyuPJoXMnXN5SsZicFr7IGw2JliaEHD7 rGQ6uN+bVkAoynzFCeD6KMAPcvtvUkHbAd2pedVWt2a0pndJ2z56w20+Ybs0Og== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754525425; a=rsa-sha256; cv=none; b=VYwDfsAY7cAG5y0hf6ONHYuu6k9KUH3vMQwvy/SY9FDK2wLUIFjY8BB2OfpdH7/AIVr/9j wiLxvlO1NXMe2CyjlTFXcdMvhUhfc7kvV+xzc/xstW3cAgf9uUUuQbkiuS57RTwCofqTvf ZmGZN7c9dLq4bbnHYIyqVp9NkbSH8pG/gNWXkmtLO7wcIERTLeO1BK3YDZLYkKFLiaYhKd GixgfnfVkdst5e+HvOZ5QVDPPV+uv1/yA0RBwDsXV3EGxL8HYtnS8MQaxqzj34PmgsLJ9Y oZzdxdgR7qu6wWABQZ0LOMQj97d91opKmr0nj7x1d38BzrXeS+HbzIS8gr//vQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by6xY20NszjQ3; Thu, 07 Aug 2025 00:10:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5770AP60023774; Thu, 7 Aug 2025 00:10:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5770APxM023771; Thu, 7 Aug 2025 00:10:25 GMT (envelope-from git) Date: Thu, 7 Aug 2025 00:10:25 GMT Message-Id: <202508070010.5770APxM023771@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: 650bcf5b6be2 - main - rtld-elf: Don't include duplicate semicolon in Obj_Entry List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 650bcf5b6be222184d6258c303bdce7434d2f041 Auto-Submitted: auto-generated The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=650bcf5b6be222184d6258c303bdce7434d2f041 commit 650bcf5b6be222184d6258c303bdce7434d2f041 Author: Jessica Clarke AuthorDate: 2025-08-07 00:10:18 +0000 Commit: Jessica Clarke CommitDate: 2025-08-07 00:10:18 +0000 rtld-elf: Don't include duplicate semicolon in Obj_Entry MD_OBJ_ENTRY is a list of members, possibly empty, to include in Obj_Entry. By including the semicolon here, in the case that it's empty, we end up with a duplicate semicolon. In the case that it's not empty, whether there's a duplicate depends on each architecture's definition, but they all in fact put a semicolon after every member, so there is also a duplicate semicolon there. This is invalid C syntax, although both GCC and Clang accept it, treating it only as a pedantic warning, but there is no need for us to rely on that, and downstream it masked a missing semicolon for an added field, but only on architectures where MD_OBJ_ENTRY is empty, leading to conditional compilation failure for something that should have been detected as an unconditional error. Note that PCPU_MD_FIELDS, which this is based on, follows a different style. There, every architecture defines at least one member, and there is a semicolon after PCPU_MD_FIELDS in sys/sys/pcpu.h, but every architecture makes sure to not put a semicolon after the final member in its definition of the macro. This is not a pattern we can adhere to here though given not all architectures add members. Fixes: 06db20ffeca9 ("rtld: Add MD_OBJ_ENTRY to extend Struct_Obj_Entry") --- libexec/rtld-elf/rtld.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libexec/rtld-elf/rtld.h b/libexec/rtld-elf/rtld.h index 46473b92a637..d4829b17cebb 100644 --- a/libexec/rtld-elf/rtld.h +++ b/libexec/rtld-elf/rtld.h @@ -268,7 +268,7 @@ typedef struct Struct_Obj_Entry { bool unholdfree : 1; /* unmap upon last unhold */ bool doomed : 1; /* Object cannot be referenced */ - MD_OBJ_ENTRY; + MD_OBJ_ENTRY struct link_map linkmap; /* For GDB and dlinfo() */ Objlist dldags; /* Object belongs to these dlopened DAGs (%) */ From nobody Thu Aug 7 01:23:56 2025 X-Original-To: dev-commits-src-main@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 4by8ZN4x60z64TJW; Thu, 07 Aug 2025 01:23: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by8ZN3DhQz40Xv; Thu, 07 Aug 2025 01:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754529836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DTBVXyL+l8C5lMX1sBUeG/cI6+PpVHHHuZnBLtAT9+E=; b=ZehXrbzVw/UoiISfL4Sa80HkR2PEyCfspbauMwKqDdZXIDPtdreO9sCr2YtfQg4KWsEiM8 3jrnyywJwZRqG0piF+VlB6/jKa7ro8/dqWWjIsZqdUSG/GpcZvL9JC0O0/BdtdEv1XcLzy K33AYvBSHdKaTIV7CBO5U+Z2kt8ZjPchQ7AUjh0/KY76vVZs+uEEGepjC4/JLxz1a5kOos bWhZ5AVI8CLULWkTG9H8DSJYvvlZe6Mzfyed8HkcHPiFH0jlRczg/Twv11bCPKtlR/wGdw wT/LH24XOOhFzdFzp5wO3II1XWPYiqfRqKMHElhGM/QPlNaDyDizRaJtQJg+Ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754529836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DTBVXyL+l8C5lMX1sBUeG/cI6+PpVHHHuZnBLtAT9+E=; b=msuSuRWvz55GQOaFC53w4BtZ5OJFZI5XfG0wiDrWH8G95FiZShgsdylIPIHP1o1+wqBffi UKRXreomby/MpkcCXoKNcz/PfGy1eMsMrktrBKBatR1qsGJBHDLMfE/fZsojSekm6yyCwb uLIlY8P4MfVg/Z+AqTNpDry9kk0H4LxcqgSGpqf6Jkj6P3aTs49pXGQAPSkU+Z4JHmD5W5 5eszL3runDeL3KFQ5G3SEQF5r2nh94kMFEyFWnUU4a2+TqnOz8U5ocNJnQJ/MmSIAqGH7v aYNp+ps+Rft7RPyFetzD7ba7mRYz0GFSrNkxpESHEI/BZz1VkSt4J43nWKLGfA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754529836; a=rsa-sha256; cv=none; b=iDUBZ1dujuHl7qDh3VBX7PiroEEDrMFiPrZHnNrW4D4HllGHOy0h1SEZpiTP93TZ+puzs7 69dk86DaT5lk4nLrDSddpyVdJJk1Y5K7AH5eZkyjbo+OYMcRiqm26+BjEIkF7X+VUmgd+p 7hIJVboJVQy+PDU5QIVCJ0BFfbnXSrghqjWLeAqmkcOmksXNkRSfogr/O5UQO1RhFMCZZ5 BZaBdr0N2apJs8A3960pBdTBIqqcRVCc9WBnd+56YlHCfh90KhILZGLMSGnRoJ9uOllmJK cp9fW+mjdjeekki6iMqOamwbo+VQXrCP9YS1Llo9+4N+Pwxk5vlmQWA+2Ht7Iw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by8ZN2bz7zmD8; Thu, 07 Aug 2025 01:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5771NuYD063815; Thu, 7 Aug 2025 01:23:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5771Nuga063812; Thu, 7 Aug 2025 01:23:56 GMT (envelope-from git) Date: Thu, 7 Aug 2025 01:23:56 GMT Message-Id: <202508070123.5771Nuga063812@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 7378290edb5a - main - rpcbind: Code cleanup List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 7378290edb5ad751d7d1e9bc7f96779d2bef1361 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=7378290edb5ad751d7d1e9bc7f96779d2bef1361 commit 7378290edb5ad751d7d1e9bc7f96779d2bef1361 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 01:23:19 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 01:23:19 +0000 rpcbind: Code cleanup Fix a number of style issues and attempt to reduce the diff to NetBSD. Reviewed by: glebius, kib Differential Revision: https://reviews.freebsd.org/D51773 --- usr.sbin/rpcbind/check_bound.c | 23 +- usr.sbin/rpcbind/pmap_svc.c | 38 ++-- usr.sbin/rpcbind/rpcb_stat.c | 15 +- usr.sbin/rpcbind/rpcb_svc.c | 13 +- usr.sbin/rpcbind/rpcb_svc_4.c | 30 +-- usr.sbin/rpcbind/rpcb_svc_com.c | 288 +++++++++++++------------ usr.sbin/rpcbind/rpcbind.c | 466 ++++++++++++++++++++-------------------- usr.sbin/rpcbind/rpcbind.h | 42 ++-- usr.sbin/rpcbind/warmstart.c | 12 +- 9 files changed, 471 insertions(+), 456 deletions(-) diff --git a/usr.sbin/rpcbind/check_bound.c b/usr.sbin/rpcbind/check_bound.c index 446dceb3502f..820f76d37346 100644 --- a/usr.sbin/rpcbind/check_bound.c +++ b/usr.sbin/rpcbind/check_bound.c @@ -42,13 +42,16 @@ #include #include + #include #include + #include -#include +#include +#include #include +#include #include -#include #include "rpcbind.h" @@ -61,9 +64,9 @@ struct fdlist { static struct fdlist *fdhead; /* Link list of the check fd's */ static struct fdlist *fdtail; -static char *nullstring = ""; +static char nullstring[] = ""; -static bool_t check_bound(struct fdlist *, char *uaddr); +static bool_t check_bound(struct fdlist *, const char *uaddr); /* * Returns 1 if the given address is bound for the given addr & transport @@ -71,7 +74,7 @@ static bool_t check_bound(struct fdlist *, char *uaddr); * Returns 0 for success. */ static bool_t -check_bound(struct fdlist *fdl, char *uaddr) +check_bound(struct fdlist *fdl, const char *uaddr) { int fd; struct netbuf *na; @@ -101,7 +104,7 @@ check_bound(struct fdlist *fdl, char *uaddr) } int -add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) +add_bndlist(const struct netconfig *nconf, struct netbuf *baddr __unused) { struct fdlist *fdl; struct netconfig *newnconf; @@ -109,7 +112,7 @@ add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) newnconf = getnetconfigent(nconf->nc_netid); if (newnconf == NULL) return (-1); - fdl = malloc(sizeof (struct fdlist)); + fdl = malloc(sizeof(*fdl)); if (fdl == NULL) { freenetconfigent(newnconf); syslog(LOG_ERR, "no memory!"); @@ -131,7 +134,7 @@ add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) } bool_t -is_bound(char *netid, char *uaddr) +is_bound(const char *netid, const char *uaddr) { struct fdlist *fdl; @@ -189,7 +192,7 @@ mergeaddr(SVCXPRT *xprt, char *netid, char *uaddr, char *saddr) return (NULL); } -#ifdef ND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) { if (saddr == NULL) { fprintf(stderr, "mergeaddr: client uaddr = %s\n", @@ -205,7 +208,7 @@ mergeaddr(SVCXPRT *xprt, char *netid, char *uaddr, char *saddr) * This is all we should need for IP 4 and 6 */ m_uaddr = addrmerge(svc_getrpccaller(xprt), s_uaddr, c_uaddr, netid); -#ifdef ND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "mergeaddr: uaddr = %s, merged uaddr = %s\n", uaddr, m_uaddr); diff --git a/usr.sbin/rpcbind/pmap_svc.c b/usr.sbin/rpcbind/pmap_svc.c index cea1606258ae..4dcbb0f6ddd2 100644 --- a/usr.sbin/rpcbind/pmap_svc.c +++ b/usr.sbin/rpcbind/pmap_svc.c @@ -35,7 +35,7 @@ /* * pmap_svc.c - * The server procedure for the version 2 portmaper. + * The server procedure for the version 2 portmapper. * All the portmapper related interface from the portmap side. */ @@ -47,12 +47,12 @@ #include #include #ifdef RPCBIND_DEBUG +#include #include #endif #include "rpcbind.h" -static struct pmaplist *find_service_pmap(rpcprog_t, rpcvers_t, - rpcprot_t); +static struct pmaplist *find_service_pmap(rpcprog_t, rpcvers_t, rpcprot_t); static bool_t pmapproc_change(struct svc_req *, SVCXPRT *, u_long); static bool_t pmapproc_getport(struct svc_req *, SVCXPRT *); static bool_t pmapproc_dump(struct svc_req *, SVCXPRT *); @@ -168,6 +168,11 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) uid_t uid; char uidbuf[32]; + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); + return (FALSE); + } + #ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "%s request for (%lu, %lu) : ", @@ -175,11 +180,6 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) reg.pm_prog, reg.pm_vers); #endif - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); - return (FALSE); - } - if (!check_access(xprt, op, ®, PMAPVERS)) { svcerr_weakauth(xprt); return FALSE; @@ -192,12 +192,12 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) * and looping. */ if (__rpc_get_local_uid(xprt, &uid) < 0) - rpcbreg.r_owner = "unknown"; + rpcbreg.r_owner = __UNCONST(rpcbind_unknown); else if (uid == 0) - rpcbreg.r_owner = "superuser"; + rpcbreg.r_owner = __UNCONST(rpcbind_superuser); else { /* r_owner will be strdup-ed later */ - snprintf(uidbuf, sizeof uidbuf, "%d", uid); + snprintf(uidbuf, sizeof(uidbuf), "%d", uid); rpcbreg.r_owner = uidbuf; } @@ -207,14 +207,14 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) if (op == PMAPPROC_SET) { char buf[32]; - snprintf(buf, sizeof buf, "0.0.0.0.%d.%d", + snprintf(buf, sizeof(buf), "0.0.0.0.%d.%d", (int)((reg.pm_port >> 8) & 0xff), (int)(reg.pm_port & 0xff)); rpcbreg.r_addr = buf; if (reg.pm_prot == IPPROTO_UDP) { - rpcbreg.r_netid = udptrans; + rpcbreg.r_netid = __UNCONST(udptrans); } else if (reg.pm_prot == IPPROTO_TCP) { - rpcbreg.r_netid = tcptrans; + rpcbreg.r_netid = __UNCONST(tcptrans); } else { ans = FALSE; goto done_change; @@ -224,9 +224,9 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) bool_t ans1, ans2; rpcbreg.r_addr = NULL; - rpcbreg.r_netid = tcptrans; + rpcbreg.r_netid = __UNCONST(tcptrans); ans1 = map_unset(&rpcbreg, rpcbreg.r_owner); - rpcbreg.r_netid = udptrans; + rpcbreg.r_netid = __UNCONST(udptrans); ans2 = map_unset(&rpcbreg, rpcbreg.r_owner); ans = ans1 || ans2; } else { @@ -285,9 +285,9 @@ pmapproc_getport(struct svc_req *rqstp __unused, SVCXPRT *xprt) #endif fnd = find_service_pmap(reg.pm_prog, reg.pm_vers, reg.pm_prot); if (fnd) { - char serveuaddr[32], *ua; + char serveuaddr[32]; int h1, h2, h3, h4, p1, p2; - char *netid; + const char *netid, *ua; if (reg.pm_prot == IPPROTO_UDP) { ua = udp_uaddr; @@ -303,7 +303,7 @@ pmapproc_getport(struct svc_req *rqstp __unused, SVCXPRT *xprt) &h4, &p1, &p2) == 6) { p1 = (fnd->pml_map.pm_port >> 8) & 0xff; p2 = (fnd->pml_map.pm_port) & 0xff; - snprintf(serveuaddr, sizeof serveuaddr, + snprintf(serveuaddr, sizeof(serveuaddr), "%d.%d.%d.%d.%d.%d", h1, h2, h3, h4, p1, p2); if (is_bound(netid, serveuaddr)) { port = fnd->pml_map.pm_port; diff --git a/usr.sbin/rpcbind/rpcb_stat.c b/usr.sbin/rpcbind/rpcb_stat.c index 9c03ce368293..9500bb7b7cbe 100644 --- a/usr.sbin/rpcbind/rpcb_stat.c +++ b/usr.sbin/rpcbind/rpcb_stat.c @@ -37,15 +37,18 @@ * Copyright (c) 1990 by Sun Microsystems, Inc. */ -#include +#include + #include #include -#include #ifdef PORTMAP #include #endif + +#include #include #include + #include "rpcbind.h" static rpcb_stat_byvers inf; @@ -96,8 +99,8 @@ rpcbs_unset(rpcvers_t rtype, bool_t success) } void -rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, char *netid, - char *uaddr) +rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, + const char *netid, const char *uaddr) { rpcbs_addrlist *al; struct netconfig *nconf; @@ -121,7 +124,7 @@ rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, char *netid, if (nconf == NULL) { return; } - al = (rpcbs_addrlist *) malloc(sizeof (rpcbs_addrlist)); + al = malloc(sizeof(*al)); if (al == NULL) { return; } @@ -170,7 +173,7 @@ rpcbs_rmtcall(rpcvers_t rtype, rpcproc_t rpcbproc, rpcprog_t prog, if (nconf == NULL) { return; } - rl = (rpcbs_rmtcalllist *) malloc(sizeof (rpcbs_rmtcalllist)); + rl = malloc(sizeof(*rl)); if (rl == NULL) { return; } diff --git a/usr.sbin/rpcbind/rpcb_svc.c b/usr.sbin/rpcbind/rpcb_svc.c index 94323ab992aa..5a23abe3dbc6 100644 --- a/usr.sbin/rpcbind/rpcb_svc.c +++ b/usr.sbin/rpcbind/rpcb_svc.c @@ -46,6 +46,7 @@ #include #include #ifdef RPCBIND_DEBUG +#include #include #endif #include @@ -53,9 +54,9 @@ #include "rpcbind.h" static void *rpcbproc_getaddr_3_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); + rpcvers_t); static void *rpcbproc_dump_3_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); + rpcvers_t); /* * Called by svc_getreqset. There is a separate server handle for @@ -89,7 +90,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) #endif /* This call just logs, no actual checks */ check_access(transp, rqstp->rq_proc, NULL, RPCBVERS); - (void) svc_sendreply(transp, (xdrproc_t)xdr_void, (char *)NULL); + (void) svc_sendreply(transp, (xdrproc_t)xdr_void, NULL); return; case RPCBPROC_SET: @@ -204,7 +205,7 @@ done: /* ARGSUSED */ static void * rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t versnum __unused) + SVCXPRT *transp __unused, rpcvers_t versnum __unused) { RPCB *regp = (RPCB *)arg; #ifdef RPCBIND_DEBUG @@ -212,7 +213,7 @@ rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, char *uaddr; uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid), - svc_getrpccaller(transp)); + svc_getrpccaller(transp)); fprintf(stderr, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ", (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, regp->r_netid, uaddr); @@ -226,7 +227,7 @@ rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, /* ARGSUSED */ static void * rpcbproc_dump_3_local(void *arg __unused, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t versnum __unused) + SVCXPRT *transp __unused, rpcvers_t versnum __unused) { return ((void *)&list_rbl); } diff --git a/usr.sbin/rpcbind/rpcb_svc_4.c b/usr.sbin/rpcbind/rpcb_svc_4.c index 77240e4d3ef5..817312709cf0 100644 --- a/usr.sbin/rpcbind/rpcb_svc_4.c +++ b/usr.sbin/rpcbind/rpcb_svc_4.c @@ -51,12 +51,14 @@ #include "rpcbind.h" static void *rpcbproc_getaddr_4_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); -static void *rpcbproc_getversaddr_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); -static void *rpcbproc_getaddrlist_4_local - (void *, struct svc_req *, SVCXPRT *, rpcvers_t); + rpcvers_t); +static void *rpcbproc_getversaddr_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); +static void *rpcbproc_getaddrlist_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); static void free_rpcb_entry_list(rpcb_entry_list_ptr *); -static void *rpcbproc_dump_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); +static void *rpcbproc_dump_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); /* * Called by svc_getreqset. There is a separate server handle for @@ -88,8 +90,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) fprintf(stderr, "RPCBPROC_NULL\n"); #endif check_access(transp, rqstp->rq_proc, NULL, RPCBVERS4); - (void) svc_sendreply(transp, (xdrproc_t) xdr_void, - (char *)NULL); + (void) svc_sendreply(transp, (xdrproc_t) xdr_void, NULL); return; case RPCBPROC_SET: @@ -257,7 +258,7 @@ done: /* ARGSUSED */ static void * rpcbproc_getaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp, - rpcvers_t rpcbversnum __unused) + rpcvers_t rpcbversnum __unused) { RPCB *regp = (RPCB *)arg; #ifdef RPCBIND_DEBUG @@ -315,7 +316,7 @@ rpcbproc_getversaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp, /* ARGSUSED */ static void * rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t versnum __unused) + SVCXPRT *transp, rpcvers_t versnum __unused) { RPCB *regp = (RPCB *)arg; static rpcb_entry_list_ptr rlist; @@ -384,7 +385,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, /* * Add it to rlist. */ - rp = malloc(sizeof (rpcb_entry_list)); + rp = malloc(sizeof(*rp)); if (rp == NULL) goto fail; a = &rp->rpcb_entry_map; @@ -397,7 +398,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, if (rlist == NULL) { rlist = rp; tail = rp; - } else { + } else if (tail != NULL) { tail->rpcb_entry_next = rp; tail = rp; } @@ -417,9 +418,10 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, * Perhaps wrong, but better than it not getting counted at all. */ rpcbs_getaddr(RPCBVERS4 - 2, prog, vers, transp->xp_netid, maddr); - return (void *)&rlist; + return (&rlist); -fail: free_rpcb_entry_list(&rlist); +fail: + free_rpcb_entry_list(&rlist); return (NULL); } @@ -444,7 +446,7 @@ free_rpcb_entry_list(rpcb_entry_list_ptr *rlistp) /* ARGSUSED */ static void * rpcbproc_dump_4_local(void *arg __unused, struct svc_req *req __unused, - SVCXPRT *xprt __unused, rpcvers_t versnum __unused) + SVCXPRT *xprt __unused, rpcvers_t versnum __unused) { return ((void *)&list_rbl); } diff --git a/usr.sbin/rpcbind/rpcb_svc_com.c b/usr.sbin/rpcbind/rpcb_svc_com.c index 15ecda213abc..a82cf44bfa3c 100644 --- a/usr.sbin/rpcbind/rpcb_svc_com.c +++ b/usr.sbin/rpcbind/rpcb_svc_com.c @@ -110,7 +110,7 @@ static int check_rmtcalls(struct pollfd *, int); static void xprt_set_caller(SVCXPRT *, struct finfo *); static void send_svcsyserr(SVCXPRT *, struct finfo *); static void handle_reply(int, SVCXPRT *); -static void find_versions(rpcprog_t, char *, rpcvers_t *, rpcvers_t *); +static void find_versions(rpcprog_t, const char *, rpcvers_t *, rpcvers_t *); static rpcblist_ptr find_service(rpcprog_t, rpcvers_t, char *); static char *getowner(SVCXPRT *, char *, size_t); static int add_pmaplist(RPCB *); @@ -122,17 +122,17 @@ static int del_pmaplist(RPCB *); /* ARGSUSED */ void * rpcbproc_set_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, - rpcvers_t rpcbversnum) + rpcvers_t rpcbversnum) { - RPCB *regp = (RPCB *)arg; + RPCB *regp = arg; static bool_t ans; char owner[64]; #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "RPCB_SET request for (%lu, %lu, %s, %s) : ", - (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, - regp->r_netid, regp->r_addr); + fprintf(stderr, "%s: RPCB_SET request for (%lu, %lu, %s, %s): ", + __func__, (unsigned long)regp->r_prog, + (unsigned long)regp->r_vers, regp->r_netid, regp->r_addr); #endif ans = map_set(regp, getowner(transp, owner, sizeof owner)); #ifdef RPCBIND_DEBUG @@ -145,7 +145,7 @@ rpcbproc_set_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, } bool_t -map_set(RPCB *regp, char *owner) +map_set(RPCB *regp, const char *owner) { RPCB reg, *a; rpcblist_ptr rbl, fnd; @@ -170,7 +170,7 @@ map_set(RPCB *regp, char *owner) /* * add to the end of the list */ - rbl = malloc(sizeof (RPCBLIST)); + rbl = malloc(sizeof(*rbl)); if (rbl == NULL) return (FALSE); a = &(rbl->rpcb_map); @@ -186,7 +186,7 @@ map_set(RPCB *regp, char *owner) free(rbl); return (FALSE); } - rbl->rpcb_next = (rpcblist_ptr)NULL; + rbl->rpcb_next = NULL; if (list_rbl == NULL) { list_rbl = rbl; } else { @@ -196,7 +196,7 @@ map_set(RPCB *regp, char *owner) fnd->rpcb_next = rbl; } #ifdef PORTMAP - (void) add_pmaplist(regp); + (void)add_pmaplist(regp); #endif return (TRUE); } @@ -207,17 +207,17 @@ map_set(RPCB *regp, char *owner) /* ARGSUSED */ void * rpcbproc_unset_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, - rpcvers_t rpcbversnum) + rpcvers_t rpcbversnum) { - RPCB *regp = (RPCB *)arg; + RPCB *regp = arg; static bool_t ans; char owner[64]; #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "RPCB_UNSET request for (%lu, %lu, %s) : ", - (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, - regp->r_netid); + fprintf(stderr, "%s: RPCB_UNSET request for (%lu, %lu, %s): ", + __func__, (unsigned long)regp->r_prog, + (unsigned long)regp->r_vers, regp->r_netid); #endif ans = map_unset(regp, getowner(transp, owner, sizeof owner)); #ifdef RPCBIND_DEBUG @@ -230,7 +230,7 @@ rpcbproc_unset_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, } bool_t -map_unset(RPCB *regp, char *owner) +map_unset(RPCB *regp, const char *owner) { int ans = 0; rpcblist_ptr rbl, prev, tmp; @@ -252,7 +252,7 @@ map_unset(RPCB *regp, char *owner) * Check whether appropriate uid. Unset only * if superuser or the owner itself. */ - if (strcmp(owner, "superuser") && + if (strcmp(owner, rpcbind_superuser) && strcmp(rbl->rpcb_map.r_owner, owner)) return (0); /* found it; rbl moves forward, prev stays */ @@ -270,21 +270,21 @@ map_unset(RPCB *regp, char *owner) } #ifdef PORTMAP if (ans) - (void) del_pmaplist(regp); + (void)del_pmaplist(regp); #endif /* * We return 1 either when the entry was not there or it * was able to unset it. It can come to this point only if - * atleast one of the conditions is true. + * at least one of the conditions is true. */ return (1); } void -delete_prog(unsigned int prog) +delete_prog(rpcprog_t prog) { RPCB reg; - register rpcblist_ptr rbl; + rpcblist_ptr rbl; for (rbl = list_rbl; rbl != NULL; rbl = rbl->rpcb_next) { if ((rbl->rpcb_map.r_prog != prog)) @@ -294,14 +294,18 @@ delete_prog(unsigned int prog) reg.r_prog = rbl->rpcb_map.r_prog; reg.r_vers = rbl->rpcb_map.r_vers; reg.r_netid = strdup(rbl->rpcb_map.r_netid); - (void) map_unset(®, "superuser"); - free(reg.r_netid); + if (reg.r_netid == NULL) + syslog(LOG_ERR, "%s: %m", __func__); + else { + (void)map_unset(®, rpcbind_superuser); + free(reg.r_netid); + } } } void * rpcbproc_getaddr_com(RPCB *regp, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum, rpcvers_t verstype) + SVCXPRT *transp, rpcvers_t rpcbversnum, rpcvers_t verstype) { static char *uaddr; char *saddr = NULL; @@ -333,23 +337,23 @@ rpcbproc_getaddr_com(RPCB *regp, struct svc_req *rqstp __unused, } #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "getaddr: %s\n", uaddr); + fprintf(stderr, "%s: %s\n", __func__, uaddr); #endif /* XXX: should have used some defined constant here */ rpcbs_getaddr(rpcbversnum - 2, regp->r_prog, regp->r_vers, transp->xp_netid, uaddr); - return (void *)&uaddr; + return (&uaddr); } /* ARGSUSED */ void * rpcbproc_gettime_com(void *arg __unused, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp __unused, rpcvers_t rpcbversnum __unused) { static time_t curtime; - (void) time(&curtime); - return (void *)&curtime; + (void)time(&curtime); + return (&curtime); } /* @@ -359,9 +363,9 @@ rpcbproc_gettime_com(void *arg __unused, struct svc_req *rqstp __unused, /* ARGSUSED */ void * rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp, rpcvers_t rpcbversnum __unused) { - char **uaddrp = (char **)arg; + char **uaddrp = arg; struct netconfig *nconf; static struct netbuf nbuf; static struct netbuf *taddr; @@ -370,10 +374,10 @@ rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, taddr = NULL; if (((nconf = rpcbind_get_conf(transp->xp_netid)) == NULL) || ((taddr = uaddr2taddr(nconf, *uaddrp)) == NULL)) { - (void) memset((char *)&nbuf, 0, sizeof (struct netbuf)); - return (void *)&nbuf; + memset(&nbuf, 0, sizeof(nbuf)); + return (&nbuf); } - return (void *)taddr; + return (taddr); } /* @@ -383,9 +387,9 @@ rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, /* ARGSUSED */ void * rpcbproc_taddr2uaddr_com(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp, rpcvers_t rpcbversnum __unused) { - struct netbuf *taddr = (struct netbuf *)arg; + struct netbuf *taddr = arg; static char *uaddr; struct netconfig *nconf; @@ -393,7 +397,7 @@ rpcbproc_taddr2uaddr_com(void *arg, struct svc_req *rqstp __unused, int fd; if ((fd = open("/dev/null", O_RDONLY)) == -1) { - uaddr = (char *)strerror(errno); + uaddr = strerror(errno); return (&uaddr); } #endif /* CHEW_FDS */ @@ -480,7 +484,7 @@ static struct rmtcallfd_list *rmthead; static struct rmtcallfd_list *rmttail; int -create_rmtcall_fd(struct netconfig *nconf) +create_rmtcall_fd(const struct netconfig *nconf) { int fd; struct rmtcallfd_list *rmt; @@ -488,21 +492,20 @@ create_rmtcall_fd(struct netconfig *nconf) if ((fd = __rpc_nconf2fd(nconf)) == -1) { if (debugging) - fprintf(stderr, - "create_rmtcall_fd: couldn't open \"%s\" (errno %d)\n", - nconf->nc_device, errno); + fprintf(stderr, "%s: couldn't open \"%s\": %m\n", + __func__, nconf->nc_device); return (-1); } - xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0); + xprt = svc_tli_create(fd, 0, NULL, 0, 0); if (xprt == NULL) { if (debugging) - fprintf(stderr, - "create_rmtcall_fd: svc_tli_create failed\n"); + fprintf(stderr, "%s: svc_tli_create failed\n", + __func__); return (-1); } - rmt = malloc(sizeof (struct rmtcallfd_list)); + rmt = malloc(sizeof(*rmt)); if (rmt == NULL) { - syslog(LOG_ERR, "create_rmtcall_fd: no memory!"); + syslog(LOG_ERR, "%s: %m", __func__); return (-1); } rmt->xprt = xprt; @@ -591,16 +594,16 @@ find_rmtcallxprt_by_fd(int fd) void rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - rpcproc_t reply_type, rpcvers_t versnum) + rpcproc_t reply_type, rpcvers_t versnum) { - register rpcblist_ptr rbl; + rpcblist_ptr rbl; struct netconfig *nconf; struct netbuf *caller; struct r_rmtcall_args a; char *buf_alloc = NULL, *outbufp; char *outbuf_alloc = NULL; char buf[RPC_BUF_MAX], outbuf[RPC_BUF_MAX]; - struct netbuf *na = (struct netbuf *) NULL; + struct netbuf *na = NULL; struct rpc_msg call_msg; int outlen; u_int sendsz; @@ -638,8 +641,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, #endif /* notyet */ if (buf_alloc == NULL) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: No Memory!\n"); + fprintf(stderr, "%s: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); return; @@ -650,12 +652,11 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, } call_msg.rm_xid = 0; /* For error checking purposes */ - if (!svc_getargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { + if (!svc_getargs(transp, (xdrproc_t)xdr_rmtcall_args, (char *) &a)) { if (reply_type == RPCBPROC_INDIRECT) svcerr_decode(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: svc_getargs failed\n"); + fprintf(stderr, "%s: svc_getargs failed\n", __func__); goto error; } @@ -668,14 +669,15 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, #ifdef RPCBIND_DEBUG if (debugging) { uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid), caller); - fprintf(stderr, "%s %s req for (%lu, %lu, %lu, %s) from %s : ", - versnum == PMAPVERS ? "pmap_rmtcall" : - versnum == RPCBVERS ? "rpcb_rmtcall" : - versnum == RPCBVERS4 ? "rpcb_indirect" : "unknown", - reply_type == RPCBPROC_INDIRECT ? "indirect" : "callit", - (unsigned long)a.rmt_prog, (unsigned long)a.rmt_vers, - (unsigned long)a.rmt_proc, transp->xp_netid, - uaddr ? uaddr : "unknown"); + fprintf(stderr, + "%s: %s %s req for (%lu, %lu, %lu, %s) from %s: ", + __func__, versnum == PMAPVERS ? "pmap_rmtcall" : + versnum == RPCBVERS ? "rpcb_rmtcall" : + versnum == RPCBVERS4 ? "rpcb_indirect" : rpcbind_unknown, + reply_type == RPCBPROC_INDIRECT ? "indirect" : "callit", + (unsigned long)a.rmt_prog, (unsigned long)a.rmt_vers, + (unsigned long)a.rmt_proc, transp->xp_netid, + uaddr ? uaddr : rpcbind_unknown); free(uaddr); } #endif @@ -685,7 +687,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, rpcbs_rmtcall(versnum - 2, reply_type, a.rmt_prog, a.rmt_vers, a.rmt_proc, transp->xp_netid, rbl); - if (rbl == (rpcblist_ptr)NULL) { + if (rbl == NULL) { #ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "not found\n"); @@ -726,19 +728,18 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, free(uaddr); } nconf = rpcbind_get_conf(transp->xp_netid); - if (nconf == (struct netconfig *)NULL) { + if (nconf == NULL) { if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: rpcbind_get_conf failed\n"); + fprintf(stderr, "%s: rpcbind_get_conf failed\n", + __func__); goto error; } localsa = local_sa(((struct sockaddr *)caller->buf)->sa_family); if (localsa == NULL) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: no local address\n"); + fprintf(stderr, "%s: no local address\n", __func__); goto error; } tbuf.len = tbuf.maxlen = localsa->sa_len; @@ -749,7 +750,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, nconf->nc_netid); #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "merged uaddr %s\n", m_uaddr); + fprintf(stderr, "%s: merged uaddr %s\n", __func__, m_uaddr); #endif if ((fd = find_rmtcallfd_by_netid(nconf->nc_netid)) == -1) { if (reply_type == RPCBPROC_INDIRECT) @@ -769,22 +770,20 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, * beat on it any more. */ if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: duplicate request\n"); + fprintf(stderr, "%s: duplicate request\n", __func__); goto error; case -1: /* forward_register failed. Perhaps no memory. */ if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: forward_register failed\n"); + fprintf(stderr, "%s: forward_register failed\n", + __func__); goto error; } #ifdef DEBUG_RMTCALL if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: original XID %x, new XID %x\n", - *xidp, call_msg.rm_xid); + fprintf(stderr, "%s: original XID %x, new XID %x\n", __func__, + *xidp, call_msg.rm_xid); #endif call_msg.rm_direction = CALL; call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION; @@ -797,11 +796,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, outbuf_alloc = malloc(sendsz); #endif /* notyet */ if (outbuf_alloc == NULL) { + if (debugging) + fprintf(stderr, "%s: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); - if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: No memory!\n"); goto error; } xdrmem_create(&outxdr, outbuf_alloc, sendsz, XDR_ENCODE); @@ -812,16 +810,14 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_callhdr failed\n"); + fprintf(stderr, "%s: xdr_callhdr failed\n", __func__); goto error; } if (!xdr_u_int32_t(&outxdr, &(a.rmt_proc))) { if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_u_long failed\n"); + fprintf(stderr, "%s: xdr_u_long failed\n", __func__); goto error; } @@ -839,8 +835,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, } else { /* we do not support any other authentication scheme */ if (debugging) - fprintf(stderr, -"rpcbproc_callit_com: oa_flavor != AUTH_NONE and oa_flavor != AUTH_SYS\n"); + fprintf(stderr, "%s: oa_flavor != AUTH_NONE and " + "oa_flavor != AUTH_SYS\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_weakauth(transp); /* XXX too strong.. */ goto error; @@ -850,7 +846,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, svcerr_systemerr(transp); if (debugging) fprintf(stderr, - "rpcbproc_callit_com: authwhatever_create returned NULL\n"); + "%s: authwhatever_create returned NULL\n", + __func__); goto error; } if (!AUTH_MARSHALL(auth, &outxdr)) { @@ -858,8 +855,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, svcerr_systemerr(transp); AUTH_DESTROY(auth); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: AUTH_MARSHALL failed\n"); + fprintf(stderr, "%s: AUTH_MARSHALL failed\n", + __func__); goto error; } AUTH_DESTROY(auth); @@ -867,8 +864,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_opaque_parms failed\n"); + fprintf(stderr, "%s: xdr_opaque_parms failed\n", + __func__); goto error; } outlen = (int) XDR_GETPOS(&outxdr); @@ -887,8 +884,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (sendto(fd, outbufp, outlen, 0, (struct sockaddr *)na->buf, na->len) != outlen) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: sendto failed: errno %d\n", errno); + fprintf(stderr, "%s: sendto failed: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); goto error; @@ -897,7 +893,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, error: if (call_msg.rm_xid != 0) - (void) free_slot_by_xid(call_msg.rm_xid); + (void)free_slot_by_xid(call_msg.rm_xid); out: free(local_uaddr); free(buf_alloc); @@ -913,14 +909,12 @@ out: */ static int forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, - int forward_fd, char *uaddr, rpcproc_t reply_type, - rpcvers_t versnum, u_int32_t *callxidp) + int forward_fd, char *uaddr, rpcproc_t reply_type, + rpcvers_t versnum, u_int32_t *callxidp) { - int i; - int j = 0; - time_t min_time, time_now; - static u_int32_t lastxid; - int entry = -1; + static u_int32_t lastxid; + time_t min_time, time_now; + int i, j = 0, entry = -1; min_time = FINFO[0].time; time_now = time((time_t *)0); @@ -945,7 +939,7 @@ forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, } else { /* Should we wait any longer */ if ((time_now - FINFO[i].time) > MAXTIME_OFF) - (void) free_slot_by_index(i); + (void)free_slot_by_index(i); } } if (entry == -1) { @@ -961,7 +955,7 @@ forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, /* use this empty slot */ j = entry; } else { - (void) free_slot_by_index(j); + (void)free_slot_by_index(j); } *** 1037 LINES SKIPPED *** From nobody Thu Aug 7 01:23:57 2025 X-Original-To: dev-commits-src-main@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 4by8ZP5PwZz64TWT; Thu, 07 Aug 2025 01:23:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4by8ZP3K63z40dD; Thu, 07 Aug 2025 01:23:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754529837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bY5Bv9Wu2l8q+ioPLBwwQ2rJI+/ngokDUKeBv4venZA=; b=qJhYzlbwchsYFoyf8Dp4HIETlDws/lP9nz86uat+puWx0nrpZ9+eMhxH9nivJlTPATu5dW dczmdcX9k+UPnjqg2Ug2phUPn/aISidkVFKa9QhI93icdffydcHTU48SKHkfE20bvrxpV2 14e4Tfl730Tms6OlrZYbttzQz9jP00qqnoPhRcq8PC//cJn3exE93yOVJBcCFet6HGmAQr DqrXHnxgJVvook+YFgK+rEbCTbG0p4zBJfcOTfbc6F9z+X2heAt7educgH0TU0igRHVxhA vLu4LtYwx0NYUVWScke3AumcNiU1LU9a/5zGYzAfxRTo+FAFEJqQRU2ak/01Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754529837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bY5Bv9Wu2l8q+ioPLBwwQ2rJI+/ngokDUKeBv4venZA=; b=MVmNO4hVSalIt5XeiTozNpJrJD/MkV9VAnNYlwlajGqBJ7mngBvZQAdBt0+Ili8hF+j03c 5lKPDrlyd/wXc7Ur80EXfZx8SaW+p7ITAyzriZyDqMpnv+NZPHbHDCxdz7ZC6BdS5BE7vF mtkOYLFCv24lSgZr0g+aMkFKNfjy/yUiCekMEVMq/CRptMXXM5qm8IbgD7GCMlb44t0VGH Kmyo3NckHhk69wq75wmMsMKbpm1qFBFvP1aeBFi6xomKEpP3wxTKcHvyGTcQ+G3yQ8FkFX vr/EKPrdFR7uYhd25/GeCwyUSfio29kSQ8KuXLLXC7Jo6tNewGX3jU5CzZaqlQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754529837; a=rsa-sha256; cv=none; b=qHP25cmguo9/wBALyfr9TwDmtCTPSLp7thFH8vVaM7Fmn6kd34QlYviI3n3h8W98vvbOeb idVe+O7iE2hhbz0RnVv2XC28AdLRUiv98BApmZ244kUws/mp0GjR5b3hStl3ZIRW/jNpbX Jgcud6JJWvWmSgkmXXz1Tru1f3V+x7G29OlP9HxOBSCv4CpBI6OrGm+a3EGzHdiG/1JgVi i9svMd8jz+nzFoZrstiinbBFbNW0A/t+VzDCOpLyaIlmsWgsm8IrJE2aoh5keQ6u3fFAJS xNdotRxk44OyqGly7a7uOZVZ8dy5wI6FSrM/1yExTYcQLpt4Z5/LjElR493dZw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4by8ZP2vkpzlRq; Thu, 07 Aug 2025 01:23:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5771NvxW063853; Thu, 7 Aug 2025 01:23:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5771Nvwc063850; Thu, 7 Aug 2025 01:23:57 GMT (envelope-from git) Date: Thu, 7 Aug 2025 01:23:57 GMT Message-Id: <202508070123.5771Nvwc063850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 02f394281fd6 - main - find: Fix -printf List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 02f394281fd67dc15afb26c51d52f2b4cbf28065 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=02f394281fd67dc15afb26c51d52f2b4cbf28065 commit 02f394281fd67dc15afb26c51d52f2b4cbf28065 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 01:23:32 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 01:23:32 +0000 find: Fix -printf Each -printf invocation created a memstream, then freed the underlying buffer without closing the stream, resulting in a segfault on exit when libc tried to flush all the streams. Drop the memstream, which isn't really needed. Furthermore: * Change escape() to return char * instead of const char * * Simplify the implementation of %h * Fix %M, which printed an extra space * Implement %l correctly * Implement %Y and %y * Add tests for everything except %S Fixes: 7b9c912c41f4 Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51776 --- usr.bin/find/find.1 | 13 +++- usr.bin/find/printf.c | 161 +++++++++++++++++++++++++--------------- usr.bin/find/tests/find_test.sh | 111 +++++++++++++++++++++++++++ 3 files changed, 223 insertions(+), 62 deletions(-) diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1 index b16c4bcc95a2..98521a98762d 100644 --- a/usr.bin/find/find.1 +++ b/usr.bin/find/find.1 @@ -1144,9 +1144,18 @@ Inode of the file. .It n Number of hard links. .It y -Unimplemented -- Type of the file +A single character representing the type of the file. .It Y -Unimplemented -- Type of the file with loop detection +A single character representing the type of the file. +If the file is a symbolic link, show information for the target of the +link instead, or +.Sq L +if the link loops, +.Sq N +if the target does not exist, or +.Sq ? +if any other error occurs while attempting to determine the type of +the target. .It a Access time of the file. .It A diff --git a/usr.bin/find/printf.c b/usr.bin/find/printf.c index 671d1d1dbb9a..c1be04376156 100644 --- a/usr.bin/find/printf.c +++ b/usr.bin/find/printf.c @@ -5,15 +5,18 @@ */ #include -#include -#include -#include -#include + #include +#include #include #include #include +#include +#include +#include +#include #include +#include #include "find.h" @@ -32,7 +35,7 @@ isesc(char c) return (c >= 'a' && c <= 'v' && esc[c - 'a'] != c); } -static const char * +static char * escape(const char *str, bool *flush, bool *warned) { char c; @@ -147,7 +150,6 @@ fp_strftime(FILE *fp, time_t t, char mod) gmtime_r(&t, &tm); fmt[1] = mod; - printf("fmt is '%s'\n", fmt); if (strftime(buffer, sizeof(buffer), fmt, &tm) == 0) errx(1, "Format bad or data too long for buffer"); /* Can't really happen ??? */ fputs(buffer, fp); @@ -156,36 +158,36 @@ fp_strftime(FILE *fp, time_t t, char mod) void do_printf(PLAN *plan, FTSENT *entry, FILE *fout) { - const char *fmt, *path, *pend, *all; - char c; - FILE *fp; + char buf[4096]; + struct stat sb; + struct stat *sp; + const char *path, *pend; + char *all, *fmt; + ssize_t ret; + int c; bool flush, warned; - struct stat *sb; - char *tmp; - size_t tmplen; - fp = open_memstream(&tmp, &tmplen); warned = (plan->flags & F_HAS_WARNED) != 0; all = fmt = escape(plan->c_data, &flush, &warned); if (warned) plan->flags |= F_HAS_WARNED; - sb = entry->fts_statp; for (c = *fmt++; c; c = *fmt++) { + sp = entry->fts_statp; if (c != '%') { - putc(c, fp); + putc(c, fout); continue; } c = *fmt++; /* Style(9) deviation: case order same as gnu find info doc */ switch (c) { case '%': - putc(c, fp); + putc(c, fout); break; case 'p': /* Path to file */ - fputs(entry->fts_path, fp); + fputs(entry->fts_path, fout); break; case 'f': /* filename w/o dirs */ - fputs(entry->fts_name, fp); + fputs(entry->fts_name, fout); break; case 'h': /* @@ -195,98 +197,139 @@ do_printf(PLAN *plan, FTSENT *entry, FILE *fout) path = entry->fts_path; pend = strrchr(path, '/'); if (pend == NULL) - putc('.', fp); - else { - char *t = malloc(pend - path + 1); - memcpy(t, path, pend - path); - t[pend - path] = '\0'; - fputs(t, fp); - free(t); - } + putc('.', fout); + else + fwrite(path, pend - path, 1, fout); break; case 'P': /* file with command line arg rm'd -- HOW? fts_parent? */ errx(1, "%%%c is unimplemented", c); case 'H': /* Command line arg -- HOW? */ errx(1, "%%%c is unimplemented", c); case 'g': /* gid human readable */ - fputs(group_from_gid(sb->st_gid, 0), fp); + fputs(group_from_gid(sp->st_gid, 0), fout); break; case 'G': /* gid numeric */ - fprintf(fp, "%d", sb->st_gid); + fprintf(fout, "%d", sp->st_gid); break; case 'u': /* uid human readable */ - fputs(user_from_uid(sb->st_uid, 0), fp); + fputs(user_from_uid(sp->st_uid, 0), fout); break; case 'U': /* uid numeric */ - fprintf(fp, "%d", sb->st_uid); + fprintf(fout, "%d", sp->st_uid); break; case 'm': /* mode in octal */ - fprintf(fp, "%o", sb->st_mode & 07777); + fprintf(fout, "%o", sp->st_mode & 07777); break; - case 'M': { /* Mode in ls-standard form */ - char mode[12]; - strmode(sb->st_mode, mode); - fputs(mode, fp); + case 'M': /* Mode in ls-standard form */ + strmode(sp->st_mode, buf); + fwrite(buf, 10, 1, fout); break; - } case 'k': /* kbytes used by file */ - fprintf(fp, "%jd", (intmax_t)sb->st_blocks / 2); + fprintf(fout, "%jd", (intmax_t)sp->st_blocks / 2); break; case 'b': /* blocks used by file */ - fprintf(fp, "%jd", (intmax_t)sb->st_blocks); + fprintf(fout, "%jd", (intmax_t)sp->st_blocks); break; case 's': /* size in bytes of file */ - fprintf(fp, "%ju", (uintmax_t)sb->st_size); + fprintf(fout, "%ju", (uintmax_t)sp->st_size); break; case 'S': /* sparseness of file */ - fprintf(fp, "%3.1f", - (float)sb->st_blocks * 512 / (float)sb->st_size); + fprintf(fout, "%3.1f", + (float)sp->st_blocks * 512 / (float)sp->st_size); break; case 'd': /* Depth in tree */ - fprintf(fp, "%ld", entry->fts_level); + fprintf(fout, "%ld", entry->fts_level); break; case 'D': /* device number */ - fprintf(fp, "%ju", (uintmax_t)sb->st_dev); + fprintf(fout, "%ju", (uintmax_t)sp->st_dev); break; case 'F': /* Filesystem type */ errx(1, "%%%c is unimplemented", c); case 'l': /* object of symbolic link */ - fprintf(fp, "%s", entry->fts_accpath); + ret = readlink(entry->fts_accpath, buf, sizeof(buf)); + if (ret > 0) + fwrite(buf, ret, 1, fout); break; case 'i': /* inode # */ - fprintf(fp, "%ju", (uintmax_t)sb->st_ino); + fprintf(fout, "%ju", (uintmax_t)sp->st_ino); break; case 'n': /* number of hard links */ - fprintf(fp, "%ju", (uintmax_t)sb->st_nlink); + fprintf(fout, "%ju", (uintmax_t)sp->st_nlink); break; - case 'y': /* -type of file, incl 'l' */ - errx(1, "%%%c is unimplemented", c); case 'Y': /* -type of file, following 'l' types L loop ? error */ - errx(1, "%%%c is unimplemented", c); + if (S_ISLNK(sp->st_mode)) { + if (stat(entry->fts_accpath, &sb) != 0) { + switch (errno) { + case ELOOP: + putc('L', fout); + break; + case ENOENT: + putc('N', fout); + break; + default: + putc('?', fout); + break; + } + break; + } + sp = &sb; + } + /* FALLTHROUGH */ + case 'y': /* -type of file, incl 'l' */ + switch (sp->st_mode & S_IFMT) { + case S_IFIFO: + putc('p', fout); + break; + case S_IFCHR: + putc('c', fout); + break; + case S_IFDIR: + putc('d', fout); + break; + case S_IFBLK: + putc('b', fout); + break; + case S_IFREG: + putc('f', fout); + break; + case S_IFLNK: + putc('l', fout); + break; + case S_IFSOCK: + putc('s', fout); + break; + case S_IFWHT: + putc('w', fout); + break; + default: + putc('U', fout); + break; + } + break; case 'a': /* access time ctime */ - fp_ctime(fp, sb->st_atime); + fp_ctime(fout, sp->st_atime); break; case 'A': /* access time with next char strftime format */ - fp_strftime(fp, sb->st_atime, *fmt++); + fp_strftime(fout, sp->st_atime, *fmt++); break; case 'B': /* birth time with next char strftime format */ #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME - if (sb->st_birthtime != 0) - fp_strftime(fp, sb->st_birthtime, *fmt); + if (sp->st_birthtime != 0) + fp_strftime(fout, sp->st_birthtime, *fmt); #endif fmt++; break; /* blank on systems that don't support it */ case 'c': /* status change time ctime */ - fp_ctime(fp, sb->st_ctime); + fp_ctime(fout, sp->st_ctime); break; case 'C': /* status change time with next char strftime format */ - fp_strftime(fp, sb->st_ctime, *fmt++); + fp_strftime(fout, sp->st_ctime, *fmt++); break; case 't': /* modification change time ctime */ - fp_ctime(fp, sb->st_mtime); + fp_ctime(fout, sp->st_mtime); break; case 'T': /* modification time with next char strftime format */ - fp_strftime(fp, sb->st_mtime, *fmt++); + fp_strftime(fout, sp->st_mtime, *fmt++); break; case 'Z': /* empty string for compat SELinux context string */ break; @@ -299,9 +342,7 @@ do_printf(PLAN *plan, FTSENT *entry, FILE *fout) errx(1, "Unknown format %c '%s'", c, all); } } - fputs(tmp, fout); if (flush) fflush(fout); - free(__DECONST(char *, fmt)); - free(tmp); + free(all); } diff --git a/usr.bin/find/tests/find_test.sh b/usr.bin/find/tests/find_test.sh index 8b8c23688018..99d2f6af4d45 100755 --- a/usr.bin/find/tests/find_test.sh +++ b/usr.bin/find/tests/find_test.sh @@ -1,5 +1,8 @@ +#- +# SPDX-License-Identifier: BSD-2-Clause # # Copyright 2017, Conrad Meyer . +# Copyright (c) 2025 Dag-Erling Smørgrav # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -64,8 +67,116 @@ find_samefile_link_body() atf_check -s exit:0 -o "inline:test/link2\n" find test -samefile test/link2 } +atf_test_case find_printf +find_printf_head() +{ + atf_set "descr" "Test the -printf primary" +} +find_printf_body() +{ + mkdir dir + chmod 0755 dir + jot -b hello 1024 >dir/file + chmod 0644 dir/file + ln -s file dir/link + chmod -h 0444 dir/link + local db=$(stat -f %b dir) + local fb=$(stat -f %b dir/file) + local lb=$(stat -f %b dir/link) + + # paths + atf_check -o inline:"dir\ndir/file\ndir/link\n" \ + find -s dir -printf '%p\n' + atf_check -o inline:"dir\nfile\nlink\n" \ + find -s dir -printf '%f\n' + atf_check -o inline:".\ndir\ndir\n" \ + find -s dir -printf '%h\n' + atf_check -s exit:1 -e match:"unimplemented" -o ignore \ + find -s dir -printf '%P\n' + atf_check -s exit:1 -e match:"unimplemented" -o ignore \ + find -s dir -printf '%H\n' + + # group + atf_check -o inline:"$(stat -f %Sg dir dir/file dir/link)\n" \ + find -s dir -printf '%g\n' + atf_check -o inline:"$(stat -f %g dir dir/file dir/link)\n" \ + find -s dir -printf '%G\n' + + # owner + atf_check -o inline:"$(stat -f %Su dir dir/file dir/link)\n" \ + find -s dir -printf '%u\n' + atf_check -o inline:"$(stat -f %u dir dir/file dir/link)\n" \ + find -s dir -printf '%U\n' + + # mode + atf_check -o inline:"$(stat -f %Lp dir dir/file dir/link)\n" \ + find -s dir -printf '%m\n' + atf_check -o inline:"$(stat -f %Sp dir dir/file dir/link)\n" \ + find -s dir -printf '%M\n' + + # size + atf_check -o inline:"$((db/2))\n$((fb/2))\n$((lb/2))\n" \ + find -s dir -printf '%k\n' + atf_check -o inline:"$db\n$fb\n$lb\n" \ + find -s dir -printf '%b\n' + atf_check -o inline:"$(stat -f %z dir dir/file dir/link)\n" \ + find -s dir -printf '%s\n' + # XXX test %S properly + atf_check -o ignore \ + find -s dir -printf '%S\n' + atf_check -o inline:"0\n1\n1\n" \ + find -s dir -printf '%d\n' + + # device + atf_check -o inline:"$(stat -f %d dir dir/file dir/link)\n" \ + find -s dir -printf '%D\n' + atf_check -s exit:1 -e match:"unimplemented" -o ignore \ + find -s dir -printf '%F\n' + + # link target + atf_check -o inline:"\n\nfile\n" \ + find -s dir -printf '%l\n' + + # inode + atf_check -o inline:"$(stat -f %i dir dir/file dir/link)\n" \ + find -s dir -printf '%i\n' + + # nlinks + atf_check -o inline:"$(stat -f %l dir dir/file dir/link)\n" \ + find -s dir -printf '%n\n' + + # type + atf_check -o inline:"d\nf\nl\n" \ + find -s dir -printf '%y\n' + atf_check -o inline:"d\nf\nf\n" \ + find -s dir -printf '%Y\n' + + # access time + atf_check -o inline:"$(stat -f %Sa -t '%a %b %e %T %Y' dir dir/file dir/link)\n" \ + find -s dir -printf '%a\n' + atf_check -o inline:"$(stat -f %Sa -t '%e' dir dir/file dir/link)\n" \ + find -s dir -printf '%Ae\n' + + # birth time + atf_check -o inline:"$(stat -f %SB -t '%e' dir dir/file dir/link)\n" \ + find -s dir -printf '%Be\n' + + # inode change time + atf_check -o inline:"$(stat -f %Sc -t '%a %b %e %T %Y' dir dir/file dir/link)\n" \ + find -s dir -printf '%c\n' + atf_check -o inline:"$(stat -f %Sc -t '%e' dir dir/file dir/link)\n" \ + find -s dir -printf '%Ce\n' + + # modification time + atf_check -o inline:"$(stat -f %Sm -t '%a %b %e %T %Y' dir dir/file dir/link)\n" \ + find -s dir -printf '%t\n' + atf_check -o inline:"$(stat -f %Sm -t '%e' dir dir/file dir/link)\n" \ + find -s dir -printf '%Te\n' +} + atf_init_test_cases() { atf_add_test_case find_newer_link atf_add_test_case find_samefile_link + atf_add_test_case find_printf } From nobody Thu Aug 7 03:00:23 2025 X-Original-To: dev-commits-src-main@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 4byBjt2TJ9z63cDq; Thu, 07 Aug 2025 03:00:34 +0000 (UTC) (envelope-from zlei@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byBjt1ykJz46v0; Thu, 07 Aug 2025 03:00:34 +0000 (UTC) (envelope-from zlei@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754535634; 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=niRl1lWoIJ4Rkv6A8Y+yTUkgq3HajRXysVsfOwIKCxM=; b=U/nPANpzhA5uABzAc3kOaWWmepWlRTEanVL7zhdToew0XPI5DyVLOULSnmegRs7NaelreO 5QrDm1TQlDGuHjCIf1oQ2lVnuJwWRZbGKbS3fuwb0TA7Bt6niTv9KCJir/4pS/qBBn92/h fsBpkyQO0uUN+dPRI7MLpGxIZYlSqqhyhnOxYIXP7bKbm8U7/naTsOsbqPtj0TR6g4QA32 zpHGMHOsKgXZWIePP4VeQ4EDZOSDUACePT8XKHnuS8u2hFHFZQHKAPFW2l53uUH82ld9B0 pcpYVnCxOjngXhX/SJS4bx6dRN7e7cDl3O2ycXkEjWNdmhnO+ju2hpSDQYyHAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754535634; 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=niRl1lWoIJ4Rkv6A8Y+yTUkgq3HajRXysVsfOwIKCxM=; b=xK9DhnjpqB70qQKLHo5IT076YV6JmyZTktg7CBDGFpKQve2u948BodGwRMqedAri6C++sX Oe32unr3yTuKrrCmdllCHM+NrfFtxCum+sorwC4KmTtqeFPKo5DPIEm7xdrookWq/y4zcG t8zzEbTgUzaiaESl89Ni9emRtlAyARePQrcE6iMnHpeLTY8wNGgikVETh+AboJbFcioBew gqnQBj3gsWEzKEwmYePWOLMyU58xpq/ft3vQGUhSjdz11C2yUHwWGFq1rmn5ftDPhdRYpW uO/bxSHeYACnhfl5qQZEr9daWtZIVQsSa9mmzp/F7b+d0Vv7n9Si5vn83CCBXA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754535634; a=rsa-sha256; cv=none; b=P8bq6rwMt2+wKyUQqRDSh0IwLDhNRJLkGBdt/7bqiETDCLtqvWXpqnmdvZYLHaWKiu+Znq VQBxSXXGOwS9CTAjN2w8CFAtO5f25hXsF+BR2UY0VXMB+rzUSAxTpEEOLjEZ7Y2lxVyOiF Tu2dvLiPb3sQqGI2l2MBX4TxU6gfuAyx0wVOfPbnOjildATSO/FuSFEobW84BsDwLJEpse 1STzTlf3ebN4Eq5Ru0beYbU1QU2gQb1w6Uw31N9H97P8m0db7ZwlbeyXBt6ePuPk7YqGIz cHdlMsalCo8105LAg8Tj7gBxE2GBwN7Q03iJiMrX4uSzspUtR+B277n1WGHkFQ== Received: from smtpclient.apple (unknown [IPv6:2001:19f0:6001:9db:98f0:9fe0:3545:10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: zlei/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4byBjq6Q1mznK2; Thu, 07 Aug 2025 03:00:31 +0000 (UTC) (envelope-from zlei@FreeBSD.org) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.10\)) Subject: Re: git: bcb298fa9e23 - main - sctp, tcp, udp: improve deferred computation of checksums From: Zhenlei Huang In-Reply-To: Date: Thu, 7 Aug 2025 11:00:23 +0800 Cc: Michael Tuexen , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <202508010817.5718HZM6067171@gitrepo.freebsd.org> To: Gleb Smirnoff X-Mailer: Apple Mail (2.3696.120.41.1.10) > On Aug 7, 2025, at 6:35 AM, Gleb Smirnoff wrote: >=20 > Michael, >=20 > On Fri, Aug 01, 2025 at 08:17:35AM +0000, Michael Tuexen wrote: > M> When the SCTP, TCP, or UDP implementation send a packet, it = does not > M> compute the corresponding checksum but defers that. The network = layer > M> will determine whether the network interface selected for the = packet > M> has the requested capability and computes the checksum in = software, > M> if the selected network interface doesn't have the requested > M> capability. > M> Do this not only for packets being sent by the local SCTP, TCP, > M> and UDP stack, but also when forwarding packets. Furthermore, = when > M> such packets are delivered to a local SCTP, TCP, or UDP stack, = do not > M> compute or validate the checksum, since such packets never have = been on > M> the wire. > M> This allows to support checksum offloading also in the case of = local > M> virtual machines or jails. > M> Support for epair, vtnet, and tap interfaces will be added in > M> separate commits. >=20 > Not a request for any action, but a general comment on the topic. >=20 > Imagine we are developing an IP stack from scratch for modern = computers. Most > NICs do hardware checksumming, large fraction of installations run in > containers/VMs and communicate via virtual interfaces. With modern = reality we > would probably do not do any checksumming in the stack at all, just = completely > ignore the checksum field. It would always be obligation of the NIC = driver to > care about the checksums. The existing software checksumming code = would be > just a library that drivers for legacy hardware call. Local traffic = won't set > and won't check checksums neither any related flags. I have ever had the same idea, but that requires lots of modification to = in-tree drivers and I finally abort. Think it twice, maybe a new driver flag say `IFF_CSUM_OFFLOAD` is needed = to indicate the driver is capable to delay calculating the checksums, and = eventually all drivers are converted and tested. >=20 > --=20 > Gleb Smirnoff Best regards, Zhenlei From nobody Thu Aug 7 08:06:13 2025 X-Original-To: dev-commits-src-main@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 4byKVZ1qhQz63x2s; Thu, 07 Aug 2025 08:06: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byKVY72t3z3Qbb; Thu, 07 Aug 2025 08:06:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754553974; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+YRD4E3GyyKJIyx1MDp4XiOBa44CwuviGieiSAEejKs=; b=bPIOSZ4F4l0NZmCq3T6jFwZNbniSKW/4T0zchXDdTk2kiGNsggpYkq1VWkFiZJK8LgL9vq Jn9xG6og/YvfsapGy1sB12DaQ8Q3kFAB/NRUmAtGzuGWJSLI2DLboMQJufMQI3N370eLJY GJNZBjUvnx/cyW+QHlkEWJiKCv655m/nthFqL9UvkgMDlZXDrzGnIIn3DQgb21Ae7Pqn46 4cfgT02FOKBecpVFoe5VB1t1jJRFe7xU3C8OTiM0a76U/nUxUtks5SW8GgJxjatDqPfNWI qjObDf8E2pl8r6+Ih3eJpV6fHW3Lu/i5K266Q2AKqbkXOf4dAS2qNKKV3V55XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754553974; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+YRD4E3GyyKJIyx1MDp4XiOBa44CwuviGieiSAEejKs=; b=OEUUENee+ugY5O44Q3nPVvspk/igBYJTaquC4lmtqfkwlRXhaT2PyMl7oro0DxJgHxgzqM 6N1Fxh8cFfUiMCKrWbRcDaNQ7RrBgfboCJPgOAKHmY2HorXuOafWKs9FwPwTVa4x7L6qPP cEXxmY50GcNeWgh6Ci2doZ/HEdnUcLh+zwl62f4sqBNCnmuyj8cE+Ug93vW+DSsx05S+r7 9NfX9wMBZCZQ8cwFNnXNP1lb+LXOmak2qnj4/U2aasIy0YSaKbLHonQJDU4nKKxOJiElWt r7e0L0MPwTHrSzNrmvXbSgn/y/YcNfy0RyTeGG6zcuohVAs6FcbTuFq0KMQzGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754553974; a=rsa-sha256; cv=none; b=W52t4aDE0qrD/VWnDFpGmV/Qvt8Yg/LVRmu4MkDzOHxsNBfTtP40gxPyityO2n5xihFeXC yF2AeUc3GwGDbrlnAB5BokwW8YkTROP4f+fOIUGo2YS0wPByPXqQj1HyYd0cnpFo01nrH7 gkjZ1xX44jRjJs35dOD7OTKo5Zn3NTdjAdCCAb2Nh6pYq3WHoGoJwfJiDcqWhCQ6YaYU8+ KkPfNJKQjv+/8c6pn+z4uV1vvkUr92po/Nzf0leN9yz36n8VELHm5lw8tYssQTZa3Bk+ct dI9cTZrzLrNC7cJdgNERosIAxFu3KvIYK5lEwEFEvjnmnczUUuYyEc2jSWze7w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byKVY6bZNzyLP; Thu, 07 Aug 2025 08:06:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57786DwT015722; Thu, 7 Aug 2025 08:06:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57786Dbb015719; Thu, 7 Aug 2025 08:06:13 GMT (envelope-from git) Date: Thu, 7 Aug 2025 08:06:13 GMT Message-Id: <202508070806.57786Dbb015719@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Martin Matuska Subject: git: df58e8b1506f - main - zfs: merge openzfs/zfs@8302b6e32 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: df58e8b1506f241670be86a560fb6e8432043aee Auto-Submitted: auto-generated The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=df58e8b1506f241670be86a560fb6e8432043aee commit df58e8b1506f241670be86a560fb6e8432043aee Merge: 02f394281fd6 8302b6e32bb1 Author: Martin Matuska AuthorDate: 2025-08-07 07:06:31 +0000 Commit: Martin Matuska CommitDate: 2025-08-07 07:06:31 +0000 zfs: merge openzfs/zfs@8302b6e32 Notable upstream pull request merges: #16853 894edd084 Add TXG timestamp database #17004 -multiple Implement dynamic gang header sizes #17405 dea0fc969 ZVOL: Return early, if volmode is ZFS_VOLMODE_NONE on FreeBSD side #17455 cf146460c Default to zfs_bclone_wait_dirty=1 #17481 523d9d600 Validate mountpoint on path-based unmount using statx #17482 92da9e0e9 ZVOL: Implement zvol_alloc() function on FreeBSD side #17489 dee62e074 spa: ZIO_TASKQ_ISSUE: Use symbolic priority #17496 bf846dcb7 Release topology restrictions on special/dedup #17497 4e92aee23 Relax special_small_blocks restrictions #17503 ea38787f2 Revert "Fix incorrect expected error in ztest" #17505 be1e991a1 Allow and prefer special vdevs as ZIL #17506 ee0cb4cb8 ztest: Fix false positive of ENOSPC handling #17507 92d3b4ee2 zio: rename `io_reexecute` as `io_post`; use it for the direct IO checksum error flag #17508 6af8db61b metaslab: don't pass whole zio to throttle reserve APIs #17518 4c2a7f85d FreeBSD: Add support for _PC_HAS_HIDDENSYSTEM #17521 d7ab07dfb ZIL: Force writing of open LWB on suspend #17524 b6e8db509 zpool/zfs: Add '-a|--all' option to scrub, trim, initialize #17531 c1e51c55f Correct weight recalculation of space-based metaslabs #17533 d323fbf49 FreeBSD: zfs_putpages: don't undirty pages until after write completes #17536 b21e04e8d Fix zdb pool/ with -k #17537 -multiple Userspace tunables #17540 2957eabbe Add support for FreeBSD's Solaris style extended attribute interface #17547 4bd7a2eaa zdb: fix checksum calculation for decompressed blocks #17551 -multiple cleanup: remove var init/update #17561 0f8a1105e Skip dbuf_evict_one() from dbuf_evict_notify() for reclaim thread #17563 10a78e264 Faster checksum benchmark on system boot #17564 00ce064d8 spa: update blkptr diagram to include vdev padding on encrypted blocks #17565 -multiple Physical rewrite #17566 fc885f308 Don't use wrong weight when passivating group #17572 f70c85086 BRT: Fix ZAP entry endianness #17575 0b6fd024a ZVOL: Unify zvol minors operations and improve error handling #17581 cb5e7e097 range_tree: Provide more debug details upon unexpected add/remove #17587 -multiple Fix two issues with dynamic gang headers Obtained from: OpenZFS OpenZFS commit: 8302b6e32bb153a6f402b106484d5736f082abcc cddl/lib/libspl/Makefile | 1 + cddl/lib/libzpool/Makefile | 2 + stand/libsa/zfs/spl/sys/zfs_context.h | 2 +- sys/conf/files | 1 + sys/contrib/openzfs/.cirrus.yml | 21 -- sys/contrib/openzfs/.github/codeql-cpp.yml | 1 + .../cpp/dslDatasetHoldReleMismatch.ql | 34 ++ .../.github/workflows/scripts/qemu-2-start.sh | 8 - .../.github/workflows/scripts/qemu-3-deps-vm.sh | 3 +- .../.github/workflows/scripts/qemu-6-tests.sh | 6 +- sys/contrib/openzfs/.github/workflows/zfs-qemu.yml | 22 +- sys/contrib/openzfs/.github/workflows/zloop.yml | 24 +- sys/contrib/openzfs/cmd/arc_summary | 3 + sys/contrib/openzfs/cmd/zdb/zdb.c | 103 ++++-- sys/contrib/openzfs/cmd/zdb/zdb_il.c | 8 +- sys/contrib/openzfs/cmd/zed/agents/zfs_agents.c | 67 ++-- sys/contrib/openzfs/cmd/zed/zed_event.c | 2 +- sys/contrib/openzfs/cmd/zfs/zfs_main.c | 36 +- sys/contrib/openzfs/cmd/zpool/zpool_iter.c | 5 +- sys/contrib/openzfs/cmd/zpool/zpool_main.c | 264 +++++++++----- sys/contrib/openzfs/cmd/zpool/zpool_vdev.c | 24 +- sys/contrib/openzfs/cmd/ztest.c | 51 +-- sys/contrib/openzfs/config/ax_python_devel.m4 | 4 +- sys/contrib/openzfs/config/kernel-free-inode.m4 | 24 ++ sys/contrib/openzfs/config/kernel.m4 | 2 + sys/contrib/openzfs/config/user-statx.m4 | 34 ++ sys/contrib/openzfs/config/user.m4 | 1 + .../contrib/debian/openzfs-zfsutils.install | 1 + sys/contrib/openzfs/etc/Makefile.am | 1 + .../etc/systemd/system/zfs-mount@.service.in | 26 ++ sys/contrib/openzfs/include/Makefile.am | 2 +- sys/contrib/openzfs/include/libzfs.h | 15 + sys/contrib/openzfs/include/os/freebsd/Makefile.am | 2 +- .../openzfs/include/os/freebsd/spl/sys/misc.h | 5 + .../include/os/freebsd/spl/sys/{mod_os.h => mod.h} | 0 .../openzfs/include/os/freebsd/spl/sys/vm.h | 1 + .../include/os/freebsd/spl/sys/vnode_impl.h | 1 + sys/contrib/openzfs/include/os/linux/Makefile.am | 2 +- .../openzfs/include/os/linux/spl/sys/atomic.h | 32 ++ .../openzfs/include/os/linux/spl/sys/kmem.h | 61 +--- .../openzfs/include/os/linux/spl/sys/misc.h | 6 + .../include/os/linux/spl/sys/{mod_os.h => mod.h} | 0 .../openzfs/include/os/linux/zfs/sys/trace_acl.h | 7 +- .../include/os/linux/zfs/sys/trace_common.h | 8 +- .../include/os/linux/zfs/sys/zfs_znode_impl.h | 1 + sys/contrib/openzfs/include/sys/arc_impl.h | 2 +- sys/contrib/openzfs/include/sys/dbuf.h | 1 + sys/contrib/openzfs/include/sys/dmu.h | 4 + sys/contrib/openzfs/include/sys/dmu_objset.h | 2 +- sys/contrib/openzfs/include/sys/dmu_traverse.h | 7 + sys/contrib/openzfs/include/sys/fs/zfs.h | 3 + sys/contrib/openzfs/include/sys/metaslab.h | 7 +- sys/contrib/openzfs/include/sys/metaslab_impl.h | 2 + sys/contrib/openzfs/include/sys/mod.h | 36 -- sys/contrib/openzfs/include/sys/range_tree.h | 9 + sys/contrib/openzfs/include/sys/spa.h | 75 ++-- sys/contrib/openzfs/include/sys/spa_impl.h | 9 + sys/contrib/openzfs/include/sys/vdev.h | 16 +- sys/contrib/openzfs/include/sys/vdev_impl.h | 4 +- sys/contrib/openzfs/include/sys/xvattr.h | 1 + sys/contrib/openzfs/include/sys/zfs_context.h | 20 +- sys/contrib/openzfs/include/sys/zfs_znode.h | 2 - sys/contrib/openzfs/include/sys/zil.h | 4 + sys/contrib/openzfs/include/sys/zio.h | 71 ++-- sys/contrib/openzfs/include/sys/zvol.h | 3 +- sys/contrib/openzfs/include/sys/zvol_impl.h | 3 +- sys/contrib/openzfs/include/zfeature_common.h | 13 +- sys/contrib/openzfs/include/zfs_crrd.h | 75 ++++ sys/contrib/openzfs/lib/libspl/Makefile.am | 1 + sys/contrib/openzfs/lib/libspl/include/Makefile.am | 2 + .../openzfs/lib/libspl/include/os/linux/sys/stat.h | 5 + sys/contrib/openzfs/lib/libspl/include/sys/mod.h | 56 +++ .../openzfs/lib/libspl/include/sys/tunables.h | 60 ++++ sys/contrib/openzfs/lib/libspl/include/umem.h | 2 +- .../openzfs/lib/libspl/os/linux/getmntany.c | 36 +- sys/contrib/openzfs/lib/libspl/tunables.c | 319 +++++++++++++++++ sys/contrib/openzfs/lib/libuutil/libuutil.abi | 196 ++++++++++- sys/contrib/openzfs/lib/libzdb/libzdb.c | 4 +- sys/contrib/openzfs/lib/libzfs/libzfs.abi | 246 ++++++++++++- sys/contrib/openzfs/lib/libzfs/libzfs_crypto.c | 2 +- sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c | 37 +- sys/contrib/openzfs/lib/libzfs/libzfs_pool.c | 128 +++++-- sys/contrib/openzfs/lib/libzfs/libzfs_status.c | 3 +- .../openzfs/lib/libzfs_core/libzfs_core.abi | 206 ++++++++++- sys/contrib/openzfs/lib/libzpool/Makefile.am | 3 +- sys/contrib/openzfs/lib/libzpool/kernel.c | 18 +- sys/contrib/openzfs/lib/libzpool/util.c | 172 +++++---- sys/contrib/openzfs/man/man1/ztest.1 | 8 +- sys/contrib/openzfs/man/man4/zfs.4 | 51 ++- sys/contrib/openzfs/man/man7/zfsprops.7 | 36 +- sys/contrib/openzfs/man/man7/zpool-features.7 | 41 +++ sys/contrib/openzfs/man/man7/zpoolconcepts.7 | 9 +- sys/contrib/openzfs/man/man8/zdb.8 | 13 +- sys/contrib/openzfs/man/man8/zfs-rewrite.8 | 28 +- sys/contrib/openzfs/man/man8/zpool-events.8 | 4 +- sys/contrib/openzfs/man/man8/zpool-initialize.8 | 7 +- sys/contrib/openzfs/man/man8/zpool-scrub.8 | 51 ++- sys/contrib/openzfs/man/man8/zpool-trim.8 | 7 +- sys/contrib/openzfs/module/Kbuild.in | 32 ++ sys/contrib/openzfs/module/Makefile.bsd | 1 + sys/contrib/openzfs/module/Makefile.in | 2 +- .../openzfs/module/os/freebsd/spl/spl_misc.c | 9 + sys/contrib/openzfs/module/os/freebsd/spl/spl_vm.c | 1 + .../openzfs/module/os/freebsd/zfs/zfs_acl.c | 32 ++ .../openzfs/module/os/freebsd/zfs/zfs_vfsops.c | 32 +- .../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 387 +++++++++++++++++++-- .../openzfs/module/os/freebsd/zfs/zfs_znode_os.c | 7 - .../openzfs/module/os/freebsd/zfs/zvol_os.c | 155 +++++---- sys/contrib/openzfs/module/os/linux/spl/spl-kmem.c | 22 +- sys/contrib/openzfs/module/os/linux/spl/spl-proc.c | 10 +- .../openzfs/module/os/linux/spl/spl-thread.c | 12 + sys/contrib/openzfs/module/os/linux/zfs/abd_os.c | 4 - .../openzfs/module/os/linux/zfs/zfs_ctldir.c | 2 - .../openzfs/module/os/linux/zfs/zfs_file_os.c | 23 -- .../openzfs/module/os/linux/zfs/zfs_vfsops.c | 65 ++++ .../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 99 +++--- .../openzfs/module/os/linux/zfs/zfs_znode_os.c | 24 +- sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c | 41 --- .../openzfs/module/os/linux/zfs/zpl_super.c | 12 + sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 36 +- .../openzfs/module/zcommon/zfeature_common.c | 24 ++ sys/contrib/openzfs/module/zcommon/zfs_prop.c | 11 +- sys/contrib/openzfs/module/zcommon/zfs_valstr.c | 3 +- sys/contrib/openzfs/module/zfs/arc.c | 32 +- sys/contrib/openzfs/module/zfs/bpobj.c | 4 +- sys/contrib/openzfs/module/zfs/brt.c | 70 +++- sys/contrib/openzfs/module/zfs/dbuf.c | 82 ++++- sys/contrib/openzfs/module/zfs/ddt.c | 15 +- sys/contrib/openzfs/module/zfs/dmu.c | 11 +- sys/contrib/openzfs/module/zfs/dmu_diff.c | 4 +- sys/contrib/openzfs/module/zfs/dmu_direct.c | 2 +- sys/contrib/openzfs/module/zfs/dmu_objset.c | 8 +- sys/contrib/openzfs/module/zfs/dmu_recv.c | 8 +- sys/contrib/openzfs/module/zfs/dmu_redact.c | 4 +- sys/contrib/openzfs/module/zfs/dmu_send.c | 4 +- sys/contrib/openzfs/module/zfs/dmu_traverse.c | 17 +- sys/contrib/openzfs/module/zfs/dnode.c | 19 +- sys/contrib/openzfs/module/zfs/dsl_bookmark.c | 2 +- sys/contrib/openzfs/module/zfs/dsl_crypt.c | 2 +- sys/contrib/openzfs/module/zfs/dsl_dataset.c | 20 +- sys/contrib/openzfs/module/zfs/dsl_deadlist.c | 4 +- sys/contrib/openzfs/module/zfs/dsl_destroy.c | 12 +- sys/contrib/openzfs/module/zfs/dsl_pool.c | 2 +- sys/contrib/openzfs/module/zfs/dsl_scan.c | 27 +- sys/contrib/openzfs/module/zfs/metaslab.c | 182 +++++----- sys/contrib/openzfs/module/zfs/range_tree.c | 96 +++-- sys/contrib/openzfs/module/zfs/spa.c | 194 ++++++++++- sys/contrib/openzfs/module/zfs/spa_errlog.c | 4 +- sys/contrib/openzfs/module/zfs/spa_misc.c | 11 + sys/contrib/openzfs/module/zfs/vdev.c | 57 ++- sys/contrib/openzfs/module/zfs/vdev_indirect.c | 2 +- sys/contrib/openzfs/module/zfs/vdev_initialize.c | 5 +- sys/contrib/openzfs/module/zfs/vdev_mirror.c | 4 +- sys/contrib/openzfs/module/zfs/vdev_raidz.c | 28 +- sys/contrib/openzfs/module/zfs/vdev_rebuild.c | 5 +- sys/contrib/openzfs/module/zfs/vdev_removal.c | 30 +- sys/contrib/openzfs/module/zfs/vdev_trim.c | 24 +- sys/contrib/openzfs/module/zfs/zap.c | 2 +- sys/contrib/openzfs/module/zfs/zcp.c | 2 +- sys/contrib/openzfs/module/zfs/zfs_chksum.c | 69 ++-- sys/contrib/openzfs/module/zfs/zfs_crrd.c | 227 ++++++++++++ sys/contrib/openzfs/module/zfs/zfs_ioctl.c | 36 +- sys/contrib/openzfs/module/zfs/zfs_log.c | 16 +- sys/contrib/openzfs/module/zfs/zfs_vnops.c | 31 +- sys/contrib/openzfs/module/zfs/zil.c | 95 ++++- sys/contrib/openzfs/module/zfs/zio.c | 326 +++++++++++------ sys/contrib/openzfs/module/zfs/zio_checksum.c | 31 +- sys/contrib/openzfs/module/zfs/zvol.c | 342 ++++++++++-------- sys/contrib/openzfs/module/zstd/zfs_zstd.c | 3 +- sys/contrib/openzfs/rpm/generic/zfs.spec.in | 16 +- sys/contrib/openzfs/scripts/spdxcheck.pl | 1 - sys/contrib/openzfs/tests/runfiles/common.run | 22 +- sys/contrib/openzfs/tests/runfiles/sanity.run | 2 +- .../tests/test-runner/bin/test-runner.py.in | 5 +- .../openzfs/tests/test-runner/bin/zts-report.py.in | 4 +- .../openzfs/tests/test-runner/include/logapi.shlib | 7 +- .../tests/zfs-tests/callbacks/zfs_dmesg.ksh | 7 +- sys/contrib/openzfs/tests/zfs-tests/cmd/.gitignore | 1 + .../openzfs/tests/zfs-tests/cmd/Makefile.am | 4 +- sys/contrib/openzfs/tests/zfs-tests/cmd/draid.c | 2 +- .../openzfs/tests/zfs-tests/cmd/idmap_util.c | 2 +- sys/contrib/openzfs/tests/zfs-tests/cmd/mktree.c | 2 +- .../openzfs/tests/zfs-tests/cmd/mmap_ftruncate.c | 85 +++++ .../openzfs/tests/zfs-tests/cmd/mmapwrite.c | 4 +- .../openzfs/tests/zfs-tests/include/commands.cfg | 1 + .../openzfs/tests/zfs-tests/include/libtest.shlib | 4 +- .../openzfs/tests/zfs-tests/include/tunables.cfg | 1 + .../openzfs/tests/zfs-tests/tests/Makefile.am | 15 +- .../functional/alloc_class/alloc_class_002_neg.ksh | 5 - .../functional/alloc_class/alloc_class_003_pos.ksh | 8 +- .../functional/alloc_class/alloc_class_004_pos.ksh | 5 +- .../functional/alloc_class/alloc_class_009_pos.ksh | 5 +- .../functional/alloc_class/alloc_class_010_pos.ksh | 2 +- .../functional/alloc_class/alloc_class_011_neg.ksh | 4 +- .../functional/alloc_class/alloc_class_014_neg.ksh | 39 --- .../functional/alloc_class/alloc_class_015_pos.ksh | 46 --- ...ock_cloning_copyfilerange_fallback_same_txg.ksh | 21 ++ .../tests/functional/cli_root/zdb/zdb_tunables.ksh | 71 ++++ .../cli_root/zfs_rewrite/zfs_rewrite_physical.ksh | 100 ++++++ .../zpool_create/zpool_create_features_001_pos.ksh | 2 +- .../zpool_create/zpool_create_features_005_pos.ksh | 3 + .../functional/cli_root/zpool_get/zpool_get.cfg | 3 + .../zpool_initialize_multiple_pools.ksh | 131 +++++++ .../cli_root/zpool_scrub/zpool_scrub_001_neg.ksh | 3 +- .../zpool_scrub/zpool_scrub_date_range_001.ksh | 94 +++++ .../zpool_scrub/zpool_scrub_multiple_pools.ksh | 128 +++++++ .../zpool_trim/zpool_trim_multiple_pools.ksh | 123 +++++++ .../tests/functional/cp_files/cp_files_002_pos.ksh | 4 +- .../functional/gang_blocks/gang_blocks.kshlib | 17 + .../gang_blocks/gang_blocks_dyn_header_neg.ksh | 53 +++ .../gang_blocks/gang_blocks_dyn_header_pos.ksh | 81 +++++ .../gang_blocks/gang_blocks_dyn_multi.ksh | 54 +++ .../tests/functional/mmap/mmap_ftruncate.ksh | 80 +++++ .../functional/pool_checkpoint/checkpoint_zdb.ksh | 2 + sys/modules/zfs/Makefile | 1 + sys/modules/zfs/zfs_config.h | 16 +- sys/modules/zfs/zfs_gitrev.h | 2 +- 217 files changed, 5829 insertions(+), 1720 deletions(-) diff --cc cddl/lib/libspl/Makefile index d44e5cb19ab4,000000000000..13fd6d96f2af mode 100644,000000..100644 --- a/cddl/lib/libspl/Makefile +++ b/cddl/lib/libspl/Makefile @@@ -1,49 -1,0 +1,50 @@@ +.include +.include + +.PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libspl +.PATH: ${SRCTOP}/sys/contrib/openzfs/include + +LIB= spl +LIBADD= +PACKAGE= libzfs + +SRCS = \ + assert.c \ + backtrace.c \ + list.c \ + mkdirp.c \ + os/freebsd/zone.c \ + page.c \ + timestamp.c \ ++ tunables.c \ + include/sys/list.h \ + include/sys/list_impl.h + +# These functions are not required when bootstrapping and the atomic code +# will not compile when building on macOS. +.if !defined(BOOTSTRAPPING) +SRCS += \ + atomic.c \ + getexecname.c \ + os/freebsd/getexecname.c \ + os/freebsd/gethostid.c \ + os/freebsd/getmntany.c \ + os/freebsd/mnttab.c +.endif + +WARNS?= 2 +CSTD= c99 +CFLAGS+= -DIN_BASE +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/ +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/module/icp/include +CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h +CFLAGS+= -DHAVE_ISSETUGID +CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h +.if ${COMPILER_TYPE} == "clang" +CFLAGS.atomic.c+= -Wno-error=atomic-alignment +.endif + +.include diff --cc cddl/lib/libzpool/Makefile index 5a69843d6c8e,000000000000..4da3840e59f0 mode 100644,000000..100644 --- a/cddl/lib/libzpool/Makefile +++ b/cddl/lib/libzpool/Makefile @@@ -1,342 -1,0 +1,344 @@@ +ZFSTOP= ${SRCTOP}/sys/contrib/openzfs + +.PATH: ${ZFSTOP}/lib/libzpool + +# ZFS_COMMON_SRCS +.PATH: ${ZFSTOP}/module/zfs +.PATH: ${ZFSTOP}/module/zcommon +.PATH: ${ZFSTOP}/module/unicode +# LUA_SRCS +.PATH: ${ZFSTOP}/module/lua +# ZSTD_SRCS +.PATH: ${ZFSTOP}/module/zstd +.PATH: ${ZFSTOP}/module/zstd/lib/common +.PATH: ${ZFSTOP}/module/zstd/lib/compress +.PATH: ${ZFSTOP}/module/zstd/lib/decompress + +.if exists(${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}/opensolaris_atomic.S) +.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH} +ATOMIC_SRCS= opensolaris_atomic.S +ACFLAGS+= -Wa,--noexecstack +.else +.PATH: ${SRCTOP}/sys/cddl/compat/opensolaris/kern +ATOMIC_SRCS= opensolaris_atomic.c +.endif + +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe" +# Don't waste GOT entries on small data. +PICFLAG= -fPIC +.endif + +PACKAGE= zfs +LIB= zpool + +USER_C = \ + arc_os.c \ + kernel.c \ + taskq.c \ + util.c \ + zfs_debug.c + +.PATH: ${ZFSTOP}/module/os/linux/zfs + +KERNEL_C = \ + simd_stat.c \ + zfeature_common.c \ + zfs_comutil.c \ + zfs_deleg.c \ + zfs_fletcher.c \ + zfs_fletcher_superscalar.c \ + zfs_fletcher_superscalar4.c \ + zfs_namecheck.c \ + zfs_prop.c \ + zfs_zstd.c \ + zpool_prop.c \ + zprop_common.c \ + abd.c \ + abd_os.c \ + aggsum.c \ + arc.c \ + blake3_zfs.c \ + blkptr.c \ + bplist.c \ + bpobj.c \ + bptree.c \ + bqueue.c \ + btree.c \ + brt.c \ + cityhash.c \ + dbuf.c \ + dbuf_stats.c \ + ddt.c \ + ddt_log.c \ + ddt_stats.c \ + ddt_zap.c \ + dmu.c \ + dmu_diff.c \ + dmu_direct.c \ + dmu_object.c \ + dmu_objset.c \ + dmu_recv.c \ + dmu_redact.c \ + dmu_send.c \ + dmu_traverse.c \ + dmu_tx.c \ + dmu_zfetch.c \ + dnode.c \ + dnode_sync.c \ + dsl_bookmark.c \ + dsl_dataset.c \ + dsl_deadlist.c \ + dsl_deleg.c \ + dsl_dir.c \ + dsl_crypt.c \ + dsl_pool.c \ + dsl_prop.c \ + dsl_scan.c \ + dsl_synctask.c \ + dsl_destroy.c \ + dsl_userhold.c \ + edonr_zfs.c \ + entropy_common.c \ + error_private.c \ + fm.c \ + fse_compress.c \ + fse_decompress.c \ + gzip.c \ + hist.c \ + hkdf.c \ + huf_compress.c \ + huf_decompress.c \ + lzjb.c \ + lz4.c \ + lz4_zfs.c \ + metaslab.c \ + mmp.c \ + multilist.c \ + objlist.c \ + pathname.c \ + pool.c \ + range_tree.c \ + refcount.c \ + rrwlock.c \ + sa.c \ + sha2_zfs.c \ + skein_zfs.c \ + spa.c \ + spa_checkpoint.c \ + spa_config.c \ + spa_errlog.c \ + spa_history.c \ + spa_log_spacemap.c \ + spa_misc.c \ + spa_stats.c \ + space_map.c \ + space_reftree.c \ + txg.c \ + trace.c \ + uberblock.c \ + unique.c \ + vdev.c \ + vdev_draid.c \ + vdev_draid_rand.c \ + vdev_file.c \ + vdev_indirect_births.c \ + vdev_indirect.c \ + vdev_indirect_mapping.c \ + vdev_initialize.c \ + vdev_label.c \ + vdev_label_os.c \ + vdev_mirror.c \ + vdev_missing.c \ + vdev_queue.c \ + vdev_raidz.c \ + vdev_raidz_math_aarch64_neon.c \ + vdev_raidz_math_aarch64_neonx2.c \ + vdev_raidz_math_avx2.c \ + vdev_raidz_math_avx512bw.c \ + vdev_raidz_math_avx512f.c \ + vdev_raidz_math.c \ + vdev_raidz_math_scalar.c \ + vdev_rebuild.c \ + vdev_removal.c \ + vdev_root.c \ + vdev_trim.c \ + xxhash.c \ + zap.c \ + zap_leaf.c \ + zap_micro.c \ + zcp.c \ + zcp_get.c \ + zcp_global.c \ + zcp_iter.c \ + zcp_set.c \ + zcp_synctask.c \ + zfeature.c \ + zfs_byteswap.c \ + zfs_chksum.c \ ++ zfs_crrd.c \ ++ zfs_debug_common.c \ + zfs_fm.c \ + zfs_fuid.c \ + zfs_sa.c \ + zfs_znode.c \ + zfs_racct.c \ + zfs_ratelimit.c \ + zfs_rlock.c \ + zil.c \ + zio.c \ + zio_checksum.c \ + zio_compress.c \ + zio_crypt.c \ + zio_inject.c \ + zle.c \ + zrlock.c \ + zstd_common.c \ + zstd_compress.c \ + zstd_compress_literals.c \ + zstd_compress_sequences.c \ + zstd_compress_superblock.c \ + zstd_ddict.c \ + zstd_decompress.c \ + zstd_decompress_block.c \ + zstd_double_fast.c \ + zstd_fast.c \ + zstd_lazy.c \ + zstd_ldm.c \ + zstd_opt.c \ + zthr.c + +ARCH_C = +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" +ARCH_C += vdev_raidz_math_sse2.c \ + vdev_raidz_math_ssse3.c \ + zfs_fletcher_intel.c \ + zfs_fletcher_sse.c +CFLAGS += -DHAVE_SSE2 -DHAVE_SSE3 +.endif +.if ${MACHINE_ARCH} == "amd64" +ARCH_C += zfs_fletcher_avx512.c +CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_AVX512F \ + -DHAVE_AVX512BW +.endif +.if ${MACHINE_CPUARCH} == "aarch64" +ARCH_C += zfs_fletcher_aarch64_neon.c +.endif + +LUA_C = \ + lapi.c \ + lauxlib.c \ + lbaselib.c \ + lcode.c \ + lcompat.c \ + lcorolib.c \ + lctype.c \ + ldebug.c \ + ldo.c \ + lfunc.c \ + lgc.c \ + llex.c \ + lmem.c \ + lobject.c \ + lopcodes.c \ + lparser.c \ + lstate.c \ + lstring.c \ + lstrlib.c \ + ltable.c \ + ltablib.c \ + ltm.c \ + lvm.c \ + lzio.c + +UNICODE_C = u8_textprep.c + +SRCS+= ${USER_C} ${KERNEL_C} ${LUA_C} ${UNICODE_C} ${ARCH_C} + + +WARNS?= 2 +CFLAGS+= \ + -DIN_BASE \ + -I${ZFSTOP}/include \ + -I${ZFSTOP}/lib/libspl/include \ + -I${ZFSTOP}/lib/libspl/include/os/freebsd \ + -I${SRCTOP}/sys/contrib/openzfs/lib/libzpool/include \ + -I${SRCTOP}/sys \ + -I${ZFSTOP}/include/os/freebsd/zfs \ + -I${SRCTOP}/cddl/compat/opensolaris/include \ + -I${ZFSTOP}/module/icp/include \ + -I${SRCTOP}/compat/linuxkpi/common/include/linux \ + -include ${ZFSTOP}/include/os/freebsd/spl/sys/ccompile.h \ + -DHAVE_ISSETUGID \ + -include ${SRCTOP}/sys/modules/zfs/zfs_config.h \ + -I${SRCTOP}/sys/modules/zfs \ + -I${ZFSTOP}/include/os/freebsd/zfs \ + -DLIB_ZPOOL_BUILD -DZFS_DEBUG \ + +# XXX: pthread doesn't have mutex_owned() equivalent, so we need to look +# into libthr private structures. That's sooo evil, but it's only for +# ZFS debugging tools needs. +CFLAGS+= -DWANTS_MUTEX_OWNED +CFLAGS+= -I${SRCTOP}/lib/libpthread/thread +CFLAGS+= -I${SRCTOP}/lib/libpthread/sys +CFLAGS+= -I${SRCTOP}/lib/libthr/arch/${MACHINE_CPUARCH}/include +CFLAGS.gcc+= -fms-extensions + +LIBADD= md pthread z spl icp nvpair avl umem + +CSTD= c99 + +# Since there are many asserts in this library, it makes no sense to compile +# it without debugging. + +CFLAGS+= -g -DDEBUG=1 + +CFLAGS.gcc+= -Wno-pointer-to-int-cast + +# Pointer values are used as debugging "tags" to mark reference count +# ownerships and in some cases the tag reference is dropped after an +# object is freed. +CFLAGS.dbuf.c= ${NO_WUSE_AFTER_FREE} +CFLAGS.entropy_common.c= -fno-tree-vectorize +CFLAGS.entropy_common.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.error_private.c= -fno-tree-vectorize +CFLAGS.error_private.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.fse_compress.c= -fno-tree-vectorize +CFLAGS.fse_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.fse_decompress.c= -fno-tree-vectorize +CFLAGS.fse_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.hist.c= -fno-tree-vectorize +CFLAGS.hist.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.huf_compress.c= -fno-tree-vectorize +CFLAGS.huf_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.huf_decompress.c= -fno-tree-vectorize +CFLAGS.huf_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.pool.c= -fno-tree-vectorize +CFLAGS.pool.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.xxhash.c= -fno-tree-vectorize +CFLAGS.xxhash.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress.c= -fno-tree-vectorize +CFLAGS.zstd_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_literals.c= -fno-tree-vectorize +CFLAGS.zstd_compress_literals.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_sequences.c= -fno-tree-vectorize +CFLAGS.zstd_compress_sequences.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_superblock.c= -fno-tree-vectorize +CFLAGS.zstd_compress_superblock.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_double_fast.c= -fno-tree-vectorize +CFLAGS.zstd_double_fast.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_fast.c= -fno-tree-vectorize +CFLAGS.zstd_fast.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_lazy.c= -fno-tree-vectorize +CFLAGS.zstd_lazy.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_ldm.c= -fno-tree-vectorize +CFLAGS.zstd_ldm.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_opt.c= -fno-tree-vectorize +CFLAGS.zstd_opt.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_ddict.c= -fno-tree-vectorize +CFLAGS.zstd_ddict.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_decompress.c= -fno-tree-vectorize +CFLAGS.zstd_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_decompress_block.c= -fno-tree-vectorize +CFLAGS.zstd_decompress_block.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} + +.include diff --cc stand/libsa/zfs/spl/sys/zfs_context.h index 48f164317611,000000000000..9f12955dd05f mode 100644,000000..100644 --- a/stand/libsa/zfs/spl/sys/zfs_context.h +++ b/stand/libsa/zfs/spl/sys/zfs_context.h @@@ -1,32 -1,0 +1,32 @@@ +/* + * Copyright 2022, Netflix, Inc + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +/* TODO: openzfs/include/sys/uio_impl.h must not be included in stand */ +#ifndef _SYS_UIO_IMPL_H +#define _SYS_UIO_IMPL_H +#endif + +/* + * sys/atomic.h must be included after sys/sysmacros.h. The latter includes + * machine/atomic.h, which interferes. Sadly, upstream includes them in the + * wrong order, so we include it here to fix that. + */ +#include + +#include_next + - #define ZFS_MODULE_PARAM_ARGS void ++#define SYSCTL_HANDLER_ARGS void + +/* + * Not sure why I need these, but including the canonical stand.h fails because + * the normal string.h doesn't like all the other shenanigans in this environment. + */ +void *memcpy(void *dst, const void *src, size_t len); +void *memset(void *dest, int c, size_t len); +void *memmem(const void *big, size_t big_len, const void *little, + size_t little_len); diff --cc sys/conf/files index b7c19fae0b8e,000000000000..be65ed20d6aa mode 100644,000000..100644 --- a/sys/conf/files +++ b/sys/conf/files @@@ -1,5304 -1,0 +1,5305 @@@ +# +# The long compile-with and dependency lines are required because of +# limitations in config: backslash-newline doesn't work in strings, and +# dependency lines other than the first are silently ignored. +# +acpi_quirks.h optional acpi \ + dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ + compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ + no-obj no-implicit-rule before-depend \ + clean "acpi_quirks.h" +bhnd_nvram_map.h optional bhnd \ + dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ + compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -h" \ + no-obj no-implicit-rule before-depend \ + clean "bhnd_nvram_map.h" +bhnd_nvram_map_data.h optional bhnd \ + dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ + compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -d" \ + no-obj no-implicit-rule before-depend \ + clean "bhnd_nvram_map_data.h" +fdt_static_dtb.h optional fdt fdt_dtb_static \ + compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtbh.sh ${FDT_DTS_FILE} ${.OBJDIR}'" \ + dependency "${FDT_DTS_FILE:T:R}.dtb" \ + no-obj no-implicit-rule before-depend \ + clean "fdt_static_dtb.h" +feeder_eq_gen.h optional sound \ + dependency "$S/tools/sound/feeder_eq_mkfilter.awk" \ + compile-with "${AWK} -f $S/tools/sound/feeder_eq_mkfilter.awk -- ${FEEDER_EQ_PRESETS} > feeder_eq_gen.h" \ + no-obj no-implicit-rule before-depend \ + clean "feeder_eq_gen.h" +feeder_rate_gen.h optional sound \ + dependency "$S/tools/sound/feeder_rate_mkfilter.awk" \ + compile-with "${AWK} -f $S/tools/sound/feeder_rate_mkfilter.awk -- ${FEEDER_RATE_PRESETS} > feeder_rate_gen.h" \ + no-obj no-implicit-rule before-depend \ + clean "feeder_rate_gen.h" +font.h optional sc_dflt_font \ + compile-with "uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \ + no-obj no-implicit-rule before-depend \ + clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8" +snd_fxdiv_gen.h optional sound \ + dependency "$S/tools/sound/snd_fxdiv_gen.awk" \ + compile-with "${AWK} -f $S/tools/sound/snd_fxdiv_gen.awk -- > snd_fxdiv_gen.h" \ + no-obj no-implicit-rule before-depend \ + clean "snd_fxdiv_gen.h" +miidevs.h optional miibus | mii \ + dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ + compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ + no-obj no-implicit-rule before-depend \ + clean "miidevs.h" +kbdmuxmap.h optional kbdmux_dflt_keymap \ + compile-with "${KEYMAP} -L ${KBDMUX_DFLT_KEYMAP} | ${KEYMAP_FIX} > ${.TARGET}" \ + no-obj no-implicit-rule before-depend \ + clean "kbdmuxmap.h" +teken_state.h optional sc | vt \ + dependency "$S/teken/gensequences $S/teken/sequences" \ + compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \ + no-obj no-implicit-rule before-depend \ + clean "teken_state.h" +ukbdmap.h optional ukbd_dflt_keymap \ + compile-with "${KEYMAP} -L ${UKBD_DFLT_KEYMAP} | ${KEYMAP_FIX} > ${.TARGET}" \ + no-obj no-implicit-rule before-depend \ + clean "ukbdmap.h" +usbdevs.h optional usb | hid \ + dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ + compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -h" \ + no-obj no-implicit-rule before-depend \ + clean "usbdevs.h" +usbdevs_data.h optional usb \ + dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ + compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -d" \ + no-obj no-implicit-rule before-depend \ + clean "usbdevs_data.h" +sdiodevs.h optional mmccam \ + dependency "$S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs" \ + compile-with "${AWK} -f $S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs -h" \ + no-obj no-implicit-rule before-depend \ + clean "sdiodevs.h" +sdiodevs_data.h optional mmccam \ + dependency "$S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs" \ + compile-with "${AWK} -f $S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs -d" \ + no-obj no-implicit-rule before-depend \ + clean "sdiodevs_data.h" +cam/cam.c optional scbus +cam/cam_compat.c optional scbus +cam/cam_iosched.c optional scbus +cam/cam_periph.c optional scbus +cam/cam_queue.c optional scbus +cam/cam_sim.c optional scbus +cam/cam_xpt.c optional scbus +cam/ata/ata_all.c optional scbus +cam/ata/ata_xpt.c optional scbus +cam/ata/ata_pmp.c optional scbus +cam/nvme/nvme_all.c optional scbus +cam/nvme/nvme_da.c optional nda | da +cam/nvme/nvme_xpt.c optional scbus +cam/scsi/scsi_xpt.c optional scbus +cam/scsi/scsi_all.c optional scbus +cam/scsi/scsi_cd.c optional cd +cam/scsi/scsi_ch.c optional ch +cam/ata/ata_da.c optional ada | da +cam/ctl/ctl.c optional ctl +cam/ctl/ctl_backend.c optional ctl +cam/ctl/ctl_backend_block.c optional ctl +cam/ctl/ctl_backend_ramdisk.c optional ctl +cam/ctl/ctl_cmd_table.c optional ctl +cam/ctl/ctl_frontend.c optional ctl +cam/ctl/ctl_frontend_cam_sim.c optional ctl +cam/ctl/ctl_frontend_ioctl.c optional ctl +cam/ctl/ctl_frontend_iscsi.c optional ctl cfiscsi +cam/ctl/ctl_ha.c optional ctl +cam/ctl/ctl_nvme_all.c optional ctl +cam/ctl/ctl_nvme_cmd_table.c optional ctl +cam/ctl/ctl_scsi_all.c optional ctl +cam/ctl/ctl_tpc.c optional ctl +cam/ctl/ctl_tpc_local.c optional ctl +cam/ctl/ctl_error.c optional ctl +cam/ctl/ctl_util.c optional ctl +cam/ctl/scsi_ctl.c optional ctl +cam/mmc/mmc_xpt.c optional scbus mmccam +cam/mmc/mmc_sim.c optional scbus mmccam +cam/mmc/mmc_sim_if.m optional scbus mmccam +cam/mmc/mmc_da.c optional scbus mmccam da +cam/scsi/scsi_da.c optional da +cam/scsi/scsi_pass.c optional pass +cam/scsi/scsi_pt.c optional pt +cam/scsi/scsi_sa.c optional sa +cam/scsi/scsi_enc.c optional ses +cam/scsi/scsi_enc_ses.c optional ses +cam/scsi/scsi_enc_safte.c optional ses +cam/scsi/scsi_sg.c optional sg +cam/scsi/scsi_targ_bh.c optional targbh +cam/scsi/scsi_target.c optional targ +cam/scsi/smp_all.c optional scbus + +# shared between zfs and dtrace +cddl/compat/opensolaris/kern/opensolaris.c optional dtrace compile-with "${CDDL_C}" +cddl/compat/opensolaris/kern/opensolaris_proc.c optional zfs | dtrace compile-with "${CDDL_C}" +contrib/openzfs/module/os/freebsd/spl/spl_misc.c optional zfs | dtrace compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_cmn_err.c optional zfs | dtrace compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_taskq.c optional zfs | dtrace compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_kmem.c optional zfs | dtrace compile-with "${ZFS_C}" + +#zfs solaris portability layer +contrib/openzfs/module/os/freebsd/spl/acl_common.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/callb.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/list.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_acl.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_dtrace.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_kstat.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_policy.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_procfs_list.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_string.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_sunddi.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_sysevent.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_uio.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_vfs.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_vm.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_zlib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/spl/spl_zone.c optional zfs compile-with "${ZFS_C}" + + + +# zfs specific + +#zfs avl +contrib/openzfs/module/avl/avl.c optional zfs compile-with "${ZFS_C}" + +# zfs lua support +contrib/openzfs/module/lua/lapi.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lauxlib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lbaselib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lcode.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lcompat.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lcorolib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lctype.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/ldebug.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/ldo.c optional zfs compile-with "${ZFS_C} ${NO_WINFINITE_RECURSION}" +contrib/openzfs/module/lua/lfunc.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lgc.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/llex.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lmem.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lobject.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lopcodes.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lparser.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lstate.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lstring.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lstrlib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/ltable.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/ltablib.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/ltm.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lvm.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/lua/lzio.c optional zfs compile-with "${ZFS_C}" + +# zfs nvpair support +contrib/openzfs/module/nvpair/fnvpair.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/nvpair/nvpair.c optional zfs compile-with "${ZFS_RPC_C} ${NO_WSTRINGOP_OVERREAD}" +contrib/openzfs/module/nvpair/nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/nvpair/nvpair_alloc_spl.c optional zfs compile-with "${ZFS_C}" + +#zfs platform compatibility code +contrib/openzfs/module/os/freebsd/zfs/abd_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/arc_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/crypto_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/dmu_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/event_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/hkdf.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/kmod_core.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/spa_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/sysctl_os.c optional zfs compile-with "${ZFS_C} -include $S/modules/zfs/zfs_config.h" +contrib/openzfs/module/os/freebsd/zfs/vdev_label_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/vdev_geom.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_acl.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_ctldir.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_debug.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_dir.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_ioctl_compat.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_ioctl_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_racct.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_vfsops.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zfs_znode_os.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/os/freebsd/zfs/zvol_os.c optional zfs compile-with "${ZFS_C}" + +#zfs unicode support +contrib/openzfs/module/unicode/u8_textprep.c optional zfs compile-with "${ZFS_C}" + +#zfs checksums / zcommon +contrib/openzfs/module/zcommon/cityhash.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfeature_common.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_comutil.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_deleg.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_fletcher.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_fletcher_superscalar.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_fletcher_superscalar4.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_namecheck.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_prop.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zfs_valstr.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zpool_prop.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/zcommon/zprop_common.c optional zfs compile-with "${ZFS_C}" + +# zfs edon-r hash support +contrib/openzfs/module/icp/algs/edonr/edonr.c optional zfs compile-with "${ZFS_C}" + +# zfs blake3 hash support +contrib/openzfs/module/icp/algs/blake3/blake3.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/icp/algs/blake3/blake3_generic.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/icp/algs/blake3/blake3_impl.c optional zfs compile-with "${ZFS_C}" + +# zfs sha2 hash support +contrib/openzfs/module/icp/algs/sha2/sha2_generic.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/icp/algs/sha2/sha256_impl.c optional zfs compile-with "${ZFS_C}" +contrib/openzfs/module/icp/algs/sha2/sha512_impl.c optional zfs compile-with "${ZFS_C}" + +#zfs core common code +contrib/openzfs/module/zfs/abd.c optional zfs compile-with "${ZFS_C}" *** 6572 LINES SKIPPED *** From nobody Thu Aug 7 09:34:44 2025 X-Original-To: dev-commits-src-main@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 4byMSj1SDhz642ZR; Thu, 07 Aug 2025 09:34:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byMSj0Jmlz3XZK; Thu, 07 Aug 2025 09:34:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754559285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WB0Mq8eMzLQeovFWIvrrccTMQHDXS+hxRYhXq8sWjrk=; b=lsxof8HwJ8bRLTpb8hTLLxINOWdcGWme3qgnTRrgbt2SpOKV0FDlT+HjkiJQpUqieMPvPx Ix3ZsFAtAaCnj+RpqjR1h23aEc1R0xJxBlvCTAuyBnsWzHA40YxmWnLsDPRbQ1qvK1Hz3Q z5QsZalWwddAUjajYKU7LSsKUBlCKfS2DIiwWQyupSGkxKFMjvPvYYxFHzdN/u4cjIarXj TLQhrxlwxDTl/fXNfZ5ClS1ZM11R+qlJfSr62wvwfIvlNvPNU0vH6CQ4ECydr2+erAigil AhgBBlcuNEmIFmWl2rExX07QMoKkSV6ivWcx0LMaLXkv1fd0XP8WVmex6FRt+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754559285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WB0Mq8eMzLQeovFWIvrrccTMQHDXS+hxRYhXq8sWjrk=; b=ejMhUOD9LAIXBxq5+l+/zQ2um1jTD0mrAurYyt7wq0vCSlAV9+Mvgq6bbnwJZQRztXEsa/ G88AVEOhhzSxgYlaoZzrNtRxmqOSbqj/FLxy0MDL+GxBuL2oYrMlzH8R2kRDdVp7zhNn4Q aP0yw3odpzMQnLSRkIqyFoxy+Qrcq4jAEdQb8lJHAmlLf6Un9kn2b0pyjpRjOiHMIWzc8p 6cGB77cw1sd/1K7jLazk33M1pglZfWuQ6cfrVfZ4SYU8widOeyp/BQr+UFjAbgNblOp4+O rfOgoWpNsas4z3nDY4tZLIrg1yEysnZZS+lpMeIXM8P1iiWnM4QTOWybpKeh1A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754559285; a=rsa-sha256; cv=none; b=acqBAexqdk0iAyVd5AlbVc01mpS7CZFYJD2oPREchldM9eaon/UUN5XitFV1ua3HywGeT2 m4gAMOI3sidyXZGTgo+JfXYpS/Re+pmZt30q2FZKoe7URN55C0Cu0Jc6nF0Kvy7GgEDsLu phW1pOb9VGexzXEdWkOPv+XSKqjsc2yV7oWdBu9W8QIkSXS/bM3oLay2v7lrtpz20uwkYc 7EfpbMKaLyU14xE7aoUrodc1ul+Y3cH1yY/x82J0jNMorO8fjGY/5XKJk+dnRx6nDwygDz UE8mjFx/Ow27P/XipGVVYD0vjYxXF5ULWWpapm6bZFhNJjH+C+swQ7d9YM/5cA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byMSh6vGvz117F; Thu, 07 Aug 2025 09:34:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5779YiOP084724; Thu, 7 Aug 2025 09:34:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5779Yi7Y084721; Thu, 7 Aug 2025 09:34:44 GMT (envelope-from git) Date: Thu, 7 Aug 2025 09:34:44 GMT Message-Id: <202508070934.5779Yi7Y084721@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: bd953a6026fc - main - libutil: Fix 32-bit build List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: bd953a6026fce63b0a76a01da1812e51f630f797 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=bd953a6026fce63b0a76a01da1812e51f630f797 commit bd953a6026fce63b0a76a01da1812e51f630f797 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 09:31:25 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 09:34:13 +0000 libutil: Fix 32-bit build In the expand_generic test case for expand_number(), leave out size_t if it's not 64 bits wide. Fixes: ab1c6874e500 --- lib/libutil/tests/expand_number_test.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/libutil/tests/expand_number_test.c b/lib/libutil/tests/expand_number_test.c index 8ff56e1ed01f..9bd339298575 100644 --- a/lib/libutil/tests/expand_number_test.c +++ b/lib/libutil/tests/expand_number_test.c @@ -251,7 +251,9 @@ ATF_TC_BODY(expand_generic, tp) { uint64_t uint64; int64_t int64; +#ifdef __LP64__ size_t size; +#endif off_t off; ATF_REQUIRE_EQ(0, expand_number("18446744073709551615", &uint64)); @@ -266,10 +268,12 @@ ATF_TC_BODY(expand_generic, tp) ATF_REQUIRE_EQ(0, expand_number("-9223372036854775808", &int64)); ATF_REQUIRE_EQ(INT64_MIN, int64); +#ifdef __LP64__ ATF_REQUIRE_EQ(0, expand_number("18446744073709551615", &size)); ATF_REQUIRE_EQ(UINT64_MAX, size); ATF_REQUIRE_EQ(-1, expand_number("-1", &size)); ATF_REQUIRE_EQ(ERANGE, errno); +#endif ATF_REQUIRE_EQ(0, expand_number("9223372036854775807", &off)); ATF_REQUIRE_EQ(INT64_MAX, off); From nobody Thu Aug 7 09:51:44 2025 X-Original-To: dev-commits-src-main@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 4byMrJ3g0Yz6443h; Thu, 07 Aug 2025 09:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byMrJ2kvmz3YtN; Thu, 07 Aug 2025 09:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560304; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WhOdyuYVdvhLcXSqrkxORJIT1SA9zBOcPLgor1hecbo=; b=l7/kXrwoPbYC64qvh+tlaYKnem4AoAArj/UErOCrLPmHLfLvbDlLc5Nb4x3v7/fFt5OZeJ uK4EYmgWFb+ZTx8wCl+uh2dNJYDe3um3GAXeY+dtRzTPbzBrVAoi9dGYtZk+2ha6VctX3k 8P5MUtpr8H+YSGL+dJwy+KZ177d+E6p0YNPpHqIoVc9Mn1lGrjID7lue6qKSrLJYw7b3W2 0HxP1xbF0ereX8MAB8L7x5bsdagPHPzKTX3A1MmOa2rIg4i4qdjXObwD6V/j1f6KyrXl43 gBpcnSy3OpLg8jRQ5AKZGGdOEcjFhjiPJDEIc+nBUdXwJ69ELcBg/hZcjg+OLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560304; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WhOdyuYVdvhLcXSqrkxORJIT1SA9zBOcPLgor1hecbo=; b=hdvKXDwqcIhdP8ke3NJaLCA62iFCHRnYqECHNWGUnu9DxIHQmXGFPNi2jXw/7/pGnbT0kY eSrRNyvnU+KDMkArUzuM+RwtncQ7sFxJ1FyKzC96TSh8WIcSgkqUz6esLhbQqFFLoJ/jOT ytnAY+tRyCiEH09LT9pPpjnZcu98roKeY3FBM0M3YZqUGnyRI/GjyyHZ+qGkGyX+U2nWJk 2ZpwIcnnHIJt/WH61myFdLgnYnF5cAmQUOCEC1CwYT70ALFX9QJyVq4dWSORLqNQoZJc1M lj2C6YZZ6lYMWv+p0jHrxk+PnQtkqiT/J8Q72H+7fORiWrgpQ1tJXb/J88sGPQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754560304; a=rsa-sha256; cv=none; b=rvzx23QjvNHnsqjGYr4o9vfFw2vQ4fcXwbCSLafYM7M2/q5HalqoIthXOKqzPRp4zf/nOQ wxG+9Hr1d8rCKl6hp1YDa1wj6obKQVL3HRiupAYd1gyqBSBpwoKBqWegEDg4Ltw3l2F98k n0oxwZ4yvCnV0msFZ0SJonP2per7b8vx4X52xRe7z+DfywlJHZmgzNQXW3p45sOCT4B6YX 692lRpcUWcXl7SICxRDyrLc8Terq+9CHXV7QsZ3TJLXxWIqYH7o5XIiyD7vIa3W0On99dJ iIGgDo6wUSYLEZLpZs8crHDfWjAg3/a81kT/jNCy1X/4wqDMjOGtnqEKKQMKXw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byMrJ2Gv1z11qp; Thu, 07 Aug 2025 09:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5779piff017841; Thu, 7 Aug 2025 09:51:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5779pi8s017838; Thu, 7 Aug 2025 09:51:44 GMT (envelope-from git) Date: Thu, 7 Aug 2025 09:51:44 GMT Message-Id: <202508070951.5779pi8s017838@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 9274eb16e5da - main - cpuset: Add CPU_TEST_{SET,CLR}_ATOMIC List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9274eb16e5da1bd048237cd82366c7db9162aafe Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=9274eb16e5da1bd048237cd82366c7db9162aafe commit 9274eb16e5da1bd048237cd82366c7db9162aafe Author: Andrew Turner AuthorDate: 2025-08-07 09:23:34 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 09:45:15 +0000 cpuset: Add CPU_TEST_{SET,CLR}_ATOMIC These are similar to CPU_{SET,CLR}_ATOMIC with the addition of returning true if the CPU bit was set before the change. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51765 --- share/man/man9/cpuset.9 | 14 +++++++++++++- sys/sys/cpuset.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/share/man/man9/cpuset.9 b/share/man/man9/cpuset.9 index 20485059a4c8..0ca04f921f82 100644 --- a/share/man/man9/cpuset.9 +++ b/share/man/man9/cpuset.9 @@ -22,7 +22,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd September 23, 2022 +.Dd August 7, 2025 .Dt CPUSET 9 .Os .Sh NAME @@ -50,8 +50,10 @@ .Nm CPU_ANDNOT , .Nm CPU_XOR , .Nm CPU_CLR_ATOMIC , +.Nm CPU_TEST_CLR_ATOMIC , .Nm CPU_SET_ATOMIC , .Nm CPU_SET_ATOMIC_ACQ , +.Nm CPU_TEST_SET_ATOMIC , .Nm CPU_AND_ATOMIC , .Nm CPU_OR_ATOMIC , .Nm CPU_COPY_STORE_REL @@ -93,8 +95,10 @@ .Fn CPU_XOR "cpuset_t *dst" "cpuset_t *src1" "cpuset_t *src2" .\" .Fn CPU_CLR_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" +.Fn CPU_TEST_CLR_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .Fn CPU_SET_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .Fn CPU_SET_ATOMIC_ACQ "size_t cpu_idx" "cpuset_t *cpuset" +.Fn CPU_TEST_SET_ATOMIC "size_t cpu_idx" "cpuset_t *cpuset" .\" .Fn CPU_AND_ATOMIC "cpuset_t *dst" "cpuset_t *src" .Fn CPU_OR_ATOMIC "cpuset_t *dst" "cpuset_t *src" @@ -143,6 +147,10 @@ The .Fn CPU_CLR_ATOMIC macro is identical, but the bit representing the CPU is cleared with atomic machine instructions. +The +.Fn CPU_TEST_CLR_ATOMIC +macro atomically clears the bit representing the CPU and returns whether it +was set. .Pp The .Fn CPU_COPY @@ -176,6 +184,10 @@ machine instructions. The .Fn CPU_SET_ATOMIC_ACQ macro sets the bit representing the CPU with atomic acquire semantics. +The +.Fn CPU_TEST_SET_ATOMIC +macro atomically sets the bit representing the CPU and returns whether it was +set. .Pp The .Fn CPU_ISSET diff --git a/sys/sys/cpuset.h b/sys/sys/cpuset.h index b036b45da283..e861321586db 100644 --- a/sys/sys/cpuset.h +++ b/sys/sys/cpuset.h @@ -61,8 +61,10 @@ #define CPU_ANDNOT(d, s1, s2) __BIT_ANDNOT2(CPU_SETSIZE, d, s1, s2) #define CPU_XOR(d, s1, s2) __BIT_XOR2(CPU_SETSIZE, d, s1, s2) #define CPU_CLR_ATOMIC(n, p) __BIT_CLR_ATOMIC(CPU_SETSIZE, n, p) +#define CPU_TEST_CLR_ATOMIC(n, p) __BIT_TEST_CLR_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC(n, p) __BIT_SET_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC_ACQ(n, p) __BIT_SET_ATOMIC_ACQ(CPU_SETSIZE, n, p) +#define CPU_TEST_SET_ATOMIC(n, p) __BIT_TEST_SET_ATOMIC(CPU_SETSIZE, n, p) #define CPU_AND_ATOMIC(n, p) __BIT_AND_ATOMIC(CPU_SETSIZE, n, p) #define CPU_OR_ATOMIC(d, s) __BIT_OR_ATOMIC(CPU_SETSIZE, d, s) #define CPU_COPY_STORE_REL(f, t) __BIT_COPY_STORE_REL(CPU_SETSIZE, f, t) From nobody Thu Aug 7 09:51:45 2025 X-Original-To: dev-commits-src-main@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 4byMrK5Dlrz643hw; Thu, 07 Aug 2025 09:51:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byMrK3mVDz3Ytg; Thu, 07 Aug 2025 09:51:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560305; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ClTqG2NQYy7SXmE9faOKU6Y3y8Vwvm+pUsScUOgtOVw=; b=sRjQj9lV2O8tUZs8K0C8rLUBEvk6vObQ9O20OTW971nv5ajpfwSRQYDid7XtIzJ2ob4TAH PXsO9mqAgi+ov9yhBwlj+4TwkHrIWkhj5XgHD7mjl/Z52zTGUjpSyQv8Z/CO8Be8hqQYy1 ovNbT1G0IcnrE+L/gsmBk0rVm0/KI+9++LUDSqee5xp20DlDxVekxlXoT4LJMZRPgOkC9D lQ4JjScJgzxR4xp+GsgQ2zqk3jY1Qd2/TN48zsyelu3auorUmN+UQBLnMfwv7K73RQOQqG 8I7ZErF3Y4UKXJ5DPuWrFjvWiVp1Q9yfGPwuFdqd8LzvY22a3wyyy8KtNnh5mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560305; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ClTqG2NQYy7SXmE9faOKU6Y3y8Vwvm+pUsScUOgtOVw=; b=ddECy7+gjdPd0bDj/5hoKtTmliweqg0Ou/xGEIFLx85QU/x/rD3zKN7A3I/w9fhNm0sjM7 gxXZdDh9Km0xruiCdZvNimc819oCQj3CzcT64LgVjoKVEy/IAVZ1JQ+xKng0mwLFI3hzns heLWNmYzHmpKbA7NjguUBpdXgsl5U4Va6WQ8mR7U+cmjWSfVX75YZ5P4bDL6gFI/QcW2SW 6jxEcicZ6h3MH5K+fHAWgljk+QQ3rD+LRRoCN6+jfXII+/phNrThwG0qBkKy9SLvekzZku GWynLgcoXltVSusXdWB/hOHb/F1SwIxt6eNL+1eh2qKec80rmpQ0xf9V/NEvBg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754560305; a=rsa-sha256; cv=none; b=MGpew/wzmzpBFVIeH9HycM/KzC/+rFNMlh7IyHs211WODElYFjBTXND1natXamZtrEyDSi nGuj5GW3Wq+6G81Cee5Cb3UYJQtvdk4fPGOzZzVX8ishUUeArg0WQ0AZQjKy1UYbIJEHi+ HW5EvJpJZtmdxgyNepJ3utk9hobSy2afahXl0LC19ddD+kZR8fg6VZI2IuoZLpIvuuRAYX uMM2z4A5masz5C95AoM3GStDIEKXRRcxNRYEQCy4H4je77DDjDeV0fd4IIP5sREq4i87Er n808iXxvjDyuoHk+Ma/cG+Iixzc6uPxHV0yaraTZW1h/XTD2fmjf+viFoaLZhg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byMrK3Fqzz1207; Thu, 07 Aug 2025 09:51:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5779pjCY017874; Thu, 7 Aug 2025 09:51:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5779pj2e017871; Thu, 7 Aug 2025 09:51:45 GMT (envelope-from git) Date: Thu, 7 Aug 2025 09:51:45 GMT Message-Id: <202508070951.5779pj2e017871@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: e560cb46edd4 - main - bhyve/arm64: Fix a race in PSCI CPU_ON List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e560cb46edd4898bdb77e82a4b5e53956357a48d Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=e560cb46edd4898bdb77e82a4b5e53956357a48d commit e560cb46edd4898bdb77e82a4b5e53956357a48d Author: Andrew Turner AuthorDate: 2025-08-07 09:31:48 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 09:45:15 +0000 bhyve/arm64: Fix a race in PSCI CPU_ON When multiple CPUs try to start the same CPU only one should return success, the other CPUs should see either ON_PENDING or ALREADY_ON. There was a race between checking if the CPU is on and marking it as on in the running_cpumask CPU set. Fix the race by using CPU_TEST_SET_ATOMIC to both check and set the state in running_cpumask. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51766 --- usr.sbin/bhyve/aarch64/vmexit.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c index 9ecf25c04e41..6297a01d427f 100644 --- a/usr.sbin/bhyve/aarch64/vmexit.c +++ b/usr.sbin/bhyve/aarch64/vmexit.c @@ -216,7 +216,7 @@ vmexit_smccc(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun) break; } - if (CPU_ISSET(newcpu, &running_cpumask)) { + if (CPU_TEST_SET_ATOMIC(newcpu, &running_cpumask)) { smccc_rv = PSCI_RETVAL_ALREADY_ON; break; } @@ -235,7 +235,6 @@ vmexit_smccc(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun) assert(error == 0); vm_resume_cpu(newvcpu); - CPU_SET_ATOMIC(newcpu, &running_cpumask); smccc_rv = PSCI_RETVAL_SUCCESS; break; From nobody Thu Aug 7 09:51:46 2025 X-Original-To: dev-commits-src-main@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 4byMrL5CWHz643qB; Thu, 07 Aug 2025 09:51: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byMrL4GY9z3YgH; Thu, 07 Aug 2025 09:51:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560306; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HBJqLKeChjyEeWTqFlDkfOOuVCRgOP0vrTG7j05D3NU=; b=jqJ7AQ93Ym4LIyWNAsmuRV7rlvqe2poXbsKKnp4Y5l/i1KlYFN+ibNOqFTBtnKbQCMg9Kf 2bh5UP4XaRXYwmacGoI9IOQdnRDW21/AOwH7ta3FDnlmK9NhC9kJgsz1rQdIXGk3eWhhsN 5NE9Xoz+D/6t/524FI1/3X0puWduidgSVxpQ/mMcjG5wb42CTOPLE00Fed1G9D+F0snVX2 T9WotF5ihR5SrByEa1L+oZeWitQR7tKx9HqvFkqmTHG1hcO4prrkb3mbW3hcNeyZk9BLTe QbJSZFjCanqukO+UaCTsAhwv7zneUnuybc5wFz55pSTXyEFZ/C4ZX9rwEAzAXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754560306; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HBJqLKeChjyEeWTqFlDkfOOuVCRgOP0vrTG7j05D3NU=; b=frIwdIHbcPKoDN+v5XHw8B10GRprn0DP+bg53gTY060osndw5DvHwLu/FN8EvadFwgIJNp ynMphuVJ9uXOK292J7jx1OaMtBpYbHodDaXq2l/TJdLp6IzL5vWmqyaTe+JZv945Tzgken WA1WbvEugLxA9+N8zgJGBiwB3H2aisQWka8Tf6yD7lUg3zcMaltAaEa7pzy4K33q+rsU57 OWWrco2YfdnLyTt1Z+MNiqqsQSr0sEsm9UZtGq/SQyGev3dkoqeWK2FUB1jWM/O2MrNqxU qrwALHkXEfiHBtdCF+6CHVpXJlyx73FctgtuOixNOmlo/JwaxhQ/8YvXSNQb0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754560306; a=rsa-sha256; cv=none; b=Y/z/Pq++/7L2A39i02VHf+XJbEfnz2BCq1t3VscHUqiwWbQD4+nNz3AqpWsTsjF2QfG8Jg 3A/fQdbcGV7JRXQD13GyQUW7hZYEeeq8uVhX6LF+LJyTUcWI+RKyrgNNKeQI9W8Qn7EKs0 0h4IFN0slTPTp44OWErPQlmFsfregB/8/jcXGg6aKPJVHLf/umtwhDWQQl1ewipO30O/hC a1nSehGq+vy/R79XDUPcKWeDAJ01JHlaGkcxVLZ6Vil2/alYS5JfxvkCdCMs/AN/49cLTs FXmcOWlIf1hFiyk7EOXKj3biVBri4fDhLuFlEVFP3NxWl//g8TIS/OrAwc5VeQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byMrL3dQfz11KW; Thu, 07 Aug 2025 09:51:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5779pkdd017908; Thu, 7 Aug 2025 09:51:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5779pkHD017905; Thu, 7 Aug 2025 09:51:46 GMT (envelope-from git) Date: Thu, 7 Aug 2025 09:51:46 GMT Message-Id: <202508070951.5779pkHD017905@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 8ae1d55bfcd0 - main - bhyve/arm64: Mark CPU0 as on at boot List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8ae1d55bfcd058b9d20bda7dad00536cb4ab4494 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=8ae1d55bfcd058b9d20bda7dad00536cb4ab4494 commit 8ae1d55bfcd058b9d20bda7dad00536cb4ab4494 Author: Andrew Turner AuthorDate: 2025-08-07 09:31:56 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 09:45:16 +0000 bhyve/arm64: Mark CPU0 as on at boot It was missed from the set. As it's the boot CPU it starts on. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51767 --- usr.sbin/bhyve/aarch64/bhyverun_machdep.c | 3 +++ usr.sbin/bhyve/aarch64/vmexit.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c index fbaba3128def..ffca4aa8c5a6 100644 --- a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c +++ b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c @@ -396,6 +396,9 @@ bhyve_init_platform(struct vmctx *ctx, struct vcpu *bsp) pci_irq_init(pcie_intrs); fdt_add_pcie(pcie_intrs); + /* Mark CPU0 as running */ + CPU_SET(0, &running_cpumask); + return (0); } diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c index 6297a01d427f..2d350566675a 100644 --- a/usr.sbin/bhyve/aarch64/vmexit.c +++ b/usr.sbin/bhyve/aarch64/vmexit.c @@ -54,7 +54,7 @@ #include "mem.h" #include "vmexit.h" -static cpuset_t running_cpumask; +cpuset_t running_cpumask; static int vmexit_inst_emul(struct vmctx *ctx __unused, struct vcpu *vcpu, From nobody Thu Aug 7 11:58:02 2025 X-Original-To: dev-commits-src-main@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 4byQf30QPKz64BcL; Thu, 07 Aug 2025 11:58:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byQf25bNSz3njK; Thu, 07 Aug 2025 11:58:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754567882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eyaMjITlu+Qqk0OWs1ibMYEjNd3z+RvXsv/b9KFcgLU=; b=VHHo+3u49oR9EhwAdZZg+35c7MzLjManc19s8pb6lHzkWhcsIMsAM/8m2ZiaQVL6A1nAZc FLO2N2kbRIxkkDhtUDMOv+0WIPbMeiZ9m4WZu4Eel51UU0+rS+a2Tx/JaFpzoZJP374pcG y3WvI6ySLrjs+Gawm6oh5FQWI0pd9osiLyzvn3uHeUBOryk6VbC8z0MhOBlEViiUyS6Cp3 wK+vSzNv9K9iAppkVmV5ZVxb0o3WJesnQvapW1r5Q1QFhmQmD/XROsQtvETcD7PDeWGep2 8lJRFlsUgv7qPMj2y4nD0rq+wSbFRAgykI/AaIXYpWt1K+h/8GhlMvot4gmjLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754567882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eyaMjITlu+Qqk0OWs1ibMYEjNd3z+RvXsv/b9KFcgLU=; b=r5gUH++veuTxUFa4/rUsU9iGWe92uxuCC9Id00ddG+MGeUbuAG4mAolKk4mFuKdRH3SNj+ edDFdhuOUD60iVdcHGrqn28/TIHaGum0l50IwEHeunxWFTHRrW4IqLGFG3VhBDgGOb4mJC W9Unbd/KWAwNaNpL+SfVn8Vgp7OWDqo2PTpwZo1ejJ7/A/k1SyTi9JnjPKduFmNR4RCC1B 5lgyE/unDNNlBiPHQgSy6i5TVjCkIFkdsI8CpUom4RTJTgqpAw4aphHPE4i0341vQXaNZ9 6U5L7CtSOIlLflDvlPCVZ4CuVKMHv8Cdal7K3QK3YLpZPrpu6mtcwwCVmp2X8A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754567882; a=rsa-sha256; cv=none; b=Yo/jQ0m52rcQ3mpY0Z8+kZ2BBi2WkSvi16rjyYnMizJ9hPZO1iSXUpf0i74GALefVc60Xu t0AuiKGylXhlJVWwXLT9qtb1KhGJ1uG7KPvBfkz/SWJ0dQNTE0qAnjf15+586iXj9PS7ij znZxuryBIPybXcdej/fzUZEohWXGoEqH0Jg7Ff7D90wbpQIsbUDJAGLSCAUBFBokDiLO9v UI+B4aQAxouZZoqKVFQOeIpRGKHXyk5FjVn3dVpZ5WM+ARBQHKeI6LlHdZKX7M1xSW/D8/ qeH+YBW/hnfNmQ30naGCM1JGiEAB9glootsAR78uZd23PUl5Yosz7d88NLfpMg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byQf24bYzz14T1; Thu, 07 Aug 2025 11:58:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577Bw2IP048279; Thu, 7 Aug 2025 11:58:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577Bw2BD048276; Thu, 7 Aug 2025 11:58:02 GMT (envelope-from git) Date: Thu, 7 Aug 2025 11:58:02 GMT Message-Id: <202508071158.577Bw2BD048276@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kajetan Staszkiewicz Subject: git: 5bbdd368c7b1 - main - pf tests: Improve tests for af-to List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5bbdd368c7b1afb4e06d8e0fe73ce8c4f4a1eacf Auto-Submitted: auto-generated The branch main has been updated by ks: URL: https://cgit.FreeBSD.org/src/commit/?id=5bbdd368c7b1afb4e06d8e0fe73ce8c4f4a1eacf commit 5bbdd368c7b1afb4e06d8e0fe73ce8c4f4a1eacf Author: Kajetan Staszkiewicz AuthorDate: 2025-07-28 18:43:07 +0000 Commit: Kajetan Staszkiewicz CommitDate: 2025-08-07 11:52:45 +0000 pf tests: Improve tests for af-to NAT64 performed on inbound direction bypasses outbound filtering and creates only a single state which is bound to the outbound interface. Extend TCP NAT64 tests to cover all combinations of inbound/outbound rule and floating/if-bound states. Reviewed by: kp Approved by: kp Sponsored by: InnoGames GmbH Differential Revision: https://reviews.freebsd.org/D51788 --- tests/sys/netpfil/pf/nat64.py | 6 +- tests/sys/netpfil/pf/nat64.sh | 170 +++++++++++++++++++++++++++++++++----- tests/sys/netpfil/pf/src_track.sh | 2 + 3 files changed, 156 insertions(+), 22 deletions(-) diff --git a/tests/sys/netpfil/pf/nat64.py b/tests/sys/netpfil/pf/nat64.py index 0908c90c34a0..705de72f5bc4 100644 --- a/tests/sys/netpfil/pf/nat64.py +++ b/tests/sys/netpfil/pf/nat64.py @@ -96,8 +96,10 @@ class TestNAT64(VnetTestTemplate): ToolsHelper.print_output("/sbin/route add default 192.0.2.2") ToolsHelper.print_output("/sbin/pfctl -e") ToolsHelper.pf_rules([ - "pass inet6 proto icmp6", - "pass in on %s inet6 af-to inet from 192.0.2.1" % ifname]) + "block", + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }", + "pass in on %s inet6 af-to inet from 192.0.2.1" % ifname, + ]) vnet.pipe.send(socket.if_nametoindex("pflog0")) diff --git a/tests/sys/netpfil/pf/nat64.sh b/tests/sys/netpfil/pf/nat64.sh index f92a69f2abce..4438ad6abb85 100644 --- a/tests/sys/netpfil/pf/nat64.sh +++ b/tests/sys/netpfil/pf/nat64.sh @@ -55,15 +55,19 @@ nat64_setup_base() nat64_setup_in() { + state_policy="${1:-if-bound}" nat64_setup_base pft_set_rules rtr \ "set reassemble yes" \ - "set state-policy if-bound" \ + "set state-policy ${state_policy}" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" } nat64_setup_out() { + state_policy="${1:-if-bound}" nat64_setup_base jexec rtr sysctl net.inet6.ip6.forwarding=1 # AF translation happens post-routing, traffic must be directed @@ -72,11 +76,11 @@ nat64_setup_out() jexec rtr route add -inet6 64:ff9b::/96 -iface ${epair_link}a; pft_set_rules rtr \ "set reassemble yes" \ - "set state-policy if-bound" \ - "pass quick inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ - "pass in quick on ${epair}b from any to 64:ff9b::/96" \ - "pass out quick on ${epair_link}a from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" \ - "block" + "set state-policy ${state_policy}" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ + "pass in on ${epair}b from any to 64:ff9b::/96" \ + "pass out on ${epair_link}a from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" } atf_test_case "icmp_echo_in" "cleanup" @@ -185,14 +189,14 @@ fragmentation_out_cleanup() pft_cleanup } -atf_test_case "tcp_in" "cleanup" -tcp_in_head() +atf_test_case "tcp_in_if_bound" "cleanup" +tcp_in_if_bound_head() { - atf_set descr 'TCP NAT64 test on inbound interface' + atf_set descr 'TCP NAT64 test on inbound interface, if-bound states' atf_set require.user root } -tcp_in_body() +tcp_in_if_bound_body() { nat64_setup_in @@ -208,21 +212,32 @@ tcp_in_body() echo "rcv=${rcv}" atf_fail "Failed to connect to TCP server" fi + + # Interfaces of the state are reversed when doing inbound NAT64! + # FIXME: Packets counters seem wrong! + states=$(mktemp) || exit 1 + jexec rtr pfctl -qvvss | normalize_pfctl_s > $states + for state_regexp in \ + "${epair_link}a tcp 192.0.2.1:[0-9]+ \(2001:db8::2\[[0-9]+\]\) -> 192.0.2.2:1234 \(64:ff9b::c000:202\[1234\]\) .* 9:9 pkts.* rule 3 .* origif: ${epair}b" \ + ; do + grep -qE "${state_regexp}" $states || atf_fail "State not found for '${state_regexp}'" + done + [ $(cat $states | grep tcp | wc -l) -eq 1 ] || atf_fail "Not exactly 1 state found!" } -tcp_in_cleanup() +tcp_in_if_bound_cleanup() { pft_cleanup } -atf_test_case "tcp_out" "cleanup" -tcp_out_head() +atf_test_case "tcp_out_if_bound" "cleanup" +tcp_out_if_bound_head() { - atf_set descr 'TCP NAT64 test on outbound interface' + atf_set descr 'TCP NAT64 test on outbound interface, if-bound states' atf_set require.user root } -tcp_out_body() +tcp_out_if_bound_body() { nat64_setup_out @@ -238,9 +253,102 @@ tcp_out_body() echo "rcv=${rcv}" atf_fail "Failed to connect to TCP server" fi + + # Origif is not printed when identical as if. + states=$(mktemp) || exit 1 + jexec rtr pfctl -qvvss | normalize_pfctl_s > $states + for state_regexp in \ + "${epair}b tcp 64:ff9b::c000:202\[1234\] <- 2001:db8::2\[[0-9]+\] .* 5:4 pkts.* rule 3 .*creatorid" \ + "${epair_link}a tcp 192.0.2.1:[0-9]+ \(64:ff9b::c000:202\[1234\]\) -> 192.0.2.2:1234 \(2001:db8::2\[[0-9]+\]\).* 5:4 pkts.* rule 4 .*creatorid" \ + ; do + grep -qE "${state_regexp}" $states || atf_fail "State not found for '${state_regexp}'" + done + [ $(cat $states | grep tcp | wc -l) -eq 2 ] || atf_fail "Not exactly 2 states found!" } -tcp_out_cleanup() +tcp_out_if_bound_cleanup() +{ + pft_cleanup +} + +atf_test_case "tcp_in_floating" "cleanup" +tcp_in_floating_head() +{ + atf_set descr 'TCP NAT64 test on inbound interface, floating states' + atf_set require.user root +} + +tcp_in_floating_body() +{ + nat64_setup_in "floating" + + echo "foo" | jexec dst nc -l 1234 & + + # Sanity check & delay for nc startup + atf_check -s exit:0 -o ignore \ + ping6 -c 3 64:ff9b::192.0.2.2 + + rcv=$(nc -w 3 -6 64:ff9b::c000:202 1234) + if [ "${rcv}" != "foo" ]; + then + echo "rcv=${rcv}" + atf_fail "Failed to connect to TCP server" + fi + + # Interfaces of the state are reversed when doing inbound NAT64! + # FIXME: Packets counters seem wrong! + states=$(mktemp) || exit 1 + jexec rtr pfctl -qvvss | normalize_pfctl_s > $states + for state_regexp in \ + "all tcp 192.0.2.1:[0-9]+ \(2001:db8::2\[[0-9]+\]\) -> 192.0.2.2:1234 \(64:ff9b::c000:202\[1234\]\).* 9:9 pkts.* rule 3 .* origif: ${epair}b" \ + ; do + grep -qE "${state_regexp}" $states || atf_fail "State not found for '${state_regexp}'" + done + [ $(cat $states | grep tcp | wc -l) -eq 1 ] || atf_fail "Not exactly 1 state found!" +} + +tcp_in_floating_cleanup() +{ + pft_cleanup +} + +atf_test_case "tcp_out_floating" "cleanup" +tcp_out_floating_head() +{ + atf_set descr 'TCP NAT64 test on outbound interface, floating states' + atf_set require.user root +} + +tcp_out_floating_body() +{ + nat64_setup_out "floating" + + echo "foo" | jexec dst nc -l 1234 & + + # Sanity check & delay for nc startup + atf_check -s exit:0 -o ignore \ + ping6 -c 3 64:ff9b::192.0.2.2 + + rcv=$(nc -w 3 -6 64:ff9b::c000:202 1234) + if [ "${rcv}" != "foo" ]; + then + echo "rcv=${rcv}" + atf_fail "Failed to connect to TCP server" + fi + + # Origif is not printed when identical as if. + states=$(mktemp) || exit 1 + jexec rtr pfctl -qvvss | normalize_pfctl_s > $states + for state_regexp in \ + "all tcp 64:ff9b::c000:202\[1234\] <- 2001:db8::2\[[0-9]+\] .* 5:4 pkts,.* rule 3 .*creatorid"\ + "all tcp 192.0.2.1:[0-9]+ \(64:ff9b::c000:202\[1234\]\) -> 192.0.2.2:1234 \(2001:db8::2\[[0-9]+\]\) .* 5:4 pkts,.* rule 4 .*creatorid"\ + ; do + grep -qE "${state_regexp}" $states || atf_fail "State not found for '${state_regexp}'" + done + [ $(cat $states | grep tcp | wc -l) -eq 2 ] || atf_fail "Not exactly 2 states found!" +} + +tcp_out_floating_cleanup() { pft_cleanup } @@ -433,7 +541,9 @@ no_v4_body() jexec rtr pfctl -e pft_set_rules rtr \ - "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ + "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" \ atf_check -s exit:2 -o ignore \ ping6 -c 3 64:ff9b::192.0.2.2 @@ -484,7 +594,9 @@ range_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ - "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from 192.0.2.2/31 round-robin" + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ + "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from 192.0.2.2/31 round-robin" \ # Use pf to count sources jexec dst pfctl -e @@ -545,6 +657,8 @@ pool_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from { 192.0.2.1, 192.0.2.3, 192.0.2.4 } round-robin" # Use pf to count sources @@ -642,6 +756,8 @@ table_range_body() "set reassemble yes" \ "set state-policy if-bound" \ "table { 192.0.2.2/31 }" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from round-robin" # Use pf to count sources @@ -699,6 +815,8 @@ table_common_body() "set reassemble yes" \ "set state-policy if-bound" \ "table { 192.0.2.1, 192.0.2.3, 192.0.2.4 }" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b inet6 from any to 64:ff9b::/96 af-to inet from ${pool_type}" # Use pf to count sources @@ -798,6 +916,8 @@ dummynet_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b inet6 from any to 64:ff9b::/96 dnpipe 1 af-to inet from (${epair_link}a)" # The ping request will pass, but take 1.2 seconds (.6 in, .6 out) @@ -860,6 +980,8 @@ gateway6_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair_lan_link}b inet6 from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" # One ping @@ -912,6 +1034,8 @@ route_to_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b route-to (${epair_link}a 192.0.2.2) inet6 from any to 64:ff9b::/96 af-to inet from (${epair_link}a)" atf_check -s exit:0 -o ignore \ @@ -965,6 +1089,8 @@ reply_to_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair}b reply-to (${epair}b 2001:db8::2) inet6 from any to 64:ff9b::/96 af-to inet from 192.0.2.1" atf_check -s exit:0 -o ignore \ @@ -1024,6 +1150,8 @@ v6_gateway_body() pft_set_rules rtr \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair_lan}b inet6 from any to 64:ff9b::/96 af-to inet from (${epair_wan_one}a)" atf_check -s exit:0 -o ignore \ @@ -1043,8 +1171,10 @@ atf_init_test_cases() atf_add_test_case "icmp_echo_out" atf_add_test_case "fragmentation_in" atf_add_test_case "fragmentation_out" - atf_add_test_case "tcp_in" - atf_add_test_case "tcp_out" + atf_add_test_case "tcp_in_if_bound" + atf_add_test_case "tcp_out_if_bound" + atf_add_test_case "tcp_in_floating" + atf_add_test_case "tcp_out_floating" atf_add_test_case "udp_in" atf_add_test_case "udp_out" atf_add_test_case "sctp_in" diff --git a/tests/sys/netpfil/pf/src_track.sh b/tests/sys/netpfil/pf/src_track.sh index 68e7e72f5018..ae60a5df809b 100755 --- a/tests/sys/netpfil/pf/src_track.sh +++ b/tests/sys/netpfil/pf/src_track.sh @@ -523,6 +523,8 @@ mixed_af_body() pft_set_rules router \ "set reassemble yes" \ "set state-policy if-bound" \ + "block" \ + "pass inet6 proto icmp6 icmp6-type { neighbrsol, neighbradv }" \ "pass in on ${epair_tester}b \ route-to { (${epair_server1}a ${net_server1_4_host_server}) \ } sticky-address \ From nobody Thu Aug 7 12:37:20 2025 X-Original-To: dev-commits-src-main@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 4byRWN3Lbxz64Ddw; Thu, 07 Aug 2025 12:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byRWN2hWCz3skT; Thu, 07 Aug 2025 12:37:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GLqbZSVtFL7EVPz0X/ZfPu9mXggvoFniOAHw59gsYh0=; b=cXSiy0GpzrS1qoZ6Pcabj4ZxyaI1bZtE5QHnb7omy9f5f2m002dCx+1AfX9qjtwfcTr+cQ UhDsNvM6EPpMZOvSjIzjPB0pqfy7LcAB002sJSaMFcJt3Oxk/Km3xpkpndGve2nrilUl/V PL3STEaaw6ZHvjXgZHlYJBPTuQ1PjLjfDeLOrJGpLcxlTr1Jd0Qhkzb23/Sb2lnmKWfmbW 54mAk/vHG40t3bLW8FubQL0YULON5vCA/3BmcDAd5zPJcCG7ivcJWirfLgZpopdi2cnhsY UEp34Ft2TdhyFTge3gzjL1LI5AdwsHTLNTUWxjjUvEEh7fegbOgFwwtmOnWijg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GLqbZSVtFL7EVPz0X/ZfPu9mXggvoFniOAHw59gsYh0=; b=GT93wd1gjN9cAhCrjopRpktrfbvzYQZg2RtA9wOydyKpljgtefbRVfh7+MJeoqyfntX78i lgmuW4aDpBYJwkSzTaXeTfG4uECnchA3Dhc4fqgA0czoFRUMlIcYFC9cBLnU9a2LoHCDDJ L90Amkog9qVlnIXr4VfwpN/2JXe155k+c1zoI7J/uTHEFLw2bi6GGQxYssMi5sqn1LOg7v V5hq0wUZTifWt7Ki1ck3MrEJ7VtkHgnh/47Es4Bm035YF1sv/mgqBQRXbK6pLFWhJqopKd grwE+2iLB+8f1F0mkZn1LzsPvvCkMGUF86nCUuFp/bgc64IUssLBYYicfF2TwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754570240; a=rsa-sha256; cv=none; b=VH39yzwARTKRRWwUXfZ3XOcb9v6U8MQBZqHs2FR7GnDlYFpiYmwuMptKVox9TSo9m+OEfr 7Q918zTr5OghL8RlMLXhfXpREA0fLQ1+MLkw2vCH2CUNhm8DqG+yphKSUXzCfNgh6CWtdQ GykSNrNBYAWehCi6X0R5F5T2QOTnDFMJXeHeckEbxFgr90bMGu8caNkp35GiV0bIC+X4k/ LSOJQgNRsa1VRcy4F5MSIjVwrS5+oFOSoD5a1tamb9kTmXMwmM36d4WampgFydPDsjTaJK preDLpFkJiTF2xpkUMb6vblW3go7muP8e44D3LIf6/xAnj0PdqP2yOBpD6AEPg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byRWN29nyz16D0; Thu, 07 Aug 2025 12:37:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577CbKW9023623; Thu, 7 Aug 2025 12:37:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577CbK30023620; Thu, 7 Aug 2025 12:37:20 GMT (envelope-from git) Date: Thu, 7 Aug 2025 12:37:20 GMT Message-Id: <202508071237.577CbK30023620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 7ed6b6b9d1a7 - main - packages: move route(6)d to the rip package List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7ed6b6b9d1a7085ab063c62f063938aacfb04e75 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=7ed6b6b9d1a7085ab063c62f063938aacfb04e75 commit 7ed6b6b9d1a7085ab063c62f063938aacfb04e75 Author: Lexi Winter AuthorDate: 2025-08-07 11:37:57 +0000 Commit: Lexi Winter CommitDate: 2025-08-07 12:36:59 +0000 packages: move route(6)d to the rip package These are deprecated, but in the mean time, move them to another package. routed in particularly doesn't need to be in -runtime. Reviewed by: manu Differential Revision: https://reviews.freebsd.org/D51783 --- UPDATING | 4 ++++ libexec/rc/rc.d/Makefile | 11 +++++++++-- release/packages/ucl/rip-all.ucl | 8 ++++++++ sbin/routed/Makefile | 2 +- sbin/routed/Makefile.inc | 2 ++ usr.sbin/rip6query/Makefile | 1 + usr.sbin/route6d/Makefile | 1 + 7 files changed, 26 insertions(+), 3 deletions(-) diff --git a/UPDATING b/UPDATING index 1e729624f1e9..c817dbfed032 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20250807: + routed(8) and route6d(8) have moved to the FreeBSD-rip package. + If you use either of these, you should install the new package. + 20250806: if_epair(4) now uses ether_gen_addr(9) to generate a stable MAC address. diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index 27d8a7526691..9cd61b96f59e 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -62,7 +62,6 @@ CONFS= DAEMON \ rarpd \ rctl \ root \ - route6d \ routing \ rpcbind \ rtadvd \ @@ -355,8 +354,16 @@ PPP= ppp PPPPACKAGE= ppp .endif +.if ${MK_INET6} != "no" || ${MK_ROUTED} != "no" +CONFGROUPS+= RIP +RIPPACKAGE= rip + +.if ${MK_INET6} != "no" +RIP+= route6d +.endif .if ${MK_ROUTED} != "no" -CONFS+= routed +RIP+= routed +.endif .endif .if ${MK_SENDMAIL} != "no" diff --git a/release/packages/ucl/rip-all.ucl b/release/packages/ucl/rip-all.ucl new file mode 100644 index 000000000000..c0d774132b90 --- /dev/null +++ b/release/packages/ucl/rip-all.ucl @@ -0,0 +1,8 @@ +comment = "RIP routing protocol" +desc = < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 1e629ebb15db - main - bsd.files.mk: Fix FILESPACKAGE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1e629ebb15db9ee0cb11a3654d7bcd3046a0df54 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=1e629ebb15db9ee0cb11a3654d7bcd3046a0df54 commit 1e629ebb15db9ee0cb11a3654d7bcd3046a0df54 Author: Lexi Winter AuthorDate: 2025-08-07 11:43:25 +0000 Commit: Lexi Winter CommitDate: 2025-08-07 12:36:59 +0000 bsd.files.mk: Fix FILESPACKAGE Because TAGS may already have a package tag, assigning TAGS to FILESTAGS causes the value of FILESPACKAGE to be ignored. Only assign tags other than package, and take the default package from ${PACKAGE}, which matches the behaviour of bsd.confs.mk and bsd.man.mk. This fixes several files that were wrongly installed in utilities, including /usr/share/examples/sendmail/mailer.conf and some files in /usr/share/nls. The fix trips a bug in share/syscons where Makefile.inc was setting FILESPACKAGE to the wrong package, but the problem was hidden because the subdirectories set PACKAGE explicitly. Fix this by setting the correct FILESPACKAGE in Makefile.inc and removing the PACKAGEs. Reviewed by: manu Differential Revision: https://reviews.freebsd.org/D51784 --- share/mk/bsd.files.mk | 6 +++--- share/syscons/Makefile.inc | 2 +- share/syscons/fonts/Makefile | 2 -- share/syscons/keymaps/Makefile | 2 -- share/syscons/scrnmaps/Makefile | 2 -- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk index aedc414d6a28..3ec4da010577 100644 --- a/share/mk/bsd.files.mk +++ b/share/mk/bsd.files.mk @@ -39,14 +39,14 @@ STAGE_SETS+= ${group:C,[/*],_,g} .if ${group} == "FILES" FILESPACKAGE?= ${PACKAGE:Uutilities} -FILESTAGS+= ${TAGS} +FILESTAGS+= ${TAGS:Npackage=*} .endif .if defined(NO_ROOT) .if !defined(${group}TAGS) || ! ${${group}TAGS:Mpackage=*} -${group}TAGS+= package=${${group}PACKAGE:Uutilities} +${group}TAGS+= package=${${group}PACKAGE:U${PACKAGE:Uutilities}} .endif -${group}TAG_ARGS= -T ${${group}TAGS:[*]:S/ /,/g} +${group}TAG_ARGS= -T ${${group}TAGS:ts,:[*]} .endif diff --git a/share/syscons/Makefile.inc b/share/syscons/Makefile.inc index 07cde30e3d52..d4635b273f40 100644 --- a/share/syscons/Makefile.inc +++ b/share/syscons/Makefile.inc @@ -1 +1 @@ -FILESPACKAGE= syscons +FILESPACKAGE= syscons-data diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile index e1b6614b5684..ba3341da87e3 100644 --- a/share/syscons/fonts/Makefile +++ b/share/syscons/fonts/Makefile @@ -1,5 +1,3 @@ -PACKAGE= syscons-data - FILES= armscii8-8x8.fnt armscii8-8x14.fnt armscii8-8x16.fnt \ cp437-8x8.fnt cp437-8x14.fnt cp437-8x16.fnt \ cp437-thin-8x8.fnt cp437-thin-8x16.fnt \ diff --git a/share/syscons/keymaps/Makefile b/share/syscons/keymaps/Makefile index 139834abcd2b..bf0099288a19 100644 --- a/share/syscons/keymaps/Makefile +++ b/share/syscons/keymaps/Makefile @@ -1,5 +1,3 @@ -PACKAGE= syscons-data - FILES= INDEX.keymaps \ be.iso.kbd be.iso.acc.kbd \ bg.bds.ctrlcaps.kbd bg.phonetic.ctrlcaps.kbd \ diff --git a/share/syscons/scrnmaps/Makefile b/share/syscons/scrnmaps/Makefile index 8da31ed32be4..ffbd6be3df4d 100644 --- a/share/syscons/scrnmaps/Makefile +++ b/share/syscons/scrnmaps/Makefile @@ -1,5 +1,3 @@ -PACKAGE= syscons-data - SCRMAPS = armscii8-2haik8.scm \ iso-8859-1_to_cp437.scm iso-8859-4_for_vga9.scm \ iso-8859-7_to_cp437.scm \ From nobody Thu Aug 7 12:38:46 2025 X-Original-To: dev-commits-src-main@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 4byRYB3xpGz64DpB; Thu, 07 Aug 2025 12:38:54 +0000 (UTC) (envelope-from tuexen@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byRY96pHzz3v3W; Thu, 07 Aug 2025 12:38:53 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570334; 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=GSLGE/afMcVsisblCE5cYrm3+AJgNq9oKFeMXK14oN8=; b=p7FSgM7rGR3eKjUdLVmjCpXo6DZXeBX3dEEIpgAR4FgFN9zs15HHd36ZQLpzTfGobIHq7/ ntlQGJ8AHGIE1uuTXriFuHrlNyBaKrYPeMd8r2WfxnTuW6p6OIlLQP2hFy8Ck3sluJAdGr ZOmupOwqEPRet/gQ8l0sGXA7h0FeNfJvA6CBljPN8Is+wh+e9AF2mTp0/qPqwVjJjftzFR q5dwKlgrtQttJLluNSryvatgm1+wNFOe1zECah1/dWfhFkcwMORfAS3AVc+VbHf7WuMa4V i21xF+qsfnEt1HTqZ5cxLwgJtL+t4SYtyYPDqTxZgJu4bLgo+cDHTGSahJtwmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570334; 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=GSLGE/afMcVsisblCE5cYrm3+AJgNq9oKFeMXK14oN8=; b=JyA0i7IVxx0r9uYy3nFop8gGyPx6oeXsMSgy7q24TLdM9m+SdO/dcQh+Zp1/7dVAFT0swP qFWulwfpd9C5rx5PDBqzJzrtzE6Pv/JEwhWzWOvqz8ckea2JI8dfGr7H8y6IWNGBUuyl6w QNYl/QzSpzU4mFD2gGiXpRMVlbMWj13URAVoEDDSsee8+Pk/5Z34a37JnDNysJWUY9TVTR a5/uVP4mC2M0eyDDZtJISX4KMqWe7/Q3RQkLuaNNbwe8FqUl1KQp2CTSDL8kmdbD99QSJO 8PmsIpoM1b8oiZz/M1Drp7wHRxO8ZFCCeWpB5Gt/QzUpdfRHvejjWghvzV7Wag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754570334; a=rsa-sha256; cv=none; b=G97F8bI8ylxRogrdqaXCMaNPeee5BsoOQZiunRmjtPeuwkbQczyBpb5weuyPu0odDmuW+W LaJN9tb4khMltCIyPijisLWJYbvKtknDoOM1qP1cbj/SVl+wtnDiJRXhIWCmZ2LkBVaGxo 4sHr6e89YezUNLM65GvXQXdVzO9t0MScKrWYW/Bi6jlo4vAqtWMrDlWFyN63ux7F7RAJWR P+aa+W4eo0j2Fc20cwuLGJPWOoaQ8s7a2sx2lP21MdCzn7Nu8YaYcF80cMCSKvhYzByzHX UOUhztH0AMiKXAwScERKrnIwAX0nu++xvuy4ARCXYiMu1mNjpRKPuOy1c9e1Mw== Received: from smtpclient.apple (unknown [IPv6:2a02:8109:1101:be00:3835:31e9:a7ec:b401]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: tuexen) by smtp.freebsd.org (Postfix) with ESMTPSA id 4byRY92TkPz10RB; Thu, 07 Aug 2025 12:38:53 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: bcb298fa9e23 - main - sctp, tcp, udp: improve deferred computation of checksums From: Michael Tuexen In-Reply-To: Date: Thu, 7 Aug 2025 14:38:46 +0200 Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <202508010817.5718HZM6067171@gitrepo.freebsd.org> To: Gleb Smirnoff X-Mailer: Apple Mail (2.3826.700.81) > On 7. Aug 2025, at 00:35, Gleb Smirnoff wrote: >=20 > Michael, >=20 > On Fri, Aug 01, 2025 at 08:17:35AM +0000, Michael Tuexen wrote: > M> When the SCTP, TCP, or UDP implementation send a packet, it = does not > M> compute the corresponding checksum but defers that. The network = layer > M> will determine whether the network interface selected for the = packet > M> has the requested capability and computes the checksum in = software, > M> if the selected network interface doesn't have the requested > M> capability. > M> Do this not only for packets being sent by the local SCTP, TCP, > M> and UDP stack, but also when forwarding packets. Furthermore, = when > M> such packets are delivered to a local SCTP, TCP, or UDP stack, = do not > M> compute or validate the checksum, since such packets never have = been on > M> the wire. > M> This allows to support checksum offloading also in the case of = local > M> virtual machines or jails. > M> Support for epair, vtnet, and tap interfaces will be added in > M> separate commits. >=20 > Not a request for any action, but a general comment on the topic. >=20 > Imagine we are developing an IP stack from scratch for modern = computers. Most > NICs do hardware checksumming, large fraction of installations run in A lot do checksum offloading for TCP/IPv[46] and UDP/IPv[46]. But only = some do it for SCTP/IPv[46]. Also support for TCP and UDP, if encapsulated in some tunneling stuff, is only supported by some NICs. > containers/VMs and communicate via virtual interfaces. With modern = reality we I agree. That is the motivation of the patch set in https://reviews.freebsd.org/D51639 where support for checksum offloading for the epair device is added. = This way you can send/recv packets in a jail, and the checksum is computed by the physical NIC, which is used for actually sending the packet. If the packet ends up in another jail or VM on the local host, also no = checksum is computed. The patches https://reviews.freebsd.org/D51289 https://reviews.freebsd.org/D51686 https://reviews.freebsd.org/D51688 are needed for vnet interfaces and its use by bhyve. > would probably do not do any checksumming in the stack at all, just = completely > ignore the checksum field. It would always be obligation of the NIC = driver to > care about the checksums. The existing software checksumming code = would be I agree. This is the direction of the patch you are commenting on and = the patch sets above. It would be great if you could have a look. > just a library that drivers for legacy hardware call. Local traffic = won't set > and won't check checksums neither any related flags. The above will set flags, but not do the actual computations. Best regards Michael >=20 > --=20 > Gleb Smirnoff From nobody Thu Aug 7 12:46:59 2025 X-Original-To: dev-commits-src-main@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 4byRkY55mQz64Dx3; Thu, 07 Aug 2025 12:47:01 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byRkY38hkz3w99; Thu, 07 Aug 2025 12:47:01 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570821; 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=MA/c9WrC0KQdh1vUlqtRgnWKw1Zgp9wdydYdVBbXv6g=; b=XnbVNmR2fW2qTtPoPRa03+zCaVBAfgL3suLUsqBtPwmnjg9YQyafB6YxdqMwdCZ2gEcEYU ODjtUfgj73i+3Cr3PEVt6TzxkDt3s7EsYx51FPaqlAa4UnpZLoq8z9YUm9bpRSTvBwCTsK E7ot2Q1lZtARDxleQ+kcSZ5ieSHXLOqX7KzangJMOUgy6IreyXUQAaI4IcdYkV4M22yCb9 3RtuGFjL8d2NwZLspDUNNYUhYcAnQOuvZauL5Iv5vctJho1uF/XvTVnq+/RM8eBN6kj5eD bOlNWp2Ms+3F5MdrxxLCyQC5XbZpYl8iNSmyXoI0edjbYzTBFCiCTAZKGpV8Uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754570821; 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=MA/c9WrC0KQdh1vUlqtRgnWKw1Zgp9wdydYdVBbXv6g=; b=ACgwqwY+gf6as5FfROfctVdVIRJWPInO/FXMZN8Z+sY25oKwhxDGsSyM7Mnb3evq70NDdl PzmnpTp6oiuy+oRj8QenCjq1Z8Hi/diMHNonHEss912jxFr3V6PpGRlua/45ZLoSL68n5X mCyw8YQ1Dcld9ZrxYUWWVDb96aID1rSLhuacJBBCwirE/rYnvW9KiZMMXQluTdGMOrMnks 8Wu3LoFa6dNhD/Kr35xkTu4nAF2bJ1m9txdcY0PG1KXM2wniUdjis4Ye9kCQz2TGsSmZDF GtZVdunik5GZPznkFbJws+DOr9f1WnX22A5XQYLESUtuugqJKU48gnB1p585HQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754570821; a=rsa-sha256; cv=none; b=LF6WwEJ6nby8oHqchSyCCNgNn6Kok7CiimfhfvUtvXlKWG6o1sLcsx2a8lS/UG83nMRtME TDwfJ3FTEEDODeM8tz3y2PbKwOi0kT6qVFyInD5h4PevID+FNx0s4RBU9BW3LsKzgXkNVR nM7CO/ket2qLCol9a44ED2qW11Zlmy8vPdyi48zJBqzzIQQElLujimZN8xwwj1TA60yDoT LxqTyZEI1cxgka4KWwQRnL2OGoBFSsVlCOlpNbRafJ3HpMeXR49R0C2v/HtGQSqt0bYN5u 6R5IoNV1sGk3ZGwdTpB99VKB4I04nTlrnRXWRPqRJziesdMj1UvVYlttS2mKtg== Received: from smtpclient.apple (unknown [IPv6:2a02:8109:1101:be00:3835:31e9:a7ec:b401]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: tuexen) by smtp.freebsd.org (Postfix) with ESMTPSA id 4byRkX60sCz10CM; Thu, 07 Aug 2025 12:47:00 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: feeb19201dca - main - tcp: improve consistency of KASSERTs in tcp_sack.c From: Michael Tuexen In-Reply-To: Date: Thu, 7 Aug 2025 14:46:59 +0200 Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <8C353AC5-6E5E-45B6-AC48-D3001A37D4D8@FreeBSD.org> References: <202508060830.5768UUcN052133@gitrepo.freebsd.org> To: Gleb Smirnoff X-Mailer: Apple Mail (2.3826.700.81) > On 7. Aug 2025, at 00:29, Gleb Smirnoff wrote: >=20 > On Wed, Aug 06, 2025 at 08:30:30AM +0000, Michael Tuexen wrote: > M> When panicing, don't print the condition, which was violated, > M> but the condition which holds at the time of the panic. > M> =20 > M> Reviewed by: Nick Banks > M> MFC after: 1 week > M> Sponsored by: Netflix, Inc. > M> Differential Revision: https://reviews.freebsd.org/D51726 > M> --- > M> sys/netinet/tcp_sack.c | 30 +++++++++++++++++------------- > M> 1 file changed, 17 insertions(+), 13 deletions(-) > M>=20 > M> diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c > M> index 4405098a8620..f48e60207cc2 100644 > M> --- a/sys/netinet/tcp_sack.c > M> +++ b/sys/netinet/tcp_sack.c > M> @@ -283,7 +283,7 @@ tcp_update_sack_list(struct tcpcb *tp, tcp_seq = rcv_start, tcp_seq rcv_end) > M> INP_WLOCK_ASSERT(tptoinpcb(tp)); > M> =20 > M> /* Check arguments. */ > M> - KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("rcv_start <=3D rcv_end")); > M> + KASSERT(SEQ_LEQ(rcv_start, rcv_end), ("SEG_GT(rcv_start, = rcv_end)")); > M> =20 > M> if ((rcv_start =3D=3D rcv_end) && > M> (tp->rcv_numsacks >=3D 1) && > M> @@ -498,8 +498,8 @@ tcp_sackhole_free(struct tcpcb *tp, struct = sackhole *hole) > M> tp->snd_numholes--; > M> atomic_subtract_int(&V_tcp_sack_globalholes, 1); > M> =20 > M> - KASSERT(tp->snd_numholes >=3D 0, ("tp->snd_numholes >=3D 0")); > M> - KASSERT(V_tcp_sack_globalholes >=3D 0, ("tcp_sack_globalholes >=3D = 0")); > M> + KASSERT(tp->snd_numholes >=3D 0, ("tp->snd_numholes < 0")); > M> + KASSERT(V_tcp_sack_globalholes >=3D 0, ("tcp_sack_globalholes < = 0")); >=20 > IMHO, better just through MPASS() instead of self-repetitive KASSERT. Up to now, tcp_sack.c does not use MPASS(). So I wanted to stay = consistent.. I just go confused when looking at the panic messages from tcp_sack.c. Some messages printed the condition which should hold, some the = condition which holds. Best regards Michael >=20 > --=20 > Gleb Smirnoff From nobody Thu Aug 7 13:23:51 2025 X-Original-To: dev-commits-src-main@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 4bySY4078jz64GvX; Thu, 07 Aug 2025 13:23: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bySY35sRtz40Yr; Thu, 07 Aug 2025 13:23:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754573031; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QiI+oxXuZLykc77CzE/ESgc7tLpala/uTFuK3GrVNc0=; b=FahgVHl1dYqtsjNZk+2qz8IfCwIGXmg33nyaiEezXFLhNibyaZKQu3szjF2Rq8tp813xTM QTjYmjwTkd34kuvgiZZM0nVg42RVAhurBL86HOIVb78EA0ocBrCxS5qPwyLjD3cbFoJDgs qGJ+1ysMNmnqrUy5498d3o1cwY8gp6ltl/f2vliLHXU7eds/VHyYr0t8Y3lopjsk9Uwv53 Hsz3VaFxC01WBIHM0MkrUdcs42vD1Ez7Mx+Z5cC0/TxcE58DgYydAbsx9YdL2fkFwM9xmt IkjlbtVfkmZqYkqC1w7nxcOEfRZf8UuEkDtCGByylna+zyo/telGJgxTWmwyAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754573031; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QiI+oxXuZLykc77CzE/ESgc7tLpala/uTFuK3GrVNc0=; b=QVUO34L0tVaU8qjYD6PIQySyqD6FKEF8z8vHb07BLgFduymYK+6xWdrPxOzSOazvFpjdx/ g+DW4Tw40inG0R8epzXpItSAg+ueNl67G57aUFH9K/khlq9PvC/CkXQpcZztRa6cKSvath TFASDkLWb8pRh7Uh8R0/Lg0VgYRQVUcTmCVq/RhwrDp+dcCPDxRk6TOf0xzBOHVYxVjYYb t1Rj5HF6IG92kHJMwUJmGUQMfeC6F7eA8GmVwHygs+Z4e6guf/NsfWD0U29x4FA+fi5q2Y uU8yp20TPbYmHZUkIQBid3QzD6DzifsBPdz/FIzL+ylKNrhpcqI9SWqAZ3splA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754573031; a=rsa-sha256; cv=none; b=Ko1yFFa+zT84rbXxeRZFKQ9yXEw6nDGwzzpskEdez6RmtNZvSfPCJujlWShOkCl9iEKr8j 5xO1qmnF+Vkr+K7V+2V+ghFtbYIFJGLI7TTZRf5K6fvrbW+7qCHz5XaR4orah9Phf+/51Y rYpnii7w7Uw0dapL5n2UOGqTJOTxMh2GHKwhQkVGDb7tQbF7OkyZp0vAIpKRKpk8g+ZNT9 Uqr0MFdg2utDCSgqnjaoOA4vaqqjmHSy+2iT8ca69iCeZDQ5jOSgWGv2Tqy0MiD6qCu0VX Gnnx0Wh7IZnHSQHI91GqQt4HatrI1ck7GTBlY9YKmvdz82n3bp0ahH623/mrBg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bySY35Pxxz17ST; Thu, 07 Aug 2025 13:23:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577DNpbm016111; Thu, 7 Aug 2025 13:23:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577DNp70016108; Thu, 7 Aug 2025 13:23:51 GMT (envelope-from git) Date: Thu, 7 Aug 2025 13:23:51 GMT Message-Id: <202508071323.577DNp70016108@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 5d56a04d1b99 - main - bhyve/arm64: Add a missing header file List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5d56a04d1b99c0187c7799be0d1e93586312bd55 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=5d56a04d1b99c0187c7799be0d1e93586312bd55 commit 5d56a04d1b99c0187c7799be0d1e93586312bd55 Author: Andrew Turner AuthorDate: 2025-08-07 10:29:57 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 10:34:28 +0000 bhyve/arm64: Add a missing header file This should have been added with 8ae1d55bfcd0 ("bhyve/arm64: Mark CPU0 as on at boot"). Fixes: 8ae1d55bfcd0 ("bhyve/arm64: Mark CPU0 as on at boot") Sponsored by: Arm Ltd --- usr.sbin/bhyve/aarch64/bhyve_machdep.h | 12 ++++++++++++ usr.sbin/bhyve/aarch64/bhyverun_machdep.c | 1 + usr.sbin/bhyve/aarch64/vmexit.c | 1 + 3 files changed, 14 insertions(+) diff --git a/usr.sbin/bhyve/aarch64/bhyve_machdep.h b/usr.sbin/bhyve/aarch64/bhyve_machdep.h new file mode 100644 index 000000000000..9e01d906ad4d --- /dev/null +++ b/usr.sbin/bhyve/aarch64/bhyve_machdep.h @@ -0,0 +1,12 @@ +/*- + * Copyright (c) 2025 Arm Ltd + * + * SPDX-License-Identifier: BSD-2-Clause +*/ + +#ifndef _BHYVE_MACHDEP_H_ +#define _BHYVE_MACHDEP_H_ + +extern cpuset_t running_cpumask; + +#endif /* _BHYVE_MACHDEP_H_ */ diff --git a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c index ffca4aa8c5a6..098454169272 100644 --- a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c +++ b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c @@ -41,6 +41,7 @@ #include +#include "bhyve_machdep.h" #include "bhyverun.h" #include "config.h" #include "debug.h" diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c index 2d350566675a..6b7f80e67a92 100644 --- a/usr.sbin/bhyve/aarch64/vmexit.c +++ b/usr.sbin/bhyve/aarch64/vmexit.c @@ -47,6 +47,7 @@ #include +#include "bhyve_machdep.h" #include "bhyverun.h" #include "config.h" #include "debug.h" From nobody Thu Aug 7 13:38:22 2025 X-Original-To: dev-commits-src-main@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 4bySsp6Y2cz64HYn; Thu, 07 Aug 2025 13:38: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bySsp4NRlz41Xv; Thu, 07 Aug 2025 13:38:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754573902; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5s1KSZ/RMDBKwHKFgiYtoTg7EmLR6tH40RTYdMWFfmQ=; b=Dig2jsZ3rHi7nN1BhxnRUuJ4JbojtkxjKVECw150i1qRCy3V3DqkbUQz/GvxLnMT8ocQ6e c536NFRbRsc+4QyQzoKhaha4MMhktuhyigNjr8ftHWfy65BVPvNBOlTOUR2OH2rw8Q8q35 LmuM/aAmAAzjMyM7sbEusOxdsM5+PVVJpI1nqPPd9UnZeGvApQ5qO+j3Vn7N3ivULBkXXr LCVIeb671nc6p0EY4Rr2J1JD7A6c0pJJSNKa+XpJ67j19k6d2DkDmWDDHCJhnZ4K1SiDB+ gZa+1OdCRhcyRKFk+MXq/cCYQbgk81YYkEPb46RLmp8p0v11PhJqsPp0ESPZNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754573902; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5s1KSZ/RMDBKwHKFgiYtoTg7EmLR6tH40RTYdMWFfmQ=; b=yvdcIOQ+T2yY/JyWnhcrUjNk4ZOkDqacjbuG2i/P/4k9XBXUgtn2DcGTC/sQEHJBDSjrLZ JxzFZvRJLVVM5EoLsJML1nQ1z+UOvQrnxAvtJESWJhj9JiMK/X0ctC2M4nlQeuhZ8BWL2l 7KWd8PostFOp3Y5atlwCZjpTSkHMeZeYdMVVx06aDYj/sO4BcYSfyuR7FXEfts8yLZL5/a WUjR0Px7mFjkGPspAKhflJI/7LMviUmasokT0tPKYJYe3fp5O7qT7h40cwv2HQFjNUGYRF qaMGmsRdzpX2Z/LpdjvWensq1m6SvcFfZLzBScQFuGeKtaI6jTuxN43+d1dg/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754573902; a=rsa-sha256; cv=none; b=RwGrzJnjbCdeJqsF7BrOFITAwdWg6VPG4GmBWggLjMixw/HCDmi58HQLdEZ/Rjhld/cuQ5 lMjQO+cLo8d+5NDYcDLcGzdBe1WPyPWlNccxMWeCTBVi7VWB3uk8UgTu4cRs7ZTqzpf4iz ufbRyYhJwIEyVt7fTLDm3hG/hCYXUKVaIeb8hNHlWIU0JZFoIhPu1rZN85V8CUi5n3M3sc VKueBiMRM0XHkElhvCdXCk6qO3T1YYB89gAQTXWbS+6M7J4FqJWqHLcHgOD1nZeWzIddVn zg7pgDqzqsorpUiotVajXh2xkVNVEHyIwypuBAM8K9vQRusZglZkQqmfQ49TBg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bySsp3nC5z17DY; Thu, 07 Aug 2025 13:38:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577DcM3I036446; Thu, 7 Aug 2025 13:38:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577DcMTi036443; Thu, 7 Aug 2025 13:38:22 GMT (envelope-from git) Date: Thu, 7 Aug 2025 13:38:22 GMT Message-Id: <202508071338.577DcMTi036443@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: a39277782140 - main - libc: Fix style nits in flushlbuf regression test List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: a39277782140d65abd792cf06694661a526464d0 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a39277782140d65abd792cf06694661a526464d0 commit a39277782140d65abd792cf06694661a526464d0 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 13:33:55 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 13:34:45 +0000 libc: Fix style nits in flushlbuf regression test Sponsored by: Klara, Inc. --- lib/libc/tests/stdio/flushlbuf_test.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/libc/tests/stdio/flushlbuf_test.c b/lib/libc/tests/stdio/flushlbuf_test.c index 11d9ea4ecc6c..3f8a6378f933 100644 --- a/lib/libc/tests/stdio/flushlbuf_test.c +++ b/lib/libc/tests/stdio/flushlbuf_test.c @@ -22,22 +22,23 @@ struct stream { unsigned int pos; }; -static int writefn(void *cookie, const char *buf, int len) +static int +writefn(void *cookie, const char *buf, int len) { struct stream *s = cookie; int written = 0; if (len <= 0) - return 0; + return (0); while (len > 0 && s->pos < s->len) { s->buf[s->pos++] = *buf++; written++; len--; } if (written > 0) - return written; + return (written); errno = EAGAIN; - return -1; + return (-1); } ATF_TC_WITHOUT_HEAD(flushlbuf_partial); @@ -147,7 +148,6 @@ ATF_TC_BODY(flushlbuf_full, tc) ATF_TP_ADD_TCS(tp) { - ATF_TP_ADD_TC(tp, flushlbuf_partial); ATF_TP_ADD_TC(tp, flushlbuf_full); From nobody Thu Aug 7 15:07:05 2025 X-Original-To: dev-commits-src-main@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 4byVr9398zz64Nfv; Thu, 07 Aug 2025 15:07:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byVr921whz3K5S; Thu, 07 Aug 2025 15:07:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754579225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lfrx57r/JHQZhXftkXfaARimKEpGv39EpdacVa+Txdw=; b=LeEwehETjpTL7jKrjheG/LQMjGlKfECTh05lNHNRbggGXUVRg3JOyNjZBeUuPGIdWKCBMA dhkxBorl4SsOwgSQwYCqTOqHrdjDHgpJYH1YM5J9jT1cy4pLTh4qpf9zaCtSVuE2WFWWf0 eh4afLCdPMchgS5wmEPYlJx12di39KvjuO9C90i6OfsPU3UQ1tavfCr7ojzzVfWGakweUR 3b8s+bWro8bTczDlZYt4l2OeRRpIECiZmd0X2ufshkLNf9XqeukKvFDzgXb5L4psSq7PyM Wo8D7WsWb4n4L3c5ZQYQ9tMWcc98aM2RZelXA/2/AFMaMaWo9X5qTX/S8Cl5GA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754579225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lfrx57r/JHQZhXftkXfaARimKEpGv39EpdacVa+Txdw=; b=bqnwO+a9A8PgV6X6JaohBe5kJDfr3kgcJ6CKO1AHHah6KcnqhYH02JojVgnndyRB8vzZfC chEIZb/j4Oxb7dEmQcCwcFqyYYJXBiQ4EhUzGt7bLGrBW3MQN7S8gNUbmwJb1AQNFuZ4o2 sPNYyXpVi2Yz11YNixFMA8sAkN70WcuzxtEFv/vRnxUdHacHEpX8GpBKN009h6SYt8oI0O b1GE8T8IcddJvexAXU9ZbAbqf3UKXZoIKrXYIs2TfwsbWX5eyUo5YaK6dZCVuEhtHOIJaH sKWFxMOwG+dONgPwOepr8cEgYbNxf/0lSB5kP/tNYDPPPdLnxOcy13mqm1l59A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754579225; a=rsa-sha256; cv=none; b=BqY7Kt5VqwmpNmlZR9X8qccUVRJtcebevlSO7XuTb9OxihiRsVhZldtRxA/bvtOctMNjrh iaViYjNxDog33ceE6abhWrHIYwbtSgnTdF9im0E1ELzUlRhtHhBABRjPLefiBiRgdYsb/v 2LblgzlVhpOmam3qc7a/2DR3ENonjootC8GV2HEeR5nfgYjio+/SfHz4rT6LaxrM4IO0y9 ti43aNMeouK/Z+VUhRigWNYLkd+FQFy4M4XQ5gHgVJ/ZrtG//2pSdksJJrMmW7w3h4WQMW jSZViYWkgW3Q7Is6Vj/ibkSEIhM2hlfYrnP7xocEleXFhgQ2YtBnYIIgR6RFTg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byVr91Z22z19mb; Thu, 07 Aug 2025 15:07:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577F75di006902; Thu, 7 Aug 2025 15:07:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577F75fg006899; Thu, 7 Aug 2025 15:07:05 GMT (envelope-from git) Date: Thu, 7 Aug 2025 15:07:05 GMT Message-Id: <202508071507.577F75fg006899@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Gallatin Subject: git: c224b2ce7de0 - main - iflib: don't pullup UDP payloads to the TCP header size List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gallatin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c224b2ce7de0faa28ea87edf6e74de0e4e9d33f9 Auto-Submitted: auto-generated The branch main has been updated by gallatin: URL: https://cgit.FreeBSD.org/src/commit/?id=c224b2ce7de0faa28ea87edf6e74de0e4e9d33f9 commit c224b2ce7de0faa28ea87edf6e74de0e4e9d33f9 Author: Andrew Gallatin AuthorDate: 2025-08-07 14:48:45 +0000 Commit: Andrew Gallatin CommitDate: 2025-08-07 14:55:16 +0000 iflib: don't pullup UDP payloads to the TCP header size The IPv4 packet parsing logic in iflib is incredibly complex, prematurely optimized, and believes all the world is TCP. This causes it to pullup part of the UDP payload into the packet header, causing unneeded memory copies. This impacts a project I'm working on, and also impacts nearly any kernel user of UDP, like NFS. Eg, NFS over UDP will result in pullups for every datagram sent over an iflib NIC. This patch: - adds parsing for UDP to iflib - attempts to pull up the correct header size, based on UDP or TCP protocol type. - simplifies packet parsing in iflib by - no longer special casing having an ethernet header in a packet by itself - no longer checking that we're trying to pullup something beyond the end of the packet. Since we're no longer trying to pull up a larger TCP header, attempting to pullup something larger than the packet should no longer happen. If it does, the packet is malformed and m_pullup will return an error when it runs out of data in the mbuf chain Reviewed by: erj, glebius, kbowling Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D51748 --- sys/net/iflib.c | 63 ++++++++++++++++++++------------------------------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 2b8f0e617df3..2eca81d54f99 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -70,6 +70,7 @@ #include #include #include +#include #include #include @@ -3372,42 +3373,28 @@ iflib_parse_header(iflib_txq_t txq, if_pkt_info_t pi, struct mbuf **mp) #ifdef INET case ETHERTYPE_IP: { - struct mbuf *n; - struct ip *ip = NULL; - struct tcphdr *th = NULL; - int minthlen; + struct ip *ip; + struct tcphdr *th; + uint8_t hlen; - minthlen = min(m->m_pkthdr.len, pi->ipi_ehdrlen + sizeof(*ip) + sizeof(*th)); - if (__predict_false(m->m_len < minthlen)) { - /* - * if this code bloat is causing too much of a hit - * move it to a separate function and mark it noinline - */ - if (m->m_len == pi->ipi_ehdrlen) { - n = m->m_next; - MPASS(n); - if (n->m_len >= sizeof(*ip)) { - ip = (struct ip *)n->m_data; - if (n->m_len >= (ip->ip_hl << 2) + sizeof(*th)) - th = (struct tcphdr *)((caddr_t)ip + (ip->ip_hl << 2)); - } else { - txq->ift_pullups++; - if (__predict_false((m = m_pullup(m, minthlen)) == NULL)) - return (ENOMEM); - ip = (struct ip *)(m->m_data + pi->ipi_ehdrlen); - } - } else { - txq->ift_pullups++; - if (__predict_false((m = m_pullup(m, minthlen)) == NULL)) - return (ENOMEM); - ip = (struct ip *)(m->m_data + pi->ipi_ehdrlen); - if (m->m_len >= (ip->ip_hl << 2) + sizeof(*th)) - th = (struct tcphdr *)((caddr_t)ip + (ip->ip_hl << 2)); - } - } else { - ip = (struct ip *)(m->m_data + pi->ipi_ehdrlen); - if (m->m_len >= (ip->ip_hl << 2) + sizeof(*th)) - th = (struct tcphdr *)((caddr_t)ip + (ip->ip_hl << 2)); + hlen = pi->ipi_ehdrlen + sizeof(*ip); + if (__predict_false(m->m_len < hlen)) { + txq->ift_pullups++; + if (__predict_false((m = m_pullup(m, hlen)) == NULL)) + return (ENOMEM); + } + ip = (struct ip *)(m->m_data + pi->ipi_ehdrlen); + hlen = pi->ipi_ehdrlen + (ip->ip_hl << 2); + if (ip->ip_p == IPPROTO_TCP) { + hlen += sizeof(*th); + th = (struct tcphdr *)((char *)ip + (ip->ip_hl << 2)); + } else if (ip->ip_p == IPPROTO_UDP) { + hlen += sizeof(struct udphdr); + } + if (__predict_false(m->m_len < hlen)) { + txq->ift_pullups++; + if ((m = m_pullup(m, hlen)) == NULL) + return (ENOMEM); } pi->ipi_ip_hlen = ip->ip_hl << 2; pi->ipi_ipproto = ip->ip_p; @@ -3417,12 +3404,6 @@ iflib_parse_header(iflib_txq_t txq, if_pkt_info_t pi, struct mbuf **mp) /* TCP checksum offload may require TCP header length */ if (IS_TX_OFFLOAD4(pi)) { if (__predict_true(pi->ipi_ipproto == IPPROTO_TCP)) { - if (__predict_false(th == NULL)) { - txq->ift_pullups++; - if (__predict_false((m = m_pullup(m, (ip->ip_hl << 2) + sizeof(*th))) == NULL)) - return (ENOMEM); - th = (struct tcphdr *)((caddr_t)ip + pi->ipi_ip_hlen); - } pi->ipi_tcp_hflags = tcp_get_flags(th); pi->ipi_tcp_hlen = th->th_off << 2; pi->ipi_tcp_seq = th->th_seq; From nobody Thu Aug 7 15:46:30 2025 X-Original-To: dev-commits-src-main@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 4byWjf3MbLz64QJm; Thu, 07 Aug 2025 15:46:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byWjf20Kqz3Plf; Thu, 07 Aug 2025 15: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=1754581590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ROfPTHTwFs7rNbYcxKechVhKzaGUyFjxLsFBlqH02NE=; b=d7kwheD95CDxu8E0l0p7OffClCvZ3uhMyp4S/zOK+swiWU3Xl9WpZtLGBK++5HieGQOfWW 0iK5v4hFR0PPPh3VIUoZmv6iTa5E914uuh9awvFGsgLO6pVQj+N5L6zH3XJRtAyuBJ2ShV F7BkBjKOgQyJ0MWFbPVCaFIJqeoTSIzeD8Q3OkTGNu6Ob3lRceeDeM+/VqEu9nl27LqFVC YYKv6up5DaA/KCwW5DfAtymlq9N6Vedj6JkS1Tg3yq+63WcPOomaG8aAAQPhzePvS0cVQa MoJ2TAF0smLIWO38KWqaZfHB0VT92Sh6tyaxXzFRjvF5NokcZoK2BkBwE/kM0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754581590; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ROfPTHTwFs7rNbYcxKechVhKzaGUyFjxLsFBlqH02NE=; b=JsjFGadpAb3fbF3PGwab1cBI6/gfbThNIX/lz1qMn+4LBPGn7kYZqXpLNhmyCULFWhvgzJ KmAkhij4/VheUsv93CR0T0nDUNwSkYiDOVpAYwGEZq3ISyVqJWfCh83HepDqq5eV8wE3NV 3HE4W3EhEUrmpHztHVzmq6kw1slApvK11Zx/Z47zaJZqJO2PixWF/PZkPusPRek26nG+sI gakkovggDwIOs5kz0x9evQqVvXPIL5509sWxEMzlfisMjYYIAkvO7PVkFjsA3zmlnWFwf1 C2f0cVqKw1Eb5bshcizPz+IKWOuPt1Dkr2LVQs7iJncGZ5cps0OB6BTgFbM1KQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754581590; a=rsa-sha256; cv=none; b=HjNzDeCJggtpH3qDjvQxYPreOfKy5UQLoo9OT7icLoDRml2h/3Gy93017wB9C7pwuAecM4 N/RpluyvxYMlV69txEkkfhhDG6KVd0ZmZUG9CZe7rUz419GfTjKp+ir9Yb3nOMEK+72AXw Zj9gMaDDkLjDX3NQhH/+DzUSJbqJ6jRtyW2z/z0IIJy+UME1BrP9QzOXkq7OnJN8RloGQG sjYP8bNgo5o+2xKpX/seuQMBztcjt+riP1oLFebrIl9+dUo0qBklK2a6yZV+JFzFWzcfsG 8Ss5jKl8BJdWy7cxTT5lZUmnmrWZfbG1vyiYz4CWoFIGgWdFbDj0+9wlK7ZgBg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byWjf1FPyz1BBZ; Thu, 07 Aug 2025 15:46:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577FkU9t081820; Thu, 7 Aug 2025 15:46:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577FkU59081817; Thu, 7 Aug 2025 15:46:30 GMT (envelope-from git) Date: Thu, 7 Aug 2025 15:46:30 GMT Message-Id: <202508071546.577FkU59081817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: ab43dbe0187e - main - kern: fix incorrect format in device_if.m List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: ab43dbe0187ecdf1697726170fd4e19c373effcc Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=ab43dbe0187ecdf1697726170fd4e19c373effcc commit ab43dbe0187ecdf1697726170fd4e19c373effcc Author: ShengYi Hung AuthorDate: 2025-08-06 09:16:58 +0000 Commit: ShengYi Hung CommitDate: 2025-08-07 15:46:03 +0000 kern: fix incorrect format in device_if.m This is not a functional change; it only updates formatting to follow the style(9) coding guidelines. Approved by: markj (mentor), lwhsu (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51755 --- sys/kern/device_if.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/kern/device_if.m b/sys/kern/device_if.m index c02e5a46f326..ed94b2ccbe1b 100644 --- a/sys/kern/device_if.m +++ b/sys/kern/device_if.m @@ -49,25 +49,25 @@ HEADER { CODE { static int null_shutdown(device_t dev) { - return 0; + return (0); } static int null_suspend(device_t dev) { - return 0; + return (0); } static int null_resume(device_t dev) { - return 0; + return (0); } static int null_quiesce(device_t dev) { - return 0; + return (0); } - static void * null_register(device_t dev) + static void *null_register(device_t dev) { return NULL; } From nobody Thu Aug 7 15:49:21 2025 X-Original-To: dev-commits-src-main@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 4byWnC4Z4Hz64QlY for ; Thu, 07 Aug 2025 15:49:35 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byWnC2HJtz3QS6 for ; Thu, 07 Aug 2025 15:49:35 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-451d41e1ad1so7887685e9.1 for ; Thu, 07 Aug 2025 08:49:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754581773; x=1755186573; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=COB82LF9TR+kQRlj5bN3bII5UecoXRfKAMtQqK5/qxc=; b=PapF5LjPTKoazBmJyqwOZwCTWmmRbT4AwbGBRM8pS3MJMDC82Yp2YuwWxqDOQV+EE9 bxrSdudX2dlXwni0mRJrNDCy2ba6NIUhHl6vMTP4j7w1Yrxa+tPW/ggcQ+MrB8dawQmj MazsxozH2ow4O1kpzGpKx0QUiU3IrARmvWAnZEgK+l/lu5ei/skjsDOQwOTjfQAVfsMO RCZO+crBAVnfh2MnCAj9YT7hXAH5ftEwTQUa+ADxq/BOOIoDnIYi0HQC6PQ9aZqwYIhX RXZIcYqGBj4Yp2auSvgup5FjrArZzUsC+wb3kdxCMkBT2pWQAbLhMpl7c3HeAplsjN56 BaBQ== X-Forwarded-Encrypted: i=1; AJvYcCXMGEiG8VFUcaXD7c5KWsHkF14x4OfVLPZi4I3mmiOJKALB6vlPa6mIj7TQHKPec0+eZW5M91kauPr965DJNMDpc/xqTQ==@freebsd.org X-Gm-Message-State: AOJu0Yxf++fHwhYxRIAuexsKEH88577xY2zaOMcLdLQjkvmsQFOFnKzt mEqQAs33Akx8MBwlnitZh/qIXj5StxoSX5QNhkoFqTLMMqz8it0vp/o5psG8o/gZWmNkUj2+jep YKu0P X-Gm-Gg: ASbGncsBu5mMrhiziTslc7+A/wl7zHSxwU6O0RNVPRgK2vngesTvHqOPu4tFisMz9gh y7NvD+qI6UJgRxC6Vf8Whsyn2lA1ijUP4D1qkBGliSxC6OZyaZYz1EiIlWgY1dJouZjqGI5w4e9 qWfztfBLRhTFQORnhonVIRor47TVRKo+NddDHYzHrWXKkCqg/bk4A0PYEmw7eGDdy7gr2bSqbrV slhExW6zRvjBEmuYKBBIFySM2h7lcJu8smskVvlPNg6XhwhWTjTuz1C1Q6ojRA4KFFZBe9pcpR9 I1XY5IoD1eFylle+53r9NoaPi/9LSL2E6qfqZPtp8hNp6EcAgZvwj40R/xf7Z+BcYpf9uIS3Io6 xgqZqhVSynM8GlFx4+/lH2Bh5HfBPkZeGWzXIP6+MKaPlJL93v/xpmZQdBBSqT5tKtDNCaJg= X-Google-Smtp-Source: AGHT+IGpSdGkRum3yGC2oB0PNQdq/6Do9uR3IqI7LZwbI1aOEiqbzG9+XWBdL5fZrE3oBJi+/jMQYg== X-Received: by 2002:a05:600c:310f:b0:456:eb9:5236 with SMTP id 5b1f17b1804b1-459f437598bmr2015625e9.15.1754581773003; Thu, 07 Aug 2025 08:49:33 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-458b8aab8c0sm231383235e9.19.2025.08.07.08.49.32 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Aug 2025 08:49:32 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 4ffb9ea88f40 - main - .git-blame-ignore-revs: device_if.m style(9) tweaks From: Jessica Clarke In-Reply-To: <202508071546.577FkVe9081853@gitrepo.freebsd.org> Date: Thu, 7 Aug 2025 16:49:21 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: <0E6FA4E4-460A-4190-BE31-99994EBE0C5F@freebsd.org> References: <202508071546.577FkVe9081853@gitrepo.freebsd.org> To: ShengYi Hung X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4byWnC2HJtz3QS6 X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 7 Aug 2025, at 16:46, ShengYi Hung wrote: >=20 > The branch main has been updated by aokblast: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D4ffb9ea88f40cd766b998e7aec86ed02= 74abbde5 >=20 > commit 4ffb9ea88f40cd766b998e7aec86ed0274abbde5 > Author: ShengYi Hung > AuthorDate: 2025-08-07 15:42:32 +0000 > Commit: ShengYi Hung > CommitDate: 2025-08-07 15:46:03 +0000 >=20 > .git-blame-ignore-revs: device_if.m style(9) tweaks > --- > .git-blame-ignore-revs | 2 ++ > 1 file changed, 2 insertions(+) >=20 > diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs > index 407304c5a675..7a9dcddefdc1 100644 > --- a/.git-blame-ignore-revs > +++ b/.git-blame-ignore-revs > @@ -8,6 +8,8 @@ > # > # This file is sorted in git log order (newest commits first). >=20 > +# style fixes for device_if.m > +715aa464bcd5ff972947f39a58341af6eab8c902 I assume you mean ab43dbe0187e? Presumably you rebased and forgot to update it? Jessica > # iflib style tweaks > 721e783a2a3316826f92fb44c931e28163118b3f > # queue(3) single space after all #define From nobody Thu Aug 7 16:03:14 2025 X-Original-To: dev-commits-src-main@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 4byX4y6dXfz64RpM; Thu, 07 Aug 2025 16:03: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byX4y5D8nz3RbT; Thu, 07 Aug 2025 16:03:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754582594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H2Q7JNSLvx8ApFf8cl/0L4evY3OOGK2mFILzQ9VfcVk=; b=lgbpSiLSZ+sNWYObQB49AHrocA6+DDOBh+9snpEBMyYipNVNhfQUWxTselSYxjpncZoQyO u/+g4MjncSB8wgBIOx0uciNFk2S5Gppp3l9Ywfoa3lE3CPBfLnEn11eI1bYz/V6jYxLG37 bxyALXfAijCPqIka3+399d9FQ5Fa4ChdSCc//Fxfk1Sm/c+KkrPBzP6vr/mPcUzzurlxkF HemjXwqG+LThBd0FYb1hHdGmyCDTsRDHzoPXt4Eat3wBQTXX1oQEVU3JLEVI7+HIhH+ea6 cbL20E4lArXcGAXcmao4t+Rvkz6H4kJxjwJEWLNfvlUisJ3N4xkQYdpLM06bAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754582594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H2Q7JNSLvx8ApFf8cl/0L4evY3OOGK2mFILzQ9VfcVk=; b=dHTT2QeOuvq/1D7Hbr81eq1qaqjAYvfry5S85/WFVCB/zFskcJmOb9qdvuj6IZutYnd56l rKPKGcHxidfizaEcK3TtiZeV3eHZMY+jtWgMmyOQbmB54AqwtCHrxmjkaqmNvIbdrl9B6c lopH7H8oYJSBtM5YWD9MkwYOln5Ivq8fuw37l7KP3fpRd4i5zAzcBOqlPiS+Va3TPAXCvX O8JhmUm05xREhSu+XZL+QwpjT17icI+Lx0w9KT1A0XTM9WxwgJfIF1WJojfYd7SLeZ7e5W QP0N17SyxtPgQtBUzTd2n9lP34Y5jFbL+qeircRDKq9Xdoc/bXKxyvyj5HZH4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754582594; a=rsa-sha256; cv=none; b=IOWkitysWAGK7Md1gU2/qWSRVM19ojtA4/H39PPPSvSNOEPly8IGO911omkoLpaJD5iSMF fx3GyiFnqigtoH9k/NKBK70ftlilczntOVI82g5zHe7C4JV7DNV4HrcwDxjz2xZlECgrxk RJnJAGnPq8wpT54D3GyzZFOdxwp/j0O35SO7RbLBv7pVxKzzt1GFmFJtOLqsezcmuG8wb8 1k1ND89k60COolnS6Y6PNjPqUNEO/D9X7FBNHMkJcshNk//XnoigLgU9qHPOmpvOhAvWp4 c4jAqLEOedpRToiZr6S6Jlq1aXenXJsjs69j1TJioAanSnlLYd/Pk3fYA/GDhA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byX4y4qhfz1C00; Thu, 07 Aug 2025 16:03:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577G3Eod019019; Thu, 7 Aug 2025 16:03:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577G3EgS019016; Thu, 7 Aug 2025 16:03:14 GMT (envelope-from git) Date: Thu, 7 Aug 2025 16:03:14 GMT Message-Id: <202508071603.577G3EgS019016@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: eb124b8b285d - main - Fix: replace incorrect commit hash in .git-blame-ignore-revs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: eb124b8b285da84b3000e12deb440ded7cafeaa2 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=eb124b8b285da84b3000e12deb440ded7cafeaa2 commit eb124b8b285da84b3000e12deb440ded7cafeaa2 Author: ShengYi Hung AuthorDate: 2025-08-07 16:01:17 +0000 Commit: ShengYi Hung CommitDate: 2025-08-07 16:01:17 +0000 Fix: replace incorrect commit hash in .git-blame-ignore-revs Reported by: jrtc27 --- .git-blame-ignore-revs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 7a9dcddefdc1..31b6fb8eb33f 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -9,7 +9,7 @@ # This file is sorted in git log order (newest commits first). # style fixes for device_if.m -715aa464bcd5ff972947f39a58341af6eab8c902 +ab43dbe0187ecdf1697726170fd4e19c373effcc # iflib style tweaks 721e783a2a3316826f92fb44c931e28163118b3f # queue(3) single space after all #define From nobody Thu Aug 7 16:11:52 2025 X-Original-To: dev-commits-src-main@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 4byXH43TF0z64SFt; Thu, 07 Aug 2025 16:12:00 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byXH42hgLz3Skv; Thu, 07 Aug 2025 16:12:00 +0000 (UTC) (envelope-from aokblast@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754583120; 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: in-reply-to:in-reply-to:references:references; bh=Tr4xWYEoJ9NssG8epmVvrtxKKa0vVAwqYdd/nHH7Uh0=; b=L9Z1eGO7mctJFyqiwLTmV/9dObruEiy0OC63ZnBlxU+/26PQcCOM4z8aBGg93ixn9Wsm1w TRgGXQjPfHEnl27sKoauY1itmxi8ncrFghJ4btbDpH7tQ0xTkviVTg9aZ0yfnRjQ7gPpJA c3PLh82FG1YsgbTsqu0LPio/u5t2w/reXhHxlJdvoTkM1KkriOpEDQilfOR6qtSdp0ocxt LHp0vHbruXwlSnplO9F/lzzy0hrS281dU1ph5iNgNKh+t2qVn/rnQV4GIxbOl86vHNp1hV C6FLKDEfYhOFlvDa36iPnCbzLBkHRFT+Ysp/cBPhQIEC0e7Vemp3IJeKxZDy0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754583120; 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: in-reply-to:in-reply-to:references:references; bh=Tr4xWYEoJ9NssG8epmVvrtxKKa0vVAwqYdd/nHH7Uh0=; b=VjpQZCdLMz9ONE6GeMTnXR9F3MNiXu843vxKAmaflXmFH/vQfLKcOfd6TFHIVEkZrOoWuU URtQYmHN/KAcTF5M3nALjwMYDbg4NBiX07Epk0z/zZM/RQr77pnWosLLtGKK7VNACOnPff 9iNW4Rzg+3HDK+UprWD26Ga+yI1Z09qxqtJK0G/vIsrQnbu5oSjmGmgLswpfPb9r0Fe4Gr esr8NbGXWR/KWHXuAH7j2Lc5hUQ63i+0JefqVdZPCgfiBcmvoVzMv6/R5B/4nm8UP78rXK 7IPG2zn+Q/aRkbFCxSXQ1Rno4AnHvYQwy5/qEDRLijTXkFF49+bjHEP+1OuaGQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754583120; a=rsa-sha256; cv=none; b=fZzip1/AwK6OmLce82jQMSfjMdGnUPEwJ28gLW3fYLEMyk0sMiT0tKcm5xORC8lrL0TUbT LDT30BBLMofW3UpEmsay5OicItGGOkr4B75iACkhgwrXs4+w5IxpcnUCIZ5oUgjaJ7JLMk A5JXKEQJXsJVywGXxgdeDjWx7W5FFbxXIp0Q7ElIf6+3bEJu/wrIQnbSpL+WRGizhWxErx zVQR4u8LcMu8LyetVKfJlPQToYHuqyvt6rVjb+81ZSEsThSFXLxnG3UMgEGyh8hE/LNyM4 JoVfgpLslmWyCn8vC9PA/1wB6cfdVtURPi3x+oBZaTlRxSv32wxY6jItHgTZwg== Received: from aokblastdeMacBook-Pro.local (2001-b011-3808-b480-d5e2-798f-200b-04ab.dynamic-ip6.hinet.net [IPv6:2001:b011:3808:b480:d5e2:798f:200b:4ab]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) 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 4byXH22qlvz13r4; Thu, 07 Aug 2025 16:11:57 +0000 (UTC) (envelope-from aokblast@freebsd.org) From: ShengYi Hung To: Jessica Clarke Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Subject: Re: git: 4ffb9ea88f40 - main - .git-blame-ignore-revs: device_if.m style(9) tweaks In-Reply-To: <0E6FA4E4-460A-4190-BE31-99994EBE0C5F@freebsd.org> (Jessica Clarke's message of "Thu, 7 Aug 2025 16:49:21 +0100") References: <202508071546.577FkVe9081853@gitrepo.freebsd.org> <0E6FA4E4-460A-4190-BE31-99994EBE0C5F@freebsd.org> User-Agent: mu4e 1.12.12; emacs 30.1 Date: Fri, 08 Aug 2025 00:11:52 +0800 Message-ID: List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain I have 2 repos for FreeBSD base. One is from my github mirror. Another is for push to CURRENT. The usual way I push is to git format-patch from my mirror repo and git am to CURRENT repo then push it. I forget this would change the commit hash. Thanks for your kind reminder! I just fix it. Jessica Clarke writes: > On 7 Aug 2025, at 16:46, ShengYi Hung wrote: >> >> The branch main has been updated by aokblast: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=4ffb9ea88f40cd766b998e7aec86ed0274abbde5 >> >> commit 4ffb9ea88f40cd766b998e7aec86ed0274abbde5 >> Author: ShengYi Hung >> AuthorDate: 2025-08-07 15:42:32 +0000 >> Commit: ShengYi Hung >> CommitDate: 2025-08-07 15:46:03 +0000 >> >> .git-blame-ignore-revs: device_if.m style(9) tweaks >> --- >> .git-blame-ignore-revs | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs >> index 407304c5a675..7a9dcddefdc1 100644 >> --- a/.git-blame-ignore-revs >> +++ b/.git-blame-ignore-revs >> @@ -8,6 +8,8 @@ >> # >> # This file is sorted in git log order (newest commits first). >> >> +# style fixes for device_if.m >> +715aa464bcd5ff972947f39a58341af6eab8c902 > > I assume you mean ab43dbe0187e? Presumably you rebased and forgot to > update it? > > Jessica > >> # iflib style tweaks >> 721e783a2a3316826f92fb44c931e28163118b3f >> # queue(3) single space after all #define -- Best Regards. ShengYi Hung. From nobody Thu Aug 7 16:18:40 2025 X-Original-To: dev-commits-src-main@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 4byXQm2QLtz64SLS; Thu, 07 Aug 2025 16:18:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byXQm1rf2z3THm; Thu, 07 Aug 2025 16:18:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754583520; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JamCj6+a8E6QVJfUr49q683+8AtFR4SNy0etIb4fowg=; b=SmnQ5Zu/C5R2TFVxLiPmnks0YPedbjGHIVaDZrY1VA4plNZAsW0VLBuyzBhOpKf+3XTJuQ GJclJt51hH/rkNdOll+Z4yQZ9Nh6jzk3DmM7JE09ZpwLJDkLia+WOCgA3K5ynTD0zTYHX+ EmHhHcMjKSwxqfQ8LQERHQJ9m8Ig1O9nHDIUta/9sqDw+AFDjo0KKL78BqL5SjDxPGOGgd WNeIXIk42XqgOe5SuXkXB6spFhRIJCR9XtdGEnebXpd/HJ2JIaYkXU4xnksXBL7N7Ahjn4 Ak2PRQQxMREx7eb13IXJ9fd/+0VLSJK44A7OhJ6K9Wucp1Z6y+12WhW2jaeRKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754583520; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JamCj6+a8E6QVJfUr49q683+8AtFR4SNy0etIb4fowg=; b=lC6jNEblAq+HVyCMPTV3TPwMZb5AUPjaXFhNg9h84tFRpaf4nXQ4Tc8bcqogDujNAY5xMs mrHnykoHwT8M+4YN2tNlMH1CiYOiM9yzxsBQj+yZIn669PmeJcelxkLzfMfasUIf4Ng0oz 3Hy1zDtWH8N9fj6VsDXfd0oMfXsI2JHdgnAibzdAfkhDdJAPOCbHgEAa2lz9Xz81sipXV/ K6L6ae2AFcUo4fPKlYISvjy+rz4UeplkZmcVsT9HDGQmQ/BDqCj5Twy0XbVI2plL+FRQwD Jz2sdxjzYrtIXLc6JpwUPMX7M6BrOzJfP2btT5cW9e+/apfbzZod17wQ2lkEOA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754583520; a=rsa-sha256; cv=none; b=NiOUGm+y1GwTuzFhvxRvuL7QKp1f5Ssrwdcv2HpRu61OSN7cC66J39W/SGksN/0Q1Kwv/J SmiZx8DSlsFel7dH1mj0o3uNewAulBQhJGdnxpeHuO29F4t5Y5PDKTm8e40OrGHlk6iE7A K56sEfMovG21ATektZhP4GUpsr8RsUGTSzda86/wT8NsRf0bQGaxa1fbJ0r1E1B6HHqEsU abBdccaPVyMUcRXpB3qy8wTBu1QviwPATsrS/t2ItTZ/qMO6eBaasGAV7tU2GPPgN3Ld0k SM9C+P42nNSFSamGdXhVHW/2k0M7pkhU7MKO22oh7zfmkEL5Hdob52t1Wwjw1A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byXQm1PRmz1C9V; Thu, 07 Aug 2025 16:18:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577GIejk039099; Thu, 7 Aug 2025 16:18:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577GIeH0039096; Thu, 7 Aug 2025 16:18:40 GMT (envelope-from git) Date: Thu, 7 Aug 2025 16:18:40 GMT Message-Id: <202508071618.577GIeH0039096@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: eb027d66489b - main - bsd.man.mk: Handle manual pages with colons for the manlint target List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: eb027d66489b9a0e6c3b51455e61ac26c1dce497 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=eb027d66489b9a0e6c3b51455e61ac26c1dce497 commit eb027d66489b9a0e6c3b51455e61ac26c1dce497 Author: John Baldwin AuthorDate: 2025-08-07 16:18:05 +0000 Commit: John Baldwin CommitDate: 2025-08-07 16:18:05 +0000 bsd.man.mk: Handle manual pages with colons for the manlint target Fixes: ec1656181790 ("bsd.man.mk: Support manual pages with colons in the filename") Sponsored by: Chelsio Communications --- share/mk/bsd.man.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk index b21522796845..f44048b4e453 100644 --- a/share/mk/bsd.man.mk +++ b/share/mk/bsd.man.mk @@ -291,8 +291,8 @@ manlinksinstall-${__group}: manlint: .if defined(${__group}) && !empty(${__group}) .for __page in ${${__group}} -manlint: ${__page}lint -${__page}lint: ${__page} +manlint: ${__page:S/:/\:/g}lint +${__page:S/:/\:/g}lint: ${__page} .if defined(MANFILTER) ${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} -Tlint .else From nobody Thu Aug 7 16:42:41 2025 X-Original-To: dev-commits-src-main@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 4byXyT2V9Dz64Th1; Thu, 07 Aug 2025 16:42:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byXyT1Zs3z3WHs; Thu, 07 Aug 2025 16:42:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754584961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SPeFBrGw0ir1ZVGzhF3tsGDfTGbj9gJToueSYGrvUwU=; b=k/zb6S7ZWz5mNJPDeViSLVm9vAgxF3ngL9RBYZ3pc25ZpQh3J+KapdmxY2KCEX4LA8+BgX Q/kfdnPOCIpboP340p0hVatJ07lyJs1CWJQ24WLO7/keNVRLiseVVubnxD5AbxnunX/F8U 4G8hjBLL11W//MsmdM2Ll2NR40HfGB9sq7yEcRFqTbmjewFu3Uo5+z1ypCYJ4TgYoqTOaX 4BFbFV6+JNk8wJNTCcd+44yWIv07X0O8h8Lmsv/pyBp62d/SeE4rNA9L7HY8Nbt1SCqmpe H546RT+vaFlYkKnmnBTPWBzY6OlB9x8tpPfRakws9MWO8GHZs1ZGZ3RRtEFrRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754584961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SPeFBrGw0ir1ZVGzhF3tsGDfTGbj9gJToueSYGrvUwU=; b=ROJgNnJjmyt3kUNOhYWqwF/8k/rF+KTopYNRsoNQBDvIXhHJxVti3B0HSpZTo9V7LiIyNM akmdoP+ONzgpWWIJ+YA11QNWE4HAgiRwjbzutf9a9SwrxWls/Z61mzdotzVp89zYu2mb8F 1kdvlnHmVIecUnSBE8/TSc4Zk51ue3TQmHPTze+ha51qP5mvXR0LslLgjQhSxsXUYDH01E ZLnXRwK3kDqX67LT5hZdh1ZYQi7D9WIysU/V2E7eMW1H9nJ3AAr0Xzc0ALeu1kBzIOtQiE aKF6Q41etXUIScpIO7Vwu34VJCyouSuuf312UwnZaohI3CW3Mb8jpt2QOEqEXQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754584961; a=rsa-sha256; cv=none; b=g1YLvQGde3qlITiV7u48M9f/Xdpj6KTOVzJXg+/Do6VBKeerjxsau5eI2TtiGIHsqnTwEq TluvMT+O6PdUkOSv3sueUAwmoP5/LkfkyWUussikAfUxv7aPVNd/w+EX3UrhF3O9yOmKYm 8sXNEyTRiosxoZK8Bt0PasDpXczkCZIn6/3wg7JMiBNfgBuldQeyPtoV8adCJMplF9wlrQ oAICev4gwenJZvIKVf2bHs8Yjr77qbC2FfDDgbDWO1/nQQg0WvTwX0JrTV3UN1AS5/Dyyn aIMhVFXkgpywqL5j0/0iOZogvIPbVMpMoTUr2glMEgbn0U4o9wpko6pAjmHL8w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byXyT0vrHz1DHG; Thu, 07 Aug 2025 16:42:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577Ggf4w093876; Thu, 7 Aug 2025 16:42:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577GgfDN093873; Thu, 7 Aug 2025 16:42:41 GMT (envelope-from git) Date: Thu, 7 Aug 2025 16:42:41 GMT Message-Id: <202508071642.577GgfDN093873@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 642c0334f50a - main - bhyve/arm64: Implement PSCI_FNID_CPU_OFF List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 642c0334f50a089aa0c3a58b0994f35afc638833 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=642c0334f50a089aa0c3a58b0994f35afc638833 commit 642c0334f50a089aa0c3a58b0994f35afc638833 Author: Andrew Turner AuthorDate: 2025-08-07 11:18:43 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 11:30:59 +0000 bhyve/arm64: Implement PSCI_FNID_CPU_OFF Support PSCI CPU_OFF by suspending the CPU and removing it from the running CPU set. Reviewed by: markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51768 --- usr.sbin/bhyve/aarch64/vmexit.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c index e6dd4b074d39..3acad4020a3c 100644 --- a/usr.sbin/bhyve/aarch64/vmexit.c +++ b/usr.sbin/bhyve/aarch64/vmexit.c @@ -202,7 +202,10 @@ vmexit_smccc(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun) smccc_rv = PSCI_VER(1, 0); break; case PSCI_FNID_CPU_SUSPEND: + break; case PSCI_FNID_CPU_OFF: + CPU_CLR_ATOMIC(vcpu_id(vcpu), &running_cpumask); + vm_suspend_cpu(vcpu); break; case PSCI_FNID_CPU_ON: mpidr = vme->u.smccc_call.args[0]; From nobody Thu Aug 7 16:42:38 2025 X-Original-To: dev-commits-src-main@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 4byXyR0TW5z64TMc; Thu, 07 Aug 2025 16:42:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byXyQ6c8gz3WgQ; Thu, 07 Aug 2025 16:42:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754584958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bi/7UNglIS1P1X4gRdYX0OzdhZJtWZTAyU15OGKkI7M=; b=a2WJ8thElcIVoWK7UtqKaJDkpdxfoB22eqsSptTwsmRuXYfp+vFXJIdg6TFLyeOtM27jS9 B0U/m/TJda1qWA0F7uEVofRIk68DVou33LVinMiG94j7RuE/riQyt3AxdEp5sEvfK6+1Mx nclUZbKRNPvSmehg2FsCV/HKoGx/PP+olnTJcjSZBkMD7g+pGn5hkVRLRaZUQ1XrfloZHO C/LvAuRibDAAKGpsllnCUunJKyAtAP/XjFdezsOgilOURsx638Cvx/FdDY2Bq2SzJqzDhf L3AuDb9WkY9AjDpnsuJe4kMWv5mCDcoAhqmmZvWk9St71CqCC+IthaYE++3cRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754584958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bi/7UNglIS1P1X4gRdYX0OzdhZJtWZTAyU15OGKkI7M=; b=R55ivjEYZEOoilA9SBpqRH1XgMWXkEoEiTqg6Bc8X0Qa7OSfRDvOM8hkcvSVbnjpu9dRoM IwTXWQmnRaVXCF5dPdAdmZhx7RDcduTvF8LU1xeiI116YCdplnh/nPOIOGcMmhTPzKs+Aa Of81xHBKBh7xjK9F0ljWWcRcOIaaITpscdIqYMRJ6IkzR8oTgpyXH7epLPdnJJMvlBiUHv YgkNEqfSrD/lsm/VhSrdJuKmtrkXmpVa2VWFwoqP3aUjnuWeGLKAJZb1hnGdlts55oYzKa rpePfsT+loVXj3QrECk4qJ/mnhAjJMeVBKOJrrFzGVl608sL1EeE4tFm1O8skw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754584958; a=rsa-sha256; cv=none; b=sRCL2myYkydcfByDTeEzfqersBhqL/BM8XqBcO8XDhr5Q25YPFrSlh4fAycJUqR0qXUBCi Yap9UwsymMkc01OG8CAllhBFbBozoxZdNSxq3PD9u2R1ADAx1smFwgDLZqpK9frYOH41C9 gaKu1LV7wT09EUKT5jK17RFEMm4VE4I2kBsU/g4cQwjEgimRdqV9ULcG5WjYqDeKWTMNWj UNtVg32SgOyWg4CpU1K29YVaewaXyFbSYhy0pKhN+c1KGWiH2MnFmlIwUUXRfC1NdRDTiy OTiQU6lj9pVPbj2EBjiCJsIe+2Y0QxrmqtCBbPqL0qmnoX8Hx+i2U/+xYMyOBQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byXyQ6Bswz1DHF; Thu, 07 Aug 2025 16:42:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577Ggcl6093806; Thu, 7 Aug 2025 16:42:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577Ggcfb093803; Thu, 7 Aug 2025 16:42:38 GMT (envelope-from git) Date: Thu, 7 Aug 2025 16:42:38 GMT Message-Id: <202508071642.577Ggcfb093803@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 7d900907c8cf - main - bhyve/arm64: Tidy up a licence comment List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d900907c8cf06f1c2da7fefec4f872b9285aa38 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=7d900907c8cf06f1c2da7fefec4f872b9285aa38 commit 7d900907c8cf06f1c2da7fefec4f872b9285aa38 Author: Andrew Turner AuthorDate: 2025-08-07 10:45:38 +0000 Commit: Andrew Turner CommitDate: 2025-08-07 11:30:59 +0000 bhyve/arm64: Tidy up a licence comment Remove an unneeded dash and add a missing space Reported by: des (missing space) Sponsored by: Arm Ltd --- usr.sbin/bhyve/aarch64/bhyve_machdep.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/bhyve/aarch64/bhyve_machdep.h b/usr.sbin/bhyve/aarch64/bhyve_machdep.h index 9e01d906ad4d..e487bb5a0f44 100644 --- a/usr.sbin/bhyve/aarch64/bhyve_machdep.h +++ b/usr.sbin/bhyve/aarch64/bhyve_machdep.h @@ -1,8 +1,8 @@ -/*- +/* * Copyright (c) 2025 Arm Ltd * * SPDX-License-Identifier: BSD-2-Clause -*/ + */ #ifndef _BHYVE_MACHDEP_H_ #define _BHYVE_MACHDEP_H_ From nobody Thu Aug 7 16:44:56 2025 X-Original-To: dev-commits-src-main@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 4byY15279Dz64Tkn; Thu, 07 Aug 2025 16:44:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byY150zDyz3Xh7; Thu, 07 Aug 2025 16:44:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754585097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=frmi9BWNRD+foyqhy8bPmP5mjSzgYPLSBjcGrW5xKm4=; b=OAKZqEK+hQTgqyabuvKDbMlNpOLNUylVoEzvVFjNu/DfM1MCU3ADk9BLBP39TwXP0pCGSm RDDgXL1BLXE/v9j4HjzWShEkQ6Jgchs2Vdm+qUdeGyHmpGbSaV1HGEsLVgBlGfXaMZN6Ml r9gNpOAS0RBQWTqMYkg03y//G9TAreu26b+43ie/SgBJ+6DaptCUlD308GjM15SxPEDbmV uKyBz0KnVQlVuXfr5EMKoNbMIAZ6VBgs+SrBB013LTY6Ulg0v8fmHnWwRKr+DGjDIV2Iv1 1dddfZ1RbMnHSFXG5uuJnNsrpzrjR5nRvBLib1b/rUqUegPn/QqRMaCuCBjk4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754585097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=frmi9BWNRD+foyqhy8bPmP5mjSzgYPLSBjcGrW5xKm4=; b=lTQI7qjLHfCFRckB6+C/4d+4GBmB3/OdhI7rokS0aIcbGuIhN1eP65Bcp+jtS6IWLSjY84 RXnODLUFewYDhTaqwnHuTDK5QSPhvtRmPHqD5rA+3y9cVHLm6DEjzgkxulzFfvrZ8TGlkD lnmozi5sTA8xZmaR+DGY5q7l9VtIEeusPJfo27hM/UOMyG7URCzMMC6tTbboxIAXKK7O2m ugTNk2BYp4JZNeIrJtAR0z9NRN44Puk0vGJtLRqwmjx/fD/STz51tfNkMQH9urZ/neb0iB bzMsG6iz9McisfQRStPFvGOtFTOYbcGZcMt9iSuhMCAoCDtApnsyv/VLGnrquQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754585097; a=rsa-sha256; cv=none; b=Fpbuv/ITXUg1Du4qqU77JukGI3vEDCgX/9zChsEKUiewQ0xQwpakC7/6BJcEgRffazRq1b Mj1pMV+J+uAircX+8EFYAGZs7Arx2tokirRgxYl98Rc2RopIP/1RtCpBCc/9YEi/iKBAr0 zpaXXBsr5V15LIcJ/GuEuj8C93Nb0+T4ZnmzqYqcMxGys16t8qeICUvHp6Ehcs0j73P7Lj 3+2/+9kDWvgvUDdNEKVVyFxOxzurNzx8wuZWZ42zfesgSvmuoZNSk/RZeTDj0KHwcfuBX9 6ijpVvAleoNdTFfQGzSJDXk6rc7y5QKP34x9A9g52cEVeUxt65+iMoaO7d2P9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byY150YBRz1DHL; Thu, 07 Aug 2025 16:44:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577GiuCg094673; Thu, 7 Aug 2025 16:44:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577GiuQQ094670; Thu, 7 Aug 2025 16:44:56 GMT (envelope-from git) Date: Thu, 7 Aug 2025 16:44:56 GMT Message-Id: <202508071644.577GiuQQ094670@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michal Meloun Subject: git: e4bfe8e96615 - main - arm: Generate the kernel.bin file in zImage format. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mmel X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e4bfe8e96615b16687271147ee2856e6f2a0c478 Auto-Submitted: auto-generated The branch main has been updated by mmel: URL: https://cgit.FreeBSD.org/src/commit/?id=e4bfe8e96615b16687271147ee2856e6f2a0c478 commit e4bfe8e96615b16687271147ee2856e6f2a0c478 Author: Michal Meloun AuthorDate: 2025-05-04 11:29:57 +0000 Commit: Michal Meloun CommitDate: 2025-08-07 16:44:40 +0000 arm: Generate the kernel.bin file in zImage format. This allows you to run the kernel using the bootz command, which can be useful on a board where the manufacturer's u-boot does not support EFI. The original behavior has not been changed, the zImage binary can still be run by jumping to the beginning of the binary file. MFC after: 2 weeks --- sys/conf/Makefile.arm | 2 +- sys/tools/arm_kernel_boothdr.awk | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/sys/conf/Makefile.arm b/sys/conf/Makefile.arm index 216f012d688e..15ccb982c2a4 100644 --- a/sys/conf/Makefile.arm +++ b/sys/conf/Makefile.arm @@ -93,7 +93,7 @@ ${KERNEL_KO}.bin: ${FULLKERNEL} --output-target=binary ${FULLKERNEL} ${.TARGET}.temp @{ ${NM} ${FULLKERNEL} | \ LC_ALL=C \ - ${AWK} -f $S/tools/arm_kernel_boothdr.awk -v hdrtype=v7jump && \ + ${AWK} -f $S/tools/arm_kernel_boothdr.awk -v hdrtype=v7bootz && \ cat ${.TARGET}.temp; \ } > ${.TARGET} @rm ${.TARGET}.temp diff --git a/sys/tools/arm_kernel_boothdr.awk b/sys/tools/arm_kernel_boothdr.awk index e0f193f7922c..37d8c4b5af0e 100644 --- a/sys/tools/arm_kernel_boothdr.awk +++ b/sys/tools/arm_kernel_boothdr.awk @@ -38,6 +38,7 @@ BEGIN { # The type of header we're writing is set using -v hdrtype= on # the command line, ensure we got a valid value for it. if (hdrtype != "v7jump" && + hdrtype != "v7bootz" && hdrtype != "v8jump" && hdrtype != "v8booti") { print "arm_kernel_boothdr.awk: " \ @@ -107,6 +108,35 @@ function write_v7jump() { write_le32(hexstr_to_num("ea000000") + (gStartOff / 4) - 2) } +function write_v7bootz() { + + # We are writing this struct... + # + # struct BootZ_header { + # uint32_t code0; /* Executable code */ + # uint32_t dummy[8]; /* dummy */ + # uint32_t magic; /* Magic number 0x016f2818*/ + # uint32_t load_offset; /* Image load offset, LE */ + # uint32_t image_size; /* Effective Image size, LE */ + # }; + # + # We write 'b _start' into code0. The image size is everything from + # the start of the loaded image to the offset given by the _end symbol. + + write_v7jump() # code0 + write_le32(0) # dummy[0] + write_le32(0) # dummy[1] + write_le32(0) # dummy[2] + write_le32(0) # dummy[3] + write_le32(0) # dummy[4] + write_le32(0) # dummy[5] + write_le32(0) # dummy[6] + write_le32(0) # dummy[7] + write_le32(hexstr_to_num("016f2818")) # magic marker + write_le32(0) # load_offset (0 -> auto) + write_le32(gEndOff) # image_size +} + function write_v8jump() { # Write the machine code for "b _start"... @@ -186,6 +216,8 @@ END { if (gHdrType == "v7jump") { write_v7jump() + } else if (gHdrType == "v7bootz") { + write_v7bootz() } else if (gHdrType == "v8jump") { write_v8jump() } else if (gHdrType == "v8booti") { From nobody Thu Aug 7 16:48:50 2025 X-Original-To: dev-commits-src-main@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 4byY5r2Qtxz64Tnd for ; Thu, 07 Aug 2025 16:49:04 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byY5q6CRqz3YBN for ; Thu, 07 Aug 2025 16:49:03 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-458bc3ce3beso8038425e9.1 for ; Thu, 07 Aug 2025 09:49:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754585342; x=1755190142; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UuloJVlHsvY3iAcznj+yMumQlVRH2KECZdGkNJoagpk=; b=cn2fHOZVZTwF4dfdwJd0jpqNyZjt/7Zep1y2EB1F4aoDUZ1WCmfvJI8kYf3yfUQCej j5RQUju6sAsdReS+MYM3HG4fmHBP7jlEOXCq68o+QtzuDiEdGQ5kpGct9owd4a8j+xOE 7JlzOv4jdhJzWPZ4/tfl9IaOzqxtrct0y4mzHmZNOb7D0PRaCJY2xNP+wYxWE/dUIceD fEBFajdl+I1kv5CP0y2OcRpPm+J8U5eqN/QEQJDcA/7H11OXg08Ojh7SnZ4/nGv4Pl3D clQ9Quem/0MRgAJ56EttMewmxCf8AJNhV4hbWHptUCWv+2dNwlBXJNatSv9NE6bnYpOq GXpA== X-Forwarded-Encrypted: i=1; AJvYcCViUgmhxCqKEEOPhZPfax1T6yUxDfNM7cXXW527WZFD+swwd9lCbF1rDJ7uVABDHPPlg3BHVb9GNWVwBNGPxMW8ppV9pw==@freebsd.org X-Gm-Message-State: AOJu0YzfuRn+VaIijoIdguGlElULk8AzwMIQE9n964EDd/VSLHFqNS8U fBp8COcfJ5Ohr+t5m9mY6gYBqKB12+rwv73vAj9RIHTF6u+uoGpOwi0FDThNq0jjJY4= X-Gm-Gg: ASbGncvMPM3v3/IKjMhmL4rGdVYKBPN17jt8qedQ3t7zIO2DyYcFMlvOTQVoaq2oE+p cjgQSTEIr2wUZUxhIw9yZe+AI5SbbIb/SiZZeKI3VgehTQJVnQNHMtiFycH8KklwrD8QTwW0UTz IgtRIHIBadQ98hvreFfyXStEfAXsu/NmOike99dRHq1tZBuEFGDxnZYabrVoNJICszZD4G/dkjb HpuLgIK+6KNMhMr8yyQHR0GUKMhtlp2FQIbsNemjPxzbzMHDJGB7xlk0v1uTCOaEr7mCwqgo4k0 gwwlwGktEydhjBjbWtd5kmyo17e6VgVMmGSIN9sklv+gZFQ95z5IwwPZNfRJucjq7TdgybPSmpS kmypjPgKcjqqc1EvpsQuCZfMravcMZVXxqW1MJmMNMmX08SGXG3JKFXd+SbO2EVmTZ35Nu7Q= X-Google-Smtp-Source: AGHT+IHSMagSolY/iWn2a2WgvdexBiPdXdbu3dk+jX76HnJzn3wtHoJ+aBzyOxyUxMaEQUu0ZJCnwg== X-Received: by 2002:a05:600c:4589:b0:459:e398:ed80 with SMTP id 5b1f17b1804b1-459e74b6721mr61202255e9.32.1754585341781; Thu, 07 Aug 2025 09:49:01 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459e585430csm100161195e9.11.2025.08.07.09.49.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Aug 2025 09:49:01 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 7d900907c8cf - main - bhyve/arm64: Tidy up a licence comment From: Jessica Clarke In-Reply-To: <202508071642.577Ggcfb093803@gitrepo.freebsd.org> Date: Thu, 7 Aug 2025 17:48:50 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: <12B54042-A019-4D4A-9130-CB4088B1A1EC@freebsd.org> References: <202508071642.577Ggcfb093803@gitrepo.freebsd.org> To: Andrew Turner X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4byY5q6CRqz3YBN X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 7 Aug 2025, at 17:42, Andrew Turner wrote: >=20 > The branch main has been updated by andrew: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D7d900907c8cf06f1c2da7fefec4f872b= 9285aa38 >=20 > commit 7d900907c8cf06f1c2da7fefec4f872b9285aa38 > Author: Andrew Turner > AuthorDate: 2025-08-07 10:45:38 +0000 > Commit: Andrew Turner > CommitDate: 2025-08-07 11:30:59 +0000 >=20 > bhyve/arm64: Tidy up a licence comment >=20 > Remove an unneeded dash and add a missing space >=20 > Reported by: des (missing space) > Sponsored by: Arm Ltd > --- > usr.sbin/bhyve/aarch64/bhyve_machdep.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) >=20 > diff --git a/usr.sbin/bhyve/aarch64/bhyve_machdep.h = b/usr.sbin/bhyve/aarch64/bhyve_machdep.h > index 9e01d906ad4d..e487bb5a0f44 100644 > --- a/usr.sbin/bhyve/aarch64/bhyve_machdep.h > +++ b/usr.sbin/bhyve/aarch64/bhyve_machdep.h > @@ -1,8 +1,8 @@ > -/*- > +/* This is meant to be there. Jessica > * Copyright (c) 2025 Arm Ltd > * > * SPDX-License-Identifier: BSD-2-Clause > -*/ > + */ >=20 > #ifndef _BHYVE_MACHDEP_H_ > #define _BHYVE_MACHDEP_H_ From nobody Thu Aug 7 17:02:42 2025 X-Original-To: dev-commits-src-main@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 4byYPb45nDz64VnY; Thu, 07 Aug 2025 17:02:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byYPZ75WHz3bgM; Thu, 07 Aug 2025 17:02:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754586163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ipn4Z9sbxr5GTi05s+moSkIHEY4arX7FhYMb1EXAaBQ=; b=D+80wQZkRnaYM5kDpO8Uhunbdcf0M2TubH9xYhgWlw/i7qi+ZD2om75xExabLucCviOzpp 2pumU6vji2un5u3oXnftMP0QBItccs7hA4a6Ehw7PpRkcQM2XiLxaK1wMlbbtljvBBM9uJ dcEnm+AO65dGdKWCxB87A0v22+JljBja0plX22LmGbmuywG8HLL1G5ZJ28FxXqwmIW+oF5 ToFTMWZAyTJYluasPAotoE0I1akzq35tiuQGfE51MoTUt10aDvGBEpKi5/m1PJ2dda6Og/ lu0RI5U0S71XeJxPr0V0wbGgd3fsgjpGKj4W7moQuL7RDAsgxv9sKJKgGvcOQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754586163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ipn4Z9sbxr5GTi05s+moSkIHEY4arX7FhYMb1EXAaBQ=; b=Wn7K9CzRtUV8XbMgcbsaQyhpkW0N0xs81VFG/20lPwqz46q47DXCmb3tnhmd9lx+U8knJT 56IWWV9wWjvlff1g7F0uvGiqItji8hCavJubCXHHnUEnfoAyOaMoQYo5PQ5Bagxxgt/cVU HiPCsolTswPxc++0RGWsAHN0y+08sjs05AUlb3MCAYDA5vEFpTVuqdakDTTO/gOmT48x3g 6Yo5rfR5213E9AeDZSC96T+9Wkaojv0EGGt+ZXHJcbqhkacyx7b9+77UAtJj6TGYpF50ix pcCXcklHm62bcbzeacjDhEvexhfxpxVUrBMCtT+2aAjVaYPZPQg1FLV0sRLxOw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754586163; a=rsa-sha256; cv=none; b=WqHjNRFaTCa73zYQC1z+3sjPIfzyF0TlYqZEjaZ7yyjcbMcPzV7ReJUoEqLA5DyRZeacCX gw0ZgpsPIRe0HQxjN0E429Hs/Farq6wPoZhpZWplF6T4Nab83JglEGn1kR6PjJEmFPTiDN ZnBrq+F7oNqC0vCxzGzRIbYPZRL5onrUL51JR+vHiBTW5+7JO9wAOpIGRqvjeJ79jN0m7G l3/lzHhXl1QMJoEQ3FMjDq2KiT1ny2gjUhVcFaB5cGvwwXEIx2/WXbW+BJRgIXGH9kX3Ym qadDp8+d42v3epe9fPv57xes1o2Ofdx8z4WnkY5TwMrk/T4G3FT9iTebZGPcJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byYPZ6YKnz1DJx; Thu, 07 Aug 2025 17:02:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577H2gRa032335; Thu, 7 Aug 2025 17:02:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577H2g3Y032332; Thu, 7 Aug 2025 17:02:42 GMT (envelope-from git) Date: Thu, 7 Aug 2025 17:02:42 GMT Message-Id: <202508071702.577H2g3Y032332@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Ziaee Subject: git: 7cd6da268a8f - main - vt.4: Style pass List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7cd6da268a8fbf34b16564dd9a94c86853eb7c56 Auto-Submitted: auto-generated The branch main has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=7cd6da268a8fbf34b16564dd9a94c86853eb7c56 commit 7cd6da268a8fbf34b16564dd9a94c86853eb7c56 Author: Alexander Ziaee AuthorDate: 2025-08-07 17:01:29 +0000 Commit: Alexander Ziaee CommitDate: 2025-08-07 17:02:13 +0000 vt.4: Style pass Outstanding: I'm not sure kernel configuration declarations are defined variables. Dv does not allow arguments, but some why allowed paths, so non-path arguments were being incorrectly marked up as paths. MFC after: 3 days Reviewed by: 0mp, emaste Differential Revision: https://reviews.freebsd.org/D49565 --- share/man/man4/vt.4 | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/share/man/man4/vt.4 b/share/man/man4/vt.4 index ad050bdd0d59..21d69bf9d495 100644 --- a/share/man/man4/vt.4 +++ b/share/man/man4/vt.4 @@ -1,4 +1,4 @@ -.\"- +.\" .\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Copyright (c) 2014 Warren Block @@ -26,32 +26,32 @@ .\" SUCH DAMAGE. .\" .Dd July 7, 2024 -.Dt "VT" 4 +.Dt VT 4 .Os .Sh NAME .Nm vt .Nd virtual terminal system video console driver .Sh SYNOPSIS -.Cd "options TERMINAL_KERN_ATTR=_attribute_" -.Cd "options TERMINAL_NORM_ATTR=_attribute_" -.Cd "options VT_MAXWINDOWS=N" +.Cd "options TERMINAL_KERN_ATTR=" +.Cd "options TERMINAL_NORM_ATTR=" +.Cd "options VT_MAXWINDOWS=" .Cd "options VT_ALT_TO_ESC_HACK=1" .Cd "options VT_TWOBUTTON_MOUSE" -.Cd "options VT_FB_MAX_WIDTH=X" -.Cd "options VT_FB_MAX_HEIGHT=Y" +.Cd "options VT_FB_MAX_WIDTH=" +.Cd "options VT_FB_MAX_HEIGHT=" .Cd "options SC_NO_CUTPASTE" .Cd "device vt" .Pp In .Xr loader.conf 5 : -.Cd hw.vga.textmode=1 -.Cd hw.vga.acpi_ignore_no_vga=1 -.Cd kern.vty=vt -.Cd kern.vt.color..rgb="" -.Cd kern.vt.fb.default_mode="x" -.Cd kern.vt.fb.modes.="x" -.Cd kern.vt.slow_down=" -.Cd screen.font="x" +.Cd "hw.vga.textmode=1" +.Cd "hw.vga.acpi_ignore_no_vga=1" +.Cd "kern.vty=vt" +.Cd "kern.vt.color..rgb=" +.Cd "kern.vt.fb.default_mode=x" +.Cd "kern.vt.fb.modes.=x" +.Cd "kern.vt.slow_down=" +.Cd "screen.font=x" .Pp In .Xr loader.conf 5 or @@ -130,8 +130,8 @@ These kernel options control the .Nm driver. .Bl -tag -width MAXCONS -.It Dv TERMINAL_NORM_ATTR= Ns Pa attribute -.It Dv TERMINAL_KERN_ATTR= Ns Pa attribute +.It Dv TERMINAL_NORM_ATTR= +.It Dv TERMINAL_KERN_ATTR= These options change the default colors used for normal and kernel text. Available colors are defined in @@ -139,7 +139,7 @@ Available colors are defined in See .Sx EXAMPLES below. -.It Dv VT_MAXWINDOWS=N +.It Dv VT_MAXWINDOWS= Set the number of virtual terminals to be created to .Fa N . The value defaults to 12. @@ -152,10 +152,10 @@ In effect, this makes the right-hand mouse button perform a paste. These options are checked in the order shown. .It Dv SC_NO_CUTPASTE Disable mouse support. -.It VT_FB_MAX_WIDTH=X +.It VT_FB_MAX_WIDTH= Set the maximum width to .Fa X . -.It VT_FB_MAX_HEIGHT=Y +.It VT_FB_MAX_HEIGHT= Set the maximum height to .Fa Y . .El @@ -166,7 +166,7 @@ console device, These options will be removed in a future .Fx version. -.Bl -column -offset indent ".Sy vt VT_TWOBUTTON_MOUSE" ".Sy SC_TWOBUTTON_MOUSE" +.Bl -column -offset indent "TERMINAL_KERN_ATTR" "SC_KERNEL_CONS_ATTR" .It Sy vt Option Name Ta Sy sc Option Name .It Dv TERMINAL_KERN_ATTR Ta Dv SC_KERNEL_CONS_ATTR .It Dv TERMINAL_NORM_ATTR Ta Dv SC_NORM_ATTR @@ -230,7 +230,7 @@ Note that is not compatible with .Xr UEFI 8 boot. -.It Va kern.vt.color. Ns Ar colornum Ns Va .rgb +.It Va kern.vt.color. Ns Ar colornum Ns . Ns Va rgb Set this value to override default palette entry for color .Pa colornum which should be in a range from 0 to 15 inclusive. @@ -245,15 +245,15 @@ Note: The .Nm VGA hardware driver does not support palette configuration. .It Va kern.vt.fb.default_mode -Set this value to a graphic mode to override the default mode picked by the +Set this value to a graphic mode to override the default picked by the .Nm backend. The mode is applied to all output connectors. This is currently only supported by the .Cm vt_fb backend when it is paired with a KMS video driver. -.It Va kern.vt.fb.modes. Ns Pa connector_name -Set this value to a graphic mode to override the default mode picked by the +.It Va kern.vt.fb.modes. +Set this value to a graphic mode to override the default picked by the .Nm backend. This mode is applied to the output connector From nobody Thu Aug 7 17:17:37 2025 X-Original-To: dev-commits-src-main@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 4byYkn4f20z64WNc; Thu, 07 Aug 2025 17:17:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byYkn3PgJz3c8Z; Thu, 07 Aug 2025 17:17:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754587057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AhmKdF/h+k7ulf80axL6fV+l7ZKuA7xiuUt62oMfjUE=; b=TmbgygYAQ5R3iDXfbIWzHXLuZaEOHozMxfkfxv05yQV5BJXpYt4I7PXsaN+f4PyW+pKUJC EvKVZy1fzrihcb1oJoeuuaiJu7qggqUgN+whgL3ty7RouMCvENS6MfaBv4x8brz3jAgWIZ 9Bp1QzfBeA/3Hfv0QewXYVv3IHjWOwWgCbhmDvmbo8Vd+dEStuKlySAOdJIsNQcno1y/KX Ul4e6K/44ZGLI24LyjS025IHoT9dkay9An8cgrBr9xQBHHODfU/l719N3dk9rDOSRQetLy JWUw207SpWTWNXR6YyVI4uGLnpI4SJf5E2eAPvhLKAfnu7hN/GGpHXq+uBF/0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754587057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AhmKdF/h+k7ulf80axL6fV+l7ZKuA7xiuUt62oMfjUE=; b=tmPKtfzVE5yR4iBeQdSuCxemfskndou735c183rR7y1vf5V2dnIZ67c52/dw5ODqW54gCd hfT4NiPiud9Rdba1g8qkVEAFrO084RymINYjl1n2O7JvT8mXLEa0BmNhqPowa9eWuqbrgI AfyXN224sgUVdn79F4qv728EINobKLzr2KdhfrK0x5w3p7VTS/SaeXpxH3ThaZ3pCdiQNC /SdGokRBRH3p/OikQWFxkTgPz0SEBt03IJgEVfjxNIS1XUEtSrLh26lE73aW7mJga4UHUL LX0t3JtElUkV2IPTtDWHvxRSOK9n1BB5ASJPBk2K8VfVzZ7Z5JuFy5bJZGPHcA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754587057; a=rsa-sha256; cv=none; b=gQ92kmRfH+Yi/DXKM7/DxB60p4anczl3cRAv5+ryTq2+H8vt3YzaC4TPkcHJw50GJr1pcn H+a7wVzbtXV67jkeKHqLVnqMfIhMOeD6eIyZv2XjWrZ5SYr3hPjWwn0UfIBqXettacEgxg G/oTdb4KSjE3atDoM5Uvn0ZS1dAfzl2ORnOeBiEbPucIZLDax+sCc8jOcHJbIkcxP2iY3e QD6gJS8M8IX3/IgiV8I45NTDJTkrl8dC5b52V9NqEX1aTV4QAODEYhi3BmHkVOxiUvaZQV MugRkIZNLWduFnHlktlLBW8NwLldXVA1I94143h3HLoVH8zDSEijDH7zKZlHMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byYkn31Nfz1F2F; Thu, 07 Aug 2025 17:17:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577HHb0P052682; Thu, 7 Aug 2025 17:17:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577HHbfI052679; Thu, 7 Aug 2025 17:17:37 GMT (envelope-from git) Date: Thu, 7 Aug 2025 17:17:37 GMT Message-Id: <202508071717.577HHbfI052679@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: e26259f48afe - main - gssapi,krb5: Replace libgssapi with the MIT version List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e26259f48afe98022d885f02fbb8abcd7878e41a Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=e26259f48afe98022d885f02fbb8abcd7878e41a commit e26259f48afe98022d885f02fbb8abcd7878e41a Author: Cy Schubert AuthorDate: 2025-07-31 16:51:20 +0000 Commit: Cy Schubert CommitDate: 2025-08-07 17:17:00 +0000 gssapi,krb5: Replace libgssapi with the MIT version lib/libgssapi is based on Heimdal. As on Linux systems, the MIT libgssapi_krb5 replaces it. With both gssapi libraries and header files installed results in broken buildworld (gssd) and ports that will not build without modifications to support the MIT gssapi in an alternate location. 73ed0c7992fd removed the MIT GSSAPI headers from /usr/include. Apps using MIT KRB5 gssapi functions and structures will fail to build without this patch. This patch includes a temporary patch to usr.sbin/gssd to allow it to build with this patch. rmacklem@ has a patch for this and for kgssapi that uses this patch to resolve kgssapi issues for NFS with Kerberos. This patch is an updated version of D51661 to allow it to build following additional patchs to the tree. This should have been implmented with 7e35117eb07f. Fixes: 7e35117eb07f, 73ed0c7992fd Differential Revision: https://reviews.freebsd.org/D51661 --- Makefile.inc1 | 6 ++++-- ObsoleteFiles.inc | 6 ++++++ etc/gss-krb5/Makefile | 2 +- etc/gss-krb5/qop | 1 - etc/mtree/BSD.include.dist | 4 ---- include/Makefile | 2 +- krb5/include/Makefile | 5 ++--- krb5/include/gssapi/Makefile | 9 ++------- krb5/lib/gssapi/generic/Makefile.inc | 2 +- lib/Makefile | 7 ++++++- lib/librpcsec_gss/Makefile | 6 ++++++ secure/libexec/sshd-session/Makefile | 9 ++++----- secure/usr.bin/ssh/Makefile | 4 ++++ secure/usr.sbin/sshd/Makefile | 4 ++++ share/mk/src.libnames.mk | 4 ++++ tools/build/mk/OptionalObsoleteFiles.inc | 3 +++ usr.sbin/gssd/Makefile | 5 ++--- usr.sbin/gssd/gssd.c | 3 +++ 18 files changed, 53 insertions(+), 29 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index e6c9b49eefa3..9128d1d8ee77 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -3379,8 +3379,8 @@ secure/lib/libssh__L: lib/libldns__L .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" .if ${MK_MITKRB5} != "no" -secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \ - krb5/util/et__L lib/libmd__L krb5/util/support__L +secure/lib/libssh__L: krb5/lib/gssapi__L krb5/lib/krb5__L \ + krb5/lib/crypto__L krb5/util/et__L lib/libmd__L krb5/util/support__L .else secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ @@ -3437,8 +3437,10 @@ kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbas lib/libsqlite3__L: lib/libthr__L .if ${MK_GSSAPI} != "no" +.if ${MK_MITKRB5} == "no" _lib_libgssapi= lib/libgssapi .endif +.endif .if ${MK_KERBEROS} != "no" .if ${MK_MITKRB5} != "no" diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 86a449c80a76..2f63bbea5a49 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,12 @@ # xargs -n1 | sort | uniq -d; # done +# 20250807: Replace lib/libgssapi with krb5/lib/gssapi +OLD_FILES+=usr/include/gssapi_krb5/gssapi/gssapi.h +OLD_DIRS+=usr/include/gssapi_krb5/gssapi +OLD_DIRS+=usr/include/gssapi_krb5 +OLD_FILES+=etc/gssapi/qop + # 20250802: libutil bumped to 10 OLD_LIBS+=lib/libutil.so.9 diff --git a/etc/gss-krb5/Makefile b/etc/gss-krb5/Makefile index 301a8e074e8c..8886ed35e281 100644 --- a/etc/gss-krb5/Makefile +++ b/etc/gss-krb5/Makefile @@ -1,4 +1,4 @@ -FILES= mech qop +FILES= mech NO_OBJ= FILESDIR= /etc/gss diff --git a/etc/gss-krb5/qop b/etc/gss-krb5/qop deleted file mode 100644 index 7d5b6b8f33dd..000000000000 --- a/etc/gss-krb5/qop +++ /dev/null @@ -1 +0,0 @@ -GSS_KRB5_CONF_C_QOP_DES3_KD 0x0200 kerberosv5 diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 0e9f739425a1..28c4d91ac1c0 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -258,10 +258,6 @@ .. gssapi .. - gssapi_krb5 - gssapi - .. - .. gssrpc .. infiniband diff --git a/include/Makefile b/include/Makefile index af7ef2337941..2792d594a888 100644 --- a/include/Makefile +++ b/include/Makefile @@ -293,7 +293,7 @@ LSUBSUBDIRS+= netgraph/bluetooth/include LSUBDIRS+= fs/cuse .endif -.if ${MK_GSSAPI} != "no" +.if ${MK_GSSAPI} != "no" && ${MK_MITKRB5} == "no" SUBDIR+= gssapi INCS+= gssapi.h .endif diff --git a/krb5/include/Makefile b/krb5/include/Makefile index 699211b9c3c9..64c5d39b867b 100644 --- a/krb5/include/Makefile +++ b/krb5/include/Makefile @@ -17,13 +17,12 @@ SUBDIR= krb5 gssrpc gssapi SUBDIR_PARALLEL= -INCSGROUPS= INCS - INCSDIR= ${INCLUDEDIR} .PATH: ${KRB5_DIR}/include -INCS= kdb.h \ +INCS= gssapi.h \ + kdb.h \ krad.h \ krb5.h diff --git a/krb5/include/gssapi/Makefile b/krb5/include/gssapi/Makefile index 4959bf78944d..b181187e9d95 100644 --- a/krb5/include/gssapi/Makefile +++ b/krb5/include/gssapi/Makefile @@ -15,16 +15,11 @@ INCSGROUPS= INCS GSSAPI_KRB5 INCSDIR= ${INCLUDEDIR}/gssapi -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5 -INCS= gssapi_alloc.h \ +INCS= gssapi.h \ + gssapi_alloc.h \ gssapi_ext.h \ gssapi_generic.h \ gssapi_krb5.h -# This gssapi header file is only needed should an app need -# to build using the MIT KRB5 GSSAPI library. - -GSSAPI_KRB5= gssapi.h - .include diff --git a/krb5/lib/gssapi/generic/Makefile.inc b/krb5/lib/gssapi/generic/Makefile.inc index 9de18079a341..ef76172655d6 100644 --- a/krb5/lib/gssapi/generic/Makefile.inc +++ b/krb5/lib/gssapi/generic/Makefile.inc @@ -36,7 +36,7 @@ SRCS+= disp_com_err_status.c \ INCSGROUPS= GSSAPI_INCS GSSAPI_INCS= gssapi.h INCS+= ${GENI} -GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi_krb5/gssapi +GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi CLEANFILES+= gssapi.h ${GGEN} ${GGENI} diff --git a/lib/Makefile b/lib/Makefile index e5139b312a75..9447cc4551c0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -137,7 +137,9 @@ SUBDIR_DEPEND_libdevstat= libkvm SUBDIR_DEPEND_libdpv= libfigpar ncurses libutil SUBDIR_DEPEND_libedit= ncurses SUBDIR_DEPEND_libgeom= libexpat libsbuf +.if ${MK_MITKRB5} == "no" SUBDIR_DEPEND_librpcsec_gss= libgssapi +.endif SUBDIR_DEPEND_libmagic= libz SUBDIR_DEPEND_libmemstat= libkvm SUBDIR_DEPEND_libpam= libcrypt ${_libradius} librpcsvc libtacplus libutil ${_libypclnt} ${_libcom_err} @@ -176,7 +178,10 @@ SUBDIR.${MK_DIALOG}+= libdpv libfigpar SUBDIR.${MK_FDT}+= libfdt SUBDIR.${MK_FILE}+= libmagic SUBDIR.${MK_GPIO}+= libgpio -SUBDIR.${MK_GSSAPI}+= libgssapi librpcsec_gss +.if ${MK_MITKRB5} == "no" +SUBDIR.${MK_GSSAPI}+= libgssapi +.endif +SUBDIR.${MK_GSSAPI}+= librpcsec_gss SUBDIR.${MK_ICONV}+= libiconv_modules .if ${MK_MITKRB5} == "no" SUBDIR.${MK_KERBEROS_SUPPORT}+= libcom_err diff --git a/lib/librpcsec_gss/Makefile b/lib/librpcsec_gss/Makefile index a29d9780c1ab..eebc975acbd2 100644 --- a/lib/librpcsec_gss/Makefile +++ b/lib/librpcsec_gss/Makefile @@ -1,10 +1,16 @@ +.include + PACKAGE=lib${LIB} LIB= rpcsec_gss SHLIB_MAJOR= 1 SRCS+= rpcsec_gss.c rpcsec_gss_prot.c rpcsec_gss_conf.c rpcsec_gss_misc.c \ svc_rpcsec_gss.c +.if ${MK_MITKRB5} == "no" LIBADD= gssapi +.else +LIBADD= gssapi_krb5 +.endif VERSION_DEF= ${SRCTOP}/lib/libc/Versions.def SYMBOL_MAPS= ${.CURDIR}/Symbol.map diff --git a/secure/libexec/sshd-session/Makefile b/secure/libexec/sshd-session/Makefile index 8841cace5239..37e099794bd5 100644 --- a/secure/libexec/sshd-session/Makefile +++ b/secure/libexec/sshd-session/Makefile @@ -39,15 +39,14 @@ LDFLAGS+=-L${LIBBLACKLISTDIR} .endif .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" -LIBADD+= gssapi_krb5 gssapi krb5 .if ${MK_MITKRB5} != "no" +LIBADD+= gssapi_krb5 krb5 .include "../../krb5/Makefile.inc" CFLAGS+= -I${KRB5_DIR}/include \ -I${KRB5_SRCTOP}/include \ - -I${KRB5_OBJTOP}/lib \ - -I${KRB5_DIR}/lib/gssapi/generic \ - -I${KRB5_DIR}/lib/gssapi/krb5 \ - -I${KRB5_DIR}/lib/gssapi/mechglue + -I${KRB5_OBJTOP}/lib +.else +LIBADD+= gssapi_krb5 gssapi krb5 .endif .endif diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile index acb1fd4eaa25..a4f36d0fe2df 100644 --- a/secure/usr.bin/ssh/Makefile +++ b/secure/usr.bin/ssh/Makefile @@ -18,7 +18,11 @@ SRCS+= gss-genr.c LIBADD= ssh .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" +.if ${MK_MITKRB5} == "no" LIBADD+= gssapi +.else +LIBADD+= gssapi_krb5 +.endif .endif LIBADD+= crypto diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makefile index e6913cd9d0d6..f37dfe1c1b3a 100644 --- a/secure/usr.sbin/sshd/Makefile +++ b/secure/usr.sbin/sshd/Makefile @@ -19,7 +19,11 @@ moduli: .MADE LIBADD= ssh util .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" +.if ${MK_MITKRB5} == "no" LIBADD+= gssapi_krb5 gssapi krb5 +.else +LIBADD+= gssapi_krb5 krb5 +.endif .endif .if ${MK_TCP_WRAPPERS} != "no" diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 283a99496b9f..9ca043e7733c 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -472,7 +472,11 @@ _DP_ncursesw= tinfow _DP_formw= ncursesw _DP_nvpair= spl _DP_panelw= ncursesw +.if ${MK_MITKRB5} == "no" _DP_rpcsec_gss= gssapi +.else +_DP_rpcsec_gss= gssapi_krb5 +.endif _DP_smb= kiconv _DP_ulog= md _DP_fifolog= z diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index aa6d04f1cc43..8e5ac7fa2a63 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -4836,6 +4836,7 @@ OLD_FILES+=usr/share/man/man8/sserver.8.gz .else .if ${MK_MITKRB5} != "no" # Remove Heimdal because we want MIT KRB5 but not Heimdal +OLD_FILES+=etc/gss/qop OLD_FILES+=etc/rc.d/ipropd_master OLD_FILES+=etc/rc.d/ipropd_slave OLD_FILES+=usr/bin/asn1_compile @@ -4921,6 +4922,8 @@ OLD_LIBS+=usr/lib/libasn1.so.11 OLD_FILES+=usr/lib/libasn1_p.a OLD_LIBS+=usr/lib/libcom_err.so.5 OLD_FILES+=usr/lib/libcom_err_p.a +OLD_LIBS+=usr/lib/libgssapi.a +OLD_LIBS+=usr/lib/libgssapi.so.10 OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 OLD_FILES+=usr/lib/libgssapi_krb5_p.a OLD_FILES+=usr/lib/libgssapi_mech.a diff --git a/usr.sbin/gssd/Makefile b/usr.sbin/gssd/Makefile index 569e2c7e18f5..336a1b49f696 100644 --- a/usr.sbin/gssd/Makefile +++ b/usr.sbin/gssd/Makefile @@ -9,15 +9,14 @@ SRCS= gssd.c gssd.h gssd_svc.c gssd_xdr.c gssd_prot.c CFLAGS+= -I. WARNS?= 1 -LIBADD= gssapi .if ${MK_KERBEROS_SUPPORT} != "no" .if ${MK_MITKRB5} != "no" # MIT KRB5 -LIBADD+= krb5 k5crypto krb5profile krb5support +LIBADD+= gssapi_krb5 krb5 k5crypto krb5profile krb5support CFLAGS+= -DMK_MITKRB5=yes .else # Heimdal -LIBADD+= krb5 roken +LIBADD+= gssapi krb5 roken .endif .else CFLAGS+= -DWITHOUT_KERBEROS diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c index 94eb6ca575c8..2a3af05496cf 100644 --- a/usr.sbin/gssd/gssd.c +++ b/usr.sbin/gssd/gssd.c @@ -53,6 +53,9 @@ #include #include #include +#ifdef MK_MITKRB5 +#include +#endif #include #include From nobody Thu Aug 7 17:21:29 2025 X-Original-To: dev-commits-src-main@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 4byYqK324sz64WVc; Thu, 07 Aug 2025 17:21:33 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta003.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byYqJ6x1Dz3dTj; Thu, 07 Aug 2025 17:21:32 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4003a.ext.cloudfilter.net ([10.228.9.183]) by cmsmtp with ESMTPS id jzEyuXbrC9JM2k4J2uNjIg; Thu, 07 Aug 2025 17:21:32 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id k4J0u2VVLWbOak4J1un313; Thu, 07 Aug 2025 17:21:32 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=Q5lx4J2a c=1 sm=1 tr=0 ts=6894e09c a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=2OwXVqhp2XgA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=m6xXa00Mfrbd_3NcV1cA:9 a=CjuIK1q_8ugA:10 a=LK5xJRSDVpKd5WXXoEvA:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy.cwsent.com [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id 540411081; Thu, 07 Aug 2025 10:21:29 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id 49D0EB7; Thu, 07 Aug 2025 10:21:29 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Rick Macklem cc: Cy Schubert , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: e26259f48afe - main - gssapi,krb5: Replace libgssapi with the MIT version In-reply-to: <202508071717.577HHbfI052679@gitrepo.freebsd.org> References: <202508071717.577HHbfI052679@gitrepo.freebsd.org> Comments: In-reply-to Cy Schubert message dated "Thu, 07 Aug 2025 17:17:37 +0000." List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Thu, 07 Aug 2025 10:21:29 -0700 Message-Id: <20250807172129.49D0EB7@slippy.cwsent.com> X-CMAE-Envelope: MS4xfN5WvrAFGVMh1w5Vj1BzNNap9txDa+JDq0cVZxRtcYrns7e9pWdQuId983jbzMM3Q2bLP90s8D4GRf84PQPlUtPXotLJRhEKG1mZT5PSRDnMcgM0NSO5 LRP+wTQd/elfetJoHJiHsuzroc8yrVs2/QaOLbhr9jwZiE8OwCrZkCFaFhZyK9X3Jv+XTT4Cw8ulJtQVMkUuo7fSpiBFSzOCqip9w13ZCxmHjNINijvOmGqg iJE79APKXvl9pqxjd+J4aXT0MNRxndYjDP9fZTQerAUhvtrlQszWg/wt19tXNvkMTsm6/1AHcnVmsBYfH1T5xfLs+D2lkUeayunOSkUqFtZNrGNr1886E9de FR1dzHNd X-Rspamd-Queue-Id: 4byYqJ6x1Dz3dTj X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US] Rick, Please go ahead with your kgssapi patches. I have applied them here. Kerberized NFS works again. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e**(i*pi)+1=0 In message <202508071717.577HHbfI052679@gitrepo.freebsd.org>, Cy Schubert write s: > The branch main has been updated by cy: > > URL: https://cgit.FreeBSD.org/src/commit/?id=e26259f48afe98022d885f02fbb8abcd > 7878e41a > > commit e26259f48afe98022d885f02fbb8abcd7878e41a > Author: Cy Schubert > AuthorDate: 2025-07-31 16:51:20 +0000 > Commit: Cy Schubert > CommitDate: 2025-08-07 17:17:00 +0000 > > gssapi,krb5: Replace libgssapi with the MIT version > > lib/libgssapi is based on Heimdal. As on Linux systems, the MIT > libgssapi_krb5 replaces it. With both gssapi libraries and header files > installed results in broken buildworld (gssd) and ports that will not > build without modifications to support the MIT gssapi in an alternate > location. > > 73ed0c7992fd removed the MIT GSSAPI headers from /usr/include. Apps using > MIT KRB5 gssapi functions and structures will fail to build without this > patch. > > This patch includes a temporary patch to usr.sbin/gssd to allow it > to build with this patch. rmacklem@ has a patch for this and for > kgssapi that uses this patch to resolve kgssapi issues for NFS with > Kerberos. > > This patch is an updated version of D51661 to allow it to build following > additional patchs to the tree. > > This should have been implmented with 7e35117eb07f. > > Fixes: 7e35117eb07f, 73ed0c7992fd > Differential Revision: https://reviews.freebsd.org/D51661 > --- > Makefile.inc1 | 6 ++++-- > ObsoleteFiles.inc | 6 ++++++ > etc/gss-krb5/Makefile | 2 +- > etc/gss-krb5/qop | 1 - > etc/mtree/BSD.include.dist | 4 ---- > include/Makefile | 2 +- > krb5/include/Makefile | 5 ++--- > krb5/include/gssapi/Makefile | 9 ++------- > krb5/lib/gssapi/generic/Makefile.inc | 2 +- > lib/Makefile | 7 ++++++- > lib/librpcsec_gss/Makefile | 6 ++++++ > secure/libexec/sshd-session/Makefile | 9 ++++----- > secure/usr.bin/ssh/Makefile | 4 ++++ > secure/usr.sbin/sshd/Makefile | 4 ++++ > share/mk/src.libnames.mk | 4 ++++ > tools/build/mk/OptionalObsoleteFiles.inc | 3 +++ > usr.sbin/gssd/Makefile | 5 ++--- > usr.sbin/gssd/gssd.c | 3 +++ > 18 files changed, 53 insertions(+), 29 deletions(-) > > diff --git a/Makefile.inc1 b/Makefile.inc1 > index e6c9b49eefa3..9128d1d8ee77 100644 > --- a/Makefile.inc1 > +++ b/Makefile.inc1 > @@ -3379,8 +3379,8 @@ secure/lib/libssh__L: lib/libldns__L > > .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" > .if ${MK_MITKRB5} != "no" > -secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \ > - krb5/util/et__L lib/libmd__L krb5/util/support__L > +secure/lib/libssh__L: krb5/lib/gssapi__L krb5/lib/krb5__L \ > + krb5/lib/crypto__L krb5/util/et__L lib/libmd__L krb5/util/support__L > .else > secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ > kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ > @@ -3437,8 +3437,10 @@ kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__ > L kerberos5/lib/libheimbas > lib/libsqlite3__L: lib/libthr__L > > .if ${MK_GSSAPI} != "no" > +.if ${MK_MITKRB5} == "no" > _lib_libgssapi= lib/libgssapi > .endif > +.endif > > .if ${MK_KERBEROS} != "no" > .if ${MK_MITKRB5} != "no" > diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc > index 86a449c80a76..2f63bbea5a49 100644 > --- a/ObsoleteFiles.inc > +++ b/ObsoleteFiles.inc > @@ -51,6 +51,12 @@ > # xargs -n1 | sort | uniq -d; > # done > > +# 20250807: Replace lib/libgssapi with krb5/lib/gssapi > +OLD_FILES+=usr/include/gssapi_krb5/gssapi/gssapi.h > +OLD_DIRS+=usr/include/gssapi_krb5/gssapi > +OLD_DIRS+=usr/include/gssapi_krb5 > +OLD_FILES+=etc/gssapi/qop > + > # 20250802: libutil bumped to 10 > OLD_LIBS+=lib/libutil.so.9 > > diff --git a/etc/gss-krb5/Makefile b/etc/gss-krb5/Makefile > index 301a8e074e8c..8886ed35e281 100644 > --- a/etc/gss-krb5/Makefile > +++ b/etc/gss-krb5/Makefile > @@ -1,4 +1,4 @@ > -FILES= mech qop > +FILES= mech > NO_OBJ= > FILESDIR= /etc/gss > > diff --git a/etc/gss-krb5/qop b/etc/gss-krb5/qop > deleted file mode 100644 > index 7d5b6b8f33dd..000000000000 > --- a/etc/gss-krb5/qop > +++ /dev/null > @@ -1 +0,0 @@ > -GSS_KRB5_CONF_C_QOP_DES3_KD 0x0200 kerberosv5 > diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist > index 0e9f739425a1..28c4d91ac1c0 100644 > --- a/etc/mtree/BSD.include.dist > +++ b/etc/mtree/BSD.include.dist > @@ -258,10 +258,6 @@ > .. > gssapi > .. > - gssapi_krb5 > - gssapi > - .. > - .. > gssrpc > .. > infiniband > diff --git a/include/Makefile b/include/Makefile > index af7ef2337941..2792d594a888 100644 > --- a/include/Makefile > +++ b/include/Makefile > @@ -293,7 +293,7 @@ LSUBSUBDIRS+= netgraph/bluetooth/include > LSUBDIRS+= fs/cuse > .endif > > -.if ${MK_GSSAPI} != "no" > +.if ${MK_GSSAPI} != "no" && ${MK_MITKRB5} == "no" > SUBDIR+= gssapi > INCS+= gssapi.h > .endif > diff --git a/krb5/include/Makefile b/krb5/include/Makefile > index 699211b9c3c9..64c5d39b867b 100644 > --- a/krb5/include/Makefile > +++ b/krb5/include/Makefile > @@ -17,13 +17,12 @@ SUBDIR= krb5 gssrpc gssapi > > SUBDIR_PARALLEL= > > -INCSGROUPS= INCS > - > INCSDIR= ${INCLUDEDIR} > > .PATH: ${KRB5_DIR}/include > > -INCS= kdb.h \ > +INCS= gssapi.h \ > + kdb.h \ > krad.h \ > krb5.h > > diff --git a/krb5/include/gssapi/Makefile b/krb5/include/gssapi/Makefile > index 4959bf78944d..b181187e9d95 100644 > --- a/krb5/include/gssapi/Makefile > +++ b/krb5/include/gssapi/Makefile > @@ -15,16 +15,11 @@ > > INCSGROUPS= INCS GSSAPI_KRB5 > INCSDIR= ${INCLUDEDIR}/gssapi > -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5 > > -INCS= gssapi_alloc.h \ > +INCS= gssapi.h \ > + gssapi_alloc.h \ > gssapi_ext.h \ > gssapi_generic.h \ > gssapi_krb5.h > > -# This gssapi header file is only needed should an app need > -# to build using the MIT KRB5 GSSAPI library. > - > -GSSAPI_KRB5= gssapi.h > - > .include > diff --git a/krb5/lib/gssapi/generic/Makefile.inc b/krb5/lib/gssapi/generic/M > akefile.inc > index 9de18079a341..ef76172655d6 100644 > --- a/krb5/lib/gssapi/generic/Makefile.inc > +++ b/krb5/lib/gssapi/generic/Makefile.inc > @@ -36,7 +36,7 @@ SRCS+= disp_com_err_status.c \ > INCSGROUPS= GSSAPI_INCS > GSSAPI_INCS= gssapi.h > INCS+= ${GENI} > -GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi_krb5/gssapi > +GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi > > CLEANFILES+= gssapi.h ${GGEN} ${GGENI} > > diff --git a/lib/Makefile b/lib/Makefile > index e5139b312a75..9447cc4551c0 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -137,7 +137,9 @@ SUBDIR_DEPEND_libdevstat= libkvm > SUBDIR_DEPEND_libdpv= libfigpar ncurses libutil > SUBDIR_DEPEND_libedit= ncurses > SUBDIR_DEPEND_libgeom= libexpat libsbuf > +.if ${MK_MITKRB5} == "no" > SUBDIR_DEPEND_librpcsec_gss= libgssapi > +.endif > SUBDIR_DEPEND_libmagic= libz > SUBDIR_DEPEND_libmemstat= libkvm > SUBDIR_DEPEND_libpam= libcrypt ${_libradius} librpcsvc libtacplus libutil ${ > _libypclnt} ${_libcom_err} > @@ -176,7 +178,10 @@ SUBDIR.${MK_DIALOG}+= libdpv libfigpar > SUBDIR.${MK_FDT}+= libfdt > SUBDIR.${MK_FILE}+= libmagic > SUBDIR.${MK_GPIO}+= libgpio > -SUBDIR.${MK_GSSAPI}+= libgssapi librpcsec_gss > +.if ${MK_MITKRB5} == "no" > +SUBDIR.${MK_GSSAPI}+= libgssapi > +.endif > +SUBDIR.${MK_GSSAPI}+= librpcsec_gss > SUBDIR.${MK_ICONV}+= libiconv_modules > .if ${MK_MITKRB5} == "no" > SUBDIR.${MK_KERBEROS_SUPPORT}+= libcom_err > diff --git a/lib/librpcsec_gss/Makefile b/lib/librpcsec_gss/Makefile > index a29d9780c1ab..eebc975acbd2 100644 > --- a/lib/librpcsec_gss/Makefile > +++ b/lib/librpcsec_gss/Makefile > @@ -1,10 +1,16 @@ > +.include > + > PACKAGE=lib${LIB} > LIB= rpcsec_gss > SHLIB_MAJOR= 1 > SRCS+= rpcsec_gss.c rpcsec_gss_prot.c rpcsec_gss_conf.c rpcsec_gss_mis > c.c \ > svc_rpcsec_gss.c > > +.if ${MK_MITKRB5} == "no" > LIBADD= gssapi > +.else > +LIBADD= gssapi_krb5 > +.endif > > VERSION_DEF= ${SRCTOP}/lib/libc/Versions.def > SYMBOL_MAPS= ${.CURDIR}/Symbol.map > diff --git a/secure/libexec/sshd-session/Makefile b/secure/libexec/sshd-sessi > on/Makefile > index 8841cace5239..37e099794bd5 100644 > --- a/secure/libexec/sshd-session/Makefile > +++ b/secure/libexec/sshd-session/Makefile > @@ -39,15 +39,14 @@ LDFLAGS+=-L${LIBBLACKLISTDIR} > .endif > > .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" > -LIBADD+= gssapi_krb5 gssapi krb5 > .if ${MK_MITKRB5} != "no" > +LIBADD+= gssapi_krb5 krb5 > .include "../../krb5/Makefile.inc" > CFLAGS+= -I${KRB5_DIR}/include \ > -I${KRB5_SRCTOP}/include \ > - -I${KRB5_OBJTOP}/lib \ > - -I${KRB5_DIR}/lib/gssapi/generic \ > - -I${KRB5_DIR}/lib/gssapi/krb5 \ > - -I${KRB5_DIR}/lib/gssapi/mechglue > + -I${KRB5_OBJTOP}/lib > +.else > +LIBADD+= gssapi_krb5 gssapi krb5 > .endif > .endif > > diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile > index acb1fd4eaa25..a4f36d0fe2df 100644 > --- a/secure/usr.bin/ssh/Makefile > +++ b/secure/usr.bin/ssh/Makefile > @@ -18,7 +18,11 @@ SRCS+= gss-genr.c > LIBADD= ssh > > .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" > +.if ${MK_MITKRB5} == "no" > LIBADD+= gssapi > +.else > +LIBADD+= gssapi_krb5 > +.endif > .endif > > LIBADD+= crypto > diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makefile > index e6913cd9d0d6..f37dfe1c1b3a 100644 > --- a/secure/usr.sbin/sshd/Makefile > +++ b/secure/usr.sbin/sshd/Makefile > @@ -19,7 +19,11 @@ moduli: .MADE > LIBADD= ssh util > > .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" > +.if ${MK_MITKRB5} == "no" > LIBADD+= gssapi_krb5 gssapi krb5 > +.else > +LIBADD+= gssapi_krb5 krb5 > +.endif > .endif > > .if ${MK_TCP_WRAPPERS} != "no" > diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk > index 283a99496b9f..9ca043e7733c 100644 > --- a/share/mk/src.libnames.mk > +++ b/share/mk/src.libnames.mk > @@ -472,7 +472,11 @@ _DP_ncursesw= tinfow > _DP_formw= ncursesw > _DP_nvpair= spl > _DP_panelw= ncursesw > +.if ${MK_MITKRB5} == "no" > _DP_rpcsec_gss= gssapi > +.else > +_DP_rpcsec_gss= gssapi_krb5 > +.endif > _DP_smb= kiconv > _DP_ulog= md > _DP_fifolog= z > diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/Option > alObsoleteFiles.inc > index aa6d04f1cc43..8e5ac7fa2a63 100644 > --- a/tools/build/mk/OptionalObsoleteFiles.inc > +++ b/tools/build/mk/OptionalObsoleteFiles.inc > @@ -4836,6 +4836,7 @@ OLD_FILES+=usr/share/man/man8/sserver.8.gz > .else > .if ${MK_MITKRB5} != "no" > # Remove Heimdal because we want MIT KRB5 but not Heimdal > +OLD_FILES+=etc/gss/qop > OLD_FILES+=etc/rc.d/ipropd_master > OLD_FILES+=etc/rc.d/ipropd_slave > OLD_FILES+=usr/bin/asn1_compile > @@ -4921,6 +4922,8 @@ OLD_LIBS+=usr/lib/libasn1.so.11 > OLD_FILES+=usr/lib/libasn1_p.a > OLD_LIBS+=usr/lib/libcom_err.so.5 > OLD_FILES+=usr/lib/libcom_err_p.a > +OLD_LIBS+=usr/lib/libgssapi.a > +OLD_LIBS+=usr/lib/libgssapi.so.10 > OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 > OLD_FILES+=usr/lib/libgssapi_krb5_p.a > OLD_FILES+=usr/lib/libgssapi_mech.a > diff --git a/usr.sbin/gssd/Makefile b/usr.sbin/gssd/Makefile > index 569e2c7e18f5..336a1b49f696 100644 > --- a/usr.sbin/gssd/Makefile > +++ b/usr.sbin/gssd/Makefile > @@ -9,15 +9,14 @@ SRCS= gssd.c gssd.h gssd_svc.c gssd_xdr.c gssd_prot.c > CFLAGS+= -I. > WARNS?= 1 > > -LIBADD= gssapi > .if ${MK_KERBEROS_SUPPORT} != "no" > .if ${MK_MITKRB5} != "no" > # MIT KRB5 > -LIBADD+= krb5 k5crypto krb5profile krb5support > +LIBADD+= gssapi_krb5 krb5 k5crypto krb5profile krb5support > CFLAGS+= -DMK_MITKRB5=yes > .else > # Heimdal > -LIBADD+= krb5 roken > +LIBADD+= gssapi krb5 roken > .endif > .else > CFLAGS+= -DWITHOUT_KERBEROS > diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c > index 94eb6ca575c8..2a3af05496cf 100644 > --- a/usr.sbin/gssd/gssd.c > +++ b/usr.sbin/gssd/gssd.c > @@ -53,6 +53,9 @@ > #include > #include > #include > +#ifdef MK_MITKRB5 > +#include > +#endif > #include > #include > > From nobody Thu Aug 7 18:02:43 2025 X-Original-To: dev-commits-src-main@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 4byZkr2rGcz64Ybn; Thu, 07 Aug 2025 18:02:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZkr0Zqdz3jgn; Thu, 07 Aug 2025 18:02:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589764; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i+XlLsVO8IxqRlBi3qqO3E2EldF7nEJ/qxR+2xmw1bc=; b=HPiPv4VCyMRiI6fSRY0AO9rx9pmx1h9/oL9O9dQkkMq2j+baXkGwn6F/tyuUKDXUh0u1qL 8nKYMC7wi7yVBC9OjBmKmy6MTrBcmy63gowO4VZjZYvqxe3qWIGM9iTzK9BwdFQQsrYBuo iHPLazBLxTuHydU48L1QvTnyDfL3YpAaeBIIV6KXLYKVYBjb+z4XjrxXFcE0jXcqffD1K2 fYuSXg7Ys9Ob2N/FLJGyQKs8aronq88G+oNVTrABhMLTRlPVrJiVbjcx0zRcBEk7uV1Dh3 99dUCrRYJ6EIpNDkpsV5tXzVX4NJhwAEuglQiweN74fi/FBR/gsaz8ax9R1G6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589764; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=i+XlLsVO8IxqRlBi3qqO3E2EldF7nEJ/qxR+2xmw1bc=; b=n8myqj+So5aWRUZeIPf6BHeYlmcwEO2cI5HFjobumFaP7jPzzmQKU+JVQzfAEkQorgSgze gPtK3O6V8du+ipXYVwf326/xU8mQHGbhciBr+duJa6BnpdvNLUaoggqXvKj7+6tLPO3XcJ xIiiF6badmyRsY4sxachZ69Pcz7kGe8Utb1NdyX5KBlyr4c40PnUkb3tRrnnHbsUNOUCvi d535vbT/ZpQ8aNsvfFlZeK4GdgkjI05ale7TdxJnPysf5yImCis0N0uEJseh9KV4QoDfZo bbxjIPyAqzfYRhBoxLEUH7NChOcKwrP2pDVntj6wtztkjlHXUA6Bsvk0dVW7Qw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754589764; a=rsa-sha256; cv=none; b=QhC1EBvqd9KhmnKvpxp+jWUKKLa1g1mE1QZCrGX/GsSDwt4wriEfnXndvRFEau1Ei3T6YT kQFWTEXUTypAWX0AEDSRwDiHkToZ6or8jH2SgnG5Rkhzy3wpyInLVfrBxZ9UFz9amD+TjT pmQ85H86Pmd47XyO5hER8pzOXaqZvWVUDImhudgxitnTtG3aFU/2Yhe2n3KbG+SbGUT/Ls 58LMiPpoMAg84CamA54sDEZZtWHiCt2oVScrKbhxyZrnpec59j09qTjzZaOjkFy43s6TNM RV57StQthBvZBAmVDoEcoaZfF1om526ISjwjIwegN/gP7Ct2uzPx0mON5PkVGg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byZkq71XNz1Fsc; Thu, 07 Aug 2025 18:02:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577I2h3c043621; Thu, 7 Aug 2025 18:02:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577I2hPi043618; Thu, 7 Aug 2025 18:02:43 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:02:43 GMT Message-Id: <202508071802.577I2hPi043618@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 62f14d09a235 - main - RELNOTES: add note about 4TB RAM limit lifted List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 62f14d09a23513f36f432e837a065bb6456075c6 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=62f14d09a23513f36f432e837a065bb6456075c6 commit 62f14d09a23513f36f432e837a065bb6456075c6 Author: Konstantin Belousov AuthorDate: 2025-08-06 22:36:00 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-07 17:56:15 +0000 RELNOTES: add note about 4TB RAM limit lifted Reviewed by: emaste Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51779 --- RELNOTES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELNOTES b/RELNOTES index 42ca5282a79d..eb88be409ea4 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,10 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +d390633cf8c: + On modern amd64 machines (which have the LA57 CPU feature), + FreeBSD is able to utilize more than 4TB of RAM. + 2bd157bc732a: The readdir_r(3) function is deprecated and may be removed in future releases. Using it in a program will result in compile-time and From nobody Thu Aug 7 18:02:47 2025 X-Original-To: dev-commits-src-main@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 4byZkv3s6Fz64YZ7; Thu, 07 Aug 2025 18:02: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZkv32p7z3ht7; Thu, 07 Aug 2025 18:02:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589767; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qpfZth9rW1tgubF+iyEy0TqcYv/4yNXKtXKqV0RHxEc=; b=tZpFAxKu64x4G/P0Ap8Db2Gcnhp45yLFss3PoYif/6ei+Sy7s/RacFy+RRLC8zT7nifJaJ T2wRsye1Qnt2mJX0yphLoF/Tr5koFupkmmuNZxg5rjNhnrGFpuwnBrVopSHUkULeH4tjvd y0a/VUPZHp8mUso4pbNoqZbGfgYx1VtPR26LZAUSYMQpOQUb9SgSBAy61/LOpA93aM/6Ux TLAO7oeqlXqMeR3GKQWM/iWwwq/FKbbWrFN68CthMyA4bYrfYM8f6qW2L0yI7neIAqvlCa jE1Dgc5i1nzcs4ZxVexyBNdI42W944NwKm4qVkD8b8G3NmMyeeZ/thKrjtvHyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589767; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qpfZth9rW1tgubF+iyEy0TqcYv/4yNXKtXKqV0RHxEc=; b=XXK2JKwxzPK9yQLdgBCRig9BhJ325DF0NU0yw8DZRBsRE14/dyEh+6UxuLG7Kn9/qyLuCa p5433ug9rVdpspR402Sl3FMN+9OTfKKOtk/VZ7olqf/Ld4fhFTFvUR5n8n5RyNhpkGMGci gHt8QYi671OMriFUY8do0+rEj5FdUdG6b4Jy7FqfL0T+kenTnEAXcsfNqmrJH6VMiJMQmf tUtWpy5KPb5cCnf3dU3GYMIB4Zjjmqq8YzrfX5ahZMCWiCV+TKRk05RzAz/L7ig652PmUx NyUU1BlAFYiskpeXu3eUIgmlOY2rE6mu4Nf4giZUH37cSkJPlp31CJrpOcNBLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754589767; a=rsa-sha256; cv=none; b=qfrJgX4LCu8QP51zJhc5TLiS3H6Zrj2YMeJj4Ft9GfH8C/czf3HevabsW40HLIBQ2fRx0a X1gOkOnJ9QKVFqHsa7EVSmC/KJULKpUfH+jAmnOegaz9oRU0QPdKYmwiJGoV7PjA0pm1C1 7ERGZW/W2e4q3zniKrQi4oENSVaYw4l/VR7RYjXorEK8DTt7rOkJHSYo+2bMnoafK0EOcl 2YjzBN6djIxQ2b3wCmjjmzM40XHLxjYowSh979MtHd0FRgIikPoo7KDypnWPTOG+BQ+rJc raTvAOgb2LxSIfFKvgSRt7VVs91ricHAnzWW3Rz1yJXSsizGBMPlNS5zvDIajw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byZkv2clHz1FLl; Thu, 07 Aug 2025 18:02:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577I2l5F043721; Thu, 7 Aug 2025 18:02:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577I2l7o043718; Thu, 7 Aug 2025 18:02:47 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:02:47 GMT Message-Id: <202508071802.577I2l7o043718@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 80f976ba5486 - main - RELNOTES: amd64 tlsbase work List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 80f976ba54867d4c8186718491bf4b611dbbbe6a Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=80f976ba54867d4c8186718491bf4b611dbbbe6a commit 80f976ba54867d4c8186718491bf4b611dbbbe6a Author: Konstantin Belousov AuthorDate: 2025-08-06 22:43:09 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-07 17:58:18 +0000 RELNOTES: amd64 tlsbase work Reviewed by: emaste Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51779 --- RELNOTES | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/RELNOTES b/RELNOTES index 4afe8ef613a8..641337663ebd 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,11 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +68ba38dad3: + amd64: handling of the %fsbase/%gsbase registers and tls base + were reworked, making it more useful for apps that directly + manipulate CPU context. + 78aaab9f1cf: rtld: added support for -z initfirst From nobody Thu Aug 7 18:02:45 2025 X-Original-To: dev-commits-src-main@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 4byZkt4sCSz64YMZ; Thu, 07 Aug 2025 18:02: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZks1Z4Hz3jgp; Thu, 07 Aug 2025 18:02:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589766; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CORPu6UHy32vPGKOGFVejJUH4Sb1EEonufwr5F/LPXU=; b=n5Y+ZTawvTk0pjtZLQidMiWLXND/ZfK9NEA3Tick0buSgCgqygHC5cS+/2RrX97rmTfssi PoC6BURAZAmfIGj+ayyfQ6O5kx2tRcRX84JmCOz1sytRkrKNZlISspUHOJ1CfJHoqVEhl8 QQa4UQ0Lk7N5ffJxCBlVhsdW/Su4cus0rT26u17ci+nU6ipwyzALUflAitUIYz55XmMKjQ ze6aebIaD5b/yJhiJm7+jILGBaFmyU07sJirrY/x1FqYe4TL7Gi4fxNT0Xvb2EhdzXCRAd oRlzUvtIwesHYFgOMeovgwq+9FuUOJIQoqDsadiJYGmzyY844/xyXee9Fpx8UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589765; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CORPu6UHy32vPGKOGFVejJUH4Sb1EEonufwr5F/LPXU=; b=p4gnMWRfNG+f8m5qcJH3NYjYCJ3UJ4wRk010arwk5wvcL27s+EMyd4KnJoMNK5+LRFmshw /nxo7xjJlj9DDhEKOIE1OPgqPZWBRQ0i3n0YM/4fmXwI1F22Xj7cgDaunQxKJ+oiD0IfAu 9SfuzpT6r1yWZUA/1O7ATuz6BXZ3UabMpeoZtw35TgTkrQqk53+7C6nYTP/C8PzH6GmM+p B9ZUWLmJTnUqfdfwbQ0HuyQcDoUJ1zGre1byE9hP204e8PmBh5uSk+hR0LCtf3wKJ1OnX6 F9Q8K9UROoEjUzt5hu6r4+t7N8IyMx2NRmbA+Ecq3ERPxylwqNvR6lNR/JzYeA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754589765; a=rsa-sha256; cv=none; b=EuUJTrM011pvCBzB1vTfY5G3w6BnivNTtkfOZjP//gfdgetE2tr4k8PThRGJhcVGPI9T1o QRJ0CDPwn7eaOXHDJw0h0Zku3p4Jkm2wJZUbms0LrSZZ05ow7HaAShiQGanLEO+qSdBh+w msDvmue+vSsUGdsW2ow0q86uxTny936Q7FOCJ3cZ0gqkRukbz/UQH0fC9+GWq4RadSj+Kz Ds/uPd9oST/rhAj+ZjI9G3VKxFa5nwpHrHLkDll6xHfwc2nfjtc2S0XABBHqeWXa5d7/+j Ax1AWPgLrFkQwm0gqdCCt6n7jX+mzYE5MuV1g7S4UDj8OQr4LdoOXiFZOE++xA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byZks17bXz1GLM; Thu, 07 Aug 2025 18:02:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577I2jGP043654; Thu, 7 Aug 2025 18:02:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577I2jr4043651; Thu, 7 Aug 2025 18:02:45 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:02:45 GMT Message-Id: <202508071802.577I2jr4043651@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: a60b8e496ff7 - main - RELNOTES: mention UFS on large (>2G inodes) volumes improvements List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a60b8e496ff758e5201b9953b3e916571b147f6d Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a60b8e496ff758e5201b9953b3e916571b147f6d commit a60b8e496ff758e5201b9953b3e916571b147f6d Author: Konstantin Belousov AuthorDate: 2025-08-06 22:38:48 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-07 17:58:13 +0000 RELNOTES: mention UFS on large (>2G inodes) volumes improvements Reviewed by: emaste Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51779 --- RELNOTES | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/RELNOTES b/RELNOTES index eb88be409ea4..e8c306fc74c3 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,12 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +e36f069ecb4, c069ca085b: + Reliability of UFS on volumes with more than 2G of inodes is + significantly improved. The underlying issue was the invalid + interpretation of the 32bit inode number as signed, which got + sign-extended into ino_t. + d390633cf8c: On modern amd64 machines (which have the LA57 CPU feature), FreeBSD is able to utilize more than 4TB of RAM. From nobody Thu Aug 7 18:02:46 2025 X-Original-To: dev-commits-src-main@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 4byZkt4sNvz64Yhd; Thu, 07 Aug 2025 18:02: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZkt26V5z3jb1; Thu, 07 Aug 2025 18:02:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589766; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DxAdt81x4UMZ2a5lKuVKoPt8xHgF/Tvd7S7xCvogMb4=; b=j3FwaiJ7SSU+21ThwnlOJSXUsMjGWjq9+tDiO7JFbXbl3G6kT5fhOsb6vdT/F1hKCtah7S hT+hsNPo+0b9PiZJaOqTKDacM6fEFqH9TMimcdNrXb+IOU2qhLPLaZuU+rxiuJpWygv+FK 8F8wZN/ljZ1sKaxfzP/ALTp/ewlVw0MxhfcnApL17j5+64ceQ1cldKpONwFIJAsY+N8T+7 00XbxGJO/JP5pjuJibOFmLVrExw7aMbX0hMoOtJ78jW9l8uOkDVwpI/zwIFNi2TRqq8Al3 H+33rxaoOVW8vWWpoQ9jS2vYUV/5996+E0z3VxgBZuuGbJsZJILiOwAEBIXLgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589766; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DxAdt81x4UMZ2a5lKuVKoPt8xHgF/Tvd7S7xCvogMb4=; b=ggYGCnkn8oM/QsogzD61990QV4LYIdS7uT5nTB+sGKF8q9RX+6SYlPf8fLukfVTsgT0wAY 0nS6Xao3pooh2kyn0ubvUcYpWvrzhDCPeUqEQP6ZHoSpqGaqgZlFDlxYq9JuF1u//P+xp/ GYMgD96iEEgkgv337mbS+1f+o23ELF04/PjLZO4XUuw3uoTPcy2v/vY7ZqHaf3aOSXT7XC 9+bhPTcht3ByLIOXxrSk3wu01iZkoeYBFeU9qAPEKpljyFuDapkTmu7lxm3mdyRsXJrXre A31eh56wE8MgWzYgFeAZWJR7/AbiDyJszysd5e5XcJdL4Kx+PHsHWxyRzO3wVA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754589766; a=rsa-sha256; cv=none; b=jVN7rRh2Ss6sKahNdflAchhwP2uoFA1leu8w8gRouFH96vloxtXYBCA8Qeao+5/01c1Uiy 0KR/1Rq8P2SEV9rVuMua3XzfQhM8OMQNujy9qe8CdKKZtmHPkXYGQ284QilE9Tf8B7FNMz /txFzvwhvkvnJY4iPzzb6DSHe7diN4lD+kM+/WiSKolT6C4vI3eMd7sqEwWtMTxymi988G MHQvR0GEkGBEhC/3Ga9jNDlHjA+I+sLQIrIJC4XAaAad4aDkBWqOPdHyc15akcrfe2AyaX +DPICckPvNsLCS6Jfh2Zh00Z7m+U7JHkxJ3IHCXVFUaAwqn1HWlT58BFGmjpig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byZkt1jfqz1FdF; Thu, 07 Aug 2025 18:02:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577I2kTC043688; Thu, 7 Aug 2025 18:02:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577I2kKD043685; Thu, 7 Aug 2025 18:02:46 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:02:46 GMT Message-Id: <202508071802.577I2kKD043685@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 1c2348e7723c - main - RELNOTES: mention rtld -z initfirst support List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1c2348e7723c9bf89c882d226592e16ba3a36049 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1c2348e7723c9bf89c882d226592e16ba3a36049 commit 1c2348e7723c9bf89c882d226592e16ba3a36049 Author: Konstantin Belousov AuthorDate: 2025-08-06 22:42:37 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-07 17:58:18 +0000 RELNOTES: mention rtld -z initfirst support Reviewed by: emaste Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51779 --- RELNOTES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RELNOTES b/RELNOTES index e8c306fc74c3..4afe8ef613a8 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,9 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +78aaab9f1cf: + rtld: added support for -z initfirst + e36f069ecb4, c069ca085b: Reliability of UFS on volumes with more than 2G of inodes is significantly improved. The underlying issue was the invalid From nobody Thu Aug 7 18:02:48 2025 X-Original-To: dev-commits-src-main@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 4byZkx1gSlz64YZ8; Thu, 07 Aug 2025 18:02:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZkw5w14z3jh3; Thu, 07 Aug 2025 18:02:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SsS2KzNDrpY/0qQcKf9GoHLARxuoyuFHJzOnMqOinb8=; b=HdzWMxfawxV/BkgyHRy9ZIaTHyCUd6hEnZLg4iBWv9TkwgHGDZakUi+Eqev4tAW5IFUsc7 VKgnIstRys0jH4Ll6EAfhyzo/8ewMhz8K4LKWKIunotI9ce+AwImtVIdivXz+e9v7pqdIB iySQt+VPJR9ZqU+d/JBPqnqOESChlyLxJa5S1gAHUZxCzZMhZ8fG1X2ZBATcLH9HbZNien FSSzjaI7VwwKgagMg05GrSq11UnoTxE+uLEDPHgxHS3rsV3UpF/ACOs92PeOyDG8Kt5RnV spZYodq2Tb9QjwuRphi9AFegev+td0YeLSM34lkcTTSD0DU1G5ec3uV28d4RQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754589768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SsS2KzNDrpY/0qQcKf9GoHLARxuoyuFHJzOnMqOinb8=; b=Sw9UEwFARalNqoqTY037GhGRCGDSxJDoBQMc8BEyriPDKMdgnC6IU9e6+jWtbbvzI4hfZG zQ/wTmI/GdHDEOtA7F/NootLsflKdDEnNU5n7gcR8mHm5QM58vowg/2z2SJ1Lieo5Xplb/ dLS2YIu9CDWADO05/YnzxA0XaKZaMhokcnu4sdnMzZvMJHrlwvKgUUBkuzb0PUBiZ50ac4 z4SpH8BOk/8rCkHDzCKzLGn/XobAN+ARoCIQyvSPel0c9iLBXu6jhkie95s3fKuJpQ1FO/ QCbcrr5AUXnrWvWW8vczWtgxHhQyDVmeaaQEU2WeVkm60w6qGfGDkElcG2SSiQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754589768; a=rsa-sha256; cv=none; b=aYi6zaTnp5jC3LCBHin1BuCiKaweUsRvJLDjZo57OswGK5OFVlwwnmyAkmU3QxIC/kNfwj 7r5LoqtUN5O52Z6toiav4Hp/0neRw16CPVD5tgrOze1gDwpes913iW0qPFlTXZg2nUFh6y 85RZYeJJNZ9lbI3otrde25rDuTsN9l8zsuDTZDbJFvWdvM6NZxhPi2ohZeQqHa++Had6xh uPSqDU3daup2BYMO5GZ2YqxhUOaEqDoQoYAJGRaR5iYv/opaYIOCM17bWQtaDxPJMa0UGV GE1NNpTdwUY3rO6sRSoKQjvZEGYRO2yzUj9DfJqWY2wBktfYbZXQKQtHLF7fCQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byZkw3bfgz1GLN; Thu, 07 Aug 2025 18:02:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577I2mQT043754; Thu, 7 Aug 2025 18:02:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577I2mST043751; Thu, 7 Aug 2025 18:02:48 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:02:48 GMT Message-Id: <202508071802.577I2mST043751@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 53ae625bbda4 - main - RELNOTES: mention inline IPSEC offload List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 53ae625bbda414b1bc73200289178b988dbed1cd Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=53ae625bbda414b1bc73200289178b988dbed1cd commit 53ae625bbda414b1bc73200289178b988dbed1cd Author: Konstantin Belousov AuthorDate: 2025-08-06 22:45:18 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-07 17:58:18 +0000 RELNOTES: mention inline IPSEC offload Reviewed by: emaste Sponsored by: NVidia networking Differential revision: https://reviews.freebsd.org/D51779 --- RELNOTES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELNOTES b/RELNOTES index 641337663ebd..fa42b77f482b 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,10 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +ef2a572bf6: + Inline IPSEC offload infrastructure and driver support for mlx5(4) + Nvidia ConnectX-6+ network cards were added. + 68ba38dad3: amd64: handling of the %fsbase/%gsbase registers and tls base were reworked, making it more useful for apps that directly From nobody Thu Aug 7 18:11:27 2025 X-Original-To: dev-commits-src-main@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 4byZxG33b3z64Z94 for ; Thu, 07 Aug 2025 18:11:46 +0000 (UTC) (envelope-from bT.ia5yngtnuvteac2=5ozah5gl11i3=riw4n5xpfmna57@return.smtpservice.net) Received: from e2i504.smtp2go.com (e2i504.smtp2go.com [103.2.141.248]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4byZxG1Pllz3lXb for ; Thu, 07 Aug 2025 18:11:46 +0000 (UTC) (envelope-from bT.ia5yngtnuvteac2=5ozah5gl11i3=riw4n5xpfmna57@return.smtpservice.net) Authentication-Results: mx1.freebsd.org; none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=mgy720.a1-4.dyn; x=1754591206; h=Feedback-ID: X-Smtpcorp-Track:To:Date:Subject:Message-Id:From:Reply-To:Sender: List-Unsubscribe:List-Unsubscribe-Post; bh=lBE03yPW4ydyTzl92xe07ZyfURG7lFVChNrB+YovciQ=; b=Ykor91aZ50FsAEyvh7t1HIl4wu 6PsKq41HVmC6x6FiyGVImJJlWzKdwxytXTdpt0WYebCJaXOKJqTiVZtI7h3G8XcrMbmPQiuQmnnQo 3nqDFEtD8tjI2yO+OPBzjIh2m+Zbb/PAWJ4ejzmk3G0OnGcGwljuvpxO8VCUfonKdsGQuIOZkvJSB 1ETRFnHyz/NkLHVOWJUQv+z7II11euNmtERZH3WO1tx/PlcxsMccW91JQA6zg0PKgDRkfXqaMfgbk lHlkJqlCKWCsnVeDd2zOw9+M/hs2IeDINSASpO5yn9fl8t4nQYJd2JZDBUWUUwUzVll9yXmc5F9QL 3MSZ4K8A==; Received: from [10.172.233.45] (helo=SmtpCorp) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94.2-S2G) (envelope-from ) id 1uk55Z-TRjyZB-9Y; Thu, 07 Aug 2025 18:11:40 +0000 Received: from [10.99.243.232] (helo=morbo.fubar.geek.nz) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.1-S2G) (envelope-from ) id 1uk55Y-AIkwcC8off5-JUcH; Thu, 07 Aug 2025 18:11:40 +0000 Received: from smtpclient.apple (unknown [IPv6:2a02:8012:a6a8:0:e8f7:66f7:40de:c5d9]) by morbo.fubar.geek.nz (Postfix) with ESMTPSA id D16E13230E; Thu, 07 Aug 2025 18:11:39 +0000 (UTC) From: Andrew Turner Message-Id: <17013D96-9EB7-49BA-BE43-E31DE1E4869C@FreeBSD.org> Content-Type: multipart/alternative; boundary="Apple-Mail=_B9AE9EF9-6ACF-4685-8260-131B5228147B" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 7d900907c8cf - main - bhyve/arm64: Tidy up a licence comment Date: Thu, 7 Aug 2025 19:11:27 +0100 In-Reply-To: <12B54042-A019-4D4A-9130-CB4088B1A1EC@freebsd.org> Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: Jessica Clarke References: <202508071642.577Ggcfb093803@gitrepo.freebsd.org> <12B54042-A019-4D4A-9130-CB4088B1A1EC@freebsd.org> X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Smtpcorp-Track: GHRafoDc5R2O.GzLz3k_LxiX9.bETu3Abj6DU Feedback-ID: 790814m:790814amQcrys:790814scGYHnPmJ- X-Report-Abuse: Please forward a copy of this message, including all headers, to X-Rspamd-Queue-Id: 4byZxG1Pllz3lXb X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:23352, ipnet:103.2.140.0/22, country:US] --Apple-Mail=_B9AE9EF9-6ACF-4685-8260-131B5228147B Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 7 Aug 2025, at 17:48, Jessica Clarke wrote: >=20 > On 7 Aug 2025, at 17:42, Andrew Turner > wrote: >>=20 >> The branch main has been updated by andrew: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D7d900907c8cf06f1c2da7fefec4f872b= 9285aa38 >>=20 >> commit 7d900907c8cf06f1c2da7fefec4f872b9285aa38 >> Author: Andrew Turner >> AuthorDate: 2025-08-07 10:45:38 +0000 >> Commit: Andrew Turner >> CommitDate: 2025-08-07 11:30:59 +0000 >>=20 >> bhyve/arm64: Tidy up a licence comment >>=20 >> Remove an unneeded dash and add a missing space >>=20 >> Reported by: des (missing space) >> Sponsored by: Arm Ltd >> --- >> usr.sbin/bhyve/aarch64/bhyve_machdep.h | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >>=20 >> diff --git a/usr.sbin/bhyve/aarch64/bhyve_machdep.h = b/usr.sbin/bhyve/aarch64/bhyve_machdep.h >> index 9e01d906ad4d..e487bb5a0f44 100644 >> --- a/usr.sbin/bhyve/aarch64/bhyve_machdep.h >> +++ b/usr.sbin/bhyve/aarch64/bhyve_machdep.h >> @@ -1,8 +1,8 @@ >> -/*- >> +/* >=20 > This is meant to be there. It=E2=80=99s not there in the licensing guide [1]. I assume it was = needed before the use of SPDX tags. Andrew [1] https://docs.freebsd.org/en/articles/license-guide/= --Apple-Mail=_B9AE9EF9-6ACF-4685-8260-131B5228147B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On 7 Aug 2025, at 17:48, Jessica Clarke = <jrtc27@freebsd.org> wrote:

On 7 Aug 2025, at 17:42, Andrew Turner = <andrew@freebsd.org> = wrote:

The branch main has been updated by = andrew:

URL: = https://cgit.FreeBSD.org/src/commit/?id=3D7d900907c8cf06f1c2da7fefec4f872b= 9285aa38

commit = 7d900907c8cf06f1c2da7fefec4f872b9285aa38
Author: =     Andrew Turner = <andrew@FreeBSD.org>
AuthorDate: 2025-08-07 10:45:38 = +0000
Commit:     Andrew Turner = <andrew@FreeBSD.org>
CommitDate: 2025-08-07 11:30:59 = +0000

  bhyve/arm64: Tidy up a licence = comment

  Remove an unneeded dash and add a missing = space

  Reported by:    des (missing = space)
  Sponsored by:   Arm = Ltd
---
usr.sbin/bhyve/aarch64/bhyve_machdep.h | 4 ++--
1 file = changed, 2 insertions(+), 2 deletions(-)

diff --git = a/usr.sbin/bhyve/aarch64/bhyve_machdep.h = b/usr.sbin/bhyve/aarch64/bhyve_machdep.h
index = 9e01d906ad4d..e487bb5a0f44 100644
--- = a/usr.sbin/bhyve/aarch64/bhyve_machdep.h
+++ = b/usr.sbin/bhyve/aarch64/bhyve_machdep.h
@@ -1,8 +1,8 = @@
-/*-
+/*

This is = meant to be there.

It=E2=80=99s = not there in the licensing guide [1]. I assume it was needed before the = use of SPDX = tags.

Andrew

[1] ht= tps://docs.freebsd.org/en/articles/license-guide/
= --Apple-Mail=_B9AE9EF9-6ACF-4685-8260-131B5228147B-- From nobody Thu Aug 7 18:18:21 2025 X-Original-To: dev-commits-src-main@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 4byb596bwBz64ZNm for ; Thu, 07 Aug 2025 18:18:37 +0000 (UTC) (envelope-from bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net) Received: from e2i504.smtp2go.com (e2i504.smtp2go.com [103.2.141.248]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4byb594xNJz3mJt for ; Thu, 07 Aug 2025 18:18:37 +0000 (UTC) (envelope-from bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net) Authentication-Results: mx1.freebsd.org; dkim=none ("invalid DKIM record") header.d=smtpservice.net header.s=mgy720.a1-4.dyn header.b="s/k0bgZK"; spf=pass (mx1.freebsd.org: domain of "bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net" designates 103.2.141.248 as permitted sender) smtp.mailfrom="bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=freebsd.org (policy=none) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=mgy720.a1-4.dyn; x=1754591617; h=Feedback-ID: X-Smtpcorp-Track:To:Date:Subject:Message-Id:From:Reply-To:Sender: List-Unsubscribe:List-Unsubscribe-Post; bh=wKQfGDhnsqEW6OO2/C5oIz9tlJ7JEfx7ORzQmJsZZAo=; b=s/k0bgZKx5P6G0AqZ6cIKFRUKB gQ6rxWkev+K33v5/XKUUEus5kcpB+jiJWxZS/iBeDtNkpXxjdx/ztei5nRi5bfPYn0q2hIlTJ+6R5 786vW7V97UXP9nutMIzBsQY67ME/waHf7A1HFY6YFGmiTmkTzKMp3so3ANTdLnwUBJxOT72hezKX7 y84q2c46GIStY4hZMaZVjC0pTp6+gDdtMfYa5uqXtVRrq7Inhxrld4qWuuLyow+u53x9s+6+W5K9N h6TU/IF82Epp8D0vqvdySPy562d/JJG6OJfd8fnAJCfEWrA1zZd1GUZCQzuvy1Q3BSRoaQlTuQigy mwdPZ+kQ==; Received: from [10.172.233.58] (helo=SmtpCorp) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.94.2-S2G) (envelope-from ) id 1uk5CE-TRk6tY-HO; Thu, 07 Aug 2025 18:18:34 +0000 Received: from [10.99.243.232] (helo=morbo.fubar.geek.nz) by smtpcorp.com with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.98.1-S2G) (envelope-from ) id 1uk5CD-FnQW0hPli96-ntwf; Thu, 07 Aug 2025 18:18:33 +0000 Received: from smtpclient.apple (unknown [IPv6:2a02:8012:a6a8:0:e8f7:66f7:40de:c5d9]) by morbo.fubar.geek.nz (Postfix) with ESMTPSA id DBB033229D; Thu, 07 Aug 2025 18:18:32 +0000 (UTC) From: Andrew Turner Message-Id: <6BCAD216-03E1-4DA3-B0BB-542366F003DB@FreeBSD.org> Content-Type: multipart/alternative; boundary="Apple-Mail=_D384173A-B019-428E-93B1-239555A3C84A" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 81f07332c03f - main - arm64: tidy up Top-Byte-Ignore (TBI) in the kernel Date: Thu, 7 Aug 2025 19:18:21 +0100 In-Reply-To: Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: Jessica Clarke References: <202508061738.576Hc0wZ076618@gitrepo.freebsd.org> X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Smtpcorp-Track: KoIIseQ8yQty.3Ydyh4ZQ-OvT.198_8wNUXsu Feedback-ID: 790814m:790814amQcrys:790814sm59Ge4EAY X-Report-Abuse: Please forward a copy of this message, including all headers, to X-Spamd-Result: default: False [-2.99 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.99)[-0.991]; MV_CASE(0.50)[]; RWL_MAILSPIKE_EXCELLENT(-0.40)[103.2.141.248:from]; FORGED_SENDER(0.30)[andrew@FreeBSD.org,bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net]; R_SPF_ALLOW(-0.20)[+ip4:103.2.140.0/22:c]; RCVD_IN_DNSWL_MED(-0.20)[103.2.141.248:from]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed),none]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; ARC_NA(0.00)[]; R_DKIM_PERMFAIL(0.00)[smtpservice.net:s=mgy720.a1-4.dyn]; TO_DN_EQ_ADDR_SOME(0.00)[]; DKIM_TRACE(0.00)[smtpservice.net:~]; RCVD_VIA_SMTP_AUTH(0.00)[]; ASN(0.00)[asn:23352, ipnet:103.2.140.0/22, country:US]; FROM_NEQ_ENVFROM(0.00)[andrew@FreeBSD.org,bT.d16wipw2shp1oz2=g7w6na8xddxm=ezsbaizk7sbiui@return.smtpservice.net]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@FreeBSD.org]; MIME_TRACE(0.00)[0:+,1:+,2:~]; TO_DN_SOME(0.00)[] X-Rspamd-Queue-Id: 4byb594xNJz3mJt X-Spamd-Bar: -- --Apple-Mail=_D384173A-B019-428E-93B1-239555A3C84A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 6 Aug 2025, at 18:43, Jessica Clarke wrote: >=20 > On 6 Aug 2025, at 18:38, Andrew Turner > wrote: >>=20 >> The branch main has been updated by andrew: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D81f07332c03fd2ac6efa8e15b1659a57= 3d250329 >>=20 >> commit 81f07332c03fd2ac6efa8e15b1659a573d250329 >> Author: Harry Moulton >> AuthorDate: 2025-07-31 14:10:57 +0000 >> Commit: Andrew Turner >> CommitDate: 2025-07-31 14:27:06 +0000 >>=20 >> arm64: tidy up Top-Byte-Ignore (TBI) in the kernel >>=20 >> In preparation for TBI to be enabled for processes from 15.0 we = need >> to clean up copying data between userspace and the kernel. These >> functions will check the address is within the valid userspace = range, >> however as the userspace and kernel ranges may overlap when TBI is >> enabled we need to mask off the top 8 bits. >>=20 >> Processes not using TBI are unaffected as the hardware will still >> check all bits in the address, however this will happen at the = first >> load/store instruction. >=20 > I thought Linux=E2=80=99s ABI was that addresses passed to the kernel = must be > canonical. Is that false, or is there a reason we=E2=80=99re diverging = from > that design choice? On Linux there is a flag to enable passing tagged pointers to the = kernel. It=E2=80=99s needed for HWASAN to work as any pointers may be = tagged, and I expect it will also be needed for MTE. I don=E2=80=99t know of a strong reason to not allow tagged pointers in = the kernel. Andrew= --Apple-Mail=_D384173A-B019-428E-93B1-239555A3C84A Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On 6 Aug 2025, at 18:43, Jessica Clarke = <jrtc27@freebsd.org> wrote:

On 6 Aug 2025, at 18:38, Andrew Turner = <andrew@freebsd.org> = wrote:

The branch main has been updated by = andrew:

URL: = https://cgit.FreeBSD.org/src/commit/?id=3D81f07332c03fd2ac6efa8e15b1659a57= 3d250329

commit = 81f07332c03fd2ac6efa8e15b1659a573d250329
Author: =     Harry Moulton = <harry.moulton@arm.com>
AuthorDate: 2025-07-31 14:10:57 = +0000
Commit:     Andrew Turner = <andrew@FreeBSD.org>
CommitDate: 2025-07-31 14:27:06 = +0000

  arm64: tidy up Top-Byte-Ignore (TBI) in the = kernel

  In preparation for TBI to be enabled for = processes from 15.0 we need
  to clean up copying data = between userspace and the kernel. These
  functions will = check the address is within the valid userspace = range,
  however as the userspace and kernel ranges may = overlap when TBI is
  enabled we need to mask off the top 8 = bits.

  Processes not using TBI are unaffected as the = hardware will still
  check all bits in the address, = however this will happen at the first
  load/store = instruction.

I = thought Linux=E2=80=99s ABI was that addresses passed to the kernel must = be
canonical. Is that = false, or is there a reason we=E2=80=99re diverging from
that design choice?

On Linux there is a flag to = enable passing tagged pointers to the kernel. It=E2=80=99s needed for = HWASAN to work as any pointers may be tagged, and I expect it will also = be needed for MTE.

I don=E2=80=99t know of a = strong reason to not allow tagged pointers in the = kernel.

Andrew
= --Apple-Mail=_D384173A-B019-428E-93B1-239555A3C84A-- From nobody Thu Aug 7 18:21:21 2025 X-Original-To: dev-commits-src-main@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 4byb8L1Bvvz64Zb1; Thu, 07 Aug 2025 18:21: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byb8K6MDmz3mxC; Thu, 07 Aug 2025 18:21:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754590881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W1GcAZYRmcsPJmsS+gs8JElU0An0VU9o/QFdFSDKpvw=; b=JPOGjRE6FJSiowfMxwN6P3KXn32SXQ/GaGH9PMFlMnscOUqWeWVcwPoNjXq1gLVs+OZnJI xhJynyniwggRJUaJnu6vT9hQvSi5ZYYVnVoNt/ZZ0MJneQYv6hVQsMGnN2D0EJY4qeU8XS 2blA6CtRPkioy6f4GXNb3NLKVE9RNumkYKCiTisXuwQLgAys1NNOtARJ9Hg64LOizVDIzT BayxP5QdhPZDlgnR3Rl/3X8ACE2ksucO933NPqKMkkaxl1sUjO8R34Ea2F4q3qSEz+UouY VqgDVkMzOHmwMeSMnEkZ8WVtPTm/lhvI2lxTmkhYQWmiVOeVrY6OzCpD6NM1fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754590881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W1GcAZYRmcsPJmsS+gs8JElU0An0VU9o/QFdFSDKpvw=; b=s5A6mzYoN9OYzbLCjUdCaOSlQ+vdnSP2BaUobCok+AB0TeW/g2cwOoPQnFNKb9szwcJ2bl sjX4DuLoe1ABpqpzCqi3vEr7GfJJp0ZdAK96gFuiHaklRtbKuo4u3U+oJhryY/vy61ruD8 bwCr0YFvBOM+dP7/1/2OySym9nQorklaEUZyD/JmmHlnYb/j6cpr3biI/k9u3ZEg67v2xk 2i5rWsOV+EID4KGWlmGKyoHpdf8Mer6OZhhAgmTq50lZ97xIeNXYnW9A6yrm8AFL+5Jtvj 7iM6eBUdo5zigtkpCFJ0nszxrS7Yn5wY7/9t8o1TNDcZFCKB4eL4vI7EmYFfJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754590881; a=rsa-sha256; cv=none; b=hS1sbU+f1RMfDZvyQXizRg3m5A+/J9+bRBYTSgs9SFuW5zNOSSUQsLZWL32RMpLKH5M8iM BpcW2sPihvBSkop2f4+yRrwomxJ4LC9j3QHRLOdFPGyP20C/7HaUHdIyMgcG2XxJWFuiOs MQhWsRfzk0EcHbeOqKQqhvSM0KTA6fmyl8FdbNMqAnbiy9KE1ZrnklDJ8bT0wZgtQv3Zqq WM8P0w0ABuAEJE7asI0JjsKSM8KVFrZ5arUteiGSbwCxFJgSPI6OnCTW9tI7Hs/IDyV6An 98PRh5xWnTLeEiicYs8wLT09CmTgyQIEHryrAR5mQzfy0RfHCA8/LT7vsLcjVg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byb8K5nRxz1GKl; Thu, 07 Aug 2025 18:21:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577ILLEE076772; Thu, 7 Aug 2025 18:21:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577ILLVa076769; Thu, 7 Aug 2025 18:21:21 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:21:21 GMT Message-Id: <202508071821.577ILLVa076769@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: b3340428f394 - main - Bump __FreeBSD_version for 0c381b7f0570 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b3340428f394d08b9776899c7f6dc16ed5fd590c Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=b3340428f394d08b9776899c7f6dc16ed5fd590c commit b3340428f394d08b9776899c7f6dc16ed5fd590c Author: Colin Percival AuthorDate: 2025-08-07 18:19:21 +0000 Commit: Colin Percival CommitDate: 2025-08-07 18:21:09 +0000 Bump __FreeBSD_version for 0c381b7f0570 This is necessary so that pkg builds will link to the new libutil shared object version. Reported by: antoine Fixes: 0c381b7f0570 ("libutil: Add symbol versioning") --- sys/sys/param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/param.h b/sys/sys/param.h index f7abc740ddc3..de3697d6dedd 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -74,7 +74,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1500056 +#define __FreeBSD_version 1500057 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From nobody Thu Aug 7 18:26:51 2025 X-Original-To: dev-commits-src-main@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 4bybGh28R4z64Zqf; Thu, 07 Aug 2025 18:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bybGh14MXz3ncs; Thu, 07 Aug 2025 18:26:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=irIYwuqdx2y74aaxAuk1iOVAfjAw2N2sgZKeIaRF0tM=; b=UZK7Z7k4yfDIiEmZNauE9iqB4eAaCY5PRKsjc7zibbXVOYYqQ9dp0VbIz+2SHssQm9kvfe IrM+uncsOGryXv85MFVBTV51YQovgOY8rqn4GO2QRqZvqD7ArZUe06pyzvM/uFdlWySSov z2a9C0ziQ12yjBRgNHY/kLuJx1Zr+h6FE11vDQlvzt8VovcEggXoQCAYdGONRhEiKsxKNA 2HJ+F01Xmf2THpDkuecj7sCAdPFaF8co9AgTmBQ5RI+aMACp02/dayGMyulLzy7hB8LnlL 8YRq3QWkW7dVwflipZyvMr6su1EtK+ltHuYP0+6ZuK7za/EJ+lE7D19XGP9gjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=irIYwuqdx2y74aaxAuk1iOVAfjAw2N2sgZKeIaRF0tM=; b=Ywal/w537sv/7tqViHKCXoM0+cdLCpbnJ3bEcaSHCE5ppa4pwVILviwm1jsoBfCs+bihoC +vf+Eys7xCtAPMlaxXfwqdzFBjMt72BoYl2G+PhT4FjCSZwaDsOlF+89r1XLhPJBxf5nQU GjDt71FNtdB8J89fct5b9I34mFwWd7ZK0efs26/1SXsBW/Gfndb7s9qtXewYbZE7F5GGLc nzVFNX8CvZKtR7/ZBLGG5+2YQrFIUFe+B1nz5oYkYYlBxlwF1flbyOopz7bKKWpJO2I4eH 6o64AMxlXqxQTM21BFco19WHIUkluEK6PPkCBe/OO7paevOtASirx57ejhK17Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754591212; a=rsa-sha256; cv=none; b=lP/MDvun4P62hmReMCi2eZF5DajjJRU+V8gH04k5aUEMRtYLILYQWW48zMXLqxOhVil3gm oA5I7g/Txqcojwbc0YYoGcmoz4EioiW85wNDcGrUtNTuAJUrHwixhmsXGaHq95KR39RrlV Farg3CeHJj2tOCqGdrItWNtoAl4aa4tIIv/TGzFV/YcitpumOUOS7bqm6eXVIDCAA52ay1 ZA7Qdjp6ZSw6yDpUBExhABaNswGstjAUoZMofItOjP8WJUda6STOfuNtLM71vZT30ajaXw INZOeF/LmgvKjQMsezwZYuZJEbT2ZSgED9lVkoPpuAvHFjK+Kujd9Es0jI2mLw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bybGh05lyz1H4h; Thu, 07 Aug 2025 18:26:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577IQpoQ081493; Thu, 7 Aug 2025 18:26:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577IQpIw081490; Thu, 7 Aug 2025 18:26:51 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:26:51 GMT Message-Id: <202508071826.577IQpIw081490@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ca0d182dfeb6 - main - libutil++: Appease GCC -Wshadow warnings in constructors List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ca0d182dfeb68405cfba002622787adb10cfe7a0 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ca0d182dfeb68405cfba002622787adb10cfe7a0 commit ca0d182dfeb68405cfba002622787adb10cfe7a0 Author: John Baldwin AuthorDate: 2025-08-07 17:10:55 +0000 Commit: John Baldwin CommitDate: 2025-08-07 18:26:46 +0000 libutil++: Appease GCC -Wshadow warnings in constructors Fixes: 937e92b5f7cc ("libutil++: Add freebsd::fd_up class to manage file descriptors") Fixes: 7be913e00d79 ("libutil++: Add freebsd::pidfile wrapper class around struct pidfh") Sponsored by: Chelsio Communications --- lib/libutil++/libutil++.hh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libutil++/libutil++.hh b/lib/libutil++/libutil++.hh index ecf737f2fcb0..60e6b3fc5fde 100644 --- a/lib/libutil++/libutil++.hh +++ b/lib/libutil++/libutil++.hh @@ -70,7 +70,7 @@ namespace freebsd { class fd_up { public: fd_up() : fd(-1) {} - fd_up(int fd) : fd(fd) {} + fd_up(int _fd) : fd(_fd) {} fd_up(fd_up &&other) : fd(other.release()) {} fd_up(fd_up const &) = delete; @@ -159,7 +159,7 @@ namespace freebsd { class pidfile { public: pidfile() = default; - pidfile(struct pidfh *pfh) : pfh(pfh) {} + pidfile(struct pidfh *_pfh) : pfh(_pfh) {} pidfile(pidfile &&other) : pfh(other.release()) {} pidfile(pidfile const &) = delete; From nobody Thu Aug 7 18:26:52 2025 X-Original-To: dev-commits-src-main@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 4bybGj1Wm2z64ZTV; Thu, 07 Aug 2025 18:26: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bybGj0fPLz3npS; Thu, 07 Aug 2025 18:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/g7cZCReM++7JpLU8zms/Xue0KbfnRiK94v3Cw+gn3A=; b=UnkVkAr9pCZmAFhlPI8+iWzBI2f/f+frbnihVKd2LopbVacMM6xibFQfXsxJEMpTZGJMIT whcFgA4gbL5GBKwAKXk6A690xpaXQkGkwScoVVSt/VgDjyoFxYVI7QRR2+op9zjqKwTlFi j13adDf1stiyGDmzS7IoT7mJiuQMFpC0JJnYIe9ndytZTJlodvRojbQ1EJqBy+tATeQnhn 0s9sFZFC7mP/7KV3cm28CnhE0dirfOZuBbICw2JYtC+dlDFHmYpTFQoZKqeGUomzPnFfym CLvPRx4uORombbBrDrWtdIBhCigkuyJQ82KlTMVIMgz1GPYycM8CT1hZ/y7Euw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/g7cZCReM++7JpLU8zms/Xue0KbfnRiK94v3Cw+gn3A=; b=YCB746LJrSgFXGWd4RtLq8cDrj3v0VjSeZAI/9Ig5CJJukxuuJOA680JOYMhEShEfnYg40 ZcZiaJsbVVlvC5zGrbYI1nLnEhWe6rs4S8Ryw1ehMTULXBlRWvnh/Dd0LX72ggp8Q075pM vPkekJAqg590dS8nUFxCJLSEv3JYKfx4tWuXeVdIBqPTFitv54rRbbWlYaiy6ZjLsUyoPx YP82IwuVgcID7kxA6xkfh1QKpG7CKqc8Piw6GwtQIxjGOUr5TDwE8bfIaqbimUsPDB2D/T 6RdpI0m1uGX1jnC1PfifWYtCPJgU9ZlvyYIwRkTsTX/I5+GykTw2dGIkhWMR4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754591213; a=rsa-sha256; cv=none; b=pamsjx0DmJI5CGO8ztkQEnnk05tf+wqUwKgwRoTeqI3tOR//gA3dGP6JB845xh5GH3M6Fm bpeGrlBiqWYWmCt/jpWxXG9N8r09WLAuCJKbWG0u6fxFSI8OnisZMF8iriFV4w73WZDVu/ szPmaoY6nUx/5IAkBcIkipBJfDhOae5zu0jdZLrmNjF4vXDatLvEIaoFaonE3394tlvl73 gBkwRtVv/+4B25xaTCLg9a+by+LW+NitJFScq538z8puLR9hlv/D6CUnnbr1OMqOA7ndcC JohuZnW+NKNfs6jG1L9oN8o5gP5B5rIoX8yBsQb21KxLZGX8yna5YfES59WksA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bybGj00Psz1GtS; Thu, 07 Aug 2025 18:26:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577IQqHF081532; Thu, 7 Aug 2025 18:26:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577IQqKx081528; Thu, 7 Aug 2025 18:26:52 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:26:52 GMT Message-Id: <202508071826.577IQqKx081528@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 2d76470b7011 - main - zfs: Fix build with GCC on 32-bit architectures List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2d76470b7011d0c2f50ae394972976fbca14bc95 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=2d76470b7011d0c2f50ae394972976fbca14bc95 commit 2d76470b7011d0c2f50ae394972976fbca14bc95 Author: John Baldwin AuthorDate: 2025-08-07 17:44:24 +0000 Commit: John Baldwin CommitDate: 2025-08-07 18:26:46 +0000 zfs: Fix build with GCC on 32-bit architectures The presence of uint64_t in the expression promotes the entire expression to uint64_t which is larger than uintptr_t on 32-bit plaforms. Note that this also fixes the build for lib32 libraries on 64-bit platforms. sys/contrib/openzfs/include/sys/zio.h: In function 'gbh_eck': sys/contrib/openzfs/include/sys/zio.h:85:17: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 85 | return ((zio_eck_t *)((uintptr_t)gbh + size - sizeof (zio_eck_t))); | ^ --- sys/contrib/openzfs/include/sys/zio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/openzfs/include/sys/zio.h b/sys/contrib/openzfs/include/sys/zio.h index a3368034695b..4f46eab3db89 100644 --- a/sys/contrib/openzfs/include/sys/zio.h +++ b/sys/contrib/openzfs/include/sys/zio.h @@ -82,7 +82,7 @@ gbh_nblkptrs(uint64_t size) { static inline zio_eck_t * gbh_eck(zio_gbh_phys_t *gbh, uint64_t size) { ASSERT(IS_P2ALIGNED(size, sizeof (blkptr_t))); - return ((zio_eck_t *)((uintptr_t)gbh + size - sizeof (zio_eck_t))); + return ((zio_eck_t *)((uintptr_t)gbh + (size_t)size - sizeof (zio_eck_t))); } static inline blkptr_t * From nobody Thu Aug 7 18:26:54 2025 X-Original-To: dev-commits-src-main@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 4bybGk46z4z64Znr; Thu, 07 Aug 2025 18:26:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bybGk2Gmfz3nXW; Thu, 07 Aug 2025 18:26:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nzPGw5h+XUxbazG0gyKL/z1+1soYABem1YiAqNjLk7w=; b=Lvc0fzAwnFJb03gWPWQx2w9k4SJbcngTSQGc/dEth5wz0NOmb4dLtiA4SpezSuSA9vyuQw ZGfBVbQQ/aPo7jQGESiql45Ma10Q9HroMayQ+s28Nw3m9kcvCGtkNlY8x6dbbKw1iD0YcM jDvDDAe27xZW5LLz1koo0uyJua4/StVL/DFPXPLMHBuhgPpNPCm9LTVgjk/8tM9VT0KlIG 03vogqc0mJMBpml1g8ofM/XJe/uujccTLMG2F+tjkN5FpYwOqvmg5buVX0BzjmridVeGyk a9etY2aIYElHIC4DJw9fENVwh07v3Ny18E7i0ipKsPw1Y45rmJMPxT0/8VAinw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754591214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nzPGw5h+XUxbazG0gyKL/z1+1soYABem1YiAqNjLk7w=; b=R/tbTM31/hVKM5ilg6leCPJaQr2FeLstWK4g+fm72+mBpWRIrJxyuPj4aSZVfVs++E+dCp eKi4nic+DCrsfU6TdXPXDWxfyVNToowE4E9+s0gvMRK6e9AUhkomAk60HGwAZpm8OMPz5M DSFNPgeODJBRwMnRtyuqZP+9mqbXtEWDk3gJCe5MF5/uldKAHH9fw2MLBAAv0SzZbls9Yx kqSIY6DOiiHroRIg8MxpdQbzPoj0w/EVkYqhX7PIus3rXZWSqLFVGTo096eM8JGnzX6Yxo 8s8odY7KXBFrf+ebSxQyy7KTiZgtJmEgVOj+pFRYg8rV17RvV31LUjUfWcQMWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754591214; a=rsa-sha256; cv=none; b=t7Y8uQiCv5phDLLMGRjj//rc+sp9P+ck3b6sUgJjZGL6ND6xoGED6LHQtASaGx731Kdbmy ng3PXupVHC+n+afsNC//AS+wkYYyK2Qr9LRwOSNMilCX0//6uJ61mMcV8K1hNPQ68RG6LA Libf2/d5MSLXMcFQLwEtZOyqvoaO3TIPLDtro15Oj2BkLZvXyFS2Sy05Mj7OBBBjAyX6XH PrurdQsNn9yMVr7G/8KE7k7cr9B9zedCl8hB8vLq+N2Q2YC/ef1dWQ9hB1lJHy8/36YL0t 7HXIF9SLRkxEPTOIcEpM0RVLYaScfcZMtXDPbniN9O21/yyqt+HXMB+kkKBCkQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bybGk1Xx6z1GtT; Thu, 07 Aug 2025 18:26:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577IQsfo081563; Thu, 7 Aug 2025 18:26:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577IQsIO081560; Thu, 7 Aug 2025 18:26:54 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:26:54 GMT Message-Id: <202508071826.577IQsIO081560@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 3c4b3bab19ca - main - chroot: Remove always-true checks List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3c4b3bab19ca66bbb3c53275c51d4bf863059fb2 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=3c4b3bab19ca66bbb3c53275c51d4bf863059fb2 commit 3c4b3bab19ca66bbb3c53275c51d4bf863059fb2 Author: John Baldwin AuthorDate: 2025-08-07 17:48:36 +0000 Commit: John Baldwin CommitDate: 2025-08-07 18:26:46 +0000 chroot: Remove always-true checks gid_t and uid_t are unsigned types, so the values are always >= 0. usr.sbin/chroot/chroot.c: In function 'resolve_group': usr.sbin/chroot/chroot.c:68:55: error: comparison of unsigned expression in '>= 0' is always true [-Werror=type-limits] 68 | if (errno == 0 && *endp == '\0' && (gid_t)gid >= 0 && gid <= GID_MAX) | ^~ usr.sbin/chroot/chroot.c: In function 'resolve_user': usr.sbin/chroot/chroot.c:87:55: error: comparison of unsigned expression in '>= 0' is always true [-Werror=type-limits] 87 | if (errno == 0 && *endp == '\0' && (uid_t)uid >= 0 && uid <= UID_MAX) | ^~ Reported by: GCC Fixes: 91eb4d2ba4de ("chroot: slightly cleanup") --- usr.sbin/chroot/chroot.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/chroot/chroot.c b/usr.sbin/chroot/chroot.c index 8a99a9bbf7cb..d9fb29474d87 100644 --- a/usr.sbin/chroot/chroot.c +++ b/usr.sbin/chroot/chroot.c @@ -65,7 +65,7 @@ resolve_group(const char *group) */ errno = 0; gid = strtoul(group, &endp, 0); - if (errno == 0 && *endp == '\0' && (gid_t)gid >= 0 && gid <= GID_MAX) + if (errno == 0 && *endp == '\0' && gid <= GID_MAX) return (gid); errx(1, "no such group '%s'", group); @@ -84,7 +84,7 @@ resolve_user(const char *user) errno = 0; uid = strtoul(user, &endp, 0); - if (errno == 0 && *endp == '\0' && (uid_t)uid >= 0 && uid <= UID_MAX) + if (errno == 0 && *endp == '\0' && uid <= UID_MAX) return (uid); errx(1, "no such user '%s'", user); From nobody Thu Aug 7 18:46:53 2025 X-Original-To: dev-commits-src-main@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 4bybjp1ZFhz64bpf; Thu, 07 Aug 2025 18:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bybjp0l2Pz3rJV; Thu, 07 Aug 2025 18:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754592414; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgYnihRm16X5P04xLvmfzLxeB1W7cg9N6Fy+SFiUzrs=; b=jRwKiFgRrQ7SioAkFTHlMoKRUQRpI7EmMez2YQ2izRhxI4oxv25Mxf7LVCr8DGDhF3FzCJ RfUClf+IXAnD6Fhs/CK3U1kXavORrxLaRaQCYYViJaCySNZgS7wjjUh5d2l1RbSAvOS4/s rbQXJW06e0M/v4ZQpGD0esO1zSr/indFdE2jNFXYkrcm6iR23c2Mt6/qTebDDMFzxzjqIn +sSjgw4fh/TvR/sGFamqtofTNXaLBxPVxOa36o6WcYq9CU9sOBIxGxW4jdejM8ba6tS6Ab J9N4Fgr8DKFBrHGk+Z2H7Mx4hVvKOFaSBE4ywctXUCfZFxVbLkPDLI3D/U9UEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754592414; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgYnihRm16X5P04xLvmfzLxeB1W7cg9N6Fy+SFiUzrs=; b=rfcYMCm5Bf1vHMcDOHcWtRpgqojesyD5eeDm4cCndDRNhj5wK4Bws0ukVLI9VQpEozltdf qZIMVVV0tznR247TdmcLWY3z6qX9uVEWIpDjIUnnP52pQZUI4KBqM1GK4PErgvVxmjjE7E qmZr8d/KoY1nykSoJe7fL7Vjn7TsIZQpXB9OhlVt75rE+5q7o0qsJyKmNfOF1WefWnQ8Yk psace1vd+/i392Bot4i5t/9nECc9Zos5vb1LriPoXX9nlZ880+t0l84djQXWMonCvGv6jf jOmFS6vRM7J+Zv0IX2VhYmO9sIZ5rMYAUQZEWqA9iA2DeqRpCn3WfKsl1+HjYA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754592414; a=rsa-sha256; cv=none; b=a/+lplIS8w7gH9xGauBZ+3qP2vk580KSNzN/3e+jx4643636O1+YMsCrmDQPibVzDYEofI hftMobcb7KH41dUgXUgNQRq76gOvV0nQKdSog5MWg4yIEUwFfQWdyYvmI06i4XcYpxPolF p8iusGfUMxbgM5g7Fcx0j5nbqBM4kf+ZXh+gYlb6jgJkaFrSKlrFE1m43dmNYKpFBOQkhf 4tcmUf/MVUnYPo4m4vkZC0TFaDf0d26/rjniF2J7x3de97//GYs9hyH/p7tiUXFvR5GBAP TqTD43plE6ZE337DTpug3KyQAn8APQqWVO7N2a5Tfwcv9llvLrsGLJkxra9HIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bybjp0LDSz1Gvk; Thu, 07 Aug 2025 18:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577Ikrkf018709; Thu, 7 Aug 2025 18:46:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577IkrAY018706; Thu, 7 Aug 2025 18:46:53 GMT (envelope-from git) Date: Thu, 7 Aug 2025 18:46:53 GMT Message-Id: <202508071846.577IkrAY018706@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: c0fc0facf877 - main - linuxkpi: Call `lkpi_fpu_safe_exec()` in the implementation of kvmalloc() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c0fc0facf877d4e2ad5843d59c15d0d464432962 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=c0fc0facf877d4e2ad5843d59c15d0d464432962 commit c0fc0facf877d4e2ad5843d59c15d0d464432962 Author: Jean-Sébastien Pédron AuthorDate: 2025-07-26 12:17:26 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-07 18:46:15 +0000 linuxkpi: Call `lkpi_fpu_safe_exec()` in the implementation of kvmalloc() `kvmalloc()` was a simple wrapper around the FreeBSD native `malloc()`. Unlike the more involved implementation of `kmalloc()`, it didn't end and being the FPU context around the actual call to `malloc()`. This caused the following panic in the amdgup DRM driver: panic: malloc: called with spinlock or critical section held ... triggered by the call: struct dc_3dlut *lut = kvzalloc(sizeof(*lut), GFP_KERNEL); (for the record, GFP_KERNEL is defined as M_WAITOK) Replicating the same behaviour as `kmalloc()`, in other words, ending the FPU context before the call to the underlying `malloc()`, and beginning it again afterwards solves the problem. Reviewed by: olce Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51557 --- sys/compat/linuxkpi/common/include/linux/slab.h | 3 ++- sys/compat/linuxkpi/common/src/linux_slab.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/slab.h b/sys/compat/linuxkpi/common/include/linux/slab.h index efa5c8cb67b3..47e3d133eb6c 100644 --- a/sys/compat/linuxkpi/common/include/linux/slab.h +++ b/sys/compat/linuxkpi/common/include/linux/slab.h @@ -99,6 +99,7 @@ void lkpi_kmem_cache_free(struct linux_kmem_cache *, void *); void linux_kmem_cache_destroy(struct linux_kmem_cache *); void *lkpi_kmalloc(size_t, gfp_t); +void *lkpi_kvmalloc(size_t, gfp_t); void *lkpi___kmalloc(size_t, gfp_t); void *lkpi___kmalloc_node(size_t, gfp_t, int); void *lkpi_krealloc(void *, size_t, gfp_t); @@ -225,7 +226,7 @@ vmalloc_32(size_t size) static inline void * kvmalloc(size_t size, gfp_t flags) { - return (malloc(size, M_KMALLOC, linux_check_m_flags(flags))); + return (lkpi_kvmalloc(size, flags)); } static inline void * diff --git a/sys/compat/linuxkpi/common/src/linux_slab.c b/sys/compat/linuxkpi/common/src/linux_slab.c index 3d75ca480661..6f71d17a3770 100644 --- a/sys/compat/linuxkpi/common/src/linux_slab.c +++ b/sys/compat/linuxkpi/common/src/linux_slab.c @@ -296,6 +296,23 @@ lkpi_kmalloc(size_t size, gfp_t flags) return(lmc.addr); } +static void +lkpi_kvmalloc_cb(void *ctx) +{ + struct lkpi_kmalloc_ctx *lmc = ctx; + + lmc->addr = malloc(lmc->size, M_KMALLOC, linux_check_m_flags(lmc->flags)); +} + +void * +lkpi_kvmalloc(size_t size, gfp_t flags) +{ + struct lkpi_kmalloc_ctx lmc = { .size = size, .flags = flags }; + + lkpi_fpu_safe_exec(&lkpi_kvmalloc_cb, &lmc); + return(lmc.addr); +} + static void linux_kfree_async_fn(void *context, int pending) { From nobody Thu Aug 7 20:45:18 2025 X-Original-To: dev-commits-src-main@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 4byfLR0gFKz64jTh; Thu, 07 Aug 2025 20:45:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byfLQ6XnRz44p1; Thu, 07 Aug 2025 20:45:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754599518; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Jn1AutFsRADUrO7AqMtBrlDbWjS5dYKIuvURR2HSmKc=; b=YTnEbll+a5OxR4InU+RQnbqhBbSSS6b5LlbfU0Z3owOA7DFicpqQs8RWQ3twsGkLA1+l17 kY098bj3XOWvuf636F5QmmdfERE+fPhJiiTcE6BMHmKeKm3nVYaLPbr7vaDKUysOVdwFxQ E7cRRfR3blUPSfk4gjFsNNrpCDMfeRrAtzTXBNMw/8F3/auMcI0MLQ7JQikTcBGCE/JA83 vHcINJ2eOQoJUP4m5qH85VF0VaF/ZGLLYBudgzuK9uNwB5R1BKBBgMfN/kV4Pat285uAyJ Zy+jmvdUsF+SvcbSbvgR3v+zEI3SSUOJ6z8pgW3k+h31xr9X+I9KXbgkhoz6Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754599518; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Jn1AutFsRADUrO7AqMtBrlDbWjS5dYKIuvURR2HSmKc=; b=xxGmR5fFKYjKcjAMiARAOtCx5/G5uDPWA8CjLSJav00lJk73U4oW5i3gfWfGno2llxSFAY YFShF78EQNvxjYqJBs/59FTqHuUne3QBp0euR0NbO4YUK+A/ENYnqibp4Y/n24qoyLXY+N n+1fKkhlPMTnBnz5WTr9vJWtIP2qhespuUMP7bawkOf+X2/2IPJNAUmFDKgDLxwGEKiPvH KacGpiLpKSN5PU2oO5AmwVMh1FjBfENyEq/e8Yb7cNeyFRu6X4jFzXgUzVgRZpfjkpJpfq ow7qhSU6uTNbnMvL+RCHg3i9D28cat6Bc7YEYcItxy1u4fKY9gtnt3DXiBJYRg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754599518; a=rsa-sha256; cv=none; b=oOxuyPlp6gW+FJbbzNqMpM3N/Tdk3pGUDtBlh9jffwvtK9dFSY0hrzbkx7/LVlJ1tONWpV hvuJ7P2VcBdO72xmTL3oMYiuTvPGXm0cDbICiqMCpip6DNcvzTqxC3uh2AAaOf61Qkvuv+ 5ArvuFK3/U92Qtji2uwjBCuDvDKKUeXbyGk9aXmgJ7nFqa12KySOXpgrItKHSSNso8Rcxt d9SnUYhaiGyinImaoFGuJ/wge+ibT0ZG0Go3Azcj1KjGt4hFc3n5B4FHlLxgfj9o7lta9X 3N4tYVEtu8hHDY7rnonI4BYylbU03UseMnMSrLhoz7La+oQjSSeBTv023UAoSw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byfLQ5v68z1LbY; Thu, 07 Aug 2025 20:45:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577KjI0U042437; Thu, 7 Aug 2025 20:45:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577KjI3W042432; Thu, 7 Aug 2025 20:45:18 GMT (envelope-from git) Date: Thu, 7 Aug 2025 20:45:18 GMT Message-Id: <202508072045.577KjI3W042432@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: 42cacae4eb18 - main - ObsoleteFiles: Remove gssapi_krbt/gssapi.h List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 42cacae4eb186258c1f65cf5d0f9821d5a396049 Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=42cacae4eb186258c1f65cf5d0f9821d5a396049 commit 42cacae4eb186258c1f65cf5d0f9821d5a396049 Author: Cy Schubert AuthorDate: 2025-08-07 20:43:54 +0000 Commit: Cy Schubert CommitDate: 2025-08-07 20:43:54 +0000 ObsoleteFiles: Remove gssapi_krbt/gssapi.h Noted by: "Herbert J. Skuhra" --- ObsoleteFiles.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 2f63bbea5a49..0349d509083a 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -52,7 +52,7 @@ # done # 20250807: Replace lib/libgssapi with krb5/lib/gssapi -OLD_FILES+=usr/include/gssapi_krb5/gssapi/gssapi.h +OLD_FILES+=usr/include/gssapi_krb5/gssapi.h OLD_DIRS+=usr/include/gssapi_krb5/gssapi OLD_DIRS+=usr/include/gssapi_krb5 OLD_FILES+=etc/gssapi/qop From nobody Thu Aug 7 21:05:49 2025 X-Original-To: dev-commits-src-main@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 4byfp65N1xz63VcV; Thu, 07 Aug 2025 21:05:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byfp53tPvz46QN; Thu, 07 Aug 2025 21:05:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754600750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GtnafGgh9L/YjhaNc5PvFlIwj7GN+qaEU0+8ZrMfObM=; b=xw7wCZ8MizG4l8H/0e8wrQdfspFQyEx9PHHzJw2sCkx+h5QvwfKsiVs4dosSjRpLeBt9LR m0hbhKVn7alh1VO8d5PqPkhMr9N5xIPPk+g7bYjr9PxiYDCjzp6426i2nJH3P+wJshBGEc jzcB2CckXwZYJG2r7InGWnt61HjOSv//Hi4I5i0AoZFZ4qVjW2D3QJk8QLpgqba78UhfsX X4/hZ+e1RjMfja6IDiP8p8lyAxWje5WKvIhYauiVvFMrwTDsFhnT1dqYoa7aa5hGuIHE6s GjhciyCj3Z02NXEb8ajeTqWBWPOfyTmZHNm4NPc6dVfnCeS5v5LgtThjb6dkUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754600749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GtnafGgh9L/YjhaNc5PvFlIwj7GN+qaEU0+8ZrMfObM=; b=SB9trovF268ZzjbXZRP6oux+A0NWOzAdQEzemsyg42qKMaipjnpcUtief3Krqv+YOACxb6 oQkJZq6nnO69qPXwtpDwlYJ2bE+yKPA/wRVot/TRpgp78f4cv8yvGcJg5aEBAvXx9hheej 1u2Mx0b4igSpm7/3ozSqBhKD43miAxDH8y3KyjFp2ZDlvrmbGzptHLDA5vpMNqxYZ4KAHR n68waaNMRZsTSigwP/+FByNKY38hB0aCgACQByfa5ov1SYA10Ay30v9ZyCoiMYqG5UfI/7 wTBYxwBfgjEybs1Z+kQgsBLexlcuhPY3f4YHnQqc/eCiTpyQECkww9cxzrNIpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754600749; a=rsa-sha256; cv=none; b=q3CuDaka/AXgJXu0OfrcP+j12lXEfkbgta4uvHufmde5SAB8YjcvWUSejlPxKT8gaVgVgV 5VPgBKj/FOE9v1GySFiFgPA+VKDYjzwYMZo3yO14amZFAwzIt/pKKqv+FY+DnGCisRTfRH 5BrtsImvtIUvRFpFDI/9kpBiEuVLP3N0Te0OGW/cIFAy7UA0bgk6xntHXyzj8wwdW0hoc2 2uhcAbUAn0gQBpw/uX/GPZ+Iz92Lkdi4Mr+/mXzwObPKAQ+R+0aLsP8htp7EQMRH9P3Fxo 5Cel8z4K2NVshMa43c59BxVQPRF+8t4SeSE1fuEO1K/Xu2rRggEPVKzG1poNkA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byfp53Tl1z1Lpt; Thu, 07 Aug 2025 21:05:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577L5n7W081108; Thu, 7 Aug 2025 21:05:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577L5nA0081105; Thu, 7 Aug 2025 21:05:49 GMT (envelope-from git) Date: Thu, 7 Aug 2025 21:05:49 GMT Message-Id: <202508072105.577L5nA0081105@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e3ac01e18eb3db571572d819d6b40966d00f80fe Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=e3ac01e18eb3db571572d819d6b40966d00f80fe commit e3ac01e18eb3db571572d819d6b40966d00f80fe Author: Rick Macklem AuthorDate: 2025-08-07 21:02:32 +0000 Commit: Rick Macklem CommitDate: 2025-08-07 21:02:32 +0000 kgssapi: Fix the kgssapi so that it can use MIT Kerberos Without this patch, the kgssapi uses detailed knowledge of the internal context structure for Heimdal (up to vers 1.5). It also does four upcalls to the gssd daemon to establish a server side RPCSEC_GSS context. This patch adds support for three new upcalls: gss_init_sec_context_lucid_v1() gss_accept_sec_context_lucid_v1() gss_supports_lucid() These are used to determine if the gssd can do the upcalls and uses them to avoid needing detailed Heimdal knowledge if they are supported. gss_init_sec_context_lucid_v1() and gss_accept_sec_context_lucid_v1() return the information needed to complete the RPCSEC_GSS context. They use gss_krb5_export_lucid_sec_context() to acquire the information from the libraries. (MIT Kerberos supports this and I believe newer versions of Heimdal does, as well). This avoids the need for detailed knowledge about MIT's internals and replaces the 2 or 4 (initiator or acceptor) upcalls with a single upcall to create the RPCSEC_GSS context. The old Heimdal (up to 1.5) support is left intact, but should be removed whenever Heimdal 1.5 is removed from /usr/src. It also modifies the Makefile so that the gssd is only built when MK_KERBEROS_SUPPORT != "no", since it is useless without Kerberos. Reviewed by: cy Differeential Revision: https://reviews.freebsd.org/D51731 Differeential Revision: https://reviews.freebsd.org/D51733 --- sys/kgssapi/gss_accept_sec_context.c | 145 +++++++++- sys/kgssapi/gss_impl.c | 8 +- sys/kgssapi/gss_init_sec_context.c | 145 +++++++++- sys/kgssapi/gssapi.h | 42 +++ sys/kgssapi/gssapi_impl.h | 2 +- sys/kgssapi/gssd.x | 79 +++++- sys/kgssapi/krb5/krb5_mech.c | 80 ++++++ sys/rpc/rpcsec_gss/rpcsec_gss.c | 50 +++- sys/rpc/rpcsec_gss/rpcsec_gss_int.h | 6 + sys/rpc/rpcsec_gss/svc_rpcsec_gss.c | 122 +++++++-- usr.sbin/Makefile | 2 + usr.sbin/gssd/Makefile | 4 - usr.sbin/gssd/gssd.c | 503 ++++++++++++++++++++++++++++++++--- 13 files changed, 1105 insertions(+), 83 deletions(-) diff --git a/sys/kgssapi/gss_accept_sec_context.c b/sys/kgssapi/gss_accept_sec_context.c index 723ed9db9072..8a49b85be852 100644 --- a/sys/kgssapi/gss_accept_sec_context.c +++ b/sys/kgssapi/gss_accept_sec_context.c @@ -41,6 +41,11 @@ #include "gssd.h" #include "kgss_if.h" +/* + * This function should only be called when the gssd + * daemon running on the system is an old one that + * does not use gss_krb5_export_lucid_sec_context(). + */ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, gss_ctx_id_t *context_handle, const gss_cred_id_t acceptor_cred_handle, @@ -138,7 +143,145 @@ OM_uint32 gss_accept_sec_context(OM_uint32 *minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx); + res.major_status = kgss_transfer_context(ctx, NULL); + + return (res.major_status); +} + +/* + * This function should be called when the gssd daemon is + * one that uses gss_krb5_export_lucid_sec_context(). + * There is a lot of code common with + * gss_accept_sec_context(). However, the structures used + * are not the same and future changes may be needed for + * this one. As such, I have not factored out the common + * code. + * gss_supports_lucid() may be used to check to see if the + * gssd daemon uses gss_krb5_export_lucid_sec_context(). + */ +OM_uint32 gss_accept_sec_context_lucid_v1(OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, + const gss_cred_id_t acceptor_cred_handle, + const gss_buffer_t input_token, + const gss_channel_bindings_t input_chan_bindings, + gss_name_t *src_name, + gss_OID *mech_type, + gss_buffer_t output_token, + OM_uint32 *ret_flags, + OM_uint32 *time_rec, + gss_cred_id_t *delegated_cred_handle, + gss_buffer_t exported_name, + uid_t *uidp, + gid_t *gidp, + int *numgroups, + gid_t *groups) +{ + struct accept_sec_context_lucid_v1_res res; + struct accept_sec_context_lucid_v1_args args; + enum clnt_stat stat; + gss_ctx_id_t ctx = *context_handle; + gss_name_t name; + gss_cred_id_t cred; + CLIENT *cl; + + cl = kgss_gssd_client(); + if (cl == NULL) { + *minor_status = 0; + return (GSS_S_FAILURE); + } + + if (ctx) + args.ctx = ctx->handle; + else + args.ctx = 0; + if (acceptor_cred_handle) + args.cred = acceptor_cred_handle->handle; + else + args.cred = 0; + args.input_token = *input_token; + args.input_chan_bindings = input_chan_bindings; + + bzero(&res, sizeof(res)); + stat = gssd_accept_sec_context_lucid_v1_1(&args, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (res.major_status != GSS_S_COMPLETE + && res.major_status != GSS_S_CONTINUE_NEEDED) { + *minor_status = res.minor_status; + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); + return (res.major_status); + } + + *minor_status = res.minor_status; + + if (!ctx) { + ctx = kgss_create_context(res.mech_type); + if (!ctx) { + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); + *minor_status = 0; + return (GSS_S_BAD_MECH); + } + } + *context_handle = ctx; + + ctx->handle = res.ctx; + name = malloc(sizeof(struct _gss_name_t), M_GSSAPI, M_WAITOK); + name->handle = res.src_name; + if (src_name) { + *src_name = name; + } else { + OM_uint32 junk; + gss_release_name(&junk, &name); + } + if (mech_type) + *mech_type = KGSS_MECH_TYPE(ctx); + kgss_copy_buffer(&res.output_token, output_token); + if (ret_flags) + *ret_flags = res.ret_flags; + if (time_rec) + *time_rec = res.time_rec; + cred = malloc(sizeof(struct _gss_cred_id_t), M_GSSAPI, M_WAITOK); + cred->handle = res.delegated_cred_handle; + if (delegated_cred_handle) { + *delegated_cred_handle = cred; + } else { + OM_uint32 junk; + gss_release_cred(&junk, &cred); + } + + /* + * If the context establishment is complete, export it from + * userland and hand the result (which includes key material + * etc.) to the kernel implementation. + */ + if (res.major_status == GSS_S_COMPLETE) { + int i, n; + + /* First, get the unix credentials. */ + *uidp = res.uid; + *gidp = res.gid; + n = res.gidlist.gidlist_len; + if (n > *numgroups) + n = *numgroups; + for (i = 0; i < n; i++) + groups[i] = res.gidlist.gidlist_val[i]; + *numgroups = n; + + /* Next, get the exported_name. */ + kgss_copy_buffer(&res.exported_name, exported_name); + + /* Now, handle the lucid credential setup. */ + res.major_status = kgss_transfer_context(ctx, &res.lucid); + if (res.major_status != GSS_S_COMPLETE) + printf("gss_accept_sec_context_lucid_v1: " + "transfer failed\n"); + } + + xdr_free((xdrproc_t) xdr_accept_sec_context_res, &res); return (res.major_status); } diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c index e2569bea61f9..c9cd4d880695 100644 --- a/sys/kgssapi/gss_impl.c +++ b/sys/kgssapi/gss_impl.c @@ -192,13 +192,19 @@ kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token) } OM_uint32 -kgss_transfer_context(gss_ctx_id_t ctx) +kgss_transfer_context(gss_ctx_id_t ctx, void *lctx) { struct export_sec_context_res res; struct export_sec_context_args args; enum clnt_stat stat; OM_uint32 maj_stat; + if (lctx != NULL) { + maj_stat = KGSS_IMPORT(ctx, MIT_V1, lctx); + ctx->handle = 0; + return (maj_stat); + } + KGSS_CURVNET_SET_QUIET(KGSS_TD_TO_VNET(curthread)); if (!KGSS_VNET(kgss_gssd_handle)) { KGSS_CURVNET_RESTORE(); diff --git a/sys/kgssapi/gss_init_sec_context.c b/sys/kgssapi/gss_init_sec_context.c index fa0d3fb2ae19..a0f48fda8b29 100644 --- a/sys/kgssapi/gss_init_sec_context.c +++ b/sys/kgssapi/gss_init_sec_context.c @@ -42,6 +42,11 @@ #include "gssd.h" #include "kgss_if.h" +/* + * This function should only be called when the gssd + * daemon running on the system is an old one that + * does not use gss_krb5_export_lucid_sec_context(). + */ OM_uint32 gss_init_sec_context(OM_uint32 * minor_status, const gss_cred_id_t initiator_cred_handle, @@ -133,7 +138,145 @@ gss_init_sec_context(OM_uint32 * minor_status, * etc.) to the kernel implementation. */ if (res.major_status == GSS_S_COMPLETE) - res.major_status = kgss_transfer_context(ctx); + res.major_status = kgss_transfer_context(ctx, NULL); + + return (res.major_status); +} + +OM_uint32 +gss_supports_lucid(uint32_t *minor_status, uint32_t *vers) +{ + struct supports_lucid_res res; + enum clnt_stat stat; + CLIENT *cl; + + *minor_status = 0; + + cl = kgss_gssd_client(); + if (cl == NULL) + return (GSS_S_FAILURE); + + bzero(&res, sizeof(res)); + stat = gssd_supports_lucid_1(NULL, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (vers) + *vers = res.vers; + + return (res.major_status); +} + +/* + * This function should be called when the gssd daemon is + * one that uses gss_krb5_export_lucid_sec_context(). + * There is a lot of code common with + * gss_init_sec_context(). However, the structures used + * are not the same and future changes may be needed for + * this one. As such, I have not factored out the common + * code. + * gss_supports_lucid() may be used to check to see if the + * gssd daemon uses gss_krb5_export_lucid_sec_context(). + */ +OM_uint32 +gss_init_sec_context_lucid_v1(OM_uint32 * minor_status, + const gss_cred_id_t initiator_cred_handle, + gss_ctx_id_t * context_handle, + const gss_name_t target_name, + const gss_OID input_mech_type, + OM_uint32 req_flags, + OM_uint32 time_req, + const gss_channel_bindings_t input_chan_bindings, + const gss_buffer_t input_token, + gss_OID * actual_mech_type, + gss_buffer_t output_token, + OM_uint32 * ret_flags, + OM_uint32 * time_rec) +{ + struct init_sec_context_lucid_v1_res res; + struct init_sec_context_lucid_v1_args args; + enum clnt_stat stat; + gss_ctx_id_t ctx = *context_handle; + CLIENT *cl; + + *minor_status = 0; + + cl = kgss_gssd_client(); + if (cl == NULL) + return (GSS_S_FAILURE); + + args.uid = curthread->td_ucred->cr_uid; + if (initiator_cred_handle) + args.cred = initiator_cred_handle->handle; + else + args.cred = 0; + if (ctx) + args.ctx = ctx->handle; + else + args.ctx = 0; + args.name = target_name->handle; + args.mech_type = input_mech_type; + args.req_flags = req_flags; + args.time_req = time_req; + args.input_chan_bindings = input_chan_bindings; + if (input_token) + args.input_token = *input_token; + else { + args.input_token.length = 0; + args.input_token.value = NULL; + } + + bzero(&res, sizeof(res)); + stat = gssd_init_sec_context_lucid_v1_1(&args, &res, cl); + CLNT_RELEASE(cl); + if (stat != RPC_SUCCESS) { + *minor_status = stat; + return (GSS_S_FAILURE); + } + + if (res.major_status != GSS_S_COMPLETE + && res.major_status != GSS_S_CONTINUE_NEEDED) { + *minor_status = res.minor_status; + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); + return (res.major_status); + } + + *minor_status = res.minor_status; + + if (!ctx) { + ctx = kgss_create_context(res.actual_mech_type); + if (!ctx) { + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); + *minor_status = 0; + return (GSS_S_BAD_MECH); + } + } + *context_handle = ctx; + ctx->handle = res.ctx; + if (actual_mech_type) + *actual_mech_type = KGSS_MECH_TYPE(ctx); + kgss_copy_buffer(&res.output_token, output_token); + if (ret_flags) + *ret_flags = res.ret_flags; + if (time_rec) + *time_rec = res.time_rec; + + /* + * If the context establishment is complete, export it from + * userland and hand the result (which includes key material + * etc.) to the kernel implementation. + */ + if (res.major_status == GSS_S_COMPLETE) { + res.major_status = kgss_transfer_context(ctx, &res.lucid); + if (res.major_status != GSS_S_COMPLETE) + printf("gss_init_sec_context_lucid_v1: " + "transfer failed\n"); + } + + xdr_free((xdrproc_t) xdr_init_sec_context_lucid_v1_res, &res); return (res.major_status); } diff --git a/sys/kgssapi/gssapi.h b/sys/kgssapi/gssapi.h index 37cc8a1a5a09..cd4a4b508cc5 100644 --- a/sys/kgssapi/gssapi.h +++ b/sys/kgssapi/gssapi.h @@ -422,6 +422,28 @@ OM_uint32 gss_init_sec_context OM_uint32 * /* time_rec */ ); +OM_uint32 gss_init_sec_context_lucid_v1 + (OM_uint32 *, /* minor_status */ + const gss_cred_id_t, /* initiator_cred_handle */ + gss_ctx_id_t *, /* context_handle */ + const gss_name_t, /* target_name */ + const gss_OID, /* mech_type */ + OM_uint32, /* req_flags */ + OM_uint32, /* time_req */ + const gss_channel_bindings_t, + /* input_chan_bindings */ + const gss_buffer_t, /* input_token */ + gss_OID *, /* actual_mech_type */ + gss_buffer_t, /* output_token */ + OM_uint32 *, /* ret_flags */ + OM_uint32 * /* time_rec */ + ); + +OM_uint32 gss_supports_lucid + (OM_uint32 *, /* minor_status */ + OM_uint32 * /* vers */ + ); + OM_uint32 gss_accept_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ @@ -437,6 +459,26 @@ OM_uint32 gss_accept_sec_context gss_cred_id_t * /* delegated_cred_handle */ ); +OM_uint32 gss_accept_sec_context_lucid_v1 + (OM_uint32 *, /* minor_status */ + gss_ctx_id_t *, /* context_handle */ + const gss_cred_id_t, /* acceptor_cred_handle */ + const gss_buffer_t, /* input_token_buffer */ + const gss_channel_bindings_t, + /* input_chan_bindings */ + gss_name_t *, /* src_name */ + gss_OID *, /* mech_type */ + gss_buffer_t, /* output_token */ + OM_uint32 *, /* ret_flags */ + OM_uint32 *, /* time_rec */ + gss_cred_id_t *, /* delegated_cred_handle */ + gss_buffer_t, /* exported_name */ + uid_t *, /* Unix cred */ + gid_t *, + int *, /* Number of groups */ + gid_t * /* groups list */ + ); + OM_uint32 gss_delete_sec_context (OM_uint32 *, /* minor_status */ gss_ctx_id_t *, /* context_handle */ diff --git a/sys/kgssapi/gssapi_impl.h b/sys/kgssapi/gssapi_impl.h index 3279dc8da122..d8a85f20a602 100644 --- a/sys/kgssapi/gssapi_impl.h +++ b/sys/kgssapi/gssapi_impl.h @@ -78,5 +78,5 @@ extern gss_OID kgss_find_mech_by_name(const char *name); extern const char *kgss_find_mech_by_oid(const gss_OID oid); extern gss_ctx_id_t kgss_create_context(gss_OID mech_type); extern void kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token); -extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx); +extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx, void *lctx); extern void kgss_copy_buffer(const gss_buffer_t from, gss_buffer_t to); diff --git a/sys/kgssapi/gssd.x b/sys/kgssapi/gssd.x index b50f39b33554..bf63ba95f8df 100644 --- a/sys/kgssapi/gssd.x +++ b/sys/kgssapi/gssd.x @@ -48,6 +48,21 @@ typedef uint64_t gssd_ctx_id_t; typedef uint64_t gssd_cred_id_t; typedef uint64_t gssd_name_t; +struct kgss_lucid_desc { + uint32_t initiate; + uint32_t endtime; + uint64_t send_seq; + uint64_t recv_seq; + uint32_t protocol; + uint32_t rfc_sign; + uint32_t rfc_seal; + uint32_t have_subkey; + uint32_t ctx_type; + gss_buffer_desc ctx_key; + uint32_t subkey_type; + gss_buffer_desc subkey_key; +}; + struct init_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -70,6 +85,29 @@ struct init_sec_context_args { gss_buffer_desc input_token; }; +struct init_sec_context_lucid_v1_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gss_OID actual_mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; + kgss_lucid_desc lucid; +}; + +struct init_sec_context_lucid_v1_args { + uint32_t uid; + gssd_cred_id_t cred; + gssd_ctx_id_t ctx; + gssd_name_t name; + gss_OID mech_type; + uint32_t req_flags; + uint32_t time_req; + gss_channel_bindings_t input_chan_bindings; + gss_buffer_desc input_token; +}; + struct accept_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -89,6 +127,30 @@ struct accept_sec_context_args { gss_channel_bindings_t input_chan_bindings; }; +struct accept_sec_context_lucid_v1_res { + uint32_t major_status; + uint32_t minor_status; + gssd_ctx_id_t ctx; + gssd_name_t src_name; + gss_OID mech_type; + gss_buffer_desc output_token; + uint32_t ret_flags; + uint32_t time_rec; + gssd_cred_id_t delegated_cred_handle; + kgss_lucid_desc lucid; + gss_buffer_desc exported_name; + uint32_t uid; + uint32_t gid; + uint32_t gidlist<>; +}; + +struct accept_sec_context_lucid_v1_args { + gssd_ctx_id_t ctx; + gssd_cred_id_t cred; + gss_buffer_desc input_token; + gss_channel_bindings_t input_chan_bindings; +}; + struct delete_sec_context_res { uint32_t major_status; uint32_t minor_status; @@ -101,7 +163,8 @@ struct delete_sec_context_args { enum sec_context_format { KGSS_HEIMDAL_0_6, - KGSS_HEIMDAL_1_1 + KGSS_HEIMDAL_1_1, + MIT_V1 }; struct export_sec_context_res { @@ -229,6 +292,11 @@ struct ip_to_dns_args { char ip_addr; }; +struct supports_lucid_res { + uint32_t major_status; + uint32_t vers; +}; + program GSSD { version GSSDVERS { void GSSD_NULL(void) = 0; @@ -274,5 +342,14 @@ program GSSD { ip_to_dns_res GSSD_IP_TO_DNS(ip_to_dns_args) = 14; + + init_sec_context_lucid_v1_res + GSSD_INIT_SEC_CONTEXT_LUCID_V1(init_sec_context_lucid_v1_args) = 15; + + accept_sec_context_lucid_v1_res + GSSD_ACCEPT_SEC_CONTEXT_LUCID_V1(accept_sec_context_lucid_v1_args) = 16; + + supports_lucid_res + GSSD_SUPPORTS_LUCID(void) = 17; } = 1; } = 0x40677373; diff --git a/sys/kgssapi/krb5/krb5_mech.c b/sys/kgssapi/krb5/krb5_mech.c index 0b8fbc90fcd1..59d5b120e4fb 100644 --- a/sys/kgssapi/krb5/krb5_mech.c +++ b/sys/kgssapi/krb5/krb5_mech.c @@ -217,6 +217,18 @@ copy_key(struct krb5_keyblock *from, struct krb5_keyblock **to) *to = NULL; } +static void +copy_lucid_key(gss_buffer_desc *from, uint32_t type, struct krb5_keyblock *to) +{ + + to->kk_type = type; + to->kk_key.kd_length = from->length; + if (from->length > 0) { + to->kk_key.kd_data = malloc(from->length, M_GSSAPI, M_WAITOK); + memcpy(to->kk_key.kd_data, from->value, from->length); + } +} + /* * Return non-zero if we are initiator. */ @@ -401,6 +413,70 @@ krb5_init(gss_ctx_id_t ctx) mtx_init(&kc->kc_lock, "krb5 gss lock", NULL, MTX_DEF); } +static OM_uint32 +krb5_lucid_import(gss_ctx_id_t ctx, + enum sec_context_format format, + const gss_buffer_t context_token) +{ + struct krb5_context *kc = (struct krb5_context *)ctx; + kgss_lucid_desc *lctx = (kgss_lucid_desc *)context_token; + OM_uint32 res; + + kc->kc_more_flags = 0; + if (lctx->protocol == 0) { + kc->kc_cksumtype = lctx->rfc_sign; + kc->kc_keytype = lctx->rfc_seal; + copy_lucid_key(&lctx->ctx_key, lctx->ctx_type, + &kc->kc_keyblock); + } else if (lctx->protocol == 1) { + if (lctx->have_subkey != 0) { + if (lctx->initiate != 0) + copy_lucid_key(&lctx->subkey_key, + lctx->subkey_type, + &kc->kc_remote_subkey); + else + copy_lucid_key(&lctx->subkey_key, + lctx->subkey_type, + &kc->kc_local_subkey); + kc->kc_cksumtype = lctx->subkey_type; + kc->kc_keytype = lctx->subkey_type; + kc->kc_more_flags |= ACCEPTOR_SUBKEY; + } else { + if (lctx->initiate != 0) + copy_lucid_key(&lctx->ctx_key, + lctx->ctx_type, + &kc->kc_remote_subkey); + else + copy_lucid_key(&lctx->ctx_key, + lctx->ctx_type, + &kc->kc_local_subkey); + kc->kc_cksumtype = lctx->ctx_type; + kc->kc_keytype = lctx->ctx_type; + } + } else { + return (GSS_S_DEFECTIVE_TOKEN); + } + kc->kc_local_seqnumber = lctx->send_seq; + kc->kc_remote_seqnumber = lctx->recv_seq; + if (lctx->initiate != 0) + kc->kc_more_flags |= LOCAL; + kc->kc_lifetime = lctx->endtime; + kc->kc_msg_order.km_flags = 0; + + res = get_keys(kc); + if (GSS_ERROR(res)) + return (res); + + /* + * We don't need these anymore. + */ + delete_keyblock(&kc->kc_keyblock); + delete_keyblock(&kc->kc_local_subkey); + delete_keyblock(&kc->kc_remote_subkey); + + return (GSS_S_COMPLETE); +} + static OM_uint32 krb5_import(gss_ctx_id_t ctx, enum sec_context_format format, @@ -413,6 +489,10 @@ krb5_import(gss_ctx_id_t ctx, uint32_t flags; int i; + /* For MIT, just call krb5_lucid_import(). */ + if (format == MIT_V1) + return (krb5_lucid_import(ctx, format, context_token)); + /* * We support heimdal 0.6 and heimdal 1.1 */ diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss.c b/sys/rpc/rpcsec_gss/rpcsec_gss.c index 983dd251f81f..53770d139c61 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/rpcsec_gss.c @@ -746,6 +746,7 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) struct rpc_callextra ext; gss_OID mech_oid; gss_OID_set mechlist; + static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in rpc_gss_refresh()"); @@ -852,6 +853,14 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) goto out; } + if (my_krb_imp == KRBIMP_UNKNOWN) { + maj_stat = gss_supports_lucid(&min_stat, NULL); + if (maj_stat == GSS_S_COMPLETE) + my_krb_imp = KRBIMP_MIT; + else + my_krb_imp = KRBIMP_HESIOD1; + } + /* GSS context establishment loop. */ memset(&recv_token, 0, sizeof(recv_token)); memset(&gr, 0, sizeof(gr)); @@ -862,19 +871,34 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) for (;;) { crsave = td->td_ucred; td->td_ucred = gd->gd_ucred; - maj_stat = gss_init_sec_context(&min_stat, - gd->gd_options.my_cred, - &gd->gd_ctx, - name, - gd->gd_mech, - gd->gd_options.req_flags, - gd->gd_options.time_req, - gd->gd_options.input_channel_bindings, - recv_tokenp, - &gd->gd_mech, /* used mech */ - &send_token, - &options_ret->ret_flags, - &options_ret->time_req); + if (my_krb_imp == KRBIMP_MIT) + maj_stat = gss_init_sec_context_lucid_v1(&min_stat, + gd->gd_options.my_cred, + &gd->gd_ctx, + name, + gd->gd_mech, + gd->gd_options.req_flags, + gd->gd_options.time_req, + gd->gd_options.input_channel_bindings, + recv_tokenp, + &gd->gd_mech, /* used mech */ + &send_token, + &options_ret->ret_flags, + &options_ret->time_req); + else + maj_stat = gss_init_sec_context(&min_stat, + gd->gd_options.my_cred, + &gd->gd_ctx, + name, + gd->gd_mech, + gd->gd_options.req_flags, + gd->gd_options.time_req, + gd->gd_options.input_channel_bindings, + recv_tokenp, + &gd->gd_mech, /* used mech */ + &send_token, + &options_ret->ret_flags, + &options_ret->time_req); td->td_ucred = crsave; /* diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h index 3d643af8c498..02a7767220de 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h +++ b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h @@ -73,6 +73,12 @@ struct rpc_gss_init_res { /* Maximum sequence number value. */ #define MAXSEQ 0x80000000 +enum krb_imp { + KRBIMP_UNKNOWN, + KRBIMP_HESIOD1, + KRBIMP_MIT +}; + /* Prototypes. */ __BEGIN_DECLS diff --git a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c index 51077c71822c..e047c557c712 100644 --- a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c @@ -925,9 +925,29 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, OM_uint32 maj_stat = 0, min_stat = 0, ret_flags; OM_uint32 cred_lifetime; struct svc_rpc_gss_svc_name *sname; + gss_buffer_desc export_name; + rpc_gss_ucred_t *uc = &client->cl_ucred; + int numgroups; + static enum krb_imp my_krb_imp = KRBIMP_UNKNOWN; rpc_gss_log_debug("in svc_rpc_gss_accept_context()"); + if (my_krb_imp == KRBIMP_UNKNOWN) { + maj_stat = gss_supports_lucid(&min_stat, NULL); + if (maj_stat == GSS_S_COMPLETE) + my_krb_imp = KRBIMP_MIT; + else + my_krb_imp = KRBIMP_HESIOD1; + min_stat = 0; + } + + if (my_krb_imp == KRBIMP_MIT) { + uc->uid = 65534; + uc->gid = 65534; + uc->gidlist = client->cl_gid_storage; + numgroups = NGROUPS; + } + /* Deserialize arguments. */ memset(&recv_tok, 0, sizeof(recv_tok)); @@ -949,18 +969,38 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, if (sname->sn_program == rqst->rq_prog && sname->sn_version == rqst->rq_vers) { retry: - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - &client->cl_creds); + if (my_krb_imp == KRBIMP_MIT) + gr->gr_major = + gss_accept_sec_context_lucid_v1( + &gr->gr_minor, + &client->cl_ctx, + sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + &client->cl_creds, + &export_name, + &uc->uid, + &uc->gid, + &numgroups, + &uc->gidlist[0]); + else + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + &client->cl_creds); if (gr->gr_major == GSS_S_CREDENTIALS_EXPIRED) { /* @@ -982,18 +1022,37 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, return (FALSE); } } else { - gr->gr_major = gss_accept_sec_context( - &gr->gr_minor, - &client->cl_ctx, - client->cl_sname->sn_cred, - &recv_tok, - GSS_C_NO_CHANNEL_BINDINGS, - &client->cl_cname, - &mech, - &gr->gr_token, - &ret_flags, - &cred_lifetime, - NULL); + if (my_krb_imp == KRBIMP_MIT) + gr->gr_major = gss_accept_sec_context_lucid_v1( + &gr->gr_minor, + &client->cl_ctx, + client->cl_sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + NULL, + &export_name, + &uc->uid, + &uc->gid, + &numgroups, + &uc->gidlist[0]); + else + gr->gr_major = gss_accept_sec_context( + &gr->gr_minor, + &client->cl_ctx, + client->cl_sname->sn_cred, + &recv_tok, + GSS_C_NO_CHANNEL_BINDINGS, + &client->cl_cname, + &mech, + &gr->gr_token, + &ret_flags, + &cred_lifetime, + NULL); } sx_xunlock(&svc_rpc_gss_lock); @@ -1009,8 +1068,12 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, rpc_gss_log_status("accept_sec_context", client->cl_mech, gr->gr_major, gr->gr_minor); client->cl_state = CLIENT_STALE; + if (my_krb_imp == KRBIMP_MIT) + uc->gidlen = 0; return (TRUE); } + if (my_krb_imp == KRBIMP_MIT) + uc->gidlen = numgroups; gr->gr_handle.value = &client->cl_id; gr->gr_handle.length = sizeof(client->cl_id); @@ -1022,8 +1085,6 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, client->cl_done_callback = FALSE; if (gr->gr_major == GSS_S_COMPLETE) { - gss_buffer_desc export_name; - /* * Change client expiration time to be near when the * client creds expire (or 24 hours if we can't figure @@ -1046,8 +1107,10 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, */ client->cl_rawcred.version = RPCSEC_GSS_VERSION; rpc_gss_oid_to_mech(mech, &client->cl_rawcred.mechanism); - maj_stat = gss_export_name(&min_stat, client->cl_cname, - &export_name); + maj_stat = GSS_S_COMPLETE; + if (my_krb_imp != KRBIMP_MIT) + maj_stat = gss_export_name(&min_stat, client->cl_cname, + &export_name); if (maj_stat != GSS_S_COMPLETE) { rpc_gss_log_status("gss_export_name", client->cl_mech, maj_stat, min_stat); @@ -1068,7 +1131,8 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, * Use gss_pname_to_uid to map to unix creds. For * kerberos5, this uses krb5_aname_to_localname. */ - svc_rpc_gss_build_ucred(client, client->cl_cname); + if (my_krb_imp != KRBIMP_MIT) + svc_rpc_gss_build_ucred(client, client->cl_cname); svc_rpc_gss_set_flavor(client); gss_release_name(&min_stat, &client->cl_cname); *** 680 LINES SKIPPED *** From nobody Thu Aug 7 21:11:47 2025 X-Original-To: dev-commits-src-main@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 4byfx01QsPz63Vy4; Thu, 07 Aug 2025 21:11: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byfwz3jRgz46wZ; Thu, 07 Aug 2025 21:11:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754601107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uYX4es4T5OYrPEaHOEiVhYfZBgFCIr56RkDM0y/79Gs=; b=lSHEN64RwMuHJe+hfVcEvE1P6EI4Mnnln+EdUkOBxjsojzVdlsMGEgMkoeY7rdB+IikRPz +Ix2rTFZxdzRBfMHbBrnkvkYWYGFlMg76gMguh0yOGX9WcA9VPPSnxHJ131Nd8R1BoLtaA uH4KO9tiPlwWHwDm6sGlUOSjtxTCSlpbEMmf808YO4fn+5+qqFCG3GRp0Q53CLYX5ycmRj t+l6YO3KQdbU2rfr/KvjTQr2wMSdSi3fo9SHikdIk81psB6oCWtj3UHK84JSELXFkCuCHl /yTGoaMC5ryQVks1ZMV0vJCO7BlpWW6ndJV+SAImwp9UQcK/3/TWBFRA0o/nkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754601107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uYX4es4T5OYrPEaHOEiVhYfZBgFCIr56RkDM0y/79Gs=; b=ThSsYe112bt6zLg91d7kBxIoDrSjRw1hrSU5fR4RaNvfpQKyvtHzwAf6TIi+OPbaW41bvR 2WgR5PqVr0/ktCfPJ4qQNDk8VgzeJssOEq8+Lv1ze0O7AwnnaAtQzvD5tsuIl2TmmshKAg d5qm0sbSECXvbcr6wyfTBdtJKZTpPudYA5KMlFSGKdsKfL0LyGoby9fCqe1gXRUmRX+TCM x6Y4uSl0E0SbiTxekkykkx3nGSbuzlbAapuF6YGyQqaUSZwRiaBgobpLE8qVbdIfN8vCrQ 7UB0Wvh+DfAoSwGlbHHIeNFZOPj2vTu7MaiGVw40Onhy/ZUdKWndTsOGYxswDg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754601107; a=rsa-sha256; cv=none; b=HoN6LdwIJUdutgEF/1C/3c/iZ7p9jZ8ljGLQi5uDWT2evbrGiderWyxncyJYwKPrWskMRZ FuPqijW7tjmAo/OQvKF0NzP8lq+gB70Px8BoDi/n9rjvmPzZag8pT6KQwzEnvtkYoG2GaD f3Mua3k7XdsfzYRAsgqsh1TQqmOyIBpkWsS2qkn10JGcAcWUltPGXCuYrPH9NjYY2NhEJC JBCNx3Bm85ACEDZQjwEHv7dOOg0xjZr65fm4G4St/bVVg6rwxaw5JECRn5h78t9vJX1xdh fxImfoNpicQ7pS417L1mvZHKCzfZHXC1Ze18+oq/NXYrhXqKQgLeJo3HHH0riA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byfwz3F3Kz1MK2; Thu, 07 Aug 2025 21:11:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577LBlxF094775; Thu, 7 Aug 2025 21:11:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577LBl8R094772; Thu, 7 Aug 2025 21:11:47 GMT (envelope-from git) Date: Thu, 7 Aug 2025 21:11:47 GMT Message-Id: <202508072111.577LBl8R094772@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: ab328f4e33f8 - main - ctld: Catch exceptions by reference instead of by value List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ab328f4e33f8ba7adc7c285fd6aa74254c2e7971 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ab328f4e33f8ba7adc7c285fd6aa74254c2e7971 commit ab328f4e33f8ba7adc7c285fd6aa74254c2e7971 Author: John Baldwin AuthorDate: 2025-08-07 21:11:22 +0000 Commit: John Baldwin CommitDate: 2025-08-07 21:11:22 +0000 ctld: Catch exceptions by reference instead of by value Reported by: GCC -Wcatch-value Sponsored by: Chelsio Communications --- usr.sbin/ctld/conf.cc | 2 +- usr.sbin/ctld/uclparse.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ctld/conf.cc b/usr.sbin/ctld/conf.cc index ab76f8e2ed0b..56a149a58a25 100644 --- a/usr.sbin/ctld/conf.cc +++ b/usr.sbin/ctld/conf.cc @@ -466,7 +466,7 @@ parse_conf(const char *path) bool parsed; try { parsed = yyparse_conf(fp.get()); - } catch (std::bad_alloc) { + } catch (std::bad_alloc &) { log_warnx("failed to allocate memory parsing %s", path); return (false); } catch (...) { diff --git a/usr.sbin/ctld/uclparse.cc b/usr.sbin/ctld/uclparse.cc index cb3b0a17cd74..8a62636ffec6 100644 --- a/usr.sbin/ctld/uclparse.cc +++ b/usr.sbin/ctld/uclparse.cc @@ -1418,7 +1418,7 @@ uclparse_conf(const char *path) bool parsed; try { parsed = uclparse_toplevel(top); - } catch (std::bad_alloc) { + } catch (std::bad_alloc &) { log_warnx("failed to allocate memory parsing %s", path); parsed = false; } catch (...) { From nobody Thu Aug 7 21:15:29 2025 X-Original-To: dev-commits-src-main@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 4byg1G2cncz63VnY; Thu, 07 Aug 2025 21:15:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byg1G0KHNz47cT; Thu, 07 Aug 2025 21:15:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754601330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kbguCeWxyTRe3n8lIWWAi71Mq3Z/5pUZvbghMm2gxt8=; b=PWyqG2koxbwCZlnLhAj9cU5Iy1Ha675Iw0oL+xgz2fkTg3ejz479OfNwhbKt035cVDAl0R YvlQ0N3EkEHwBe5Zr3EfHSv5BHdoaUNyabcceIX/oGjrhr7o77pNP2WaL7h2ZW9cKf4Iq5 FXoKWesbDAE/OTkX+Q02406+p/4rTmB0uRisoOsUlapEV5RSD0Qt5vZCL6WBs4ut7uuz+v bIUz2ZwkpDhudlMnPclGW3jTgc7mgLSl3eGR4joWUPjtDSfYQ6mxfla4aEZZFZg4Nd7LCm 6cy4Dq/Fh7RvcImzkeSgpB4gIafysNC+EwQKAzl/RBVzAnhyh9Gfuj9XILJqPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754601330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kbguCeWxyTRe3n8lIWWAi71Mq3Z/5pUZvbghMm2gxt8=; b=kwaJgUvZ7BJi6fLf12Ga/CCf8ZjYT21r224h4bn+rRcfcQ1dgQ0ugoBZlFolcC5fIBMKF4 oHNsgxKHpr3P7lMX2z+EjiD0RmfrAPoP27a/SNBSLKmB6bM+xjS9I8QTdVxtlqOOtTtHhn 6eLMaEsv+KhtWYUPqHYGyJnrj2Gmymhs/76y4Iq485HmxABx2FuVB34zHtWq94D84WKYs5 FyXDbwy197J/4DYkMPi1cUFBP3ysMs+aq7fvJMMo+bI3r7m97t8KS1iTI1Oezt4HrPFYiX 3Pjjr9zjSeiQoiL/46yiMIyTFrsH/wlsa1hslG4kpFbIrTRzmvWx15dAoELqNQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754601330; a=rsa-sha256; cv=none; b=wov//XROYI1yrm7GNbjh+Z4fRDO9iG1waWV4mMmmChe4tluZ4DFKRVgh2mxweg3dFqdc4p eEOc3PMhOtWq0jrSowvXyq13NN1t0+CglTNsVvlSLQ41WSc9Qv5JTFn5ey9qcv9GKlVk/f KPySvpgUcq/wZ2P+jKiiCpx/9Ptm4pLJAV72OkHxQDqivOntWX3vEKU98X5SKNDaALJ3iX aDjxnM9343qNphBzk7kCXY9mRyjpA5Jnaz2xtG7Yr+7vF5+0fHm78kZirrU0ij+Y5ub784 FRDAWp0nwEhPUL2MjadbItA5aVdpClF9a0pvBddDG1qVH300CNKoxLJhSsjyUw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byg1F6FbSz1LqP; Thu, 07 Aug 2025 21:15:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577LFT6S099471; Thu, 7 Aug 2025 21:15:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577LFTTK099468; Thu, 7 Aug 2025 21:15:29 GMT (envelope-from git) Date: Thu, 7 Aug 2025 21:15:29 GMT Message-Id: <202508072115.577LFTTK099468@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 3a6c62e69597 - main - named_attribute.7: Add an explanation for a quirk List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3a6c62e69597b012589e1f2f5465747e37ab0f13 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=3a6c62e69597b012589e1f2f5465747e37ab0f13 commit 3a6c62e69597b012589e1f2f5465747e37ab0f13 Author: Rick Macklem AuthorDate: 2025-08-07 21:12:37 +0000 Commit: Rick Macklem CommitDate: 2025-08-07 21:12:37 +0000 named_attribute.7: Add an explanation for a quirk I thought I would be able to come up with a ZFS patch to avoid the possibility of there being two attributes with the same name for a file. This can only occur if the two attributes are created when xattr=sa and xattr=dir respectively. I have not been able to fix this, so this patch documents this quirk. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D51751 --- share/man/man7/named_attribute.7 | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/share/man/man7/named_attribute.7 b/share/man/man7/named_attribute.7 index 4080dfce2fab..a0599ef71496 100644 --- a/share/man/man7/named_attribute.7 +++ b/share/man/man7/named_attribute.7 @@ -3,7 +3,7 @@ .\" .\" SPDX-License-Identifier: BSD-2-Clause .\" -.Dd July 20, 2025 +.Dd August 5, 2025 .Dt NAMED_ATTRIBUTE 7 .Os .Sh NAME @@ -153,6 +153,31 @@ property to will make the attribute(s) visible as both named attributes and via .Xr extattr 2 . +.It +For ZFS, it is also possible to create two attributes with the same +name by creating one when the ZFS +.Dv xattr +property is set to +.Dq sa +and then creating another one with the same name after the ZFS +property +.Dv xattr +has been changed to +.Dq dir . +The one created when the ZFS +.Dv xattr +property is set to +.Dq sa +may be removed via +.Xr rmextattr 8 . +.It +To avoid these issues for ZFS, it is strongly recommended that the ZFS +property +.Dv xattr +be set to +.Dq dir +as soon as the file system is created, if named attributes +are to be used on the file system. .El .Pp The named attribute mechanism/system call interface provides certain @@ -288,7 +313,8 @@ enters the named attribute directory for the file object .Xr truncate 2 , .Xr unlinkat 2 , .Xr write 2 , -.Xr zfsprops 7 +.Xr zfsprops 7 , +.Xr rmextattr 8 .Sh HISTORY This interface first appeared in .Fx 15.0 . From nobody Thu Aug 7 21:54:41 2025 X-Original-To: dev-commits-src-main@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 4bygtv3H1Rz63YYW; Thu, 07 Aug 2025 21:55:03 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bygtv0zbPz3D0y; Thu, 07 Aug 2025 21:55:03 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-6157b5d0cc2so2113509a12.1; Thu, 07 Aug 2025 14:55:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754603695; x=1755208495; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=brUdDsMd5igAX2dkLaHSnzQI8eUJbyX/fguf0lZMzYQ=; b=OlTiCBSW4VNt+yCUMQmDjiJd40rga17lD79E0VmEGc3opdEHaQArLpXbWrwLID37Rw 9kNzSkTVoOp/DewYhzTZFeuPsHbsTdufyKMfwsgWWOT6Pe4qMF5Jk6+KAZQ0LxiUiNXG um4PJneYgtFL/dFfHFqyjczxaGZL5hgtjPUVwxfi08zLy3q+MaTrPCcAbnkdOiKUa5sM CCQW6WsGsVw6NxDCop1A7vO5HcBC8vKuHbMwuZvu+aCkFL5VHcnNtrWn1+8vftj64aWc ADebTwgybWGXofEpEw30TQvlz7oeT7wSH3lmsuSii0IrlGW4pgP5ErK7cUpXuQINae3q 5eXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754603695; x=1755208495; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=brUdDsMd5igAX2dkLaHSnzQI8eUJbyX/fguf0lZMzYQ=; b=tKjnLWKTh8K8oq5XLUw9G5PgzL4B89LRmxKet1kju1qvbYZkt4IIZj/2orQJs86TZz ozNJ9O40uPy2dv770HxoTHtAo7O9bZiGRUD8XUXpQxT0xpa8dKyBmPv6qcGijhJW6Sfc 1qFqnZr+ipa3XgmRmWPNu514avkOKE6qjM7cUVz5lBTgrTOvakSu5Biwz8jcKyaE828/ hEKOV6MxEY81h7eu5XW0h3aYm0aY38GzG1kNeN6p85NIL7XH/txExcFG5lgohPFcg3vz KI3LsZAhRMPzhEZAxLIR2hZbwWT8aXxNjZu1ULRnjK+Maa9WEiLRep5ba7uc6US8UChk 6UYg== X-Forwarded-Encrypted: i=1; AJvYcCW/zlYzXjLolG8o7tAu70WhmhUvgcSQo6YqQfc8sq7ameW9sSK8/BSuqXqb2Kxo1pAjoQ==@freebsd.org, AJvYcCXKMvwIxJAOeDtyIUp+OxkKhng8bROUObXn76GetqU7TqCuLUTkQ5C7K118q5NtfkCepHG2nKaWZ2GWas6FPvbNpkJUzA==@freebsd.org, AJvYcCXLjBQoAYr5nNL7YqzHRf0nyLxGyC8/nUTVbYKRXy4v028EnfTdfkCmHwET3SgeXw8A15m52nQEdnUq2KTy64A=@freebsd.org, AJvYcCXylOwICbXTzaBbTkh/fRtp1zpZ4bG+6cHKVXO0sI0BWHH7wpY2oLVb37I2t9+AARsHJBiWleoicJHptip1OFZk4RDnA7U=@freebsd.org X-Gm-Message-State: AOJu0YwgHveAQkCxbRLDQv+3YBf7VmW2pNEG0JKmOpSQcUO6Ii+S/HA+ bLWCVRRpJ/S1rqk5lqCkGK8+/aSYLA+XBOiGRz5Qd4UhWtStDMfEjRFxoy+fwaKIqL9wq1NJK/I yD3/7NVxT5FBS/TBtAhThZKlBSDo05w== X-Gm-Gg: ASbGncszgSSIg/2/eAHIgNqhCEj8D8MdBTShNh0dP25OKdzbcFFADTzKL7D68p9I4xs jqMW9UbtsURFS2zi6Qdr2ySrdS51CSrOGsC7+7XdmAh8MBMtu9vuSf/0SWsV/dzHoBw8M49TMMs 0qSuIpSAitS6p/z+NYZdgGNNlwop97qto2BWWmf0qpOwRdxGla//LQvnpcpyu6TX0pXSRHUdEnC LW4IX+sfV3EVrv0BlKZAv0/ecT9x4Jcrr17LOA= X-Google-Smtp-Source: AGHT+IEGOxaUhMBsBO5hjJcRCgzVJR360q/Q92hIjcZxSMDDnqPXkkbUGE0l8jzOjZz50ZbkFpHb7Qd8JUcujiiuMyI= X-Received: by 2002:a05:6402:13c4:b0:617:ddc1:ddf4 with SMTP id 4fb4d7f45d1cf-617e2bc5edfmr304915a12.14.1754603694494; Thu, 07 Aug 2025 14:54:54 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508071717.577HHbfI052679@gitrepo.freebsd.org> <20250807172129.49D0EB7@slippy.cwsent.com> In-Reply-To: <20250807172129.49D0EB7@slippy.cwsent.com> From: Rick Macklem Date: Thu, 7 Aug 2025 14:54:41 -0700 X-Gm-Features: Ac12FXwDlpO7nTHz3tpKexiaKtyugz4PUG6MtxrFtd8VOg2-fwM8Zf9beO8BcZY Message-ID: Subject: Re: git: e26259f48afe - main - gssapi,krb5: Replace libgssapi with the MIT version To: Cy Schubert Cc: Rick Macklem , Cy Schubert , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4bygtv0zbPz3D0y X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; TAGGED_FROM(0.00)[] On Thu, Aug 7, 2025 at 10:21=E2=80=AFAM Cy Schubert wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > Rick, > > Please go ahead with your kgssapi patches. I have applied them here. > Kerberized NFS works again. Thanks. It's back in main and at least survived a make buildworld. (timderbox just takes too long, even on the universe14a to-day.) rick > > > -- > Cheers, > Cy Schubert > FreeBSD UNIX: Web: https://FreeBSD.org > NTP: Web: https://nwtime.org > > e**(i*pi)+1=3D0 > > > In message <202508071717.577HHbfI052679@gitrepo.freebsd.org>, Cy Schubert > write > s: > > The branch main has been updated by cy: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3De26259f48afe98022d885f02= fbb8abcd > > 7878e41a > > > > commit e26259f48afe98022d885f02fbb8abcd7878e41a > > Author: Cy Schubert > > AuthorDate: 2025-07-31 16:51:20 +0000 > > Commit: Cy Schubert > > CommitDate: 2025-08-07 17:17:00 +0000 > > > > gssapi,krb5: Replace libgssapi with the MIT version > > > > lib/libgssapi is based on Heimdal. As on Linux systems, the MIT > > libgssapi_krb5 replaces it. With both gssapi libraries and header f= iles > > installed results in broken buildworld (gssd) and ports that will n= ot > > build without modifications to support the MIT gssapi in an alterna= te > > location. > > > > 73ed0c7992fd removed the MIT GSSAPI headers from /usr/include. Apps= using > > MIT KRB5 gssapi functions and structures will fail to build without= this > > patch. > > > > This patch includes a temporary patch to usr.sbin/gssd to allow it > > to build with this patch. rmacklem@ has a patch for this and for > > kgssapi that uses this patch to resolve kgssapi issues for NFS with > > Kerberos. > > > > This patch is an updated version of D51661 to allow it to build fol= lowing > > additional patchs to the tree. > > > > This should have been implmented with 7e35117eb07f. > > > > Fixes: 7e35117eb07f, 73ed0c7992fd > > Differential Revision: https://reviews.freebsd.org/D51661 > > --- > > Makefile.inc1 | 6 ++++-- > > ObsoleteFiles.inc | 6 ++++++ > > etc/gss-krb5/Makefile | 2 +- > > etc/gss-krb5/qop | 1 - > > etc/mtree/BSD.include.dist | 4 ---- > > include/Makefile | 2 +- > > krb5/include/Makefile | 5 ++--- > > krb5/include/gssapi/Makefile | 9 ++------- > > krb5/lib/gssapi/generic/Makefile.inc | 2 +- > > lib/Makefile | 7 ++++++- > > lib/librpcsec_gss/Makefile | 6 ++++++ > > secure/libexec/sshd-session/Makefile | 9 ++++----- > > secure/usr.bin/ssh/Makefile | 4 ++++ > > secure/usr.sbin/sshd/Makefile | 4 ++++ > > share/mk/src.libnames.mk | 4 ++++ > > tools/build/mk/OptionalObsoleteFiles.inc | 3 +++ > > usr.sbin/gssd/Makefile | 5 ++--- > > usr.sbin/gssd/gssd.c | 3 +++ > > 18 files changed, 53 insertions(+), 29 deletions(-) > > > > diff --git a/Makefile.inc1 b/Makefile.inc1 > > index e6c9b49eefa3..9128d1d8ee77 100644 > > --- a/Makefile.inc1 > > +++ b/Makefile.inc1 > > @@ -3379,8 +3379,8 @@ secure/lib/libssh__L: lib/libldns__L > > > > .if ${MK_GSSAPI} !=3D "no" && ${MK_KERBEROS_SUPPORT} !=3D "no" > > .if ${MK_MITKRB5} !=3D "no" > > -secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \ > > - krb5/util/et__L lib/libmd__L krb5/util/support__L > > +secure/lib/libssh__L: krb5/lib/gssapi__L krb5/lib/krb5__L \ > > + krb5/lib/crypto__L krb5/util/et__L lib/libmd__L krb5/util/support= __L > > .else > > secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ > > kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err_= _L \ > > @@ -3437,8 +3437,10 @@ kerberos5/lib/libheimipcc__L: kerberos5/lib/libr= oken__ > > L kerberos5/lib/libheimbas > > lib/libsqlite3__L: lib/libthr__L > > > > .if ${MK_GSSAPI} !=3D "no" > > +.if ${MK_MITKRB5} =3D=3D "no" > > _lib_libgssapi=3D lib/libgssapi > > .endif > > +.endif > > > > .if ${MK_KERBEROS} !=3D "no" > > .if ${MK_MITKRB5} !=3D "no" > > diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc > > index 86a449c80a76..2f63bbea5a49 100644 > > --- a/ObsoleteFiles.inc > > +++ b/ObsoleteFiles.inc > > @@ -51,6 +51,12 @@ > > # xargs -n1 | sort | uniq -d; > > # done > > > > +# 20250807: Replace lib/libgssapi with krb5/lib/gssapi > > +OLD_FILES+=3Dusr/include/gssapi_krb5/gssapi/gssapi.h > > +OLD_DIRS+=3Dusr/include/gssapi_krb5/gssapi > > +OLD_DIRS+=3Dusr/include/gssapi_krb5 > > +OLD_FILES+=3Detc/gssapi/qop > > + > > # 20250802: libutil bumped to 10 > > OLD_LIBS+=3Dlib/libutil.so.9 > > > > diff --git a/etc/gss-krb5/Makefile b/etc/gss-krb5/Makefile > > index 301a8e074e8c..8886ed35e281 100644 > > --- a/etc/gss-krb5/Makefile > > +++ b/etc/gss-krb5/Makefile > > @@ -1,4 +1,4 @@ > > -FILES=3D mech qop > > +FILES=3D mech > > NO_OBJ=3D > > FILESDIR=3D /etc/gss > > > > diff --git a/etc/gss-krb5/qop b/etc/gss-krb5/qop > > deleted file mode 100644 > > index 7d5b6b8f33dd..000000000000 > > --- a/etc/gss-krb5/qop > > +++ /dev/null > > @@ -1 +0,0 @@ > > -GSS_KRB5_CONF_C_QOP_DES3_KD 0x0200 kerberosv5 > > diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist > > index 0e9f739425a1..28c4d91ac1c0 100644 > > --- a/etc/mtree/BSD.include.dist > > +++ b/etc/mtree/BSD.include.dist > > @@ -258,10 +258,6 @@ > > .. > > gssapi > > .. > > - gssapi_krb5 > > - gssapi > > - .. > > - .. > > gssrpc > > .. > > infiniband > > diff --git a/include/Makefile b/include/Makefile > > index af7ef2337941..2792d594a888 100644 > > --- a/include/Makefile > > +++ b/include/Makefile > > @@ -293,7 +293,7 @@ LSUBSUBDIRS+=3D netgraph/bluetooth/include > > LSUBDIRS+=3D fs/cuse > > .endif > > > > -.if ${MK_GSSAPI} !=3D "no" > > +.if ${MK_GSSAPI} !=3D "no" && ${MK_MITKRB5} =3D=3D "no" > > SUBDIR+=3D gssapi > > INCS+=3D gssapi.h > > .endif > > diff --git a/krb5/include/Makefile b/krb5/include/Makefile > > index 699211b9c3c9..64c5d39b867b 100644 > > --- a/krb5/include/Makefile > > +++ b/krb5/include/Makefile > > @@ -17,13 +17,12 @@ SUBDIR=3D krb5 gssrpc gssapi > > > > SUBDIR_PARALLEL=3D > > > > -INCSGROUPS=3D INCS > > - > > INCSDIR=3D ${INCLUDEDIR} > > > > .PATH: ${KRB5_DIR}/include > > > > -INCS=3D kdb.h \ > > +INCS=3D gssapi.h \ > > + kdb.h \ > > krad.h \ > > krb5.h > > > > diff --git a/krb5/include/gssapi/Makefile b/krb5/include/gssapi/Makefil= e > > index 4959bf78944d..b181187e9d95 100644 > > --- a/krb5/include/gssapi/Makefile > > +++ b/krb5/include/gssapi/Makefile > > @@ -15,16 +15,11 @@ > > > > INCSGROUPS=3D INCS GSSAPI_KRB5 > > INCSDIR=3D ${INCLUDEDIR}/gssapi > > -GSSAPI_KRB5DIR=3D ${INCLUDEDIR}/gssapi_krb5 > > > > -INCS=3D gssapi_alloc.h \ > > +INCS=3D gssapi.h \ > > + gssapi_alloc.h \ > > gssapi_ext.h \ > > gssapi_generic.h \ > > gssapi_krb5.h > > > > -# This gssapi header file is only needed should an app need > > -# to build using the MIT KRB5 GSSAPI library. > > - > > -GSSAPI_KRB5=3D gssapi.h > > - > > .include > > diff --git a/krb5/lib/gssapi/generic/Makefile.inc b/krb5/lib/gssapi/gen= eric/M > > akefile.inc > > index 9de18079a341..ef76172655d6 100644 > > --- a/krb5/lib/gssapi/generic/Makefile.inc > > +++ b/krb5/lib/gssapi/generic/Makefile.inc > > @@ -36,7 +36,7 @@ SRCS+=3D disp_com_err_status.c \ > > INCSGROUPS=3D GSSAPI_INCS > > GSSAPI_INCS=3D gssapi.h > > INCS+=3D ${GENI} > > -GSSAPI_INCSDIR=3D ${INCLUDEDIR}/gssapi_krb5/gssapi > > +GSSAPI_INCSDIR=3D ${INCLUDEDIR}/gssapi > > > > CLEANFILES+=3D gssapi.h ${GGEN} ${GGENI} > > > > diff --git a/lib/Makefile b/lib/Makefile > > index e5139b312a75..9447cc4551c0 100644 > > --- a/lib/Makefile > > +++ b/lib/Makefile > > @@ -137,7 +137,9 @@ SUBDIR_DEPEND_libdevstat=3D libkvm > > SUBDIR_DEPEND_libdpv=3D libfigpar ncurses libutil > > SUBDIR_DEPEND_libedit=3D ncurses > > SUBDIR_DEPEND_libgeom=3D libexpat libsbuf > > +.if ${MK_MITKRB5} =3D=3D "no" > > SUBDIR_DEPEND_librpcsec_gss=3D libgssapi > > +.endif > > SUBDIR_DEPEND_libmagic=3D libz > > SUBDIR_DEPEND_libmemstat=3D libkvm > > SUBDIR_DEPEND_libpam=3D libcrypt ${_libradius} librpcsvc libtacplus li= butil ${ > > _libypclnt} ${_libcom_err} > > @@ -176,7 +178,10 @@ SUBDIR.${MK_DIALOG}+=3D libdpv libfigpar > > SUBDIR.${MK_FDT}+=3D libfdt > > SUBDIR.${MK_FILE}+=3D libmagic > > SUBDIR.${MK_GPIO}+=3D libgpio > > -SUBDIR.${MK_GSSAPI}+=3D libgssapi librpcsec_gss > > +.if ${MK_MITKRB5} =3D=3D "no" > > +SUBDIR.${MK_GSSAPI}+=3D libgssapi > > +.endif > > +SUBDIR.${MK_GSSAPI}+=3D librpcsec_gss > > SUBDIR.${MK_ICONV}+=3D libiconv_modules > > .if ${MK_MITKRB5} =3D=3D "no" > > SUBDIR.${MK_KERBEROS_SUPPORT}+=3D libcom_err > > diff --git a/lib/librpcsec_gss/Makefile b/lib/librpcsec_gss/Makefile > > index a29d9780c1ab..eebc975acbd2 100644 > > --- a/lib/librpcsec_gss/Makefile > > +++ b/lib/librpcsec_gss/Makefile > > @@ -1,10 +1,16 @@ > > +.include > > + > > PACKAGE=3Dlib${LIB} > > LIB=3D rpcsec_gss > > SHLIB_MAJOR=3D 1 > > SRCS+=3D rpcsec_gss.c rpcsec_gss_prot.c rpcsec_gss_conf.c rpcsec= _gss_mis > > c.c \ > > svc_rpcsec_gss.c > > > > +.if ${MK_MITKRB5} =3D=3D "no" > > LIBADD=3D gssapi > > +.else > > +LIBADD=3D gssapi_krb5 > > +.endif > > > > VERSION_DEF=3D ${SRCTOP}/lib/libc/Versions.def > > SYMBOL_MAPS=3D ${.CURDIR}/Symbol.map > > diff --git a/secure/libexec/sshd-session/Makefile b/secure/libexec/sshd= -sessi > > on/Makefile > > index 8841cace5239..37e099794bd5 100644 > > --- a/secure/libexec/sshd-session/Makefile > > +++ b/secure/libexec/sshd-session/Makefile > > @@ -39,15 +39,14 @@ LDFLAGS+=3D-L${LIBBLACKLISTDIR} > > .endif > > > > .if ${MK_GSSAPI} !=3D "no" && ${MK_KERBEROS_SUPPORT} !=3D "no" > > -LIBADD+=3D gssapi_krb5 gssapi krb5 > > .if ${MK_MITKRB5} !=3D "no" > > +LIBADD+=3D gssapi_krb5 krb5 > > .include "../../krb5/Makefile.inc" > > CFLAGS+=3D -I${KRB5_DIR}/include \ > > -I${KRB5_SRCTOP}/include \ > > - -I${KRB5_OBJTOP}/lib \ > > - -I${KRB5_DIR}/lib/gssapi/generic \ > > - -I${KRB5_DIR}/lib/gssapi/krb5 \ > > - -I${KRB5_DIR}/lib/gssapi/mechglue > > + -I${KRB5_OBJTOP}/lib > > +.else > > +LIBADD+=3D gssapi_krb5 gssapi krb5 > > .endif > > .endif > > > > diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile > > index acb1fd4eaa25..a4f36d0fe2df 100644 > > --- a/secure/usr.bin/ssh/Makefile > > +++ b/secure/usr.bin/ssh/Makefile > > @@ -18,7 +18,11 @@ SRCS+=3D gss-genr.c > > LIBADD=3D ssh > > > > .if ${MK_GSSAPI} !=3D "no" && ${MK_KERBEROS_SUPPORT} !=3D "no" > > +.if ${MK_MITKRB5} =3D=3D "no" > > LIBADD+=3D gssapi > > +.else > > +LIBADD+=3D gssapi_krb5 > > +.endif > > .endif > > > > LIBADD+=3D crypto > > diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makef= ile > > index e6913cd9d0d6..f37dfe1c1b3a 100644 > > --- a/secure/usr.sbin/sshd/Makefile > > +++ b/secure/usr.sbin/sshd/Makefile > > @@ -19,7 +19,11 @@ moduli: .MADE > > LIBADD=3D ssh util > > > > .if ${MK_GSSAPI} !=3D "no" && ${MK_KERBEROS_SUPPORT} !=3D "no" > > +.if ${MK_MITKRB5} =3D=3D "no" > > LIBADD+=3D gssapi_krb5 gssapi krb5 > > +.else > > +LIBADD+=3D gssapi_krb5 krb5 > > +.endif > > .endif > > > > .if ${MK_TCP_WRAPPERS} !=3D "no" > > diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk > > index 283a99496b9f..9ca043e7733c 100644 > > --- a/share/mk/src.libnames.mk > > +++ b/share/mk/src.libnames.mk > > @@ -472,7 +472,11 @@ _DP_ncursesw=3D tinfow > > _DP_formw=3D ncursesw > > _DP_nvpair=3D spl > > _DP_panelw=3D ncursesw > > +.if ${MK_MITKRB5} =3D=3D "no" > > _DP_rpcsec_gss=3D gssapi > > +.else > > +_DP_rpcsec_gss=3D gssapi_krb5 > > +.endif > > _DP_smb=3D kiconv > > _DP_ulog=3D md > > _DP_fifolog=3D z > > diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/= Option > > alObsoleteFiles.inc > > index aa6d04f1cc43..8e5ac7fa2a63 100644 > > --- a/tools/build/mk/OptionalObsoleteFiles.inc > > +++ b/tools/build/mk/OptionalObsoleteFiles.inc > > @@ -4836,6 +4836,7 @@ OLD_FILES+=3Dusr/share/man/man8/sserver.8.gz > > .else > > .if ${MK_MITKRB5} !=3D "no" > > # Remove Heimdal because we want MIT KRB5 but not Heimdal > > +OLD_FILES+=3Detc/gss/qop > > OLD_FILES+=3Detc/rc.d/ipropd_master > > OLD_FILES+=3Detc/rc.d/ipropd_slave > > OLD_FILES+=3Dusr/bin/asn1_compile > > @@ -4921,6 +4922,8 @@ OLD_LIBS+=3Dusr/lib/libasn1.so.11 > > OLD_FILES+=3Dusr/lib/libasn1_p.a > > OLD_LIBS+=3Dusr/lib/libcom_err.so.5 > > OLD_FILES+=3Dusr/lib/libcom_err_p.a > > +OLD_LIBS+=3Dusr/lib/libgssapi.a > > +OLD_LIBS+=3Dusr/lib/libgssapi.so.10 > > OLD_LIBS+=3Dusr/lib/libgssapi_krb5.so.10 > > OLD_FILES+=3Dusr/lib/libgssapi_krb5_p.a > > OLD_FILES+=3Dusr/lib/libgssapi_mech.a > > diff --git a/usr.sbin/gssd/Makefile b/usr.sbin/gssd/Makefile > > index 569e2c7e18f5..336a1b49f696 100644 > > --- a/usr.sbin/gssd/Makefile > > +++ b/usr.sbin/gssd/Makefile > > @@ -9,15 +9,14 @@ SRCS=3D gssd.c gssd.h gssd_svc.c gssd_xdr.c gss= d_prot.c > > CFLAGS+=3D -I. > > WARNS?=3D 1 > > > > -LIBADD=3D gssapi > > .if ${MK_KERBEROS_SUPPORT} !=3D "no" > > .if ${MK_MITKRB5} !=3D "no" > > # MIT KRB5 > > -LIBADD+=3D krb5 k5crypto krb5profile krb5support > > +LIBADD+=3D gssapi_krb5 krb5 k5crypto krb5profile krb5support > > CFLAGS+=3D -DMK_MITKRB5=3Dyes > > .else > > # Heimdal > > -LIBADD+=3D krb5 roken > > +LIBADD+=3D gssapi krb5 roken > > .endif > > .else > > CFLAGS+=3D -DWITHOUT_KERBEROS > > diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c > > index 94eb6ca575c8..2a3af05496cf 100644 > > --- a/usr.sbin/gssd/gssd.c > > +++ b/usr.sbin/gssd/gssd.c > > @@ -53,6 +53,9 @@ > > #include > > #include > > #include > > +#ifdef MK_MITKRB5 > > +#include > > +#endif > > #include > > #include > > > > > > From nobody Thu Aug 7 22:12:06 2025 X-Original-To: dev-commits-src-main@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 4byhGf57Qnz63ZdF; Thu, 07 Aug 2025 22:12:10 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta003.cacentral1.a.cloudfilter.net (omta001.cacentral1.a.cloudfilter.net [3.97.99.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byhGd4T68z3F9Y; Thu, 07 Aug 2025 22:12:09 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=pass (mx1.freebsd.org: domain of cy.schubert@cschubert.com designates 3.97.99.32 as permitted sender) smtp.mailfrom=cy.schubert@cschubert.com; dmarc=permerror reason="p tag has invalid value: quarantine rua=mailto:p[ostmaster@cschubert.com" header.from=cschubert.com (policy=permerror) Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTPS id k2VIuXohR9JM2k8qGuWmoC; Thu, 07 Aug 2025 22:12:08 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id k8qFu6648JhBPk8qGuA5Qp; Thu, 07 Aug 2025 22:12:08 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=QY3Fvdbv c=1 sm=1 tr=0 ts=689524b8 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=2OwXVqhp2XgA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=hF2rLc1pAAAA:8 a=YxBL1-UpAAAA:8 a=k9xxv-WV13V9bKM4xnAA:9 a=CjuIK1q_8ugA:10 a=LK5xJRSDVpKd5WXXoEvA:22 a=O9OM7dhJW_8Hj9EqqvKN:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy.cwsent.com [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id ACDACEB; Thu, 07 Aug 2025 15:12:06 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id A6398111; Thu, 07 Aug 2025 15:12:06 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Rick Macklem cc: Cy Schubert , Rick Macklem , Cy Schubert , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e26259f48afe - main - gssapi,krb5: Replace libgssapi with the MIT version In-reply-to: References: <202508071717.577HHbfI052679@gitrepo.freebsd.org> <20250807172129.49D0EB7@slippy.cwsent.com> Comments: In-reply-to Rick Macklem message dated "Thu, 07 Aug 2025 14:54:41 -0700." List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Thu, 07 Aug 2025 15:12:06 -0700 Message-Id: <20250807221206.A6398111@slippy.cwsent.com> X-CMAE-Envelope: MS4xfNdMiplf5gaBPeh7xyn4t+gGIObi1vwuy8dSjtx07P7e+YVH5Sl4XRdjn/ERZ5w/usDC96XfXnOVwgI7GCNfzqrxNcE74O1KWYpUxCem3C/04uH5iuU6 qlYWRbBDJzb6vQJe8OsYbGXXW2lJVkFdZjeknhESw9/d9QwVO2dTdiShojwE83XFMGEmKa6K4bqSklNEbvTpF5Ulvv7fKzimXpBA338bB1VPHuizzR7w+Rd8 y0eblUo14A2/2QMVCFjTKbxDDjFXO2OUayszfCsmC0TT8l+ZF/2213qGkBPuVxA51l6Yi7Jo8rHadPAIJSQAaAC7cgdEgUikgO8GSWAFfEo+mC719D1uKPTd sPnd+ecUXkmriADIuW9ubJlOxNIzySkWaYWX7Otq7gcTj512bAE= X-Spamd-Result: default: False [-1.79 / 15.00]; SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.99)[-0.987]; MV_CASE(0.50)[]; RWL_MAILSPIKE_EXCELLENT(-0.40)[3.97.99.32:from]; R_SPF_ALLOW(-0.20)[+ip4:3.97.99.32/31]; MIME_GOOD(-0.10)[text/plain]; RCVD_IN_DNSWL_LOW(-0.10)[3.97.99.32:from]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_TO(0.00)[gmail.com]; RCVD_COUNT_THREE(0.00)[4]; DMARC_BAD_POLICY(0.00)[cschubert.com : p tag has invalid value: quarantine rua=mailto:p[ostmaster@cschubert.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; HAS_REPLYTO(0.00)[Cy.Schubert@cschubert.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCPT_COUNT_SEVEN(0.00)[7]; R_DKIM_NA(0.00)[]; TAGGED_RCPT(0.00)[]; REPLYTO_EQ_FROM(0.00)[] X-Rspamd-Queue-Id: 4byhGd4T68z3F9Y X-Spamd-Bar: - In message , Rick Macklem writes: > On Thu, Aug 7, 2025 at 10:21=E2=80=AFAM Cy Schubert com> wrote: > > > > CAUTION: This email originated from outside of the University of Guelph. = > Do not click links or open attachments unless you recognize the sender and = > know the content is safe. If in doubt, forward suspicious emails to IThelp@= > uoguelph.ca. > > > > Rick, > > > > Please go ahead with your kgssapi patches. I have applied them here. > > Kerberized NFS works again. > Thanks. It's back in main and at least survived a make buildworld. > (timderbox just takes too long, even on the universe14a to-day.) KRB5 NFS works. Thank you for getting that in. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e**(i*pi)+1=0 From nobody Thu Aug 7 22:15:45 2025 X-Original-To: dev-commits-src-main@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 4byhLn4YXyz63ZjF; Thu, 07 Aug 2025 22:15:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byhLn2lB3z3FgW; Thu, 07 Aug 2025 22:15:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754604945; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iv7rKgg5D692EfDJmFEM5HDucfWmH8/C+zFQ2ci0GNE=; b=A0zbhVmSRyJPRWCV+HGSERGUOoLIpAbCYt/sz1RcbfR9CMfO0aqITyLIQWMHAXmhUB8Ixn sjfsowQycEfUiZ5Pii6gfkTQT/PEg7yOY9ks9M9XInivAwnrbXRQBOd3Ki7KmAf1iMj0aI taIUZeV56mWdXoy5V+ku31AQxPhVzD0Ihu0gKj0N4CT8i/erZQ+dgrYtoJZjTuGU2g7Zfx AodLX+320AzTgy0KB00jQgWuQDlfc6OUBWlsNvHjeGifoOfmgqngcCE751oSr3oNnX64iL IHs9oM7OWSu9hBkm2cjdYOmUsZ26Ft5kGzb/J1Yhu4iEE1Y8M5fqQlU9NrDbqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754604945; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iv7rKgg5D692EfDJmFEM5HDucfWmH8/C+zFQ2ci0GNE=; b=Q+JpInP+piOM89eYW5/wJ3uJyElfhoYRLLFaOANEYJIlO/wBvl0FsVhW8cgHjLThy4AOto 9cI7vJ0gKz1wAkr44P0phEApR6LZ67AiIt4Gq5f3N/p+rEiDJr/QdAZqwOcqsKiPcYE9af coEXk2cg/wDEYKoKrzfLO3q6z5Jkjsd4jERydhEOjJe8RYIzgxNxIFzrfDGmkRKtRzZQk7 0+dyXPajLCOtOFOD+dgYvACCpUmb5V+yxJzoHuunZc0DI7AoXuIzRGDJja8NvJT2JUx19l B6iuyComczvEOfb2R7jhBGgd2H1E5yxZMFjDZTBW8JoQlm8dXevyLaZLHDszng== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754604945; a=rsa-sha256; cv=none; b=np50+kl42mMA2m67FZQYuxL88g/JCyKquPavd/4aVrcG4GbvsHaUKUevevC4u/XCy+I/Jt AVpuDJTACKUABwvpofkGy4jUgmi1s0wTTic+fl8tC1b5t/i9d1V35vUidRGuVtMuODu8M8 aDKEqKBKq13Ai6eOWb07h4h3bBaaqGlUDkGdT4s707SMgPiZ6VuProO6+pV19MFk2nBXNy D7QKvM9YyOz09mkjcGWqiECKa7RCWvR4U7y6w0ESRvvi+YDymXeI3br/x7XuQYG9plKLH2 77wNsR8BCcqswIIiPQ+diYPOIYCu7XSM9s2P2oEoMCka35aK1JHiKwMkZ8jW+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byhLn2Hzqz1MwH; Thu, 07 Aug 2025 22:15:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577MFj8L011935; Thu, 7 Aug 2025 22:15:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577MFjpx011932; Thu, 7 Aug 2025 22:15:45 GMT (envelope-from git) Date: Thu, 7 Aug 2025 22:15:45 GMT Message-Id: <202508072215.577MFjpx011932@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Simon J. Gerraty" Subject: git: 5c4d1c85847d - main - Replace license with just SPDX BSD-2-Clause List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5c4d1c85847d84bd86e6b12408f9b5f846094f39 Auto-Submitted: auto-generated The branch main has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=5c4d1c85847d84bd86e6b12408f9b5f846094f39 commit 5c4d1c85847d84bd86e6b12408f9b5f846094f39 Author: Simon J. Gerraty AuthorDate: 2025-08-07 22:15:37 +0000 Commit: Simon J. Gerraty CommitDate: 2025-08-07 22:15:37 +0000 Replace license with just SPDX BSD-2-Clause --- libexec/rc/debug.sh | 11 ++--------- libexec/rc/hooks.sh | 17 +++++++---------- libexec/rc/safe_eval.sh | 12 +++--------- 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/libexec/rc/debug.sh b/libexec/rc/debug.sh index b379297a4183..739c81a709f6 100755 --- a/libexec/rc/debug.sh +++ b/libexec/rc/debug.sh @@ -1,6 +1,4 @@ : -# SPDX-License-Identifier: BSD-2-Clause - # NAME: # debug.sh - selectively debug scripts # @@ -83,16 +81,11 @@ # Simon J. Gerraty # RCSid: -# $Id: debug.sh,v 1.46 2024/12/13 03:55:52 sjg Exp $ +# $Id: debug.sh,v 1.47 2025/08/07 21:59:54 sjg Exp $ # # @(#) Copyright (c) 1994-2024 Simon J. Gerraty # -# This file is provided in the hope that it will -# be of use. There is absolutely NO WARRANTY. -# Permission to copy, redistribute or otherwise -# use this file is hereby granted provided that -# the above copyright notice and this notice are -# left intact. +# SPDX-License-Identifier: BSD-2-Clause # # Please send copies of changes and bug-fixes to: # sjg@crufty.net diff --git a/libexec/rc/hooks.sh b/libexec/rc/hooks.sh index 7c478fbeda15..af4aff3d6bc5 100755 --- a/libexec/rc/hooks.sh +++ b/libexec/rc/hooks.sh @@ -1,6 +1,4 @@ : -# SPDX-License-Identifier: BSD-2-Clause - # NAME: # hooks.sh - provide hooks for customization # @@ -20,7 +18,7 @@ # # DESCRIPTION: # The functions add_hooks and run_hooks are retained for -# backwards compatability. They are aliases for hooks_add and +# backwards compatibility. They are aliases for hooks_add and # hooks_run. # # hooks_add_all simply adds the "func"s to the list "HOOKS". @@ -50,16 +48,15 @@ # # RCSid: -# $Id: hooks.sh,v 1.24 2024/12/13 03:55:52 sjg Exp $ +# $Id: hooks.sh,v 1.26 2025/08/07 21:59:54 sjg Exp $ # # @(#)Copyright (c) 2000-2024 Simon J. Gerraty # -# This file is provided in the hope that it will -# be of use. There is absolutely NO WARRANTY. -# Permission to copy, redistribute or otherwise -# use this file is hereby granted provided that -# the above copyright notice and this notice are -# left intact. +# SPDX-License-Identifier: BSD-2-Clause +# +# Please send copies of changes and bug-fixes to: +# sjg@crufty.net +# # avoid multiple inclusion _HOOKS_SH=: diff --git a/libexec/rc/safe_eval.sh b/libexec/rc/safe_eval.sh index 8aaddcaf2176..6c23b4c98218 100644 --- a/libexec/rc/safe_eval.sh +++ b/libexec/rc/safe_eval.sh @@ -1,16 +1,10 @@ -# SPDX-License-Identifier: BSD-2-Clause - +: # RCSid: -# $Id: safe_eval.sh,v 1.24 2025/05/23 21:34:54 sjg Exp $ +# $Id: safe_eval.sh,v 1.25 2025/08/07 22:13:03 sjg Exp $ # # @(#) Copyright (c) 2023-2024 Simon J. Gerraty # -# This file is provided in the hope that it will -# be of use. There is absolutely NO WARRANTY. -# Permission to copy, redistribute or otherwise -# use this file is hereby granted provided that -# the above copyright notice and this notice are -# left intact. +# SPDX-License-Identifier: BSD-2-Clause # # Please send copies of changes and bug-fixes to: # sjg@crufty.net From nobody Thu Aug 7 22:31:24 2025 X-Original-To: dev-commits-src-main@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 4byhj05wd3z63bDG; Thu, 07 Aug 2025 22:31:32 +0000 (UTC) (envelope-from steffen@sdaoden.eu) Received: from sdaoden.eu (sdaoden.eu [217.144.132.164]) (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) by mx1.freebsd.org (Postfix) with ESMTPS id 4byhj03Kdxz3GlP; Thu, 07 Aug 2025 22:31:32 +0000 (UTC) (envelope-from steffen@sdaoden.eu) Authentication-Results: mx1.freebsd.org; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1754605885; x=1755272551; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:mail-followup-to:openpgp:blahblahblah: mime-version:content-type:content-transfer-encoding:author:from:subject: date:to:cc:resent-author:resent-date:resent-from:resent-sender:resent-to: resent-cc:resent-reply-to:resent-message-id:in-reply-to:references: mime-version:content-type:content-transfer-encoding:content-disposition: content-id:content-description:message-id:mail-followup-to:openpgp: blahblahblah; bh=qtUtuLz0+tMRewy4BboiJppmqw376OH8N90Ykq3pMPY=; b=LQOiX8AyJVp9zhaanykLk/XEACK9HvsEkoaPMKDGKrvD6fo3+4prsOTc2zsc2iIHqH5BE1nt f/yNMVkqWkAhJYIY8bFju6h4ZcJAfHXBxVjm6U+9bNYkvNLrDBV1lj+9MMk20zHxUDsR1YeTeR LbyBOGhn2Fx94db8WGfDD8tnZ2/ztReu23i/b83xZzm3Llffc4gPx7ce/KqtxPnB83psawKgov VwLbYuLuFyJmeo6gSYcDnFZ8A4t7pBHe4SqVr8lkpWBWgcEyTnR6WbGw7zwmHpVNFATFin86iZ M5f/12L9U43gWR+9JC0QYytNvoAQeK2oph/1B9tvlhOD8bGQ== Date: Fri, 08 Aug 2025 00:31:24 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: "Simon J. Gerraty" Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 5c4d1c85847d - main - Replace license with just SPDX BSD-2-Clause Message-ID: <20250807223124.2tsDIUvh@steffen%sdaoden.eu> In-Reply-To: <202508072215.577MFjpx011932@gitrepo.freebsd.org> References: <202508072215.577MFjpx011932@gitrepo.freebsd.org> Mail-Followup-To: "Simon J. Gerraty" , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org User-Agent: s-nail v14.9.25-689-gca7cfb3bd1-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4byhj03Kdxz3GlP X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15987, ipnet:217.144.128.0/20, country:DE] Hello Simon, all, Simon J. Gerraty wrote in <202508072215.577MFjpx011932@gitrepo.freebsd.org>: ... |URL: https://cgit.FreeBSD.org/src/commit/?id=3D5c4d1c85847d84bd86e6b12408= f\ |9b5f846094f39 | |commit 5c4d1c85847d84bd86e6b12408f9b5f846094f39 |Author: Simon J. Gerraty |AuthorDate: 2025-08-07 22:15:37 +0000 |Commit: Simon J. Gerraty |CommitDate: 2025-08-07 22:15:37 +0000 | | Replace license with just SPDX BSD-2-Clause That is very interesting! And .. are you really sure this is right with BSD etc licenses which explicitly require that the license text is included? So i looked and found [1] which says SPDX IDs are intending to express information about licenses. Copyright notices =E2=80=90 statements about who owns the copyright in a file or project =E2=80=90 are outside the scope of SPDX short-form IDs. Therefore, you should not remove or modify existing copyright notices in files when adding an SPDX ID. However i am sure you do not do something like this "just like that", and would be very interested -- it would be nice to be able to vaporise the file header -- i always have that pitfall moment when i look into Plan9 / 9front source code, which then simply starts off (and very often with "#include ", just like that). [1] https://spdx.dev/learn/handling-license-info/ --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) | |During summer's humble, here's David Leonard's grumble | |The black bear, The black bear, |blithely holds his own holds himself at leisure |beating it, up and down tossing over his ups and downs with pleasure | |Farewell, dear collar bear From nobody Thu Aug 7 22:45:24 2025 X-Original-To: dev-commits-src-main@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 4byj104Z7mz63c10; Thu, 07 Aug 2025 22:45: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byj102fcyz3HqC; Thu, 07 Aug 2025 22:45:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754606724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4o/sdhelmkIs8Qd9sv+bAsJ2aOHALszBT+Www5rE7cQ=; b=hBANL07bi9Lfn1NSnYUpf2kOMcWShnL4Mb6zbjWbDHPN3uZ04yZkCSqVMDVAqslTuU3bVe n037lt1E/ZCuutebhpnp9sB1iaQ5jGgJeu6sO0+XOLfPxrTaiAEYOsbBfWJG4o+lV8V0ZR mW7IURnJejibKi2y9Af2E1fi94+6MCmZU5Io3Ae9FXddEPLdSIpVhUBQiphKZ5M/dr6ws6 rWUhJegKqs1xRFmfSNao8Q1WK9lDKUCAkecXzQeGgC4Xf56vvDGchG+0PvHagoO50dM9YJ Zf/r/pb9iZxAJIHy7mWC+q4s2uo1PL7nMe47qbwqGxi2pJn5rLu0TZp4tFVuSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754606724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4o/sdhelmkIs8Qd9sv+bAsJ2aOHALszBT+Www5rE7cQ=; b=ZdaxdA6aHDxRNXFi0EmGrE//xF5C658IWQrQIt+oxTePnGZP8DDdjv19Wp48Jue/aT1qQb OWi8sHGb5Dn3POtbbhV4nqJQE4rdMhmwExpIkOdjm4L/0W1D+U6ezh3hW7I1tEiKr3P1S8 eDuj1W+Q5mazHXmj84vAcPEQ9AQ3eqip9lChbHdYb6qqMASJHcmQaDMEa+52W2qrqYMbou Rq7+oIcCsSy7mWaN8LKWxNamcxviBObwcKj8r6Lx5XUe3S2WsMx2Uc36SackJGaOxeNzaC HakNR21H4fwlzF4WaqGQcFyRJlgejKJ80DibRPcGsS/18bwg4pgwL250F+LLdA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754606724; a=rsa-sha256; cv=none; b=jd4gZkV/+64M25jBcfwBA2IjBVTv3n61pkEw800RWzFBz0cxN2ZjR9kcvaKkAJHgRZmJ5w JQrjA4v9/U9Q/qvxGvXHUDwWDXdWlfpOAoktrarl7HJNzh4w15ePCX+A1dWUOQdVsiscNg GndGhhSiKFyNOrI8S+3E033spO5tNv+SGbepvVMUBFGxUqDvgh7RiLG8r/Z8mI74S42UNb xLHuAnLVbm/N3kXQ6W5zb/aiMPJUrbcCbZImF8jgMlzOvR085DKic0fByukFiM2Wdgs/Vh NC4XdWc/IfVWMzaJLm9fuuLHg3atafUkcAzq0JZOA5r8ln/2SvWqERwIDzyiMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byj102FH2z1PR0; Thu, 07 Aug 2025 22:45:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577MjOAw067273; Thu, 7 Aug 2025 22:45:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577MjO0V067270; Thu, 7 Aug 2025 22:45:24 GMT (envelope-from git) Date: Thu, 7 Aug 2025 22:45:24 GMT Message-Id: <202508072245.577MjO0V067270@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 0080571ee0a5 - main - RELNOTES: Make an entry for Solaris style extended attributes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0080571ee0a5c4959c0822c805e5952e55dbd7d1 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=0080571ee0a5c4959c0822c805e5952e55dbd7d1 commit 0080571ee0a5c4959c0822c805e5952e55dbd7d1 Author: Rick Macklem AuthorDate: 2025-08-07 22:42:24 +0000 Commit: Rick Macklem CommitDate: 2025-08-07 22:42:24 +0000 RELNOTES: Make an entry for Solaris style extended attributes --- RELNOTES | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/RELNOTES b/RELNOTES index fa42b77f482b..1ce6731694a2 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,14 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +2ec2ba7e232d, df58e8b1506f (openzfs 2957eabbe), f61844833ee8, b1b607bd200f, + ee95e4d02dbd: + Add Solaris style extended attributes (called named attributes + in NFSv4). At this time, only ZFS when the ZFS property called + xattr=dir and NFSv4 support them. The attributes are presented + in a directory as regular files. See named_attribute(7) for + more information. + ef2a572bf6: Inline IPSEC offload infrastructure and driver support for mlx5(4) Nvidia ConnectX-6+ network cards were added. From nobody Thu Aug 7 23:03:14 2025 X-Original-To: dev-commits-src-main@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 4byjPy1D31z63dVY for ; Thu, 07 Aug 2025 23:03:34 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byjPw4dKYz3LLr for ; Thu, 07 Aug 2025 23:03:32 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=bsdimp-com.20230601.gappssmtp.com header.s=20230601 header.b=2KNO2E9d; spf=none (mx1.freebsd.org: domain of wlosh@bsdimp.com has no SPF policy when checking 2607:f8b0:4864:20::52d) smtp.mailfrom=wlosh@bsdimp.com; dmarc=none Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-b42254ea4d5so1010926a12.1 for ; Thu, 07 Aug 2025 16:03:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20230601.gappssmtp.com; s=20230601; t=1754607806; x=1755212606; darn=freebsd.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=F8ZIgdn2tWn20MtdKxjfiueE/12U3LxOPF6PECCSVRU=; b=2KNO2E9dNkSRAIyJjXIvyZ7Y/lgt+LUkx9ujJMJWJLRqkk+ceNZlv+YcprwS4WmtE4 ZsMWk2C/lxs0iT1je4YZHzfgZFuEo/U+mUS5geF0Il+6zZLFO2zp9waZVt/3AcNTUHhN +RuCLzRWzZfq+in62VRnGGiUfIMT9sXVrR0XJ2mauDthtLIqXGFch5HFnr7Rpl3kcji6 BtVq8Y1Uq849bvv6y4G3Ua/iGLa6DFdqy/XzX0uimxjYqs2UOYWk3gRxIblBWZO1tQFE X9On6TKSlNH/lxjCJ2pu7SIhSgyqhSz0vOYk1eM5F9U593jS3FfybpKU1m11a1A+TWHn Gz1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754607806; x=1755212606; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=F8ZIgdn2tWn20MtdKxjfiueE/12U3LxOPF6PECCSVRU=; b=MwHGNn0zIwURoVpZ1AgiVH3FH7AcRjXDxmamNjcfZUhsX0yMcc6gFhP+vtolr7tk04 Z6LEIV2TD2dv0P6jpTwVv/FnMXXE3imk2hJT8U+5NOzxjqy9rMnKC2Wp20je/skRPa8z VW8F8Zo8fVLlcZMnMAA7mL6sjpSZ8F0s37adDjmSQqivwjx+kgzv9WIscwfvxBu8cGwj YRvB2/EnhhDh1HllQVAaJZQVBH0PaB/rb0ZeuSuqwruUNHsZ053ynJX+dsumrQ9twpz/ 1vDgU3q7tIpQZsUNL00oKcvsSySMd4MsnElGXVCB2Q3rWu9V08zSuDHljsfVyyEjrf2N 7TNQ== X-Forwarded-Encrypted: i=1; AJvYcCWlqfw+5ZSTjNT5+5o+gwK03+VvU92L2v5jkUopo/PYr1MxChHpkUP/Hq+AdY07TbCKeNyG0d7mnug3LwtvUQAVO0e0kQ==@freebsd.org X-Gm-Message-State: AOJu0YwjHzHB/ca9w96EnrGRV6Hz75mm852IvIkMTin6K1DcpnkukxNG jd02BpxJTybgyJ8yJwIdBByEadGSlZQViPUbUeSogv/Ht/XojjrEmQCRYaoqtqbEAc+5jhPFHGb 70se85APCXjLVir8wAEuLg6s0xqQSZLLmRe58xHfygA== X-Gm-Gg: ASbGncuQNKDw5XD1HFbDDHtZCrgtZMlH8slp/LvgNwpR19j3Vo7qE++XOw6WmnAPKo/ phkqzqHQrGg0IbfPVuuIn2Fx7LKDLfXd9I0A51L8L7Wl+raP5HLBohFZuo590tJoxlcON13ovIZ QkCi4MNo6D3ZxgRK4r3TRQlBItjnpknIGMuXW3gI0jPvIo+B/kmtlvcqTG4AdpHlfrXi5SPj35K OJP8efe+yCiHbXpkpGYUm9VYfrDxBJkM/PKEHrC5acgPdE= X-Google-Smtp-Source: AGHT+IHT9tfKDoCLaxgWun03Xl7rCsosNHvqjU6raG1O1fuVufy/x2SdhDoxyiESokEUW4s/B7rxyyd/MiB/BLRH8No= X-Received: by 2002:a17:90b:3141:b0:31f:150:e045 with SMTP id 98e67ed59e1d1-32183e55b29mr804864a91.32.1754607805818; Thu, 07 Aug 2025 16:03:25 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508072215.577MFjpx011932@gitrepo.freebsd.org> <20250807223124.2tsDIUvh@steffen%sdaoden.eu> In-Reply-To: <20250807223124.2tsDIUvh@steffen%sdaoden.eu> From: Warner Losh Date: Thu, 7 Aug 2025 17:03:14 -0600 X-Gm-Features: Ac12FXw_-4SKlxqbKHBHxQWpEgyt7CaXKg5e8JoaOOboWwMcVBLCf4RWHv-RPdY Message-ID: Subject: Re: git: 5c4d1c85847d - main - Replace license with just SPDX BSD-2-Clause To: "Simon J. Gerraty" , src-committers , "" , "" Content-Type: multipart/alternative; boundary="000000000000fc7ad3063bce7684" X-Spamd-Result: default: False [-2.97 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.97)[-0.969]; FORGED_SENDER(0.30)[imp@bsdimp.com,wlosh@bsdimp.com]; R_DKIM_ALLOW(-0.20)[bsdimp-com.20230601.gappssmtp.com:s=20230601]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_ONE(0.00)[1]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ARC_NA(0.00)[]; MISSING_XM_UA(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::52d:from]; R_SPF_NA(0.00)[no SPF record]; DMARC_NA(0.00)[bsdimp.com]; TO_DN_ALL(0.00)[]; FROM_NEQ_ENVFROM(0.00)[imp@bsdimp.com,wlosh@bsdimp.com]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_SOME(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; RCVD_TLS_LAST(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; DKIM_TRACE(0.00)[bsdimp-com.20230601.gappssmtp.com:+] X-Rspamd-Queue-Id: 4byjPw4dKYz3LLr X-Spamd-Bar: -- --000000000000fc7ad3063bce7684 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks! Warner On Thu, Aug 7, 2025, 4:31=E2=80=AFPM Steffen Nurpmeso = wrote: > Hello Simon, all, > > Simon J. Gerraty wrote in > <202508072215.577MFjpx011932@gitrepo.freebsd.org>: > ... > |URL: > https://cgit.FreeBSD.org/src/commit/?id=3D5c4d1c85847d84bd86e6b12408f\ > |9b5f846094f39 > | > |commit 5c4d1c85847d84bd86e6b12408f9b5f846094f39 > |Author: Simon J. Gerraty > |AuthorDate: 2025-08-07 22:15:37 +0000 > |Commit: Simon J. Gerraty > |CommitDate: 2025-08-07 22:15:37 +0000 > | > | Replace license with just SPDX BSD-2-Clause > > That is very interesting! And .. are you really sure this is > right with BSD etc licenses which explicitly require that the > license text is included? > So i looked and found [1] which says > > SPDX IDs are intending to express information about > licenses. Copyright notices =E2=80=90 statements about who owns the > copyright in a file or project =E2=80=90 are outside the scope of SPDX > short-form IDs. > Therefore, you should not remove or modify existing copyright > notices in files when adding an SPDX ID. > > However i am sure you do not do something like this "just like > that", and would be very interested -- it would be nice to be able > to vaporise the file header -- i always have that pitfall moment > when i look into Plan9 / 9front source code, which then simply > starts off (and very often with "#include ", just like that). > > [1] https://spdx.dev/learn/handling-license-info/ > > --steffen > | > |Der Kragenbaer, The moon bear, > |der holt sich munter he cheerfully and one by one > |einen nach dem anderen runter wa.ks himself off > |(By Robert Gernhardt) > | > |During summer's humble, here's David Leonard's grumble > | > |The black bear, The black bear, > |blithely holds his own holds himself at leisure > |beating it, up and down tossing over his ups and downs with pleasure > | > |Farewell, dear collar bear > --000000000000fc7ad3063bce7684 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks!

Warn= er=C2=A0

On Thu, Aug 7, 2025, 4:31=E2=80=AFPM St= effen Nurpmeso <steffen@sdaoden.eu= > wrote:
Hello Simon, all,
Simon J. Gerraty wrote in
=C2=A0<202508072215.577MFjpx011932@gitrepo.= freebsd.org>:
=C2=A0...
=C2=A0|URL: https= ://cgit.FreeBSD.org/src/commit/?id=3D5c4d1c85847d84bd86e6b12408f\
=C2=A0|9b5f846094f39
=C2=A0|
=C2=A0|commit 5c4d1c85847d84bd86e6b12408f9b5f846094f39
=C2=A0|Author:=C2=A0 =C2=A0 =C2=A0Simon J. Gerraty <sjg@FreeBSD.org><= br> =C2=A0|AuthorDate: 2025-08-07 22:15:37 +0000
=C2=A0|Commit:=C2=A0 =C2=A0 =C2=A0Simon J. Gerraty <sjg@FreeBSD.org><= br> =C2=A0|CommitDate: 2025-08-07 22:15:37 +0000
=C2=A0|
=C2=A0|=C2=A0 =C2=A0 Replace license with just SPDX BSD-2-Clause

That is very interesting!=C2=A0 And .. are you really sure this is
right with BSD etc licenses which explicitly require that the
license text is included?
So i looked and found [1] which says

=C2=A0 SPDX IDs are intending to express information about
=C2=A0 licenses. Copyright notices =E2=80=90 statements about who owns the<= br> =C2=A0 copyright in a file or project =E2=80=90 are outside the scope of SP= DX
=C2=A0 short-form IDs.
=C2=A0 Therefore, you should not remove or modify existing copyright
=C2=A0 notices in files when adding an SPDX ID.

However i am sure you do not do something like this "just like
that", and would be very interested -- it would be nice to be able
to vaporise the file header -- i always have that pitfall moment
when i look into Plan9 / 9front source code, which then simply
starts off (and very often with "#include <u.h>", just like= that).

=C2=A0 [1] https://spdx.dev/learn/handling-l= icense-info/

--steffen
|
|Der Kragenbaer,=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 The= moon bear,
|der holt sich munter=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0he cheerfully= and one by one
|einen nach dem anderen runter=C2=A0 wa.ks himself off
|(By Robert Gernhardt)
|
|During summer's humble, here's David Leonard's grumble
|
|The black bear,=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 The black bear,
|blithely holds his own=C2=A0 =C2=A0holds himself at leisure
|beating it, up and down=C2=A0 tossing over his ups and downs with pleasure=
|
|Farewell, dear collar bear
--000000000000fc7ad3063bce7684-- From nobody Thu Aug 7 23:11:16 2025 X-Original-To: dev-commits-src-main@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 4byjZr6ZfJz63dgZ; Thu, 07 Aug 2025 23:11: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byjZr54T3z3Mn2; Thu, 07 Aug 2025 23:11:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754608276; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YG576PeWXyoBsI44xPL/Xy8X3atKy1QV9+8hoDMkAcc=; b=UMnyNVOloaxyZIwW8JmJJHiJS3h/JhCObBpb0yyfoVaEHeFa8xPhs88YzOLOsn7gCuBDf5 VQwTeILKnTncJeDohlsNF132FCelin74AKQk32DwwI68Z511+W8vL2hpEKXwq9+RWR5bH4 5/pGqYWfW3tOW4XEjrhbsN0u5+l0I2k4hP01hQjtck+PjPwMsgF6qss58s/I1EhlbMLF95 Xsh3N5avAmnB8QJD67lXbbKTB6BAXhAkF3HWzQmKrsxywrVqrmr8P+mejqQAVb63qHY98h ujS0qNL1E+1XpZP2ITclgwOEJFb2pRAzxlx9WTx/Vf8Afd7eg8rnN2MynCHjrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754608276; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YG576PeWXyoBsI44xPL/Xy8X3atKy1QV9+8hoDMkAcc=; b=DNj2Mu8RlQW90xK5OdHFhGXR9YhHzBFT9aJfDHLEny66vm9vJIqhw6M6WLkZa7dYqiklG4 NN+tGOi8FcA58WZpPjwmNtC/jnHjxsBue/fEkiGfq9+KpQv8+Z/OYGyCGqS+aRt1tVk1qR sNLJpLGNFA2XX3kK3mvzNtC4y8hDmy3j76hyL4LC0dD2uFhL7vntC0VhsFcWH8lB7rNLm3 UQsDOx4FZZmPgD4acNXQ14fQpyKkIaEpF/FxGsp8XdHL3uR/C9xAnkwZjnloCWdkhXXm7v oGfQnoNQuKk2Q1iOWDLVx5BJyOMJYYHc0EgGYQgIzIyt/sEpSPa+SIjDILRwFg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754608276; a=rsa-sha256; cv=none; b=fE05us5D8zQKAiC4j/uHZC03RQw7skfyRnKBCXAKowQGp3hL5225MIG9FaLTfha0qN+0/5 VY8ky/QrkrQeCNiRYCsT+MXKHtzhcmGR0HOyRIIBvjQb3RofgTPCcZ3oZwbihXpRGJRZhu oY5zUiNeLhxAJsz86yWJd7szh1l0C8mb8o+jjP5boo0e0/UOVmGYlngeys63J2e9kf38rU 2xLYD6tKAfDfgSy223CI7ibIKAZoyJYERAau21JgGsIEPEmC2qSotA1XxSGdzgwRFkEchy bk1kOj0Do6/W9MUTD+cgdMzmBM2IIdJ50lbA00mM/PES0i9b+7NPvJ+KKnsm8A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byjZr4Lc5z1PDL; Thu, 07 Aug 2025 23:11:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577NBGWp018443; Thu, 7 Aug 2025 23:11:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577NBG0U018440; Thu, 7 Aug 2025 23:11:16 GMT (envelope-from git) Date: Thu, 7 Aug 2025 23:11:16 GMT Message-Id: <202508072311.577NBG0U018440@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 5bae2ace2e55 - main - jh7110_gpio: Add StarFive JH7110 GPIO controller driver List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5bae2ace2e55de034cd62d3bae95a202de848eab Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=5bae2ace2e55de034cd62d3bae95a202de848eab commit 5bae2ace2e55de034cd62d3bae95a202de848eab Author: Jari Sihvola AuthorDate: 2025-07-18 14:59:53 +0000 Commit: Mitchell Horne CommitDate: 2025-08-07 23:10:32 +0000 jh7110_gpio: Add StarFive JH7110 GPIO controller driver Basic functionality implemented; fdt_pinctrl interface to be added in the future. Reviewed by: mhorne MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D43034 --- sys/riscv/starfive/files.starfive | 1 + sys/riscv/starfive/jh7110_gpio.c | 367 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 368 insertions(+) diff --git a/sys/riscv/starfive/files.starfive b/sys/riscv/starfive/files.starfive index 57d4618d00f9..354b4a9f65ce 100644 --- a/sys/riscv/starfive/files.starfive +++ b/sys/riscv/starfive/files.starfive @@ -9,4 +9,5 @@ dev/eqos/if_eqos.c optional eqos dev/eqos/if_eqos_if.m optional eqos dev/eqos/if_eqos_starfive.c optional eqos +riscv/starfive/jh7110_gpio.c standard riscv/starfive/starfive_syscon.c standard diff --git a/sys/riscv/starfive/jh7110_gpio.c b/sys/riscv/starfive/jh7110_gpio.c new file mode 100644 index 000000000000..452a3306b4a1 --- /dev/null +++ b/sys/riscv/starfive/jh7110_gpio.c @@ -0,0 +1,367 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2023 Jari Sihvola + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "gpio_if.h" + +#define GPIO_PINS 64 +#define GPIO_REGS 2 + +#define GP0_DOEN_CFG 0x0 +#define GP0_DOUT_CFG 0x40 +#define GPIOEN 0xdc +#define GPIOE_0 0x100 +#define GPIOE_1 0x104 +#define GPIO_DIN_LOW 0x118 +#define GPIO_DIN_HIGH 0x11c +#define IOMUX_SYSCFG_288 0x120 + +#define PAD_INPUT_EN (1 << 0) +#define PAD_PULLUP (1 << 3) +#define PAD_PULLDOWN (1 << 4) +#define PAD_HYST (1 << 6) + +#define ENABLE_MASK 0x3f +#define DATA_OUT_MASK 0x7f +#define DIROUT_DISABLE 1 + +struct jh7110_gpio_softc { + device_t dev; + device_t busdev; + struct mtx mtx; + struct resource *res; + clk_t clk; +}; + +static struct ofw_compat_data compat_data[] = { + {"starfive,jh7110-sys-pinctrl", 1}, + {NULL, 0} +}; + +static struct resource_spec jh7110_gpio_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +#define GPIO_RW_OFFSET(_val) (_val & ~3) +#define GPIO_SHIFT(_val) ((_val & 3) * 8) +#define PAD_OFFSET(_val) (_val * 4) + +#define JH7110_GPIO_LOCK(_sc) mtx_lock(&(_sc)->mtx) +#define JH7110_GPIO_UNLOCK(_sc) mtx_unlock(&(_sc)->mtx) + +#define JH7110_GPIO_READ(sc, reg) bus_read_4((sc)->res, (reg)) +#define JH7110_GPIO_WRITE(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static device_t +jh7110_gpio_get_bus(device_t dev) +{ + struct jh7110_gpio_softc *sc; + + sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +jh7110_gpio_pin_max(device_t dev, int *maxpin) +{ + *maxpin = GPIO_PINS - 1; + + return (0); +} + +static int +jh7110_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct jh7110_gpio_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (pin >= GPIO_PINS) + return (EINVAL); + + JH7110_GPIO_LOCK(sc); + if (pin < GPIO_PINS / GPIO_REGS) { + reg = JH7110_GPIO_READ(sc, GPIO_DIN_LOW); + *val = (reg >> pin) & 0x1; + } else { + reg = JH7110_GPIO_READ(sc, GPIO_DIN_HIGH); + *val = (reg >> (pin - GPIO_PINS / GPIO_REGS)) & 0x1; + } + JH7110_GPIO_UNLOCK(sc); + + return (0); +} + +static int +jh7110_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct jh7110_gpio_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (pin >= GPIO_PINS) + return (EINVAL); + + JH7110_GPIO_LOCK(sc); + reg = JH7110_GPIO_READ(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin)); + reg &= ~(DATA_OUT_MASK << GPIO_SHIFT(pin)); + if (value) + reg |= 0x1 << GPIO_SHIFT(pin); + JH7110_GPIO_WRITE(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin), reg); + JH7110_GPIO_UNLOCK(sc); + + return (0); +} + +static int +jh7110_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct jh7110_gpio_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (pin >= GPIO_PINS) + return (EINVAL); + + JH7110_GPIO_LOCK(sc); + reg = JH7110_GPIO_READ(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin)); + if (reg & 0x1 << GPIO_SHIFT(pin)) { + reg &= ~(DATA_OUT_MASK << GPIO_SHIFT(pin)); + } else { + reg &= ~(DATA_OUT_MASK << GPIO_SHIFT(pin)); + reg |= 0x1 << GPIO_SHIFT(pin); + } + JH7110_GPIO_WRITE(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin), reg); + JH7110_GPIO_UNLOCK(sc); + + return (0); +} + +static int +jh7110_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + if (pin >= GPIO_PINS) + return (EINVAL); + + *caps = (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); + + return (0); +} + +static int +jh7110_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + if (pin >= GPIO_PINS) + return (EINVAL); + + snprintf(name, GPIOMAXNAME, "GPIO%d", pin); + + return (0); +} + +static int +jh7110_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct jh7110_gpio_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (pin >= GPIO_PINS) + return (EINVAL); + + /* Reading the direction */ + JH7110_GPIO_LOCK(sc); + reg = JH7110_GPIO_READ(sc, GP0_DOEN_CFG + GPIO_RW_OFFSET(pin)); + if ((reg & ENABLE_MASK << GPIO_SHIFT(pin)) == 0) + *flags |= GPIO_PIN_OUTPUT; + else + *flags |= GPIO_PIN_INPUT; + JH7110_GPIO_UNLOCK(sc); + + return (0); +} + +static int +jh7110_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct jh7110_gpio_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (pin >= GPIO_PINS) + return (EINVAL); + + /* Setting the direction, enable or disable output, configuring pads */ + + JH7110_GPIO_LOCK(sc); + + if (flags & GPIO_PIN_INPUT) { + reg = JH7110_GPIO_READ(sc, IOMUX_SYSCFG_288 + PAD_OFFSET(pin)); + reg |= (PAD_INPUT_EN | PAD_HYST); + JH7110_GPIO_WRITE(sc, IOMUX_SYSCFG_288 + PAD_OFFSET(pin), reg); + } + + reg = JH7110_GPIO_READ(sc, GP0_DOEN_CFG + GPIO_RW_OFFSET(pin)); + reg &= ~(ENABLE_MASK << GPIO_SHIFT(pin)); + if (flags & GPIO_PIN_INPUT) { + reg |= DIROUT_DISABLE << GPIO_SHIFT(pin); + } + JH7110_GPIO_WRITE(sc, GP0_DOEN_CFG + GPIO_RW_OFFSET(pin), reg); + + if (flags & GPIO_PIN_OUTPUT) { + reg = JH7110_GPIO_READ(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin)); + reg &= ~(ENABLE_MASK << GPIO_SHIFT(pin)); + reg |= 0x1 << GPIO_SHIFT(pin); + JH7110_GPIO_WRITE(sc, GP0_DOUT_CFG + GPIO_RW_OFFSET(pin), reg); + + reg = JH7110_GPIO_READ(sc, IOMUX_SYSCFG_288 + PAD_OFFSET(pin)); + reg &= ~(PAD_INPUT_EN | PAD_PULLUP | PAD_PULLDOWN | PAD_HYST); + JH7110_GPIO_WRITE(sc, IOMUX_SYSCFG_288 + PAD_OFFSET(pin), reg); + } + + JH7110_GPIO_UNLOCK(sc); + + return (0); +} + +static int +jh7110_gpio_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "StarFive JH7110 GPIO controller"); + + return (BUS_PROBE_DEFAULT); +} + +static int +jh7110_gpio_detach(device_t dev) +{ + struct jh7110_gpio_softc *sc; + + sc = device_get_softc(dev); + + bus_release_resources(dev, jh7110_gpio_spec, &sc->res); + if (sc->busdev != NULL) + gpiobus_detach_bus(dev); + if (sc->clk != NULL) + clk_release(sc->clk); + mtx_destroy(&sc->mtx); + + return (0); +} + +static int +jh7110_gpio_attach(device_t dev) +{ + struct jh7110_gpio_softc *sc; + + sc = device_get_softc(dev); + sc->dev = dev; + + mtx_init(&sc->mtx, device_get_nameunit(sc->dev), NULL, MTX_DEF); + + if (bus_alloc_resources(dev, jh7110_gpio_spec, &sc->res) != 0) { + device_printf(dev, "Could not allocate resources\n"); + bus_release_resources(dev, jh7110_gpio_spec, &sc->res); + mtx_destroy(&sc->mtx); + return (ENXIO); + } + + if (clk_get_by_ofw_index(dev, 0, 0, &sc->clk) != 0) { + device_printf(dev, "Cannot get clock\n"); + jh7110_gpio_detach(dev); + return (ENXIO); + } + + if (clk_enable(sc->clk) != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->clk)); + jh7110_gpio_detach(dev); + return (ENXIO); + } + + /* Reseting GPIO interrupts */ + JH7110_GPIO_WRITE(sc, GPIOE_0, 0); + JH7110_GPIO_WRITE(sc, GPIOE_1, 0); + JH7110_GPIO_WRITE(sc, GPIOEN, 1); + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) { + device_printf(dev, "Cannot attach gpiobus\n"); + jh7110_gpio_detach(dev); + return (ENXIO); + } + + return (0); +} + +static phandle_t +jh7110_gpio_get_node(device_t bus, device_t dev) +{ + return (ofw_bus_get_node(bus)); +} + +static device_method_t jh7110_gpio_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, jh7110_gpio_probe), + DEVMETHOD(device_attach, jh7110_gpio_attach), + DEVMETHOD(device_detach, jh7110_gpio_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, jh7110_gpio_get_bus), + DEVMETHOD(gpio_pin_max, jh7110_gpio_pin_max), + DEVMETHOD(gpio_pin_get, jh7110_gpio_pin_get), + DEVMETHOD(gpio_pin_set, jh7110_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, jh7110_gpio_pin_toggle), + DEVMETHOD(gpio_pin_getflags, jh7110_gpio_pin_getflags), + DEVMETHOD(gpio_pin_setflags, jh7110_gpio_pin_setflags), + DEVMETHOD(gpio_pin_getcaps, jh7110_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_getname, jh7110_gpio_pin_getname), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, jh7110_gpio_get_node), + + DEVMETHOD_END +}; + +DEFINE_CLASS_0(gpio, jh7110_gpio_driver, jh7110_gpio_methods, + sizeof(struct jh7110_gpio_softc)); +EARLY_DRIVER_MODULE(jh7110_gpio, simplebus, jh7110_gpio_driver, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); +MODULE_DEPEND(jh7110_gpio, gpiobus, 1, 1, 1); From nobody Thu Aug 7 23:11:17 2025 X-Original-To: dev-commits-src-main@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 4byjZt0FXPz63dqn; Thu, 07 Aug 2025 23:11:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byjZs57K1z3MQJ; Thu, 07 Aug 2025 23:11:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754608277; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l2faO56MEl/dCNAJk7j9Fq237iYQcgTcmFn7n9R/6d0=; b=PgJSACSHkjctUeugKB1yERXaxiuU1+90xVE5NTZMS1EQORPt8aGEBDbT3yI8JBjQ6oidWm MgLqNWQkes9YXai+XIKArQw1e8obFozUnukBTz8cAwc28TUJIBNOQ5Jq315KYTgoId+o4G wFHlg2Od59vo4ATqanI8r2jq29Se3krepzvuMuyGER/8pQsW4eM/AJtHLiH+NI559D+4aX Y6Comu62GU9VoTlxuXJxU/9eRUd/8RELEeAJuRPQRy4HoDm7JSMwjhaXbdxDV1Ti6YLNDy 9CYl0kj5r4D1ihFU059y8ZRS2vGXtywEGkZCWVNkFJ4QoqTr4eqYsHxIk78IEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754608277; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l2faO56MEl/dCNAJk7j9Fq237iYQcgTcmFn7n9R/6d0=; b=pZRJY/KM3/Iqs+y4SO4tRWPcwBFREHyHXz+z+W4+6mOoytQMN6FJuyUu7zN4nMZZiSHcQw 6kLgIaZZis/REbhbPhFo/Rd4XIEo4fu7lIJHoc8lL2FyG00/nIbj25tHPiXSViBp8gMoz9 oz4knOIC1yfQbxg2YFIE2brsFj7GQvt/W1JE/Zrrl8v4ziycPK4z+yKabxlGTzncnOrc51 e9p/5OtUwbI7G5EbmLyFYzjzuszdPY7HsqsjNoV7kAE04NgKsscBCUP197UColhGL8ctxz u+eXo0UyWc3hTmWv344Suo2pJCfhsWhBGdFV7R+UwvyJcr3bpie+UkOZkUJt/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754608277; a=rsa-sha256; cv=none; b=iF5H9fMpPfFwfHfzg7mCvML4Xzaetd4KsPGrhP+XCclDTpBWRdyziF5UGr+av0Vw5Yxta9 iCDY2M/qK0bzfIxj5ElitXHPRxQciqp/C+263U68k78qJPyE67U97YvK4YDKGQ3lniTS/n 9dGNrliXJZHyR7IQFGZLLB4qSKRhSaVmBi3DUSSQjadwo/lzfsAHlP+IgcffxdNrW/7l2x 5f2KloPiKpKxybq74jS6zRnw96HdZmoafWmiyY9Nric1qtiS0AdYHomi4v7W2rb6d+GFlN 7U4iPdEGtA6j2Rf/Ft8DwwZzjpn/BI7nQR6UX4QRLjAxmK1w/M/7YyFKZkkiNg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byjZs4ggDz1QG7; Thu, 07 Aug 2025 23:11:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577NBHYI018483; Thu, 7 Aug 2025 23:11:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577NBHlP018480; Thu, 7 Aug 2025 23:11:17 GMT (envelope-from git) Date: Thu, 7 Aug 2025 23:11:17 GMT Message-Id: <202508072311.577NBHlP018480@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 7d955e02b1d8 - main - jh7110_pcie: Add StarFive JH7110 PCIe controller driver List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d955e02b1d8da8412720cb6d34940c1ee6d5257 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=7d955e02b1d8da8412720cb6d34940c1ee6d5257 commit 7d955e02b1d8da8412720cb6d34940c1ee6d5257 Author: Jari Sihvola AuthorDate: 2025-07-31 21:47:06 +0000 Commit: Mitchell Horne CommitDate: 2025-08-07 23:10:32 +0000 jh7110_pcie: Add StarFive JH7110 PCIe controller driver JH7110 has two PCIE controller devices. First one is used by board's integrated USB which has no driver. Switching PHY to USB mode is not currently implemented. This functionality could be added in a form of a separate PCIE PHY driver if needed. PHY is on by default and there's no need to switch it on. Pre/post_ithread and post_filter methods are not used for interrupt masking since they are meant for level-triggered interrupts whereas JH7110's MSI interrupts are edge triggered (and INTx interrupts do not use this irqsrc scheme at all). Pre_ithread method is nevertheless used for MSI bottom acking. The driver has been tested with Kingston SNV2S NVME SSD The functionality of INTx and MSI interrupts (as opposed to default MSIx) has been tested by forcing NVME to use them. Reviewed by: mhorne MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47919 --- sys/riscv/starfive/files.starfive | 1 + sys/riscv/starfive/jh7110_pcie.c | 1025 +++++++++++++++++++++++++++++++++++++ 2 files changed, 1026 insertions(+) diff --git a/sys/riscv/starfive/files.starfive b/sys/riscv/starfive/files.starfive index 354b4a9f65ce..4db35e8cb351 100644 --- a/sys/riscv/starfive/files.starfive +++ b/sys/riscv/starfive/files.starfive @@ -10,4 +10,5 @@ dev/eqos/if_eqos_if.m optional eqos dev/eqos/if_eqos_starfive.c optional eqos riscv/starfive/jh7110_gpio.c standard +riscv/starfive/jh7110_pcie.c optional pci fdt riscv/starfive/starfive_syscon.c standard diff --git a/sys/riscv/starfive/jh7110_pcie.c b/sys/riscv/starfive/jh7110_pcie.c new file mode 100644 index 000000000000..2d0a4be69b2c --- /dev/null +++ b/sys/riscv/starfive/jh7110_pcie.c @@ -0,0 +1,1025 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 Jari Sihvola + */ + +/* JH7110 PCIe controller driver */ + +#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 "msi_if.h" +#include "ofw_bus_if.h" +#include "pcib_if.h" +#include "pic_if.h" +#include "syscon_if.h" + +#define IRQ_LOCAL_MASK 0x180 +#define IRQ_LOCAL_STATUS 0x184 +#define IRQ_MSI_BASE 0x190 +#define IRQ_MSI_STATUS 0x194 + +#define MSI_MASK 0x10000000 +#define INTX_MASK 0xf000000 +#define ERROR_MASK 0x80770000 + +#define MSI_COUNT 32 +#define MSI_USED 0x1 +#define MSI_PCIE0_MASK_OFFSET 0xa0; +#define MSI_PCIE1_MASK_OFFSET 0xf0; + +#define ATR0_AXI4_SLV0_SRCADDR_PARAM 0x800 +#define ATR0_AXI4_SLV0_SRC_ADDR 0x804 +#define ATR0_AXI4_SLV0_TRSL_ADDR_LSB 0x808 +#define ATR0_AXI4_SLV0_TRSL_PARAM 0x810 +#define ATR0_AXI4_SLV0_TRSL_ADDR_UDW 0x80c +#define ATR_ENTRY_SIZE 0x20 +#define ATR0_PCIE_ATR_SIZE 0x25 +#define ATR0_PCIE_ATR_SIZE_SHIFT 1 +#define ATR0_PCIE_WIN0_SRCADDR_PARAM 0x600 +#define ATR0_PCIE_WIN0_SRC_ADDR 0x604 +#define ATR0_ENABLE 1 + +#define PCIE_TXRX_INTERFACE 0x0 +#define PCIE_CONF_INTERFACE 0x1 +#define PCIE_WINCONF 0xfc +#define PREF_MEM_WIN_64_SUPPORT (1U << 3) + +#define STG_AXI4_SLVL_AW_MASK 0x7fff +#define STG_AXI4_SLVL_AR_MASK 0x7fff00 +#define STG_PCIE0_BASE 0x48 +#define STG_PCIE1_BASE 0x1f8 +#define STG_RP_NEP_OFFSET 0xe8 +#define STG_K_RP_NEP (1U << 8) +#define STG_CKREF_MASK 0xC0000 +#define STG_CKREF_VAL 0x80000 +#define STG_CLKREQ (1U << 22) +#define STG_AR_OFFSET 0x78 +#define STG_AW_OFFSET 0x7c +#define STG_AXI4_SLVL_ARFUNC_SHIFT 0x8 +#define STG_LNKSTA_OFFSET 0x170 +#define STG_LINK_UP (1U << 5) + +#define PHY_FUNC_SHIFT 9 +#define PHY_FUNC_DIS (1U << 15) +#define PCI_MISC_REG 0xb4 +#define PCI_GENERAL_SETUP_REG 0x80 +#define PCI_CONF_SPACE_REGS 0x1000 +#define ROOTPORT_ENABLE 0x1 +#define PMSG_RX_SUPPORT_REG 0x3f0 +#define PMSG_LTR_SUPPORT (1U << 2) +#define PCI_CLASS_BRIDGE_PCI 0x0604 +#define PCI_IDS_CLASS_CODE_SHIFT 16 +#define PCIE_PCI_IDS_REG 0x9c +#define REV_ID_MASK 0xff + +#define PLDA_AXI_POST_ERR (1U << 16) +#define PLDA_AXI_FETCH_ERR (1U << 17) +#define PLDA_AXI_DISCARD_ERR (1U << 18) +#define PLDA_PCIE_POST_ERR (1U << 20) +#define PLDA_PCIE_FETCH_ERR (1U << 21) +#define PLDA_PCIE_DISCARD_ERR (1U << 22) +#define PLDA_SYS_ERR (1U << 31) + +/* Compatible devices. */ +static struct ofw_compat_data compat_data[] = { + {"starfive,jh7110-pcie", 1}, + {NULL, 0}, +}; + +struct jh7110_pcie_irqsrc { + struct intr_irqsrc isrc; + u_int irq; + u_int is_used; +}; + +struct jh7110_pcie_softc { + struct ofw_pci_softc ofw_pci; + device_t dev; + phandle_t node; + + struct resource *reg_mem_res; + struct resource *cfg_mem_res; + struct resource *irq_res; + struct jh7110_pcie_irqsrc *isrcs; + void *irq_cookie; + struct syscon *stg_syscon; + uint64_t stg_baddr; + + struct ofw_pci_range range_mem32; + struct ofw_pci_range range_mem64; + + struct mtx msi_mtx; + uint64_t msi_mask_offset; + + gpio_pin_t perst_pin; + + clk_t clk_noc; + clk_t clk_tl; + clk_t clk_axi; + clk_t clk_apb; + + hwreset_t rst_mst0; + hwreset_t rst_slv0; + hwreset_t rst_slv; + hwreset_t rst_brg; + hwreset_t rst_core; + hwreset_t rst_apb; +}; + +#define LOW32(val) (uint32_t)(val) +#define HI32(val) (uint32_t)(val >> 32) + +#define RD4(sc, reg) bus_read_4((sc)->reg_mem_res, (reg)) +#define WR4(sc, reg, val) bus_write_4((sc)->reg_mem_res, (reg), (val)) + +static uint32_t +jh7110_pcie_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) +{ + struct jh7110_pcie_softc *sc; + uint32_t data, offset; + + sc = device_get_softc(dev); + offset = PCIE_ADDR_OFFSET(bus, slot, func, reg); + + /* Certain config registers are not supposed to be accessed from here */ + if (bus == 0 && (offset == PCIR_BAR(0) || offset == PCIR_BAR(1))) + return (~0U); + + switch (bytes) { + case 1: + data = bus_read_1(sc->cfg_mem_res, offset); + break; + case 2: + data = le16toh(bus_read_2(sc->cfg_mem_res, offset)); + break; + case 4: + data = le32toh(bus_read_4(sc->cfg_mem_res, offset)); + break; + default: + return (~0U); + } + + return (data); +} + +static void +jh7110_pcie_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t val, int bytes) +{ + struct jh7110_pcie_softc *sc; + uint32_t offset; + + sc = device_get_softc(dev); + offset = PCIE_ADDR_OFFSET(bus, slot, func, reg); + + /* Certain config registers are not supposed to be accessed from here */ + if (bus == 0 && (offset == PCIR_BAR(0) || offset == PCIR_BAR(1))) + return; + + switch (bytes) { + case 1: + bus_write_1(sc->cfg_mem_res, offset, val); + break; + case 2: + bus_write_2(sc->cfg_mem_res, offset, htole16(val)); + break; + case 4: + bus_write_4(sc->cfg_mem_res, offset, htole32(val)); + break; + default: + return; + } +} + +static int +jh7110_pcie_intr(void *arg) +{ + struct jh7110_pcie_softc *sc; + struct trapframe *tf; + struct jh7110_pcie_irqsrc *irq; + uint32_t reg, irqbits; + int err, i; + + sc = (struct jh7110_pcie_softc *)arg; + tf = curthread->td_intr_frame; + + reg = RD4(sc, IRQ_LOCAL_STATUS); + if (reg == 0) + return (ENXIO); + + if ((reg & MSI_MASK) != 0) { + WR4(sc, IRQ_LOCAL_STATUS, MSI_MASK); + + irqbits = RD4(sc, IRQ_MSI_STATUS); + for (i = 0; irqbits != 0; i++) { + if ((irqbits & (1U << i)) != 0) { + irq = &sc->isrcs[i]; + err = intr_isrc_dispatch(&irq->isrc, tf); + if (err != 0) + device_printf(sc->dev, + "MSI 0x%x gives error %d\n", + i, err); + irqbits &= ~(1U << i); + } + } + } + if ((reg & INTX_MASK) != 0) { + irqbits = (reg & INTX_MASK); + WR4(sc, IRQ_LOCAL_STATUS, irqbits); + } + if ((reg & ERROR_MASK) != 0) { + irqbits = (reg & ERROR_MASK); + if ((reg & PLDA_AXI_POST_ERR) != 0) + device_printf(sc->dev, "axi post error\n"); + if ((reg & PLDA_AXI_FETCH_ERR) != 0) + device_printf(sc->dev, "axi fetch error\n"); + if ((reg & PLDA_AXI_DISCARD_ERR) != 0) + device_printf(sc->dev, "axi discard error\n"); + if ((reg & PLDA_PCIE_POST_ERR) != 0) + device_printf(sc->dev, "pcie post error\n"); + if ((reg & PLDA_PCIE_FETCH_ERR) != 0) + device_printf(sc->dev, "pcie fetch error\n"); + if ((reg & PLDA_PCIE_DISCARD_ERR) != 0) + device_printf(sc->dev, "pcie discard error\n"); + if ((reg & PLDA_SYS_ERR) != 0) + device_printf(sc->dev, "pcie sys error\n"); + WR4(sc, IRQ_LOCAL_STATUS, irqbits); + } + + return (FILTER_HANDLED); +} + +static int +jh7110_pcie_route_interrupt(device_t bus, device_t dev, int pin) +{ + struct jh7110_pcie_softc *sc; + u_int irq; + + sc = device_get_softc(bus); + irq = intr_map_clone_irq(rman_get_start(sc->irq_res)); + device_printf(bus, "route pin %d for device %d.%d to %u\n", + pin, pci_get_slot(dev), pci_get_function(dev), irq); + + return (irq); +} + +static int +jh7110_pcie_maxslots(device_t dev) +{ + return (PCI_SLOTMAX); +} + +static int +jh7110_pcie_msi_alloc_msi(device_t dev, device_t child, int count, int maxcount, + device_t *pic, struct intr_irqsrc **srcs) +{ + struct jh7110_pcie_softc *sc; + int i, beg; + + sc = device_get_softc(dev); + mtx_lock(&sc->msi_mtx); + + /* Search for a requested contiguous region */ + for (beg = 0; beg + count < MSI_COUNT; ) { + for (i = beg; i < beg + count; i++) { + if (sc->isrcs[i].is_used == MSI_USED) + goto next; + } + goto found; +next: + beg = i + 1; + } + + /* Requested area not found */ + mtx_unlock(&sc->msi_mtx); + device_printf(dev, "warning: failed to allocate %d MSIs.\n", count); + + return (ENXIO); + +found: + /* Mark and allocate messages */ + for (i = 0; i < count; ++i) { + sc->isrcs[i + beg].is_used = MSI_USED; + srcs[i] = &(sc->isrcs[i + beg].isrc); + } + + mtx_unlock(&sc->msi_mtx); + *pic = device_get_parent(dev); + + return (0); +} + +static int +jh7110_pcie_alloc_msi(device_t pci, device_t child, int count, + int maxcount, int *irqs) +{ + phandle_t msi_parent; + int err; + + msi_parent = OF_xref_from_node(ofw_bus_get_node(pci)); + err = intr_alloc_msi(pci, child, msi_parent, count, maxcount, irqs); + + return (err); +} + +static int +jh7110_pcie_release_msi(device_t pci, device_t child, int count, int *irqs) +{ + phandle_t msi_parent; + int err; + + msi_parent = OF_xref_from_node(ofw_bus_get_node(pci)); + err = intr_release_msi(pci, child, msi_parent, count, irqs); + + return (err); +} + +static int +jh7110_pcie_msi_map_msi(device_t dev, device_t child, struct intr_irqsrc *isrc, + uint64_t *addr, uint32_t *data) +{ + struct jh7110_pcie_irqsrc *jhirq = (struct jh7110_pcie_irqsrc *)isrc; + + *addr = IRQ_MSI_BASE; + *data = jhirq->irq; + + return (0); +} + + +static int +jh7110_pcie_map_msi(device_t pci, device_t child, int irq, uint64_t *addr, + uint32_t *data) +{ + phandle_t msi_parent; + int err; + + msi_parent = OF_xref_from_node(ofw_bus_get_node(pci)); + + err = intr_map_msi(pci, child, msi_parent, irq, addr, data); + if (err != 0) { + device_printf(pci, "intr_map_msi() failed\n"); + return (err); + } + + return (err); +} + +static int +jh7110_pcie_alloc_msix(device_t pci, device_t child, int *irq) +{ + return (jh7110_pcie_alloc_msi(pci, child, 1, 32, irq)); +} + +static int +jh7110_pcie_release_msix(device_t pci, device_t child, int irq) +{ + phandle_t msi_parent; + int err; + + msi_parent = OF_xref_from_node(ofw_bus_get_node(pci)); + err = intr_release_msix(pci, child, msi_parent, irq); + + return (err); +} + +static int +jh7110_pcie_msi_alloc_msix(device_t dev, device_t child, device_t *pic, + struct intr_irqsrc **isrcp) +{ + return (jh7110_pcie_msi_alloc_msi(dev, child, 1, 32, pic, isrcp)); +} + +static int +jh7110_pcie_msi_release_msi(device_t dev, device_t child, int count, + struct intr_irqsrc **isrc) +{ + struct jh7110_pcie_softc *sc; + struct jh7110_pcie_irqsrc *irq; + int i; + + sc = device_get_softc(dev); + mtx_lock(&sc->msi_mtx); + + for (i = 0; i < count; i++) { + irq = (struct jh7110_pcie_irqsrc *)isrc[i]; + + KASSERT((irq->is_used & MSI_USED) == MSI_USED, + ("%s: Trying to release an unused MSI(-X) interrupt", + __func__)); + + irq->is_used = 0; + } + + mtx_unlock(&sc->msi_mtx); + return (0); +} + +static int +jh7110_pcie_msi_release_msix(device_t dev, device_t child, + struct intr_irqsrc *isrc) +{ + return (jh7110_pcie_msi_release_msi(dev, child, 1, &isrc)); +} + +static void +jh7110_pcie_msi_mask(device_t dev, struct intr_irqsrc *isrc, bool mask) +{ + struct jh7110_pcie_softc *sc; + struct jh7110_pcie_irqsrc *jhirq = (struct jh7110_pcie_irqsrc *)isrc; + uint32_t reg, irq; + + sc = device_get_softc(dev); + irq = jhirq->irq; + + reg = bus_read_4(sc->cfg_mem_res, sc->msi_mask_offset); + if (mask != 0) + reg &= ~(1U << irq); + else + reg |= (1U << irq); + bus_write_4(sc->cfg_mem_res, sc->msi_mask_offset, reg); +} + +static void +jh7110_pcie_msi_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + jh7110_pcie_msi_mask(dev, isrc, true); +} + +static void +jh7110_pcie_msi_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + jh7110_pcie_msi_mask(dev, isrc, false); +} + +static void +jh7110_pcie_msi_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + struct jh7110_pcie_softc *sc; + struct jh7110_pcie_irqsrc *jhirq = (struct jh7110_pcie_irqsrc *)isrc; + uint32_t irq; + + sc = device_get_softc(dev); + irq = jhirq->irq; + + /* MSI bottom ack */ + WR4(sc, IRQ_MSI_STATUS, (1U << irq)); +} + +static int +jh7110_pcie_decode_ranges(struct jh7110_pcie_softc *sc, + struct ofw_pci_range *ranges, int nranges) +{ + int i; + + for (i = 0; i < nranges; i++) { + if (((ranges[i].pci_hi & OFW_PCI_PHYS_HI_SPACEMASK) == + OFW_PCI_PHYS_HI_SPACE_MEM64)) { + if (sc->range_mem64.size != 0) { + device_printf(sc->dev, + "Duplicate range mem64 found in DT\n"); + return (ENXIO); + } + sc->range_mem64 = ranges[i]; + } else if (((ranges[i].pci_hi & OFW_PCI_PHYS_HI_SPACEMASK) == + OFW_PCI_PHYS_HI_SPACE_MEM32)) { + if (sc->range_mem32.size != 0) { + device_printf(sc->dev, + "Duplicated range mem32 found in DT\n"); + return (ENXIO); + } + sc->range_mem32 = ranges[i]; + } + } + return (0); +} + +static int +jh7110_pcie_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Starfive JH7110 PCIe controller"); + + return (BUS_PROBE_DEFAULT); +} + +static void +jh7110_pcie_set_atr(device_t dev, uint64_t axi_begin, uint64_t pci_begin, + uint64_t win_size, uint32_t win_idx) +{ + struct jh7110_pcie_softc *sc; + uint32_t val, taddr_size; + + sc = device_get_softc(dev); + + if (win_idx == 0) + val = PCIE_CONF_INTERFACE; + else + val = PCIE_TXRX_INTERFACE; + + WR4(sc, ATR0_AXI4_SLV0_TRSL_PARAM + win_idx * ATR_ENTRY_SIZE, val); + + taddr_size = ilog2(win_size) - 1; + val = LOW32(axi_begin) | taddr_size << ATR0_PCIE_ATR_SIZE_SHIFT | + ATR0_ENABLE; + + WR4(sc, ATR0_AXI4_SLV0_SRCADDR_PARAM + win_idx * ATR_ENTRY_SIZE, val); + + val = HI32(axi_begin); + WR4(sc, ATR0_AXI4_SLV0_SRC_ADDR + win_idx * ATR_ENTRY_SIZE, val); + + val = LOW32(pci_begin); + WR4(sc, ATR0_AXI4_SLV0_TRSL_ADDR_LSB + win_idx * ATR_ENTRY_SIZE, val); + + val = HI32(pci_begin); + WR4(sc, ATR0_AXI4_SLV0_TRSL_ADDR_UDW + win_idx * ATR_ENTRY_SIZE, val); + + val = RD4(sc, ATR0_PCIE_WIN0_SRCADDR_PARAM); + val |= (ATR0_PCIE_ATR_SIZE << ATR0_PCIE_ATR_SIZE_SHIFT); + + WR4(sc, ATR0_PCIE_WIN0_SRCADDR_PARAM, val); + WR4(sc, ATR0_PCIE_WIN0_SRC_ADDR, 0); +} + +static int +jh7110_pcie_parse_fdt_resources(struct jh7110_pcie_softc *sc) +{ + uint32_t val; + int err; + + /* Getting clocks */ + if (clk_get_by_ofw_name(sc->dev, 0, "noc", &sc->clk_noc) != 0) { + device_printf(sc->dev, "could not get noc clock\n"); + sc->clk_noc = NULL; + return (ENXIO); + } + if (clk_get_by_ofw_name(sc->dev, 0, "tl", &sc->clk_tl) != 0) { + device_printf(sc->dev, "could not get tl clock\n"); + sc->clk_tl = NULL; + return (ENXIO); + } + if (clk_get_by_ofw_name(sc->dev, 0, "axi_mst0", &sc->clk_axi) != 0) { + device_printf(sc->dev, "could not get axi_mst0 clock\n"); + sc->clk_axi = NULL; + return (ENXIO); + } + if (clk_get_by_ofw_name(sc->dev, 0, "apb", &sc->clk_apb) != 0) { + device_printf(sc->dev, "could not get apb clock\n"); + sc->clk_apb = NULL; + return (ENXIO); + } + + /* Getting resets */ + err = hwreset_get_by_ofw_name(sc->dev, 0, "mst0", &sc->rst_mst0); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_mst0' reset\n"); + return (ENXIO); + } + err = hwreset_get_by_ofw_name(sc->dev, 0, "slv0", &sc->rst_slv0); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_slv0' reset\n"); + return (ENXIO); + } + err = hwreset_get_by_ofw_name(sc->dev, 0, "slv", &sc->rst_slv); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_slv' reset\n"); + return (ENXIO); + } + err = hwreset_get_by_ofw_name(sc->dev, 0, "brg", &sc->rst_brg); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_brg' reset\n"); + return (ENXIO); + } + err = hwreset_get_by_ofw_name(sc->dev, 0, "core", &sc->rst_core); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_core' reset\n"); + return (ENXIO); + } + err = hwreset_get_by_ofw_name(sc->dev, 0, "apb", &sc->rst_apb); + if (err != 0) { + device_printf(sc->dev, "cannot get 'rst_apb' reset\n"); + return (ENXIO); + } + + /* Getting PCI endpoint reset pin */ + err = gpio_pin_get_by_ofw_property(sc->dev, sc->node, "perst-gpios", + &sc->perst_pin); + if (err != 0) { + device_printf(sc->dev, "Cannot get perst-gpios\n"); + return (ENXIO); + } + + /* Getting syscon property */ + if (syscon_get_by_ofw_property(sc->dev, sc->node, "starfive,stg-syscon", + &sc->stg_syscon) != 0) { + device_printf(sc->dev, "Cannot get starfive,stg-syscon\n"); + return (ENXIO); + } + + /* Assigning syscon base address and MSI mask offset */ + err = OF_getencprop(sc->node, "linux,pci-domain", &val, sizeof(val)); + if (err == -1) { + device_printf(sc->dev, + "Couldn't get pci-domain property, error: %d\n", err); + return (ENXIO); + } + + if (val == 0) { + sc->stg_baddr = STG_PCIE0_BASE; + sc->msi_mask_offset = MSI_PCIE0_MASK_OFFSET; + } else if (val == 1) { + sc->stg_baddr = STG_PCIE1_BASE; + sc->msi_mask_offset = MSI_PCIE1_MASK_OFFSET; + } else { + device_printf(sc->dev, "Error: an invalid pci-domain value\n"); + return (ENXIO); + } + + return (0); +} + +static void +jh7110_pcie_release_resources(device_t dev) +{ + struct jh7110_pcie_softc *sc; + + sc = device_get_softc(dev); + + if (sc->irq_res != NULL) + bus_teardown_intr(dev, sc->irq_res, sc->irq_cookie); + if (sc->irq_res != NULL) + bus_free_resource(dev, SYS_RES_IRQ, sc->irq_res); + if (sc->reg_mem_res != NULL) + bus_free_resource(dev, SYS_RES_MEMORY, sc->reg_mem_res); + if (sc->cfg_mem_res != NULL) + bus_free_resource(dev, SYS_RES_MEMORY, sc->cfg_mem_res); + + if (sc->clk_noc != NULL) + clk_release(sc->clk_noc); + if (sc->clk_tl != NULL) + clk_release(sc->clk_tl); + if (sc->clk_axi != NULL) + clk_release(sc->clk_axi); + if (sc->clk_apb != NULL) + clk_release(sc->clk_apb); + + gpio_pin_release(sc->perst_pin); + + hwreset_release(sc->rst_mst0); + hwreset_release(sc->rst_slv0); + hwreset_release(sc->rst_slv); + hwreset_release(sc->rst_brg); + hwreset_release(sc->rst_core); + hwreset_release(sc->rst_apb); + + mtx_destroy(&sc->msi_mtx); +} + +static int +jh7110_pcie_detach(device_t dev) +{ + ofw_pcib_fini(dev); + jh7110_pcie_release_resources(dev); + + return (0); +} + +static int +jh7110_pcie_attach(device_t dev) +{ + struct jh7110_pcie_softc *sc; + phandle_t xref; + uint32_t val; + int i, err, rid, irq, win_idx = 0; + char name[INTR_ISRC_NAMELEN]; + + sc = device_get_softc(dev); + sc->dev = dev; + sc->node = ofw_bus_get_node(dev); + + sc->irq_res = NULL; + sc->reg_mem_res = NULL; + sc->cfg_mem_res = NULL; + sc->clk_noc = NULL; + sc->clk_tl = NULL; + sc->clk_axi = NULL; + sc->clk_apb = NULL; + + mtx_init(&sc->msi_mtx, "jh7110_pcie, msi_mtx", NULL, MTX_DEF); + + /* Allocating memory */ + err = ofw_bus_find_string_index(sc->node, "reg-names", "apb", &rid); + if (err != 0) { + device_printf(dev, "Cannot get apb memory\n"); + goto out; + } + + sc->reg_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->reg_mem_res == NULL) { + device_printf(dev, "Cannot allocate apb memory\n"); + err = ENXIO; + goto out; + } + + err = ofw_bus_find_string_index(sc->node, "reg-names", "cfg", &rid); + if (err != 0) { + device_printf(dev, "Cannot get cfg memory\n"); + err = ENXIO; + goto out; + } + + sc->cfg_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->cfg_mem_res == NULL) { + device_printf(dev, "Cannot allocate cfg memory\n"); + err = ENXIO; + goto out; + } + + /* Getting device tree properties */ + if (jh7110_pcie_parse_fdt_resources(sc) != 0) + goto out; + + /* Clearing interrupts, enabling MSI */ + WR4(sc, IRQ_LOCAL_STATUS, 0xffffffff); + WR4(sc, IRQ_LOCAL_MASK, INTX_MASK | ERROR_MASK | MSI_MASK); + + /* Setting host up */ + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_RP_NEP_OFFSET, + STG_K_RP_NEP, STG_K_RP_NEP); + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AW_OFFSET, + STG_CKREF_MASK, STG_CKREF_VAL); + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AW_OFFSET, + STG_CLKREQ, STG_CLKREQ); + + /* Enabling clocks */ + if (clk_enable(sc->clk_noc) != 0) { + device_printf(dev, "could not enable noc clock\n"); + goto out; + } + if (clk_enable(sc->clk_tl) != 0) { + device_printf(dev, "could not enable tl clock\n"); + goto out; + } + if (clk_enable(sc->clk_axi) != 0) { + device_printf(dev, "could not enable axi_mst0 clock\n"); + goto out; + } + if (clk_enable(sc->clk_apb) != 0) { + device_printf(dev, "could not enable apb clock\n"); + goto out; + } + + /* Deasserting resets */ + err = hwreset_deassert(sc->rst_mst0); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'mst0' reset\n"); + goto out; + } + err = hwreset_deassert(sc->rst_slv0); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'slv0' reset\n"); + goto out; + } + err = hwreset_deassert(sc->rst_slv); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'slv' reset\n"); + goto out; + } + err = hwreset_deassert(sc->rst_brg); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'brg' reset\n"); + goto out; + } + err = hwreset_deassert(sc->rst_core); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'core' reset\n"); + goto out; + } + err = hwreset_deassert(sc->rst_apb); + if (err != 0) { + device_printf(sc->dev, "cannot deassert 'apb' reset\n"); + goto out; + } + + err = gpio_pin_set_active(sc->perst_pin, true); + if (err != 0) { + device_printf(dev, "Cannot activate gpio pin, error %d\n", err); + goto out; + } + + /* Switching off PHY functions 1-3 */ + for (i = 1; i != 4; i++) { + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AR_OFFSET, + STG_AXI4_SLVL_AR_MASK, (i << PHY_FUNC_SHIFT) + << STG_AXI4_SLVL_ARFUNC_SHIFT); + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AW_OFFSET, + STG_AXI4_SLVL_AW_MASK, i << PHY_FUNC_SHIFT); + + val = RD4(sc, PCI_MISC_REG); + WR4(sc, PCI_MISC_REG, val | PHY_FUNC_DIS); + } + + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AR_OFFSET, + STG_AXI4_SLVL_AR_MASK, 0); + SYSCON_MODIFY_4(sc->stg_syscon, sc->stg_baddr + STG_AW_OFFSET, + STG_AXI4_SLVL_AW_MASK, 0); + + /* Enabling root port */ + val = RD4(sc, PCI_GENERAL_SETUP_REG); + WR4(sc, PCI_GENERAL_SETUP_REG, val | ROOTPORT_ENABLE); + + /* Zeroing RC BAR */ + WR4(sc, PCI_CONF_SPACE_REGS + PCIR_BAR(0), 0); + WR4(sc, PCI_CONF_SPACE_REGS + PCIR_BAR(1), 0); + + /* Setting standard class */ + val = RD4(sc, PCIE_PCI_IDS_REG); + val &= REV_ID_MASK; + val |= (PCI_CLASS_BRIDGE_PCI << PCI_IDS_CLASS_CODE_SHIFT); + WR4(sc, PCIE_PCI_IDS_REG, val); + + /* Disabling latency tolerance reporting */ + val = RD4(sc, PMSG_RX_SUPPORT_REG); + WR4(sc, PMSG_RX_SUPPORT_REG, val & ~PMSG_LTR_SUPPORT); + + /* Setting support for 64-bit pref window */ + val = RD4(sc, PCIE_WINCONF); + WR4(sc, PCIE_WINCONF, val | PREF_MEM_WIN_64_SUPPORT); + + /* Holding PCI endpoint reset (perst) for 100ms, setting the pin */ + DELAY(100); + err = gpio_pin_set_active(sc->perst_pin, false); + if (err != 0) { + device_printf(dev, "Cannot deassert perst pin: %d\n", err); + goto out; + } + + /* Setting up an address translation window */ + jh7110_pcie_set_atr(dev, rman_get_start(sc->cfg_mem_res), 0, + rman_get_size(sc->cfg_mem_res), win_idx); + + err = ofw_pcib_init(dev); + if (err != 0) { + device_printf(dev, "ofw_pcib_init() fails\n"); + goto out; + } + + jh7110_pcie_decode_ranges(sc, sc->ofw_pci.sc_range, + sc->ofw_pci.sc_nrange); + + jh7110_pcie_set_atr(dev, sc->range_mem32.pci, sc->range_mem32.pci, + sc->range_mem32.size, ++win_idx); + jh7110_pcie_set_atr(dev, sc->range_mem64.pci, sc->range_mem64.pci, + sc->range_mem64.size, ++win_idx); + + /* Checking data link status */ + for (i = 0; i != 1000; i++) { + val = SYSCON_READ_4(sc->stg_syscon, + sc->stg_baddr + STG_LNKSTA_OFFSET); + if ((val & STG_LINK_UP) != 0) { + device_printf(dev, "Link up\n"); + break; + } + DELAY(100); + } + if ((val & STG_LINK_UP) == 0) { + device_printf(dev, "Cannot establish data link\n"); + goto out; + } + + /* Setup interrupts */ + rid = 0; + sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE); + if (sc->irq_res == NULL) { + device_printf(dev, "Cannot allocate IRQ resource\n"); + err = ENXIO; + goto out_full; + } *** 91 LINES SKIPPED *** From nobody Thu Aug 7 23:11:45 2025 X-Original-To: dev-commits-src-main@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 4byjfj6z26z63dhg; Thu, 07 Aug 2025 23:14:37 +0000 (UTC) (envelope-from sjg@juniper.net) Received: from mx0a-00273201.pphosted.com (mx0a-00273201.pphosted.com [208.84.65.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.pphosted.com", Issuer "Sectigo RSA Organization Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byjfj0F7Lz3Nrr; Thu, 07 Aug 2025 23:14:36 +0000 (UTC) (envelope-from sjg@juniper.net) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=juniper.net header.s=PPS1017 header.b="ct/EWMVO"; dkim=none ("invalid DKIM record") header.d=juniper.net header.s=selector1 header.b=ECAEl9PN; spf=pass (mx1.freebsd.org: domain of sjg@juniper.net designates 208.84.65.16 as permitted sender) smtp.mailfrom=sjg@juniper.net; dmarc=pass (policy=reject) header.from=juniper.net; arc=pass ("microsoft.com:s=arcselector10001:i=1") Received: from pps.filterd (m0108158.ppops.net [127.0.0.1]) by mx0a-00273201.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 577L2uE2017614; Thu, 7 Aug 2025 16:14:35 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=PPS1017; bh=Zj ky0s/Hbi+FyEugrX+DR/Wn9nrYo6FLHLJYnOrblvA=; b=ct/EWMVOql8FIhrQmU /zsZqo3evhzLhh4/o8V3tAVZBqnuAzjvXWNVz8KVUK1K92nxAyqmV0QKvw/NtDJJ 8OU1OlVvFWZw7FPCGtSqio50KgXeVXkP9qft+bR+IYD+O2j/YcNVe6DLkwoAi8aB orjSymbGXR12FdyX/rz/pUsLhZnzoAvAngLa1IFJdtm2e2I/WwWGR3nV2NEmA0HD UckR+LBgqQaqhr0HfWcgz7wLJPPrhqdqeqbdlxnjqxf3s7glhimVSV8Ew7YfhDl0 toj408QhUQZ20Sd5VBfrIkdKkGZ3wSZhA37mD/G1zMMTbA7PDvmdwD9e4AxGACMG AosQ== Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11022093.outbound.protection.outlook.com [52.101.53.93]) by mx0a-00273201.pphosted.com (PPS) with ESMTPS id 48ca1wkjjd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 07 Aug 2025 16:14:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SaGj7HnnlohmnFIZr5TT04ErEW1puFB+veLimW4uVz6pWjm1E//FWjzUkTTlvTpgUp23OYW1RwqfA32qpD0mH/zCxHfznsNRbezqC9yjGiUFYoZE9wRelhyn/nnJrxmiggsBhPGHNxvmju2xaLwc8tbRzJuqF4CboVJTO4I4QdRInq3VXbwDAAyVnVWKYNiIfwZLCtLtOnsI3CfXUBczEMcXojsemECNw6b0zQoBvkvYEuyvIwfeKLeZVnNCuSu22PhaWyMGQZaluWFpU/34AlBoWg5RUQIpvI9F1ALg/IwHPVRF08zRnKD1jdH7dxPDgNQ+ZVM6aSTqHA1Dz+jAqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Zjky0s/Hbi+FyEugrX+DR/Wn9nrYo6FLHLJYnOrblvA=; b=pRznIAWIPzcHcyZmrom3quADNWZbA/vVV4VjzeW/Fjhjp3EPbEXbi2JvVuizNpGZNzZzZYJWjospLjMqlp4uUqrzDwyONicSSbIEBQr4gqkJBbadSF1vohmnwUTYHTNpnpb059GqmBZ0gIdweRuXUppFZPxA3mVvfNZIq4YY80wR5UKaKhfqHOfEh+3i0RnaBKlpzi06v4OFxXCKFqsRhBzyqIjBPUAZmIovyTk5HlDmDukABjTAEotpisqVglWVL3jRmY2VOe4ONQwl8AaqhUAI4SMq0p3CBwbrE81OYKmS7PoiMdeGlxlrRc+VdW4zDt8dFve/AbckwEY7b4Ynbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (sender ip is 66.129.239.14) smtp.rcpttodomain=freebsd.org smtp.mailfrom=juniper.net; dmarc=fail (p=reject sp=reject pct=100) action=oreject header.from=juniper.net; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Zjky0s/Hbi+FyEugrX+DR/Wn9nrYo6FLHLJYnOrblvA=; b=ECAEl9PNsd2W4fKRwgN7tDAe9aYOcF49LO0cU8x6xDRYNkwRPGm2a67sWxf4J20pKD3tcrgtJ9S53zb5ZkrUz5FPSI/UIPrIzRq6ecnRQdnC3bmSdePrrKqQIUc1WsgtgW8HoUuA2i4j22tB9O5NDCoW4Mc2HdK8gfoCAPezab0= Received: from MW4PR03CA0225.namprd03.prod.outlook.com (2603:10b6:303:b9::20) by BLAPR05MB7459.namprd05.prod.outlook.com (2603:10b6:208:284::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.13; Thu, 7 Aug 2025 23:12:53 +0000 Received: from CO1PEPF000066EB.namprd05.prod.outlook.com (2603:10b6:303:b9:cafe::f3) by MW4PR03CA0225.outlook.office365.com (2603:10b6:303:b9::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9009.13 via Frontend Transport; Thu, 7 Aug 2025 23:12:53 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (sender IP is 66.129.239.14) smtp.mailfrom=juniper.net; dkim=none (message not signed) header.d=none;dmarc=fail action=oreject header.from=juniper.net; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning juniper.net discourages use of 66.129.239.14 as permitted sender) Received: from p-exchfe-eqx-01.jnpr.net (66.129.239.14) by CO1PEPF000066EB.mail.protection.outlook.com (10.167.249.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.8 via Frontend Transport; Thu, 7 Aug 2025 23:12:51 +0000 Received: from p-exchbe-eqx-02.jnpr.net (10.104.9.15) by p-exchfe-eqx-01.jnpr.net (10.104.9.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Thu, 7 Aug 2025 18:12:51 -0500 Received: from kaos.jnpr.net (10.104.20.6) by p-exchbe-eqx-02.jnpr.net (10.104.9.15) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Thu, 7 Aug 2025 18:12:51 -0500 Received: by kaos.jnpr.net (Postfix, from userid 1377) id E3EDCDABE3; Thu, 07 Aug 2025 16:11:45 -0700 (PDT) Received: from kaos.jnpr.net (localhost [127.0.0.1]) by kaos.jnpr.net (Postfix) with ESMTP id E1D0EDAC4E; Thu, 07 Aug 2025 16:11:45 -0700 (PDT) To: , , Subject: Re: git: 5c4d1c85847d - main - Replace license with just SPDX BSD-2-Clause In-Reply-To: <20250807223124.2tsDIUvh@steffen%sdaoden.eu> References: <202508072215.577MFjpx011932@gitrepo.freebsd.org> <20250807223124.2tsDIUvh@steffen%sdaoden.eu> Comments: In-reply-to: Steffen Nurpmeso message dated "Fri, 08 Aug 2025 00:31:24 +0200." From: "Simon J. Gerraty" X-Mailer: MH-E 8.6+git; nmh 1.8; Emacs 30.1 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Date: Thu, 7 Aug 2025 16:11:45 -0700 Message-ID: <6150.1754608305@kaos.jnpr.net> X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000066EB:EE_|BLAPR05MB7459:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c424a4e-698f-48ec-708d-08ddd607eee3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ODVHT3dWaktKNG1zcXYxSnpzREN6MXRmQThXWkViVUlvNytDQUpLUWRteW5H?= =?utf-8?B?TGtkVW9WbGh4RWtyZDB4RnErc01sWGcrd0w1TjZHMkJjeUQybUswR3g1ZHAv?= =?utf-8?B?SDBVbHhQUm0vbkduVXBmUTNHZTVSVkJGRXJIL0p5MnV3OXFWRHRUdFdDMGkw?= =?utf-8?B?NWdpTkg0cnJmOFBRMDhwU09zZ3hzRjhmUFVuS00wNGd6N3hydVZnRFdHODZx?= =?utf-8?B?bllER2l1RXpMUG11UDZCL1BSc0JlWFY0RFIrZmtnT1NOd2tmVkpKTzZyMnAw?= =?utf-8?B?SFdpeXQ0bWRFdE8rNVFEL0dPOU1JeHhINWN4M3VlZTRkaXZnTHZOOGNVRmRt?= =?utf-8?B?WUFFamVUY0ZnS3RwUmxlT2RTc1Bsa21rWElSTXhXZEcvUHR1U0RrbnR0Uzkr?= =?utf-8?B?Ym9SZENsQTM1dnRZK09yUGxUd3Bsd0c3OVp6V21kdlZhcDE5dmxsK3BsR2lX?= =?utf-8?B?ZEh6bTdINll0QTdLRkoxeHFPNXlHR3huS0pURG5jUnpGdVdPTnFqSjh3dDU2?= =?utf-8?B?V0xkUXUzK3E3bXN4TjRQWE1sWm4rckVncXZMRFhoemhHYVJDdDZSUEw4RlI0?= =?utf-8?B?MFQrYk1GaGtaYUx1bkpBeTlCVDZiNXJPR3ZvcS9NcjU1QitNWUVrZGFISUFW?= =?utf-8?B?RmR3VGQvek50WUYyUzFWa21yUVBkZmZkQm5SbDZ1eVJtc2dwRi9Ha3YreWJw?= =?utf-8?B?UFkwOGxJcWRoc3ZTY0d0clB6TE1wUnpQUC9ZSGhWbFR2bmZPajYySEJYTXJI?= =?utf-8?B?RWpHbWdqUXY4eUJHeENzWk92bHZyVUJudkttbE40aDF1M0F4aFRZL2ZxRzhh?= =?utf-8?B?dit0a29uT2pHNFNQZTVBaDNTVUI0aWp6Z0h3VVcwNStycDBNbS9EMS9HSXF2?= =?utf-8?B?cUwrbk1keTYwK1hlVk9PWml6M1NYZmlrYUhUZ0J6N2lUWk1DRjRSVi8xdGp4?= =?utf-8?B?c2svV0JEdW1wcktPMGd4OHk0aTJwTkJpdUo2c2pkYVRpOWJXTzBzOCtuTXJD?= =?utf-8?B?cks5eUdpRUdlbUlyeDBvWEJ3NWt5TXh6N3JPUm1PQUVkcXNUYUZyT1lEWHR4?= =?utf-8?B?SmhnSVllMkxWT2UrTmlQMUQxeG1DdSs0eEVmb3NzalRCY1VpekM1VDFwdkg3?= =?utf-8?B?NExyMUJmUkowRmc2aXhHMTNKRkJHdWhHTEdHeklQTFovOVI3SkJvdm9HTWJP?= =?utf-8?B?VWJnSmc5cnBRSFJiUGJqbzc2YTlRQ2REL2R5QVNyVDFKVDJ2SnRBb3R4eVpT?= =?utf-8?B?YmFvUVk1czJyT21abW9FZm56STI5VktJYTNicCtyKzZ2Y0Y5WDZSa0F1TWJQ?= =?utf-8?B?SU5Nc3N3NmFkb0pNQlY5d2RaVkZlWUJiMEYvMEkzKzErVGk2L3k2RjJBWksy?= =?utf-8?B?TUdseVVvZm13aUxaeVBta2x4ZnN1aHlUeHV0Vm5HeWVvUVVmS3JrZXoySEJh?= =?utf-8?B?TXRucXlUSll0enNxSktVdXVBRE5VWUg1NnRlMnMzSk1KZnM4RlVVamlOLzNV?= =?utf-8?B?UVgxUWJwM2hFTFM0N1F6Mnp2OWRDNk5kak1RTHcrZkZ5V3htdkVUUTFoR2ZJ?= =?utf-8?B?SS9lMmtIZDM5K003RVFuYXZMK0F1SExEZ3doeWU4TVR2dFFDdUhrTVhwRkMx?= =?utf-8?B?TERINUVWb0lZTlBraTE4WkpYamlwZkM1QUtLQmU5b2dYaURHSk1mRVhUblNE?= =?utf-8?B?VnludHYrUU5JSm96OGpqZk5QRkdBaWxCTWlQZ0NYZ2lJUWNZOUh2eEJ5dmRo?= =?utf-8?B?SjhNL05qVHE4SDZxOHozV3BjZmFhSXJ0ZkNFZUxhbXRsL3BVdS8yMkw4eTh5?= =?utf-8?B?Y2ltdG05YzY5eldqdGpsQmJqQzB6aW90SDB3aElSZW9raFM1Qjd2UVhnUGpj?= =?utf-8?B?d1VGQUdKME9ZK0NuNGQ1TG8rNW83cjhNMFdKV0xNQ2ZVaFhxSVdqbGFPRVI5?= =?utf-8?B?T1g3ZGNvdDhNNjFnMmtjd2FSbGJNN29mR3prZDVPSVczVXRRdmtCTlFDS2J4?= =?utf-8?B?eUtmb0xCdFlnPT0=?= X-Forefront-Antispam-Report: CIP:66.129.239.14;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:p-exchfe-eqx-01.jnpr.net;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024)(13003099007);DIR:OUT;SFP:1102; X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2025 23:12:51.6888 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c424a4e-698f-48ec-708d-08ddd607eee3 X-MS-Exchange-CrossTenant-Id: bea78b3c-4cdb-4130-854a-1d193232e5f4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bea78b3c-4cdb-4130-854a-1d193232e5f4;Ip=[66.129.239.14];Helo=[p-exchfe-eqx-01.jnpr.net] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000066EB.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR05MB7459 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA2MDA5OSBTYWx0ZWRfXwQ4PoxP42lyp 1nbmuEKrUpyGGvnEa/Da9Jm+sfAK3JXxW1PfA/RDvtmgzVN9eQN6q9YhNZPIgoK/QEgAsA0ZHl3 gvT7RVwipzC8Kzp8VZoo3TfXrfjhG3YYFpj/E3sFOzW3w/nB6PTPiFbYKLUBIlj00y63gTOWmUu LlQS1mTIz77cU8E1gvcUjWOE9UNqxPGKjW5wCnsTF36tXrUdASfybSG0BfB+4V0neKdwDPfA6CD tSjm6YFELxr8FoII41/ruYpVWw5keRb2o1spzRZtpU31VCy3G1pNJAHQj+/e8T1Y0CTNkEe7c7e ZE+GtvkNMv644h40SiHc+y+CDJckMpSkMmCsnhdGrzCJtP4okMVUraZXuWHOf+YqIVvv4BTEb6M aF9tJYE2 X-Authority-Analysis: v=2.4 cv=Z+TsHGRA c=1 sm=1 tr=0 ts=6895335b cx=c_pps a=F9xFoPyAMX64h5WOW3qpxA==:117 a=f/rncuQqEjTEF/G1odkJ9w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=s63m1ICgrNkA:10 a=rhJc5-LppCAA:10 a=24AZYWMyAAAA:8 a=xORKUZJLAAAA:8 a=yVk17gsn7dcLBspOw2sA:9 a=QEXdDO2ut3YA:10 a=89X-7MxVpOcA:10 a=bG88sKzkDEFeXWNnvthB:22 a=v4Hbg6dcrAlSMfWU4D1A:22 X-Proofpoint-GUID: 7h4nk5iPS4m0PHAvgIfduYMPiyc7m8eM X-Proofpoint-ORIG-GUID: 7h4nk5iPS4m0PHAvgIfduYMPiyc7m8eM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-07_06,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 impostorscore=0 spamscore=0 bulkscore=0 phishscore=0 malwarescore=0 priorityscore=1501 adultscore=0 clxscore=1011 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508060099 X-Spamd-Result: default: False [-4.92 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector10001:i=1]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.82)[-0.823]; DMARC_POLICY_ALLOW(-0.50)[juniper.net,reject]; R_SPF_ALLOW(-0.20)[+ip4:208.84.65.16]; R_DKIM_ALLOW(-0.20)[juniper.net:s=PPS1017]; RCVD_IN_DNSWL_LOW(-0.10)[208.84.65.16:from]; MIME_GOOD(-0.10)[text/plain]; R_DKIM_PERMFAIL(0.00)[juniper.net:s=selector1]; RWL_MAILSPIKE_POSSIBLE(0.00)[208.84.65.16:from]; MIME_TRACE(0.00)[0:+]; FREEFALL_USER(0.00)[sjg]; ASN(0.00)[asn:26211, ipnet:208.84.65.0/24, country:US]; DKIM_TRACE(0.00)[juniper.net:+,juniper.net:~]; MLMMJ_DEST(0.00)[dev-commits-src-main@FreeBSD.org,dev-commits-src-all@FreeBSD.org]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; DKIM_MIXED(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_NONE(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCVD_COUNT_SEVEN(0.00)[9] X-Rspamd-Queue-Id: 4byjfj0F7Lz3Nrr X-Spamd-Bar: ---- Steffen Nurpmeso wrote: > | Replace license with just SPDX BSD-2-Clause >=20 > That is very interesting! And .. are you really sure this is > right with BSD etc licenses which explicitly require that the > license text is included? > So i looked and found [1] which says I checked with one of our IP lawyers who said just the SPDX tag "should" suffice, but best to remove the verbage that conflicts. > SPDX IDs are intending to express information about > licenses. Copyright notices =E2=80=90 statements about who owns the > copyright in a file or project =E2=80=90 are outside the scope of SPDX > short-form IDs. > Therefore, you should not remove or modify existing copyright > notices in files when adding an SPDX ID. Except that in this case the verbage I removed is sufficiently different from the text of https://spdx.org/licenses/BSD-2-Clause.html as to potentially trigger arguments - so better safe that sorry, and I hate the idea of a file which is 90% license, which is why I had that abbreviated version in the first place. If the lawyer says I can get away with just the tag, that works for me. > However i am sure you do not do something like this "just like > that", and would be very interested -- it would be nice to be able > to vaporise the file header -- i always have that pitfall moment > when i look into Plan9 / 9front source code, which then simply > starts off (and very often with "#include ", just like that). ISTR the original BSD convention was to not waste space on copyrights in tiny files, I was forced into putting licenses on everything by some of my consulting clients back in the '90s HTH --sjg From nobody Thu Aug 7 23:34:42 2025 X-Original-To: dev-commits-src-main@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 4byk5t6bB4z63g9y; Thu, 07 Aug 2025 23:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byk5t5Hvpz3PsQ; Thu, 07 Aug 2025 23:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754609682; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CGMzbnskbaMW6hqctM0oKrHx2J2uOF5A4EUD4igxm3s=; b=DnBGyqYxIQwUa+2yw3KmeAr3Au595p0E8ctNlvwTm7c04wvh+Rnec1CZ7L5CjL3KymMqjS FQQOtaY2WbDsoR+uc2eDfjOotOxk7SULbKptWPwb2CGLeHseCieLWLxivu4Cx0dbEjuIz+ Dt/c77x9is9+91pg29IdjOC0oDXqAVDS+k6Koj41YI7Elb3RUcZ1YMXSJn3jBCgU1pwmR+ 5IgCqkHCn6+zUOAPK9GMBOgZjbiwq5lGwcxy9lU4dkpav8udbH2OhyaT5SirnYqSjmNomY JqT8rTsy0Yz9BJOsRsrs6ENk32biGPu2uTj2LTxWCSCM8fzgV9Z2L/5xlsNQOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754609682; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CGMzbnskbaMW6hqctM0oKrHx2J2uOF5A4EUD4igxm3s=; b=Vqf4GKTurSHepNx8mnyf6Yh589VSBexqCKgQfIrt87jSl21dYGbbbFB2y5uwQdkHS1HfTX IrE+9sTG9ors1gqEZooaCy37Y799pu0JVmPb6Rmu3bYtdhM4651J0rUYx3LvOSuOb6yw2X L/JJa/EwrlGBKZbR6ka7Wcuc8yKRYw4AXCgAORTPtT0gJSRYkSrXNLq/7gkei+0l9SdVnk uMnNtdJYFmbXingZ1RjM8/28aEp0sM2jKgI235eVrX7tU3YNTYEal0ia1cymLic1bkZUlk XwsX5V//X6kd1WP+GPaQTXYOQ5v0zlwFFSh8SuXMoob6ERIKKpXCf3H6ma3pag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754609682; a=rsa-sha256; cv=none; b=jvhz2gaVn4gyHIXdpLf4bIh/Oib2W4LLMPzV3gyjZGPXrsmmB6u8qYBE9Y4lMK/jDHz//m RzJJFl7F/mURHzCTnvTUQy/aezdLpMu5C2IDH4TlN+erD2m9iI5Zx2KrcKVW/Ga7SeczY6 CKdm1umo7CCCjwISO+ARfbIhXQcNdVdsqY+62geRmzWsI1LuUSrZ1Hs5S0fYWSRycfWEM7 rbEd54KLx7kdypFDa7h2srwg/tiR9I5udIFDUeSuidM2wuOA7+QP/JU/+GZOioEmRnfeqg I02YNnhAorEB34+x4Fq4/cwC4QfHjq5AEDbaQo54RKNjiP1WJrWmZ239Am5GuQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byk5t4Pmfz1QHt; Thu, 07 Aug 2025 23:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577NYgPV060657; Thu, 7 Aug 2025 23:34:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577NYg8F060654; Thu, 7 Aug 2025 23:34:42 GMT (envelope-from git) Date: Thu, 7 Aug 2025 23:34:42 GMT Message-Id: <202508072334.577NYg8F060654@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 0ecc679fd3da - main - indent: Simplify test script List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 0ecc679fd3da0720d6ba331ebcceca8e0760fa22 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=0ecc679fd3da0720d6ba331ebcceca8e0760fa22 commit 0ecc679fd3da0720d6ba331ebcceca8e0760fa22 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 23:33:56 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 23:33:56 +0000 indent: Simplify test script Much of the test script was concerned with working around RCS tags and dealing with cases which don't apply to indent. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D51795 --- usr.bin/indent/tests/functional_test.sh | 55 +++++++++------------------------ 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/usr.bin/indent/tests/functional_test.sh b/usr.bin/indent/tests/functional_test.sh index 44538e5b6e12..3f4431038234 100755 --- a/usr.bin/indent/tests/functional_test.sh +++ b/usr.bin/indent/tests/functional_test.sh @@ -1,3 +1,5 @@ +#- +# SPDX-License-Identifier: BSD-2-Clause # # Copyright 2016 Dell EMC # All rights reserved. @@ -29,61 +31,34 @@ SRCDIR=$(atf_get_srcdir) check() { - local tc=${1}; shift - - local indent=$(atf_config_get usr.bin.indent.test_indent /usr/bin/indent) - - # All of the files need to be in the ATF sandbox in order for the tests - # to pass. - atf_check cp ${SRCDIR}/${tc}* . + local tc=${1} + local profile_flag - # Remove $FreeBSD$ RCS expansions because they get re-indented, which - # changes the output - local out_file="${tc}.stdout" - if [ -f "${out_file}" ]; then - parsed_file=output_file.parsed + cp "${SRCDIR}/${tc%.[0-9]}".* . - atf_check -o save:$parsed_file sed -e '/\$FreeBSD.*\$/d' \ - ${tc}.stdout - out_flag="-o file:$parsed_file" - fi - local profile_file="${tc}.pro" - if [ -f "${profile_file}" ]; then - profile_flag="-P${profile_file}" + if [ -f "${tc}.pro" ]; then + profile_flag="-P${tc}.pro" else # Make sure we don't implicitly use ~/.indent.pro from the test # host, for determinism purposes. profile_flag="-npro" fi - sed -e '/\$FreeBSD.*\$/d' ${tc} > input_file.parsed - atf_check -s exit:${tc##*.} ${out_flag} ${indent} ${profile_flag} < input_file.parsed + atf_check -s exit:${tc##*.} -o file:"${tc}.stdout" \ + indent ${profile_flag} < "${tc}" } -add_testcase() +add_legacy_testcase() { local tc=${1} - local tc_escaped word - - case "${tc%.*}" in - *-*) - local IFS="-" - for word in ${tc%.*}; do - tc_escaped="${tc_escaped:+${tc_escaped}_}${word}" - done - ;; - *) - tc_escaped=${tc%.*} - ;; - esac - atf_test_case ${tc_escaped} - eval "${tc_escaped}_body() { check ${tc}; }" - atf_add_test_case ${tc_escaped} + atf_test_case ${tc%.[0-9]} + eval "${tc%.[0-9]}_body() { check ${tc}; }" + atf_add_test_case ${tc%.[0-9]} } atf_init_test_cases() { - for path in $(find -Es "${SRCDIR}" -regex '.*\.[0-9]+$'); do - add_testcase ${path##*/} + for tc in $(find -s "${SRCDIR}" -name '*.[0-9]'); do + add_legacy_testcase "${tc##*/}" done } From nobody Thu Aug 7 23:34:43 2025 X-Original-To: dev-commits-src-main@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 4byk5w0Dbsz63gB5; Thu, 07 Aug 2025 23:34:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byk5v5XGtz3PyW; Thu, 07 Aug 2025 23:34:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754609683; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9RINtRULyfBeqI5C/IFuHgFFKGRrhR5xMkyvV6Y3Ngw=; b=I4dbdn4/elxYC5VWGYHj3LnYHWL20jiVelR9jW8Aph6XCbwtbJxO5Gs5QhgTSqpgEMECSF 0pQsYwDDcIl6sC7mKh0VSqmoqZSLH75sZJ5wQ5mWSn01QFF3THiFvb4FLjmTrpwgGzjKfq 6xziokX3NsQFij2y7C+3n89ckop64rpvb+O0lP3PpZclrHRYiUXiKWm2jqm6g24PXgNB1x 8+7L5OnS7/AoWYZ7A4V8gG+dVHAofTYkF476RTLinbSMEyeecv7AxFUHEp+Ej/oSnVqA5J zarxjO3QRHqnRlsZuuvFKy7E6P0Dxmguj8XIFMtW5s/h1MS0P3JsO5Fs7/+7rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754609683; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9RINtRULyfBeqI5C/IFuHgFFKGRrhR5xMkyvV6Y3Ngw=; b=WYXmNrR9rn7EyVPBY0tc0JD/uP6wqMGH00S+Mj0O5t1OmAc9cyLLH5IBLZtNUNfP7V0YTO HoFwfmakKJ1+2312f8w2kUCyjDouxHK9D2teQy96HUcHpXeHtBjXjPtNVuRLiF6MeIGTng dzRDHoHHrac+/LPcHrQazOTCda0GAvt8dOvR8DY+MZfanT4pHLdUtTCL37Q1RvLdGk5OSr zgiIJxJitVQdfMmwGOu2ALErCtFTJ6Rf9O7Gq7xiL+AJz4ud8n0Ebe6AuoJVDGI66r71bK Sxr5ImBXIaF2TVJGzkQSFf2GJE1bQCiBynKzVkxNnTwbfx3ZQUtbWV/RE6gEbQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754609683; a=rsa-sha256; cv=none; b=xwRFrrYK9Mb4HJuzBJWUyNqGKj7s+qKux4YBb+S/Xo/1qvmBO0pPnPU+6gj0Aj7/YUGbwM h6G2KQoEL8IHLtaA72f0YEEMnaT96Q8M+up2JF0W3jwniFaMdjSyZY8Vr14Zwmf5SI5NIB cJrevj2PXDON6YLVdte9pvDEQoH/Mlpw6qMwDUOdVb3xthdWWYxhMaZX5/UabwyHPVofKu AfXK+ZsKMg5YVT5MRVQQssavMwJ5jhY/vBlq2t5LGfyWMD439VNafoojhFWdZ9QOLkCK2R Hzn6F26B5I4axxFdEgUymQgk63XfZZ6fw7VG7W8F7flCyPI/r5T49Nl6RFxS5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byk5v52bVz1Qfr; Thu, 07 Aug 2025 23:34:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 577NYhuo060693; Thu, 7 Aug 2025 23:34:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 577NYhYb060690; Thu, 7 Aug 2025 23:34:43 GMT (envelope-from git) Date: Thu, 7 Aug 2025 23:34:43 GMT Message-Id: <202508072334.577NYhYb060690@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: eb41613d2297 - main - indent: Fix buffer overflow List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: eb41613d22977798f41dd979e4e4ec0965711916 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=eb41613d22977798f41dd979e4e4ec0965711916 commit eb41613d22977798f41dd979e4e4ec0965711916 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-07 23:34:07 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-07 23:34:07 +0000 indent: Fix buffer overflow The function used to create a backup of the input before starting work used a static buffer and did not check that the file name it constructed did not overflow. Switch to using asprintf(), clean up the rest of the function, and update some comments that still referred to an earlier version of the code. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: bnovkov Differential Revision: https://reviews.freebsd.org/D51796 --- usr.bin/indent/indent.c | 40 ++++++++++++++------------------- usr.bin/indent/tests/functional_test.sh | 18 +++++++++++++++ 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/usr.bin/indent/indent.c b/usr.bin/indent/indent.c index 4739e861fef9..3ea78e1f153e 100644 --- a/usr.bin/indent/indent.c +++ b/usr.bin/indent/indent.c @@ -83,7 +83,6 @@ const char *out_name = "Standard Output"; /* will always point to name * of output file */ const char *simple_backup_suffix = ".BAK"; /* Suffix to use for backup * files */ -char bakfile[MAXPATHLEN] = ""; int main(int argc, char **argv) @@ -1231,41 +1230,35 @@ check_type: } /* - * copy input file to backup file if in_name is /blah/blah/blah/file, then - * backup file will be ".Bfile" then make the backup file the input and + * copy input file to backup file then make the backup file the input and * original input file the output */ static void bakcopy(void) { - int n, - bakchn; - char buff[8 * 1024]; - const char *p; - - /* construct file name .Bfile */ - for (p = in_name; *p; p++); /* skip to end of string */ - while (p > in_name && *p != '/') /* find last '/' */ - p--; - if (*p == '/') - p++; - sprintf(bakfile, "%s%s", p, simple_backup_suffix); + static char buff[8 * 1024]; + char *bakfile; + ssize_t len; + int bakfd; + + /* generate the backup file name */ + if (asprintf(&bakfile, "%s%s", in_name, simple_backup_suffix) < 0) + err(1, "%s%s", in_name, simple_backup_suffix); /* copy in_name to backup file */ - bakchn = creat(bakfile, 0600); - if (bakchn < 0) + bakfd = open(bakfile, O_RDWR | O_CREAT | O_TRUNC, 0600); + if (bakfd < 0) err(1, "%s", bakfile); - while ((n = read(fileno(input), buff, sizeof(buff))) > 0) - if (write(bakchn, buff, n) != n) + while ((len = read(fileno(input), buff, sizeof(buff))) > 0) + if (write(bakfd, buff, len) != len) err(1, "%s", bakfile); - if (n < 0) + if (len < 0) err(1, "%s", in_name); - close(bakchn); fclose(input); /* re-open backup file as the input file */ - input = fopen(bakfile, "r"); - if (input == NULL) + input = fdopen(bakfd, "r"); + if (input == NULL || fseek(input, 0, SEEK_SET) != 0) err(1, "%s", bakfile); /* now the original input file will be the output */ output = fopen(in_name, "w"); @@ -1273,6 +1266,7 @@ bakcopy(void) unlink(bakfile); err(1, "%s", in_name); } + free(bakfile); } static void diff --git a/usr.bin/indent/tests/functional_test.sh b/usr.bin/indent/tests/functional_test.sh index 3f4431038234..9cfe5878f69d 100755 --- a/usr.bin/indent/tests/functional_test.sh +++ b/usr.bin/indent/tests/functional_test.sh @@ -3,6 +3,7 @@ # # Copyright 2016 Dell EMC # All rights reserved. +# Copyright (c) 2025 Klara, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -56,9 +57,26 @@ add_legacy_testcase() atf_add_test_case ${tc%.[0-9]} } +atf_test_case backup_suffix +backup_suffix_body() +{ + local argmax=$(sysctl -n kern.argmax) + local suffix=$(jot -b .bak -s '' $((argmax/5))) + local code=$'int main() {}\n' + + printf "${code}" >input.c + + atf_check indent input.c + atf_check -o inline:"${code}" cat input.c.BAK + + atf_check -s exit:1 -e match:"name too long"\ + env SIMPLE_BACKUP_SUFFIX=${suffix} indent input.c +} + atf_init_test_cases() { for tc in $(find -s "${SRCDIR}" -name '*.[0-9]'); do add_legacy_testcase "${tc##*/}" done + atf_add_test_case backup_suffix } From nobody Fri Aug 8 00:06:00 2025 X-Original-To: dev-commits-src-main@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 4bykp118mmz63j3s; Fri, 08 Aug 2025 00:06:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bykp05zJrz3T6f; Fri, 08 Aug 2025 00:06:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754611560; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HalAhStcKg1T7Hn42ojQU/IMJGMWAxmsu2ggAlkoclE=; b=fwaGL78r03c/ciWicdf52/qvkuZwjJov2A+RFzKf0nOu81Kkp05DWe5UKi417MXIPdJ0+E sbpuN9tVwArs162DURTNFAe637zlA/yAcTKHfH+Ch+2DpWBTTyluiWJo8FLSdpahfLK5FW ezwDcczk6jUIgaodlxIe++oJTeVBTabFkadjiDMiaDl5mhaZprLwyd1oebTCUiQwYQvV52 CLOEnM8JoMap1zfLZEq+ChdHYrjaU9TuaS5SSTTyowFUJzux9gBiXvCWceBKeqDjucGsO7 sV19Q7jFfHSs2DBhMBeRUjPdpMBF5C6LsSBz9q3x8TeliicMRoRtKXzBUj3YxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754611560; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HalAhStcKg1T7Hn42ojQU/IMJGMWAxmsu2ggAlkoclE=; b=q5o8cnso3O+FGj/BBHoHy/VkofyBRxULBc6YsTpItFBlqwMeTM3h6qTi+RTo1UTOu7fk7v PVSAZHuBpAGTXVv1hs8FuUmOxxNLdJZLwcFMSAqIRTf/ZkBGf1RQ3e91ca6NW8VWpEe0IX li6SctZQtNb3jfffI7swQbgItaTWwH43IQo2etB73iKHhsf2PLgfVGcbGAVY/VoYwtxKld i94j+Q6l+ErNaILDJvEkckw6ilAqdixtSgx8D5KAPGAOkX1fGUl2m6WoVw+J/7iIdz6oTC eWhAuGFG/XXXoL0LMnA9gJN7NEoXi/WnW+m3nifrTXZpweEgHwc5dMNIF5kEUQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754611560; a=rsa-sha256; cv=none; b=EHLrvhl3XoZyAH8UY0a312wnhMtBylpUreLhID3PQ7R3YBhJ2wyPQQHOCla/FjJP3jBpWk jRIAqjgeYus0UvTG8nxJgoMPbJIDudIGZz3Ct36yeUe0xxBB1cJMfeuVcdZNFN2RUoilQH GK5IUyatWM7d9fPmdk95N/mDbl9Zdv1MSzeMX1qiCAYk3jm/ZR0pRjZD/6Wmn4B+X3KSY6 lNRWNVBSy9LH2xTW6ngfXk5V/7c06V1Gk+vzTbfZlDxGULYQzzcbSBdE/S9Bqt7gnsF9ax fy9BXxdAT6kvWFX4p69sDXf0hwhBvsgMlP+ct0n88uMVk1/W84TIs8bt2tEekg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bykp05ZxSz1Rb2; Fri, 08 Aug 2025 00:06:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578060s3017280; Fri, 8 Aug 2025 00:06:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578060fT017277; Fri, 8 Aug 2025 00:06:00 GMT (envelope-from git) Date: Fri, 8 Aug 2025 00:06:00 GMT Message-Id: <202508080006.578060fT017277@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: e4c0ecba44b2 - main - 15.0: Update main to -PRERELEASE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e4c0ecba44b20ebb2e4d80978c2cb6d16b730cb9 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=e4c0ecba44b20ebb2e4d80978c2cb6d16b730cb9 commit e4c0ecba44b20ebb2e4d80978c2cb6d16b730cb9 Author: Colin Percival AuthorDate: 2025-08-08 00:04:34 +0000 Commit: Colin Percival CommitDate: 2025-08-08 00:04:34 +0000 15.0: Update main to -PRERELEASE This marks the start of the FreeBSD 15.0 release cycle; the tree is now in "code slush". Developers are encouraged to prioritize fixing bugs over adding new featuresa t this time. Commit approval from re@ is not required but if new features introduce problems they may be removed from the upcoming release. Approved by: re (implicit) --- sys/conf/newvers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 9a196da5466f..66926805052c 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -51,7 +51,7 @@ TYPE="FreeBSD" REVISION="15.0" -BRANCH="CURRENT" +BRANCH="PRERELEASE" if [ -n "${BRANCH_OVERRIDE}" ]; then BRANCH=${BRANCH_OVERRIDE} fi From nobody Fri Aug 8 00:55:34 2025 X-Original-To: dev-commits-src-main@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 4bylvC03d3z63lXv; Fri, 08 Aug 2025 00:55:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bylvB6fXHz3fGN; Fri, 08 Aug 2025 00:55:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754614534; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vnDfVm1OlOuiESaAqAh3HSnBwe6mhglN8Y160gDBmko=; b=a2UK4gA2X7rPqa2r3rma/qwqbRqGEvq+STMrxK/yocdxbGODeAY86+tLaxsdWJ1sV3WTa+ 17scroxQky75dChcwkO4a3kMNorELYdxscYJYwO+CSgR95yzLHMTTQAYbFJpmsgqgVN2m5 bqhu4sw1igb89jYtdLDmHJ/KS+dN7Hn/ad16HLfShXgLptZwN5e0G1yZh5FJvPIN7QK382 6Kf4jmNUM/muGtUm77d6ZUOkh9AQpX1r7w6l/CptsSq6QmxdD8oYnKG0QVnry9Yyr/wBXQ 9t+GBj1wxPq5VauVBZShhPE0s4tVlGN6G49BgILOOZQ0W9hU8KcpY2tkPzULTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754614534; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vnDfVm1OlOuiESaAqAh3HSnBwe6mhglN8Y160gDBmko=; b=wHrq3IaVSK22Y2Wfzc6sSHew8yqfTBAF476lrUVYJNtX/9PxyTqGi/LQB0r5eO1kVkyi9N 12/DbamLGcYvf9SmJ4dK9Bfy4VBEqV/KOqHzLSPtFlV4ZvnKsG0taZnSaLQHk0oZCN3gs/ GYxG5du5h0jyFsHcsgPTWKHboUncRZVcxfaDinJayOpddHCGw9+S09h4H6KlyHA391vGyc X0FmIOgbP5wfDeU8aCXSVXJKY18YOwrQq6NPuhEYbolYgXCq6h2i3FZBja0z54LTNP5sZO 65aZxAW9/jY4SLnInJuNvilkrYeLplJajjnnKmWA3LTSFlQWmzHlo0cnVRCASA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754614534; a=rsa-sha256; cv=none; b=RuLlsQuxdyeE/DYC6BMsnIftJW/dwuZn2e0cas2Ebss6LO9FNMIWk5FJSz2ut50lQXw6PM RqnbJdTF0+vF+lDSCDobOlvfGJPAfZ67uOJwLz6pEhPnwCujujHxPiYXW7ko8Tl/3ol+kN Kqsb0fxnbot//p2OWxjl3R4BzOdDBmyTdD1bBov8QU98DxnrWCjRNRvg5tkaM6Kd4wZvRf t0ALWuAw46hk0eT6x3b8JlSt+1VV8oLJMj0wPk9p4tpwHl1zkOpRnte/xLStusMk7WLchy TfVy2nrSzZA8VVHIekayZ/jHs5SZHgJBLi5JlL20vEuYzhP5vEO/ZUu9MbteSw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bylvB5zWQz5p; Fri, 08 Aug 2025 00:55:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5780tY7n010163; Fri, 8 Aug 2025 00:55:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5780tYVq010160; Fri, 8 Aug 2025 00:55:34 GMT (envelope-from git) Date: Fri, 8 Aug 2025 00:55:34 GMT Message-Id: <202508080055.5780tYVq010160@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 37b2cb5ecb0f - main - vfs: Add support for file cloning to VOP_COPY_FILE_RANGE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 commit 37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 Author: Rick Macklem AuthorDate: 2025-08-08 00:52:23 +0000 Commit: Rick Macklem CommitDate: 2025-08-08 00:52:23 +0000 vfs: Add support for file cloning to VOP_COPY_FILE_RANGE NFSv4 has a separate CLONE operation from COPY with a couple of semantics differences. Unlike COPY, CLONE must complete the "copy on write" and cannot return partially copied. It also is required to use offsets (and the length if not to EOF) that are aligned to a buffer boundary. Since VOP_COPY_FILE_RANGE() can already do "copy on write" for file systems that support it, such as ZFS with block cloning enabled, all this patch does is add a flag called COPY_FILE_RANGE_CLONE so that it will conform to the rule that it must do a "copy on write" to completion. The patch also adds a new pathconf(2) name _PC_CLONE_BLKSIZE, which acquires the blocksize requirement for cloning and returns 0 for file systems that do not support the "copy on write" feature. (This is needed for the NFSv4.2 clone_blksize attribute.) This patch will allow the implementation of CLONE for NFSv4.2. Reviewed by: asomers Differential Revision: https://reviews.freebsd.org/D51808 --- sys/fs/fuse/fuse_vnops.c | 3 +++ sys/kern/vfs_default.c | 1 + sys/kern/vfs_syscalls.c | 2 +- sys/kern/vfs_vnops.c | 5 +++++ sys/sys/unistd.h | 1 + sys/sys/vnode.h | 17 +++++++++++++---- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index b90ce60ec664..b782146b7278 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -877,6 +877,9 @@ fuse_vnop_copy_file_range(struct vop_copy_file_range_args *ap) pid_t pid; int err; + if ((ap->a_flags & COPY_FILE_RANGE_CLONE) != 0) + return (EXTERROR(ENOSYS, "Cannot clone")); + if (mp == NULL || mp != vnode_mount(outvp)) return (EXTERROR(ENOSYS, "Mount points do not match")); diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index fd6202a1424c..85f67731e1cc 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -457,6 +457,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) case _PC_NAMEDATTR_ENABLED: case _PC_HAS_NAMEDATTR: case _PC_HAS_HIDDENSYSTEM: + case _PC_CLONE_BLKSIZE: *ap->a_retval = 0; return (0); default: diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 9704e9c160a8..c64618036733 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -5058,7 +5058,7 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, error = 0; retlen = 0; - if (flags != 0) { + if ((flags & ~COPY_FILE_RANGE_USERFLAGS) != 0) { error = EINVAL; goto out; } diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 6451c9e07a60..93f87ddae4de 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -3443,6 +3443,11 @@ vn_generic_copy_file_range(struct vnode *invp, off_t *inoffp, interrupted = 0; dat = NULL; + if ((flags & COPY_FILE_RANGE_CLONE) != 0) { + error = ENOSYS; + goto out; + } + error = vn_lock(invp, LK_SHARED); if (error != 0) goto out; diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h index 85ed93fd359d..7ab2f021e408 100644 --- a/sys/sys/unistd.h +++ b/sys/sys/unistd.h @@ -159,6 +159,7 @@ #define _PC_XATTR_ENABLED _PC_NAMEDATTR_ENABLED /* Solaris Compatible */ #define _PC_XATTR_EXISTS _PC_HAS_NAMEDATTR /* Solaris Compatible */ #define _PC_HAS_HIDDENSYSTEM 68 +#define _PC_CLONE_BLKSIZE 69 #endif /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 074769d55c2d..8080e9edd8c3 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -397,8 +397,21 @@ struct vattr { */ #define VLKTIMEOUT (hz / 20 + 1) +/* copy_file_range flags */ +#define COPY_FILE_RANGE_KFLAGS 0xff000000 + +/* + * copy_file_range flags visible to user space. + * Allocate high bits first, to try and avoid conflicting with Linux. + */ +#define COPY_FILE_RANGE_CLONE 0x00800000 /* Require cloning. */ +#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) + #ifdef _KERNEL +/* copy_file_range flags only usable in the kernel */ +#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ + #ifdef MALLOC_DECLARE MALLOC_DECLARE(M_VNODE); #endif @@ -621,10 +634,6 @@ typedef void vop_getpages_iodone_t(void *, vm_page_t *, int, int); #define VN_OPEN_INVFS 0x00000008 #define VN_OPEN_WANTIOCTLCAPS 0x00000010 -/* copy_file_range kernel flags */ -#define COPY_FILE_RANGE_KFLAGS 0xff000000 -#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ - /* * Public vnode manipulation functions. */ From nobody Fri Aug 8 01:11:50 2025 X-Original-To: dev-commits-src-main@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 4bymFz21Fbz63nHZ; Fri, 08 Aug 2025 01:11: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bymFy66Cbz3nyq; Fri, 08 Aug 2025 01:11:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754615510; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qKyRJkQi0CwuJprUpAmlzgP/CjEBSs3832VE80J1FEY=; b=vU1l1ggAkCb/mdox6W/+Z1VV09WCjvlYip8KzM7r3vEthFcsqbigunU+e0DXs0ll66l9A4 dHjWf5UEQqxIgdJX9D9HCPJp/XPw73A4ZG2tWANnNfdhmkYogecTg/VCj/4C1Wx0SE4p1T +1V4yggPL5YnsswCGFpw0xp/bRLIAaVod27lC4Z4IIfTWc1GfwBdBDZIDA033RTy3qm/CX X5Q/UBILTaQjGMpECKEdY5tuK31ORAn71GRk7hUUAReM1OPVcXKyzjO0Yh8I7TQJTJAa3i Bjo0kmUSwecYwTx1kpiJW9Qcmkk/krREQ6WqOROzMZRBYn2O7n4bdnZKzS0Oaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754615510; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qKyRJkQi0CwuJprUpAmlzgP/CjEBSs3832VE80J1FEY=; b=w583Xw7+KgqXAeLeD103jEVqNn9nqSB45HOwgVkJDw8zgpKuhiRDMWMkTT+kc+OlfGj2/k SI0/t7rD83N7Jvi2Y+381g5zCZ44JJNW1yTtNZmevqNlpcpGlsVH8iFmUbAbMX8k+I+LG8 FHztPsoOfHJqydrI/QbgMKr0+atWcpgv6wyeMcW4w5Jn25JwGspmjlh4xFJ/wFfgIIsc37 nYlWW4aB7WhQmXNPl+Ol9Vkl6mj23pCwxOhiBOchJuzkRLERn6dVsZHvlRokMQuaeh2rm2 tk+SZ7njywai4lK4fEvwMRwST0FmN6SfxosM0oY2N1dQyBaMSkbC2oe2AMwDmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754615510; a=rsa-sha256; cv=none; b=KCCVVdiLzuwUYJXaL7zBcVD8USPkook1Xj6M9eyVnrZqfYR6/Q1XMiXL2pMdGx1DFVHxfi iqYKcWqxFEiqbbBP1wBA7sYFBEz+0j1xrRk8U5Ma9AmNQuh3tq2UD88evg2l28nYhTK7Bb Jv53tFO78hH5GW8NI+WM7aco+Q/l9lx7jYBaYhjiIFVYfganJiZcg3vk335+8YvIXx1Ku2 /exf7YJ38wNzvspkt0scI5muOd50+AouYBC/9hc+sQfvI/sBlRu6cUMsK/qcWZbV8tR+KM gtHNxs/BaDFGRU8PodmAZzXPYfhikpQA+B5QCtONFssxqFyUmMeyrUBa2Twirg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bymFy5cXPzZg; Fri, 08 Aug 2025 01:11:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5781Bo50042844; Fri, 8 Aug 2025 01:11:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5781Bog6042841; Fri, 8 Aug 2025 01:11:50 GMT (envelope-from git) Date: Fri, 8 Aug 2025 01:11:50 GMT Message-Id: <202508080111.5781Bog6042841@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 49eba35ce80d - main - RELNOTES: Add an entry for COPY_FILE_RANGE_CLONE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 49eba35ce80d7a2d6c79d616c6eabc2f3bbe0055 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=49eba35ce80d7a2d6c79d616c6eabc2f3bbe0055 commit 49eba35ce80d7a2d6c79d616c6eabc2f3bbe0055 Author: Rick Macklem AuthorDate: 2025-08-08 01:08:18 +0000 Commit: Rick Macklem CommitDate: 2025-08-08 01:08:18 +0000 RELNOTES: Add an entry for COPY_FILE_RANGE_CLONE --- RELNOTES | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/RELNOTES b/RELNOTES index 1ce6731694a2..b7b01aa5ba0f 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,12 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +37b2cb5ecb0f: + Add support to VOP_COPY_FILE_RANGE() for block cloning. + At this time, ZFS is the only local file system that supports + this and only if block cloning is enabled. NFSv4.2 also supports it. + See pathconf(2) and copy_file_range(2) for more information. + 2ec2ba7e232d, df58e8b1506f (openzfs 2957eabbe), f61844833ee8, b1b607bd200f, ee95e4d02dbd: Add Solaris style extended attributes (called named attributes From nobody Fri Aug 8 01:31:48 2025 X-Original-To: dev-commits-src-main@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 4bymj13w4Mz63pyg; Fri, 08 Aug 2025 01:31:49 +0000 (UTC) (envelope-from ivy@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (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 "freefall.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bymj11KN8z498y; Fri, 08 Aug 2025 01:31:49 +0000 (UTC) (envelope-from ivy@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754616709; 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: in-reply-to:in-reply-to:references:references; bh=rGs1cc/dvOE1mWQy7v7g6+bHbSgtNHxYzfabljCafks=; b=wU8sTk7WBko4kyuYN6rFUwwWmD4ipdjkFHcw/BB4cdxoZulJDmzizaoaYTh/0Z/Ws2xgc7 52CnxKrbDtsgo9DqQLKf9dZ1DtQOfh/8RPvX1mrKt2itu0p0ZYcpwh27UVTTvhHakTnJXw PGjCNloc8Y2dOV+L16ZOtMpa/Of05eQi2pCLu50gYTYTEmt79YS2gjcDEdrfkr7tzeei+z XMczKz5iAK9kOQPSkiM9B1RnA1vivE4RdFIdz2O2lmlhnwGJnQd+N3qKiBfFiJCwbhlCOd qqpJwRWjk+RjFKifCoIRPKkzItq3wMtnrYapRyFv2t1ERkPKvXIxY7FXd+MlKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754616709; 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: in-reply-to:in-reply-to:references:references; bh=rGs1cc/dvOE1mWQy7v7g6+bHbSgtNHxYzfabljCafks=; b=FArA9iBHwtTzaFczNOp7vJw46S0edf+hzb2y/BWy4lEB4/YjomrxtExiV6lY4B7OxUWnT7 W31V1PKOaQBOkC2sckyXBI6Ps6orZuul079sWhLqtR2ZQPlocEuV3/+PydLtjNVSPf0Fhv qTk6hl+HTcf+1mR4zGNdLdeffY2pspWcZyC5CQ+ZW7jOzKRNLNk9e095UM5KSUgGUNkl0b fG/Kknd7X9PEVhylaYyzHrbc/VH19N/V9OSJauiJrGK9bCnDemPTCFrTGuMMAc1PdvUauK RDQyEaibMrrVL/+4Pdssv/9L7z4+HhJ3KLMAbdbq/xP/V0MGq6Gbr6k74OyOlA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754616709; a=rsa-sha256; cv=none; b=sBPxoesoOimGz/71QTddfYa5CujekoAdkRu0FL47Iy9I1ZWDDeWyHVsuSOSmYtHzv0cyAC bLhqUiSwC+tghnpM/AE92WfO6Y6PkwDsrPzt/fPiZffoiaOoRc6Ts4TzxMQM6+duKQ7EdZ WMulgFYKBMO+CE3rZegEIbjGXsp8X65vXO8Z6Yam//mvJQEV72KHsWFMgnYqypLIEBw4fM gmm++DLaQwmQILNGNcSLyxrExMeYMqUApD6OFXbJoMCdvUtP6JwBrpRf6VsF8lDPnL8s6G IJLSnonSnl2glQCPhb2D6x/QHcFGPLMhK5JPUnCmHRRLDSuhOAjzp+fzZo00Pg== Received: by freefall.freebsd.org (Postfix, from userid 1532) id 008191771F; Fri, 08 Aug 2025 01:31:48 +0000 (UTC) Date: Fri, 8 Aug 2025 02:31:48 +0100 From: Lexi Winter To: Rick Macklem Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos Message-ID: Mail-Followup-To: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202508072105.577L5nA0081105@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="sELH2o9aY7R45WqZ" Content-Disposition: inline In-Reply-To: <202508072105.577L5nA0081105@gitrepo.freebsd.org> --sELH2o9aY7R45WqZ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Rick Macklem: > It also modifies the Makefile so that the gssd is only built > when MK_KERBEROS_SUPPORT != "no", since it is useless without > Kerberos. currently the init script is conditional on MK_GSSAPI. should this be changed to MK_KERBEROS_SUPPORT as well? (see libexec/rc/rc.d/Makefile) --sELH2o9aY7R45WqZ Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQSyjTg96lp3RifySyn1nT63mIK/YAUCaJVTgQAKCRD1nT63mIK/ YEH1AP9R3vt2KpYCT5iEVhH3hAp+JC0Mg6DBSmtpXVtBnXYj8gEA2P6fSvalUpF+ 1czPUDXA28o89uFgQ8XAFyGkSYV2DA0= =Ml+/ -----END PGP SIGNATURE----- --sELH2o9aY7R45WqZ-- From nobody Fri Aug 8 01:50:43 2025 X-Original-To: dev-commits-src-main@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 4byn763kjwz63rxr; Fri, 08 Aug 2025 01:50:58 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byn756270z4Djg; Fri, 08 Aug 2025 01:50:57 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=PRj5Defd; spf=pass (mx1.freebsd.org: domain of rick.macklem@gmail.com designates 2a00:1450:4864:20::62d as permitted sender) smtp.mailfrom=rick.macklem@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-ae6f8d3bcd4so316119166b.1; Thu, 07 Aug 2025 18:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754617855; x=1755222655; darn=freebsd.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=PKUo1f2T05u2JfsaiiFn8sggKbax5CVUxOYRRqgAmII=; b=PRj5DefdvwtJtRDb8KL9KDlxKFvuO35L/zj2ZtlLS3MtifbHgr/hObt7S5E4uMLoFA pTTPOVJKj4Yz1wTqCLAynZO7Y+rM8J7yQjb7sY6wprf7mBfAc8VeSGYsRVXeNgWOG/l8 0aYeOXsHEhRwqc+z6QoK7/g2IqGECq6MIKEx9tsNwDCQf2feH6jgEStu+WseNyuAK6qa /852k5JERu/ufeppbMpKmqLDnhsAyV/l1sNwkCMzNtv6be9xBtBpkOw9OAFQp3RL+7cd WkoTVQGmGqP0NQepDu85pksG++vW0PNcBztdRc8nXCXRdtEwsiYPgLNc8iiKyOUHZxoX GMkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754617855; x=1755222655; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PKUo1f2T05u2JfsaiiFn8sggKbax5CVUxOYRRqgAmII=; b=IV0BxEldyl9588w2OXGGf8vgIrxDvH7DxjhnrYj0/uzOjGL29xaK73LIXqFtG0NXEc HHmU5kNNAPuLkjZ+Imsnc9IviK+LZ6SNWuIBqhW5rBM72728DHt1vrQ75NawQJLcNimc jsdYvRFmbogF8HiHRUWinpOlEbc3gUcyfGztnCBJojhc9vi3X06xu6uA+PYEZgT0iOaQ N9XKdHxFOc01ZH/INWRlOuz3+7WJj/Bzxf547flC1OsSCdWFHLS1+iBjcEfZvJ0O0V/D r4+cCVfn6mSDoh+0wYlGo7Lz0JZwP7sX53kfg/1Q6Sl3BOCNfJPTZAqvozOoDkAeSu7W V9Fg== X-Forwarded-Encrypted: i=1; AJvYcCURuERBVOpS4fiJIXnjacdNLAVBYdW2Sb/jCqQFtiI2ZPvuaztDpN0w12rJopAE8Tnd2Aob6dnPM0LHK7ZpBW2Gr2QQ0sQ=@freebsd.org, AJvYcCUZGhpgOMbYYAMmJYQy85tZZafvfdvDeVLaa5XCQsrhkvRHUV/pFzgwGVmZPYU3HtlZb3fH+/5M3fZYvkhLtI4=@freebsd.org, AJvYcCXMoA0D4Edr1zSlVz1PHMhQS/G03t2a8qO2TxT8PKzKAy6gukxrZDgkdFS2ahUTe3h7IhkLXPMb+9O7wWm0qxhgK7GQ@freebsd.org X-Gm-Message-State: AOJu0YxdULoHTj84y4Uy7a8lDYJRHeDVaGJHM7ZCewhqmnTyzWn5I/BK ogQsy9dGvQMefdDUPXPguvJXly4BlKBlb0Cb1nKHEnOFtCZ2P2AxdN8qPhJvqRNfJfgwo+3FYgF 3wkVM4r+9SzMi+6EU4QTx854IYCHZejB6AMM= X-Gm-Gg: ASbGncvQAZpfrWiDdiDh8LLbMgG9Grn12yWeXEZP4q7nslz+HimYvgueNmULiF0U3Ok ofP+gQPvy2TzhC5Z18XDPRwiXTvhB5no8UHPSbHqW4Yqf94CkBDehX9tCfjsUykeVFPpZqv7zvn liqNoqvyoTXbKhmUD2GqThFpqfTPHv96et0iefSrbX++xxLZLUZS2bnr6R+GSjzzOufw4qBLo4R bBOyNTf23UkQWrau/8GjcvOBhT+dfXhghgfcjk= X-Google-Smtp-Source: AGHT+IGWzHRQS/ccBySaeEKL2lp73xuYQQAxeBmQzCs7SzulGxAvOIKulIiQoRVdXmlCizdu6PIVhH7iJIAjz9EXZO4= X-Received: by 2002:a17:907:3e1e:b0:ae2:a7aa:7efe with SMTP id a640c23a62f3a-af9c6516ea5mr113784566b.58.1754617854748; Thu, 07 Aug 2025 18:50:54 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508072105.577L5nA0081105@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Thu, 7 Aug 2025 18:50:43 -0700 X-Gm-Features: Ac12FXyPmfhTw50fCgNJKyumexIGNnulw__saSxf-SdYKHY7Rhk5CISHkr1lRzE Message-ID: Subject: Re: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos To: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; FREEMAIL_FROM(0.00)[gmail.com]; TAGGED_FROM(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::62d:from]; MID_RHS_MATCH_FROMTLD(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_ONE(0.00)[1]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; MISSING_XM_UA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com] X-Rspamd-Queue-Id: 4byn756270z4Djg X-Spamd-Bar: --- On Thu, Aug 7, 2025 at 6:33=E2=80=AFPM Lexi Winter wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > > > ---------- Forwarded message ---------- > From: Lexi Winter > To: Rick Macklem > Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-comm= its-src-main@freebsd.org > Bcc: > Date: Fri, 8 Aug 2025 02:31:48 +0100 > Subject: Re: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that = it can use MIT Kerberos > Rick Macklem: > > It also modifies the Makefile so that the gssd is only built > > when MK_KERBEROS_SUPPORT !=3D "no", since it is useless without > > Kerberos. > > currently the init script is conditional on MK_GSSAPI. should this be > changed to MK_KERBEROS_SUPPORT as well? (see libexec/rc/rc.d/Makefile) No idea. The change looks like: .if ${MK_KERBEROS_SUPPORT} !=3D "no" SUBDIR.${MK_GSSAPI}+=3D gssd .endif I think that means it depends on both of them. (To be honest, I doubt anyone ever fiddles with MK_GSSAPI?) I think that, long ago, someone thought there might be a use for the gssd when Kerberos isn't being used (in theory there can be other mechanisms, but Kerberos is the only one ever implemented). rick From nobody Fri Aug 8 04:27:17 2025 X-Original-To: dev-commits-src-main@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 4byrbT5f7Kz647yS; Fri, 08 Aug 2025 04:27: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byrbT4wv5z3Q4b; Fri, 08 Aug 2025 04:27:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hL5JNI4oZngKN84HPMbrZ+LT2nJZ8Qqx2yN/QUB4nhM=; b=lDjQIqLBayC2rIXyGeHT0NYSPkH6BTIHcEfDwKUcJR/5BWisWqtpGwtz6KQLSkeXGDXlN1 Bar4JvyQa0xfOmT7jSuHtkkOxFKho6LCzX5SPx58Ux9QT6pRVf1TzNUtAqA91HgjNbqw9N FUZLuam5iNL1eU41aS2KBqgJkn7mSeWd7VE4tvdcSETkle8GzYOZWGSaKlquaRAqo0RmX5 Nger7DEBGoXT22fNpxtUqgX1gMhVcaQTtcu7ii144CJtFISSu3KAsIUd0+9lSZ/vEaPyog IjIEFIdKXXPwHQIaJbiBz2k2Nhc0f1PyEQpxVrE2VaI9zWPxkRp8lKsR+WnoSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hL5JNI4oZngKN84HPMbrZ+LT2nJZ8Qqx2yN/QUB4nhM=; b=CFp+Ce0iK0P59iKCbEJZGqFqQX49WDC/aPeTYRwGvUC9P1xEhTlwZ1zfqPWVkLKupn0wlD v4aIfEHsjo2f72bpdL+pa1eWfl3KgqhIUT5YlG9iRluVsPR50FN+2NdPk+oeLlbeZwbJ6g kEblGmBiLXhmiH4tNn3eMwU9xQInf2LESJAn8I9XGIMjr0h15sxyIBcajVBIz3H4JSgywy ZX5E5zQH+MEY1uAkkXejaGqxr0J319FMLhqEBYqfGhucr3bNW1a38kGQ3p2YQ/kCOJO3oK N+kl5mW8ajSJquPi9WE1izFP5j9SMG8AVhmHHp7T2EU2Bx408a0zcq83L7pLiw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754627237; a=rsa-sha256; cv=none; b=X5ci7P1+npXZ2tt822KR1Gn551c7O3eE18naCH3zjcEflXO8s/dVeAFQ13rQLI1CxbP1gu 9jEq5p1fbTblze0P6R2bwdkiVvspocUuWh1VhmVoOaAtisskngtnUfkVPcjT9GKFqdPFj2 VjxJ87MFS5WddHOi7plapRpaPD5oSl+8sDU7PrnGT87WCiW5uhe0VaxjEfm60Nw31dazlj 51HM36oprlvzU7/+n1D8fgOZj5OKeMCTzKCQsREsFKG/vjRvAh7IiRmDUzHSvTdYyW/Doz gyem/ZaD8MUGwqa03MMghtaVL8sHmhtkZZ8x0TPzsxXYzIUBlq51oaYJfFjd9w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byrbT4X02z5Ng; Fri, 08 Aug 2025 04:27:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5784RHKm005150; Fri, 8 Aug 2025 04:27:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5784RHLE005147; Fri, 8 Aug 2025 04:27:17 GMT (envelope-from git) Date: Fri, 8 Aug 2025 04:27:17 GMT Message-Id: <202508080427.5784RHLE005147@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 58c92776d158 - main - jail: separate "statically valid allow flags" from "prison0 allow flags" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 58c92776d1580717934e29ca2c0ef9bf2fbb7397 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=58c92776d1580717934e29ca2c0ef9bf2fbb7397 commit 58c92776d1580717934e29ca2c0ef9bf2fbb7397 Author: Kyle Evans AuthorDate: 2025-08-08 04:26:51 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 04:26:51 +0000 jail: separate "statically valid allow flags" from "prison0 allow flags" The current setup means that we can't add an allow flag in sys/jail.h that's disabled by default without removing it from the pr_flags assignment in kern_jail.c. That's technically fine, but I think it's better to make it more prevalent at the PR_ALLOW_* definition site so that it's top-of-mind when adding a new flag. This is a preparatory change for adding an allow flag that prison0 will also have disabled by default, but with an allow.* knob and sysctl to enable it. Reviewed by: jamie Differential Revision: https://reviews.freebsd.org/D51656 --- sys/kern/kern_jail.c | 5 ++++- sys/sys/jail.h | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 7ef1d19f0ea8..14e6e735f8e7 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -115,8 +115,11 @@ struct prison prison0 = { #else .pr_flags = PR_HOST|_PR_IP_SADDRSEL, #endif - .pr_allow = PR_ALLOW_ALL_STATIC, + .pr_allow = PR_ALLOW_PRISON0, }; +_Static_assert((PR_ALLOW_PRISON0 & ~PR_ALLOW_ALL_STATIC) == 0, + "Bits enabled in PR_ALLOW_PRISON0 that are not statically reserved"); + MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF); struct bool_flags { diff --git a/sys/sys/jail.h b/sys/sys/jail.h index 24c420e2c976..efe5e3ee8db7 100644 --- a/sys/sys/jail.h +++ b/sys/sys/jail.h @@ -260,7 +260,15 @@ struct prison_racct { #define PR_ALLOW_ADJTIME 0x00080000 #define PR_ALLOW_SETTIME 0x00100000 #define PR_ALLOW_ROUTING 0x00200000 + +/* + * PR_ALLOW_PRISON0 are the allow flags that we apply by default to prison0, + * while PR_ALLOW_ALL_STATIC are all of the allow bits that we have allocated at + * build time. PR_ALLOW_ALL_STATIC should contain any bit above that we expect + * to be used on the system, while PR_ALLOW_PRISON0 will be some subset of that. + */ #define PR_ALLOW_ALL_STATIC 0x003f87ff +#define PR_ALLOW_PRISON0 (PR_ALLOW_ALL_STATIC) /* * PR_ALLOW_DIFFERENCES determines which flags are able to be From nobody Fri Aug 8 04:27:18 2025 X-Original-To: dev-commits-src-main@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 4byrbW09Gkz648By; Fri, 08 Aug 2025 04:27:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byrbV6F9Nz3QKt; Fri, 08 Aug 2025 04:27:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=g9E2kS9Dq8z9qhXozsf59nKnlHanS8UdasPC7v0N3G8=; b=nNvyLdgpZtJlxbRufO8f780+1IiogU1pmhdxNfn0rZiFyYLr/VHed31xHxQ+4860JOn7Hp qac22fkyxVb81T+kE3I9wnHSk3eMfUh4o6bOf7q1Zfq02xmbrSPFWmHgcjO314Uu59Srjc qrp4tzZQabWtVpxsUn7tXEgvjOnJAira1wcwLR9MSFyax5rrelJvvD2HaGJj4ZUCRa8k36 EaXpZOdm6bZhGObPA6CObmEyym6KLv/alZ245WAlGvgeBxH/QKFi19KOKq6X/GUmStn3wd VeOGlueSAoi/GXJ6kk3IU4iWXHHEnuhqF5t6sgV9jv/pBfypcF/1LPkcFcirNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=g9E2kS9Dq8z9qhXozsf59nKnlHanS8UdasPC7v0N3G8=; b=ZMQ1KK0BcZWMCL2snQK7xSrKfFbf7EZ0QjWpIRbu0t2pK38hZjqVwGeB3HU+M8+kDeo1VG hSy2Ox1m9Zosh17jAT9gVCe3XPTJ/u3k8Fpz6Qbsvfa5fuWqyQT7XGaI5Tykb60TYEEHTZ heJWFI0PxXby9AAFVZyGwxaDXZSQduWuuFyCjOt80bLbq2S7JKyxYGFHbHMBU8dQh8grbj ReH07MYn0IlNEtvffi7ZW/z+X30xcLQEFl1nvrETSoOecvI6mLmQGqcic3b1vx1CTwSGzT 7DFok9fdzdlQBPyFpRU364+rz8ddCDalca/CSMIqtlsboYXdDqSaa+9JRCzBEQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754627238; a=rsa-sha256; cv=none; b=gECwTlqY1oNGiQerQCUfEuH76K/1z26J+J4K8wUavZhOkMoFkpgj1sbNVcn5TZNp6iH2kP nZMXvOUApwPzqY7LcLiLae8HNmnVnG0Qq1vjc02kluwc0ldJdD7PJAiSNFsucHSwiI4toQ coPWA1TIHSRK20wz6khQzdEQro0Aw3plcS7+6UEYGqJrskQ8ht1stGXLivAuG8aGeqMuze tEC8vvY/CDZErU0+RHSy8jfDLo9/H2pvFVWB/wA3L8sAQcrSAy2zuXBZgJUITJROZe0h9N 1jnxD0T5Gn+Mgo6MpFSol5k5JNXMRkiLizhZsHtGaaaQBVx+Ag1QqFREBCaSzQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byrbV5YpWz5Sv; Fri, 08 Aug 2025 04:27:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5784RIGF005182; Fri, 8 Aug 2025 04:27:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5784RI42005179; Fri, 8 Aug 2025 04:27:18 GMT (envelope-from git) Date: Fri, 8 Aug 2025 04:27:18 GMT Message-Id: <202508080427.5784RI42005179@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 8a5ceebece03 - main - kern: disallow user scheduling/debugging/signalling of jailed procs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8a5ceebece0311bc41180b3ca0ce7237def1e253 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=8a5ceebece0311bc41180b3ca0ce7237def1e253 commit 8a5ceebece0311bc41180b3ca0ce7237def1e253 Author: Kyle Evans AuthorDate: 2025-08-08 04:26:51 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 04:26:51 +0000 kern: disallow user scheduling/debugging/signalling of jailed procs Currently, jails are generally ignored when determining whether the current process/thread can take action upon another, except to determine if the target's jail is somewhere in the source's hierarchy. Notably, uid 1001 in a jail (including prison0) can take action upon a process run by uid 1001 inside of a subordinate jail by default. While this could be considered a feature at times, it is a scenario that really should be deliberately crafted; there is no guarantee that uid 1001 in the parent jail is at all related to uid 1001 in a subordinate. This changes introduces three new privileges that grant a process this kind of insight into other jails: - PRIV_DEBUG_DIFFJAIL - PRIV_SCHED_DIFFJAIl - PRIV_SIGNAL_DIFFJAIL These can be granted independently or in conjunction with the accompanying *_DIFFCRED privileges, i.e.: - PRIV_DEBUG_DIFFCRED alone will let uid 1001 debug uid 1002, but PRIV_DEBUG_DIFFJAIL is additionally needed to let it debug uid 1002 in a jail. - PRIV_DEBUG_DIFFJAIL alone will let uid 1001 debug uid 1001 in a jail, but will not allow it to debug uid 1002 in a jail. Note that security.bsd.see_jail_proc can be used for similar effects, but does not prevent a user from learning the pid of a jailed process with matching creds and signalling it or rescheduling it (e.g., cpuset). Debugging is restricted by visibility in all cases, so that one is less of a concern. This change adds a new jail(8) parameter for the parent to indicate on a per-jail basis if its users are open to being tampered with by the parent's unprivileged users: allow.unprivileged_parent_tampering. This is disabled by default, but may be enabled to bypass the new priv(9) checks in some scenarios where the functionality is useful. For development setups that involve regularly debugging jailed processes from outside the jail, consider adding a default `allow.unprivileged_parent_tampering;` to your /etc/jail.conf. This may get MFC'd in the future with the default flipped to preserve pre-existing behavior but allow opt-in for the new position sooner. Reviewed by: jamie Differential Revision: https://reviews.freebsd.org/D51645 --- sys/kern/kern_jail.c | 10 ++++++++++ sys/kern/kern_prot.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sys/sys/jail.h | 9 ++++++--- sys/sys/priv.h | 3 +++ usr.sbin/jail/jail.8 | 8 +++++++- 5 files changed, 82 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 14e6e735f8e7..7c9a15ae18f3 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -235,6 +235,9 @@ static struct bool_flags pr_flag_allow[NBBY * NBPW] = { {"allow.adjtime", "allow.noadjtime", PR_ALLOW_ADJTIME}, {"allow.settime", "allow.nosettime", PR_ALLOW_SETTIME}, {"allow.routing", "allow.norouting", PR_ALLOW_ROUTING}, + {"allow.unprivileged_parent_tampering", + "allow.nounprivileged_parent_tampering", + PR_ALLOW_UNPRIV_PARENT_TAMPER}, }; static unsigned pr_allow_all = PR_ALLOW_ALL_STATIC; const size_t pr_flag_allow_size = sizeof(pr_flag_allow); @@ -4009,6 +4012,7 @@ prison_priv_check(struct ucred *cred, int priv) case PRIV_DEBUG_DIFFCRED: case PRIV_DEBUG_SUGID: case PRIV_DEBUG_UNPRIV: + case PRIV_DEBUG_DIFFJAIL: /* * Allow jail to set various resource limits and login @@ -4046,8 +4050,10 @@ prison_priv_check(struct ucred *cred, int priv) */ case PRIV_SCHED_DIFFCRED: case PRIV_SCHED_CPUSET: + case PRIV_SCHED_DIFFJAIL: case PRIV_SIGNAL_DIFFCRED: case PRIV_SIGNAL_SUGID: + case PRIV_SIGNAL_DIFFJAIL: /* * Allow jailed processes to write to sysctls marked as jail @@ -4691,6 +4697,10 @@ SYSCTL_JAIL_PARAM(_allow, read_msgbuf, CTLTYPE_INT | CTLFLAG_RW, "B", "Jail may read the kernel message buffer"); SYSCTL_JAIL_PARAM(_allow, unprivileged_proc_debug, CTLTYPE_INT | CTLFLAG_RW, "B", "Unprivileged processes may use process debugging facilities"); +SYSCTL_JAIL_PARAM(_allow, unprivileged_parent_tampering, + CTLTYPE_INT | CTLFLAG_RW, "B", + "Unprivileged parent jail processes may tamper with same-uid processes" + " (signal/debug/cpuset)"); SYSCTL_JAIL_PARAM(_allow, suser, CTLTYPE_INT | CTLFLAG_RW, "B", "Processes in jail with uid 0 have privilege"); #ifdef VIMAGE diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index bbb622547598..2cd5b7069023 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1913,6 +1913,38 @@ cr_canseejailproc(struct ucred *u1, struct ucred *u2) return (ESRCH); } +/* + * Determine if u1 can tamper with the subject specified by u2, if they are in + * different jails and 'unprivileged_parent_tampering' jail policy allows it. + * + * May be called if u1 and u2 are in the same jail, but it is expected that the + * caller has already done a prison_check() prior to calling it. + * + * Returns: 0 for permitted, EPERM otherwise + */ +static int +cr_can_tamper_with_subjail(struct ucred *u1, struct ucred *u2, int priv) +{ + + MPASS(prison_check(u1, u2) == 0); + if (u1->cr_prison == u2->cr_prison) + return (0); + + if (priv_check_cred(u1, priv) == 0) + return (0); + + /* + * Jails do not maintain a distinct UID space, so process visibility is + * all that would control an unprivileged process' ability to tamper + * with a process in a subjail by default if we did not have the + * allow.unprivileged_parent_tampering knob to restrict it by default. + */ + if (prison_allow(u2, PR_ALLOW_UNPRIV_PARENT_TAMPER)) + return (0); + + return (EPERM); +} + /* * Helper for cr_cansee*() functions to abide by system-wide security.bsd.see_* * policies. Determines if u1 "can see" u2 according to these policies. @@ -2062,6 +2094,19 @@ cr_cansignal(struct ucred *cred, struct proc *proc, int signum) return (error); } + /* + * At this point, the target may be in a different jail than the + * subject -- the subject must be in a parent jail to the target, + * whether it is prison0 or a subordinate of prison0 that has + * children. Additional privileges are required to allow this, as + * whether the creds are truly equivalent or not must be determined on + * a case-by-case basis. + */ + error = cr_can_tamper_with_subjail(cred, proc->p_ucred, + PRIV_SIGNAL_DIFFJAIL); + if (error) + return (error); + return (0); } @@ -2138,6 +2183,12 @@ p_cansched(struct thread *td, struct proc *p) if (error) return (error); } + + error = cr_can_tamper_with_subjail(td->td_ucred, p->p_ucred, + PRIV_SCHED_DIFFJAIL); + if (error) + return (error); + return (0); } @@ -2258,6 +2309,11 @@ p_candebug(struct thread *td, struct proc *p) return (error); } + error = cr_can_tamper_with_subjail(td->td_ucred, p->p_ucred, + PRIV_DEBUG_DIFFJAIL); + if (error) + return (error); + /* Can't trace init when securelevel > 0. */ if (p == initproc) { error = securelevel_gt(td->td_ucred, 0); diff --git a/sys/sys/jail.h b/sys/sys/jail.h index efe5e3ee8db7..0ad80ec53157 100644 --- a/sys/sys/jail.h +++ b/sys/sys/jail.h @@ -260,6 +260,7 @@ struct prison_racct { #define PR_ALLOW_ADJTIME 0x00080000 #define PR_ALLOW_SETTIME 0x00100000 #define PR_ALLOW_ROUTING 0x00200000 +#define PR_ALLOW_UNPRIV_PARENT_TAMPER 0x00400000 /* * PR_ALLOW_PRISON0 are the allow flags that we apply by default to prison0, @@ -267,14 +268,16 @@ struct prison_racct { * build time. PR_ALLOW_ALL_STATIC should contain any bit above that we expect * to be used on the system, while PR_ALLOW_PRISON0 will be some subset of that. */ -#define PR_ALLOW_ALL_STATIC 0x003f87ff -#define PR_ALLOW_PRISON0 (PR_ALLOW_ALL_STATIC) +#define PR_ALLOW_ALL_STATIC 0x007f87ff +#define PR_ALLOW_PRISON0 \ + (PR_ALLOW_ALL_STATIC & ~(PR_ALLOW_UNPRIV_PARENT_TAMPERING)) /* * PR_ALLOW_DIFFERENCES determines which flags are able to be * different between the parent and child jail upon creation. */ -#define PR_ALLOW_DIFFERENCES (PR_ALLOW_UNPRIV_DEBUG) +#define PR_ALLOW_DIFFERENCES \ + (PR_ALLOW_UNPRIV_DEBUG | PR_ALLOW_UNPRIV_PARENT_TAMPER) /* * OSD methods diff --git a/sys/sys/priv.h b/sys/sys/priv.h index 1f73877ab450..9c493629f7cf 100644 --- a/sys/sys/priv.h +++ b/sys/sys/priv.h @@ -115,6 +115,7 @@ #define PRIV_DEBUG_SUGID 81 /* Exempt debugging setuid proc. */ #define PRIV_DEBUG_UNPRIV 82 /* Exempt unprivileged debug limit. */ #define PRIV_DEBUG_DENIED 83 /* Exempt P2_NOTRACE. */ +#define PRIV_DEBUG_DIFFJAIL 84 /* Exempt debugging other jails. */ /* * Dtrace privileges. @@ -193,6 +194,7 @@ #define PRIV_SCHED_CPUSET 206 /* Can manipulate cpusets. */ #define PRIV_SCHED_CPUSET_INTR 207 /* Can adjust IRQ to CPU binding. */ #define PRIV_SCHED_IDPRIO 208 /* Can set idle time scheduling. */ +#define PRIV_SCHED_DIFFJAIL 209 /* Exempt scheduling other jails. */ /* * POSIX semaphore privileges. @@ -204,6 +206,7 @@ */ #define PRIV_SIGNAL_DIFFCRED 230 /* Exempt signalling other users. */ #define PRIV_SIGNAL_SUGID 231 /* Non-conserv signal setuid proc. */ +#define PRIV_SIGNAL_DIFFJAIL 232 /* Exempt signalling other jails. */ /* * Sysctl privileges. diff --git a/usr.sbin/jail/jail.8 b/usr.sbin/jail/jail.8 index dd7b91d5cefa..421aa9babb4c 100644 --- a/usr.sbin/jail/jail.8 +++ b/usr.sbin/jail/jail.8 @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 11, 2025 +.Dd August 7, 2025 .Dt JAIL 8 .Os .Sh NAME @@ -686,6 +686,12 @@ in the file outside of the jails. .It Va allow.reserved_ports The jail root may bind to ports lower than 1024. +.It Va allow.unprivileged_parent_tampering +Unprivileged processes in the jail's parent may tamper with processes of the +same UID in the jail. +This includes the ability to signal, debug, and +.Xr cpuset 1 +processes that belong to the jail. .It Va allow.unprivileged_proc_debug Unprivileged processes in the jail may use debugging facilities. .It Va allow.suser From nobody Fri Aug 8 04:36:00 2025 X-Original-To: dev-commits-src-main@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 4byrnX4jqjz648xl; Fri, 08 Aug 2025 04:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byrnX3x8rz3RGt; Fri, 08 Aug 2025 04:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w4uGJhM783ygQJJH2PRvoeASqZlW9iMuzLbgD8vi8FI=; b=cJC4gn7SUk047rm7bWvsR1AdWOsq7Gt8AVg/Uo9EIGaaYxiUG5NmCk+d5zwvvrCpH33xX3 Avw4obzjPwonpR7YYDgeBY8E4dgm8pD9xn3riEH1Q3k45LZ4oQGRaem+NiHVQwkBuqFf49 rfPok4PZXmA/el/TN3oN/sdFVe5TttR0kYvn7a8GCru0hcbE37HnM+PtbkhtdGg3D9fTSX ZjRXghvYqfUXOObHk8G9jWziqH2E57rGf/Y3gXLkTuNO/+zdrtqeenIUUWrsn6EqMwQgBE 219zLEQlz2uFXrCH1QOCHBgFAi3pwMk/IlLMjCPrVyeUq2O1Y2TisnNgR+euMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w4uGJhM783ygQJJH2PRvoeASqZlW9iMuzLbgD8vi8FI=; b=ZIDAVSQ5ZQW26J2cdFfLVIO2TFXB9K/GusxWieWOAY8xzGDa9pxma21PwEBpbe4XqlVwZQ oyyeqV8VPrpFvEb3BKcVdz0kwhIdnUCLtCtoPGv5l6tBN0B0+hUX1l71o/tbG7c6btKY3O GzH7MySZTF/omiwki8kfqzHCWseNoR+9M2pB91HgayrTxuHc7Fo936zBkXH9CyWgd76Z6u TiFr5T5kWN9eZai0t8zH/2u+6q6KrcN3dojw6Ix0x9E/wuHJpyU1W6BLfEFSRbfblvthSx nAUNiQfrWIU4p93aO8pPRiz8KsIeIl37Lskcle6BvJ9/Ve2R5/cYIRL/TH7KKA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754627760; a=rsa-sha256; cv=none; b=C0B7FiTdFBmm+lRFIQBM50rzi9yuyB/ZFpAqs4HkTMDpdDTpM9Bcto9slgJhdH9LOFDb9N PZVsdBZRE5DeV5/GZ1NoK3rvmc5QxK2lbakbnPzJoi63OFTQDGM6N7YBPfFMsWHxecJYxR RL5DDvvDZHCUhmPv4krmsdUJ4fsOvGK8LcGkxaEz81yvqzwkLvBXJ3SVnWFFr5LOCl/zaD YtrNy2GEPl849wiRF5bAn/f9c5pS/9ESYk/aJ8adICTJ1nnqi3HTQwuBgwk7paYmbVo+y4 dTSh7VjP/4GQnhYsbroFwoyBI8PVYK7UOdtOUSLIef8C35bY36luTswLpFTukg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byrnX3WB3z5lr; Fri, 08 Aug 2025 04:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5784a0Qa022954; Fri, 8 Aug 2025 04:36:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5784a0vf022951; Fri, 8 Aug 2025 04:36:00 GMT (envelope-from git) Date: Fri, 8 Aug 2025 04:36:00 GMT Message-Id: <202508080436.5784a0vf022951@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: bd21c672a868 - main - jail.h: fix the build List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bd21c672a868f039edb109b73757ad560252ca0f Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bd21c672a868f039edb109b73757ad560252ca0f commit bd21c672a868f039edb109b73757ad560252ca0f Author: Kyle Evans AuthorDate: 2025-08-08 04:34:42 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 04:34:42 +0000 jail.h: fix the build A local change that fixed this got lost somewhere; unbreak the build. Pointy hat: kevans Fixes: 8a5ceebece0 ("kern: disallow user scheduling/ [...]") --- sys/sys/jail.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/jail.h b/sys/sys/jail.h index 0ad80ec53157..d2655c52e832 100644 --- a/sys/sys/jail.h +++ b/sys/sys/jail.h @@ -270,7 +270,7 @@ struct prison_racct { */ #define PR_ALLOW_ALL_STATIC 0x007f87ff #define PR_ALLOW_PRISON0 \ - (PR_ALLOW_ALL_STATIC & ~(PR_ALLOW_UNPRIV_PARENT_TAMPERING)) + (PR_ALLOW_ALL_STATIC & ~(PR_ALLOW_UNPRIV_PARENT_TAMPER)) /* * PR_ALLOW_DIFFERENCES determines which flags are able to be From nobody Fri Aug 8 04:36:34 2025 X-Original-To: dev-commits-src-main@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 4byrpD3200z648rc; Fri, 08 Aug 2025 04:36:36 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byrpD2Ct8z3RJZ; Fri, 08 Aug 2025 04:36:36 +0000 (UTC) (envelope-from kevans@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tEdHlPCjf2GflT4Tq3AqawWYvLIbzkuj4b9Lfz6rJZo=; b=Rxjo98wrbqWO/uQMxqlcMlMT89H1VbIHxW4BaiPIae1i/KWi54r6D/wokhbDsUcEY/Ml/p aAkkmoQEVKpl/LsVhnJDqjG7ccxjBGky+tqXjvPVG+rBc1eEexaz4e5K7vsRbjL8tbWssZ QhcXvtaiOeGHRF2ZhC7uP+nrCeRQb8/+aWvRjs0DBAMbThuYVhE48vq/+aBd3ftmb3VoxA N79tCPNi4MO4zvbLaSHlAia7BBjljH0xZoUjRWK5tSZ/rzSenVsN+m3D/xzLW5roDllxpB aWXRjGcI3SAgpr/Qgz5J7JNtDIBh1l2aQNTnTdIOBNVAjziiwWvrXXTrzQiDqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754627796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tEdHlPCjf2GflT4Tq3AqawWYvLIbzkuj4b9Lfz6rJZo=; b=L45x9oYEhKquWAHR82FIsVFkHuhnIKvk100WBBYJJlqlrUgvbZmpHBFREjlLs2dQO5WPFE R1TUhd4W6THvD11bgyu0phdn//KS7pybN5YF5mwLDlSMZmHxQ10YWy9JhZE5r7ZKe36iDO cFScZB3LRXYY/itl2+YaIsUpCMXzaQDZ4xA7MC6HfS/x4UPED9+b92Z0C0hKvNAnx0UNBM yryeAtRsnMS1bTOabE3tI2HKwb7Y5p5n8hM2FlXKcZpyLaGG4ACmlJkOCZO4hK2SWapyEB WgveIIxsMURaS/hX1rSu/2kF7cs0jLrxo8SFcYsgqXPb0TKHkXupn1hRlOAhPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754627796; a=rsa-sha256; cv=none; b=pPlOUIdf+y4AukNMvytZfE5ylTsagcAF8Djte+EgTp6/RaBgldBDUqudJ3cK1T6OJCvOsF A6nqT3KJdWnpfT9d2p0BVWWj0ijlpfy0ge+VPwrRr1aQCAggoLtw7nBl5Tj4KQJFYuPXd8 z0oNlFGJQ988qTaGJi1wFwKOhmCLhC3PFaJL3Dx3OcqF/vUs5X8JIQu5Nkl+tCtTPLeBmv YEB3x9gkFqOYkxCmLgNow6/0u9SLeVIN+z1ahi70wtQB8dqo9GsdmXJBIckRyYe2oB3MZu 09tsX9F+UTXZaU6USmrA6kv3s+GJg7Bk0zb/8zJzCCCMB/fUqE5AyJW7IdM38A== Received: from [10.9.4.95] (unknown [209.182.120.176]) (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: kevans/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4byrpC6V3wz50l; Fri, 08 Aug 2025 04:36:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Message-ID: <9fa64be6-988d-4d04-ada2-91a5b627ad56@FreeBSD.org> Date: Thu, 7 Aug 2025 23:36:34 -0500 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 8a5ceebece03 - main - kern: disallow user scheduling/debugging/signalling of jailed procs From: Kyle Evans To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202508080427.5784RI42005179@gitrepo.freebsd.org> Content-Language: en-US In-Reply-To: <202508080427.5784RI42005179@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/7/25 23:27, Kyle Evans wrote: > The branch main has been updated by kevans: > > URL: https://cgit.FreeBSD.org/src/commit/?id=8a5ceebece0311bc41180b3ca0ce7237def1e253 > > commit 8a5ceebece0311bc41180b3ca0ce7237def1e253 > Author: Kyle Evans > AuthorDate: 2025-08-08 04:26:51 +0000 > Commit: Kyle Evans > CommitDate: 2025-08-08 04:26:51 +0000 > > kern: disallow user scheduling/debugging/signalling of jailed procs > > Currently, jails are generally ignored when determining whether the > current process/thread can take action upon another, except to determine > if the target's jail is somewhere in the source's hierarchy. Notably, > uid 1001 in a jail (including prison0) can take action upon a process > run by uid 1001 inside of a subordinate jail by default. > > While this could be considered a feature at times, it is a scenario > that really should be deliberately crafted; there is no guarantee that > uid 1001 in the parent jail is at all related to uid 1001 in a > subordinate. > > This changes introduces three new privileges that grant a process > this kind of insight into other jails: > > - PRIV_DEBUG_DIFFJAIL > - PRIV_SCHED_DIFFJAIl > - PRIV_SIGNAL_DIFFJAIL > > These can be granted independently or in conjunction with the > accompanying *_DIFFCRED privileges, i.e.: > > - PRIV_DEBUG_DIFFCRED alone will let uid 1001 debug uid 1002, but > PRIV_DEBUG_DIFFJAIL is additionally needed to let it debug uid 1002 > in a jail. > > - PRIV_DEBUG_DIFFJAIL alone will let uid 1001 debug uid 1001 in a jail, > but will not allow it to debug uid 1002 in a jail. > > Note that security.bsd.see_jail_proc can be used for similar effects, > but does not prevent a user from learning the pid of a jailed process > with matching creds and signalling it or rescheduling it (e.g., cpuset). > Debugging is restricted by visibility in all cases, so that one is less > of a concern. > Sorry, I didn't rewrite this part of the message enough. As of olce@'s more recent changes in the area, visibility does in-fact restrict these actions, but it's useful to provide this additional level of control so that one doesn't have to apply that level of hammer to restrict interactions. > > This change adds a new jail(8) parameter for the parent to indicate on > a per-jail basis if its users are open to being tampered with by the > parent's unprivileged users: allow.unprivileged_parent_tampering. This > is disabled by default, but may be enabled to bypass the new priv(9) > checks in some scenarios where the functionality is useful. For > development setups that involve regularly debugging jailed processes > from outside the jail, consider adding a default > `allow.unprivileged_parent_tampering;` to your /etc/jail.conf. > > This may get MFC'd in the future with the default flipped to preserve > pre-existing behavior but allow opt-in for the new position sooner. > > Reviewed by: jamie > Differential Revision: https://reviews.freebsd.org/D51645 From nobody Fri Aug 8 04:59:24 2025 X-Original-To: dev-commits-src-main@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 4bysJr6vYLz64Bdg; Fri, 08 Aug 2025 04:59:40 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bysJr4j5Cz3TKZ; Fri, 08 Aug 2025 04:59:40 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2402b5396cdso11417215ad.2; Thu, 07 Aug 2025 21:59:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754629176; x=1755233976; darn=freebsd.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=l/eQ0TlOJRJIr6yfmipUyvwCPUkK3lII+uNrVaanOVg=; b=jFN5iZon9LlhCXTDobG/N2aIfnqMvEIDlDfN8WnFAA7Ok2JuriOkQ/Tyt4eLDDvaih pnNcmyNm2VUVuPg4NdVRuBdVaisCTJWZ+nE6MZ5FMEI9I/aM4WCQ4CUfxvBkZW1r/91l Y2+9osiKT8tW609sq3LuuGoJQv5iN0GKvOeN1PRASZK+2GUMv4lta/tMO++IbR6dWq9D 16C+D/dIEI2BH2KV5yXJxoWCICQeOw7lyiVK0HEI0QxmUMp3vDZuSKsew2gW3CLcarJp hUSWgCuxE/LEnpQ/nwMQu2u83JkDmbWbH7u7UMAdv5wiCcCOPMjJJAHAs0aseZvWF/cg WNjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754629176; x=1755233976; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=l/eQ0TlOJRJIr6yfmipUyvwCPUkK3lII+uNrVaanOVg=; b=YlbVxW0dpVs3eMKvHlIIrYki4iz36L0Qtn4q/IZQ9hBIc62eRilSf39XkQiJADL52M XNIENSQyX+khJQLs7t1RC7IorjgwoRbmI4V6WjVHpo0jBHurXRpTqN80mPWz5TXHcn5M 336rGEPYDXHZf6MnEughHNtXrE5CgiTw2jJa1Y5ygc6c8/w0GAT9YAOoJgURWdqRz3tG +Z/mJJh5WA5olIC+YhTZ1za+xfWlB2/XlO22vIDH/pGFNwNCt7l7JzU+I5zAY2msouRx dd4DcmM+RaTkZdFnMwP8eKBVwdUuF9rHruvrStdzK5XWHvrEI/BJwmO1r85d6IViWteS g7+Q== X-Forwarded-Encrypted: i=1; AJvYcCVnFuGnKImcXb7AwLjm1mTl4SXrxQRVbSRfP4zqr7vjCXmPvCV8Ik/5WLC1ZcVf6bV4FLjizRdYE+wDBKnHpScj4tZwOgY=@freebsd.org, AJvYcCWZaJvJLnHKHdDbhpcbTzTsgE/s7d4ot9RF7LsaHFNQH1JL3kkX0YQtd1kzjd7MGQ47Nti4oCYx8TtuqeFG3qwOXJLR@freebsd.org X-Gm-Message-State: AOJu0YyQP39AH8ZsOcGzVB6Xzy4GCmP+Gr5Z++TP1/MRuoG9CYj49At+ RaPB54UmfyWmbjIySDmbcX/zFz7HuC0wzRKYC2mLC2u80wCA7ps2JoAOdviKxyYrv/+pgamdm5n 8UJ7JAK/+NuJMib52Y+9SQLoGR2F0sJytFQ== X-Gm-Gg: ASbGncsNo5LOKxlnLD8ioV7QbJdCguDD88EJzXk/qXIKYCdpsMvinzzQduhmjrDJr5S itxO4g4Wz0i6abfvhY+dvlX5mmN4ehAr3yHht+geJ5b2mZBvVkpP2yRFyQwmucgu7VFmp6xWPel IVU5sh7g8sNYqK34K/9HVrLFASU2r7ldC8sdvyk1NwRfMHO5Ftm+5V91kdamVl1t+Nh1VkPGprM jgJYuWuRane/5y2CA== X-Google-Smtp-Source: AGHT+IEQOgvPlVzLDx+l83vyXFRU8xcFUHRrABYkLOc+z+c8j7PpwMSGS7JFVpzGmzisLJpfgRaFypNvlGD9SYLVW70= X-Received: by 2002:a17:903:1b6d:b0:242:9bc6:6bc1 with SMTP id d9443c01a7336-242c2266b63mr21673305ad.56.1754629176338; Thu, 07 Aug 2025 21:59:36 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508072105.577L5nA0081105@gitrepo.freebsd.org> In-Reply-To: <202508072105.577L5nA0081105@gitrepo.freebsd.org> From: Benjamin Kaduk Date: Thu, 7 Aug 2025 21:59:24 -0700 X-Gm-Features: Ac12FXw4CxBBVzIHE0UGdSJyJYyv5n2C22OgOXyhgZOdJXv1aBbrmUz2qkIu5zo Message-ID: Subject: Re: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos To: Rick Macklem Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000c4ae89063bd370b7" X-Rspamd-Queue-Id: 4bysJr4j5Cz3TKZ X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] --000000000000c4ae89063bd370b7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Aug 7, 2025 at 2:07=E2=80=AFPM Rick Macklem = wrote: > +enum krb_imp { > + KRBIMP_UNKNOWN, > + KRBIMP_HESIOD1, > + KRBIMP_MIT > +}; > > I only skimmed the diff so far, but I don't think KRBIMP_HESIOD1 makes much sense as a name -- Hesiod is a directory service of sorts that came out of MIT's Project Athena (it uses the "HS" DNS record class and we have an implementation of its functionality in libc) but is otherwise unrelated to Kerberos. Presumably you wanted something Heimdal-ish here? -Ben --000000000000c4ae89063bd370b7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Thu, Aug 7, 2025 at 2:07=E2=80=AFPM Ri= ck Macklem <rmacklem@freebsd.org= > wrote:
+enum krb_imp {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0KRBIMP_UNKNOWN,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0KRBIMP_HESIOD1,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0KRBIMP_MIT
+};




I= only skimmed the diff so far, but I don't think KRBIMP_HESIOD1 makes m= uch sense as a name -- Hesiod is a directory service of sorts that came out= of MIT's Project Athena (it uses the "HS" DNS record class a= nd we have an implementation of its functionality in libc) but is otherwise= unrelated to Kerberos.=C2=A0 Presumably you wanted something Heimdal-ish h= ere?

-Ben
--000000000000c4ae89063bd370b7-- From nobody Fri Aug 8 05:06:03 2025 X-Original-To: dev-commits-src-main@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 4bysSC5lybz64CVX; Fri, 08 Aug 2025 05:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bysSC58GGz3TcT; Fri, 08 Aug 2025 05:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754629563; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qTOtQERYUiBzVyTZvZ+cbp4ArARfH8xyOmTuQl71Lt8=; b=ieb41QaiI2CvPxSMYZZHTDuCL7iFF4X+Mu8Gu4jxjAlbQBuWzHJ0+bMOMTqakKxve3kx1+ /+wuXhNSJeitsFbrpJrQ3Fe6cf9L4jqh2bIr8cIyvJ2PE9KbVjN5q/oZDATgmakSOCwY4c 5tjtaVNQ5YRNTqntJOuHire/PkoOn+HoYBbD9htYqMJ/KE4vyg58Wnmg/6shE22Tlmsqu5 5/AWYeoivBEPlhwSx89uaczcg55oD4ZtQBHLw4J0eJZfZbIGOXb/Y1QQX+Qg6sLeCg2Lle 8SgTTdVOE1af3sQG6UBEKHxceGhcsF9mMFlMrsBTWX+EfvBdT+l0WFTUrimVzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754629563; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qTOtQERYUiBzVyTZvZ+cbp4ArARfH8xyOmTuQl71Lt8=; b=Z/BFSKN5+koJYqK3rquNAuSBskE1tk6sAl4T3D+90diG4qEaay2quwHFztpAJxeWixUdk0 tle02o48S2Mgh9PYg6mllWfCmVGWeWtHmIp9vaYQ12IVY4szEl+eVnzIMpW4qSPfloFV03 k4zs87XKzSM5KOvwZaO4N/pTX3ygEsj9b0X6m22iWUuMqZ1u8u0acuwLV4xcFtuXzrFoPD /NSmuL2VkP/qSc7jz5iSTL5x4HemwJ+ju550b/z+TVIypCWu8ShOk49HwllE4XKFm8zZUP FaO/v4gCunbXZC7+iNtl51FxOl85C67vYXEw6Q/Y0nzlng/RFMwhS3ucDvEYrQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754629563; a=rsa-sha256; cv=none; b=E24fMKj1nnHq8zRV0jpbsGGsmtIZi8SgBXHF1O/H7aDMJT5lITNI0D+w+caVXvxsV0aZim TYr4agY8dW0A+j6FhQeAwjAcw8wsqwBxJDcnqs3meBsepQKF3OzLVHPIx2o+gF5l7bPpt+ /vTEA4Hs7WLxwl3dGuX/8MuK2i7ruTdqEQJO8tdGNRKxwXhokgO1x+2Es7hvHCdErbHXzC nSufkmc3mj8nFY6HKqM8Fi/J1OzG/QruJp8KR115RSK96N26YHlDWSYs/ZtzorktQHBBFP vo9J4PT6ynK7l/n/FdW11HVga1s24fra3mF+7b2DVsVYUAfdOQIRbTFpd9a93w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bysSC4ckmz6mR; Fri, 08 Aug 2025 05:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578563UV079550; Fri, 8 Aug 2025 05:06:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578563qT079547; Fri, 8 Aug 2025 05:06:03 GMT (envelope-from git) Date: Fri, 8 Aug 2025 05:06:03 GMT Message-Id: <202508080506.578563qT079547@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 7a7f74dbcc4f - main - grep: toss in some explicit fflush() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7a7f74dbcc4f41d98218471297eaa629e34326e2 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7a7f74dbcc4f41d98218471297eaa629e34326e2 commit 7a7f74dbcc4f41d98218471297eaa629e34326e2 Author: Kyle Evans AuthorDate: 2025-08-08 04:52:53 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 05:05:10 +0000 grep: toss in some explicit fflush() grep|tee of the src/ tree for infrequently-occurring strings is fairly annoying; drop some tactical flushes at line-match boundaries to reduce the long stalls. In the case of `grep -o`, we'll flush after multiple lines if there are multiple matches within a single line of text, while for non`-o` we'll flush generally after every line. --- usr.bin/grep/util.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/usr.bin/grep/util.c b/usr.bin/grep/util.c index ed87e56956f6..5b40405852b3 100644 --- a/usr.bin/grep/util.c +++ b/usr.bin/grep/util.c @@ -728,6 +728,8 @@ void grep_printline(struct str *line, int sep) { printline_metadata(line, sep); fwrite(line->dat, line->len, 1, stdout); putchar(fileeol); + + fflush(stdout); } static void @@ -834,6 +836,7 @@ printline(struct parsec *pc, int sep, size_t *last_out) *last_out = pc->ln.len; } putchar('\n'); + fflush(stdout); } else if (!oflag) { /* * -o is terminated on every match output, so this @@ -843,6 +846,8 @@ printline(struct parsec *pc, int sep, size_t *last_out) * to terminate if it needs to. */ terminated = false; + } else { + fflush(stdout); } } else grep_printline(&pc->ln, sep); From nobody Fri Aug 8 05:45:41 2025 X-Original-To: dev-commits-src-main@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 4bytLF3WXgz64GjT; Fri, 08 Aug 2025 05:45:57 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bytLD5GYDz3bcZ; Fri, 08 Aug 2025 05:45:56 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 5785jfwZ097233; Fri, 8 Aug 2025 08:45:44 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 5785jfwZ097233 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 5785jf7I097232; Fri, 8 Aug 2025 08:45:41 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 8 Aug 2025 08:45:41 +0300 From: Konstantin Belousov To: Rick Macklem Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 37b2cb5ecb0f - main - vfs: Add support for file cloning to VOP_COPY_FILE_RANGE Message-ID: References: <202508080055.5780tYVq010160@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508080055.5780tYVq010160@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4bytLD5GYDz3bcZ X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Fri, Aug 08, 2025 at 12:55:34AM +0000, Rick Macklem wrote: > The branch main has been updated by rmacklem: > > URL: https://cgit.FreeBSD.org/src/commit/?id=37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 > > commit 37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 > Author: Rick Macklem > AuthorDate: 2025-08-08 00:52:23 +0000 > Commit: Rick Macklem > CommitDate: 2025-08-08 00:52:23 +0000 > > vfs: Add support for file cloning to VOP_COPY_FILE_RANGE > > NFSv4 has a separate CLONE operation from COPY with > a couple of semantics differences. Unlike COPY, CLONE > must complete the "copy on write" and cannot return > partially copied. It also is required to use offsets (and > the length if not to EOF) that are aligned to a buffer > boundary. > > Since VOP_COPY_FILE_RANGE() can already do "copy on write" > for file systems that support it, such as ZFS with block > cloning enabled, all this patch does is add a flag called > COPY_FILE_RANGE_CLONE so that it will conform to the > rule that it must do a "copy on write" to completion. > > The patch also adds a new pathconf(2) name _PC_CLONE_BLKSIZE, > which acquires the blocksize requirement for cloning and > returns 0 for file systems that do not support the > "copy on write" feature. (This is needed for the NFSv4.2 > clone_blksize attribute.) > > This patch will allow the implementation of CLONE > for NFSv4.2. > > Reviewed by: asomers > Differential Revision: https://reviews.freebsd.org/D51808 > --- > sys/fs/fuse/fuse_vnops.c | 3 +++ > sys/kern/vfs_default.c | 1 + > sys/kern/vfs_syscalls.c | 2 +- > sys/kern/vfs_vnops.c | 5 +++++ > sys/sys/unistd.h | 1 + > sys/sys/vnode.h | 17 +++++++++++++---- > 6 files changed, 24 insertions(+), 5 deletions(-) > > diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c > index b90ce60ec664..b782146b7278 100644 > --- a/sys/fs/fuse/fuse_vnops.c > +++ b/sys/fs/fuse/fuse_vnops.c > @@ -877,6 +877,9 @@ fuse_vnop_copy_file_range(struct vop_copy_file_range_args *ap) > pid_t pid; > int err; > > + if ((ap->a_flags & COPY_FILE_RANGE_CLONE) != 0) > + return (EXTERROR(ENOSYS, "Cannot clone")); > + > if (mp == NULL || mp != vnode_mount(outvp)) > return (EXTERROR(ENOSYS, "Mount points do not match")); > > diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c > index fd6202a1424c..85f67731e1cc 100644 > --- a/sys/kern/vfs_default.c > +++ b/sys/kern/vfs_default.c > @@ -457,6 +457,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) > case _PC_NAMEDATTR_ENABLED: > case _PC_HAS_NAMEDATTR: > case _PC_HAS_HIDDENSYSTEM: > + case _PC_CLONE_BLKSIZE: > *ap->a_retval = 0; > return (0); > default: > diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c > index 9704e9c160a8..c64618036733 100644 > --- a/sys/kern/vfs_syscalls.c > +++ b/sys/kern/vfs_syscalls.c > @@ -5058,7 +5058,7 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, > error = 0; > retlen = 0; > > - if (flags != 0) { > + if ((flags & ~COPY_FILE_RANGE_USERFLAGS) != 0) { > error = EINVAL; > goto out; > } > diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c > index 6451c9e07a60..93f87ddae4de 100644 > --- a/sys/kern/vfs_vnops.c > +++ b/sys/kern/vfs_vnops.c > @@ -3443,6 +3443,11 @@ vn_generic_copy_file_range(struct vnode *invp, off_t *inoffp, > interrupted = 0; > dat = NULL; > > + if ((flags & COPY_FILE_RANGE_CLONE) != 0) { > + error = ENOSYS; > + goto out; > + } > + > error = vn_lock(invp, LK_SHARED); > if (error != 0) > goto out; > diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h > index 85ed93fd359d..7ab2f021e408 100644 > --- a/sys/sys/unistd.h > +++ b/sys/sys/unistd.h > @@ -159,6 +159,7 @@ > #define _PC_XATTR_ENABLED _PC_NAMEDATTR_ENABLED /* Solaris Compatible */ > #define _PC_XATTR_EXISTS _PC_HAS_NAMEDATTR /* Solaris Compatible */ > #define _PC_HAS_HIDDENSYSTEM 68 > +#define _PC_CLONE_BLKSIZE 69 > #endif > > /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ > diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h > index 074769d55c2d..8080e9edd8c3 100644 > --- a/sys/sys/vnode.h > +++ b/sys/sys/vnode.h > @@ -397,8 +397,21 @@ struct vattr { > */ > #define VLKTIMEOUT (hz / 20 + 1) > > +/* copy_file_range flags */ > +#define COPY_FILE_RANGE_KFLAGS 0xff000000 > + > +/* > + * copy_file_range flags visible to user space. > + * Allocate high bits first, to try and avoid conflicting with Linux. > + */ > +#define COPY_FILE_RANGE_CLONE 0x00800000 /* Require cloning. */ > +#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) > + These are userspace flags for copy_file_range(2). Now you require userspace to include non-std-compliant and highly offensive WRT namespace pollution sys/vnode.h header to get to some bits of the copy_file_range(2) interface. This is not right thing to do, IMO. > #ifdef _KERNEL > > +/* copy_file_range flags only usable in the kernel */ > +#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ > + > #ifdef MALLOC_DECLARE > MALLOC_DECLARE(M_VNODE); > #endif > @@ -621,10 +634,6 @@ typedef void vop_getpages_iodone_t(void *, vm_page_t *, int, int); > #define VN_OPEN_INVFS 0x00000008 > #define VN_OPEN_WANTIOCTLCAPS 0x00000010 > > -/* copy_file_range kernel flags */ > -#define COPY_FILE_RANGE_KFLAGS 0xff000000 > -#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ > - > /* > * Public vnode manipulation functions. > */ From nobody Fri Aug 8 06:41:46 2025 X-Original-To: dev-commits-src-main@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 4byvb13XHlz64MKC; Fri, 08 Aug 2025 06:42:05 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byvb113SJz3gd4; Fri, 08 Aug 2025 06:42:05 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-af94e75445dso332579366b.0; Thu, 07 Aug 2025 23:42:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754635319; x=1755240119; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YxRCTI4PHOGMCyOSMKM5OfCGEZfkxi7bneGW5emOItM=; b=BYLXpOly3he48Xyqd/iXKxnIw8bDeAPy+RBi5//hVD7rzAL4tguyGagc0884VeepRF Fh7uq9rNINQYbWXUeVzGCHQ1dFiRSryVisaerMpfHsfuaYAWtpiamk6hQgsf7yN9x10W 6lYotgLZljID+yfbYka2Us9k+yWAzxtkYeBr3GglhlKBgPOiF39YHOpdECDgfJlKZGSU QkARrQuxLgc9fZh55gPN4wSZBXhmgtxl/yV+TDwihtbgDMSvNeOoo1TzJ/75wgtWNB/l 9gdQGsdoKcSxeKQgOMom1M0bsg2E08oXVVVrEZD48701/KaY9cO9Rb0L/93ZAlT5sT8/ LXLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754635319; x=1755240119; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YxRCTI4PHOGMCyOSMKM5OfCGEZfkxi7bneGW5emOItM=; b=NPzoQv7YpynSxYWDop0ticLttb7zLR9hCE7ZZfvJHxSxXL0FYOkmYUAjK6JlvbJRJo I4MYaKDX+ziZ8M38ZKjjRaOXjPnuyRuDVREU520eQsJtHJRC+GKiW4f++TTXln0fqfIN lKK0ER2486rxSqvJOFh8ygR2JW8hQHr7ZXxOTpi2kph+o1bn6RuFlljSIAtBxFeNKv82 EFVNk4ZP7KsXwyHGcKEF6pC0eUvLJe85AJsP1/z/serNnVM+qVWaJ6HugN/GTx+a9Vdj wxoD1C9zDbuvKXQ98iljB2YGGrIQWjXS7V1xJEKqD9o3KOt5ZzgjQjjNg1sEbITFcL+m sMLw== X-Forwarded-Encrypted: i=1; AJvYcCW5wecYF5W8hwbsJ6HpP2y6XvQ6w0klV0lJVO/p80ZKywddUbz99nosLdSwlIhxgYmZrfaXWvd23e1p+E3EvbCUKTZJeFA=@freebsd.org, AJvYcCWiNwk28VqlHRqu2EubQDMHHiCT0iYd3hEyV1iO3OaN3P3MhmPoWQvg8qGn9wIXWr2N5KWo/ng7eN8Louw282g=@freebsd.org, AJvYcCXC8Hclpst8EBKLpdAIjrkmN1gzE7VUzNUQ/Pdl0oJQ8ymaMtpjKn1PJiL6z7ftcVmr8u3SZ4FtRHynPBLBB2HT40mp@freebsd.org X-Gm-Message-State: AOJu0Yw1RBtIy95JRbs9TzIRkb68Sxjyjy8mddWCv5qRYfqgpJ7j+qHs aoXrH1RrdA+AKUlZ6FB84+/yeTP+3GeWsCMsreAmqvwe8O5qoMnlKUEt5PVd5k3HPBSKz+IM6jD XBMRSU7cfY7cfrWMU718ERtrqX6asyuTVNiM= X-Gm-Gg: ASbGncvscxYI1Sb/gAcvWPgvdOOe6hI8UMOWnDmpjAPnxYnSa5XtpitlSIztU4oqJxT Z/ueybJ9tB+NU0o811BwmyHLmeSo87URDaQlWxP8bVVWYvEKTR27ITpDa6G3ZxUj0zuTuRPoO4q EZN7bDRvdcfNs3WshjpwloGdwdhkc9J7prN/9GD2sAb2X64Ug95y4qIvIJBQECIKcAseTmk/MWU G9ci/wKWZMnxU94djLbXPGYrsB4H480gMtiIQI= X-Google-Smtp-Source: AGHT+IE229m22/ULkohwvn93kw0RguwKNFeMPtrWf29Icbn44ZwbkVXuzfzBx21Ut1DWdX/d3o8+WdCo0GAXhTNtT9c= X-Received: by 2002:a17:907:7215:b0:af9:3116:e0f6 with SMTP id a640c23a62f3a-af9c658c444mr160399766b.53.1754635318394; Thu, 07 Aug 2025 23:41:58 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508072105.577L5nA0081105@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Thu, 7 Aug 2025 23:41:46 -0700 X-Gm-Features: Ac12FXwvIm5xetUl84MWPm6Nmjo0chcZ3SDbZ0_Bw6wpbxQHYNq_OSN8PcbnmVw Message-ID: Subject: Re: git: e3ac01e18eb3 - main - kgssapi: Fix the kgssapi so that it can use MIT Kerberos To: Benjamin Kaduk Cc: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4byvb113SJz3gd4 X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] On Thu, Aug 7, 2025 at 9:59=E2=80=AFPM Benjamin Kaduk w= rote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > On Thu, Aug 7, 2025 at 2:07=E2=80=AFPM Rick Macklem wrote: >> >> +enum krb_imp { >> + KRBIMP_UNKNOWN, >> + KRBIMP_HESIOD1, >> + KRBIMP_MIT >> +}; >> > > > > I only skimmed the diff so far, but I don't think KRBIMP_HESIOD1 makes mu= ch sense as a name -- Hesiod is a directory service of sorts that came out = of MIT's Project Athena (it uses the "HS" DNS record class and we have an i= mplementation of its functionality in libc) but is otherwise unrelated to K= erberos. Presumably you wanted something Heimdal-ish here? Duh. Yes. I once used Hesiod, but I have no idea why I typed that instead of Heimdal. (It was meant to refer to the older Heimdal, up to 1.5.= ) As I recall, the value is ever used in the current code, since it always tests for it being UNKNOWN, to acquire it and if it is MIT after that, but I can commit a name change. rick > > -Ben From nobody Fri Aug 8 06:50:26 2025 X-Original-To: dev-commits-src-main@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 4byvn12cjCz64Mn8; Fri, 08 Aug 2025 06:50:45 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byvn075npz3gxD; Fri, 08 Aug 2025 06:50:44 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-af910372ab3so479480466b.1; Thu, 07 Aug 2025 23:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754635838; x=1755240638; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=9/1qr0lOqNioihU0PSyrlxyDmxRZnACxQYy/oohn44E=; b=AeQ+DbNpfpqf1E1NoyjKmFDYluBUtjWVtH4SiTn2TigcHOvR09O+Qt3MgjtLE4dqeS JJrCLHFy6XVtx9/vEQJ9mC2BKWiKBDib6uEsHuNHqB183WTYHaDCY8n1I9+h3bNIf+pd GXbDp2ctpY8vz1GS89p6A0YOBW43WENiLHR+Vg840mnYHnEgFy+OSPgTGSuv1og5AHSd VI/6o1y3wVd6vy8LB1z5/1fzb06hqTnkKXoRnT0MBmjhZ0kFnPfid7o0UUItyT0W5yHA CjX46GkWkol9ho9wKKQhk+bdzeOh6CNHGn1kbo6dpx8m4r3xznnsrcUd/XDDW1PwHKU0 GdJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754635838; x=1755240638; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9/1qr0lOqNioihU0PSyrlxyDmxRZnACxQYy/oohn44E=; b=TZMkrO7zypFqjmKcLX2uKNegUn8S7kwz6udcQzNqaKrbF1E8nQgRDdcqJ44D3Yoy/I h+WLKSQmPa33jo2G/dFjcuewVadHOynGn9MDD++KHdCExDKEYvjIB1VS8LPGN18EbBTR F8GQD+69vFeoZfKBi7570FcnjiUeTNfUJ2RvQcPIesVQRMNgucYx9/4firCk5xkC+Jdi DuxhTPEyHerimp+LLyRAoAOkYeUwTsWdJtK6X66hl2CTkJ/HMOw08nhwxdzgw/oII792 VQpYTpKP0g9+FmKHZn26qHFabL4pZx6jYZ3K4WUkynZqYrBV5LxfQu/etKZTdgvI8w3p brsQ== X-Forwarded-Encrypted: i=1; AJvYcCVTZJHUiBUaU7wrPATLyDRuzsYHavGJzX1ELUMGpBncprvAeDITNOICn7JbIDBbn3qxVpY6QL3hNlRwPgRrHmcNh/hn@freebsd.org, AJvYcCWqFIsB5RJliCQGnmm6mL5YvH/mSsAuNcUL35v+XPBs2sqJNrxl0Fbigpcxp5L5U+8UWMI6nZAfiv/8R55ZK/Q=@freebsd.org, AJvYcCXKd8qW5/w6qRNS7nhsi8Vrc4DuxPSSGXysweRQG8ipTHaltAzGRTiIF/N04YFJn+cYvx6almDwd2rdthC4hSQ+4mAyzaI=@freebsd.org X-Gm-Message-State: AOJu0Yx/Cj6Sw+BZglOyUPPKtM7ZWhx9NJJmBSbFnzpRSmC+U3Ym892X 7WrzspkbCjQS8qFzABQYJWdgMs5LZe/RdAgvS/S2mB3/dc0Ij0ilcL6iEbNAzFpXPpU/c/leDUa Cq/SFrh4EFR48VsqRuOBOPDzCOTftTg== X-Gm-Gg: ASbGncuFpCS0LYyVAZ6lvjN7nuhM507gQ2IVB8YAhQRGnWUBiq5O+isz16IzT4/n5ut 7iVExLB+lrDFC0WcXnqtc+poQ2iPhTA51brTB5A/hgGUihTLe2LG+8fNfsrDQ+2WpEOQD4TCFW9 EIMDSVTU3KMRF0uDSS5Ov02Z6yumijuhPIbkeXu+7wgf1it1Npk7nEI5ve91allM7m3eknyrv8+ Q7A+ssB8BsBdM3ehNO36nVJR9G04vBYOG0uWl4= X-Google-Smtp-Source: AGHT+IHsNz1sKOsbs/8NfucrTJvKgls8M+8Hx2p2FmjyVtjko2O1/FLT6wk7uML/BSs/Ctd5pBc6QuBf70ecf3TcDG0= X-Received: by 2002:a17:907:d78a:b0:ad8:91e4:a931 with SMTP id a640c23a62f3a-af9c705467dmr124080266b.26.1754635838040; Thu, 07 Aug 2025 23:50:38 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508080055.5780tYVq010160@gitrepo.freebsd.org> In-Reply-To: From: Rick Macklem Date: Thu, 7 Aug 2025 23:50:26 -0700 X-Gm-Features: Ac12FXyXOlz_9L36UsCdS3b7JSVotpAx6Buk3cOLwyi2qjaEMC3LKK5odgHCcbs Message-ID: Subject: Re: git: 37b2cb5ecb0f - main - vfs: Add support for file cloning to VOP_COPY_FILE_RANGE To: Konstantin Belousov Cc: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4byvn075npz3gxD X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] On Thu, Aug 7, 2025 at 10:46=E2=80=AFPM Konstantin Belousov wrote: > > CAUTION: This email originated from outside of the University of Guelph. = Do not click links or open attachments unless you recognize the sender and = know the content is safe. If in doubt, forward suspicious emails to IThelp@= uoguelph.ca. > > On Fri, Aug 08, 2025 at 12:55:34AM +0000, Rick Macklem wrote: > > The branch main has been updated by rmacklem: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D37b2cb5ecb0fb1b1f5a98ff4= c08b61b8c05ec1d7 > > > > commit 37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 > > Author: Rick Macklem > > AuthorDate: 2025-08-08 00:52:23 +0000 > > Commit: Rick Macklem > > CommitDate: 2025-08-08 00:52:23 +0000 > > > > vfs: Add support for file cloning to VOP_COPY_FILE_RANGE > > > > NFSv4 has a separate CLONE operation from COPY with > > a couple of semantics differences. Unlike COPY, CLONE > > must complete the "copy on write" and cannot return > > partially copied. It also is required to use offsets (and > > the length if not to EOF) that are aligned to a buffer > > boundary. > > > > Since VOP_COPY_FILE_RANGE() can already do "copy on write" > > for file systems that support it, such as ZFS with block > > cloning enabled, all this patch does is add a flag called > > COPY_FILE_RANGE_CLONE so that it will conform to the > > rule that it must do a "copy on write" to completion. > > > > The patch also adds a new pathconf(2) name _PC_CLONE_BLKSIZE, > > which acquires the blocksize requirement for cloning and > > returns 0 for file systems that do not support the > > "copy on write" feature. (This is needed for the NFSv4.2 > > clone_blksize attribute.) > > > > This patch will allow the implementation of CLONE > > for NFSv4.2. > > > > Reviewed by: asomers > > Differential Revision: https://reviews.freebsd.org/D51808 > > --- > > sys/fs/fuse/fuse_vnops.c | 3 +++ > > sys/kern/vfs_default.c | 1 + > > sys/kern/vfs_syscalls.c | 2 +- > > sys/kern/vfs_vnops.c | 5 +++++ > > sys/sys/unistd.h | 1 + > > sys/sys/vnode.h | 17 +++++++++++++---- > > 6 files changed, 24 insertions(+), 5 deletions(-) > > > > diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c > > index b90ce60ec664..b782146b7278 100644 > > --- a/sys/fs/fuse/fuse_vnops.c > > +++ b/sys/fs/fuse/fuse_vnops.c > > @@ -877,6 +877,9 @@ fuse_vnop_copy_file_range(struct vop_copy_file_rang= e_args *ap) > > pid_t pid; > > int err; > > > > + if ((ap->a_flags & COPY_FILE_RANGE_CLONE) !=3D 0) > > + return (EXTERROR(ENOSYS, "Cannot clone")); > > + > > if (mp =3D=3D NULL || mp !=3D vnode_mount(outvp)) > > return (EXTERROR(ENOSYS, "Mount points do not match")); > > > > diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c > > index fd6202a1424c..85f67731e1cc 100644 > > --- a/sys/kern/vfs_default.c > > +++ b/sys/kern/vfs_default.c > > @@ -457,6 +457,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) > > case _PC_NAMEDATTR_ENABLED: > > case _PC_HAS_NAMEDATTR: > > case _PC_HAS_HIDDENSYSTEM: > > + case _PC_CLONE_BLKSIZE: > > *ap->a_retval =3D 0; > > return (0); > > default: > > diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c > > index 9704e9c160a8..c64618036733 100644 > > --- a/sys/kern/vfs_syscalls.c > > +++ b/sys/kern/vfs_syscalls.c > > @@ -5058,7 +5058,7 @@ kern_copy_file_range(struct thread *td, int infd,= off_t *inoffp, int outfd, > > error =3D 0; > > retlen =3D 0; > > > > - if (flags !=3D 0) { > > + if ((flags & ~COPY_FILE_RANGE_USERFLAGS) !=3D 0) { > > error =3D EINVAL; > > goto out; > > } > > diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c > > index 6451c9e07a60..93f87ddae4de 100644 > > --- a/sys/kern/vfs_vnops.c > > +++ b/sys/kern/vfs_vnops.c > > @@ -3443,6 +3443,11 @@ vn_generic_copy_file_range(struct vnode *invp, o= ff_t *inoffp, > > interrupted =3D 0; > > dat =3D NULL; > > > > + if ((flags & COPY_FILE_RANGE_CLONE) !=3D 0) { > > + error =3D ENOSYS; > > + goto out; > > + } > > + > > error =3D vn_lock(invp, LK_SHARED); > > if (error !=3D 0) > > goto out; > > diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h > > index 85ed93fd359d..7ab2f021e408 100644 > > --- a/sys/sys/unistd.h > > +++ b/sys/sys/unistd.h > > @@ -159,6 +159,7 @@ > > #define _PC_XATTR_ENABLED _PC_NAMEDATTR_ENABLED /* Solari= s Compatible */ > > #define _PC_XATTR_EXISTS _PC_HAS_NAMEDATTR /* Solari= s Compatible */ > > #define _PC_HAS_HIDDENSYSTEM 68 > > +#define _PC_CLONE_BLKSIZE 69 > > #endif > > > > /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ > > diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h > > index 074769d55c2d..8080e9edd8c3 100644 > > --- a/sys/sys/vnode.h > > +++ b/sys/sys/vnode.h > > @@ -397,8 +397,21 @@ struct vattr { > > */ > > #define VLKTIMEOUT (hz / 20 + 1) > > > > +/* copy_file_range flags */ > > +#define COPY_FILE_RANGE_KFLAGS 0xff000000 > > + > > +/* > > + * copy_file_range flags visible to user space. > > + * Allocate high bits first, to try and avoid conflicting with Linux. > > + */ > > +#define COPY_FILE_RANGE_CLONE 0x00800000 /* Requir= e cloning. */ > > +#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) > > + > > These are userspace flags for copy_file_range(2). Now you require > userspace to include non-std-compliant and highly offensive WRT namespace > pollution sys/vnode.h header to get to some bits of the copy_file_range(2= ) > interface. This is not right thing to do, IMO. So, where do you think the flag can go? (The man page already mentions unistd.h and that is where the prototype for the function is, so does putting it there sound ok?) rick > > > #ifdef _KERNEL > > > > +/* copy_file_range flags only usable in the kernel */ > > +#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return= after 1sec. */ > > + > > #ifdef MALLOC_DECLARE > > MALLOC_DECLARE(M_VNODE); > > #endif > > @@ -621,10 +634,6 @@ typedef void vop_getpages_iodone_t(void *, vm_page= _t *, int, int); > > #define VN_OPEN_INVFS 0x00000008 > > #define VN_OPEN_WANTIOCTLCAPS 0x00000010 > > > > -/* copy_file_range kernel flags */ > > -#define COPY_FILE_RANGE_KFLAGS 0xff000000 > > -#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return= after 1sec. */ > > - > > /* > > * Public vnode manipulation functions. > > */ From nobody Fri Aug 8 07:04:49 2025 X-Original-To: dev-commits-src-main@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 4byw5W3W6dz64Nt2; Fri, 08 Aug 2025 07:05:03 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4byw5V1mhSz3jgJ; Fri, 08 Aug 2025 07:05:02 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none) Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 57874nXM099582; Fri, 8 Aug 2025 10:04:52 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 57874nXM099582 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 57874n41099581; Fri, 8 Aug 2025 10:04:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 8 Aug 2025 10:04:49 +0300 From: Konstantin Belousov To: Rick Macklem Cc: Rick Macklem , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 37b2cb5ecb0f - main - vfs: Add support for file cloning to VOP_COPY_FILE_RANGE Message-ID: References: <202508080055.5780tYVq010160@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Spamd-Result: default: False [-2.92 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.92)[-0.919]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; TAGGED_RCPT(0.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; MIME_TRACE(0.00)[0:+]; MISSING_XM_UA(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; TO_DN_SOME(0.00)[]; HAS_XAW(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; FREEMAIL_TO(0.00)[gmail.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_TLS_LAST(0.00)[]; R_DKIM_NA(0.00)[]; RCPT_COUNT_FIVE(0.00)[5] X-Rspamd-Queue-Id: 4byw5V1mhSz3jgJ X-Spamd-Bar: -- On Thu, Aug 07, 2025 at 11:50:26PM -0700, Rick Macklem wrote: > On Thu, Aug 7, 2025 at 10:46 PM Konstantin Belousov wrote: > > > > CAUTION: This email originated from outside of the University of Guelph. Do not click links or open attachments unless you recognize the sender and know the content is safe. If in doubt, forward suspicious emails to IThelp@uoguelph.ca. > > > > On Fri, Aug 08, 2025 at 12:55:34AM +0000, Rick Macklem wrote: > > > The branch main has been updated by rmacklem: > > > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 > > > > > > commit 37b2cb5ecb0fb1b1f5a98ff4c08b61b8c05ec1d7 > > > Author: Rick Macklem > > > AuthorDate: 2025-08-08 00:52:23 +0000 > > > Commit: Rick Macklem > > > CommitDate: 2025-08-08 00:52:23 +0000 > > > > > > vfs: Add support for file cloning to VOP_COPY_FILE_RANGE > > > > > > NFSv4 has a separate CLONE operation from COPY with > > > a couple of semantics differences. Unlike COPY, CLONE > > > must complete the "copy on write" and cannot return > > > partially copied. It also is required to use offsets (and > > > the length if not to EOF) that are aligned to a buffer > > > boundary. > > > > > > Since VOP_COPY_FILE_RANGE() can already do "copy on write" > > > for file systems that support it, such as ZFS with block > > > cloning enabled, all this patch does is add a flag called > > > COPY_FILE_RANGE_CLONE so that it will conform to the > > > rule that it must do a "copy on write" to completion. > > > > > > The patch also adds a new pathconf(2) name _PC_CLONE_BLKSIZE, > > > which acquires the blocksize requirement for cloning and > > > returns 0 for file systems that do not support the > > > "copy on write" feature. (This is needed for the NFSv4.2 > > > clone_blksize attribute.) > > > > > > This patch will allow the implementation of CLONE > > > for NFSv4.2. > > > > > > Reviewed by: asomers > > > Differential Revision: https://reviews.freebsd.org/D51808 > > > --- > > > sys/fs/fuse/fuse_vnops.c | 3 +++ > > > sys/kern/vfs_default.c | 1 + > > > sys/kern/vfs_syscalls.c | 2 +- > > > sys/kern/vfs_vnops.c | 5 +++++ > > > sys/sys/unistd.h | 1 + > > > sys/sys/vnode.h | 17 +++++++++++++---- > > > 6 files changed, 24 insertions(+), 5 deletions(-) > > > > > > diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c > > > index b90ce60ec664..b782146b7278 100644 > > > --- a/sys/fs/fuse/fuse_vnops.c > > > +++ b/sys/fs/fuse/fuse_vnops.c > > > @@ -877,6 +877,9 @@ fuse_vnop_copy_file_range(struct vop_copy_file_range_args *ap) > > > pid_t pid; > > > int err; > > > > > > + if ((ap->a_flags & COPY_FILE_RANGE_CLONE) != 0) > > > + return (EXTERROR(ENOSYS, "Cannot clone")); > > > + > > > if (mp == NULL || mp != vnode_mount(outvp)) > > > return (EXTERROR(ENOSYS, "Mount points do not match")); > > > > > > diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c > > > index fd6202a1424c..85f67731e1cc 100644 > > > --- a/sys/kern/vfs_default.c > > > +++ b/sys/kern/vfs_default.c > > > @@ -457,6 +457,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) > > > case _PC_NAMEDATTR_ENABLED: > > > case _PC_HAS_NAMEDATTR: > > > case _PC_HAS_HIDDENSYSTEM: > > > + case _PC_CLONE_BLKSIZE: > > > *ap->a_retval = 0; > > > return (0); > > > default: > > > diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c > > > index 9704e9c160a8..c64618036733 100644 > > > --- a/sys/kern/vfs_syscalls.c > > > +++ b/sys/kern/vfs_syscalls.c > > > @@ -5058,7 +5058,7 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, > > > error = 0; > > > retlen = 0; > > > > > > - if (flags != 0) { > > > + if ((flags & ~COPY_FILE_RANGE_USERFLAGS) != 0) { > > > error = EINVAL; > > > goto out; > > > } > > > diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c > > > index 6451c9e07a60..93f87ddae4de 100644 > > > --- a/sys/kern/vfs_vnops.c > > > +++ b/sys/kern/vfs_vnops.c > > > @@ -3443,6 +3443,11 @@ vn_generic_copy_file_range(struct vnode *invp, off_t *inoffp, > > > interrupted = 0; > > > dat = NULL; > > > > > > + if ((flags & COPY_FILE_RANGE_CLONE) != 0) { > > > + error = ENOSYS; > > > + goto out; > > > + } > > > + > > > error = vn_lock(invp, LK_SHARED); > > > if (error != 0) > > > goto out; > > > diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h > > > index 85ed93fd359d..7ab2f021e408 100644 > > > --- a/sys/sys/unistd.h > > > +++ b/sys/sys/unistd.h > > > @@ -159,6 +159,7 @@ > > > #define _PC_XATTR_ENABLED _PC_NAMEDATTR_ENABLED /* Solaris Compatible */ > > > #define _PC_XATTR_EXISTS _PC_HAS_NAMEDATTR /* Solaris Compatible */ > > > #define _PC_HAS_HIDDENSYSTEM 68 > > > +#define _PC_CLONE_BLKSIZE 69 > > > #endif > > > > > > /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ > > > diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h > > > index 074769d55c2d..8080e9edd8c3 100644 > > > --- a/sys/sys/vnode.h > > > +++ b/sys/sys/vnode.h > > > @@ -397,8 +397,21 @@ struct vattr { > > > */ > > > #define VLKTIMEOUT (hz / 20 + 1) > > > > > > +/* copy_file_range flags */ > > > +#define COPY_FILE_RANGE_KFLAGS 0xff000000 > > > + > > > +/* > > > + * copy_file_range flags visible to user space. > > > + * Allocate high bits first, to try and avoid conflicting with Linux. > > > + */ > > > +#define COPY_FILE_RANGE_CLONE 0x00800000 /* Require cloning. */ > > > +#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) > > > + > > > > These are userspace flags for copy_file_range(2). Now you require > > userspace to include non-std-compliant and highly offensive WRT namespace > > pollution sys/vnode.h header to get to some bits of the copy_file_range(2) > > interface. This is not right thing to do, IMO. > So, where do you think the flag can go? > (The man page already mentions unistd.h and that is where the prototype > for the function is, so does putting it there sound ok?) Yes, sys/unistd.h should be fine, into a __BSD_VISIBLE section. From nobody Fri Aug 8 07:10:32 2025 X-Original-To: dev-commits-src-main@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 4bywCs1MXNz64PH5; Fri, 08 Aug 2025 07:10:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bywCs0WHJz3k5q; Fri, 08 Aug 2025 07:10:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754637033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0pXg1m3IQ+ZlBj2EOZSbHyN3Of5MvOnzhM2nLGFb0tc=; b=EI7+1eCdEUWnl3oRZw95AbrKMF3rbjk5wOKQmeY/VcHrT5MY0QM5uhqpkOnD2sjBmL53ZS I36RUlBDP/6KlQh6Z1yX3GIVAcnPZF6wxGQb+W546jIwKQdPvZneKnkFJ7iw1h8aiOBFOf AwSQYJItWOqIu7ELr92sG70wXIPzmXap16C5QgB/g8OzcMATwQNTVFGe5Oem2NGLobA3pJ wm1znz/rNvR9FySCwynAT3FOATuGdXuuaPCc6fDrz0/G6cK8W0KT3V5FWV+U0kXrHGBq1T /TE0gn4klM/EWbCGVDTZJe3neXKt5JVmLYuMV6lFE5EnybTfWnJjpEae+zs0IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754637033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0pXg1m3IQ+ZlBj2EOZSbHyN3Of5MvOnzhM2nLGFb0tc=; b=jWVxEE9Wkrq14AANZEeKP+PNN5/hONuLRjRq8JarfDhKizTc9u3FtuUbxb8cfB5H1szuq0 mCjNb0iebsd7zvmMKlIzcYWQh7hHNFLx+EtXuYAlcfPBEhzsXtJrxPT1dQyVOBx2ghE0Hd kDpDDq3IOoi8m+TYR5nkEuniLP1jQJIGbehGYPxsbYnL/fp8K85ssLMQm/lUGRXMs1XpTj QNU5aNQWfbHTfXzHYR0j812B5k77hUJoRbyLV4m/c+NZnHPEZgrpcHHuIG/gKnr1oDTzy8 EXEUQ7RYFNlkSLGE3Ffan3JclTSo6JkZ2s1dfo456n7Hx+VOoZrDYv4X+y6c6g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754637033; a=rsa-sha256; cv=none; b=x2e/LsIqm54OjrTA4B0ZSHLllsYZTmyIU3B8Y45QJ4j6Hej0jjFTBWmj1+OF+YPdfEza7c BEgU0NiUMqjTQrUF/Xfzf43I/fC9WHeM9E4wXkzF5g1ShvQioOSUWXqA8h3EBjxPOZzFxH Rc2dHcOZ9GCB4DU/6C/AYV2aosl4AbFpUkhn5teGjdy5lCRl6h60ILVYOAtVHnUj27Swxf ZribH7FjY0w9UhadQbSCTgokPdkWmLL8K9rBf98F7WSiMlNj7D0QPiDAmvIW7wIXo5jCAl 7Qg4WhYUMUcvVIfbUmLSg4d8Ile8U7Pbq9wtODaZN+UTRK3dmmoxFAdR7QbMpA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bywCr6DQYz9VY; Fri, 08 Aug 2025 07:10:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5787AWrd013544; Fri, 8 Aug 2025 07:10:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5787AW29013541; Fri, 8 Aug 2025 07:10:32 GMT (envelope-from git) Date: Fri, 8 Aug 2025 07:10:32 GMT Message-Id: <202508080710.5787AW29013541@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Toomas Soome Subject: git: d439a1551226 - main - libsa: ip fragment reassembly is buggy List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tsoome X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d439a1551226fc7e90c694b11dacb79bf44e81b7 Auto-Submitted: auto-generated The branch main has been updated by tsoome: URL: https://cgit.FreeBSD.org/src/commit/?id=d439a1551226fc7e90c694b11dacb79bf44e81b7 commit d439a1551226fc7e90c694b11dacb79bf44e81b7 Author: Toomas Soome AuthorDate: 2025-08-01 20:00:43 +0000 Commit: Toomas Soome CommitDate: 2025-08-08 07:10:08 +0000 libsa: ip fragment reassembly is buggy Well, it does not really work and we are getting retransmits. To replicate, set nfs.read_size large enough. What needs to happen is, we read ethernet packet, if it has IPv4 payload and that payload is fragment, we create reassembly queue (sorted by growing fragment offset) and on last fragment, we can build complete packet. Once done properly, the network load can utilize larger read sizes. While there, move ARP (and other) processing out of readipv4(). Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51690 --- stand/libsa/ip.c | 306 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 172 insertions(+), 134 deletions(-) diff --git a/stand/libsa/ip.c b/stand/libsa/ip.c index 6c7b0844b14d..e9e4f519681d 100644 --- a/stand/libsa/ip.c +++ b/stand/libsa/ip.c @@ -42,6 +42,7 @@ #include #include +#include #include #include @@ -89,17 +90,10 @@ sendip(struct iodesc *d, void *pkt, size_t len, uint8_t proto) struct ip *ip; u_char *ea; -#ifdef NET_DEBUG - if (debug) { - printf("sendip: proto: %x d=%p called.\n", proto, (void *)d); - if (d) { - printf("saddr: %s:%d", - inet_ntoa(d->myip), ntohs(d->myport)); - printf(" daddr: %s:%d\n", - inet_ntoa(d->destip), ntohs(d->destport)); - } - } -#endif + DEBUG_PRINTF(1, ("sendip: proto: %x d=%p called.\n", proto, (void *)d)); + DEBUG_PRINTF(1, ("saddr: %s:%d daddr: %s:%d\n", + inet_ntoa(d->myip), ntohs(d->myport), + inet_ntoa(d->destip), ntohs(d->destport))); ip = (struct ip *)pkt - 1; len += sizeof(*ip); @@ -143,139 +137,123 @@ ip_reasm_free(struct ip_reasm *ipr) free(ipr); } -static int +static bool ip_reasm_add(struct ip_reasm *ipr, void *pkt, struct ip *ip) { - struct ip_queue *ipq, *prev, *p; + struct ip_queue *ipq, *p; + uint16_t off_q, off_ip; - if ((ipq = calloc(1, sizeof (*ipq))) == NULL) - return (1); + if ((ipq = calloc(1, sizeof(*ipq))) == NULL) + return (false); ipq->ipq_pkt = pkt; ipq->ipq_hdr = ip; - prev = NULL; STAILQ_FOREACH(p, &ipr->ip_queue, ipq_next) { - if ((ntohs(p->ipq_hdr->ip_off) & IP_OFFMASK) < - (ntohs(ip->ip_off) & IP_OFFMASK)) { - prev = p; - continue; + off_q = ntohs(p->ipq_hdr->ip_off) & IP_OFFMASK; + off_ip = ntohs(ip->ip_off) & IP_OFFMASK; + + if (off_q == off_ip) { /* duplicate */ + free(pkt); + free(ipq); + return (true); } - if (prev == NULL) + + if (off_ip < off_q) { + /* + * Everything in queue has larger offset, + * drop out of loop and insert to HEAD. + */ break; + } + + /* + * p in queue is smaller than ip, check if we need to put + * ip after p or after p->next. + */ + struct ip_queue *next = STAILQ_NEXT(p, ipq_next); + if (next == NULL) { + /* insert after p */ + STAILQ_INSERT_AFTER(&ipr->ip_queue, p, ipq, ipq_next); + return (true); + } - STAILQ_INSERT_AFTER(&ipr->ip_queue, prev, ipq, ipq_next); - return (0); + off_q = ntohs(next->ipq_hdr->ip_off) & IP_OFFMASK; + if (off_ip < off_q) { + /* next fragment offset is larger, insert after p. */ + STAILQ_INSERT_AFTER(&ipr->ip_queue, p, ipq, ipq_next); + return (true); + } + /* next fragment offset is smaller, loop */ } STAILQ_INSERT_HEAD(&ipr->ip_queue, ipq, ipq_next); - return (0); + return (true); } /* * Receive a IP packet and validate it is for us. */ static ssize_t -readipv4(struct iodesc *d, void **pkt, void **payload, time_t tleft, - uint8_t proto) +readipv4(struct iodesc *d, void **pkt, void **payload, ssize_t n) { - ssize_t n; + struct ip *ip = *payload; size_t hlen; struct ether_header *eh; - void *buf; - struct ip *ip; struct udphdr *uh; - uint16_t etype; /* host order */ - char *ptr; + char *ptr = *pkt; struct ip_reasm *ipr; struct ip_queue *ipq, *last; + bool morefrag, isfrag; + uint16_t fragoffset; -#ifdef NET_DEBUG - if (debug) - printf("readip: called\n"); -#endif - - ip = NULL; - ptr = NULL; - n = readether(d, (void **)&ptr, (void **)&buf, tleft, &etype); - if (n == -1 || n < sizeof(*ip) + sizeof(*uh)) { - free(ptr); - return (-1); - } - - /* Ethernet address checks now in readether() */ - - /* Need to respond to ARP requests. */ - if (etype == ETHERTYPE_ARP) { - struct arphdr *ah = buf; - if (ah->ar_op == htons(ARPOP_REQUEST)) { - /* Send ARP reply */ - arp_reply(d, ah); - } + if (n < sizeof(*ip)) { free(ptr); errno = EAGAIN; /* Call me again. */ return (-1); } - if (etype != ETHERTYPE_IP) { -#ifdef NET_DEBUG - if (debug) - printf("readip: not IP. ether_type=%x\n", etype); -#endif - free(ptr); - return (-1); - } - - ip = buf; - /* Check ip header */ - if (ip->ip_v != IPVERSION || /* half char */ - ip->ip_p != proto) { -#ifdef NET_DEBUG - if (debug) { - printf("readip: IP version or proto. ip_v=%d ip_p=%d\n", - ip->ip_v, ip->ip_p); - } -#endif - free(ptr); - return (-1); - } - hlen = ip->ip_hl << 2; if (hlen < sizeof(*ip) || in_cksum(ip, hlen) != 0) { -#ifdef NET_DEBUG - if (debug) - printf("readip: short hdr or bad cksum.\n"); -#endif + DEBUG_PRINTF(1, ("%s: short hdr or bad cksum.\n", __func__)); free(ptr); + errno = EAGAIN; /* Call me again. */ return (-1); } + if (n < ntohs(ip->ip_len)) { -#ifdef NET_DEBUG - if (debug) - printf("readip: bad length %d < %d.\n", - (int)n, ntohs(ip->ip_len)); -#endif + DEBUG_PRINTF(1, ("readip: bad length %zd < %d.\n", + n, ntohs(ip->ip_len))); free(ptr); + errno = EAGAIN; /* Call me again. */ return (-1); } + + fragoffset = (ntohs(ip->ip_off) & IP_OFFMASK) * 8; + morefrag = (ntohs(ip->ip_off) & IP_MF) == 0 ? false : true; + isfrag = morefrag || fragoffset != 0; + + uh = (struct udphdr *)((uintptr_t)ip + sizeof(*ip)); + if (d->myip.s_addr && ip->ip_dst.s_addr != d->myip.s_addr) { -#ifdef NET_DEBUG - if (debug) { - printf("readip: bad saddr %s != ", inet_ntoa(d->myip)); - printf("%s\n", inet_ntoa(ip->ip_dst)); - } -#endif + DEBUG_PRINTF(1, ("%s: not for us: saddr %s (%d) != %s (%d)\n", + __func__, inet_ntoa(d->myip), ntohs(d->myport), + inet_ntoa(ip->ip_dst), ntohs(uh->uh_dport))); free(ptr); + errno = EAGAIN; /* Call me again. */ return (-1); } /* Unfragmented packet. */ - if ((ntohs(ip->ip_off) & IP_MF) == 0 && - (ntohs(ip->ip_off) & IP_OFFMASK) == 0) { - uh = (struct udphdr *)((uintptr_t)ip + sizeof (*ip)); + if (!isfrag) { + DEBUG_PRINTF(1, ("%s: unfragmented saddr %s:%d -> %s:%d\n", + __func__, + inet_ntoa(ip->ip_src), ntohs(uh->uh_sport), + inet_ntoa(ip->ip_dst), ntohs(uh->uh_dport))); /* If there were ip options, make them go away */ if (hlen != sizeof(*ip)) { - bcopy(((u_char *)ip) + hlen, uh, uh->uh_ulen - hlen); + bcopy(((u_char *)ip) + hlen, uh, + ntohs(uh->uh_ulen) - hlen); ip->ip_len = htons(sizeof(*ip)); n -= hlen - sizeof(*ip); } @@ -297,7 +275,7 @@ readipv4(struct iodesc *d, void **pkt, void **payload, time_t tleft, /* Allocate new reassembly entry */ if (ipr == NULL) { - if ((ipr = calloc(1, sizeof (*ipr))) == NULL) { + if ((ipr = calloc(1, sizeof(*ipr))) == NULL) { free(ptr); return (-1); } @@ -309,37 +287,22 @@ readipv4(struct iodesc *d, void **pkt, void **payload, time_t tleft, ipr->ip_ttl = MAXTTL; STAILQ_INIT(&ipr->ip_queue); STAILQ_INSERT_TAIL(&ire_list, ipr, ip_next); + DEBUG_PRINTF(1, ("%s: new reassembly ID=%d %s -> %s\n", + __func__, ntohs(ip->ip_id), inet_ntoa(ip->ip_src), + inet_ntoa(ip->ip_dst))); } - if (ip_reasm_add(ipr, ptr, ip) != 0) { + /* + * NOTE: with ip_reasm_add() ptr will be stored in reassembly + * queue and we can not free it without destroying the queue. + */ + if (!ip_reasm_add(ipr, ptr, ip)) { STAILQ_REMOVE(&ire_list, ipr, ip_reasm, ip_next); free(ipr); free(ptr); return (-1); } - if ((ntohs(ip->ip_off) & IP_MF) == 0) { - ipr->ip_total_size = (8 * (ntohs(ip->ip_off) & IP_OFFMASK)); - ipr->ip_total_size += n + sizeof (*ip); - ipr->ip_total_size += sizeof (struct ether_header); - - ipr->ip_pkt = malloc(ipr->ip_total_size + 2); - if (ipr->ip_pkt == NULL) { - STAILQ_REMOVE(&ire_list, ipr, ip_reasm, ip_next); - ip_reasm_free(ipr); - return (-1); - } - } - - /* - * If we do not have re-assembly buffer ipr->ip_pkt, we are still - * missing fragments, so just restart the read. - */ - if (ipr->ip_pkt == NULL) { - errno = EAGAIN; - return (-1); - } - /* * Walk the packet list in reassembly queue, if we got all the * fragments, build the packet. @@ -347,35 +310,59 @@ readipv4(struct iodesc *d, void **pkt, void **payload, time_t tleft, n = 0; last = NULL; STAILQ_FOREACH(ipq, &ipr->ip_queue, ipq_next) { - if ((ntohs(ipq->ipq_hdr->ip_off) & IP_OFFMASK) != n / 8) { - STAILQ_REMOVE(&ire_list, ipr, ip_reasm, ip_next); - ip_reasm_free(ipr); + fragoffset = (ntohs(ipq->ipq_hdr->ip_off) & IP_OFFMASK) * 8; + if (fragoffset != n) { + DEBUG_PRINTF(1, ("%s: need more fragments %d %s -> ", + __func__, ntohs(ipq->ipq_hdr->ip_id), + inet_ntoa(ipq->ipq_hdr->ip_src))); + DEBUG_PRINTF(1, ("%s offset=%d MF=%d\n", + inet_ntoa(ipq->ipq_hdr->ip_dst), + fragoffset, + (ntohs(ipq->ipq_hdr->ip_off) & IP_MF) != 0)); + errno = EAGAIN; return (-1); } n += ntohs(ipq->ipq_hdr->ip_len) - (ipq->ipq_hdr->ip_hl << 2); last = ipq; } + + /* complete queue has last packet with MF 0 */ if ((ntohs(last->ipq_hdr->ip_off) & IP_MF) != 0) { + DEBUG_PRINTF(1, ("%s: need more fragments %d %s -> ", + __func__, ntohs(last->ipq_hdr->ip_id), + inet_ntoa(last->ipq_hdr->ip_src))); + DEBUG_PRINTF(1, ("%s offset=%d MF=%d\n", + inet_ntoa(last->ipq_hdr->ip_dst), + (ntohs(last->ipq_hdr->ip_off) & IP_OFFMASK) * 8, + (ntohs(last->ipq_hdr->ip_off) & IP_MF) != 0)); errno = EAGAIN; return (-1); } + ipr->ip_total_size = n + sizeof(*ip) + sizeof(struct ether_header); + ipr->ip_pkt = malloc(ipr->ip_total_size + 2); + if (ipr->ip_pkt == NULL) { + STAILQ_REMOVE(&ire_list, ipr, ip_reasm, ip_next); + ip_reasm_free(ipr); + return (-1); + } + ipq = STAILQ_FIRST(&ipr->ip_queue); /* Fabricate ethernet header */ eh = (struct ether_header *)((uintptr_t)ipr->ip_pkt + 2); - bcopy((void *)((uintptr_t)ipq->ipq_pkt + 2), eh, sizeof (*eh)); + bcopy((void *)((uintptr_t)ipq->ipq_pkt + 2), eh, sizeof(*eh)); /* Fabricate IP header */ - ipr->ip_hdr = (struct ip *)((uintptr_t)eh + sizeof (*eh)); - bcopy(ipq->ipq_hdr, ipr->ip_hdr, sizeof (*ipr->ip_hdr)); - ipr->ip_hdr->ip_hl = sizeof (*ipr->ip_hdr) >> 2; + ipr->ip_hdr = (struct ip *)((uintptr_t)eh + sizeof(*eh)); + bcopy(ipq->ipq_hdr, ipr->ip_hdr, sizeof(*ipr->ip_hdr)); + ipr->ip_hdr->ip_hl = sizeof(*ipr->ip_hdr) >> 2; ipr->ip_hdr->ip_len = htons(n); ipr->ip_hdr->ip_sum = 0; - ipr->ip_hdr->ip_sum = in_cksum(ipr->ip_hdr, sizeof (*ipr->ip_hdr)); + ipr->ip_hdr->ip_sum = in_cksum(ipr->ip_hdr, sizeof(*ipr->ip_hdr)); n = 0; - ptr = (char *)((uintptr_t)ipr->ip_hdr + sizeof (*ipr->ip_hdr)); + ptr = (char *)((uintptr_t)ipr->ip_hdr + sizeof(*ipr->ip_hdr)); STAILQ_FOREACH(ipq, &ipr->ip_queue, ipq_next) { char *data; size_t len; @@ -397,6 +384,9 @@ readipv4(struct iodesc *d, void **pkt, void **payload, time_t tleft, STAILQ_REMOVE_HEAD(&ire_list, ip_next); ip_reasm_free(ipr); } + DEBUG_PRINTF(1, ("%s: completed fragments ID=%d %s -> %s\n", + __func__, ntohs(ip->ip_id), inet_ntoa(ip->ip_src), + inet_ntoa(ip->ip_dst))); return (n); } @@ -412,15 +402,63 @@ readip(struct iodesc *d, void **pkt, void **payload, time_t tleft, t = getsecs(); while ((getsecs() - t) < tleft) { + ssize_t n; + uint16_t etype; /* host order */ + void *ptr = NULL; + void *data = NULL; + errno = 0; - ret = readipv4(d, pkt, payload, tleft, proto); - if (ret >= 0) - return (ret); - /* Bubble up the error if it wasn't successful */ - if (errno != EAGAIN) - return (-1); + n = readether(d, &ptr, &data, tleft, &etype); + if (n == -1) { + free(ptr); + continue; + } + /* Ethernet address checks are done in readether() */ + + /* Need to respond to ARP requests. */ + if (etype == ETHERTYPE_ARP) { + struct arphdr *ah = data; + + DEBUG_PRINTF(1, ("%s: ARP request\n", __func__)); + + if (ah->ar_op == htons(ARPOP_REQUEST)) { + /* Send ARP reply */ + arp_reply(d, ah); + } + free(ptr); + continue; /* Get next packet */ + } + + if (etype == ETHERTYPE_IP) { + struct ip *ip = data; + + if (ip->ip_v == IPVERSION && /* half char */ + ip->ip_p == proto) { + errno = 0; + ret = readipv4(d, &ptr, &data, n); + if (ret >= 0) { + *pkt = ptr; + *payload = data; + return (ret); + } + + /* + * Bubble up the error if it wasn't successful + */ + if (errno != EAGAIN) + return (-1); + continue; + } + DEBUG_PRINTF(1, ("%s: IP version or proto. " + "ip_v=%d ip_p=%d\n", + __func__, ip->ip_v, ip->ip_p)); + free(ptr); + continue; + } + free(ptr); } /* We've exhausted tleft; timeout */ errno = ETIMEDOUT; + DEBUG_PRINTF(1, ("%s: timeout\n", __func__)); return (-1); } From nobody Fri Aug 8 08:42:47 2025 X-Original-To: dev-commits-src-main@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 4byyGH4FC2z63KM0; Fri, 08 Aug 2025 08:42: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byyGH3FCWz3y4w; Fri, 08 Aug 2025 08:42:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754642567; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9qDEx2VBT2j2CZ5EhXQgunjMS/Esg7w9NXV/7booms0=; b=KS2xJhwQK7dl8i1z2aF4iQLfkhgw4YfKWw0dAlYwHfLPzVI4PIGck+h57NyNLhvwJIKTyN PieTKMD5oJyuQRHI4MT7fop8W2Fo/7jNKAsIHa23yntD3AyesuLv1Bm1pDgCJBDdOzmOmH yhooP0ZEEeUHtSoYjVD1BrPiILXiuwYKG2x6p/5K+zPPGuk77A96DTNGUdveY9RYfocOaO ekZsgPefYbIab2ZQ7KldCbFRdnqKicvJWmNOVt6zeZI9w1+FQBBHt78YV7BTkYDD4cFTPf QVrvArJVAVxAIEfdX0E8xO1jmauxBmMEh/YOJtiCL0feH0Lfk/lM9u3k3lwpfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754642567; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9qDEx2VBT2j2CZ5EhXQgunjMS/Esg7w9NXV/7booms0=; b=yPEqeT6PP5NS42TVLcf/sNjcb86NlZFJteXbJDChJjR2MMjpIRmaw4GJXhvuXqk6KlByDQ B2XYOuW7+HdSnCt7FrP6RZubsWP1X0Il2HBZbLSW0P6VyBETnVyNLZN2paYRyDQ1TECKg+ ETG5I68tDNJopYsjPtd60o0S36B1/173tw3Ytq6GfEwtku4S31vrXRZifdo4TTjrnFLT1r hccxH/Oh5IrLZ/FURJKLHvk0oASGQ8zaP2p6+ywu/qt3xpR87qj+CnANbjQekykrElxPsH wHyVJTFeejViAig33AyHmX96wJ5gmORFm0CPMw8nMP+N/iLu40XkGJelqbVnWw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754642567; a=rsa-sha256; cv=none; b=yGI6WMklhf1/wzogK1CFSbi7m42Pu5rLSmzGq88TJTgEqOPFpjAVQKewBGTMqs3k1ZXu8O +yxRZdGubmz1Z46Z+GiQopcw9rAEtd9brXAHpxTdql9hkTsB8KGbAaDgi+er0SR8jZs4As L0BpKVJ32rVmEBCyf3BnFNUbZC4i8+9kvtpjbQp9Ra+MKCm7WncSAZIFmmMy0ExJKeMvxY FHmvK7GBmSVaTJozO8P3INnkYuAb80YJ9VvJkFPXkykBXXh4iJRYwD1MfFe/kfhVbsLrdk xAuof4Zf9E+XODgVp6WRbWN3v/UaAtLsmSEvNVm7wvRcLy6L3C4dBGB9LEyfGw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byyGH2mDJzD8y; Fri, 08 Aug 2025 08:42:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5788glJM088624; Fri, 8 Aug 2025 08:42:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5788gllX088621; Fri, 8 Aug 2025 08:42:47 GMT (envelope-from git) Date: Fri, 8 Aug 2025 08:42:47 GMT Message-Id: <202508080842.5788gllX088621@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 4c6c27d3fb4a - main - arm64: Support TBI in userspace List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4c6c27d3fb4ad15931aae2eaf8e624aed99a3fd9 Auto-Submitted: auto-generated The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=4c6c27d3fb4ad15931aae2eaf8e624aed99a3fd9 commit 4c6c27d3fb4ad15931aae2eaf8e624aed99a3fd9 Author: Andrew Turner AuthorDate: 2025-08-08 08:09:29 +0000 Commit: Andrew Turner CommitDate: 2025-08-08 08:09:38 +0000 arm64: Support TBI in userspace To allow for Hardware-assisted AddressSanitizer (HWASAN) and future work to enable MTE we need to enable TBI in userspace. As address space that previously would have faulted will now not it could be considered an ABI change so only enable for processes with a late enough revision. Relnotes: yes Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D51637 --- sys/arm64/arm64/efirt_machdep.c | 19 +++++++++++++++++++ sys/arm64/arm64/elf_machdep.c | 17 +++++++++++++++-- sys/arm64/arm64/exec_machdep.c | 31 +++++++++++++++++++++++++++++++ sys/arm64/arm64/genassym.c | 1 + sys/arm64/arm64/pmap.c | 19 ++++++++++++++----- sys/arm64/arm64/ptrauth.c | 4 ++++ sys/arm64/arm64/swtch.S | 12 ++++++++++++ sys/arm64/arm64/vm_machdep.c | 3 +++ sys/arm64/include/cpu.h | 3 +++ sys/arm64/include/elf.h | 3 +++ sys/arm64/include/proc.h | 7 ++++++- sys/arm64/include/vmparam.h | 3 ++- sys/sys/param.h | 2 +- tests/sys/kern/ptrace_test.c | 2 +- 14 files changed, 115 insertions(+), 11 deletions(-) diff --git a/sys/arm64/arm64/efirt_machdep.c b/sys/arm64/arm64/efirt_machdep.c index 0f46e44f5d6a..0301eb91c9ef 100644 --- a/sys/arm64/arm64/efirt_machdep.c +++ b/sys/arm64/arm64/efirt_machdep.c @@ -241,6 +241,7 @@ fail: int efi_arch_enter(void) { + uint64_t tcr; CRITICAL_ASSERT(curthread); curthread->td_md.md_efirt_dis_pf = vm_fault_disable_pagefaults(); @@ -249,7 +250,17 @@ efi_arch_enter(void) * Temporarily switch to EFI's page table. However, we leave curpmap * unchanged in order to prevent its ASID from being reclaimed before * we switch back to its page table in efi_arch_leave(). + * + * UEFI sdoesn't care about TBI, so enable it. It's more likely + * userspace will have TBI on as it's only disabled for backwards + * compatibility. */ + tcr = READ_SPECIALREG(tcr_el1); + if ((tcr & MD_TCR_FIELDS) != TCR_TBI0) { + tcr &= ~MD_TCR_FIELDS; + tcr |= TCR_TBI0; + WRITE_SPECIALREG(tcr_el1, tcr); + } set_ttbr0(efi_ttbr0); if (PCPU_GET(bcast_tlbi_workaround) != 0) invalidate_local_icache(); @@ -260,6 +271,7 @@ efi_arch_enter(void) void efi_arch_leave(void) { + uint64_t proc_tcr, tcr; /* * Restore the pcpu pointer. Some UEFI implementations trash it and @@ -271,6 +283,13 @@ efi_arch_leave(void) __asm __volatile( "mrs x18, tpidr_el1 \n" ); + proc_tcr = curthread->td_proc->p_md.md_tcr; + tcr = READ_SPECIALREG(tcr_el1); + if ((tcr & MD_TCR_FIELDS) != proc_tcr) { + tcr &= ~MD_TCR_FIELDS; + tcr |= proc_tcr; + WRITE_SPECIALREG(tcr_el1, tcr); + } set_ttbr0(pmap_to_ttbr0(PCPU_GET(curpmap))); if (PCPU_GET(bcast_tlbi_workaround) != 0) invalidate_local_icache(); diff --git a/sys/arm64/arm64/elf_machdep.c b/sys/arm64/arm64/elf_machdep.c index 970dba0ca7d9..13af5c5065d6 100644 --- a/sys/arm64/arm64/elf_machdep.c +++ b/sys/arm64/arm64/elf_machdep.c @@ -65,7 +65,13 @@ u_long __read_frequently linux_elf_hwcap2; u_long __read_frequently linux_elf_hwcap3; u_long __read_frequently linux_elf_hwcap4; -struct arm64_addr_mask elf64_addr_mask; +struct arm64_addr_mask elf64_addr_mask = { + .code = TBI_ADDR_MASK, + .data = TBI_ADDR_MASK, +}; +#ifdef COMPAT_FREEBSD14 +struct arm64_addr_mask elf64_addr_mask_14; +#endif static void arm64_exec_protect(struct image_params *, int); @@ -136,7 +142,14 @@ get_arm64_addr_mask(struct regset *rs, struct thread *td, void *buf, if (buf != NULL) { KASSERT(*sizep == sizeof(elf64_addr_mask), ("%s: invalid size", __func__)); - memcpy(buf, &elf64_addr_mask, sizeof(elf64_addr_mask)); +#ifdef COMPAT_FREEBSD14 + /* running an old binary use the old address mask */ + if (td->td_proc->p_osrel < TBI_VERSION) + memcpy(buf, &elf64_addr_mask_14, + sizeof(elf64_addr_mask_14)); + else +#endif + memcpy(buf, &elf64_addr_mask, sizeof(elf64_addr_mask)); } *sizep = sizeof(elf64_addr_mask); diff --git a/sys/arm64/arm64/exec_machdep.c b/sys/arm64/arm64/exec_machdep.c index 751329affd91..7c50dc93fdb4 100644 --- a/sys/arm64/arm64/exec_machdep.c +++ b/sys/arm64/arm64/exec_machdep.c @@ -51,6 +51,7 @@ #include #include +#include #include #include #include @@ -411,6 +412,7 @@ exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) { struct trapframe *tf = td->td_frame; struct pcb *pcb = td->td_pcb; + uint64_t new_tcr, tcr; memset(tf, 0, sizeof(struct trapframe)); @@ -433,6 +435,35 @@ exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) */ bzero(&pcb->pcb_dbg_regs, sizeof(pcb->pcb_dbg_regs)); + /* If the process is new enough enable TBI */ + if (td->td_proc->p_osrel >= TBI_VERSION) + new_tcr = TCR_TBI0; + else + new_tcr = 0; + td->td_proc->p_md.md_tcr = new_tcr; + + /* TODO: should create a pmap function for this... */ + tcr = READ_SPECIALREG(tcr_el1); + if ((tcr & MD_TCR_FIELDS) != new_tcr) { + uint64_t asid; + + tcr &= ~MD_TCR_FIELDS; + tcr |= new_tcr; + WRITE_SPECIALREG(tcr_el1, tcr); + isb(); + + /* + * TCR_EL1.TBI0 is permitted to be cached in the TLB, so + * we need to perform a TLB invalidation. + */ + asid = READ_SPECIALREG(ttbr0_el1) & TTBR_ASID_MASK; + __asm __volatile( + "tlbi aside1is, %0 \n" + "dsb ish \n" + "isb \n" + : : "r" (asid)); + } + /* Generate new pointer authentication keys */ ptrauth_exec(td); } diff --git a/sys/arm64/arm64/genassym.c b/sys/arm64/arm64/genassym.c index e3977798b046..22696796e69d 100644 --- a/sys/arm64/arm64/genassym.c +++ b/sys/arm64/arm64/genassym.c @@ -64,6 +64,7 @@ ASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault)); ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags)); ASSYM(P_PID, offsetof(struct proc, p_pid)); +ASSYM(P_MD_TCR, offsetof(struct proc, p_md.md_tcr)); ASSYM(SF_UC, offsetof(struct sigframe, sf_uc)); diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 07955866bd1c..ec89c4573799 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -469,7 +469,7 @@ static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap, vm_offset_t va); static void pmap_abort_ptp(pmap_t pmap, vm_offset_t va, vm_page_t mpte); -static bool pmap_activate_int(pmap_t pmap); +static bool pmap_activate_int(struct thread *td, pmap_t pmap); static void pmap_alloc_asid(pmap_t pmap); static int pmap_change_props_locked(vm_offset_t va, vm_size_t size, vm_prot_t prot, int mode, bool skip_unmapped); @@ -9113,7 +9113,7 @@ pmap_init_cnp(void *dummy __unused) SYSINIT(pmap_init_cnp, SI_SUB_SMP, SI_ORDER_ANY, pmap_init_cnp, NULL); static bool -pmap_activate_int(pmap_t pmap) +pmap_activate_int(struct thread *td, pmap_t pmap) { struct asid_set *set; int epoch; @@ -9152,6 +9152,15 @@ pmap_activate_int(pmap_t pmap) pmap_alloc_asid(pmap); if (pmap->pm_stage == PM_STAGE1) { + uint64_t new_tcr, tcr; + + new_tcr = td->td_proc->p_md.md_tcr; + tcr = READ_SPECIALREG(tcr_el1); + if ((tcr & MD_TCR_FIELDS) != new_tcr) { + tcr &= ~MD_TCR_FIELDS; + tcr |= new_tcr; + WRITE_SPECIALREG(tcr_el1, tcr); + } set_ttbr0(pmap_to_ttbr0(pmap)); if (PCPU_GET(bcast_tlbi_workaround) != 0) invalidate_local_icache(); @@ -9165,7 +9174,7 @@ pmap_activate_vm(pmap_t pmap) PMAP_ASSERT_STAGE2(pmap); - (void)pmap_activate_int(pmap); + (void)pmap_activate_int(NULL, pmap); } void @@ -9176,7 +9185,7 @@ pmap_activate(struct thread *td) pmap = vmspace_pmap(td->td_proc->p_vmspace); PMAP_ASSERT_STAGE1(pmap); critical_enter(); - (void)pmap_activate_int(pmap); + (void)pmap_activate_int(td, pmap); critical_exit(); } @@ -9202,7 +9211,7 @@ pmap_switch(struct thread *new) * to a user process. */ - if (pmap_activate_int(vmspace_pmap(new->td_proc->p_vmspace))) { + if (pmap_activate_int(new, vmspace_pmap(new->td_proc->p_vmspace))) { /* * Stop userspace from training the branch predictor against * other processes. This will call into a CPU specific diff --git a/sys/arm64/arm64/ptrauth.c b/sys/arm64/arm64/ptrauth.c index 767b7e115479..dbe0c69b8d60 100644 --- a/sys/arm64/arm64/ptrauth.c +++ b/sys/arm64/arm64/ptrauth.c @@ -149,6 +149,10 @@ ptrauth_enable(const struct cpu_feat *feat __unused, enable_ptrauth = true; elf64_addr_mask.code |= PAC_ADDR_MASK; elf64_addr_mask.data |= PAC_ADDR_MASK; +#ifdef COMPAT_FREEBSD14 + elf64_addr_mask_14.code |= PAC_ADDR_MASK_14; + elf64_addr_mask_14.data |= PAC_ADDR_MASK_14; +#endif } diff --git a/sys/arm64/arm64/swtch.S b/sys/arm64/arm64/swtch.S index 7b6010a5f51f..a461fded929c 100644 --- a/sys/arm64/arm64/swtch.S +++ b/sys/arm64/arm64/swtch.S @@ -37,6 +37,8 @@ #include #include +#include + .macro clear_step_flag pcbflags, tmp tbz \pcbflags, #PCB_SINGLE_STEP_SHIFT, 999f mrs \tmp, mdscr_el1 @@ -239,6 +241,16 @@ ENTRY(fork_trampoline) msr daifset, #(DAIF_D | DAIF_INTR) ldr x0, [x18, #PC_CURTHREAD] + + /* Set the per-process tcr_el1 fields */ + ldr x10, [x0, #TD_PROC] + ldr x10, [x10, #P_MD_TCR] + mrs x11, tcr_el1 + and x11, x11, #(~MD_TCR_FIELDS) + orr x11, x11, x10 + msr tcr_el1, x11 + /* No isb as the eret below is the context-synchronising event */ + bl ptrauth_enter_el0 /* Restore sp, lr, elr, and spsr */ diff --git a/sys/arm64/arm64/vm_machdep.c b/sys/arm64/arm64/vm_machdep.c index 38a126ff602f..0134feb65b6a 100644 --- a/sys/arm64/arm64/vm_machdep.c +++ b/sys/arm64/arm64/vm_machdep.c @@ -120,6 +120,9 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags) td2->td_md.md_spinlock_count = 1; td2->td_md.md_saved_daif = PSR_DAIF_DEFAULT; + /* Copy the TCR_EL1 value */ + td2->td_proc->p_md.md_tcr = td1->td_proc->p_md.md_tcr; + #if defined(PERTHREAD_SSP) /* Set the new canary */ arc4random_buf(&td2->td_md.md_canary, sizeof(td2->td_md.md_canary)); diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h index 935e3754bf25..59cda36f275e 100644 --- a/sys/arm64/include/cpu.h +++ b/sys/arm64/include/cpu.h @@ -226,6 +226,9 @@ extern uint64_t __cpu_affinity[]; struct arm64_addr_mask; extern struct arm64_addr_mask elf64_addr_mask; +#ifdef COMPAT_FREEBSD14 +extern struct arm64_addr_mask elf64_addr_mask_14; +#endif typedef void (*cpu_reset_hook_t)(void); extern cpu_reset_hook_t cpu_reset_hook; diff --git a/sys/arm64/include/elf.h b/sys/arm64/include/elf.h index d6328c143585..81ee7392f866 100644 --- a/sys/arm64/include/elf.h +++ b/sys/arm64/include/elf.h @@ -93,6 +93,9 @@ __ElfType(Auxinfo); #define ET_DYN_LOAD_ADDR 0x100000 #endif +/* First __FreeBSD_version that supports Top Byte Ignore (TBI) */ +#define TBI_VERSION 1500058 + /* HWCAP */ #define HWCAP_FP (1 << 0) #define HWCAP_ASIMD (1 << 1) diff --git a/sys/arm64/include/proc.h b/sys/arm64/include/proc.h index dc2fa2df654d..184743d4cc80 100644 --- a/sys/arm64/include/proc.h +++ b/sys/arm64/include/proc.h @@ -35,6 +35,7 @@ #ifndef _MACHINE_PROC_H_ #define _MACHINE_PROC_H_ +#ifndef LOCORE struct ptrauth_key { uint64_t pa_key_lo; uint64_t pa_key_hi; @@ -73,8 +74,12 @@ struct mdthread { }; struct mdproc { - long md_dummy; + uint64_t md_tcr; /* TCR_EL1 fields to update */ }; +#endif /* !LOCORE */ + +/* Fields that can be set in md_tcr */ +#define MD_TCR_FIELDS TCR_TBI0 #define KINFO_PROC_SIZE 1088 #define KINFO_PROC32_SIZE 816 diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h index c30ca1b2bff4..781602306436 100644 --- a/sys/arm64/include/vmparam.h +++ b/sys/arm64/include/vmparam.h @@ -209,7 +209,8 @@ #define KMSAN_ORIG_MAX_ADDRESS (0xffff028000000000UL) /* The address bits that hold a pointer authentication code */ -#define PAC_ADDR_MASK (0xff7f000000000000UL) +#define PAC_ADDR_MASK (0x007f000000000000UL) +#define PAC_ADDR_MASK_14 (0xff7f000000000000UL) /* The top-byte ignore address bits */ #define TBI_ADDR_MASK 0xff00000000000000UL diff --git a/sys/sys/param.h b/sys/sys/param.h index de3697d6dedd..72061bd8134e 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -74,7 +74,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1500057 +#define __FreeBSD_version 1500058 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/tests/sys/kern/ptrace_test.c b/tests/sys/kern/ptrace_test.c index d36dfe951e20..fee0bd2ffa38 100644 --- a/tests/sys/kern/ptrace_test.c +++ b/tests/sys/kern/ptrace_test.c @@ -3239,7 +3239,7 @@ ATF_TC_BODY(ptrace__PT_REGSET, tc) ATF_REQUIRE(ptrace(PT_GETREGSET, wpid, (caddr_t)&vec, NT_ARM_ADDR_MASK) != -1); REQUIRE_EQ(addr_mask.code, addr_mask.data); - ATF_REQUIRE(addr_mask.code == 0 || + ATF_REQUIRE(addr_mask.code == 0xff00000000000000ul || addr_mask.code == 0xff7f000000000000UL); #endif From nobody Fri Aug 8 09:37:40 2025 X-Original-To: dev-commits-src-main@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 4byzTd0bxzz63Qlg; Fri, 08 Aug 2025 09:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTd01BCz43Md; Fri, 08 Aug 2025 09:37:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VUYDKAXHcMUi6cgjQHv/8kYpso+2MbcHyeCzif2i6O4=; b=VqEa4VdMwpxo6KhpJKH26kpzPA4A8Mx6c7qDf/38ZfqIhb0vyJUxixgIzt1VFRkx56OCIh xTj96mST/IPp8NC/AIgXCtKbHbOv8Ve3tj5to4QiEsk7XAdaKMODSVTGnufLve27ZYPh+0 HkGi23llH+IT/IsqkZiaHEgm7lcc9TpOBuiI/ZhXfvXqb21p7BXCaLa8k2CmsJbVtAjA3c Rszcj4Xcv0cOkpqPhbJA4MiCCxtV/BIGHcd5DTS/xkKNMGECa9eJSOeeg/8lAWc1BLeQt/ l3/s1soYSlQ2nw/pUicvdraP2bB66LUaDQ83DZADHdTO/JNtVHDUotZSiM9caQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645861; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VUYDKAXHcMUi6cgjQHv/8kYpso+2MbcHyeCzif2i6O4=; b=C2H2ofnEjG0tyiQspgA4yytOiLCOPCw+aDvUJ93GzZshUNGUGzw4p2Us3OUkV3v4aKxpJW iRWUX8CfgYpyc4Gakzdt9RrN0g2E1Huc9ja5XJWxq77u1qJCVBnA1sosZ+KEjxv4uKSYdo 2eXcirDLAm5XstC1mqMVAXNojbYYPGzTZRjVBO8Uk+JhS1CiaOSb9vYKOPr/aE4qjCfMG8 TeTYuflxIG2afe/eoNKWN/IBH+lBMzafBWSKdzATEjfXfQF7e2kABgrhl1KlU8RYRFRJ4q 0gcc4lqcnAqP0NQTKSrDjSaZ94E9cEQzCExzALMPn88AwfK6NARxezOdhHybYA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645861; a=rsa-sha256; cv=none; b=xx2z9mZIn/FtwzuRESkl962UsDHx9HJxyQ6X/CGLIP1dtndEva8MzwyO0BJ+Be3iNAjq+t jxNyyAVyU8S+JiH5xMD7ZYm4XQpf/LPnsiagWd6uCZBkscAsLJ+me9BNnJAl/cuwLCvKae 4DpfC8luI0WAt4EcdSC2cjQAEI8nKf/UZ16vkM7QMI5L4b/aGeu8AKdxarLAl9hZD7s74q m1e5JbHvIcxw9Oj1IWLyvWAiC5WMVgcEjggUmKyewkSuNZrsalg9P4/MepbPNAigDqvxJB 08FOVOwqFe4Dki41umTZNRitk3lsTg5crP6zEVp0CJxBWPcusg5iF5m41TLR9Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTc6LkYzTvQ; Fri, 08 Aug 2025 09:37:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789beo9082908; Fri, 8 Aug 2025 09:37:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789beFU082905; Fri, 8 Aug 2025 09:37:40 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:40 GMT Message-Id: <202508080937.5789beFU082905@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: fd4cdc438b77 - main - rtld: fix dependencies for rtld-libc List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fd4cdc438b7740007b06ea97431cc724e9aae185 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=fd4cdc438b7740007b06ea97431cc724e9aae185 commit fd4cdc438b7740007b06ea97431cc724e9aae185 Author: Brooks Davis AuthorDate: 2025-08-08 09:30:16 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:16 +0000 rtld: fix dependencies for rtld-libc Previously we (appropriately, but incorrectly) attempted to depend on LIBC_NOSSP_PIC and LIBSYS_PIC for rtld_libc.a. Unfortunately, variables in dependency lists are expanded at parse time and those variables are defined in bsd.libnames.mk which *must* be included by bsd.{lib,prog}.mk. As such, they were undefined and thus expanded to the empty string resulting in no dependency with predictable and highly confusing results. Move the declaration of these dependencies to after the include of bsd.prog.mk and add comments on both side in hopes of keeping any future dependencies in sync. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D51790 --- libexec/rtld-elf/Makefile | 4 ++++ libexec/rtld-elf/rtld-libc/Makefile.inc | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile index 0dbd2b8aa935..b6ff7681e658 100644 --- a/libexec/rtld-elf/Makefile +++ b/libexec/rtld-elf/Makefile @@ -128,3 +128,7 @@ ${PROG_FULL}: ${VERSION_MAP} # and are therefore not identical to the ones from the system headers. CFLAGS+= -Wno-redundant-decls .endif + +# Add dependencies on libc and libsys archives after bsd.prog.mk +# includes bsd.libnames.mk so they are defined. +rtld_libc.a: ${LIBC_NOSSP_PIC} ${LIBSYS_PIC} diff --git a/libexec/rtld-elf/rtld-libc/Makefile.inc b/libexec/rtld-elf/rtld-libc/Makefile.inc index b16f84f398d0..a10bd562a7ce 100644 --- a/libexec/rtld-elf/rtld-libc/Makefile.inc +++ b/libexec/rtld-elf/rtld-libc/Makefile.inc @@ -96,7 +96,11 @@ CLEANFILES+=${_obj}.pico # We insert all the .o files from libc_nossp_pic.a into a new rtld_libc.a file # to ensure that only .o files that are actually used end up being included. -rtld_libc.a: ${LIBC_NOSSP_PIC} ${LIBSYS_PIC} ${SRCTOP}/libexec/rtld-elf/rtld-libc/Makefile.inc +# +# XXX: we add dependencies on the source libraries in ../Makefile after +# bsd.prog.mk includes bsd.libnames.mk since variables in dependencies are +# expanded when parsed. +rtld_libc.a: ${SRCTOP}/libexec/rtld-elf/rtld-libc/Makefile.inc @rm -f ${.TARGET} ${AR} x ${LIBC_NOSSP_PIC} ${_rtld_libc_objs} ${AR} x ${LIBSYS_PIC} ${_rtld_libsys_objs} From nobody Fri Aug 8 09:37:41 2025 X-Original-To: dev-commits-src-main@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 4byzTf2gfzz63Qfq; Fri, 08 Aug 2025 09:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTf1F9lz437p; Fri, 08 Aug 2025 09:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645862; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M6NF2O5f/lOa5UGg7bqLHUT/Rgsh6UWLnwsHkL4m5Dc=; b=lxfXxx8rh1QgrwB65vGQAUhKz4K1YuroYdsxN7H95dLWFRj32emPFmBA46sB8OIzHjEkdG kfNDZRRv6V/zr4JbQNGDDH+r/tbgZDz7CS2mxz1f8/ovNMWPxXOhCyd4iD1bDTfq5hIZYp Rwr/O1RTUq6zgMFAyTtHLDqcJPG4DV4t6JPLmJv1EmD8zCEH5vBBIZiW4Zx/+bkmm4aP4r FG9Mfoc5KyVhZ/Xanj6+ctGIKQqKXj9KrZ8G8R66KzQxiq4IohAI4V+CL3SxfgBHh2bDB2 QvNjcnm2LzOT97Cd3ue5xfP+U3uBKzDsQLgppNl4juhKwkWpGsChT0ZhFhqW7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645862; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M6NF2O5f/lOa5UGg7bqLHUT/Rgsh6UWLnwsHkL4m5Dc=; b=l5aFHe6JKPRa73M1J8RIb9MhKJ096m7O9I6ILiRV8SPd0rxrkQUXPjkA/bsz7ua9Jx/Nmq 2JP4TfJTddXoQcU+y+8DKOTHB45p8oupYqlcf0ycKr7Vy3hU/OItNE0iQ7gut2eOdNASt2 Mx+47VB0pBiF1AbdHlIcJe0UVJ0jBhQoQlbaM4az10LmOUtwyn61A3vG1xtiwnqsUe2HDv CfAMmido3ioM0oVWv9IFcZLqIEz4miEeWbYcCrxR3z+UN+Gk3OrqT6I3CKHlftdVvqBkRd GHgnOzNwccUpnURXiLFI8bcOc+5a046wamzCXe/Jz1EZ1JlDxZdR/w/Ap3M1Vw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645862; a=rsa-sha256; cv=none; b=ZOOR/embH6SusIoPR83VWh6ksUl4jH6jw2YXvzZfrWXTdu60qFlCrs84q0OaK/3hASXIVA hiQx0NEnhfxzMf1H4TH3MMUAXTHD8Lu94MQnDTMbjBk956KXAFARm+Do49YSkO1ydkVu4L 3RiPcqjk3jWY4EbrB/8y0QpklypDVb+pwkRHoIWRRWTT0jWNbN0R24ojdq+aZmRI23/YxG UxXB75loLHVhkUa4TkQc08jDAJqYGKKJpQBZFI+EGBpq7jGu6NzaMgYC7jyTLo07CdtBnp qqbemVgptC4fRMclZTSoWuD6YSQm6MbAXckNF6slBI9OGOyG0vxppHpmcabYBQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTf0WlyzVXX; Fri, 08 Aug 2025 09:37:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789bfME082942; Fri, 8 Aug 2025 09:37:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789bfSs082939; Fri, 8 Aug 2025 09:37:41 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:41 GMT Message-Id: <202508080937.5789bfSs082939@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: e7e964cb2ebd - main - syscalls: normalize _exit(2) declerations List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7e964cb2ebde11593786a28cea0238d9a6e24c3 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=e7e964cb2ebde11593786a28cea0238d9a6e24c3 commit e7e964cb2ebde11593786a28cea0238d9a6e24c3 Author: Brooks Davis AuthorDate: 2025-08-08 09:30:16 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:16 +0000 syscalls: normalize _exit(2) declerations exit(3) is implemented by the runtime and performs a number of shutdown actions before ultimately calling _exit(2) to terminate the program. We historically named the syscall table entry `exit` rather than `_exit`, but this requires special handling in libc/libsys to cause the `_exit` symbol to exist while implementing `exit` in libc. Declare the syscall as `_exit` and flow that through the system. Because syscall(SYS_exit, code) is fairly widely used, allow a configured extra line in syscall.h to define SYS_exit to SYS__exit. I've found no external uses of __sys_exit() so I've not bothered to create a compatability version of this private symbol. Reviewed by: imp, kib, emaste Differential Revision: https://reviews.freebsd.org/D51672 --- lib/libsys/Makefile.sys | 1 - libexec/rtld-elf/rtld-libc/rtld_libc.h | 6 +++--- sys/kern/kern_exit.c | 2 +- sys/kern/syscalls.conf | 1 + sys/kern/syscalls.master | 2 +- sys/tools/syscalls/config.lua | 1 + sys/tools/syscalls/scripts/syscall_h.lua | 4 ++++ sys/tools/syscalls/scripts/syscalls_map.lua | 2 +- 8 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/libsys/Makefile.sys b/lib/libsys/Makefile.sys index 7871731dcdcd..bd65b58083c2 100644 --- a/lib/libsys/Makefile.sys +++ b/lib/libsys/Makefile.sys @@ -52,7 +52,6 @@ STATICOBJS+= interposing_table.o PSEUDO= \ __realpathat \ clock_gettime \ - exit \ getlogin \ gettimeofday \ sched_getcpu diff --git a/libexec/rtld-elf/rtld-libc/rtld_libc.h b/libexec/rtld-elf/rtld-libc/rtld_libc.h index 35b4ef32cf87..33601d73cbf9 100644 --- a/libexec/rtld-elf/rtld-libc/rtld_libc.h +++ b/libexec/rtld-elf/rtld-libc/rtld_libc.h @@ -44,7 +44,7 @@ #define __libc_interposing error, must not use this variable inside rtld int __sys_close(int); -void __sys_exit(int) __dead2; +void __sys__exit(int) __dead2; int __sys_fcntl(int, int, ...); int __sys_fstat(int fd, struct stat *); int __sys_fstatat(int, const char *, struct stat *, int); @@ -70,8 +70,8 @@ int __getosreldate(void); */ #define close(fd) __sys_close(fd) #define _close(fd) __sys_close(fd) -#define exit(status) __sys_exit(status) -#define _exit(status) __sys_exit(status) +#define exit(status) __sys__exit(status) +#define _exit(status) __sys__exit(status) #define fcntl(fd, cmd, arg) __sys_fcntl(fd, cmd, arg) #define _fcntl(fd, cmd, arg) __sys_fcntl(fd, cmd, arg) #define _fstat(fd, sb) __sys_fstat(fd, sb) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 54e3044ab093..a32b5a1b3354 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -202,7 +202,7 @@ exit_onexit(struct proc *p) * exit -- death of process. */ int -sys_exit(struct thread *td, struct exit_args *uap) +sys__exit(struct thread *td, struct _exit_args *uap) { exit1(td, uap->rval, 0); diff --git a/sys/kern/syscalls.conf b/sys/kern/syscalls.conf index a98d52659832..ae7bd1f87612 100644 --- a/sys/kern/syscalls.conf +++ b/sys/kern/syscalls.conf @@ -1,3 +1,4 @@ libsysmap="../../lib/libsys/syscalls.map" libsys_h="../../lib/libsys/_libsys.h" sysmk="../sys/syscall.mk" +syshdr_extra="#define SYS_exit SYS__exit" diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index a8815afee866..29f9d9dae390 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -125,7 +125,7 @@ ); } 1 AUE_EXIT STD|CAPENABLED { - void exit( + void _exit( int rval ); } diff --git a/sys/tools/syscalls/config.lua b/sys/tools/syscalls/config.lua index fcf4c2217959..91a8a5af68dd 100644 --- a/sys/tools/syscalls/config.lua +++ b/sys/tools/syscalls/config.lua @@ -24,6 +24,7 @@ local util = require("tools.util") local config = { sysnames = "syscalls.c", syshdr = "../sys/syscall.h", + syshdr_extra = nil; sysmk = "/dev/null", syssw = "init_sysent.c", systrace = "systrace_args.c", diff --git a/sys/tools/syscalls/scripts/syscall_h.lua b/sys/tools/syscalls/scripts/syscall_h.lua index 5f8d8fb66889..d05a1799935b 100755 --- a/sys/tools/syscalls/scripts/syscall_h.lua +++ b/sys/tools/syscalls/scripts/syscall_h.lua @@ -38,6 +38,10 @@ function syscall_h.generate(tbl, config, fh) -- Write the generated preamble. gen:preamble("System call numbers.") + if config.syshdr_extra then + gen:write(string.format("%s\n\n", config.syshdr_extra)) + end + for _, v in pairs(s) do local c = v:compatLevel() if v.num > max then diff --git a/sys/tools/syscalls/scripts/syscalls_map.lua b/sys/tools/syscalls/scripts/syscalls_map.lua index 52c3b294e338..dfd61ae75bc0 100755 --- a/sys/tools/syscalls/scripts/syscalls_map.lua +++ b/sys/tools/syscalls/scripts/syscalls_map.lua @@ -39,7 +39,7 @@ function syscalls_map.generate(tbl, config, fh) for _, v in pairs(s) do gen:write(v.prolog) if v:native() and not v.type.NODEF and not v.type.NOLIB then - if v.name ~= "exit" and v.name ~= "vfork" then + if v.name ~= "_exit" and v.name ~= "vfork" then gen:write(string.format("\t_%s;\n", v.name)) end gen:write(string.format("\t__sys_%s;\n", v.name)) From nobody Fri Aug 8 09:37:43 2025 X-Original-To: dev-commits-src-main@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 4byzTh08YGz63Qlh; Fri, 08 Aug 2025 09:37:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTg2zYnz42vZ; Fri, 08 Aug 2025 09:37:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645863; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VoyyOWNDcdPjS4sTRTzXWNFK0gwwzSSaPEViko6fH10=; b=HGgceeParIdZoWmY8mMRP4avnE033N4cz+jZSyt+SPTbF3AQR0EOtsu6wfSeH7uquj6nrw i/QAhPr0A1QD6AgS8nFsG1nygaWmKfkNi0lcea/rR8KJjkdauzjZMwRtTmNFNeULQRohl+ JOXspDlyHj/sovKy/ZI+Y3w7CWlFqDOCctQR3FSq8BKPbqNNIo3Aq088objT6M+al8LV3t OoApYEBjVfaQtvqNFhnd1dGdXgi4lAZGFkW3bU60SaP95YdBZlZwV7iUXTmwk6xiuOQmwr d1XFSioDjLvpJQASfGAC0WULJPzaMMUJCe3fyoey/N+zG+IH0rxsa5grldOsZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645863; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VoyyOWNDcdPjS4sTRTzXWNFK0gwwzSSaPEViko6fH10=; b=IFjVEC5Yr3PpOju1/i39aOjDsqP/YdVdSDv2cYyJ0yT3t+Q2lILxeTEC6n6leNAzlAf1vs QsctFhEeV/W4C+eNlEfEaM4IVaesXDjpgDJOv7mNoWQkGhO3SI2TDnJFQGswPcJNv6gQRe uplZZY/TyCHWp1dVHa/3LwLDTtQYQGHwdUaN9FtRMEjQ8VceYVpHHjtYVbO2J5nUxvYitI xD6iHnahjwoU91pvWTWW3pcW+zqFFiF+JfrhO0Sw1SQedfRclErnJp1UubK25YGRcNwQjm 6F9wZ51UnUfaynOl9U3GkT05WUmmAWdAfyQmWgE6SLsFPLWtumtWDdlIZXyKzg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645863; a=rsa-sha256; cv=none; b=qhy7zT5m3OhZKXU02e5qJp0rbLZ1iCgb6+vkq8MSdRgcL/q5+vpXfZCp9LXA+tWfZrGy5g L+e7GNaH3/Ou6YsNQS7r5ud1e7zuIKyg9hUBriAkNr1td5qwVMY0yHYb/viOrSwfxp3lEy de0tRuCtMIWa2fuwvxsOvYVUqyOAN/Yx9UvFC8vgrjKBq9gSnSvOwbisaF82vxTedcQjOS C30OCX/q5oSHZ1ST5ng0uKoT3RL4gnSzHrvwSdCP2vD+NY7ONolLSc9XQnpITFevpnJSDW o77dJzhQorfyWG1VSzkeGztslQz/GuKoSkoCqG37GDFkFYXZv9b0uxD8F8by9g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTg19rLzTsb; Fri, 08 Aug 2025 09:37:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789bhbE082982; Fri, 8 Aug 2025 09:37:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789bhCC082976; Fri, 8 Aug 2025 09:37:43 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:43 GMT Message-Id: <202508080937.5789bhCC082976@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 8433f8cd064a - main - sysent: regen for _exit(2) normalization List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8433f8cd064a6c2f389e2cf5f447001c588a39e2 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=8433f8cd064a6c2f389e2cf5f447001c588a39e2 commit 8433f8cd064a6c2f389e2cf5f447001c588a39e2 Author: Brooks Davis AuthorDate: 2025-08-08 09:30:16 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:16 +0000 sysent: regen for _exit(2) normalization --- lib/libsys/_libsys.h | 4 ++-- lib/libsys/syscalls.map | 2 +- sys/compat/freebsd32/freebsd32_syscall.h | 2 +- sys/compat/freebsd32/freebsd32_syscalls.c | 2 +- sys/compat/freebsd32/freebsd32_sysent.c | 2 +- sys/compat/freebsd32/freebsd32_systrace_args.c | 8 ++++---- sys/kern/init_sysent.c | 2 +- sys/kern/syscalls.c | 2 +- sys/kern/systrace_args.c | 8 ++++---- sys/sys/syscall.h | 4 +++- sys/sys/syscall.mk | 2 +- sys/sys/sysproto.h | 6 +++--- 12 files changed, 23 insertions(+), 21 deletions(-) diff --git a/lib/libsys/_libsys.h b/lib/libsys/_libsys.h index 7a1685cca2d1..f763916d495d 100644 --- a/lib/libsys/_libsys.h +++ b/lib/libsys/_libsys.h @@ -65,7 +65,7 @@ struct uuid; union semun; __BEGIN_DECLS -typedef void (__sys_exit_t)(int); +typedef void (__sys__exit_t)(int); typedef int (__sys_fork_t)(void); typedef ssize_t (__sys_read_t)(int, void *, size_t); typedef ssize_t (__sys_write_t)(int, const void *, size_t); @@ -469,7 +469,7 @@ typedef int (__sys_exterrctl_t)(u_int, u_int, void *); typedef int (__sys_inotify_add_watch_at_t)(int, int, const char *, uint32_t); typedef int (__sys_inotify_rm_watch_t)(int, int); -void __sys_exit(int rval); +void __sys__exit(int rval); int __sys_fork(void); ssize_t __sys_read(int fd, void * buf, size_t nbyte); ssize_t __sys_write(int fd, const void * buf, size_t nbyte); diff --git a/lib/libsys/syscalls.map b/lib/libsys/syscalls.map index 69fce2ea7c63..dbb011343c8f 100644 --- a/lib/libsys/syscalls.map +++ b/lib/libsys/syscalls.map @@ -7,7 +7,7 @@ FBSDprivate_1.0 { _syscall; __sys_syscall; - __sys_exit; + __sys__exit; _fork; __sys_fork; _read; diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h index 8d2748098c00..971510ebb6b6 100644 --- a/sys/compat/freebsd32/freebsd32_syscall.h +++ b/sys/compat/freebsd32/freebsd32_syscall.h @@ -5,7 +5,7 @@ */ #define FREEBSD32_SYS_syscall 0 -#define FREEBSD32_SYS_exit 1 +#define FREEBSD32_SYS__exit 1 #define FREEBSD32_SYS_fork 2 #define FREEBSD32_SYS_read 3 #define FREEBSD32_SYS_write 4 diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c index bda373268cc5..79c414b675b1 100644 --- a/sys/compat/freebsd32/freebsd32_syscalls.c +++ b/sys/compat/freebsd32/freebsd32_syscalls.c @@ -6,7 +6,7 @@ const char *freebsd32_syscallnames[] = { "syscall", /* 0 = syscall */ - "exit", /* 1 = exit */ + "_exit", /* 1 = _exit */ "fork", /* 2 = fork */ "read", /* 3 = read */ "write", /* 4 = write */ diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c index ef0aff8bf852..1a4b0d87722c 100644 --- a/sys/compat/freebsd32/freebsd32_sysent.c +++ b/sys/compat/freebsd32/freebsd32_sysent.c @@ -68,7 +68,7 @@ /* The casts are bogus but will do for now. */ struct sysent freebsd32_sysent[] = { { .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 0 = syscall */ - { .sy_narg = AS(exit_args), .sy_call = (sy_call_t *)sys_exit, .sy_auevent = AUE_EXIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 1 = exit */ + { .sy_narg = AS(_exit_args), .sy_call = (sy_call_t *)sys__exit, .sy_auevent = AUE_EXIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 1 = _exit */ { .sy_narg = 0, .sy_call = (sy_call_t *)sys_fork, .sy_auevent = AUE_FORK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 2 = fork */ { .sy_narg = AS(read_args), .sy_call = (sy_call_t *)sys_read, .sy_auevent = AUE_READ, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 3 = read */ { .sy_narg = AS(write_args), .sy_call = (sy_call_t *)sys_write, .sy_auevent = AUE_WRITE, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 4 = write */ diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c index df445b15f86f..f9dc514bee7d 100644 --- a/sys/compat/freebsd32/freebsd32_systrace_args.c +++ b/sys/compat/freebsd32/freebsd32_systrace_args.c @@ -20,9 +20,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 0; break; } - /* exit */ + /* _exit */ case 1: { - struct exit_args *p = params; + struct _exit_args *p = params; iarg[a++] = p->rval; /* int */ *n_args = 1; break; @@ -3426,7 +3426,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) /* syscall */ case 0: break; - /* exit */ + /* _exit */ case 1: switch (ndx) { case 0: @@ -9235,7 +9235,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) switch (sysnum) { /* syscall */ case 0: - /* exit */ + /* _exit */ case 1: if (ndx == 0 || ndx == 1) p = "void"; diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c index 91792430d24c..c0a5479c9634 100644 --- a/sys/kern/init_sysent.c +++ b/sys/kern/init_sysent.c @@ -67,7 +67,7 @@ /* The casts are bogus but will do for now. */ struct sysent sysent[] = { { .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 0 = syscall */ - { .sy_narg = AS(exit_args), .sy_call = (sy_call_t *)sys_exit, .sy_auevent = AUE_EXIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 1 = exit */ + { .sy_narg = AS(_exit_args), .sy_call = (sy_call_t *)sys__exit, .sy_auevent = AUE_EXIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 1 = _exit */ { .sy_narg = 0, .sy_call = (sy_call_t *)sys_fork, .sy_auevent = AUE_FORK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 2 = fork */ { .sy_narg = AS(read_args), .sy_call = (sy_call_t *)sys_read, .sy_auevent = AUE_READ, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 3 = read */ { .sy_narg = AS(write_args), .sy_call = (sy_call_t *)sys_write, .sy_auevent = AUE_WRITE, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 4 = write */ diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c index 90a4f3a7dad8..09bf4d519927 100644 --- a/sys/kern/syscalls.c +++ b/sys/kern/syscalls.c @@ -6,7 +6,7 @@ const char *syscallnames[] = { "syscall", /* 0 = syscall */ - "exit", /* 1 = exit */ + "_exit", /* 1 = _exit */ "fork", /* 2 = fork */ "read", /* 3 = read */ "write", /* 4 = write */ diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c index 467caa71f20d..4dfc63924da9 100644 --- a/sys/kern/systrace_args.c +++ b/sys/kern/systrace_args.c @@ -17,9 +17,9 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 0; break; } - /* exit */ + /* _exit */ case 1: { - struct exit_args *p = params; + struct _exit_args *p = params; iarg[a++] = p->rval; /* int */ *n_args = 1; break; @@ -3513,7 +3513,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) /* syscall */ case 0: break; - /* exit */ + /* _exit */ case 1: switch (ndx) { case 0: @@ -9380,7 +9380,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) switch (sysnum) { /* syscall */ case 0: - /* exit */ + /* _exit */ case 1: if (ndx == 0 || ndx == 1) p = "void"; diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h index eec923d0b82e..d703a11fda01 100644 --- a/sys/sys/syscall.h +++ b/sys/sys/syscall.h @@ -4,8 +4,10 @@ * DO NOT EDIT-- this file is automatically @generated. */ +#define SYS_exit SYS__exit + #define SYS_syscall 0 -#define SYS_exit 1 +#define SYS__exit 1 #define SYS_fork 2 #define SYS_read 3 #define SYS_write 4 diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk index 547242a73277..b7ded62cacb4 100644 --- a/sys/sys/syscall.mk +++ b/sys/sys/syscall.mk @@ -6,7 +6,7 @@ MIASM = \ syscall.o \ - exit.o \ + _exit.o \ fork.o \ read.o \ write.o \ diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h index c7420ac6bb8c..8d666f9c8ee9 100644 --- a/sys/sys/sysproto.h +++ b/sys/sys/sysproto.h @@ -33,7 +33,7 @@ struct thread; #define PADR_(t) 0 #endif -struct exit_args { +struct _exit_args { char rval_l_[PADL_(int)]; int rval; char rval_r_[PADR_(int)]; }; struct fork_args { @@ -1901,7 +1901,7 @@ struct inotify_rm_watch_args { char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; char wd_l_[PADL_(int)]; int wd; char wd_r_[PADR_(int)]; }; -int sys_exit(struct thread *, struct exit_args *); +int sys__exit(struct thread *, struct _exit_args *); int sys_fork(struct thread *, struct fork_args *); int sys_read(struct thread *, struct read_args *); int sys_write(struct thread *, struct write_args *); @@ -2802,7 +2802,7 @@ int freebsd13_swapoff(struct thread *, struct freebsd13_swapoff_args *); #endif /* COMPAT_FREEBSD14 */ -#define SYS_AUE_exit AUE_EXIT +#define SYS_AUE__exit AUE_EXIT #define SYS_AUE_fork AUE_FORK #define SYS_AUE_read AUE_READ #define SYS_AUE_write AUE_WRITE From nobody Fri Aug 8 09:37:44 2025 X-Original-To: dev-commits-src-main@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 4byzTh6LWQz63QrB; Fri, 08 Aug 2025 09:37:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTh2Fgdz43KS; Fri, 08 Aug 2025 09:37:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645864; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KxBE7KCBlxO2NmsQ2xF0AlIWD3iajPrnkSkirYhhcmo=; b=OPgTFa8hyWU2AxaiJlFNGqwGigb6Xk/4Wjm/XVUrRS+n0YnqORrtybeBfD+P3cMn4HIgg1 T3TUrUyVWrx0Qq1CZfIrVY7PBRFBvwuO3LrkzZ/MEZfjC0E/zb9WShhhbNmmyJwqlLGP0P 3Bd5qcbQVunaVtHNAEetPaKxoTmNognE7yE6GZtcCL/vJBlss/G/6GWqV4Kzibg+FXbRfB nNaSLTFqwlcmwPFPrbQysHoKrOXZLOPdMRZTA2WctB8FbtG3WuEGjTYWZelkqj6KqrHG3F 89n9Du4eU3sGaYwlNLeNuJc+FHYTu8W1pC0Ot47vOv084eZbXo5Db0CSikWEJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645864; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KxBE7KCBlxO2NmsQ2xF0AlIWD3iajPrnkSkirYhhcmo=; b=RwAyGyi0NJqKIGnpaGm4iCnOIH3xEYTZmkppANygOQPhtQShW6axkqhHgUpcult+Ljaau2 DywmKNR2oDL7xJCuZU4OToB92jdPH0NqtRya7lOr1dvkIe/m4b/VQYSO8aff06TwF2Ony5 cYaOLvp2jnDtO0bryIrBqQ6BtoA9hE5T01FjxPaEsIosBy6TXGGsecj8quhyKNK0tHsaLs gpzX71qHpEJ/4KoIju8PJlD/w5tlQYANnvBR/rADZdgaNoM2LgUeR3mhg5uwSuxC7Be/cp rCWjuGQHUWEhLomD4L8IC3KPnCQUuWWMpxaVU4OJaGQRxJISBdBkIVaNRP032g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645864; a=rsa-sha256; cv=none; b=RcFAHY80G9+5yIeH52NrRyIk4NBWMAUbgBJd4/TkTyJ0Gl83z9aGrhcokMnlsgj4KGFqrV y4TdTwrsgQzWkS2Hek+0hZPU+HNYYTa1GfSLoAMiycoddsm/AmGU+ZMWtaMAPOs4nMClpw WaIhs0U2q/lWI1jccSeH6+4OhDYrDivlrajTHy0Dv9XhqTkdv82rKgOw7yW9lNoVNlwWyb MRwbyXh5Q2ZT0SZRshBIzu8ullL/t5M8Nr1XM8F9texmAedoq5p1rpQfLOcaPjP7Cf0ubK eqymHz3qC6QrToqy0WuKA02ERWAPzwtKZaBji6wPrFrPl299JgjBoMZIYxZ1fQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTh1qjNzVbB; Fri, 08 Aug 2025 09:37:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789biql083015; Fri, 8 Aug 2025 09:37:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789biTg083012; Fri, 8 Aug 2025 09:37:44 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:44 GMT Message-Id: <202508080937.5789biTg083012@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 202ac0975edc - main - sysent: add a new NORETURN type flag List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 202ac0975edcc4729e7016a9e9cb921de45e3a70 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=202ac0975edcc4729e7016a9e9cb921de45e3a70 commit 202ac0975edcc4729e7016a9e9cb921de45e3a70 Author: Brooks Davis AuthorDate: 2025-08-08 09:30:17 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:17 +0000 sysent: add a new NORETURN type flag System calls of type NORETURN don't return and their stubs are declare not to. Reviewed by: kevans, kib Differential Revision: https://reviews.freebsd.org/D51673 --- sys/kern/syscalls.master | 1 + sys/tools/syscalls/core/syscall.lua | 1 + sys/tools/syscalls/scripts/libsys_h.lua | 8 ++++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 29f9d9dae390..9329a4213828 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -51,6 +51,7 @@ ; SYSMUX syscall multiplexer. No prototype, argument struct, or ; handler is declared or used. Handled in MD syscall code. ; CAPENABLED syscall is allowed in capability mode +; NORETURN the syscall does not return ; ; To support programmatic generation of both the default ABI and 32-bit compat ; (freebsd32) we impose a number of restrictions on the types of system calls. diff --git a/sys/tools/syscalls/core/syscall.lua b/sys/tools/syscalls/core/syscall.lua index e7e3dc3aac33..277613ec27b7 100644 --- a/sys/tools/syscalls/core/syscall.lua +++ b/sys/tools/syscalls/core/syscall.lua @@ -28,6 +28,7 @@ syscall.known_flags = util.set { -- flags beyond this point are modifiers "CAPENABLED", "NOLIB", + "NORETURN", "NOTSTATIC", "SYSMUX", } diff --git a/sys/tools/syscalls/scripts/libsys_h.lua b/sys/tools/syscalls/scripts/libsys_h.lua index 91349d5dc870..8c1993ecf683 100755 --- a/sys/tools/syscalls/scripts/libsys_h.lua +++ b/sys/tools/syscalls/scripts/libsys_h.lua @@ -76,8 +76,12 @@ function libsys_h.generate(tbl, config, fh) for _, v in pairs(s) do if print_decl(v) then - gen:write(string.format("%s __sys_%s(%s);\n", - v.ret, v.name, v.argstr_type_var)) + local ret_attr = ""; + if v.type.NORETURN then + ret_attr = "_Noreturn " + end + gen:write(string.format("%s%s __sys_%s(%s);\n", + ret_attr, v.ret, v.name, v.argstr_type_var)) end end From nobody Fri Aug 8 09:37:45 2025 X-Original-To: dev-commits-src-main@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 4byzTj5nkmz63Qlj; Fri, 08 Aug 2025 09:37:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTj2vHFz43Bs; Fri, 08 Aug 2025 09:37:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Br53EiZqFDTAwMnTzjINwLlOm+4zDk/bje+ZNmFT0Tk=; b=ZHhL0ZlyKI1vtytRc97Iu134Q9Xu+k7PQHty9p3BuPkIcpn1xDDP4VuBsbhBy2/ujiI6hQ 9tM76+FBVtca4aHihohcf9Jzkm1yeHAH8pJaxKCu/21FvRbWu8S5WdH91DSu4U3ihF28bX uEliR3mx2CT7HRndO7XfpOfP55AWtU6qsB/g9+5Kd+vsjNm3m+F5gkt0kE4wjDdJXocmRj Wwjkx7xJ3sIu4D28Fo13JGaXXWe8ErXRvfNr8wVDeTsuKzsDSQmO6C03mpEziROs1+JeXa mn2x0IaUmAoZ9lcswk0DtL4FibKjnU7TSydSffS9YzuBCSyb/Yhf3ugiE0jacg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Br53EiZqFDTAwMnTzjINwLlOm+4zDk/bje+ZNmFT0Tk=; b=aczlbietrjJKepxbdMlg3+Yy3F/lw8AQWfpJjhQqFbkLezd6tBYfOLbIoRL4E6kLFRCoRi Vgfcg96ksKFzvPBTrT85tBZUkYwioxxLw3kvHqIdt5kUuIAhAoMa5iHbThPR1drluFQO55 Ar3HMmuviwQqzk9BCGGiJREuD9bv6oOn/IH7jLSH0M5rSoP0Gt5Hi0QmMEgFRx16aY8xPQ DpuCYIKljij+eCn41yBXihccJBHAS8PR7OliDIzp//ODepz61tC+h7oIaxdsnO3/bBwKrd tBywplNMzX0U915r0wSjBmsX95Li78ywArNkHpUTdhwq4AnfBYOgOXojPr/XoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645865; a=rsa-sha256; cv=none; b=lRVfCws8Wv+dlJAMe4ctQXGXLqoyC2UtvtJ/2MUDAHqQMf3VsPVpO9Gx4jVF+bjMkm5bHN HCjmZVQx1/pTgDKgcbOeMS8Z7xowW+VF5o6/jQpGFwADXXDjkt5DnGNth5injWxqLTI8Gp C+MaRswz9+LnnAMuknG0qZbOm/Q9guZpQMgUqAZ2zpAPi2utHKKvvimqZMbnBiIeFiKkHR RwlCy+NhqnnrFRGcDEXv66Sym/qkaO1IZyYwSo4RYufNM6fltQdnZIvDlHQrklbwua+lv3 awgxte7DtwzdgivoRnHvZowkv7QXp1wi3r8WZPf4UnthJEHTSQ+SPIkjtpdfWQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTj2NsRzVXr; Fri, 08 Aug 2025 09:37:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789bjML083053; Fri, 8 Aug 2025 09:37:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789bjPl083049; Fri, 8 Aug 2025 09:37:45 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:45 GMT Message-Id: <202508080937.5789bjPl083049@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 2a2556879b4f - main - syscalls.master: mark _exit as not returning List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2a2556879b4f43146d3ce51d7cffd7354caff6dd Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=2a2556879b4f43146d3ce51d7cffd7354caff6dd commit 2a2556879b4f43146d3ce51d7cffd7354caff6dd Author: Brooks Davis AuthorDate: 2025-08-08 09:30:17 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:17 +0000 syscalls.master: mark _exit as not returning Reviewed by: imp, kib Differential Revision: https://reviews.freebsd.org/D51674 --- sys/kern/syscalls.master | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 9329a4213828..53b5d3cbbba9 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -125,7 +125,7 @@ ... ); } -1 AUE_EXIT STD|CAPENABLED { +1 AUE_EXIT STD|CAPENABLED|NORETURN { void _exit( int rval ); From nobody Fri Aug 8 09:37:46 2025 X-Original-To: dev-commits-src-main@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 4byzTk6XKQz63Qcn; Fri, 08 Aug 2025 09:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzTk3WjJz43Fd; Fri, 08 Aug 2025 09:37:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645866; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LsD/7bV3rFrcNqwl+rKWbUgx7gKUm9HbHR3ogNR70jQ=; b=p3ukbmcj5Hl5ljAVPBS9mw8fNFBv1Y07VJMgqnj1DFsOu4RES7IGF0mtQxOfeN0OM4cmcF GVHU+UnMZD9Jt+kAo1dwzaDsNXKqzVr4LzQ4rxxGhMNxPvL+lcdc3mlEyrT8428I62Qblz fxQrB2E5opO1JljYQ5iKskyaDsyWQsOihlpQAi3dEeCYB27lwzt6b96uI9nLGBuAch6pmV /rhRifsHv1L/ZePhYv5f19+UgsUFKVuEEr8yv1KdbtjXHJ1IMaBmuiSbaN9MEoVgjWbpOI 3D8Qok0FenyWl03ztdDb1hqkNe/sxrJPj9Um3ijxKNqjq5IOo9gIbhcykyiVBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754645866; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LsD/7bV3rFrcNqwl+rKWbUgx7gKUm9HbHR3ogNR70jQ=; b=r9vrp4IOuUSqPaXTJi+JLBoDDITsuKfeB+A8s5MU9P53lclFn4D29P7xhzCFpjk3Tdm/J7 af9881yXeYBso24rz00KeusK2elRlNfMW1UGL/gL3xfnkCIGFBx1XSPruJKQ0T6zm6Ux4n 43bwL7zpU5IojumjZpJo43+xXTyjNsxLZXZ2qnJGq5u7SPDFqRqr/H4xsQLIEtfBJILoV7 nQTZzip/Vju9w7HDyhoLqkD6g+U3vJ9YDxi9HkpnYs4yuBJfVOau67c8Z3djQ1MOw1GOaC Bfyd5OEqDB+YNrVfpfxm5mEjrWXWmdAn+aekuF6MOlN4ccwl5jAu5s2bEXmizA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754645866; a=rsa-sha256; cv=none; b=hmaDg2FgLCyH857yFPtC996EqkoovBRDCeBlmSwC3WxO06WLU9mYjTknPJlq0s/fJFuMSp Tgl+mdtWwQkl03x0MlhtMNtZ2sW4SOugpyqZ0pW8uJnSRLm01mRRMLl2zO4Py6CNjmwE1W RKZ4gYITageD5CCfunh/5R53vOe/KBOIUnJ2MxUMuRTNzBub1N2yk5MGSFrvlT8lTiEGEV gZOlpzHGROXPu4k6CIsjICh3lHMeb9hLZly5iCyUoOqzyzcpM/U26HalmbV+7EwQQRKVhj rQJSiqCHEhyYovyxaIhEtyWvXIg2J+5tAHqEGXv7K6I8E+7pHGhOz1/syWOzLg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzTk2tjBzVbC; Fri, 08 Aug 2025 09:37:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789bkPb083088; Fri, 8 Aug 2025 09:37:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789bkf1083085; Fri, 8 Aug 2025 09:37:46 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:37:46 GMT Message-Id: <202508080937.5789bkf1083085@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 7988e7e1675d - main - sysent: regen to mark _exit _Noreturn List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7988e7e1675d8414f2694c1ee4ed73ac214abfc4 Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=7988e7e1675d8414f2694c1ee4ed73ac214abfc4 commit 7988e7e1675d8414f2694c1ee4ed73ac214abfc4 Author: Brooks Davis AuthorDate: 2025-08-08 09:30:17 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 09:30:17 +0000 sysent: regen to mark _exit _Noreturn --- lib/libsys/_libsys.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libsys/_libsys.h b/lib/libsys/_libsys.h index f763916d495d..2f89e8fea92b 100644 --- a/lib/libsys/_libsys.h +++ b/lib/libsys/_libsys.h @@ -469,7 +469,7 @@ typedef int (__sys_exterrctl_t)(u_int, u_int, void *); typedef int (__sys_inotify_add_watch_at_t)(int, int, const char *, uint32_t); typedef int (__sys_inotify_rm_watch_t)(int, int); -void __sys__exit(int rval); +_Noreturn void __sys__exit(int rval); int __sys_fork(void); ssize_t __sys_read(int fd, void * buf, size_t nbyte); ssize_t __sys_write(int fd, const void * buf, size_t nbyte); From nobody Fri Aug 8 09:49:41 2025 X-Original-To: dev-commits-src-main@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 4byzlV04yYz63RjT; Fri, 08 Aug 2025 09:49:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4byzlT6ckxz45sK; Fri, 08 Aug 2025 09:49:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754646581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Tm5I8lNvY/NtQsy1AdBTJMqFNm1Q68GFz0EpVtKsQSE=; b=UmGbYW1I8lRceY6deLJD0qyeN5NTE58TSvk4OpIlGYQKGOMwcgXnCXVXmEQd2cUe8DyMRD b5MBAII5xifvqqvwG0lJ5zkptWIc2Fy/EmnjDApgJdxK7uim822iZLWJvb0N8cQFVuyL/V zuidoyGNT8+rt03yttvEJ606bHdM+5vPBZcNYHrkKU/MGodsy51obna7w+Hj42QftZa0sw /g2x2iFZXn1xR9p6z028wegeiHr/SHUePFr7ZuZsU3/j1s7ZEvOdQ4gwN7/4kU1rMJ8LpK MlYKzxl6YErtF8UxdhEzchtATcPDnhyWAFHnr5T7XitK7O7gSuvjmRJYNeh1Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754646581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Tm5I8lNvY/NtQsy1AdBTJMqFNm1Q68GFz0EpVtKsQSE=; b=Tt5nmcVa8FDBPkxkAq1Ts9sDeME1JXSE22u2vLT5gB1aoUr5xrBl473uEGRike7yOEe82D NABxwOVevVWqvbHBLdsmnw6AEfwl9xwnf7+cxVhGWhbEuCLckZ3k9yeecS0m3rCIILkkY1 3gloehK7KwQN43Y/Nd6LabbaHpjLD1WWH97iczmA64sapKoYCkbDDhBa7jt+JYvz5H8Hoo SkR6jHajeiyfaBMN67oZMA9wqUNdYNEisqOL9DEmOXQRQCm62v9pgkqwprhsb2w7RyHeUW GVTJAfbHsjs2LE2JfnuFXVLKiQWokYAssnQQjuMAJIqnS/3olVRZnHdzr3SmHQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754646581; a=rsa-sha256; cv=none; b=QiYRtQviHBCVlekbOTbTwxJEZXit26HzqgXvstwXzdJwNMLLbzofHkKv9+Fv1c6lQpW81Q lFBR77cLihVZsdvEkaAoZ+WVtrOQNMhKFeOpJOU4YYoGrLBebVHGXXGZUGNsOlSUCn3h6w jqaHAAY+iTG4AhHh4sIquoJKBU7gwdl9yXoaH6u1hQhoaDfVHWN1c943u9mSboglHuWeDp yvnclFQzcKIYUFyLrO54AQGoFvVgjs/mpQas1T//dg2U8EWzAopTzd2T1GWLu7eEGP9ehQ 9IERY8XfXVBWZf5YU6LmN6oo07uqZPB3BJyWFthSYkN8E6SbD6pLl/QZil7JbQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4byzlT6CZkzVqJ; Fri, 08 Aug 2025 09:49:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5789nfIL002735; Fri, 8 Aug 2025 09:49:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5789nfTs002732; Fri, 8 Aug 2025 09:49:41 GMT (envelope-from git) Date: Fri, 8 Aug 2025 09:49:41 GMT Message-Id: <202508080949.5789nfTs002732@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: 84bbfc32a3f4 - main - acpi_powerres: D3cold support List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 84bbfc32a3f47bd2e32741247afe516cbeff7789 Auto-Submitted: auto-generated The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=84bbfc32a3f47bd2e32741247afe516cbeff7789 commit 84bbfc32a3f47bd2e32741247afe516cbeff7789 Author: Aymeric Wibo AuthorDate: 2025-06-14 15:29:25 +0000 Commit: Aymeric Wibo CommitDate: 2025-08-08 09:42:44 +0000 acpi_powerres: D3cold support Cherry-pick commit 0b76c0a from ACPICA (actypes: Distinguish between D3hot/cold, and default `ACPI_STATE_D3` to D3cold). The same distinction is made between `PCI_POWERSTATE_D3_HOT` and `PCI_POWERSTATE_D3_COLD`, as they're defined by ACPI (and are asserted to be the same). D3cold is essentially the same as D3hot except the power resources are turned off. Add support for D3cold to `acpi_pwr_switch_consumer`. `acpi_d_state_to_str` replaces the `printf("D%d", d_state)` pattern, allowing for "D3hot" and "D3cold" strings to be printed instead of just "D3". Reviewed by: markj, ziaee, mckusick (mentor) Approved by: markj, mckusick (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48384 --- share/man/man9/pci.9 | 8 +++- sys/compat/linuxkpi/common/include/linux/pci.h | 10 ++--- sys/contrib/dev/acpica/include/actypes.h | 8 ++-- sys/dev/acpica/acpi.c | 9 ++-- sys/dev/acpica/acpi_pci.c | 12 +++--- sys/dev/acpica/acpi_powerres.c | 58 +++++++++++++++++++------- sys/dev/acpica/acpivar.h | 9 ++++ sys/dev/pci/pci.c | 7 +++- sys/dev/pci/pcivar.h | 27 ++++++------ 9 files changed, 98 insertions(+), 50 deletions(-) diff --git a/share/man/man9/pci.9 b/share/man/man9/pci.9 index 8f772e76ba99..eeb62a63a2bd 100644 --- a/share/man/man9/pci.9 +++ b/share/man/man9/pci.9 @@ -664,10 +664,14 @@ Buses in this state can cause devices to lose some context. Devices .Em must be prepared for the bus to be in this state or higher. -.It Dv PCI_POWERSTATE_D3 +.It Dv PCI_POWERSTATE_D3_HOT State in which the device is off and not running. Device context is lost, and power from the device can -be removed. +be (but is not necessarily) removed. +.It Dv PCI_POWERSTATE_D3_COLD +Same as +.Dv PCI_POWERSTATE_D3_HOT , +except power has been removed from the device. .It Dv PCI_POWERSTATE_UNKNOWN State of the device is unknown. .El diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h index ba1c0d2ac99e..3fd4191b9917 100644 --- a/sys/compat/linuxkpi/common/include/linux/pci.h +++ b/sys/compat/linuxkpi/common/include/linux/pci.h @@ -223,11 +223,11 @@ enum pcie_link_width { typedef int pci_power_t; -#define PCI_D0 PCI_POWERSTATE_D0 -#define PCI_D1 PCI_POWERSTATE_D1 -#define PCI_D2 PCI_POWERSTATE_D2 -#define PCI_D3hot PCI_POWERSTATE_D3 -#define PCI_D3cold 4 +#define PCI_D0 PCI_POWERSTATE_D0 +#define PCI_D1 PCI_POWERSTATE_D1 +#define PCI_D2 PCI_POWERSTATE_D2 +#define PCI_D3hot PCI_POWERSTATE_D3_HOT +#define PCI_D3cold PCI_POWERSTATE_D3_COLD #define PCI_POWER_ERROR PCI_POWERSTATE_UNKNOWN diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h index 66333243907b..3c95887b1678 100644 --- a/sys/contrib/dev/acpica/include/actypes.h +++ b/sys/contrib/dev/acpica/include/actypes.h @@ -741,9 +741,11 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_STATE_D0 (UINT8) 0 #define ACPI_STATE_D1 (UINT8) 1 #define ACPI_STATE_D2 (UINT8) 2 -#define ACPI_STATE_D3 (UINT8) 3 -#define ACPI_D_STATES_MAX ACPI_STATE_D3 -#define ACPI_D_STATE_COUNT 4 +#define ACPI_STATE_D3_HOT (UINT8) 3 +#define ACPI_STATE_D3_COLD (UINT8) 4 +#define ACPI_STATE_D3 ACPI_STATE_D3_COLD +#define ACPI_D_STATES_MAX ACPI_STATE_D3_COLD +#define ACPI_D_STATE_COUNT 5 #define ACPI_STATE_C0 (UINT8) 0 #define ACPI_STATE_C1 (UINT8) 1 diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index f2ff1d59ccc7..a2159b12876f 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -2139,12 +2139,13 @@ acpi_set_powerstate(device_t child, int state) status = acpi_pwr_switch_consumer(h, state); if (ACPI_SUCCESS(status)) { if (bootverbose) - device_printf(child, "set ACPI power state D%d on %s\n", - state, acpi_name(h)); + device_printf(child, "set ACPI power state %s on %s\n", + acpi_d_state_to_str(state), acpi_name(h)); } else if (status != AE_NOT_FOUND) device_printf(child, - "failed to set ACPI power state D%d on %s: %s\n", state, - acpi_name(h), AcpiFormatException(status)); + "failed to set ACPI power state %s on %s: %s\n", + acpi_d_state_to_str(state), acpi_name(h), + AcpiFormatException(status)); return (0); } diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 646295f9eecc..1912350bbc48 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -53,9 +53,6 @@ #include -#include "pcib_if.h" -#include "pci_if.h" - /* Hooks for the ACPI CA debugging infrastructure. */ #define _COMPONENT ACPI_BUS ACPI_MODULE_NAME("PCI") @@ -266,12 +263,13 @@ acpi_pci_set_powerstate_method(device_t dev, device_t child, int state) status = acpi_pwr_switch_consumer(h, state); if (ACPI_SUCCESS(status)) { if (bootverbose) - device_printf(dev, "set ACPI power state D%d on %s\n", - state, acpi_name(h)); + device_printf(dev, "set ACPI power state %s on %s\n", + acpi_d_state_to_str(state), acpi_name(h)); } else if (status != AE_NOT_FOUND) device_printf(dev, - "failed to set ACPI power state D%d on %s: %s\n", - state, acpi_name(h), AcpiFormatException(status)); + "failed to set ACPI power state %s on %s: %s\n", + acpi_d_state_to_str(state), acpi_name(h), + AcpiFormatException(status)); if (old_state > state && pci_do_power_resume) error = pci_set_powerstate_method(dev, child, state); diff --git a/sys/dev/acpica/acpi_powerres.c b/sys/dev/acpica/acpi_powerres.c index 0f2a25b1d02b..29d1690f1bdd 100644 --- a/sys/dev/acpica/acpi_powerres.c +++ b/sys/dev/acpica/acpi_powerres.c @@ -299,7 +299,7 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) ACPI_BUFFER reslist_buffer; ACPI_OBJECT *reslist_object; ACPI_STATUS status; - char *method_name, *reslist_name; + char *method_name, *reslist_name = NULL; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); @@ -318,9 +318,26 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) panic("acpi added power consumer but can't find it"); } - /* Check for valid transitions. We can only go to D0 from D3. */ + /* Stop here if we're already at the target D-state. */ + if (pc->ac_state == state) { + status = AE_OK; + goto out; + } + + /* + * Check for valid transitions. From D3hot or D3cold, we can only go to D0. + * The exception to this is going from D3hot to D3cold or the other way + * around. This is because they both use _PS3, so the only difference when + * doing these transitions is whether or not the power resources for _PR3 + * are on for devices which support D3cold, and turning these power + * resources on/off is always perfectly fine (ACPI 7.3.11). + */ status = AE_BAD_PARAMETER; - if (pc->ac_state == ACPI_STATE_D3 && state != ACPI_STATE_D0) + if (pc->ac_state == ACPI_STATE_D3_HOT && state != ACPI_STATE_D0 && + state != ACPI_STATE_D3_COLD) + goto out; + if (pc->ac_state == ACPI_STATE_D3_COLD && state != ACPI_STATE_D0 && + state != ACPI_STATE_D3_HOT) goto out; /* Find transition mechanism(s) */ @@ -337,15 +354,20 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) method_name = "_PS2"; reslist_name = "_PR2"; break; - case ACPI_STATE_D3: + case ACPI_STATE_D3_HOT: method_name = "_PS3"; reslist_name = "_PR3"; break; + case ACPI_STATE_D3_COLD: + method_name = "_PS3"; + reslist_name = NULL; + break; default: goto out; } - ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "setup to switch %s D%d -> D%d\n", - acpi_name(consumer), pc->ac_state, state)); + ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "setup to switch %s %s -> %s\n", + acpi_name(consumer), acpi_d_state_to_str(pc->ac_state), + acpi_d_state_to_str(state))); /* * Verify that this state is supported, ie. one of method or @@ -359,7 +381,8 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) */ if (ACPI_FAILURE(AcpiGetHandle(consumer, method_name, &method_handle))) method_handle = NULL; - if (ACPI_FAILURE(AcpiGetHandle(consumer, reslist_name, &reslist_handle))) + if (reslist_name == NULL || + ACPI_FAILURE(AcpiGetHandle(consumer, reslist_name, &reslist_handle))) reslist_handle = NULL; if (reslist_handle == NULL && method_handle == NULL) { if (state == ACPI_STATE_D0) { @@ -367,9 +390,12 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) status = AE_OK; goto out; } - if (state != ACPI_STATE_D3) { + if (state == ACPI_STATE_D3_COLD) + state = ACPI_STATE_D3_HOT; + if (state != ACPI_STATE_D3_HOT) { ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, - "attempt to set unsupported state D%d\n", state)); + "attempt to set unsupported state %s\n", + acpi_d_state_to_str(state))); goto out; } @@ -380,21 +406,23 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) if (ACPI_FAILURE(AcpiGetHandle(consumer, "_PR0", &pr0_handle))) { status = AE_NOT_FOUND; ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, - "device missing _PR0 (desired state was D%d)\n", state)); + "device missing _PR0 (desired state was %s)\n", + acpi_d_state_to_str(state))); goto out; } reslist_buffer.Length = ACPI_ALLOCATE_BUFFER; status = AcpiEvaluateObject(pr0_handle, NULL, NULL, &reslist_buffer); if (ACPI_FAILURE(status)) { ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, - "can't evaluate _PR0 for device %s, state D%d\n", - acpi_name(consumer), state)); + "can't evaluate _PR0 for device %s, state %s\n", + acpi_name(consumer), acpi_d_state_to_str(state))); goto out; } reslist_object = (ACPI_OBJECT *)reslist_buffer.Pointer; if (!ACPI_PKG_VALID(reslist_object, 1)) { ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, - "invalid package object for state D%d\n", state)); + "invalid package object for state %s\n", + acpi_d_state_to_str(state))); status = AE_TYPE; goto out; } @@ -450,8 +478,8 @@ acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state) */ if (ACPI_FAILURE(status = acpi_pwr_switch_power())) { ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, - "failed to switch resources from %s to D%d\n", - acpi_name(consumer), state)); + "failed to switch resources from %s to %s\n", + acpi_name(consumer), acpi_d_state_to_str(state))); /* XXX is this appropriate? Should we return to previous state? */ goto out; diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 106ec9038820..39432731cbcc 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -517,6 +517,15 @@ acpi_get_verbose(struct acpi_softc *sc) return (0); } +static __inline const char * +acpi_d_state_to_str(int state) +{ + const char *strs[ACPI_D_STATE_COUNT] = {"D0", "D1", "D2", "D3", "D3cold"}; + + MPASS(state >= ACPI_STATE_D0 && state <= ACPI_D_STATES_MAX); + return (strs[state]); +} + char *acpi_name(ACPI_HANDLE handle); int acpi_avoid(ACPI_HANDLE handle); int acpi_disabled(char *subsys); diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index f94438cda041..4629165f34b2 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -81,6 +81,9 @@ #include +#include +#include + #include "pcib_if.h" #include "pci_if.h" @@ -2896,8 +2899,8 @@ pci_set_powerstate_method(device_t dev, device_t child, int state) } if (bootverbose) - pci_printf(cfg, "Transition from D%d to D%d\n", oldstate, - state); + pci_printf(cfg, "Transition from %s to %s\n", + acpi_d_state_to_str(oldstate), acpi_d_state_to_str(state)); PCI_WRITE_CONFIG(dev, child, cfg->pp.pp_location + PCIR_POWER_STATUS, status, 2); diff --git a/sys/dev/pci/pcivar.h b/sys/dev/pci/pcivar.h index d1b7d28eae91..832305b9adee 100644 --- a/sys/dev/pci/pcivar.h +++ b/sys/dev/pci/pcivar.h @@ -497,22 +497,25 @@ pci_is_vga_memory_range(rman_res_t start, rman_res_t end) /* * PCI power states are as defined by ACPI: * - * D0 State in which device is on and running. It is receiving full - * power from the system and delivering full functionality to the user. - * D1 Class-specific low-power state in which device context may or may not - * be lost. Buses in D1 cannot do anything to the bus that would force - * devices on that bus to lose context. - * D2 Class-specific low-power state in which device context may or may - * not be lost. Attains greater power savings than D1. Buses in D2 - * can cause devices on that bus to lose some context. Devices in D2 - * must be prepared for the bus to be in D2 or higher. - * D3 State in which the device is off and not running. Device context is - * lost. Power can be removed from the device. + * D0 State in which device is on and running. It is receiving full + * power from the system and delivering full functionality to the user. + * D1 Class-specific low-power state in which device context may or may not + * be lost. Buses in D1 cannot do anything to the bus that would force + * devices on that bus to lose context. + * D2 Class-specific low-power state in which device context may or may + * not be lost. Attains greater power savings than D1. Buses in D2 + * can cause devices on that bus to lose some context. Devices in D2 + * must be prepared for the bus to be in D2 or higher. + * D3hot State in which the device is off and not running. Device context is + * lost. Power can be removed from the device. + * D3cold Same as D3hot, but power has been removed from the device. */ #define PCI_POWERSTATE_D0 0 #define PCI_POWERSTATE_D1 1 #define PCI_POWERSTATE_D2 2 -#define PCI_POWERSTATE_D3 3 +#define PCI_POWERSTATE_D3_HOT 3 +#define PCI_POWERSTATE_D3_COLD 4 +#define PCI_POWERSTATE_D3 PCI_POWERSTATE_D3_COLD #define PCI_POWERSTATE_UNKNOWN -1 static __inline int From nobody Fri Aug 8 10:19:20 2025 X-Original-To: dev-commits-src-main@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 4bz0Ph3ymbz63V9T; Fri, 08 Aug 2025 10:19: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz0Ph39KBz3D2f; Fri, 08 Aug 2025 10:19:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754648360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vE90kZEWbAyTbHpxfmdPdkGn5c3VRohFEDUNdm7osvI=; b=aVjEnWx+gwdJX1/hUCHTFENcyrHxHecQP+BsV8K57ReAvyAZyp1jfzchZF8nKVVl70h9Pn lOlXIyPmlkzOM+RFb2Yi/Yn2b5iK3oJHxOjWAyksPddCGWi7/gq13yq72qz0yPKAZfwWKY 51Jb2+s4LZP8WspIlvOHgQmIa08cxnd7b2kDy7NFGIG8PLB33B7AWBg+BXWdZwHUFQT28K 6+vwG8UwUs9An4Yo+v8TEH0PZOXBQ8IRMkNOEW/mwdLtx3rEGBW7LBUj5uzMJNCZmqpKlb sCAJL7mAvo0ORBXLCbrzIeyA6YZEGNVITbQbIVH5QUx+/XmTSjyEGh37mlUo2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754648360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vE90kZEWbAyTbHpxfmdPdkGn5c3VRohFEDUNdm7osvI=; b=JGl1bRLM4cmTt4BA9Ig4DmNL4fQHK0Cdy8sigOheiTqWYyRSnaaWFE/DXsJtPGdJPisOKL Ccz6v1olfeTF6fN0rdA9C5cPeQr0p67M48YeLX2KFS6dGV8CFaH+NkhWDWaLbdXRMsA9/e XCUdWkhtjzlvBqmvuSVIx5t23qg310G7doRd/21HvwWX/FGy27Mz1PvifOKK6W6JBODnzK TG9dIGqfALNMYV+hGotXIP1Zmkem8SSHe5PEHHVb5hL2ZUr24gmQ+DHJGaDfS1K+Qra78V R8L49jj5Hv0ICOLreGjqIu+wcw399GCm8pMHBov1pogOZx604ZjnAX8IVRjIZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754648360; a=rsa-sha256; cv=none; b=YYwTuCVHJsHxeG5C4ySQ5cnbowS1H42ueUOQtJ3aIadOuqH/a5HMsaOHF7o26rMR29wMsn 9UY9D6tSUzKnJLKDg7eIotXGe4g/Lb7QDhIAsiAOycM0Yhb4nQ6JmqijQJd/rigRLPdzJy 5G6R3ebqaFaaSkuCuulE6qIkLaPqix5Me/8Uwyr9gS/OsFH+Sfot+7RywsP7/2r+R134kt JTxNU+b13Jai8cYHf+iMJRI1rH3hu4Z6AIurCosiHhjeAPUtQzc+NhtLRLw73CgXNc/SYm ilSgdg30AUSrVDKiRWsmdwCJUt4GAsqoeZNa0x0BGkCBGFGfsYHudMcDX7ZjmA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz0Ph28vszXGQ; Fri, 08 Aug 2025 10:19:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578AJKXE060146; Fri, 8 Aug 2025 10:19:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578AJKGq060143; Fri, 8 Aug 2025 10:19:20 GMT (envelope-from git) Date: Fri, 8 Aug 2025 10:19:20 GMT Message-Id: <202508081019.578AJKGq060143@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Zhenlei Huang Subject: git: 04d0dc4c0c65 - main - tests: gif(4): Add regression tests for setup with EtherIP List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04d0dc4c0c65592a21225cff43f25e0a0da64eb9 Auto-Submitted: auto-generated The branch main has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=04d0dc4c0c65592a21225cff43f25e0a0da64eb9 commit 04d0dc4c0c65592a21225cff43f25e0a0da64eb9 Author: Zhenlei Huang AuthorDate: 2025-08-08 10:17:51 +0000 Commit: Zhenlei Huang CommitDate: 2025-08-08 10:17:51 +0000 tests: gif(4): Add regression tests for setup with EtherIP Tunnel IPv[46] traffic over IPv[46] should still function when the gif(4) interface is member of a if_bridge(4) interface, aka the EtherIP setup. PR: 227450 Reviewed by: kp MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D51682 --- tests/sys/net/if_gif.sh | 154 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/tests/sys/net/if_gif.sh b/tests/sys/net/if_gif.sh index 5c7278d17e8f..bff88f9e75b6 100644 --- a/tests/sys/net/if_gif.sh +++ b/tests/sys/net/if_gif.sh @@ -202,10 +202,164 @@ atf_test_case "6in6" "cleanup" vnet_cleanup } +atf_test_case "etherip" "cleanup" +etherip_head() +{ + atf_set descr 'EtherIP regression' + atf_set require.user root +} + +etherip_body() +{ + vnet_init + vnet_init_bridge + + if ! kldstat -q -m if_gif; then + atf_skip "This test requires if_gif" + fi + + epair=$(vnet_mkepair) + + vnet_mkjail one ${epair}a + gone=$(jexec one ifconfig gif create) + jexec one ifconfig ${epair}a 192.0.2.1/24 up + jexec one ifconfig $gone tunnel 192.0.2.1 192.0.2.2 + jexec one ifconfig $gone 198.51.100.1/24 198.51.100.2 up + jexec one ifconfig $gone inet6 no_dad 2001:db8:1::1/64 + + bone=$(jexec one ifconfig bridge create) + jexec one ifconfig $bone addm $gone + jexec one ifconfig $bone 192.168.169.253/24 up + jexec one ifconfig $bone inet6 no_dad 2001:db8:2::1/64 + + vnet_mkjail two ${epair}b + gtwo=$(jexec two ifconfig gif create) + jexec two ifconfig ${epair}b 192.0.2.2/24 up + jexec two ifconfig $gtwo tunnel 192.0.2.2 192.0.2.1 + jexec two ifconfig $gtwo 198.51.100.2/24 198.51.100.1 up + jexec two ifconfig $gtwo inet6 no_dad 2001:db8:1::2/64 + + btwo=$(jexec two ifconfig bridge create) + jexec two ifconfig $btwo addm $gtwo + jexec two ifconfig $btwo 192.168.169.254/24 up + jexec two ifconfig $btwo inet6 no_dad 2001:db8:2::2/64 + + # Sanity check + atf_check -s exit:0 -o ignore \ + jexec one ping -c 1 192.0.2.2 + + # EtherIP tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -c 1 192.168.169.254 + atf_check -s exit:0 -o ignore \ + jexec one ping -6 -c 1 2001:db8:2::2 + atf_check -s exit:0 -o ignore \ + jexec two ping -c 1 192.168.169.253 + atf_check -s exit:0 -o ignore \ + jexec two ping -6 -c 1 2001:db8:2::1 + + # EtherIP should not affect normal IPv[46] over IPv4 tunnel + # See bugzilla PR 227450 + # IPv4 in IPv4 Tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -c 1 198.51.100.2 + atf_check -s exit:0 -o ignore \ + jexec two ping -c 1 198.51.100.1 + + # IPv6 in IPv4 tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -6 -c 1 2001:db8:1::2 + atf_check -s exit:0 -o ignore \ + jexec two ping -6 -c 1 2001:db8:1::1 +} + +etherip_cleanup() +{ + vnet_cleanup +} + +atf_test_case "etherip6" "cleanup" +etherip6_head() +{ + atf_set descr 'EtherIP over IPv6 regression' + atf_set require.user root +} + +etherip6_body() +{ + vnet_init + vnet_init_bridge + + if ! kldstat -q -m if_gif; then + atf_skip "This test requires if_gif" + fi + + epair=$(vnet_mkepair) + + vnet_mkjail one ${epair}a + gone=$(jexec one ifconfig gif create) + jexec one ifconfig ${epair}a inet6 no_dad 2001:db8::1/64 up + jexec one ifconfig $gone inet6 tunnel 2001:db8::1 2001:db8::2 + jexec one ifconfig $gone 198.51.100.1/24 198.51.100.2 up + jexec one ifconfig $gone inet6 no_dad 2001:db8:1::1/64 + + bone=$(jexec one ifconfig bridge create) + jexec one ifconfig $bone addm $gone + jexec one ifconfig $bone 192.168.169.253/24 up + jexec one ifconfig $bone inet6 no_dad 2001:db8:2::1/64 + + vnet_mkjail two ${epair}b + gtwo=$(jexec two ifconfig gif create) + jexec two ifconfig ${epair}b inet6 no_dad 2001:db8::2/64 up + jexec two ifconfig $gtwo inet6 tunnel 2001:db8::2 2001:db8::1 + jexec two ifconfig $gtwo 198.51.100.2/24 198.51.100.1 up + jexec two ifconfig $gtwo inet6 no_dad 2001:db8:1::2/64 + + btwo=$(jexec two ifconfig bridge create) + jexec two ifconfig $btwo addm $gtwo + jexec two ifconfig $btwo 192.168.169.254/24 up + jexec two ifconfig $btwo inet6 no_dad 2001:db8:2::2/64 + + # Sanity check + atf_check -s exit:0 -o ignore \ + jexec one ping -6 -c 1 2001:db8::2 + + # EtherIP tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -c 1 192.168.169.254 + atf_check -s exit:0 -o ignore \ + jexec one ping -6 -c 1 2001:db8:2::2 + atf_check -s exit:0 -o ignore \ + jexec two ping -c 1 192.168.169.253 + atf_check -s exit:0 -o ignore \ + jexec two ping -6 -c 1 2001:db8:2::1 + + # EtherIP should not affect normal IPv[46] over IPv6 tunnel + # See bugzilla PR 227450 + # IPv4 in IPv6 Tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -c 1 198.51.100.2 + atf_check -s exit:0 -o ignore \ + jexec two ping -c 1 198.51.100.1 + + # IPv6 in IPv6 tunnel test + atf_check -s exit:0 -o ignore \ + jexec one ping -6 -c 1 2001:db8:1::2 + atf_check -s exit:0 -o ignore \ + jexec two ping -6 -c 1 2001:db8:1::1 +} + +etherip6_cleanup() +{ + vnet_cleanup +} + atf_init_test_cases() { atf_add_test_case "4in4" atf_add_test_case "6in4" atf_add_test_case "4in6" atf_add_test_case "6in6" + atf_add_test_case "etherip" + atf_add_test_case "etherip6" } From nobody Fri Aug 8 10:19:21 2025 X-Original-To: dev-commits-src-main@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 4bz0Pj6Jrmz63VZR; Fri, 08 Aug 2025 10:19:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz0Pj3hHRz3D0D; Fri, 08 Aug 2025 10:19:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754648361; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gQWauuS2/a2J1mi7SW//1TtINpyj9PHbKXNVTuwZIIY=; b=dLqbsjo/pVb4dnMCOJW9MXODWCobWzVtGyACgFAaTat0W8H43r4iE4fqoSwT64pI7e4NaO C1EkETCsjDZCw+h613MCDTErfSseB7pX/dQ4eSQVNuz1r986z5ZItriNhD+v1wWq2bCaL+ UmP11+sODUDOU2oNxZU4A6gF83p0ItfVuIrKbicg0I5wsNfElrP4LouKi9LWHuiULxeT/E 2kHiISSuZ1MuR4xadJO79D85XP0T36uEmo4hBxT7FEhQBRYqMVvZA5VrNBvH77sm9GsoUY i7in6I4kfswgdDwIFHXES59n5LK9dO5yma4e0JANErI4N9ea+IVDYJDgq1PU5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754648361; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gQWauuS2/a2J1mi7SW//1TtINpyj9PHbKXNVTuwZIIY=; b=siy6obuJH3LoDwEJe2SZZBAA4FCHsoA5lj50mc+fXapNIPWZglxwvQ8HVl3Zz5rpEBTguV l5a6hex7LlJJ5gcUEr7uQSmenVwgdGZo8Fq7yJnlnap3KQKXQjTgRWKqYMJYiGv5XZBq7X bI0yDplaoD445mW3IW8XhNBzuXWAqxu4VtAaZQea56NAYkxZ9P3d0FeQj0WS8GjEdqRGd+ xcdbTkkGUvhQkei/CYmI32hiw2p5uKwOR35mE7QndeiEtqPqMsC2iInUEpUVyZ/M2ISsme pj77nUnSIOxAifmMqZgHyt9IS4cDUPHIPgh0VK6fB7zBq26n4Ow0xTFxogbfjg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754648361; a=rsa-sha256; cv=none; b=dkDBTA0tfO606hPWjAV7DsbQztU5LXkPzrZn40kgNVmhugCcgC6rqQ2rw9zMdQm/o5dpf9 v9qiAkm5yHvPTCzb3l6gexK/EIcMykt4I37XBM1PJ2TDcGMRSUB5YmUEgs7+lJ84MqBdv4 wF3NMNSazNywuwDt+OoCVS4HPX2nWKfmYnOYw7p595BW3dkhLgSxn7VcIIpz7gsYc6gjI7 deKb55zx4Z3F2wzdf//XIbXc0pN+Gn9jMRe/ghhWv6FkEypiYpYliIzII99bXeYuE+a0Kt jQRDz8gwAUuWvVRgoHNaG9oFJUb0SnGZlMLRj4i8oGteNBArS1fk38L4K+Dwbw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz0Pj21v5zXXk; Fri, 08 Aug 2025 10:19:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578AJLPP060179; Fri, 8 Aug 2025 10:19:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578AJLCh060176; Fri, 8 Aug 2025 10:19:21 GMT (envelope-from git) Date: Fri, 8 Aug 2025 10:19:21 GMT Message-Id: <202508081019.578AJLCh060176@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Zhenlei Huang Subject: git: f4744b8acb93 - main - EtherIP: Fix passing the address family from if_bridge(4) to gif(4) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f4744b8acb932fbb3e48b71d31b7cd585566b668 Auto-Submitted: auto-generated The branch main has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=f4744b8acb932fbb3e48b71d31b7cd585566b668 commit f4744b8acb932fbb3e48b71d31b7cd585566b668 Author: Zhenlei Huang AuthorDate: 2025-08-08 10:17:51 +0000 Commit: Zhenlei Huang CommitDate: 2025-08-08 10:17:51 +0000 EtherIP: Fix passing the address family from if_bridge(4) to gif(4) Given IPPROTO_IPV4, IPPROTO_IPV6 and IPPROTO_ETHERIP have different protocol numbers, then it is perfect valid to tunnel IPv4, IPv6 and Ethernet traffic over IPv[46] by the same interface. Since gif(4) has already utilized the inbound csum_data field to carry address family, also teach if_bridge(4) to do that, rather than checking if a gif(4) interface is member of a if_bridge(4) interface. Without this fix, tunnel IPv[46] over IPv[46] will not work when the gif(4) interface is member of a if_bridge(4) interface, aka the EtherIP setup, as the address family passed from gif_output() will be overwritten with the wrong one AF_LINK by gif_transmit(), and end up with incorrectly encapsulated packets. PR: 227450 Reviewed by: kp Tested by: meta Fixes: 8a0308722372 gif(4): Assert that gif_output() isn't called for EtherIP MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D51682 --- sys/net/if_bridge.c | 6 ++++++ sys/net/if_gif.c | 10 +++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 3aed54c58e04..1e444be93e9f 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -2441,6 +2441,12 @@ bridge_enqueue(struct bridge_softc *sc, struct ifnet *dst_ifp, struct mbuf *m, } M_ASSERTPKTHDR(m); /* We shouldn't transmit mbuf without pkthdr */ + /* + * XXXZL: gif(4) requires the af to be saved in csum_data field + * so that gif_transmit() routine can pull it back. + */ + if (dst_ifp->if_type == IFT_GIF) + m->m_pkthdr.csum_data = AF_LINK; if ((err = dst_ifp->if_transmit(dst_ifp, m))) { int n; diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index ef64c15074ed..272ab214a788 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -312,10 +312,7 @@ gif_transmit(struct ifnet *ifp, struct mbuf *m) goto err; } /* Now pull back the af that we stashed in the csum_data. */ - if (ifp->if_bridge) - af = AF_LINK; - else - af = m->m_pkthdr.csum_data; + af = m->m_pkthdr.csum_data; m->m_flags &= ~(M_BCAST|M_MCAST); M_SETFIB(m, sc->gif_fibnum); BPF_MTAP2(ifp, &af, sizeof(af), m); @@ -355,6 +352,8 @@ gif_transmit(struct ifnet *ifp, struct mbuf *m) break; #endif case AF_LINK: + KASSERT(ifp->if_bridge != NULL, + ("%s: bridge not attached", __func__)); proto = IPPROTO_ETHERIP; M_PREPEND(m, sizeof(struct etherip_header), M_NOWAIT); if (m == NULL) { @@ -405,9 +404,6 @@ gif_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, { uint32_t af; - KASSERT(ifp->if_bridge == NULL, - ("%s: unexpectedly called with bridge attached", __func__)); - /* BPF writes need to be handled specially. */ if (dst->sa_family == AF_UNSPEC || dst->sa_family == pseudo_AF_HDRCMPLT) memcpy(&af, dst->sa_data, sizeof(af)); From nobody Fri Aug 8 13:00:45 2025 X-Original-To: dev-commits-src-main@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 4bz3zx51jfz63mVm; Fri, 08 Aug 2025 13:00:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz3zx4GC6z3VG3; Fri, 08 Aug 2025 13:00:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754658045; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o0JRE8Qyns6saw8iL7F514l021Lotxil/qm2tE4TDVk=; b=PKrj9y+e0BQYQNqnQCRGuBwpBXwMaWPIOOffva57SxkWgIg8MXajSanV+FXRIST9C1Zelb x8NBZqmXzz41LeQiF0ATkeUqhuw6ckRFzua6QLKZUMPonLuVTBH/Cx6MmXMX8BBtbpQLzY pfDnL4XVnjZ8R1dTIX0+lRFdEMOUACa0tpN/KDKoRkKqb2dPKCakvRWuLY7GMvzNJxRy+8 BUfOrSHYvBiD5o2pkZItW0K/J/GReNwTOscmWp5cn2qoHRk4UgAAbOmxCxqrg1qkr38Y6W IpAx2IAoO2O+ocvOAure5EhxHC1YXU1V5WSTIJzFZooQQ5OQtI7X30V85OxLcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754658045; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o0JRE8Qyns6saw8iL7F514l021Lotxil/qm2tE4TDVk=; b=xZTgw4cSIXlo4MmjulM4YzhpQchpRhlK6Xuh1qmCyX6IDUWQtFIusI33vWaRajMo8IRlR9 3IhRdATJ4xpggz2xmd9HNHCVaHKilsAUIC8i+wX5JIloI0CrgfQP1lpunIUwYH11R4XS13 WUPJe01r9yYSn38mv1KZTZXh9KfYmnzQqAEkwTuARBgv+AcyQCVzJlWc6cVvhURKcXb+2x WXTZ/6nse8rjroTrotiPYvmv8w2PnzcFnPCcCSOrGM0dDerFC+a3L09R5IK4Dx6BBHthNu jhwcUQWHaom/zN5L/5maPnA6NgOey4nOoOqS29pabV1nciCBW7C+kjAvfJ7bOw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754658045; a=rsa-sha256; cv=none; b=TJ2QvWfpb4/yvlgBAZEGK/xOCO8xoCSB0FnZCBaiFhVCOeoBuoZZ2uUOumpRTdnsTWH4rO zdUt0QS7hpdMKeONmJoNd8zByHM3bpECYzA8Lht9guVINFUQsXaBbQ1oM3kb89Exgjmerj bi40fnDjWooM8w5pvCIoO7XpzZBx749SflDRjMvaYBIweoyZMf2CEH/qvGdiVOJ8BlemWg wjPQlYuADSAlJ54ETkrx6XOjs1+dC2IMtCCWl/fNMhU4ZEGW+4j6uWuZMsrHIcwOWWPhAW JU8yUgLSAGQ8p3yq+gHq8RlOBda4y91FF8QUl04fbIpu0n6v2Vwmu16Q+/bq3w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz3zx38q0zd1N; Fri, 08 Aug 2025 13:00:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578D0ji8068660; Fri, 8 Aug 2025 13:00:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578D0jIl068657; Fri, 8 Aug 2025 13:00:45 GMT (envelope-from git) Date: Fri, 8 Aug 2025 13:00:45 GMT Message-Id: <202508081300.578D0jIl068657@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 66c75fa63aff - main - freebsd-update: Fix the pkgbase check List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 66c75fa63aff40e9c587345b2cc6b8148e396de8 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=66c75fa63aff40e9c587345b2cc6b8148e396de8 commit 66c75fa63aff40e9c587345b2cc6b8148e396de8 Author: Mark Johnston AuthorDate: 2025-08-06 20:36:05 +0000 Commit: Mark Johnston CommitDate: 2025-08-08 12:51:54 +0000 freebsd-update: Fix the pkgbase check Even on a pkgbase system, it should be possible to use freebsd-update -j to upgrade a non-pkgbase jail, at least for the time being. However, the check_pkgbase() call came before get_params, so BASEDIR was always set to /. Make check_pkgbase() a pure function and call it after get_params(). While here, use pkg -r ${BASEDIR} instead of pkg -c ${BASEDIR} since the latter requires root privileges. freebsd-update is supposed to be run as root, but it doesn't actually check this that I can see, so let's not make that assumption here since it affects the result of the function (i.e., pkg -c ${BASEDIR} always fails as a non-root user). Reviewed by: des Fixes: 856e158dc4aa ("freebsd-update: improve pkgbase check") MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D51770 --- usr.sbin/freebsd-update/freebsd-update.sh | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index ccd98a883dca..c388e76644dc 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -1099,24 +1099,19 @@ IDS_check_params () { fetch_setup_verboselevel } -# Packaged base and freebsd-update are incompatible. Exit with an error if -# packaged base is in use. +# Return 0 if the system is managed using pkgbase, 1 otherwise. check_pkgbase() { # Packaged base requires that pkg is bootstrapped. - if ! pkg -c ${BASEDIR} -N >/dev/null 2>/dev/null; then - return + if ! pkg -r ${BASEDIR} -N >/dev/null 2>/dev/null; then + return 1 fi # uname(1) is used by pkg to determine ABI, so it should exist. # If it comes from a package then this system uses packaged base. - if ! pkg -c ${BASEDIR} which /usr/bin/uname >/dev/null; then - return + if ! pkg -r ${BASEDIR} which /usr/bin/uname >/dev/null; then + return 1 fi - cat < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 2fb03d6c1142 - main - gssd: Be consistent about Makefile conditionals List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2fb03d6c1142e5edca8e11beade756b4b4f02119 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=2fb03d6c1142e5edca8e11beade756b4b4f02119 commit 2fb03d6c1142e5edca8e11beade756b4b4f02119 Author: Lexi Winter AuthorDate: 2025-08-08 12:49:36 +0000 Commit: Lexi Winter CommitDate: 2025-08-08 13:16:06 +0000 gssd: Be consistent about Makefile conditionals gssd itself is only built when both MK_GSSAPI and MK_KERBEROS_SUPPORT are enabled, but the init script and OptionalObsoleteFiles entries only checked MK_GSSAPI. Check both variables everywhere. Reviewed by: des Differential Revision: https://reviews.freebsd.org/D51812 --- libexec/rc/rc.d/Makefile | 2 +- tools/build/mk/OptionalObsoleteFiles.inc | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index 9cd61b96f59e..62285018cbef 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -219,7 +219,7 @@ FTPD= ftpd FTPDPACKAGE= ftpd .endif -.if ${MK_GSSAPI} != "no" +.if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" CONFGROUPS+= GSSD GSSD= gssd GSSDPACKAGE= gssd diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 8e5ac7fa2a63..b30604238855 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -2259,6 +2259,12 @@ OLD_FILES+=usr/share/man/man3/gpio_pin_tristate.3.gz OLD_FILES+=usr/share/man/man8/gpioctl.8.gz .endif +.if ${MK_GSSAPI} == "no" || ${MK_KERBEROS_SUPPORT} == "no" +OLD_FILES+=etc/rc.d/gssd +OLD_FILES+=usr/sbin/gssd +OLD_FILES+=usr/share/man/man8/gssd.8.gz +.endif + .if ${MK_GSSAPI} == no OLD_FILES+=usr/include/gssapi/gssapi.h OLD_DIRS+=usr/include/gssapi @@ -2270,7 +2276,6 @@ OLD_FILES+=usr/lib/libgssapi_p.a OLD_FILES+=usr/lib/librpcsec_gss.a OLD_FILES+=usr/lib/librpcsec_gss.so OLD_LIBS+=usr/lib/librpcsec_gss.so.1 -OLD_FILES+=usr/sbin/gssd OLD_FILES+=usr/share/man/man3/gss_accept_sec_context.3.gz OLD_FILES+=usr/share/man/man3/gss_acquire_cred.3.gz OLD_FILES+=usr/share/man/man3/gss_add_cred.3.gz @@ -2329,7 +2334,6 @@ OLD_FILES+=usr/share/man/man3/rpc_gss_svc_max_data_length.3.gz OLD_FILES+=usr/share/man/man3/rpcsec_gss.3.gz OLD_FILES+=usr/share/man/man5/mech.5.gz OLD_FILES+=usr/share/man/man5/qop.5.gz -OLD_FILES+=usr/share/man/man8/gssd.8.gz .endif .if ${MK_HAST} == no From nobody Fri Aug 8 13:19:58 2025 X-Original-To: dev-commits-src-main@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 4bz4QC5LGSz63ph5 for ; Fri, 08 Aug 2025 13:20:03 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz4QC1Lsyz3ZKk for ; Fri, 08 Aug 2025 13:20:03 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-459ddada9b1so19837435e9.0 for ; Fri, 08 Aug 2025 06:20:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754659201; x=1755264001; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ny9aJf3Hisvhr2icFtjxtezk/LfDH22427JMglh6VBg=; b=PKv7W/LUhs/CidJGUPWlTml+FQBmOhqAeLDUNUnV9xf01kyXMzXTIRzqJQPNZsC/RK fawwAyfqH+kRrgxShJf0hj39FHdrhBg8hdtreN2o6QlTPHhacP8fw2YITahYlBfIe6ZS afxa+Fbyph8uhzODFerzEYU5q3j9hzEuY0gMIbLbPLhnhG1gDEeSwjgcvBWhqCPVcsEE DApdVYn+SE45dPBisOG/3Kpi1pDl/8Nas4/IKdJaqGYL+omQ/NS3DaX7P6YlEHs75tmO 0D/kLqtMec1BzsZ6yyaQVYbjcpy6FzeHE1qm0L/QI4f1W+GWNjjxXwGZqvnQOsZj7EE8 rrQA== X-Forwarded-Encrypted: i=1; AJvYcCWjdd4s/AVCD2VC6Q/NUcNqY4lZOIJB4UlM9LnkYBru1KwqRDWhuQNbxfcKPTg9edpQuo4Nmbxl+5ySGWtDWcMNPrHgkw==@freebsd.org X-Gm-Message-State: AOJu0YwzAwR4DSgoYGtoFOfQC88UQkuVChFoYuP+LE/5rBTW35EuV/Pc xTZqk84cUq1zdA3yGprTmJb4AtguXxiIMH8Zwh9FP3CsggLguE2JYWyLTSBO2tWHQcQ= X-Gm-Gg: ASbGncvlqjpG7igoBFmdDxVUJmBzGVjYntkVLL/YjdmRsU085T/R8jziwLsyxHxPMvE T0yeS77eWd4vFseNkSIHhFaQv3c49PwgMT3RvE3IDjrYbO7suR7k9sDbL/3yhgncypMTPbvDszT PGaJNuNZXt14ej+/9FaXR1Z9P6JUnZ5YRWPQvtm8sy25LDS+nMq5ufcruphJhSyyVKiLxtkhVX3 Z5bwTyhfaErWWgQItLwqxmQ/Z7IcpLquivzdwREEokjpp065/WSlJD15oFF0LrNTEzCogUwAlVh Rxn5raCTHBlZqAXqcGKYrm/KPK2EFwtLLyFISyO8c6Hs8jHPjsoN+8bWw2rHcsdal1hVrwJEef5 GM4neklb0DcBwl4Xx8UacyDbDYctJ+OaOu2UttyDLDYvWjQPOW3WnOOyNrfir9+hGIQSWRpA= X-Google-Smtp-Source: AGHT+IG9DYOqJ3pDNyZbeJX7PIOMvdn5Bvk+ZmAb8YwkvX901NyzpgDfhvVYzxZmuQzID50ZtGkXxA== X-Received: by 2002:a05:600c:1c10:b0:459:ddd6:1ca3 with SMTP id 5b1f17b1804b1-459f4c4ecedmr30723825e9.0.1754659201054; Fri, 08 Aug 2025 06:20:01 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459e5d0b1afsm131699565e9.26.2025.08.08.06.20.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Aug 2025 06:20:00 -0700 (PDT) Content-Type: text/plain; charset=utf-8 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: 84bbfc32a3f4 - main - acpi_powerres: D3cold support From: Jessica Clarke In-Reply-To: <202508080949.5789nfTs002732@gitrepo.freebsd.org> Date: Fri, 8 Aug 2025 14:19:58 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: <80E8FFC9-8A81-400A-A849-2A468B212884@freebsd.org> References: <202508080949.5789nfTs002732@gitrepo.freebsd.org> To: Aymeric Wibo X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Rspamd-Queue-Id: 4bz4QC1Lsyz3ZKk X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] On 8 Aug 2025, at 10:49, Aymeric Wibo wrote: >=20 > The branch main has been updated by obiwac: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D84bbfc32a3f47bd2e32741247afe516c= beff7789 >=20 > commit 84bbfc32a3f47bd2e32741247afe516cbeff7789 > Author: Aymeric Wibo > AuthorDate: 2025-06-14 15:29:25 +0000 > Commit: Aymeric Wibo > CommitDate: 2025-08-08 09:42:44 +0000 >=20 > acpi_powerres: D3cold support >=20 > Cherry-pick commit 0b76c0a from ACPICA (actypes: Distinguish = between > D3hot/cold, and default `ACPI_STATE_D3` to D3cold). >=20 > The same distinction is made between `PCI_POWERSTATE_D3_HOT` and > `PCI_POWERSTATE_D3_COLD`, as they're defined by ACPI (and are = asserted > to be the same). >=20 > D3cold is essentially the same as D3hot except the power resources = are > turned off. Add support for D3cold to `acpi_pwr_switch_consumer`. >=20 > `acpi_d_state_to_str` replaces the `printf("D%d", d_state)` = pattern, > allowing for "D3hot" and "D3cold" strings to be printed instead of = just > "D3". >=20 > Reviewed by: markj, ziaee, mckusick (mentor) > Approved by: markj, mckusick (mentor) > Sponsored by: The FreeBSD Foundation > Differential Revision: https://reviews.freebsd.org/D48384 > --- > share/man/man9/pci.9 | 8 +++- > sys/compat/linuxkpi/common/include/linux/pci.h | 10 ++--- > sys/contrib/dev/acpica/include/actypes.h | 8 ++-- > sys/dev/acpica/acpi.c | 9 ++-- > sys/dev/acpica/acpi_pci.c | 12 +++--- > sys/dev/acpica/acpi_powerres.c | 58 = +++++++++++++++++++------- > sys/dev/acpica/acpivar.h | 9 ++++ > sys/dev/pci/pci.c | 7 +++- > sys/dev/pci/pcivar.h | 27 ++++++------ > 9 files changed, 98 insertions(+), 50 deletions(-) >=20 > [...] > diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c > index f94438cda041..4629165f34b2 100644 > --- a/sys/dev/pci/pci.c > +++ b/sys/dev/pci/pci.c > @@ -81,6 +81,9 @@ >=20 > #include >=20 > +#include > +#include > + This breaks non-ACPI kernel configs. Please revert or fix. Note this is particularly bad for architectures that don=E2=80=99t use / support ACPI, i.e. everything except x86 and arm64. Jessica > #include "pcib_if.h" > #include "pci_if.h" >=20 > @@ -2896,8 +2899,8 @@ pci_set_powerstate_method(device_t dev, device_t = child, int state) > } >=20 > if (bootverbose) > - pci_printf(cfg, "Transition from D%d to D%d\n", oldstate, > - state); > + pci_printf(cfg, "Transition from %s to %s\n", > + acpi_d_state_to_str(oldstate), acpi_d_state_to_str(state)); >=20 > PCI_WRITE_CONFIG(dev, child, cfg->pp.pp_location + PCIR_POWER_STATUS, > status, 2); > [...] From nobody Fri Aug 8 13:35:13 2025 X-Original-To: dev-commits-src-main@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 4bz4lz1Yctz63rKD; Fri, 08 Aug 2025 13:35:27 +0000 (UTC) (envelope-from obiwac@gmail.com) Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz4ly6DZXz3hsj; Fri, 08 Aug 2025 13:35:26 +0000 (UTC) (envelope-from obiwac@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6157b5d0cc2so3063035a12.1; Fri, 08 Aug 2025 06:35:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754660125; x=1755264925; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W8exmYIuZCsAQ2OCmUdQ8BIaVQURuBEuUHhAV75jMjU=; b=XmybCVpf1BDHQ3QzHuNrRTHeAnE2sUGkus4iqbkVac+atedcww+iTYQM9C/82vSn8y dJDxGMvEH5njMs/LcyN2z6b/xCbHGxd4QWmKstUcJbHIRw/xSkNDby4v7n2tSfCewghq kbgmou0RsMGZdAc5oZt0a5HZQs2lUb9T/TWujL9uOfHGMwz5zDanqdWRo0i6LXYRc5kT 6+iy/p76zXD6l4GQazulLyj0iyhkQr9MG8T78Fvw9UgwqeIrC4lfSocmQPLENLs2Yfmt 63G4VTj1JOeWyP7ABt8WU/TxVpkPPXVIeYOnpr5Mt3Dow09P0BG/wVd1YbEo9BjrVLM+ 4/1w== X-Forwarded-Encrypted: i=1; AJvYcCVZ6RYaDQ+QpUEmO9Megstc22tXlInZNUvL7TcEhBT5FmER6fJ+egSEOGawoktmK2ABnjXJDJOy/Hk839yjaTMd+W6q@freebsd.org, AJvYcCXvi1OOtXXHJQMC8a4NoHqqPJJStuR+zJTLfrEf4LmHpuIOXfSmjiBTbjxBaJTtTH70TfZddhAJl/gDmrUity9HzvTFoDE=@freebsd.org X-Gm-Message-State: AOJu0Yw5S05mHOpJmOoVY6NalOyLuF82uWAS5zIbBDLULUSwQMQR8NOw 2bi3yS8yZLj8QI2ZL1wuCnONwF5b6rwppTu0qQe+7wtcjL/0aLYpG8t+uh7ZDg== X-Gm-Gg: ASbGncu0Sg9hEG54fwNeg61m7DXvmwJp4eA9wvUVzKNpDygiQPJohJuPm7lzVrnSH5O E25r28AS+TGtV8u8GHPPopl1B+wwW+PBLXHokrWPqa+QMsR5jjsaTCtcrCiApZvNMO3AScfsmcO ZHSN9q8y98cTcx9oef160YZYJbeSdSSTp1Yzv43JZEYXGuYQFBt+CoQAzrp0SOy+EBZLBPi9L3Z 0rtaC5a6hyAF7V+qPwBbVjT7ayxWVebcp9rtIkYtk30/HVEylArW0uddzeUkZgzTtxt3APDtnjn B24aY34gjO5L3Z3VZEeWvhriG8qSIP2q2Hw81xNkpQdLv5/YEU6RRXBKhmJ1/xeSy8mUqrSFlYo yyV+drbDQGd3BmJalLKvxbiZSV40wPxN5FgRfifQDJOzGjV6Z54uu3Wvm6g== X-Google-Smtp-Source: AGHT+IEscI/wjhj7CjXUNkvPPgo5Ny09hKHfqf1dspPVVRp6DHoozrzaEogEbSftevAiE6mVn1NmhQ== X-Received: by 2002:a05:6402:26d1:b0:615:5aec:561b with SMTP id 4fb4d7f45d1cf-617e2c4bc68mr2185060a12.17.1754660124943; Fri, 08 Aug 2025 06:35:24 -0700 (PDT) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com. [209.85.218.41]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6178b074a38sm5528041a12.32.2025.08.08.06.35.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Aug 2025 06:35:24 -0700 (PDT) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-af93c3bac8fso310193866b.2; Fri, 08 Aug 2025 06:35:24 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCWs3/b3EWgMtrFzuQI8MWTwOZsyJQwiIOmlukf6ZAnLURO35V8GEJsNDaHFB2KiK5BGUh/nWUkjbv+UWX62HDjcYQLo@freebsd.org, AJvYcCXXk4+Ayo9r1R7VPJzXVwvKbPgkW5BAf6gHwe0JqpW9ceIErtDNqeMhj2Nxodg+FtR8p2hUvv4o/ffR4mjYllipqTgJNcE=@freebsd.org X-Received: by 2002:a17:907:3f94:b0:af9:14cf:d808 with SMTP id a640c23a62f3a-af9c654272amr279171766b.55.1754660124242; Fri, 08 Aug 2025 06:35:24 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508080949.5789nfTs002732@gitrepo.freebsd.org> <80E8FFC9-8A81-400A-A849-2A468B212884@freebsd.org> In-Reply-To: <80E8FFC9-8A81-400A-A849-2A468B212884@freebsd.org> From: obiwac Date: Fri, 8 Aug 2025 15:35:13 +0200 X-Gmail-Original-Message-ID: X-Gm-Features: Ac12FXzKWRuHCKDCwamS4mu1hd8k5HksAkgyGb6bHHXyxCvVTiEvsY4vY0ok-N0 Message-ID: Subject: Re: git: 84bbfc32a3f4 - main - acpi_powerres: D3cold support To: Jessica Clarke Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4bz4ly6DZXz3hsj X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] Oops, sorry about the screw up, https://reviews.freebsd.org/D51823. On Fri, 8 Aug 2025 at 15:20, Jessica Clarke wrote: > > On 8 Aug 2025, at 10:49, Aymeric Wibo wrote: > > > > The branch main has been updated by obiwac: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D84bbfc32a3f47bd2e3274124= 7afe516cbeff7789 > > > > commit 84bbfc32a3f47bd2e32741247afe516cbeff7789 > > Author: Aymeric Wibo > > AuthorDate: 2025-06-14 15:29:25 +0000 > > Commit: Aymeric Wibo > > CommitDate: 2025-08-08 09:42:44 +0000 > > > > acpi_powerres: D3cold support > > > > Cherry-pick commit 0b76c0a from ACPICA (actypes: Distinguish between > > D3hot/cold, and default `ACPI_STATE_D3` to D3cold). > > > > The same distinction is made between `PCI_POWERSTATE_D3_HOT` and > > `PCI_POWERSTATE_D3_COLD`, as they're defined by ACPI (and are assert= ed > > to be the same). > > > > D3cold is essentially the same as D3hot except the power resources a= re > > turned off. Add support for D3cold to `acpi_pwr_switch_consumer`. > > > > `acpi_d_state_to_str` replaces the `printf("D%d", d_state)` pattern, > > allowing for "D3hot" and "D3cold" strings to be printed instead of j= ust > > "D3". > > > > Reviewed by: markj, ziaee, mckusick (mentor) > > Approved by: markj, mckusick (mentor) > > Sponsored by: The FreeBSD Foundation > > Differential Revision: https://reviews.freebsd.org/D48384 > > --- > > share/man/man9/pci.9 | 8 +++- > > sys/compat/linuxkpi/common/include/linux/pci.h | 10 ++--- > > sys/contrib/dev/acpica/include/actypes.h | 8 ++-- > > sys/dev/acpica/acpi.c | 9 ++-- > > sys/dev/acpica/acpi_pci.c | 12 +++--- > > sys/dev/acpica/acpi_powerres.c | 58 +++++++++++++++++++= ------- > > sys/dev/acpica/acpivar.h | 9 ++++ > > sys/dev/pci/pci.c | 7 +++- > > sys/dev/pci/pcivar.h | 27 ++++++------ > > 9 files changed, 98 insertions(+), 50 deletions(-) > > > > [...] > > diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c > > index f94438cda041..4629165f34b2 100644 > > --- a/sys/dev/pci/pci.c > > +++ b/sys/dev/pci/pci.c > > @@ -81,6 +81,9 @@ > > > > #include > > > > +#include > > +#include > > + > > This breaks non-ACPI kernel configs. Please revert or fix. > > Note this is particularly bad for architectures that don=E2=80=99t use / > support ACPI, i.e. everything except x86 and arm64. > > Jessica > > > #include "pcib_if.h" > > #include "pci_if.h" > > > > @@ -2896,8 +2899,8 @@ pci_set_powerstate_method(device_t dev, device_t = child, int state) > > } > > > > if (bootverbose) > > - pci_printf(cfg, "Transition from D%d to D%d\n", oldstate, > > - state); > > + pci_printf(cfg, "Transition from %s to %s\n", > > + acpi_d_state_to_str(oldstate), acpi_d_state_to_str(state)); > > > > PCI_WRITE_CONFIG(dev, child, cfg->pp.pp_location + PCIR_POWER_STATUS, > > status, 2); > > [...] > From nobody Fri Aug 8 14:58:01 2025 X-Original-To: dev-commits-src-main@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 4bz6bb5ZF9z6412Z for ; Fri, 08 Aug 2025 14:58:19 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic311-23.consmr.mail.gq1.yahoo.com (sonic311-23.consmr.mail.gq1.yahoo.com [98.137.65.204]) (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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz6bb3Mc5z3DLv for ; Fri, 08 Aug 2025 14:58:19 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=FKzBCe1m; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.65.204 as permitted sender) smtp.mailfrom=marklmi@yahoo.com; dmarc=pass (policy=reject) header.from=yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1754665093; bh=pmjPIZ3Ll1qPGaafleC84DnkmXMKwgg+EVRhysE707g=; h=From:Subject:Date:Cc:To:References:From:Subject:Reply-To; b=FKzBCe1mCcWZpaAu9f2EtDaaWZvXW/sxUD8aQhu4VtkmTg20Ldf15CORis2nP7z81UjmtdA2KgMXMswFtGgMdUPjHVkhik3iOj6+pGK6AHr3tVYRTk055jer0dL/eE4UCra1yqY91vRLyoycoAeuUqtbhTLFwr2AkRRp7Ffs15AR9BiGYkv55YJecc+eazFAhrZ66cpAvLEl0fhkW3AzBw97Y5niBCG6YTcnCVnXbnz3vyg59RIUcgJUstyIZN+bLSZKTrwqeBp+Pjy33VHjWX0Qo6cNTCfwDCsuYG5GXB7X3hR5QaxmzgB9LkryPiwlNO6DXfqBNMoPjTQQxAckNw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1754665093; bh=JSlg02VG8tKmcjLokDhRfY4bOw5Gi/M5Cse3iJz1FQh=; h=X-Sonic-MF:From:Subject:Date:To:From:Subject; b=ll+pbVRnekTSOCtRIr25y9OdrEB3WPpgDSxC4jpOF4dmoSpNvZqjXhWA5WIXS7/qMH3RdjuJ0elvnLGX6H2q3+1NGINV4Vq4ZSOY55Mb8OPyrIaCpKWP4mISNPOV7xIfsZbpAhfEH6sw0jF7qvS/6UTKHzB2FEZNPUB5RiAPRiO9kpE3Nq6iSPdZ8lOAGusQ/NfMP+AiXdjUcKBStjInGfnGRvy5mpygqDOMVEWEDFfOlUTrX2brzyDjRWeB9wn9XfBESdJwq9G+6vl6MDSZpV+KsiKZJSovepGdVYkj45kzKvBUnbqHwaFJxPM2ohc9XjrauhZkpOo0MbTn60sd4Q== X-YMail-OSG: AYXaO5AVM1mSmN2IiY7VjwpznowrK_.ZS79yAZ018V5R8DH9DYpMgCIrFmHzS9W RA5iOatnqaaQn3mvFwTWlvol1Qmd4ukk_1W26QySefOyCs4y0lS67GIQz4QpR6xinH8peiPZL_45 qr8Vabs1agC9fJ4cWhLnHEO9cGUf5VUrtWkbEPyJZw5JEmvaScZiZuLTk4Z.q4Ri.zf_nsAogs_X CVzQ7HNpstOs2WmAs1H0sajsejT3D_.f90D3Ws3_9IDgq1RF6rtKGmWcr_LIKRLlZBuQyOwz1QBW a2uB9W6oW212m487Py68ktsmAnkubv6Yb9SyNO5Auu3An8hLGn4AKfRleLtA7r0G_spJ7LkTcDZg kpnaciSPoLlWijBNhH4Hj.DB0jrChWrqHt640kSdSTdWwXO_iphT1XfxPLYgm5_qBWVRiQ9bz5Kg uv2aahS8ctyuQTCJ.IOsBMXT69QRcPZ384TNKzQd0k8nLK26UTkAYtA2T5mpxOzxDkDN_Q8Vg652 gyeWp15RWv3w4yIUnIzLPCVc.ZY252a_JTu_p0LP.WDpwUXO9wXRRjhoHIfrz7fbaXXalfLGfpNV HfOiG1h3HAGIveOQsITLMN9JeXX8x01oBiKautWlu2.pIHOVxR.NN7pqeN9kWgkwxxlg2ZqhMbel 4nT7oNK2wR2IaiUFxnjAb1GJhitKNKIV4LH_auVvJO3dB1E0troUItWSjK1K9Fn6Qbk_rwIzy5M. 6ixnz304.f3RPhjphj89oCd_BIgTOhHcB5krQhXAI._B5ILZ6OCI8VBWTDcAO0pMrQl2XLMxLKDn 8GWj3mlmuOFkiV_iGrmtkql1yGTyTnRFhO3Hh3K4nAvgYXzpw8D0AYjfjJeLsABwF2U6_L09azYL uNZY3ZZoP2.Vrgr86klgnTDwpyC2QznsZa5WqKmKLnpvah__kLn4j1pfWeaWrIYTnsmoPqE3Dv98 UL2xra1K4t5FhkoNeHhBiAH_6PQ6W8Z7mcWEcfG3KaonFhYjk2Gktm.rH.bFU64feAcXEhN2jcD8 N0n3ROxKzQhzShBc6SDft6zcPzJBilT0Bx.bn13985YpxYVwzcPCi3M8YsI41nMrRMD8cUj6ME3g n8uLvELG81mok1LdQ8sBmvxAHEv1GVhAx7Z6MwJr6DNT7gCbQQuyTfsxFKr20fkw9QPQzNDm_.FK Q07afpyvoZFzrnP9IAH08jSp6cjpSuRO5LG343UQ42mAVoTvyIPz3TF6XoLw4EaRqpSGJtJiQ9Bt dCptHgKwitdpRGnRUxA7Lfk7DQ._e8vvwpaE0sNwdmhLYM00CDLAuk4KZz3eHW.EIc06ZfhVUw_L AVUpmgwO.Jr2yPcqeuKSIcBwhPf6ftD6gyHi2vF7q5H4YRwWQt0mhzQdkIxe9hpmTt8.CDwrfJXH S_mhESJHc7S3u3PWp3w.1CbXE.BzWr_MoFXs5JrHMr6P0_Kse.lPA_.jAnwl6zWlB9yhastAzG3U 8QgInr4w.TlILdeg.hgHloXUq4ycu6vxI3wRHjkB20nKavudA0kib1hzV4i0qVokx6msUstE9swl MGrQvD7AAqALe_XzizuOOs3eiBirAFRQLnutOY8VQCKzvovli0qAjtUASX4t2PmgvDHUzYsFoSNv NQuyUJ8I_pL5sGMMD9sP.Ywb_uIGNvX8fSyCaTSvn5ay.kFf6GTRB5Wf12UistHmZXGLXtQeUu9i .ryZeYQwwcUMrBdt6K_S1vkwdpO7f.RT5pupO..SZ5oC1dP6GJJJp8H13AxUAllKgDc_IZnfX2TE o7OigA.ECK5U_05BCYc3MJN3TSkhjrEheN3dosvXnsIkkt3n_m7D99xvkMJjOsDz.hS2AWFlPfer zWs21K1C0lWujCJG1UhIBkzrCISyqOvLJwo10WaaoYiuimd.9S_a2Yy57i1W0LUfvHxx5U3aMClD wKXO4Q7GY93KfagN066THbBYELU2hE.TnfbsMgaTDa5dKPdiULBXxVUUOhLhdbepohFOzUEjgorM YQFBm9IxoxmFg1J9uoP7RgHShGcYtp5rlujWlydw8L5W4jITnP_suz0jRUtL6jTJtWQn4GmcmeBK Caez17t0DcUq4kyjC3prCwpzm58fjAyNCHFw8nR5ETpQFLS4kd2lJVaLghq.5gjDKopBb91nlyrs FnMAw1UPYFWkSBq61_YbHrRWVgnNFNvC1jYhuBRnsmTedo1Aytx4A1RByEEnvOBULl1NTiPk3wc_ qLQPibO2yryy5WZg08ClauP5owqjxsSJUzFN_PYx8etETdeybKv1u84oxpeoG4.1In2SNhAhbBxX HQvv1vTZNqbXO1mbqDeoT6.uyLygs5Q-- X-Sonic-MF: X-Sonic-ID: 6e38701f-1041-4f51-a5a3-ca1f1f037bb4 Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.gq1.yahoo.com with HTTP; Fri, 8 Aug 2025 14:58:13 +0000 Received: by hermes--production-gq1-74d64bb7d7-bcggp (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID fbcbf72a96ada09b68bcdd3fe5f71bcb; Fri, 08 Aug 2025 14:58:12 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: RE: git: 66c75fa63aff - main - freebsd-update: Fix the pkgbase check [-r basedir vs. -c basedir use --and the documentation?] Message-Id: Date: Fri, 8 Aug 2025 07:58:01 -0700 Cc: FreeBSD-pkgbase@freebsd.org, FreeBSD-pkg@freebsd.org To: Mark Johnston , dev-commits-src-main@freebsd.org X-Mailer: Apple Mail (2.3826.600.51.1.1) References: X-Spamd-Result: default: False [-3.50 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; MV_CASE(0.50)[]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; FROM_HAS_DN(0.00)[]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; FREEMAIL_FROM(0.00)[yahoo.com]; RCPT_COUNT_THREE(0.00)[4]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[98.137.65.204:from]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; MID_RHS_MATCH_FROM(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.65.204:from]; SUBJECT_HAS_QUESTION(0.00)[] X-Rspamd-Queue-Id: 4bz6bb3Mc5z3DLv X-Spamd-Bar: --- Mark Johnston wrote on Date: Fri, 08 Aug 2025 13:00:45 UTC : > The branch main has been updated by markj: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D66c75fa63aff40e9c587345b2cc6b814= 8e396de8 >=20 > commit 66c75fa63aff40e9c587345b2cc6b8148e396de8 > Author: Mark Johnston > AuthorDate: 2025-08-06 20:36:05 +0000 > Commit: Mark Johnston > CommitDate: 2025-08-08 12:51:54 +0000 >=20 > freebsd-update: Fix the pkgbase check >=20 > Even on a pkgbase system, it should be possible to use freebsd-update = -j > to upgrade a non-pkgbase jail, at least for the time being. However, > the check_pkgbase() call came before get_params, so BASEDIR was always > set to /. >=20 > Make check_pkgbase() a pure function and call it after get_params(). > While here, use pkg -r ${BASEDIR} instead of pkg -c ${BASEDIR} since = the > latter requires root privileges. Does this -r vs -c change have consequences such as which /var/cache/pkg/ or whatever is updated (or if such is updated)? In other words, can -r fully substitute for -c? (If it could, I'd wonder why -c even exists.) Might there be uninstended conseqeucnes to the change? May be the pkg man page should be more explicit about when to use -r vs. -c for the base dir? > freebsd-update is supposed to be run > as root, but it doesn't actually check this that I can see, so let's = not > make that assumption here since it affects the result of the function > (i.e., pkg -c ${BASEDIR} always fails as a non-root user). >=20 > Reviewed by: des > Fixes: 856e158dc4aa ("freebsd-update: improve pkgbase check") > MFC after: 2 weeks > Differential Revision: https://reviews.freebsd.org/D51770 =3D=3D=3D Mark Millard marklmi at yahoo.com From nobody Fri Aug 8 15:39:39 2025 X-Original-To: dev-commits-src-main@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 4bz7WJ202rz644V5; Fri, 08 Aug 2025 15:39:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz7WJ1J0Pz3YPr; Fri, 08 Aug 2025 15:39:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754667580; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qaQl8tbyY7MwGckj2V1o2WeU54YcUDeu+hvDQ6ljmh0=; b=wr4kaFuLENEW5xtpQDGRY6Eiqlnr/esbFiuFTn/HXqgne1+i5PHG6eDKn4mSPrx50oahlq Yy4+Sk//RTCEYEPd3wdf2VrC1nVP7sfXofBK2OQwUJnYA6lWdANWDfA/x3bSnhfoqN5C0s GVym3ldS2F98FynqXco6pf1FXS0qTg65x5R2SfTxIzUPLic1jIrEbFVS00P0TGYac5wypT XIsUhZlojV4pAUJk6NPAhF/uawHDhPlE4s8ZDfd/8pk5sUbiy30jG2Nou4jzvKP5LG3SD5 yCD3AtAN3QK9SlVpTora+mHpQxTlWI0BMjLfczIPsI227D3WZU3scnwYPPNQiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754667580; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qaQl8tbyY7MwGckj2V1o2WeU54YcUDeu+hvDQ6ljmh0=; b=RfGc/P9CpN5TlgwKSZKeAZQfgnszNZQtu+j9rob+H86nhABPrL22S5LTO6N02198c5Rliq 3mV52mgVn0S/Ceyok3XzUGg7L+fRgTEJAISzk/YUv4dcV8ZCwPdnI+IrBvYCFGESKWTbie OgtSJ4OB3hqp15soCon4QQ0koKMYB2oITxAcqZOQJIUzdjEG8M8fqEzv/21Ak+zTmd1zfi TiiVaS27MEfs6H+lCUCR4byMyLaFcqtiLC3iummEoNNvkF6siyqprxrFhPWoh18k9YbA/S wUN4mXDJsgmM8aMi/Xc3Yq8VS7eXINmDDtvQ/MGbp7xzs62Rb3yz7NBipyrjig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754667580; a=rsa-sha256; cv=none; b=RxnmSrKNjzaNTuY+qnEF5CGwsVgQPiJ2j9ksydNhzAWPpUX7yG3zA1JEtUIVZi4jJH/T69 XgSHwEFZSWA2TV/90ts/tdbohpla2q1eETbrs1VwAG0ttsTuVBVeh4kVfDgKIyrI5ZUBTP wnKggc8uZjwEygG9+oAnQqwgn6PhSThI3G76nBXvbNnF23t8Ogdgg5rK23BvNpSqTdM1pe 3nXHg0iUrbT1j0DS/La8EjdHfn0KjcHLCY3MLOITe6Ttm6L08/T+YdastkrrOiAX/V4Bk8 6PO6bM7pjPk+Ppn9/J0HylwWXn2sr4TU7SV2xb/UtpQRAIj5ZYxovs/LG96QzQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz7WJ0bhLzhm5; Fri, 08 Aug 2025 15:39:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578FddZM056899; Fri, 8 Aug 2025 15:39:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578FddbT056896; Fri, 8 Aug 2025 15:39:39 GMT (envelope-from git) Date: Fri, 8 Aug 2025 15:39:39 GMT Message-Id: <202508081539.578FddbT056896@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: f4fd2aa07cde - main - libutil++: Move to clibs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f4fd2aa07cdeca58ff792aebeca5c572fd92dffc Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=f4fd2aa07cdeca58ff792aebeca5c572fd92dffc commit f4fd2aa07cdeca58ff792aebeca5c572fd92dffc Author: Lexi Winter AuthorDate: 2025-08-08 15:14:07 +0000 Commit: Lexi Winter CommitDate: 2025-08-08 15:14:07 +0000 libutil++: Move to clibs This library only installs manual pages, so putting it in its own package means we build a FreeBSD-libutil++-man package but not a base FreeBSD-libutil++ package. Without a base package, the man package can't be installed due to the missing dependency. We don't really need a separate package for a few manpages, so move it to clibs. Reviewed by: des Differential Revision: https://reviews.freebsd.org/D51756 --- lib/libutil++/Makefile | 2 +- release/packages/ucl/libutil++-all.ucl | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile index df3074c2278e..729a336ddb3a 100644 --- a/lib/libutil++/Makefile +++ b/lib/libutil++/Makefile @@ -1,4 +1,4 @@ -PACKAGE= lib${LIB} +PACKAGE= clibs LIB_CXX= util++ INTERNALLIB= true SHLIB_MAJOR= 1 diff --git a/release/packages/ucl/libutil++-all.ucl b/release/packages/ucl/libutil++-all.ucl deleted file mode 100644 index dfd77215dbc5..000000000000 --- a/release/packages/ucl/libutil++-all.ucl +++ /dev/null @@ -1,4 +0,0 @@ -comment = "C++ utility library" -desc = < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 7d2cfb27d62f - main - krb5: Move headers to the kerberos-lib package List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d2cfb27d62f7f4663ffdc7b847b05c4971d9e33 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=7d2cfb27d62f7f4663ffdc7b847b05c4971d9e33 commit 7d2cfb27d62f7f4663ffdc7b847b05c4971d9e33 Author: Lexi Winter AuthorDate: 2025-08-08 15:36:06 +0000 Commit: Lexi Winter CommitDate: 2025-08-08 15:36:06 +0000 krb5: Move headers to the kerberos-lib package Reviewed by: manu Differential Revision: https://reviews.freebsd.org/D51826 --- krb5/include/Makefile.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/krb5/include/Makefile.inc b/krb5/include/Makefile.inc index 56c36b7539f7..1f0dddcf31e1 100644 --- a/krb5/include/Makefile.inc +++ b/krb5/include/Makefile.inc @@ -7,4 +7,6 @@ # under sponsorship from the FreeBSD Foundation. # +PACKAGE= kerberos-lib + .include "../Makefile.inc" From nobody Fri Aug 8 15:59:45 2025 X-Original-To: dev-commits-src-main@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 4bz7yT20Frz646Ff; Fri, 08 Aug 2025 15:59:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz7yT183mz3cj6; Fri, 08 Aug 2025 15:59:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754668785; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2M2yTdVke7mFduct7HqJnUvuK4buTuPYWoTox8xJinA=; b=mJHgycpdI5qv+Vh0jPQQoFGirBYu3fv/PNvAepSdLuDOgwcZBSyCkjU+GwZ+I/2OzsrEdJ f41F/d89DyqoitAvwmmW0xm6IJB8IIiwB4JJyCpq4O6dAgHyrnqRkhRsY8yWFW8g6qsMY9 tY1+ouKLj+GSjgNDB9uwoKsqa/pf4hDyxqXJ16iQzE5X9IDJc104mXbblTPNDlhuBwUFpw SCpf7vJUMAbqbKrNZ0eBo9rwV9qP6Jl5wAEaPcyPz1cX9UPi6zhdX4cbOnKDyTebNbWc3R Lg6Wc1svQzR0Yj0TTxxCyvUG/xnYWbTERyloUBOdCkB/TDdpvpJf8XcfvFHsKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754668785; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2M2yTdVke7mFduct7HqJnUvuK4buTuPYWoTox8xJinA=; b=KiX4o4UyZYjFt2IQ4sxP5OmUk81QzsrW24/bKR4SiWVPpMlTdu8c24FpPxf/YE9hKblR/I CXKwLRa6fQxC3sJVt4cet59xmMK6/o/yZ0WaPfowm6aDnGgK/a1Oh6mhF66OIQus++fS22 1VklRVRWzWgwoKrp121cgq3NayLUAMy9yxW8+DWeJ56S9zTsszgld4ELJuCVNIk+vjWxQg DyKnZyZhdu6IQAHJMer3scGdFFUQkoYrD5W9BonAiS56ChPLzIlRtA5g98Y/mZzFuz+T+Q fOiAuEKhsg2+ldUflEKTWv37xorTCV42U1rxBefGyZOZHYYtOHvPp1mo2VEpFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754668785; a=rsa-sha256; cv=none; b=xje1sY5JPnCe7hfOCkT9vRu3MuZsZzOFsK5uEqh92B5aBQi8C7Wh5TB4JqZHKZSasz+azB QVcAUJBmnP/5MgDuKHZRONjsnHkDHDZpoZQvf06ZXse9VOuCv2qVaHL0nOAVOEIlCvf+4p UAM05taSXgVs/dL1hfckhpLmYR6UpQIAhxDhic4Vo8s3bZStN4BaK6sea9Udv4x3bvZiDh iNnb9GcvNyiOkHV1feRi8I0gLRCjcfu2OQh/VE9eq1GUf7UZjIIDenDSnLk1rIziRXn22n SASDBjne0DG+FmvrIWjuMA/HchqLtoHB7sompaoWnq9BBk9c397EDWornD82RQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz7yT0hN4zjVv; Fri, 08 Aug 2025 15:59:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578FxjfQ094675; Fri, 8 Aug 2025 15:59:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578FxjHP094672; Fri, 8 Aug 2025 15:59:45 GMT (envelope-from git) Date: Fri, 8 Aug 2025 15:59:45 GMT Message-Id: <202508081559.578FxjHP094672@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 6dab48b9de6c - main - build: Switch CLEAN back on by default List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 6dab48b9de6c1bff61b0ce78029c1e3cba20895a Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=6dab48b9de6c1bff61b0ce78029c1e3cba20895a commit 6dab48b9de6c1bff61b0ce78029c1e3cba20895a Author: Dag-Erling Smørgrav AuthorDate: 2025-08-08 15:57:31 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-08 15:57:31 +0000 build: Switch CLEAN back on by default There have been too many issues with non-META_MODE incremental builds recently, and it is clear that most users, even developers, were not aware that the default had been switched. This will be revisited once more work has been done to help prevent future breakage. This reverts commit ba373fca78a114768244d6a8c27983da870c1169. Reviewed by: markj, jhb Differential Revision: https://reviews.freebsd.org/D51828 --- UPDATING | 4 ++++ share/man/man5/src.conf.5 | 6 +++--- share/mk/src.opts.mk | 2 +- tools/build/options/WITH_CLEAN | 1 - 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/UPDATING b/UPDATING index c817dbfed032..161c13a55065 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20250808: + The CLEAN option has been switched back from default-off to + default-on. This reverts the 20240729 change below. + 20250807: routed(8) and route6d(8) have moved to the FreeBSD-rip package. If you use either of these, you should install the new package. diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 94e5a0cfc8b9..2e694bfe3293 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,5 +1,5 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. -.Dd August 4, 2025 +.Dd August 8, 2025 .Dt SRC.CONF 5 .Os .Sh NAME @@ -411,8 +411,8 @@ Build clang-format. .It Va WITHOUT_CLANG_FULL Avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of the Clang C/C++ compiler. -.It Va WITH_CLEAN -Clean before building world and/or kernel. +.It Va WITHOUT_CLEAN +Do not clean before building world and/or kernel. .It Va WITHOUT_CPP Do not build .Xr cpp 1 . diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index ef43d3c939b2..6000da865332 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -80,6 +80,7 @@ __DEFAULT_YES_OPTIONS = \ CDDL \ CLANG \ CLANG_BOOTSTRAP \ + CLEAN \ CPP \ CROSS_COMPILER \ CRYPT \ @@ -200,7 +201,6 @@ __DEFAULT_NO_OPTIONS = \ BHYVE_SNAPSHOT \ CLANG_EXTRAS \ CLANG_FORMAT \ - CLEAN \ DIALOG \ DETECT_TZ_CHANGES \ DISK_IMAGE_TOOLS_BOOTSTRAP \ diff --git a/tools/build/options/WITH_CLEAN b/tools/build/options/WITH_CLEAN deleted file mode 100644 index d5962258bcc0..000000000000 --- a/tools/build/options/WITH_CLEAN +++ /dev/null @@ -1 +0,0 @@ -Clean before building world and/or kernel. From nobody Fri Aug 8 16:09:50 2025 X-Original-To: dev-commits-src-main@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 4bz8B71lkZz64770; Fri, 08 Aug 2025 16:09: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz8B644vqz3f96; Fri, 08 Aug 2025 16:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vF2hnj1WA79AR/eU3/mbMn7CGyXx0hYvoBQdenWWW+M=; b=QuPuctkJ1JTmkFUrZfva3dXQtbzT+Gqi80yuDeFFqPbl7/I3Foe1icPI7Jm083GFqSZlra GNfVrfraS+FVKPHWCfdxfrk1yd7AES/cTJnLbYIjhc+v0i+eI4IUAj+iHvxQCgfbGBSx/z w0QwfvyVVgXU8P8spTsvsP6AOhPWsAt64mHyhSGeM4IS1t6/C8OSbYEFTVMfLQIFGFqu00 3hKDh1PLZUD2yOQDsYRoHLeTQb1HjrcTlYvmvr9iC5PWw6JSkedhUJaHyILPXYKlczCfiR +u2JJ0LRp81NQIidRHVMKDK847mXtVFPbWk1XG9nk53caYVBfP1Mf2KYWNx6Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vF2hnj1WA79AR/eU3/mbMn7CGyXx0hYvoBQdenWWW+M=; b=qxxAP4XvHTBQ/vu+qKxTxEF8Hz7tF+LmTFqVMqsdxy7J+mY5HVrGjtntnLNsQJBSxLLjNb PbpcyoLrXEH8vZp+JfsbGszIyys2Hk5kQx4JXKkzrb4Tv8lWx12z9Qy9I4qy6f1n4ouIUH B6jK66TrDI7EE6pvJAOIr5OANct++dWYSeve54O7GV2u9Q2Oy9MLmEZNOVXNCr+clcofGz KOkgBPcUwHq11IaPmja4RjdlQ/Kl2Y2p185dGFvWmgHBTTavqXsItxwO8bu3eVgDSFr5V8 Jd1uauBTcLPxf43KF0+bN/ylMIaONkSgVFyGUDogiq8ZAAtKR7hKayaybJ92vA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754669390; a=rsa-sha256; cv=none; b=VVq52PQQg8FUQ4uc/6e1wwTDCgdOTTKZhx1PwBOMLEd6icDYPxCdnQZCa7xavpJd+X2Zct 65rRZoFLlKxTIHRrhsm6umGQweOWic4UccYi5chR9x/fNp8rk7LOj03aKh3cRtoTOIiKfP mMj81AUorrZHAFy341thnqVX3GJTOtg8lvpy+UJcFpg1rsSJ0N5xsr59+xtJ0JsOV0knpu yrWAlXWkR1kiXwJd0tGjkXXxqBvOd6oLr9Aa7uKFv4rWWtOe7yyaWkecL+8a/JIZKogP90 9kbkB6642M0LD4nZ3O054dSIohf23f5T8jK/JIniYRQHDYDaCo3bwhNrlKDhmQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz8B633JrzjsR; Fri, 08 Aug 2025 16:09:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578G9ohm013872; Fri, 8 Aug 2025 16:09:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578G9oId013868; Fri, 8 Aug 2025 16:09:50 GMT (envelope-from git) Date: Fri, 8 Aug 2025 16:09:50 GMT Message-Id: <202508081609.578G9oId013868@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mariusz Zaborski Subject: git: 50dee972977a - main - cap_fileargs.3: Polish List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 50dee972977a17d47bd76f52c54461ee8581d1b1 Auto-Submitted: auto-generated The branch main has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=50dee972977a17d47bd76f52c54461ee8581d1b1 commit 50dee972977a17d47bd76f52c54461ee8581d1b1 Author: Faraz Vahedi AuthorDate: 2024-12-14 15:43:36 +0000 Commit: Mariusz Zaborski CommitDate: 2025-08-08 16:08:21 +0000 cap_fileargs.3: Polish Extensively revised the manual page with clearer phrasing, better structure, and corrected grammar throughout. Also fixed typos and improved overall readability of the documentation. Signed-off-by: Faraz Vahedi --- lib/libcasper/services/cap_fileargs/cap_fileargs.3 | 174 ++++++++++----------- 1 file changed, 86 insertions(+), 88 deletions(-) diff --git a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 index c7ce45c518d1..6a69fe7e1f4a 100644 --- a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 +++ b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 @@ -22,10 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 6, 2023 +.Dd August 8, 2025 .Dt CAP_FILEARGS 3 .Os .Sh NAME +.Nm cap_fileargs , .Nm fileargs_cinit , .Nm fileargs_cinitnv , .Nm fileargs_init , @@ -35,9 +36,8 @@ .Nm fileargs_open , .Nm fileargs_fopen .Nd "library for handling files in capability mode" -.Sh LIBRARY -.Lb libcap_fileargs .Sh SYNOPSIS +.Lb libcap_fileargs .In sys/nv.h .In libcasper.h .In casper/cap_fileargs.h @@ -60,52 +60,57 @@ .Ft "char *" .Fn fileargs_realpath "fileargs_t *fa" "const char *pathname" "char *reserved_path" .Sh DESCRIPTION -The library is used to simplify Capsicumizing a tools that are using file system. -Idea behind the library is that we are passing a remaining -.Fa argc -and +The +.Nm +library is used to simplify Capsicumizing tools that are using file system. +The idea behind the library is that we pass the remaining arguments from .Fa argv -which contains a list of files that should be open for this program. -The library will create a service that will serve those files. +(with count specified by +.Fa argc ) +which contains the list of files that should be opened by the program. +The library creates a service that will serve those files. .Pp The function .Fn fileargs_init -create a service to the +creates a service to the .Nm system.fileargs . The .Fa argv contains a list of files that should be opened. The argument can be set to .Dv NULL -which will not create a service and all files will be prohibited to be opened. +to create no service and prohibit all files from being opened. The .Fa argc -argument contains a number of passed files. +argument contains the number of files passed to the program. The .Fa flags -argument limits opened files for either execution or reading and/or writing. +argument specifies whether files can be opened for execution, for reading, +and/or for writing. The .Fa mode -argument tells which what mode file should be created if the -.Dv O_CREATE -flag is present . -For more details of the +argument specifies the permissions to use when creating new files if the +.Dv O_CREAT +flag is set. +For more information about the .Fa flags and .Fa mode -arguments see +arguments, see .Xr open 2 . The .Fa rightsp -argument contains a list of the capability rights which file should be limited to. -For more details of the capability rights see +argument specifies the capability rights that will be applied to restrict +access to the files. +For more information about capability rights, see .Xr cap_rights_init 3 . The .Fa operations -argument limits the operations that are available using +argument specifies which operations are permitted when using .Nm system.fileargs . +The following flags can be combined to form the .Fa operations -is a combination of: +value: .Bl -ohang -offset indent .It FA_OPEN Allow @@ -122,121 +127,117 @@ Allow .Pp The function .Fn fileargs_cinit -is equivalent to -.Fn fileargs_init -except that the connection to the Casper needs to be provided. +behaves identically to +.Fn fileargs_init , +but requires an existing Casper connection to be passed as an argument. .Pp The functions .Fn fileargs_initnv and .Fn fileargs_cinitnv -are respectively equivalent to +are equivalent to .Fn fileargs_init and .Fn fileargs_cinit -expect that all arguments all provided as -.Xr nvlist 9 . -For details see -.Sx LIMITS . +respectively, but take their arguments in the form of an +.Xr nvlist 9 +structure. +See the +.Sx LIMITS +section for details on the expected argument types and values. .Pp The -.Fa fileargs_free -close connection to the +.Fn fileargs_free +function closes the connection to the .Nm system.fileargs -service and free are structures. -The function handle +service and frees all associated data structures. +The function safely handles .Dv NULL -argument. +arguments. .Pp The function .Fn fileargs_lstat -is equivalent to +provides the same functionality as .Xr lstat 2 . .Pp The functions .Fn fileargs_open and .Fn fileargs_fopen -are respectively equivalent to +behave identically to .Xr open 2 and .Xr fopen 3 -expect that all arguments are fetched from the +respectively, but retrieve their arguments from the .Va fileargs_t structure. .Pp The function .Fn fileargs_realpath -is equivalent to -.Xr realpath 3 . +provides the same functionality as the standard C library function +.Xr realpath 3 , +resolving all symbolic links and references in a pathname. .Pp +The following functions are reentrant but require synchronization for +thread safety: .Fn fileargs_open , .Fn fileargs_lstat , .Fn fileargs_realpath , .Fn fileargs_cinitnv , .Fn fileargs_initnv , and -.Fn fileargs_fopen -are reentrant but not thread-safe. -That is, they may be called from separate threads only with different +.Fn fileargs_fopen . +Multiple threads can call these functions safely only if they use different .Vt cap_channel_t -arguments or with synchronization. +arguments or proper synchronization mechanisms. .Sh LIMITS -This section describe which values and types should be used to pass arguments to the +This section describes the required and optional arguments that must be +passed to .Fa system.fileargs -through the +via the .Fn fileargs_initnv and .Fn fileargs_cinitnv -functions. -The +functions using an .Xr nvlist 9 -for that functions must contain the following values and types: +structure. +.Pp +The following arguments are required: .Bl -ohang -offset indent -.It flags ( NV_TYPE_NUMBER ) -The -.Va flags -limits opened files for either execution or reading and/or writing. -.It mode (NV_TYPE_NUMBER) -If in the -.Va flags -argument the +.It flags Pq Dv NV_TYPE_NUMBER +Specifies access permissions for opened files. +.It mode Pq Dv NV_TYPE_NUMBER +Required when the .Dv O_CREATE -flag was defined the -.Xr nvlist 9 -must contain the -.Va mode . -The -.Va mode -argument tells which what mode file should be created. -.It operations (NV_TYPE_NUMBER) -The -.Va operations -limits the usable operations for +flag is set in +.Va flags . +Specifies the permissions to use when creating new files. +.It operations Pq Dv NV_TYPE_NUMBER +Specifies which operations are allowed for .Fa system.fileargs . -The possible values are explained as +See the description of the .Va operations -argument with -.Fn fileargs_init . +argument in +.Fn fileargs_init +for possible values. .El .Pp -The +The following arguments are optional in the .Xr nvlist 9 -for that functions may contain the following values and types: +structure: .Bl -ohang -offset indent -.It cap_rights ( NV_TYPE_BINARY ) +.It cap_rights Pq Dv NV_TYPE_BINARY The .Va cap_rights -argument contains a list of the capability rights which file should be limited to. -.It ( NV_TYPE_NULL ) -Any number of +argument specifies the capability rights that will be applied to restrict +access to opened files. +.It filenames Pq Dv NV_TYPE_NULL +Multiple .Dv NV_TYPE_NULL -where the name of the element is name of the file which can be opened. +elements can be provided, where each element's name represents a file +path that is allowed to be opened. .El .Sh EXAMPLES -The following example first parse some options and then create the -.Nm system.fileargs -service with remaining arguments. .Bd -literal int ch, fd, i; cap_rights_t rights; @@ -287,16 +288,13 @@ fileargs_free(fa); .Xr nv 9 .Sh HISTORY The -.Nm cap_fileargs +.Nm service first appeared in .Fx 10.3 . .Sh AUTHORS .An Mariusz Zaborski Aq Mt oshogbo@FreeBSD.org .Sh BUGS The -.Lb cap_fileargs -included in -.Fx -is considered experimental, and should not be deployed in production -environments without careful consideration of the risks associated with -the use of experimental operating system features. +.Nm +service is considered experimental and should be thoroughly evaluated +for risks before deploying in production environments. From nobody Fri Aug 8 16:11:20 2025 X-Original-To: dev-commits-src-main@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 4bz8D43T9gz646xF; Fri, 08 Aug 2025 16:11:32 +0000 (UTC) (envelope-from oshogbo@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz8D40k3cz3frQ; Fri, 08 Aug 2025 16:11:32 +0000 (UTC) (envelope-from oshogbo@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669492; 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; bh=AJK21CzHGgK87Zfm8j1XLfJ030089U4ZnUYVZCqtNkM=; b=Qo8+e1e0Ah+fjCeJAq5RV82/VXe660kH1DDK6CbeVcsYvSFMNOVG11rUHJrAJfyRQYfKAm f/OQymM9ujUOCaMzUALSQqwEMM4J7CQsGUbIplsOyICUqrbLqc4Q1mOXIN7IC8kpudLtMQ hC8IKOFnFMKVBQWE1YBMcDa0F65IuUPVFoBHTRsDXnFVRZvWFUVGTUo5ty3PWbpAFkcfNl 5phWotXBDHSPHVLXCtf8KmYeFZCqiyE33NRWeSHIJj9lmn5Ougm8aHnmAvppXzTl6E4s4H B8FjmSBQCvzocnqgV9qJeZCx+ojy6di7IProPdSZmi0ZKMayD7k/24lWnVo2nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669492; 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; bh=AJK21CzHGgK87Zfm8j1XLfJ030089U4ZnUYVZCqtNkM=; b=K+Ar2n2bNIKjbOuCckkiun9lkj/8I16GemG1aUdjIC9Y7u5NUMj+uxvMRU6HQIl5hjHGlW TLzNpYDtSScUoI+krxG+q5dq1Qcw924en196e9uUWPbMayr5B6ZOzp+5c1wZXPX5ECar0L tfWKTGNtl8ali51IfVOhr9EaaofsMc+Nj8vi7WZMgGGaJO/srS0W18G/IdGeP30SJfM4Zp G+h2zqkcUqohESHfoUsRvQlpfPG9J3SOayMU3RnQ2dbgu6oucm4gwoMmwc3OSNuNSODMPt 57lSKllL9yzdvO6kRsMC9Ecn/bmYNPMWZKyPA7bOoWpDW78t42FjXZjRvQhyig== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754669492; a=rsa-sha256; cv=none; b=uo0VVgzz60kG9FFiNrzRI88tkG/sI6YajbjNxgirqzdRqyeNBaXZ8m5iB9iPpP+nXMhwJ9 gz3C3phBgM1beWm82EDVYtb9yXJFjDL06ZdMbxyMKYuRMQ6GBKxSvCI1TOb03MT9Kb5c/y a6ywcheQw5gWA+j/GpTFlzCqDqjf05wvs0cgauu+HGsudb22U7EkS0qpyLQxeoJSG7CNPD yb/KFKsQPuBlMZTlnSqVCFv90ZzNUE3ASgldR/t6YhiV/OFs2l2cUUI9zsMpuYCPowi30P LJN36vjkbMq61BBOD2Zd7x0/7ZHZFqEncyv1ptWJknp2S+SkIgCqbzGDr08i8w== Received: from mail-oo1-f47.google.com (mail-oo1-f47.google.com [209.85.161.47]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) (Authenticated sender: oshogbo) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bz8D36sQ9zM52; Fri, 08 Aug 2025 16:11:31 +0000 (UTC) (envelope-from oshogbo@freebsd.org) Received: by mail-oo1-f47.google.com with SMTP id 006d021491bc7-61b4b90fb87so1121613eaf.0; Fri, 08 Aug 2025 09:11:31 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCWsT5IECdqU4qZjPcZ2R/K/Dr54R3LAJ1jkothvfvxJzuUAwu+SnyqsJkwgtW32amCQdVP7vsSZshEz7ykw6aIjPch6@freebsd.org, AJvYcCXGUtrckK2xdITcjFY/Dx0dOq9P7IAo/9b1TUYzGUxe91s5jwqDpHh/86EXPEp6Et/9P8jRKVYKmlMAfIbpIqNMhO4txDU=@freebsd.org X-Gm-Message-State: AOJu0Yyyj2HGOoeQT/sx+te7LtMocjMayIjQzVzJ7inHJF2DLDBbDEkj Ex1Y3H0d7wVKJDJuhSAAXU0FkqamsTQCLIi9be+1apuk8ddK77gHNdsAKhnKj92gZCyjOuz87hH AsLxn6/7CJOtJTXKDnp/2L/lRUN4ILbY= X-Google-Smtp-Source: AGHT+IEAVHjz4b3xraIalbNuvM0n41iZGIzxGzfklB29Odzvak33HoVn24+J7yUoo+GhAq7DMMohoCSIV6mrvWIyM8E= X-Received: by 2002:a05:6820:168a:b0:619:950f:2413 with SMTP id 006d021491bc7-61b7c2e5650mr1720221eaf.2.1754669491045; Fri, 08 Aug 2025 09:11:31 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508081609.578G9oId013868@gitrepo.freebsd.org> In-Reply-To: <202508081609.578G9oId013868@gitrepo.freebsd.org> From: Mariusz Zaborski Date: Fri, 8 Aug 2025 18:11:20 +0200 X-Gmail-Original-Message-ID: X-Gm-Features: Ac12FXz2R-nWEjv9QoLRpF1kA1NYLhp1WnkNdaaVBUnXs_jXYlToi1a-1r841AY Message-ID: Subject: Re: git: 50dee972977a - main - cap_fileargs.3: Polish To: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000b64d70063bdcd3c3" --000000000000b64d70063bdcd3c3 Content-Type: text/plain; charset="UTF-8" PR: https://github.com/freebsd/freebsd-src/pull/1551 On Fri, 8 Aug 2025 at 18:10, Mariusz Zaborski wrote: > The branch main has been updated by oshogbo: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=50dee972977a17d47bd76f52c54461ee8581d1b1 > > commit 50dee972977a17d47bd76f52c54461ee8581d1b1 > Author: Faraz Vahedi > AuthorDate: 2024-12-14 15:43:36 +0000 > Commit: Mariusz Zaborski > CommitDate: 2025-08-08 16:08:21 +0000 > > cap_fileargs.3: Polish > > Extensively revised the manual page with clearer phrasing, better > structure, and corrected grammar throughout. Also fixed typos and > improved overall readability of the documentation. > > Signed-off-by: Faraz Vahedi > --- > lib/libcasper/services/cap_fileargs/cap_fileargs.3 | 174 > ++++++++++----------- > 1 file changed, 86 insertions(+), 88 deletions(-) > > diff --git a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 > b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 > index c7ce45c518d1..6a69fe7e1f4a 100644 > --- a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 > +++ b/lib/libcasper/services/cap_fileargs/cap_fileargs.3 > @@ -22,10 +22,11 @@ > .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > .\" SUCH DAMAGE. > .\" > -.Dd December 6, 2023 > +.Dd August 8, 2025 > .Dt CAP_FILEARGS 3 > .Os > .Sh NAME > +.Nm cap_fileargs , > .Nm fileargs_cinit , > .Nm fileargs_cinitnv , > .Nm fileargs_init , > @@ -35,9 +36,8 @@ > .Nm fileargs_open , > .Nm fileargs_fopen > .Nd "library for handling files in capability mode" > -.Sh LIBRARY > -.Lb libcap_fileargs > .Sh SYNOPSIS > +.Lb libcap_fileargs > .In sys/nv.h > .In libcasper.h > .In casper/cap_fileargs.h > @@ -60,52 +60,57 @@ > .Ft "char *" > .Fn fileargs_realpath "fileargs_t *fa" "const char *pathname" "char > *reserved_path" > .Sh DESCRIPTION > -The library is used to simplify Capsicumizing a tools that are using file > system. > -Idea behind the library is that we are passing a remaining > -.Fa argc > -and > +The > +.Nm > +library is used to simplify Capsicumizing tools that are using file > system. > +The idea behind the library is that we pass the remaining arguments from > .Fa argv > -which contains a list of files that should be open for this program. > -The library will create a service that will serve those files. > +(with count specified by > +.Fa argc ) > +which contains the list of files that should be opened by the program. > +The library creates a service that will serve those files. > .Pp > The function > .Fn fileargs_init > -create a service to the > +creates a service to the > .Nm system.fileargs . > The > .Fa argv > contains a list of files that should be opened. > The argument can be set to > .Dv NULL > -which will not create a service and all files will be prohibited to be > opened. > +to create no service and prohibit all files from being opened. > The > .Fa argc > -argument contains a number of passed files. > +argument contains the number of files passed to the program. > The > .Fa flags > -argument limits opened files for either execution or reading and/or > writing. > +argument specifies whether files can be opened for execution, for reading, > +and/or for writing. > The > .Fa mode > -argument tells which what mode file should be created if the > -.Dv O_CREATE > -flag is present . > -For more details of the > +argument specifies the permissions to use when creating new files if the > +.Dv O_CREAT > +flag is set. > +For more information about the > .Fa flags > and > .Fa mode > -arguments see > +arguments, see > .Xr open 2 . > The > .Fa rightsp > -argument contains a list of the capability rights which file should be > limited to. > -For more details of the capability rights see > +argument specifies the capability rights that will be applied to restrict > +access to the files. > +For more information about capability rights, see > .Xr cap_rights_init 3 . > The > .Fa operations > -argument limits the operations that are available using > +argument specifies which operations are permitted when using > .Nm system.fileargs . > +The following flags can be combined to form the > .Fa operations > -is a combination of: > +value: > .Bl -ohang -offset indent > .It FA_OPEN > Allow > @@ -122,121 +127,117 @@ Allow > .Pp > The function > .Fn fileargs_cinit > -is equivalent to > -.Fn fileargs_init > -except that the connection to the Casper needs to be provided. > +behaves identically to > +.Fn fileargs_init , > +but requires an existing Casper connection to be passed as an argument. > .Pp > The functions > .Fn fileargs_initnv > and > .Fn fileargs_cinitnv > -are respectively equivalent to > +are equivalent to > .Fn fileargs_init > and > .Fn fileargs_cinit > -expect that all arguments all provided as > -.Xr nvlist 9 . > -For details see > -.Sx LIMITS . > +respectively, but take their arguments in the form of an > +.Xr nvlist 9 > +structure. > +See the > +.Sx LIMITS > +section for details on the expected argument types and values. > .Pp > The > -.Fa fileargs_free > -close connection to the > +.Fn fileargs_free > +function closes the connection to the > .Nm system.fileargs > -service and free are structures. > -The function handle > +service and frees all associated data structures. > +The function safely handles > .Dv NULL > -argument. > +arguments. > .Pp > The function > .Fn fileargs_lstat > -is equivalent to > +provides the same functionality as > .Xr lstat 2 . > .Pp > The functions > .Fn fileargs_open > and > .Fn fileargs_fopen > -are respectively equivalent to > +behave identically to > .Xr open 2 > and > .Xr fopen 3 > -expect that all arguments are fetched from the > +respectively, but retrieve their arguments from the > .Va fileargs_t > structure. > .Pp > The function > .Fn fileargs_realpath > -is equivalent to > -.Xr realpath 3 . > +provides the same functionality as the standard C library function > +.Xr realpath 3 , > +resolving all symbolic links and references in a pathname. > .Pp > +The following functions are reentrant but require synchronization for > +thread safety: > .Fn fileargs_open , > .Fn fileargs_lstat , > .Fn fileargs_realpath , > .Fn fileargs_cinitnv , > .Fn fileargs_initnv , > and > -.Fn fileargs_fopen > -are reentrant but not thread-safe. > -That is, they may be called from separate threads only with different > +.Fn fileargs_fopen . > +Multiple threads can call these functions safely only if they use > different > .Vt cap_channel_t > -arguments or with synchronization. > +arguments or proper synchronization mechanisms. > .Sh LIMITS > -This section describe which values and types should be used to pass > arguments to the > +This section describes the required and optional arguments that must be > +passed to > .Fa system.fileargs > -through the > +via the > .Fn fileargs_initnv > and > .Fn fileargs_cinitnv > -functions. > -The > +functions using an > .Xr nvlist 9 > -for that functions must contain the following values and types: > +structure. > +.Pp > +The following arguments are required: > .Bl -ohang -offset indent > -.It flags ( NV_TYPE_NUMBER ) > -The > -.Va flags > -limits opened files for either execution or reading and/or writing. > -.It mode (NV_TYPE_NUMBER) > -If in the > -.Va flags > -argument the > +.It flags Pq Dv NV_TYPE_NUMBER > +Specifies access permissions for opened files. > +.It mode Pq Dv NV_TYPE_NUMBER > +Required when the > .Dv O_CREATE > -flag was defined the > -.Xr nvlist 9 > -must contain the > -.Va mode . > -The > -.Va mode > -argument tells which what mode file should be created. > -.It operations (NV_TYPE_NUMBER) > -The > -.Va operations > -limits the usable operations for > +flag is set in > +.Va flags . > +Specifies the permissions to use when creating new files. > +.It operations Pq Dv NV_TYPE_NUMBER > +Specifies which operations are allowed for > .Fa system.fileargs . > -The possible values are explained as > +See the description of the > .Va operations > -argument with > -.Fn fileargs_init . > +argument in > +.Fn fileargs_init > +for possible values. > .El > .Pp > -The > +The following arguments are optional in the > .Xr nvlist 9 > -for that functions may contain the following values and types: > +structure: > .Bl -ohang -offset indent > -.It cap_rights ( NV_TYPE_BINARY ) > +.It cap_rights Pq Dv NV_TYPE_BINARY > The > .Va cap_rights > -argument contains a list of the capability rights which file should be > limited to. > -.It ( NV_TYPE_NULL ) > -Any number of > +argument specifies the capability rights that will be applied to restrict > +access to opened files. > +.It filenames Pq Dv NV_TYPE_NULL > +Multiple > .Dv NV_TYPE_NULL > -where the name of the element is name of the file which can be opened. > +elements can be provided, where each element's name represents a file > +path that is allowed to be opened. > .El > .Sh EXAMPLES > -The following example first parse some options and then create the > -.Nm system.fileargs > -service with remaining arguments. > .Bd -literal > int ch, fd, i; > cap_rights_t rights; > @@ -287,16 +288,13 @@ fileargs_free(fa); > .Xr nv 9 > .Sh HISTORY > The > -.Nm cap_fileargs > +.Nm > service first appeared in > .Fx 10.3 . > .Sh AUTHORS > .An Mariusz Zaborski Aq Mt oshogbo@FreeBSD.org > .Sh BUGS > The > -.Lb cap_fileargs > -included in > -.Fx > -is considered experimental, and should not be deployed in production > -environments without careful consideration of the risks associated with > -the use of experimental operating system features. > +.Nm > +service is considered experimental and should be thoroughly evaluated > +for risks before deploying in production environments. > --000000000000b64d70063bdcd3c3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
<= div class=3D"gmail_quote gmail_quote_container">
On Fri, 8 Aug 2025 at 18:10, Mariusz Zaborski <oshogbo@freebsd.org> wrote:
The branch main has been update= d by oshogbo:

URL: https://cgit.= FreeBSD.org/src/commit/?id=3D50dee972977a17d47bd76f52c54461ee8581d1b1
commit 50dee972977a17d47bd76f52c54461ee8581d1b1
Author:=C2=A0 =C2=A0 =C2=A0Faraz Vahedi <kfv@kfv.io>
AuthorDate: 2024-12-14 15:43:36 +0000
Commit:=C2=A0 =C2=A0 =C2=A0Mariusz Zaborski <oshogbo@FreeBSD.org>
CommitDate: 2025-08-08 16:08:21 +0000

=C2=A0 =C2=A0 cap_fileargs.3: Polish

=C2=A0 =C2=A0 Extensively revised the manual page with clearer phrasing, be= tter
=C2=A0 =C2=A0 structure, and corrected grammar throughout. Also fixed typos= and
=C2=A0 =C2=A0 improved overall readability of the documentation.

=C2=A0 =C2=A0 Signed-off-by: Faraz Vahedi <kfv@kfv.io>
---
=C2=A0lib/libcasper/services/cap_fileargs/cap_fileargs.3 | 174 ++++++++++--= ---------
=C2=A01 file changed, 86 insertions(+), 88 deletions(-)

diff --git a/lib/libcasper/services/cap_fileargs/cap_fileargs.3 b/lib/libca= sper/services/cap_fileargs/cap_fileargs.3
index c7ce45c518d1..6a69fe7e1f4a 100644
--- a/lib/libcasper/services/cap_fileargs/cap_fileargs.3
+++ b/lib/libcasper/services/cap_fileargs/cap_fileargs.3
@@ -22,10 +22,11 @@
=C2=A0.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSS= IBILITY OF
=C2=A0.\" SUCH DAMAGE.
=C2=A0.\"
-.Dd December 6, 2023
+.Dd August 8, 2025
=C2=A0.Dt CAP_FILEARGS 3
=C2=A0.Os
=C2=A0.Sh NAME
+.Nm cap_fileargs ,
=C2=A0.Nm fileargs_cinit ,
=C2=A0.Nm fileargs_cinitnv ,
=C2=A0.Nm fileargs_init ,
@@ -35,9 +36,8 @@
=C2=A0.Nm fileargs_open ,
=C2=A0.Nm fileargs_fopen
=C2=A0.Nd "library for handling files in capability mode"
-.Sh LIBRARY
-.Lb libcap_fileargs
=C2=A0.Sh SYNOPSIS
+.Lb libcap_fileargs
=C2=A0.In sys/nv.h
=C2=A0.In libcasper.h
=C2=A0.In casper/cap_fileargs.h
@@ -60,52 +60,57 @@
=C2=A0.Ft "char *"
=C2=A0.Fn fileargs_realpath "fileargs_t *fa" "const char *pa= thname" "char *reserved_path"
=C2=A0.Sh DESCRIPTION
-The library is used to simplify Capsicumizing a tools that are using file = system.
-Idea behind the library is that we are passing a remaining
-.Fa argc
-and
+The
+.Nm
+library is used to simplify Capsicumizing tools that are using file system= .
+The idea behind the library is that we pass the remaining arguments from =C2=A0.Fa argv
-which contains a list of files that should be open for this program.
-The library will create a service that will serve those files.
+(with count specified by
+.Fa argc )
+which contains the list of files that should be opened by the program.
+The library creates a service that will serve those files.
=C2=A0.Pp
=C2=A0The function
=C2=A0.Fn fileargs_init
-create a service to the
+creates a service to the
=C2=A0.Nm system.fileargs .
=C2=A0The
=C2=A0.Fa argv
=C2=A0contains a list of files that should be opened.
=C2=A0The argument can be set to
=C2=A0.Dv NULL
-which will not create a service and all files will be prohibited to be ope= ned.
+to create no service and prohibit all files from being opened.
=C2=A0The
=C2=A0.Fa argc
-argument contains a number of passed files.
+argument contains the number of files passed to the program.
=C2=A0The
=C2=A0.Fa flags
-argument limits opened files for either execution or reading and/or writin= g.
+argument specifies whether files can be opened for execution, for reading,=
+and/or for writing.
=C2=A0The
=C2=A0.Fa mode
-argument tells which what mode file should be created if the
-.Dv O_CREATE
-flag is present .
-For more details of the
+argument specifies the permissions to use when creating new files if the +.Dv O_CREAT
+flag is set.
+For more information about the
=C2=A0.Fa flags
=C2=A0and
=C2=A0.Fa mode
-arguments see
+arguments, see
=C2=A0.Xr open 2 .
=C2=A0The
=C2=A0.Fa rightsp
-argument contains a list of the capability rights which file should be lim= ited to.
-For more details of the capability rights see
+argument specifies the capability rights that will be applied to restrict<= br> +access to the files.
+For more information about capability rights, see
=C2=A0.Xr cap_rights_init 3 .
=C2=A0The
=C2=A0.Fa operations
-argument limits the operations that are available using
+argument specifies which operations are permitted when using
=C2=A0.Nm system.fileargs .
+The following flags can be combined to form the
=C2=A0.Fa operations
-is a combination of:
+value:
=C2=A0.Bl -ohang -offset indent
=C2=A0.It FA_OPEN
=C2=A0Allow
@@ -122,121 +127,117 @@ Allow
=C2=A0.Pp
=C2=A0The function
=C2=A0.Fn fileargs_cinit
-is equivalent to
-.Fn fileargs_init
-except that the connection to the Casper needs to be provided.
+behaves identically to
+.Fn fileargs_init ,
+but requires an existing Casper connection to be passed as an argument. =C2=A0.Pp
=C2=A0The functions
=C2=A0.Fn fileargs_initnv
=C2=A0and
=C2=A0.Fn fileargs_cinitnv
-are respectively equivalent to
+are equivalent to
=C2=A0.Fn fileargs_init
=C2=A0and
=C2=A0.Fn fileargs_cinit
-expect that all arguments all provided as
-.Xr nvlist 9 .
-For details see
-.Sx LIMITS .
+respectively, but take their arguments in the form of an
+.Xr nvlist 9
+structure.
+See the
+.Sx LIMITS
+section for details on the expected argument types and values.
=C2=A0.Pp
=C2=A0The
-.Fa fileargs_free
-close connection to the
+.Fn fileargs_free
+function closes the connection to the
=C2=A0.Nm system.fileargs
-service and free are structures.
-The function handle
+service and frees all associated data structures.
+The function safely handles
=C2=A0.Dv NULL
-argument.
+arguments.
=C2=A0.Pp
=C2=A0The function
=C2=A0.Fn fileargs_lstat
-is equivalent to
+provides the same functionality as
=C2=A0.Xr lstat 2 .
=C2=A0.Pp
=C2=A0The functions
=C2=A0.Fn fileargs_open
=C2=A0and
=C2=A0.Fn fileargs_fopen
-are respectively equivalent to
+behave identically to
=C2=A0.Xr open 2
=C2=A0and
=C2=A0.Xr fopen 3
-expect that all arguments are fetched from the
+respectively, but retrieve their arguments from the
=C2=A0.Va fileargs_t
=C2=A0structure.
=C2=A0.Pp
=C2=A0The function
=C2=A0.Fn fileargs_realpath
-is equivalent to
-.Xr realpath 3 .
+provides the same functionality as the standard C library function
+.Xr realpath 3 ,
+resolving all symbolic links and references in a pathname.
=C2=A0.Pp
+The following functions are reentrant but require synchronization for
+thread safety:
=C2=A0.Fn fileargs_open ,
=C2=A0.Fn fileargs_lstat ,
=C2=A0.Fn fileargs_realpath ,
=C2=A0.Fn fileargs_cinitnv ,
=C2=A0.Fn fileargs_initnv ,
=C2=A0and
-.Fn fileargs_fopen
-are reentrant but not thread-safe.
-That is, they may be called from separate threads only with different
+.Fn fileargs_fopen .
+Multiple threads can call these functions safely only if they use differen= t
=C2=A0.Vt cap_channel_t
-arguments or with synchronization.
+arguments or proper synchronization mechanisms.
=C2=A0.Sh LIMITS
-This section describe which values and types should be used to pass argume= nts to the
+This section describes the required and optional arguments that must be +passed to
=C2=A0.Fa system.fileargs
-through the
+via the
=C2=A0.Fn fileargs_initnv
=C2=A0and
=C2=A0.Fn fileargs_cinitnv
-functions.
-The
+functions using an
=C2=A0.Xr nvlist 9
-for that functions must contain the following values and types:
+structure.
+.Pp
+The following arguments are required:
=C2=A0.Bl -ohang -offset indent
-.It flags ( NV_TYPE_NUMBER )
-The
-.Va flags
-limits opened files for either execution or reading and/or writing.
-.It mode (NV_TYPE_NUMBER)
-If in the
-.Va flags
-argument the
+.It flags Pq Dv NV_TYPE_NUMBER
+Specifies access permissions for opened files.
+.It mode Pq Dv NV_TYPE_NUMBER
+Required when the
=C2=A0.Dv O_CREATE
-flag was defined the
-.Xr nvlist 9
-must contain the
-.Va mode .
-The
-.Va mode
-argument tells which what mode file should be created.
-.It operations (NV_TYPE_NUMBER)
-The
-.Va operations
-limits the usable operations for
+flag is set in
+.Va flags .
+Specifies the permissions to use when creating new files.
+.It operations Pq Dv NV_TYPE_NUMBER
+Specifies which operations are allowed for
=C2=A0.Fa system.fileargs .
-The possible values are explained as
+See the description of the
=C2=A0.Va operations
-argument with
-.Fn fileargs_init .
+argument in
+.Fn fileargs_init
+for possible values.
=C2=A0.El
=C2=A0.Pp
-The
+The following arguments are optional in the
=C2=A0.Xr nvlist 9
-for that functions may contain the following values and types:
+structure:
=C2=A0.Bl -ohang -offset indent
-.It cap_rights ( NV_TYPE_BINARY )
+.It cap_rights Pq Dv NV_TYPE_BINARY
=C2=A0The
=C2=A0.Va cap_rights
-argument contains a list of the capability rights which file should be lim= ited to.
-.It ( NV_TYPE_NULL )
-Any number of
+argument specifies the capability rights that will be applied to restrict<= br> +access to opened files.
+.It filenames Pq Dv NV_TYPE_NULL
+Multiple
=C2=A0.Dv NV_TYPE_NULL
-where the name of the element is name of the file which can be opened.
+elements can be provided, where each element's name represents a file<= br> +path that is allowed to be opened.
=C2=A0.El
=C2=A0.Sh EXAMPLES
-The following example first parse some options and then create the
-.Nm system.fileargs
-service with remaining arguments.
=C2=A0.Bd -literal
=C2=A0int ch, fd, i;
=C2=A0cap_rights_t rights;
@@ -287,16 +288,13 @@ fileargs_free(fa);
=C2=A0.Xr nv 9
=C2=A0.Sh HISTORY
=C2=A0The
-.Nm cap_fileargs
+.Nm
=C2=A0service first appeared in
=C2=A0.Fx 10.3 .
=C2=A0.Sh AUTHORS
=C2=A0.An Mariusz Zaborski Aq Mt oshogbo@FreeBSD.org
=C2=A0.Sh BUGS
=C2=A0The
-.Lb cap_fileargs
-included in
-.Fx
-is considered experimental, and should not be deployed in production
-environments without careful consideration of the risks associated with -the use of experimental operating system features.
+.Nm
+service is considered experimental and should be thoroughly evaluated
+for risks before deploying in production environments.
--000000000000b64d70063bdcd3c3-- From nobody Fri Aug 8 16:18:21 2025 X-Original-To: dev-commits-src-main@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 4bz8My1gnTz647PF; Fri, 08 Aug 2025 16:18: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz8Mx40wmz3kRB; Fri, 08 Aug 2025 16:18:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lFl88jQOeCVyBMURogvknD+6jjp0RMJGRjDmK1g4mKc=; b=N6Z5WubLetBgI4Ib6DCkmZiMR8XOuvr63CDcS7UkPIIhF3FBuxB0R/woUHzbTs6/5qLroi nKLTCnKINTVrPxPXlLX8jhlhr2IgGn9hn5PAL+KTL/ILBbFwnoduf1OeDEEsvGFQEKoVRQ gkYXKfUzreISBg28GxXyE1/tDpaN2eRjPpufKWqDLNq8JHP38RIupMnN/2u6SacvJAfkuz ijR6GyJ+0a8G3KOtcIHrW77dhgK4DF0c3iljP38/Mdht/o0UeLc41lGfTFUxbbYUEKhJ3N BMUUjtnjFrxTOEK1X0CaAArtpoqLtWOIi3ywenlb4EU0MS03jan9mbaCwMHD9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754669901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lFl88jQOeCVyBMURogvknD+6jjp0RMJGRjDmK1g4mKc=; b=cGtmVcvFvAtdVs8TodSb5mUW+eAPmarWWX3XINMJg3IvEjKNNENH6PZs+7M7JWMhlOl9ff B06s0iFD118424L3TEXUbSaQRii/Kv7Q+RD7IZ8Uv+BkRlya5A3OIuvZUrEhY34v33j9rB gKAsUI9yU2XxiYtq/XLQyjIRxMxAix4hzRsRdUe/RShBh9ezNn/qrcZsrfrXiW2QcS+keU 2ApDE1UihZL4EvWezT0gJAlzkPQSJ2q+mfUCqTz6+Qp0z4MCApLhAsas2Gs8gpUu3Xu0Ek l/azRAv2yhEHpEnvGfJP4PAptHaVOiFBvuGrka1Jp6lZtcD33UkOCFSg//upGA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754669901; a=rsa-sha256; cv=none; b=prFPrhTRT/juTThnofiIEAH5343DjuCnm0NFYpPkdcM1HXX6PlmrylhSmE663Ut7LhfZB7 BWkTgaWQA2Ok+jSaKHsihDLvNvGGvZrprpTgYtHWBSKb6I36PlzZLCLpJGvrkeGYEpZgn1 aApvDpboHdCpz9RqFSqPsh76xcCAThm3rPNbPp4jY5E/kaLvT9obAR3KQnAUUFqS+vqxdI +LqdEZZrWTwG0+bw4dBMunrFpnkIcpWofbyHGSKku/yIM/zpzUfSTtoqBAg8FyLuBmzaEX Y8mjFwEuZocfeKf4d9CLy0AL02FZQzlLCH/a9V13edHR6W2mQ1LSEPonAx+ewQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz8Mx3QdjzkB8; Fri, 08 Aug 2025 16:18:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578GILNX031691; Fri, 8 Aug 2025 16:18:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578GILKl031688; Fri, 8 Aug 2025 16:18:21 GMT (envelope-from git) Date: Fri, 8 Aug 2025 16:18:21 GMT Message-Id: <202508081618.578GILKl031688@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 950a251823e7 - main - sockstat: revert incorrect use of path-state for SCTP connections List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 950a251823e723e9512e83883183aa1d4de9bbaa Auto-Submitted: auto-generated The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=950a251823e723e9512e83883183aa1d4de9bbaa commit 950a251823e723e9512e83883183aa1d4de9bbaa Author: Damin Rido AuthorDate: 2025-08-02 16:59:58 +0000 Commit: Alan Somers CommitDate: 2025-08-08 16:16:56 +0000 sockstat: revert incorrect use of path-state for SCTP connections Revert a change that mistakenly used SCTP path state and the field name `path-state` instead of the correct `conn-state` and `sctp_conn_state()` call. This was introduced in 7b35b4d during the addition of libxo support. Fixes: 7b35b4d ("sockstat: add libxo support") Reported by: Phil Shafer Sponsored by: Google, LLC (GSoC 2025) Pull Request: https://github.com/freebsd/freebsd-src/pull Reviewed by: asomers --- usr.bin/sockstat/sockstat.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c index 7355eaa272a0..6761faae5210 100644 --- a/usr.bin/sockstat/sockstat.c +++ b/usr.bin/sockstat/sockstat.c @@ -1510,10 +1510,9 @@ display_sock(struct sock *s, struct col_widths *cw, char *buf, size_t bufsize) s->proto == IPPROTO_TCP) { switch (s->proto) { case IPPROTO_SCTP: - xo_emit(" {:path-state/%-*s}", - cw->path_state, - sctp_path_state( - faddr->state)); + xo_emit(" {:conn-state/%-*s}", + cw->conn_state, + sctp_conn_state(s->state)); break; case IPPROTO_TCP: if (s->state >= 0 && From nobody Fri Aug 8 16:37:33 2025 X-Original-To: dev-commits-src-main@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 4bz8pC08Wkz649Cl; Fri, 08 Aug 2025 16:37:39 +0000 (UTC) (envelope-from philip@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz8pB6FCCz3qLH; Fri, 08 Aug 2025 16:37:38 +0000 (UTC) (envelope-from philip@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754671058; 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=ZXQ6P4Uxs4PXenyg5MsfiZHnTXvVsVbS0/pVPHNH7b0=; b=yMHCdSRX2OOX92b55bFl8YlaYg1OOQTuwa2enBegl3oZMJsGyRZ6iFuqYjIKdfqSwIhR6g BrddVW3i+B8i+km/EPRYw2ewtOl0HpMMysSH5WLw2H13tIyYvH0Hylp+tlyg19Aqhozit7 0urwWf3ePVKW9etbxAl7JKylbjW0c2EBwIvl/sAMPcy/FfGlUM5A4TBMWHvlhDFLzgioEn HHBFbehcugiKg8F8lUQvV6e2dFnKtO9Wahbp0nMOpcUNuhlhOgLyX9YyFHxz0Yc7T7+r9a odUNPJVXy36CBRoQ5KKeA1V/tl9AJYhre6cnAaN+hGc9gsmgLl1C+Al4j7ahXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754671058; 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=ZXQ6P4Uxs4PXenyg5MsfiZHnTXvVsVbS0/pVPHNH7b0=; b=ko6z/I9ktNBMzbXmZirbsOt4FLkAw+V6QuzZaSH2rOa36QCk85KKcjVgn/0/fVSONJ8ogr Uh4hVm1bnms4TI1oJZZ5KAHUx/MrFIeo9gp7vHtyRQOcY8HWGLT68I6F9MvU5bFZEOCSvX l43+xK8JyuifZAg2zKJ9c+/S+74i3+Sn074s3d6/0HiV5Q8xvWUncUMCnQoDrkALm0NYjD SyNDsaXy7b5w096n8CdeMQwfA3iTnAUC/WFM0p1ndIKswQScRhLfWwyfWzO2Grbtb69JUu B/zfKSyBuaYNOjdzKzwOABHpwKbyGJ4jpeLg+EImzI6v0j83syPTXUtzPJWH4g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754671058; a=rsa-sha256; cv=none; b=rAmuJMdFdKcn21vMp2D4aq+J24H+hD2vAsHUnhgt8fWXB4k4v5H8GXfJPJowTULHxUwkVo chd/mwel78eqeA5YDGX54zQXXCH9AJ1gA+p9G3Rd0ZoCBH88B10wH9A6GZuF/XLrWhiUYl pSLYmbAQX00pJg4+DjyFoKqHhdEI5yN1cdJeGf5+Wr26fnIqPX4HQcvkulT+kZGhRwjXw/ 4BrHjZnr1ZcZdy4BagXyh9YBoab4iXiHRKFWZY3Lf6JJ2e+Ls5bFBzVuQ0PmouN1yXDwVE /8oK66MbASRU9Nbgul8b5n7vUnnGGzOCQAf4tA1+/7bDEqWVcqUC+IzQGXQBig== Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com [103.168.172.200]) (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: philip/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bz8pB4tG8zM8h; Fri, 08 Aug 2025 16:37:38 +0000 (UTC) (envelope-from philip@freebsd.org) Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfauth.phl.internal (Postfix) with ESMTP id 09920F40066; Fri, 8 Aug 2025 12:37:38 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Fri, 08 Aug 2025 12:37:38 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgdduvdegfeduucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpeffhffvvefukfhfgggtugfgjghofgesth ekredttderjeenucfhrhhomheprfhhihhlihhpucfrrggvphhsuceophhhihhlihhpsehf rhgvvggsshgurdhorhhgqeenucggtffrrghtthgvrhhnpeeigefhheffvdffieduueffve egjeejtedtveeuueeileffieefvddvteeuvddvudenucffohhmrghinhepfhhrvggvsghs ugdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehphhhilhhiphdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqudduieei vdeivdegkedqvdefhedukedttdekqdhphhhilhhipheppehfrhgvvggsshgurdhorhhgse htrhhouhgslhgvrdhishdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhht pdhrtghpthhtohepuggvshesfhhrvggvsghsugdrohhrghdprhgtphhtthhopehsrhgtqd gtohhmmhhithhtvghrshesfhhrvggvsghsugdrohhrghdprhgtphhtthhopeguvghvqdgt ohhmmhhithhsqdhsrhgtqdgrlhhlsehfrhgvvggsshgurdhorhhgpdhrtghpthhtohepug gvvhdqtghomhhmihhtshdqshhrtgdqmhgrihhnsehfrhgvvggsshgurdhorhhg X-ME-Proxy: Feedback-ID: ia691475d:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 8 Aug 2025 12:37:35 -0400 (EDT) Date: Sat, 9 Aug 2025 00:37:33 +0800 From: Philip Paeps To: Dag-Erling =?utf-8?B?U23DuHJncmF2?= Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 6dab48b9de6c - main - build: Switch CLEAN back on by default Message-ID: Mail-Followup-To: Dag-Erling =?utf-8?B?U23DuHJncmF2?= , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202508081559.578FxjHP094672@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <202508081559.578FxjHP094672@gitrepo.freebsd.org> X-PGP-Fingerprint: B851 CD3A C248 F2ED 3E2C C18C BB6D 8A14 AFE7 D96B X-Date: Today is Sweetmorn, the 2nd day of Bureaucracy in the YOLD 3191 X-Phase-of-Moon: The Moon is Waxing Gibbous (99% of Full) X-Clacks-Overhead: GNU Terry Pratchett Organization: Happily Disorganized User-Agent: Mutt/2.2.14 (2025-02-20) On 2025-08-08 15:59:45 (+0000), Dag-Erling Smørgrav wrote: >The branch main has been updated by des: > >URL: https://cgit.FreeBSD.org/src/commit/?id=6dab48b9de6c1bff61b0ce78029c1e3cba20895a > >commit 6dab48b9de6c1bff61b0ce78029c1e3cba20895a >Author: Dag-Erling Smørgrav >AuthorDate: 2025-08-08 15:57:31 +0000 >Commit: Dag-Erling Smørgrav >CommitDate: 2025-08-08 15:57:31 +0000 > > build: Switch CLEAN back on by default > > There have been too many issues with non-META_MODE incremental builds > recently, and it is clear that most users, even developers, were not > aware that the default had been switched. > > This will be revisited once more work has been done to help prevent > future breakage. > > This reverts commit ba373fca78a114768244d6a8c27983da870c1169. > > Reviewed by: markj, jhb > Differential Revision: https://reviews.freebsd.org/D51828 Thank you! Maybe we should just flip CLEAN on for a couple of days/weeks when there's something disruptive on main that benefits from thorough cleaning, but have it off by default? As I understand it, doing pkgbase builds with CLEAN rebuilds all packages, and pkg will want to update them even if the binaries within are unchanged. We set WITHOUT_CLEAN=1 in the cluster pkgbase builder to try to make sure that doesn't happen. I would love to put that flag under developers' control so pkgbase package production doesn't stall when a WITH_CLEAN=1 build is needed. Philip -- Philip Paeps Senior Reality Engineer Alternative Enterprises From nobody Fri Aug 8 16:56:22 2025 X-Original-To: dev-commits-src-main@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 4bz9Cp3pKSz64BpM; Fri, 08 Aug 2025 16:56: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz9Cp385Bz3xWP; Fri, 08 Aug 2025 16:56:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754672182; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=44AJgcOA2C0CWyWgbcgLo9MHtXJw4LUG/+UQAp/YSYM=; b=UCjvl7F3ZQwYuvV6pUA2s+pXD7tcg+IZC/02QwCzyrSu44Iy1JyZ5gyG1IdQoSMhJFWHO3 zh9xMiDfoEeKIuLuDMLLP+9t84AlaO8C/a2dPvRd6W3QZtufAt01bcsKIq7NVmPjB+A2sx vlnytpLgPLUZDmih8l9Djqg5SnLtQr2n7ogNkmcgaOlJiHhkalx+n0F6RQXvAS6xQ+jxEG DJ3yX/lTMUvLkt449EKCl+GazmrBEtzmY1f3sJhRqX/WUU/m99eQOmiIL92GCh9Ehx5ZtY ta1XcqlzcG+F/YHp76pwwsL44OQbojkGOdrg72CSwX00gF9wjYsJJhOhJGNKsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754672182; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=44AJgcOA2C0CWyWgbcgLo9MHtXJw4LUG/+UQAp/YSYM=; b=jAGwZ6MIReT22Bnq917n/IDLh1cBhWe9t+MZA/DlUKJ/ECfKwy8+Pv+Dmt1ZbM2Vo7X1af 7S0LQq0wW0DXrsn/WAviONQd053wUTldaVlbq2RsUUAqCHuU2rDpIE2YzNG5vKuXiBERp2 S7ceCSV62JYdqmA+gJhQ/WhEoAL7Gev8B/5PWD4iG/AyW2V5Gs0KGbGlU/Z4DAHNpAd2rc vxAgGvA7uG+mTRg64tIe4bpn1lzbKazfnLgDvQPbFKcD1ErxuHFgkbEk3w/k5yCHNOyNC7 VPSMkv+HXApKZXzLmHh+qkAQymXIDyj0RkDd18P6odhTEXBO2lOeJTsyZwSZnQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754672182; a=rsa-sha256; cv=none; b=LvweibZ9OMNLsfH4ugKSR9ETnsEDehRJqiRfUYXieN5niK0PSdH/nHPzpuOwODvMI2FXL7 9u4JqGRuD/mfMCcgKRhfBDZmDAz+kmGHS5Y6kCtk5TJb/i5UWNO8ot0WhMEO5jG8HUWJQx Fh1H5Qy1iV88sFaV9TwXGvNFXJfZhdFjKQx6gk4OfkWSrtBx1d2MXCAMUixyw0u66bJ4jM ifsLQ+UhG9wZ3gHIH4Aj4a6AIHVYJ9EKSTSzSLSiUPPghhj/C7avFZ8uYHnMuEbcPVqznM clpLcl5cdbUEdewEi+KxBf+wn4oYAoQU8octGrHVMTh5hzGDr9xNbbppfCG5Og== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz9Cp2jwKzkqF; Fri, 08 Aug 2025 16:56:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578GuMIi006841; Fri, 8 Aug 2025 16:56:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578GuMxn006838; Fri, 8 Aug 2025 16:56:22 GMT (envelope-from git) Date: Fri, 8 Aug 2025 16:56:22 GMT Message-Id: <202508081656.578GuMxn006838@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 83dc2f33394b - main - nvmfd: Move out of the base install and into tools/tools/nvmf List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 83dc2f33394bfee9e5e64693dda36b69e75718fc Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=83dc2f33394bfee9e5e64693dda36b69e75718fc commit 83dc2f33394bfee9e5e64693dda36b69e75718fc Author: John Baldwin AuthorDate: 2025-08-08 16:52:44 +0000 Commit: John Baldwin CommitDate: 2025-08-08 16:52:44 +0000 nvmfd: Move out of the base install and into tools/tools/nvmf This is still useful as an example use of the APIs in libnvmf similar to nvmfdd, but this functionality is now provided in the base system by ctld. Sponsored by: Chelsio Communications --- ObsoleteFiles.inc | 4 ++++ {usr.sbin => tools/tools/nvmf}/nvmfd/Makefile | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/Makefile.depend | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/controller.c | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/ctl.c | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/devices.c | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/discovery.c | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/internal.h | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/io.c | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/nvmfd.8 | 0 {usr.sbin => tools/tools/nvmf}/nvmfd/nvmfd.c | 0 usr.sbin/Makefile | 1 - 12 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 0349d509083a..b036f554dbb5 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20250808: nvmfd removed from base install +OLD_FILES+=usr/sbin/nvmfd +OLD_FILES+=usr/share/man/man8/nvmfd.8.gz + # 20250807: Replace lib/libgssapi with krb5/lib/gssapi OLD_FILES+=usr/include/gssapi_krb5/gssapi.h OLD_DIRS+=usr/include/gssapi_krb5/gssapi diff --git a/usr.sbin/nvmfd/Makefile b/tools/tools/nvmf/nvmfd/Makefile similarity index 100% rename from usr.sbin/nvmfd/Makefile rename to tools/tools/nvmf/nvmfd/Makefile diff --git a/usr.sbin/nvmfd/Makefile.depend b/tools/tools/nvmf/nvmfd/Makefile.depend similarity index 100% rename from usr.sbin/nvmfd/Makefile.depend rename to tools/tools/nvmf/nvmfd/Makefile.depend diff --git a/usr.sbin/nvmfd/controller.c b/tools/tools/nvmf/nvmfd/controller.c similarity index 100% rename from usr.sbin/nvmfd/controller.c rename to tools/tools/nvmf/nvmfd/controller.c diff --git a/usr.sbin/nvmfd/ctl.c b/tools/tools/nvmf/nvmfd/ctl.c similarity index 100% rename from usr.sbin/nvmfd/ctl.c rename to tools/tools/nvmf/nvmfd/ctl.c diff --git a/usr.sbin/nvmfd/devices.c b/tools/tools/nvmf/nvmfd/devices.c similarity index 100% rename from usr.sbin/nvmfd/devices.c rename to tools/tools/nvmf/nvmfd/devices.c diff --git a/usr.sbin/nvmfd/discovery.c b/tools/tools/nvmf/nvmfd/discovery.c similarity index 100% rename from usr.sbin/nvmfd/discovery.c rename to tools/tools/nvmf/nvmfd/discovery.c diff --git a/usr.sbin/nvmfd/internal.h b/tools/tools/nvmf/nvmfd/internal.h similarity index 100% rename from usr.sbin/nvmfd/internal.h rename to tools/tools/nvmf/nvmfd/internal.h diff --git a/usr.sbin/nvmfd/io.c b/tools/tools/nvmf/nvmfd/io.c similarity index 100% rename from usr.sbin/nvmfd/io.c rename to tools/tools/nvmf/nvmfd/io.c diff --git a/usr.sbin/nvmfd/nvmfd.8 b/tools/tools/nvmf/nvmfd/nvmfd.8 similarity index 100% rename from usr.sbin/nvmfd/nvmfd.8 rename to tools/tools/nvmf/nvmfd/nvmfd.8 diff --git a/usr.sbin/nvmfd/nvmfd.c b/tools/tools/nvmf/nvmfd/nvmfd.c similarity index 100% rename from usr.sbin/nvmfd/nvmfd.c rename to tools/tools/nvmf/nvmfd/nvmfd.c diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index 51908818e550..dcfe2037f8ce 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -56,7 +56,6 @@ SUBDIR= adduser \ nfsuserd \ nmtree \ nologin \ - nvmfd \ pciconf \ periodic \ pnfsdscopymr \ From nobody Fri Aug 8 16:56:23 2025 X-Original-To: dev-commits-src-main@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 4bz9Cr1QScz64C3S; Fri, 08 Aug 2025 16:56: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz9Cq5qGCz3xSv; Fri, 08 Aug 2025 16:56:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754672183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qeut0GD8h8LU2CJY135fZtMJio4WAN5J925xnNKTsfM=; b=C8Jz73CCPy19HY1RCYYGLIfTyZUzfQduKkFB2xR2KksDLpZ6CMr9ZaNeL/utp7YAOT/NNs m3yrQrQghMfr3CC+SshBgS1OuAlKs6d5lheM4VgPalnGKlnBkj7537ucwATbzS0FP1K6gq CMgtQG7uvd/V4RbCq4WUyScX+fT54kTE4ClKj7Vx0fWde42YpH20LS5g/KokiFIaT5tmL+ LH+uckvgutuNuMnjgU+6+mrG5FEBUEvky6dpNEOnoe3wft9l0LQT0eAGeP8Kph1LHk81rv r9k+KCGm7f/WPNuMp0ARYhzoU4zOKL3jutnFFV2XSGpnHl6Rv3DxTgnr3XhXMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754672183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qeut0GD8h8LU2CJY135fZtMJio4WAN5J925xnNKTsfM=; b=dyhlv7DPzITnf9FwT5/FVnscschsRvClT5P3vP+08YZhjInzqKS8D5kmP8anG4VfCqlsi/ ud8cSjxNGxy7Gb15MkLj6azFuLjxqFPOvAOPtUoam6mvpXkB/hVKzQnUJt7wwqISZVJZWy CPg+cimagGM9DvHNaGwVLzSJV/pyB/YwVsOK3i5/IHE0I84vqQT93r8eyb88aMDHcAmUjr DGigmbcnoVrIRUEC7ni+e2i+CkE1tnS3rrPiahQjuhfYZQVJRbK3o3F1YvhxhiiuIFPHBB VBRkkC8gfpwdUeJIhItGYy5mtZPTiltzPvVmUo2uGE8AG8rifjUweEus0578sQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754672183; a=rsa-sha256; cv=none; b=c8Ez9cOH1UhxgQgZ0X5n3oGNnqikT2SfSWnEeoCMWXXrJQ3xHWQ56emn/X8BhBapxayRcG 0h/bRiidPqs5B/osENzXdmGyvOFBCSV2SRgR2Xgdsp3OYsfuKENrnLKN5WKn+ugKE3oaiI MJfM2JmlwIBTTO9kU5z2KdXlcomBSOmJYxxg/H5mEz0oOJS09i1O+MCsnJAAY3mB70VZ3t 6AqVXLCIIIfaqd3x6b2y62Mcb2TRxNcLvA+dsViaS5YooKklq/rM3jE5onQqVsFN9u8Dgy ZHmA7zTg3y8xRcnGhNygnAA+G/W0aHvy6yUus6d536tJSaosQ1ZTKUQEQYvFLw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz9Cq3yVzzl4x; Fri, 08 Aug 2025 16:56:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578GuNmg006874; Fri, 8 Aug 2025 16:56:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578GuNkc006871; Fri, 8 Aug 2025 16:56:23 GMT (envelope-from git) Date: Fri, 8 Aug 2025 16:56:23 GMT Message-Id: <202508081656.578GuNkc006871@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: af261a46aff1 - main - RELNOTES: Update the note for NVMeoF to reference ctld instead of nvmfd List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: af261a46aff1eb3fc581328ad8fb06f9029c9bb7 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=af261a46aff1eb3fc581328ad8fb06f9029c9bb7 commit af261a46aff1eb3fc581328ad8fb06f9029c9bb7 Author: John Baldwin AuthorDate: 2025-08-08 16:52:44 +0000 Commit: John Baldwin CommitDate: 2025-08-08 16:52:44 +0000 RELNOTES: Update the note for NVMeoF to reference ctld instead of nvmfd Sponsored by: Chelsio Communications --- RELNOTES | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RELNOTES b/RELNOTES index b7b01aa5ba0f..96149ad15178 100644 --- a/RELNOTES +++ b/RELNOTES @@ -248,10 +248,11 @@ e962b37bf0ff: 7398d1ece5cf: hw.snd.version is removed. -a15f7c96a276,a8089ea5aee5: +a15f7c96a276,66b5296f1b29: NVMe over Fabrics controller. The nvmft(4) kernel module adds a new frontend to the CAM target layer which exports ctl(4) - LUNs as NVMe namespaces to remote hosts. The nvmfd(8) daemon + LUNs as NVMe namespaces to remote hosts. The ctld(8) daemon + now supports NVMe controllers in addition to iSCSI targets and is responsible for accepting incoming connection requests and handing off connected queue pairs to nvmft(4). From nobody Fri Aug 8 17:15:34 2025 X-Original-To: dev-commits-src-main@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 4bz9dz0rvHz64DP3; Fri, 08 Aug 2025 17:15:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz9dz0DRmz43p3; Fri, 08 Aug 2025 17:15:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TPaZZFFi63p2WxNj8Ahk+6w5S1rKQCnVnyl9+b0F/IA=; b=TMSCgfp6fuMRAQ5QN/oA5oabJ4wAdtZAJawaLe4GSXFx35sSCqPYORo8hgf+jOtrsU4hBo wcSg7268h5Tbax6uldVNDcK7Q7ZFU4AHKHm577xjyUtXbg8pbJFeFYXHy0NyG9YLku1caR 2FoVtuk75wuI4dI4lCtcRuEn7BZvXEPJP0CM8C26ifZC1HajD2nfR1Gct/a+dKqLfImxf2 TUcNDuh74z2ySkPeY41H/Bd51slnCHRdQiv/WTxqgcZtVeVT107PsFk5obGlPyG0LzipAb eACi3QEX8Ir2fxQ2s94DhnKRVXxBvAPItEWyf6LOYzBDrWBOD4kfifP95q3aGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TPaZZFFi63p2WxNj8Ahk+6w5S1rKQCnVnyl9+b0F/IA=; b=ky4mwOUNe1+zSeGMuW8tR+723JAN+GnDn3kOKJEXuaInu7YOfKgEWT8jBn4QaQQAoZc6cT iyUhcQ8j2DbXVkk81ceiO+okBNFX667NFZeraFNKz4Nez2A69KEGW+hf941tLo3VY/ULJ+ KgXzKmJoo9h28j500cbWczTGAjNoySqOZcgQe+V7B8EAbe2MAaqUSpQXntkwZkGSZDSsGW QAVTVL1iBrVPmOWNxENoQGdedQaaqsCYbLDE19JQK5phVrxOSo42rGwbBJN2U5xitJ2GZQ j0QtCg//EOGvUZjrQHPOI9U5jCDsP8rcVJabU1Brr7eCsKz+HpT4Cwh3iwUfmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754673335; a=rsa-sha256; cv=none; b=U5pZdtDa68h6VGNYmdZI2WChLIdwATjacXWxopB3L1lMjUsM3/390zPt1lZ937exmnOuqZ X5zAStJ/B7q9q2o0xwewitYccwIjge8FdMr5e86bs53iv8KI+9ApxSTwH68/mOuiujVY5W vcMPYSkDClFKcVYp1WG8+0zlAhPiemO7ofRTtCWS1XM5psWk030ZKNpGVaXgsDZGE13rmi S0rlVuz7Qqnzk7NQgfsPrU0e1RSibCCZelh52BRZ5creexrC0lBNqxEH1o0HuyQmHOsrwW /HhwNPj8LLbyT4FJ4L7ObsOe6h9Rbs1DrEk6QGw9n+ycAYgyYXoMMYK6AsBGEA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz9dy6wLYzlQh; Fri, 08 Aug 2025 17:15:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578HFYul044405; Fri, 8 Aug 2025 17:15:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578HFYfN044402; Fri, 8 Aug 2025 17:15:34 GMT (envelope-from git) Date: Fri, 8 Aug 2025 17:15:34 GMT Message-Id: <202508081715.578HFYfN044402@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Brooks Davis Subject: git: 8d26a9da0c94 - main - amd64: assume the kernel supports RDFSBASE and RDGSBASE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8d26a9da0c94f314b7e37a2784b13e2f5fb8052d Auto-Submitted: auto-generated The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=8d26a9da0c94f314b7e37a2784b13e2f5fb8052d commit 8d26a9da0c94f314b7e37a2784b13e2f5fb8052d Author: Brooks Davis AuthorDate: 2025-08-08 17:15:21 +0000 Commit: Brooks Davis CommitDate: 2025-08-08 17:15:21 +0000 amd64: assume the kernel supports RDFSBASE and RDGSBASE There is no need to support pre-12.0 (and thus pre-ino64) kernels in a 15.x libc. Continue to check if the CPU supports these features before using them and fall back as required. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D50732 --- lib/libsys/amd64/amd64_get_fsbase.c | 7 +------ lib/libsys/amd64/amd64_get_gsbase.c | 7 +------ lib/libsys/amd64/amd64_set_fsbase.c | 7 +------ lib/libsys/amd64/amd64_set_gsbase.c | 7 +------ libexec/rtld-elf/amd64/reloc.c | 3 +-- 5 files changed, 5 insertions(+), 26 deletions(-) diff --git a/lib/libsys/amd64/amd64_get_fsbase.c b/lib/libsys/amd64/amd64_get_fsbase.c index 00f16a5e404f..b5e87f8a3ce5 100644 --- a/lib/libsys/amd64/amd64_get_fsbase.c +++ b/lib/libsys/amd64/amd64_get_fsbase.c @@ -30,7 +30,6 @@ * SUCH DAMAGE. */ -#define _WANT_P_OSREL #include #include #include @@ -41,7 +40,6 @@ static int amd64_get_fsbase_cpu(void **addr) { - *addr = (void *)rdfsbase(); return (0); } @@ -49,15 +47,12 @@ amd64_get_fsbase_cpu(void **addr) static int amd64_get_fsbase_syscall(void **addr) { - return (sysarch(AMD64_GET_FSBASE, addr)); } DEFINE_UIFUNC(, int, amd64_get_fsbase, (void **)) { - - if (__getosreldate() >= P_OSREL_WRFSBASE && - (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) + if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) return (amd64_get_fsbase_cpu); return (amd64_get_fsbase_syscall); } diff --git a/lib/libsys/amd64/amd64_get_gsbase.c b/lib/libsys/amd64/amd64_get_gsbase.c index ef135b1eed7f..51be412ddd7a 100644 --- a/lib/libsys/amd64/amd64_get_gsbase.c +++ b/lib/libsys/amd64/amd64_get_gsbase.c @@ -30,7 +30,6 @@ * SUCH DAMAGE. */ -#define _WANT_P_OSREL #include #include #include @@ -41,7 +40,6 @@ static int amd64_get_gsbase_cpu(void **addr) { - *addr = (void *)rdgsbase(); return (0); } @@ -49,15 +47,12 @@ amd64_get_gsbase_cpu(void **addr) static int amd64_get_gsbase_syscall(void **addr) { - return (sysarch(AMD64_GET_GSBASE, addr)); } DEFINE_UIFUNC(, int, amd64_get_gsbase, (void **)) { - - if (__getosreldate() >= P_OSREL_WRFSBASE && - (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) + if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) return (amd64_get_gsbase_cpu); return (amd64_get_gsbase_syscall); } diff --git a/lib/libsys/amd64/amd64_set_fsbase.c b/lib/libsys/amd64/amd64_set_fsbase.c index f1690fde6e17..5265bd712f17 100644 --- a/lib/libsys/amd64/amd64_set_fsbase.c +++ b/lib/libsys/amd64/amd64_set_fsbase.c @@ -30,7 +30,6 @@ * SUCH DAMAGE. */ -#define _WANT_P_OSREL #include #include #include @@ -41,7 +40,6 @@ static int amd64_set_fsbase_cpu(void *addr) { - wrfsbase((uintptr_t)addr); return (0); } @@ -49,15 +47,12 @@ amd64_set_fsbase_cpu(void *addr) static int amd64_set_fsbase_syscall(void *addr) { - return (sysarch(AMD64_SET_FSBASE, &addr)); } DEFINE_UIFUNC(, int, amd64_set_fsbase, (void *)) { - - if (__getosreldate() >= P_OSREL_WRFSBASE && - (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) + if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) return (amd64_set_fsbase_cpu); return (amd64_set_fsbase_syscall); } diff --git a/lib/libsys/amd64/amd64_set_gsbase.c b/lib/libsys/amd64/amd64_set_gsbase.c index 756bbae18844..94f5736ed1ab 100644 --- a/lib/libsys/amd64/amd64_set_gsbase.c +++ b/lib/libsys/amd64/amd64_set_gsbase.c @@ -30,7 +30,6 @@ * SUCH DAMAGE. */ -#define _WANT_P_OSREL #include #include #include @@ -41,7 +40,6 @@ static int amd64_set_gsbase_cpu(void *addr) { - wrgsbase((uintptr_t)addr); return (0); } @@ -49,15 +47,12 @@ amd64_set_gsbase_cpu(void *addr) static int amd64_set_gsbase_syscall(void *addr) { - return (sysarch(AMD64_SET_GSBASE, &addr)); } DEFINE_UIFUNC(, int, amd64_set_gsbase, (void *)) { - - if (__getosreldate() >= P_OSREL_WRFSBASE && - (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) + if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) return (amd64_set_gsbase_cpu); return (amd64_set_gsbase_syscall); } diff --git a/libexec/rtld-elf/amd64/reloc.c b/libexec/rtld-elf/amd64/reloc.c index 883e3dcdff88..b1a2069edb2f 100644 --- a/libexec/rtld-elf/amd64/reloc.c +++ b/libexec/rtld-elf/amd64/reloc.c @@ -548,8 +548,7 @@ allocate_initial_tls(Obj_Entry *objs) */ if (__getosreldate() >= P_OSREL_TLSBASE) sysarch(AMD64_SET_TLSBASE, &addr); - else if (__getosreldate() >= P_OSREL_WRFSBASE && - (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) + else if ((cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) wrfsbase((uintptr_t)addr); else sysarch(AMD64_SET_FSBASE, &addr); From nobody Fri Aug 8 17:18:36 2025 X-Original-To: dev-commits-src-main@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 4bz9jS5qsrz64Dkm; Fri, 08 Aug 2025 17:18: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz9jS4cTKz44pC; Fri, 08 Aug 2025 17:18:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673516; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WuI2Hw4qf2KYSWW7rVKtRDvWdXT6J739mYdC0BOZIls=; b=s8rW71pWvkoE0fcRdEDPeA6Ibv3fM2ixAJYDiw5/gg3GvAZ2B0A6qEXuQ+a8aJloM7iuzy uHIINDcIpw/Z/G+YSeksZRHY4g6sZoqfaqOi9RTooqGS9onMNdImrDtcP/7NB5u7zhWGJH INokAGbAafCtiKGZURiy1gMkAFcwF9xZTvkAuQ/7SWCm4XoVafrB8U+h86Ea/eO0OrQqPO mKprSrE/yHjENyMK20rIliPaUej2ESo3kjspXEYjeba5UO8tjsB9wcZ/qmN7cSDdLilsrl DZbsPkS5s3/YV2NP5HdoeQuPKC2n4uucqQE6nPs8pqryJYq+wFJt0fZUxwx1fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673516; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WuI2Hw4qf2KYSWW7rVKtRDvWdXT6J739mYdC0BOZIls=; b=J/mhasLvrYL/tFYFyvbP6hegFp/MwsDvFvsbbopDWYH+rowsUB7KSzYOspnx7UlU2oyl7X VWoN+DfC5sWqPa/pb/nmTuzahDmJGPvi3y012hB1NVQ6fBi4fRmPIByCRCjFz9OS5XFVec md1BYw6iFEPIj6mOkCsr8ruAIvWBw5yoZe50SdRgD2bjiP1xiHpkOwgawyDiMYUO6DOfht fo1+7twZk5gSgsf1/TvtvxwirD8+jy/z1l+8swKl4T7ac9+Za9xp+CDP0cAwbTB4h7nckF 4JJCZEBhRkPwfJAK87AmGiOPD3yRGHAB1jlfbFmNySPN7iieoiZOAS/RUz6uSg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754673516; a=rsa-sha256; cv=none; b=bR6qrRe5ALqF8xaENzqatUWXOZYHrMHTYYntKuggT2QK2lBCAPxEi9qBd08lEJQQRAyMXl 8FLv46gw2imPR+KK7KEoUSiXW6o9PTCWMEjPatqglouEamOeFLAtnxqDXZ8yx5pJ5bPmVY YhOeif8aYkvFSMJfu15I9jSzJYViTFqpJ8FID6xQPJjfC7BaW54siNjid+Esz3BbEvjJ7r UrPcveYirLoDcv4J1fSgwrABe1m5+KhMRVJgFTJHUECiI8OwZgR5+ZYrzIJcGexOfQzjj7 nKfKjwTjgEHx5pUYuqUjahrsv2uLhmDBcZRVuvS5TT5WxnCvV1p2+n98auE4Mg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz9jS46ZwzlWH; Fri, 08 Aug 2025 17:18:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578HIa84045238; Fri, 8 Aug 2025 17:18:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578HIaAj045235; Fri, 8 Aug 2025 17:18:36 GMT (envelope-from git) Date: Fri, 8 Aug 2025 17:18:36 GMT Message-Id: <202508081718.578HIaAj045235@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: b2df9c07dfb0 - main - CONTRIBUTING: Tweak the language List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b2df9c07dfb0e9a4cdb9e2ac50782125733a0396 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=b2df9c07dfb0e9a4cdb9e2ac50782125733a0396 commit b2df9c07dfb0e9a4cdb9e2ac50782125733a0396 Author: Warner Losh AuthorDate: 2025-08-08 17:16:13 +0000 Commit: Warner Losh CommitDate: 2025-08-08 17:16:13 +0000 CONTRIBUTING: Tweak the language Tweak the language around several items, as well as making things less overly verbose. In addition, tweak the language about names, idenity and project requirements around it to match the policy and intentions more closely. Much of this language was taken from a recent proposal in the git mailing list and matches well how the project has accepted contributions in the past. It's also been tweaked a bit since 'legal name' seems like it should be well defined, but actually isn't as well defined universally as on might think. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D51638 --- CONTRIBUTING.md | 59 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 02d718ef8018..6f02f2598025 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,10 +39,10 @@ A pull request will be considered if: * You can respond to feedback quickly. If feedback is requested and one month passes without a response we may close the pull request. * It touches fewer than about 10 files and the changes are less than about 200 lines. Changes larger than this may be OK, or you may be asked to submit multiple pull requests of a more manageable size. * Each logical change is a separate commit within the pull request. Commit messages for each change should follow the [commit log message guide](https://docs.freebsd.org/en/articles/committers-guide/#commit-log-message). -* All commits have, as the author, your name and valid email address as you would like to see them in the FreeBSD repository. Fake github.com addresses cannot be used. +* All commits have, as the author, your name and valid email address as you would like to see them in the FreeBSD repository. Fake github.com addresses cannot be used. But see [Author Name and Email][#author-name-and-email] for details. * The scope of the pull request should not change during review. If the review suggests changes that expand the scope, please create an independent pull request. * Fixup commits should be squashed with the commit they are fixing. Each commit in your branch should be suitable for FreeBSD's repository. -* Commits should include one or more `Signed-off-by:` lines with full name and email address certifying [Developer Certificate of Origin](https://developercertificate.org/). +* Commits should include one or more `Signed-off-by:` lines with name and email address certifying [Developer Certificate of Origin](https://developercertificate.org/). But see [Author Name and Email][#author-name-and-email] for details. * The commits follow FreeBSD's style guide. See [Style](#Style). * Run tools/build/checkstyle9.pl on your Git branch and eliminate all errors, or provide an explanation for exceptions. * The commits do not introduce trailing white space. @@ -53,29 +53,31 @@ A pull request will be considered if: * Submissions using generative AI will be rejected. * Submissions from AI chatbots will result in the account being banned. -When updating your pull request, please rebase with a forced push rather than a -merge commit. +When revising your pull request after feedback, please rebase with a forced push +rather than a merge commit. More complex changes may be submitted as pull requests, but they may be closed if they are too large, too unwieldy, become inactive, need further discussion in -the community, or need extensive revision. Please avoid creating large, -wide-ranging cleanup patches: they are too large and lack the focus needed for a -good review. Misdirected patches may be redirected to a more appropriate forum -for the patch to be resolved. +the community, or need extensive revision. + +Please avoid creating large, wide-ranging cleanup patches: they often lack the +focus needed for a good review and can be hard to test. Misdirected patches may +be redirected to a more appropriate forum for the patch to be resolved. Please make sure that your submissions compile and work before submitting. If -you need feedback, a pull request might not be the right place (it may just be -summarily closed if there are too many obvious mistakes). +you need feedback, a pull request might not be the right place. A pull request +may be closed if there are too many obvious mistakes, or when a time-consuming +rework is needed. If you want to cleanup style or older coding conventions in preparation for some -other commit, please go ahead and prepare those patches. However, please avoid just -cleaning up to make it cleaner, unless there's a clear advantage to doing +other commit, please go ahead and prepare those patches. However, please avoid +just cleaning up to make it cleaner, unless there's a clear advantage to doing so. While the project strives to have a uniform coding style, our style offers a range of choices making some 'cleanups' ambiguous at best. Also, some files have -their own consistent style that deviates from style(9). Style changes take -volunteer time to process, but that time can be quite limited, so please be -respectful. Trivial spelling changes should generally not be made in isolation -as they usually add little value, but do take up valuable volunteer time. +their own consistent style that deviates from style(9). Style changes take time +to process, but our volunteers have limited time, so please be respectful of +their time. Trivial spelling changes take this valuable time, but rerturn little +benefit relative to other changes. The current theory for pull requests on GitHub is to facilitate inclusion in the project. The guidelines are streamlined for quick decisions about each pull @@ -92,11 +94,26 @@ closing it. ### Author Name and Email -We require that contributions are associated with a unique identity. -The author email address should not be `@users.noreply.github.com`. -Do note that your name and email address will become a permanent and immutable -part of the public Git history of the FreeBSD source tree. Authors that use -pseudonyms will be considered on a case by case basis. +Please use a name and email address in the `Signed-off-by` trailer and as the +author of the git commits, since we cannot accept anonymous contributions. It is +common, but not required, to use some form of your full name. We realize that +some contributors are not comfortable doing so or prefer to contribute under a +pseudonym, preferred name, chosen name or similar moniker that might not match +relevant government records. We can accept your patch, as long as the name and +email you use are distinctive, identifying, and not misleading. Please note that +if your patch is accepted, the name and email address will become a permanent +and immutable part of the public history of the FreeBSD source tree. + +The goal of this policy is to allow us to have sufficient information to contact +you if questions arise about your contribution. Addresses of the form +something@users.noreply.github.com do not meet this standard since we cannot use +it to contact you. We can use `.mailmap` for name or email changes and mistakes, +but is imperfect. + +Core (core@freebsd.org) may request authors of significant changes using an +obvious pseudonym to document their identity more concretely should there be +issues in the future. The author may request this documentation be kept +confidential unless needed for legal issues arising from their contributions. ## Style From nobody Fri Aug 8 17:18:37 2025 X-Original-To: dev-commits-src-main@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 4bz9jV04Pxz64Dj3; Fri, 08 Aug 2025 17:18:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bz9jT55sYz4531; Fri, 08 Aug 2025 17:18:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=el7xp851CPGewZv3YHR8w+se/TLZwAD6PvxNLqmVuqU=; b=jBpLIZcyJJziBX7M9+QdtslF/I0uydffZ7DP68t7NdQnaEXOlQURkfH60fRzL4sDtJbrjv WGjcJx2iA5Sxs1lV4CJkfWvOFm79/3/mMwasMh1zgnZmqwIMFMuqD/tQY5/wDVNPR410Aa o3NidxgMy/5n6iaRtYvkqarv+ahsQQrlD2SJsPIA/FdlojUB9WhYdgpw8LahP1FAtahzMR uo9/z50U3a+p/v0H/cCqNuTiGGZvmcM/NgoYtOyi0CdNzxAFhkKZDv9DwHvz42qgogOE/B eR3XjMHn4Q6Q9UKkcqVN1HzvZSuqCM3lHNtobuEOSuEh0LlsEtvPFKQ/jX8nsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754673517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=el7xp851CPGewZv3YHR8w+se/TLZwAD6PvxNLqmVuqU=; b=DgHegWwrHIAym6mmdvRNl95rUZZYZRJ6X72i+LLAkKvja5ThzY+0WYYp+FBlxuV7W1qquY BSCEW2LpwtASihmhnk4ZLmywqcWk3B0eWdJK3FlmM1QFU/TM5EuE32wsTiFWD/pblgHHHk xxOYOxWrVgYMUS4PsLFrYg93A5zZF+IV7Kqr7ObfcaTAGkep/K6Wkpo3kvtnsA8Qu687Nr mg72js9ziB3qKkDtzJ+bK8ou5SRWC0do888brxoROJ+eqKL8X3HCV38YvvLN1fJL9k8h2V gTDjcHW2y9JNozTHHBCQYN68SPUZLZUioCtBuiD5feZaQHlctw4AN8y7NVLfgg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754673517; a=rsa-sha256; cv=none; b=iiQNEVvJog4/SXKW8804wJb9debyrofOt/3nw+QQJXQEQ9ao/XfDhsgs46FVBOcHMLOjrp wrABLtO+SXUNy6NywgIBqHZ4g94WJGn+30z7A8vXia8xskHP1bDusTh42pI95XLJJ7Fhkv PjSKSbD39TqVyjmPb6UBjek2NM2FH/zmok992NGzxOMD0D043Fb0LA5Y0accjUGppKHHxk pZ+eLtUy4PJsNVVr0yeNLrGRmY3BWVsMH5eCAsDJPOwJiAWF2kXjrYFGZQJCHTzZmQ53es NIYJ26s4SzYftpBjg4gleQvmym6l2Nuop53KyIUKHQ+dMo3Nn36gZVToP20LXA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bz9jT4Yt1zlYC; Fri, 08 Aug 2025 17:18:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578HIbmW045274; Fri, 8 Aug 2025 17:18:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578HIbdO045271; Fri, 8 Aug 2025 17:18:37 GMT (envelope-from git) Date: Fri, 8 Aug 2025 17:18:37 GMT Message-Id: <202508081718.578HIbdO045271@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 5090ea716b22 - main - inet: fix typo List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5090ea716b22521debefb4b26987c7e5b224ef04 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=5090ea716b22521debefb4b26987c7e5b224ef04 commit 5090ea716b22521debefb4b26987c7e5b224ef04 Author: Warner Losh AuthorDate: 2025-08-08 17:17:38 +0000 Commit: Warner Losh CommitDate: 2025-08-08 17:17:38 +0000 inet: fix typo Note: btw submitted a number of other things in this area that haven't made it into the tree, so I'm making an exception to the no typo rule since it was done in that context. Submitted by: btw (Tiwei Bie GSOC 2015 so unsure what to use for author) Differential Revision: https://reviews.freebsd.org/D3510 --- sys/netinet/in_rss.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet/in_rss.c b/sys/netinet/in_rss.c index 698fd86dc7a5..f93a1d2bfd7b 100644 --- a/sys/netinet/in_rss.c +++ b/sys/netinet/in_rss.c @@ -285,7 +285,7 @@ rss_mbuf_software_hash_v4(const struct mbuf *m, int dir, uint32_t *hashval, } /* * Only allow 2-tuple for TCP frames if we don't also - * support 2-tuple for TCP. + * support 4-tuple for TCP. */ if ((rss_gethashconfig() & RSS_HASHTYPE_RSS_IPV4) && ((rss_gethashconfig() & RSS_HASHTYPE_RSS_TCP_IPV4) == 0) && From nobody Fri Aug 8 17:39:14 2025 X-Original-To: dev-commits-src-main@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 4bzB9H3XjJz64GYf; Fri, 08 Aug 2025 17:39:15 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzB9H2fVlz4F74; Fri, 08 Aug 2025 17:39:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754674755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wVrtSziFfW9ZvtHTP7o5oO0hlQeQNsPPHqD15D4qUnw=; b=QCN4TeprKI/mGFtlh4QK34XrnqaETXtfbiOnbi1wNzh7yALmkmwWq+erto9oud5XBL33WQ yu3YoN3ROk71R9efRsGi3UYg2be6OHf1zDIpdFeaMPtArlmT0YDqhcf5XsKb3KnmvJf5HR KLbAzKxwiwvLhjDdWOfBE7Ln0SDJZeUxYva/rlMTYhvdW/9WbFtWrUfB7wacIzulAcuFjK Xr512vphKJy9LbKw+jmCeZ9ceoQnshUMpyT9UGwu7bKYL+4IFir6kYJd02CQI2Kwj8+VD3 3jszkt/CrTinDs7DceNEisQVObomy0IwOl8Q86Qe3v+2JCq3//JSjZ4oskttyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754674755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wVrtSziFfW9ZvtHTP7o5oO0hlQeQNsPPHqD15D4qUnw=; b=xY4Z+koRL7TTfcvhX64DwUHVyz1rHTkpRmaafgnIuPOGieJlfdwBEgsoEIwNPA6UnTsoSa qY7Tmio3+l8SmcvjWiKkCIgLu1N/hzO5rHxNa9p9Rlqcsobj5ZbznKwX7X5cF0xjoyEH8G DaRb2ILL29749wj6zs6gc1avFts85Xt/M6oTSzJPsH8dXbqIZQkjU/cKLsMH70GVMg21/n 8BfZ9efLGDhgWL5jpQx2M3neypsbJrNBU4JVDOava7ICrnS6e/IaHL4N5exF8rz4sgO9RJ 725qcPdqMSgzJaFMM6iXg7hDKMoFhAXpb/S4K0LM2JEmCdQVk/cngY4i24emLA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754674755; a=rsa-sha256; cv=none; b=elNQU/2NENup0/MhsoFor36HilkBt+xUwXTGU9GrkR2b5vo38ktH4SKkZBFPgPF5nnffox CNOqYaDvzQ0GwMjn1L+6tIsXzDCvsP+smDs2eYJVFs91nsbasbxw+W9YoOC48UTw6vU7Z1 r/qP+JaeD5105eQX1g7K6efGNaehgdBkqXm3I3glspWs/av5bYpug8hfnKFvhVbnwvyU9O xHaEjZXXxNSEaAbrLvrtexr1fURZq/xDQ/4xZ3xpxx2om0n9Tzi/D5Rfo6MkMp3xAf0MIA WfSU5m9k+T/IKt32tjKeSOL5dxN3wFLLmkjzMucpkhawecB8fZFKOf0fhvYh+w== Received: from [IPV6:2601:5c0:4202:5670:885d:b51:24c2:bf83] (unknown [IPv6:2601:5c0:4202:5670:885d:b51:24c2:bf83]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bzB9H0Q8yzMwX; Fri, 08 Aug 2025 17:39:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <6bc73e1a-03f7-4845-9890-97a7afd68f12@FreeBSD.org> Date: Fri, 8 Aug 2025 13:39:14 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 6dab48b9de6c - main - build: Switch CLEAN back on by default Content-Language: en-US To: =?UTF-8?Q?Dag-Erling_Sm=C3=B8rgrav?= , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202508081559.578FxjHP094672@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 8/8/25 12:37, Philip Paeps wrote: > On 2025-08-08 15:59:45 (+0000), Dag-Erling Smørgrav wrote: >> The branch main has been updated by des: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=6dab48b9de6c1bff61b0ce78029c1e3cba20895a >> >> commit 6dab48b9de6c1bff61b0ce78029c1e3cba20895a >> Author: Dag-Erling Smørgrav >> AuthorDate: 2025-08-08 15:57:31 +0000 >> Commit: Dag-Erling Smørgrav >> CommitDate: 2025-08-08 15:57:31 +0000 >> >> build: Switch CLEAN back on by default >> >> There have been too many issues with non-META_MODE incremental builds >> recently, and it is clear that most users, even developers, were not >> aware that the default had been switched. >> >> This will be revisited once more work has been done to help prevent >> future breakage. >> >> This reverts commit ba373fca78a114768244d6a8c27983da870c1169. >> >> Reviewed by: markj, jhb >> Differential Revision: https://reviews.freebsd.org/D51828 > > Thank you! > > Maybe we should just flip CLEAN on for a couple of days/weeks when > there's something disruptive on main that benefits from thorough > cleaning, but have it off by default? > > As I understand it, doing pkgbase builds with CLEAN rebuilds all > packages, and pkg will want to update them even if the binaries within > are unchanged. We set WITHOUT_CLEAN=1 in the cluster pkgbase builder to > try to make sure that doesn't happen. > > I would love to put that flag under developers' control so pkgbase > package production doesn't stall when a WITH_CLEAN=1 build is needed. CheriBSD has a .require_clean_build flag that effectively can be used to force clean builds in extreme cases based on a cached cookie value saved in .OBJDIR. CheriBSD's version is checked by a python wrapper script, but a similar mechanism could be used in FreeBSD that was checked by depend_cleanup.sh perhaps when we need a bigger hammer. -- John Baldwin From nobody Fri Aug 8 17:45:04 2025 X-Original-To: dev-commits-src-main@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 4bzBJ11sphz64GmF; Fri, 08 Aug 2025 17:45:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzBJ028x9z4G5H; Fri, 08 Aug 2025 17:45:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754675104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G2g9+pIpXg8ORwUc/3OFVO5N76OR/oMuwY68tgTK4Yk=; b=hKbm8GDF6gHGX3cbFttmbCU9yrUOod7EhyIlOLG29Sb6p1T3tJJNxgKbf+M/PuX5nTjVDy Pxl/RGiehtkF2sXhVM8dm7Kaq8+yGilqAOzvfZ74Tu1F2DDz6H839RfumN/Hiezy5JU9DO vjR9mXx9JVvrYhgu31Z6aaoSkk4IQdyn23Ya+BJnCdEDGJzuYHmLDIWE5u7EFYGtGGalyG UioKRV6ahHtjsc+8Cy5LhypafhUC5qW7JO12WB5LrmjtAY+o/IpQJGfdALK3llbMHt8wBk nd8+wOXQVLX34xBt8XovaBQ9DxlEbbr3dzsSGGRhx9ZDAS15aaVmacWiuCqrlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754675104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G2g9+pIpXg8ORwUc/3OFVO5N76OR/oMuwY68tgTK4Yk=; b=AnDvqsJIFfTd39rI5k/Hjlv7Yom8agrv6aKSjdc3GO681F5NNV0Zuf6jcUEqmDCsOVugqt dwI2lAcL8iiow0EZFehAfCMWt5R2R+lfYjPn4zLSfoBjWJVCcAnwUAfweu9hJjBhmxDH3b HehWM0ZKQpGjhd9ij3xc3mAD8L0LrLZdrB0PuPAmhl+6UHmdfizVM6lm54PCAs37f5R8yc BRmQQ5kwO93gti0eVKspG12vA2gjzP9Be/6CQtYZ/VFSIPji8vL1Osq4LAg9VFW8BW3o6+ sLvl9DSkyzI9x6ZHfe0FoAy7hWC0dc/msH/ydb05Hdafy6acXh6ZqkXrd7pY0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754675104; a=rsa-sha256; cv=none; b=dS8XCnfZuESixAUC2lyzCm3LOUbzvZmsRnlvMvRk+8AcNQSmQ1IVKIheWemCEazQ+shWmj n6wZVVGU67pXcKfWHc5rotLSmSdomP43X7LsfSMQ/f1fKSO6IhWlCegonEWSbsdM1pcnkE wEklRBDgbCdsDKIoQf/FHm3BgnN+oVhy3doIsM6GlfmfACxNtnrhGefJovyMxQlq5fky03 KRzkAVjYJMIOJfFrESeN+uYGaiVg1GrzNV1qemR4VOlSJbt/6RbopJ3b2ydTjyzHS/m5rV 2l3TMSMJR4hvwo/pUnaajRyajnr1TeH1GBYgiu0suG4fCE/8mhS8Y0P1ILHKJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzBJ00z6xzmLX; Fri, 08 Aug 2025 17:45:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578Hj4m9000557; Fri, 8 Aug 2025 17:45:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578Hj4sv000554; Fri, 8 Aug 2025 17:45:04 GMT (envelope-from git) Date: Fri, 8 Aug 2025 17:45:04 GMT Message-Id: <202508081745.578Hj4sv000554@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 7de6d9d9b6bd - main - openssh: Include explicitly in includes.h List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7de6d9d9b6bd8b1cd5e190cf4f12df498b34a646 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7de6d9d9b6bd8b1cd5e190cf4f12df498b34a646 commit 7de6d9d9b6bd8b1cd5e190cf4f12df498b34a646 Author: John Baldwin AuthorDate: 2025-08-08 17:43:36 +0000 Commit: John Baldwin CommitDate: 2025-08-08 17:43:36 +0000 openssh: Include explicitly in includes.h This was previously included due to nested includes in Heimdal's headers. Without this, the build fails with an error due to redefining AT_FDCWD. clang: In file included from crypto/openssh/sshd-session.c:46: /usr/obj/.../tmp/usr/include/fcntl.h:232:9: error: 'AT_FDCWD' macro redefined [-Werror,-Wmacro-redefined] 232 | #define AT_FDCWD -100 | ^ crypto/openssh/openbsd-compat/bsd-misc.h:69:10: note: previous definition is here 69 | # define AT_FDCWD (-2) | ^ GCC (can't be disabled): In file included from crypto/openssh/sshd-session.c:46: sys/sys/fcntl.h:232:9: error: "AT_FDCWD" redefined [-Werror] 232 | #define AT_FDCWD -100 | ^~~~~~~~ In file included from crypto/openssh/openbsd-compat/openbsd-compat.h:218, from crypto/openssh/includes.h:173, from crypto/openssh/sshd-session.c:30: openssh/openbsd-compat/bsd-misc.h:69:10: note: this is the location of the previous definition 69 | # define AT_FDCWD (-2) | ^~~~~~~~ Reviewed by: des Differential Revision: https://reviews.freebsd.org/D51809 --- crypto/openssh/includes.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/openssh/includes.h b/crypto/openssh/includes.h index 6d17ef6da933..c3cd8b40e0b9 100644 --- a/crypto/openssh/includes.h +++ b/crypto/openssh/includes.h @@ -34,6 +34,9 @@ #ifdef HAVE_ENDIAN_H # include #endif +#ifdef HAVE_FCNTL_H +# include +#endif #ifdef HAVE_TTYENT_H # include #endif From nobody Fri Aug 8 17:45:06 2025 X-Original-To: dev-commits-src-main@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 4bzBJ26kD0z64HDy; Fri, 08 Aug 2025 17:45:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzBJ23nlwz4GLF; Fri, 08 Aug 2025 17: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=1754675106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JzH8u+sguiCmM7PJaeoD5eSPaj5ht/DJ9xZXBcDZ43Y=; b=oRZRIX2kN5Hf/M7UrJFcS7vwmKPKWwIxfg90w3ORRq9O7N/HZ7T4fBp+9IPI5n6suuMZb9 6MOTzPsOuznXgtEj2VcqDwtigVXfdEk8kvsLfdQoJyn5ZeZPPRqIQwMB1OyIpL35blhinq KL/aXTT4ho4TabysBZrcDjgJub4K/qg0dHzrXjImSHteGx0hphf8+Ty1D/lV+X0+D3Ueui sQnFYtfIBOwiNydxbT79tkWkrZt9aA5In+2T7Qun1QOnnnpm0kYK+TSdFPXnbv3rcxawqg HommagYYWob9k46egZYRilWuQV7lz5jdbRy7qHPaAxoCJY9R7lC3oYeJPx0JbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754675106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JzH8u+sguiCmM7PJaeoD5eSPaj5ht/DJ9xZXBcDZ43Y=; b=D7546MggeH7ijZii5E8wyNs4IpYr8zUbDtwivErABHa3Z8MCuP/+jWzUvx3k7fOoQ3l8Wf 59qFCTUiXQqs0JYQfTyVnFRIBMu4DpFHVKME1INc9fu9Af7MEpAqQlwgc9mKLjWHr53gHj WGzp+8Vd45aYAVtJOKY2h57eaxWKcCIGcOzHT3uS0O6rhfAjN5jrPIG3oAW6va0HJ8Mj1p QaOZn/Nar/AiTAOPaeXhueA3c2fWJD9i0plHG3hz0+iCPXA9tg/8/HbYEyLozIIIUKs3f1 0rqcsjkLz1wTSsDyWn2JkAj3o+BerHgmo4hnXbdXlNeD7XGeBfXc7DOT+ybwaA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754675106; a=rsa-sha256; cv=none; b=Q1rGeNGUhCKQFhtJmVrvIKK826UFhsZmhpbZl3vXC8t2dajr2ehY2muhBLqeTSQRSTg+b0 Uz/iVJcmTM+NqzaVGmpFm4JCOIs8mWkvCPKJYYwfGTY/nkIxOJAl75O/ahE81MsEdZQ5jX ywqftOswwdg/98C++E6ruDfKdkFaJr5bc+et4TQmibAE03GpFqIxj5D2O+tK/eX8c+aGtS koOvUN6P6ngrJHQvNCj/sh6ZEXfNl1sFmTV6p8b3DyujepoIgGlSJ9N1dNYsfxVaMhHmUl 3hZQTk4pI5zv3+1Vql6MWoCJjI0rhIGhFHnyBPqNWhSZJj+vUQQhLDHtT9JR0A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzBJ22qShzmJP; Fri, 08 Aug 2025 17:45:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578Hj6md000628; Fri, 8 Aug 2025 17:45:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578Hj6Ko000625; Fri, 8 Aug 2025 17:45:06 GMT (envelope-from git) Date: Fri, 8 Aug 2025 17:45:06 GMT Message-Id: <202508081745.578Hj6Ko000625@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 619feb9dd00e - main - krb5: Don't add -Wno-macro-redefined to CFLAGS List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 619feb9dd00e93894ddc74c3380c882a88570e4a Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=619feb9dd00e93894ddc74c3380c882a88570e4a commit 619feb9dd00e93894ddc74c3380c882a88570e4a Author: John Baldwin AuthorDate: 2025-08-08 17:44:15 +0000 Commit: John Baldwin CommitDate: 2025-08-08 17:44:15 +0000 krb5: Don't add -Wno-macro-redefined to CFLAGS This doesn't exist on GCC and masked warnings in OpenSSH. Reviewed by: des Differential Revision: https://reviews.freebsd.org/D51811 --- krb5/Makefile.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/krb5/Makefile.inc b/krb5/Makefile.inc index 52910c3ebe4a..8529ee90a2e0 100644 --- a/krb5/Makefile.inc +++ b/krb5/Makefile.inc @@ -22,7 +22,6 @@ MAKE_COMMANDS= ${KRB5_OBJTOP}/util/ss/mk_cmds # There are no WARNS levels for this. CFLAGS+= -Wno-deprecated-non-prototype \ - -Wno-macro-redefined \ -Wno-unused-parameter WARNS?= 1 From nobody Fri Aug 8 18:27:55 2025 X-Original-To: dev-commits-src-main@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 4bzCFR2bkDz64LJ7; Fri, 08 Aug 2025 18:27: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzCFR1rMyz4QCq; Fri, 08 Aug 2025 18:27:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754677675; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IN+RnFxqmKTmsazVSv1hZwklSW3nWGG0wSQW4pzS8U0=; b=urg+AYFPPRkUVOaTQw3woBoLOVRyUp5ExqUgRgwkfCFj7UrOB+R+dz4ysCgd1xG73h3MlE E4qfI26Os9BAIRo4gd+7ERxOCMf0G1mue0B88hOs10aPpDac8IKH/XpOXNUG15phaqrl2X 8qkTBF546eSML/IucXWaIYUJC20owx/KLm2oRJK2YtYye7iXPFN/XwQRntwRiZzpA101Wg nptMGThBrWXwK2OmrOMGNirWIlHM3hEmR8rjykPu+haGW9hj5+YfZUGThpwo+3HjMg3fi5 8c0uS9BZICoCuM+MVte8X2LUmgeHTnlrgejbRA8jZY5kiSE8oo8X+BdZGs0Kjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754677675; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IN+RnFxqmKTmsazVSv1hZwklSW3nWGG0wSQW4pzS8U0=; b=kxP3nL+gJn9lWCkiS4J2us0IPsjX7q/dcy5UmFS8gho7M5ghcZ+8i/6uKIcjWks2KVA8uh WD2jnas6DtOUQSWqOciu4JAc+WPWD62T/Jmpal60HtDkv3LZH/CPFa4PbzQIz6tFZSge7B J6fiqmKLmcqpEYa0QkRMe0sGpgrqIuVxuELQ9xIyWphmuhJJHtLpXXK00EEUI6X6EtrLVu G39DkwSM6XB1+gT5CN21LabFMi3T/iU1RLlbMsl//CGUJ2JqDCiurcDdFSurcQayZE2QCX M3ZEpi7WdVecWf5tNfgSOcwceiZOD/f7EJR+55OZpt+vrur7qacssnIxwxi5kQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754677675; a=rsa-sha256; cv=none; b=EPasxPSoNx/zwdz9HWtvYXonqpZ10QrshB/aB6aoUMfM4XB/92S09uJ6wLMeX84I7NJq0U hAXFvNqRXjGUGjs7Rf69O/B8mBvRCr4pMR4/9IBO3sHhNSdLmGfBWWla90K8NkUTBpBc99 yOYeQfFYon3MyOga1C7EzD5kCXSzRX7s9uBuYl7y8vnKDxVPYv8rXJuTnv+yiYHpguo4Sg qo+ATEULuyjaTT4HJl/bcNJa4DnES6skzqVCYP2g/zxAF7f1OwvqG+9QILHot/TPEkmAQ2 1fnMa/3EiJYvtO8cP1/h91TEZGEra/dmDE3hqzz4UgsDoO6zcWvRTfz4II/U+g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzCFR16Dtzmvc; Fri, 08 Aug 2025 18:27:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578IRtfL076360; Fri, 8 Aug 2025 18:27:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578IRtCc076357; Fri, 8 Aug 2025 18:27:55 GMT (envelope-from git) Date: Fri, 8 Aug 2025 18:27:55 GMT Message-Id: <202508081827.578IRtCc076357@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: d0ff5773cefa - main - libregex: fix our mapping for \w List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d0ff5773cefaf3fa41b1be3e44ca35bd9d5f68ee Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d0ff5773cefaf3fa41b1be3e44ca35bd9d5f68ee commit d0ff5773cefaf3fa41b1be3e44ca35bd9d5f68ee Author: Kyle Evans AuthorDate: 2025-08-08 18:21:03 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 18:27:26 +0000 libregex: fix our mapping for \w A small oversight in our implementation of \w is that it's actually not strictly [[:alnum:]]. According to the GNU documentation, it's actually [[:alnum:]] + underscore. The fix is rather trivial: just add it to our set explicitly, and amend our test set to be sure that _ is actually included. PR: 287396 --- lib/libc/regex/regcomp.c | 1 + lib/libregex/tests/gnuext.in | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/libc/regex/regcomp.c b/lib/libc/regex/regcomp.c index f34dc322d0bb..aebea2b02435 100644 --- a/lib/libc/regex/regcomp.c +++ b/lib/libc/regex/regcomp.c @@ -1183,6 +1183,7 @@ p_b_pseudoclass(struct parse *p, char c) { /* PASSTHROUGH */ case 'w': p_b_cclass_named(p, cs, "alnum"); + CHadd(p, cs, '_'); break; case 'S': cs->invert = 1; diff --git a/lib/libregex/tests/gnuext.in b/lib/libregex/tests/gnuext.in index 8f49854235a9..3ce0f4af1b34 100644 --- a/lib/libregex/tests/gnuext.in +++ b/lib/libregex/tests/gnuext.in @@ -10,9 +10,9 @@ a\|b\|c b abc a (ab)\1 - abab abab \1(ab) C ESUBREG (a)(b)(c)(d)(e)(f)(g)(h)(i)\9 - abcdefghii abcdefghii -# \w, \W, \s, \S (alnum, ^alnum, space, ^space) -\w+ - -%@a0X- a0X -\w\+ b -%@a0X- a0X +# \w, \W, \s, \S (_alnum, ^_alnum, space, ^space) +\w+ - -%@a_0X- a_0X +\w\+ b -%@a_0X- a_0X \s+ - aSNTb SNT \s\+ b aSNTb SNT # Word boundaries (\b, \B, \<, \>, \`, \') From nobody Fri Aug 8 19:22:03 2025 X-Original-To: dev-commits-src-main@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 4bzDRy5MPlz64Qsw; Fri, 08 Aug 2025 19:22:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzDRy52zCz3Jbv; Fri, 08 Aug 2025 19:22:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754680926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BOVpMBNy+CnM+WnHigtw/nviHY9H5uOznc7e22Nc0aw=; b=iIIx4IF5g+HIJSesH4GyI+o8y4bmduoJNHge4kw1/yIrBzwFCuQNPscCQ2J/XaS5RoE3H7 naZHjlKCEJyNjkGKZPxo0MwUofO4PuUXq44/5jlwvtkdCWRRkqX0jUenhkuZpEvngDFBu6 XfoKT9KCVxUGsVs7DovLEdW+QK2J4xf19SIbXDe5Ic44EjGZY3/M4QJL37L7HDp2GtKhUy OUuAUGHf+YLhMpQwT45qn4D3ZVu6ix5uH5WabyK1PLJ8k5GJ0UouIBiM5Vhp/SoiUOgVMH GQivxnGPmzOdPEI+iYIAIM+Rkh5gVpV/o35UyT1fUpB/32vSQI75SOsdmhSl1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754680926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BOVpMBNy+CnM+WnHigtw/nviHY9H5uOznc7e22Nc0aw=; b=Gr4IM346NrCs8gsdGhXxVrHY9ZTgd/ir7XdKzB8fvituZ0ub1ZoXiNCMIm8GojUSJWM/mO AGHh1AI74sQ6E7th5jiifl9S9zsuXujCiimQUxll2HawWlauBkH1OzZxYa1GTjFYEfGlYC xd567oY/VRNWpqP6P1llQ0hmqdndYsn6zIrxxyHFzxY4Rlp6mw1uStF9Ro9w1iZITKWhsp 6ksNZONnYyyPHaI6ktRrU4rhZx5PsZS5TTd0HmK78Gr1/Ojfyku4pU5PJkodwhe8B/LPCG gAWw+Am3529vnlhhaM2ZjytyDQfhghHTBSeI7++VCBGc0xuHIuDcAgCWXmjCEw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754680926; a=rsa-sha256; cv=none; b=Eb7K0OV32YROlAJTBhZ+j7ScwGDDBLSQadIZzmO/ah4+Yfgi8WZ3ytkyFbwD/1uEYWrs+b hWMvCmdP3VMqwhive+hJQyV87iPrAqwj4h6CSfMIkz7i1rxqWbf4omsCHCguFvX2tcG1JM CLjQ1PogGsbrEKc1zbgVlrZgCRfqCoejJqg6eBywzuExbJiZtNe5kY2UhorTTGGyHobjC5 vTyLuvGe8zga9HEpXUQcN6FVHMFqgR4H2Y5yCxT+IO3/SYDGWelgshouQOX1L0TfLECGqv +k+pjv0q4t4f8420bmHspL5LTAQGClZbaNq0DK6Zg7+uLDvQ23Fddi6n1ImpFQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzDRy4TXbzpfV; Fri, 08 Aug 2025 19:22:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578JM6Gg086479; Fri, 8 Aug 2025 19:22:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578JM3A0086462; Fri, 8 Aug 2025 19:22:03 GMT (envelope-from git) Date: Fri, 8 Aug 2025 19:22:03 GMT Message-Id: <202508081922.578JM3A0086462@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Pierre Pronchery Subject: git: e7be843b4a16 - main - Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: khorben X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7be843b4a162e68651d3911f0357ed464915629 Auto-Submitted: auto-generated The branch main has been updated by khorben: URL: https://cgit.FreeBSD.org/src/commit/?id=e7be843b4a162e68651d3911f0357ed464915629 commit e7be843b4a162e68651d3911f0357ed464915629 Merge: d0ff5773cefa 1095efe41fee Author: Pierre Pronchery AuthorDate: 2025-08-07 13:50:32 +0000 Commit: Pierre Pronchery CommitDate: 2025-08-07 13:50:32 +0000 Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' Approved by: philip (mentor) Sponsored by: Alpha-Omega Beach Cleaning Project Sponsored by: The FreeBSD Foundation crypto/openssl/ACKNOWLEDGEMENTS.md | 4 +- crypto/openssl/AUTHORS.md | 2 + crypto/openssl/CHANGES.md | 1735 +- crypto/openssl/CODE-OF-CONDUCT.md | 6 + crypto/openssl/CONTRIBUTING.md | 10 +- .../openssl/Configurations/00-base-templates.conf | 73 +- crypto/openssl/Configurations/10-main.conf | 236 +- crypto/openssl/Configurations/15-android.conf | 7 + crypto/openssl/Configurations/15-ios.conf | 37 +- crypto/openssl/Configurations/50-cppbuilder.conf | 59 + crypto/openssl/Configurations/50-nonstop.conf | 98 +- crypto/openssl/Configurations/50-win-clang-cl.conf | 36 + .../openssl/Configurations/50-win-hybridcrt.conf | 37 + crypto/openssl/Configurations/50-win-onecore.conf | 9 +- crypto/openssl/Configurations/README.md | 17 +- crypto/openssl/Configurations/descrip.mms.tmpl | 180 +- crypto/openssl/Configurations/platform/AIX.pm | 22 +- crypto/openssl/Configurations/platform/Unix.pm | 4 +- crypto/openssl/Configurations/shared-info.pl | 8 +- crypto/openssl/Configurations/unix-Makefile.tmpl | 338 +- .../openssl/Configurations/windows-makefile.tmpl | 61 +- crypto/openssl/Configure | 243 +- crypto/openssl/HACKING.md | 87 +- crypto/openssl/INSTALL.md | 322 +- crypto/openssl/NEWS.md | 438 +- crypto/openssl/NOTES-ANDROID.md | 14 +- crypto/openssl/NOTES-ANSI.md | 33 + crypto/openssl/NOTES-NONSTOP.md | 63 +- crypto/openssl/NOTES-PERL.md | 6 +- crypto/openssl/NOTES-POSIX.md | 20 + crypto/openssl/NOTES-UNIX.md | 4 +- crypto/openssl/NOTES-VALGRIND.md | 16 +- crypto/openssl/NOTES-WINDOWS.md | 77 +- crypto/openssl/README-ENGINES.md | 67 +- crypto/openssl/README-FIPS.md | 79 +- crypto/openssl/README-PROVIDERS.md | 14 +- crypto/openssl/README-QUIC.md | 108 + crypto/openssl/README.md | 92 +- crypto/openssl/VERSION.dat | 6 +- crypto/openssl/apps/CA.pl.in | 260 +- crypto/openssl/apps/asn1parse.c | 20 +- crypto/openssl/apps/build.info | 2 +- crypto/openssl/apps/ca.c | 180 +- crypto/openssl/apps/ciphers.c | 5 +- crypto/openssl/apps/cmp.c | 1576 +- crypto/openssl/apps/cms.c | 95 +- crypto/openssl/apps/crl.c | 17 +- crypto/openssl/apps/crl2pkcs7.c | 14 +- crypto/openssl/apps/demoSRP/srp_verifier.txt | 4 +- crypto/openssl/apps/dgst.c | 227 +- crypto/openssl/apps/dhparam.c | 48 +- crypto/openssl/apps/dsa.c | 16 +- crypto/openssl/apps/dsaparam.c | 63 +- crypto/openssl/apps/ec.c | 16 +- crypto/openssl/apps/ecparam.c | 43 +- crypto/openssl/apps/enc.c | 225 +- crypto/openssl/apps/engine.c | 16 +- crypto/openssl/apps/fipsinstall.c | 501 +- crypto/openssl/apps/gendsa.c | 18 +- crypto/openssl/apps/genpkey.c | 168 +- crypto/openssl/apps/genrsa.c | 42 +- crypto/openssl/apps/include/apps.h | 63 +- crypto/openssl/apps/include/cmp_mock_srv.h | 8 +- crypto/openssl/apps/include/engine_loader.h | 2 +- crypto/openssl/apps/include/function.h | 2 +- crypto/openssl/apps/include/http_server.h | 42 +- crypto/openssl/apps/include/log.h | 50 + crypto/openssl/apps/include/opt.h | 96 +- crypto/openssl/apps/include/platform.h | 4 +- crypto/openssl/apps/include/s_apps.h | 14 +- crypto/openssl/apps/info.c | 15 +- crypto/openssl/apps/lib/app_libctx.c | 2 +- crypto/openssl/apps/lib/app_provider.c | 77 +- crypto/openssl/apps/lib/app_rand.c | 11 +- crypto/openssl/apps/lib/apps.c | 898 +- crypto/openssl/apps/lib/apps_opt_printf.c | 25 + crypto/openssl/apps/lib/build.info | 4 +- crypto/openssl/apps/lib/cmp_mock_srv.c | 421 +- crypto/openssl/apps/lib/engine_loader.c | 5 +- crypto/openssl/apps/lib/http_server.c | 331 +- crypto/openssl/apps/lib/log.c | 108 + crypto/openssl/apps/lib/names.c | 7 +- crypto/openssl/apps/lib/opt.c | 213 +- crypto/openssl/apps/lib/s_cb.c | 155 +- crypto/openssl/apps/lib/s_socket.c | 91 +- crypto/openssl/apps/lib/tlssrp_depr.c | 8 +- crypto/openssl/apps/lib/vms_term_sock.c | 14 +- crypto/openssl/apps/list.c | 415 +- crypto/openssl/apps/mac.c | 9 +- crypto/openssl/apps/nseq.c | 3 +- crypto/openssl/apps/ocsp.c | 78 +- crypto/openssl/apps/openssl-vms.cnf | 12 +- crypto/openssl/apps/openssl.c | 40 +- crypto/openssl/apps/openssl.cnf | 12 +- crypto/openssl/apps/passwd.c | 18 +- crypto/openssl/apps/pkcs12.c | 210 +- crypto/openssl/apps/pkcs7.c | 18 +- crypto/openssl/apps/pkcs8.c | 31 +- crypto/openssl/apps/pkey.c | 18 +- crypto/openssl/apps/pkeyparam.c | 11 +- crypto/openssl/apps/pkeyutl.c | 296 +- crypto/openssl/apps/prime.c | 43 +- crypto/openssl/apps/progs.pl | 10 +- crypto/openssl/apps/rand.c | 102 +- crypto/openssl/apps/rehash.c | 20 +- crypto/openssl/apps/req.c | 378 +- crypto/openssl/apps/rsa.c | 14 +- crypto/openssl/apps/rsautl.c | 9 +- crypto/openssl/apps/s_client.c | 707 +- crypto/openssl/apps/s_server.c | 267 +- crypto/openssl/apps/s_time.c | 12 +- crypto/openssl/apps/sess_id.c | 3 +- crypto/openssl/apps/skeyutl.c | 135 + crypto/openssl/apps/smime.c | 72 +- crypto/openssl/apps/speed.c | 2084 ++- crypto/openssl/apps/spkac.c | 12 +- crypto/openssl/apps/storeutl.c | 43 +- crypto/openssl/apps/ts.c | 40 +- crypto/openssl/apps/tsget.in | 2 +- crypto/openssl/apps/verify.c | 8 +- crypto/openssl/apps/version.c | 23 +- crypto/openssl/apps/x509.c | 249 +- crypto/openssl/build.info | 49 +- crypto/openssl/configdata.pm.in | 4 +- crypto/openssl/crypto/aes/aes_x86core.c | 8 +- crypto/openssl/crypto/aes/asm/aes-riscv32-zkn.pl | 1089 ++ crypto/openssl/crypto/aes/asm/aes-riscv64-zkn.pl | 594 + .../crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl | 710 + .../crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl | 376 + .../openssl/crypto/aes/asm/aes-riscv64-zvkned.pl | 1376 ++ crypto/openssl/crypto/aes/asm/aes-riscv64.pl | 1709 ++ crypto/openssl/crypto/aes/asm/aes-x86_64.pl | 4 +- crypto/openssl/crypto/aes/asm/aesni-sha1-x86_64.pl | 4 +- .../openssl/crypto/aes/asm/aesni-sha256-x86_64.pl | 4 +- crypto/openssl/crypto/aes/asm/aesni-x86.pl | 2 +- crypto/openssl/crypto/aes/asm/aesni-x86_64.pl | 4 +- crypto/openssl/crypto/aes/asm/aesni-xts-avx512.pl | 2872 ++++ crypto/openssl/crypto/aes/asm/aesp8-ppc.pl | 2 +- crypto/openssl/crypto/aes/asm/aesv8-armx.pl | 790 +- crypto/openssl/crypto/aes/asm/bsaes-armv8.pl | 2389 +++ crypto/openssl/crypto/aes/asm/bsaes-x86_64.pl | 7 +- crypto/openssl/crypto/aes/asm/vpaes-armv8.pl | 55 +- crypto/openssl/crypto/aes/asm/vpaes-loongarch64.pl | 1004 ++ crypto/openssl/crypto/aes/asm/vpaes-x86_64.pl | 5 +- crypto/openssl/crypto/aes/build.info | 29 +- crypto/openssl/crypto/aria/aria.c | 2 +- crypto/openssl/crypto/arm64cpuid.pl | 107 +- crypto/openssl/crypto/arm_arch.h | 39 +- crypto/openssl/crypto/armcap.c | 383 +- crypto/openssl/crypto/armv4cpuid.pl | 4 +- crypto/openssl/crypto/asn1/a_bitstr.c | 17 +- crypto/openssl/crypto/asn1/a_d2i_fp.c | 6 +- crypto/openssl/crypto/asn1/a_digest.c | 4 +- crypto/openssl/crypto/asn1/a_dup.c | 10 +- crypto/openssl/crypto/asn1/a_i2d_fp.c | 10 +- crypto/openssl/crypto/asn1/a_int.c | 42 +- crypto/openssl/crypto/asn1/a_mbstr.c | 7 +- crypto/openssl/crypto/asn1/a_object.c | 25 +- crypto/openssl/crypto/asn1/a_sign.c | 40 +- crypto/openssl/crypto/asn1/a_strex.c | 9 +- crypto/openssl/crypto/asn1/a_strnid.c | 16 +- crypto/openssl/crypto/asn1/a_time.c | 26 +- crypto/openssl/crypto/asn1/a_verify.c | 13 +- crypto/openssl/crypto/asn1/ameth_lib.c | 5 +- crypto/openssl/crypto/asn1/asn1_err.c | 6 +- crypto/openssl/crypto/asn1/asn1_gen.c | 34 +- crypto/openssl/crypto/asn1/asn1_item_list.c | 3 +- crypto/openssl/crypto/asn1/asn1_item_list.h | 4 +- crypto/openssl/crypto/asn1/asn1_lib.c | 11 +- crypto/openssl/crypto/asn1/asn1_local.h | 2 + crypto/openssl/crypto/asn1/asn_mime.c | 29 +- crypto/openssl/crypto/asn1/asn_moid.c | 4 +- crypto/openssl/crypto/asn1/asn_mstbl.c | 2 +- crypto/openssl/crypto/asn1/asn_pack.c | 22 +- crypto/openssl/crypto/asn1/bio_asn1.c | 10 +- crypto/openssl/crypto/asn1/bio_ndef.c | 8 +- crypto/openssl/crypto/asn1/d2i_pr.c | 78 +- crypto/openssl/crypto/asn1/f_int.c | 10 +- crypto/openssl/crypto/asn1/f_string.c | 7 +- crypto/openssl/crypto/asn1/i2d_evp.c | 5 +- crypto/openssl/crypto/asn1/p5_pbe.c | 18 +- crypto/openssl/crypto/asn1/p5_pbev2.c | 123 +- crypto/openssl/crypto/asn1/p5_scrypt.c | 99 +- crypto/openssl/crypto/asn1/p8_pkey.c | 28 +- crypto/openssl/crypto/asn1/standard_methods.h | 8 +- crypto/openssl/crypto/asn1/tasn_dec.c | 26 +- crypto/openssl/crypto/asn1/tasn_enc.c | 17 +- crypto/openssl/crypto/asn1/tasn_new.c | 30 +- crypto/openssl/crypto/asn1/tasn_prn.c | 4 +- crypto/openssl/crypto/asn1/tasn_scn.c | 4 +- crypto/openssl/crypto/asn1/tasn_utl.c | 24 +- crypto/openssl/crypto/asn1/x_algor.c | 63 +- crypto/openssl/crypto/asn1/x_info.c | 4 +- crypto/openssl/crypto/asn1/x_int64.c | 12 +- crypto/openssl/crypto/asn1/x_pkey.c | 13 +- crypto/openssl/crypto/async/arch/async_null.c | 17 +- crypto/openssl/crypto/async/arch/async_null.h | 4 +- crypto/openssl/crypto/async/arch/async_posix.c | 82 +- crypto/openssl/crypto/async/arch/async_posix.h | 7 +- crypto/openssl/crypto/async/arch/async_win.c | 17 +- crypto/openssl/crypto/async/arch/async_win.h | 4 +- crypto/openssl/crypto/async/async.c | 20 +- crypto/openssl/crypto/async/async_wait.c | 5 +- crypto/openssl/crypto/bf/bf_local.h | 28 +- crypto/openssl/crypto/bio/bf_buff.c | 13 +- crypto/openssl/crypto/bio/bf_lbuf.c | 14 +- crypto/openssl/crypto/bio/bf_nbio.c | 4 +- crypto/openssl/crypto/bio/bio_addr.c | 121 +- crypto/openssl/crypto/bio/bio_cb.c | 22 +- crypto/openssl/crypto/bio/bio_dump.c | 9 +- crypto/openssl/crypto/bio/bio_err.c | 30 +- crypto/openssl/crypto/bio/bio_lib.c | 142 +- crypto/openssl/crypto/bio/bio_local.h | 32 +- crypto/openssl/crypto/bio/bio_meth.c | 58 +- crypto/openssl/crypto/bio/bio_print.c | 41 +- crypto/openssl/crypto/bio/bio_sock.c | 74 +- crypto/openssl/crypto/bio/bio_sock2.c | 115 +- crypto/openssl/crypto/bio/bss_acpt.c | 16 +- crypto/openssl/crypto/bio/bss_bio.c | 14 +- crypto/openssl/crypto/bio/bss_conn.c | 297 +- crypto/openssl/crypto/bio/bss_core.c | 14 +- crypto/openssl/crypto/bio/bss_dgram.c | 1280 +- crypto/openssl/crypto/bio/bss_dgram_pair.c | 1348 ++ crypto/openssl/crypto/bio/bss_fd.c | 2 +- crypto/openssl/crypto/bio/bss_file.c | 13 +- crypto/openssl/crypto/bio/bss_log.c | 8 +- crypto/openssl/crypto/bio/bss_mem.c | 4 +- crypto/openssl/crypto/bio/bss_sock.c | 82 +- crypto/openssl/crypto/bio/build.info | 2 +- crypto/openssl/crypto/bio/ossl_core_bio.c | 12 +- crypto/openssl/crypto/bn/asm/armv4-gf2m.pl | 5 +- crypto/openssl/crypto/bn/asm/armv4-mont.pl | 5 +- crypto/openssl/crypto/bn/asm/armv8-mont.pl | 1 + crypto/openssl/crypto/bn/asm/mips.pl | 4 +- crypto/openssl/crypto/bn/asm/ppc64-mont-fixed.pl | 583 + .../bn/asm/{rsaz-avx512.pl => rsaz-2k-avx512.pl} | 322 +- crypto/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl | 867 + crypto/openssl/crypto/bn/asm/rsaz-3k-avx512.pl | 883 + crypto/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl | 1091 ++ crypto/openssl/crypto/bn/asm/rsaz-4k-avx512.pl | 939 ++ crypto/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl | 1161 ++ crypto/openssl/crypto/bn/asm/rsaz-avx2.pl | 4 +- crypto/openssl/crypto/bn/asm/rsaz-x86_64.pl | 4 +- crypto/openssl/crypto/bn/asm/sparcv8.S | 8 +- crypto/openssl/crypto/bn/asm/sparcv8plus.S | 6 +- crypto/openssl/crypto/bn/asm/x86_64-mont5.pl | 4 +- crypto/openssl/crypto/bn/bn_asm.c | 7 - crypto/openssl/crypto/bn/bn_blind.c | 6 +- crypto/openssl/crypto/bn/bn_const.c | 2 +- crypto/openssl/crypto/bn/bn_conv.c | 15 +- crypto/openssl/crypto/bn/bn_ctx.c | 12 +- crypto/openssl/crypto/bn/bn_exp.c | 44 +- crypto/openssl/crypto/bn/bn_gcd.c | 69 +- crypto/openssl/crypto/bn/bn_gf2m.c | 20 +- crypto/openssl/crypto/bn/bn_intern.c | 10 +- crypto/openssl/crypto/bn/bn_lib.c | 297 +- crypto/openssl/crypto/bn/bn_local.h | 7 +- crypto/openssl/crypto/bn/bn_mod.c | 9 +- crypto/openssl/crypto/bn/bn_mont.c | 48 +- crypto/openssl/crypto/bn/bn_mul.c | 4 +- crypto/openssl/crypto/bn/bn_nist.c | 8 +- crypto/openssl/crypto/bn/bn_ppc.c | 20 +- crypto/openssl/crypto/bn/bn_prime.c | 17 +- crypto/openssl/crypto/bn/bn_rand.c | 4 +- crypto/openssl/crypto/bn/bn_recp.c | 4 +- crypto/openssl/crypto/bn/bn_rsa_fips186_4.c | 75 +- crypto/openssl/crypto/bn/bn_s390x.c | 161 + crypto/openssl/crypto/bn/build.info | 15 +- crypto/openssl/crypto/bn/rsaz_exp.c | 13 +- crypto/openssl/crypto/bn/rsaz_exp.h | 4 +- crypto/openssl/crypto/bn/rsaz_exp_x2.c | 470 +- crypto/openssl/crypto/buffer/buffer.c | 10 +- crypto/openssl/crypto/build.info | 25 +- crypto/openssl/crypto/camellia/asm/cmll-x86_64.pl | 4 +- crypto/openssl/crypto/cast/cast_local.h | 75 +- crypto/openssl/crypto/chacha/asm/chacha-armv4.pl | 5 +- .../openssl/crypto/chacha/asm/chacha-armv8-sve.pl | 1178 ++ crypto/openssl/crypto/chacha/asm/chacha-armv8.pl | 61 +- .../crypto/chacha/asm/chacha-loongarch64.pl | 1439 ++ .../crypto/chacha/asm/chacha-riscv64-v-zbb.pl | 518 + crypto/openssl/crypto/chacha/asm/chacha-x86_64.pl | 4 +- crypto/openssl/crypto/chacha/asm/chachap10-ppc.pl | 1290 ++ crypto/openssl/crypto/chacha/build.info | 19 +- crypto/openssl/crypto/chacha/chacha_enc.c | 32 +- crypto/openssl/crypto/chacha/chacha_ppc.c | 19 +- crypto/openssl/crypto/chacha/chacha_riscv.c | 63 + crypto/openssl/crypto/cmac/cmac.c | 82 +- crypto/openssl/crypto/cmp/build.info | 11 +- crypto/openssl/crypto/cmp/cmp_asn.c | 695 +- crypto/openssl/crypto/cmp/cmp_client.c | 227 +- crypto/openssl/crypto/cmp/cmp_ctx.c | 475 +- crypto/openssl/crypto/cmp/cmp_err.c | 29 +- crypto/openssl/crypto/cmp/cmp_genm.c | 441 + crypto/openssl/crypto/cmp/cmp_hdr.c | 50 +- crypto/openssl/crypto/cmp/cmp_http.c | 46 +- crypto/openssl/crypto/cmp/cmp_local.h | 112 +- crypto/openssl/crypto/cmp/cmp_msg.c | 269 +- crypto/openssl/crypto/cmp/cmp_protect.c | 115 +- crypto/openssl/crypto/cmp/cmp_server.c | 259 +- crypto/openssl/crypto/cmp/cmp_status.c | 10 +- crypto/openssl/crypto/cmp/cmp_util.c | 8 +- crypto/openssl/crypto/cmp/cmp_vfy.c | 268 +- crypto/openssl/crypto/cms/cms_asn1.c | 6 +- crypto/openssl/crypto/cms/cms_cd.c | 9 +- crypto/openssl/crypto/cms/cms_dd.c | 2 +- crypto/openssl/crypto/cms/cms_dh.c | 14 +- crypto/openssl/crypto/cms/cms_ec.c | 35 +- crypto/openssl/crypto/cms/cms_enc.c | 16 +- crypto/openssl/crypto/cms/cms_env.c | 159 +- crypto/openssl/crypto/cms/cms_err.c | 2 + crypto/openssl/crypto/cms/cms_ess.c | 34 +- crypto/openssl/crypto/cms/cms_io.c | 3 +- crypto/openssl/crypto/cms/cms_kari.c | 4 +- crypto/openssl/crypto/cms/cms_lib.c | 197 +- crypto/openssl/crypto/cms/cms_local.h | 17 +- crypto/openssl/crypto/cms/cms_pwri.c | 76 +- crypto/openssl/crypto/cms/cms_rsa.c | 17 +- crypto/openssl/crypto/cms/cms_sd.c | 320 +- crypto/openssl/crypto/cms/cms_smime.c | 103 +- crypto/openssl/crypto/comp/build.info | 2 + crypto/openssl/crypto/comp/c_brotli.c | 800 + crypto/openssl/crypto/comp/c_zlib.c | 160 +- crypto/openssl/crypto/comp/c_zstd.c | 845 + crypto/openssl/crypto/comp/comp_err.c | 13 + crypto/openssl/crypto/comp/comp_lib.c | 11 +- crypto/openssl/crypto/comp/comp_local.h | 12 +- crypto/openssl/crypto/comp_methods.c | 59 + crypto/openssl/crypto/conf/conf_api.c | 4 +- crypto/openssl/crypto/conf/conf_def.c | 51 +- crypto/openssl/crypto/conf/conf_err.c | 2 +- crypto/openssl/crypto/conf/conf_lib.c | 21 +- crypto/openssl/crypto/conf/conf_mod.c | 176 +- crypto/openssl/crypto/context.c | 633 +- crypto/openssl/crypto/core_algorithm.c | 4 +- crypto/openssl/crypto/core_fetch.c | 7 +- crypto/openssl/crypto/core_namemap.c | 376 +- crypto/openssl/crypto/cpt_err.c | 21 +- crypto/openssl/crypto/cpuid.c | 69 +- crypto/openssl/crypto/crmf/crmf_asn.c | 49 +- crypto/openssl/crypto/crmf/crmf_err.c | 49 +- crypto/openssl/crypto/crmf/crmf_lib.c | 362 +- crypto/openssl/crypto/crmf/crmf_local.h | 58 +- crypto/openssl/crypto/crmf/crmf_pbm.c | 6 +- crypto/openssl/crypto/cryptlib.c | 8 +- crypto/openssl/crypto/ct/ct_b64.c | 6 +- crypto/openssl/crypto/ct/ct_log.c | 38 +- crypto/openssl/crypto/ct/ct_oct.c | 12 +- crypto/openssl/crypto/ct/ct_policy.c | 14 +- crypto/openssl/crypto/ct/ct_sct.c | 16 +- crypto/openssl/crypto/ct/ct_sct_ctx.c | 5 +- crypto/openssl/crypto/ctype.c | 4 +- crypto/openssl/crypto/cversion.c | 71 +- crypto/openssl/crypto/defaults.c | 204 + crypto/openssl/crypto/der_writer.c | 2 +- crypto/openssl/crypto/des/cfb_enc.c | 4 +- crypto/openssl/crypto/des/des_local.h | 58 +- crypto/openssl/crypto/des/set_key.c | 7 +- crypto/openssl/crypto/deterministic_nonce.c | 240 + crypto/openssl/crypto/dh/dh_ameth.c | 12 +- crypto/openssl/crypto/dh/dh_backend.c | 10 +- crypto/openssl/crypto/dh/dh_check.c | 4 +- crypto/openssl/crypto/dh/dh_err.c | 1 + crypto/openssl/crypto/dh/dh_gen.c | 4 + crypto/openssl/crypto/dh/dh_kdf.c | 3 +- crypto/openssl/crypto/dh/dh_key.c | 11 +- crypto/openssl/crypto/dh/dh_lib.c | 22 +- crypto/openssl/crypto/dh/dh_meth.c | 6 +- crypto/openssl/crypto/dh/dh_pmeth.c | 12 +- crypto/openssl/crypto/dllmain.c | 4 +- crypto/openssl/crypto/dsa/dsa_ameth.c | 32 +- crypto/openssl/crypto/dsa/dsa_backend.c | 4 +- crypto/openssl/crypto/dsa/dsa_check.c | 2 +- crypto/openssl/crypto/dsa/dsa_key.c | 142 +- crypto/openssl/crypto/dsa/dsa_lib.c | 30 +- crypto/openssl/crypto/dsa/dsa_local.h | 6 +- crypto/openssl/crypto/dsa/dsa_meth.c | 6 +- crypto/openssl/crypto/dsa/dsa_ossl.c | 49 +- crypto/openssl/crypto/dsa/dsa_pmeth.c | 24 +- crypto/openssl/crypto/dsa/dsa_sign.c | 13 +- crypto/openssl/crypto/dso/dso_dl.c | 16 +- crypto/openssl/crypto/dso/dso_dlfcn.c | 18 +- crypto/openssl/crypto/dso/dso_lib.c | 33 +- crypto/openssl/crypto/dso/dso_local.h | 3 +- crypto/openssl/crypto/dso/dso_vms.c | 46 +- crypto/openssl/crypto/dso/dso_win32.c | 28 +- crypto/openssl/crypto/ec/asm/ecp_nistp384-ppc64.pl | 1532 ++ crypto/openssl/crypto/ec/asm/ecp_nistz256-armv8.pl | 102 +- .../openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl | 6 +- crypto/openssl/crypto/ec/asm/ecp_sm2p256-armv8.pl | 831 + crypto/openssl/crypto/ec/build.info | 72 +- crypto/openssl/crypto/ec/curve25519.c | 116 +- .../openssl/crypto/ec/curve448/arch_32/f_impl32.c | 12 +- .../openssl/crypto/ec/curve448/arch_64/f_impl64.c | 8 +- crypto/openssl/crypto/ec/curve448/curve448.c | 165 +- crypto/openssl/crypto/ec/curve448/curve448_local.h | 13 +- crypto/openssl/crypto/ec/curve448/ed448.h | 2 +- crypto/openssl/crypto/ec/curve448/eddsa.c | 72 +- crypto/openssl/crypto/ec/curve448/f_generic.c | 40 +- crypto/openssl/crypto/ec/curve448/field.h | 24 +- crypto/openssl/crypto/ec/curve448/point_448.h | 4 +- crypto/openssl/crypto/ec/ec2_oct.c | 4 +- crypto/openssl/crypto/ec/ec2_smpl.c | 12 +- crypto/openssl/crypto/ec/ec_ameth.c | 6 +- crypto/openssl/crypto/ec/ec_asn1.c | 54 +- crypto/openssl/crypto/ec/ec_backend.c | 28 +- crypto/openssl/crypto/ec/ec_check.c | 4 +- crypto/openssl/crypto/ec/ec_curve.c | 53 +- crypto/openssl/crypto/ec/ec_deprecated.c | 6 +- crypto/openssl/crypto/ec/ec_key.c | 115 +- crypto/openssl/crypto/ec/ec_kmeth.c | 21 +- crypto/openssl/crypto/ec/ec_lib.c | 78 +- crypto/openssl/crypto/ec/ec_local.h | 40 +- crypto/openssl/crypto/ec/ec_mult.c | 41 +- crypto/openssl/crypto/ec/ec_oct.c | 4 +- crypto/openssl/crypto/ec/ec_pmeth.c | 8 +- crypto/openssl/crypto/ec/ec_print.c | 26 +- crypto/openssl/crypto/ec/ecdh_ossl.c | 17 +- crypto/openssl/crypto/ec/ecdsa_ossl.c | 98 +- crypto/openssl/crypto/ec/eck_prn.c | 4 +- crypto/openssl/crypto/ec/ecp_mont.c | 8 +- crypto/openssl/crypto/ec/ecp_nistp224.c | 24 +- crypto/openssl/crypto/ec/ecp_nistp256.c | 37 +- crypto/openssl/crypto/ec/ecp_nistp384.c | 2033 +++ crypto/openssl/crypto/ec/ecp_nistp521.c | 40 +- crypto/openssl/crypto/ec/ecp_nistz256.c | 176 +- crypto/openssl/crypto/ec/ecp_s390x_nistp.c | 12 +- crypto/openssl/crypto/ec/ecp_sm2p256.c | 790 + crypto/openssl/crypto/ec/ecp_sm2p256_table.c | 16387 +++++++++++++++++++ crypto/openssl/crypto/ec/ecp_smpl.c | 34 +- crypto/openssl/crypto/ec/ecx_backend.c | 24 +- crypto/openssl/crypto/ec/ecx_key.c | 92 +- crypto/openssl/crypto/ec/ecx_meth.c | 67 +- crypto/openssl/crypto/encode_decode/decoder_lib.c | 149 +- crypto/openssl/crypto/encode_decode/decoder_meth.c | 111 +- crypto/openssl/crypto/encode_decode/decoder_pkey.c | 762 +- crypto/openssl/crypto/encode_decode/encoder_lib.c | 191 +- .../openssl/crypto/encode_decode/encoder_local.h | 11 +- crypto/openssl/crypto/encode_decode/encoder_meth.c | 93 +- crypto/openssl/crypto/encode_decode/encoder_pkey.c | 98 +- crypto/openssl/crypto/engine/eng_ctrl.c | 15 +- crypto/openssl/crypto/engine/eng_dyn.c | 12 +- crypto/openssl/crypto/engine/eng_init.c | 18 +- crypto/openssl/crypto/engine/eng_lib.c | 26 +- crypto/openssl/crypto/engine/eng_list.c | 78 +- crypto/openssl/crypto/engine/eng_local.h | 14 +- crypto/openssl/crypto/engine/eng_openssl.c | 10 +- crypto/openssl/crypto/engine/eng_rdrand.c | 18 +- crypto/openssl/crypto/engine/tb_asnmth.c | 19 +- crypto/openssl/crypto/err/build.info | 2 +- crypto/openssl/crypto/err/err.c | 83 +- crypto/openssl/crypto/err/err_all.c | 4 +- crypto/openssl/crypto/err/err_local.h | 15 +- crypto/openssl/crypto/err/err_mark.c | 101 + crypto/openssl/crypto/err/err_save.c | 156 + crypto/openssl/crypto/err/openssl.ec | 2 +- crypto/openssl/crypto/err/openssl.txt | 184 +- crypto/openssl/crypto/ess/ess_lib.c | 119 +- crypto/openssl/crypto/evp/asymcipher.c | 93 +- crypto/openssl/crypto/evp/bio_b64.c | 195 +- crypto/openssl/crypto/evp/bio_enc.c | 12 +- crypto/openssl/crypto/evp/bio_ok.c | 15 +- crypto/openssl/crypto/evp/build.info | 5 +- crypto/openssl/crypto/evp/c_allc.c | 5 +- crypto/openssl/crypto/evp/cmeth_lib.c | 6 +- crypto/openssl/crypto/evp/ctrl_params_translate.c | 529 +- crypto/openssl/crypto/evp/dh_support.c | 7 +- crypto/openssl/crypto/evp/digest.c | 319 +- crypto/openssl/crypto/evp/e_aes.c | 367 +- crypto/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c | 25 +- crypto/openssl/crypto/evp/e_aria.c | 54 +- crypto/openssl/crypto/evp/e_camellia.c | 16 +- crypto/openssl/crypto/evp/e_chacha20_poly1305.c | 33 +- crypto/openssl/crypto/evp/e_des.c | 3 +- crypto/openssl/crypto/evp/e_des3.c | 10 +- crypto/openssl/crypto/evp/e_idea.c | 6 +- crypto/openssl/crypto/evp/e_seed.c | 2 +- crypto/openssl/crypto/evp/e_sm4.c | 219 +- crypto/openssl/crypto/evp/encode.c | 66 +- crypto/openssl/crypto/evp/evp_enc.c | 544 +- crypto/openssl/crypto/evp/evp_err.c | 165 +- crypto/openssl/crypto/evp/evp_fetch.c | 129 +- crypto/openssl/crypto/evp/evp_key.c | 4 +- crypto/openssl/crypto/evp/evp_lib.c | 417 +- crypto/openssl/crypto/evp/evp_local.h | 64 +- crypto/openssl/crypto/evp/evp_pbe.c | 24 +- crypto/openssl/crypto/evp/evp_pkey.c | 29 +- crypto/openssl/crypto/evp/evp_rand.c | 119 +- crypto/openssl/crypto/evp/exchange.c | 73 +- crypto/openssl/crypto/evp/kdf_lib.c | 10 +- crypto/openssl/crypto/evp/kdf_meth.c | 32 +- crypto/openssl/crypto/evp/kem.c | 135 +- crypto/openssl/crypto/evp/keymgmt_lib.c | 10 +- crypto/openssl/crypto/evp/keymgmt_meth.c | 161 +- crypto/openssl/crypto/evp/legacy_blake2.c | 30 +- crypto/openssl/crypto/evp/legacy_sha.c | 7 +- crypto/openssl/crypto/evp/m_sigver.c | 237 +- crypto/openssl/crypto/evp/mac_lib.c | 40 +- crypto/openssl/crypto/evp/mac_meth.c | 60 +- crypto/openssl/crypto/evp/p5_crpt.c | 4 +- crypto/openssl/crypto/evp/p_dec.c | 2 +- crypto/openssl/crypto/evp/p_enc.c | 2 +- crypto/openssl/crypto/evp/p_legacy.c | 19 +- crypto/openssl/crypto/evp/p_lib.c | 179 +- crypto/openssl/crypto/evp/p_open.c | 8 +- crypto/openssl/crypto/evp/p_seal.c | 3 +- crypto/openssl/crypto/evp/p_sign.c | 6 +- crypto/openssl/crypto/evp/p_verify.c | 6 +- crypto/openssl/crypto/evp/pmeth_gn.c | 8 +- crypto/openssl/crypto/evp/pmeth_lib.c | 167 +- crypto/openssl/crypto/evp/s_lib.c | 314 + crypto/openssl/crypto/evp/signature.c | 858 +- crypto/openssl/crypto/evp/skeymgmt_meth.c | 242 + crypto/openssl/crypto/ex_data.c | 46 +- crypto/openssl/crypto/ffc/ffc_backend.c | 12 +- crypto/openssl/crypto/ffc/ffc_key_generate.c | 2 +- crypto/openssl/crypto/ffc/ffc_params.c | 19 +- crypto/openssl/crypto/ffc/ffc_params_generate.c | 25 +- crypto/openssl/crypto/getenv.c | 4 +- crypto/openssl/crypto/hashtable/build.info | 6 + crypto/openssl/crypto/hashtable/hashfunc.c | 23 + crypto/openssl/crypto/hashtable/hashtable.c | 749 + crypto/openssl/crypto/hmac/build.info | 21 +- crypto/openssl/crypto/hmac/hmac.c | 33 +- crypto/openssl/crypto/hmac/hmac_local.h | 45 +- crypto/openssl/crypto/hmac/hmac_s390x.c | 340 + crypto/openssl/crypto/hpke/build.info | 5 + crypto/openssl/crypto/hpke/hpke.c | 1463 ++ crypto/openssl/crypto/hpke/hpke_util.c | 528 + crypto/openssl/crypto/http/build.info | 6 +- crypto/openssl/crypto/http/http_client.c | 270 +- crypto/openssl/crypto/http/http_err.c | 17 +- crypto/openssl/crypto/http/http_lib.c | 24 +- crypto/openssl/crypto/idea/idea_local.h | 39 +- crypto/openssl/crypto/indicator_core.c | 55 + crypto/openssl/crypto/info.c | 75 +- crypto/openssl/crypto/init.c | 52 +- crypto/openssl/crypto/initthread.c | 51 +- crypto/openssl/crypto/lhash/lh_stats.c | 12 +- crypto/openssl/crypto/lhash/lhash.c | 99 +- crypto/openssl/crypto/lhash/lhash_local.h | 6 +- crypto/openssl/crypto/loongarch64cpuid.pl | 112 + crypto/openssl/crypto/loongarch_arch.h | 19 + crypto/openssl/crypto/loongarchcap.c | 17 + crypto/openssl/crypto/md5/asm/md5-aarch64.pl | 715 + crypto/openssl/crypto/md5/asm/md5-loongarch64.pl | 298 + crypto/openssl/crypto/md5/asm/md5-x86_64.pl | 7 +- crypto/openssl/crypto/md5/build.info | 7 + crypto/openssl/crypto/md5/md5_local.h | 6 +- crypto/openssl/crypto/mem.c | 108 +- crypto/openssl/crypto/mem_sec.c | 40 +- crypto/openssl/crypto/ml_dsa/build.info | 10 + crypto/openssl/crypto/ml_dsa/ml_dsa_encoders.c | 1019 ++ crypto/openssl/crypto/ml_dsa/ml_dsa_hash.h | 41 + crypto/openssl/crypto/ml_dsa/ml_dsa_key.c | 547 + crypto/openssl/crypto/ml_dsa/ml_dsa_key.h | 56 + crypto/openssl/crypto/ml_dsa/ml_dsa_key_compress.c | 175 + crypto/openssl/crypto/ml_dsa/ml_dsa_local.h | 161 + crypto/openssl/crypto/ml_dsa/ml_dsa_matrix.c | 39 + crypto/openssl/crypto/ml_dsa/ml_dsa_matrix.h | 44 + crypto/openssl/crypto/ml_dsa/ml_dsa_ntt.c | 198 + crypto/openssl/crypto/ml_dsa/ml_dsa_params.c | 108 + crypto/openssl/crypto/ml_dsa/ml_dsa_poly.h | 184 + crypto/openssl/crypto/ml_dsa/ml_dsa_sample.c | 358 + crypto/openssl/crypto/ml_dsa/ml_dsa_sign.c | 433 + .../asn1_mac.h => crypto/ml_dsa/ml_dsa_sign.h} | 9 +- crypto/openssl/crypto/ml_dsa/ml_dsa_vector.h | 257 + crypto/openssl/crypto/ml_kem/build.info | 6 + crypto/openssl/crypto/ml_kem/ml_kem.c | 2050 +++ .../crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl | 7378 +++++++++ .../openssl/crypto/modes/asm/aes-gcm-armv8_64.pl | 63 +- crypto/openssl/crypto/modes/asm/aes-gcm-avx512.pl | 4978 ++++++ crypto/openssl/crypto/modes/asm/aes-gcm-ppc.pl | 1438 ++ .../modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl | 975 ++ .../openssl/crypto/modes/asm/aesni-gcm-x86_64.pl | 4 +- .../crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl | 378 + .../openssl/crypto/modes/asm/ghash-riscv64-zvkg.pl | 169 + crypto/openssl/crypto/modes/asm/ghash-riscv64.pl | 428 + crypto/openssl/crypto/modes/asm/ghash-s390x.pl | 32 +- crypto/openssl/crypto/modes/asm/ghash-x86_64.pl | 6 +- crypto/openssl/crypto/modes/asm/ghashv8-armx.pl | 108 +- crypto/openssl/crypto/modes/build.info | 20 +- crypto/openssl/crypto/modes/gcm128.c | 667 +- crypto/openssl/crypto/modes/ocb128.c | 8 +- crypto/openssl/crypto/modes/siv128.c | 6 +- crypto/openssl/crypto/modes/xts128gb.c | 199 + crypto/openssl/crypto/o_dir.c | 4 +- crypto/openssl/crypto/o_fopen.c | 18 +- crypto/openssl/crypto/o_init.c | 4 +- crypto/openssl/crypto/o_str.c | 108 +- crypto/openssl/crypto/objects/o_names.c | 5 +- crypto/openssl/crypto/objects/obj_dat.c | 447 +- crypto/openssl/crypto/objects/obj_dat.h | 1206 +- crypto/openssl/crypto/objects/obj_dat.pl | 4 +- crypto/openssl/crypto/objects/obj_lib.c | 1 - crypto/openssl/crypto/objects/obj_local.h | 4 +- crypto/openssl/crypto/objects/obj_mac.num | 241 +- crypto/openssl/crypto/objects/obj_xref.c | 171 +- crypto/openssl/crypto/objects/obj_xref.h | 27 +- crypto/openssl/crypto/objects/obj_xref.txt | 19 + crypto/openssl/crypto/objects/objects.txt | 338 +- crypto/openssl/crypto/ocsp/ocsp_ext.c | 5 +- crypto/openssl/crypto/ocsp/ocsp_prn.c | 6 +- crypto/openssl/crypto/ocsp/ocsp_vfy.c | 8 +- crypto/openssl/crypto/ocsp/v3_ocsp.c | 2 +- crypto/openssl/crypto/packet.c | 100 +- crypto/openssl/crypto/param_build.c | 74 +- crypto/openssl/crypto/param_build_set.c | 6 +- crypto/openssl/crypto/params.c | 600 +- crypto/openssl/crypto/params_dup.c | 31 +- crypto/openssl/crypto/params_from_text.c | 119 +- crypto/openssl/crypto/params_idx.c.in | 21 + crypto/openssl/crypto/passphrase.c | 19 +- crypto/openssl/crypto/pem/pem_err.c | 4 +- crypto/openssl/crypto/pem/pem_info.c | 2 +- crypto/openssl/crypto/pem/pem_lib.c | 192 +- crypto/openssl/crypto/pem/pem_pkey.c | 4 +- crypto/openssl/crypto/pem/pem_sign.c | 4 +- crypto/openssl/crypto/pem/pvkfmt.c | 168 +- crypto/openssl/crypto/perlasm/arm-xlate.pl | 62 +- crypto/openssl/crypto/perlasm/ppc-xlate.pl | 19 +- crypto/openssl/crypto/perlasm/riscv.pm | 1053 ++ crypto/openssl/crypto/perlasm/sparcv9_modes.pl | 10 +- crypto/openssl/crypto/perlasm/x86_64-xlate.pl | 228 +- crypto/openssl/crypto/perlasm/x86asm.pl | 2 +- crypto/openssl/crypto/perlasm/x86gas.pl | 3 +- crypto/openssl/crypto/perlasm/x86masm.pl | 3 +- crypto/openssl/crypto/perlasm/x86nasm.pl | 3 +- crypto/openssl/crypto/pkcs12/p12_add.c | 26 +- crypto/openssl/crypto/pkcs12/p12_asn.c | 19 +- crypto/openssl/crypto/pkcs12/p12_attr.c | 18 +- crypto/openssl/crypto/pkcs12/p12_crt.c | 80 +- crypto/openssl/crypto/pkcs12/p12_decr.c | 20 +- crypto/openssl/crypto/pkcs12/p12_init.c | 14 +- crypto/openssl/crypto/pkcs12/p12_key.c | 8 +- crypto/openssl/crypto/pkcs12/p12_kiss.c | 73 +- crypto/openssl/crypto/pkcs12/p12_local.h | 4 +- crypto/openssl/crypto/pkcs12/p12_mutl.c | 317 +- crypto/openssl/crypto/pkcs12/p12_npas.c | 144 +- crypto/openssl/crypto/pkcs12/p12_p8e.c | 1 - crypto/openssl/crypto/pkcs12/p12_sbag.c | 55 +- crypto/openssl/crypto/pkcs12/p12_utl.c | 46 +- crypto/openssl/crypto/pkcs12/pk12err.c | 5 +- crypto/openssl/crypto/pkcs7/bio_pk7.c | 5 - crypto/openssl/crypto/pkcs7/pk7_asn1.c | 3 +- crypto/openssl/crypto/pkcs7/pk7_attr.c | 17 +- crypto/openssl/crypto/pkcs7/pk7_doit.c | 176 +- crypto/openssl/crypto/pkcs7/pk7_lib.c | 53 +- crypto/openssl/crypto/pkcs7/pk7_local.h | 3 +- crypto/openssl/crypto/pkcs7/pk7_smime.c | 114 +- .../openssl/crypto/poly1305/asm/poly1305-armv4.pl | 5 +- .../openssl/crypto/poly1305/asm/poly1305-armv8.pl | 22 +- .../openssl/crypto/poly1305/asm/poly1305-x86_64.pl | 10 +- crypto/openssl/crypto/poly1305/poly1305.c | 4 +- crypto/openssl/crypto/poly1305/poly1305_ieee754.c | 16 +- crypto/openssl/crypto/ppccap.c | 18 +- crypto/openssl/crypto/ppccpuid.pl | 13 +- crypto/openssl/crypto/property/defn_cache.c | 21 +- crypto/openssl/crypto/property/property.c | 187 +- crypto/openssl/crypto/property/property_parse.c | 7 +- crypto/openssl/crypto/property/property_string.c | 145 +- crypto/openssl/crypto/provider.c | 29 +- crypto/openssl/crypto/provider_child.c | 34 +- crypto/openssl/crypto/provider_conf.c | 228 +- crypto/openssl/crypto/provider_core.c | 777 +- crypto/openssl/crypto/punycode.c | 88 +- crypto/openssl/crypto/quic_vlint.c | 81 + crypto/openssl/crypto/rand/build.info | 8 +- crypto/openssl/crypto/rand/prov_seed.c | 72 +- crypto/openssl/crypto/rand/rand_deprecated.c | 4 +- crypto/openssl/crypto/rand/rand_egd.c | 6 +- crypto/openssl/crypto/rand/rand_err.c | 74 +- crypto/openssl/crypto/rand/rand_lib.c | 602 +- crypto/openssl/crypto/rand/rand_pool.c | 61 +- crypto/openssl/crypto/rand/rand_uniform.c | 109 + crypto/openssl/crypto/rand/randfile.c | 6 +- crypto/openssl/crypto/rc2/rc2_local.h | 96 +- crypto/openssl/crypto/rc4/asm/rc4-x86_64.pl | 4 +- crypto/openssl/crypto/rc5/rc5_local.h | 91 +- crypto/openssl/crypto/rcu_internal.h | 22 + crypto/openssl/crypto/riscv32cpuid.pl | 105 + crypto/openssl/crypto/riscv64cpuid.pl | 105 + crypto/openssl/crypto/riscvcap.c | 148 + crypto/openssl/crypto/rsa/rsa_ameth.c | 45 +- crypto/openssl/crypto/rsa/rsa_backend.c | 170 +- crypto/openssl/crypto/rsa/rsa_chk.c | 2 +- crypto/openssl/crypto/rsa/rsa_crpt.c | 4 +- crypto/openssl/crypto/rsa/rsa_gen.c | 409 +- crypto/openssl/crypto/rsa/rsa_lib.c | 119 +- crypto/openssl/crypto/rsa/rsa_local.h | 6 +- crypto/openssl/crypto/rsa/rsa_meth.c | 6 +- crypto/openssl/crypto/rsa/rsa_mp.c | 8 +- crypto/openssl/crypto/rsa/rsa_oaep.c | 38 +- crypto/openssl/crypto/rsa/rsa_ossl.c | 269 +- crypto/openssl/crypto/rsa/rsa_pk1.c | 258 +- crypto/openssl/crypto/rsa/rsa_pmeth.c | 64 +- crypto/openssl/crypto/rsa/rsa_pss.c | 74 +- crypto/openssl/crypto/rsa/rsa_saos.c | 8 +- crypto/openssl/crypto/rsa/rsa_schemes.c | 4 +- crypto/openssl/crypto/rsa/rsa_sign.c | 26 +- crypto/openssl/crypto/rsa/rsa_sp800_56b_check.c | 5 + crypto/openssl/crypto/rsa/rsa_sp800_56b_gen.c | 83 +- crypto/openssl/crypto/rsa/rsa_x931.c | 35 +- crypto/openssl/crypto/rsa/rsa_x931g.c | 9 +- crypto/openssl/crypto/s390x_arch.h | 41 +- crypto/openssl/crypto/s390xcap.c | 68 +- crypto/openssl/crypto/s390xcpuid.pl | 6 +- crypto/openssl/crypto/self_test_core.c | 22 +- crypto/openssl/crypto/sha/asm/keccak1600-armv4.pl | 15 +- crypto/openssl/crypto/sha/asm/keccak1600-armv8.pl | 16 +- crypto/openssl/crypto/sha/asm/keccak1600-ppc64.pl | 72 +- crypto/openssl/crypto/sha/asm/keccak1600-s390x.pl | 4 +- crypto/openssl/crypto/sha/asm/keccak1600-x86_64.pl | 21 +- crypto/openssl/crypto/sha/asm/sha1-armv4-large.pl | 5 +- crypto/openssl/crypto/sha/asm/sha1-armv8.pl | 8 +- crypto/openssl/crypto/sha/asm/sha1-mb-x86_64.pl | 5 +- crypto/openssl/crypto/sha/asm/sha1-x86_64.pl | 4 +- crypto/openssl/crypto/sha/asm/sha256-armv4.pl | 5 +- crypto/openssl/crypto/sha/asm/sha256-mb-x86_64.pl | 4 +- .../asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl | 316 + crypto/openssl/crypto/sha/asm/sha512-armv4.pl | 5 +- crypto/openssl/crypto/sha/asm/sha512-armv8.pl | 18 +- .../crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl | 264 + crypto/openssl/crypto/sha/asm/sha512-x86_64.pl | 6 +- crypto/openssl/crypto/sha/build.info | 11 +- crypto/openssl/crypto/sha/keccak1600.c | 41 +- crypto/openssl/crypto/sha/sha1dgst.c | 4 +- crypto/openssl/crypto/sha/sha256.c | 107 +- crypto/openssl/crypto/sha/sha3.c | 114 +- crypto/openssl/crypto/sha/sha512.c | 141 +- crypto/openssl/crypto/sha/sha_riscv.c | 43 + crypto/openssl/crypto/siphash/siphash.c | 12 +- crypto/openssl/crypto/sleep.c | 116 + crypto/openssl/crypto/slh_dsa/build.info | 9 + crypto/openssl/crypto/slh_dsa/slh_adrs.c | 184 + crypto/openssl/crypto/slh_dsa/slh_adrs.h | 71 + crypto/openssl/crypto/slh_dsa/slh_dsa.c | 361 + crypto/openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c | 113 + crypto/openssl/crypto/slh_dsa/slh_dsa_key.c | 500 + crypto/openssl/crypto/slh_dsa/slh_dsa_key.h | 50 + crypto/openssl/crypto/slh_dsa/slh_dsa_local.h | 95 + crypto/openssl/crypto/slh_dsa/slh_fors.c | 322 + crypto/openssl/crypto/slh_dsa/slh_hash.c | 287 + crypto/openssl/crypto/slh_dsa/slh_hash.h | 66 + crypto/openssl/crypto/slh_dsa/slh_hypertree.c | 135 + crypto/openssl/crypto/slh_dsa/slh_params.c | 127 + crypto/openssl/crypto/slh_dsa/slh_params.h | 39 + crypto/openssl/crypto/slh_dsa/slh_wots.c | 315 + crypto/openssl/crypto/slh_dsa/slh_xmss.c | 181 + crypto/openssl/crypto/sm2/sm2_crypt.c | 51 +- crypto/openssl/crypto/sm2/sm2_key.c | 2 +- crypto/openssl/crypto/sm2/sm2_sign.c | 48 +- crypto/openssl/crypto/sm3/asm/sm3-armv8.pl | 303 + crypto/openssl/crypto/sm3/asm/sm3-riscv64-zvksh.pl | 228 + crypto/openssl/crypto/sm3/build.info | 26 +- crypto/openssl/crypto/sm3/sm3_local.h | 47 +- crypto/openssl/crypto/sm3/sm3_riscv.c | 29 + crypto/openssl/crypto/sm4/asm/sm4-armv8.pl | 646 + .../openssl/crypto/sm4/asm/sm4-riscv64-zvksed.pl | 298 + crypto/openssl/crypto/sm4/asm/vpsm4-armv8.pl | 1587 ++ crypto/openssl/crypto/sm4/asm/vpsm4_ex-armv8.pl | 1558 ++ crypto/openssl/crypto/sm4/build.info | 40 +- crypto/openssl/crypto/sm4/sm4.c | 189 +- crypto/openssl/crypto/sparse_array.c | 4 +- crypto/openssl/crypto/srp/srp_vfy.c | 16 +- crypto/openssl/{ssl => crypto}/ssl_err.c | 510 +- crypto/openssl/{ssl => crypto}/sslerr.h | 2 +- crypto/openssl/crypto/stack/stack.c | 89 +- crypto/openssl/crypto/store/store_lib.c | 180 +- crypto/openssl/crypto/store/store_local.h | 10 +- crypto/openssl/crypto/store/store_meth.c | 86 +- crypto/openssl/crypto/store/store_register.c | 13 +- crypto/openssl/crypto/store/store_result.c | 41 +- crypto/openssl/crypto/store/store_strings.c | 6 +- crypto/openssl/crypto/thread/api.c | 73 + crypto/openssl/crypto/thread/arch.c | 132 + crypto/openssl/crypto/thread/arch/thread_none.c | 82 + crypto/openssl/crypto/thread/arch/thread_posix.c | 233 + crypto/openssl/crypto/thread/arch/thread_win.c | 599 + crypto/openssl/crypto/thread/build.info | 21 + crypto/openssl/crypto/thread/internal.c | 157 + crypto/openssl/crypto/threads_lib.c | 4 +- crypto/openssl/crypto/threads_none.c | 149 +- crypto/openssl/crypto/threads_pthread.c | 653 +- crypto/openssl/crypto/threads_win.c | 498 +- crypto/openssl/crypto/time.c | 49 + crypto/openssl/crypto/trace.c | 34 +- crypto/openssl/crypto/ts/ts_conf.c | 20 +- crypto/openssl/crypto/ts/ts_local.h | 2 +- crypto/openssl/crypto/ts/ts_req_utils.c | 8 +- crypto/openssl/crypto/ts/ts_rsp_sign.c | 133 +- crypto/openssl/crypto/ts/ts_rsp_utils.c | 22 +- crypto/openssl/crypto/ts/ts_rsp_verify.c | 20 +- crypto/openssl/crypto/ts/ts_verify_ctx.c | 44 +- crypto/openssl/crypto/txt_db/txt_db.c | 3 +- crypto/openssl/crypto/ui/ui_lib.c | 107 +- crypto/openssl/crypto/ui/ui_openssl.c | 2 +- crypto/openssl/crypto/uid.c | 4 +- crypto/openssl/crypto/whrlpool/asm/wp-x86_64.pl | 3 +- crypto/openssl/crypto/whrlpool/wp_dgst.c | 4 +- crypto/openssl/crypto/x509/build.info | 6 +- crypto/openssl/crypto/x509/by_dir.c | 51 +- crypto/openssl/crypto/x509/by_file.c | 119 +- crypto/openssl/crypto/x509/by_store.c | 137 +- crypto/openssl/crypto/x509/ext_dat.h | 26 +- crypto/openssl/crypto/x509/pcy_cache.c | 16 +- crypto/openssl/crypto/x509/pcy_data.c | 3 +- crypto/openssl/crypto/x509/pcy_node.c | 14 +- crypto/openssl/crypto/x509/pcy_tree.c | 14 +- crypto/openssl/crypto/x509/standard_exts.h | 28 +- crypto/openssl/crypto/x509/t_acert.c | 285 + crypto/openssl/crypto/x509/t_x509.c | 98 +- crypto/openssl/crypto/x509/v3_aaa.c | 129 + crypto/openssl/crypto/x509/v3_ac_tgt.c | 243 + crypto/openssl/crypto/x509/v3_addr.c | 94 +- crypto/openssl/crypto/x509/v3_admis.c | 4 +- crypto/openssl/crypto/x509/v3_akid.c | 65 +- crypto/openssl/crypto/x509/v3_asid.c | 24 +- crypto/openssl/crypto/x509/v3_attrdesc.c | 173 + crypto/openssl/crypto/x509/v3_attrmap.c | 117 + crypto/openssl/crypto/x509/v3_audit_id.c | 20 + crypto/openssl/crypto/x509/v3_authattid.c | 80 + crypto/openssl/crypto/x509/v3_battcons.c | 86 + crypto/openssl/crypto/x509/v3_bcons.c | 2 +- crypto/openssl/crypto/x509/v3_bitst.c | 4 +- crypto/openssl/crypto/x509/v3_conf.c | 58 +- crypto/openssl/crypto/x509/v3_cpols.c | 122 +- crypto/openssl/crypto/x509/v3_crld.c | 232 +- crypto/openssl/crypto/x509/v3_extku.c | 28 +- crypto/openssl/crypto/x509/v3_genn.c | 31 +- crypto/openssl/crypto/x509/v3_group_ac.c | 53 + crypto/openssl/crypto/x509/v3_ia5.c | 13 +- crypto/openssl/crypto/x509/v3_ind_iss.c | 53 + crypto/openssl/crypto/x509/v3_info.c | 13 +- crypto/openssl/crypto/x509/v3_iobo.c | 32 + crypto/openssl/crypto/x509/v3_ist.c | 15 +- crypto/openssl/crypto/x509/v3_lib.c | 21 +- crypto/openssl/crypto/x509/v3_ncons.c | 145 +- crypto/openssl/crypto/x509/v3_no_ass.c | 53 + crypto/openssl/crypto/x509/v3_no_rev_avail.c | 53 + crypto/openssl/crypto/x509/v3_pci.c | 27 +- crypto/openssl/crypto/x509/v3_pcia.c | 14 +- crypto/openssl/crypto/x509/v3_pcons.c | 2 +- crypto/openssl/crypto/x509/v3_pmaps.c | 4 +- crypto/openssl/crypto/x509/v3_purp.c | 304 +- crypto/openssl/crypto/x509/v3_rolespec.c | 95 + crypto/openssl/crypto/x509/v3_san.c | 41 +- crypto/openssl/crypto/x509/v3_sda.c | 90 + crypto/openssl/crypto/x509/v3_single_use.c | 53 + crypto/openssl/crypto/x509/v3_skid.c | 2 +- crypto/openssl/crypto/x509/v3_soa_id.c | 53 + crypto/openssl/crypto/x509/v3_sxnet.c | 27 +- crypto/openssl/crypto/x509/v3_timespec.c | 598 + crypto/openssl/crypto/x509/v3_tlsf.c | 6 +- crypto/openssl/crypto/x509/v3_usernotice.c | 94 + crypto/openssl/crypto/x509/v3_utf8.c | 12 +- crypto/openssl/crypto/x509/v3_utl.c | 131 +- crypto/openssl/crypto/x509/v3err.c | 105 +- crypto/openssl/crypto/x509/x509_acert.c | 328 + crypto/openssl/crypto/x509/x509_acert.h | 22 + crypto/openssl/crypto/x509/x509_att.c | 131 +- crypto/openssl/crypto/x509/x509_cmp.c | 38 +- crypto/openssl/crypto/x509/x509_d2.c | 7 +- crypto/openssl/crypto/x509/x509_def.c | 75 +- crypto/openssl/crypto/x509/x509_err.c | 6 +- crypto/openssl/crypto/x509/x509_local.h | 4 +- crypto/openssl/crypto/x509/x509_lu.c | 491 +- crypto/openssl/crypto/x509/x509_meth.c | 4 +- crypto/openssl/crypto/x509/x509_obj.c | 19 +- crypto/openssl/crypto/x509/x509_r2x.c | 2 +- crypto/openssl/crypto/x509/x509_req.c | 100 +- crypto/openssl/crypto/x509/x509_set.c | 98 +- crypto/openssl/crypto/x509/x509_trust.c | 25 +- crypto/openssl/crypto/x509/x509_txt.c | 2 + crypto/openssl/crypto/x509/x509_v3.c | 60 +- crypto/openssl/crypto/x509/x509_vfy.c | 551 +- crypto/openssl/crypto/x509/x509_vpm.c | 41 +- crypto/openssl/crypto/x509/x509aset.c | 177 + crypto/openssl/crypto/x509/x509cset.c | 42 +- crypto/openssl/crypto/x509/x509name.c | 2 +- crypto/openssl/crypto/x509/x509rset.c | 6 +- crypto/openssl/crypto/x509/x509spki.c | 5 +- crypto/openssl/crypto/x509/x_all.c | 114 +- crypto/openssl/crypto/x509/x_attrib.c | 183 +- crypto/openssl/crypto/x509/x_crl.c | 30 +- crypto/openssl/crypto/x509/x_exten.c | 4 +- crypto/openssl/crypto/x509/x_ietfatt.c | 241 + crypto/openssl/crypto/x509/x_name.c | 50 +- crypto/openssl/crypto/x509/x_pubkey.c | 89 +- crypto/openssl/crypto/x509/x_req.c | 4 +- crypto/openssl/crypto/x509/x_x509.c | 6 +- crypto/openssl/crypto/x86_64cpuid.pl | 36 +- crypto/openssl/crypto/x86cpuid.pl | 26 +- crypto/openssl/demos/Makefile | 28 + crypto/openssl/demos/README.txt | 49 +- crypto/openssl/demos/bio/Makefile | 38 +- crypto/openssl/demos/bio/build.info | 29 + crypto/openssl/demos/bio/client-arg.c | 6 +- crypto/openssl/demos/bio/client-conf.c | 7 +- crypto/openssl/demos/bio/saccept.c | 10 +- crypto/openssl/demos/bio/sconnect.c | 19 +- crypto/openssl/demos/build.info | 28 + crypto/openssl/demos/certs/apps/mkacerts.sh | 32 +- crypto/openssl/demos/certs/apps/mkxcerts.sh | 22 +- crypto/openssl/demos/certs/mkcerts.sh | 57 +- crypto/openssl/demos/certs/ocspquery.sh | 17 +- crypto/openssl/demos/certs/ocsprun.sh | 11 +- crypto/openssl/demos/cipher/Makefile | 36 +- crypto/openssl/demos/cipher/aesccm.c | 16 +- crypto/openssl/demos/cipher/aesgcm.c | 18 +- crypto/openssl/demos/cipher/aeskeywrap.c | 17 +- crypto/openssl/demos/cipher/ariacbc.c | 21 +- crypto/openssl/demos/cipher/build.info | 17 + crypto/openssl/demos/cms/Makefile | 45 + crypto/openssl/demos/cms/build.info | 45 + crypto/openssl/demos/cms/cms_comp.c | 8 +- crypto/openssl/demos/cms/cms_ddec.c | 11 +- crypto/openssl/demos/cms/cms_dec.c | 14 +- crypto/openssl/demos/cms/cms_denc.c | 16 +- crypto/openssl/demos/cms/cms_enc.c | 16 +- crypto/openssl/demos/cms/cms_sign.c | 19 +- crypto/openssl/demos/cms/cms_sign2.c | 16 +- crypto/openssl/demos/cms/cms_uncomp.c | 10 +- crypto/openssl/demos/cms/cms_ver.c | 57 +- crypto/openssl/demos/digest/BIO_f_md.c | 42 +- crypto/openssl/demos/digest/EVP_MD_demo.c | 33 +- crypto/openssl/demos/digest/EVP_MD_stdin.c | 30 +- crypto/openssl/demos/digest/EVP_MD_xof.c | 12 +- crypto/openssl/demos/digest/Makefile | 32 +- crypto/openssl/demos/digest/build.info | 20 + crypto/openssl/demos/encode/Makefile | 28 +- crypto/openssl/demos/encode/build.info | 17 + crypto/openssl/demos/encode/ec_encode.c | 20 +- crypto/openssl/demos/encode/rsa_encode.c | 20 +- crypto/openssl/demos/encrypt/Makefile | 29 + crypto/openssl/demos/encrypt/build.info | 11 + crypto/openssl/demos/encrypt/rsa_encrypt.c | 243 + crypto/openssl/demos/encrypt/rsa_encrypt.h | 141 + crypto/openssl/demos/guide/Makefile | 46 + crypto/openssl/demos/guide/README.md | 90 + crypto/openssl/demos/guide/build.info | 43 + crypto/openssl/demos/guide/quic-client-block.c | 342 + crypto/openssl/demos/guide/quic-client-non-block.c | 432 + crypto/openssl/demos/guide/quic-multi-stream.c | 444 + crypto/openssl/demos/guide/quic-server-block.c | 310 + crypto/openssl/demos/guide/quic-server-non-block.c | 495 + crypto/openssl/demos/guide/rootcert.pem | 18 + crypto/openssl/demos/guide/rootkey.pem | 28 + crypto/openssl/demos/guide/servercert.pem | 19 + crypto/openssl/demos/guide/serverkey.pem | 28 + crypto/openssl/demos/guide/tls-client-block.c | 296 + crypto/openssl/demos/guide/tls-client-non-block.c | 376 + crypto/openssl/demos/guide/tls-server-block.c | 284 + crypto/openssl/demos/http3/Makefile | 28 + crypto/openssl/demos/http3/README.md | 39 + crypto/openssl/demos/http3/build.info | 20 + crypto/openssl/demos/http3/gen_nghttp3.pl | 37 + .../openssl/demos/http3/ossl-nghttp3-demo-server.c | 1385 ++ crypto/openssl/demos/http3/ossl-nghttp3-demo.c | 150 + crypto/openssl/demos/http3/ossl-nghttp3.c | 743 + crypto/openssl/demos/http3/ossl-nghttp3.h | 111 + crypto/openssl/demos/kdf/Makefile | 31 +- crypto/openssl/demos/kdf/argon2.c | 156 + crypto/openssl/demos/kdf/build.info | 26 + crypto/openssl/demos/kdf/hkdf.c | 10 +- crypto/openssl/demos/kdf/pbkdf2.c | 12 +- crypto/openssl/demos/kdf/scrypt.c | 10 +- crypto/openssl/demos/keyexch/Makefile | 30 + crypto/openssl/demos/keyexch/build.info | 11 + crypto/openssl/demos/keyexch/ecdh.c | 221 + *** 8016 LINES SKIPPED *** From nobody Fri Aug 8 19:22:07 2025 X-Original-To: dev-commits-src-main@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 4bzDS40YnQz64R8V; Fri, 08 Aug 2025 19:22: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzDS34qRLz3JwC; Fri, 08 Aug 2025 19:22:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754680931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bCYvzAw6i2LpQFJKWpQju4IxEAY6Kc6s47gke6GdzgI=; b=w8Ko0qgTw9xRnJena+4KN/FON1CntBogTlfydsxBYCEyZHR25UP6ByIZk7DvXgZWK1fxgP 9HfqObCcOo8Ja43x8EEPOHLd+Sh9rbTd70gP5ZecfXCl+JLYcVbJihXkpJslY2N4UnPUlG 551G2z03MKFinGq7ipAneplIKS3AvHA7OQvsIAh0NQ990QM9I1VMLVN+tqFlZt8O0wRcU7 mvWuF8yqU2r9vowdHSQh1tKQcjraF5N+pk3kk+o72pe4OakRG5MRClOw5R/2NY2vaWiset UkvoLfmpuH37kr8ZsC+gxVfHecYDZvr/zmJENWVMdP+dnmvkdjYahvPHjUN0rA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754680931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bCYvzAw6i2LpQFJKWpQju4IxEAY6Kc6s47gke6GdzgI=; b=yLTmeEUXiovxNf29uTa1ImuwCKGKV4/8Eph15kBKfWe/qHeED0aLeWja3PSg3yf+7V1YSP JT3HqNzXZnFE+uMm8/1FuZhqsDnzqut9pKAlLjrM8KorpyBKJboWC0ZobXi20uMzgPHBEZ FgR4hwRWRx3TrZOAxCxh0sBSXuQiaq+kjeGf/2LwE9NHLHS9TZdO8vzVCum7FNQM+SrrrI Zo514RM4R5IcnhHcKc4lyjNB7CJ3RI+kOg7X80Phn5objXYlgScA6ia1+FSnFPn5H7LB1F bojvEwfOr93IIb2Xsse9r+B6q3XTn86njNlERRgfY6J2JLHeKYwLZTT3krtGbw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754680931; a=rsa-sha256; cv=none; b=WVotIOV0QeZzrSfQtwKLt8wa7mal/XRiAXqUcF0ZALNAywfyvopo+w/xxHimQmKu8GPV+z x6f8WTe0UZ8E8ZmWdQzJmMkfd1kofXdG2argJOMD/yx5A56Xblf6zb08Kg20FcH+VCtkJS 6jwCSIXUw0wwTno6QrHl+gtCjfX++d93tGeiYwJEws3aEmrojte4J6vlXUQ6D4jAAnm0Ih 4P9QNEcU8C8KkgrtklCWl26fA9dbGhWXxebjDFb+czG1AUwx8uQtQE4rT09VDxr4JYR3vf yyQjMiXovALkGxb/qh9DDJK0HNVtpYAp2GoYEd6uiKl/M2wn1MWb0iryIknCxQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzDS33jhhzpVN; Fri, 08 Aug 2025 19:22:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578JMBHH086524; Fri, 8 Aug 2025 19:22:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578JM7kB086509; Fri, 8 Aug 2025 19:22:07 GMT (envelope-from git) Date: Fri, 8 Aug 2025 19:22:07 GMT Message-Id: <202508081922.578JM7kB086509@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Pierre Pronchery Subject: git: 4757b351ea9d - main - openssl: Import version 3.5.1 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: khorben X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4757b351ea9d59d71d4a38b82506d2d16fcd560d Auto-Submitted: auto-generated The branch main has been updated by khorben: URL: https://cgit.FreeBSD.org/src/commit/?id=4757b351ea9d59d71d4a38b82506d2d16fcd560d commit 4757b351ea9d59d71d4a38b82506d2d16fcd560d Author: Pierre Pronchery AuthorDate: 2025-07-11 21:57:10 +0000 Commit: Pierre Pronchery CommitDate: 2025-08-07 13:54:34 +0000 openssl: Import version 3.5.1 Migrate to OpenSSL 3.5 in advance of FreeBSD 15.0. OpenSSL 3.0 will be EOL after 2026-09-07. Approved by: philip (mentor) Sponsored by: Alpha-Omega Beach Cleaning Project Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D51613 --- ObsoleteFiles.inc | 9 + crypto/openssl/apps/CA.pl | 383 + crypto/openssl/configdata.pm | 37882 +++++++++++++++++++ crypto/openssl/crypto/params_idx.c | 3366 ++ crypto/openssl/include/crypto/bn_conf.h | 20 +- crypto/openssl/include/crypto/dso_conf.h | 1 - crypto/openssl/include/internal/param_names.h | 469 + crypto/openssl/include/openssl/asn1.h | 38 +- crypto/openssl/include/openssl/bio.h | 181 +- crypto/openssl/include/openssl/cmp.h | 144 +- crypto/openssl/include/openssl/cms.h | 38 +- crypto/openssl/include/openssl/comp.h | 98 + crypto/openssl/include/openssl/conf.h | 5 +- crypto/openssl/include/openssl/configuration.h | 80 +- crypto/openssl/include/openssl/core_names.h | 575 + crypto/openssl/include/openssl/crmf.h | 67 +- crypto/openssl/include/openssl/crypto.h | 41 +- crypto/openssl/include/openssl/ct.h | 2 +- crypto/openssl/include/openssl/err.h | 12 +- crypto/openssl/include/openssl/fipskey.h | 7 +- crypto/openssl/include/openssl/lhash.h | 206 +- crypto/openssl/include/openssl/opensslv.h | 14 +- crypto/openssl/include/openssl/pkcs12.h | 18 +- crypto/openssl/include/openssl/pkcs7.h | 23 +- crypto/openssl/include/openssl/ssl.h | 430 +- crypto/openssl/include/openssl/x509.h | 65 +- crypto/openssl/include/openssl/x509_acert.h | 294 + crypto/openssl/include/openssl/x509_vfy.h | 121 +- crypto/openssl/include/openssl/x509v3.h | 550 +- .../openssl/providers/common/der/der_ml_dsa_gen.c | 37 + .../openssl/providers/common/der/der_slh_dsa_gen.c | 100 + .../providers/common/include/prov/der_ml_dsa.h | 40 + .../providers/common/include/prov/der_slh_dsa.h | 103 + crypto/openssl/test/provider_internal_test.cnf | 16 + crypto/openssl/tools/c_rehash | 252 + crypto/openssl/util/shlib_wrap.sh | 114 + crypto/openssl/util/wrap.pl | 133 + secure/lib/libcrypto/Makefile | 217 +- secure/lib/libcrypto/Makefile.asm | 50 +- secure/lib/libcrypto/Makefile.inc | 5 +- secure/lib/libcrypto/Version.map | 544 + secure/lib/libcrypto/man/man3/ADMISSIONS.3 | 120 +- secure/lib/libcrypto/man/man3/ASN1_EXTERN_FUNCS.3 | 192 +- .../libcrypto/man/man3/ASN1_INTEGER_get_int64.3 | 140 +- secure/lib/libcrypto/man/man3/ASN1_INTEGER_new.3 | 107 +- secure/lib/libcrypto/man/man3/ASN1_ITEM_lookup.3 | 106 +- secure/lib/libcrypto/man/man3/ASN1_OBJECT_new.3 | 114 +- .../lib/libcrypto/man/man3/ASN1_STRING_TABLE_add.3 | 120 +- secure/lib/libcrypto/man/man3/ASN1_STRING_length.3 | 124 +- secure/lib/libcrypto/man/man3/ASN1_STRING_new.3 | 108 +- .../lib/libcrypto/man/man3/ASN1_STRING_print_ex.3 | 158 +- secure/lib/libcrypto/man/man3/ASN1_TIME_set.3 | 194 +- secure/lib/libcrypto/man/man3/ASN1_TYPE_get.3 | 160 +- secure/lib/libcrypto/man/man3/ASN1_aux_cb.3 | 304 +- .../lib/libcrypto/man/man3/ASN1_generate_nconf.3 | 210 +- secure/lib/libcrypto/man/man3/ASN1_item_d2i_bio.3 | 171 +- secure/lib/libcrypto/man/man3/ASN1_item_new.3 | 110 +- secure/lib/libcrypto/man/man3/ASN1_item_sign.3 | 130 +- secure/lib/libcrypto/man/man3/ASYNC_WAIT_CTX_new.3 | 183 +- secure/lib/libcrypto/man/man3/ASYNC_start_job.3 | 233 +- secure/lib/libcrypto/man/man3/BF_encrypt.3 | 130 +- secure/lib/libcrypto/man/man3/BIO_ADDR.3 | 175 +- secure/lib/libcrypto/man/man3/BIO_ADDRINFO.3 | 146 +- secure/lib/libcrypto/man/man3/BIO_connect.3 | 144 +- secure/lib/libcrypto/man/man3/BIO_ctrl.3 | 192 +- secure/lib/libcrypto/man/man3/BIO_f_base64.3 | 178 +- secure/lib/libcrypto/man/man3/BIO_f_buffer.3 | 130 +- secure/lib/libcrypto/man/man3/BIO_f_cipher.3 | 128 +- secure/lib/libcrypto/man/man3/BIO_f_md.3 | 142 +- secure/lib/libcrypto/man/man3/BIO_f_null.3 | 110 +- secure/lib/libcrypto/man/man3/BIO_f_prefix.3 | 108 +- secure/lib/libcrypto/man/man3/BIO_f_readbuffer.3 | 120 +- secure/lib/libcrypto/man/man3/BIO_f_ssl.3 | 210 +- secure/lib/libcrypto/man/man3/BIO_find_type.3 | 124 +- secure/lib/libcrypto/man/man3/BIO_get_data.3 | 120 +- .../lib/libcrypto/man/man3/BIO_get_ex_new_index.3 | 114 +- .../libcrypto/man/man3/BIO_get_rpoll_descriptor.3 | 158 + secure/lib/libcrypto/man/man3/BIO_meth_new.3 | 240 +- secure/lib/libcrypto/man/man3/BIO_new.3 | 132 +- secure/lib/libcrypto/man/man3/BIO_new_CMS.3 | 120 +- secure/lib/libcrypto/man/man3/BIO_parse_hostserv.3 | 102 +- secure/lib/libcrypto/man/man3/BIO_printf.3 | 102 +- secure/lib/libcrypto/man/man3/BIO_push.3 | 132 +- secure/lib/libcrypto/man/man3/BIO_read.3 | 148 +- secure/lib/libcrypto/man/man3/BIO_s_accept.3 | 211 +- secure/lib/libcrypto/man/man3/BIO_s_bio.3 | 152 +- secure/lib/libcrypto/man/man3/BIO_s_connect.3 | 192 +- secure/lib/libcrypto/man/man3/BIO_s_core.3 | 128 +- secure/lib/libcrypto/man/man3/BIO_s_datagram.3 | 227 +- secure/lib/libcrypto/man/man3/BIO_s_dgram_pair.3 | 280 + secure/lib/libcrypto/man/man3/BIO_s_fd.3 | 120 +- secure/lib/libcrypto/man/man3/BIO_s_file.3 | 151 +- secure/lib/libcrypto/man/man3/BIO_s_mem.3 | 243 +- secure/lib/libcrypto/man/man3/BIO_s_null.3 | 110 +- secure/lib/libcrypto/man/man3/BIO_s_socket.3 | 108 +- secure/lib/libcrypto/man/man3/BIO_sendmmsg.3 | 272 + secure/lib/libcrypto/man/man3/BIO_set_callback.3 | 187 +- secure/lib/libcrypto/man/man3/BIO_should_retry.3 | 162 +- secure/lib/libcrypto/man/man3/BIO_socket_wait.3 | 98 +- secure/lib/libcrypto/man/man3/BN_BLINDING_new.3 | 158 +- secure/lib/libcrypto/man/man3/BN_CTX_new.3 | 126 +- secure/lib/libcrypto/man/man3/BN_CTX_start.3 | 112 +- secure/lib/libcrypto/man/man3/BN_add.3 | 150 +- secure/lib/libcrypto/man/man3/BN_add_word.3 | 100 +- secure/lib/libcrypto/man/man3/BN_bn2bin.3 | 179 +- secure/lib/libcrypto/man/man3/BN_cmp.3 | 112 +- secure/lib/libcrypto/man/man3/BN_copy.3 | 118 +- secure/lib/libcrypto/man/man3/BN_generate_prime.3 | 179 +- secure/lib/libcrypto/man/man3/BN_mod_exp_mont.3 | 100 +- secure/lib/libcrypto/man/man3/BN_mod_inverse.3 | 111 +- .../lib/libcrypto/man/man3/BN_mod_mul_montgomery.3 | 112 +- .../lib/libcrypto/man/man3/BN_mod_mul_reciprocal.3 | 112 +- secure/lib/libcrypto/man/man3/BN_new.3 | 110 +- secure/lib/libcrypto/man/man3/BN_num_bytes.3 | 112 +- secure/lib/libcrypto/man/man3/BN_rand.3 | 132 +- secure/lib/libcrypto/man/man3/BN_security_bits.3 | 110 +- secure/lib/libcrypto/man/man3/BN_set_bit.3 | 105 +- secure/lib/libcrypto/man/man3/BN_swap.3 | 96 +- secure/lib/libcrypto/man/man3/BN_zero.3 | 110 +- secure/lib/libcrypto/man/man3/BUF_MEM_new.3 | 107 +- secure/lib/libcrypto/man/man3/CMAC_CTX.3 | 168 + .../libcrypto/man/man3/CMS_EncryptedData_decrypt.3 | 133 +- .../libcrypto/man/man3/CMS_EncryptedData_encrypt.3 | 112 +- .../libcrypto/man/man3/CMS_EnvelopedData_create.3 | 131 +- secure/lib/libcrypto/man/man3/CMS_add0_cert.3 | 142 +- .../libcrypto/man/man3/CMS_add1_recipient_cert.3 | 116 +- secure/lib/libcrypto/man/man3/CMS_add1_signer.3 | 141 +- secure/lib/libcrypto/man/man3/CMS_compress.3 | 126 +- secure/lib/libcrypto/man/man3/CMS_data_create.3 | 106 +- secure/lib/libcrypto/man/man3/CMS_decrypt.3 | 149 +- secure/lib/libcrypto/man/man3/CMS_digest_create.3 | 108 +- secure/lib/libcrypto/man/man3/CMS_encrypt.3 | 152 +- secure/lib/libcrypto/man/man3/CMS_final.3 | 124 +- .../libcrypto/man/man3/CMS_get0_RecipientInfos.3 | 134 +- .../lib/libcrypto/man/man3/CMS_get0_SignerInfos.3 | 112 +- secure/lib/libcrypto/man/man3/CMS_get0_type.3 | 118 +- .../libcrypto/man/man3/CMS_get1_ReceiptRequest.3 | 112 +- secure/lib/libcrypto/man/man3/CMS_sign.3 | 168 +- secure/lib/libcrypto/man/man3/CMS_sign_receipt.3 | 106 +- .../lib/libcrypto/man/man3/CMS_signed_get_attr.3 | 260 + secure/lib/libcrypto/man/man3/CMS_uncompress.3 | 108 +- secure/lib/libcrypto/man/man3/CMS_verify.3 | 192 +- secure/lib/libcrypto/man/man3/CMS_verify_receipt.3 | 102 +- secure/lib/libcrypto/man/man3/COMP_CTX_new.3 | 220 + secure/lib/libcrypto/man/man3/CONF_modules_free.3 | 102 +- .../libcrypto/man/man3/CONF_modules_load_file.3 | 126 +- .../libcrypto/man/man3/CRYPTO_THREAD_run_once.3 | 225 +- .../libcrypto/man/man3/CRYPTO_get_ex_new_index.3 | 134 +- secure/lib/libcrypto/man/man3/CRYPTO_memcmp.3 | 98 +- .../man/man3/CTLOG_STORE_get0_log_by_id.3 | 110 +- secure/lib/libcrypto/man/man3/CTLOG_STORE_new.3 | 130 +- secure/lib/libcrypto/man/man3/CTLOG_new.3 | 132 +- .../libcrypto/man/man3/CT_POLICY_EVAL_CTX_new.3 | 153 +- secure/lib/libcrypto/man/man3/DEFINE_STACK_OF.3 | 292 +- secure/lib/libcrypto/man/man3/DES_random_key.3 | 174 +- secure/lib/libcrypto/man/man3/DH_generate_key.3 | 110 +- .../libcrypto/man/man3/DH_generate_parameters.3 | 136 +- secure/lib/libcrypto/man/man3/DH_get0_pqg.3 | 150 +- secure/lib/libcrypto/man/man3/DH_get_1024_160.3 | 114 +- secure/lib/libcrypto/man/man3/DH_meth_new.3 | 170 +- secure/lib/libcrypto/man/man3/DH_new.3 | 114 +- secure/lib/libcrypto/man/man3/DH_new_by_nid.3 | 110 +- secure/lib/libcrypto/man/man3/DH_set_method.3 | 150 +- secure/lib/libcrypto/man/man3/DH_size.3 | 102 +- secure/lib/libcrypto/man/man3/DSA_SIG_new.3 | 107 +- secure/lib/libcrypto/man/man3/DSA_do_sign.3 | 104 +- secure/lib/libcrypto/man/man3/DSA_dup_DH.3 | 112 +- secure/lib/libcrypto/man/man3/DSA_generate_key.3 | 108 +- .../libcrypto/man/man3/DSA_generate_parameters.3 | 136 +- secure/lib/libcrypto/man/man3/DSA_get0_pqg.3 | 136 +- secure/lib/libcrypto/man/man3/DSA_meth_new.3 | 178 +- secure/lib/libcrypto/man/man3/DSA_new.3 | 112 +- secure/lib/libcrypto/man/man3/DSA_set_method.3 | 146 +- secure/lib/libcrypto/man/man3/DSA_sign.3 | 116 +- secure/lib/libcrypto/man/man3/DSA_size.3 | 104 +- secure/lib/libcrypto/man/man3/DTLS_get_data_mtu.3 | 102 +- secure/lib/libcrypto/man/man3/DTLS_set_timer_cb.3 | 115 +- secure/lib/libcrypto/man/man3/DTLSv1_get_timeout.3 | 112 + .../lib/libcrypto/man/man3/DTLSv1_handle_timeout.3 | 105 + secure/lib/libcrypto/man/man3/DTLSv1_listen.3 | 157 +- secure/lib/libcrypto/man/man3/ECDSA_SIG_new.3 | 135 +- secure/lib/libcrypto/man/man3/ECDSA_sign.3 | 160 +- .../lib/libcrypto/man/man3/ECPKParameters_print.3 | 104 +- .../lib/libcrypto/man/man3/EC_GFp_simple_method.3 | 116 +- secure/lib/libcrypto/man/man3/EC_GROUP_copy.3 | 172 +- secure/lib/libcrypto/man/man3/EC_GROUP_new.3 | 160 +- .../lib/libcrypto/man/man3/EC_KEY_get_enc_flags.3 | 110 +- secure/lib/libcrypto/man/man3/EC_KEY_new.3 | 204 +- secure/lib/libcrypto/man/man3/EC_POINT_add.3 | 108 +- secure/lib/libcrypto/man/man3/EC_POINT_new.3 | 164 +- secure/lib/libcrypto/man/man3/ENGINE_add.3 | 369 +- secure/lib/libcrypto/man/man3/ERR_GET_LIB.3 | 114 +- secure/lib/libcrypto/man/man3/ERR_clear_error.3 | 96 +- secure/lib/libcrypto/man/man3/ERR_error_string.3 | 110 +- secure/lib/libcrypto/man/man3/ERR_get_error.3 | 120 +- .../libcrypto/man/man3/ERR_load_crypto_strings.3 | 102 +- secure/lib/libcrypto/man/man3/ERR_load_strings.3 | 104 +- secure/lib/libcrypto/man/man3/ERR_new.3 | 98 +- secure/lib/libcrypto/man/man3/ERR_print_errors.3 | 100 +- secure/lib/libcrypto/man/man3/ERR_put_error.3 | 138 +- secure/lib/libcrypto/man/man3/ERR_remove_state.3 | 104 +- secure/lib/libcrypto/man/man3/ERR_set_mark.3 | 120 +- .../lib/libcrypto/man/man3/EVP_ASYM_CIPHER_free.3 | 120 +- secure/lib/libcrypto/man/man3/EVP_BytesToKey.3 | 130 +- .../man/man3/EVP_CIPHER_CTX_get_cipher_data.3 | 104 +- .../man/man3/EVP_CIPHER_CTX_get_original_iv.3 | 122 +- .../lib/libcrypto/man/man3/EVP_CIPHER_meth_new.3 | 187 +- secure/lib/libcrypto/man/man3/EVP_DigestInit.3 | 506 +- secure/lib/libcrypto/man/man3/EVP_DigestSignInit.3 | 228 +- .../lib/libcrypto/man/man3/EVP_DigestVerifyInit.3 | 198 +- secure/lib/libcrypto/man/man3/EVP_EncodeInit.3 | 226 +- secure/lib/libcrypto/man/man3/EVP_EncryptInit.3 | 1410 +- secure/lib/libcrypto/man/man3/EVP_KDF.3 | 253 +- secure/lib/libcrypto/man/man3/EVP_KEM_free.3 | 117 +- secure/lib/libcrypto/man/man3/EVP_KEYEXCH_free.3 | 118 +- secure/lib/libcrypto/man/man3/EVP_KEYMGMT.3 | 143 +- secure/lib/libcrypto/man/man3/EVP_MAC.3 | 344 +- secure/lib/libcrypto/man/man3/EVP_MD_meth_new.3 | 153 +- secure/lib/libcrypto/man/man3/EVP_OpenInit.3 | 106 +- secure/lib/libcrypto/man/man3/EVP_PBE_CipherInit.3 | 130 +- secure/lib/libcrypto/man/man3/EVP_PKEY2PKCS8.3 | 112 +- .../lib/libcrypto/man/man3/EVP_PKEY_ASN1_METHOD.3 | 206 +- secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_ctrl.3 | 430 +- .../libcrypto/man/man3/EVP_PKEY_CTX_get0_libctx.3 | 110 +- .../libcrypto/man/man3/EVP_PKEY_CTX_get0_pkey.3 | 120 +- .../libcrypto/man/man3/EVP_PKEY_CTX_get_algor.3 | 120 + secure/lib/libcrypto/man/man3/EVP_PKEY_CTX_new.3 | 153 +- .../man/man3/EVP_PKEY_CTX_set1_pbe_pass.3 | 102 +- .../libcrypto/man/man3/EVP_PKEY_CTX_set_hkdf_md.3 | 162 +- .../libcrypto/man/man3/EVP_PKEY_CTX_set_params.3 | 150 +- .../man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 | 126 +- .../libcrypto/man/man3/EVP_PKEY_CTX_set_scrypt_N.3 | 122 +- .../man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3 | 134 +- .../libcrypto/man/man3/EVP_PKEY_asn1_get_count.3 | 122 +- secure/lib/libcrypto/man/man3/EVP_PKEY_check.3 | 129 +- .../libcrypto/man/man3/EVP_PKEY_copy_parameters.3 | 112 +- .../lib/libcrypto/man/man3/EVP_PKEY_decapsulate.3 | 167 +- secure/lib/libcrypto/man/man3/EVP_PKEY_decrypt.3 | 130 +- secure/lib/libcrypto/man/man3/EVP_PKEY_derive.3 | 112 +- .../man/man3/EVP_PKEY_digestsign_supports_digest.3 | 98 +- .../lib/libcrypto/man/man3/EVP_PKEY_encapsulate.3 | 180 +- secure/lib/libcrypto/man/man3/EVP_PKEY_encrypt.3 | 112 +- secure/lib/libcrypto/man/man3/EVP_PKEY_fromdata.3 | 177 +- secure/lib/libcrypto/man/man3/EVP_PKEY_get_attr.3 | 166 + .../man/man3/EVP_PKEY_get_default_digest_nid.3 | 108 +- .../libcrypto/man/man3/EVP_PKEY_get_field_type.3 | 108 +- .../libcrypto/man/man3/EVP_PKEY_get_group_name.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_PKEY_get_size.3 | 110 +- .../libcrypto/man/man3/EVP_PKEY_gettable_params.3 | 138 +- secure/lib/libcrypto/man/man3/EVP_PKEY_is_a.3 | 120 +- secure/lib/libcrypto/man/man3/EVP_PKEY_keygen.3 | 145 +- .../libcrypto/man/man3/EVP_PKEY_meth_get_count.3 | 108 +- secure/lib/libcrypto/man/man3/EVP_PKEY_meth_new.3 | 162 +- secure/lib/libcrypto/man/man3/EVP_PKEY_new.3 | 259 +- .../libcrypto/man/man3/EVP_PKEY_print_private.3 | 108 +- secure/lib/libcrypto/man/man3/EVP_PKEY_set1_RSA.3 | 174 +- .../man/man3/EVP_PKEY_set1_encoded_public_key.3 | 144 +- secure/lib/libcrypto/man/man3/EVP_PKEY_set_type.3 | 114 +- .../libcrypto/man/man3/EVP_PKEY_settable_params.3 | 116 +- secure/lib/libcrypto/man/man3/EVP_PKEY_sign.3 | 382 +- secure/lib/libcrypto/man/man3/EVP_PKEY_todata.3 | 129 +- secure/lib/libcrypto/man/man3/EVP_PKEY_verify.3 | 372 +- .../libcrypto/man/man3/EVP_PKEY_verify_recover.3 | 130 +- secure/lib/libcrypto/man/man3/EVP_RAND.3 | 341 +- secure/lib/libcrypto/man/man3/EVP_SIGNATURE.3 | 120 +- secure/lib/libcrypto/man/man3/EVP_SKEY.3 | 205 + secure/lib/libcrypto/man/man3/EVP_SKEYMGMT.3 | 203 + secure/lib/libcrypto/man/man3/EVP_SealInit.3 | 124 +- secure/lib/libcrypto/man/man3/EVP_SignInit.3 | 137 +- secure/lib/libcrypto/man/man3/EVP_VerifyInit.3 | 127 +- secure/lib/libcrypto/man/man3/EVP_aes_128_gcm.3 | 156 +- secure/lib/libcrypto/man/man3/EVP_aria_128_gcm.3 | 118 +- secure/lib/libcrypto/man/man3/EVP_bf_cbc.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_blake2b512.3 | 121 +- .../lib/libcrypto/man/man3/EVP_camellia_128_ecb.3 | 112 +- secure/lib/libcrypto/man/man3/EVP_cast5_cbc.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_chacha20.3 | 124 +- secure/lib/libcrypto/man/man3/EVP_des_cbc.3 | 122 +- secure/lib/libcrypto/man/man3/EVP_desx_cbc.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_idea_cbc.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_md2.3 | 114 +- secure/lib/libcrypto/man/man3/EVP_md4.3 | 114 +- secure/lib/libcrypto/man/man3/EVP_md5.3 | 124 +- secure/lib/libcrypto/man/man3/EVP_mdc2.3 | 114 +- secure/lib/libcrypto/man/man3/EVP_rc2_cbc.3 | 118 +- secure/lib/libcrypto/man/man3/EVP_rc4.3 | 126 +- .../lib/libcrypto/man/man3/EVP_rc5_32_12_16_cbc.3 | 120 +- secure/lib/libcrypto/man/man3/EVP_ripemd160.3 | 116 +- secure/lib/libcrypto/man/man3/EVP_seed_cbc.3 | 110 +- .../man/man3/EVP_set_default_properties.3 | 131 +- secure/lib/libcrypto/man/man3/EVP_sha1.3 | 116 +- secure/lib/libcrypto/man/man3/EVP_sha224.3 | 118 +- secure/lib/libcrypto/man/man3/EVP_sha3_224.3 | 116 +- secure/lib/libcrypto/man/man3/EVP_sm3.3 | 116 +- secure/lib/libcrypto/man/man3/EVP_sm4_cbc.3 | 110 +- secure/lib/libcrypto/man/man3/EVP_whirlpool.3 | 114 +- secure/lib/libcrypto/man/man3/GENERAL_NAME.3 | 95 + secure/lib/libcrypto/man/man3/HMAC.3 | 162 +- secure/lib/libcrypto/man/man3/MD5.3 | 148 +- secure/lib/libcrypto/man/man3/MDC2_Init.3 | 120 +- secure/lib/libcrypto/man/man3/Makefile | 72 +- secure/lib/libcrypto/man/man3/NCONF_new_ex.3 | 118 +- secure/lib/libcrypto/man/man3/OBJ_nid2obj.3 | 182 +- secure/lib/libcrypto/man/man3/OCSP_REQUEST_new.3 | 137 +- secure/lib/libcrypto/man/man3/OCSP_cert_to_id.3 | 125 +- .../libcrypto/man/man3/OCSP_request_add1_nonce.3 | 108 +- .../lib/libcrypto/man/man3/OCSP_resp_find_status.3 | 164 +- .../lib/libcrypto/man/man3/OCSP_response_status.3 | 159 +- secure/lib/libcrypto/man/man3/OCSP_sendreq_new.3 | 136 +- secure/lib/libcrypto/man/man3/OPENSSL_Applink.3 | 98 +- secure/lib/libcrypto/man/man3/OPENSSL_FILE.3 | 112 +- .../lib/libcrypto/man/man3/OPENSSL_LH_COMPFUNC.3 | 312 +- secure/lib/libcrypto/man/man3/OPENSSL_LH_stats.3 | 126 +- secure/lib/libcrypto/man/man3/OPENSSL_config.3 | 118 +- .../lib/libcrypto/man/man3/OPENSSL_fork_prepare.3 | 104 +- secure/lib/libcrypto/man/man3/OPENSSL_gmtime.3 | 108 +- .../lib/libcrypto/man/man3/OPENSSL_hexchar2int.3 | 108 +- secure/lib/libcrypto/man/man3/OPENSSL_ia32cap.3 | 352 +- .../lib/libcrypto/man/man3/OPENSSL_init_crypto.3 | 201 +- secure/lib/libcrypto/man/man3/OPENSSL_init_ssl.3 | 112 +- .../libcrypto/man/man3/OPENSSL_instrument_bus.3 | 104 +- .../man/man3/OPENSSL_load_builtin_modules.3 | 104 +- .../lib/libcrypto/man/man3/OPENSSL_load_u16_le.3 | 138 + secure/lib/libcrypto/man/man3/OPENSSL_malloc.3 | 185 +- secure/lib/libcrypto/man/man3/OPENSSL_riscvcap.3 | 245 + secure/lib/libcrypto/man/man3/OPENSSL_s390xcap.3 | 131 +- .../lib/libcrypto/man/man3/OPENSSL_secure_malloc.3 | 112 +- secure/lib/libcrypto/man/man3/OPENSSL_strcasecmp.3 | 107 +- secure/lib/libcrypto/man/man3/OSSL_ALGORITHM.3 | 156 +- secure/lib/libcrypto/man/man3/OSSL_CALLBACK.3 | 106 +- secure/lib/libcrypto/man/man3/OSSL_CMP_ATAV_set0.3 | 170 + secure/lib/libcrypto/man/man3/OSSL_CMP_CTX_new.3 | 684 +- .../man/man3/OSSL_CMP_HDR_get0_transactionID.3 | 118 +- .../libcrypto/man/man3/OSSL_CMP_ITAV_new_caCerts.3 | 267 + secure/lib/libcrypto/man/man3/OSSL_CMP_ITAV_set0.3 | 180 +- .../libcrypto/man/man3/OSSL_CMP_MSG_get0_header.3 | 167 +- .../libcrypto/man/man3/OSSL_CMP_MSG_http_perform.3 | 145 +- .../lib/libcrypto/man/man3/OSSL_CMP_SRV_CTX_new.3 | 173 +- .../libcrypto/man/man3/OSSL_CMP_STATUSINFO_new.3 | 114 +- .../lib/libcrypto/man/man3/OSSL_CMP_exec_certreq.3 | 277 +- secure/lib/libcrypto/man/man3/OSSL_CMP_log_open.3 | 122 +- .../lib/libcrypto/man/man3/OSSL_CMP_validate_msg.3 | 145 +- .../lib/libcrypto/man/man3/OSSL_CORE_MAKE_FUNC.3 | 98 +- .../libcrypto/man/man3/OSSL_CRMF_MSG_get0_tmpl.3 | 198 +- .../man/man3/OSSL_CRMF_MSG_set0_validity.3 | 136 +- .../man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3 | 136 +- .../man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3 | 112 +- secure/lib/libcrypto/man/man3/OSSL_CRMF_pbmp_new.3 | 136 +- secure/lib/libcrypto/man/man3/OSSL_DECODER.3 | 131 +- secure/lib/libcrypto/man/man3/OSSL_DECODER_CTX.3 | 157 +- .../man/man3/OSSL_DECODER_CTX_new_for_pkey.3 | 142 +- .../lib/libcrypto/man/man3/OSSL_DECODER_from_bio.3 | 114 +- secure/lib/libcrypto/man/man3/OSSL_DISPATCH.3 | 119 +- secure/lib/libcrypto/man/man3/OSSL_ENCODER.3 | 127 +- secure/lib/libcrypto/man/man3/OSSL_ENCODER_CTX.3 | 153 +- .../man/man3/OSSL_ENCODER_CTX_new_for_pkey.3 | 140 +- .../lib/libcrypto/man/man3/OSSL_ENCODER_to_bio.3 | 118 +- .../lib/libcrypto/man/man3/OSSL_ERR_STATE_save.3 | 139 + .../man/man3/OSSL_ESS_check_signing_certs.3 | 126 +- .../libcrypto/man/man3/OSSL_GENERAL_NAMES_print.3 | 90 + secure/lib/libcrypto/man/man3/OSSL_HPKE_CTX_new.3 | 594 + secure/lib/libcrypto/man/man3/OSSL_HTTP_REQ_CTX.3 | 294 +- .../lib/libcrypto/man/man3/OSSL_HTTP_parse_url.3 | 135 +- secure/lib/libcrypto/man/man3/OSSL_HTTP_transfer.3 | 286 +- .../lib/libcrypto/man/man3/OSSL_IETF_ATTR_SYNTAX.3 | 144 + .../man/man3/OSSL_IETF_ATTR_SYNTAX_print.3 | 94 + .../man/man3/OSSL_INDICATOR_set_callback.3 | 136 + secure/lib/libcrypto/man/man3/OSSL_ITEM.3 | 104 +- secure/lib/libcrypto/man/man3/OSSL_LIB_CTX.3 | 142 +- .../man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3 | 106 + secure/lib/libcrypto/man/man3/OSSL_PARAM.3 | 230 +- secure/lib/libcrypto/man/man3/OSSL_PARAM_BLD.3 | 186 +- .../man/man3/OSSL_PARAM_allocate_from_text.3 | 142 +- secure/lib/libcrypto/man/man3/OSSL_PARAM_dup.3 | 113 +- secure/lib/libcrypto/man/man3/OSSL_PARAM_int.3 | 289 +- .../libcrypto/man/man3/OSSL_PARAM_print_to_bio.3 | 96 + secure/lib/libcrypto/man/man3/OSSL_PROVIDER.3 | 208 +- .../libcrypto/man/man3/OSSL_QUIC_client_method.3 | 110 + secure/lib/libcrypto/man/man3/OSSL_SELF_TEST_new.3 | 152 +- .../man/man3/OSSL_SELF_TEST_set_callback.3 | 106 +- secure/lib/libcrypto/man/man3/OSSL_STORE_INFO.3 | 193 +- secure/lib/libcrypto/man/man3/OSSL_STORE_LOADER.3 | 211 +- secure/lib/libcrypto/man/man3/OSSL_STORE_SEARCH.3 | 161 +- secure/lib/libcrypto/man/man3/OSSL_STORE_attach.3 | 106 +- secure/lib/libcrypto/man/man3/OSSL_STORE_expect.3 | 112 +- secure/lib/libcrypto/man/man3/OSSL_STORE_open.3 | 188 +- secure/lib/libcrypto/man/man3/OSSL_sleep.3 | 96 + secure/lib/libcrypto/man/man3/OSSL_trace_enabled.3 | 220 +- .../man/man3/OSSL_trace_get_category_num.3 | 102 +- .../libcrypto/man/man3/OSSL_trace_set_channel.3 | 214 +- .../man/man3/OpenSSL_add_all_algorithms.3 | 102 +- secure/lib/libcrypto/man/man3/OpenSSL_version.3 | 218 +- .../libcrypto/man/man3/PBMAC1_get1_pbkdf2_param.3 | 98 + .../libcrypto/man/man3/PEM_X509_INFO_read_bio_ex.3 | 110 +- secure/lib/libcrypto/man/man3/PEM_bytes_read_bio.3 | 116 +- secure/lib/libcrypto/man/man3/PEM_read.3 | 184 +- secure/lib/libcrypto/man/man3/PEM_read_CMS.3 | 128 +- .../libcrypto/man/man3/PEM_read_bio_PrivateKey.3 | 294 +- secure/lib/libcrypto/man/man3/PEM_read_bio_ex.3 | 114 +- .../libcrypto/man/man3/PEM_write_bio_CMS_stream.3 | 102 +- .../man/man3/PEM_write_bio_PKCS7_stream.3 | 102 +- .../lib/libcrypto/man/man3/PKCS12_PBE_keyivgen.3 | 112 +- .../man/man3/PKCS12_SAFEBAG_create_cert.3 | 126 +- .../libcrypto/man/man3/PKCS12_SAFEBAG_get0_attrs.3 | 110 +- .../libcrypto/man/man3/PKCS12_SAFEBAG_get1_cert.3 | 134 +- .../libcrypto/man/man3/PKCS12_SAFEBAG_set0_attrs.3 | 90 + .../libcrypto/man/man3/PKCS12_add1_attr_by_NID.3 | 102 +- .../libcrypto/man/man3/PKCS12_add_CSPName_asc.3 | 100 +- secure/lib/libcrypto/man/man3/PKCS12_add_cert.3 | 114 +- .../man/man3/PKCS12_add_friendlyname_asc.3 | 102 +- .../lib/libcrypto/man/man3/PKCS12_add_localkeyid.3 | 98 +- secure/lib/libcrypto/man/man3/PKCS12_add_safe.3 | 124 +- secure/lib/libcrypto/man/man3/PKCS12_create.3 | 182 +- .../lib/libcrypto/man/man3/PKCS12_decrypt_skey.3 | 104 +- secure/lib/libcrypto/man/man3/PKCS12_gen_mac.3 | 152 +- .../libcrypto/man/man3/PKCS12_get_friendlyname.3 | 102 +- secure/lib/libcrypto/man/man3/PKCS12_init.3 | 102 +- .../libcrypto/man/man3/PKCS12_item_decrypt_d2i.3 | 106 +- .../libcrypto/man/man3/PKCS12_key_gen_utf8_ex.3 | 130 +- secure/lib/libcrypto/man/man3/PKCS12_newpass.3 | 116 +- .../lib/libcrypto/man/man3/PKCS12_pack_p7encdata.3 | 106 +- secure/lib/libcrypto/man/man3/PKCS12_parse.3 | 118 +- secure/lib/libcrypto/man/man3/PKCS5_PBE_keyivgen.3 | 144 +- secure/lib/libcrypto/man/man3/PKCS5_PBKDF2_HMAC.3 | 117 +- secure/lib/libcrypto/man/man3/PKCS7_decrypt.3 | 104 +- secure/lib/libcrypto/man/man3/PKCS7_encrypt.3 | 144 +- .../libcrypto/man/man3/PKCS7_get_octet_string.3 | 104 +- secure/lib/libcrypto/man/man3/PKCS7_sign.3 | 158 +- .../lib/libcrypto/man/man3/PKCS7_sign_add_signer.3 | 146 +- .../lib/libcrypto/man/man3/PKCS7_type_is_other.3 | 96 +- secure/lib/libcrypto/man/man3/PKCS7_verify.3 | 148 +- secure/lib/libcrypto/man/man3/PKCS8_encrypt.3 | 104 +- .../lib/libcrypto/man/man3/PKCS8_pkey_add1_attr.3 | 108 +- secure/lib/libcrypto/man/man3/RAND_add.3 | 122 +- secure/lib/libcrypto/man/man3/RAND_bytes.3 | 156 +- secure/lib/libcrypto/man/man3/RAND_cleanup.3 | 106 +- secure/lib/libcrypto/man/man3/RAND_egd.3 | 114 +- secure/lib/libcrypto/man/man3/RAND_get0_primary.3 | 155 +- secure/lib/libcrypto/man/man3/RAND_load_file.3 | 108 +- secure/lib/libcrypto/man/man3/RAND_set_DRBG_type.3 | 119 +- .../lib/libcrypto/man/man3/RAND_set_rand_method.3 | 126 +- secure/lib/libcrypto/man/man3/RC4_set_key.3 | 122 +- secure/lib/libcrypto/man/man3/RIPEMD160_Init.3 | 120 +- secure/lib/libcrypto/man/man3/RSA_blinding_on.3 | 110 +- secure/lib/libcrypto/man/man3/RSA_check_key.3 | 144 +- secure/lib/libcrypto/man/man3/RSA_generate_key.3 | 136 +- secure/lib/libcrypto/man/man3/RSA_get0_key.3 | 170 +- secure/lib/libcrypto/man/man3/RSA_meth_new.3 | 174 +- secure/lib/libcrypto/man/man3/RSA_new.3 | 112 +- .../man/man3/RSA_padding_add_PKCS1_type_1.3 | 155 +- secure/lib/libcrypto/man/man3/RSA_print.3 | 110 +- .../lib/libcrypto/man/man3/RSA_private_encrypt.3 | 116 +- secure/lib/libcrypto/man/man3/RSA_public_encrypt.3 | 160 +- secure/lib/libcrypto/man/man3/RSA_set_method.3 | 178 +- secure/lib/libcrypto/man/man3/RSA_sign.3 | 110 +- .../man/man3/RSA_sign_ASN1_OCTET_STRING.3 | 116 +- secure/lib/libcrypto/man/man3/RSA_size.3 | 106 +- secure/lib/libcrypto/man/man3/SCT_new.3 | 200 +- secure/lib/libcrypto/man/man3/SCT_print.3 | 118 +- secure/lib/libcrypto/man/man3/SCT_validate.3 | 150 +- secure/lib/libcrypto/man/man3/SHA256_Init.3 | 142 +- secure/lib/libcrypto/man/man3/SMIME_read_ASN1.3 | 138 +- secure/lib/libcrypto/man/man3/SMIME_read_CMS.3 | 130 +- secure/lib/libcrypto/man/man3/SMIME_read_PKCS7.3 | 128 +- secure/lib/libcrypto/man/man3/SMIME_write_ASN1.3 | 130 +- secure/lib/libcrypto/man/man3/SMIME_write_CMS.3 | 124 +- secure/lib/libcrypto/man/man3/SMIME_write_PKCS7.3 | 122 +- secure/lib/libcrypto/man/man3/SRP_Calc_B.3 | 112 +- secure/lib/libcrypto/man/man3/SRP_VBASE_new.3 | 126 +- .../lib/libcrypto/man/man3/SRP_create_verifier.3 | 136 +- secure/lib/libcrypto/man/man3/SRP_user_pwd_new.3 | 108 +- .../lib/libcrypto/man/man3/SSL_CIPHER_get_name.3 | 192 +- .../man/man3/SSL_COMP_add_compression_method.3 | 136 +- secure/lib/libcrypto/man/man3/SSL_CONF_CTX_new.3 | 108 +- .../libcrypto/man/man3/SSL_CONF_CTX_set1_prefix.3 | 116 +- .../libcrypto/man/man3/SSL_CONF_CTX_set_flags.3 | 112 +- .../libcrypto/man/man3/SSL_CONF_CTX_set_ssl_ctx.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_CONF_cmd.3 | 609 +- secure/lib/libcrypto/man/man3/SSL_CONF_cmd_argv.3 | 100 +- .../libcrypto/man/man3/SSL_CTX_add1_chain_cert.3 | 142 +- .../man/man3/SSL_CTX_add_extra_chain_cert.3 | 110 +- .../lib/libcrypto/man/man3/SSL_CTX_add_session.3 | 112 +- secure/lib/libcrypto/man/man3/SSL_CTX_config.3 | 106 +- secure/lib/libcrypto/man/man3/SSL_CTX_ctrl.3 | 98 +- .../lib/libcrypto/man/man3/SSL_CTX_dane_enable.3 | 243 +- .../libcrypto/man/man3/SSL_CTX_flush_sessions.3 | 124 +- secure/lib/libcrypto/man/man3/SSL_CTX_free.3 | 104 +- secure/lib/libcrypto/man/man3/SSL_CTX_get0_param.3 | 106 +- .../libcrypto/man/man3/SSL_CTX_get_verify_mode.3 | 102 +- .../man/man3/SSL_CTX_has_client_custom_ext.3 | 96 +- .../man/man3/SSL_CTX_load_verify_locations.3 | 153 +- secure/lib/libcrypto/man/man3/SSL_CTX_new.3 | 166 +- .../lib/libcrypto/man/man3/SSL_CTX_sess_number.3 | 106 +- .../man/man3/SSL_CTX_sess_set_cache_size.3 | 100 +- .../libcrypto/man/man3/SSL_CTX_sess_set_get_cb.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_CTX_sessions.3 | 106 +- .../lib/libcrypto/man/man3/SSL_CTX_set0_CA_list.3 | 170 +- .../man/man3/SSL_CTX_set1_cert_comp_preference.3 | 203 + .../lib/libcrypto/man/man3/SSL_CTX_set1_curves.3 | 403 +- .../lib/libcrypto/man/man3/SSL_CTX_set1_sigalgs.3 | 136 +- .../man/man3/SSL_CTX_set1_verify_cert_store.3 | 126 +- .../man/man3/SSL_CTX_set_alpn_select_cb.3 | 171 +- .../lib/libcrypto/man/man3/SSL_CTX_set_cert_cb.3 | 116 +- .../libcrypto/man/man3/SSL_CTX_set_cert_store.3 | 122 +- .../man/man3/SSL_CTX_set_cert_verify_callback.3 | 116 +- .../libcrypto/man/man3/SSL_CTX_set_cipher_list.3 | 142 +- .../man/man3/SSL_CTX_set_client_cert_cb.3 | 140 +- .../man/man3/SSL_CTX_set_client_hello_cb.3 | 141 +- .../man/man3/SSL_CTX_set_ct_validation_callback.3 | 150 +- .../man/man3/SSL_CTX_set_ctlog_list_file.3 | 104 +- .../man/man3/SSL_CTX_set_default_passwd_cb.3 | 112 +- .../libcrypto/man/man3/SSL_CTX_set_domain_flags.3 | 164 + .../man/man3/SSL_CTX_set_generate_session_id.3 | 104 +- .../libcrypto/man/man3/SSL_CTX_set_info_callback.3 | 160 +- .../man/man3/SSL_CTX_set_keylog_callback.3 | 112 +- .../libcrypto/man/man3/SSL_CTX_set_max_cert_list.3 | 112 +- .../man/man3/SSL_CTX_set_min_proto_version.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_CTX_set_mode.3 | 149 +- .../libcrypto/man/man3/SSL_CTX_set_msg_callback.3 | 198 +- .../man/man3/SSL_CTX_set_new_pending_conn_cb.3 | 123 + .../libcrypto/man/man3/SSL_CTX_set_num_tickets.3 | 100 +- .../lib/libcrypto/man/man3/SSL_CTX_set_options.3 | 403 +- .../man/man3/SSL_CTX_set_psk_client_callback.3 | 166 +- .../man/man3/SSL_CTX_set_quiet_shutdown.3 | 126 +- .../libcrypto/man/man3/SSL_CTX_set_read_ahead.3 | 121 +- .../man/man3/SSL_CTX_set_record_padding_callback.3 | 143 +- .../man/man3/SSL_CTX_set_security_level.3 | 168 +- .../man/man3/SSL_CTX_set_session_cache_mode.3 | 146 +- .../man/man3/SSL_CTX_set_session_id_context.3 | 112 +- .../man/man3/SSL_CTX_set_session_ticket_cb.3 | 154 +- .../man/man3/SSL_CTX_set_split_send_fragment.3 | 141 +- .../libcrypto/man/man3/SSL_CTX_set_srp_password.3 | 172 +- .../libcrypto/man/man3/SSL_CTX_set_ssl_version.3 | 132 +- .../SSL_CTX_set_stateless_cookie_generate_cb.3 | 104 +- .../lib/libcrypto/man/man3/SSL_CTX_set_timeout.3 | 100 +- .../man3/SSL_CTX_set_tlsext_servername_callback.3 | 144 +- .../man/man3/SSL_CTX_set_tlsext_status_cb.3 | 134 +- .../man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3 | 156 +- .../man/man3/SSL_CTX_set_tlsext_use_srtp.3 | 188 +- .../man/man3/SSL_CTX_set_tmp_dh_callback.3 | 160 +- .../lib/libcrypto/man/man3/SSL_CTX_set_tmp_ecdh.3 | 98 +- secure/lib/libcrypto/man/man3/SSL_CTX_set_verify.3 | 204 +- .../libcrypto/man/man3/SSL_CTX_use_certificate.3 | 167 +- .../man/man3/SSL_CTX_use_psk_identity_hint.3 | 154 +- .../libcrypto/man/man3/SSL_CTX_use_serverinfo.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_SESSION_free.3 | 134 +- .../libcrypto/man/man3/SSL_SESSION_get0_cipher.3 | 108 +- .../libcrypto/man/man3/SSL_SESSION_get0_hostname.3 | 118 +- .../man/man3/SSL_SESSION_get0_id_context.3 | 112 +- .../lib/libcrypto/man/man3/SSL_SESSION_get0_peer.3 | 100 +- .../man/man3/SSL_SESSION_get_compress_id.3 | 96 +- .../man/man3/SSL_SESSION_get_protocol_version.3 | 106 +- .../lib/libcrypto/man/man3/SSL_SESSION_get_time.3 | 146 +- .../libcrypto/man/man3/SSL_SESSION_has_ticket.3 | 100 +- .../libcrypto/man/man3/SSL_SESSION_is_resumable.3 | 100 +- secure/lib/libcrypto/man/man3/SSL_SESSION_print.3 | 104 +- .../lib/libcrypto/man/man3/SSL_SESSION_set1_id.3 | 102 +- secure/lib/libcrypto/man/man3/SSL_accept.3 | 134 +- secure/lib/libcrypto/man/man3/SSL_accept_stream.3 | 134 + .../lib/libcrypto/man/man3/SSL_alert_type_string.3 | 265 +- secure/lib/libcrypto/man/man3/SSL_alloc_buffers.3 | 103 +- secure/lib/libcrypto/man/man3/SSL_check_chain.3 | 134 +- secure/lib/libcrypto/man/man3/SSL_clear.3 | 123 +- secure/lib/libcrypto/man/man3/SSL_connect.3 | 144 +- secure/lib/libcrypto/man/man3/SSL_do_handshake.3 | 132 +- .../man/man3/SSL_export_keying_material.3 | 110 +- .../libcrypto/man/man3/SSL_extension_supported.3 | 172 +- secure/lib/libcrypto/man/man3/SSL_free.3 | 138 +- .../lib/libcrypto/man/man3/SSL_get0_connection.3 | 107 + .../lib/libcrypto/man/man3/SSL_get0_group_name.3 | 100 + secure/lib/libcrypto/man/man3/SSL_get0_peer_rpk.3 | 149 + secure/lib/libcrypto/man/man3/SSL_get0_peer_scts.3 | 102 +- .../libcrypto/man/man3/SSL_get1_builtin_sigalgs.3 | 95 + secure/lib/libcrypto/man/man3/SSL_get_SSL_CTX.3 | 100 +- .../lib/libcrypto/man/man3/SSL_get_all_async_fds.3 | 122 +- .../lib/libcrypto/man/man3/SSL_get_certificate.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_get_ciphers.3 | 128 +- .../lib/libcrypto/man/man3/SSL_get_client_random.3 | 132 +- .../libcrypto/man/man3/SSL_get_conn_close_info.3 | 215 + .../libcrypto/man/man3/SSL_get_current_cipher.3 | 110 +- .../libcrypto/man/man3/SSL_get_default_timeout.3 | 100 +- secure/lib/libcrypto/man/man3/SSL_get_error.3 | 220 +- .../lib/libcrypto/man/man3/SSL_get_event_timeout.3 | 131 + .../lib/libcrypto/man/man3/SSL_get_extms_support.3 | 96 +- secure/lib/libcrypto/man/man3/SSL_get_fd.3 | 102 +- .../lib/libcrypto/man/man3/SSL_get_handshake_rtt.3 | 114 + .../libcrypto/man/man3/SSL_get_peer_cert_chain.3 | 112 +- .../libcrypto/man/man3/SSL_get_peer_certificate.3 | 117 +- .../man/man3/SSL_get_peer_signature_nid.3 | 141 +- .../lib/libcrypto/man/man3/SSL_get_peer_tmp_key.3 | 102 +- .../lib/libcrypto/man/man3/SSL_get_psk_identity.3 | 112 +- secure/lib/libcrypto/man/man3/SSL_get_rbio.3 | 104 +- .../libcrypto/man/man3/SSL_get_rpoll_descriptor.3 | 143 + secure/lib/libcrypto/man/man3/SSL_get_session.3 | 134 +- .../libcrypto/man/man3/SSL_get_shared_sigalgs.3 | 116 +- secure/lib/libcrypto/man/man3/SSL_get_stream_id.3 | 154 + .../libcrypto/man/man3/SSL_get_stream_read_state.3 | 203 + secure/lib/libcrypto/man/man3/SSL_get_value_uint.3 | 371 + .../lib/libcrypto/man/man3/SSL_get_verify_result.3 | 104 +- secure/lib/libcrypto/man/man3/SSL_get_version.3 | 179 +- secure/lib/libcrypto/man/man3/SSL_group_to_name.3 | 110 +- secure/lib/libcrypto/man/man3/SSL_handle_events.3 | 147 + secure/lib/libcrypto/man/man3/SSL_in_init.3 | 122 +- .../lib/libcrypto/man/man3/SSL_inject_net_dgram.3 | 108 + secure/lib/libcrypto/man/man3/SSL_key_update.3 | 154 +- secure/lib/libcrypto/man/man3/SSL_library_init.3 | 108 +- .../libcrypto/man/man3/SSL_load_client_CA_file.3 | 132 +- secure/lib/libcrypto/man/man3/SSL_new.3 | 137 +- secure/lib/libcrypto/man/man3/SSL_new_domain.3 | 153 + secure/lib/libcrypto/man/man3/SSL_new_listener.3 | 265 + secure/lib/libcrypto/man/man3/SSL_new_stream.3 | 153 + secure/lib/libcrypto/man/man3/SSL_pending.3 | 108 +- secure/lib/libcrypto/man/man3/SSL_poll.3 | 421 + secure/lib/libcrypto/man/man3/SSL_read.3 | 160 +- .../lib/libcrypto/man/man3/SSL_read_early_data.3 | 199 +- secure/lib/libcrypto/man/man3/SSL_rstate_string.3 | 130 +- secure/lib/libcrypto/man/man3/SSL_session_reused.3 | 102 +- secure/lib/libcrypto/man/man3/SSL_set1_host.3 | 180 +- .../man/man3/SSL_set1_initial_peer_addr.3 | 114 + .../libcrypto/man/man3/SSL_set1_server_cert_type.3 | 245 + .../libcrypto/man/man3/SSL_set_async_callback.3 | 138 +- secure/lib/libcrypto/man/man3/SSL_set_bio.3 | 135 +- .../lib/libcrypto/man/man3/SSL_set_blocking_mode.3 | 128 + .../lib/libcrypto/man/man3/SSL_set_connect_state.3 | 104 +- .../man/man3/SSL_set_default_stream_mode.3 | 173 + secure/lib/libcrypto/man/man3/SSL_set_fd.3 | 122 +- .../man/man3/SSL_set_incoming_stream_policy.3 | 141 + .../lib/libcrypto/man/man3/SSL_set_quic_tls_cbs.3 | 238 + .../lib/libcrypto/man/man3/SSL_set_retry_verify.3 | 104 +- secure/lib/libcrypto/man/man3/SSL_set_session.3 | 120 +- .../libcrypto/man/man3/SSL_set_session_secret_cb.3 | 123 + secure/lib/libcrypto/man/man3/SSL_set_shutdown.3 | 130 +- .../lib/libcrypto/man/man3/SSL_set_verify_result.3 | 98 +- secure/lib/libcrypto/man/man3/SSL_shutdown.3 | 575 +- secure/lib/libcrypto/man/man3/SSL_state_string.3 | 106 +- .../lib/libcrypto/man/man3/SSL_stream_conclude.3 | 113 + secure/lib/libcrypto/man/man3/SSL_stream_reset.3 | 131 + secure/lib/libcrypto/man/man3/SSL_want.3 | 147 +- secure/lib/libcrypto/man/man3/SSL_write.3 | 210 +- secure/lib/libcrypto/man/man3/TS_RESP_CTX_new.3 | 109 +- secure/lib/libcrypto/man/man3/TS_VERIFY_CTX.3 | 211 + .../libcrypto/man/man3/TS_VERIFY_CTX_set_certs.3 | 190 - secure/lib/libcrypto/man/man3/UI_STRING.3 | 164 +- secure/lib/libcrypto/man/man3/UI_UTIL_read_pw.3 | 110 +- secure/lib/libcrypto/man/man3/UI_create_method.3 | 140 +- secure/lib/libcrypto/man/man3/UI_new.3 | 190 +- secure/lib/libcrypto/man/man3/X509V3_get_d2i.3 | 178 +- secure/lib/libcrypto/man/man3/X509V3_set_ctx.3 | 136 +- .../lib/libcrypto/man/man3/X509_ACERT_add1_attr.3 | 120 + .../libcrypto/man/man3/X509_ACERT_add_attr_nconf.3 | 120 + .../man/man3/X509_ACERT_get0_holder_baseCertId.3 | 168 + .../lib/libcrypto/man/man3/X509_ACERT_get_attr.3 | 113 + .../lib/libcrypto/man/man3/X509_ACERT_print_ex.3 | 159 + secure/lib/libcrypto/man/man3/X509_ALGOR_dup.3 | 132 +- secure/lib/libcrypto/man/man3/X509_ATTRIBUTE.3 | 321 + .../libcrypto/man/man3/X509_CRL_get0_by_serial.3 | 116 +- .../libcrypto/man/man3/X509_EXTENSION_set_object.3 | 112 +- secure/lib/libcrypto/man/man3/X509_LOOKUP.3 | 154 +- .../lib/libcrypto/man/man3/X509_LOOKUP_hash_dir.3 | 128 +- .../lib/libcrypto/man/man3/X509_LOOKUP_meth_new.3 | 104 +- .../man/man3/X509_NAME_ENTRY_get_object.3 | 114 +- .../man/man3/X509_NAME_add_entry_by_txt.3 | 124 +- secure/lib/libcrypto/man/man3/X509_NAME_get0_der.3 | 96 +- .../man/man3/X509_NAME_get_index_by_NID.3 | 116 +- secure/lib/libcrypto/man/man3/X509_NAME_print_ex.3 | 154 +- secure/lib/libcrypto/man/man3/X509_PUBKEY_new.3 | 182 +- secure/lib/libcrypto/man/man3/X509_REQ_get_attr.3 | 164 + .../libcrypto/man/man3/X509_REQ_get_extensions.3 | 107 + secure/lib/libcrypto/man/man3/X509_SIG_get0.3 | 96 +- .../man/man3/X509_STORE_CTX_get_by_subject.3 | 105 + .../libcrypto/man/man3/X509_STORE_CTX_get_error.3 | 226 +- secure/lib/libcrypto/man/man3/X509_STORE_CTX_new.3 | 220 +- .../man/man3/X509_STORE_CTX_set_verify_cb.3 | 132 +- .../lib/libcrypto/man/man3/X509_STORE_add_cert.3 | 146 +- .../lib/libcrypto/man/man3/X509_STORE_get0_param.3 | 130 +- secure/lib/libcrypto/man/man3/X509_STORE_new.3 | 111 +- .../man/man3/X509_STORE_set_verify_cb_func.3 | 152 +- .../man/man3/X509_VERIFY_PARAM_set_flags.3 | 217 +- secure/lib/libcrypto/man/man3/X509_add_cert.3 | 105 +- secure/lib/libcrypto/man/man3/X509_check_ca.3 | 106 +- secure/lib/libcrypto/man/man3/X509_check_host.3 | 184 +- secure/lib/libcrypto/man/man3/X509_check_issued.3 | 98 +- .../libcrypto/man/man3/X509_check_private_key.3 | 116 +- secure/lib/libcrypto/man/man3/X509_check_purpose.3 | 219 +- secure/lib/libcrypto/man/man3/X509_cmp.3 | 121 +- secure/lib/libcrypto/man/man3/X509_cmp_time.3 | 134 +- secure/lib/libcrypto/man/man3/X509_digest.3 | 118 +- secure/lib/libcrypto/man/man3/X509_dup.3 | 358 +- .../man/man3/X509_get0_distinguishing_id.3 | 114 +- .../lib/libcrypto/man/man3/X509_get0_notBefore.3 | 154 +- .../lib/libcrypto/man/man3/X509_get0_signature.3 | 140 +- secure/lib/libcrypto/man/man3/X509_get0_uids.3 | 122 +- .../man/man3/X509_get_default_cert_file.3 | 139 + .../libcrypto/man/man3/X509_get_extension_flags.3 | 176 +- secure/lib/libcrypto/man/man3/X509_get_pubkey.3 | 108 +- .../lib/libcrypto/man/man3/X509_get_serialNumber.3 | 128 +- .../lib/libcrypto/man/man3/X509_get_subject_name.3 | 134 +- secure/lib/libcrypto/man/man3/X509_get_version.3 | 123 +- secure/lib/libcrypto/man/man3/X509_load_http.3 | 111 +- secure/lib/libcrypto/man/man3/X509_new.3 | 132 +- secure/lib/libcrypto/man/man3/X509_sign.3 | 118 +- secure/lib/libcrypto/man/man3/X509_verify.3 | 114 +- secure/lib/libcrypto/man/man3/X509_verify_cert.3 | 125 +- .../lib/libcrypto/man/man3/X509v3_get_ext_by_NID.3 | 141 +- secure/lib/libcrypto/man/man3/b2i_PVK_bio_ex.3 | 106 +- .../libcrypto/man/man3/d2i_PKCS8PrivateKey_bio.3 | 112 +- secure/lib/libcrypto/man/man3/d2i_PrivateKey.3 | 122 +- secure/lib/libcrypto/man/man3/d2i_RSAPrivateKey.3 | 226 +- secure/lib/libcrypto/man/man3/d2i_SSL_SESSION.3 | 125 +- secure/lib/libcrypto/man/man3/d2i_X509.3 | 388 +- secure/lib/libcrypto/man/man3/i2d_CMS_bio_stream.3 | 106 +- .../lib/libcrypto/man/man3/i2d_PKCS7_bio_stream.3 | 106 +- secure/lib/libcrypto/man/man3/i2d_re_X509_tbs.3 | 110 +- secure/lib/libcrypto/man/man3/o2i_SCT_LIST.3 | 104 +- secure/lib/libcrypto/man/man3/s2i_ASN1_IA5STRING.3 | 134 +- secure/lib/libcrypto/man/man5/config.5 | 257 +- secure/lib/libcrypto/man/man5/fips_config.5 | 236 +- secure/lib/libcrypto/man/man5/x509v3_config.5 | 235 +- .../lib/libcrypto/man/man7/EVP_ASYM_CIPHER-RSA.7 | 216 +- .../lib/libcrypto/man/man7/EVP_ASYM_CIPHER-SM2.7 | 114 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-AES.7 | 190 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-ARIA.7 | 140 +- .../lib/libcrypto/man/man7/EVP_CIPHER-BLOWFISH.7 | 120 +- .../lib/libcrypto/man/man7/EVP_CIPHER-CAMELLIA.7 | 130 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-CAST.7 | 120 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-CHACHA.7 | 110 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-DES.7 | 173 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-IDEA.7 | 120 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-NULL.7 | 139 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-RC2.7 | 130 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-RC4.7 | 115 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-RC5.7 | 120 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-SEED.7 | 120 +- secure/lib/libcrypto/man/man7/EVP_CIPHER-SM4.7 | 139 +- secure/lib/libcrypto/man/man7/EVP_KDF-ARGON2.7 | 236 + secure/lib/libcrypto/man/man7/EVP_KDF-HKDF.7 | 211 +- secure/lib/libcrypto/man/man7/EVP_KDF-HMAC-DRBG.7 | 117 + secure/lib/libcrypto/man/man7/EVP_KDF-KB.7 | 228 +- secure/lib/libcrypto/man/man7/EVP_KDF-KRB5KDF.7 | 154 +- secure/lib/libcrypto/man/man7/EVP_KDF-PBKDF1.7 | 150 +- secure/lib/libcrypto/man/man7/EVP_KDF-PBKDF2.7 | 172 +- secure/lib/libcrypto/man/man7/EVP_KDF-PKCS12KDF.7 | 158 +- secure/lib/libcrypto/man/man7/EVP_KDF-PVKKDF.7 | 118 + secure/lib/libcrypto/man/man7/EVP_KDF-SCRYPT.7 | 175 +- secure/lib/libcrypto/man/man7/EVP_KDF-SS.7 | 204 +- secure/lib/libcrypto/man/man7/EVP_KDF-SSHKDF.7 | 223 +- secure/lib/libcrypto/man/man7/EVP_KDF-TLS13_KDF.7 | 233 +- secure/lib/libcrypto/man/man7/EVP_KDF-TLS1_PRF.7 | 194 +- secure/lib/libcrypto/man/man7/EVP_KDF-X942-ASN1.7 | 225 +- .../lib/libcrypto/man/man7/EVP_KDF-X942-CONCAT.7 | 106 +- secure/lib/libcrypto/man/man7/EVP_KDF-X963.7 | 176 +- secure/lib/libcrypto/man/man7/EVP_KEM-EC.7 | 128 + secure/lib/libcrypto/man/man7/EVP_KEM-ML-KEM.7 | 108 + secure/lib/libcrypto/man/man7/EVP_KEM-RSA.7 | 141 +- secure/lib/libcrypto/man/man7/EVP_KEM-X25519.7 | 127 + secure/lib/libcrypto/man/man7/EVP_KEYEXCH-DH.7 | 176 +- secure/lib/libcrypto/man/man7/EVP_KEYEXCH-ECDH.7 | 179 +- secure/lib/libcrypto/man/man7/EVP_KEYEXCH-X25519.7 | 124 +- secure/lib/libcrypto/man/man7/EVP_MAC-BLAKE2.7 | 172 +- secure/lib/libcrypto/man/man7/EVP_MAC-CMAC.7 | 165 +- secure/lib/libcrypto/man/man7/EVP_MAC-GMAC.7 | 144 +- secure/lib/libcrypto/man/man7/EVP_MAC-HMAC.7 | 183 +- secure/lib/libcrypto/man/man7/EVP_MAC-KMAC.7 | 186 +- secure/lib/libcrypto/man/man7/EVP_MAC-Poly1305.7 | 131 +- secure/lib/libcrypto/man/man7/EVP_MAC-Siphash.7 | 135 +- secure/lib/libcrypto/man/man7/EVP_MD-BLAKE2.7 | 134 +- secure/lib/libcrypto/man/man7/EVP_MD-KECCAK.7 | 96 + secure/lib/libcrypto/man/man7/EVP_MD-MD2.7 | 100 +- secure/lib/libcrypto/man/man7/EVP_MD-MD4.7 | 100 +- secure/lib/libcrypto/man/man7/EVP_MD-MD5-SHA1.7 | 115 +- secure/lib/libcrypto/man/man7/EVP_MD-MD5.7 | 100 +- secure/lib/libcrypto/man/man7/EVP_MD-MDC2.7 | 111 +- secure/lib/libcrypto/man/man7/EVP_MD-NULL.7 | 101 +- secure/lib/libcrypto/man/man7/EVP_MD-RIPEMD160.7 | 106 +- secure/lib/libcrypto/man/man7/EVP_MD-SHA1.7 | 117 +- secure/lib/libcrypto/man/man7/EVP_MD-SHA2.7 | 135 +- secure/lib/libcrypto/man/man7/EVP_MD-SHA3.7 | 122 +- secure/lib/libcrypto/man/man7/EVP_MD-SHAKE.7 | 181 +- secure/lib/libcrypto/man/man7/EVP_MD-SM3.7 | 100 +- secure/lib/libcrypto/man/man7/EVP_MD-WHIRLPOOL.7 | 100 +- secure/lib/libcrypto/man/man7/EVP_MD-common.7 | 125 +- secure/lib/libcrypto/man/man7/EVP_PKEY-DH.7 | 322 +- secure/lib/libcrypto/man/man7/EVP_PKEY-DSA.7 | 176 +- secure/lib/libcrypto/man/man7/EVP_PKEY-EC.7 | 356 +- secure/lib/libcrypto/man/man7/EVP_PKEY-FFC.7 | 307 +- secure/lib/libcrypto/man/man7/EVP_PKEY-HMAC.7 | 164 +- secure/lib/libcrypto/man/man7/EVP_PKEY-ML-DSA.7 | 349 + secure/lib/libcrypto/man/man7/EVP_PKEY-ML-KEM.7 | 367 + secure/lib/libcrypto/man/man7/EVP_PKEY-RSA.7 | 419 +- secure/lib/libcrypto/man/man7/EVP_PKEY-SLH-DSA.7 | 196 + secure/lib/libcrypto/man/man7/EVP_PKEY-SM2.7 | 144 +- secure/lib/libcrypto/man/man7/EVP_PKEY-X25519.7 | 170 +- secure/lib/libcrypto/man/man7/EVP_RAND-CRNG-TEST.7 | 120 + secure/lib/libcrypto/man/man7/EVP_RAND-CTR-DRBG.7 | 199 +- secure/lib/libcrypto/man/man7/EVP_RAND-HASH-DRBG.7 | 224 +- secure/lib/libcrypto/man/man7/EVP_RAND-HMAC-DRBG.7 | 230 +- secure/lib/libcrypto/man/man7/EVP_RAND-JITTER.7 | 153 + secure/lib/libcrypto/man/man7/EVP_RAND-SEED-SRC.7 | 130 +- secure/lib/libcrypto/man/man7/EVP_RAND-TEST-RAND.7 | 198 +- secure/lib/libcrypto/man/man7/EVP_RAND.7 | 274 +- secure/lib/libcrypto/man/man7/EVP_SIGNATURE-DSA.7 | 185 +- .../lib/libcrypto/man/man7/EVP_SIGNATURE-ECDSA.7 | 175 +- .../lib/libcrypto/man/man7/EVP_SIGNATURE-ED25519.7 | 215 +- secure/lib/libcrypto/man/man7/EVP_SIGNATURE-HMAC.7 | 108 +- .../lib/libcrypto/man/man7/EVP_SIGNATURE-ML-DSA.7 | 180 + secure/lib/libcrypto/man/man7/EVP_SIGNATURE-RSA.7 | 285 +- .../lib/libcrypto/man/man7/EVP_SIGNATURE-SLH-DSA.7 | 176 + secure/lib/libcrypto/man/man7/Makefile | 36 +- secure/lib/libcrypto/man/man7/OSSL_PROVIDER-FIPS.7 | 652 +- secure/lib/libcrypto/man/man7/OSSL_PROVIDER-base.7 | 306 +- .../lib/libcrypto/man/man7/OSSL_PROVIDER-default.7 | 534 +- .../lib/libcrypto/man/man7/OSSL_PROVIDER-legacy.7 | 144 +- secure/lib/libcrypto/man/man7/OSSL_PROVIDER-null.7 | 98 +- .../lib/libcrypto/man/man7/OSSL_STORE-winstore.7 | 123 + secure/lib/libcrypto/man/man7/RAND.7 | 141 +- secure/lib/libcrypto/man/man7/RSA-PSS.7 | 120 +- secure/lib/libcrypto/man/man7/X25519.7 | 106 +- secure/lib/libcrypto/man/man7/bio.7 | 165 +- secure/lib/libcrypto/man/man7/crypto.7 | 687 - secure/lib/libcrypto/man/man7/ct.7 | 112 +- secure/lib/libcrypto/man/man7/des_modes.7 | 202 +- secure/lib/libcrypto/man/man7/evp.7 | 143 +- secure/lib/libcrypto/man/man7/fips_module.7 | 394 +- secure/lib/libcrypto/man/man7/life_cycle-cipher.7 | 124 +- secure/lib/libcrypto/man/man7/life_cycle-digest.7 | 225 +- secure/lib/libcrypto/man/man7/life_cycle-kdf.7 | 122 +- secure/lib/libcrypto/man/man7/life_cycle-mac.7 | 130 +- secure/lib/libcrypto/man/man7/life_cycle-pkey.7 | 150 +- secure/lib/libcrypto/man/man7/life_cycle-rand.7 | 126 +- secure/lib/libcrypto/man/man7/openssl-core.h.7 | 110 +- .../libcrypto/man/man7/openssl-core_dispatch.h.7 | 104 +- .../lib/libcrypto/man/man7/openssl-core_names.h.7 | 106 +- secure/lib/libcrypto/man/man7/openssl-env.7 | 231 +- secure/lib/libcrypto/man/man7/openssl-glossary.7 | 186 +- secure/lib/libcrypto/man/man7/openssl-qlog.7 | 274 + .../libcrypto/man/man7/openssl-quic-concurrency.7 | 316 + secure/lib/libcrypto/man/man7/openssl-quic.7 | 777 + secure/lib/libcrypto/man/man7/openssl-threads.7 | 134 +- .../lib/libcrypto/man/man7/openssl_user_macros.7 | 112 +- .../libcrypto/man/man7/ossl-guide-introduction.7 | 160 + .../man/man7/ossl-guide-libcrypto-introduction.7 | 443 + .../man/man7/ossl-guide-libraries-introduction.7 | 372 + .../man/man7/ossl-guide-libssl-introduction.7 | 160 + .../{migration_guide.7 => ossl-guide-migration.7} | 1504 +- .../man/man7/ossl-guide-quic-client-block.7 | 461 + .../man/man7/ossl-guide-quic-client-non-block.7 | 528 + .../man/man7/ossl-guide-quic-introduction.7 | 232 + .../man/man7/ossl-guide-quic-multi-stream.7 | 453 + .../man/man7/ossl-guide-quic-server-block.7 | 355 + .../man/man7/ossl-guide-quic-server-non-block.7 | 447 + .../man/man7/ossl-guide-tls-client-block.7 | 652 + .../man/man7/ossl-guide-tls-client-non-block.7 | 435 + .../man/man7/ossl-guide-tls-introduction.7 | 376 + .../man/man7/ossl-guide-tls-server-block.7 | 405 + secure/lib/libcrypto/man/man7/ossl_store-file.7 | 122 +- secure/lib/libcrypto/man/man7/ossl_store.7 | 139 +- .../lib/libcrypto/man/man7/passphrase-encoding.7 | 178 +- secure/lib/libcrypto/man/man7/property.7 | 152 +- .../lib/libcrypto/man/man7/provider-asym_cipher.7 | 247 +- secure/lib/libcrypto/man/man7/provider-base.7 | 531 +- secure/lib/libcrypto/man/man7/provider-cipher.7 | 263 +- secure/lib/libcrypto/man/man7/provider-decoder.7 | 220 +- secure/lib/libcrypto/man/man7/provider-digest.7 | 226 +- secure/lib/libcrypto/man/man7/provider-encoder.7 | 222 +- secure/lib/libcrypto/man/man7/provider-kdf.7 | 402 +- secure/lib/libcrypto/man/man7/provider-kem.7 | 221 +- secure/lib/libcrypto/man/man7/provider-keyexch.7 | 206 +- secure/lib/libcrypto/man/man7/provider-keymgmt.7 | 328 +- secure/lib/libcrypto/man/man7/provider-mac.7 | 224 +- secure/lib/libcrypto/man/man7/provider-object.7 | 182 +- secure/lib/libcrypto/man/man7/provider-rand.7 | 284 +- secure/lib/libcrypto/man/man7/provider-signature.7 | 456 +- secure/lib/libcrypto/man/man7/provider-skeymgmt.7 | 232 + secure/lib/libcrypto/man/man7/provider-storemgmt.7 | 227 +- secure/lib/libcrypto/man/man7/provider.7 | 215 +- secure/lib/libcrypto/man/man7/proxy-certificates.7 | 142 +- secure/lib/libcrypto/man/man7/ssl.7 | 227 - secure/lib/libcrypto/man/man7/x509.7 | 118 +- secure/lib/libcrypto/modules/Makefile.inc | 1 + secure/lib/libcrypto/modules/legacy/Makefile | 3 - secure/lib/libssh/Makefile | 2 + secure/lib/libssl/Makefile | 80 +- secure/lib/libssl/Version.map | 89 + secure/usr.bin/openssl/Makefile | 13 +- secure/usr.bin/openssl/Makefile.man | 1 + secure/usr.bin/openssl/man/CA.pl.1 | 178 +- secure/usr.bin/openssl/man/openssl-asn1parse.1 | 176 +- secure/usr.bin/openssl/man/openssl-ca.1 | 455 +- secure/usr.bin/openssl/man/openssl-ciphers.1 | 460 +- secure/usr.bin/openssl/man/openssl-cmds.1 | 110 +- secure/usr.bin/openssl/man/openssl-cmp.1 | 829 +- secure/usr.bin/openssl/man/openssl-cms.1 | 436 +- secure/usr.bin/openssl/man/openssl-crl.1 | 185 +- secure/usr.bin/openssl/man/openssl-crl2pkcs7.1 | 151 +- secure/usr.bin/openssl/man/openssl-dgst.1 | 232 +- secure/usr.bin/openssl/man/openssl-dhparam.1 | 172 +- secure/usr.bin/openssl/man/openssl-dsa.1 | 166 +- secure/usr.bin/openssl/man/openssl-dsaparam.1 | 176 +- secure/usr.bin/openssl/man/openssl-ec.1 | 174 +- secure/usr.bin/openssl/man/openssl-ecparam.1 | 185 +- secure/usr.bin/openssl/man/openssl-enc.1 | 280 +- secure/usr.bin/openssl/man/openssl-engine.1 | 114 +- secure/usr.bin/openssl/man/openssl-errstr.1 | 102 +- secure/usr.bin/openssl/man/openssl-fipsinstall.1 | 416 +- .../usr.bin/openssl/man/openssl-format-options.1 | 130 +- secure/usr.bin/openssl/man/openssl-gendsa.1 | 133 +- secure/usr.bin/openssl/man/openssl-genpkey.1 | 446 +- secure/usr.bin/openssl/man/openssl-genrsa.1 | 130 +- secure/usr.bin/openssl/man/openssl-info.1 | 128 +- secure/usr.bin/openssl/man/openssl-kdf.1 | 207 +- secure/usr.bin/openssl/man/openssl-list.1 | 237 +- secure/usr.bin/openssl/man/openssl-mac.1 | 239 +- .../openssl/man/openssl-namedisplay-options.1 | 192 +- secure/usr.bin/openssl/man/openssl-nseq.1 | 109 +- secure/usr.bin/openssl/man/openssl-ocsp.1 | 408 +- .../openssl/man/openssl-passphrase-options.1 | 132 +- secure/usr.bin/openssl/man/openssl-passwd.1 | 141 +- secure/usr.bin/openssl/man/openssl-pkcs12.1 | 307 +- secure/usr.bin/openssl/man/openssl-pkcs7.1 | 142 +- secure/usr.bin/openssl/man/openssl-pkcs8.1 | 217 +- secure/usr.bin/openssl/man/openssl-pkey.1 | 187 +- secure/usr.bin/openssl/man/openssl-pkeyparam.1 | 126 +- secure/usr.bin/openssl/man/openssl-pkeyutl.1 | 628 +- secure/usr.bin/openssl/man/openssl-prime.1 | 115 +- secure/usr.bin/openssl/man/openssl-rand.1 | 133 +- secure/usr.bin/openssl/man/openssl-rehash.1 | 150 +- secure/usr.bin/openssl/man/openssl-req.1 | 420 +- secure/usr.bin/openssl/man/openssl-rsa.1 | 170 +- secure/usr.bin/openssl/man/openssl-rsautl.1 | 170 +- secure/usr.bin/openssl/man/openssl-s_client.1 | 727 +- secure/usr.bin/openssl/man/openssl-s_server.1 | 657 +- secure/usr.bin/openssl/man/openssl-s_time.1 | 154 +- secure/usr.bin/openssl/man/openssl-sess_id.1 | 164 +- secure/usr.bin/openssl/man/openssl-skeyutl.1 | 130 + secure/usr.bin/openssl/man/openssl-smime.1 | 300 +- secure/usr.bin/openssl/man/openssl-speed.1 | 175 +- secure/usr.bin/openssl/man/openssl-spkac.1 | 165 +- secure/usr.bin/openssl/man/openssl-srp.1 | 141 +- secure/usr.bin/openssl/man/openssl-storeutl.1 | 146 +- secure/usr.bin/openssl/man/openssl-ts.1 | 377 +- .../openssl/man/openssl-verification-options.1 | 552 +- secure/usr.bin/openssl/man/openssl-verify.1 | 137 +- secure/usr.bin/openssl/man/openssl-version.1 | 155 +- secure/usr.bin/openssl/man/openssl-x509.1 | 455 +- secure/usr.bin/openssl/man/openssl.1 | 555 +- secure/usr.bin/openssl/man/tsget.1 | 150 +- .../openssl/aarch64/aes-gcm-armv8-unroll8_64.S | 8488 +++++ sys/crypto/openssl/aarch64/aes-gcm-armv8_64.S | 1 + sys/crypto/openssl/aarch64/aesv8-armx.S | 731 +- sys/crypto/openssl/aarch64/arm64cpuid.S | 137 +- sys/crypto/openssl/aarch64/armv8-mont.S | 1 + sys/crypto/openssl/aarch64/bsaes-armv8.S | 2356 ++ sys/crypto/openssl/aarch64/chacha-armv8-sve.S | 3559 ++ sys/crypto/openssl/aarch64/chacha-armv8.S | 59 +- sys/crypto/openssl/aarch64/ecp_nistz256-armv8.S | 100 +- sys/crypto/openssl/aarch64/ecp_sm2p256-armv8.S | 837 + sys/crypto/openssl/aarch64/ghashv8-armx.S | 105 +- sys/crypto/openssl/aarch64/keccak1600-armv8.S | 14 +- sys/crypto/openssl/aarch64/md5-aarch64.S | 678 + sys/crypto/openssl/aarch64/poly1305-armv8.S | 20 +- sys/crypto/openssl/aarch64/sha1-armv8.S | 6 +- sys/crypto/openssl/aarch64/sha256-armv8.S | 15 +- sys/crypto/openssl/aarch64/sha512-armv8.S | 12 +- sys/crypto/openssl/aarch64/sm3-armv8.S | 509 + sys/crypto/openssl/aarch64/sm4-armv8.S | 1093 + sys/crypto/openssl/aarch64/vpaes-armv8.S | 53 +- sys/crypto/openssl/aarch64/vpsm4-armv8.S | 5021 +++ *** 371597 LINES SKIPPED *** From nobody Fri Aug 8 19:29:23 2025 X-Original-To: dev-commits-src-main@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 4bzDck4jV3z64RPg; Fri, 08 Aug 2025 19:29:42 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzDck0jxTz3Kxm; Fri, 08 Aug 2025 19:29:42 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-3214762071bso2948159a91.3; Fri, 08 Aug 2025 12:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754681376; x=1755286176; darn=freebsd.org; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xUCWECb9rGvNfNvYjqMQsGHDi6yNhyeGW/C1MzLQvaw=; b=lmohMHRq2jpy59CkE2tBKMVwUuKQZAL+OBKd9gwNrSzx6Oi1r2Yn4ZR6vIX2sgZ3pc rF1V/aC8GQ7BTqyQmlHFZ6CPvvV7CSOpRQwYOYTKIH6tZIHbuUDQq3gUFF4/+Q47ydtC 8CWsy6QAFbRwI6H6qWcuQr/rA2NDS/9cH6uGaT93nP2a/Gj2WFclUfwJA1Bt6kfgLi2u R/XkySD5kgpOqczmkaTvuSQhYdttemzTmCqaFH6NjiYMsOG2Zm3WFaYi617G/bU6WXzq d1RDWnya1SPb/m+NlxyDGomTtqur0DhOW0QCIZ2Z+EE76/cGjmmhHX1eDA3xZ7Oc0UgQ sK6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754681376; x=1755286176; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xUCWECb9rGvNfNvYjqMQsGHDi6yNhyeGW/C1MzLQvaw=; b=uW5p03pEnM3rXA4vV+J9l56jM87cKSYmBiC6v92bPUIMUjBxIakHEXXN6tglWMAHfD lTg+pu0LqtfSAis4y/8NIn9AoPUabzyqN5GNK2DeEkIK03l3IkolwVz0mVJO2m8PnpEz uGImfAosyOAIlBjLHwT6qWtCVTsUtdltsZG5/UQEqWaFhaF6TJCYvJSqI9KF7BlUD3bX bfj/ewmqqt+dHfw3nxzliIihJOo3lYjDN6esfZhcCdxMYxe9LQtpwHxMqEZKVbCGUnEb Cadm6iCr5vD/IlQOYQ8QMgOl4NLwKOvi8gZ+Wgt3CaU+wC1nUzTQqV+P8ajfTQzOu/fm lIOw== X-Forwarded-Encrypted: i=1; AJvYcCWcdmxGm6hIthWPylqhQlJA1KszE8VsSmNsHy+FRBv90t9S0tX0TYDfmJbaHyFp/B+fG92L0d8kJ0JYQoUMV88/H/eUnJ4=@freebsd.org, AJvYcCXFGodevSKN3mSRcLbi23eVCxiIa9Q1HIt0B8b0kpu87/2mtLy690v6wiv9N+zVlTF1y6p3Fwx06U+UxdYKlfTt6Qxe@freebsd.org X-Gm-Message-State: AOJu0Yzm0EigvgFksQHlrw24EO514EcKeo8mn2VvDrq+Bxx7b9FGifJm WrPUJIj/8qtdZlY8QoDxCU/Hht+7qeUKJ00FquyNXhRmT0i84EaP75hwg0pf+zij X-Gm-Gg: ASbGncsmpX+n9XhwPsL66r+TlQ4OJFB3IyQ6jsLa3RyxrFwKwOyFkrXXepH/eLoShog av02jtbpBRat5hxtm/l2rGORTuX2v0hoX2KEKeeNHU/4ROFTJrpigJ4/vbHTaK+fvOR4c5cuR+h usXKXMyAyxgc88jx2UmxL4gFqXY5DrIJEH5H4vtgDOX0eqbhNx6A58283x9S3Zqa6Z9clJegR2Q sWmnwrp0JKKvewkMdYOlutNMxxzFBNVMdyPGFeHxFEY1VfgrLVbcb+vZ+GvKzpgKzNMAEmTTASu ZANFYI1qB1DIDq7slPI2rAxIBF12YIHUX9PERLt3YRF2gfDVuiB7a4m1Y+pRpUkeE3dJiKoBtW1 sEMi59GjqeZmljGZzAZjaHiToNNpRqELDUMG6fpDqDPFLYuA= X-Google-Smtp-Source: AGHT+IHG+JXKZTyMmAGZfTx4pPYISm/Ake+IiwKMTVMlwVRB4+LNTV3WIitNnJfjBh6Ec2WxfKHWVA== X-Received: by 2002:a17:90b:3e4b:b0:31e:ff94:3fa0 with SMTP id 98e67ed59e1d1-321839e0210mr5751618a91.6.1754681375596; Fri, 08 Aug 2025 12:29:35 -0700 (PDT) Received: from smtpclient.apple ([176.100.43.107]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3218e703adasm664726a91.4.2025.08.08.12.29.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Aug 2025 12:29:35 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_45418831-DF0D-4053-9733-9428D25D6417"; protocol="application/pgp-signature"; micalg=pgp-sha256 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: e7be843b4a16 - main - Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' From: "Enji Cooper (yaneurabeya)" In-Reply-To: <202508081922.578JM3A0086462@gitrepo.freebsd.org> Date: Fri, 8 Aug 2025 12:29:23 -0700 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Message-Id: References: <202508081922.578JM3A0086462@gitrepo.freebsd.org> To: Pierre Pronchery X-Mailer: Apple Mail (2.3826.700.81) X-Rspamd-Queue-Id: 4bzDck0jxTz3Kxm X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] --Apple-Mail=_45418831-DF0D-4053-9733-9428D25D6417 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Aug 8, 2025, at 12:22=E2=80=AFPM, Pierre Pronchery = wrote: >=20 > The branch main has been updated by khorben: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3De7be843b4a162e68651d3911f0357ed4= 64915629 >=20 > commit e7be843b4a162e68651d3911f0357ed464915629 > Merge: d0ff5773cefa 1095efe41fee > Author: Pierre Pronchery > AuthorDate: 2025-08-07 13:50:32 +0000 > Commit: Pierre Pronchery > CommitDate: 2025-08-07 13:50:32 +0000 >=20 > Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' >=20 > Approved by: philip (mentor) > Sponsored by: Alpha-Omega Beach Cleaning Project > Sponsored by: The FreeBSD Foundation This commit didn=E2=80=99t note that OpenSSL 3.5.1 was imported. I think = it=E2=80=99s best to revert the merge commit and correct the commit = message. Feel free to copy the commit message from the original import, = adding more details as needed. Cheers, -Enji= --Apple-Mail=_45418831-DF0D-4053-9733-9428D25D6417 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEkHfexGRJ3gYRdA2gGpE5DjPsNJgFAmiWUBQACgkQGpE5DjPs NJh0dRAAjIqbwpxaeG/nopkjN8OsR8kdjWrn/SQ3yzUtm08bYTZOJUKYOGIts+GH WKANVuiFDe7WVVdybtry+Nz9c4et/x+BgLNI3QTyIc/TIXpg52qycD9+BapxOU9x l3MuHUvlwKlsln6XiJl4JosfrMObzAnPIHu+AuCF9aasJec42vuaK3+3wSM8+E1L 4nnya2To3Gxx57pntZbB9Lrx794+turxAND1/4/bm5vtIuKwWss+TIEfMJyanY6C YKWTv0ypQskY8IKNt+fUYfAJzxJD+2IAUxuNQdt0h27wuVoA/Wq+wN+KdD0I5LBy ndVukaMaqGAcmuJJh2PsLHc2NJ/HsOPXU/Af0q/OaPolCzMYQEAodp8IzG0dOvv8 MkuZ36WAUX9YWL0cF76eGcbUSouDpsvlvoq95ykaZV3i1F6H4ttZMOYXnG0kRO8o Slr7dLhyyeBCXGPsNrSopm9xosi1GmXDlZYVGTnc08f+wS8EtBJmNynuc5LsFC6W VF6UdFjoWYqvrhIaciAiJeCmGTXU1z96/FhFTtaA4vip7SoUhPdrs3Gts259KbaD xEOUAzKaDNbMQqDB6eNa6PkRLeB/Qmow7qfZbLYMu5YrJpFevBetl+FCrql3WTuu Ml1fnnZ/Jty5X/RFH3M9uGfT0g4rT8UR9WJTWlsYgt4Zikwj7nw= =H61i -----END PGP SIGNATURE----- --Apple-Mail=_45418831-DF0D-4053-9733-9428D25D6417-- From nobody Fri Aug 8 21:51:23 2025 X-Original-To: dev-commits-src-main@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 4bzHmH3g9Jz64Bsw; Fri, 08 Aug 2025 21:51:27 +0000 (UTC) (envelope-from steffen@sdaoden.eu) Received: from sdaoden.eu (sdaoden.eu [217.144.132.164]) (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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzHmH0Rsfz3pDk; Fri, 08 Aug 2025 21:51:26 +0000 (UTC) (envelope-from steffen@sdaoden.eu) Authentication-Results: mx1.freebsd.org; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdaoden.eu; s=citron; t=1754689884; x=1755356550; h=date:author:from:to:cc:subject: message-id:in-reply-to:references:mail-followup-to:openpgp:blahblahblah: mime-version:content-type:content-transfer-encoding:author:from:subject: date:to:cc:resent-author:resent-date:resent-from:resent-sender:resent-to: resent-cc:resent-reply-to:resent-message-id:in-reply-to:references: mime-version:content-type:content-transfer-encoding:content-disposition: content-id:content-description:message-id:mail-followup-to:openpgp: blahblahblah; bh=LppT6EJJML8ycFSpFmPFaMx7dv00JptaOLOFhXri3xU=; b=NLmm8PtPZmf/lcCT3EGn2RQleFejmFztDmL2UTq6DV8i+VPB2vfEyPC564wZmWeCZJZByl7U fW9Y8hM8Nr9QWd/zJEOwSRFEZTVrtvi0Z0vKBSTVc9nS9RYndAoPu95EBORIZnurq7vc3ohplr kIBkV++i/wOZoYoZvHLY0BpvZQ1fQdnK50qJCQGBfOTHk1UqKX6/XMO04K4EGiNwfV7jJFkrUG 3cJfnBJtYELb1fpLXHfMM7tUfaY9ZFG2f70uS/LXmEWJh1C/WwNqZcL8BaB8HdShS6m+qsCOCL iiTJoqfVGJfWBssuthuq0/glaIwZmITFFPv8l/Bsh76kxPNg== Date: Fri, 08 Aug 2025 23:51:23 +0200 Author: Steffen Nurpmeso From: Steffen Nurpmeso To: "Simon J. Gerraty" Cc: , , Subject: Re: git: 5c4d1c85847d - main - Replace license with just SPDX BSD-2-Clause Message-ID: <20250808215123.84IbzAAL@steffen%sdaoden.eu> In-Reply-To: <6150.1754608305@kaos.jnpr.net> References: <202508072215.577MFjpx011932@gitrepo.freebsd.org> <20250807223124.2tsDIUvh@steffen%sdaoden.eu> <6150.1754608305@kaos.jnpr.net> Mail-Followup-To: "Simon J. Gerraty" , , , User-Agent: s-nail v14.9.25-689-gca7cfb3bd1-dirty OpenPGP: id=EE19E1C1F2F7054F8D3954D8308964B51883A0DD; url=https://ftp.sdaoden.eu/steffen.asc; preference=signencrypt BlahBlahBlah: Any stupid boy can crush a beetle. But all the professors in the world can make no bugs. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4bzHmH0Rsfz3pDk X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15987, ipnet:217.144.128.0/20, country:DE] Hello Simon, thanks. Simon J. Gerraty wrote in <6150.1754608305@kaos.jnpr.net>: |Steffen Nurpmeso wrote: |>| Replace license with just SPDX BSD-2-Clause |>=20 |> That is very interesting! And .. are you really sure this is |> right with BSD etc licenses which explicitly require that the |> license text is included? |> So i looked and found [1] which says | |I checked with one of our IP lawyers who said just the SPDX tag "should" |suffice, but best to remove the verbage that conflicts. | |> SPDX IDs are intending to express information about |> licenses. Copyright notices =E2=80=90 statements about who owns the |> copyright in a file or project =E2=80=90 are outside the scope of SPDX |> short-form IDs. |> Therefore, you should not remove or modify existing copyright |> notices in files when adding an SPDX ID. | |Except that in this case the verbage I removed is sufficiently different |from the text of https://spdx.org/licenses/BSD-2-Clause.html |as to potentially trigger arguments - so better safe that sorry, |and I hate the idea of a file which is 90% license, which is why I had |that abbreviated version in the first place. | |If the lawyer says I can get away with just the tag, that works for me. This sounds complicated enough to keep on going with the full regalia here. |> However i am sure you do not do something like this "just like |> that", and would be very interested -- it would be nice to be able |> to vaporise the file header -- i always have that pitfall moment |> when i look into Plan9 / 9front source code, which then simply |> starts off (and very often with "#include ", just like that). | |ISTR the original BSD convention was to not waste space on copyrights in |tiny files, I was forced into putting licenses on everything by some of |my consulting clients back in the '90s And you were improving there. |HTH |--sjg --End of <6150.1754608305@kaos.jnpr.net> --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt) | |During summer's humble, here's David Leonard's grumble | |The black bear, The black bear, |blithely holds his own holds himself at leisure |beating it, up and down tossing over his ups and downs with pleasure | |Farewell, dear collar bear From nobody Fri Aug 8 22:28:11 2025 X-Original-To: dev-commits-src-main@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 4bzJZy17XPz64GF4; Fri, 08 Aug 2025 22:28:26 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzJZx1ztMz3xdm; Fri, 08 Aug 2025 22:28:24 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 578MSB5r027504; Sat, 9 Aug 2025 01:28:14 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 578MSB5r027504 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 578MSBGO027503; Sat, 9 Aug 2025 01:28:11 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 9 Aug 2025 01:28:11 +0300 From: Konstantin Belousov To: Lexi Winter Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: f4fd2aa07cde - main - libutil++: Move to clibs Message-ID: References: <202508081539.578FddbT056896@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508081539.578FddbT056896@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4bzJZx1ztMz3xdm X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Fri, Aug 08, 2025 at 03:39:39PM +0000, Lexi Winter wrote: > The branch main has been updated by ivy: > > URL: https://cgit.FreeBSD.org/src/commit/?id=f4fd2aa07cdeca58ff792aebeca5c572fd92dffc > > commit f4fd2aa07cdeca58ff792aebeca5c572fd92dffc > Author: Lexi Winter > AuthorDate: 2025-08-08 15:14:07 +0000 > Commit: Lexi Winter > CommitDate: 2025-08-08 15:14:07 +0000 > > libutil++: Move to clibs > > This library only installs manual pages, so putting it in its own > package means we build a FreeBSD-libutil++-man package but not a > base FreeBSD-libutil++ package. Without a base package, the man > package can't be installed due to the missing dependency. > > We don't really need a separate package for a few manpages, so move > it to clibs. > > Reviewed by: des > Differential Revision: https://reviews.freebsd.org/D51756 > --- > lib/libutil++/Makefile | 2 +- > release/packages/ucl/libutil++-all.ucl | 4 ---- > 2 files changed, 1 insertion(+), 5 deletions(-) > > diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile > index df3074c2278e..729a336ddb3a 100644 > --- a/lib/libutil++/Makefile > +++ b/lib/libutil++/Makefile > @@ -1,4 +1,4 @@ > -PACKAGE= lib${LIB} > +PACKAGE= clibs > LIB_CXX= util++ > INTERNALLIB= true > SHLIB_MAJOR= 1 > diff --git a/release/packages/ucl/libutil++-all.ucl b/release/packages/ucl/libutil++-all.ucl > deleted file mode 100644 > index dfd77215dbc5..000000000000 > --- a/release/packages/ucl/libutil++-all.ucl > +++ /dev/null > @@ -1,4 +0,0 @@ > -comment = "C++ utility library" > -desc = < -libutil++ contains various C++ utility classes used by the base system. > -EOD clibs package must not be extended arbitrarily. The clibs package is intended to provide the minimal safe atomic update for C runtime. Anything else is out of its scope. Really it should contain just rtld/libc/libthr and required fs structures. From nobody Fri Aug 8 22:31:42 2025 X-Original-To: dev-commits-src-main@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 4bzJfk2l8Pz64Gld; Fri, 08 Aug 2025 22:31:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzJfk22khz3yfQ; Fri, 08 Aug 2025 22:31:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754692302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EtmUG81pUqYfMN13chtY5/65Jnrn2voUNV7PF6ggh28=; b=LK8DZf2jP72/RVGlCT5PSpdbPqdR3PmwTAuPWbd5pVN1hg3eWBzmH9V8nvchTJNPZTPvOM 0CgMaY1M+AEXfUarcqHfrFkIxtXiVGmUBU0fo4+tkNaSRyuDfq3fPadDCnhrcmQfcrzmCw aErGuc4Pvncq+wpvZtlfoWgKl31qJ0c3j5lYaLVu7nJBCVJIwJa38BMfPfw9egZRFtT8ZR Pth5AnN9M8DqLPzFAa3TW+G/DTYfE9lYZUat1Uy6PqsWlHA9tMTPDTfsWMb2RCwSRdNq4U UCXF/ZUCWeZavRJ3vBVdMxOVkCYpxmxfAYWjvUzfFdHCzph1L7i+VmvxHrGqNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754692302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EtmUG81pUqYfMN13chtY5/65Jnrn2voUNV7PF6ggh28=; b=si0YC21v0vEVn/yFbOtgIlIq3I+xzNC8N4a7G0jEDRShysq8X4TvAdoh3RkllGOaAOeLOg ztHMJQb2VEd0LKmiAn8/NHxkG6HMYhBQhg7XiFEFe5rElynetwT3HAiDq3A7TvWArZcf0N Dt9NJ2xTfbhW71O6fkLVHP49Xa/0b2ZfaXpRi0x2mgXwuLXtThB9wslwDCjQwzZhfJd0cj RMFPLgZ8HHOOBGoP5OPM/wg40VXW0i96Un8uXI5sFE7czNJTXcvWcMd3R4YxEtE/LO6JIB G7CNhlY0eOT/sb1VjeTOXPZXRXQF3/zaJHEBu0e9hqzDXzTANu3OsWGS52lspA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754692302; a=rsa-sha256; cv=none; b=Yn715ETxdpb1v77YZFlcftqdigjnMM8Q57SwrmPGPo1jf6kTDPAAx5WfMftDFOgY5TmpQH XdWuUsiGcOGG4ZaGyKcgnZwHewEKNt8iLIrPOIGECXsqQH+wH4kNI25km0IAr3OzJa2Nru Z5MDPEbjup7GbKtxc96CAVXuLQ1KqDIPGjdLV4gp6hFT8jdVuv5SDflYSGwnnQoEoYYhN4 7Vp7Xl4VQ408hm4h6jajjed6JACUhERJh5QIH1M8vSeWmNzXHkygooZls+IIEM3SiyaHRE NzMh+0ESoN5fmuoh4xD3hAc/upsc/ZopvhtlZW64xsa7pHTHOOymT8yExZSROw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzJfk1fCbzvRD; Fri, 08 Aug 2025 22:31:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578MVgjM042687; Fri, 8 Aug 2025 22:31:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578MVggA042684; Fri, 8 Aug 2025 22:31:42 GMT (envelope-from git) Date: Fri, 8 Aug 2025 22:31:42 GMT Message-Id: <202508082231.578MVggA042684@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: 6882fc4cc436 - main - pci: Fix dependency on ACPICA for non-ACPI builds List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6882fc4cc43653dd52f6d49e15db9dada423455a Auto-Submitted: auto-generated The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=6882fc4cc43653dd52f6d49e15db9dada423455a commit 6882fc4cc43653dd52f6d49e15db9dada423455a Author: Aymeric Wibo AuthorDate: 2025-08-08 20:15:58 +0000 Commit: Aymeric Wibo CommitDate: 2025-08-08 22:30:06 +0000 pci: Fix dependency on ACPICA for non-ACPI builds Commit 84bbfc32a3f4 introduced a dependency on ACPICA for non-ACPI builds. This removes that unintended dependency. While here, print "D3hot" for D3hot in ACPI code instead of just "D3", as it was unclear whether that referred to D3hot or D3cold and was inconsistent with the `PCI_POWERSTATE_D3` and `ACPI_D_STATE_D3` defines. Reported by: jrtc27, freebsd@sysctl.cz Reviewed by: jrtc27, des, jrm (mentor) Approved by: jrtc27, jrm (mentor) Fixes: 84bbfc32a3f4 ("acpi_powerres: D3cold support") Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51823 --- sys/dev/acpica/acpivar.h | 3 ++- sys/dev/pci/pci.c | 6 ++---- sys/dev/pci/pcivar.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 39432731cbcc..6887f080311d 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -520,7 +520,8 @@ acpi_get_verbose(struct acpi_softc *sc) static __inline const char * acpi_d_state_to_str(int state) { - const char *strs[ACPI_D_STATE_COUNT] = {"D0", "D1", "D2", "D3", "D3cold"}; + const char *strs[ACPI_D_STATE_COUNT] = {"D0", "D1", "D2", "D3hot", + "D3cold"}; MPASS(state >= ACPI_STATE_D0 && state <= ACPI_D_STATES_MAX); return (strs[state]); diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 4629165f34b2..9e43a4c1909f 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -81,9 +81,6 @@ #include -#include -#include - #include "pcib_if.h" #include "pci_if.h" @@ -2900,7 +2897,8 @@ pci_set_powerstate_method(device_t dev, device_t child, int state) if (bootverbose) pci_printf(cfg, "Transition from %s to %s\n", - acpi_d_state_to_str(oldstate), acpi_d_state_to_str(state)); + pci_powerstate_to_str(oldstate), + pci_powerstate_to_str(state)); PCI_WRITE_CONFIG(dev, child, cfg->pp.pp_location + PCIR_POWER_STATUS, status, 2); diff --git a/sys/dev/pci/pcivar.h b/sys/dev/pci/pcivar.h index 832305b9adee..4abb5e977346 100644 --- a/sys/dev/pci/pcivar.h +++ b/sys/dev/pci/pcivar.h @@ -516,8 +516,20 @@ pci_is_vga_memory_range(rman_res_t start, rman_res_t end) #define PCI_POWERSTATE_D3_HOT 3 #define PCI_POWERSTATE_D3_COLD 4 #define PCI_POWERSTATE_D3 PCI_POWERSTATE_D3_COLD +#define PCI_POWERSTATE_MAX PCI_POWERSTATE_D3_COLD +#define PCI_POWERSTATE_COUNT 5 #define PCI_POWERSTATE_UNKNOWN -1 +static __inline const char * +pci_powerstate_to_str(int state) +{ + const char *strs[PCI_POWERSTATE_COUNT] = {"D0", "D1", "D2", "D3hot", + "D3cold"}; + + MPASS(state >= PCI_POWERSTATE_D0 && state <= PCI_POWERSTATE_MAX); + return (strs[state]); +} + static __inline int pci_set_powerstate(device_t dev, int state) { From nobody Fri Aug 8 22:35:32 2025 X-Original-To: dev-commits-src-main@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 4bzJl91Qjtz64Gp6; Fri, 08 Aug 2025 22:35:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzJl90kPYz40NS; Fri, 08 Aug 2025 22:35:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754692533; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgWj6y787rdj8W76eJn+LXS1jPzAaVy2qFncl4DEDh8=; b=o/Q2IVDqHZZdj0bonq/m2dV1MbmSepsqjPufp7Oah1EDiPXw++T9FcahgTxmmSh6manzXO pRz/2+2BaJutxihEAWcBjxW7fDQetJupRqDsh24t/EQnVM2wXrj6NfEdsq7BpTZp78PVX6 4Zou5y3QnlC4oACxBFTrVrRX1O9FgzYGQxcoGep21yCDSdEQdf+bCpy6nhKYx9MmylKv1y 0kGol1f3CBsVpqTEzbW8AYbPlvgguLRqQNZc5gZBIv09cUSOS+dKbmUFAGlzt6I7Y5e55Q UEiArkq6ohsOnaryvQbRhsnXoDusv/mxIHVne6c9GqOMowvUHndjSJU7rz2jVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754692533; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vgWj6y787rdj8W76eJn+LXS1jPzAaVy2qFncl4DEDh8=; b=WPiU24A4offMSntFu4fe6GnlOnE3CgGAnV10kJfjKYMNdgrzbiWOcnQ0h5E6WcIEdnA838 DP91XoOfCQ9RDXQJU+wv/aK/es5jeMOspRLJA0r0LL82QVF5Fx8HBkMXpnIMxR/8GZ1U/H n+J9WSoUjYb5HEL5bSQwHFQztGrwOUyk7tTTz2BkEMeyVMjt8+INvZkBDsd2k4qEtZ9HtE pjVVsmQW4XiX+Xr3ZZ5QCcOEiFdeEsEGxvVL/1vgWgsTY2xT6PH58SBIc+EX1uFlBuRXAD s9gdyzeVz2xogalrTI923ljuka0R3W3kd0OwGkAzKp1eHGNPCREL3Dc3Pa29kw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754692533; a=rsa-sha256; cv=none; b=N2NvMUx/IBsXNVBFNZKQlvW9W1kv8U0vU27g2JAZmPJ4VHjFHBOK2PMaoUrbrk9YDg1M2Q 2eAhEY2uL6t15SezR/KSiK4CmlYvRgbDqVqErOwxHf6PcBs+8+IYVOXtjfFIwyd2F/G5YY UXz9dzIG8M8UF/eBte3YgfrPXNTk+87CwEhAx/3F4+FvPIoSvCO0VqIhuPwhFHlYJHIac5 aL2Ba6ZIOJeEWcfNWA75KP6Tlfhv+rAT5fUmmNJ/1FOHoslv818fPeLUaqEDr6els/Turw CB11jh6ALBPRvCNphPrw+HDiyeJYcUMDUTK/xVsxKGgKtLmCNMY1/sfJAnlDWg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzJl875fyzvpf; Fri, 08 Aug 2025 22:35:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578MZWYu043932; Fri, 8 Aug 2025 22:35:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578MZWSo043929; Fri, 8 Aug 2025 22:35:32 GMT (envelope-from git) Date: Fri, 8 Aug 2025 22:35:32 GMT Message-Id: <202508082235.578MZWSo043929@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 33dd42e63298 - main - inetd: don't assume that initgroups(3) will set the egid List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 33dd42e632982ba324789f47041d03ceb65f6560 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=33dd42e632982ba324789f47041d03ceb65f6560 commit 33dd42e632982ba324789f47041d03ceb65f6560 Author: Kyle Evans AuthorDate: 2025-08-08 22:34:56 +0000 Commit: Kyle Evans CommitDate: 2025-08-08 22:35:04 +0000 inetd: don't assume that initgroups(3) will set the egid inetd, in the ident provider, seems to be the only initgroups(3) caller in base that assumes it will set the egid. Everyone else uses it as it's typically used on other platforms: to initialize supplementary groups. --- usr.sbin/inetd/builtins.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.sbin/inetd/builtins.c b/usr.sbin/inetd/builtins.c index 9609faf0b104..21ce44c77033 100644 --- a/usr.sbin/inetd/builtins.c +++ b/usr.sbin/inetd/builtins.c @@ -606,6 +606,8 @@ ident_stream(int s, struct servtab *sep) */ if (initgroups(pw->pw_name, pw->pw_gid) == -1) iderror(lport, fport, s, ID_UNKNOWN); + if (setegid(pw->pw_gid) == -1) + iderror(lport, fport, s, ID_UNKNOWN); if (seteuid(pw->pw_uid) == -1) iderror(lport, fport, s, ID_UNKNOWN); /* From nobody Fri Aug 8 22:39:55 2025 X-Original-To: dev-commits-src-main@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 4bzJrW1NrQz64HZW; Fri, 08 Aug 2025 22:40:11 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzJrV3P2xz40tK; Fri, 08 Aug 2025 22:40:10 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=bUxzEDEG; spf=pass (mx1.freebsd.org: domain of yaneurabeya@gmail.com designates 2607:f8b0:4864:20::431 as permitted sender) smtp.mailfrom=yaneurabeya@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-769a21bd4d5so2722075b3a.0; Fri, 08 Aug 2025 15:40:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754692807; x=1755297607; darn=freebsd.org; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hD6Kc7PQGCgixBP/DM743NQjPwMoENnvwYb9ttpfiM0=; b=bUxzEDEGZnEy8doIrHUfGrfsD6x5bDDs/PHtv0KwoH4lij6APPLBCe+fxbqiKnvHP1 y2qcVHHxOzbaSHDU52BLOTukWiYyPFrnGXeE7K0CGjcY6ZD3n1c2tlbjPF4Y9JboTQo6 TGKnMJTfoLvBlhkTlnC3nEx9wsrt8Xt0yFxkdi303Qpxn2L+vCzsm3gjisxpOiPsV7iY iuAOVRj8jK+YpBNOK6f+5vgfN3j+wd/NIXJVsSQaQARvzFW1I4oe9DSLjNrd2cDWUxFk 7dK9kV2CYZ8zP0PwElE8weUmhOB+NrxWDPtoME+hzUKztWcsDoIMVNHX77Nl3I22+QEj ABUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754692807; x=1755297607; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hD6Kc7PQGCgixBP/DM743NQjPwMoENnvwYb9ttpfiM0=; b=Ra5bjDbSvtmAapB9fOHCnULK23Fbn/UBWpXPJNZsU0d7Iaya2D93e2yg/PH6JUlSMt zUYvSb9sejKigBwbYkIHBUgmKHKYDUP22mdHoEimWLNiH/rddeCHoCjIc4RCz4Juw8LH Wuf93xQImsQccmBdt0zgw7dXrEt508o/l05NZOxZ33cSadT8Uya3WNibQGMHXUzbeh6z Z59H6vY8lfQ25oKulz+H8GkdMxN2ma9w69ek/enSaw5h6Ll/ER7A6YlFUybwc35Nnh7l UJtVj6+++1DI1zZoRZkr/maJORfI4zhBGpe9kcKRLulE/P+pDM+hq2qPHzWEEQvcKBcn 5Adg== X-Forwarded-Encrypted: i=1; AJvYcCXa8w4SBs/pD9mQy3A9hPOY19fVVf44IvArCRguleBmCJuRlq9er/mSdiLwfRtfF0s3X//eT6hcWPPFsPuWmPz9FP/jzDk=@freebsd.org, AJvYcCXpV847BpDQwNUo+fN/0j+bccJeOQ+EWj8D4kpCIKL+cqO796cjR8BfMM7ljJ9dJnkPmioUevhLS6qDB7knJnq4masV@freebsd.org X-Gm-Message-State: AOJu0YzoIo1c+HwSGktZtYUfggwCVssNeaJexOjcnSuaLupQgC+LB7Xc VGQQCSGv0I6lGUOCeUkCOxu8IAQpkPeeOu4SQhOl8aH06ZTnYjBXTb+GsDiusv5V X-Gm-Gg: ASbGncti3Db1s0HMQ0zTFaUtgktA7XdgIpuQnFxWbqMQQLQudYQhs/s+6o/a6wrC3o+ dxYC+fcbMTnbB2Z6fV7NnucxmxzMHlRgMFdkklmcnCB8Huru6yTN2Z0+VEOnkR0N9pxVEhOjRSc IxgDgHQMPrCcBxb9JbTiWkcJ419wGVXK8hsqYa7iTMDQdZXvpIKPmJ4W4e/yiowVdUfUVpJ7WXH MP0BupN16EgmDzdr7unQ4UffI8kxTYNpyT4BoHal5+YoCujYS/o69mSkWr9tbVVO44MGGGTUNua 0y8UPRl3CvSnYo97PofMS+yj1ylMc72POFpz5rWquX4GdvffIyaWM4jrSCVtxo04lbFZgZIN+k+ 2Y2ldFhKQZdgko7Cy81zEKFMHaYZD4zpnxPVJTE9JRGOKJDA= X-Google-Smtp-Source: AGHT+IEIOUK3dzO9xE+vditSSSo8jXnDyQsT3MiG7XgLtwSOKGCS/jyxWXyRj9YQhR3We3rV8xX2eQ== X-Received: by 2002:aa7:88d6:0:b0:76b:f10c:404b with SMTP id d2e1a72fcca58-76c460dc5abmr6486380b3a.4.1754692807308; Fri, 08 Aug 2025 15:40:07 -0700 (PDT) Received: from smtpclient.apple ([176.100.43.104]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-76bcce8f800sm21248578b3a.42.2025.08.08.15.40.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Aug 2025 15:40:06 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_2BA6FA3C-070A-4A8D-AD32-610F3BF80E84"; protocol="application/pgp-signature"; micalg=pgp-sha256 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: e7be843b4a16 - main - Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' From: "Enji Cooper (yaneurabeya)" In-Reply-To: Date: Fri, 8 Aug 2025 15:39:55 -0700 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Message-Id: <286324B9-1CDF-4D27-9F96-EABA1B9237ED@gmail.com> References: <202508081922.578JM3A0086462@gitrepo.freebsd.org> To: Pierre Pronchery X-Mailer: Apple Mail (2.3826.700.81) X-Spamd-Result: default: False [-6.10 / 15.00]; SIGNED_PGP(-2.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; RCVD_TLS_LAST(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; TO_DN_SOME(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; DKIM_TRACE(0.00)[gmail.com:+]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; HAS_ATTACHMENT(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; APPLE_MAILER_COMMON(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::431:from]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-Rspamd-Queue-Id: 4bzJrV3P2xz40tK X-Spamd-Bar: ------ --Apple-Mail=_2BA6FA3C-070A-4A8D-AD32-610F3BF80E84 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Aug 8, 2025, at 12:29=E2=80=AFPM, Enji Cooper (yaneurabeya) = wrote: >=20 >=20 >> On Aug 8, 2025, at 12:22=E2=80=AFPM, Pierre Pronchery = wrote: >>=20 >> The branch main has been updated by khorben: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3De7be843b4a162e68651d3911f0357ed4= 64915629 >>=20 >> commit e7be843b4a162e68651d3911f0357ed464915629 >> Merge: d0ff5773cefa 1095efe41fee >> Author: Pierre Pronchery >> AuthorDate: 2025-08-07 13:50:32 +0000 >> Commit: Pierre Pronchery >> CommitDate: 2025-08-07 13:50:32 +0000 >>=20 >> Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' >>=20 >> Approved by: philip (mentor) >> Sponsored by: Alpha-Omega Beach Cleaning Project >> Sponsored by: The FreeBSD Foundation >=20 > This commit didn=E2=80=99t note that OpenSSL 3.5.1 was imported. I = think it=E2=80=99s best to revert the merge commit and correct the = commit message. Feel free to copy the commit message from the original = import, adding more details as needed. The ossl module is broken on several architectures as well after = this change: secure/lib/libcrypto/Makefile.asm was updated, but the = files under sys/conf/files* and sys/modules/ossl/Makefile need to be = updated. Cheers, -Enji= --Apple-Mail=_2BA6FA3C-070A-4A8D-AD32-610F3BF80E84 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEkHfexGRJ3gYRdA2gGpE5DjPsNJgFAmiWfLsACgkQGpE5DjPs NJia5Q/9GcOysK0ZOiR1LIjrZFJtnhr0kDQ9hpgeIonNpinq4O18iyUFISGFs4x5 fcAH9kPMARFpK/CEQ8e+SrHCRzoigH8FgwgPPhhfe2xgZYHQZCP/VvrYI93xzvau C5gEp+0DlgDysSrp4qM2R0OjmKyk0hdZTTbTWtQOL1i00daEP8JblTYxCZiW7+Rn 8IzWENpAt5BNJL2yUnUS9tBu43OFh2Pdlp2HuqjHegy6khWZ8k14yknTdiFOxLtx gZj0JVMcqrJ6zQO0GDpr2IUhXNNn9qqFHBV8+grxgo1YsYg3JykOFZ4VqyOI9Gei shOW3EysrgowiOIVtzUHt+Z343LZJ4IB8r7sNdNaXihOgrvOCCcSkidcXCg6spz4 15rp15/U+8WA1jAWY1QSyfeCKSWPl0TOxtKTCfQNwJdQEbMOGLlBXZT4Om4y1try j0FIh3BqXLydg9J5sXOIe/EcY6nH5s2zRaUE+7I+M3PCQ+typR4gQOhVRU+yM/ar hyMS5Ked0TCjhv3kcXZfOLJegoV10VNj+EsGkA8+7XTdGkFtdp0I2ByOmqiZVZqE cOiDh6avLZfLFdJTUq/Rw7NZ8PjgVKCRd3QBzNignnvzUK+nZadIP2GPPywn5XtT 7d12jWYwJcgf9YjhS57qPfwLvjvgCDYs9BX2xX0OSQ6qugFNBW8= =Reh4 -----END PGP SIGNATURE----- --Apple-Mail=_2BA6FA3C-070A-4A8D-AD32-610F3BF80E84-- From nobody Fri Aug 8 22:46:41 2025 X-Original-To: dev-commits-src-main@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 4bzK012xDhz64J58; Fri, 08 Aug 2025 22:46:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzK0129bsz41k8; Fri, 08 Aug 2025 22:46:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693201; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nO6ag7rde3BSDI4PzZ278OjcHHChVyT/Lq1HtoWd9PE=; b=X2DA7aEvO28x68wmI9XTRjZpaJNjdGNRERl1aWtxjZjH+WZdthbsFTdix2JUbOxYBYnzHP woOW0abgUlvbYJc0e1kllbH6rC9D9gll0jcX/Htsm9sk07MUWC94ulwggX/9J1nvg85tUz iMaAX+4HGu14W74quUCS5hHpmMMFBvl0hytoyB3Srn8IC0wlmmFcTjpEctdoQDP55t+ZrP W8bSKuIisIiWHTPmewQrPYs83JcFn5cXdFyMmVQ17Y2v3KjRv+920SG33aRKRq1e2+kzIF bGROS8WcDYAcKr+uCpcAQaHkApfohTvRbxcSSRPuI91lyOoJqixQ74zPI42cbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693201; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nO6ag7rde3BSDI4PzZ278OjcHHChVyT/Lq1HtoWd9PE=; b=Y/aM6rMgMP7GMOdOjNU8iiGdTJavqHqcZc3FhTy+fiwyXtsLmQvDjpmUaNacWc/Brr9Zmj Xi/cMtX5ZlPhu5zLsRCuxT7Zxllk6v444flBhQtWZXEsK1RraU29VkWsjVAUo09tfP3YIu 2Nhx6HFrJoR8dtgcoRZi2N1/CBNQOBHk0q6PCCtyI1mMERbSD3ghZCImlLluFEf6nlJxIY 33HzVasSBBu/pCIZiyo2Wm32Z1XdfEFT5e3SSA6ddQcIoNSC1beQoOzwXxmQcWWQGFEnAd tuXCiePWcI/FzVxwj0vCC9STFXwI4R9QxAiVkEi721XIhIuJtUI5U18Vwo1Rag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754693201; a=rsa-sha256; cv=none; b=q9GqR1sES/DwpFV/iBJfftvjPJogMz5+24XpmsblLF6p8sN/k0/LrLmPxevuGeFxAzs8BQ mX/O2RN9/TaNPfwj3kXthmtNZKg8MfC02rujCytSVJk4t6Xdt0Kz4QDI1L+mLkf8lTs0vP +3djLz2ur98giIDKtsJHb1mk/+MIXH/unz5ySAMlcNk2SMkATQ01aLakFM+IvaIkKQlTBm vD9ft0vL4hreNilUTKUnLHbT/UP2Y6DM3YeaJcZe8vRNGU/l5Pkq0qBl+EmyD65UAAC13b BPkH9JzpzeS85jsheEtLnwRzWtfnB+q+4W9Es4I3aA+QRzC+DIdZekN+zj3GxA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzK011lbgzvMh; Fri, 08 Aug 2025 22:46:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578MkfQd062816; Fri, 8 Aug 2025 22:46:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578MkfIL062813; Fri, 8 Aug 2025 22:46:41 GMT (envelope-from git) Date: Fri, 8 Aug 2025 22:46:41 GMT Message-Id: <202508082246.578MkfIL062813@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 602e98dd35ea - main - stdio: Fix bug in integer-parsing FSM List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 602e98dd35ea5041b800fb56a2b1ac34f6649310 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=602e98dd35ea5041b800fb56a2b1ac34f6649310 commit 602e98dd35ea5041b800fb56a2b1ac34f6649310 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-08 22:17:19 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-08 22:46:03 +0000 stdio: Fix bug in integer-parsing FSM If we encounter a zero in the havezero state, we should assume octal, just like we would if we encountered any other digit below 8. MFC after: 1 week PR: 288440 Fixes: d9dc1603d6e4 ("libc: Implement N2630.") Reviewed by: mandree Differential Revision: https://reviews.freebsd.org/D51832 --- lib/libc/stdio/vfscanf.c | 5 ++--- lib/libc/stdio/vfwscanf.c | 5 ++--- lib/libc/tests/stdio/sscanf_test.c | 25 +++++++++++++++++++++++++ lib/libc/tests/stdio/swscanf_test.c | 25 +++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/lib/libc/stdio/vfscanf.c b/lib/libc/stdio/vfscanf.c index a678710e1ecb..89e9e843969f 100644 --- a/lib/libc/stdio/vfscanf.c +++ b/lib/libc/stdio/vfscanf.c @@ -318,10 +318,9 @@ parseint_fsm(int c, enum parseint_state *state, int *base) case '0': if (*state == begin || *state == havesign) { *state = havezero; - } else { - *state = any; + return 1; } - return 1; + /* FALL THROUGH */ case '1': case '2': case '3': diff --git a/lib/libc/stdio/vfwscanf.c b/lib/libc/stdio/vfwscanf.c index 57206a8407d5..7ca64eb37811 100644 --- a/lib/libc/stdio/vfwscanf.c +++ b/lib/libc/stdio/vfwscanf.c @@ -298,10 +298,9 @@ parseint_fsm(wchar_t c, enum parseint_state *state, int *base) case '0': if (*state == begin || *state == havesign) { *state = havezero; - } else { - *state = any; + return 1; } - return 1; + /* FALL THROUGH */ case '1': case '2': case '3': diff --git a/lib/libc/tests/stdio/sscanf_test.c b/lib/libc/tests/stdio/sscanf_test.c index e916873d38c3..e43292820eeb 100644 --- a/lib/libc/tests/stdio/sscanf_test.c +++ b/lib/libc/tests/stdio/sscanf_test.c @@ -68,6 +68,31 @@ static const struct sscanf_test_case { { "0e", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 14, 2 }, { 1, 0, 1 }, }, { "0f", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 15, 2 }, { 1, 0, 1 }, }, { "0x", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, }, + // all digits with two leading zeroes + { "000", { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, }, + { "001", { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, }, + { "002", { 1, 0, 2 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, }, + { "003", { 1, 0, 2 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, }, + { "004", { 1, 0, 2 }, { 1, 4, 3 }, { 1, 4, 3 }, { 1, 4, 3 }, { 1, 4, 3 }, }, + { "005", { 1, 0, 2 }, { 1, 5, 3 }, { 1, 5, 3 }, { 1, 5, 3 }, { 1, 5, 3 }, }, + { "006", { 1, 0, 2 }, { 1, 6, 3 }, { 1, 6, 3 }, { 1, 6, 3 }, { 1, 6, 3 }, }, + { "007", { 1, 0, 2 }, { 1, 7, 3 }, { 1, 7, 3 }, { 1, 7, 3 }, { 1, 7, 3 }, }, + { "008", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 8, 3 }, { 1, 8, 3 }, { 1, 0, 2 }, }, + { "009", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 9, 3 }, { 1, 9, 3 }, { 1, 0, 2 }, }, + { "00A", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 10, 3 }, { 1, 0, 2 }, }, + { "00B", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 11, 3 }, { 1, 0, 2 }, }, + { "00C", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 12, 3 }, { 1, 0, 2 }, }, + { "00D", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 13, 3 }, { 1, 0, 2 }, }, + { "00E", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 14, 3 }, { 1, 0, 2 }, }, + { "00F", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 15, 3 }, { 1, 0, 2 }, }, + { "00X", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, }, + { "00a", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 10, 3 }, { 1, 0, 2 }, }, + { "00b", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 11, 3 }, { 1, 0, 2 }, }, + { "00c", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 12, 3 }, { 1, 0, 2 }, }, + { "00d", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 13, 3 }, { 1, 0, 2 }, }, + { "00e", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 14, 3 }, { 1, 0, 2 }, }, + { "00f", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 15, 3 }, { 1, 0, 2 }, }, + { "00x", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, }, // all digits with leading one { "10", { 1, 2, 2 }, { 1, 8, 2 }, { 1, 10, 2 }, { 1, 16, 2 }, { 1, 10, 2 }, }, { "11", { 1, 3, 2 }, { 1, 9, 2 }, { 1, 11, 2 }, { 1, 17, 2 }, { 1, 11, 2 }, }, diff --git a/lib/libc/tests/stdio/swscanf_test.c b/lib/libc/tests/stdio/swscanf_test.c index f7ad30b963a7..f0638081e16f 100644 --- a/lib/libc/tests/stdio/swscanf_test.c +++ b/lib/libc/tests/stdio/swscanf_test.c @@ -71,6 +71,31 @@ static const struct swscanf_test_case { { L"0e", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 14, 2 }, { 1, 0, 1 }, }, { L"0f", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 15, 2 }, { 1, 0, 1 }, }, { L"0x", { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, { 1, 0, 1 }, }, + // all digits with two leading zeroes + { L"000", { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, { 1, 0, 3 }, }, + { L"001", { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, { 1, 1, 3 }, }, + { L"002", { 1, 0, 2 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 }, }, + { L"003", { 1, 0, 2 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, { 1, 3, 3 }, }, + { L"004", { 1, 0, 2 }, { 1, 4, 3 }, { 1, 4, 3 }, { 1, 4, 3 }, { 1, 4, 3 }, }, + { L"005", { 1, 0, 2 }, { 1, 5, 3 }, { 1, 5, 3 }, { 1, 5, 3 }, { 1, 5, 3 }, }, + { L"006", { 1, 0, 2 }, { 1, 6, 3 }, { 1, 6, 3 }, { 1, 6, 3 }, { 1, 6, 3 }, }, + { L"007", { 1, 0, 2 }, { 1, 7, 3 }, { 1, 7, 3 }, { 1, 7, 3 }, { 1, 7, 3 }, }, + { L"008", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 8, 3 }, { 1, 8, 3 }, { 1, 0, 2 }, }, + { L"009", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 9, 3 }, { 1, 9, 3 }, { 1, 0, 2 }, }, + { L"00A", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 10, 3 }, { 1, 0, 2 }, }, + { L"00B", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 11, 3 }, { 1, 0, 2 }, }, + { L"00C", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 12, 3 }, { 1, 0, 2 }, }, + { L"00D", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 13, 3 }, { 1, 0, 2 }, }, + { L"00E", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 14, 3 }, { 1, 0, 2 }, }, + { L"00F", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 15, 3 }, { 1, 0, 2 }, }, + { L"00X", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, }, + { L"00a", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 10, 3 }, { 1, 0, 2 }, }, + { L"00b", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 11, 3 }, { 1, 0, 2 }, }, + { L"00c", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 12, 3 }, { 1, 0, 2 }, }, + { L"00d", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 13, 3 }, { 1, 0, 2 }, }, + { L"00e", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 14, 3 }, { 1, 0, 2 }, }, + { L"00f", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 15, 3 }, { 1, 0, 2 }, }, + { L"00x", { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, { 1, 0, 2 }, }, // all digits with leading one { L"10", { 1, 2, 2 }, { 1, 8, 2 }, { 1, 10, 2 }, { 1, 16, 2 }, { 1, 10, 2 }, }, { L"11", { 1, 3, 2 }, { 1, 9, 2 }, { 1, 11, 2 }, { 1, 17, 2 }, { 1, 11, 2 }, }, From nobody Fri Aug 8 22:46:42 2025 X-Original-To: dev-commits-src-main@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 4bzK025X5Lz64HYf; Fri, 08 Aug 2025 22:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzK023Sqfz41lG; Fri, 08 Aug 2025 22:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693202; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Eq8zLSmSkO0iBAixMuTzi7HBkSW4r7WV40aOhMPiNj0=; b=rSody1hFr+A2JXrLnZqGc646rdYMKUc1otxaB3kigLAJhmxDk0T2fEvk+hPrDu3d01puSd a70UhgkBi9QvejKJFojGZXSxO+bTNRCYO80++hpBvgYRE4lVLJ6l7W61S4WPQmSL5KK8t2 i487NL+qj4P8TjkuBlwPngUZqmMbSkk2C/uN2w5HS4VeThccySqdFhm0C0jAFB8g90mczL KkyO244+uc6j74jkIT7rdMNIiMY+uL4U4rr1nx3Alri5GErXqcJcQWdmm73yCYrQ1tlmew 9Nv2If4lBO4MHSS3VUAGWW3sYDT1amGl+kyHRQIKoDWgR+xPOTqpx2XZ2B2biA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693202; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Eq8zLSmSkO0iBAixMuTzi7HBkSW4r7WV40aOhMPiNj0=; b=l0/QzY0Bqihqr3ErzvDRoSSCSJOVSU5E/0spcKlpGyyAs8Zkd5NmPd2oIwjDzHuAyWhwui /IMEU/c1SKkJ7x7o5WJQdOJAgIe9ltDsIzm0eJSxRy1OvUEPiLXW+ViJKqY/8p5OG9K9Up bj6Xh1msCgGkhIm7w2i7kJX7buPyONefONzuR2Yr6KCU7JjSaTcceyquMDzvhGqDOT/7hk i81D7IJOxx0kcpuradwzgiePyZ8nzXl6WuNkORd62k2siZjFrgjKfhubqEYsWwGaF0hsGx rgowuhnvnQkVEl4llYNzK07sc+3UKae4SizDD4qvJdAZaL0y7wDWHLiIcbpWiw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754693202; a=rsa-sha256; cv=none; b=vOWl2JxsUDr5LLW2tYk3pdq/mXI+DgpIwsvRPo3UZke1v8njDoRdoudKVglxcMODfBcupq pOyqyEQGfDkGnlIc0eC09eVwwJtQRovAjpbXGRTONpM/CZkoYEC80Xpk6GAnVDj5zBVCGQ jvBMOAMZrvL3aNw0YG6k/PmnCeyIXA3WTEubJoIBYreaR4fv3xEQO1iV5Uupxk+NhvCs4A XEc7VUsi7Hh7W2IlCK1h/r4jL/Eiv6glVDfY+bejSC2DA3e97btHy5raoGL8cj/gw3fxzR eUMPW8aEPsLNe+R0xiBhyozyGgO4ZSVMKXCojYB+UJvbIrNWVISTau3oPI489g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzK022yPpzw1s; Fri, 08 Aug 2025 22:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578Mkgk7062853; Fri, 8 Aug 2025 22:46:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578Mkgk7062850; Fri, 8 Aug 2025 22:46:42 GMT (envelope-from git) Date: Fri, 8 Aug 2025 22:46:42 GMT Message-Id: <202508082246.578Mkgk7062850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: abd45729ab22 - main - mk: Mark buildenv .NOTMAIN List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: abd45729ab22c7b4883451002750b78e8f2c35dd Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=abd45729ab22c7b4883451002750b78e8f2c35dd commit abd45729ab22c7b4883451002750b78e8f2c35dd Author: Dag-Erling Smørgrav AuthorDate: 2025-08-08 22:18:23 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-08 22:46:04 +0000 mk: Mark buildenv .NOTMAIN This file is one of a handful that can be included at the top of a Makefile (via src.opts.mk). Therefore, all the targets it defines must be marked .NOTMAIN so they don't accidentally become the default target of the Makefile. Fixes: cf5f0744cd1d ("Add .NOTMAIN to guard targets") Reviewed by: sjg, bdrewery Differential Revision: https://reviews.freebsd.org/D51824 --- share/mk/src.init.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/mk/src.init.mk b/share/mk/src.init.mk index 01ea5437e5a7..fd3f3501f609 100644 --- a/share/mk/src.init.mk +++ b/share/mk/src.init.mk @@ -3,7 +3,7 @@ ____: .NOTMAIN .if !target(buildenv) -buildenv: .PHONY +buildenv: .PHONY .NOTMAIN ${_+_}@env BUILDENV_DIR=${.CURDIR} ${MAKE} -C ${SRCTOP} buildenv .endif From nobody Fri Aug 8 22:46:43 2025 X-Original-To: dev-commits-src-main@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 4bzK035HYzz64J5B; Fri, 08 Aug 2025 22:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzK0348BGz41gk; Fri, 08 Aug 2025 22:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693203; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VWkp3JK1YQiPSRHAGskq4CtknupjI4oSQl5rwpiCc1U=; b=CHs+midKyKGRZQmaqNhcNhmThs+HQxn2QJMMH/4ATzdrDBuh03MLtGQIye14yvWBrhXKUu +nwwdUfYvSpoXZaAnHAXsYrxqUQbQ1YqxbZRLti18woGu6X+LAd6S0QllCfIkCIZWZ06Ol QdRnxJfiY7KEKl2QI6El1pEPq0O92MSSKj0OG/BQMAKie4LcfjOLhd8R/vWqS1KlScr+FL RW+RcLzBt1eHH5ppZBZrMhSKt78oU/wA4zFxJkVFijhCQrTVYSPRlm7dGSKCDiDsTmwl5H e9fL2Qj6pH5X7LzA9peafJICiBq9NLfboSW91UGZSWGbeGp7jIns3KO3NE2osw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754693203; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VWkp3JK1YQiPSRHAGskq4CtknupjI4oSQl5rwpiCc1U=; b=eWAez5LwLHZlKdYcmvWbvCsh5GuvYKE5VGn6N0Jyyx4HEsJh894tg7Qu5Eyp5kMj20dBj4 B5mkDSgrYHdyd30ERD9FKzr8yZS+LnwTq27y9oaM2THT/bOpZ0vtwZLTU99vUl2EWVqljV cTxi3cHuXj4+kGsCr5O4jeWnIRwXEr3E0R2vuClSOrg4OMTJhMn+XPPE+V0j55lqcJyCoG EVQOBAdFLAZmUO86Q8qjrkx3QPp0hqkcsatrvx5gDGUrqxD/MNTAXt/2VyVmbF01FUBoa/ Dg7ukMpMvHgFrxVi7qMdR65fN5q3tvfC2zNVjHFRywc8DgpO5SqL/6HNwooXtQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754693203; a=rsa-sha256; cv=none; b=yPnFHQvD5FWhuqHtYYyY+EPkEio/7T5uj6GVP63LnMBm/v/8yhFuaRI73/AqHm762EIvz+ svZeQ5ARO+ozyhFJgemb2zlICetAuX8wyOemEcccGyVbfUuhQuTQsKyUMOh37IuX17ae9M M49zlIdMfMR2X71RU7mya95OGT2zY6KRshl0L5oa0TAu/7hsNNWIRSAg5IQC8dRt5Sg+AS 0FQ0kjACraPGbcEBSiNZCxHpiCq8lh4dzUnc+0sNv5z9nqo9SYzv7cT6EMOUva3rfNW2K8 GNdHwPVdbrAwpWMIkFp8pkZtbCaZdsN/2VeLUyYol514dvQAOBnl/Hge+ZTvzQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzK033cJ9zv7B; Fri, 08 Aug 2025 22:46:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 578Mkhow062889; Fri, 8 Aug 2025 22:46:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 578MkhXe062886; Fri, 8 Aug 2025 22:46:43 GMT (envelope-from git) Date: Fri, 8 Aug 2025 22:46:43 GMT Message-Id: <202508082246.578MkhXe062886@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 161f8edc651c - main - bsd.mkopt.mk: Prepare a list of all build options List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 161f8edc651c7476e7677ed975899ce095fc967e Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=161f8edc651c7476e7677ed975899ce095fc967e commit 161f8edc651c7476e7677ed975899ce095fc967e Author: Dag-Erling Smørgrav AuthorDate: 2025-08-08 22:18:35 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-08 22:46:04 +0000 bsd.mkopt.mk: Prepare a list of all build options After processing all the build options, iterate over the complete list minus CLEAN, MAN and TESTS, and prepare two variables: * SRC_OPT_DEFS is a list of -D and -U directives, suitable for passing to cpp or unifdef, where each option is either defined or undefined depending on whether it is set or unset. This list also includes -D__${MACHINE_ARCH}__. * SRC_OPT_LIST is a list of build options suitable for passing to make itself (or sticking in /etc/src.conf). This list also includes TARGET=${MACHINE} and TARGET_ARCH=${MACHINE_ARCH}. Note that this list is cumulative, so it includes both options defined in bsd.opts.mk and options defined in src.opts.mk. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D51827 --- share/mk/bsd.mkopt.mk | 68 +++++++++++++++++++++++++++++++++++++++------ tools/build/options/makeman | 4 +-- 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/share/mk/bsd.mkopt.mk b/share/mk/bsd.mkopt.mk index f93101544bf7..4d67ba04294d 100644 --- a/share/mk/bsd.mkopt.mk +++ b/share/mk/bsd.mkopt.mk @@ -19,14 +19,6 @@ # If both WITH_FOO and WITHOUT_FOO are defined, WITHOUT_FOO wins and # MK_FOO is set to "no" regardless of which list it was in. # -# All of __DEFAULT_YES_OPTIONS, __DEFAULT_NO_OPTIONS and -# __DEFAULT_DEPENDENT_OPTIONS are undef'd after all this processing, -# allowing this file to be included multiple times with different lists. -# -# Other parts of the build system will set BROKEN_OPTIONS to a list -# of options that are broken on this platform. This will not be unset -# before returning. Clients are expected to always += this variable. -# # Users should generally define WITH_FOO or WITHOUT_FOO, but the build # system should use MK_FOO={yes,no} when it needs to override the # user's desires or default behavior. @@ -35,12 +27,52 @@ # defined and __FOO_DEFAULT if not. Valid values for FOO are specified # by __FOO_OPTIONS. # +# All of __REQUIRED_OPTIONS, __DEFAULT_DEPENDENT_OPTIONS, +# __DEFAULT_YES_OPTIONS, __DEFAULT_NO_OPTIONS, and __SINGLE_OPTIONS +# are undef'd after all this processing, allowing this file to be +# included multiple times with different lists. However, we keep +# deduplicated lists of these options in similarly-named variables +# without the leading underscores (i.e. FOO_OPTIONS is the complete +# deduplicated list of all values of __FOO_OPTIONS across all +# invokations of this file). +# +# Other parts of the build system will set BROKEN_OPTIONS to a list +# of options that are broken on this platform. This will not be unset +# before returning. Clients are expected to always += this variable. +# # Other parts of the build system will set BROKEN_SINGLE_OPTIONS to a # list of 3-tuples of the form: "OPTION broken_value replacment_value". # This will not be unset before returning. Clients are expected to # always += this variable. # +# +# These variables accumulate all the options from our possibly +# multiple callers so they're available to build tools such as +# tools/build/options/makeman. +# +DEFAULT_NO_OPTIONS+=${__DEFAULT_NO_OPTIONS} +DEFAULT_NO_OPTIONS:=${DEFAULT_NO_OPTIONS:O:u} +DEFAULT_YES_OPTIONS+=${__DEFAULT_YES_OPTIONS} +DEFAULT_YES_OPTIONS:=${DEFAULT_YES_OPTIONS:O:u} +DEFAULT_DEPENDENT_OPTIONS+=${__DEFAULT_DEPENDENT_OPTIONS} +DEFAULT_DEPENDENT_OPTIONS:=${DEFAULT_DEPENDENT_OPTIONS:O:u} +REQUIRED_OPTIONS+=${__REQUIRED_OPTIONS} +REQUIRED_OPTIONS:=${REQUIRED_OPTIONS:O:u} +SINGLE_OPTIONS+=${__SINGLE_OPTIONS} +SINGLE_OPTIONS:=${SINGLE_OPTIONS:O:u} + +# +# All options defined by our caller; we will undef this before +# returning. +# +__ALL_OPTIONS:= \ + ${__DEFAULT_NO_OPTIONS} \ + ${__DEFAULT_YES_OPTIONS} \ + ${__REQUIRED_OPTIONS} \ + ${__DEFAULT_DEPENDENT_OPTIONS:H} \ + ${__SINGLE_OPTIONS} + # # MK_* options which default to "yes". # @@ -72,6 +104,7 @@ MK_${var}:= yes .endif MK_${var}:= yes .endfor +.undef __REQUIRED_OPTIONS # # MK_* options which default to "no". @@ -142,3 +175,22 @@ MK_${vv:H}?= ${MK_${vv:T}} MK_${vv:H}:= ${MK_${vv:H}} .endfor .undef __DEFAULT_DEPENDENT_OPTIONS + +# +# Define SRC_OPT_DEFS and SRC_OPT_LIST +# +SRC_OPT_DEFS?=-D__${MACHINE_ARCH}__ +SRC_OPT_LIST?=TARGET=${MACHINE} TARGET_ARCH=${MACHINE_ARCH} +.for option in ${__ALL_OPTIONS:O:u} +.if defined(OPT_${option}) +SRC_OPT_DEFS+=-D${option}=${OPT_${option}:Q} +SRC_OPT_LIST+=${option}=${OPT_${option}:Q} +.elif ${MK_${option}} == yes +SRC_OPT_DEFS+=-D${option} +SRC_OPT_LIST+=WITH_${option}=1 +.elif ${MK_${option}} == no +SRC_OPT_DEFS+=-U${option} +SRC_OPT_LIST+=WITHOUT_${option}=1 +.endif +.endfor +.undef __ALL_OPTIONS diff --git a/tools/build/options/makeman b/tools/build/options/makeman index e0980d3be607..ddd08443e61c 100755 --- a/tools/build/options/makeman +++ b/tools/build/options/makeman @@ -127,8 +127,8 @@ show() exit 1 ;; esac - requireds=`env -i ${make} -f ${srcdir}/share/mk/src.opts.mk \ - -V '${__REQUIRED_OPTIONS:ts,}'` + requireds=$(env -i ${make} -f ${srcdir}/share/mk/src.opts.mk \ + -V 'REQUIRED_OPTIONS:ts,') env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \ SRCCONF=/dev/null | while read var _ val ; do From nobody Sat Aug 9 00:25:45 2025 X-Original-To: dev-commits-src-main@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 4bzMBj4wSPz64St9; Sat, 09 Aug 2025 00:26:05 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzMBh3ZKGz3DVf; Sat, 09 Aug 2025 00:26:04 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=GWaISYgj; spf=pass (mx1.freebsd.org: domain of yaneurabeya@gmail.com designates 2607:f8b0:4864:20::42f as permitted sender) smtp.mailfrom=yaneurabeya@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-76bc55f6612so2681964b3a.0; Fri, 08 Aug 2025 17:26:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754699158; x=1755303958; darn=freebsd.org; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=aFWRMrmzf/SsqDSuQGJsZpvQZhKb5Jykm/5ulR29Scs=; b=GWaISYgjyOvABTWFNwNPOg2XJq51mDnmiZL24gJ+Wfr7ar7UNiZM6wEbeVzkZOaLZh YDADkisrXZK7xEIq0mrNHMaDHM6SS6sdEsfftAqZ+U+rD9Y4bugvBCIEathp4I6dp122 S/1N+pLTEFDlak6g3eKqyKy92wmADIvP16+t/HzIDfryGU3oDMXrALej4E3KmKgYkP9m FltEwVd7rUTZCM20XiZTbrZL24lTLRw8GlxvsCDqMZnenHm1ZkUaZxnpx54iQQNs3vD0 q1S8HztzLv7T8iDOxF43B70X8BBboULiACnDdPZDJvgOVVRLBiBLvahb68CyZ1X5rZUU cKXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754699158; x=1755303958; h=to:references:message-id:cc:date:in-reply-to:from:subject :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aFWRMrmzf/SsqDSuQGJsZpvQZhKb5Jykm/5ulR29Scs=; b=vTf9/7i3jwt45eUEWmqqbbbqATdxx5YsXCNmnC2lRoDaXbb6kclervvxOx2C7V4Zvt ndylVhaao+zcMG/zTJUr0wdH2dUGOlsflUxtW9tENN0n7EWpVHCtQOLf1M8svdmh93V8 fkyrFnd2fxIfymU78w/3ExZtPqFazUDD3w6CTcZPXV0C33vFrjq62IDCFkP2m3we2XXo ieU1X+mfVvFjRSAr7bIyfUAkkXr9tZSrE+nyJ7q1WlWteSkimxOOCodf1XptWvFyoQ+w e6fpGioutLjBektG7czVw2WU9U/zht8BGxWuzD+k1ZBa2vReU6Dffa/vsjKto4dLGhn/ Yj6Q== X-Forwarded-Encrypted: i=1; AJvYcCUjcech47iNg+0X/wuroj5iUtLl4adgkKsL+QO6Nem/LU3Bbi9BQFfd7YqkYNtIYqPPlvLXOxwskkXenvCDYBS375+08qU=@freebsd.org, AJvYcCX1FqXt0DOzMbg3RIhrz/NOyRSRvwYmm3LMQHt9Pq6QdHigj2d5h52CZ/ockTOo831YvqOSeZthk58/Sn4wD9GH9DPa@freebsd.org X-Gm-Message-State: AOJu0YwdBQN6BApXTSUxREX3mSt5ibgustr7nvNM5j2Qg04R43eW8NZZ UR+M+5iQ54s4RkeiwH6xh+NUvd40sujl2kKuCfigFR9iGMeuDbReX9JYOJTElieD X-Gm-Gg: ASbGncvjeCeN2Jr5FUjoE2ZRLiLzVhnKsOdCukoOh4GfLfRRN6sm/WX0x2btSQ6o/ER JNLZW6bLIc+ZYoKoLoQqLagiSNRGqXD8lgxKkn5GGEY8yRDWp5zFfKaCLpIoToJ3E9+wHf2nHDA dIWdZe2K3ib0T1Qx05EaweGLK0r6mtsSZLhizQvSMww4ehycsNFkwNIDRVkg4Rfi9wF4kx+2yz2 EDhtvNin+cjc2UmPcIA88MctekBm8rCJ35oH6CGKwy6RVMhIYRLqXW+NCBte8VLKKaruAnXpKIC FqCmwg30WKPdQBuxJRY26ZJWuB+4x6ykSdb12cNlf2I+YpevAVpkNzyZ+W38Se0CbQtQPwikaQz IhxXJUbmLiWGRffZoTDuf3O7oczlZAfmjSEq5JaKOXM1lUwMgOUqQdMynjw== X-Google-Smtp-Source: AGHT+IHMHEmZE59L+KqND7K1qZ6goFaTQ/0Ik5+PEsF1jg6FsDzGnkzmsfinqA6aGb227YjlL9n63A== X-Received: by 2002:a05:6a00:2d16:b0:736:9f2e:1357 with SMTP id d2e1a72fcca58-76c46c7d6b4mr6723582b3a.12.1754699157707; Fri, 08 Aug 2025 17:25:57 -0700 (PDT) Received: from smtpclient.apple ([176.100.43.104]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-76bccfbce56sm21479899b3a.82.2025.08.08.17.25.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Aug 2025 17:25:56 -0700 (PDT) Content-Type: multipart/signed; boundary="Apple-Mail=_CCE01CD7-03AE-4F03-A16E-AAFB955FF16D"; protocol="application/pgp-signature"; micalg=pgp-sha256 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\)) Subject: Re: git: e7be843b4a16 - main - Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' From: "Enji Cooper (yaneurabeya)" In-Reply-To: <286324B9-1CDF-4D27-9F96-EABA1B9237ED@gmail.com> Date: Fri, 8 Aug 2025 17:25:45 -0700 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Message-Id: References: <202508081922.578JM3A0086462@gitrepo.freebsd.org> <286324B9-1CDF-4D27-9F96-EABA1B9237ED@gmail.com> To: Pierre Pronchery X-Mailer: Apple Mail (2.3826.700.81) X-Spamd-Result: default: False [-6.10 / 15.00]; SIGNED_PGP(-2.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_LAST(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; FREEMAIL_FROM(0.00)[gmail.com]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_THREE(0.00)[4]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; HAS_ATTACHMENT(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; APPLE_MAILER_COMMON(0.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::42f:from] X-Rspamd-Queue-Id: 4bzMBh3ZKGz3DVf X-Spamd-Bar: ------ --Apple-Mail=_CCE01CD7-03AE-4F03-A16E-AAFB955FF16D Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Aug 8, 2025, at 3:39=E2=80=AFPM, Enji Cooper (yaneurabeya) = wrote: >=20 >>=20 >> On Aug 8, 2025, at 12:29=E2=80=AFPM, Enji Cooper (yaneurabeya) = wrote: >>=20 >>=20 >>> On Aug 8, 2025, at 12:22=E2=80=AFPM, Pierre Pronchery = wrote: >>>=20 >>> The branch main has been updated by khorben: >>>=20 >>> URL: = https://cgit.FreeBSD.org/src/commit/?id=3De7be843b4a162e68651d3911f0357ed4= 64915629 >>>=20 >>> commit e7be843b4a162e68651d3911f0357ed464915629 >>> Merge: d0ff5773cefa 1095efe41fee >>> Author: Pierre Pronchery >>> AuthorDate: 2025-08-07 13:50:32 +0000 >>> Commit: Pierre Pronchery >>> CommitDate: 2025-08-07 13:50:32 +0000 >>>=20 >>> Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' >>>=20 >>> Approved by: philip (mentor) >>> Sponsored by: Alpha-Omega Beach Cleaning Project >>> Sponsored by: The FreeBSD Foundation >>=20 >> This commit didn=E2=80=99t note that OpenSSL 3.5.1 was imported. I = think it=E2=80=99s best to revert the merge commit and correct the = commit message. Feel free to copy the commit message from the original = import, adding more details as needed. >=20 > The ossl module is broken on several architectures as well after this = change: secure/lib/libcrypto/Makefile.asm was updated, but the files = under sys/conf/files* and sys/modules/ossl/Makefile need to be updated. This should fix the ossl module (in theory), but = sys/conf/files.* needs to be regenerated too: = https://gist.github.com/ngie-eign/785663f814c3d56e6dc721e5e96457ca (I = haven=E2=80=99t gotten around to automating this piece). All of the entries for sys/modules/ossl/Makefile were done with = something like the following: % find -s ../../../sys/crypto/openssl/powerpc64le -name = \*.S -exec basename {} \; | sed -e 's/^/\t/' -e 's/$/ \\/g' >> = sys/modules/ossl/Makefile I=E2=80=99m going to look into shuffling the files.* pieces out = into their own files so they can be touched without having to modify the = top-level per-architecture conf files. Thanks, -Enji --Apple-Mail=_CCE01CD7-03AE-4F03-A16E-AAFB955FF16D Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEkHfexGRJ3gYRdA2gGpE5DjPsNJgFAmiWlYkACgkQGpE5DjPs NJhQ9w//dN1GsKVGYsaKuTrwV/qSfkS7phpCAag2iSyqDl1KcZsid9u3N3yNsr5D 5543IWaO4MRWSQ08WYVkP2VkAF38q404p4Bm4cMnwYiay4uPmrXYPloWk+5Xququ +iPTd5coJtGuSXE01xknn3qv3ogwSgQmbZe66C8FqbhsZkJiyX/dCsZU5j9sCeXv MCzfupYHRzYU1oMRX+4Jkavoz491Y/AXKMGEEWYpwrRfj2BzNMV/IzT/2iUyAIqb mQqpUeF8w1Rso/2gGulevTQJx2AhZxCSXzRGdKB4bqW2npX5cLofmgi1qadxtS11 LWF4RFBfKRcMNeU3cpgO0O+ikvb44pT0whiFyHsgEkzMxbfVCr4kJadhJr/JgrOo zgw8wbf+CXDfnEFTzM3Gr0y1MnLV4eAITNlsqZEPLlPzJtgT9cBdnKmWV40QMVpR BSYweA2H33BRbDVNU3SLmvQohACnVTKngIvNIDCarIbSMfTOVmriK5try9F6y/Q6 CfCAIO5JyXD8DAVk8qQw3jQ0qGaoh6bFWkGf/fauVCaNrgVC31LJeN12iezMgEM9 hxEcb/r1tH0VREuzAHEMIDV65cvf3TNnuG/j30wi9l2OI6ZD9AzWqSUi3VB2BpuV o4CoQJmdZ3wwiy0LrmyXl70q3+8ZPWa4/a3111Zx75uI7Ugym4A= =Ea5l -----END PGP SIGNATURE----- --Apple-Mail=_CCE01CD7-03AE-4F03-A16E-AAFB955FF16D-- From nobody Sat Aug 9 00:35:18 2025 X-Original-To: dev-commits-src-main@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 4bzMPL5q5Xz64TXP; Sat, 09 Aug 2025 00:35:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzMPL4Jqjz3Fk4; Sat, 09 Aug 2025 00:35:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754699718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+66BdDe09/0pPpDVWaFOD8VL40nmUME6zvwUX/o6d/k=; b=ZAE1Sr33gMcUuuVGgqfmmv/+ME7ORHs6zDRMF9wfXDutyodlGOCq1CdXYadLFe4EUTMGA+ H4JK2mnieVrYIpoFSCe3RBqxsR6TUEIAqXI1FjC1hcsevFYkrSp0w7FCNICZvOAas04Fyd vwa6g357LVmMaA61ZGSdugZopoiNFO2pfgF4G4oqr9ncVXK/M7c3aCzQLjZz8LvUaqfeDF b3EgzDLmr6ScGp/bhyx05OV2H9JuUnc1wO9uc7Y2WLcZeEZjUQJHnea6fP9brafEmZeiCD npeKR0idRyEFiBGVhXhrQ9Nbg5qfBUU1CHaXY00vQDqiL5BzuRDeO4m8f02gSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754699718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+66BdDe09/0pPpDVWaFOD8VL40nmUME6zvwUX/o6d/k=; b=CuwLH0jyz98Gm9A78zLjlar177ZlF8+ey3AL1cH3PfNnPStt2b5ikIxZ0AeYrTVvpmt3Ux dHlm4Ty+WMtnX55suae9vMfMyWtCzKsfPKEQYJlVPIAPBLJ5jTA7KDzs7X2pe2vk4bXUQg wmr2CL7S5N5ETErRpIHAmYePyChr4hH26oFUdqHC+ShWUDTkG6GHrpuEyBtNsUuK9yfEwf FnDtHjtCo0o4EnkblQFRdA+/22L569qXl9FuqBg+MuexVVohmHPOXXJDeNLhMDPjhyJjM1 HDz4Jsgr30pWrap79QGwJ4t0lN2i0bREOrLN4EdJn2RIty4WmkVB+Mhxr8DmSw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754699718; a=rsa-sha256; cv=none; b=kO7LGekzeW6jSUT+g6T4moyRieBSOSKIKaNFCSrEzHuiHAYxPZmaC0l4J6aag3rQlsU+D9 xM26u1Nao1H+N8KghslIWN271MZFZdIRi3g1yxXyL4OB/s0sP1yrivvx57y1czcXizy/Po 5n2MqFIa3Q+JApiidQuvwEJV505vJ0KDFfv03hyTyKBLqqkYjzv8MHvE2fUYbI9VxVnVm8 Jjay+Gd7XbIgboV4K1SezF/oRVydku+0KYpgZNf7EfuX4hBhAzdBF3UQ6PF7QfvN5PgRR9 e3zpw24OOpnoXSB5Y7epVzAqI88DqgE7cqRGmilPQMJoSHvGc255R2nP4bpq6Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzMPL3cKJzysV; Sat, 09 Aug 2025 00:35:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5790ZIch068073; Sat, 9 Aug 2025 00:35:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5790ZIb2068071; Sat, 9 Aug 2025 00:35:18 GMT (envelope-from git) Date: Sat, 9 Aug 2025 00:35:18 GMT Message-Id: <202508090035.5790ZIb2068071@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 62fd20bde5a6 - main - rpcsec_gss: Rename KRBIMP_HESIOD1 to KRBIMP_HEIMDALV1 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 62fd20bde5a6473143ae5091a562241eca156c30 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=62fd20bde5a6473143ae5091a562241eca156c30 commit 62fd20bde5a6473143ae5091a562241eca156c30 Author: Rick Macklem AuthorDate: 2025-08-09 00:32:04 +0000 Commit: Rick Macklem CommitDate: 2025-08-09 00:32:04 +0000 rpcsec_gss: Rename KRBIMP_HESIOD1 to KRBIMP_HEIMDALV1 This was a weird brain fart. Long ago I used a directory service called Hesiod, which was written by MIT. For some inexplicable reason, I used that name instead of Heimdal. This patch replaces the name with a Heimdal one. Suggested by: bjk Fixes: e3ac01e18eb3 ("kgssapi: Fix the kgssapi so that it can use MIT Kerberos") --- sys/rpc/rpcsec_gss/rpcsec_gss.c | 2 +- sys/rpc/rpcsec_gss/rpcsec_gss_int.h | 2 +- sys/rpc/rpcsec_gss/svc_rpcsec_gss.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss.c b/sys/rpc/rpcsec_gss/rpcsec_gss.c index 53770d139c61..89d1c56f7cc2 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/rpcsec_gss.c @@ -858,7 +858,7 @@ rpc_gss_init(AUTH *auth, rpc_gss_options_ret_t *options_ret) if (maj_stat == GSS_S_COMPLETE) my_krb_imp = KRBIMP_MIT; else - my_krb_imp = KRBIMP_HESIOD1; + my_krb_imp = KRBIMP_HEIMDALV1; } /* GSS context establishment loop. */ diff --git a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h index 02a7767220de..ba200ee3aeb7 100644 --- a/sys/rpc/rpcsec_gss/rpcsec_gss_int.h +++ b/sys/rpc/rpcsec_gss/rpcsec_gss_int.h @@ -75,7 +75,7 @@ struct rpc_gss_init_res { enum krb_imp { KRBIMP_UNKNOWN, - KRBIMP_HESIOD1, + KRBIMP_HEIMDALV1, KRBIMP_MIT }; diff --git a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c index e047c557c712..35c904560836 100644 --- a/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c +++ b/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c @@ -937,7 +937,7 @@ svc_rpc_gss_accept_sec_context(struct svc_rpc_gss_client *client, if (maj_stat == GSS_S_COMPLETE) my_krb_imp = KRBIMP_MIT; else - my_krb_imp = KRBIMP_HESIOD1; + my_krb_imp = KRBIMP_HEIMDALV1; min_stat = 0; } From nobody Sat Aug 9 05:04:50 2025 X-Original-To: dev-commits-src-main@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 4bzTNM22NYz64sqj; Sat, 09 Aug 2025 05:04:51 +0000 (UTC) (envelope-from ivy@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (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 "freefall.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzTNM111Yz3fYX; Sat, 09 Aug 2025 05:04:51 +0000 (UTC) (envelope-from ivy@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754715891; 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: in-reply-to:in-reply-to:references:references; bh=RezEAs4hBpvJa6eAqYtkmau9zeAI0Y6K6qeQTJPZF28=; b=PYQP/RMnAEeruVUNZhQRU5iLvHCTT1r3NY05v/zONmLb9XNiNB1N07XBp5TD4h6QIh5HjX 8Q67bJQfm+wbYQcwRofH8DT3VZIiDr3xBU/EkLmgjkGDNAN3YzZbpFClBrF7YvnQ/Si/U8 8iWcJthu131uR1vkhTUKDx6AsYnrOfcSyyQNYRGzco6u1Md1w25N0pcTP4dC2Ldv5VKsO6 H4ds7umKChDrGUQH7fkPbInOiZZgU7memOdU2X4SoMhjq9TaJGqq9jVBrqVj4YDjKY5Lh7 pJHKQwyRcJnDDd1K8l5kkzjgW1PtK2Pqzgll4uApKrDfrxP2fV1alwiaG8WbOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754715891; 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: in-reply-to:in-reply-to:references:references; bh=RezEAs4hBpvJa6eAqYtkmau9zeAI0Y6K6qeQTJPZF28=; b=txIjota1OwIB8e9rGKoqIpJ5ce6FPwo24LY+c5gYUHNtWnWScKX8pygYMXnz8X0e84ww80 N/4Y8Ut2cSnQHQ9qXXtZkbN/CHJ5f3z4pM2wpgk4AQBVP3fqDH35ttfp4/VJb3u1xxdsYk WfjxIS2grWhWAX697Bbb9iSEHVO6AUU2V67bJR1iYWy3m7fgMlUJqExPUv6/EQ7KZMsysx k0aCaha24LPRJVmNbP480yS6KRgb/+EfzuLbosLlTSCkUppCKTJedMgysIeG98JiTCY5ad d6MD61CJvlTtcBmb4ijfu3kokDhLZO2fs+mAXite7ZsgfDZK2HE3++YKXWvGdQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754715891; a=rsa-sha256; cv=none; b=sfhEnsOqCSkS99896FewfLBoZjgcL7dDoCI/qtHnN9yGyUYnMOSsmwp0hdgGz5hcOApPq1 PPlEPaMXz1B2yQH/K4f1sHcgVXZ5mdPHUomBHQIIkBvkxDGwCn4nqMcjGNgYCUNYKT3od0 f5Vr7jtBTtUGrAyfsHO/Dlk09CfueYxmegvIYh6jYd7VdmM/s9H4jVZgetAHmT86qYIdi8 V8hauvd1K3WyIIVGkZjzUOJq9AiL4BJHEswMytH5H/ZIMGSDTfRAZKuqJ+9VJY4FBgokx8 12mnQGS24LByXWIHfEJRwJL9UlqQnQocNOz+NXAdvVeilkH4N0gtjgLu+bbfEw== Received: by freefall.freebsd.org (Postfix, from userid 1532) id 057661CEF8; Sat, 09 Aug 2025 05:04:51 +0000 (UTC) Date: Sat, 9 Aug 2025 06:04:50 +0100 From: Lexi Winter To: Konstantin Belousov Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: f4fd2aa07cde - main - libutil++: Move to clibs Message-ID: Mail-Followup-To: Konstantin Belousov , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202508081539.578FddbT056896@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="aMRKooZrZu+TwG1w" Content-Disposition: inline In-Reply-To: --aMRKooZrZu+TwG1w Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Konstantin Belousov: > On Fri, Aug 08, 2025 at 03:39:39PM +0000, Lexi Winter wrote: > > libutil++: Move to clibs > clibs package must not be extended arbitrarily. > The clibs package is intended to provide the minimal safe atomic update f= or > C runtime. Anything else is out of its scope. >=20 > Really it should contain just rtld/libc/libthr and required fs structures. clibs currently includes libc++, libedit and ncurses, so while that may have been the original purpose, the current state of the package doesn't seem to reflect that. libutil++ had to go somewhere to fix the build, but if you want to move it to utilities, i wouldn't object to that. --aMRKooZrZu+TwG1w Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQSyjTg96lp3RifySyn1nT63mIK/YAUCaJbW7gAKCRD1nT63mIK/ YJPZAQDE5b0DFVa0brCoV21H4XyWAePQX1hPZbvC4VFoPfwX6QEA3Mpt4DktzfzZ 4FE/aFq9hPIv0onm6Z4c/yCcvwLDBgs= =N8dq -----END PGP SIGNATURE----- --aMRKooZrZu+TwG1w-- From nobody Sat Aug 9 05:11:37 2025 X-Original-To: dev-commits-src-main@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 4bzTXS1scgz64v24; Sat, 09 Aug 2025 05:11:52 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzTXR2tvrz3gGV; Sat, 09 Aug 2025 05:11:51 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none) Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 5795BbDm040990; Sat, 9 Aug 2025 08:11:40 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 5795BbDm040990 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 5795Bb9q040989; Sat, 9 Aug 2025 08:11:37 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 9 Aug 2025 08:11:37 +0300 From: Konstantin Belousov To: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: f4fd2aa07cde - main - libutil++: Move to clibs Message-ID: References: <202508081539.578FddbT056896@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Spamd-Result: default: False [-2.99 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.997]; NEURAL_HAM_MEDIUM(-1.00)[-0.997]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none]; MIME_GOOD(-0.10)[text/plain]; HAS_XAW(0.00)[]; ARC_NA(0.00)[]; MISSING_XM_UA(0.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_TRACE(0.00)[0:+]; R_SPF_SOFTFAIL(0.00)[~all]; R_DKIM_NA(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_NONE(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCPT_COUNT_THREE(0.00)[3] X-Rspamd-Queue-Id: 4bzTXR2tvrz3gGV X-Spamd-Bar: -- On Sat, Aug 09, 2025 at 06:04:50AM +0100, Lexi Winter wrote: > Konstantin Belousov: > > On Fri, Aug 08, 2025 at 03:39:39PM +0000, Lexi Winter wrote: > > > libutil++: Move to clibs > > > clibs package must not be extended arbitrarily. > > The clibs package is intended to provide the minimal safe atomic update for > > C runtime. Anything else is out of its scope. > > > > Really it should contain just rtld/libc/libthr and required fs structures. > > clibs currently includes libc++, libedit and ncurses, so while that may > have been the original purpose, the current state of the package doesn't > seem to reflect that. So something more to fix for somebody. > > libutil++ had to go somewhere to fix the build, but if you want to move > it to utilities, i wouldn't object to that. I definitely would not touch pkgbase. Since you moved the library into clibs, you should move it into some other place. From nobody Sat Aug 9 06:17:00 2025 X-Original-To: dev-commits-src-main@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 4bzVzd0pHZz6505X; Sat, 09 Aug 2025 06:17:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzVzc6qwQz3mn7; Sat, 09 Aug 2025 06:17:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754720221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cJdVdP0AWYJLarBWSr6ONAjR+AaBdTBVrwF9r3Gb4/s=; b=AH2lMXMGV+KMpZ/iXqiIisUEHeo4JXKrVwngKDgFbPxN6HDoXrBW1p6mislYOztJFVy9s8 tMDqDUV795UTu3j7GIxu/jhkKzaHajGljh2gPATcJFQu3gYYiFSulNa0j+Clw01gfWVCci c4YjF+5B7XsZtKRoLUTqq7Nh/+GbIF3xnwdOjy9PpUotpZFyQGZoQJPPR/KoXYOA+tHQ8T rVZA19HC2cKu5ZXwsiZhjI7Z5IxlltSlUGZioWELIcuAqPttdIOZB2wpoNnrcmr6J0PIHJ oUh7oZvvYWJBlGbjt/Uug/7zOq5qKwYMD6YfzHtm3TikxXkV9Q6dYiy67nhhCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754720221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cJdVdP0AWYJLarBWSr6ONAjR+AaBdTBVrwF9r3Gb4/s=; b=pxCtTppCN3a5gUSUe/W08RNmX0CtPAu+RJBhHV+SZeEQzkEOI79Kr4dIH2hug9dYRdC4pz vAPLKK1rkHgkjz7+1Z/gxfmouNOPetzYBFdfqQd0/27P5dVeYD2wCrjr0rhcTSCFquhoy3 HFofLjDyJBLi9+BHiFe9gFSLaPfYZjzLrTFgCZ+vOuHOJjAZKaATFEntJqYQshsDlkQXMz FM9AO+47m4pQapr84cUz0JPBHcKUyZL/VhUj9Dt+9HEKOWBqh9qq6RFvarRUoB2GVy0Pqv 75+LdT1E4Ys23S/JEvfwB/0SfRJywrtbRNr8ldfMvfWjI8OHjPLZ5iJA9dOd0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754720221; a=rsa-sha256; cv=none; b=jC5A7xy1inOb9oAj/iPBx4wbd1JrUNCG/Ircp+hl/GeTrddhRTUxs85J8Wts887ebnotwd xEK+ZpFU/7TDV+YgF/27Nt6ZSXTWnIFQInqLO2C+QVjctvqR/c/uqDveThhi6XBvYi6Gc3 WgmfJLgklKdQZeZm6ylzg2UorD9Mp3Zjpjp993BJFzoKRikmUktaC6sWZlnV2hK/IVQOJU adKy1UQ18fWoAp4/7hb2S7rOIZ79IQPkCMgQo/+b6sFOKzkUy3aySnlWiMCY9xhArWC+MQ sa9UsTks/HVsDB/0XxPwIFrVyV9A9jW5tQD7F9a4pYZKk0qfDL23ylQca5eLsw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzVzc600Qz18TT; Sat, 09 Aug 2025 06:17:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5796H0nY007043; Sat, 9 Aug 2025 06:17:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5796H004007040; Sat, 9 Aug 2025 06:17:00 GMT (envelope-from git) Date: Sat, 9 Aug 2025 06:17:00 GMT Message-Id: <202508090617.5796H004007040@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 9503ed0dfdbd - main - pam_ksu: Fix crash when no ticket is present List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9503ed0dfdbd61399ecd298c7693d570f8a7538e Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=9503ed0dfdbd61399ecd298c7693d570f8a7538e commit 9503ed0dfdbd61399ecd298c7693d570f8a7538e Author: Lexi Winter AuthorDate: 2025-08-09 06:16:15 +0000 Commit: Lexi Winter CommitDate: 2025-08-09 06:16:45 +0000 pam_ksu: Fix crash when no ticket is present When building with MIT Kerberos, pam_ksu crashes if the user doesn't have a ticket because default_principal is never populated in get_su_principal(). Change the compatibility function to use krb5_build_principal_alloc_va instead, and make its interface compatible with the equivalent Heimdal function. Despite what the comment says, we do free the default principal later in get_su_principal() so this shouldn't cause any leaks. Reviewed by: des, philip, cy, jhb Differential Revision: https://reviews.freebsd.org/D51829 --- lib/libpam/modules/pam_ksu/pam_ksu.c | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/lib/libpam/modules/pam_ksu/pam_ksu.c b/lib/libpam/modules/pam_ksu/pam_ksu.c index 002613188d8c..04c276a423d3 100644 --- a/lib/libpam/modules/pam_ksu/pam_ksu.c +++ b/lib/libpam/modules/pam_ksu/pam_ksu.c @@ -58,24 +58,13 @@ static int auth_krb5(pam_handle_t *, krb5_context, const char *, #define KRB5_DEFAULT_CCFILE_ROOT "/tmp/krb5cc_" #define KRB5_DEFAULT_CCROOT "FILE:" KRB5_DEFAULT_CCFILE_ROOT -/* - * XXX We will replace krb5_build_principal_va() with - * XXX krb5_build_principal_alloc_va() when Heimdal is finally - * XXX removed. - */ -krb5_error_code KRB5_CALLCONV -krb5_build_principal_va(krb5_context context, - krb5_principal princ, - unsigned int rlen, - const char *realm, - va_list ap); typedef char *heim_general_string; typedef heim_general_string Realm; typedef Realm krb5_realm; typedef const char *krb5_const_realm; static krb5_error_code -krb5_make_principal(krb5_context context, krb5_principal principal, +krb5_make_principal(krb5_context context, krb5_principal *principal, krb5_const_realm realm, ...) { krb5_realm temp_realm = NULL; @@ -88,15 +77,9 @@ krb5_make_principal(krb5_context context, krb5_principal principal, realm=temp_realm; } va_start(ap, realm); - /* - * XXX Ideally we should be using krb5_build_principal_alloc_va() - * XXX here because krb5_build_principal_va() is deprecated. But, - * XXX this would require changes elsewhere in the calling code - * XXX to call krb5_free_principal() elsewhere to free the - * XXX principal. We can do that after Heimdal is removed from - * XXX our tree. - */ - rc = krb5_build_principal_va(context, principal, strlen(realm), realm, ap); + + rc = krb5_build_principal_alloc_va(context, principal, strlen(realm), + realm, ap); va_end(ap); if (temp_realm) free(temp_realm); @@ -273,13 +256,7 @@ get_su_principal(krb5_context context, const char *target_user, const char *curr if (rv != 0) return (errno); if (default_principal == NULL) { -#ifdef MK_MITKRB5 - /* For MIT KRB5. */ - rv = krb5_make_principal(context, default_principal, NULL, current_user, NULL); -#else - /* For Heimdal. */ rv = krb5_make_principal(context, &default_principal, NULL, current_user, NULL); -#endif if (rv != 0) { PAM_LOG("Could not determine default principal name."); return (rv); From nobody Sat Aug 9 11:58:25 2025 X-Original-To: dev-commits-src-main@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 4bzfYY69m3z647fN; Sat, 09 Aug 2025 11:58: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzfYY5ZGKz3djn; Sat, 09 Aug 2025 11:58:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754740705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wtqqOJhH+JyI/aqzym831aSNiKSMmEMrLu8JpYbY2q0=; b=eFLP4+mHs30UILfFPwxB9U711LUy82SbKiyXZ9jRV5uwVTWPHLPgAr49ZiEhjbKDU29pXX 5JqIQmk4b4Qacrgz8xVLdEy9AA7buWZ4AAeErvKR1NyKLbdgmtgK1BsB/WiaH3hW8Iljld 45E75N+Z7Fm/s+vaOcdKPc43Q6dLaQ1ZlHpRXcuyLT/bfNBs+C9epYw8ZKAqWul3L/Cj58 XsfDhYRkNagj5lTazDekMOmQPYi9tNBRw08JF1CQqULETFZUOZdYfpLQkemBAxSqjPrNyY 0ND/IKmY96o23lftFD3qK3PwL7e86XdaWxzXyfsTHGIqIX/ItrilJ7NQrks6Ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754740705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wtqqOJhH+JyI/aqzym831aSNiKSMmEMrLu8JpYbY2q0=; b=xHnxd4X2WkbVWV7d2q9LqeLQP3+5ZhVnJfBMuGcNwqbertNeVi7ttjRBZhms0Q+X9tNYT9 82DpQhPUncQINpxAnyJyf3RI/QaTQ8fvzMqkZDqrlVtt5cP4KS7QWUhe+QtyV1OXRVaDeQ TmtqSYYGeEd19GrwVMtcwAzGw4nVkvNmT9CdIrBYZdN5s7Q1/501+so/kI6Xg9DF4czqhx Q84sp9skfiJ9ZvPXevUEicEmze8hrYzBsefwTIs9YC9aKPvReG9nXiRhst4UvCeTZn8Uxl EKIpXu6cokIgmtPCdyCFgi10HIclMLzidt9YM6rnZX5Z4uPlVbomCKmwpI/2LA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754740705; a=rsa-sha256; cv=none; b=Ux1scCtE7YSxJ7iDs1WDff5Ud9FKAHcv1q+we/DljrReXogVUeo3oWRbu7R5UG4eVG3DQ3 oTnxo620OJvYV+Kt1pbsUs3ribj21TT2KV37p2ms+pyjyuFzDSbzAPFKU7NKYVEQd1xgz4 SorZG4iY8Ey/ggUPqIvO+Zzqy8qQvpGZbWQL5IHUlMG6WAgKIWWBbEdTJ8hwJ/DfIIgq+q VW6GKDHS81SMpxmmm3JF6wO9oVBDmDo2q9DEo5T7kezvJVwJIiEgDsx93eKfjCZWMRvrc4 S0eWeoTYp/QGi8ilDjJteg3gzdGkxYAzQmL9OrDITlZluNWxnmR2UZRlcn0Dmg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzfYY58l7z4dJ; Sat, 09 Aug 2025 11:58:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579BwP11045174; Sat, 9 Aug 2025 11:58:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579BwP1b045171; Sat, 9 Aug 2025 11:58:25 GMT (envelope-from git) Date: Sat, 9 Aug 2025 11:58:25 GMT Message-Id: <202508091158.579BwP1b045171@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: b6521ceaf277 - main - tcp : remove assignment without effect List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b6521ceaf2771fe6b3f4ae7e7eb390312e3a678a Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=b6521ceaf2771fe6b3f4ae7e7eb390312e3a678a commit b6521ceaf2771fe6b3f4ae7e7eb390312e3a678a Author: Michael Tuexen AuthorDate: 2025-08-07 20:14:08 +0000 Commit: Michael Tuexen CommitDate: 2025-08-07 20:14:08 +0000 tcp : remove assignment without effect rstreason is only relevant in the code paths with the label 'dropwithreset', but not in the one with the label 'drop'. No functional change intended. Reviewed by: Nick Banks, rrs, Peter Lei, imp MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51814 --- sys/netinet/tcp_input.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index d58cc69b7625..fa0a1661e37d 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -2218,7 +2218,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, SEQ_LT(th->th_seq, tp->last_ack_sent + tp->rcv_wnd)) { tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT); tp = tcp_drop(tp, ECONNRESET); - rstreason = BANDLIM_UNLIMITED; } else { tcp_ecn_input_syn_sent(tp, thflags, iptos); tcp_send_challenge_ack(tp, th, m); From nobody Sat Aug 9 12:11:37 2025 X-Original-To: dev-commits-src-main@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 4bzfrn5XD8z648Sl; Sat, 09 Aug 2025 12:11:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzfrn3x4Rz3hCQ; Sat, 09 Aug 2025 12:11:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754741497; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ygPu0LVOldcq20DKKuy2NiqVqKkU4V9ETJq6MCtXq+Q=; b=DEjHSRf7mMOQDYo1gaaBgqwl6rb/tZPHSHZaovdzQT5bwvnSSlzaWQFNYnnhCxxWzoqsce 6KVqFsxNWPdhBBig1cXZSsF5ZbbUdVvri0RtBxCT8w8sYY9IBvQmHDhSNb49aX49gP+qHF 5GR+3mYvYyEOlgMHLO6qXRB/cH553NJ4U1rNKrNKvE2F26jOQFjniSbCxvIxF/RZIiX/Rl SsUpBhVgVZeQ968KCb/OBJOebsnj51raxJ0oNJw3nF9nPxsp7gdJcu6hTWOuzVgvm1e03h Y0u/SO9e+c7EN7pNW5CcnCMaL+mZfZwbisBBKvZPiY/wv/gZZkl4W68Yp6VVpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754741497; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ygPu0LVOldcq20DKKuy2NiqVqKkU4V9ETJq6MCtXq+Q=; b=PVfNEHSwbbh6jbGsCGPEFYP1YudzchSdicZGoQR7PNLqfXAnNp46I8P2pneeTq3gkk6Iwf 39H57rB2V+gYWHNjtchdygozfF2afj+QDyHbnopTdaFFpVuePogRlpuj298rDS4Oqr5lMp voblT7vDVoywdVDCO1o9HlELQaVXpCxdICXuccpnJqrgGu0uuH518vWvSb8+sjOIvZfxJ8 mJiNPOhL89iuvZkEZUI0QWuKV5Eh90kE9tHmyJqO12+fEv0OkdctGBW02pDXPnhDfHMeBZ 5OdsxV18D+kknXyoB/9dazPLPxtRLTAGsCNrZ+84fgLRfXih6eMgpq/oVtGfrQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754741497; a=rsa-sha256; cv=none; b=TKnZqyGPEpVJpeUL/f+v9Mq58Tbu8u9iOQpc9xrB3ahtLzjL4kC+CYPl9PlYlS8wrYJzuP lw1z9F6wQ/yWps+9bEUhiaI1qiNH9/Ho+D4LDzlmFskNG51tGGm7YDSAuugJADio7n1wQw LFLCLG4j+TjlIz6HI+7QzhERm1yuxKIPsfaXKz03ubJrCoNRD7n+SR/7UQly8NTX2NX+ZK 7kAdbuCNIP83goF509alGC9BSvcmcmmQ6NWCXq719tCD6HHFhv735nZz4aJBcoi71hyGqI x8ZfJdxn0vi7Ed8VYlrJoGQLadFaAxiO/OqsHt25CR3e5VMGuNhg98sGbtmz5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzfrn3JqWz4fF; Sat, 09 Aug 2025 12:11:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CBbZ9074424; Sat, 9 Aug 2025 12:11:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CBbhf074421; Sat, 9 Aug 2025 12:11:37 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:11:37 GMT Message-Id: <202508091211.579CBbhf074421@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: 2eb786d96e97 - main - tcp: rate limit the sending of all RST segments List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2eb786d96e97a953d0256d1d622c4853964be2dc Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=2eb786d96e97a953d0256d1d622c4853964be2dc commit 2eb786d96e97a953d0256d1d622c4853964be2dc Author: Michael Tuexen AuthorDate: 2025-08-07 20:23:54 +0000 Commit: Michael Tuexen CommitDate: 2025-08-07 20:23:54 +0000 tcp: rate limit the sending of all RST segments Also rate limit the sending of RST segments in the following cases: * when receiving data on a closed socket. * when a socket can not be created at the end of the handshake and the sysctl-variable net.inet.tcp.syncache.rst_on_sock_fail is 1. * when an ACK segment is received in SYN SENT state and it does not acknowledge the SYN segment. After this change, there is no need anymore to provide a rstreason to tcp_dropwithreset(), since it is always BANDLIM_TCP_RST. This will be a follow-up commit, since it will change the code in a couple of places, but will not change the functionality. Reviewed by: rrs, Nick Banks, Peter Lei MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51815 --- sys/netinet/tcp_input.c | 6 +++--- sys/netinet/tcp_stacks/bbr.c | 4 ++-- sys/netinet/tcp_stacks/rack.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index fa0a1661e37d..d392cbe09950 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1134,7 +1134,7 @@ tfo_socket_result: V_tcp_sc_rst_sock_fail ? "sending RST" : "try again"); if (V_tcp_sc_rst_sock_fail) { - rstreason = BANDLIM_UNLIMITED; + rstreason = BANDLIM_TCP_RST; goto dropwithreset; } else goto dropunlock; @@ -1568,7 +1568,7 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, */ if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { - rstreason = BANDLIM_UNLIMITED; + rstreason = BANDLIM_TCP_RST; tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT); goto dropwithreset; } @@ -2346,7 +2346,7 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST); tp = tcp_close(tp); TCPSTAT_INC(tcps_rcvafterclose); - rstreason = BANDLIM_UNLIMITED; + rstreason = BANDLIM_TCP_RST; goto dropwithreset; } diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index ce4e9f30020c..f2960ab9c636 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -7863,7 +7863,7 @@ nothing_left: /* tcp_close will kill the inp pre-log the Reset */ tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST); tp = tcp_close(tp); - ctf_do_dropwithreset(m, tp, th, BANDLIM_UNLIMITED, tlen); + ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen); BBR_STAT_INC(bbr_dropped_af_data); return (1); } @@ -9405,7 +9405,7 @@ close_now: tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST); tp = tcp_close(tp); KMOD_TCPSTAT_INC(tcps_rcvafterclose); - ctf_do_dropwithreset(m, tp, th, BANDLIM_UNLIMITED, (*tlen)); + ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, (*tlen)); return (1); } if (sbavail(&so->so_snd) == 0) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index d6bbfeb886d9..2dfcad84ad99 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -12038,7 +12038,7 @@ rack_process_ack(struct mbuf *m, struct tcphdr *th, struct socket *so, /* tcp_close will kill the inp pre-log the Reset */ tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST); tp = tcp_close(tp); - ctf_do_dropwithreset(m, tp, th, BANDLIM_UNLIMITED, tlen); + ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, tlen); return (1); } } @@ -13518,7 +13518,7 @@ rack_check_data_after_close(struct mbuf *m, tcp_log_end_status(tp, TCP_EI_STATUS_SERVER_RST); tp = tcp_close(tp); KMOD_TCPSTAT_INC(tcps_rcvafterclose); - ctf_do_dropwithreset(m, tp, th, BANDLIM_UNLIMITED, (*tlen)); + ctf_do_dropwithreset(m, tp, th, BANDLIM_TCP_RST, (*tlen)); return (1); } if (sbavail(&so->so_snd) == 0) From nobody Sat Aug 9 12:21:30 2025 X-Original-To: dev-commits-src-main@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 4bzg4B1rCTz649ch; Sat, 09 Aug 2025 12:21:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzg4B0xz2z3kSq; Sat, 09 Aug 2025 12:21:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=riA+CyBsJ5Ynt+G44dNnNpIe+CwYj189Oc8BC//fdks=; b=p2aKUmhpEQyau1LCttofB5QDY2YOO05obyztv2l/LZPwVwS42NN+FLjFrSnhxoQzrsbIQC n9lKqV630ACQ1baCy/KGMEQf89ySZlNt5IVZ9IrnUsfFoflLk09xuS1kdWhLkqwLvv5dgg B4wUWnRzj3tE1u6+cCCDgkP4EkpSno+nk5tFycQvxhA0GDz4Y/HNwhnGdSO9hnb48gyygL i5qO5I5l7C1b+Yn03rfkbbx7DVaVVz8GXq5JsqVtawvEkSy8L+vNbFng1kylkvZ/xvwJZh 1YjFEmfFjtpBFnKsYn2W2MHPWcA2TGaRoXcqkOJ7kagAuWC/4R78lUqgZmjxCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=riA+CyBsJ5Ynt+G44dNnNpIe+CwYj189Oc8BC//fdks=; b=i3WmFAGTbT3af9/p59JM8+9RdczIephYUXv/z+q0OKFd7M9YOKnrXhtVuyUWKF/55eP4ZW FgYE8nGkslss7x8+S/sN92QXyae+oEJmELXCu1nNyt4ZVc94xKG8iwR2v/0/405M3gh+5o Y/hqXGwHBr/c83uxvJrRg6oISKKVPOvVB6zEt3PMtzvjheSQC5zO2KS5Mu6alY8rpI/T7z OhFteLJNNcaf64bZIUXATv3riYFTFWC7y+SVrM1FDbZp9lOcJOjDtBzqyOJ7/qSZGxLqYc s7JNF9eg1JVTtXK0gbsvO3P0Bad7o76oe9+P1LJd7K3bp53BBSu053YlqmX3Wg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742090; a=rsa-sha256; cv=none; b=AmPxVpFpYFvKjrmz3796TjdSuRliAQ8UChkp3/f7hgydsoCxH26JCi9epGMiQ8cKX3AKvp nXUI7X+3EtSu+EjNYd3sFICvISz4Z6mx/vprM2W5Zs6d3nHpahhIfn+nO6rEtE4rdtRc8e lV5lkDWy2BAO5JvQKsoiEuZKDVPucKTQPAc8fulyGPwSKpvgNqztiAaLswCxeTIvMWMOG4 KW6fqE5BBM8ZQQk31T/icD/lhd0QHHHW4VyaV9OAafFnHIMDisalgDj/XLU+D+cQwZUa6u aDQuScpMBKtHt0fcGRGRn80yz6w3+rnuMFhLOsGKmTT+M+k4P6cUL1LFtvb/fQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzg4B0X5Sz57r; Sat, 09 Aug 2025 12:21:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CLUVY098416; Sat, 9 Aug 2025 12:21:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CLUu6098405; Sat, 9 Aug 2025 12:21:30 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:21:30 GMT Message-Id: <202508091221.579CLUu6098405@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: f0f6e5038896 - main - tcp: mitigate a side channel for detection of TCP connections List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f0f6e50388963cae44bb92bb69ed7a1135dd2eec Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=f0f6e50388963cae44bb92bb69ed7a1135dd2eec commit f0f6e50388963cae44bb92bb69ed7a1135dd2eec Author: Michael Tuexen AuthorDate: 2025-08-09 12:17:38 +0000 Commit: Michael Tuexen CommitDate: 2025-08-09 12:17:38 +0000 tcp: mitigate a side channel for detection of TCP connections If a blind attacker wants to guess by sending ACK segments if there exists a TCP connection , this might trigger a challenge ACK on an existing TCP connection. To make this hit non-observable for the attacker, also increment the global counter, which would have been incremented if it would have been a non-hit. This issue was reported as issue number 11 in Keyu Man et al.: SCAD: Towards a Universal and Automated Network Side-Channel Vulnerability Detection Reviewed by: Nick Banks, Peter Lei MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D51724 --- sys/netinet/tcp_subr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 26e7e53d540c..1fce7c591639 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -82,6 +82,7 @@ #include #include #include +#include #ifdef INET6 #include #include @@ -2156,6 +2157,13 @@ tcp_send_challenge_ack(struct tcpcb *tp, struct tcphdr *th, struct mbuf *m) sbintime_t now; bool send_challenge_ack; + /* + * The sending of a challenge ACK could be triggered by a blind attacker + * to detect an existing TCP connection. To mitigate that, increment + * also the global counter which would be incremented if the attacker + * would have guessed wrongly. + */ + (void)badport_bandlim(BANDLIM_TCP_RST); if (V_tcp_ack_war_time_window == 0 || V_tcp_ack_war_cnt == 0) { /* ACK war protection is disabled. */ send_challenge_ack = true; From nobody Sat Aug 9 12:35:55 2025 X-Original-To: dev-commits-src-main@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 4bzgNr1TzZz64C6Z; Sat, 09 Aug 2025 12:35: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNr0fLKz3lsV; Sat, 09 Aug 2025 12:35:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a1fYlzhzD+LRXuMlm86K+OzfUwwd6e6Jc0HucMZmot4=; b=Cc1x5Q9EcaBakEDpZCrBDM+SQ0aKh/xVT3HEHcc5tfTa1eff74FR2+1cRWZCgORuoXcoTE gua8vcKWVFiUeclMt+ptXl0itcIp+kN/80pbUY2hbfFmYybJH2uui3pSqBRtBM5sV8f+KS xPBCI9/x+lZp4tARZZkljCnW2e0fGoQ506pZfVsbnuS3Lq3ejzhFKsBeJ+qs45jdwVcQxO MZJMa6Xoycdy5JGjiDE7Xj6VFg5HbTBkI+1Cx9Fr5aZzXs4kEVYBQwe5ZR85s7A8apxo0R oNNPfVfkOsT0aR5Hey7ybvLohDV1xf7gLA7DG7LiWbKtCbfAilPhx25bbizNPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a1fYlzhzD+LRXuMlm86K+OzfUwwd6e6Jc0HucMZmot4=; b=GSFrbbe8ZQStwJfj2h9MfMEKLySoVWLi9CcSjVnRvdCp4Arqxh9V/DAD8jjCG4x/sVtdBx gfJMmYzlJCnWtk3WRpY6qKtsNYUUXio4U/4rKBAiiQeAx+NozbuoaZlL0XJ9ekJU6oVdqy 9TBgHsX2ZwpXGAaH+4Ol9eRiSAOJOPAN6m9Hg3SR02fOQ5+ArIo+RnMwsbVojawq0HavbO Nj2U8rTSvo0eOaeaaQXg9THFsy+S8Q40vJzH5N1J/+GSqVMj6f2nFEzwKbRG52enk4CYfN xztSoF0+h4eFvD6+W1gWcgQC2M9DgEYG3DBAgqVKpRWpSYjEoWKCkfnggrj2AQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742956; a=rsa-sha256; cv=none; b=oyn6pWAmPxv0r6PA6vKnqUiSSlkL5rCNTVXE0e0c/Yhv+N8N4EdKMHZjsUJPylFYLpJ6/u WLDCZvJdBM/GVuEzqGTv1Jh1RxKTKToBn/N3PoRZOg/FouDpf9PBA1Gu2gNgaVL9bXPwJV wqlKkhRQuXTRmTD/bYk1ZnlrGjqm32iWR4YRDRn3/TIqmcJCElOJGUyK81tSu3u4+XI/az LyoIzKLzB6C1VMCECiFjaO7zrSCcvCsLOTK4h95Y+9ZZmSHbD0foCzOSYeAtq9OUmUr510 ATrb8SI12hLkz1Xtw7VDsE49Vv8l+6atXrTyvgpdMgowFT9tAgVp6OOOMfvPjA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNq6qmdz63G; Sat, 09 Aug 2025 12:35:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CZtHK020469; Sat, 9 Aug 2025 12:35:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CZt0s020466; Sat, 9 Aug 2025 12:35:55 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:35:55 GMT Message-Id: <202508091235.579CZt0s020466@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: 7e5d7b0e8198 - main - linuxkpi: Add `sysfs_add_file_to_group()` and `sysfs_remove_file_from_group()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e5d7b0e8198beb97de040c64ee327a982201073 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=7e5d7b0e8198beb97de040c64ee327a982201073 commit 7e5d7b0e8198beb97de040c64ee327a982201073 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-18 20:37:10 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:23 +0000 linuxkpi: Add `sysfs_add_file_to_group()` and `sysfs_remove_file_from_group()` They are used by the amdgpu DRM driver for quite some time, but new code using them added to Linux 6.9 made me discover that these functions were missing and existing code was commentted out. Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50987 --- sys/compat/linuxkpi/common/include/linux/sysfs.h | 57 ++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/sysfs.h b/sys/compat/linuxkpi/common/include/linux/sysfs.h index 65e023031bb2..470c224a9778 100644 --- a/sys/compat/linuxkpi/common/include/linux/sysfs.h +++ b/sys/compat/linuxkpi/common/include/linux/sysfs.h @@ -189,6 +189,50 @@ sysfs_create_file(struct kobject *kobj, const struct attribute *attr) return (0); } +static inline struct kobject * +__sysfs_lookup_group(struct kobject *kobj, const char *group) +{ + int found; + struct sysctl_oid *group_oidp; + struct kobject *group_kobj; + + found = 0; + if (group != NULL) { + SYSCTL_FOREACH(group_oidp, SYSCTL_CHILDREN(kobj->oidp)) { + if (strcmp(group_oidp->oid_name, group) != 0) + continue; + found = 1; + break; + } + } else { + found = 1; + group_oidp = kobj->oidp; + } + + if (!found) + return (NULL); + + group_kobj = group_oidp->oid_arg1; + + return (group_kobj); +} + +static inline int +sysfs_add_file_to_group(struct kobject *kobj, + const struct attribute *attr, const char *group) +{ + int ret; + struct kobject *group_kobj; + + group_kobj = __sysfs_lookup_group(kobj, group); + if (group_kobj == NULL) + return (-ENOENT); + + ret = sysfs_create_file(group_kobj, attr); + + return (ret); +} + static inline void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr) { @@ -197,6 +241,19 @@ sysfs_remove_file(struct kobject *kobj, const struct attribute *attr) sysctl_remove_name(kobj->oidp, attr->name, 1, 1); } +static inline void +sysfs_remove_file_from_group(struct kobject *kobj, + const struct attribute *attr, const char *group) +{ + struct kobject *group_kobj; + + group_kobj = __sysfs_lookup_group(kobj, group); + if (group_kobj == NULL) + return; + + sysfs_remove_file(group_kobj, attr); +} + static inline int sysctl_handle_bin_attr(SYSCTL_HANDLER_ARGS) { From nobody Sat Aug 9 12:35:56 2025 X-Original-To: dev-commits-src-main@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 4bzgNs2hMhz64C6b; Sat, 09 Aug 2025 12:35:57 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNs0vHbz3lpv; Sat, 09 Aug 2025 12:35:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742957; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NvBbFMCxrCeV/qoJwa40Y0NYsbDNQipE+zg25c5j6+U=; b=w5zXizeTh6SAg+XMbZzUoyHM8nR4U2BcDNWcqeU8aCUGUvpqhdWstW0AtBEfYzxv5ZwSzl iYstHwFez5L+sN9U7xFf6paCyAKmYV+uyOGhuOjzQ/kCyA0O9Py1IN0BWBHCywlGzKRnhD wmUpjjRjS6jMfRdHzvLnagEkF4R6cVVcNLrbS0ijObRFgS3X6nos5vDXAaDI9AtklV3WNp GafPa0KAHczB1JAuTXcxUw4T+qU4Dm4TzyIUpyGwsQ84gbtuW3cRjntXgfElzIqWSM/6Rw Hqp4RWt7VNgtIfMvcoPRvbpGW4nJZ3Q1e+mDehSTEeoTbfhKtpM3HGfw7kIOOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742957; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NvBbFMCxrCeV/qoJwa40Y0NYsbDNQipE+zg25c5j6+U=; b=BllsU2LjbbTT74fo6J3poaCrTA/sV4Qcj76cHqZoGq5DT3iMA+ZyfFaOLX5kzCbVFXWjY/ ee/E/KgD1Zm9O1Zyo6wwAq0iyRezsi1STgXeUxVCNRwglZxClbP4kNfZ1AXUJA+j06t2Q0 v7zGuMgKxCwdNRKrHgpt+5QnKvoXFD8Tvfh3F5RlVA13Y74Bg2lnMsYZxzR/0+xYsw4wqv nJNcFxUrsWCpUcznRPaVK0ZZ3DStPpmOO8mReFr4H8zasEnxUmknoF+9IG6yNFgxzXLL3t mmSK0T4GEHCMmbfTCQN9SfBgK7ejRiVZ+ZjN2iOdutyF+KiwiYrmVYBcpWsC0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742957; a=rsa-sha256; cv=none; b=f3gllTbBTyPxOimStb32zuk0r1H+u4lvHDKzbgerAgWq7s/WQp6MwE/KVhU5cGvRUIBTiR u2/wMQItYV+vB1KNk8MmVSaXjpqiphIT+supJ421GQvXnWlhUydieSLlk4475jycMOQrFE 0ddceVspWxBNsqYlzIHyY9dTM0slRLQmZhKpDPQ8JAaodo1/5f3dNxjeXm0vJvxJB4qq/6 LWK7jSH33lCFdLu5m7b/ck4+DmV6hAiSWA2F6tB+kVvy8ujM1iHJCJR9YNUDtsKlOQuMxm x9iPpsBdZXwFK90wyMvnfYf9PuR68lkmSMbcqA03tld+OQJgljFbFfcrncd0Jw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNs0Mg6z5dK; Sat, 09 Aug 2025 12:35:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CZuXQ020516; Sat, 9 Aug 2025 12:35:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CZu54020513; Sat, 9 Aug 2025 12:35:56 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:35:56 GMT Message-Id: <202508091235.579CZu54020513@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: c903f3756a28 - main - linuxkpi: Add `ida_alloc_range()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c903f3756a2877d07f5ef07bcd463a9b7ddc975a Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=c903f3756a2877d07f5ef07bcd463a9b7ddc975a commit c903f3756a2877d07f5ef07bcd463a9b7ddc975a Author: Jean-Sébastien Pédron AuthorDate: 2025-06-20 16:51:10 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:23 +0000 linuxkpi: Add `ida_alloc_range()` The amdgpu DRM driver from Linux 6.9 started to use this function. Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50988 --- sys/compat/linuxkpi/common/include/linux/idr.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/idr.h b/sys/compat/linuxkpi/common/include/linux/idr.h index 535d8ce07fb4..06850c94a5e9 100644 --- a/sys/compat/linuxkpi/common/include/linux/idr.h +++ b/sys/compat/linuxkpi/common/include/linux/idr.h @@ -147,6 +147,13 @@ ida_alloc_max(struct ida *ida, unsigned int max, gfp_t gfp) return (ida_simple_get(ida, 0, max, gfp)); } +static inline int +ida_alloc_range(struct ida *ida, unsigned int min, unsigned int max, gfp_t gfp) +{ + + return (ida_simple_get(ida, min, max, gfp)); +} + static inline int ida_alloc(struct ida *ida, gfp_t gfp) { return (ida_alloc_max(ida, ~0u, gfp)); From nobody Sat Aug 9 12:35:58 2025 X-Original-To: dev-commits-src-main@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 4bzgNt3Hwrz64C4N; Sat, 09 Aug 2025 12:35:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNt1jRNz3lsW; Sat, 09 Aug 2025 12:35:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uxv0uNSaGyPhWKyuMA8eqpDefe7ncIKL/FX+Vg11ZVE=; b=fmMLrsKcE5eBYhXTELwouB5IgZRvMv1z7p5PJXWT6tsRsUae2YPOC4Ry+x9kn3gkMjeM04 gEk1/VMgBejh81JPIXk7dP7vDsYQFFMOSKtDMw1ieH554pR/5nI60VR6YOtsBQ3addkkon FWhz9z0UeE0SJPIXZuNoixMFLWlUqKekrjRHYqWRcV9XrbvXOu1HSwQJlg5xS7ZRx5XbAq cAUxNS/KgcjAHOHGLssaaO7E/Ktf9RvzNhwEi0MSVVQG7/oGf0X1PJY8iJ5CflybzKx7yw cd66AF/9heBhwAeG+wBlhOJ4P3hPkIT+g7gktuxeyn7BPeFcdTh+BKVIXQx+lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uxv0uNSaGyPhWKyuMA8eqpDefe7ncIKL/FX+Vg11ZVE=; b=S3JZsz7yFAG0FK12AdQd5Sgcf3inRfSOXAjLIkC5KnjZX7gy+eHgfURpxhfN/4whYAvCvp rlx2KqIL9YeDLfA7C2tnaHWGd/RWVOfY44Q5kzYDy7gM4NTna2SMWyR5Nb1d5Jraw+fsuM VrqVBQTvphTlp2RoGj/o1fSJaZk53tSZs3yf9xvaCb9LebGDS9t9uXIxiTEhBDhPZAIxNx CqsxN9/GJd/CwLfOQqok7SNEA03103TVwFQxGgbDFyTewyYDFpSBGQ4TT7aCRr8Ho5AtcK +jLf1bc7Gy30hnMSUtvpPC1Ztsi69PI4cDPov1yphX4Lv0dhYFG+/0AfsMNn5A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742958; a=rsa-sha256; cv=none; b=ABKkTzXi0QAfReFh7Dkwd8LmaYf6lOxOUKs/qa/yZnnWlE5TzeB8jZrd2Hzcx02IQzNc0M eN0nJQxfzwUWjPfB7wigN3SHtoGV4Z0L42Ky0nWfCISq94wciaXS9RB6ZigGCNdxFwPna9 apnD9jNX2N7AVE+y6ME7bP3HA9Q8hiFTvbBfziJeg3m8VeuxhBqO02qwst3urfuYdBUAjT PZUT16+GEojWRheeAUm/8NboyfsQ3aFnB+tSA891c/4URItdRY00ojIc69PXu/C8WvxLeO RRRoqSsko1yEc0bZNOJvzgZgEs+t4Nv8yNV6IPoCGfF8z+l0yKe7ltUD4h9gdA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNt1JT1z5dL; Sat, 09 Aug 2025 12:35:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CZwos020556; Sat, 9 Aug 2025 12:35:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CZwP3020553; Sat, 9 Aug 2025 12:35:58 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:35:58 GMT Message-Id: <202508091235.579CZwP3020553@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: a7a05ace5d02 - main - linuxkpi: Add `name` field to `struct resource` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a7a05ace5d0221bed1fce7c8c09ca31a9eafeb11 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=a7a05ace5d0221bed1fce7c8c09ca31a9eafeb11 commit a7a05ace5d0221bed1fce7c8c09ca31a9eafeb11 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-20 16:52:39 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:24 +0000 linuxkpi: Add `name` field to `struct resource` The i915 DRM driver started to display this field in log messages in Linux 6.9. Reviewed by: emaste, manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50989 --- sys/compat/linuxkpi/common/include/linux/ioport.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/compat/linuxkpi/common/include/linux/ioport.h b/sys/compat/linuxkpi/common/include/linux/ioport.h index 444f3ad94602..763af2de7c4f 100644 --- a/sys/compat/linuxkpi/common/include/linux/ioport.h +++ b/sys/compat/linuxkpi/common/include/linux/ioport.h @@ -40,6 +40,7 @@ struct resource { resource_size_t start; resource_size_t end; + const char *name; }; static inline resource_size_t From nobody Sat Aug 9 12:35:59 2025 X-Original-To: dev-commits-src-main@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 4bzgNw2dFqz64C6h; Sat, 09 Aug 2025 12:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNv2xx4z3lTx; Sat, 09 Aug 2025 12:35:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2IYyvjjUgmHs+YkDLk2me/3T62c1sR7jZlu9N246PLs=; b=BCHk+JQBlZxWa+fJ+VyMrfKPEbKMWdQ5dQ0YUGwKsrnS8YQvmLM+Zm7BaO22J7VMr5h95v HCXhdnqddArwpATC7iut2AZzEau9eqIGpuklfsKNz5Zphh3S9/V//tJ3ZkfGzrs26M8b7R sDZHJeqqkjVbMJTVba1CzodhozWGCvi6OmXQGKeuWoyErGt+uS2mFKNnjwAygSXTtIM7WY eoh8CMwlq0JSNzf8mEI9pzFQqZ2EcicEzlOPpo8X+Xa8JjYEhcLaVIzaL+0iLfm99sMPPf D6uTeO9KrHiNfdldrTUqrEA2O8s+LGjhApuPGChRFt+ZdQBc2pa3mtB9E2d+eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742959; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2IYyvjjUgmHs+YkDLk2me/3T62c1sR7jZlu9N246PLs=; b=Gum43Bb324QmMl9oF2mb9KZOwz1p3JJIe7FL9rEI0yzBYVnxE3XJqATpmoqwu87zVfPOj4 SEY3mRvaO+CIHJpzHm43pRGquj9gImMpAORdggmDv5zm+LX1nYFCj4C5JO56aSeGhCn/GK TPOZ5KKt1uw1WfvGkhmQaklyEHIUsJxCz4b+K/BVwamwAF1VUKIS4pTTM3/ebcJmXYJ7zl wHgPE52eZYKjYmBPhcS8iBPLbG+gAWaEfi4KJIL+iuiZ1Jakda43w/QBsqvdiQjKeDoXVY HRkfO2Ix+zTV3pGZoTLvz1QPdNRz+EIFrbXw30aUdry7f0YDmXAdSQ3+gW+jIQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742959; a=rsa-sha256; cv=none; b=hE6HyKfaAAAXdeSue61fo+8Sumw3jITO8LFDMvKjcq+ZllT4gmcYFDJ2Vg65ZVKlr1NUet tnLmeZkEvsQDpMTUXbgW7ldXB9xX6a6fEWRwqjmaKBxy2hBrBoM7PDCXmy5W+RsngTGkdo l/nbqKGBxqHMjNA9COTDkyuz/JJ9ryLfgVm6Zt7Joa3B1oELVyNEw+IpEOezre74puETcw r1Bf5oq8kZTEc3jvCz/2CWZpvzTK/22uTMnhlvNEIxGcXZCQcc2xZV/2q6vYaYR2b26QdK fRHKsT1zkzLlO5tKkjPGKWbc3dUbVfP1F3PLNOI+3mx6FU5m5e84QpUPiAsTnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNv2J3xz5dM; Sat, 09 Aug 2025 12:35:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CZxMQ020597; Sat, 9 Aug 2025 12:35:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CZxWY020594; Sat, 9 Aug 2025 12:35:59 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:35:59 GMT Message-Id: <202508091235.579CZxWY020594@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: 621f43ffe2eb - main - linuxkpi: Declare several log message prefixes List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 621f43ffe2eb4e2565663f14f8027467b1a8146e Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=621f43ffe2eb4e2565663f14f8027467b1a8146e commit 621f43ffe2eb4e2565663f14f8027467b1a8146e Author: Jean-Sébastien Pédron AuthorDate: 2025-06-20 16:56:17 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:24 +0000 linuxkpi: Declare several log message prefixes The amdgpu DRM driver started to use `HW_ERR` in Linux 6.9. Reviewed by: emaste, manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50990 --- sys/compat/linuxkpi/common/include/linux/printk.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/printk.h b/sys/compat/linuxkpi/common/include/linux/printk.h index da9d45122d4d..d2d197682782 100644 --- a/sys/compat/linuxkpi/common/include/linux/printk.h +++ b/sys/compat/linuxkpi/common/include/linux/printk.h @@ -94,4 +94,10 @@ print_hex_dump_bytes(const char *prefix_str, const int prefix_type, 0; \ }) +#define FW_BUG "[Firmware Bug]: " +#define FW_WARN "[Firmware Warn]: " +#define FW_INFO "[Firmware Info]: " +#define HW_ERR "[Hardware Error]: " +#define DEPRECATED "[Deprecated]: " + #endif /* _LINUXKPI_LINUX_PRINTK_H_ */ From nobody Sat Aug 9 12:36:00 2025 X-Original-To: dev-commits-src-main@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 4bzgNx0RxXz64Bt2; Sat, 09 Aug 2025 12:36:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNw3fvsz3lts; Sat, 09 Aug 2025 12:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742960; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CcWdJwsGmPe9UAGETNNTHMm5TGF6KP9SW1i7a8nxH8Y=; b=JSFTfT3/f5yUTYEuPBw7HjjGRcUr9la6Gd/J3RnfyOEdCb9H2uMKR0hFXn5KLX7RSu1ofr OauEQGSE8Q3FXVweNFVEY6BIulK30MxYl7Hwv+OWVHl6rEBKW4+lMHpTl3TbEL6d3AJzmJ msVaEDQE4aiGoHrwqIMEaJKfay/Xh//p5ZtOrzQ3uFjK6ESNt5Scx+DpppAgSv2BE4JOCS FIu7gCcKdd/QbVX2a07HfR9c+yfWTm0pdS5EnuxoyHdMyJm7DelsCGxw3djDu6QohOrJLZ NEUcSRxl9/ltueR5YPKM5DTCc/xdocDJY536nlUekEsTouYzUakLK+tHNU/HlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742960; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CcWdJwsGmPe9UAGETNNTHMm5TGF6KP9SW1i7a8nxH8Y=; b=qvXVfTF2R5eBPNp9TNofUhf6XqALEj076nrSru7rCq4My2sY9Stqw+fBoo2hI6LmTLf2id zuSOgr7uc5RmIOpFix1sgybVrhxsqT99Mp494N5nfwLNKeC2UuKM99EdIR1w5hAKJLFQjh iqcW9Y2TMzpHDIQeCCMHemmBFtO6sUiBbgE3P0rm5E9pNAfnQqJpf2i7S4nFPUPexFR6Ba R6erPlBrwnSO9gApM++KwEIagzZMsNfR2DEUWQ7rKgq3JCe41x+t8mZGYL9sJJW7yOjYC4 gW4KtBo+wU9Z0gtFQsshejyZ+P4NBRcomBSzEhOjkoK3XF0ImVocY1Ac8Gq6pw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742960; a=rsa-sha256; cv=none; b=xNl4Um0ZmgJyWcYsCDq84SO6wij11ZBUAQhDPNaMb80QK/zjmyJii+M4/L4uRdLk6dSKGQ DB9c30KVnJMKFTIxEaWh1DNRBRVA4z4EC5No3VbHwP4R/EmciIlK7+6SYmaITXM4XXEBuW flxmO9d6jumxd/8fRXsUcTQ3WhoWoCU7u08IAhLHf37lMZnmMzCt3LmX1YMwNEqI0LlR0R YhVdwwTZ1IFdjR/1PL2toXz1ujN9MmHEhFVaaRlIo9YRtNqSlytco3w9CPt/L8sJ+eeBAe U8Qi+jJTT5DmJst6pFTSepqyh8GQdHiTZ78GZEFglo0hc4GoNaTK4/mtuHO23A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNw3CR2z61F; Sat, 09 Aug 2025 12:36:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Ca0Pp020643; Sat, 9 Aug 2025 12:36:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579Ca0NZ020640; Sat, 9 Aug 2025 12:36:00 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:36:00 GMT Message-Id: <202508091236.579Ca0NZ020640@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: cdfdafdc3424 - main - linuxkpi: Define `DEFINE_SHOW_STORE_ATTRIBUTE()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cdfdafdc34244aced687516a7a0cb04e7b4d267c Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=cdfdafdc34244aced687516a7a0cb04e7b4d267c commit cdfdafdc34244aced687516a7a0cb04e7b4d267c Author: Jean-Sébastien Pédron AuthorDate: 2025-06-20 19:50:13 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:24 +0000 linuxkpi: Define `DEFINE_SHOW_STORE_ATTRIBUTE()` It is the same as `DEFINE_SHOW_ATTRIBUTE()` with a `write` function added. The i915 DRM driver started to use it in Linux 6.9. Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50992 --- sys/compat/linuxkpi/common/include/linux/seq_file.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/seq_file.h b/sys/compat/linuxkpi/common/include/linux/seq_file.h index 876ef9e8dfe5..47da16ab8688 100644 --- a/sys/compat/linuxkpi/common/include/linux/seq_file.h +++ b/sys/compat/linuxkpi/common/include/linux/seq_file.h @@ -55,6 +55,21 @@ static const struct file_operations __name ## _fops = { \ .release = single_release, \ } +#define DEFINE_SHOW_STORE_ATTRIBUTE(__name) \ +static int __name ## _open(struct inode *inode, struct linux_file *file) \ +{ \ + return single_open(file, __name ## _show, inode->i_private); \ +} \ + \ +static const struct file_operations __name ## _fops = { \ + .owner = THIS_MODULE, \ + .open = __name ## _open, \ + .read = seq_read, \ + .write = __name ## _write, \ + .llseek = seq_lseek, \ + .release = single_release, \ +} + struct seq_file { struct sbuf *buf; size_t size; From nobody Sat Aug 9 12:36:02 2025 X-Original-To: dev-commits-src-main@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 4bzgNz1Zdgz64C8j; Sat, 09 Aug 2025 12:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNy5GmCz3ly1; Sat, 09 Aug 2025 12:36:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742962; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5huWKQWEfMb6lAh3wxYIB5SveAqV/hNFh/XiKvo6Heg=; b=tFkcGT7lF2YdwNk5nR4prq5ODUcvUoVEaKUgiA5/39MrE+xjBCHhy9tgUSObjYyTCLYkR1 lFHMhVICAK4hSuzed1PUp6RNpzVTB/6nqUklZhvOXUUIYFQYey+wKYx3VsxbvBWkE6PbWv AKriYiv+aZicGnpE5/fW4AP4QIotEtTjl6PPI7gUq8GEL1+9tzoaV+w2csAeQ32xaafDm4 WPN4QLxh/GZOu00YZwkUdwIxYuCVUrLgj7pB40CTRacwnlaXL3fhl9ZlHtZ9/5PPOYxsT5 yz4eoH3cC3tn37WyzxkTRt3RCo4wlshlj9NrwFP07v/7M6nFLuieQ9BcBEEF/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742962; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5huWKQWEfMb6lAh3wxYIB5SveAqV/hNFh/XiKvo6Heg=; b=kRC4zoE9KnSUA+bcb1/mNG/Lkf3M4I0d37axqy9ViPwHo9DHCsp5j2aeqW/SYER8mu9r60 JCOr6RWiAItq2D3Z9Ikfc8ikn0Tekq6lnwH1/IeznaDZeFZTHjHkscHpRe0wdnSeYfKocA PT8EfNUO6Wt95RvuvatwVN7Dytz/iqHcH/II8qvmkO5yzMd9yh/IBzPRkje953f93Z65oU L+wUXySEATpfNghD5VzZpw+J12PauLXhaxzZ+v6k67RtHwIXMeeyHc9LPDxbhj9Lp7Gz7k 8KZxt7j3h5dEDBBj7o4zkb4gha2NMfF2wq5mF7dHEkW/a1x4EcJEUMgl6Rmhbg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742962; a=rsa-sha256; cv=none; b=lSsLiyr11JqOlhCiiPDxDZSbMTBl85LlZd3ms/GZZTURtvPGHPjC5f7FiOkFcuU/KIU6Jt TUvN4fLU+5+G+v8r8nwaxoztfsOZJa/xGdpBRODVAmnkRA5fifMT1JwzmUzniT1Q959qht nBn1lhRnHkwapz1F/v/W7RYKH0I8fPWkA2eoGScxqh0NuG81J2rVD59ElVxVWRM4NZrzM9 Gas0To3vTXqB9MOLBJYGcBNSr5JIRn5Pbv5edlslGvbo+hNTH9UEWm4y6Yy+G4eNqHNvJj kfb07hAJ82kWPIJw5ZOmoIzHblrxAo8aGeVLwys2lnL4k3bUvV+tbId9F9o83w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNy4tvpz6J5; Sat, 09 Aug 2025 12:36:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Ca28r020731; Sat, 9 Aug 2025 12:36:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579Ca2Dx020728; Sat, 9 Aug 2025 12:36:02 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:36:02 GMT Message-Id: <202508091236.579Ca2Dx020728@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: d17bfb237065 - main - linuxkpi: Include from List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d17bfb237065587c72db05a5bafc6bcab1206cb9 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=d17bfb237065587c72db05a5bafc6bcab1206cb9 commit d17bfb237065587c72db05a5bafc6bcab1206cb9 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-22 09:55:57 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:25 +0000 linuxkpi: Include from The header uses the `spinlock_t` type and some consumers in the DRM drivers don't include directly or indirectly. This led to compilation errors because the type was undefined. On Linux, includes as a comparision. Reviewed by: emaste, manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50994 --- sys/compat/linuxkpi/common/include/linux/refcount.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/compat/linuxkpi/common/include/linux/refcount.h b/sys/compat/linuxkpi/common/include/linux/refcount.h index 02a7eda3f4a9..46e501a65396 100644 --- a/sys/compat/linuxkpi/common/include/linux/refcount.h +++ b/sys/compat/linuxkpi/common/include/linux/refcount.h @@ -30,6 +30,7 @@ #define _LINUXKPI_LINUX_REFCOUNT_H #include +#include typedef atomic_t refcount_t; From nobody Sat Aug 9 12:36:01 2025 X-Original-To: dev-commits-src-main@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 4bzgNy1Ptxz64C4S; Sat, 09 Aug 2025 12:36:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNx4fSvz3m0w; Sat, 09 Aug 2025 12:36:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=trZyXpWAMd0aw52XWV5wpl/aDqWfcJiOuBLNBLUZVbY=; b=oe8NDnsvw7ku7ufSSSZzPenyUK3y4pK0ODj4BeryplIb9ewWM2GHzapOz3J5NXGLab8Jbs QBIokgomZLC5cQ4ZDi4B2MYFOC1Br6ivNUOPoj4M5DIgzo2Y99RUVcJ1We2dlWuZ0aXbpZ 4i+fTsZzltr+Yh7KEB7exRU9H7bLNwkgY7xIy6l43/f4jRwlZh3gQ58XupRIYpsk7lH7xl gCt6mqZpUjW12uUijrXS8YAV0NPJ5NkTUILjER3V3vJ1jUPqVCiKGkPu1o5YVN1O587oGe wEkhz/rSuG1Nc2TGblitw5wvZX91PyRKA8WmD75WVxOouUgKF8F0QH1EYiX6Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742961; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=trZyXpWAMd0aw52XWV5wpl/aDqWfcJiOuBLNBLUZVbY=; b=LBTp0q999ZEzGCSFfYgE4kLxz6jphhcg0/YvYzDS+tqKTCb9ULVdoNBxa4YhVEsExR7XeH FNBT2mIElEquGK9qb7A4IsVIBM1d+NGf+BtYdWJ0Ect3qGHvO4h6CQTcukVpkZ8DJl8ZLD Y7uCoWXEf5a0VuRxnJ0EeNZeEw5/CKVhPHY3qpg89efFAmUdVSwKaY9M6DEksPWagiBCSC B7v15ODqMJcZ5SNSXlgEdSI+uQFhAY2DJdD6A/R9aI1XkZJ9LjL9zbwcfVAybDfyp6ufgi EMwUyTGLqim8g+iF2eVa8g80wKQiaqX6HdODBnaLLivvmSA59wizcegqBbpQOA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742961; a=rsa-sha256; cv=none; b=LLYNHjfMrCEb+RBECyqrLM1MCtn43REc08JOeXC3FZ6dkSL9sWtvKGxX3QbwlSmsGRV2Iv C1yeFcAEH3A9E8OZ6gzs+3VoT369uUQFXZJbEJC3z9FSHBJaE/E7YFMsYjH7zlfD3e/yw1 lnTrvLpkuwa8vXeiLFRApvpu4ne/uULJ9kSnRKqo9hj8gbO5wx7VvkCcqILK7E2nZ6RbFl jl7boKvqaEtZJ97Kv+1rSj73QjmpoyQcSw1sG0OHwuVXOmkRkh5fHeroQ5d/aHLgWvPe9s W5BK1ZJxMjj6+AU0T6JR8zypGiQxD0hhrWVm44xcKeQXf/jPSZ6mqYRdsjRpwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNx4DGnz6J4; Sat, 09 Aug 2025 12:36:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Ca1s6020683; Sat, 9 Aug 2025 12:36:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579Ca1Y3020680; Sat, 9 Aug 2025 12:36:01 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:36:01 GMT Message-Id: <202508091236.579Ca1Y3020680@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: 3c9acc35b1d9 - main - linuxkpi: Add the `topology_*()` functions List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3c9acc35b1d9e776fa10d45c0ad7d3737e8ccf38 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=3c9acc35b1d9e776fa10d45c0ad7d3737e8ccf38 commit 3c9acc35b1d9e776fa10d45c0ad7d3737e8ccf38 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-21 12:42:04 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:24 +0000 linuxkpi: Add the `topology_*()` functions ... from . The amdgpu DRM driver started to use `topology_num_cores_per_package()` in Linux 6.9. Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50993 --- sys/compat/linuxkpi/common/include/asm/topology.h | 54 ++++++++++++++++++++++ sys/compat/linuxkpi/common/include/linux/gfp.h | 1 + .../linuxkpi/common/include/linux/topology.h | 35 ++++++++++++++ 3 files changed, 90 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/asm/topology.h b/sys/compat/linuxkpi/common/include/asm/topology.h new file mode 100644 index 000000000000..f334d3253cfb --- /dev/null +++ b/sys/compat/linuxkpi/common/include/asm/topology.h @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2025 The FreeBSD Foundation + * Copyright (c) 2025 Jean-Sébastien Pédron + * + * This software was developed by Jean-Sébastien Pédron under sponsorship + * from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _LINUXKPI_ASM_TOPOLOGY_H_ +#define _LINUXKPI_ASM_TOPOLOGY_H_ + +#if defined(__i386__) || defined(__amd64__) +#include + +/* + * The following functions are defined in `arch/x86/include/asm/topology.h` + * and thus are specific to i386 and amd64. + */ + +static inline unsigned int +topology_num_cores_per_package(void) +{ + return (mp_ncores); +} + +static inline unsigned int +topology_num_threads_per_package(void) +{ + return (mp_ncpus); +} +#endif + +#endif /* _LINUXKPI_ASM_TOPOLOGY_H_ */ diff --git a/sys/compat/linuxkpi/common/include/linux/gfp.h b/sys/compat/linuxkpi/common/include/linux/gfp.h index 4c4caa621789..7a32e7862338 100644 --- a/sys/compat/linuxkpi/common/include/linux/gfp.h +++ b/sys/compat/linuxkpi/common/include/linux/gfp.h @@ -34,6 +34,7 @@ #include #include +#include #include #include diff --git a/sys/compat/linuxkpi/common/include/linux/topology.h b/sys/compat/linuxkpi/common/include/linux/topology.h new file mode 100644 index 000000000000..16baffc024d1 --- /dev/null +++ b/sys/compat/linuxkpi/common/include/linux/topology.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2025 The FreeBSD Foundation + * Copyright (c) 2025 Jean-Sébastien Pédron + * + * This software was developed by Jean-Sébastien Pédron under sponsorship + * from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _LINUXKPI_LINUX_TOPOLOGY_H_ +#define _LINUXKPI_LINUX_TOPOLOGY_H_ + +#include + +#endif /* _LINUXKPI_LINUX_TOPOLOGY_H_ */ From nobody Sat Aug 9 12:36:03 2025 X-Original-To: dev-commits-src-main@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 4bzgP02bsgz64C6p; Sat, 09 Aug 2025 12:36:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNz6bwYz3ly8; Sat, 09 Aug 2025 12:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742964; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l1gsoLOQzfqldCDXIKK1bjbdFs+ewrIRkpMET50KLXw=; b=xo2TMjjBHw+0VMqGpYOO3hUJPCDLaog9+cd00wsJNyYaQ68SOImM/PzIfw8H5rJD2BN4di QI5Ce3xmdINOThFr9Rdv7k9w6Dnm+0Y6Euq8FOpB26HKX92gYpS5yk/6QiYdhfKiOiwnpO brqevQMfYOs8EbwaTmKSsbbz9WmXJPtWs6/xvrt2ezUOV9UDV4r9JLxglCys2GxqjimxzY kkATz4TEgbKjSN3VW9mZohY6kvMYyED6R78jvSjwI+CyS4LWG8E0X0UMyAtJYJiiVA3hTT HCGQcsTXDblgQJBv3+WgjcQvmukgK/LPuzVEcjWFUaXrB32MKTfgvixAEIrjEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742963; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l1gsoLOQzfqldCDXIKK1bjbdFs+ewrIRkpMET50KLXw=; b=Uyg35Cqo+kK86XtFfI5fJvx31k3M6VAKxayFA6A61ZIdjratFhhjByRbCTlaQTYIqStCKy pysVy1Lcvz7RwgR4MJsYB5A94BqvHqsYiaXEXdKIsRbrR3hNglwpGXvTQx58JNykLMnlHI m7WkyDAw3G2KFM6jHzRLfqsBxS+m06kgkwZ8F+xOYQsR4unrSmxCO3owI1SKpD5cJ0jATx bHrFM99mZKx7Cb+smlbUdJ5GDR6Nj030d4tVKKKKN9OsudDirqt2h5bfqYXUtK35eGio5R Mp5tzvGpwGmdKAUHP4rR/ujVgc+HhojypGjYvtwbUV7pAOyfuX7ll1DZ3wTgOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742963; a=rsa-sha256; cv=none; b=QnG0DflAMLLCGbceOZC/gGL5CCNBU5fviE2Ckr1efLIjxGoLsLCC3DHaseEk4GB/Fvmz4V y+/tNDcIaHMJ6WVOH6NvGVNE2MqK1Xri3JtzVSEqozNCgz0oAK1q/WW4ydFUUB9Tl5D+z0 RRTeOlHq6ylu8Mhocqt6tYHMVFFxmFNa20r114Sc8m1q785fsS9xPRtcNZ44xNkjoAVkmn t+2KaqnZuL+mpkRriO37Iy/3FUrU2Pb7qk75i9NvnC3ZlwzpEVtHIXjMJrWxV6Kes/hsbF ELn8u7gKcXQSsNtrfFxcJPiLjJTfD6872ajJodROTNPOcwvKzQDzy//DRM2poA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNz64hnz681; Sat, 09 Aug 2025 12:36:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Ca3ra020776; Sat, 9 Aug 2025 12:36:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579Ca30g020773; Sat, 9 Aug 2025 12:36:03 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:36:03 GMT Message-Id: <202508091236.579Ca30g020773@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: 7cbc4d875971 - main - linuxkpi: Use `__builtin_popcountg()` instead of `bitcount*()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7cbc4d875971860d941cc15d7f42e6cfeffbfe66 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=7cbc4d875971860d941cc15d7f42e6cfeffbfe66 commit 7cbc4d875971860d941cc15d7f42e6cfeffbfe66 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-22 09:59:01 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:25 +0000 linuxkpi: Use `__builtin_popcountg()` instead of `bitcount*()` The DRM drivers generic code started to use `HWEIGHT64()` in the definition of an array field in a structure. Therefore, the array size needs to be known at compile time. This was not the case with the `HWEIGHT*()` macros based on `bitcount*()`. The use of `__builtin_popcountg()` solves that problem. Reviewed by: bz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50995 --- sys/compat/linuxkpi/common/include/linux/bitops.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/bitops.h b/sys/compat/linuxkpi/common/include/linux/bitops.h index bc776a0db9c4..00dd1f9a1ec0 100644 --- a/sys/compat/linuxkpi/common/include/linux/bitops.h +++ b/sys/compat/linuxkpi/common/include/linux/bitops.h @@ -62,10 +62,10 @@ #define hweight64(x) bitcount64(x) #define hweight_long(x) bitcountl(x) -#define HWEIGHT8(x) (bitcount8((uint8_t)(x))) -#define HWEIGHT16(x) (bitcount16(x)) -#define HWEIGHT32(x) (bitcount32(x)) -#define HWEIGHT64(x) (bitcount64(x)) +#define HWEIGHT8(x) (__builtin_popcountg((uint8_t)(x))) +#define HWEIGHT16(x) (__builtin_popcountg((uint16_t)(x))) +#define HWEIGHT32(x) (__builtin_popcountg((uint32_t)(x))) +#define HWEIGHT64(x) (__builtin_popcountg((uint64_t)(x))) static inline int __ffs(int mask) From nobody Sat Aug 9 12:36:04 2025 X-Original-To: dev-commits-src-main@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 4bzgP12yQ0z64C8k; Sat, 09 Aug 2025 12:36:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgP10JQxz3m8N; Sat, 09 Aug 2025 12:36:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2haxlBLvvPqnbw3i0Lzm37oGv/kHvSEe3u2wZEtrm/w=; b=tGJWnKYSAaFzptYmI4ZzRq3JytgutW9E/nZ252YSqfI9gTa1n1Bn63hOy3AfiWVoIou7N3 R39ovWCURzT10bsclN1I/ifb1XsDofJS3AzSSYvXC9E4dpjYj5hWbIkSmxoGqH9KDaj1tp iJ7YPLFqLc16pDFgjSEOIuqfgu9PMJBRlJ72Kz0QmK48sr3juC1P/s6Mwe2Ll5coJqWnvv Hf89A1hadN4rkaVWKMqnJclwMoniWne1xGt8NjB40Zz82hlCvwVbuBd4uyL0ordAxRvrx4 WQRD5mp274enc3oPR0rAIpAJ4jXWy63Mr04gKWfPs8uYlTJj1ziBDfSsRrcRYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2haxlBLvvPqnbw3i0Lzm37oGv/kHvSEe3u2wZEtrm/w=; b=Rk785sVHlL0AjtC6yjXxcVW1CbJhVFjIZyNYAqh/suM91pmQ+AlUhbNQ7a0BTp42vZwQMV 8tmj2RzXUSP6R5bxBnm/mfNyMkoO6pOC1E8Z858mb8xICNDrQHoRh+4kXViIfruZegr+Cw BAJuSF9gtwK/wz1Z6iGjsqjyT+5pE9crWJuwZEQiZkZAiySZSetw4ZMBTHr5D6XnUL2NP9 eYk31LD7z1SxMd8VRuA/46pFBZ0jW6BwOQAw5TAik9cDkgMa3kIpKiDavQ+7Jd3m49k81v LYDPqicG8/yPcfYOPKhO2OXwqqAGKA7D8WnF7XDGtxnMAkpIOvWGXMDmYrWTYA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742965; a=rsa-sha256; cv=none; b=WFe5NBgJOT90JJdbz/sClxGGnYZEByW3nG9X1QnD6d7XkRbKkJxNsPCNVPCTe7au97vZIA wONvY7ozoz/Xf3WY1Ljwve61/JxZDkISuTFnI2nUfxeIJr9ihygdn8sQkpSArjfC5tWLvd CE47YJHaD9So6voaQHnlYjAq8ZGFdrWvnU6F8qdsojxFLbamoeRIfmsH/pu7DtQqnFyX1J SEA493MFBMrCOhMYefc10fVjz6FdE7gJ4rtFUNarL9wZNp2oyavpOVJMyn+9Y/u+p4KZtL KDMc8WSYW1ysp1Xs0WDWqSvueNRAf678JtsGnYgNraXM2Nr8ARkXKbz7Nm92LQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgP06tzvz682; Sat, 09 Aug 2025 12:36:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Ca4V3020815; Sat, 9 Aug 2025 12:36:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579Ca4me020812; Sat, 9 Aug 2025 12:36:04 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:36:04 GMT Message-Id: <202508091236.579Ca4me020812@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: f0e445912658 - main - linuxkpi: Update posittion after copy in `seq_read()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f0e445912658eeb80aa0bf156e778be9185e31bc Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=f0e445912658eeb80aa0bf156e778be9185e31bc commit f0e445912658eeb80aa0bf156e778be9185e31bc Author: Jean-Sébastien Pédron AuthorDate: 2025-07-10 23:04:29 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:25 +0000 linuxkpi: Update posittion after copy in `seq_read()` `seq_read()` is usually called in a loop because the destination buffer might be smaller than the source. The caller relies on the updated position to read what is next. We also use `memcpy()` instead of `strscpy()` because we don't need to append a NUL character. Reviewed by: bz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51560 --- sys/compat/linuxkpi/common/src/linux_seq_file.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_seq_file.c b/sys/compat/linuxkpi/common/src/linux_seq_file.c index 8b426825cc78..9c06fe27bebe 100644 --- a/sys/compat/linuxkpi/common/src/linux_seq_file.c +++ b/sys/compat/linuxkpi/common/src/linux_seq_file.c @@ -64,13 +64,10 @@ seq_read(struct linux_file *f, char *ubuf, size_t size, off_t *ppos) return (-EINVAL); size = min(rc - *ppos, size); - rc = strscpy(ubuf, sbuf_data(sbuf) + *ppos, size + 1); + memcpy(ubuf, sbuf_data(sbuf) + *ppos, size); + *ppos += size; - /* add 1 for null terminator */ - if (rc > 0) - rc += 1; - - return (rc); + return (size); } int From nobody Sat Aug 9 12:39:42 2025 X-Original-To: dev-commits-src-main@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 4bzgTC5DX5z64CXX; Sat, 09 Aug 2025 12:39:43 +0000 (UTC) (envelope-from jhb@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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgTC2dW4z3qtT; Sat, 09 Aug 2025 12:39:43 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754743183; 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=KMMyyv9H1TTmEwkXkdyD6Y4/9P140Tuww1OWmqNPwzY=; b=MplBV1rEB0x5eqIKhhzjCsE9R2UjR9RTzuV4zUge68TnGVBqN0/jPLg6Ojmgr3zlUXw7sa NCZq5+Cvq0FCMln3d2+kzJ0/85xJLNHPtN+dx/B6DilovG3CFHC4kF7SAsuEVm9ki4jSPI QoyJosvYuPa/V2qas1ZkW94GRcf7K89uvEsTmyYZ+hTDRkXJGG0UIZpYaLGo1sAe59Nsiw u1M+JYde04rh3X+7a3BnqKb7K0VBbkA30CiUoFO6mbI5vIx4YAr1Sr0fMYxm+d0KvR9/0E 13RtWvKHDkVtTTFf9zWxfDxn1zwz0JVgjlht7UhATiaS3FPWA2NdQB2A69dupQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754743183; 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=KMMyyv9H1TTmEwkXkdyD6Y4/9P140Tuww1OWmqNPwzY=; b=MLhpUKqDGnJHSqXjSdu6xzO8pVmNZoFRa3b4nW53MTJgYNu+76LDFdTSkmxt3Uh0OQQ8SR Inu9trPUZ96hKpu8EAXIwUtxxg+ftGobAyZlGwXxft1aHp389cFtQFdtvk7i0fVoqTi61D A9CzPA6Lvnx3Rw962jQjwpGLCtARkzUtXpeR0w6cWTIJby8LPXkE6o/+WjrepXry045jUf gjyAGxXSz24baEw0/woD9lol5kBKr/ub+agt7ImnhzBNRFyctR2xmtNtuLU8mI+EG6ekgc OZxspCscbXohBu6X8bfgtygCjSDGZdZhIaVToOA2s1MOFeBPWmouO1o7k37pRQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754743183; a=rsa-sha256; cv=none; b=KnGgu+eBUIxK8NoCDQ5zuyq12zyDwuCuC4yq6hX4bdqPmOLcthX68sBQ8tvvBP1nZej1UK NkJzKN/0/DL1h8Z/YGuxGoFK0ukUgqt0Z31TlBsflGLP3e2n4aCFjFZpE9Ui/J7sbPwdel GPKvyHY9Oqi+CDEYIePjWepyK7tv5T13K8Xv97wLCtXvXZxtUTfs8Lu2HOIaavA/sDrNU1 SKAMkqfS0yMQbaP5gf5CnG1VzdZJCskuujBcA5KFSw9BFy1i4wK5jufxd7JaUUxCP9YPBm LRjiAGQrYp4hToLcXo2A6LtyJKrYrZE/mT/qYR/uS/5O3iDmRUU0xRY0Ve0MAA== Received: from [IPV6:2601:5c0:4202:5670:3473:8841:7d5c:739b] (unknown [IPv6:2601:5c0:4202:5670:3473:8841:7d5c:739b]) (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: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bzgTB61Qgz13mr; Sat, 09 Aug 2025 12:39:42 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Sat, 9 Aug 2025 08:39:42 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e7be843b4a16 - main - Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' Content-Language: en-US To: "Enji Cooper (yaneurabeya)" , Pierre Pronchery Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202508081922.578JM3A0086462@gitrepo.freebsd.org> <286324B9-1CDF-4D27-9F96-EABA1B9237ED@gmail.com> From: John Baldwin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 8/8/25 20:25, Enji Cooper (yaneurabeya) wrote: > >> On Aug 8, 2025, at 3:39 PM, Enji Cooper (yaneurabeya) wrote: >> >>> >>> On Aug 8, 2025, at 12:29 PM, Enji Cooper (yaneurabeya) wrote: >>> >>> >>>> On Aug 8, 2025, at 12:22 PM, Pierre Pronchery wrote: >>>> >>>> The branch main has been updated by khorben: >>>> >>>> URL: https://cgit.FreeBSD.org/src/commit/?id=e7be843b4a162e68651d3911f0357ed464915629 >>>> >>>> commit e7be843b4a162e68651d3911f0357ed464915629 >>>> Merge: d0ff5773cefa 1095efe41fee >>>> Author: Pierre Pronchery >>>> AuthorDate: 2025-08-07 13:50:32 +0000 >>>> Commit: Pierre Pronchery >>>> CommitDate: 2025-08-07 13:50:32 +0000 >>>> >>>> Merge commit '1095efe41feed8ea5a6fe5ca123c347ae0914801' >>>> >>>> Approved by: philip (mentor) >>>> Sponsored by: Alpha-Omega Beach Cleaning Project >>>> Sponsored by: The FreeBSD Foundation >>> >>> This commit didn’t note that OpenSSL 3.5.1 was imported. I think it’s best to revert the merge commit and correct the commit message. Feel free to copy the commit message from the original import, adding more details as needed. >> >> The ossl module is broken on several architectures as well after this change: secure/lib/libcrypto/Makefile.asm was updated, but the files under sys/conf/files* and sys/modules/ossl/Makefile need to be updated. > > This should fix the ossl module (in theory), but sys/conf/files.* needs to be regenerated too: https://gist.github.com/ngie-eign/785663f814c3d56e6dc721e5e96457ca (I haven’t gotten around to automating this piece). > All of the entries for sys/modules/ossl/Makefile were done with something like the following: > > % find -s ../../../sys/crypto/openssl/powerpc64le -name \*.S -exec basename {} \; | sed -e 's/^/\t/' -e 's/$/ \\/g' >> sys/modules/ossl/Makefile > > I’m going to look into shuffling the files.* pieces out into their own files so they can be touched without having to modify the top-level per-architecture conf files. > Thanks, I don't know that we need to automate generating the list of files. The list of files doesn't change that often, and ossl doesn't use all of them. The powerpc64 ossl support is still in a review that was waiting for this merge to land for example, and I know for x86-64 and armv8 we only use a subset of the assembly files for ossl. Many of the changes in your diff aren't correct as those functions aren't used by ossl in fact. -- John Baldwin From nobody Sat Aug 9 13:14:26 2025 X-Original-To: dev-commits-src-main@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 4bzhFG5x7Jz64Gv5; Sat, 09 Aug 2025 13:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzhFG58hnz4332; Sat, 09 Aug 2025 13:14:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754745266; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1SCyu7N59br8P3PHR3bu1+BIJ8EtKunNRA5k4n3hqo8=; b=aL7m7jA9nSyiiX2uot81t0Y+dFetCSlRhMReBjbO5ZQ+WdPxbK9VXbkBxljwtWWZt94/rc cx3l06B0hX9pWRgmaN2ZSgGRqKWJHR+rWiSjoCTQyhcqSTGa/g9sXT0dWMqhcIJnjyy3oB 1Zcyx3CWozcMcuVRDYIZYujpQWa52ULqQ399uqA+HBIbVOGWYfPMkXDWP5fsBG9NoQDBJ8 F9adGZj6qjYli7xBopV5Y3EoNkEHwQGQ3HN/b7hZlHGOJz+mrvtv6cinnbQ8tbO3WXTLT6 Fm9ScQEad/D4TtzyLnoIO2NWr1Nv6s8PqudYyw9fOzAMaEztf2uEgFUhroKJ2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754745266; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1SCyu7N59br8P3PHR3bu1+BIJ8EtKunNRA5k4n3hqo8=; b=eWUJYMSIpVN/PLS9JKcE3KxNHw4ScAtLexPMmehm11sBi1rQc18EyFz3OBZXqFaaB579gB zXB1eeVt4DyOWwAC8jUF4vlWMti1ZJ8wvjChxWvU5AJ7xDArkzUfYfdVu963AyjDrcb2wZ 1qZ+xt1pRb7EdkRN2S8+Mz0zACf+aJueWKl/vuF4vIpBGpx/cg31NFaW2MdeEi4JqBUqEu 5q9D40tkqNoVaW1Z2pXgSnAmC3YoTqS2lnOxEJ5Ytas6obbB6OOw9Ry3Y/mLr7cJLZlvpE EYS1fhDH6Ae99Z7fBhExBpp8LIvlw9lDDW0R5ekDoZm6MMg4ON52nz8Cst/PZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754745266; a=rsa-sha256; cv=none; b=AGDW0CLOxpsMboSkRGyd1bkyaA7y7B3H0pLH5MnQnFEa+mdn4W8Z2dTnJ+UUu0E9Pr3v3b eVFLEobCZ+mooulQ0avPhNkprfxBB9afFxfuUmUUCEeApQSIe1duZMB6gInnvWwrYcoZxo qvMJPWJ4M1AzXSwcjCbMVT2N7nObVuXbXesA7F1myrJgrO4o88ShlUNJbuckGmMw95BW6U Pn6iokGPOchvqwKIVx7Aj7l7Er/KIZpGDwXjHIRmuXx/14dLEB8NqnMXuAoO8+565vDONU TU3Kd23ordONLrOKh3nAgAiDvCX78B8cKkBjGzMEK68oW0mbhbiul/xDlKdz5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzhFG4lcbz780; Sat, 09 Aug 2025 13:14:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579DEQCT096381; Sat, 9 Aug 2025 13:14:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579DEQxf096378; Sat, 9 Aug 2025 13:14:26 GMT (envelope-from git) Date: Sat, 9 Aug 2025 13:14:26 GMT Message-Id: <202508091314.579DEQxf096378@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: a276bb4794af - main - geom: Correct use of expand_number() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: a276bb4794af2d425375810acf556cbad626cbc0 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a276bb4794af2d425375810acf556cbad626cbc0 commit a276bb4794af2d425375810acf556cbad626cbc0 Author: Dag-Erling Smørgrav AuthorDate: 2025-08-09 13:14:01 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-08-09 13:14:01 +0000 geom: Correct use of expand_number() Several GEOM classes use G_TYPE_NUMBER for options where the argument (or at least the default value of -1) may be negative. PR: 288723 Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51834 --- sbin/geom/core/geom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c index 950f6790b1a8..b78021194ddd 100644 --- a/sbin/geom/core/geom.c +++ b/sbin/geom/core/geom.c @@ -249,7 +249,7 @@ static void set_option(struct gctl_req *req, struct g_option *opt, const char *val) { const char *optname; - uint64_t number; + int64_t number; void *ptr; if (G_OPT_ISMULTI(opt)) { From nobody Sat Aug 9 14:05:18 2025 X-Original-To: dev-commits-src-main@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 4bzjMz1syKz64MbB; Sat, 09 Aug 2025 14:05:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzjMz0xQ8z3JQ2; Sat, 09 Aug 2025 14:05:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754748319; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZ6+N894kkIT2a7Rr2p1gMxbdRkjU8/KTjXDwqAwHGo=; b=tJUHxnVjfsEBLeBRDA4XSG5CdOLGuzqL13RvPM5WHKY6BslFOTdMvJDKTcAxQJPaOft6fx 8v9KMvARBxQ6MtiZ2FX04JWQkeOYP0RlZl3OfCcevKSOk0oRM5Dw8OnD6i5QevP5C41h1j mm8U+j+hze8F9cZOenpPRxCgU6l6zd7wnbETMGbegb9fDNoyg706edi/qFCqNvHyrBchpm glWboRd3tRJqzRjH0/9hnV27dC6RDpa1Kc6x5tcwdc/Pq/l3MGcYFSQQL8z9nEWx9jm6r6 Qec6GPdLVlEN5Pb02PFSEkYPlsL44QDWVa0GQeJLNqhal8htkWK/Y0wdJ4xj+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754748319; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZ6+N894kkIT2a7Rr2p1gMxbdRkjU8/KTjXDwqAwHGo=; b=iCnPE0GnoJ9gq5dCMkf4L+l+lpLAnruSMIFaQegAIUVsg4rx6YL3ltnAoBY7V5Uj9WXNlo zFoeH4wyz7MOvRVTtfXZAG2iYxutpWs1N8qp9HIjzuaoR0eCW6EYrw1p1bErrfH0SHNfe0 661j/p57gOKVR2HXNAARvrGypDASC9Hp356zH0G4hIjWblhwc2lQaU+UAoL8erSEeMKp7P WTjl1OiPDu5KwGpf6+bkcxP0PojBXBSU6MTMq2ExQ7pwPMn1F0DlIChwKjkl5a5u1pyw6K 60hUMjFoZcqo2kfrGYtyupFIeqxL/7AGoXy1tEepLerkhZADU1DSqacuj5Rgrw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754748319; a=rsa-sha256; cv=none; b=SY/bXDIgc4OYALe6+O6yjz6ARCfiOIp0SV9oiqYBMKjyPBhSHPRlLnX7vhho3qc9MTsc90 bB9C4D4YNArUqg4IHGST3gvjwvCpLBCLJawLh4rNmX189Tn74B5epXxaf86F8q/4WLxsmc r/d7+TTVDnWlOtzCfCoXIFDM4FgGN3M73MFdab8fTy3K83xx1s2lqsMEIHG/fiD4h6XH78 k671gjF/0GEnkBze8eapixql/Hcb2lbSHDHqOyMbTIuRO0bAbcC5SGvuBJ7AfQw14/QnXR VYjzXhScu0gVKJZ+sWs37andU+WYY3Ene6GieEEBEebSsxQ4rfXixu1gRJ4VJQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzjMz0SZXz8MN; Sat, 09 Aug 2025 14:05:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579E5IW2091213; Sat, 9 Aug 2025 14:05:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579E5IFr091210; Sat, 9 Aug 2025 14:05:18 GMT (envelope-from git) Date: Sat, 9 Aug 2025 14:05:18 GMT Message-Id: <202508091405.579E5IFr091210@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: db7c0e32a05d - main - Bump __FreeBSD_version for 4757b351ea9d List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: db7c0e32a05dd7011553321e82ac66dd712eaf09 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=db7c0e32a05dd7011553321e82ac66dd712eaf09 commit db7c0e32a05dd7011553321e82ac66dd712eaf09 Author: Colin Percival AuthorDate: 2025-08-09 14:04:07 +0000 Commit: Colin Percival CommitDate: 2025-08-09 14:04:07 +0000 Bump __FreeBSD_version for 4757b351ea9d This is necessary so that pkg builds will link to the new libutil shared object version. Fixes: 4757b351ea9d ("openssl: Import version 3.5.1") --- sys/sys/param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/param.h b/sys/sys/param.h index 72061bd8134e..b9942c7bc2fd 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -74,7 +74,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1500058 +#define __FreeBSD_version 1500059 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From nobody Sat Aug 9 16:00:50 2025 X-Original-To: dev-commits-src-main@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 4bzlxG5xj1z64Yng; Sat, 09 Aug 2025 16:00:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzlxG3pmLz3bhn; Sat, 09 Aug 2025 16:00:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754755250; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MTbne5BivCqI5utA7889vkewGDBkR7I1RUXGbTb/qPQ=; b=exMxf9Arct3Lok1HOYgiqifCsVzpnPEM7LEcWmAE7mPcVCuTgWyOt2M/Yaoe7kNLmtRyHQ 3mE0szvffFazCpScSn04hoOppQwshkTTmHjnH+57EvsirPtlXlQFGQZ2e1LC+nXpUMLL7m YSn4JNquGHWyFPdJ2+7CaI5XKFab0RvJQok8JC7Qt35s85iUuc2s6a7xNLhgRYGc1ERP3t 5ZrqmqSgI4Gp0L3AcBkdZ6Zh6v+14gkxRJ5WNlkChY/usEPOoyRsy/gTaSNVAIFZ0vcAlA LmWru92jHuWa0hvcfqTrtm5BW89pQ/it8m5J9LjBcgTiSIkS09cTupoAl2VPQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754755250; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MTbne5BivCqI5utA7889vkewGDBkR7I1RUXGbTb/qPQ=; b=BF+cHEsG/qdd4jgC2CBUJqBt1R8gWk+g0p3JAD7qpxigW6GhPW6ntHsRwfvsFwPDz7eibs ZyQTeY8iMkCTO3mTlqLxTDVkEV5I4RNbEAGg5i6/m+ZvM+Kwvd0O7TgtKdw/VDNzBHivjv FBBpPUkxgLiG8OpKPkSs0mkY69nMu6ppyRhavqlOMRUlffoq45w5sd7P/OqHyiRBGWuVoG EhKRh7oKJ55P2tpxvKHP72RyNfKyt+SolLInSk7VUAxbhJzuykgBSntviE847y9nWZkbxF J/8VsjIJjx8xCWzfNv/xEZJaW00ELIG7/wSVOCQ8W6fOqBmaMoPbjbCxRl0OcA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754755250; a=rsa-sha256; cv=none; b=lvL9nhWS5036+e5z6IQMK7tDJNemsDb9hQxYmPlg/nBFlGlHt4eiJCc+6RRDszst5qrh6c hIw+4rcWC34q0JgEWRGk9Y0AMDt0NpjjX4G0P/9XY790Vpt4tUk2+orIBNT9UN3OYUHmSB Z3SIB1iTSdwMF7lWiOSXV1miITe/+jgIA5jiKvxJ3n7cTU1Adzkab4a/mzVir3cqbEnKnR ClDNjicDpHqG3i6gS74TyrqZSAtHj9RaR8cTZ0Z9CH3MiBlsCtIFoos0Z7qE3JBh9Rc1Vb rOrHUPCKRhwJWG43WKoOTX7VLFXad0kjVZKvR9YFtaFlEM0Bmx1vtUxgVlGfgg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzlxG3PyYzBw6; Sat, 09 Aug 2025 16:00:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579G0oOa012031; Sat, 9 Aug 2025 16:00:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579G0oBZ012015; Sat, 9 Aug 2025 16:00:50 GMT (envelope-from git) Date: Sat, 9 Aug 2025 16:00:50 GMT Message-Id: <202508091600.579G0oBZ012015@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 5f72125339b1 - main - top: improve sort field storage/lookup List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5f72125339b1d14d1b04329ac561354f5e8133fe Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=5f72125339b1d14d1b04329ac561354f5e8133fe commit 5f72125339b1d14d1b04329ac561354f5e8133fe Author: Kyle Evans AuthorDate: 2025-08-09 16:00:31 +0000 Commit: Kyle Evans CommitDate: 2025-08-09 16:00:31 +0000 top: improve sort field storage/lookup Switch up comparator mapping to avoid these kinds of errors, use a simple array of (name, comparator) pairs rather than having to maintain entries in two separate arrays that must have matching indices. Reviewed by: obiwac MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D37083 --- usr.bin/top/machine.c | 155 ++++++++++++++++++++++++++++++++++++++++---------- usr.bin/top/machine.h | 7 ++- usr.bin/top/top.c | 29 ++++------ usr.bin/top/utils.c | 21 ------- usr.bin/top/utils.h | 1 - 5 files changed, 142 insertions(+), 71 deletions(-) diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c index 8c035b5df383..1f70ee9281e8 100644 --- a/usr.bin/top/machine.c +++ b/usr.bin/top/machine.c @@ -190,15 +190,6 @@ static int pageshift; /* log base 2 of the pagesize */ #define ki_swap(kip) \ ((kip)->ki_swrss > (kip)->ki_rssize ? (kip)->ki_swrss - (kip)->ki_rssize : 0) -/* - * Sorting orders. The first element is the default. - */ -static const char *ordernames[] = { - "cpu", "size", "res", "time", "pri", "threads", - "total", "read", "write", "fault", "vcsw", "ivcsw", - "jid", "swap", "pid", NULL -}; - /* Per-cpu time states */ static int maxcpu; static int maxid; @@ -214,6 +205,18 @@ static int *pcpu_cpu_states; static int battery_units; static int battery_life; +static int compare_cpu(const void *a, const void *b); +static int compare_size(const void *a, const void *b); +static int compare_res(const void *a, const void *b); +static int compare_time(const void *a, const void *b); +static int compare_prio(const void *a, const void *b); +static int compare_threads(const void *a, const void *b); +static int compare_iototal(const void *a, const void *b); +static int compare_ioread(const void *a, const void *b); +static int compare_iowrite(const void *a, const void *b); +static int compare_iofault(const void *a, const void *b); +static int compare_vcsw(const void *a, const void *b); +static int compare_ivcsw(const void *a, const void *b); static int compare_swap(const void *a, const void *b); static int compare_jid(const void *a, const void *b); static int compare_pid(const void *a, const void *b); @@ -225,6 +228,77 @@ static void update_layout(void); static int find_uid(uid_t needle, int *haystack); static int cmd_matches(struct kinfo_proc *, const char *); +/* + * Sorting orders. The first element is the default. + */ + +typedef int (compare_fn)(const void *arg1, const void *arg2); +static const struct sort_info { + const char *si_name; + compare_fn *si_compare; +} sortdata[] = { + { + .si_name = "cpu", + .si_compare = &compare_cpu, + }, + { + .si_name = "size", + .si_compare = &compare_size, + }, + { + .si_name = "res", + .si_compare = &compare_res, + }, + { + .si_name = "time", + .si_compare = &compare_time, + }, + { + .si_name = "pri", + .si_compare = &compare_prio, + }, + { + .si_name = "threads", + .si_compare = &compare_threads, + }, + { + .si_name = "total", + .si_compare = &compare_iototal, + }, + { + .si_name = "read", + .si_compare = &compare_ioread, + }, + { + .si_name = "write", + .si_compare = &compare_iowrite, + }, + { + .si_name = "fault", + .si_compare = &compare_iofault, + }, + { + .si_name = "vcsw", + .si_compare = &compare_vcsw, + }, + { + .si_name = "ivcsw", + .si_compare = &compare_ivcsw, + }, + { + .si_name = "jid", + .si_compare = &compare_jid, + }, + { + .si_name = "swap", + .si_compare = &compare_swap, + }, + { + .si_name = "pid", + .si_compare = &compare_pid, + }, +}; + static int find_uid(uid_t needle, int *haystack) { @@ -353,7 +427,6 @@ machine_init(struct statics *statics) statics->swap_names = swapnames; else statics->swap_names = NULL; - statics->order_names = ordernames; /* Allocate state for per-CPU stats. */ GETSYSCTL("kern.smp.maxcpus", maxcpu); @@ -742,7 +815,7 @@ static struct handle handle; void * get_process_info(struct system_info *si, struct process_select *sel, - int (*compare)(const void *, const void *)) + const struct sort_info *sort_info) { int i; int total_procs; @@ -753,6 +826,9 @@ get_process_info(struct system_info *si, struct process_select *sel, struct kinfo_proc **prefp; struct kinfo_proc *pp; struct timespec previous_proc_uptime; + compare_fn *compare; + + compare = sort_info->si_compare; /* * If thread state was toggled, don't cache the previous processes. @@ -899,6 +975,43 @@ get_process_info(struct system_info *si, struct process_select *sel, return (&handle); } +/* + * Returns the sort info associated with the specified order. Currently, that's + * really only the comparator that we'll later use. Specifying a NULL ordername + * will return the default comparator. + */ +const struct sort_info * +get_sort_info(const char *ordername) +{ + const struct sort_info *info; + size_t idx; + + if (ordername == NULL) + return (&sortdata[0]); + + for (idx = 0; idx < nitems(sortdata); idx++) { + info = &sortdata[idx]; + + if (strcmp(info->si_name, ordername) == 0) + return (info); + } + + return (NULL); +} + +void +dump_sort_names(FILE *fp) +{ + const struct sort_info *info; + size_t idx; + + for (idx = 0; idx < nitems(sortdata); idx++) { + info = &sortdata[idx]; + + fprintf(fp, " %s", info->si_name); + } +} + static int cmd_matches(struct kinfo_proc *proc, const char *term) { @@ -1559,26 +1672,6 @@ compare_ivcsw(const void *arg1, const void *arg2) return (flp2 - flp1); } -int (*compares[])(const void *arg1, const void *arg2) = { - compare_cpu, - compare_size, - compare_res, - compare_time, - compare_prio, - compare_threads, - compare_iototal, - compare_ioread, - compare_iowrite, - compare_iofault, - compare_vcsw, - compare_ivcsw, - compare_jid, - compare_swap, - compare_pid, - NULL -}; - - static int swapmode(int *retavail, int *retfree) { diff --git a/usr.bin/top/machine.h b/usr.bin/top/machine.h index 57f2846cdba5..b4f2f1a8bd50 100644 --- a/usr.bin/top/machine.h +++ b/usr.bin/top/machine.h @@ -89,10 +89,15 @@ void get_system_info(struct system_info *si); int machine_init(struct statics *statics); /* non-int routines typically used by the machine dependent module */ +struct sort_info; + extern struct process_select ps; void * get_process_info(struct system_info *si, struct process_select *sel, - int (*compare)(const void *, const void *)); + const struct sort_info *); + +const struct sort_info *get_sort_info(const char *name); +void dump_sort_names(FILE *fp); #endif /* MACHINE_H */ diff --git a/usr.bin/top/top.c b/usr.bin/top/top.c index 856ad838dc1c..f0458a4037af 100644 --- a/usr.bin/top/top.c +++ b/usr.bin/top/top.c @@ -252,7 +252,7 @@ main(int argc, const char *argv[]) char no_command = 1; struct timeval timeout; char *order_name = NULL; - int order_index = 0; + const struct sort_info *sort_info = NULL; fd_set readfds; char *nptr; @@ -505,21 +505,18 @@ main(int argc, const char *argv[]) /* determine sorting order index, if necessary */ if (order_name != NULL) { - if ((order_index = string_index(order_name, statics.order_names)) == -1) - { - const char * const *pp; - + if ((sort_info = get_sort_info(order_name)) == NULL) { warnx("'%s' is not a recognized sorting order.", order_name); fprintf(stderr, "\tTry one of these:"); - pp = statics.order_names; - while (*pp != NULL) - { - fprintf(stderr, " %s", *pp++); - } + dump_sort_names(stderr); fputc('\n', stderr); exit(1); } } + else + { + sort_info = get_sort_info(NULL); + } /* initialize termcap */ init_termcap(interactive); @@ -602,17 +599,13 @@ restart: while ((displays == -1) || (displays-- > 0)) { - int (*compare)(const void * const, const void * const); - /* get the current stats */ get_system_info(&system_info); - compare = compares[order_index]; - /* get the current set of processes */ processes = - get_process_info(&system_info, &ps, compare); + get_process_info(&system_info, &ps, sort_info); /* display the load averages */ (*d_loadave)(system_info.last_pid, @@ -1047,7 +1040,9 @@ restart: "Order to sort: "); if (readline(tempbuf2, sizeof(tempbuf2), false) > 0) { - if ((i = string_index(tempbuf2, statics.order_names)) == -1) + const struct sort_info *new_sort_info; + + if ((new_sort_info = get_sort_info(tempbuf2)) == NULL) { new_message(MT_standout, " %s: unrecognized sorting order", tempbuf2); @@ -1055,7 +1050,7 @@ restart: } else { - order_index = i; + sort_info = new_sort_info; } putchar('\r'); } diff --git a/usr.bin/top/utils.c b/usr.bin/top/utils.c index cde89a211b53..a8ddb3eb63a0 100644 --- a/usr.bin/top/utils.c +++ b/usr.bin/top/utils.c @@ -116,27 +116,6 @@ digits(int val) return(cnt); } -/* - * string_index(string, array) - find string in array and return index - */ - -int -string_index(const char *string, const char * const *array) -{ - size_t i = 0; - - while (*array != NULL) - { - if (strcmp(string, *array) == 0) - { - return(i); - } - array++; - i++; - } - return(-1); -} - /* * argparse(line, cntp) - parse arguments in string "line", separating them * out into an argv-like array, and setting *cntp to the number of diff --git a/usr.bin/top/utils.h b/usr.bin/top/utils.h index a730e339d200..bbc63803b6e1 100644 --- a/usr.bin/top/utils.h +++ b/usr.bin/top/utils.h @@ -19,6 +19,5 @@ const char **argparse(char *, int *); long percentages(int, int *, long *, long *, long *); const char *format_time(long); char *format_k(int64_t); -int string_index(const char *string, const char * const *array); int find_pid(pid_t pid); From nobody Sat Aug 9 16:02:34 2025 X-Original-To: dev-commits-src-main@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 4bzlzG4yCjz64Ydj; Sat, 09 Aug 2025 16:02:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzlzG1swDz3c8v; Sat, 09 Aug 2025 16:02:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754755354; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wsGcDiMNvfDnASLtyeDdTMVtrRLPmPFMXDbFg+n0piA=; b=JsbN0f1wZ40N/jL4/Aux3mBN96WRxSuJTGgH1uPlXDQKCFTWQ/NwUAdrCHcXHz8Nm7Swbo h5sdPvejYMNVpnD1x3SJ7pWs0gHK0GajFmkwnZqw6uv6gjRGOywy3GXaT0f2DFI+YTrb/H nzePxLkbpP/B5Kpemww9aRbnNTrxQy05P6hZCUlk2d9KiOS3uxC+Jx6LJ5aGIy0E4QY0aK w//zjCPicRAX1dVKlPQ8Ru9S3RV/Q0bzZdbKltaE2BUVrDVXTWvCIz1Ca5q1lAnX2OrUqZ AJdZriZB7LCZvm+I/TYkcIgmQN1LGg491cTjE4XA+j/hrqe3yNdpiej3TFdHfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754755354; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wsGcDiMNvfDnASLtyeDdTMVtrRLPmPFMXDbFg+n0piA=; b=ILfbFPfbq+To382NIS/VQm+aND78KQIZY+bSR0DC8LfEduqan2hljIKKoGpho8KZWbMZGM 5dFaXZsQ1E+FxKcrckUDp+pZBmjMjlTCD55x4/elAg7XAgHRKvk8KbIr8FggQw8MHCgn1c wEb00xGB4F+uuLnRI1u6jxJ60Z9dw7XemY16tgvR1cBeaRK/NppeVsXzBH+Aau51bRQW9l 3q3PZyRZ+XkGMgv2Cq5RZE+8q1kB483u9zLo9W6+T/6vziEJtrE1/uMtNgjQp5QnUedBaK EEJAOKAZ7OwP2ZJhtp6Sv18UV7HwyqCgHaXWC/RCV6J7nECtYE/5BozIMIRmFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754755354; a=rsa-sha256; cv=none; b=izC3VNaKIfZ5cAKYqBidnJZnG4TcrAbzKKw/q9sGOpFLqy7OaE0EDzDqeE4yPszx+Q+Oj4 3ZYMnGqIHCaR/jgfmFk3TcMoeZpE43bjtvgOl94whvygxhsIr/tcjFVHlmzTD0Qfy8F45B 8l37fz2hi43qm75CB97IPZvUBtVIQN/mR/K3PPOe9B48b8RBrP6c7Klw22a5DI3iC8ruM1 ggAQ+R2PRezAumeP/WRA+G3LRmR3w8TYuA4XZNIKQAWDaLzzSNmghNG5s74o9j3GPzKP7K pSnuqwx1eh2864x85cq2U+ITZTxsnETp0KZ++KH8YlpSPXGw3cpA/9NiDsO+Kw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzlzG191hzCF0; Sat, 09 Aug 2025 16:02:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579G2Y6F016155; Sat, 9 Aug 2025 16:02:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579G2YuR016152; Sat, 9 Aug 2025 16:02:34 GMT (envelope-from git) Date: Sat, 9 Aug 2025 16:02:34 GMT Message-Id: <202508091602.579G2YuR016152@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 239e8c98636a - main - ssh: sshd-session: properly save off the privileged gid List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 239e8c98636a7578cc67a6f9d54d14c71b095e36 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=239e8c98636a7578cc67a6f9d54d14c71b095e36 commit 239e8c98636a7578cc67a6f9d54d14c71b095e36 Author: Kyle Evans AuthorDate: 2025-08-09 16:01:57 +0000 Commit: Kyle Evans CommitDate: 2025-08-09 16:01:57 +0000 ssh: sshd-session: properly save off the privileged gid Current and traditional FreeBSD behavior means that getegid() here is the first element in the prior setgroups() call, if any, so we may inadvertently wipe out our rgid with the unprivileged gid. This is rendered somewhat harmless by the fact that we're losing the privileged gid -- we'll still regain it as the egid in restore_uid() later by way of restoring saved_egroups, rather than by intentionally restoring it from getgid(). This will be promptly reverted if we can get setgroups(2)/getgroups(2) changed in FreeBSD 15.0, but it seemed wise to get this technically correct for previous branches. Reviewed by: jlduran Differential Revision: https://reviews.freebsd.org/D51753 --- crypto/openssh/uidswap.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/crypto/openssh/uidswap.c b/crypto/openssh/uidswap.c index 6ed3024d0180..0143f4994611 100644 --- a/crypto/openssh/uidswap.c +++ b/crypto/openssh/uidswap.c @@ -14,6 +14,9 @@ #include "includes.h" +#ifdef __FreeBSD__ +#include +#endif #include #include #include @@ -121,8 +124,20 @@ temporarily_use_uid(struct passwd *pw) fatal("setgroups: %.100s", strerror(errno)); #ifndef SAVED_IDS_WORK_WITH_SETEUID /* Propagate the privileged gid to all of our gids. */ +#ifdef __FreeBSD__ + /* + * FreeBSD traditionally includes the egid as the first element. If we + * use getegid() here then we effectively propagate user_groups[0], + * which is probably pw->pw_gid. Fix it to work as intended by using + * the egid we already have stashed off. + */ + assert(saved_egroupslen > 0); + if (setgid(saved_egroups[0]) == -1) + debug("setgid %u: %.100s", (u_int) saved_egroups[0], strerror(errno)); +#else if (setgid(getegid()) == -1) debug("setgid %u: %.100s", (u_int) getegid(), strerror(errno)); +#endif /* Propagate the privileged uid to all of our uids. */ if (setuid(geteuid()) == -1) debug("setuid %u: %.100s", (u_int) geteuid(), strerror(errno)); From nobody Sat Aug 9 17:29:13 2025 X-Original-To: dev-commits-src-main@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 4bznvF2bsyz64jXd; Sat, 09 Aug 2025 17:29: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bznvF1t5xz3w5G; Sat, 09 Aug 2025 17:29:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754760553; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vy6T+xIHgu0DGJJeAg3AF4QfB2nh5fcA9NzMWR8cyss=; b=mjK9jdth3/XzAmqoym/e0+/88r5PvaSLeaPmkdvNwNt5s6z5JSehJbE0TixeQsxXV5DdXt OzYFvwn7LnmGNJIN6PePHhAf58fuWT1fpH7fPeR3XhxNtV7x//Uvo4q/yEsSfza7GBzdHU r0QYgP6M2WfX9HAYsdlGKS34ZMqsm6G6yKC3/Nnw3AIJPer33/AWaC/CSS/9hIR1TDvf+y 99syklc2Jb+SlLrE5V/B6O6TkBTjLnZ6AouVOLygZ1n5iEVt3IzQXz5BBxzVYDN92vDon6 aXuSmi7QEE8aVoJnxRfUX2PwdEVa9xjdleYtBKu8diXJWJr/Z95qeSXS8ss9JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754760553; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Vy6T+xIHgu0DGJJeAg3AF4QfB2nh5fcA9NzMWR8cyss=; b=bWXDLMye0o2R03bh19i/GQ9ifPOmficR9pYXifa6EiGN/f7pMJw7VgetZ2JACm5p21WBde ghV/y9bJq86NafhVWP1/4sThyMy1W8wJRwN4yP2RSbWmqP/vVwBYljW677apajnHlEb8nT avZdJXSgfE5uEqhxDHqBASo4qfeHJauuqqKzDOWZByQZGlFrhgM6hXzQXl0bTGFZ8nAvPf jPIwFzQS8KAnsuvWSyp6QuykflA+ZoYUT39kP4qTqZKL5gvjvKY+TVupZOLoXcYaQT8eC8 JPO9M9DwyGiZPHhQmaVNrS9yX4IcGEwyNXZ/e8g7N8TiV47IDVES0wt/NyL+uQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754760553; a=rsa-sha256; cv=none; b=KsN0nqrVHSnDXcFSNVoe5l2Mu4IxJtGVCSPowB+z7UzLz8ihdqMhtmv63ge34GqHKZBiaK KIxw/yso+7SZnLtYDcjTKin6TaUj/m/vxPlNHDXnA+tplJMV8fPGzm8ccVPpcCvYQwwWDA Y3Z4f9mZ04BKZ7IObPcvqJnH+58KQGhS/pqcrbrwNk1ooKSIfTcldVMlYculmXVbkHJ1TT 0UxNGr7UzYdFawUN0r6cBRROa/YmihBtrV4NYE+SlTrRrgiUwUYHHcQAVnBCvWB9gA4PgB I9sTbstL0z+JRWT7t3BTT9uhvETLdDTE1Tavtg1vRp0dTo5O/JtmH3NSSFswQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bznvF1DzvzVq5; Sat, 09 Aug 2025 17:29:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579HTD4k067872; Sat, 9 Aug 2025 17:29:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579HTDgr067869; Sat, 9 Aug 2025 17:29:13 GMT (envelope-from git) Date: Sat, 9 Aug 2025 17:29:13 GMT Message-Id: <202508091729.579HTDgr067869@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: 53b77089e5ca - main - Remove unused variables in msun/bsdsrc/b_tgamma.c List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 53b77089e5cacb1ae863c3f70b3e6f286ca71df5 Auto-Submitted: auto-generated The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=53b77089e5cacb1ae863c3f70b3e6f286ca71df5 commit 53b77089e5cacb1ae863c3f70b3e6f286ca71df5 Author: Steve Kargl AuthorDate: 2025-08-09 17:24:08 +0000 Commit: Dimitry Andric CommitDate: 2025-08-09 17:25:25 +0000 Remove unused variables in msun/bsdsrc/b_tgamma.c PR: 288736 MFC after: 3 days --- lib/msun/bsdsrc/b_tgamma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/msun/bsdsrc/b_tgamma.c b/lib/msun/bsdsrc/b_tgamma.c index 8369477c18b7..a7e97bc777c3 100644 --- a/lib/msun/bsdsrc/b_tgamma.c +++ b/lib/msun/bsdsrc/b_tgamma.c @@ -259,7 +259,7 @@ small_gam(double x) static double smaller_gam(double x) { - double d, rhi, rlo, t, xhi, xlo; + double d, t, xhi, xlo; struct Double r; if (x < x0 + left) { From nobody Sat Aug 9 17:29:14 2025 X-Original-To: dev-commits-src-main@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 4bznvG4qLbz64jdy; Sat, 09 Aug 2025 17:29: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bznvG2vnyz3w0j; Sat, 09 Aug 2025 17:29:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754760554; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JNHTRnoPyV4mKHgrs/qMzNWdsn8C5vCyRbA11WWfQFY=; b=jZJWsr5k3KEbtrpN+vnzuGSP+PFHZ4sfo2otdshnaF/Dv+pEElxwN1wGaBCkbOHbnVQp+K PcfIORVe3qHJ3qoyxf1NaD5Ljd4L1VOEa0/ANrnMkL2V774oz2X6lZhzjQSP8gE82rcBj1 33dWSFulGPp81r0s6zdyy2ScQdBLL6nmCBBiy/9dIpIMFpYkKkk55x+9NtAUy+roxNiKID TWmkDwG6S4Op/NUFBdpzEOPy69Z/Dm6IjQUgMyEhjTzN1L1n1/LCno4Wkt6CqH/a/7awEK TO2KjS4JGMO0OQDYP4AnpDAdInvqMGAnaTcQxOSBBOtR1JZOXKEkytFN/yjemw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754760554; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JNHTRnoPyV4mKHgrs/qMzNWdsn8C5vCyRbA11WWfQFY=; b=w7hCDiKGRzPlWGCmYc88EoL5FIcL5ouKBpFKRDx40RzxxIHBkvUlnmD8ka4VFAdfOXobZf GGf6S88Ub+XHmlQ1Pyn8V6RiRXBgOHuyhq4sFQn+gf2Fq48RYAW5i5ieRCLNNhe2ipe6j7 Z4R7W15BFfdo0PHsUh0NJn3jvT0mBUgI9EFVL8Ad/ZPgz6LqUHpRhdK9w+rP7DHdb36Ywn 6gr8PD0I1jaUoRGWNh6CD7LKCTbYGmbKaMe9+wL1SYxXJR/KIIiDfD4w1zKdOD/Ld7+scO xKJIFqwoyK3JumeBG1bTXZnpdeklNdjlHrAZ2p/UjVghHjaxdjOH2RdeVDVI0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754760554; a=rsa-sha256; cv=none; b=TPU49it9jpZ1wOuxDzHLUPxgtmVPY7I1IoKSvQTikwUXbJa3jrB6d+7xi0Z0HzoIQ+66Yw TDuPTM70tRq/GPmZMoJbmJSe1Qv994t7+wxBT5+b/ofUAkUaxJDqmVxzVgEw4gh8TPNCnc SyLoYraj5FAfTHP332krSK0mc/5n1HCacr2f40Ra0naJ8uqC5Kibj+549KUtIqjahppKV2 CeGAn4fUE27TjoLQr3rMYQUdHReXHH6BHxT0uRxHjSUhio4gMyncIngyxKybzcFwNXoIQ7 pMbkWGcmz8lwk/upJ6TGxHpHz0QBZYghs+/VyoC3HgTopRi6AsTJxoLIQv4JwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bznvG2Sd8zWBL; Sat, 09 Aug 2025 17:29:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579HTEBU067904; Sat, 9 Aug 2025 17:29:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579HTEMD067901; Sat, 9 Aug 2025 17:29:14 GMT (envelope-from git) Date: Sat, 9 Aug 2025 17:29:14 GMT Message-Id: <202508091729.579HTEMD067901@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: a1d051bc878d - main - Updates for ccosh[f] and csinh[f] List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a1d051bc878decc761b37cf8771ead100cc05768 Auto-Submitted: auto-generated The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=a1d051bc878decc761b37cf8771ead100cc05768 commit a1d051bc878decc761b37cf8771ead100cc05768 Author: Steve Kargl AuthorDate: 2025-08-09 17:28:07 +0000 Commit: Dimitry Andric CommitDate: 2025-08-09 17:28:07 +0000 Updates for ccosh[f] and csinh[f] * lib/msun/src/s_ccosh.c: . Update Copyright years. . sin() and cos() are needed at the same time, so use sincos() to compute values. This does argument reduction once instead of twice. . Replace '* 0.5' with '/ 2'. This reduces diff with s_ccoshf.c. . For (LDBL_MANT_DIG == 53), add weak references for ccoshl and ccosl. * lib/msun/src/s_ccoshf.c: . Update Copyright years. . sin() and cos() are needed at the same time, so use sincos() to compute values. This does argument reduction once instead of twice. . Replace '* 0.5F' with '/ 2'. This reduces diff with s_ccoshf.c. * lib/msun/src/s_csinh.c: . Update Copyright years. . sin() and cos() are needed at the same time, so use sincos() to compute values. This does argument reduction once instead of twice. . Replace '* 0.5' with '/ 2'. This reduces diff with s_csinhf.c. . For (LDBL_MANT_DIG == 53), add weak references for csinhl and csinl. * lib/msun/src/s_csinhf.c: . Update Copyright years. . sin() and cos() are needed at the same time, so use sincos() to compute values. This does argument reduction once instead of twice. . Replace '* 0.5F' with '/ 2'. This reduces diff with s_ccoshf.c. PR: 288740 MFC after: 1 week --- lib/msun/src/s_ccosh.c | 23 ++++++++++++++++------- lib/msun/src/s_ccoshf.c | 18 +++++++++++------- lib/msun/src/s_csinh.c | 23 ++++++++++++++++------- lib/msun/src/s_csinhf.c | 18 +++++++++++------- 4 files changed, 54 insertions(+), 28 deletions(-) diff --git a/lib/msun/src/s_ccosh.c b/lib/msun/src/s_ccosh.c index 3d46c993c6f1..14a8931742dc 100644 --- a/lib/msun/src/s_ccosh.c +++ b/lib/msun/src/s_ccosh.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * Copyright (c) 2005-2025 Bruce D. Evans and Steven G. Kargl * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,7 +48,7 @@ static const double huge = 0x1p1023; double complex ccosh(double complex z) { - double x, y, h; + double c, h, s, x, y; int32_t hx, hy, ix, iy, lx, ly; x = creal(z); @@ -64,14 +64,16 @@ ccosh(double complex z) if (ix < 0x7ff00000 && iy < 0x7ff00000) { if ((iy | ly) == 0) return (CMPLX(cosh(x), x * y)); + + sincos(y, &s, &c); if (ix < 0x40360000) /* |x| < 22: normal case */ - return (CMPLX(cosh(x) * cos(y), sinh(x) * sin(y))); + return (CMPLX(cosh(x) * c, sinh(x) * s)); /* |x| >= 22, so cosh(x) ~= exp(|x|) */ if (ix < 0x40862e42) { /* x < 710: exp(|x|) won't overflow */ - h = exp(fabs(x)) * 0.5; - return (CMPLX(h * cos(y), copysign(h, x) * sin(y))); + h = exp(fabs(x)) / 2; + return (CMPLX(h * c, copysign(h, x) * s)); } else if (ix < 0x4096bbaa) { /* x < 1455: scale to avoid overflow */ z = __ldexp_cexp(CMPLX(fabs(x), y), -1); @@ -79,7 +81,7 @@ ccosh(double complex z) } else { /* x >= 1455: the result always overflows */ h = huge * x; - return (CMPLX(h * h * cos(y), h * sin(y))); + return (CMPLX(h * h * c, h * s)); } } @@ -129,7 +131,9 @@ ccosh(double complex z) if (ix == 0x7ff00000 && lx == 0) { if (iy >= 0x7ff00000) return (CMPLX(INFINITY, x * (y - y))); - return (CMPLX(INFINITY * cos(y), x * sin(y))); + + sincos(y, &s, &c); + return (CMPLX(INFINITY * c, x * s)); } /* @@ -154,3 +158,8 @@ ccos(double complex z) /* ccos(z) = ccosh(I * z) */ return (ccosh(CMPLX(-cimag(z), creal(z)))); } + +#if (LDBL_MANT_DIG == 53) +__weak_reference(ccosh, ccoshl); +__weak_reference(ccos, ccosl); +#endif diff --git a/lib/msun/src/s_ccoshf.c b/lib/msun/src/s_ccoshf.c index aeb2dec23677..fa41fdf4c4ea 100644 --- a/lib/msun/src/s_ccoshf.c +++ b/lib/msun/src/s_ccoshf.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * Copyright (c) 2005-2025 Bruce D. Evans and Steven G. Kargl * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,7 +40,7 @@ static const float huge = 0x1p127; float complex ccoshf(float complex z) { - float x, y, h; + float c, h, s, x, y; int32_t hx, hy, ix, iy; x = crealf(z); @@ -55,14 +55,16 @@ ccoshf(float complex z) if (ix < 0x7f800000 && iy < 0x7f800000) { if (iy == 0) return (CMPLXF(coshf(x), x * y)); + + sincosf(y, &s, &c); if (ix < 0x41100000) /* |x| < 9: normal case */ - return (CMPLXF(coshf(x) * cosf(y), sinhf(x) * sinf(y))); + return (CMPLXF(coshf(x) * c, sinhf(x) * s)); /* |x| >= 9, so cosh(x) ~= exp(|x|) */ if (ix < 0x42b17218) { /* x < 88.7: expf(|x|) won't overflow */ - h = expf(fabsf(x)) * 0.5F; - return (CMPLXF(h * cosf(y), copysignf(h, x) * sinf(y))); + h = expf(fabsf(x)) / 2; + return (CMPLXF(h * c, copysignf(h, x) * s)); } else if (ix < 0x4340b1e7) { /* x < 192.7: scale to avoid overflow */ z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1); @@ -70,7 +72,7 @@ ccoshf(float complex z) } else { /* x >= 192.7: the result always overflows */ h = huge * x; - return (CMPLXF(h * h * cosf(y), h * sinf(y))); + return (CMPLXF(h * h * c, h * s)); } } @@ -86,7 +88,9 @@ ccoshf(float complex z) if (ix == 0x7f800000) { if (iy >= 0x7f800000) return (CMPLXF(INFINITY, x * (y - y))); - return (CMPLXF(INFINITY * cosf(y), x * sinf(y))); + + sincosf(y, &s, &c); + return (CMPLXF(INFINITY * c, x * s)); } return (CMPLXF(((long double)x * x) * (y - y), diff --git a/lib/msun/src/s_csinh.c b/lib/msun/src/s_csinh.c index e7ed10e7d885..11c2ec345094 100644 --- a/lib/msun/src/s_csinh.c +++ b/lib/msun/src/s_csinh.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * Copyright (c) 2005-2025 Bruce D. Evans and Steven G. Kargl * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,7 +48,7 @@ static const double huge = 0x1p1023; double complex csinh(double complex z) { - double x, y, h; + double c, h, s, x, y; int32_t hx, hy, ix, iy, lx, ly; x = creal(z); @@ -64,14 +64,16 @@ csinh(double complex z) if (ix < 0x7ff00000 && iy < 0x7ff00000) { if ((iy | ly) == 0) return (CMPLX(sinh(x), y)); + + sincos(y, &s, &c); if (ix < 0x40360000) /* |x| < 22: normal case */ - return (CMPLX(sinh(x) * cos(y), cosh(x) * sin(y))); + return (CMPLX(sinh(x) * c, cosh(x) * s)); /* |x| >= 22, so cosh(x) ~= exp(|x|) */ if (ix < 0x40862e42) { /* x < 710: exp(|x|) won't overflow */ - h = exp(fabs(x)) * 0.5; - return (CMPLX(copysign(h, x) * cos(y), h * sin(y))); + h = exp(fabs(x)) / 2; + return (CMPLX(copysign(h, x) * c, h * s)); } else if (ix < 0x4096bbaa) { /* x < 1455: scale to avoid overflow */ z = __ldexp_cexp(CMPLX(fabs(x), y), -1); @@ -79,7 +81,7 @@ csinh(double complex z) } else { /* x >= 1455: the result always overflows */ h = huge * x; - return (CMPLX(h * cos(y), h * h * sin(y))); + return (CMPLX(h * c, h * h * s)); } } @@ -128,7 +130,9 @@ csinh(double complex z) if (ix == 0x7ff00000 && lx == 0) { if (iy >= 0x7ff00000) return (CMPLX(x, y - y)); - return (CMPLX(x * cos(y), INFINITY * sin(y))); + + sincos(y, &s, &c); + return (CMPLX(x * c, INFINITY * s)); } /* @@ -154,3 +158,8 @@ csin(double complex z) z = csinh(CMPLX(cimag(z), creal(z))); return (CMPLX(cimag(z), creal(z))); } + +#if (LDBL_MANT_DIG == 53) +__weak_reference(csinh, csinhl); +__weak_reference(csin, csinl); +#endif diff --git a/lib/msun/src/s_csinhf.c b/lib/msun/src/s_csinhf.c index c4392755c482..fcfc011a2484 100644 --- a/lib/msun/src/s_csinhf.c +++ b/lib/msun/src/s_csinhf.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl + * Copyright (c) 2005-2025 Bruce D. Evans and Steven G. Kargl * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,7 +40,7 @@ static const float huge = 0x1p127; float complex csinhf(float complex z) { - float x, y, h; + float c, h, s, x, y; int32_t hx, hy, ix, iy; x = crealf(z); @@ -55,14 +55,16 @@ csinhf(float complex z) if (ix < 0x7f800000 && iy < 0x7f800000) { if (iy == 0) return (CMPLXF(sinhf(x), y)); + + sincosf(y, &s, &c); if (ix < 0x41100000) /* |x| < 9: normal case */ - return (CMPLXF(sinhf(x) * cosf(y), coshf(x) * sinf(y))); + return (CMPLXF(sinhf(x) * c, coshf(x) * s)); /* |x| >= 9, so cosh(x) ~= exp(|x|) */ if (ix < 0x42b17218) { /* x < 88.7: expf(|x|) won't overflow */ - h = expf(fabsf(x)) * 0.5F; - return (CMPLXF(copysignf(h, x) * cosf(y), h * sinf(y))); + h = expf(fabsf(x)) / 2; + return (CMPLXF(copysignf(h, x) * c, h * s)); } else if (ix < 0x4340b1e7) { /* x < 192.7: scale to avoid overflow */ z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1); @@ -70,7 +72,7 @@ csinhf(float complex z) } else { /* x >= 192.7: the result always overflows */ h = huge * x; - return (CMPLXF(h * cosf(y), h * h * sinf(y))); + return (CMPLXF(h * c, h * h * s)); } } @@ -86,7 +88,9 @@ csinhf(float complex z) if (ix == 0x7f800000) { if (iy >= 0x7f800000) return (CMPLXF(x, y - y)); - return (CMPLXF(x * cosf(y), INFINITY * sinf(y))); + + sincosf(y, &s, &c); + return (CMPLXF(x * c, INFINITY * s)); } return (CMPLXF(((long double)x + x) * (y - y), From nobody Sat Aug 9 18:42:46 2025 X-Original-To: dev-commits-src-main@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 4bzqX6624Jz646QN; Sat, 09 Aug 2025 18:42: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzqX65Kpbz458w; Sat, 09 Aug 2025 18:42:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754764966; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sw7wNaIXpFxebZhCXIa2M55N2ojZmFYyVCdGquMAI+I=; b=EXiohZXBRlAWnElz03B1tSj2Gx0z8OO4gXIpx/Ba2P2Ia7j66PGEWTSfMjwsF3U9dneA3U kkVmNIxyy23LM3HIj2Ai+GgMKvDc+aUvux3qBKl47A7L06s0j1y1KrQeT+LwfGVJE6ARNs YXFBjhR44U1svJBt8de5cIFV24BhVwGpUgFEB3PTrIOhFxyNWcB20AB4c/hWcYSX7Xuq64 jLtGeEzqiNVIFPzZmLvqnG2vlcchM2pj6WePh7zDdqzOpPGVsmIfLmbpY+Nqmqe4ARUPgn +mSTn89UAp/NdvtcrZEsbmJXZ5qVakDaCUOWbOiFmxg5KKKqE/omhHlKVfVJdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754764966; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Sw7wNaIXpFxebZhCXIa2M55N2ojZmFYyVCdGquMAI+I=; b=PBCvSbMSAknd1pyAuaKZl1rCy8WSlP0yDijgbf331X4tsI12UiSLMpSZEZDE6Mogw2TKVT QdiU72Zqy1YbZy3+mdmSWklWJZb1rTrMuYQptMG6O3DVX2Sn2n0HKLQbP1C5XKFWefoEql zuYQJt/sffQNNwv3EOFAoGb+zDZwrmIT4w1v+DRsXOZvm6rJIo4UvGVgWWguQLFhTHOHTL YV96ps0tJXty2x2MeL4FD+IQ6VgzdD4odkWSYd2B/YWQBVflbwe0m/FeasYLmA49Bqhfah JRLcwzqXsjk8qF/SHVqv9+AGnIGDr77+FhRtLXYav2HghOMNtj8W5XHlPEKM3A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754764966; a=rsa-sha256; cv=none; b=KFt39QJ878Yk5qNHC9bWuodBG5EN07eI+0JabIlr2J5/k6SydfBASjPtwtP8BO/cYve64U dqRYDCPBJA6HxZ0Et3xbBn8rm/6n+kONncvT7QZPdQ5VNAVO4w25XJt7KupWLsFLktnpzT tg+vnVT50D67KI+iE7KmQdwCdzSSgfKaPPmpw0UVULIACbwndYJ+3xXqeRIeuQdNoNkw8x qAg2Slkl/IvEXY54cRkSpzDMsrRi1vf4P3sLF2GAGOb8rq+LPpt9wF9Y1sAp71SvhcZq50 ESQTsEoJsMbRxFLC4iNIaK8Z9uutvxcUlf53YVPVsN2/s9eNcsQibvZ6LNWRjw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzqX64wfjzZNG; Sat, 09 Aug 2025 18:42:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579Igk70016176; Sat, 9 Aug 2025 18:42:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579IgkJH016173; Sat, 9 Aug 2025 18:42:46 GMT (envelope-from git) Date: Sat, 9 Aug 2025 18:42:46 GMT Message-Id: <202508091842.579IgkJH016173@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 60fce0e22147 - main - busdma: another fix for small bounce transfers List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 60fce0e22147e7378e5585258aea0645e2274528 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=60fce0e22147e7378e5585258aea0645e2274528 commit 60fce0e22147e7378e5585258aea0645e2274528 Author: Mitchell Horne AuthorDate: 2025-08-09 18:04:27 +0000 Commit: Mitchell Horne CommitDate: 2025-08-09 18:42:33 +0000 busdma: another fix for small bounce transfers More fallout from a77e1f0f81df. When the tag has an alignment requirement but a small (remaining) transfer size, the transfer will be rounded up to exceed its bounds, resulting in memory corruption. The issue is observed on powerpc as noted in the pull request: https://github.com/freebsd/freebsd-src/pull/1415 I also observe the issue locally on riscv hardware, with an 8-byte transfer having 64-byte alignment. There is some uncertainty about the purpose/need for the alignment roundup; both its original intention and present effect. Notably, it is no longer present at all in arm/arm64 implementations. Possibly, this roundup can be removed altogether, but this requires more careful analysis of the edge-cases and history of the property. For now, simply clamp sgsize to be no larger than the remaining buflen, as this is certain to be correct within the current scheme and fixes the affected transfers. Discussed with: jhb, markj MFC after: 3 weeks Fixes: a77e1f0f81df ("busdma: better handling of small segment bouncing") Sponsored by: The FreeBSD Foundation Pull Request: https://github.com/freebsd/freebsd-src/pull/1415 Signed-off-by: Chattrapat Sangmanee Co-authored-by: Chattrapat Sangmanee Differential Revision: https://reviews.freebsd.org/D47807 --- sys/powerpc/powerpc/busdma_machdep.c | 1 + sys/riscv/riscv/busdma_bounce.c | 1 + sys/x86/x86/busdma_bounce.c | 1 + 3 files changed, 3 insertions(+) diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c index 65f90aa4affa..65a07c7ebc39 100644 --- a/sys/powerpc/powerpc/busdma_machdep.c +++ b/sys/powerpc/powerpc/busdma_machdep.c @@ -648,6 +648,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, sgsize = MIN(buflen, PAGE_SIZE - (curaddr & PAGE_MASK)); if (map->pagesneeded != 0 && must_bounce(dmat, curaddr)) { sgsize = roundup2(sgsize, dmat->alignment); + sgsize = MIN(sgsize, buflen); curaddr = add_bounce_page(dmat, map, kvaddr, curaddr, sgsize); } diff --git a/sys/riscv/riscv/busdma_bounce.c b/sys/riscv/riscv/busdma_bounce.c index f652f08bf5dc..9d9556fc72f9 100644 --- a/sys/riscv/riscv/busdma_bounce.c +++ b/sys/riscv/riscv/busdma_bounce.c @@ -672,6 +672,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, map->pagesneeded != 0 && addr_needs_bounce(dmat, curaddr)) { sgsize = roundup2(sgsize, dmat->common.alignment); + sgsize = MIN(sgsize, buflen); curaddr = add_bounce_page(dmat, map, kvaddr, curaddr, sgsize); } else if ((dmat->bounce_flags & BF_COHERENT) == 0) { diff --git a/sys/x86/x86/busdma_bounce.c b/sys/x86/x86/busdma_bounce.c index 040174113104..e86279aa9c98 100644 --- a/sys/x86/x86/busdma_bounce.c +++ b/sys/x86/x86/busdma_bounce.c @@ -726,6 +726,7 @@ bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, map->pagesneeded != 0 && must_bounce(dmat, curaddr)) { sgsize = roundup2(sgsize, dmat->common.alignment); + sgsize = MIN(sgsize, buflen); curaddr = add_bounce_page(dmat, map, kvaddr, curaddr, 0, sgsize); } From nobody Sat Aug 9 20:14:10 2025 X-Original-To: dev-commits-src-main@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 4bzsYb1HFGz64JF5; Sat, 09 Aug 2025 20:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzsYZ6lbdz4Ql5; Sat, 09 Aug 2025 20:14:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770451; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LiLRV6AnOeoM8o1g60Xieg165nVZOTthJiZjlOvv6R0=; b=JGKDJks2rEzkUiI1OpET5uIzGBLPaavK38LGVwZfORxnYEOOY78LXgi4wPzFGo3XikRIM5 JPAmKBawMBxmgpfkyKqMwHVADM7DzbZtCUzJ5zlCe2beSEFV96RPblDvU8AqLWzhpwtMFP oahJdozGuBhfchDU7neDCx8mhq8iBz0ffJrTZbfq/6Muvvwz+W6QWq425PMW+VR6XMIr7J dj/YHmSqE4GGpfg0vqtLZ56gyJL0rGN7gQFddJKh7uRkv2sAtxPPNZbvuEt+CFJiwNw5MS 9/UGS3Y2p44bsHdDSNn6IYMPlftXC2N8LUsX2wEG4dW8i6tVWAKUkQjjhe8sxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770451; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LiLRV6AnOeoM8o1g60Xieg165nVZOTthJiZjlOvv6R0=; b=blZ4TbIW1+ZDK+Tw+t0OUrpsn7eGfasjQlhkdFGgZcsvr75/RCOB11TUiBS/AfJfWhsaLD 9c+Ji1IKvFOWsRVJ+77GXqlh7ZjZoRCud1dYalPbX6DdXfJdISwH85ZEy3yLU3suwNlRgW z+BFkaGPPKQXrUsMkw6hhp3e2lfn3Fn9lpIJCRpHOKHkw4AETYOK+UtCUFsksF+kvSAnH0 SJXQ9TcEBOXXEsyYn2bKDxf50EouXMhce90RFHB+WV+crvp1A7KpCxb/a59Tt7Io7VB6mV LOzI3zzPA5Eit4pWaZC6bBDgkW+882OMupTf9OUOVBx/rPOBsXSHwgXUtC6KxQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754770451; a=rsa-sha256; cv=none; b=WUXVz03A0IwmyQuBFddZNPTxz5PzY2/tvpwUCMs+oGPR9IklxVLgMR7DgtEGIWsATZ5oQo OrWUV8ZyRSdPvTz9wVNItDYuonSIl/ZBASLUULkmHx+pXr4285lo5pDsAaex1+WSxY+Ldx rlaRYD5LiSyNo/81QOaWZytwPQuo6KpXSKQ+wc7wlTNlxcn8TUNYJXL//PZEvkaKujhY/x YBhWUnRq8sa+43/wqtcugpOEfaS6Jd2+2pcRsnEAsjpmb4Cv0DKGMz15OXCcbhE6ZICjoh BO5u1G3U18Y1Kw/E3yeNfFOAdzGk/6LvHuVhY6wmc26xaFt/uNwPz8Dc3Xqu3w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzsYZ5z9kzcQp; Sat, 09 Aug 2025 20:14:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579KEAbl086163; Sat, 9 Aug 2025 20:14:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579KEA7b086160; Sat, 9 Aug 2025 20:14:10 GMT (envelope-from git) Date: Sat, 9 Aug 2025 20:14:10 GMT Message-Id: <202508092014.579KEA7b086160@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Clausecker Subject: git: 4b15965daa99 - main - libc/amd64: rewrite memrchr() baseline impl. to read the string from the back List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4b15965daa99044daf184221b7c283bf7f2d7e66 Auto-Submitted: auto-generated The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=4b15965daa99044daf184221b7c283bf7f2d7e66 commit 4b15965daa99044daf184221b7c283bf7f2d7e66 Author: Robert Clausecker AuthorDate: 2025-07-29 20:12:32 +0000 Commit: Robert Clausecker CommitDate: 2025-08-09 20:13:27 +0000 libc/amd64: rewrite memrchr() baseline impl. to read the string from the back This ensures O(1) behaviour if the character is a constant offset from the end of the string, regardless of how long the string is. Reported by: Mikael Simonsson Reviewed by: benni PR: 288321 MFC after: 1 month --- lib/libc/amd64/string/memrchr.S | 152 +++++++++++++++++++--------------------- 1 file changed, 74 insertions(+), 78 deletions(-) diff --git a/lib/libc/amd64/string/memrchr.S b/lib/libc/amd64/string/memrchr.S index 4f6c5a238daa..f1ba48d6bb41 100644 --- a/lib/libc/amd64/string/memrchr.S +++ b/lib/libc/amd64/string/memrchr.S @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2023 Robert Clausecker + * Copyright (c) 2023, 2025 Robert Clausecker */ #include @@ -71,95 +71,91 @@ ARCHENTRY(memrchr, scalar) ARCHEND(memrchr, scalar) ARCHENTRY(memrchr, baseline) - movd %esi, %xmm4 - test %rdx, %rdx # empty buffer? - jz .L0 # if yes, return immediately + test %rdx, %rdx # empty input? + je .Lnomatchb + + + lea (%rdi, %rdx, 1), %ecx # pointer to end of buffer + lea -1(%rdi, %rdx, 1), %rdx # pointer to last char in buffer + movd %esi, %xmm2 + and $~0x1f, %rdx # pointer to final 32 buffer bytes + movdqa (%rdx), %xmm0 # load last 32 bytes + movdqa 16(%rdx), %xmm1 + + punpcklbw %xmm2, %xmm2 # c -> cc - punpcklbw %xmm4, %xmm4 # c -> cc - mov %edi, %ecx - punpcklwd %xmm4, %xmm4 # cc -> cccc - and $~0xf, %rdi # align source pointer - pshufd $0, %xmm4, %xmm4 # cccc -> cccccccccccccccc - and $0xf, %ecx - movdqa %xmm4, %xmm0 mov $-1, %r8d - pcmpeqb (%rdi), %xmm0 # compare aligned head - shl %cl, %r8d # mask of bytes in the head of the buffer - pmovmskb %xmm0, %eax + neg %ecx + mov %r8d, %r9d + shr %cl, %r8d # mask with zeroes after the string - sub $16, %rcx - and %r8d, %eax # match mask - add %rcx, %rdx # advance past head - cmc - jbe .Lrunt # did the string end in the buffer? + punpcklwd %xmm2, %xmm2 # cc -> cccc - mov %rdi, %rsi # pointer to matching chunk - add $16, %rdi - sub $16, %rdx # enough left for another round? - jbe 1f + mov %edi, %ecx + mov %r9d, %eax + shl %cl, %r9d # mask with zeroes before the string - /* main loop unrolled twice */ - ALIGN_TEXT -0: movdqa %xmm4, %xmm0 - pcmpeqb (%rdi), %xmm0 - pmovmskb %xmm0, %r8d + pshufd $0, %xmm2, %xmm2 # cccc -> cccccccccccccccc - cmp $16, %rdx # enough left for second chunk? - jbe 2f + cmp %rdx, %rdi # tail is beginning of buffer? + cmovae %r9d, %eax # if yes, do combined head/tail processing + and %r8d, %eax # mak of bytes in tail part of string - movdqa %xmm4, %xmm0 - pcmpeqb 16(%rdi), %xmm0 + /* process tail */ + pcmpeqb %xmm2, %xmm1 + pcmpeqb %xmm2, %xmm0 + pmovmskb %xmm1, %esi pmovmskb %xmm0, %ecx + shl $16, %esi + or %esi, %ecx # locations of matches + and %ecx, %eax # any match inside buffer? + jnz .Lprecisematchb - lea 16(%rdi), %r9 - test %ecx, %ecx # match found in second chunk? - cmovz %r8d, %ecx # if not, use match data from first chunk - cmovz %rdi, %r9 - - test %ecx, %ecx # any match found? - cmovnz %ecx, %eax # if yes, overwrite previously found match - cmovnz %r9, %rsi - - add $32, %rdi # advance to next iteration - sub $32, %rdx # advance to next chunks - ja 0b - - /* process remaining 1--16 bytes */ -1: pcmpeqb (%rdi), %xmm4 - mov $0xffff, %r8d - xor %ecx, %ecx - sub %edx, %ecx # number of bytes to be masked out - pmovmskb %xmm4, %r9d - shr %cl, %r8d # mask of bytes to be kept in the buffer - and %r9d, %r8d - cmovnz %r8d, %eax - cmovnz %rdi, %rsi - bsr %eax, %eax - lea (%rsi, %rax, 1), %rsi # pointer to match (or junk) - cmovnz %rsi, %rax # if any match was found, return it - ret + cmp %rdx, %rdi # did the buffer begin here? + jae .Lnomatchb # if yes, we are done - /* end of chunk reached within first half iteration */ -2: test %r8d, %r8d # match in previous chunk? - cmovnz %r8d, %eax # if yes, overwrite previous chunks - cmovnz %rdi, %rsi - add $16, %rdi # point to tail - sub $16, %edx - jmp 1b # handle tail the same otherwise - - /* runt: string ends within head, edx has negated amount of invalid head bytes */ -.Lrunt: mov $0xffff, %r8d - xor %ecx, %ecx - sub %edx, %ecx - shr %cl, %r8d - and %r8d, %eax - bsr %eax, %eax - lea (%rdi, %rax, 1), %rdi - cmovnz %rdi, %rax + /* main loop */ + ALIGN_TEXT +0: movdqa -32(%rdx), %xmm0 # load previous string chunk + movdqa -16(%rdx), %xmm1 + sub $32, %rdx # beginning of string reached? + cmp %rdx, %rdi + jae .Ltailb + + pcmpeqb %xmm2, %xmm0 + pcmpeqb %xmm2, %xmm1 + por %xmm1, %xmm0 # match in either half? + pmovmskb %xmm0, %eax + test %eax, %eax + jz 0b + +.Lmatchb: + pcmpeqb (%rdx), %xmm2 # redo comparison of first 16 bytes + pmovmskb %xmm1, %ecx + pmovmskb %xmm2, %eax + shl $16, %ecx + or %ecx, %eax # location of matches + +.Lprecisematchb: + bsr %eax, %eax # find location of match + add %rdx, %rax # point to matching byte ret - /* empty buffer: return a null pointer */ -.L0: xor %eax, %eax +.Ltailb: + pcmpeqb %xmm2, %xmm1 + pcmpeqb %xmm2, %xmm0 + pmovmskb %xmm1, %ecx + pmovmskb %xmm0, %eax + shl $16, %ecx + or %ecx, %eax # location of matches + and %r9d, %eax # mask out matches before buffer + bsr %eax, %edi # location of match + lea (%rdx, %rdi, 1), %rdx # pointer to match (if any) + cmovnz %rdx, %rax # point to match if present, + ret # else null pointer + +.Lnomatchb: + xor %eax, %eax # return null pointer ret ARCHEND(memrchr, baseline) From nobody Sat Aug 9 20:14:11 2025 X-Original-To: dev-commits-src-main@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 4bzsYc4YhXz64JQ4; Sat, 09 Aug 2025 20:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzsYc0Wgcz3Bw8; Sat, 09 Aug 2025 20:14:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8M6C5Fv9iA3fn/gesKkRhGuvkaWjXyIYTh4wNLfUxTI=; b=RFypWUOkbikLh9DvNYsFQ/rbDjDzSeKruGzLP8hYfvcpR+DhJuW3keAGAyK2QQ09fWla7Q xCTD3/Ny+xZe6UBxcaiuVf5irScb9sNv1uDrA8Os9fE+u3qO/pX3nWABcPBoCjP+SEVhsC MLoqUlarhLIRWV/MaN6knlG/dhFCDkfzT5mF5LRCXnQs/I3s+XW+ikBl/Oh1QOGvCRlC/s YbSN8mp1yh+oTV0Y9gRApKsVmaOvu/fL6TMDwKzBDPNnN8dhkRSSNJONns/3hLJV3u1PXF 1wX7kr5VQJ0CE3EAAxekXVVbDCrz95kyS3g3SXbGO7rO24/c/WMSkeI/mvdjOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8M6C5Fv9iA3fn/gesKkRhGuvkaWjXyIYTh4wNLfUxTI=; b=Xn1sMUW084Ytv6xivy51wDlZfe+7nuZ9/hfNQ4dqQ919kUmUl7W4iurlC6kcXS0w6wvh2W v2giaqrYQ13h03MZ3iAAfWvlyIMeXRussgX5mc3zkJCjKqixLzAF5WkiZx0xsiPidr6V8x BMv5JWFZSJ6YnbKOvTuuM576GZ5+1VZGwRtivPFedakFFIxdOgFfKW5Qn0Egbpj2bIk9sD E9MySJ6eMQwMQ+4A2K1pKdmc68lrajIfaJq/exgg11XmLY900UvTLAV0Ba44bHz4MVA1r2 VC53qWLVTEAJB8Q7fiU8f3wJzo4qS8utSqFLPfqpwL/arTuSwPg3fyxosOYtkQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754770452; a=rsa-sha256; cv=none; b=mPJWs/shXfrX8mfRvc6gj2ICiQiwtgZED63ns13zc95mKTgxpeXlgdPWgnbA6XESISFvfl XkqV9LbJtSpwwNscU6rWmtVThDyICnBcQ3H9FXJl/3frwamY7SqfpwE9PX+u7YGzVuewn8 jglcDfRAnuSkGqnXgQ9hU1iseRe6V7W9M7sitBYbEf0LXh026FbtKc3iXih5l6kWvEI8to TyO56Abyfu464N9BWfuvkT1oNSj1FLKdc863aI4jN/7w86XC3dAK4uepjoooeAgfwMOsGR wpbqA39KJcQk1t736I6ctUwQimRPj4C7hFont73S1n54s+smBP0+D5npstXdvA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzsYb6cN6zcC4; Sat, 09 Aug 2025 20:14:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579KEBsU086195; Sat, 9 Aug 2025 20:14:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579KEBuH086192; Sat, 9 Aug 2025 20:14:11 GMT (envelope-from git) Date: Sat, 9 Aug 2025 20:14:11 GMT Message-Id: <202508092014.579KEBuH086192@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Clausecker Subject: git: 30acc8427026 - main - libc/amd64: rewrite memrchr() scalar impl. to read the string from the back List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 30acc84270266e41f66cf572f67c3290d923da2f Auto-Submitted: auto-generated The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=30acc84270266e41f66cf572f67c3290d923da2f commit 30acc84270266e41f66cf572f67c3290d923da2f Author: Robert Clausecker AuthorDate: 2025-07-29 20:12:11 +0000 Commit: Robert Clausecker CommitDate: 2025-08-09 20:13:27 +0000 libc/amd64: rewrite memrchr() scalar impl. to read the string from the back A very simple implementation as I don't have the patience right now to write a full SWAR kernel. Should still do the trick if you wish to opt out of SSE for some reason. Reported by: Mikael Simonsson Reviewed by: strajabot PR: 288321 MFC after: 1 month --- lib/libc/amd64/string/memrchr.S | 72 +++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/lib/libc/amd64/string/memrchr.S b/lib/libc/amd64/string/memrchr.S index f1ba48d6bb41..80fb306af2a3 100644 --- a/lib/libc/amd64/string/memrchr.S +++ b/lib/libc/amd64/string/memrchr.S @@ -16,58 +16,54 @@ ARCHFUNCS(memrchr) ENDARCHFUNCS(memrchr) ARCHENTRY(memrchr, scalar) - xor %eax, %eax # prospective return value - sub $4, %rdx # 4 bytes left to process? - jb 1f + lea -1(%rdi, %rdx, 1), %rax # point to last char in buffer + sub $4, %rdx # 4 bytes left to process? + jb .Ltail ALIGN_TEXT -0: xor %r8, %r8 - lea 2(%rdi), %r10 - cmp %sil, 2(%rdi) - cmovne %r8, %r10 # point to null if no match +0: cmp %sil, (%rax) # match at last entry? + je 1f - cmp %sil, (%rdi) - cmove %rdi, %r8 # point to first char if match + cmp %sil, -1(%rax) # match at second to last entry? + je 2f - lea 1(%rdi), %r9 - cmp %sil, 1(%rdi) - cmovne %r8, %r9 # point to first result if no match in second + cmp %sil, -2(%rax) # match at third to last entry? + je 3f - lea 3(%rdi), %r11 - cmp %sil, 3(%rdi) - cmovne %r10, %r11 + cmp %sil, -3(%rax) # match at fourth to last entry? + je 4f - test %r11, %r11 - cmovz %r9, %r11 # take first pair match if none in second + sub $4, %rax + sub $4, %rdx + jae 0b - test %r11, %r11 - cmovnz %r11, %rax # take match in current set if any +.Ltail: cmp $-3, %edx # at least one character left to process? + jb .Lnotfound - add $4, %rdi - sub $4, %rdx - jae 0b + cmp %sil, (%rax) + je 1f -1: cmp $-3, %edx # a least one character left to process? - jb 2f + cmp $-2, %edx # at least two characters left to process? + jb .Lnotfound - cmp %sil, (%rdi) - cmove %rdi, %rax + cmp %sil, -1(%rax) + je 2f - lea 1(%rdi), %rcx - cmp $-2, %edx # at least two characters left to process? - jb 2f + cmp $-1, %edx # at least three characters left to process? + jb .Lnotfound - cmp %sil, 1(%rdi) - cmove %rcx, %rax + cmp %sil, -2(%rax) + je 3f - lea 2(%rdi), %rcx - cmp $-1, %edx # at least three character left to process? - jb 2f - - cmp %sil, 2(%rdi) - cmove %rcx, %rax +.Lnotfound: + xor %eax, %eax + ret -2: ret + /* match found -- adjust rax to point to matching byte */ +4: dec %rax +3: dec %rax +2: dec %rax +1: ret ARCHEND(memrchr, scalar) ARCHENTRY(memrchr, baseline) From nobody Sat Aug 9 20:14:12 2025 X-Original-To: dev-commits-src-main@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 4bzsYd42qCz64JKd; Sat, 09 Aug 2025 20:14: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzsYd24hBz3Bp6; Sat, 09 Aug 2025 20:14:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770453; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mRvQA1bEmLPI/y83RPdsEjEjpJCI9furL+pFgOZr6e4=; b=Io4+BtBujTFmUKlHsCBpGFicAHX6SIsnIO+HHn0qQQacQIDMhXmfaHlcFY6jjwce5oyJZG tUH/K66os5YkIlfB4gXNSuPgwiI8pf96oOUhUXZPKnL4Ic4SgAg2XjVWLOTWRLheRzI6dp PuxbVENyfltOj9FmK2IxpY5bdsZPfGpHYlwkox2yUi9DRqXI59kGnQKTU0pkw/lcnikffi SeHRHSLldhHbVU0yoldlvIPeAY1ahlhpXdH2+8Re8AcqWsK/uwHYrVbuk1inlOVtTD8tRL RncYsBCx7W4D/CuOiwjPg9KnnIpq+5/mN2zYAKIqV8nSKEMOqDbKHcfaUh4+yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754770453; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mRvQA1bEmLPI/y83RPdsEjEjpJCI9furL+pFgOZr6e4=; b=P8MH9zJpK4HSX9FvqRHL/1jnIEvwdAI+yrXHl3hgILzGqSxmuPa1cyiBBhj+V3KbAoPUGd ouFIz4tGCoNv5DJOV7phrIFXlP1NUQTt8BBpvKG22jRBU5C/5VF+G6v/jiLaFKsmf5fGnF mSmOnrWo0yb6wbQnZWnIGqrEx9z7K/cC03gbOPh1qeusl04KRBqAbvGXbLIXFnaW7QB/qk 61a58rY7j7yAWNg5OCgNLYSJ1xI+2fhokdPKLHVuPVBc916uvlILY9GLgQM+kCBMPdiKC7 0hBNrw0TpQvyaJqprJkVerzyX9SrbqENw5Ugu4ZDecVlVb1jjBzgTc+lzrKtJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754770453; a=rsa-sha256; cv=none; b=GdgWE7Gt+W7gOmcJHFePyKj2kN88H0hRDpmRLsuypJkkhJscr/aTwbVH1KZOt/wPPCilwA HZ3Dg9QzJ0lPrvVXCE2xViSJN0m9ZgTDad7K9f3tsTPZLrRd252w8ZqYHQsGDQfzWmChDm zneFQMFnsqsLtvz1Pgd6fNQ6gWqez/F8F9cj+tb58FtDktRWvm9/9ZysUD+ox4rFbuulpO YMc8FjyNB9pMNC2lQyiWjkxULj8lwdLfWK0POAeFTG0bwQsiEMkBSg/J68tUkyHb1JaH/f eYWq8a05O6O1RWHTqAfpIN/n4AjMWa8MqRUgbiGQ4cL8YeHkUXWshDegbs6jYw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzsYd0NLHzcSr; Sat, 09 Aug 2025 20:14:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579KECNq086233; Sat, 9 Aug 2025 20:14:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579KECVR086230; Sat, 9 Aug 2025 20:14:12 GMT (envelope-from git) Date: Sat, 9 Aug 2025 20:14:12 GMT Message-Id: <202508092014.579KECVR086230@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Clausecker Subject: git: 9f4eb7679648 - main - man/man7: drop i386 from simd(7) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: fuz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9f4eb767964832efee583d966dd41212725e5413 Auto-Submitted: auto-generated The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=9f4eb767964832efee583d966dd41212725e5413 commit 9f4eb767964832efee583d966dd41212725e5413 Author: Robert Clausecker AuthorDate: 2025-07-29 20:16:05 +0000 Commit: Robert Clausecker CommitDate: 2025-08-09 20:13:28 +0000 man/man7: drop i386 from simd(7) MFC: no --- share/man/man7/simd.7 | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/share/man/man7/simd.7 b/share/man/man7/simd.7 index d5092348d9b3..2c3ed3de411e 100644 --- a/share/man/man7/simd.7 +++ b/share/man/man7/simd.7 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE . -.Dd November 18, 2024 +.Dd July 29, 2025 .Dt SIMD 7 .Os .Sh NAME @@ -50,48 +50,43 @@ can be used to override this mechanism. .Pp Enhanced functions are present for the following architectures: .Bl -column FUNCTION_________ aarch64_ arm_ amd64_ i386_ ppc64_ -offset indent -.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em I386 Ta Em PPC64 -.It bcmp Ta A Ta Ta S1 Ta S -.It bcopy Ta A Ta S Ta S Ta S Ta SV -.It bzero Ta A Ta S Ta S Ta S -.It div Ta Ta Ta S Ta S +.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em PPC64 +.It bcmp Ta A Ta Ta S1 +.It bcopy Ta A Ta S Ta S Ta SV +.It bzero Ta A Ta S Ta S +.It div Ta Ta Ta S .It index Ta A Ta Ta S1 -.It ldiv Ta Ta Ta S Ta S +.It ldiv Ta Ta Ta S .It lldiv Ta Ta Ta S .It memchr Ta A Ta Ta S1 -.It memcmp Ta A Ta S Ta S1 Ta S +.It memcmp Ta A Ta S Ta S1 .It memccpy Ta A Ta Ta S1 -.It memcpy Ta A Ta S Ta S Ta S Ta SV -.It memmove Ta A Ta S Ta S Ta S Ta SV +.It memcpy Ta A Ta S Ta S Ta SV +.It memmove Ta A Ta S Ta S Ta SV .It memrchr Ta A Ta Ta S1 -.It memset Ta A Ta S Ta S Ta S -.It rindex Ta A Ta Ta S1 Ta S +.It memset Ta A Ta S Ta S +.It rindex Ta A Ta Ta S1 .It stpcpy Ta A Ta Ta S1 .It stpncpy Ta Ta Ta S1 -.It strcat Ta A Ta Ta S1 Ta S -.It strchr Ta A Ta Ta S1 Ta S +.It strcat Ta A Ta Ta S1 +.It strchr Ta A Ta Ta S1 .It strchrnul Ta A Ta Ta S1 -.It strcmp Ta A Ta S Ta S1 Ta S -.It strcpy Ta A Ta Ta S1 Ta S Ta S2 +.It strcmp Ta A Ta S Ta S1 +.It strcpy Ta A Ta Ta S1 Ta S2 .It strcspn Ta S Ta Ta S2 .It strlcat Ta A Ta Ta S1 .It strlcpy Ta A Ta Ta S1 .It strlen Ta A Ta S Ta S1 .It strncat Ta A Ta Ta S1 -.It strncmp Ta A Ta S Ta S1 Ta S -.It strncpy Ta Ta Ta S1 Ta Ta S2 +.It strncmp Ta A Ta S Ta S1 +.It strncpy Ta Ta Ta S1 Ta S2 .It strnlen Ta A Ta Ta S1 -.It strrchr Ta A Ta Ta S1 Ta S +.It strrchr Ta A Ta Ta S1 .It strpbrk Ta S Ta Ta S2 .It strsep Ta S Ta Ta S2 .It strspn Ta S Ta Ta S2 -.It swab Ta Ta Ta Ta S .It timingsafe_bcmp Ta A Ta Ta S1 .It timingsafe_memcmp Ta S Ta Ta S -.It wcschr Ta Ta Ta Ta S -.It wcscmp Ta Ta Ta Ta S -.It wcslen Ta Ta Ta Ta S -.It wmemchr Ta Ta Ta Ta S .El .Pp .Sy S Ns :\ scalar (non-SIMD), From nobody Sat Aug 9 20:17:27 2025 X-Original-To: dev-commits-src-main@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 4bzsdl45hGz64JCh for ; Sat, 09 Aug 2025 20:17:47 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzsdk083rz3DF0 for ; Sat, 09 Aug 2025 20:17:41 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; dkim=none; spf=pass (mx1.freebsd.org: domain of jrtc27@jrtc27.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=jrtc27@jrtc27.com; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=freebsd.org (policy=none) Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-459e7ea3ebeso12145445e9.0 for ; Sat, 09 Aug 2025 13:17:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754770659; x=1755375459; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R5GwLIv7WtyR9AnckNlJycCqjCkmbYMxzIhu3V2EQFM=; b=lOEdJt4Z34kAgDLfVTFMUlUdk2mFt2IZKdh/V/rFYk+U9U8NNLoEXTxvYTt/v0Yz1u VJhjeWjHejN6xUTdZBgxICE7y5fYUE2rXKQV+o0gOTOcH7n0Z93IW1Y1mVdrx93jUNZ4 W0QAapQQiRXkuSKQsQoin9lgy0DSUXJx5CWI//f4V3ulI1dOLYYBZhKrL78dS70M+Dvl FxJ0lI0Xi083XIeWS5pAP1XsyI0n5HHGFYeMwBUKXpsKqxQzNs7wAi4RBgjS+WJYQQv/ zbY9S7CKukgW8evFyk+NfBFF/lG8UWiQVJ8BczgTIsr3TpU2yqJZq6+xY7stkjmfrLbH Q+xw== X-Forwarded-Encrypted: i=1; AJvYcCVB69Jz1utoL2TM1AQdn0ZeNc2HKmNQDlK5VuTdiE1agMUD1gHfCzQPJ+h9kNWm+T7ElaXlD0zhRBZ/SAvSFliZwCvPQg==@freebsd.org X-Gm-Message-State: AOJu0YwPKblNWd6m86vdk62z0z+kgFhxU0g4xKsMjXyVnnkIlecQ9VST sbxsf+sFeQboMD3iSLLI4o2r1hF/QI5+jtScaOo5sMQMDF/8fkgd6L8uOJRKNAvmohQ= X-Gm-Gg: ASbGncuuMCMs7IHFzfRJDI1k/XnVzCweLvPvRSqgp1ZFc5FuFlOOe7hLL2krm6oktkb 4ago/LQ5mB7U4iIt0TK9DA9QLO95ecq0T3Y7BEKrBqZlTR0v+2/52mbqgpl5p2ir1W2tNJN1fWo KejMD1qzCI/M/OQOeG8JUL1GF0Jc9FVogTg7U82DbYXDXCQuuNhApyaCSCeZeAOla69aZyEWYjl HoQd5wUH1BpO3kKP6xDHKhpNyRytQ/Qg2lvWk8t3b7TbnTz4ZycqTvII+pKosDhjV241vvu9TwT GUCeW4nsCKu0Aknv1eWlbvlg3DDmngdE/B83sDN7me8W9bBL0HIKixHY0q3B/tnlHxdxWQ/BR9p MB5Xcovl+CKfXK5Q/F7cGaT559UqwNQ6wIyYMREh8/NOMe2j5J4A0lrJY1+b+bFV/lVbX5IE= X-Google-Smtp-Source: AGHT+IHKhfSGHfBLc1m4KHM22CknEjfejzMO1q1TpFShZIXeg11NTFspcPcZ+IBGWyEv+T54ujARuQ== X-Received: by 2002:a05:600c:5298:b0:456:29ae:3dbe with SMTP id 5b1f17b1804b1-459f59cec5bmr64250115e9.24.1754770659284; Sat, 09 Aug 2025 13:17:39 -0700 (PDT) Received: from smtpclient.apple (global-184-99.n-1.net.cam.ac.uk. [131.111.184.99]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459de0d4cf1sm251228945e9.13.2025.08.09.13.17.38 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 09 Aug 2025 13:17:38 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Subject: Re: git: df58e8b1506f - main - zfs: merge openzfs/zfs@8302b6e32 From: Jessica Clarke In-Reply-To: <202508070806.57786Dbb015719@gitrepo.freebsd.org> Date: Sat, 9 Aug 2025 21:17:27 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: <10E74846-4B2E-41AD-8E1D-B86B85FBE92C@freebsd.org> References: <202508070806.57786Dbb015719@gitrepo.freebsd.org> To: Martin Matuska X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Spamd-Result: default: False [-2.34 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.94)[-0.937]; MV_CASE(0.50)[]; FORGED_SENDER(0.30)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed), No valid DKIM,none]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; ARC_NA(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; FREEFALL_USER(0.00)[jrtc27]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_HAS_DN(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_NEQ_ENVFROM(0.00)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; R_DKIM_NA(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@freebsd.org]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.128.44:from]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[209.85.128.44:from] X-Rspamd-Queue-Id: 4bzsdk083rz3DF0 X-Spamd-Bar: -- On 7 Aug 2025, at 09:06, Martin Matuska wrote: >=20 > The branch main has been updated by mm: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3Ddf58e8b1506f241670be86a560fb6e84= 32043aee >=20 > commit df58e8b1506f241670be86a560fb6e8432043aee > Merge: 02f394281fd6 8302b6e32bb1 > Author: Martin Matuska > AuthorDate: 2025-08-07 07:06:31 +0000 > Commit: Martin Matuska > CommitDate: 2025-08-07 07:06:31 +0000 >=20 > zfs: merge openzfs/zfs@8302b6e32 >=20 > Notable upstream pull request merges: > #16853 894edd084 Add TXG timestamp database > #17004 -multiple Implement dynamic gang header sizes > #17405 dea0fc969 ZVOL: Return early, if volmode is = ZFS_VOLMODE_NONE > on FreeBSD side > #17455 cf146460c Default to zfs_bclone_wait_dirty=3D1 > #17481 523d9d600 Validate mountpoint on path-based unmount using = statx > #17482 92da9e0e9 ZVOL: Implement zvol_alloc() function on FreeBSD = side > #17489 dee62e074 spa: ZIO_TASKQ_ISSUE: Use symbolic priority > #17496 bf846dcb7 Release topology restrictions on special/dedup > #17497 4e92aee23 Relax special_small_blocks restrictions > #17503 ea38787f2 Revert "Fix incorrect expected error in ztest" > #17505 be1e991a1 Allow and prefer special vdevs as ZIL > #17506 ee0cb4cb8 ztest: Fix false positive of ENOSPC handling > #17507 92d3b4ee2 zio: rename `io_reexecute` as `io_post`; > use it for the direct IO checksum error flag > #17508 6af8db61b metaslab: don't pass whole zio to throttle = reserve APIs > #17518 4c2a7f85d FreeBSD: Add support for _PC_HAS_HIDDENSYSTEM > #17521 d7ab07dfb ZIL: Force writing of open LWB on suspend > #17524 b6e8db509 zpool/zfs: Add '-a|--all' option to scrub, trim, > initialize > #17531 c1e51c55f Correct weight recalculation of space-based = metaslabs > #17533 d323fbf49 FreeBSD: zfs_putpages: don't undirty pages until > after write completes > #17536 b21e04e8d Fix zdb pool/ with -k > #17537 -multiple Userspace tunables > #17540 2957eabbe Add support for FreeBSD's Solaris style extended > attribute interface > #17547 4bd7a2eaa zdb: fix checksum calculation for decompressed = blocks > #17551 -multiple cleanup: remove var init/update > #17561 0f8a1105e Skip dbuf_evict_one() from dbuf_evict_notify() > for reclaim thread > #17563 10a78e264 Faster checksum benchmark on system boot > #17564 00ce064d8 spa: update blkptr diagram to include vdev = padding > on encrypted blocks > #17565 -multiple Physical rewrite > #17566 fc885f308 Don't use wrong weight when passivating group > #17572 f70c85086 BRT: Fix ZAP entry endianness > #17575 0b6fd024a ZVOL: Unify zvol minors operations and improve = error > handling > #17581 cb5e7e097 range_tree: Provide more debug details upon = unexpected > add/remove > #17587 -multiple Fix two issues with dynamic gang headers >=20 > Obtained from: OpenZFS > OpenZFS commit: 8302b6e32bb153a6f402b106484d5736f082abcc This breaks building on macOS: > = /Users/runner/work/freebsd-src/freebsd-src/sys/contrib/openzfs/lib/libspl/= tunables.c:77:29: error: argument to 'section' attribute is not valid = for this target: mach-o section specifier requires a segment and section = separated by a comma=20 > __attribute__((__section__("zfs_tunables")))=20 > ^=20 > 1 error generated.=20 > --- tunables.o ---=20 > *** [tunables.o] Error code 1 Mach-O and ELF are very different formats when it comes to how to do linker sets. There is an implementation for macOS that I wrote in tools/build/cross-build/include/mac/sys/linker_set.h if you really need it, but I doubt that all these tunables are actually needed when bootstrapping and could instead be stubbed out or completely removed. It would also be nice if, going forwards, you could test cross-building before landing OpenZFS merges as they have a history of breaking. Creating a test PR in GitHub is all that it takes. Jessica From nobody Sat Aug 9 20:36:48 2025 X-Original-To: dev-commits-src-main@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 4bzt3h6Plfz64LNv; Sat, 09 Aug 2025 20:36: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzt3h2fCnz3JYN; Sat, 09 Aug 2025 20:36:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754771808; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G8IDx+ChHBStBTurxo+Dug4Y+zsaZrfYymLS8bqqNyw=; b=EFuDwuZ2jNBq/FLXEKqaYrWpmBJ9FIs47UItKeLtLpb30nM7RGqmJyd+pLEtGRLElbpwlz NgVKu/+LBFfL7ldn6VLeyZr2htRVCUDBo8onjF/2i2t+Wx7Iezqak9a7OK0hwRRapvfsxE wPctfquvd1kQXTKjRQmZVn2qGu4Cpxl6p/oEZIMSdM4If6/h0shbs9cNBB7UcAa8teEl2Q jKfJh1VQ+bQII2N11x9Polq4Sv+FWf6DBagA0wqVejnnV/h8gITnh057hHiH5ycJ/qH7oY khEoZxUXH7pkOqo1N1DYy2mwXuursbe0p0Dtnz5T/70uxNVvER9919VVIsFmwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754771808; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=G8IDx+ChHBStBTurxo+Dug4Y+zsaZrfYymLS8bqqNyw=; b=v2of3GPG59TwB7/0sh56xAhjPJrNbBfP9hf6DBiK9rdjX6Kgcueis7Ov4RnlQ+QQ5XcHWE zchukh+f/hnXCU/CrUa+VpKUWj4DCDjnElRcGb3xpqt5bEW9g8DIE/UBCdDZMo9tL7RcXo h0E2lMzhkvyx/V2ngaNgVZQOVWqTXcmiRdw0QsW/xPQZzPdMM6cy/T2Bum9IsjrDyrpyQi so6BYZzyLw6FPcHBy+f2ID+kBqVVxMJrGEvdd76UQMZsWeZGvvPZwJH7XWV9FWKp8NCbak arCHQlepmhrkXMYih/VmNZXySu6fCI3C4gxUglaWq2T5UP1g/WPXcFhAlnpk2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754771808; a=rsa-sha256; cv=none; b=Bmvw6imPqeln1/0MwWBYlHz5fmDe0M5aBmoLksgrVlBlncStS0G7giexS3xRCQho4rzYUU eKjCFX5lICa8TkyHQ9vvSX3/aIg3SKbr1AUk1vSj1FydD2/Luw2MBdVLskwgeWNVrmvvC2 v959GiFZXLn1+YwRy6yBpi13ZvmCmbrlXohidLTPCnivCi1F0D/lK0yB1Cg5hudVo0YBBq KZ7LFooKhFX+6h+EXhdgcvKa6KnJQFqCU/mlVPmqZELFIKEy5OoWXosnxMGWE2itE5QLDF yPkrD1nFBPlHxznjeuVLiAC8kE61HSDc+wk+pWrEcePAsbQaCfWxLV3Spd5tcA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzt3h20Gnzctv; Sat, 09 Aug 2025 20:36:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579KamC4024600; Sat, 9 Aug 2025 20:36:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579KamLx024597; Sat, 9 Aug 2025 20:36:48 GMT (envelope-from git) Date: Sat, 9 Aug 2025 20:36:48 GMT Message-Id: <202508092036.579KamLx024597@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 7a9834041c91 - main - vfs: Put the definition of COPY_FILE_RANGE_CLONE in unistd.h List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7a9834041c91596af83fa15768321cdc7290880b Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=7a9834041c91596af83fa15768321cdc7290880b commit 7a9834041c91596af83fa15768321cdc7290880b Author: Rick Macklem AuthorDate: 2025-08-09 20:33:53 +0000 Commit: Rick Macklem CommitDate: 2025-08-09 20:33:53 +0000 vfs: Put the definition of COPY_FILE_RANGE_CLONE in unistd.h kib@ noted that having COPY_FILE_RANGE_CLONE defined in vnode.h was inappropriate, since it is meant to be used from user space as well as kernel space. This patch moves it into sys/unistd.h and reverts the addition of it in vnode.h. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D51838 Fixes: 37b2cb5ecb0f ("vfs: Add support for file cloning to VOP_COPY_FILE_RANGE") --- sys/sys/unistd.h | 9 +++++++++ sys/sys/vnode.h | 17 ++++------------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h index 7ab2f021e408..5743dc1c8033 100644 --- a/sys/sys/unistd.h +++ b/sys/sys/unistd.h @@ -216,6 +216,15 @@ #define CLOSE_RANGE_CLOEXEC (1<<2) #define CLOSE_RANGE_CLOFORK (1<<3) +/* + * copy_file_range flags visible to user space. + * High order 8 bits reserved for kernel flags. + * Allocate from bit 23 down, to try and avoid conflicts with + * future Linux flags. + */ +#define COPY_FILE_RANGE_CLONE 0x00800000 /* Require cloning. */ +#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) + #endif /* __BSD_VISIBLE */ #endif /* !_SYS_UNISTD_H_ */ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 8080e9edd8c3..074769d55c2d 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -397,21 +397,8 @@ struct vattr { */ #define VLKTIMEOUT (hz / 20 + 1) -/* copy_file_range flags */ -#define COPY_FILE_RANGE_KFLAGS 0xff000000 - -/* - * copy_file_range flags visible to user space. - * Allocate high bits first, to try and avoid conflicting with Linux. - */ -#define COPY_FILE_RANGE_CLONE 0x00800000 /* Require cloning. */ -#define COPY_FILE_RANGE_USERFLAGS (COPY_FILE_RANGE_CLONE) - #ifdef _KERNEL -/* copy_file_range flags only usable in the kernel */ -#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ - #ifdef MALLOC_DECLARE MALLOC_DECLARE(M_VNODE); #endif @@ -634,6 +621,10 @@ typedef void vop_getpages_iodone_t(void *, vm_page_t *, int, int); #define VN_OPEN_INVFS 0x00000008 #define VN_OPEN_WANTIOCTLCAPS 0x00000010 +/* copy_file_range kernel flags */ +#define COPY_FILE_RANGE_KFLAGS 0xff000000 +#define COPY_FILE_RANGE_TIMEO1SEC 0x01000000 /* Return after 1sec. */ + /* * Public vnode manipulation functions. */ From nobody Sat Aug 9 21:20:10 2025 X-Original-To: dev-commits-src-main@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 4bzv1k2syqz64QjL; Sat, 09 Aug 2025 21:20: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzv1k25xdz3RGW; Sat, 09 Aug 2025 21:20:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754774410; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6m3wvFjXEp+ko6Ty7f1VjQhP0WPQplH8DSntthv6AiE=; b=Su+vZvdL0xKVFWPs+pErSfGeXr5BM2HpNDSAtbv9SEAcKxA1gikH5NceRTSF5AVKMEzS1H 0WQCm7jjXGw8IVSNoExLreDncrpCj5WrUmLEvZxwZ1SLh5UIIHbt+ZHG+B77nZ/S/59nxd erdmORuKPfsS2HOkSAoUyZ0j9vUpUf1Wde7ikb28sIjvs8u8p2aeiAlbcOiED3um7+WPEc yU0RGo8/QL9+0m+/0l/khzm42SB55Uiy7V18obJXBKVZIP5LmnxepE3s9XvppKjyqb40Cr S1Ih3eVh+IKvJWVGY3k1m959OxXN6KsmeWTF2EtAkveoWBF2JU4GVRLVW8Lkyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754774410; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6m3wvFjXEp+ko6Ty7f1VjQhP0WPQplH8DSntthv6AiE=; b=Opm7XqKa4BI759BLg8HaU9/3GYatmte5vK+texwarlLuVBOw9D0t3bW+Ty98UqBNrPYBxc c7YxsRypVz/lF/AQZ/nxYG9iEXmfkvACvcGtDGnXVYQF8FNzYEElq1LpBijIMsulzEy7/i ovDhXIChiUYQ5Cii82BXIu61Af+XNT7i8c9L42xeZbHTwD4ZgdY2acV3p995hDzavYo+IZ TL+IijvjXYrUcIMwVHIhsaHF1kB3jOLsfrSGPJ4XJIW/9BYE7wtUG88Ou5ne+fQN3s4tNp 2Rxc7MQsDeFImZttDhbzywww8avzls3vNe2HVU6BU4At5l4iC/s8BH5nNztfRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754774410; a=rsa-sha256; cv=none; b=OftPwF6QqkoEO3JQtzyAxQOaBpWHNnpcz2ZUGEOMffuEy21z7hz/jZ8OBwDGUU/Xnmgj5i K//sL12CTU5syAvJ652Kh9oVo9Wwp4sJP9cX8QSXpUNxFGUSlVUfu/wTrGf4iq7COc57GD I4S4BBCCVpwVS6jNGFGCxFbcbYtg5Omx9ddzNBCV62bDdbL01mFumt5wecmiT6mbIvqn7Y BYtCsckaOrUz5z2vI/syacFHbPBoy9CElAhTPtRlboM6w5qjPYUGoNPtMBwzPaxnE1rEWK QlUWniT4n13Eo4CfNXWawqWI/oHLn6cgryrI8UV2+wEA1XCGFSplDclRvxFjow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzv1k1KNqzdZp; Sat, 09 Aug 2025 21:20:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579LKAXn005342; Sat, 9 Aug 2025 21:20:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579LKALK005334; Sat, 9 Aug 2025 21:20:10 GMT (envelope-from git) Date: Sat, 9 Aug 2025 21:20:10 GMT Message-Id: <202508092120.579LKALK005334@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 4046ad6bb0ee - main - vfs_syscalls.c: Fix handling of offset args for copy_file_range List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4046ad6bb0ee542a42d89a48a7d6a56564ed7f33 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=4046ad6bb0ee542a42d89a48a7d6a56564ed7f33 commit 4046ad6bb0ee542a42d89a48a7d6a56564ed7f33 Author: Rick Macklem AuthorDate: 2025-08-09 21:15:07 +0000 Commit: Rick Macklem CommitDate: 2025-08-09 21:16:18 +0000 vfs_syscalls.c: Fix handling of offset args for copy_file_range Commit 197997a broke handling of the offset arguments to copy_file_range() when specified non-NULL. The code fails to update the offsets and, as such, a loop like: do { len = copy_file_range(infd, &inpos, outfd, &outpos, SSIZE_MAX, 0); } while (len > 0); becomes an infinite loop, just doing the same copy over and over again. This patch fixes it. The clause "(foffsets_locked || foffsets_set)" in the if is not actually needed for correctness, but I thought it made the code a little more readable and might avoid some static analyzer from throwing a "used before being set" for the savinoff and savoutoff variables. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D51845 MFC after: 2 weeks Fixes: 197997a4c36d ("file: Fix offset handling in kern_copy_file_range()") --- sys/kern/vfs_syscalls.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index c64618036733..b805e147bd62 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -5050,11 +5050,12 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, size_t retlen; void *rl_rcookie, *rl_wcookie; off_t inoff, outoff, savinoff, savoutoff; - bool foffsets_locked; + bool foffsets_locked, foffsets_set; infp = outfp = NULL; rl_rcookie = rl_wcookie = NULL; foffsets_locked = false; + foffsets_set = false; error = 0; retlen = 0; @@ -5122,6 +5123,8 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, } foffset_lock_pair(infp1, &inoff, outfp1, &outoff, 0); foffsets_locked = true; + } else { + foffsets_set = true; } savinoff = inoff; savoutoff = outoff; @@ -5180,11 +5183,12 @@ out: vn_rangelock_unlock(invp, rl_rcookie); if (rl_wcookie != NULL) vn_rangelock_unlock(outvp, rl_wcookie); + if ((foffsets_locked || foffsets_set) && + (error == EINTR || error == ERESTART)) { + inoff = savinoff; + outoff = savoutoff; + } if (foffsets_locked) { - if (error == EINTR || error == ERESTART) { - inoff = savinoff; - outoff = savoutoff; - } if (inoffp == NULL) foffset_unlock(infp, inoff, 0); else @@ -5193,6 +5197,9 @@ out: foffset_unlock(outfp, outoff, 0); else *outoffp = outoff; + } else if (foffsets_set) { + *inoffp = inoff; + *outoffp = outoff; } if (outfp != NULL) fdrop(outfp, td); From nobody Sat Aug 9 22:05:09 2025 X-Original-To: dev-commits-src-main@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 4bzw1d3RyVz64W0H; Sat, 09 Aug 2025 22:05: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzw1d2gtTz3Tv4; Sat, 09 Aug 2025 22:05:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754777109; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uzAUFt3vvkpzOT8Co8rudsu3uy4gsHnXXHzbTXtCFio=; b=Xka7JnfKVX1YwZVpb1HJ24hdZC7RNeUjWGNDVJOh0msd03YXN2bKoneFZF13beeoW3l65q K2NMI70QTL0hII/Vdy5GlxEZVsSzjhvZpu/u2x8Rd1GIuC/4ZhZWXvbEwAQq4sP3hVkGCl iuWOYg3/HXqaX5IP76PWXkN/p0kRWv+Xbi+QfKQ16TaR6Tnba+NXSRvl39o06SUKA7xhMd 80yraLfRMR63kPGtHxzQ8GcCuD1a5/GdY3l7Spyh4kRTkDp6rFgrgllYAqlqZ/WSI8mHpr YFyNhtzb67WEde5gwsMgWF9MBhzbisTj+6QypTGjnqRNmnEYvfOpIrpQBmgnHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754777109; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uzAUFt3vvkpzOT8Co8rudsu3uy4gsHnXXHzbTXtCFio=; b=kJp9TMQFGXoQJis3SLLLszQXtQQs24xrOIqnBNqbFhzh6y4E7KwTTPxzb28RVJVJaXrjJd 9v1hB55XA520vvabmMYqE84zbEsN6uEGfLz1H0wsFi3W1dTbSpwO1DrWxrPSp4VvyxqE6T Ujtq4SapoG/AZPJJBfq3KsAcgw38dz7rJDAUeprcZ5AkMUI3gQ6MEBB78Nk9qrUOw/61k8 hYkTKmR8fXi89Ty430C86FSdex/+8/9VMPU9J8lmlwogTcKknQ5JAjLfAucPdtXAK7ijiz hAuoEaVc95Pn2YnsFwQ1AykrLDChKLBnueQMCuH+lqArdtmWIt4UqwbhBa8nwQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754777109; a=rsa-sha256; cv=none; b=IVZdn+/5whWxjnShzvcDFiIxtFF+nhcSSgCR4IcGL/qtBPc2g2H/u3bZEaHWFsgG6cEl2U f9l7RXxwkz12gUDGuvGvH3u/X1E/qYexu0IkfOlGtHOZ6loLn8NOKb2d0yElWr4wsAH73f MrOncOL+E8Htmp/j8SPLZ8LuwYx0yQU7qcSmwXnLuARPhZlf3qIzi9AMpHRjYrZqXpaRKz sUP/gCqctfGvYrlkpZod4Q7EFdFBd5xVo+d9+05b8yWgz1TH9CUfgxYhUQSR2JvpdJ4lJm iw+9Py+M5v8yXHSOp8FgEODgYpXlnBPUzhiKGXokKG0NJE0FWxD1/rUxtrxiZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzw1d20DZzfvV; Sat, 09 Aug 2025 22:05:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579M59qs093839; Sat, 9 Aug 2025 22:05:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579M59lj093836; Sat, 9 Aug 2025 22:05:09 GMT (envelope-from git) Date: Sat, 9 Aug 2025 22:05:09 GMT Message-Id: <202508092205.579M59lj093836@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: e8b37e754589 - main - timerfd_read(): stop setting td_rtcgen List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e8b37e754589c911fb7cdc706ba7c49a5bfb7175 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e8b37e754589c911fb7cdc706ba7c49a5bfb7175 commit e8b37e754589c911fb7cdc706ba7c49a5bfb7175 Author: Konstantin Belousov AuthorDate: 2025-08-08 22:49:28 +0000 Commit: Konstantin Belousov CommitDate: 2025-08-09 22:04:50 +0000 timerfd_read(): stop setting td_rtcgen The sleep is not time-bound. More, setting td_rtcgen and not clearing it would cause future sleeps to be spuriously interrupted. Reviewed by: imp, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D51836 --- sys/kern/sys_timerfd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index ab7e048a2ab1..565ab3ad6ee6 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -206,7 +206,6 @@ retry: mtx_unlock(&tfd->tfd_lock); return (EAGAIN); } - td->td_rtcgen = atomic_load_acq_int(&rtc_generation); error = mtx_sleep(&tfd->tfd_count, &tfd->tfd_lock, PCATCH, "tfdrd", 0); if (error == 0) { From nobody Sat Aug 9 22:19:19 2025 X-Original-To: dev-commits-src-main@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 4bzwLG6270z64XPG; Sat, 09 Aug 2025 22:19:34 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzwLG2BT5z3W55; Sat, 09 Aug 2025 22:19:34 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 579MJJwr070741; Sun, 10 Aug 2025 01:19:22 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 579MJJwr070741 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 579MJJU4070740; Sun, 10 Aug 2025 01:19:19 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 10 Aug 2025 01:19:19 +0300 From: Konstantin Belousov To: Robert Clausecker Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 9f4eb7679648 - main - man/man7: drop i386 from simd(7) Message-ID: References: <202508092014.579KECVR086230@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508092014.579KECVR086230@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4bzwLG2BT5z3W55 X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Sat, Aug 09, 2025 at 08:14:12PM +0000, Robert Clausecker wrote: > The branch main has been updated by fuz: > > URL: https://cgit.FreeBSD.org/src/commit/?id=9f4eb767964832efee583d966dd41212725e5413 > > commit 9f4eb767964832efee583d966dd41212725e5413 > Author: Robert Clausecker > AuthorDate: 2025-07-29 20:16:05 +0000 > Commit: Robert Clausecker > CommitDate: 2025-08-09 20:13:28 +0000 > > man/man7: drop i386 from simd(7) Why? > > MFC: no > --- > share/man/man7/simd.7 | 43 +++++++++++++++++++------------------------ > 1 file changed, 19 insertions(+), 24 deletions(-) > > diff --git a/share/man/man7/simd.7 b/share/man/man7/simd.7 > index d5092348d9b3..2c3ed3de411e 100644 > --- a/share/man/man7/simd.7 > +++ b/share/man/man7/simd.7 > @@ -24,7 +24,7 @@ > .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > .\" SUCH DAMAGE > . > -.Dd November 18, 2024 > +.Dd July 29, 2025 > .Dt SIMD 7 > .Os > .Sh NAME > @@ -50,48 +50,43 @@ can be used to override this mechanism. > .Pp > Enhanced functions are present for the following architectures: > .Bl -column FUNCTION_________ aarch64_ arm_ amd64_ i386_ ppc64_ -offset indent > -.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em I386 Ta Em PPC64 > -.It bcmp Ta A Ta Ta S1 Ta S > -.It bcopy Ta A Ta S Ta S Ta S Ta SV > -.It bzero Ta A Ta S Ta S Ta S > -.It div Ta Ta Ta S Ta S > +.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em PPC64 > +.It bcmp Ta A Ta Ta S1 > +.It bcopy Ta A Ta S Ta S Ta SV > +.It bzero Ta A Ta S Ta S > +.It div Ta Ta Ta S > .It index Ta A Ta Ta S1 > -.It ldiv Ta Ta Ta S Ta S > +.It ldiv Ta Ta Ta S > .It lldiv Ta Ta Ta S > .It memchr Ta A Ta Ta S1 > -.It memcmp Ta A Ta S Ta S1 Ta S > +.It memcmp Ta A Ta S Ta S1 > .It memccpy Ta A Ta Ta S1 > -.It memcpy Ta A Ta S Ta S Ta S Ta SV > -.It memmove Ta A Ta S Ta S Ta S Ta SV > +.It memcpy Ta A Ta S Ta S Ta SV > +.It memmove Ta A Ta S Ta S Ta SV > .It memrchr Ta A Ta Ta S1 > -.It memset Ta A Ta S Ta S Ta S > -.It rindex Ta A Ta Ta S1 Ta S > +.It memset Ta A Ta S Ta S > +.It rindex Ta A Ta Ta S1 > .It stpcpy Ta A Ta Ta S1 > .It stpncpy Ta Ta Ta S1 > -.It strcat Ta A Ta Ta S1 Ta S > -.It strchr Ta A Ta Ta S1 Ta S > +.It strcat Ta A Ta Ta S1 > +.It strchr Ta A Ta Ta S1 > .It strchrnul Ta A Ta Ta S1 > -.It strcmp Ta A Ta S Ta S1 Ta S > -.It strcpy Ta A Ta Ta S1 Ta S Ta S2 > +.It strcmp Ta A Ta S Ta S1 > +.It strcpy Ta A Ta Ta S1 Ta S2 > .It strcspn Ta S Ta Ta S2 > .It strlcat Ta A Ta Ta S1 > .It strlcpy Ta A Ta Ta S1 > .It strlen Ta A Ta S Ta S1 > .It strncat Ta A Ta Ta S1 > -.It strncmp Ta A Ta S Ta S1 Ta S > -.It strncpy Ta Ta Ta S1 Ta Ta S2 > +.It strncmp Ta A Ta S Ta S1 > +.It strncpy Ta Ta Ta S1 Ta S2 > .It strnlen Ta A Ta Ta S1 > -.It strrchr Ta A Ta Ta S1 Ta S > +.It strrchr Ta A Ta Ta S1 > .It strpbrk Ta S Ta Ta S2 > .It strsep Ta S Ta Ta S2 > .It strspn Ta S Ta Ta S2 > -.It swab Ta Ta Ta Ta S > .It timingsafe_bcmp Ta A Ta Ta S1 > .It timingsafe_memcmp Ta S Ta Ta S > -.It wcschr Ta Ta Ta Ta S > -.It wcscmp Ta Ta Ta Ta S > -.It wcslen Ta Ta Ta Ta S > -.It wmemchr Ta Ta Ta Ta S > .El > .Pp > .Sy S Ns :\ scalar (non-SIMD), From nobody Sun Aug 10 01:56:22 2025 X-Original-To: dev-commits-src-main@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 4c018Q3lVXz64v65; Sun, 10 Aug 2025 01:56: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c018Q36P3z3slW; Sun, 10 Aug 2025 01:56:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754790982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=78EOEmA+npyCqGtZDelGwyq6b6kAD3p3upcCshgEPWs=; b=Ey+NiqiHS+ax0I2LOoTIlNmWFKUD+RAnE160VylT59QjshT4MJBvUJ7qOhV68LGhUabasN oQcOHmrdo0VV7K2L3UhrSt8L7MBBxXRLJVLvx5jOswkgB1NHTWMTKJ8da5GPkgDKwOsv0p /OyLk4iIIgv9HeySExi1koLaK9a0YPE/nL8UvjKLC1B6VZqs3ysYht++kzr7Ko2E3YpUkV NzTQjDx6ixhnzdiRQRbn+B51VAp0P6EvX9LGBKmyNH8uNzf19RByfZ7evCN+ew8hLHtMQS BvCyCDbBfML9Z14qHSmDwwajvMmfAyokqHBvLl987PZpAnDAQeshd5ZPxPuo9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754790982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=78EOEmA+npyCqGtZDelGwyq6b6kAD3p3upcCshgEPWs=; b=ieQzH05669JaiSYq7X3XE0ire8YKrMMy2D1o/XOCqTZgARBQt2Vy2pIk30a6oakY24iLrY 2dJY7MS6lKntvpTq+2UlNY+71rAd1QA4Bqk9kZqdsC7CZRqSdcZTdzvo/cESPn+sg2vaSj HCIDd8McbDb/0oADZPPQ4AUDBu+4MBPj1jcbqBZTbkg7zgnVGGdqOaP9GNw0gQpSjzNfJo YsyavkJK23c1sKQ+KiDVFHJJmcipcgVCTW4PdvEy6w0Ascg1+xoy3Yg4W+4wgZ4rf+azgS 5n4Xc1x+6aVuPkBfP8dj4d067BDBsgHwvNfH8pBsoQgth5hKWuZFtaoDE6NHmA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754790982; a=rsa-sha256; cv=none; b=s1q9dm+NnLAH9FbPfS+eknIS7KuDJHlCIdzIL/dfTh1mfAuCwB+2dWnYbbe4oyRbxhoX44 ybJp63xyB9iaBYqq/LPb+v4jdDwEO1zRc1hewtOasq2FubB+oAnM1qUsoCV1CTac3ZWBog KZ1jMbDjC/UgiE5+3Hh6Ob+FHHyLyqx37Y8v+3oa1gEtpGVoMPCAdd/AEj+3PXM6QGC4gz 3LOPNDRuI7UrNtXH2BJcHKGXvTIItVE6zhOVsv+H2BzDr02pFfail8ecpbOOzfzg/fXilp FKGuP67ISBx3SVEPObP3+Dzc+mZ3/G7kr08PSbCGHgZ1T85jL/6TYjbVm0lV5Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c018Q2bnNzmpJ; Sun, 10 Aug 2025 01:56:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A1uMPw022608; Sun, 10 Aug 2025 01:56:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A1uMoa022605; Sun, 10 Aug 2025 01:56:22 GMT (envelope-from git) Date: Sun, 10 Aug 2025 01:56:22 GMT Message-Id: <202508100156.57A1uMoa022605@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: bc598959090d - main - autofs: Plug memory leak List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc598959090d43aa0fc6b91355979016a9449041 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=bc598959090d43aa0fc6b91355979016a9449041 commit bc598959090d43aa0fc6b91355979016a9449041 Author: Enji Cooper AuthorDate: 2025-08-10 01:52:31 +0000 Commit: Warner Losh CommitDate: 2025-08-10 01:54:42 +0000 autofs: Plug memory leak Originally, this was an extra free, but ngie@ suggested this change. Since that's the whole thing, I've set her as the author for this ancient review instead of trix@juniper.net. Sugggested by: ngie Differential Revision: https://reviews.freebsd.org/D10063 Sponsored by: Netflix --- usr.sbin/autofs/common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c index 18756752876c..6b98214162ae 100644 --- a/usr.sbin/autofs/common.c +++ b/usr.sbin/autofs/common.c @@ -149,7 +149,7 @@ create_directory(const char *path) error = mkdir(partial, 0755); if (error != 0 && errno != EEXIST) { log_warn("cannot create %s", partial); - return; + break; } } From nobody Sun Aug 10 03:16:17 2025 X-Original-To: dev-commits-src-main@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 4c02wd5VkGz63YPc; Sun, 10 Aug 2025 03:16: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c02wd2z4Vz42MC; Sun, 10 Aug 2025 03:16:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754795777; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TQDa9vMneotL7UAQRvRY2+5av3upLwKQqJUsRclT77k=; b=Z3squOzkWu+B+2v7Y5dSBbrOR3Eq700w3etsj8l3ZruW9n2HFfzJHRUAzXecidoaEpHEjb +xx6VOVnJWsW37ZPI3Nd3x2oz/rPzac0IgXYNeNA7kF3bcbDmznRMSDFFM68LDCJT4MWZ5 ztWL8hDxfia0sbh/EMYCIJDaufCRPy4BtA83LdBL4y5DpOGKUdWeupVux+rdJoreL6/Pn0 CzU/+zVAh/wqArkiTIPkSrExcPsBK/mfOe4RIayVvf3BOh6pNB5l5Ra4pJWUYuw3XXS9mG G6SvM34zEswvkDRHRlB1z5De+DW3ZJzHIJS4QLgjgOB5xIebB6nxXZ7AImD+NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754795777; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TQDa9vMneotL7UAQRvRY2+5av3upLwKQqJUsRclT77k=; b=Klwu9hSF4QBc/c4T1BXm/dUEgpxWZ+RGYneWjz02vt4kTEln99MYRt2tpd39jVZ7Qlu2DL yPxb3al+2FikgwSWyJT28z6ZV+Nbse0pwE92Vr68y2eJbvA+XEsqCrHZPxHsJtE6hFGobD HX6T/UW4nFCrDxDpSyrEpp1U6LMDJgPzdR1kaqBWTqGpxN1Tapyv3hYmJbkpsA8cXf2j0O 8+cCVGhnqHpMlJDwmW46r8PWebC4e4eUelYMaRNksuTnr2ZhF7txovzK1X2ekI6ijXITBI kNe9jYakR7+46Vj7DlBCfggVZoaiO0kFY0WKtNBFvFlHVuZai/etvEJVrtNTeA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754795777; a=rsa-sha256; cv=none; b=kv6aXepzKcqAs/jmKq3HYjWNHnORQnYrroPLabGyirC0wPIWAmvBIvFz6WfnbFXegp0j1k Y2s4s+7rqR1gBiB6YJo5QbCjuNpUAjz4UolzmdMpiMxxFy45xtVnLAwSZpcZvKIz77MHi9 c5T9TGHnWd/cyaFkboPx9dAgx1DlqM1gEVG6CBygMJQy0nbcHNds5Yajpa1nBHK+0mhcNV I0YFQG7+S34pzBH9nIS9W+oKc5SiPJ2qv3tyz9Rs1pdZQ2gx7ykaRjB2aOq2kP6dpBPnmm TOneJTpSw1odT3OwxUYk6h5QdhfTHLy5TfUDHoVY54oB/Ash/NItedruGqRTqg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c02wd2Ygxzq3Q; Sun, 10 Aug 2025 03:16:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A3GHxO074795; Sun, 10 Aug 2025 03:16:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A3GHYk074792; Sun, 10 Aug 2025 03:16:17 GMT (envelope-from git) Date: Sun, 10 Aug 2025 03:16:17 GMT Message-Id: <202508100316.57A3GHYk074792@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: ec99803ad70a - main - bhyve: Populate the device version from the backend List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: ec99803ad70a757cc104334f745a2985cf60e948 Auto-Submitted: auto-generated The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=ec99803ad70a757cc104334f745a2985cf60e948 commit ec99803ad70a757cc104334f745a2985cf60e948 Author: ShengYi Hung AuthorDate: 2025-07-23 16:19:40 +0000 Commit: ShengYi Hung CommitDate: 2025-08-10 03:15:41 +0000 bhyve: Populate the device version from the backend The pci_xhci driver requires the USB device version to be known before allocating a hub port. To support this, we split the original xHCI initialization into two phases: 1. Probe: Parse the nvlist and determine the device version. 2. Init: Complete initialization and set up the softc details. This change ensures proper hub port allocation based on accurate device version. Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51478 --- usr.sbin/bhyve/pci_xhci.c | 35 +++++++++++++++++++++++++---------- usr.sbin/bhyve/usb_emul.h | 4 +++- usr.sbin/bhyve/usb_mouse.c | 13 +++++++++++-- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/usr.sbin/bhyve/pci_xhci.c b/usr.sbin/bhyve/pci_xhci.c index 0871bbb87fe5..ff12e40359e2 100644 --- a/usr.sbin/bhyve/pci_xhci.c +++ b/usr.sbin/bhyve/pci_xhci.c @@ -406,7 +406,7 @@ pci_xhci_usbcmd_write(struct pci_xhci_softc *sc, uint32_t cmd) * XHCI 4.19.3 USB2 RxDetect->Polling, * USB3 Polling->U0 */ - if (dev->dev_ue->ue_usbver == 2) + if (dev->hci.hci_usbver == 2) port->portsc |= XHCI_PS_PLS_SET(UPS_PORT_LS_POLL); else @@ -2590,7 +2590,7 @@ pci_xhci_reset_port(struct pci_xhci_softc *sc, int portn, int warm) port->portsc |= XHCI_PS_PED | XHCI_PS_SPEED_SET(dev->hci.hci_speed); - if (warm && dev->dev_ue->ue_usbver == 3) { + if (warm && dev->hci.hci_usbver == 3) { port->portsc |= XHCI_PS_WRC; } @@ -2620,7 +2620,7 @@ pci_xhci_init_port(struct pci_xhci_softc *sc, int portn) port->portsc = XHCI_PS_CCS | /* connected */ XHCI_PS_PP; /* port power */ - if (dev->dev_ue->ue_usbver == 2) { + if (dev->hci.hci_usbver == 2) { port->portsc |= XHCI_PS_PLS_SET(UPS_PORT_LS_POLL) | XHCI_PS_SPEED_SET(dev->hci.hci_speed); } else { @@ -2785,8 +2785,8 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) cookie = NULL; while ((name = nvlist_next(slots_nvl, &type, &cookie)) != NULL) { - if (usb2_port == ((sc->usb2_port_start) + XHCI_MAX_DEVS/2) || - usb3_port == ((sc->usb3_port_start) + XHCI_MAX_DEVS/2)) { + if (usb2_port == ((sc->usb2_port_start) + XHCI_MAX_DEVS / 2) || + usb3_port == ((sc->usb3_port_start) + XHCI_MAX_DEVS / 2)) { WPRINTF(("pci_xhci max number of USB 2 or 3 " "devices reached, max %d", XHCI_MAX_DEVS/2)); goto bad; @@ -2834,12 +2834,25 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) dev->hci.hci_intr = pci_xhci_dev_intr; dev->hci.hci_event = pci_xhci_dev_event; dev->hci.hci_speed = USB_SPEED_MAX; + dev->hci.hci_usbver = -1; - if (ue->ue_usbver == 2) { + devsc = ue->ue_probe(&dev->hci, nvl); + if (devsc == NULL) { + free(dev); + goto bad; + } + dev->dev_sc = devsc; + + if (dev->hci.hci_usbver == -1) + dev->hci.hci_usbver = ue->ue_usbver; + + if (dev->hci.hci_usbver == 2) { if (usb2_port == sc->usb2_port_start + XHCI_MAX_DEVS / 2) { WPRINTF(("pci_xhci max number of USB 2 devices " "reached, max %d", XHCI_MAX_DEVS / 2)); + free(dev->dev_sc); + free(dev); goto bad; } dev->hci.hci_port = usb2_port; @@ -2849,6 +2862,8 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) XHCI_MAX_DEVS / 2) { WPRINTF(("pci_xhci max number of USB 3 devices " "reached, max %d", XHCI_MAX_DEVS / 2)); + free(dev->dev_sc); + free(dev); goto bad; } dev->hci.hci_port = usb3_port; @@ -2857,13 +2872,10 @@ pci_xhci_parse_devices(struct pci_xhci_softc *sc, nvlist_t *nvl) XHCI_DEVINST_PTR(sc, dev->hci.hci_port) = dev; dev->hci.hci_address = 0; - devsc = ue->ue_init(&dev->hci, nvl); - if (devsc == NULL) { + if (ue->ue_init(dev->dev_sc)) goto bad; - } dev->dev_ue = ue; - dev->dev_sc = devsc; if (dev->hci.hci_speed == USB_SPEED_MAX) dev->hci.hci_speed = ue->ue_usbspeed; @@ -2885,6 +2897,8 @@ portsfinal: bad: for (i = 1; i <= XHCI_MAX_DEVS; i++) { + if (XHCI_DEVINST_PTR(sc, i) != NULL) + free(XHCI_DEVINST_PTR(sc, i)->dev_sc); free(XHCI_DEVINST_PTR(sc, i)); } @@ -3232,6 +3246,7 @@ pci_xhci_snapshot(struct vm_snapshot_meta *meta) SNAPSHOT_VAR_OR_LEAVE(dev->hci.hci_address, meta, ret, done); SNAPSHOT_VAR_OR_LEAVE(dev->hci.hci_port, meta, ret, done); SNAPSHOT_VAR_OR_LEAVE(dev->hci.hci_speed, meta, ret, done); + SNAPSHOT_VAR_OR_LEAVE(dev->hci.hci_usbver, meta, ret, done); } SNAPSHOT_VAR_OR_LEAVE(sc->usb2_port_start, meta, ret, done); diff --git a/usr.sbin/bhyve/usb_emul.h b/usr.sbin/bhyve/usb_emul.h index 85dedfeacd3b..43b6b53b5205 100644 --- a/usr.sbin/bhyve/usb_emul.h +++ b/usr.sbin/bhyve/usb_emul.h @@ -52,7 +52,8 @@ struct usb_devemu { int ue_usbspeed; /* usb device speed */ /* instance creation */ - void *(*ue_init)(struct usb_hci *hci, nvlist_t *nvl); + void *(*ue_probe)(struct usb_hci *hci, nvlist_t *nvl); + int (*ue_init)(void *sc); /* handlers */ int (*ue_request)(void *sc, struct usb_data_xfer *xfer); @@ -86,6 +87,7 @@ struct usb_hci { int hci_address; int hci_port; int hci_speed; + int hci_usbver; }; /* diff --git a/usr.sbin/bhyve/usb_mouse.c b/usr.sbin/bhyve/usb_mouse.c index a37941c0cd9d..82b1159d5f61 100644 --- a/usr.sbin/bhyve/usb_mouse.c +++ b/usr.sbin/bhyve/usb_mouse.c @@ -295,20 +295,28 @@ umouse_event(uint8_t button, int x, int y, void *arg) } static void * -umouse_init(struct usb_hci *hci, nvlist_t *nvl __unused) +umouse_probe(struct usb_hci *hci, nvlist_t *nvl __unused) { struct umouse_softc *sc; sc = calloc(1, sizeof(struct umouse_softc)); sc->hci = hci; + return (sc); +} + +static int +umouse_init(void *scarg) +{ + struct umouse_softc *sc = (struct umouse_softc *)scarg; + sc->hid.protocol = 1; /* REPORT protocol */ pthread_mutex_init(&sc->mtx, NULL); pthread_mutex_init(&sc->ev_mtx, NULL); console_ptr_register(umouse_event, sc, 10); - return (sc); + return (0); } #define UREQ(x,y) ((x) | ((y) << 8)) @@ -811,6 +819,7 @@ static struct usb_devemu ue_mouse = { .ue_emu = "tablet", .ue_usbver = 3, .ue_usbspeed = USB_SPEED_HIGH, + .ue_probe = umouse_probe, .ue_init = umouse_init, .ue_request = umouse_request, .ue_data = umouse_data_handler, From nobody Sun Aug 10 04:11:57 2025 X-Original-To: dev-commits-src-main@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 4c048t0PMQz63fTC; Sun, 10 Aug 2025 04:11:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c048s6ZGRz47Qm; Sun, 10 Aug 2025 04:11:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j7lYi6FfuuU8z25VFHjCV5qGLylvNtJ79POe7VSom28=; b=vezvokLq9mA/vj0w5wyWfrF2v+tyXGrbeltkxSq4gdg44Sb8WrBKxLUPhNXipZSbb8Do+K sy8DL3hxPE1l+CWQ+WzH4ULOzynD2CYMnVmyjdaD/rKZAD+SwgUMtnYhl6D6ONPjnN3gJs aQFvs7vjDZV/0+Kq/UVEnRHcJiIB7dRUZu++wnS5OidGGX7vvQxWKQSCUZjFyrS+ITI29V J83KhJ8zE5UPfQsyd9LssRDKC5w2biIKGGO4pkKRVrhpjWAEtbPEtnTQfvFp3Lq3iGDswe qLCXdz4wzaW8PCXyTyBHB+XvqnWCo0hvPiwAnaKhgmwP74UApyk6wmF8klVZ9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j7lYi6FfuuU8z25VFHjCV5qGLylvNtJ79POe7VSom28=; b=UDUGWNI/3gsn9y+zL1SJ4mHkYHGufEFmG+WPKw7ruGhHF6hN/9+oDPiRt0hLNl90XXvLBy IddrTzMt8huJw3tDdvBDyT4au0iyqDilGI8g77Zc9NKap+6gKHB4wsNM23RvzujpUlBiFr JPnDv20/oOlLPQxdPUayYh45p8RXLWoHknZElkWwiHpZz2CFA0LtenLMbOc4J7dxIAaQjV 3oocY337IoD5VUtB4L0F9xKjrW1beMeoX0wHAiCazFJYa6T/r0++C8KDMLxDdbckGT3FvE KxvspSq8bz8y92ix8tGi5z9rk5pBNUKPNPxtmoeXTGl7L4X7Kt+EHANCQpXFQQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754799118; a=rsa-sha256; cv=none; b=eSQWxEaQNbIxq3mgtXuhIyzML5cV7RPMm6nvdGMWGtHndXGdBsMv5Ty5oPrXuMYE9uealx XfhGrGhdOee8rsL4RmDWOs3eMQBFrOTFO2OteMFHF+rH4RgXShziZ5U3Ag9RWZRdBqJawW y+CWY11W8UMCydZlCPc4HQJ8IFa8LRHbak1aF8f5latO2so6W7DPEuVA/P+nji6bw2r2I+ 605jSAh7UV737UokT0ISI1kJfIQ3tbM7tw3shtyzOzYtcd08+cXlxWv5feGwu/IJtxOt8W 3arltN2+lXVoXn2wKa1HLtP22KdjFnEA3l1F4mT4WW8xkzxqluPUFKXQ75oKWA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c048s69FXzrSd; Sun, 10 Aug 2025 04:11:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A4BveL085803; Sun, 10 Aug 2025 04:11:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A4BvSR085800; Sun, 10 Aug 2025 04:11:57 GMT (envelope-from git) Date: Sun, 10 Aug 2025 04:11:57 GMT Message-Id: <202508100411.57A4BvSR085800@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 3b908a92b337 - main - types.h: Don't define true/false in C23 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3b908a92b337328a56a5388e7ac4b72dae0d3bba Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=3b908a92b337328a56a5388e7ac4b72dae0d3bba commit 3b908a92b337328a56a5388e7ac4b72dae0d3bba Author: Minsoo Choo AuthorDate: 2025-08-10 02:40:56 +0000 Commit: Warner Losh CommitDate: 2025-08-10 04:11:09 +0000 types.h: Don't define true/false in C23 From C23, bool, false, and true are keywords. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D44666 --- sys/sys/types.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/sys/types.h b/sys/sys/types.h index fd375139a092..8311c1901b7e 100644 --- a/sys/sys/types.h +++ b/sys/sys/types.h @@ -297,9 +297,11 @@ typedef struct vm_page *vm_page_t; #if defined(_KERNEL) || defined(_STANDALONE) #if !defined(__bool_true_false_are_defined) && !defined(__cplusplus) #define __bool_true_false_are_defined 1 +#if __STDC_VERSION__ < 202311L #define false 0 #define true 1 typedef _Bool bool; +#endif /* __STDC_VERSION__ < 202311L */ #endif /* !__bool_true_false_are_defined && !__cplusplus */ #endif /* KERNEL || _STANDALONE */ From nobody Sun Aug 10 04:11:58 2025 X-Original-To: dev-commits-src-main@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 4c048v2gr2z63frr; Sun, 10 Aug 2025 04:11:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c048v0QsWz470m; Sun, 10 Aug 2025 04:11:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rGkONoi7ul8cYx67ry+vK9prAi4nsv8CXvfYKaFMG08=; b=J+JgNyyzbYwHLYdeCvN1Q14RFIWUTnXgxQf+yzihjCVfMqCrI30SSo+iW1xMO25MvaafuC 9/z9dTiQK1Nh8hErNP1ARpZ9jbB5mq/fVsh2047Sy1wgaECcaMTZkpFdXpl1ChzcJNy0WC SIl1f3URJVkdQk8BOHzOi6kzsGZ75y0QFWn73W/4UVWTy5dwrqukKcUkKZ/7zkwh0Hqwb9 jLCMHU3azqO/9cpce6VFGqMr+A7hOKm6Qpg+MgG8vZyiCKeWjafZBxd3ldBwzapiQGRJmz yUoriUB335S92unxXzW6Jq4GAoB947oF5fdoutkAW9mFXc7JOjRSjBfmKkzPCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rGkONoi7ul8cYx67ry+vK9prAi4nsv8CXvfYKaFMG08=; b=a2gq7wTds8G1Ay4gnouZoFZma02tbRoClzXSoZCO9M4Y7yCN6v1FMXVvJIBq+WTsIKlHMF Giy3ektRV2qAolT0oWuLQqobjEAd0l5iKq1TKhlYlNsH6z6oCGsbVOTER4np5uNUwP+pTM bmWUW6JGlpfIK33+FLNDhsuHyuo6FKu2vYr0DzLBCZcNYN0n+gkruCnzuXdZH2Fu+RADNK mEVtQJuBal/6Gt/ZzBq8axNohay7sIdctjVZ8J6FtDxyurkpslN3U7zIyt8QI4Kj2xV/4R HqDauubLRmpsFTPwAAu4qGj87YrhKPAIzNCTVXXH3E4ZJLI0p4Fd5HkgNcjutg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754799119; a=rsa-sha256; cv=none; b=sigzkfYu2QvDtq9lZARZqrUk4Jds7BTszTxhQtf2TkGoq76vzWRGekniypeEZxPVDpzvEb BdGKVPQDXYOzPa5XZ7iFTI1iZvGBYcECJzJbEAyLMM/jwqncD/feeSW5zJVZO63mn8Prme zuq9JZLn+2vgzA7K8F2VAyXUIfND7d5hDo6Bmt/CeiYQq1iN8cp+2P6a5yugM8IJnRnzRC 4PKMZpAhuAEAGJTOoRqrAxfn0KLh+PN8BOBY6W/KflunZgGgjO9op90pQ46DLRsecpJjsx mPtiP4MdjAzgbXOOdeid7UlnHFNpy3trZ2r/pPtohbOATe5Ft5DfsS4o59B+JA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c048v021Wzrfh; Sun, 10 Aug 2025 04:11:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A4BwBn085840; Sun, 10 Aug 2025 04:11:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A4BwDr085837; Sun, 10 Aug 2025 04:11:58 GMT (envelope-from git) Date: Sun, 10 Aug 2025 04:11:58 GMT Message-Id: <202508100411.57A4BwDr085837@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 72170a4174e0 - main - nvmecontrol: Add Micron Vendor Unique SMART logpage support List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 72170a4174e0ba50e349918667973a158a94ed8f Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=72170a4174e0ba50e349918667973a158a94ed8f commit 72170a4174e0ba50e349918667973a158a94ed8f Author: Wanpeng Qian AuthorDate: 2025-08-10 03:11:22 +0000 Commit: Warner Losh CommitDate: 2025-08-10 04:11:09 +0000 nvmecontrol: Add Micron Vendor Unique SMART logpage support Micron 9200 SSD has a 0xca logpage. It is different from other vendors this patch tested on 9200 SSD and works as expected. Product Datasheet can be found here: https://www.micron.com/-/media/client/global/documents/products/data-sheet/ssd/9200_u_2_pcie_ssd.pdf Signed-off-by: Wanpeng Qian Reviewed by: imp Differential Revsion: https://reviews.freebsd.org/D33866 --- sbin/nvmecontrol/modules/Makefile | 5 +- sbin/nvmecontrol/modules/micron/Makefile | 6 ++ sbin/nvmecontrol/modules/micron/micron.c | 129 +++++++++++++++++++++++++++++++ sbin/nvmecontrol/nvmecontrol.8 | 7 +- 4 files changed, 144 insertions(+), 3 deletions(-) diff --git a/sbin/nvmecontrol/modules/Makefile b/sbin/nvmecontrol/modules/Makefile index 70d1ba40a1e2..f3c3572acb34 100644 --- a/sbin/nvmecontrol/modules/Makefile +++ b/sbin/nvmecontrol/modules/Makefile @@ -1,3 +1,6 @@ -SUBDIR= intel wdc samsung +SUBDIR= intel +SUBDIR+=micron +SUBDIR+=samsung +SUBDIR+=wdc .include diff --git a/sbin/nvmecontrol/modules/micron/Makefile b/sbin/nvmecontrol/modules/micron/Makefile new file mode 100644 index 000000000000..3cefd455f711 --- /dev/null +++ b/sbin/nvmecontrol/modules/micron/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +LIB= micron +SRCS= micron.c + +.include diff --git a/sbin/nvmecontrol/modules/micron/micron.c b/sbin/nvmecontrol/modules/micron/micron.c new file mode 100644 index 000000000000..2d4731e7da47 --- /dev/null +++ b/sbin/nvmecontrol/modules/micron/micron.c @@ -0,0 +1,129 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2022 Wanpeng Qian + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvmecontrol.h" + +static void +print_micron_unique_smart(const struct nvme_controller_data *cdata __unused, void *buf, uint32_t size __unused) +{ + uint8_t *walker = buf; + uint8_t *end = walker + 150; + const char *name; + uint64_t raw; + uint8_t normalized; + + static struct kv_name kv[] = + { + { 0xf9, "NAND Writes 1GiB" }, + { 0xfa, "NAND Reads 1GiB" }, + { 0xea, "Thermal Throttle Status" }, + { 0xe7, "Temperature" }, + { 0xe8, "Power Consumption" }, + { 0xaf, "Power Loss Protection" }, + }; + + printf("Vendor Unique SMART Information\n"); + printf("=========================\n"); + /* + * walker[0] = Key + * walker[1,2] = reserved + * walker[3] = Normalized Value + * walker[4] = reserved + * walker[5..10] = Little Endian Raw value + * (or other represenations) + * walker[11] = reserved + */ + while (walker < end) { + name = kv_lookup(kv, nitems(kv), *walker); + normalized = walker[3]; + raw = le48dec(walker + 5); + switch (*walker){ + case 0: + break; + case 0xf9: + /* FALLTHOUGH */ + case 0xfa: + printf("%2X %-24s: %ju GiB\n", *walker, name, (uintmax_t)raw); + break; + case 0xea: + printf("%2X %-24s:", *walker, name); + if (*(walker + 5) == 0) + printf(" inactive\n"); + if (*(walker + 5) == 1) + printf(" active, total throttling time %u mins\n", le32dec(walker + 6)); + break; + case 0xe7: + printf("%2X %-24s: max ", *walker, name); + print_temp_C(le16dec(walker + 5)); + printf(" : min "); + print_temp_C(le16dec(walker + 7)); + printf(" : cur "); + print_temp_C(le16dec(walker + 9)); + break; + case 0xe8: + printf("%2X %-24s: max %u W, min %u W, ave %u W\n", + *walker, name, le16dec(walker + 5), le16dec(walker + 7), le16dec(walker + 9)); + break; + case 0xaf: + printf("%2X %-24s:", *walker, name); + if (normalized == 100) + printf(" success"); + if (normalized == 0) + printf(" failed"); + printf(" %3d\n", normalized); + break; + default: + printf("%2X %-24s: %3d %ju\n", + *walker, name, normalized, (uintmax_t)raw); + break; + } + walker += 12; + } +} + +#define MICRON_LOG_UNIQUE_SMART 0xca + +NVME_LOGPAGE(micron_smart, + MICRON_LOG_UNIQUE_SMART, "micron", "Vendor Unique SMART Information", + print_micron_unique_smart, DEFAULT_SIZE); diff --git a/sbin/nvmecontrol/nvmecontrol.8 b/sbin/nvmecontrol/nvmecontrol.8 index 624a0c93719b..dc757bcf90c3 100644 --- a/sbin/nvmecontrol/nvmecontrol.8 +++ b/sbin/nvmecontrol/nvmecontrol.8 @@ -303,7 +303,8 @@ data associated with that drive. .El .Ss logpage The logpage command knows how to print log pages of various types. -It also knows about vendor specific log pages from hgst/wdc, samsung and intel. +It also knows about vendor specific log pages from HGST/WDC, Samsung, +Micron and Intel. Note that some vendors use the same log page numbers for different data. .Pp .Bl -tag -compact -width "Page 0x00" @@ -328,13 +329,15 @@ Advanced SMART information (WDC/HGST) .It Dv Page 0xc1 Read latency stats (Intel) .It Dv Page 0xc2 -Wite latency stats (Intel) +Write latency stats (Intel) .It Dv Page 0xc5 Temperature stats (Intel) .It Dv Page 0xca Advanced SMART information (Intel) .It Dv Page 0xca Extended SMART information (Samsung) +.It Dv Page 0xca +Vendor Unique SMART information (Micron) .El .Pp Specifying From nobody Sun Aug 10 04:12:00 2025 X-Original-To: dev-commits-src-main@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 4c048x1rGbz63fTL; Sun, 10 Aug 2025 04:12:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c048w1QT2z47B9; Sun, 10 Aug 2025 04:12:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9lLIclIkmz6L0LDmYSPFvO0suDJ0s0OHKeZxEYL8zNg=; b=xYV8q+YtS9mMdC/HU2VUPjOWpKe1SvUXi4R/cOLVWxIA8es76lVdvlXuFaZ65aAzVE5b8m N9IDDeJ82ftCxpiamw/mwk9ulB+sf4YtIss3sf94kBpfJUK1WgGi34nh7fcU12Bj+Q3Qr8 iKePG87Y1wuP3UqHZNd43oC2TrIqcy/Rqy+5Sbg5P9q8kDLeKoCeCXDsdJQYAYfrWiqil8 SeG8tlxKsgszO+3a9yPP0WoY7tT8S2SlU9iVhc8a0caWbjH54CanvPJeBH3Dv1HZDiLRon 6EnrjpXsrEm/Jja97rSeJJnLQR6Zn1djMKWLi+RyzEfBAXovcUd2s6Vn6tBU7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754799120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9lLIclIkmz6L0LDmYSPFvO0suDJ0s0OHKeZxEYL8zNg=; b=Eh/CQDxobptjMAxt7NR7T5gpx8ROqkfKaIM4L8gBhZpCDSQUZz8k/3nqpB6jLdsR8rr3Ta R9GH8ghml6NRkHixD8foMzu4f+w8tHpgHxEbBF0cODlcgxs+byTv4nww+QY/Y63HjHhy46 Ie6XJMy3KoNapKkMqc3XGViYSPN9X5KpOORWKWkBo56+wu2Eq9CKug75/I/6Eyy0z/TaEh ivpObJVFLm0dGLfJGNmM3RrgdPRY6/tmPCItzNDIVQ9dTDVeq7ZVYt/SehbuBb7EOAAbti fCM8WOpaqTGovbKlp8eZAJCoV0a0vZ1T9Qmhpy7//SA5OmK8O2ynlksmFCcCLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754799120; a=rsa-sha256; cv=none; b=tjcayy5HW18ezC6Jp5YHofCsr6XpbAvRP7d3kEE86nvgIVfpZ21kvqhRVwO1pEvy81nOOy tS621ai2DYyAgpkqn1JM/BQgG+GZful4wGgL64RjLFTG3ZYeXLFW741h2sKUi38bLlwjsr 3JHO8FEGr7vJ5sviR1kJOfUXX4pFt2I7chwUukRAwqZY2N8RYfvpcc/e59JfKRLfu6wEIr YdFhA+2UPrp0qGv6Tkk343HJzhAya7JMB+3mZ0n8E+xTSBfLIJE57Wj+Ci3TIEWPhYpNEW K8jtJdFFUM7j3/MuI4+3Cb4jkEddUhub+YR3qgaAX439pJVy3YiZG3F4XAMITA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c048w1001zrlv; Sun, 10 Aug 2025 04:12:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A4C0aU085881; Sun, 10 Aug 2025 04:12:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A4C06I085878; Sun, 10 Aug 2025 04:12:00 GMT (envelope-from git) Date: Sun, 10 Aug 2025 04:12:00 GMT Message-Id: <202508100412.57A4C06I085878@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: fef6c8f2ee8f - main - nvmecontrol: Add Intel Drive Marketing Name Log support (0xdd) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fef6c8f2ee8fb4ac728b505bb031d03852b0a761 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=fef6c8f2ee8fb4ac728b505bb031d03852b0a761 commit fef6c8f2ee8fb4ac728b505bb031d03852b0a761 Author: Wanpeng Qian AuthorDate: 2025-08-10 03:27:00 +0000 Commit: Warner Losh CommitDate: 2025-08-10 04:11:09 +0000 nvmecontrol: Add Intel Drive Marketing Name Log support (0xdd) Add Intel Drive Marketing Name Log support (0xdd) Specification here: https://www.intel.com/content/dam/support/us/en/documents/ssdc/hpssd/sb/Intel_SSD_DC_P3600_Series_PCIe_Product_Specification-004.pdf Reviewed by: imp Differential Revsion: https://reviews.freebsd.org/D33819 --- sbin/nvmecontrol/modules/intel/intel.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sbin/nvmecontrol/modules/intel/intel.c b/sbin/nvmecontrol/modules/intel/intel.c index 4229a48e4153..6ffe2c4c1563 100644 --- a/sbin/nvmecontrol/modules/intel/intel.c +++ b/sbin/nvmecontrol/modules/intel/intel.c @@ -195,6 +195,18 @@ print_intel_add_smart(const struct nvme_controller_data *cdata __unused, void *b } } +static void +print_intel_drive_marketing_name(const struct nvme_controller_data *cdata __unused, void *buf, uint32_t size __unused) +{ + const char *p = buf; + + printf("Intel Drive Marketing Name Log\n"); + printf("=======================\n"); + printf("%.*s\n", 29, p); +} + +#define INTEL_LOG_DRIVE_MARKETING_NAME 0xdd + NVME_LOGPAGE(intel_temp, INTEL_LOG_TEMP_STATS, "intel", "Temperature Stats", print_intel_temp_stats, sizeof(struct intel_log_temp_stats)); @@ -207,3 +219,6 @@ NVME_LOGPAGE(intel_wlat, NVME_LOGPAGE(intel_smart, /* Note: Samsung and Micron also use this */ INTEL_LOG_ADD_SMART, "intel", "Extra Health/SMART Data", print_intel_add_smart, DEFAULT_SIZE); +NVME_LOGPAGE(intel_dmn, + INTEL_LOG_DRIVE_MARKETING_NAME, "intel", "Drive Marketing Name Log", + print_intel_drive_marketing_name, DEFAULT_SIZE); From nobody Sun Aug 10 05:19:00 2025 X-Original-To: dev-commits-src-main@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 4c05fV47bwz63nmx; Sun, 10 Aug 2025 05:19:14 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4c05fV0Wggz3HwZ; Sun, 10 Aug 2025 05:19:13 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 57A5J0Ke085270; Sun, 10 Aug 2025 08:19:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 57A5J0Ke085270 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 57A5J06c085269; Sun, 10 Aug 2025 08:19:00 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 10 Aug 2025 08:19:00 +0300 From: Konstantin Belousov To: Warner Losh Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bc598959090d - main - autofs: Plug memory leak Message-ID: References: <202508100156.57A1uMoa022605@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202508100156.57A1uMoa022605@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4c05fV0Wggz3HwZ X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Sun, Aug 10, 2025 at 01:56:22AM +0000, Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=bc598959090d43aa0fc6b91355979016a9449041 > > commit bc598959090d43aa0fc6b91355979016a9449041 > Author: Enji Cooper > AuthorDate: 2025-08-10 01:52:31 +0000 > Commit: Warner Losh > CommitDate: 2025-08-10 01:54:42 +0000 > > autofs: Plug memory leak > > Originally, this was an extra free, but ngie@ suggested this > change. Since that's the whole thing, I've set her as the author for > this ancient review instead of trix@juniper.net. > > Sugggested by: ngie > Differential Revision: https://reviews.freebsd.org/D10063 > Sponsored by: Netflix > --- > usr.sbin/autofs/common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c > index 18756752876c..6b98214162ae 100644 > --- a/usr.sbin/autofs/common.c > +++ b/usr.sbin/autofs/common.c > @@ -149,7 +149,7 @@ create_directory(const char *path) > error = mkdir(partial, 0755); > if (error != 0 && errno != EEXIST) { > log_warn("cannot create %s", partial); > - return; > + break; > } > } > Isn't there another leak, occuring when the first break in the loop is taken? Then the 'partial' duped string is not freed. From nobody Sun Aug 10 05:32:04 2025 X-Original-To: dev-commits-src-main@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 4c05xR1HDCz63q7R; Sun, 10 Aug 2025 05:32: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c05xR0cg5z3Lnd; Sun, 10 Aug 2025 05:32:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754803931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UKydB3mLozMEw535OZjjzbHRlsY3fuQKMJbrPfTvXE8=; b=ozgghOTr0ehaZeFXjr+4ETzqe3c7CDpgam5Ko9fo5HMlM8cdgBVaJvnWtd66/iuyZuRDOQ aC+wFP2FCLPM5d2I1h3Hzty2TfBOXyzOkV/WTX/jH8EKYUHFSeWkpbLgBcj3zf+hngiNel ZJTHP6ScMqdbwIpp+mbEZmwRV/e1PqlJhjA6UkaN41cotsCWcZqNKVXuPDsQUTMO353p1j +ygoQbmh74Nmf8kmi7gYWhP2JmjAwXpQvDI6ETkSXutHRL0l01dMd5s3JVW9nOYCmQIeYK dwQQNbyfvIlqQORXqz3Vd5H9dSi/PQ/sYwl3KHemXYq9ZjUHNZRe16gC5z/3ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754803931; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UKydB3mLozMEw535OZjjzbHRlsY3fuQKMJbrPfTvXE8=; b=sFD/e8igVmUlOjZWX0G9An+rmOWgKPCCXxPuNwjqp1yqwXi+jqOp+Lcym9p/fvIMGExr7+ iBWTQBIQmaWqQFSM1qC1hE4e5Ed7VQ2ynIqeapOEdrAy/+lvXhKcBMqgmDt7LK2O8kNkP4 Fh3M6dMla8m2AnndbRhznqWL5pVtubN0Nfldv91vToN5Z02W2G4z+wrHFXDFFiQXK9e6kR 4LmJbL8rycqNdZXiCav/5dTJUCzbvqErFdLWpKt++0GVKU433lD2NV9wuRgQ3mDWvr4GMl IwcVPAYO2GMpMCYyjDCVucB8otHkibPA7ZTWWe86DrJDwIftjD2Cj3Uuf96Z9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754803931; a=rsa-sha256; cv=none; b=dYvBBjYVtj3EAQrA13AoT82w4OpkDEYHQUBUgJ9bwEmwJPVrKWzprYB5H4LEh+C6svUQr3 jLw1NftPDE9wmZDBe7HV04L4wJ+kq6MyHkrar1XmS+4YKx5P76aUNuBrEOw/cF5FEKPjL4 aTXCsHkzXcRUFcGTXqCPIZB0xUdmBoNyVMZOSTeVQxbuD+Xl3rY5mh8UgosajH8+vXoOY/ QpJAEpmX81AD3iRCoF3APRvgmRBCTo18ne10iEPQCGuiiYNqEDZ2gIak7TUYEH6KWsI45k YLQGpQLoNrEmnk8I4lZC7caLbDMOjcq72xr9x7iAjdcLMF7q1fCgaM1MK0Ayeg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c05xR02Cvztn6; Sun, 10 Aug 2025 05:32:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A5WAZs038283; Sun, 10 Aug 2025 05:32:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A5W4Dl038254; Sun, 10 Aug 2025 05:32:04 GMT (envelope-from git) Date: Sun, 10 Aug 2025 05:32:04 GMT Message-Id: <202508100532.57A5W4Dl038254@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: f1c4c3daccba - main - krb5: Update MIT KRB5 from 1.21 to 1.22 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f1c4c3daccbaf3820f0e2224de53df12fc952fcc Auto-Submitted: auto-generated The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=f1c4c3daccbaf3820f0e2224de53df12fc952fcc commit f1c4c3daccbaf3820f0e2224de53df12fc952fcc Merge: fef6c8f2ee8f d82a140dad3a Author: Cy Schubert AuthorDate: 2025-08-10 05:29:02 +0000 Commit: Cy Schubert CommitDate: 2025-08-10 05:29:02 +0000 krb5: Update MIT KRB5 from 1.21 to 1.22 Merge commit 'd82a140dad3a571d66abb2da24acbba90191f168' crypto/krb5/.github/workflows/build.yml | 43 +- crypto/krb5/.github/workflows/cifuzz.yml | 38 + crypto/krb5/.github/workflows/doc.yml | 2 +- crypto/krb5/NOTICE | 188 +- crypto/krb5/README | 219 +- .../krb5/doc/admin/admin_commands/kadmin_local.rst | 22 +- crypto/krb5/doc/admin/admin_commands/kadmind.rst | 8 + crypto/krb5/doc/admin/admin_commands/kdb5_util.rst | 8 + crypto/krb5/doc/admin/admin_commands/krb5kdc.rst | 7 + crypto/krb5/doc/admin/conf_files/kdc_conf.rst | 81 +- crypto/krb5/doc/admin/conf_files/krb5_conf.rst | 65 +- crypto/krb5/doc/admin/conf_ldap.rst | 7 +- crypto/krb5/doc/admin/database.rst | 4 + crypto/krb5/doc/admin/realm_config.rst | 10 + crypto/krb5/doc/appdev/gssapi.rst | 36 + crypto/krb5/doc/appdev/refs/api/index.rst | 2 + crypto/krb5/doc/appdev/refs/macros/index.rst | 4 + crypto/krb5/doc/build/options2configure.rst | 3 + crypto/krb5/doc/conf.py | 4 +- crypto/krb5/doc/copyright.rst | 2 +- crypto/krb5/doc/formats/cookie.rst | 38 +- crypto/krb5/doc/formats/database_formats.rst | 459 + crypto/krb5/doc/formats/index.rst | 1 + crypto/krb5/doc/html/.buildinfo | 2 +- .../admin/admin_commands/kadmin_local.rst.txt | 22 +- .../_sources/admin/admin_commands/kadmind.rst.txt | 8 + .../admin/admin_commands/kdb5_util.rst.txt | 8 + .../_sources/admin/admin_commands/krb5kdc.rst.txt | 7 + .../_sources/admin/conf_files/kdc_conf.rst.txt | 81 +- .../_sources/admin/conf_files/krb5_conf.rst.txt | 65 +- .../krb5/doc/html/_sources/admin/conf_ldap.rst.txt | 7 +- .../krb5/doc/html/_sources/admin/database.rst.txt | 4 + .../doc/html/_sources/admin/realm_config.rst.txt | 10 + .../krb5/doc/html/_sources/appdev/gssapi.rst.txt | 36 + .../html/_sources/appdev/refs/api/index.rst.txt | 2 + .../refs/api/krb5_anonymous_principal.rst.txt | 2 +- .../appdev/refs/api/krb5_anonymous_realm.rst.txt | 2 +- .../appdev/refs/api/krb5_auth_con_genaddrs.rst.txt | 8 +- .../appdev/refs/api/krb5_auth_con_getflags.rst.txt | 8 +- .../api/krb5_auth_con_getlocalseqnumber.rst.txt | 2 +- .../api/krb5_auth_con_getremoteseqnumber.rst.txt | 2 +- .../appdev/refs/api/krb5_auth_con_init.rst.txt | 2 +- .../appdev/refs/api/krb5_auth_con_setflags.rst.txt | 8 +- .../refs/api/krb5_c_crypto_length_iov.rst.txt | 2 +- .../appdev/refs/api/krb5_c_encrypt.rst.txt | 2 +- .../refs/api/krb5_c_make_checksum_iov.rst.txt | 2 +- .../refs/api/krb5_c_verify_checksum_iov.rst.txt | 2 +- .../appdev/refs/api/krb5_cc_cache_match.rst.txt | 2 +- .../appdev/refs/api/krb5_cc_retrieve_cred.rst.txt | 20 +- .../appdev/refs/api/krb5_change_password.rst.txt | 10 +- .../appdev/refs/api/krb5_free_config_files.rst.txt | 44 + .../appdev/refs/api/krb5_fwd_tgt_creds.rst.txt | 2 +- .../appdev/refs/api/krb5_get_credentials.rst.txt | 6 +- .../refs/api/krb5_get_default_config_files.rst.txt | 52 + .../krb5_get_init_creds_opt_set_fast_flags.rst.txt | 2 +- .../appdev/refs/api/krb5_get_prompt_types.rst.txt | 2 +- .../refs/api/krb5_init_context_profile.rst.txt | 4 +- .../appdev/refs/api/krb5_init_creds_step.rst.txt | 2 +- .../refs/api/krb5_k_make_checksum_iov.rst.txt | 2 +- .../refs/api/krb5_k_verify_checksum_iov.rst.txt | 2 +- .../_sources/appdev/refs/api/krb5_mk_ncred.rst.txt | 6 +- .../_sources/appdev/refs/api/krb5_mk_priv.rst.txt | 6 +- .../_sources/appdev/refs/api/krb5_mk_rep.rst.txt | 2 +- .../appdev/refs/api/krb5_mk_req_extended.rst.txt | 6 +- .../_sources/appdev/refs/api/krb5_mk_safe.rst.txt | 6 +- .../appdev/refs/api/krb5_pac_add_buffer.rst.txt | 14 +- .../appdev/refs/api/krb5_parse_name_flags.rst.txt | 8 +- .../refs/api/krb5_principal_compare_flags.rst.txt | 8 +- .../_sources/appdev/refs/api/krb5_rd_cred.rst.txt | 2 +- .../_sources/appdev/refs/api/krb5_rd_priv.rst.txt | 6 +- .../_sources/appdev/refs/api/krb5_rd_req.rst.txt | 2 +- .../_sources/appdev/refs/api/krb5_rd_safe.rst.txt | 6 +- .../_sources/appdev/refs/api/krb5_sendauth.rst.txt | 2 +- .../appdev/refs/api/krb5_set_password.rst.txt | 2 +- .../appdev/refs/api/krb5_sname_match.rst.txt | 2 +- .../refs/api/krb5_sname_to_principal.rst.txt | 4 +- .../appdev/refs/api/krb5_tkt_creds_step.rst.txt | 2 +- .../refs/api/krb5_unparse_name_flags.rst.txt | 6 +- .../refs/macros/ADDRTYPE_DIRECTIONAL.rst.txt | 17 + .../appdev/refs/macros/ADDRTYPE_UNIXSOCK.rst.txt | 17 + .../appdev/refs/macros/AP_OPTS_CBT_FLAG.rst.txt | 17 + .../refs/macros/KRB5_KEYUSAGE_FINISHED.rst.txt | 17 + .../html/_sources/appdev/refs/macros/index.rst.txt | 4 + .../html/_sources/build/options2configure.rst.txt | 3 + crypto/krb5/doc/html/_sources/copyright.rst.txt | 2 +- .../krb5/doc/html/_sources/formats/cookie.rst.txt | 38 +- .../html/_sources/formats/database_formats.rst.txt | 459 + .../krb5/doc/html/_sources/formats/index.rst.txt | 1 + .../krb5/doc/html/_sources/mitK5features.rst.txt | 67 +- .../html/_sources/user/user_commands/kinit.rst.txt | 4 - crypto/krb5/doc/html/_static/agogo.css | 53 +- crypto/krb5/doc/html/_static/basic.css | 74 +- crypto/krb5/doc/html/_static/doctools.js | 381 +- .../krb5/doc/html/_static/documentation_options.js | 11 +- crypto/krb5/doc/html/_static/jquery.js | 10879 --------------- crypto/krb5/doc/html/_static/language_data.js | 102 +- crypto/krb5/doc/html/_static/pygments.css | 1 + crypto/krb5/doc/html/_static/searchtools.js | 838 +- crypto/krb5/doc/html/_static/sphinx_highlight.js | 154 + crypto/krb5/doc/html/_static/underscore.js | 2042 --- crypto/krb5/doc/html/about.html | 26 +- .../krb5/doc/html/admin/admin_commands/index.html | 24 +- .../doc/html/admin/admin_commands/k5srvutil.html | 32 +- .../html/admin/admin_commands/kadmin_local.html | 102 +- .../doc/html/admin/admin_commands/kadmind.html | 41 +- .../html/admin/admin_commands/kdb5_ldap_util.html | 58 +- .../doc/html/admin/admin_commands/kdb5_util.html | 68 +- .../krb5/doc/html/admin/admin_commands/kprop.html | 34 +- .../krb5/doc/html/admin/admin_commands/kpropd.html | 36 +- .../doc/html/admin/admin_commands/kproplog.html | 34 +- .../doc/html/admin/admin_commands/krb5kdc.html | 42 +- .../krb5/doc/html/admin/admin_commands/ktutil.html | 52 +- .../doc/html/admin/admin_commands/sserver.html | 34 +- crypto/krb5/doc/html/admin/advanced/index.html | 24 +- .../krb5/doc/html/admin/advanced/retiring-des.html | 44 +- crypto/krb5/doc/html/admin/appl_servers.html | 38 +- crypto/krb5/doc/html/admin/auth_indicator.html | 24 +- crypto/krb5/doc/html/admin/backup_host.html | 26 +- crypto/krb5/doc/html/admin/conf_files/index.html | 26 +- .../krb5/doc/html/admin/conf_files/kadm5_acl.html | 38 +- .../krb5/doc/html/admin/conf_files/kdc_conf.html | 149 +- .../krb5/doc/html/admin/conf_files/krb5_conf.html | 156 +- crypto/krb5/doc/html/admin/conf_ldap.html | 31 +- crypto/krb5/doc/html/admin/database.html | 60 +- crypto/krb5/doc/html/admin/dbtypes.html | 30 +- crypto/krb5/doc/html/admin/dictionary.html | 24 +- crypto/krb5/doc/html/admin/enctypes.html | 42 +- crypto/krb5/doc/html/admin/env_variables.html | 24 +- crypto/krb5/doc/html/admin/host_config.html | 36 +- crypto/krb5/doc/html/admin/https.html | 26 +- crypto/krb5/doc/html/admin/index.html | 24 +- crypto/krb5/doc/html/admin/install.html | 28 +- crypto/krb5/doc/html/admin/install_appl_srv.html | 28 +- crypto/krb5/doc/html/admin/install_clients.html | 26 +- crypto/krb5/doc/html/admin/install_kdc.html | 56 +- crypto/krb5/doc/html/admin/lockout.html | 36 +- crypto/krb5/doc/html/admin/otp.html | 40 +- crypto/krb5/doc/html/admin/pkinit.html | 40 +- crypto/krb5/doc/html/admin/princ_dns.html | 40 +- crypto/krb5/doc/html/admin/realm_config.html | 50 +- crypto/krb5/doc/html/admin/spake.html | 24 +- crypto/krb5/doc/html/admin/troubleshoot.html | 44 +- crypto/krb5/doc/html/admin/various_envs.html | 30 +- crypto/krb5/doc/html/appdev/gssapi.html | 88 +- crypto/krb5/doc/html/appdev/h5l_mit_apidiff.html | 28 +- crypto/krb5/doc/html/appdev/index.html | 24 +- crypto/krb5/doc/html/appdev/init_creds.html | 44 +- crypto/krb5/doc/html/appdev/princ_handle.html | 24 +- crypto/krb5/doc/html/appdev/refs/api/index.html | 36 +- .../appdev/refs/api/krb5_425_conv_principal.html | 30 +- .../appdev/refs/api/krb5_524_conv_principal.html | 32 +- .../appdev/refs/api/krb5_524_convert_creds.html | 30 +- .../html/appdev/refs/api/krb5_address_compare.html | 30 +- .../html/appdev/refs/api/krb5_address_order.html | 30 +- .../html/appdev/refs/api/krb5_address_search.html | 30 +- .../appdev/refs/api/krb5_allow_weak_crypto.html | 30 +- .../appdev/refs/api/krb5_aname_to_localname.html | 32 +- .../appdev/refs/api/krb5_anonymous_principal.html | 30 +- .../html/appdev/refs/api/krb5_anonymous_realm.html | 30 +- .../appdev/refs/api/krb5_appdefault_boolean.html | 28 +- .../appdev/refs/api/krb5_appdefault_string.html | 28 +- .../html/appdev/refs/api/krb5_auth_con_free.html | 30 +- .../appdev/refs/api/krb5_auth_con_genaddrs.html | 38 +- .../refs/api/krb5_auth_con_get_checksum_func.html | 30 +- .../appdev/refs/api/krb5_auth_con_getaddrs.html | 30 +- .../refs/api/krb5_auth_con_getauthenticator.html | 30 +- .../appdev/refs/api/krb5_auth_con_getflags.html | 38 +- .../html/appdev/refs/api/krb5_auth_con_getkey.html | 30 +- .../appdev/refs/api/krb5_auth_con_getkey_k.html | 30 +- .../refs/api/krb5_auth_con_getlocalseqnumber.html | 32 +- .../refs/api/krb5_auth_con_getlocalsubkey.html | 28 +- .../appdev/refs/api/krb5_auth_con_getrcache.html | 30 +- .../refs/api/krb5_auth_con_getrecvsubkey.html | 30 +- .../refs/api/krb5_auth_con_getrecvsubkey_k.html | 30 +- .../refs/api/krb5_auth_con_getremoteseqnumber.html | 32 +- .../refs/api/krb5_auth_con_getremotesubkey.html | 28 +- .../refs/api/krb5_auth_con_getsendsubkey.html | 30 +- .../refs/api/krb5_auth_con_getsendsubkey_k.html | 30 +- .../html/appdev/refs/api/krb5_auth_con_init.html | 32 +- .../appdev/refs/api/krb5_auth_con_initivector.html | 30 +- .../refs/api/krb5_auth_con_set_checksum_func.html | 30 +- .../refs/api/krb5_auth_con_set_req_cksumtype.html | 30 +- .../appdev/refs/api/krb5_auth_con_setaddrs.html | 30 +- .../appdev/refs/api/krb5_auth_con_setflags.html | 38 +- .../appdev/refs/api/krb5_auth_con_setports.html | 30 +- .../appdev/refs/api/krb5_auth_con_setrcache.html | 30 +- .../refs/api/krb5_auth_con_setrecvsubkey.html | 30 +- .../refs/api/krb5_auth_con_setrecvsubkey_k.html | 30 +- .../refs/api/krb5_auth_con_setsendsubkey.html | 30 +- .../refs/api/krb5_auth_con_setsendsubkey_k.html | 30 +- .../refs/api/krb5_auth_con_setuseruserkey.html | 30 +- .../html/appdev/refs/api/krb5_build_principal.html | 32 +- .../refs/api/krb5_build_principal_alloc_va.html | 32 +- .../appdev/refs/api/krb5_build_principal_ext.html | 32 +- .../appdev/refs/api/krb5_build_principal_va.html | 28 +- .../html/appdev/refs/api/krb5_c_block_size.html | 30 +- .../appdev/refs/api/krb5_c_checksum_length.html | 30 +- .../html/appdev/refs/api/krb5_c_crypto_length.html | 30 +- .../appdev/refs/api/krb5_c_crypto_length_iov.html | 32 +- .../doc/html/appdev/refs/api/krb5_c_decrypt.html | 30 +- .../html/appdev/refs/api/krb5_c_decrypt_iov.html | 30 +- .../appdev/refs/api/krb5_c_derive_prfplus.html | 28 +- .../doc/html/appdev/refs/api/krb5_c_encrypt.html | 32 +- .../html/appdev/refs/api/krb5_c_encrypt_iov.html | 30 +- .../appdev/refs/api/krb5_c_encrypt_length.html | 30 +- .../appdev/refs/api/krb5_c_enctype_compare.html | 30 +- .../html/appdev/refs/api/krb5_c_free_state.html | 30 +- .../html/appdev/refs/api/krb5_c_fx_cf2_simple.html | 30 +- .../html/appdev/refs/api/krb5_c_init_state.html | 30 +- .../refs/api/krb5_c_is_coll_proof_cksum.html | 30 +- .../appdev/refs/api/krb5_c_is_keyed_cksum.html | 30 +- .../refs/api/krb5_c_keyed_checksum_types.html | 30 +- .../html/appdev/refs/api/krb5_c_keylengths.html | 30 +- .../html/appdev/refs/api/krb5_c_make_checksum.html | 30 +- .../appdev/refs/api/krb5_c_make_checksum_iov.html | 32 +- .../appdev/refs/api/krb5_c_make_random_key.html | 30 +- .../appdev/refs/api/krb5_c_padding_length.html | 30 +- .../krb5/doc/html/appdev/refs/api/krb5_c_prf.html | 30 +- .../html/appdev/refs/api/krb5_c_prf_length.html | 30 +- .../doc/html/appdev/refs/api/krb5_c_prfplus.html | 30 +- .../appdev/refs/api/krb5_c_random_add_entropy.html | 28 +- .../appdev/refs/api/krb5_c_random_make_octets.html | 30 +- .../appdev/refs/api/krb5_c_random_os_entropy.html | 28 +- .../html/appdev/refs/api/krb5_c_random_seed.html | 28 +- .../html/appdev/refs/api/krb5_c_random_to_key.html | 30 +- .../html/appdev/refs/api/krb5_c_string_to_key.html | 30 +- .../refs/api/krb5_c_string_to_key_with_params.html | 30 +- .../appdev/refs/api/krb5_c_valid_cksumtype.html | 30 +- .../html/appdev/refs/api/krb5_c_valid_enctype.html | 30 +- .../appdev/refs/api/krb5_c_verify_checksum.html | 30 +- .../refs/api/krb5_c_verify_checksum_iov.html | 32 +- .../appdev/refs/api/krb5_calculate_checksum.html | 28 +- .../html/appdev/refs/api/krb5_cc_cache_match.html | 32 +- .../doc/html/appdev/refs/api/krb5_cc_close.html | 32 +- .../html/appdev/refs/api/krb5_cc_copy_creds.html | 30 +- .../doc/html/appdev/refs/api/krb5_cc_default.html | 32 +- .../html/appdev/refs/api/krb5_cc_default_name.html | 30 +- .../doc/html/appdev/refs/api/krb5_cc_destroy.html | 32 +- .../krb5/doc/html/appdev/refs/api/krb5_cc_dup.html | 28 +- .../html/appdev/refs/api/krb5_cc_end_seq_get.html | 30 +- .../doc/html/appdev/refs/api/krb5_cc_gen_new.html | 28 +- .../html/appdev/refs/api/krb5_cc_get_config.html | 32 +- .../html/appdev/refs/api/krb5_cc_get_flags.html | 30 +- .../appdev/refs/api/krb5_cc_get_full_name.html | 28 +- .../doc/html/appdev/refs/api/krb5_cc_get_name.html | 30 +- .../appdev/refs/api/krb5_cc_get_principal.html | 32 +- .../doc/html/appdev/refs/api/krb5_cc_get_type.html | 30 +- .../html/appdev/refs/api/krb5_cc_initialize.html | 32 +- .../doc/html/appdev/refs/api/krb5_cc_move.html | 32 +- .../html/appdev/refs/api/krb5_cc_new_unique.html | 32 +- .../html/appdev/refs/api/krb5_cc_next_cred.html | 30 +- .../html/appdev/refs/api/krb5_cc_remove_cred.html | 32 +- .../doc/html/appdev/refs/api/krb5_cc_resolve.html | 32 +- .../appdev/refs/api/krb5_cc_retrieve_cred.html | 50 +- .../doc/html/appdev/refs/api/krb5_cc_select.html | 30 +- .../html/appdev/refs/api/krb5_cc_set_config.html | 32 +- .../appdev/refs/api/krb5_cc_set_default_name.html | 32 +- .../html/appdev/refs/api/krb5_cc_set_flags.html | 30 +- .../appdev/refs/api/krb5_cc_start_seq_get.html | 30 +- .../html/appdev/refs/api/krb5_cc_store_cred.html | 32 +- .../appdev/refs/api/krb5_cc_support_switch.html | 30 +- .../doc/html/appdev/refs/api/krb5_cc_switch.html | 32 +- .../appdev/refs/api/krb5_cccol_cursor_free.html | 30 +- .../appdev/refs/api/krb5_cccol_cursor_new.html | 30 +- .../appdev/refs/api/krb5_cccol_cursor_next.html | 30 +- .../appdev/refs/api/krb5_cccol_have_content.html | 30 +- .../html/appdev/refs/api/krb5_change_password.html | 40 +- .../html/appdev/refs/api/krb5_check_clockskew.html | 30 +- .../html/appdev/refs/api/krb5_checksum_size.html | 28 +- .../html/appdev/refs/api/krb5_chpw_message.html | 32 +- .../appdev/refs/api/krb5_cksumtype_to_string.html | 30 +- .../appdev/refs/api/krb5_clear_error_message.html | 28 +- .../html/appdev/refs/api/krb5_copy_addresses.html | 30 +- .../html/appdev/refs/api/krb5_copy_authdata.html | 30 +- .../appdev/refs/api/krb5_copy_authenticator.html | 30 +- .../html/appdev/refs/api/krb5_copy_checksum.html | 30 +- .../html/appdev/refs/api/krb5_copy_context.html | 32 +- .../doc/html/appdev/refs/api/krb5_copy_creds.html | 30 +- .../doc/html/appdev/refs/api/krb5_copy_data.html | 30 +- .../appdev/refs/api/krb5_copy_error_message.html | 28 +- .../html/appdev/refs/api/krb5_copy_keyblock.html | 30 +- .../refs/api/krb5_copy_keyblock_contents.html | 30 +- .../html/appdev/refs/api/krb5_copy_principal.html | 30 +- .../doc/html/appdev/refs/api/krb5_copy_ticket.html | 30 +- .../refs/api/krb5_decode_authdata_container.html | 30 +- .../html/appdev/refs/api/krb5_decode_ticket.html | 30 +- .../doc/html/appdev/refs/api/krb5_decrypt.html | 28 +- .../appdev/refs/api/krb5_deltat_to_string.html | 30 +- .../html/appdev/refs/api/krb5_eblock_enctype.html | 28 +- .../refs/api/krb5_encode_authdata_container.html | 30 +- .../doc/html/appdev/refs/api/krb5_encrypt.html | 28 +- .../html/appdev/refs/api/krb5_encrypt_size.html | 28 +- .../html/appdev/refs/api/krb5_enctype_to_name.html | 30 +- .../appdev/refs/api/krb5_enctype_to_string.html | 30 +- .../html/appdev/refs/api/krb5_expand_hostname.html | 34 +- .../html/appdev/refs/api/krb5_find_authdata.html | 28 +- .../doc/html/appdev/refs/api/krb5_finish_key.html | 28 +- .../appdev/refs/api/krb5_finish_random_key.html | 28 +- .../html/appdev/refs/api/krb5_free_addresses.html | 28 +- .../appdev/refs/api/krb5_free_ap_rep_enc_part.html | 28 +- .../html/appdev/refs/api/krb5_free_authdata.html | 28 +- .../appdev/refs/api/krb5_free_authenticator.html | 28 +- .../html/appdev/refs/api/krb5_free_checksum.html | 28 +- .../refs/api/krb5_free_checksum_contents.html | 28 +- .../html/appdev/refs/api/krb5_free_cksumtypes.html | 28 +- .../appdev/refs/api/krb5_free_config_files.html | 151 + .../html/appdev/refs/api/krb5_free_context.html | 34 +- .../appdev/refs/api/krb5_free_cred_contents.html | 28 +- .../doc/html/appdev/refs/api/krb5_free_creds.html | 28 +- .../doc/html/appdev/refs/api/krb5_free_data.html | 28 +- .../appdev/refs/api/krb5_free_data_contents.html | 28 +- .../appdev/refs/api/krb5_free_default_realm.html | 28 +- .../html/appdev/refs/api/krb5_free_enctypes.html | 28 +- .../doc/html/appdev/refs/api/krb5_free_error.html | 28 +- .../appdev/refs/api/krb5_free_error_message.html | 28 +- .../html/appdev/refs/api/krb5_free_host_realm.html | 32 +- .../html/appdev/refs/api/krb5_free_keyblock.html | 28 +- .../refs/api/krb5_free_keyblock_contents.html | 28 +- .../refs/api/krb5_free_keytab_entry_contents.html | 30 +- .../html/appdev/refs/api/krb5_free_principal.html | 28 +- .../doc/html/appdev/refs/api/krb5_free_string.html | 28 +- .../html/appdev/refs/api/krb5_free_tgt_creds.html | 28 +- .../doc/html/appdev/refs/api/krb5_free_ticket.html | 28 +- .../appdev/refs/api/krb5_free_unparsed_name.html | 28 +- .../html/appdev/refs/api/krb5_fwd_tgt_creds.html | 34 +- .../html/appdev/refs/api/krb5_get_credentials.html | 44 +- .../refs/api/krb5_get_credentials_renew.html | 28 +- .../refs/api/krb5_get_credentials_validate.html | 28 +- .../refs/api/krb5_get_default_config_files.html | 153 + .../appdev/refs/api/krb5_get_default_realm.html | 32 +- .../appdev/refs/api/krb5_get_error_message.html | 28 +- .../html/appdev/refs/api/krb5_get_etype_info.html | 32 +- .../refs/api/krb5_get_fallback_host_realm.html | 34 +- .../html/appdev/refs/api/krb5_get_host_realm.html | 32 +- .../refs/api/krb5_get_in_tkt_with_keytab.html | 28 +- .../refs/api/krb5_get_in_tkt_with_password.html | 28 +- .../appdev/refs/api/krb5_get_in_tkt_with_skey.html | 28 +- .../refs/api/krb5_get_init_creds_keytab.html | 32 +- .../refs/api/krb5_get_init_creds_opt_alloc.html | 30 +- .../refs/api/krb5_get_init_creds_opt_free.html | 28 +- .../krb5_get_init_creds_opt_get_fast_flags.html | 30 +- .../refs/api/krb5_get_init_creds_opt_init.html | 28 +- .../krb5_get_init_creds_opt_set_address_list.html | 28 +- .../api/krb5_get_init_creds_opt_set_anonymous.html | 28 +- .../krb5_get_init_creds_opt_set_canonicalize.html | 28 +- ..._init_creds_opt_set_change_password_prompt.html | 28 +- .../krb5_get_init_creds_opt_set_etype_list.html | 28 +- ...rb5_get_init_creds_opt_set_expire_callback.html | 28 +- .../krb5_get_init_creds_opt_set_fast_ccache.html | 28 +- ...b5_get_init_creds_opt_set_fast_ccache_name.html | 28 +- .../krb5_get_init_creds_opt_set_fast_flags.html | 32 +- .../krb5_get_init_creds_opt_set_forwardable.html | 28 +- .../api/krb5_get_init_creds_opt_set_in_ccache.html | 28 +- .../krb5_get_init_creds_opt_set_out_ccache.html | 28 +- .../refs/api/krb5_get_init_creds_opt_set_pa.html | 28 +- .../krb5_get_init_creds_opt_set_pac_request.html | 28 +- .../krb5_get_init_creds_opt_set_preauth_list.html | 28 +- .../api/krb5_get_init_creds_opt_set_proxiable.html | 28 +- .../krb5_get_init_creds_opt_set_renew_life.html | 28 +- .../api/krb5_get_init_creds_opt_set_responder.html | 28 +- .../refs/api/krb5_get_init_creds_opt_set_salt.html | 28 +- .../api/krb5_get_init_creds_opt_set_tkt_life.html | 28 +- .../refs/api/krb5_get_init_creds_password.html | 32 +- .../refs/api/krb5_get_permitted_enctypes.html | 30 +- .../doc/html/appdev/refs/api/krb5_get_profile.html | 32 +- .../appdev/refs/api/krb5_get_prompt_types.html | 32 +- .../appdev/refs/api/krb5_get_renewed_creds.html | 32 +- .../appdev/refs/api/krb5_get_server_rcache.html | 30 +- .../appdev/refs/api/krb5_get_time_offsets.html | 30 +- .../appdev/refs/api/krb5_get_validated_creds.html | 32 +- .../html/appdev/refs/api/krb5_init_context.html | 32 +- .../appdev/refs/api/krb5_init_context_profile.html | 32 +- .../html/appdev/refs/api/krb5_init_creds_free.html | 28 +- .../html/appdev/refs/api/krb5_init_creds_get.html | 30 +- .../appdev/refs/api/krb5_init_creds_get_creds.html | 30 +- .../appdev/refs/api/krb5_init_creds_get_error.html | 30 +- .../appdev/refs/api/krb5_init_creds_get_times.html | 30 +- .../html/appdev/refs/api/krb5_init_creds_init.html | 30 +- .../refs/api/krb5_init_creds_set_keytab.html | 30 +- .../refs/api/krb5_init_creds_set_password.html | 30 +- .../refs/api/krb5_init_creds_set_service.html | 30 +- .../html/appdev/refs/api/krb5_init_creds_step.html | 32 +- .../html/appdev/refs/api/krb5_init_keyblock.html | 30 +- .../html/appdev/refs/api/krb5_init_random_key.html | 28 +- .../appdev/refs/api/krb5_init_secure_context.html | 32 +- .../appdev/refs/api/krb5_is_config_principal.html | 30 +- .../appdev/refs/api/krb5_is_referral_realm.html | 30 +- .../html/appdev/refs/api/krb5_is_thread_safe.html | 30 +- .../html/appdev/refs/api/krb5_k_create_key.html | 30 +- .../doc/html/appdev/refs/api/krb5_k_decrypt.html | 30 +- .../html/appdev/refs/api/krb5_k_decrypt_iov.html | 30 +- .../doc/html/appdev/refs/api/krb5_k_encrypt.html | 30 +- .../html/appdev/refs/api/krb5_k_encrypt_iov.html | 30 +- .../doc/html/appdev/refs/api/krb5_k_free_key.html | 28 +- .../html/appdev/refs/api/krb5_k_key_enctype.html | 28 +- .../html/appdev/refs/api/krb5_k_key_keyblock.html | 28 +- .../html/appdev/refs/api/krb5_k_make_checksum.html | 30 +- .../appdev/refs/api/krb5_k_make_checksum_iov.html | 32 +- .../krb5/doc/html/appdev/refs/api/krb5_k_prf.html | 30 +- .../html/appdev/refs/api/krb5_k_reference_key.html | 28 +- .../appdev/refs/api/krb5_k_verify_checksum.html | 30 +- .../refs/api/krb5_k_verify_checksum_iov.html | 32 +- .../html/appdev/refs/api/krb5_kdc_sign_ticket.html | 30 +- .../appdev/refs/api/krb5_kdc_verify_ticket.html | 30 +- .../html/appdev/refs/api/krb5_kt_add_entry.html | 32 +- .../appdev/refs/api/krb5_kt_client_default.html | 32 +- .../doc/html/appdev/refs/api/krb5_kt_close.html | 30 +- .../doc/html/appdev/refs/api/krb5_kt_default.html | 32 +- .../html/appdev/refs/api/krb5_kt_default_name.html | 32 +- .../krb5/doc/html/appdev/refs/api/krb5_kt_dup.html | 28 +- .../html/appdev/refs/api/krb5_kt_end_seq_get.html | 32 +- .../html/appdev/refs/api/krb5_kt_free_entry.html | 28 +- .../html/appdev/refs/api/krb5_kt_get_entry.html | 30 +- .../doc/html/appdev/refs/api/krb5_kt_get_name.html | 32 +- .../doc/html/appdev/refs/api/krb5_kt_get_type.html | 30 +- .../html/appdev/refs/api/krb5_kt_have_content.html | 30 +- .../html/appdev/refs/api/krb5_kt_next_entry.html | 32 +- .../appdev/refs/api/krb5_kt_read_service_key.html | 32 +- .../html/appdev/refs/api/krb5_kt_remove_entry.html | 32 +- .../doc/html/appdev/refs/api/krb5_kt_resolve.html | 32 +- .../appdev/refs/api/krb5_kt_start_seq_get.html | 32 +- .../doc/html/appdev/refs/api/krb5_kuserok.html | 30 +- .../refs/api/krb5_make_authdata_kdc_issued.html | 28 +- .../appdev/refs/api/krb5_marshal_credentials.html | 30 +- .../html/appdev/refs/api/krb5_merge_authdata.html | 30 +- .../doc/html/appdev/refs/api/krb5_mk_1cred.html | 32 +- .../doc/html/appdev/refs/api/krb5_mk_error.html | 30 +- .../doc/html/appdev/refs/api/krb5_mk_ncred.html | 38 +- .../doc/html/appdev/refs/api/krb5_mk_priv.html | 36 +- .../krb5/doc/html/appdev/refs/api/krb5_mk_rep.html | 32 +- .../doc/html/appdev/refs/api/krb5_mk_rep_dce.html | 30 +- .../krb5/doc/html/appdev/refs/api/krb5_mk_req.html | 30 +- .../html/appdev/refs/api/krb5_mk_req_extended.html | 36 +- .../doc/html/appdev/refs/api/krb5_mk_safe.html | 36 +- .../html/appdev/refs/api/krb5_os_localaddr.html | 30 +- .../html/appdev/refs/api/krb5_pac_add_buffer.html | 44 +- .../doc/html/appdev/refs/api/krb5_pac_free.html | 28 +- .../html/appdev/refs/api/krb5_pac_get_buffer.html | 30 +- .../appdev/refs/api/krb5_pac_get_client_info.html | 30 +- .../html/appdev/refs/api/krb5_pac_get_types.html | 30 +- .../doc/html/appdev/refs/api/krb5_pac_init.html | 30 +- .../doc/html/appdev/refs/api/krb5_pac_parse.html | 30 +- .../doc/html/appdev/refs/api/krb5_pac_sign.html | 28 +- .../html/appdev/refs/api/krb5_pac_sign_ext.html | 28 +- .../doc/html/appdev/refs/api/krb5_pac_verify.html | 30 +- .../html/appdev/refs/api/krb5_pac_verify_ext.html | 28 +- .../doc/html/appdev/refs/api/krb5_parse_name.html | 32 +- .../appdev/refs/api/krb5_parse_name_flags.html | 40 +- .../refs/api/krb5_prepend_error_message.html | 28 +- .../html/appdev/refs/api/krb5_principal2salt.html | 30 +- .../appdev/refs/api/krb5_principal_compare.html | 30 +- .../refs/api/krb5_principal_compare_any_realm.html | 30 +- .../refs/api/krb5_principal_compare_flags.html | 38 +- .../doc/html/appdev/refs/api/krb5_process_key.html | 28 +- .../html/appdev/refs/api/krb5_prompter_posix.html | 32 +- .../doc/html/appdev/refs/api/krb5_random_key.html | 28 +- .../doc/html/appdev/refs/api/krb5_rd_cred.html | 32 +- .../doc/html/appdev/refs/api/krb5_rd_error.html | 30 +- .../doc/html/appdev/refs/api/krb5_rd_priv.html | 36 +- .../krb5/doc/html/appdev/refs/api/krb5_rd_rep.html | 30 +- .../doc/html/appdev/refs/api/krb5_rd_rep_dce.html | 30 +- .../krb5/doc/html/appdev/refs/api/krb5_rd_req.html | 32 +- .../doc/html/appdev/refs/api/krb5_rd_safe.html | 36 +- .../html/appdev/refs/api/krb5_read_password.html | 32 +- .../html/appdev/refs/api/krb5_realm_compare.html | 30 +- .../doc/html/appdev/refs/api/krb5_recvauth.html | 30 +- .../appdev/refs/api/krb5_recvauth_version.html | 30 +- .../refs/api/krb5_responder_get_challenge.html | 28 +- .../refs/api/krb5_responder_list_questions.html | 28 +- .../api/krb5_responder_otp_challenge_free.html | 28 +- .../refs/api/krb5_responder_otp_get_challenge.html | 28 +- .../refs/api/krb5_responder_otp_set_answer.html | 28 +- .../api/krb5_responder_pkinit_challenge_free.html | 28 +- .../api/krb5_responder_pkinit_get_challenge.html | 28 +- .../refs/api/krb5_responder_pkinit_set_answer.html | 28 +- .../appdev/refs/api/krb5_responder_set_answer.html | 30 +- .../appdev/refs/api/krb5_salttype_to_string.html | 30 +- .../doc/html/appdev/refs/api/krb5_sendauth.html | 32 +- .../api/krb5_server_decrypt_ticket_keytab.html | 30 +- .../appdev/refs/api/krb5_set_default_realm.html | 32 +- .../refs/api/krb5_set_default_tgs_enctypes.html | 32 +- .../appdev/refs/api/krb5_set_error_message.html | 28 +- .../appdev/refs/api/krb5_set_kdc_recv_hook.html | 28 +- .../appdev/refs/api/krb5_set_kdc_send_hook.html | 28 +- .../html/appdev/refs/api/krb5_set_password.html | 34 +- .../refs/api/krb5_set_password_using_ccache.html | 32 +- .../appdev/refs/api/krb5_set_principal_realm.html | 32 +- .../html/appdev/refs/api/krb5_set_real_time.html | 30 +- .../appdev/refs/api/krb5_set_trace_callback.html | 30 +- .../appdev/refs/api/krb5_set_trace_filename.html | 30 +- .../doc/html/appdev/refs/api/krb5_sname_match.html | 32 +- .../appdev/refs/api/krb5_sname_to_principal.html | 36 +- .../appdev/refs/api/krb5_string_to_cksumtype.html | 30 +- .../appdev/refs/api/krb5_string_to_deltat.html | 30 +- .../appdev/refs/api/krb5_string_to_enctype.html | 30 +- .../html/appdev/refs/api/krb5_string_to_key.html | 28 +- .../appdev/refs/api/krb5_string_to_salttype.html | 30 +- .../appdev/refs/api/krb5_string_to_timestamp.html | 30 +- .../doc/html/appdev/refs/api/krb5_timeofday.html | 32 +- .../refs/api/krb5_timestamp_to_sfstring.html | 30 +- .../appdev/refs/api/krb5_timestamp_to_string.html | 30 +- .../html/appdev/refs/api/krb5_tkt_creds_free.html | 28 +- .../html/appdev/refs/api/krb5_tkt_creds_get.html | 30 +- .../appdev/refs/api/krb5_tkt_creds_get_creds.html | 30 +- .../appdev/refs/api/krb5_tkt_creds_get_times.html | 30 +- .../html/appdev/refs/api/krb5_tkt_creds_init.html | 30 +- .../html/appdev/refs/api/krb5_tkt_creds_step.html | 32 +- .../refs/api/krb5_unmarshal_credentials.html | 30 +- .../html/appdev/refs/api/krb5_unparse_name.html | 32 +- .../appdev/refs/api/krb5_unparse_name_ext.html | 32 +- .../appdev/refs/api/krb5_unparse_name_flags.html | 38 +- .../refs/api/krb5_unparse_name_flags_ext.html | 32 +- .../html/appdev/refs/api/krb5_us_timeofday.html | 32 +- .../doc/html/appdev/refs/api/krb5_use_enctype.html | 28 +- .../refs/api/krb5_verify_authdata_kdc_issued.html | 28 +- .../html/appdev/refs/api/krb5_verify_checksum.html | 28 +- .../appdev/refs/api/krb5_verify_init_creds.html | 30 +- .../refs/api/krb5_verify_init_creds_opt_init.html | 28 +- ...b5_verify_init_creds_opt_set_ap_req_nofail.html | 28 +- .../refs/api/krb5_vprepend_error_message.html | 28 +- .../appdev/refs/api/krb5_vset_error_message.html | 28 +- .../appdev/refs/api/krb5_vwrap_error_message.html | 28 +- .../appdev/refs/api/krb5_wrap_error_message.html | 28 +- crypto/krb5/doc/html/appdev/refs/index.html | 24 +- .../html/appdev/refs/macros/ADDRTYPE_ADDRPORT.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_CHAOS.html | 41 +- .../doc/html/appdev/refs/macros/ADDRTYPE_DDP.html | 41 +- .../appdev/refs/macros/ADDRTYPE_DIRECTIONAL.html | 152 + .../doc/html/appdev/refs/macros/ADDRTYPE_INET.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_INET6.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_IPPORT.html | 35 +- .../doc/html/appdev/refs/macros/ADDRTYPE_ISO.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_IS_LOCAL.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_NETBIOS.html | 35 +- .../html/appdev/refs/macros/ADDRTYPE_UNIXSOCK.html | 152 + .../doc/html/appdev/refs/macros/ADDRTYPE_XNS.html | 41 +- .../html/appdev/refs/macros/AD_TYPE_EXTERNAL.html | 41 +- .../refs/macros/AD_TYPE_FIELD_TYPE_MASK.html | 35 +- .../appdev/refs/macros/AD_TYPE_REGISTERED.html | 35 +- .../html/appdev/refs/macros/AD_TYPE_RESERVED.html | 35 +- .../html/appdev/refs/macros/AP_OPTS_CBT_FLAG.html | 152 + .../refs/macros/AP_OPTS_ETYPE_NEGOTIATION.html | 41 +- .../refs/macros/AP_OPTS_MUTUAL_REQUIRED.html | 41 +- .../html/appdev/refs/macros/AP_OPTS_RESERVED.html | 35 +- .../refs/macros/AP_OPTS_USE_SESSION_KEY.html | 35 +- .../appdev/refs/macros/AP_OPTS_USE_SUBKEY.html | 35 +- .../html/appdev/refs/macros/AP_OPTS_WIRE_MASK.html | 35 +- .../refs/macros/CKSUMTYPE_CMAC_CAMELLIA128.html | 35 +- .../refs/macros/CKSUMTYPE_CMAC_CAMELLIA256.html | 35 +- .../html/appdev/refs/macros/CKSUMTYPE_CRC32.html | 35 +- .../html/appdev/refs/macros/CKSUMTYPE_DESCBC.html | 35 +- .../refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR.html | 35 +- .../refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128.html | 35 +- .../refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256.html | 35 +- .../refs/macros/CKSUMTYPE_HMAC_SHA1_DES3.html | 35 +- .../macros/CKSUMTYPE_HMAC_SHA256_128_AES128.html | 35 +- .../macros/CKSUMTYPE_HMAC_SHA384_192_AES256.html | 35 +- .../refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR.html | 35 +- .../appdev/refs/macros/CKSUMTYPE_NIST_SHA.html | 35 +- .../html/appdev/refs/macros/CKSUMTYPE_RSA_MD4.html | 35 +- .../appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES.html | 35 +- .../html/appdev/refs/macros/CKSUMTYPE_RSA_MD5.html | 35 +- .../appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES.html | 35 +- .../html/appdev/refs/macros/CKSUMTYPE_SHA1.html | 35 +- .../macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96.html | 35 +- .../macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128.html | 35 +- .../macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96.html | 35 +- .../macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192.html | 35 +- .../appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC.html | 35 +- .../refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP.html | 35 +- .../refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC.html | 35 +- .../refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES3_CBC_ENV.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES3_CBC_RAW.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES3_CBC_SHA.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES_CBC_CRC.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES_CBC_MD4.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES_CBC_MD5.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES_CBC_RAW.html | 35 +- .../appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1.html | 35 +- .../appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS.html | 35 +- .../appdev/refs/macros/ENCTYPE_MD5_RSA_CMS.html | 35 +- .../doc/html/appdev/refs/macros/ENCTYPE_NULL.html | 35 +- .../appdev/refs/macros/ENCTYPE_RC2_CBC_ENV.html | 35 +- .../html/appdev/refs/macros/ENCTYPE_RSA_ENV.html | 35 +- .../refs/macros/ENCTYPE_RSA_ES_OAEP_ENV.html | 35 +- .../appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS.html | 35 +- .../html/appdev/refs/macros/ENCTYPE_UNKNOWN.html | 35 +- .../appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE.html | 35 +- .../appdev/refs/macros/KDC_OPT_CANONICALIZE.html | 35 +- .../refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT.html | 35 +- .../macros/KDC_OPT_DISABLE_TRANSITED_CHECK.html | 35 +- .../refs/macros/KDC_OPT_ENC_TKT_IN_SKEY.html | 35 +- .../appdev/refs/macros/KDC_OPT_FORWARDABLE.html | 35 +- .../html/appdev/refs/macros/KDC_OPT_FORWARDED.html | 35 +- .../html/appdev/refs/macros/KDC_OPT_POSTDATED.html | 35 +- .../html/appdev/refs/macros/KDC_OPT_PROXIABLE.html | 35 +- .../doc/html/appdev/refs/macros/KDC_OPT_PROXY.html | 35 +- .../doc/html/appdev/refs/macros/KDC_OPT_RENEW.html | 35 +- .../html/appdev/refs/macros/KDC_OPT_RENEWABLE.html | 35 +- .../appdev/refs/macros/KDC_OPT_RENEWABLE_OK.html | 35 +- .../refs/macros/KDC_OPT_REQUEST_ANONYMOUS.html | 35 +- .../html/appdev/refs/macros/KDC_OPT_VALIDATE.html | 35 +- .../appdev/refs/macros/KDC_TKT_COMMON_MASK.html | 35 +- .../KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE.html | 35 +- .../refs/macros/KRB5_ANONYMOUS_PRINCSTR.html | 35 +- .../refs/macros/KRB5_ANONYMOUS_REALMSTR.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_AP_REP.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_AP_REQ.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_AS_REP.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_AS_REQ.html | 35 +- .../appdev/refs/macros/KRB5_AUTHDATA_AND_OR.html | 35 +- .../refs/macros/KRB5_AUTHDATA_AP_OPTIONS.html | 35 +- .../refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR.html | 35 +- .../appdev/refs/macros/KRB5_AUTHDATA_CAMMAC.html | 35 +- .../macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION.html | 35 +- .../appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR.html | 35 +- .../refs/macros/KRB5_AUTHDATA_IF_RELEVANT.html | 35 +- .../macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS.html | 35 +- .../refs/macros/KRB5_AUTHDATA_KDC_ISSUED.html | 35 +- .../macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC.html | 35 +- .../appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE.html | 35 +- .../appdev/refs/macros/KRB5_AUTHDATA_SESAME.html | 35 +- .../refs/macros/KRB5_AUTHDATA_SIGNTICKET.html | 35 +- .../refs/macros/KRB5_AUTHDATA_WIN2K_PAC.html | 35 +- .../refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE.html | 35 +- .../refs/macros/KRB5_AUTH_CONTEXT_DO_TIME.html | 35 +- .../KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR.html | 35 +- ...KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR.html | 35 +- .../KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR.html | 35 +- ...RB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR.html | 35 +- .../refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL.html | 35 +- .../macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE.html | 35 +- .../refs/macros/KRB5_AUTH_CONTEXT_RET_TIME.html | 35 +- .../refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_CRED.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM.html | 35 +- .../appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA.html | 35 +- .../appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_HEADER.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_PADDING.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_STREAM.html | 35 +- .../refs/macros/KRB5_CRYPTO_TYPE_TRAILER.html | 35 +- .../refs/macros/KRB5_CYBERSAFE_SECUREID.html | 35 +- .../refs/macros/KRB5_DOMAIN_X500_COMPRESS.html | 35 +- .../refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_ERROR.html | 35 +- .../appdev/refs/macros/KRB5_FAST_REQUIRED.html | 35 +- .../html/appdev/refs/macros/KRB5_GC_CACHED.html | 35 +- .../appdev/refs/macros/KRB5_GC_CANONICALIZE.html | 35 +- .../macros/KRB5_GC_CONSTRAINED_DELEGATION.html | 35 +- .../appdev/refs/macros/KRB5_GC_FORWARDABLE.html | 35 +- .../html/appdev/refs/macros/KRB5_GC_NO_STORE.html | 35 +- .../refs/macros/KRB5_GC_NO_TRANSIT_CHECK.html | 35 +- .../html/appdev/refs/macros/KRB5_GC_USER_USER.html | 35 +- .../KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST.html | 35 +- .../macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS.html | 35 +- .../KRB5_GET_INIT_CREDS_OPT_CANONICALIZE.html | 35 +- .../KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT.html | 35 +- .../macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST.html | 35 +- .../KRB5_GET_INIT_CREDS_OPT_FORWARDABLE.html | 35 +- .../KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST.html | 35 +- .../macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE.html | 35 +- .../macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE.html | 35 +- .../refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT.html | 35 +- .../macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE.html | 35 +- .../appdev/refs/macros/KRB5_INIT_CONTEXT_KDC.html | 35 +- .../refs/macros/KRB5_INIT_CONTEXT_SECURE.html | 35 +- .../macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE.html | 35 +- .../html/appdev/refs/macros/KRB5_INT16_MAX.html | 35 +- .../html/appdev/refs/macros/KRB5_INT16_MIN.html | 35 +- .../html/appdev/refs/macros/KRB5_INT32_MAX.html | 35 +- .../html/appdev/refs/macros/KRB5_INT32_MIN.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE.html | 35 +- .../macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM.html | 35 +- .../macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH.html | 35 +- .../macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ.html | 35 +- .../macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC.html | 35 +- .../macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT.html | 35 +- .../macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_FAST_FINISHED.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_FINISHED.html | 152 + .../refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC.html | 35 +- .../macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG.html | 35 +- .../macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV.html | 41 +- .../refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED.html | 41 +- .../refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET.html | 35 +- .../macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM.html | 35 +- .../macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX.html | 35 +- .../KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY.html | 35 +- .../KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST.html | 35 +- .../KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM.html | 35 +- .../KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE.html | 35 +- .../appdev/refs/macros/KRB5_KEYUSAGE_SPAKE.html | 35 +- .../KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY.html | 35 +- .../KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY.html | 35 +- .../macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY.html | 35 +- .../macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY.html | 35 +- .../refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH.html | 35 +- .../macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM.html | 35 +- .../refs/macros/KRB5_KPASSWD_ACCESSDENIED.html | 35 +- .../appdev/refs/macros/KRB5_KPASSWD_AUTHERROR.html | 35 +- .../refs/macros/KRB5_KPASSWD_BAD_VERSION.html | 35 +- .../appdev/refs/macros/KRB5_KPASSWD_HARDERROR.html | 35 +- .../macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED.html | 35 +- .../appdev/refs/macros/KRB5_KPASSWD_MALFORMED.html | 35 +- .../appdev/refs/macros/KRB5_KPASSWD_SOFTERROR.html | 35 +- .../appdev/refs/macros/KRB5_KPASSWD_SUCCESS.html | 35 +- .../refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME.html | 35 +- .../refs/macros/KRB5_LRQ_ALL_LAST_INITIAL.html | 35 +- .../refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL.html | 35 +- .../appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ.html | 35 +- .../appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT.html | 35 +- .../refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED.html | 35 +- .../refs/macros/KRB5_LRQ_ALL_PW_EXPTIME.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_LRQ_NONE.html | 35 +- .../refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME.html | 35 +- .../refs/macros/KRB5_LRQ_ONE_LAST_INITIAL.html | 35 +- .../refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL.html | 35 +- .../appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ.html | 35 +- .../appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT.html | 35 +- .../refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED.html | 35 +- .../refs/macros/KRB5_LRQ_ONE_PW_EXPTIME.html | 35 +- .../refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL.html | 35 +- .../refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID.html | 35 +- .../appdev/refs/macros/KRB5_NT_MS_PRINCIPAL.html | 35 +- .../refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_PRINCIPAL.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_SMTP_NAME.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_SRV_HST.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_SRV_INST.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_SRV_XHST.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_NT_UID.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_UNKNOWN.html | 35 +- .../html/appdev/refs/macros/KRB5_NT_WELLKNOWN.html | 35 +- .../appdev/refs/macros/KRB5_NT_X500_PRINCIPAL.html | 35 +- .../refs/macros/KRB5_PAC_ATTRIBUTES_INFO.html | 35 +- .../appdev/refs/macros/KRB5_PAC_CLIENT_CLAIMS.html | 35 +- .../appdev/refs/macros/KRB5_PAC_CLIENT_INFO.html | 35 +- .../refs/macros/KRB5_PAC_CREDENTIALS_INFO.html | 35 +- .../refs/macros/KRB5_PAC_DELEGATION_INFO.html | 35 +- .../appdev/refs/macros/KRB5_PAC_DEVICE_CLAIMS.html | 35 +- .../appdev/refs/macros/KRB5_PAC_DEVICE_INFO.html | 35 +- .../appdev/refs/macros/KRB5_PAC_FULL_CHECKSUM.html | 35 +- .../appdev/refs/macros/KRB5_PAC_LOGON_INFO.html | 35 +- .../refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM.html | 35 +- .../appdev/refs/macros/KRB5_PAC_REQUESTOR.html | 35 +- .../refs/macros/KRB5_PAC_SERVER_CHECKSUM.html | 35 +- .../refs/macros/KRB5_PAC_TICKET_CHECKSUM.html | 35 +- .../appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_AFS3_SALT.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_AP_REQ.html | 35 +- .../refs/macros/KRB5_PADATA_AS_CHECKSUM.html | 35 +- .../refs/macros/KRB5_PADATA_AS_FRESHNESS.html | 35 +- .../macros/KRB5_PADATA_ENCRYPTED_CHALLENGE.html | 35 +- .../macros/KRB5_PADATA_ENC_SANDIA_SECURID.html | 35 +- .../refs/macros/KRB5_PADATA_ENC_TIMESTAMP.html | 35 +- .../refs/macros/KRB5_PADATA_ENC_UNIX_TIME.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_ETYPE_INFO.html | 35 +- .../refs/macros/KRB5_PADATA_ETYPE_INFO2.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_FOR_USER.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_FX_COOKIE.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_FX_ERROR.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_FX_FAST.html | 35 +- .../macros/KRB5_PADATA_GET_FROM_TYPED_DATA.html | 35 +- .../html/appdev/refs/macros/KRB5_PADATA_NONE.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_OSF_DCE.html | 35 +- .../refs/macros/KRB5_PADATA_OTP_CHALLENGE.html | 35 +- .../refs/macros/KRB5_PADATA_OTP_PIN_CHANGE.html | 35 +- .../refs/macros/KRB5_PADATA_OTP_REQUEST.html | 35 +- .../refs/macros/KRB5_PADATA_PAC_OPTIONS.html | 35 +- .../refs/macros/KRB5_PADATA_PAC_REQUEST.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_PKINIT_KX.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_PK_AS_REP.html | 35 +- .../refs/macros/KRB5_PADATA_PK_AS_REP_OLD.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_PK_AS_REQ.html | 35 +- .../refs/macros/KRB5_PADATA_PK_AS_REQ_OLD.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_PW_SALT.html | 35 +- .../refs/macros/KRB5_PADATA_REDHAT_IDP_OAUTH2.html | 35 +- .../refs/macros/KRB5_PADATA_REDHAT_PASSKEY.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_REFERRAL.html | 35 +- .../refs/macros/KRB5_PADATA_S4U_X509_USER.html | 35 +- .../refs/macros/KRB5_PADATA_SAM_CHALLENGE.html | 35 +- .../refs/macros/KRB5_PADATA_SAM_CHALLENGE_2.html | 35 +- .../refs/macros/KRB5_PADATA_SAM_REDIRECT.html | 35 +- .../refs/macros/KRB5_PADATA_SAM_RESPONSE.html | 35 +- .../refs/macros/KRB5_PADATA_SAM_RESPONSE_2.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_SESAME.html | 35 +- .../html/appdev/refs/macros/KRB5_PADATA_SPAKE.html | 35 +- .../refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO.html | 35 +- .../appdev/refs/macros/KRB5_PADATA_TGS_REQ.html | 35 +- .../macros/KRB5_PADATA_USE_SPECIFIED_KVNO.html | 35 +- .../macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD.html | 35 +- .../macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE.html | 35 +- .../KRB5_PRINCIPAL_COMPARE_IGNORE_REALM.html | 35 +- .../refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8.html | 35 +- .../macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE.html | 35 +- .../macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM.html | 35 +- .../macros/KRB5_PRINCIPAL_PARSE_NO_DEF_REALM.html | 35 +- .../refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM.html | 35 +- .../macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM.html | 35 +- .../macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY.html | 35 +- .../macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM.html | 35 +- .../refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_PRIV.html | 35 +- .../refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD.html | 35 +- .../KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN.html | 35 +- .../refs/macros/KRB5_PROMPT_TYPE_PASSWORD.html | 35 +- .../refs/macros/KRB5_PROMPT_TYPE_PREAUTH.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_PVNO.html | 35 +- .../appdev/refs/macros/KRB5_REALM_BRANCH_CHAR.html | 35 +- .../refs/macros/KRB5_RECVAUTH_BADAUTHVERS.html | 35 +- .../refs/macros/KRB5_RECVAUTH_SKIP_VERSION.html | 35 +- .../appdev/refs/macros/KRB5_REFERRAL_REALM.html | 35 +- .../KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN.html | 35 +- .../KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN.html | 35 +- .../macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP.html | 35 +- .../KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN.html | 35 +- .../KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC.html | 35 +- .../macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL.html | 35 +- .../KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL.html | 35 +- ...NDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW.html | 35 +- ...NDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY.html | 35 +- ...SPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED.html | 35 +- .../refs/macros/KRB5_RESPONDER_QUESTION_OTP.html | 75 +- .../macros/KRB5_RESPONDER_QUESTION_PASSWORD.html | 35 +- .../macros/KRB5_RESPONDER_QUESTION_PKINIT.html | 51 +- .../doc/html/appdev/refs/macros/KRB5_SAFE.html | 35 +- .../refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD.html | 35 +- .../refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD.html | 35 +- .../refs/macros/KRB5_SAM_USE_SAD_AS_KEY.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_FLAGS.html | 35 +- .../refs/macros/KRB5_TC_MATCH_FLAGS_EXACT.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_KTYPE.html | 35 +- .../refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY.html | 35 +- .../appdev/refs/macros/KRB5_TC_MATCH_TIMES.html | 35 +- .../refs/macros/KRB5_TC_MATCH_TIMES_EXACT.html | 35 +- .../html/appdev/refs/macros/KRB5_TC_NOTICKET.html | 35 +- .../html/appdev/refs/macros/KRB5_TC_OPENCLOSE.html | 35 +- .../refs/macros/KRB5_TC_SUPPORTED_KTYPES.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_TGS_NAME.html | 35 +- .../appdev/refs/macros/KRB5_TGS_NAME_SIZE.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_TGS_REP.html | 35 +- .../doc/html/appdev/refs/macros/KRB5_TGS_REQ.html | 35 +- .../macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE.html | 35 +- .../KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL.html | 35 +- .../appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR.html | 35 +- .../refs/macros/LR_TYPE_INTERPRETATION_MASK.html | 35 +- .../refs/macros/LR_TYPE_THIS_SERVER_ONLY.html | 35 +- .../appdev/refs/macros/MAX_KEYTAB_NAME_LEN.html | 35 +- .../doc/html/appdev/refs/macros/MSEC_DIRBIT.html | 35 +- .../doc/html/appdev/refs/macros/MSEC_VAL_MASK.html | 35 +- .../appdev/refs/macros/SALT_TYPE_AFS_LENGTH.html | 35 +- .../appdev/refs/macros/SALT_TYPE_NO_LENGTH.html | 35 +- .../html/appdev/refs/macros/THREEPARAMOPEN.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_ANONYMOUS.html | 35 +- .../appdev/refs/macros/TKT_FLG_ENC_PA_REP.html | 35 +- .../appdev/refs/macros/TKT_FLG_FORWARDABLE.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_FORWARDED.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_HW_AUTH.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_INITIAL.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_INVALID.html | 35 +- .../appdev/refs/macros/TKT_FLG_MAY_POSTDATE.html | 35 +- .../appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_POSTDATED.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_PRE_AUTH.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_PROXIABLE.html | 35 +- .../doc/html/appdev/refs/macros/TKT_FLG_PROXY.html | 35 +- .../html/appdev/refs/macros/TKT_FLG_RENEWABLE.html | 35 +- .../macros/TKT_FLG_TRANSIT_POLICY_CHECKED.html | 35 +- .../html/appdev/refs/macros/VALID_INT_BITS.html | 35 +- .../html/appdev/refs/macros/VALID_UINT_BITS.html | 35 +- crypto/krb5/doc/html/appdev/refs/macros/index.html | 32 +- .../refs/macros/krb524_convert_creds_kdc.html | 35 +- .../html/appdev/refs/macros/krb524_init_ets.html | 35 +- .../doc/html/appdev/refs/macros/krb5_const.html | 35 +- .../appdev/refs/macros/krb5_princ_component.html | 35 +- .../html/appdev/refs/macros/krb5_princ_name.html | 35 +- .../html/appdev/refs/macros/krb5_princ_realm.html | 35 +- .../appdev/refs/macros/krb5_princ_set_realm.html | 35 +- .../refs/macros/krb5_princ_set_realm_data.html | 35 +- .../refs/macros/krb5_princ_set_realm_length.html | 35 +- .../html/appdev/refs/macros/krb5_princ_size.html | 35 +- .../html/appdev/refs/macros/krb5_princ_type.html | 35 +- .../doc/html/appdev/refs/macros/krb5_roundup.html | 35 +- .../krb5/doc/html/appdev/refs/macros/krb5_x.html | 35 +- .../krb5/doc/html/appdev/refs/macros/krb5_xc.html | 35 +- crypto/krb5/doc/html/appdev/refs/types/index.html | 28 +- .../doc/html/appdev/refs/types/krb5_address.html | 38 +- .../doc/html/appdev/refs/types/krb5_addrtype.html | 28 +- .../doc/html/appdev/refs/types/krb5_ap_rep.html | 34 +- .../appdev/refs/types/krb5_ap_rep_enc_part.html | 40 +- .../doc/html/appdev/refs/types/krb5_ap_req.html | 38 +- .../html/appdev/refs/types/krb5_auth_context.html | 28 +- .../doc/html/appdev/refs/types/krb5_authdata.html | 38 +- .../html/appdev/refs/types/krb5_authdatatype.html | 28 +- .../html/appdev/refs/types/krb5_authenticator.html | 46 +- .../doc/html/appdev/refs/types/krb5_boolean.html | 28 +- .../doc/html/appdev/refs/types/krb5_cc_cursor.html | 28 +- .../doc/html/appdev/refs/types/krb5_ccache.html | 28 +- .../html/appdev/refs/types/krb5_cccol_cursor.html | 28 +- .../doc/html/appdev/refs/types/krb5_checksum.html | 38 +- .../doc/html/appdev/refs/types/krb5_cksumtype.html | 28 +- .../html/appdev/refs/types/krb5_const_pointer.html | 28 +- .../appdev/refs/types/krb5_const_principal.html | 40 +- .../doc/html/appdev/refs/types/krb5_context.html | 28 +- .../krb5/doc/html/appdev/refs/types/krb5_cred.html | 38 +- .../html/appdev/refs/types/krb5_cred_enc_part.html | 44 +- .../doc/html/appdev/refs/types/krb5_cred_info.html | 44 +- .../doc/html/appdev/refs/types/krb5_creds.html | 52 +- .../html/appdev/refs/types/krb5_crypto_iov.html | 34 +- .../html/appdev/refs/types/krb5_cryptotype.html | 28 +- .../krb5/doc/html/appdev/refs/types/krb5_data.html | 36 +- .../doc/html/appdev/refs/types/krb5_deltat.html | 28 +- .../doc/html/appdev/refs/types/krb5_enc_data.html | 38 +- .../appdev/refs/types/krb5_enc_kdc_rep_part.html | 52 +- .../html/appdev/refs/types/krb5_enc_tkt_part.html | 46 +- .../html/appdev/refs/types/krb5_encrypt_block.html | 36 +- .../doc/html/appdev/refs/types/krb5_enctype.html | 28 +- .../doc/html/appdev/refs/types/krb5_error.html | 50 +- .../html/appdev/refs/types/krb5_error_code.html | 28 +- .../refs/types/krb5_expire_callback_func.html | 28 +- .../doc/html/appdev/refs/types/krb5_flags.html | 28 +- .../appdev/refs/types/krb5_get_init_creds_opt.html | 52 +- .../appdev/refs/types/krb5_gic_opt_pa_data.html | 34 +- .../appdev/refs/types/krb5_init_creds_context.html | 28 +- .../doc/html/appdev/refs/types/krb5_int16.html | 28 +- .../doc/html/appdev/refs/types/krb5_int32.html | 28 +- .../doc/html/appdev/refs/types/krb5_kdc_rep.html | 44 +- .../doc/html/appdev/refs/types/krb5_kdc_req.html | 62 +- .../krb5/doc/html/appdev/refs/types/krb5_key.html | 28 +- .../doc/html/appdev/refs/types/krb5_keyblock.html | 38 +- .../doc/html/appdev/refs/types/krb5_keytab.html | 28 +- .../html/appdev/refs/types/krb5_keytab_entry.html | 40 +- .../doc/html/appdev/refs/types/krb5_keyusage.html | 28 +- .../doc/html/appdev/refs/types/krb5_kt_cursor.html | 28 +- .../krb5/doc/html/appdev/refs/types/krb5_kvno.html | 28 +- .../appdev/refs/types/krb5_last_req_entry.html | 36 +- .../doc/html/appdev/refs/types/krb5_magic.html | 28 +- .../refs/types/krb5_mk_req_checksum_func.html | 28 +- .../doc/html/appdev/refs/types/krb5_msgtype.html | 28 +- .../doc/html/appdev/refs/types/krb5_octet.html | 28 +- .../doc/html/appdev/refs/types/krb5_pa_data.html | 38 +- .../html/appdev/refs/types/krb5_pa_pac_req.html | 32 +- .../refs/types/krb5_pa_server_referral_data.html | 40 +- .../refs/types/krb5_pa_svr_referral_data.html | 32 +- .../krb5/doc/html/appdev/refs/types/krb5_pac.html | 28 +- .../doc/html/appdev/refs/types/krb5_pointer.html | 28 +- *** 8352 LINES SKIPPED *** From nobody Sun Aug 10 05:40:17 2025 X-Original-To: dev-commits-src-main@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 4c066p1Vg0z63r0r; Sun, 10 Aug 2025 05:40:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c066p0zlMz3MZs; Sun, 10 Aug 2025 05:40:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754804418; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=C6Sg9ocbquQSleK7dPTr6nvKua0+6DOms2HBQyU3Dkk=; b=sv6KYSftwKa6YhOfyDW7MiqX6vUrs2GvXmlE2nKAr+GxCaqyAUk8qxQmdhz+W7FbKk/HIZ kE3CtzMHRMdqTYcinHzpyBCXm95AGPW5OcB1mp2V/d41mQXxgoaXY+PweFzuyo9LAiGsiC Odv0BnrxLhZFmFjDPC8GMNHKZhCeDxNmFujqca5pWYdlTLggOjWj6E2tsm7Ygk+Qz/0g5s NM+dH6M8tpEAV7iENxH58O9lsOUcPo0J6/MFamrO2axG23QoYLfHl3PxuVvzfNnhK++0d2 hJY2hrTq6f8qONydgcCEDrSjjf2K5gNafsle8OBPmZSYx19sKrUdB7IuVe/xow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754804418; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=C6Sg9ocbquQSleK7dPTr6nvKua0+6DOms2HBQyU3Dkk=; b=M3BN0ZgtUsxls4TIodu6zezbxOwD1aKo20ap3AA2PKjOedG8t4XcakJi8ODEkX9fejXmAD de/TU7lsqvVWeymX6WVWRTUJBOBF0xZ5K5mNbEvzc7XQvBf9tGXnPc0Lky/K/IGzgJ/VBY wYRUz91GmG9C3SohQoXBUGY0hqgx/46g/v2kttAcMwijg2IzqFaV/aqLxfP96ZMU9njUOt su6SgCFz0BEbm4LkQRLXKwvvil98j5YMof2W0Qm6nuzp04jBDWG8VxFEc1kj/K7VX3yJNP Q1SPth64CBVoTNp5OUH6yPp0PTQKVvVIGMpGKtcQgl0UawZdwgLo4Gk/vEy2zg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754804418; a=rsa-sha256; cv=none; b=qoQVBt7zJHchEEhrpqDwjaPhieOZ1/iru/ugrJ0xcdlnQZwBTRWBN/wc4bnMQbzZc6SnQ9 1RMQt0D7n8gzIlrmYfP5+k5+shqsX/l8KpLMtR9oqL0aEbgVaECNHvBQq+74dAu6y0gmqL 5EgqWJ1gjujXWZucY/Loz3GjKNorVQtpgLdxkcVXoKVmV8mZ3kTPoLcirVOQSnvEz+JORk Ui7aI6i49Pl33r1V99uI7aIaM8kcbKWVotCY5x4SCwVJOaSgC8tJnzj25qOwgGeuABoTJe 8nto9n/S2qUzWw0HK7V4NCwtZCo+p73yPw2UyDcZeLEWBQpojLkZahlLcrTKrg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c066p0R2nztnB; Sun, 10 Aug 2025 05:40:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A5eHUq049644; Sun, 10 Aug 2025 05:40:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A5eHT4049641; Sun, 10 Aug 2025 05:40:17 GMT (envelope-from git) Date: Sun, 10 Aug 2025 05:40:17 GMT Message-Id: <202508100540.57A5eHT4049641@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Wolfram Schneider Subject: git: 71d65d2595c8 - main - bsd-family-tree: add End-of-life (EOL) section List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 71d65d2595c8bea69875742da997625be1d4922e Auto-Submitted: auto-generated The branch main has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=71d65d2595c8bea69875742da997625be1d4922e commit 71d65d2595c8bea69875742da997625be1d4922e Author: Wolfram Schneider AuthorDate: 2025-08-10 05:38:15 +0000 Commit: Wolfram Schneider CommitDate: 2025-08-10 05:38:15 +0000 bsd-family-tree: add End-of-life (EOL) section --- share/misc/bsd-family-tree | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree index 07f79008257f..630f7bd2f526 100644 --- a/share/misc/bsd-family-tree +++ b/share/misc/bsd-family-tree @@ -980,6 +980,13 @@ URL: https://web.archive.org/web/20090427195917/http://ezine.daemonnews.org/2001 ("what are the differences between FreeBSD, NetBSD, and OpenBSD?") +End-of-life (EOL) +----------------- +The FreeBSD family tree shows when a release was published. +If you would like to know when the support ends, just look at +https://endoflife.date/freebsd + + Acknowledgments --------------- From nobody Sun Aug 10 05:40:19 2025 X-Original-To: dev-commits-src-main@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 4c066q4bpnz63qvd; Sun, 10 Aug 2025 05:40:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c066q1f60z3MdG; Sun, 10 Aug 2025 05:40:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754804419; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=duL/DGef4J26FJ+vP2fd+H8l1LmF8O3xCj/Kv2dwt3s=; b=yMGRvU/2dwCHVBK3+CmLCgAe4W8iitDWNrha3lOzC3+yn/IJLwDFQnz4+3VrvkTyLCGCv3 wjiBDS9XDDLwumAzqsjoaiRG94EdgCgpfNSWDRjEb8dSdbHbtAtQcx7pe0HAaswqRvndgU 1T99gGOgIVP8jnb/c40t8QfDP/NnwqfPHBO8M5MSXItHMx2eYrEHRauNLjFl+6ydvSk5DP i6iQAwi2oYZoVCVyssV8e00NeSnXYOUi1dtbl8wzpsuWXdQi/GEkG/bfuumpgIMHHkzYy6 /bAOJmHuUzio7MuO5GK79xsFDL/MWfV8fK35WsPWfWSwm3yerqKACkYWFK5eQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754804419; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=duL/DGef4J26FJ+vP2fd+H8l1LmF8O3xCj/Kv2dwt3s=; b=DVOVcqtnXjBfPj+Vkjtjt6X7Igp2ai0aAulB53pQL7UAF63I7qTqZkN17DQsj7qoyvcp1Y VjL3/wLFbZ8QW1AavcL9GIv09GxAL2zKwhEQoATEN4gR4DZCclG9Sq92ZqFFQxmFUCQSh8 P/iVJlACRlw98Xlw7HbYriNg+6508Z91zCI/wA0pFwnNQ7UVEiNwu4HZJuwCPPD/i/Ygti 78P6N0CMOyi/fgXooclR/3FxXewivJnBd0MdtbD5yOPf84InaTC0Nzb6+3XlFEWERit2Ul 3JXQ+TCgXHc/aRiX2KcTn1MoLmvBLvCnd9Y74aiW+bVuskKBf/EBYrL8WQQfcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754804419; a=rsa-sha256; cv=none; b=jR7ifjZhNWMV+HdlFrwkME/e9rHZYh34g1zR/NhIUJiCn6MbM0BIN5dqgXSDnASdipZCg2 LHVxSRqxHuKUo8ebF0tVVjjksICDPQOInt3ZNvbPKvsWvIuZVAIPTFP1BZ7TJ+v4wFQRZ5 i/FQlbOAsR8ScJzgNH1jjVUI3mSfWO/u/H05PU2AmA9V1BODGh9CGTey64W3mW2Yg9BR+U IUVfZJunjHw7zQ37PgComXq1z+rkW9K6h1+WQvqnZq1xKIvBpvvGj6AZvny9mMKfp943kf ZytbW+jDsso81KK3sMGspQdGzXWnZfp+SDE9Ks1WoD2IefyIjtLbAron1xTfIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c066q1F2DztnC; Sun, 10 Aug 2025 05:40:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57A5eJi5049685; Sun, 10 Aug 2025 05:40:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57A5eJUQ049682; Sun, 10 Aug 2025 05:40:19 GMT (envelope-from git) Date: Sun, 10 Aug 2025 05:40:19 GMT Message-Id: <202508100540.57A5eJUQ049682@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Wolfram Schneider Subject: git: 5bffa1d2069a - main - bsd-family-tree: add End-of-Life (EOL) section List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5bffa1d2069a05c8346eb34e17a39085fe0bf09b Auto-Submitted: auto-generated The branch main has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=5bffa1d2069a05c8346eb34e17a39085fe0bf09b commit 5bffa1d2069a05c8346eb34e17a39085fe0bf09b Author: Wolfram Schneider AuthorDate: 2025-08-10 05:39:36 +0000 Commit: Wolfram Schneider CommitDate: 2025-08-10 05:39:36 +0000 bsd-family-tree: add End-of-Life (EOL) section --- share/misc/bsd-family-tree | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree index 630f7bd2f526..7d14530367b0 100644 --- a/share/misc/bsd-family-tree +++ b/share/misc/bsd-family-tree @@ -980,7 +980,7 @@ URL: https://web.archive.org/web/20090427195917/http://ezine.daemonnews.org/2001 ("what are the differences between FreeBSD, NetBSD, and OpenBSD?") -End-of-life (EOL) +End-of-Life (EOL) ----------------- The FreeBSD family tree shows when a release was published. If you would like to know when the support ends, just look at @@ -996,5 +996,5 @@ original BSD announcements from Usenet or tapes. Steven M. Schultz for providing 2.8BSD, 2.10BSD, 2.11BSD manual pages. -- -Copyright (c) 1997-2024 Wolfram Schneider +Copyright (c) 1997-2025 Wolfram Schneider URL: https://cgit.freebsd.org/src/tree/share/misc/bsd-family-tree From nobody Sun Aug 10 10:34:33 2025 X-Original-To: dev-commits-src-main@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 4c0DfM2LPtz64NPx; Sun, 10 Aug 2025 10:34:35 +0000 (UTC) (envelope-from des@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0DfM1l21z45CF; Sun, 10 Aug 2025 10:34:35 +0000 (UTC) (envelope-from des@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754822075; 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=+pSn8Fh8EYR5FjjsXn6lIELjcE2KAoXVn3W+962PXg4=; b=hVUZo1cQDjYb5S3x99mRtFZBmLaIKBAhOFuBDlK2gcssZCjy9F9YUcZqgzKK6mLdcfU1dq m70C0adT1Unk1TkbzN9Ev1XpWz37EJ8j9HdTY4NMOjB3y/K3IzSryckuAAJ02GKm0t6lZo 598OBi1xIqI8mGAJimYrbicg9tXOKR2AWRorpHaWE7kBW9e2I/1R12Kn63VJmUeLbJAh6r ndwlG4/T88MNI91ylM563qTbtIh8AUoNG8nYFHtPY8u2T8fGzvmflcoofk0TKbWyKCM2iv tnsuwhSLXpbOxcqMbZM4cf4k3LpuA9pNrVoseKiRsTDUZ0Gutj2plwA4pX60Rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754822075; 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=+pSn8Fh8EYR5FjjsXn6lIELjcE2KAoXVn3W+962PXg4=; b=IcaW5+XdqKBV/u9T6oHCF8LAujooPa+fqrUezgeCPllvtiDca/y1rDsHdvsXJ+tB3oXUVH 9oGlmlgBNhpd4lB9PieSZfiWJ/PNJFoj3fYivuMtFHlbgX1dchITE/hiigjEkekjj/ffOt IpsLNJpdhiUIqKsHXNk64SKji45PW/i2EgJYTB1GP95LvDaNYFKGCy7oVZTQH1sHybgAXu i//NTjD/GCnUaeqOxQ39uk8H1U0ma/tWJ32PEh6ftUqazn2YKlwOFAO3lsQ4lGdHwoVT34 pB8yoeCe7PP/EWb8llBt7/S279z+oY//fg7Gs0XaVbcK3pKJ60ZDM4SktlamtQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754822075; a=rsa-sha256; cv=none; b=JOX+rKLGfUD2+hEXsXcFMrlaAjJPvcLrfJYtNDa4Nb0SsNMjd52X01rp9K33PDdZBqPi/0 uZ448O616mf4plolmjNy3fUrqGKyfXfFMYEU18HJ6wMuLpaaGB6Kg9IB2OpGhUsdhn+PFk EpoqgXU/nY+nrf93xOhby4ouKiQ4VjtAEewH9VtfFaa7PKFdHVng6U3QGEKvSUJc03EDW1 qJDyqH5ApLjizWUnBsZCctz5HCAYmIL6URiYxv+hSCImLAyqcy3PH48Q6keqPl/yGTqmz4 +UOIxL2xT677mzrbfxewvLnVDfz3oXMmnbcZBUtUM0WWH2d37Bkm8qvRV8o1NQ== Received: from ltc.des.dev (88-177-82-251.subs.proxad.net [88.177.82.251]) (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 4c0DfM0Sp3zHrX; Sun, 10 Aug 2025 10:34:35 +0000 (UTC) (envelope-from des@freebsd.org) Received: by ltc.des.dev (Postfix, from userid 1001) id BF16B12CDA; Sun, 10 Aug 2025 12:34:33 +0200 (CEST) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Cy Schubert Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: f1c4c3daccba - main - krb5: Update MIT KRB5 from 1.21 to 1.22 In-Reply-To: <202508100532.57A5W4Dl038254@gitrepo.freebsd.org> (Cy Schubert's message of "Sun, 10 Aug 2025 05:32:04 GMT") References: <202508100532.57A5W4Dl038254@gitrepo.freebsd.org> User-Agent: Gnus/5.13 (Gnus v5.13) Date: Sun, 10 Aug 2025 12:34:33 +0200 Message-ID: <868qjrzcqu.fsf@ltc.des.dev> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I think perhaps this should have waited until we'd stabilized 1.21. These two reviews are critical to getting ports building again: https://reviews.freebsd.org/D51841 https://reviews.freebsd.org/D51842 These three are less critical but still need to be addressed: https://reviews.freebsd.org/D51830 https://reviews.freebsd.org/D51840 https://reviews.freebsd.org/D51853 DES --=20 Dag-Erling Sm=C3=B8rgrav - des@FreeBSD.org From nobody Sun Aug 10 14:59:07 2025 X-Original-To: dev-commits-src-main@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 4c0LWb2KVdz645m5; Sun, 10 Aug 2025 14:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0LWb1X3Fz3b5V; Sun, 10 Aug 2025 14:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754837947; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Xf6BboQ5DuqtYAMVsq8cD2WAWtzKNpo+pwxMpSiAaU=; b=HmwAPTxkffU3QwqYAOIFJn0RJKguA1XuaomvQuN7OCyLiDfH8mnuzOfoQ7Nwj0HrcDHy7h 6tp6cT/RaFu/TnI14gGRZPvK4ANwXFna3/9ApSGkj9z2216Hz3SOdjACqN9kERxIUA3TFM EkONnxIP2ry9k0ts7/pVxpLTv5CCAalEMJzSMHPnAPP/yt+7bQoXkUk1rIlAmzkJGw08mk RD3G0Aj4fV51fCb4aEhBm5fAS+3TK4DxU15d8teZKyg0waInNSdOJ0gPUcm1V3skJIIFSd IoyB/fzVPHhe7cmfXvpybCFFAcCbcovVKI6Xl3NQZ2ibMe40AECKO6mvNAdSxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754837947; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Xf6BboQ5DuqtYAMVsq8cD2WAWtzKNpo+pwxMpSiAaU=; b=RNICqd3wgNzog2XZHssLVpAKC7nKxi0JCk1VfhWTZ9dX8+uDOZ1A4XxTPKY18RayBRv6aC Q6icAzMSbZxOIqI0yy0UIoiMy79aYbc4rOX6hryv+lbFiWQrwm7rJIJGJyF2f70TkKX5WK sKsakLWz2Vkg7CGL9meFFtMVV0Km/99FrsgH/fltXC8coqzFudzskwL3mvkROeXTpV7FYI Vggr2qq6InPLmsOwgp/2jo8urEQN/MW7bp2NZ9eCbUXIrQw4AdmYlpUMVtQvTlPnM+qFBu JAztchsCLxaO5HRIu9rFk4X2crF/1xb/9Hl7YIGYT1+Gf7i74PHVWLS1kMQ/6Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754837947; a=rsa-sha256; cv=none; b=s0r0tVlP7uMo3Boxeybqf+PrpndCP0tdk+xfqYnmOYqP3L82VZEpFpJ0X6x11FD5P9dWSD kwCBiWvNB0BwLQbPe1J7DMAUC3WXgKZZO9jBdMqNr+0o7FPGHAVicDo41vUeWV521oG2o2 i46qhuJuD8WAjzuvnCKMWJ4kMqjstdka6UtfBl2NIcXzmrVeQYzKYtbIvVChsm3zlvD8tc dboBZfbj6Fsno2E+LUGJ11NZmAh2nZHOTWAKmIAeHybsMTQyodjq/i1C1PF+z2ILSk2o+a w93juTi8BmNO82jcxCayJVnHxLQf+gHhNEtX/TFU8Ty83bhxhlTNPai4kJ76mQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0LWb15hCz19Cx; Sun, 10 Aug 2025 14:59:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AEx7Jr091887; Sun, 10 Aug 2025 14:59:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AEx7BK091884; Sun, 10 Aug 2025 14:59:07 GMT (envelope-from git) Date: Sun, 10 Aug 2025 14:59:07 GMT Message-Id: <202508101459.57AEx7BK091884@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Wolfram Schneider Subject: git: c8cf8d851cd4 - main - bsd-family-tree: improve EOL section with FreeBSD references List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wosch X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c8cf8d851cd4e9bd4add7f8dad22b53f3d2d923a Auto-Submitted: auto-generated The branch main has been updated by wosch: URL: https://cgit.FreeBSD.org/src/commit/?id=c8cf8d851cd4e9bd4add7f8dad22b53f3d2d923a commit c8cf8d851cd4e9bd4add7f8dad22b53f3d2d923a Author: Wolfram Schneider AuthorDate: 2025-08-10 14:57:42 +0000 Commit: Wolfram Schneider CommitDate: 2025-08-10 14:57:42 +0000 bsd-family-tree: improve EOL section with FreeBSD references Reported by: Herbert J. Skuhra --- share/misc/bsd-family-tree | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree index 7d14530367b0..3f13f72de17e 100644 --- a/share/misc/bsd-family-tree +++ b/share/misc/bsd-family-tree @@ -984,7 +984,9 @@ End-of-Life (EOL) ----------------- The FreeBSD family tree shows when a release was published. If you would like to know when the support ends, just look at -https://endoflife.date/freebsd +https://www.freebsd.org/security/#sup and +https://www.freebsd.org/security/unsupported +For other operating systems, see https://endoflife.date Acknowledgments From nobody Sun Aug 10 15:37:13 2025 X-Original-To: dev-commits-src-main@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 4c0MMZ000lz64B4M; Sun, 10 Aug 2025 15:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMY6S3kz3f5S; Sun, 10 Aug 2025 15:37:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ci/Jmg4EdzOb2WO69QHNnS900GKFiLXkkcohSNhi+fY=; b=ujL+w1AyuKY1dVsvEcME8RDzdvk7T+nMB+e6DskgWni0rOXqsFjZu8pJofIo/Beiz8v5RO VI3c1x2UkKvwSk1tENRRkm6uSlxAxjSz8DXcgYEKTc/sJomhxnIAS8GEejI/KNdwRf+wy0 RwsTSi2jCvUM/yNedGB7k3DnJQQYnMsCOP45aLvbtABjTzH9yKyP3MLQL/O3dIa6HmuGsy hPYilFAK/3nWOQN5KHGjtikQzE492aOcuYQYEuLsKUyvPOYZNIJsVC6lKyLA66CXkmacx0 AD6CEXOTei8j15f0HVcC59wkzCGzbMwqzJv1ABoWFSa1Pgm3gwloPCc73Ndwqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ci/Jmg4EdzOb2WO69QHNnS900GKFiLXkkcohSNhi+fY=; b=F+cFWoHeaIm6kBDSohYvnqMjlY1K4uJY0mMJDkn0Yoto928CDuOVzOknjBbQ0Kgo5rFCBC Jp524kmQUfs+ijA7rGNfNDM62NxBJ81aD/XrCi4uPGJUEJW6McheaLJ9PNCDqzTPv/nOBI ZmEGPNZAW9Kd0QzBQ99nNr4UoqJ459MWjHTpHf8a1LjMl0oPU35gAGZRaXMvVUh7E/RIB7 EZVjwBPjYAPHiNlLnShEnPY8ZEuie2xQidS4VorUIfxfOoC4w1foOrUNbAmitEdQvIb5yw PyxY0IpTSeskFbz/SWSqZaz+8YsqKsBWhOQUBR3us2914l/p5lbTBiw5dL5exQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840233; a=rsa-sha256; cv=none; b=Cv83nWW4vzIxoT4RFsCB2WSCxktWlZ6AfSDV6AiQpEJLWnme5qhwNaPdtc0Di2X0W3E5qb rOhmwpe2Tw5r2UKHCbcxseH2tYbTcyEU92iMKSN61rI080ln8MLxDxxFPCNJJyj5N3vuhw ZLiSAHvs1z89QuyLKjKJBHYBCiJwlibiTUMehl7C4sSfa+6JYnUJf+xWNbBIYHr6G0+4v4 3PfVJY3CfylkeGNjdDCQEJHwT11a6D6wMgtycWgwngreEabjUV89RjPsmv1pE3ilfLMZAS 7w4aGBJUS2ILhSQEoO3kc2kUgThKzJihVeOSoOneMRMRwVuCcTrUYzVDjFfjAQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMY63W9z1BSv; Sun, 10 Aug 2025 15:37:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbD40067116; Sun, 10 Aug 2025 15:37:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbD3a067114; Sun, 10 Aug 2025 15:37:13 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:13 GMT Message-Id: <202508101537.57AFbD3a067114@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 5467020a540d - main - rc.conf: Use user.localbase to determine _localbase List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5467020a540d92a39dcabc149a264f3c0d0c084c Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=5467020a540d92a39dcabc149a264f3c0d0c084c commit 5467020a540d92a39dcabc149a264f3c0d0c084c Author: Lexi Winter AuthorDate: 2025-08-10 12:24:03 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:39 +0000 rc.conf: Use user.localbase to determine _localbase When running an rc.d script outside of boot, ${_localbase} isn't set, and rc.conf hardcodes the default value to /usr/local. Instead, try to get the localbase from the user.localbase sysctl, and only fall back to /usr/local if we can't for some reason. This fixes e.g. /etc/rc.d/ldconfig when localbase has a non-default value. Reviewed by: imp, des Differential Revision: https://reviews.freebsd.org/D51852 --- libexec/rc/rc.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf index d502361eca37..bfa46bd343a6 100644 --- a/libexec/rc/rc.conf +++ b/libexec/rc/rc.conf @@ -21,6 +21,7 @@ ############################################################## # Set default value of _localbase if not previously set +: ${_localbase:="$(/sbin/sysctl -n user.localbase 2> /dev/null)"} : ${_localbase:="/usr/local"} # rc_debug can't be set here without interferring with rc.subr's setting it From nobody Sun Aug 10 15:37:14 2025 X-Original-To: dev-commits-src-main@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 4c0MMb1jYtz649r6; Sun, 10 Aug 2025 15:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMb0YTQz3dwK; Sun, 10 Aug 2025 15:37:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840235; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RJfNO41h4jglQCXkxb2PRcwegTVwz0QrJsu/e83RPrc=; b=T4JdH9lL9DJAe1pJpWL9a2mssbnpnT0jMfDwKPtaVYNRgcMHPy66HRT6G1A0H8T1Q3WGAn Z2rBJIm3hOvZiOeRooFT/rj2fdDR2TinaI6YMNk5wBfP5LZPYpDsbDZEfRSHZQeK+W1IRG Nz69TIkAmxS/Ue1Fb3ibZncjtmVpOlWTC+mLNBEMb+SV2ijO/f8ghNEWb00RyOX8fo7b/d 0sSkXwOdn7CeZTjmYlHMl6voE0m3vn6T6cFVsYrUEwKt9AM2VxUN/2gmp7XnzSRNXHmvUf vr7Yuk0hTWh8OufPvkhYE6i//J7Le5iO6iA+epKNAVlK6PsOhWxPnTFgTZk00Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840235; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RJfNO41h4jglQCXkxb2PRcwegTVwz0QrJsu/e83RPrc=; b=EqjZ2PzPGrygS+sDwrhuJVSbD4GBNFPxXvRoWEuVDzbOtno4e6bTt6siUpViZ2iDc2scSv 346RgU5S+wGUPy8MF+y91nxeyZQhFxRlY1A6QYtNgKbJwPmPHMKCA+ow46WT28xOXgy/dp F1nkC2JjuT3m5J9HpA80StvkOELFJaWJqJqKtqQVg5dPWv61fkr8G9v95s3jk181oXaRYp 5ACgZ8RbEMDySB6ecPSQShmztYlmg8QEbF0mPZj02hLU/pZRSzv53mqr5zbjzKDG2rkFM+ kQl77eCDsDCsKN6iDUuY6vNpiTJpeC87fyKyKGm2O0hY+CV7KOkQwG5z6fUS+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840235; a=rsa-sha256; cv=none; b=NVV15xKGpq6TOvMDmo/k/XOnFS2LySpHT6/aJaX2Ms5XTmhK2aEUkZqFPeJH6LUVYWgcJT feeGXZ0j0zJ/FRaw7oYAQS9WvLckA5mgKTYZ+32HnHcQ4Vqzjaxwu+BwRVKdclNaCDquVe dfIKF6uMH1wlWNp4OJdOG5utsjDZ2tNtL7vOTJNtkzn5GUFrEW4LBBZTZhuZZjVkS74cCU xRDO+iV6Y1nI1wU9WZwLJlpoY5o7F3lYFuDjWJlD7G4F79/oonQAK6if006VWJu+NnVhcc 8qIkcMc9cPvCgqcWZTM6XPjq9TyF78FKB6/zYqUIUDDRCmIazm8QleFPvRppyQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMZ70dJz1Btc; Sun, 10 Aug 2025 15:37:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbElf067148; Sun, 10 Aug 2025 15:37:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbErj067146; Sun, 10 Aug 2025 15:37:14 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:14 GMT Message-Id: <202508101537.57AFbErj067146@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 10eecc467f32 - main - krb5: Don't install gssapi.h twice List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 10eecc467f3214d709283fff05ed2c81abe8408b Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=10eecc467f3214d709283fff05ed2c81abe8408b commit 10eecc467f3214d709283fff05ed2c81abe8408b Author: Lexi Winter AuthorDate: 2025-08-10 12:25:24 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:39 +0000 krb5: Don't install gssapi.h twice Currently we install /usr/include/gssapi/gssapi.h twice, once in krb5/include/gssapi and once in krb5/lib/gssapi. The version in krb5/include/gssapi is wrong: make searches ${.PATH} and picks crypto/krb5/src/include/gssapi.h to install, but this is the file which is supposed to be installed in /usr/include/gssapi.h. The problem was masked by the fact that we install the correct gssapi/gssapi.h later in krb5/lib/gssapi. Remove gssapi.h and the unneeded ${.PATH} entry from krb/include/gssapi and while here, remove the unused GSSAPI_KRB5 include group. This change does not affect the ultimate result of installworld, it just avoids installing the same file twice with different content. PR: 288594 Reviewed by: brooks, des Differential Revision: https://reviews.freebsd.org/D51840 --- krb5/include/gssapi/Makefile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/krb5/include/gssapi/Makefile b/krb5/include/gssapi/Makefile index b181187e9d95..997cbc06c389 100644 --- a/krb5/include/gssapi/Makefile +++ b/krb5/include/gssapi/Makefile @@ -10,14 +10,11 @@ .include "../Makefile.inc" .PATH: ${KRB5_DIR}/lib/gssapi/krb5 \ - ${KRB5_DIR}/lib/gssapi/generic \ - ${KRB5_DIR}/include + ${KRB5_DIR}/lib/gssapi/generic -INCSGROUPS= INCS GSSAPI_KRB5 INCSDIR= ${INCLUDEDIR}/gssapi -INCS= gssapi.h \ - gssapi_alloc.h \ +INCS= gssapi_alloc.h \ gssapi_ext.h \ gssapi_generic.h \ gssapi_krb5.h From nobody Sun Aug 10 15:37:15 2025 X-Original-To: dev-commits-src-main@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 4c0MMd0Z50z649fn; Sun, 10 Aug 2025 15:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMc3CFrz3f3c; Sun, 10 Aug 2025 15:37:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jxGJXrte0SOEn13dIvk2v69wDAJCJd7pRf3qxqeGp7s=; b=BlljWz7xnZGP/j+tWaY7HR76uIDyeL+cqAYp1HPZdJ8tWT3evnjJpTVXUbuGsNz3acaUoA dTXF8+uXm0gIuiTMc2mNhDuKUjd0/iXSqSlji74JsKgCx//Aw/GGmVmBmhTFxYePJ7elyv dtkWUQQPuP1ahZ1FvTBpr4yPyM033SD4LNiLziVYkFUkQ3dH9f8LVhvW4DIzShyKvZ2enn 8hswf8zz5AMIf2do8WsHevEl43SDHKRDiTC6h8z8UN24vhpNRWyFufCLnqp61u3KZ5x2cE 9qsnUHGayjIvkhGt7a1fX2pBQdEPZl9qVUxziKfkws1Y6LWYOnfL6flVXomBFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jxGJXrte0SOEn13dIvk2v69wDAJCJd7pRf3qxqeGp7s=; b=t3XI2fnieKpp+RasSes1EKTvDSZVAjgxQHIj7eBwzFD1+yQqZ6cOKmrQX8uuNvKDJxH/X3 sQf2unUcpZlgeT+fLuPiq2lX9vQ5HIL+yCa3rEgaIAzyXWJVk5ERrtU5y80oWOVohnQ/Ee 2qSV6M8qcwYRHt1BkIn0KcoFB8Rzqzc1FazMJItzPsco+0R808fCxF0fVC1ch9RAAACTAT JLuPopng9dLtZT4HhDVxKhhIUrlwQDA0UO0VZ1leciAilfUuIMU0s58yuE6PuNSLvwLKOa zkvIrH8IqNOMDqWVQnGRyuEBQ8Hpr2BNhqn1OKt5WW9v/T1HJKuPFjVRmb8J/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840236; a=rsa-sha256; cv=none; b=GoqyopWJzUktdhH/COFIEcEvXuSkaWodsPiMlz+L9P0O2xNeNAxX9xlMdVOLgn9hZCEvy2 WP9HrOACopC2Xz4p7FqAlar/V5OABjSWLR05qZHCI1AphuXXuW/pZ0ySbqZXtlfC6qR4B4 o1pOV0Mk72ccmx94tZ9Ceth2MOwc2qOBO2DS5vwfwI/7VqOTAOvjuI3l57aUgDV7SO3egd t4GmEpPiOPFslAWE+VAJvRpqEu5dvXnP/XwR48OnbV/Rqj5QKv5qrc1DKRhtDDn9ERAQSg C8hQ4xwogDTpzGOiB7wuNoFIa79fIMMKgSdk97nqg9AxlrW7tnlHDQZGArt3NQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMc0ZMFz1BSw; Sun, 10 Aug 2025 15:37:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbFdG067186; Sun, 10 Aug 2025 15:37:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbFX5067183; Sun, 10 Aug 2025 15:37:15 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:15 GMT Message-Id: <202508101537.57AFbFX5067183@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 992d2f928452 - main - rc.d: Fix Kerberos rc scripts List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 992d2f928452519877c7d4377d8e5ae124d68dba Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=992d2f928452519877c7d4377d8e5ae124d68dba commit 992d2f928452519877c7d4377d8e5ae124d68dba Author: Lexi Winter AuthorDate: 2025-08-10 12:26:44 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:39 +0000 rc.d: Fix Kerberos rc scripts Split the Kerberos rc scripts into two sections, one for MIT Kerberos and one for Heimdal. Don't install Heimdal-specific rc scripts (e.g., kfd) for the MIT case. This does not include an OptionalObsoleteFiles change (even though one is needed) because that will be fixed later in a different way. Reviewed by: des (previous version) Differential Revision: https://reviews.freebsd.org/D51830 --- libexec/rc/rc.d/Makefile | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index 62285018cbef..d0c6fc1dee46 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -29,12 +29,8 @@ CONFS= DAEMON \ iovctl \ ip6addrctl \ ipsec \ - ${_kadmind} \ - ${_kdc} \ - ${_kfd} \ kld \ kldxref \ - ${_kpasswdd} \ ldconfig \ linux \ local \ @@ -288,17 +284,32 @@ LPPACKAGE= lp .endif .if ${MK_KERBEROS} != "no" -CONFS+= ipropd_master -CONFS+= ipropd_slave -_kadmind= kadmind -_kdc= kdc -_kfd= kfd -_kpasswdd= kpasswdd - -DIRS+= VAR_HEMIDAL +.if ${MK_MITKRB5} == "no" + +# Heimdal rc scripts +CONFGROUPS+= HEIMDAL +HEIMDAL= ipropd_master \ + ipropd_slave \ + kadmind \ + kdc \ + kfd \ + kpasswdd +HEIMDALPACKAGE= kerberos + +DIRS+= VAR_HEMIDAL VAR_HEMIDAL= /var/heimdal VAR_HEMIDAL_MODE= 700 -.endif + +.else # ${MK_MITKRB5} != "no" + +# MIT KRB5 rc scripts +CONFGROUPS+= KRB5 +KRB5= kadmind \ + kdc +KRB5PACKAGE= kerberos-kdc + +.endif # ${MK_MITKRB5} +.endif # ${MK_KERBEROS} .if ${MK_NIS} != "no" CONFGROUPS+= YP From nobody Sun Aug 10 15:37:17 2025 X-Original-To: dev-commits-src-main@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 4c0MMf0Jkwz64B07; Sun, 10 Aug 2025 15:37:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMd3n3Lz3dwZ; Sun, 10 Aug 2025 15:37:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n/2aRBeZGkVbsoGk1g98KYGwKnJlz+6dUhO2SDlJymM=; b=ReP7Lm1HvWilACyrMW5I7TbrfYs4eZ2WtWUtpzYHnfUprrbvus3aXMUmBcYKUY82Pr0vlv g+q/4jt8tHEcBPv7x/89h8DoZR3Gsk9CTOTI6pDJt7i2mSaEu2zUNneydpadhSiIVzJj9y 4R6+CTqW+4T/ovSLQRByFkdIf6hzU5fH6G+7C0INc1xBEXm319/GrTOX5IDGE8wERPrzw9 itNMp2MWMzNJGTOBAd4fZ86YEYnm5UFB8OsbSuODCo5JctrNllhn7YZwKW/r1Q0N+QvwmL vs5Nxjdly7ALYpvTy620vQ6r+1HfWk8+OQxIkxq+hl7LHqj+LbVJOdyb2Acm6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n/2aRBeZGkVbsoGk1g98KYGwKnJlz+6dUhO2SDlJymM=; b=v6onWcEuqInHKE+OQyCQcYt6aXWJFnC8mFFmeT+y5pWprynKfjn1xvOPF+BP8XPp0L6VP9 5oV/X8i6/7ENCyqBNjTvO0RFh63XvFvvtptvkfBeeOff7nhSEENeYXRXOGcARo4jTa9fX7 Qg21R2jE5m/C/82swK/fN8O3C4qjnbF16gizUL+QAEVuYjD6chNLQuk7mEERABbrIgSQ2A JJrRJR8KJt25hhRTIdLEwrKu9RYBZwkKbX/pLFtzjfr/uxq3f0Ia7WBCw2u+UrYp3wmmrJ a3hWL9bhFm+SQomA6B3Hjp3YVWN6Vf2Wt/DBxYtBPAXLOOVgvjgNVmHMSNl/Lw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840237; a=rsa-sha256; cv=none; b=u4P25djana+uYbApuTO5FyrSG0ysH03D/oA1/gf0xgaXjMPrEMHejVmRNmAl/nXfUkMnh+ Lz7KwstXNQcgbcG4p9CIqY2iFENAthqbLgfWelqK5/jJ7MLYCaNXnKf8UK28701xbJnAVq mYpTaP14ULdiSM8a9r6oecVR3x6SBcVD4Hc6GaI6sLTJBj76aKA8vI3Zt82rBBvkQxw++d Od8s1iGiE6S7TkQM+zjc+gwcrpmoX+F38Lkholt9nRrDXZ1X1Y5MBoorRk7/fpA9RoI8Wt UUPMCxiKify5+VmZijBJd+BZ0OMv8QWhkIg1pm7HHExx5v/N3V4QvOVcIzGvgw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMd1Zj3z1BSx; Sun, 10 Aug 2025 15:37:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbH50067219; Sun, 10 Aug 2025 15:37:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbHrI067216; Sun, 10 Aug 2025 15:37:17 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:17 GMT Message-Id: <202508101537.57AFbHrI067216@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 7ac276298b72 - main - Remove Secure RPC DES authentication List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7ac276298b72982189ac1a5b17461936dc00163e Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=7ac276298b72982189ac1a5b17461936dc00163e commit 7ac276298b72982189ac1a5b17461936dc00163e Author: Lexi Winter AuthorDate: 2025-08-10 12:57:36 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:40 +0000 Remove Secure RPC DES authentication Following the earlier removal of keyserv, none of this functionality works since it requires keyserv. Remove the relevant symbols from libc's Symbol.map. Leave compatibility symbols for existing applications, but since the functions don't work without keyserv, stub them out to return an error. Remove some private symbols that were only used by keyserv; these don't get compatibility symbols. Remove the documentation for the old functions. Remove rpc.ypupdated since it requires DES authentication. Reviewed by: manu, des, emaste Differential Revision: https://reviews.freebsd.org/D50442 --- ObsoleteFiles.inc | 4 + include/rpc/auth_des.h | 79 +---- lib/libc/rpc/Symbol.map | 19 -- lib/libc/rpc/auth_des.c | 455 +---------------------------- lib/libc/rpc/authdes_prot.c | 44 +-- lib/libc/rpc/key_call.c | 424 +++------------------------ lib/libc/rpc/publickey.5 | 40 --- lib/libc/rpc/rpc_secure.3 | 177 +----------- lib/libc/rpc/rpc_soc.3 | 13 +- lib/libc/rpc/rpc_soc.c | 31 +- lib/libc/rpc/svc_auth.c | 8 - lib/libc/rpc/svc_auth_des.c | 460 +----------------------------- lib/librpcsvc/Makefile | 2 +- lib/librpcsvc/yp_update.c | 199 ------------- libexec/rc/rc.conf | 1 - libexec/rc/rc.d/Makefile | 1 - libexec/rc/rc.d/ypupdated | 35 --- share/man/man5/rc.conf.5 | 9 +- sys/rpc/auth.h | 26 -- tools/build/mk/OptionalObsoleteFiles.inc | 2 - usr.sbin/Makefile | 1 - usr.sbin/rpc.ypupdated/Makefile | 32 --- usr.sbin/rpc.ypupdated/Makefile.depend | 18 -- usr.sbin/rpc.ypupdated/update.c | 328 --------------------- usr.sbin/rpc.ypupdated/yp_dbdelete.c | 68 ----- usr.sbin/rpc.ypupdated/yp_dbupdate.c | 147 ---------- usr.sbin/rpc.ypupdated/ypupdate | 32 --- usr.sbin/rpc.ypupdated/ypupdated_extern.h | 32 --- usr.sbin/rpc.ypupdated/ypupdated_main.c | 287 ------------------- usr.sbin/rpc.ypupdated/ypupdated_server.c | 227 --------------- 30 files changed, 83 insertions(+), 3118 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index ec324e82f86d..a6662d31829f 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20250810: Removal of remaining Secure RPC (DES) bits +OLD_FILES+=usr/sbin/rpc.ypupdated +OLD_FILES+=etc/rc.d/ypupdated + # 20250808: nvmfd removed from base install OLD_FILES+=usr/sbin/nvmfd OLD_FILES+=usr/share/man/man8/nvmfd.8.gz diff --git a/include/rpc/auth_des.h b/include/rpc/auth_des.h index 0ff43c13139b..1b4943a74b8b 100644 --- a/include/rpc/auth_des.h +++ b/include/rpc/auth_des.h @@ -33,91 +33,14 @@ * Copyright (c) 1986 - 1991 by Sun Microsystems, Inc. */ -/* - * auth_des.h, Protocol for DES style authentication for RPC - */ +/* Note, RPC DES authentication was removed in FreeBSD 15.0. */ #ifndef _AUTH_DES_ #define _AUTH_DES_ -/* - * There are two kinds of "names": fullnames and nicknames - */ -enum authdes_namekind { - ADN_FULLNAME, - ADN_NICKNAME -}; - -/* - * A fullname contains the network name of the client, - * a conversation key and the window - */ -struct authdes_fullname { - char *name; /* network name of client, up to MAXNETNAMELEN */ - des_block key; /* conversation key */ - u_long window; /* associated window */ -}; - - -/* - * A credential - */ -struct authdes_cred { - enum authdes_namekind adc_namekind; - struct authdes_fullname adc_fullname; - u_long adc_nickname; -}; - - - -/* - * A des authentication verifier - */ -struct authdes_verf { - union { - struct timeval adv_ctime; /* clear time */ - des_block adv_xtime; /* crypt time */ - } adv_time_u; - u_long adv_int_u; -}; - -/* - * des authentication verifier: client variety - * - * adv_timestamp is the current time. - * adv_winverf is the credential window + 1. - * Both are encrypted using the conversation key. - */ -#define adv_timestamp adv_time_u.adv_ctime -#define adv_xtimestamp adv_time_u.adv_xtime -#define adv_winverf adv_int_u - -/* - * des authentication verifier: server variety - * - * adv_timeverf is the client's timestamp + client's window - * adv_nickname is the server's nickname for the client. - * adv_timeverf is encrypted using the conversation key. - */ -#define adv_timeverf adv_time_u.adv_ctime -#define adv_xtimeverf adv_time_u.adv_xtime -#define adv_nickname adv_int_u - -/* - * Map a des credential into a unix cred. - * - */ -__BEGIN_DECLS -extern int authdes_getucred( struct authdes_cred *, uid_t *, gid_t *, int *, gid_t * ); -__END_DECLS - __BEGIN_DECLS -extern bool_t xdr_authdes_cred(XDR *, struct authdes_cred *); -extern bool_t xdr_authdes_verf(XDR *, struct authdes_verf *); extern int rtime(dev_t, struct netbuf *, int, struct timeval *, struct timeval *); -extern void kgetnetname(char *); -extern enum auth_stat _svcauth_des(struct svc_req *, struct rpc_msg *); __END_DECLS #endif /* ndef _AUTH_DES_ */ diff --git a/lib/libc/rpc/Symbol.map b/lib/libc/rpc/Symbol.map index 105d6fb6b54e..61e8e084b1e0 100644 --- a/lib/libc/rpc/Symbol.map +++ b/lib/libc/rpc/Symbol.map @@ -8,13 +8,9 @@ FBSD_1.0 { xdr_desargs; xdr_desresp; - authdes_seccreate; - authdes_pk_seccreate; authnone_create; authunix_create; authunix_create_default; - xdr_authdes_cred; - xdr_authdes_verf; xdr_authunix_parms; bindresvport; bindresvport_sa; @@ -58,15 +54,6 @@ FBSD_1.0 { endrpcent; getrpcent; getrpcport; - key_setsecret; - key_secretkey_is_set; - key_encryptsession_pk; - key_decryptsession_pk; - key_encryptsession; - key_decryptsession; - key_gendes; - key_setnet; - key_get_conv; xdr_keystatus; xdr_keybuf; xdr_netnamestr; @@ -130,7 +117,6 @@ FBSD_1.0 { callrpc; registerrpc; clnt_broadcast; - authdes_create; clntunix_create; svcunix_create; svcunixfd_create; @@ -180,8 +166,6 @@ FBSD_1.0 { _authenticate; _svcauth_null; svc_auth_reg; - _svcauth_des; - authdes_getucred; _svcauth_unix; _svcauth_short; svc_dg_create; @@ -205,9 +189,6 @@ FBSD_1.8 { FBSDprivate_1.0 { __des_crypt_LOCAL; - __key_encryptsession_pk_LOCAL; - __key_decryptsession_pk_LOCAL; - __key_gendes_LOCAL; __svc_clean_idle; __rpc_gss_unwrap; __rpc_gss_unwrap_stub; diff --git a/lib/libc/rpc/auth_des.c b/lib/libc/rpc/auth_des.c index c9b20de25cda..754d55cbed3e 100644 --- a/lib/libc/rpc/auth_des.c +++ b/lib/libc/rpc/auth_des.c @@ -30,463 +30,34 @@ /* * Copyright (c) 1988 by Sun Microsystems, Inc. */ + /* - * auth_des.c, client-side implementation of DES authentication + * Secure RPC DES authentication was removed in FreeBSD 15.0. + * These symbols are provided for backward compatibility, but provide no + * functionality and will always return an error. */ #include "namespace.h" #include "reentrant.h" -#include -#include -#include -#include -#include -#include -#include #include #include #include -#include -#include -#include -#undef NIS #include #include "un-namespace.h" -#include "mt_misc.h" - -#define USEC_PER_SEC 1000000 -#define RTIME_TIMEOUT 5 /* seconds to wait for sync */ - -#define AUTH_PRIVATE(auth) (struct ad_private *) auth->ah_private -#define ALLOC(object_type) (object_type *) mem_alloc(sizeof(object_type)) -#define FREE(ptr, size) mem_free((char *)(ptr), (int) size) -#define ATTEMPT(xdr_op) if (!(xdr_op)) return (FALSE) - -extern bool_t xdr_authdes_cred( XDR *, struct authdes_cred *); -extern bool_t xdr_authdes_verf( XDR *, struct authdes_verf *); -extern int key_encryptsession_pk(char *, netobj *, des_block *); - -extern bool_t __rpc_get_time_offset(struct timeval *, nis_server *, char *, - char **, char **); -/* - * DES authenticator operations vector - */ -static void authdes_nextverf(AUTH *); -static bool_t authdes_marshal(AUTH *, XDR *); -static bool_t authdes_validate(AUTH *, struct opaque_auth *); -static bool_t authdes_refresh(AUTH *, void *); -static void authdes_destroy(AUTH *); - -static struct auth_ops *authdes_ops(void); - -/* - * This struct is pointed to by the ah_private field of an "AUTH *" - */ -struct ad_private { - char *ad_fullname; /* client's full name */ - u_int ad_fullnamelen; /* length of name, rounded up */ - char *ad_servername; /* server's full name */ - u_int ad_servernamelen; /* length of name, rounded up */ - u_int ad_window; /* client specified window */ - bool_t ad_dosync; /* synchronize? */ - struct netbuf ad_syncaddr; /* remote host to synch with */ - char *ad_timehost; /* remote host to synch with */ - struct timeval ad_timediff; /* server's time - client's time */ - u_int ad_nickname; /* server's nickname for client */ - struct authdes_cred ad_cred; /* storage for credential */ - struct authdes_verf ad_verf; /* storage for verifier */ - struct timeval ad_timestamp; /* timestamp sent */ - des_block ad_xkey; /* encrypted conversation key */ - u_char ad_pkey[1024]; /* Server's actual public key */ - char *ad_netid; /* Timehost netid */ - char *ad_uaddr; /* Timehost uaddr */ - nis_server *ad_nis_srvr; /* NIS+ server struct */ -}; - -AUTH *authdes_pk_seccreate(const char *, netobj *, u_int, const char *, - const des_block *, nis_server *); - -/* - * documented version of authdes_seccreate - */ -/* - servername: network name of server - win: time to live - timehost: optional hostname to sync with - ckey: optional conversation key to use -*/ - -AUTH * -authdes_seccreate(const char *servername, const u_int win, +static AUTH * +__authdes_seccreate(const char *servername, const u_int win, const char *timehost, const des_block *ckey) { - u_char pkey_data[1024]; - netobj pkey; - AUTH *dummy; - - if (! getpublickey(servername, (char *) pkey_data)) { - syslog(LOG_ERR, - "authdes_seccreate: no public key found for %s", - servername); - return (NULL); - } - - pkey.n_bytes = (char *) pkey_data; - pkey.n_len = (u_int)strlen((char *)pkey_data) + 1; - dummy = authdes_pk_seccreate(servername, &pkey, win, timehost, - ckey, NULL); - return (dummy); -} - -/* - * Slightly modified version of authdessec_create which takes the public key - * of the server principal as an argument. This spares us a call to - * getpublickey() which in the nameserver context can cause a deadlock. - */ -AUTH * -authdes_pk_seccreate(const char *servername, netobj *pkey, u_int window, - const char *timehost, const des_block *ckey, nis_server *srvr) -{ - AUTH *auth; - struct ad_private *ad; - char namebuf[MAXNETNAMELEN+1]; - - /* - * Allocate everything now - */ - auth = ALLOC(AUTH); - if (auth == NULL) { - syslog(LOG_ERR, "authdes_pk_seccreate: out of memory"); - return (NULL); - } - ad = ALLOC(struct ad_private); - if (ad == NULL) { - syslog(LOG_ERR, "authdes_pk_seccreate: out of memory"); - goto failed; - } - ad->ad_fullname = ad->ad_servername = NULL; /* Sanity reasons */ - ad->ad_timehost = NULL; - ad->ad_netid = NULL; - ad->ad_uaddr = NULL; - ad->ad_nis_srvr = NULL; - ad->ad_timediff.tv_sec = 0; - ad->ad_timediff.tv_usec = 0; - memcpy(ad->ad_pkey, pkey->n_bytes, pkey->n_len); - if (!getnetname(namebuf)) - goto failed; - ad->ad_fullnamelen = RNDUP((u_int) strlen(namebuf)); - ad->ad_fullname = (char *)mem_alloc(ad->ad_fullnamelen + 1); - ad->ad_servernamelen = strlen(servername); - ad->ad_servername = (char *)mem_alloc(ad->ad_servernamelen + 1); - - if (ad->ad_fullname == NULL || ad->ad_servername == NULL) { - syslog(LOG_ERR, "authdes_seccreate: out of memory"); - goto failed; - } - if (timehost != NULL) { - ad->ad_timehost = (char *)mem_alloc(strlen(timehost) + 1); - if (ad->ad_timehost == NULL) { - syslog(LOG_ERR, "authdes_seccreate: out of memory"); - goto failed; - } - memcpy(ad->ad_timehost, timehost, strlen(timehost) + 1); - ad->ad_dosync = TRUE; - } else if (srvr != NULL) { - ad->ad_nis_srvr = srvr; /* transient */ - ad->ad_dosync = TRUE; - } else { - ad->ad_dosync = FALSE; - } - memcpy(ad->ad_fullname, namebuf, ad->ad_fullnamelen + 1); - memcpy(ad->ad_servername, servername, ad->ad_servernamelen + 1); - ad->ad_window = window; - if (ckey == NULL) { - if (key_gendes(&auth->ah_key) < 0) { - syslog(LOG_ERR, - "authdes_seccreate: keyserv(1m) is unable to generate session key"); - goto failed; - } - } else { - auth->ah_key = *ckey; - } - - /* - * Set up auth handle - */ - auth->ah_cred.oa_flavor = AUTH_DES; - auth->ah_verf.oa_flavor = AUTH_DES; - auth->ah_ops = authdes_ops(); - auth->ah_private = (caddr_t)ad; - - if (!authdes_refresh(auth, NULL)) { - goto failed; - } - ad->ad_nis_srvr = NULL; /* not needed any longer */ - return (auth); - -failed: - if (auth) - FREE(auth, sizeof (AUTH)); - if (ad) { - if (ad->ad_fullname) - FREE(ad->ad_fullname, ad->ad_fullnamelen + 1); - if (ad->ad_servername) - FREE(ad->ad_servername, ad->ad_servernamelen + 1); - if (ad->ad_timehost) - FREE(ad->ad_timehost, strlen(ad->ad_timehost) + 1); - if (ad->ad_netid) - FREE(ad->ad_netid, strlen(ad->ad_netid) + 1); - if (ad->ad_uaddr) - FREE(ad->ad_uaddr, strlen(ad->ad_uaddr) + 1); - FREE(ad, sizeof (struct ad_private)); - } return (NULL); } +__sym_compat(authdes_seccreate, __authdes_seccreate, FBSD_1.0); -/* - * Implement the five authentication operations - */ - - -/* - * 1. Next Verifier - */ -/*ARGSUSED*/ -static void -authdes_nextverf(AUTH *auth __unused) +static AUTH * +__authdes_pk_seccreate(const char *servername __unused, netobj *pkey __unused, + u_int window __unused, const char *timehost __unused, + const des_block *ckey __unused, nis_server *srvr __unused) { - /* what the heck am I supposed to do??? */ -} - - -/* - * 2. Marshal - */ -static bool_t -authdes_marshal(AUTH *auth, XDR *xdrs) -{ -/* LINTED pointer alignment */ - struct ad_private *ad = AUTH_PRIVATE(auth); - struct authdes_cred *cred = &ad->ad_cred; - struct authdes_verf *verf = &ad->ad_verf; - des_block cryptbuf[2]; - des_block ivec; - int status; - int len; - rpc_inline_t *ixdr; - - /* - * Figure out the "time", accounting for any time difference - * with the server if necessary. - */ - (void)gettimeofday(&ad->ad_timestamp, NULL); - ad->ad_timestamp.tv_sec += ad->ad_timediff.tv_sec; - ad->ad_timestamp.tv_usec += ad->ad_timediff.tv_usec; - while (ad->ad_timestamp.tv_usec >= USEC_PER_SEC) { - ad->ad_timestamp.tv_usec -= USEC_PER_SEC; - ad->ad_timestamp.tv_sec++; - } - - /* - * XDR the timestamp and possibly some other things, then - * encrypt them. - */ - ixdr = (rpc_inline_t *)cryptbuf; - IXDR_PUT_INT32(ixdr, ad->ad_timestamp.tv_sec); - IXDR_PUT_INT32(ixdr, ad->ad_timestamp.tv_usec); - if (ad->ad_cred.adc_namekind == ADN_FULLNAME) { - IXDR_PUT_U_INT32(ixdr, ad->ad_window); - IXDR_PUT_U_INT32(ixdr, ad->ad_window - 1); - ivec.key.high = ivec.key.low = 0; - status = cbc_crypt((char *)&auth->ah_key, (char *)cryptbuf, - (u_int) 2 * sizeof (des_block), - DES_ENCRYPT | DES_HW, (char *)&ivec); - } else { - status = ecb_crypt((char *)&auth->ah_key, (char *)cryptbuf, - (u_int) sizeof (des_block), - DES_ENCRYPT | DES_HW); - } - if (DES_FAILED(status)) { - syslog(LOG_ERR, "authdes_marshal: DES encryption failure"); - return (FALSE); - } - ad->ad_verf.adv_xtimestamp = cryptbuf[0]; - if (ad->ad_cred.adc_namekind == ADN_FULLNAME) { - ad->ad_cred.adc_fullname.window = cryptbuf[1].key.high; - ad->ad_verf.adv_winverf = cryptbuf[1].key.low; - } else { - ad->ad_cred.adc_nickname = ad->ad_nickname; - ad->ad_verf.adv_winverf = 0; - } - - /* - * Serialize the credential and verifier into opaque - * authentication data. - */ - if (ad->ad_cred.adc_namekind == ADN_FULLNAME) { - len = ((1 + 1 + 2 + 1)*BYTES_PER_XDR_UNIT + ad->ad_fullnamelen); - } else { - len = (1 + 1)*BYTES_PER_XDR_UNIT; - } - - if ((ixdr = xdr_inline(xdrs, 2*BYTES_PER_XDR_UNIT))) { - IXDR_PUT_INT32(ixdr, AUTH_DES); - IXDR_PUT_INT32(ixdr, len); - } else { - ATTEMPT(xdr_putint32(xdrs, (int *)&auth->ah_cred.oa_flavor)); - ATTEMPT(xdr_putint32(xdrs, &len)); - } - ATTEMPT(xdr_authdes_cred(xdrs, cred)); - - len = (2 + 1)*BYTES_PER_XDR_UNIT; - if ((ixdr = xdr_inline(xdrs, 2*BYTES_PER_XDR_UNIT))) { - IXDR_PUT_INT32(ixdr, AUTH_DES); - IXDR_PUT_INT32(ixdr, len); - } else { - ATTEMPT(xdr_putint32(xdrs, (int *)&auth->ah_verf.oa_flavor)); - ATTEMPT(xdr_putint32(xdrs, &len)); - } - ATTEMPT(xdr_authdes_verf(xdrs, verf)); - return (TRUE); -} - - -/* - * 3. Validate - */ -static bool_t -authdes_validate(AUTH *auth, struct opaque_auth *rverf) -{ -/* LINTED pointer alignment */ - struct ad_private *ad = AUTH_PRIVATE(auth); - struct authdes_verf verf; - int status; - uint32_t *ixdr; - des_block buf; - - if (rverf->oa_length != (2 + 1) * BYTES_PER_XDR_UNIT) { - return (FALSE); - } -/* LINTED pointer alignment */ - ixdr = (uint32_t *)rverf->oa_base; - buf.key.high = (uint32_t)*ixdr++; - buf.key.low = (uint32_t)*ixdr++; - verf.adv_int_u = (uint32_t)*ixdr++; - - /* - * Decrypt the timestamp - */ - status = ecb_crypt((char *)&auth->ah_key, (char *)&buf, - (u_int)sizeof (des_block), DES_DECRYPT | DES_HW); - - if (DES_FAILED(status)) { - syslog(LOG_ERR, "authdes_validate: DES decryption failure"); - return (FALSE); - } - - /* - * xdr the decrypted timestamp - */ -/* LINTED pointer alignment */ - ixdr = (uint32_t *)buf.c; - verf.adv_timestamp.tv_sec = IXDR_GET_INT32(ixdr) + 1; - verf.adv_timestamp.tv_usec = IXDR_GET_INT32(ixdr); - - /* - * validate - */ - if (bcmp((char *)&ad->ad_timestamp, (char *)&verf.adv_timestamp, - sizeof(struct timeval)) != 0) { - syslog(LOG_DEBUG, "authdes_validate: verifier mismatch"); - return (FALSE); - } - - /* - * We have a nickname now, let's use it - */ - ad->ad_nickname = verf.adv_nickname; - ad->ad_cred.adc_namekind = ADN_NICKNAME; - return (TRUE); -} - -/* - * 4. Refresh - */ -/*ARGSUSED*/ -static bool_t -authdes_refresh(AUTH *auth, void *dummy __unused) -{ -/* LINTED pointer alignment */ - struct ad_private *ad = AUTH_PRIVATE(auth); - struct authdes_cred *cred = &ad->ad_cred; - int ok; - netobj pkey; - - if (ad->ad_dosync) { - ok = __rpc_get_time_offset(&ad->ad_timediff, ad->ad_nis_srvr, - ad->ad_timehost, &(ad->ad_uaddr), - &(ad->ad_netid)); - if (! ok) { - /* - * Hope the clocks are synced! - */ - ad->ad_dosync = 0; - syslog(LOG_DEBUG, - "authdes_refresh: unable to synchronize clock"); - } - } - ad->ad_xkey = auth->ah_key; - pkey.n_bytes = (char *)(ad->ad_pkey); - pkey.n_len = (u_int)strlen((char *)ad->ad_pkey) + 1; - if (key_encryptsession_pk(ad->ad_servername, &pkey, &ad->ad_xkey) < 0) { - syslog(LOG_INFO, - "authdes_refresh: keyserv(1m) is unable to encrypt session key"); - return (FALSE); - } - cred->adc_fullname.key = ad->ad_xkey; - cred->adc_namekind = ADN_FULLNAME; - cred->adc_fullname.name = ad->ad_fullname; - return (TRUE); -} - - -/* - * 5. Destroy - */ -static void -authdes_destroy(AUTH *auth) -{ -/* LINTED pointer alignment */ - struct ad_private *ad = AUTH_PRIVATE(auth); - - FREE(ad->ad_fullname, ad->ad_fullnamelen + 1); - FREE(ad->ad_servername, ad->ad_servernamelen + 1); - if (ad->ad_timehost) - FREE(ad->ad_timehost, strlen(ad->ad_timehost) + 1); - if (ad->ad_netid) - FREE(ad->ad_netid, strlen(ad->ad_netid) + 1); - if (ad->ad_uaddr) - FREE(ad->ad_uaddr, strlen(ad->ad_uaddr) + 1); - FREE(ad, sizeof (struct ad_private)); - FREE(auth, sizeof(AUTH)); -} - -static struct auth_ops * -authdes_ops(void) -{ - static struct auth_ops ops; - - /* VARIABLES PROTECTED BY ops_lock: ops */ - - mutex_lock(&authdes_ops_lock); - if (ops.ah_nextverf == NULL) { - ops.ah_nextverf = authdes_nextverf; - ops.ah_marshal = authdes_marshal; - ops.ah_validate = authdes_validate; - ops.ah_refresh = authdes_refresh; - ops.ah_destroy = authdes_destroy; - } - mutex_unlock(&authdes_ops_lock); - return (&ops); + return (NULL); } +__sym_compat(authdes_pk_seccreate, __authdes_pk_seccreate, FBSD_1.0); diff --git a/lib/libc/rpc/authdes_prot.c b/lib/libc/rpc/authdes_prot.c index 79a0e5baa084..56b44daafe41 100644 --- a/lib/libc/rpc/authdes_prot.c +++ b/lib/libc/rpc/authdes_prot.c @@ -42,44 +42,16 @@ #include #include "un-namespace.h" -#define ATTEMPT(xdr_op) if (!(xdr_op)) return (FALSE) - -bool_t -xdr_authdes_cred(XDR *xdrs, struct authdes_cred *cred) +static bool_t +__xdr_authdes_cred(XDR *xdrs, void *cred) { - enum authdes_namekind *padc_namekind = &cred->adc_namekind; - /* - * Unrolled xdr - */ - ATTEMPT(xdr_enum(xdrs, (enum_t *) padc_namekind)); - switch (cred->adc_namekind) { - case ADN_FULLNAME: - ATTEMPT(xdr_string(xdrs, &cred->adc_fullname.name, - MAXNETNAMELEN)); - ATTEMPT(xdr_opaque(xdrs, (caddr_t)&cred->adc_fullname.key, - sizeof(des_block))); - ATTEMPT(xdr_opaque(xdrs, (caddr_t)&cred->adc_fullname.window, - sizeof(cred->adc_fullname.window))); - return (TRUE); - case ADN_NICKNAME: - ATTEMPT(xdr_opaque(xdrs, (caddr_t)&cred->adc_nickname, - sizeof(cred->adc_nickname))); - return (TRUE); - default: - return (FALSE); - } + return (FALSE); } +__sym_compat(xdr_authdes_cred, __xdr_authdes_cred, FBSD_1.0); - -bool_t -xdr_authdes_verf(XDR *xdrs, struct authdes_verf *verf) +static bool_t +__xdr_authdes_verf(XDR *xdrs, void *verf) { - /* - * Unrolled xdr - */ - ATTEMPT(xdr_opaque(xdrs, (caddr_t)&verf->adv_xtimestamp, - sizeof(des_block))); - ATTEMPT(xdr_opaque(xdrs, (caddr_t)&verf->adv_int_u, - sizeof(verf->adv_int_u))); - return (TRUE); + return (FALSE); } +__sym_compat(xdr_authdes_verf, __xdr_authdes_verf, FBSD_1.0); diff --git a/lib/libc/rpc/key_call.c b/lib/libc/rpc/key_call.c index 5c87881c815c..eb274fcfff36 100644 --- a/lib/libc/rpc/key_call.c +++ b/lib/libc/rpc/key_call.c @@ -32,426 +32,78 @@ */ /* - * key_call.c, Interface to keyserver - * - * setsecretkey(key) - set your secret key - * encryptsessionkey(agent, deskey) - encrypt a session key to talk to agent - * decryptsessionkey(agent, deskey) - decrypt ditto - * gendeskey(deskey) - generate a secure des key + * Secure RPC keyserver support was removed in FreeBSD 15.0. + * These symbols are provided for backward compatibility, but provide no + * functionality and will always return an error. */ #include "namespace.h" #include "reentrant.h" -#include -#include -#include -#include #include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include +#include #include "un-namespace.h" #include "mt_misc.h" - -#define KEY_TIMEOUT 5 /* per-try timeout in seconds */ -#define KEY_NRETRY 12 /* number of retries */ - -#ifdef DEBUG -#define debug(msg) (void) fprintf(stderr, "%s\n", msg); -#else -#define debug(msg) -#endif /* DEBUG */ - -/* - * Hack to allow the keyserver to use AUTH_DES (for authenticated - * NIS+ calls, for example). The only functions that get called - * are key_encryptsession_pk, key_decryptsession_pk, and key_gendes. - * - * The approach is to have the keyserver fill in pointers to local - * implementations of these functions, and to call those in key_call(). - */ - -cryptkeyres *(*__key_encryptsession_pk_LOCAL)(uid_t, void *arg) = 0; -cryptkeyres *(*__key_decryptsession_pk_LOCAL)(uid_t, void *arg) = 0; -des_block *(*__key_gendes_LOCAL)(uid_t, void *) = 0; - -static int key_call( u_long, xdrproc_t, void *, xdrproc_t, void *); - -int -key_setsecret(const char *secretkey) -{ - keystatus status; - - if (!key_call((u_long) KEY_SET, (xdrproc_t)xdr_keybuf, - (void *)secretkey, - (xdrproc_t)xdr_keystatus, &status)) { - return (-1); - } - if (status != KEY_SUCCESS) { - debug("set status is nonzero"); - return (-1); - } - return (0); -} - - -/* key_secretkey_is_set() returns 1 if the keyserver has a secret key - * stored for the caller's effective uid; it returns 0 otherwise - * - * N.B.: The KEY_NET_GET key call is undocumented. Applications shouldn't - * be using it, because it allows them to get the user's secret key. - */ - -int -key_secretkey_is_set(void) -{ - struct key_netstres kres; - - memset((void*)&kres, 0, sizeof (kres)); - if (key_call((u_long) KEY_NET_GET, (xdrproc_t)xdr_void, NULL, - (xdrproc_t)xdr_key_netstres, &kres) && - (kres.status == KEY_SUCCESS) && - (kres.key_netstres_u.knet.st_priv_key[0] != 0)) { - /* avoid leaving secret key in memory */ - memset(kres.key_netstres_u.knet.st_priv_key, 0, HEXKEYBYTES); - return (1); - } - return (0); -} - -int -key_encryptsession_pk(char *remotename, netobj *remotekey, des_block *deskey) -{ - cryptkeyarg2 arg; - cryptkeyres res; - - arg.remotename = remotename; - arg.remotekey = *remotekey; - arg.deskey = *deskey; - if (!key_call((u_long)KEY_ENCRYPT_PK, (xdrproc_t)xdr_cryptkeyarg2, &arg, - (xdrproc_t)xdr_cryptkeyres, &res)) { - return (-1); - } - if (res.status != KEY_SUCCESS) { - debug("encrypt status is nonzero"); - return (-1); - } - *deskey = res.cryptkeyres_u.deskey; - return (0); -} - -int -key_decryptsession_pk(char *remotename, netobj *remotekey, des_block *deskey) -{ - cryptkeyarg2 arg; - cryptkeyres res; - - arg.remotename = remotename; - arg.remotekey = *remotekey; - arg.deskey = *deskey; - if (!key_call((u_long)KEY_DECRYPT_PK, (xdrproc_t)xdr_cryptkeyarg2, &arg, - (xdrproc_t)xdr_cryptkeyres, &res)) { - return (-1); - } - if (res.status != KEY_SUCCESS) { - debug("decrypt status is nonzero"); - return (-1); - } - *deskey = res.cryptkeyres_u.deskey; - return (0); -} - -int -key_encryptsession(const char *remotename, des_block *deskey) +static int +__key_setsecret(const char *secretkey) { - cryptkeyarg arg; - cryptkeyres res; - - arg.remotename = (char *) remotename; - arg.deskey = *deskey; - if (!key_call((u_long)KEY_ENCRYPT, (xdrproc_t)xdr_cryptkeyarg, &arg, - (xdrproc_t)xdr_cryptkeyres, &res)) { - return (-1); - } - if (res.status != KEY_SUCCESS) { - debug("encrypt status is nonzero"); - return (-1); - } - *deskey = res.cryptkeyres_u.deskey; - return (0); + return (-1); } +__sym_compat(key_setsecret, __key_setsecret, FBSD_1.0); -int -key_decryptsession(const char *remotename, des_block *deskey) +static int +__key_secretkey_is_set(void) { - cryptkeyarg arg; - cryptkeyres res; - - arg.remotename = (char *) remotename; - arg.deskey = *deskey; - if (!key_call((u_long)KEY_DECRYPT, (xdrproc_t)xdr_cryptkeyarg, &arg, - (xdrproc_t)xdr_cryptkeyres, &res)) { - return (-1); - } - if (res.status != KEY_SUCCESS) { - debug("decrypt status is nonzero"); - return (-1); - } - *deskey = res.cryptkeyres_u.deskey; return (0); } +__sym_compat(key_secretkey_is_set, __key_secretkey_is_set, FBSD_1.0); -int -key_gendes(des_block *key) +static int +__key_encryptsession_pk(char *remotename, netobj *remotekey, des_block *deskey) { - if (!key_call((u_long)KEY_GEN, (xdrproc_t)xdr_void, NULL, - (xdrproc_t)xdr_des_block, key)) { - return (-1); - } - return (0); + return (-1); } +__sym_compat(key_encryptsession_pk, __key_encryptsession_pk, FBSD_1.0); -int -key_setnet(struct key_netstarg *arg) +static int +__key_decryptsession_pk(char *remotename, netobj *remotekey, des_block *deskey) { *** 2726 LINES SKIPPED *** From nobody Sun Aug 10 15:37:18 2025 X-Original-To: dev-commits-src-main@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 4c0MMf685Lz649tP; Sun, 10 Aug 2025 15:37:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMf2pfhz3f60; Sun, 10 Aug 2025 15:37:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9N2EPjMSvIAY8OnFnUh9mfJd+LDFqSRsuVDvDc2LOrY=; b=pAilyRgHydc9cw8pxB6ABv1MD1hKmQgITlHxA0ESHJV0H9xBLOhJvCwkh907t2iPWJz6tc rzlZx3oU0HeKmlxYvirN9SNqmOKCrLOOVLN/nWeiZqhqosRtqWzofpFpuRkZ6mZZVmTKNc JE94Fvzq2VJqmNHNA9nlymDqSTJmYM+KBMEZNvpfxLpCEhLmQGbqHWtiKhrOYOQizf+E9S xtx5YFVawDBekQLXr0UNYT+utsBAg6hztga+TzzLilHdKmY969seUavdA7QpZ49nuiD6pu agZsgmbU8koCPJvcOozCM4IP3T8oarxIoicHcyuefKQC/sDlWNkT48O6TQw3UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9N2EPjMSvIAY8OnFnUh9mfJd+LDFqSRsuVDvDc2LOrY=; b=VJ1jND8zjE0G9XfPqL75NMae7d3L0qAECki9Varkq2hNMrgIvZvvPdh0jaAuLqhkuArRUP KZYudTwrzWVxbpJssl8OCx4+jz3DeCOkhiCi/Gp8QNyBUjvw1tn3YwJiEdgJN5jfteR4yJ 65UHtgRnviVpL1UNcBrG2IqKUUg3Bs2Q2ektoaM90BZV3cfg49piP0CJXYHNTZ2n4npzFH xeHXp66pF4Ds4SOhxG2LaMb/ckzSSlAzSL+zSd6lMorSeo8ZMUiSrcosVWd+AGDoT8lVoc be4Gj4VHdmppB42aoD3pwp6Z6NivMDjU4pVEoQ7AhaNennHNWRkGajyTwP0HoQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840238; a=rsa-sha256; cv=none; b=MeBKf3D7o3sDdEbYG+Xnk3hAfvbZ/M5mUgfNriyzhPPAa8cfazrqukiQzOMQ3rCLnG9NZL Xpstz8JTPO5JjLI3vcSDn+vDphK+qwNi+mPsq1Lg+1EOmulacsLMMkc+guLPYA/h8Ormsh 9lWKJUnm4k6NQRatOTZXhomHjzI5gyTwDDX14ghVsNyInLrOMKgZA+k83T5RyoACgk7YgX nKCzFqoqr2oeOMvLlmFxjf7gnwAOXu9aXBhx4MdWhMWutOvbY7xFxCgaKujig/2Mp043Ih PsMP6tLr5krGGjAii8+M4lO2V6dIkwxArZxKQ9c4P9JzkkhgZ5JrlYE3tMgtHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMf2JKPz1B2d; Sun, 10 Aug 2025 15:37:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbIqb067251; Sun, 10 Aug 2025 15:37:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbIfU067248; Sun, 10 Aug 2025 15:37:18 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:18 GMT Message-Id: <202508101537.57AFbIfU067248@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 43ac5806a5a3 - main - bridge: Divorce ifuntagged from vlanfilter List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 43ac5806a5a3150f561e14a11866dd56cf1b4d42 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=43ac5806a5a3150f561e14a11866dd56cf1b4d42 commit 43ac5806a5a3150f561e14a11866dd56cf1b4d42 Author: Lexi Winter AuthorDate: 2025-08-10 15:11:32 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:40 +0000 bridge: Divorce ifuntagged from vlanfilter The ifuntagged option was added as part of the VLAN filtering feature, but it's useful on its own to be able to place interface traffic in a VLAN without having to configure every interface for VLAN filtering. Always do the pvid processing in bridge even if IFBRF_VLANFILTER isn't enabled, and don't prohibit configuring it. Add a test for the specific case of setting untagged without vlanfilter. This has no effect on bridges which don't have at least one interface configured with ifuntagged. Differential Revision: https://reviews.freebsd.org/D51760 --- sys/net/if_bridge.c | 28 ++++++++++++--------- tests/sys/net/if_bridge_test.sh | 54 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 1e444be93e9f..66555fd1feb5 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -1500,8 +1500,7 @@ bridge_ioctl_add(struct bridge_softc *sc, void *arg) bif->bif_flags = IFBIF_LEARNING | IFBIF_DISCOVER; bif->bif_savedcaps = ifs->if_capenable; bif->bif_vlanproto = ETHERTYPE_VLAN; - if (sc->sc_flags & IFBRF_VLANFILTER) - bif->bif_pvid = sc->sc_defpvid; + bif->bif_pvid = sc->sc_defpvid; if (sc->sc_flags & IFBRF_DEFQINQ) bif->bif_flags |= IFBIF_QINQ; @@ -1970,9 +1969,6 @@ bridge_ioctl_sifpvid(struct bridge_softc *sc, void *arg) struct ifbreq *req = arg; struct bridge_iflist *bif; - if ((sc->sc_flags & IFBRF_VLANFILTER) == 0) - return (EXTERROR(EINVAL, "VLAN filtering not enabled")); - bif = bridge_lookup_member(sc, req->ifbr_ifsname); if (bif == NULL) return (EXTERROR(ENOENT, "Interface is not a bridge member")); @@ -2410,12 +2406,10 @@ bridge_enqueue(struct bridge_softc *sc, struct ifnet *dst_ifp, struct mbuf *m, mflags = m->m_flags; /* - * If VLAN filtering is enabled, and the native VLAN ID of the - * outgoing interface matches the VLAN ID of the frame, remove - * the VLAN header. + * If the native VLAN ID of the outgoing interface matches the + * VLAN ID of the frame, remove the VLAN tag. */ - if ((sc->sc_flags & IFBRF_VLANFILTER) && - bif->bif_pvid != DOT1Q_VID_NULL && + if (bif->bif_pvid != DOT1Q_VID_NULL && VLANTAGOF(m) == bif->bif_pvid) { m->m_flags &= ~M_VLANTAG; m->m_pkthdr.ether_vtag = 0; @@ -3296,9 +3290,19 @@ bridge_vfilter_in(const struct bridge_iflist *sbif, struct mbuf *m) if (vlan > DOT1Q_VID_MAX) return (false); - /* If VLAN filtering isn't enabled, pass everything. */ - if ((sbif->bif_sc->sc_flags & IFBRF_VLANFILTER) == 0) + /* + * If VLAN filtering isn't enabled, pass everything, but add a tag + * if the port has a pvid configured. + */ + if ((sbif->bif_sc->sc_flags & IFBRF_VLANFILTER) == 0) { + if (vlan == DOT1Q_VID_NULL && + sbif->bif_pvid != DOT1Q_VID_NULL) { + m->m_pkthdr.ether_vtag = sbif->bif_pvid; + m->m_flags |= M_VLANTAG; + } + return (true); + } /* If Q-in-Q is disabled, check for stacked tags. */ if ((sbif->bif_flags & IFBIF_QINQ) == 0) { diff --git a/tests/sys/net/if_bridge_test.sh b/tests/sys/net/if_bridge_test.sh index 906f586d2483..0c19903714b1 100755 --- a/tests/sys/net/if_bridge_test.sh +++ b/tests/sys/net/if_bridge_test.sh @@ -899,7 +899,7 @@ member_ifaddrs_vlan_cleanup() atf_test_case "vlan_pvid" "cleanup" vlan_pvid_head() { - atf_set descr 'bridge with two ports with pvid set' + atf_set descr 'bridge with two ports with pvid and vlanfilter set' atf_set require.user root } @@ -1327,6 +1327,56 @@ bridge_svi_in_bridge_cleanup() vnet_cleanup } +atf_test_case "vlan_untagged" "cleanup" +vlan_untagged_head() +{ + atf_set descr 'bridge with two ports with untagged set' + atf_set require.user root +} + +vlan_untagged_body() +{ + vnet_init + vnet_init_bridge + + epone=$(vnet_mkepair) + eptwo=$(vnet_mkepair) + + vnet_mkjail one ${epone}b + vnet_mkjail two ${eptwo}b + + jexec one ifconfig ${epone}b 192.0.2.1/24 up + jexec two ifconfig ${eptwo}b 192.0.2.2/24 up + + bridge=$(vnet_mkbridge) + + ifconfig ${bridge} up + ifconfig ${epone}a up + ifconfig ${eptwo}a up + ifconfig ${bridge} addm ${epone}a untagged 20 + ifconfig ${bridge} addm ${eptwo}a untagged 30 + + # With two ports on different VLANs, traffic should not be passed. + atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 + atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 + + # Move the second port to VLAN 20; now traffic should be passed. + atf_check -s exit:0 ifconfig ${bridge} ifuntagged ${eptwo}a 20 + atf_check -s exit:0 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 + atf_check -s exit:0 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 + + # Remove the first's port untagged config, now traffic should + # not pass again. + atf_check -s exit:0 ifconfig ${bridge} -ifuntagged ${epone}a + atf_check -s exit:2 -o ignore jexec one ping -c 3 -t 1 192.0.2.2 + atf_check -s exit:2 -o ignore jexec two ping -c 3 -t 1 192.0.2.1 +} + +vlan_untagged_cleanup() +{ + vnet_cleanup +} + atf_test_case "vlan_defuntagged" "cleanup" vlan_defuntagged_head() { @@ -1340,7 +1390,6 @@ vlan_defuntagged_body() vnet_init_bridge bridge=$(vnet_mkbridge) - atf_check -s exit:0 ifconfig ${bridge} vlanfilter # Invalid VLAN IDs atf_check -s exit:1 -ematch:"invalid vlan id: 0" \ @@ -1407,6 +1456,7 @@ atf_init_test_cases() atf_add_test_case "vlan_ifconfig_iftagged" atf_add_test_case "vlan_svi" atf_add_test_case "vlan_qinq" + atf_add_test_case "vlan_untagged" atf_add_test_case "vlan_defuntagged" atf_add_test_case "bridge_svi_in_bridge" } From nobody Sun Aug 10 15:37:19 2025 X-Original-To: dev-commits-src-main@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 4c0MMh1X6xz649wj; Sun, 10 Aug 2025 15:37: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMg3fDLz3f67; Sun, 10 Aug 2025 15:37:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840239; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oxqfQMhswdbPLp5j7cJp0TrNwl8yuzdp/75MCPtAEGA=; b=t3XZGkiVOV5bqVvD4ISNkmnQddNvMtm+m9OcbtkF0q2rbvj5+j7LR64VaMpZEX4mXeyFOF RknFWn61Ty2/5CSWSx3HvzE/NgL9QrI+lfPSBlWXyQZGbdF8SDBAErF4z1QMjTj8IHtY5B WUxNjBNdklCImQ73IAaCxbyg4bMip9+ZWROGUGN0umgTMujejWNMz/wpcfKD7/2EJMwDoT L1lhYp1QwsTw1uHBSgQcEsTROnkKT0DmjRY/kATqeXOHSHgO2AlhK+qhhJ6dROSTmvGZv/ s3P8RLVF6ZbmU7ig+YSUZjb3yZ3buD/srSfdCflgy20ezX96vkfRVJZrbOc8Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840239; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oxqfQMhswdbPLp5j7cJp0TrNwl8yuzdp/75MCPtAEGA=; b=DkGJiiBb3a5eQXAujnuS15o/vn2bfUyWOwLSUApHyFsenPoKr5H4fV3qAnzs5uO7g0Ha86 LQ3ZepGQgDXWiCO8cZPz5iG9eKoUZ1aMuPQYgant6bTVD2v+pyBJZwCBJ8Boq2Kk92De9B iLseoT1ZOhaqW/ioYzowj6NZMQDOYPDiAHULP42Qa7VmHzwNYcDWSkz123pPiuloiAJaEA tDb5ReXbRdJq4qEn5sPfVKj8vEYAZy1mUlDsmguwD3SmIyYOX02TNmBRbotLVXECxJUujb HmFvMoDgAws2m6xYp0ew0iX/fJkPxiXs0jnCM5x7haYeU07VANgnIOKBIx67+w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840239; a=rsa-sha256; cv=none; b=G9oYko3pleCPyCF6hPdHrvk9f853Y0a1SMlhi9hTK2Mt1FvRbhtSK96NY6MsDtnxS/epZf nvsmBbiRo2RMfxOsdmCCOsN4FK+8vgcLB777Rf0Om8tojB98nJ4L7ouZyt31ClvXVoEr98 2a3EOg/HtpCDjxQCFLYuFFDT5ZiagIL1ZzFwaW4tYjJeaEbL39kSUufym14pmxza3hAexL LoYea75GN2Z2veYVMszQTr51PBbKvpPYlpVR5rFCWPCNSYRxWASRF8udJGcGdPWH/2DAzQ 3pgPg943eX2oNMdQeN8xgTQtTcrywO339udfMpDI0EbrD/YQ+LBecSp/Z2Bbgw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMg2zJ8z19r8; Sun, 10 Aug 2025 15:37:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbJUQ067283; Sun, 10 Aug 2025 15:37:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbJ2L067280; Sun, 10 Aug 2025 15:37:19 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:19 GMT Message-Id: <202508101537.57AFbJ2L067280@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 6856b8f4e6d9 - main - ifconfig.8: Remove VLAN filtering section List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6856b8f4e6d992d021f24d1c5188e092be21b585 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=6856b8f4e6d992d021f24d1c5188e092be21b585 commit 6856b8f4e6d992d021f24d1c5188e092be21b585 Author: Lexi Winter AuthorDate: 2025-08-10 15:12:23 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:40 +0000 ifconfig.8: Remove VLAN filtering section Move the options from the VLAN filtering section into the main bridge section. Some of these (e.g., ifuntagged and ifvlanproto) don't specifically require VLAN filtering, and it would be confusing to have only some of the vlan-related options in a separate section. Differential Revision: https://reviews.freebsd.org/D51758 --- sbin/ifconfig/ifconfig.8 | 68 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index b562f9e4c0c5..b580191383b3 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 5, 2025 +.Dd August 10, 2025 .Dt IFCONFIG 8 .Os .Sh NAME @@ -2718,30 +2718,17 @@ Set the maximum number of hosts allowed from an interface, packets with unknown source addresses are dropped until an existing host cache entry expires or is removed. Set to 0 to disable. -.El -.Ss Bridge VLAN Filtering Parameters -The behaviour of these options is described in the -.Dq VLAN SUPPORT -section of -.Xr bridge 4 . -.Bl -tag -width indent .It Cm vlanfilter Enable VLAN filtering on the bridge. +Incoming frames on member interfaces will be dropped unless the frame +is explicitly permitted by the interface's +.Cm ifuntagged +or +.Cm iftagged +configuration. .It Cm -vlanfilter Disable VLAN filtering on the bridge. This is the default. -.It Cm ifuntagged Ar interface Ar vlan-id -Set the untagged VLAN identifier for an interface. -.It Cm -ifuntagged Ar interface Ar vlan-id -Clear the untagged VLAN identifier for an interface. -.It Cm defuntagged Ar vlan-id -Enable the -.Cm untagged -option by default on newly added members. -.It Cm -defuntagged -Do not enable the -.Cm untagged -option by default on newly added members. .It Cm iftagged Ar interface Ar vlan-list Set the interface's VLAN access list to the provided list of VLANs. The list should be a comma-separated list of one or more VLAN IDs @@ -2753,24 +2740,61 @@ meaning the empty set, or the value .Dq all meaning all VLANs (1-4094). +.Pp +This option is only meaningful if the +.Cm vlanfilter +option is enabled for the bridge; +otherwise, all VLANs will be permitted. .It Cm +iftagged Ar interface Ar vlan-list Add the provided list of VLAN IDs to the interface's VLAN access list. The list should be formatted as described for .Cm iftagged . +.Pp +This option is only meaningful if the +.Cm vlanfilter +option is enabled for the bridge; +otherwise, all VLANs will be permitted. .It Cm -iftagged Ar interface Ar vlan-list Remove the provided list of VLAN IDs from the interface's VLAN access list. The list should be formatted as described for .Cm iftagged . +.Pp +This option is only meaningful if the +.Cm vlanfilter +option is enabled for the bridge; +otherwise, all VLANs will be permitted. +.It Cm ifuntagged Ar interface Ar vlan-id +Set the untagged VLAN identifier for an interface. +Frames received on this interface without an 802.1Q tag will be assigned +to this VLAN instead of the default VLAN 0, +and outgoing frames on this VLAN will have their 802.1Q tag removed. +.It Cm -ifuntagged Ar interface Ar vlan-id +Clear the untagged VLAN identifier for an interface. +.It Cm defuntagged Ar vlan-id +Enable the +.Cm untagged +option by default on newly added members. +.It Cm -defuntagged +Do not enable the +.Cm untagged +option by default on newly added members. +This is the default. .It Cm qinq Ar interface Allow this interface to send 802.1ad .Dq Q-in-Q frames. +This option is only meaningful if the +.Cm vlanfilter +option is enabled for the bridge; +otherwise, Q-in-Q frames are always allowed. .It Cm -qinq Ar interface Do not allow this interface to send 802.1ad .Dq Q-in-Q frames. -This is the default behavior. +This is the default if the +.Cm vlanfilter +option is enabled. .It Cm defqinq Enable the .Cm qinq @@ -2779,7 +2803,7 @@ option by default on newly added members. Do not enable the .Cm qinq option by default on newly added members. -This is the default behavior. +This is the default. .It Cm ifvlanproto Ar interface Ar proto Set the VLAN encapsulation protocol on .Ar interface From nobody Sun Aug 10 15:37:20 2025 X-Original-To: dev-commits-src-main@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 4c0MMj19wVz649rT; Sun, 10 Aug 2025 15:37:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MMh4GSyz3fBx; Sun, 10 Aug 2025 15:37:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WLZMYvvURyG4kYAssY1zztztLNmML50iIz66iGGPX6g=; b=pGqCALo7zcKSqvcKyBYnaOZghZn+VsQUHFPl0Go13P8bKO0+zsF+AQRaPNIAnV7vo+5ND4 nBX9BFBPEK1prDQgBuElRgNDwlSTIUAx+Ai2p0h3cnAoQE70ab78zpp7/wzX4bX1OQlltv y7bCTs1WJ/mgtQVCGN05gXeuAKhvPZttNFLSeRE7JGTggHpAQamT+GM9uPBowS1PYq00cP 6PN7bL1m/skwnRHfxJYrFCo4tgSaZqvxTlCAu0JzPnFwOx1f9u57M3CJOJHq2idUoewjAM 1LAPed5orqTQIa7dRcvUD2w2EJhjLOO6M9QREheffRObiy9fowtXDNhHLVxXYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WLZMYvvURyG4kYAssY1zztztLNmML50iIz66iGGPX6g=; b=PTT7JIFLHPyCMcq3gLVtl9dgmTcFkFuFrrCM8qn19H/u9i0coBLGhVOKvpi3ZfHPiSWVhc oGpUZ1odE3hEHZZaIbAK0EumUkGw1je4SAjit0e+QwTqKXxIlSB28+/03+1xgk4O8qNikD fx1muihjPrCGo9z/+rJpsy0NJxv2QsQ8H0Zb16mS81wEEXiF7SzQbazH7WBVPmNwX6xfo7 7ZzXZ58z8pNe7lfVxp+0YNsOEZjzagNecz5kWRfmyVcTn8YXnH0iy5Sm6wkAIYOWf+xSHm tKAGPuKBwudAaZKz2ISzBDtelKCvw1mHlEXhiKGEzMPzIH/+1I1Rs1ytwwxAYQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840240; a=rsa-sha256; cv=none; b=QGgIPSxToc+fH6+zrgly1SPJ6KXNYyHrGuunjFo3P5FTqTqg2MOf6fJyxogub9weEYiZ0O 262N0drQcndoPxLk6nvGm15EaJm2BUH4ikdBw84b+RTgY9YFfOHrvGTRzWlYIGHfNbP/Ob W6VxjlKT4AFYsyH1J+jtRmOZjBgkyEPIPTqAdi2OQDLLE4MjNngBZrthQu/0MT4TBALjrX b6yXPBRKk1A1Mo2vjH3rdHSLhmA4VIK5YMtFdZeQGFv8GB54IIoTwCrh+16BFPTTfHuV+d 3ei2+ed/zkzpEk9l6euzpVmcKTL6HI2Y7KonTltQjYz8kFdSMsrB9X6ZyMWIjA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MMh3t06z1Btd; Sun, 10 Aug 2025 15:37:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFbK4A067316; Sun, 10 Aug 2025 15:37:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFbKpt067313; Sun, 10 Aug 2025 15:37:20 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:37:20 GMT Message-Id: <202508101537.57AFbKpt067313@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: bc9867173f6a - main - tests/sys/net: if_bridge_test does not require python List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc9867173f6af243929129b7050af6c64966c7d6 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=bc9867173f6af243929129b7050af6c64966c7d6 commit bc9867173f6af243929129b7050af6c64966c7d6 Author: Lexi Winter AuthorDate: 2025-08-10 15:27:08 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:36:40 +0000 tests/sys/net: if_bridge_test does not require python This was originally added for if_bridge_test:span which uses scapy, but that requirement is now annotated in the test itself. Remove the requirement so the remaining bridge tests can run without Python installed. --- tests/sys/net/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/sys/net/Makefile b/tests/sys/net/Makefile index bc8f9c5e9c80..65cc99a3e932 100644 --- a/tests/sys/net/Makefile +++ b/tests/sys/net/Makefile @@ -6,7 +6,6 @@ BINDIR= ${TESTSDIR} ATF_TESTS_C+= if_epair ATF_TESTS_SH+= if_epair_test ATF_TESTS_SH+= if_bridge_test -TEST_METADATA.if_bridge_test+= required_programs="python" TEST_METADATA.if_bridge_test+= execenv="jail" TEST_METADATA.if_bridge_test+= execenv_jail_params="vnet allow.raw_sockets" ATF_TESTS_SH+= if_clone_test From nobody Sun Aug 10 15:41:00 2025 X-Original-To: dev-commits-src-main@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 4c0MRx0ZxQz64B8Y; Sun, 10 Aug 2025 15:41:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0MRw700Jz3hGD; Sun, 10 Aug 2025 15:41:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UgxpKhgurtcTGXPiPDvcJ7VEmmXD4fi02ELZhtcz+xI=; b=UC44TCNpzIT2zQZzTkL3sFy/v0EIv8OVgha/aP30aSDQqp+BC9+FR+JXTzgbX8Z0V+Pdtk Ra2NIVpWLX9jaXqa6uqHh9oLtSnowkO6PUick4DTXyKkrI486uNh83A9J8O/0IR3m9F+Gm dwquWIouyPfxgUAuKbj4dHBQ2bq+zHOxXbTPgTaNqS9MXeYYbO+8L8GGoGARSUyAPp5Q0R 59YF6ipgqdLjSXIMH2owfEU0zQW+fRTAsu6Q6reP0iM/W9/H1jRaZTQYtZYCXnOi6ll8vf PPM7yzYpdc7trN0/t9gbaRT9MdT5GSsSfgQwVcLgUsyLad03i8ar2mBz2ATZyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754840461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UgxpKhgurtcTGXPiPDvcJ7VEmmXD4fi02ELZhtcz+xI=; b=ZygZNNw4Crt1tSh7H1C4coeZQlchZvctHkfXX/TCe62pWMqXjKRy6NH+0oEG+OeYjDayrG 17HLweevPWfwrQTWtL0P4vSXvS3uu3zO/s85BQB66n9uAAsIVF6SqM0qGyynY5R5FYBwTm +8CJMSSfX+iDvQqMa8h5VEJrqeosRu99iqkRFvSuMZoSvc3H0qUsIkILoJLts233vWVykv AefkfDYXSbAm837yOEC0MzR8Y76fbLfuiNnTURjmaIDzYMoEzZrs0oh/MIikF555rT9IXT 60G92v8hErzPrdbhDre6mNEmK1SCjDyYvklCOJUiQYtIR1MFCqKAzRUPd3Yi5w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754840461; a=rsa-sha256; cv=none; b=O4NtT4Xr5AetePC0e9CavhwUQ4W0731KSOtWEfBk/GMOjXPcnZutl5KzUsSAKkJE+ihd9a Z79qSdzmnJ6ifCVUrmg2uzzj+Ve30YZYVGsMi3kfN+mJRbymFUDTrSuK16tkf6mxLVWjZe klk6s4VuistQ4Zbcczl9cxwt+gzDt6MjdKqhdJ7xaI1/TsliufDcRADmKX4VQEPo41fOPp VKWfEDMVFb5I8msWPeg9g6+WPlhTLz3sK3sNYhiqIytIWvL/to/MO7iFftYR3o1ZgBiOKm eaGBRlCnMFh/o3cjjf8olRlwuSJjLwvp3jhwfmho0dcI8CzfjegdFck1CtbVMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4c0MRw63Yjz1Bfn; Sun, 10 Aug 2025 15:41:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57AFf0ai079500; Sun, 10 Aug 2025 15:41:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57AFf0vQ079497; Sun, 10 Aug 2025 15:41:00 GMT (envelope-from git) Date: Sun, 10 Aug 2025 15:41:00 GMT Message-Id: <202508101541.57AFf0vQ079497@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 084a3e1e0337 - main - RELNOTES, UPDATING: Document Secure RPC DES removal List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 084a3e1e033766eedb88b1cd99d786b4fd692931 Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=084a3e1e033766eedb88b1cd99d786b4fd692931 commit 084a3e1e033766eedb88b1cd99d786b4fd692931 Author: Lexi Winter AuthorDate: 2025-08-10 15:40:08 +0000 Commit: Lexi Winter CommitDate: 2025-08-10 15:40:08 +0000 RELNOTES, UPDATING: Document Secure RPC DES removal --- RELNOTES | 6 ++++++ UPDATING | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/RELNOTES b/RELNOTES index 96149ad15178..da466b594f60 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,12 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +7ac276298b72, 7b8c9de17448, 1271b1d747a7, 9dcb984251b3: + Support for Secure RPC DES authentication has been removed. This + includes publickey(5), keyserv(8) and the rpc_secure(3) routines which + rely on keyserv. The libc symbols are still present for backward + compatibility, but all functions will unconditionally return an error. + 37b2cb5ecb0f: Add support to VOP_COPY_FILE_RANGE() for block cloning. At this time, ZFS is the only local file system that supports diff --git a/UPDATING b/UPDATING index 161c13a55065..78562d021e37 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20250810: + Support for Secure RPC DES authentication has been removed. + The keyserv(8) daemon was already removed, but support for it in libc + has also been removed, so if you somehow still had keyserv installed, + it will now stop working. There is no workaround for this. Removing + DES is considered a feature. + 20250808: The CLEAN option has been switched back from default-off to default-on. This reverts the 20240729 change below. From nobody Sun Aug 10 22:43:55 2025 X-Original-To: dev-commits-src-main@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 4c0XrF3f5kz64wr9 for ; Sun, 10 Aug 2025 22:44:13 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) (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-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0XrF1ZXmz3bGx for ; Sun, 10 Aug 2025 22:44:13 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-31ece02ad92so2803090a91.2 for ; Sun, 10 Aug 2025 15:44:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20230601.gappssmtp.com; s=20230601; t=1754865847; x=1755470647; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RJoohFkdApMlimJdnWWvkpUb2F799BbHfLijU+O2cC8=; b=qBztiq1r0jfQw5q9TONfZnq3iuTaxDmhKEYWmAB874AWeWEwrCH52RktqNIro7cD83 4nIK2LBeOOPmUrvKQiwIYmwmY1VO+0DIYzXN6OqO3ijh7/PQRkPZw8vxi92j4vE9+67Q 0x6uuzhyhHwxLM40tXnLyk3s7JQJRj0l3SXIP4LpR/mZfDiuCHjRkAhYwxkHmWhkkF7x T+t7T/sz+Nm+BpYtGrBQ/4XM0hJBPhMMEHD7MzovKMWRIH3puX81zueuC3eRRpL6b/aK 7KNCb5Q9KnNyWwDZRqEwXAc2VsgZkHHopS7fkF+an5tdh6Fba+LXlkvmP3KjJAHXOLfG sLxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754865847; x=1755470647; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RJoohFkdApMlimJdnWWvkpUb2F799BbHfLijU+O2cC8=; b=skjOfU1+mYNbY8z50lsESt2N4cFjOsIvK84mHFcBTX9vPBuA/QsxWvtG1lefB9ltl+ N5h87gDqD9dyf4sBSHuuMoh0TTZDeMk7k960fiGaek+LftYQoeJ+7uBqZhT95hkgwbjH 78SnjvbjTeNAi2V6rlgN+CP6p1TfKmWez5Fq7T791UmM+zfO+PUBQG9t3TOOOXKy6vlY STfWApS/E0jbrDWYCZDvEgyb6CTbL2ikiEW7Hu9VEtG1BdaRtlhgs9leotPbUI2xQFxK tFnEs8No/JUiW+EUxpsZv6flODrfd28unWpILnne5O+/I1sl0RvUtq32iv6DM1P8SjXO b9UQ== X-Forwarded-Encrypted: i=1; AJvYcCXuZ2NBGpfCUQ+Z+lkUeapymD7tSAiO4OqE5x8vqFqC/6rNqXCFNGhYPu0mjwLedzubQxGsJ09nqsLWnsg6PQ7y4Qackg==@freebsd.org X-Gm-Message-State: AOJu0YzPM3LqJtJkh9NZ/NwxyNzrJkgIFvf6ZfmZzwGvCQeze0vs7Wln 3YhKLjrg8JimzYjAXD0TeUbZUWBuZTpfny+qvgDJojAWKu8bk7EebxeudxYFKc6g8Uu1hUWD6sV Fkan0Od0lg1Dm+kv58cfKw/5zPHyrScuzTMLTJLoKbA== X-Gm-Gg: ASbGncvxbGzm2OYrHCPi2EF5+/yJzsZGuTqtxtu4bWGVYxoNQHk6TkL6goFotqPJ3se Za2WOQpwgYh2IHCJeROhJPgG45C6FTqKOdIRdBAv7+idbDRCurgn1g3dd6k98sTfudpUHp//opP U2GV/IdrRO26pVXyeZ33y3pybvWvc5iNpJlgV98Xt1KtkCKMVqfnjxmIlLJWrMYNw/BAj+IMF+X 8rsWYc= X-Google-Smtp-Source: AGHT+IF12NqF4KNCBBTxZ2qLEkQQNpcaFHk0s/E6DMB+xFdhJ8Jj4zxdmfbVWo29vbvJ4tcRN5tF4GqMt1m6hOVFFeI= X-Received: by 2002:a17:90a:ec8e:b0:312:39c1:c9cf with SMTP id 98e67ed59e1d1-321839d783fmr15794207a91.7.1754865846776; Sun, 10 Aug 2025 15:44:06 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202508100156.57A1uMoa022605@gitrepo.freebsd.org> In-Reply-To: From: Warner Losh Date: Sun, 10 Aug 2025 16:43:55 -0600 X-Gm-Features: Ac12FXxk58mA8bz71bxvxLYCtLVPCW41lsReC0LS9psVeH01rs019O9ceU9iWRI Message-ID: Subject: Re: git: bc598959090d - main - autofs: Plug memory leak To: Konstantin Belousov Cc: Warner Losh , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4c0XrF1ZXmz3bGx X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] On Sat, Aug 9, 2025 at 11:19=E2=80=AFPM Konstantin Belousov wrote: > > On Sun, Aug 10, 2025 at 01:56:22AM +0000, Warner Losh wrote: > > The branch main has been updated by imp: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=3Dbc598959090d43aa0fc6b913= 55979016a9449041 > > > > commit bc598959090d43aa0fc6b91355979016a9449041 > > Author: Enji Cooper > > AuthorDate: 2025-08-10 01:52:31 +0000 > > Commit: Warner Losh > > CommitDate: 2025-08-10 01:54:42 +0000 > > > > autofs: Plug memory leak > > > > Originally, this was an extra free, but ngie@ suggested this > > change. Since that's the whole thing, I've set her as the author fo= r > > this ancient review instead of trix@juniper.net. > > > > Sugggested by: ngie > > Differential Revision: https://reviews.freebsd.org/D10063 > > Sponsored by: Netflix > > --- > > usr.sbin/autofs/common.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c > > index 18756752876c..6b98214162ae 100644 > > --- a/usr.sbin/autofs/common.c > > +++ b/usr.sbin/autofs/common.c > > @@ -149,7 +149,7 @@ create_directory(const char *path) > > error =3D mkdir(partial, 0755); > > if (error !=3D 0 && errno !=3D EEXIST) { > > log_warn("cannot create %s", partial); > > - return; > > + break; > > } > > } > > > Isn't there another leak, occuring when the first break in the loop is ta= ken? > Then the 'partial' duped string is not freed. I think it's always leaked. checked_strdup allocates it, then concat allocates a new string that's set to partial. So no matter what, we should free it, no? Eg diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c index 6b98214162ae..2dd7c290cebc 100644 --- a/usr.sbin/autofs/common.c +++ b/usr.sbin/autofs/common.c @@ -153,6 +153,7 @@ create_directory(const char *path) } } + free(partial); free(tofree); } Warner From nobody Sun Aug 10 23:28:50 2025 X-Original-To: dev-commits-src-main@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 4c0Yr35xJ7z63XqN; Sun, 10 Aug 2025 23:29:07 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::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) by mx1.freebsd.org (Postfix) with ESMTPS id 4c0Yr31YXLz3gvb; Sun, 10 Aug 2025 23:29:07 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 57ANSpIq017505; Mon, 11 Aug 2025 02:28:54 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 57ANSpIq017505 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 57ANSoQE017504; Mon, 11 Aug 2025 02:28:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 11 Aug 2025 02:28:50 +0300 From: Konstantin Belousov To: Warner Losh Cc: Warner Losh , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bc598959090d - main - autofs: Plug memory leak Message-ID: References: <202508100156.57A1uMoa022605@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4c0Yr31YXLz3gvb X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Sun, Aug 10, 2025 at 04:43:55PM -0600, Warner Losh wrote: > On Sat, Aug 9, 2025 at 11:19 PM Konstantin Belousov wrote: > > > > On Sun, Aug 10, 2025 at 01:56:22AM +0000, Warner Losh wrote: > > > The branch main has been updated by imp: > > > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=bc598959090d43aa0fc6b91355979016a9449041 > > > > > > commit bc598959090d43aa0fc6b91355979016a9449041 > > > Author: Enji Cooper > > > AuthorDate: 2025-08-10 01:52:31 +0000 > > > Commit: Warner Losh > > > CommitDate: 2025-08-10 01:54:42 +0000 > > > > > > autofs: Plug memory leak > > > > > > Originally, this was an extra free, but ngie@ suggested this > > > change. Since that's the whole thing, I've set her as the author for > > > this ancient review instead of trix@juniper.net. > > > > > > Sugggested by: ngie > > > Differential Revision: https://reviews.freebsd.org/D10063 > > > Sponsored by: Netflix > > > --- > > > usr.sbin/autofs/common.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c > > > index 18756752876c..6b98214162ae 100644 > > > --- a/usr.sbin/autofs/common.c > > > +++ b/usr.sbin/autofs/common.c > > > @@ -149,7 +149,7 @@ create_directory(const char *path) > > > error = mkdir(partial, 0755); > > > if (error != 0 && errno != EEXIST) { > > > log_warn("cannot create %s", partial); > > > - return; > > > + break; > > > } > > > } > > > > > Isn't there another leak, occuring when the first break in the loop is taken? > > Then the 'partial' duped string is not freed. > > I think it's always leaked. checked_strdup allocates it, then concat > allocates a new string that's set to partial. So no matter what, we > should free it, no? > > Eg > diff --git a/usr.sbin/autofs/common.c b/usr.sbin/autofs/common.c > index 6b98214162ae..2dd7c290cebc 100644 > --- a/usr.sbin/autofs/common.c > +++ b/usr.sbin/autofs/common.c > @@ -153,6 +153,7 @@ create_directory(const char *path) > } > } > > + free(partial); > free(tofree); > } > I think this is right.