From nobody Mon Mar 31 02:41:52 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwPr6KfXz5sTV9; Mon, 31 Mar 2025 02:41: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 4ZQwPr4PG5z43KW; Mon, 31 Mar 2025 02:41:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BbnRGKPlhMU0CpkeXc0zRWrIAbkoq0JfleZTVxWpmbc=; b=DJ/R+XEotc8JHnDHJn7mKdK3apeZmZknmtSltOQkjPR/yjErWINg68zg1LI/Y8jZ9n4N4W 1TDljw0W4azGcVJQpxLU0YCmA6W1VYMeh3FGLUOH/FTp9Qk1GNP99YwRsnDLMYI6iXykGK BrZR69aK0jQIUPSC7uxNDONK8papfO6VBoo/EHkI5h2ZI+8kT4uoWuXk+yS9SfJqemp4dD URWg3NBkIjDDK7+192NXD8Xzjohvu0+9+MHXcgoODWxIzIm5YbBteyv4zUHsRkB1IBHWmJ btVxFNF8U5vFOZ8gz+Wqo8i3yP+igt646Jn/oaCKIM41P01V5628t+9iayxlQA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743388912; a=rsa-sha256; cv=none; b=GNgVL8IumTbPF0lg/7bE1jC+0lKYb7LkM0ked3FXfsol1C2wb+SpfwE0W5lzup1wmKUzYG DcDROwmAcP9gVPk2pDB9+MgZSmByO28lyDv5+Nitmm/wHOOnOe8lrR30AWbOOpO9pYXJtN 6OP0FCCu3C3IPWDjwfH+ueCdSqrJhWuvfk9tayV3ZL3zRa73xnThh+ObCBeU5QpJc03yIx /6ulUaYjnUm4JIVKnyOCNoXqsTTNQe/g76xFCQfM7XP7/bNm19Xr63ST2IFKWqcALvSPQh Fj8Nxhhpd16WlWHJcXZLwOfX3i1pqYNEbh3jYIv/MKYHKbLNMwK8PbloMhUnzQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BbnRGKPlhMU0CpkeXc0zRWrIAbkoq0JfleZTVxWpmbc=; b=qu6Lwb67GlLN+1pdXBGxM9jIbTpFlOxpMlD08jDAt8kFcfPV0IdDh+3gm8fxXcF7Vbc116 Zz0j+juspmUsk9G1hP2Rgi3f3YfrN6ZbKSH1/7326BWY6KEjCnP9FG9yUqPmRBR7lrXfrU U+d8yJuoIwq8PeYySS3m0E3GzvREyO3/NvGsndj81cFh0xeVMjmEBbvviF7JeQpNoIHICZ E466tRb6p4h5elkcITHfs2ZTJdvmVYaodyrMJq3H/70WkGaspfOb5JesHIwlVlZ+hrjMqo LhFPmndZRX/vis3KcbrChJxcH2VvzCnQ5lSPUQJdESHMHfkEuVaAiMdKbncs6A== 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 4ZQwPr3w44z9SX; Mon, 31 Mar 2025 02:41: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 52V2fqEF064275; Mon, 31 Mar 2025 02:41:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2fqLl064272; Mon, 31 Mar 2025 02:41:52 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:41:52 GMT Message-Id: <202503310241.52V2fqLl064272@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 8056c9649171 - stable/14 - libprocstat: change psc_type_info array to use designated initializers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8056c964917156e5a824a5fa78826b7746ce7567 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8056c964917156e5a824a5fa78826b7746ce7567 commit 8056c964917156e5a824a5fa78826b7746ce7567 Author: Konstantin Belousov AuthorDate: 2025-03-15 00:28:07 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:41:32 +0000 libprocstat: change psc_type_info array to use designated initializers (cherry picked from commit ba2fb6b367fd513ea5812a496254d3a05ec380b8) --- lib/libprocstat/core.c | 60 ++++++++++++++++++++++++++++++++++++++++---------- lib/libprocstat/core.h | 2 +- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/lib/libprocstat/core.c b/lib/libprocstat/core.c index cf3435a10c79..1f64e728b0af 100644 --- a/lib/libprocstat/core.c +++ b/lib/libprocstat/core.c @@ -62,18 +62,54 @@ static struct psc_type_info { unsigned int n_type; int structsize; } psc_type_info[PSC_TYPE_MAX] = { - { .n_type = NT_PROCSTAT_PROC, .structsize = sizeof(struct kinfo_proc) }, - { .n_type = NT_PROCSTAT_FILES, .structsize = sizeof(struct kinfo_file) }, - { .n_type = NT_PROCSTAT_VMMAP, .structsize = sizeof(struct kinfo_vmentry) }, - { .n_type = NT_PROCSTAT_GROUPS, .structsize = sizeof(gid_t) }, - { .n_type = NT_PROCSTAT_UMASK, .structsize = sizeof(u_short) }, - { .n_type = NT_PROCSTAT_RLIMIT, .structsize = sizeof(struct rlimit) * RLIM_NLIMITS }, - { .n_type = NT_PROCSTAT_OSREL, .structsize = sizeof(int) }, - { .n_type = NT_PROCSTAT_PSSTRINGS, .structsize = sizeof(vm_offset_t) }, - { .n_type = NT_PROCSTAT_PSSTRINGS, .structsize = sizeof(vm_offset_t) }, - { .n_type = NT_PROCSTAT_PSSTRINGS, .structsize = sizeof(vm_offset_t) }, - { .n_type = NT_PROCSTAT_AUXV, .structsize = sizeof(Elf_Auxinfo) }, - { .n_type = NT_PTLWPINFO, .structsize = sizeof(struct ptrace_lwpinfo) }, + [PSC_TYPE_PROC] = { + .n_type = NT_PROCSTAT_PROC, + .structsize = sizeof(struct kinfo_proc) + }, + [PSC_TYPE_FILES] = { + .n_type = NT_PROCSTAT_FILES, + .structsize = sizeof(struct kinfo_file) + }, + [PSC_TYPE_VMMAP] = { + .n_type = NT_PROCSTAT_VMMAP, + .structsize = sizeof(struct kinfo_vmentry) + }, + [PSC_TYPE_GROUPS] = { + .n_type = NT_PROCSTAT_GROUPS, + .structsize = sizeof(gid_t) + }, + [PSC_TYPE_UMASK] = { + .n_type = NT_PROCSTAT_UMASK, + .structsize = sizeof(u_short) + }, + [PSC_TYPE_RLIMIT] = { + .n_type = NT_PROCSTAT_RLIMIT, + .structsize = sizeof(struct rlimit) * RLIM_NLIMITS + }, + [PSC_TYPE_OSREL] = { + .n_type = NT_PROCSTAT_OSREL, + .structsize = sizeof(int) + }, + [PSC_TYPE_PSSTRINGS] = { + .n_type = NT_PROCSTAT_PSSTRINGS, + .structsize = sizeof(vm_offset_t) + }, + [PSC_TYPE_ARGV] = { + .n_type = NT_PROCSTAT_PSSTRINGS, + .structsize = sizeof(vm_offset_t) + }, + [PSC_TYPE_ENVV] = { + .n_type = NT_PROCSTAT_PSSTRINGS, + .structsize = sizeof(vm_offset_t) + }, + [PSC_TYPE_AUXV] = { + .n_type = NT_PROCSTAT_AUXV, + .structsize = sizeof(Elf_Auxinfo) + }, + [PSC_TYPE_PTLWPINFO] = { + .n_type = NT_PTLWPINFO, + .structsize = sizeof(struct ptrace_lwpinfo) + }, }; static bool core_offset(struct procstat_core *core, off_t offset); diff --git a/lib/libprocstat/core.h b/lib/libprocstat/core.h index d6cb60dc9e25..8f6aa40192da 100644 --- a/lib/libprocstat/core.h +++ b/lib/libprocstat/core.h @@ -31,7 +31,7 @@ #define _CORE_H enum psc_type { - PSC_TYPE_PROC, + PSC_TYPE_PROC = 0, PSC_TYPE_FILES, PSC_TYPE_VMMAP, PSC_TYPE_GROUPS, From nobody Mon Mar 31 02:41:53 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwPt1FtTz5sTn7; Mon, 31 Mar 2025 02:41: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 4ZQwPs52qBz43T0; Mon, 31 Mar 2025 02:41:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4VjpfIl8IgNzZq2enAlvT/PHYSHaJDUVKXsFG2VA2f0=; b=T7zEZ/+D9YEUih+JsxOjQ5DsU65z9hQE0Uo5xtu6dD1j20lLjO5XyWTW/ZAA6+WhOS5yM7 UGLmSOiHkFOpU4K9b1jJT6Oh9Puz31pS7tNJp41gYJddJQ3piRhFc7IEnkqA/+t8hbJn7E OgRDvuG3W2/lI1U/rtiucjuUhHpB+h5dwXU8W0OzCwzyExCRUavRU/HjuyMFQCL8ubIK18 Xxa1h8lgTk2rHBoFid+jaGEc5MykQ4fkD/qJNPncxsr0M+Z+wWX7/hXdjzdJi+HqJW/hsT OWuPT0MRjfWoFhmC0cnXgG8TDXSbjc19+7wwu43J8w5JqIdFCsBR+bRBKuXEFA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743388913; a=rsa-sha256; cv=none; b=F87Z3YLnVEvvhtbBCUNwDmut0cjXbfs4f93oAlWPHjW0U2cUNKzjOqfOTFHfUZhAlgdfBJ rlHz93VNSBKM3tPvsTHDedLzFhrkdVgxisRZ8o2yieo7rSwGLPKVfRuCMgOe8EqZWclBqX Vr4n1NpQlx/oGVE3wiNkrvc3GjMnxc//k5ivkTOXAehAS7BvC/RHMy7YgFbfU8yxKQsFk+ K8mrUx2dkCmb2x5Jm3ODcihBPtmK7sb+u4gdrNCXo3RMbpuVaojSoW7r1ksFKKUY56tGLv f3DTiAeGLLNn05BVWN1WdnoKrk2IAI9x5BjwxWU3Ut+X51mDf6ma/xq8HVh9aw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4VjpfIl8IgNzZq2enAlvT/PHYSHaJDUVKXsFG2VA2f0=; b=B8+SnJml3vwN7UmRL3Mre7gvQTP97cSoUol3Hhi3QuDjsud+rhw567pIHC2SxeBcBks6AF v9CJOBbjXynNrLb8ssBz+3FIgsl0+rVFDwbrCRXhSLEm5nvHmv92Erlssvhf8f++EGfROq OPaCidTi8+NmOdyzMdD9b8yFJZ97TAlfhNHKUbCvo6Zl5OlZw7cyB4Xz3dBeB9FoEg5f1l 0Pr2iXKY2GcDsREUbBr8I3GAI5iZUwEvX69Y6swPwZbY8Lnc+Rd3bmhPmF4bcDY2LeCdnb mn9b/7qKLSM3aI0pR/IrJG2gH4518zYVJsz6ggWpFi541uZQSnNXVaBhCuDibA== 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 4ZQwPs4PFTz9x9; Mon, 31 Mar 2025 02:41: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 52V2frOb064315; Mon, 31 Mar 2025 02:41:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2frWc064312; Mon, 31 Mar 2025 02:41:53 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:41:53 GMT Message-Id: <202503310241.52V2frWc064312@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 192aae0a9f62 - stable/14 - libprocstat: constify psc_type_info[] List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 192aae0a9f62417dd8558ee753f8853e224f0399 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=192aae0a9f62417dd8558ee753f8853e224f0399 commit 192aae0a9f62417dd8558ee753f8853e224f0399 Author: Konstantin Belousov AuthorDate: 2025-03-18 01:43:54 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:41:32 +0000 libprocstat: constify psc_type_info[] (cherry picked from commit debcd4c05701be0ff48c6b350ed6b3a80e5f0b1f) --- lib/libprocstat/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libprocstat/core.c b/lib/libprocstat/core.c index 1f64e728b0af..a3e500367920 100644 --- a/lib/libprocstat/core.c +++ b/lib/libprocstat/core.c @@ -58,7 +58,7 @@ struct procstat_core GElf_Phdr pc_phdr; }; -static struct psc_type_info { +static const struct psc_type_info { unsigned int n_type; int structsize; } psc_type_info[PSC_TYPE_MAX] = { From nobody Mon Mar 31 02:41:55 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwPw4C0Hz5sTnB; Mon, 31 Mar 2025 02:41: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 4ZQwPv6QSQz43QV; Mon, 31 Mar 2025 02:41:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WK+fUtRu6KWxcDhfP4lpWRqGsY4FmrK/7J6ZlI4VCzk=; b=Dg6Y2MZsICcwMohYSDuLqsva7hT83vAncqaFAQO/lGAcd4UJRT3jGuKwCzInaUfPPDMccG FVC6TpW0E5C5L67WrEvhwqrujkuG8tXj8dlN0lvbfBkbvjTkYCT1Cv6GdGT7cmoriEQqR5 G4u6iFVzdiuhfUG/cAoFYTrgNQGliJfrwjF1HqcH+P0x0v3ladm3PB+pHa8bx+OP/080QE ePBxlxOh5w8wZ2fVbfIXKfbMvwHmCBgtS97mk7k1Bqg47REIc2XMds0hQ/IfLroxDV+pcy xMArpaUkra1y7z+kSsz+8/B4zHXhTEo0Xd79D71bI5BuV0z7CLfzYlxNzBvXIA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743388915; a=rsa-sha256; cv=none; b=xCqrlO3Zz3/JQRudMI2+HXkUwmKqrRuXE23/coOG3uFW3QwRn01CfAQAClZrA7YiVr9czS d3XAFcwwNow9YiDvy0AXjCK078ud8ajYVYrilyxjPDJ2P3HlbnWpy1P+lQuM5CgYTwvtXb GkYe55W/juATvdZsN3lXa4cfTr7s7vRmeXSun99g82FnWy0YMUbDdu/jW3hHQQouZgyqnr v6FDcuQ+zO8AX0LNd6MwxOnocXaaA+l6+BpGFNdTMzfeasGGdKm8GtTH9495F2yM5olfAr zGGdOQjaHo4vB0ZQ/wDMddxfTbLC/tBACUDCiY1bVBJNvT8kfDmzPjkNAB5opA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WK+fUtRu6KWxcDhfP4lpWRqGsY4FmrK/7J6ZlI4VCzk=; b=qSGry43BsMogvfxhgcYwrWSOkiwBkOKxucZBD3CHRbz64Rg0NW8I7oKAx1CM9taxoGp9db ODGh/FlmKpjJlYNsTnJfgpcidkDJpgeRldG5YvaAMnNksyfKTzIm3VvnVOQn/q2c57/eP9 8PXSVJQtcmSP8mEySaIsIgwxcGgaRzdQhiw8xYdhaLfO9fnIkE/fKHpkutf1Gd+a+Px0i6 WLjduLg2p8Q6bZlDySdu2L2oF3i1A8/ZdIgtdW+w730JEnQIlmX2Z8dHLd6Qxmn1wp2AF7 Mx3iTWXRLSEoAn1onSzb7hG8KWilxazgiLg1KG+RQr6kRELOyDbkleNkZYirJg== 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 4ZQwPv606NzBDJ; Mon, 31 Mar 2025 02:41: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 52V2ftT8064390; Mon, 31 Mar 2025 02:41:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2ftCe064387; Mon, 31 Mar 2025 02:41:55 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:41:55 GMT Message-Id: <202503310241.52V2ftCe064387@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a02f377d9579 - stable/14 - procstat.1: correct local socket types descriptions. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a02f377d9579e4335d50c7b38ad8cdcdcb2653b2 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a02f377d9579e4335d50c7b38ad8cdcdcb2653b2 commit a02f377d9579e4335d50c7b38ad8cdcdcb2653b2 Author: Konstantin Belousov AuthorDate: 2025-03-27 09:02:21 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:41:32 +0000 procstat.1: correct local socket types descriptions. (cherry picked from commit 991329f507a893076a4119c90bb463de0ac15be9) --- usr.bin/procstat/procstat.1 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/usr.bin/procstat/procstat.1 b/usr.bin/procstat/procstat.1 index c078b405d185..4f4c0df9575c 100644 --- a/usr.bin/procstat/procstat.1 +++ b/usr.bin/procstat/procstat.1 @@ -438,13 +438,9 @@ see .Pp .Bl -tag -width indent -compact .It UDD -.Dv IPPROTO_UDP ; -see -.Xr udp 4 . +Datagram socket. .It UDS -.Dv IPPROTO_TCP ; -see -.Xr tcp 4 . +Stream socket. .It UD? unknown protocol. .El From nobody Mon Mar 31 02:41:56 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwPx2Sxzz5sTVD; Mon, 31 Mar 2025 02:41: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 4ZQwPx01jSz43Nf; Mon, 31 Mar 2025 02:41:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5YA+eGrjTQqCEOYqwC9+6WprUnzwgv3kwwphslDFSII=; b=NP7qsxCdNjGgj61344yAXp1yn17p5X2vFEXRYmkRKdS+Cksja7wYyahlnt1yYG/fE0+hkY QWDMHTkRydMnHxSHZyXkNT62h0P12W/VTDgJZyftygT44OIy7X6unw1rhIwR6XqlV/3WUQ 8wWUJo5IiJCummugOxC+cnc1ZzMv+LQavd2Za8qGA3TX9ZN+qZHDqZPCnqk3ZYIle7LJL/ wiHjKos7oUzIUGIcsV+e8CpVj8swLDbEXTm1+Y/FDVaS3zTIwzLsaKBcs5L+N6C75XdOiK U1bz6Rb9fAodveHeIWVVAm6fuXn27Fr2jOoLuLKo2nDOxeXTSN4ckEXHYgyx4g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743388917; a=rsa-sha256; cv=none; b=WxLRyAAR/CeTUBaAZ+APCzl4XXm0NG2TDHeZDA6wuYHW6em4gw8YxKWCedNwXcnwKGWruv QjUemKLC6ZnsX+X2QC964JmDaza52thbxgvZyi9rSPan7YQKpG8bkQ/bbGA22jNrZomZmU w4B6csEoXtI/xcYVNzHJgCGhqVAmV7N9C0R5+E/G0RTW9AdyVtWaljEA6sA/ks97glVL2u HakAuDFL6lwf38o52gAfgC15U/Jhq0V9jdZZnE3Zw0tb/VehPFS5mLiNJHsGz8hy7XzkZQ WlzMkEL5bJ6SCjek85pYN9xoSW6IVa+IcQ+TJcKdz8m1ZXxgDb26XA6PaBLvSA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743388917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5YA+eGrjTQqCEOYqwC9+6WprUnzwgv3kwwphslDFSII=; b=i8iwX87micA7MuEkU62A8aDoNBSha2Wdv+I0fi3VGSKgwo6zj987Mo10kX1Hk+DShpiuAj rFcfHkKTJB/hQC3tHL2y014u+Ydfo9nJX8Mr+28ZDtQUgyNErfhS2+obKYERCPvhiJJSH3 jbHPSLYR8q3AXf4xKPPRM0F6iqZ2cO6183u223kbmYxtTh2Ydj2RzT6o4WMnPpkRtXLgkP lf14+4FOKpNkH4MA9GaIboGJ3buUQMWzG0VvZdiIElUyVxM7/eU5FLsbmd7NvVZdD7oBjv GjVVeOnZaBIpoAf/UGKuLAtxGTOQ8rnxg5rSlNXvxxYhXCb56N0qojryNpH6Rg== 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 4ZQwPw6dfvzB8V; Mon, 31 Mar 2025 02:41: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 52V2fu60064426; Mon, 31 Mar 2025 02:41:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2fuQL064423; Mon, 31 Mar 2025 02:41:56 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:41:56 GMT Message-Id: <202503310241.52V2fuQL064423@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 04e4dda94f21 - stable/14 - procstat.1: document local SOCK_SEQPACKET socket display List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 04e4dda94f21a114409958c4948edaaaf2ad4721 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=04e4dda94f21a114409958c4948edaaaf2ad4721 commit 04e4dda94f21a114409958c4948edaaaf2ad4721 Author: Konstantin Belousov AuthorDate: 2025-03-27 09:06:25 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:41:32 +0000 procstat.1: document local SOCK_SEQPACKET socket display (cherry picked from commit 03dfb8d0211cf9d7405c4fd7d541dde28047001c) --- usr.bin/procstat/procstat.1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.bin/procstat/procstat.1 b/usr.bin/procstat/procstat.1 index 4f4c0df9575c..273d8339c42e 100644 --- a/usr.bin/procstat/procstat.1 +++ b/usr.bin/procstat/procstat.1 @@ -441,6 +441,8 @@ see Datagram socket. .It UDS Stream socket. +.It UDQ +Sequential Packet Stream socket. .It UD? unknown protocol. .El From nobody Mon Mar 31 02:46:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwVk1JY6z5sTW4; Mon, 31 Mar 2025 02:46: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 4ZQwVk004Vz47GH; Mon, 31 Mar 2025 02:46:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389166; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dwyQhwfw7NS5/eWiNNVtf+8u0eBvdeWdCLvgAQLjqD4=; b=gm+3L8CXrFhKAKBkbbQ2rSjQMXTvNcY9kIDwYs4ymcrYsW4otzk1dSj3sVH2RkFNeoBSQ6 l40WoMIm4sREmuYLeONX/qVB6k30oXdQWTkA9LyxVNNzODj7B5LTVszGXZsL+QhQ/wn3Da HQW32/zTR1g7hQ53gSdwNpeMr96tGCNSdQc3KIupiGLwVdtOgIzdOLlONqzKUfOYkuEUrz tUDyKmaTFHG4u+oZjvXR9OpBYdW3vh8rrigJ9JuQk8yfURyy89QdHvPPuo0e10+Y/G9aP1 tIhtxI8UP8chLGV8+gOD9J+i6uTtm3z9MsbWAy3JOso08q0faMCi6lhgvT1Rhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743389166; a=rsa-sha256; cv=none; b=ZjX2Z9jfeS0NpOiuty5V/NDD8MK+Y0CwXckM2pZv1rF6l7m/5m3jbN/J0RXhPzV7O3JmMl bs1n8usbJvYj1E5+nwcGRMCJnGrdM3veLECX4KX6+14d9JGNnDddGLEW1Ue25r/C5ASt9U UG5F5s1mGMD3r+D4jhj3MfxaOJMwczgBnsGbd9kLriWQjAGrlSYToEJL/CJ/YyLLjDUei+ iSbs2rKlukqLjXgmCeB3GPjKb/BzgcfAs/pXbQ7eSXo7s6cgfjfVabJhWASZhDw3ABrrlt tyiALHop4viNgPqwLeGGsIHMKeYlLunamlPi6OEHowl2NCoiEhHyP/DNUNfYZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389166; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dwyQhwfw7NS5/eWiNNVtf+8u0eBvdeWdCLvgAQLjqD4=; b=jlWBFdKix5LTlg7As7oVlo3+34ity/kSTpC2tXDBb40Zbx2pd4cwAJiNZe2DbbUq/7kZS6 d4MCHCYl/UXa8pFdGphnk2/C8W0lwnqmGp0lUiiLnpufl4fGts7w3APsZ5a60oTP/+K+LI 8vTyrqJEX4PvbdjY6q+rFQ2EGCyWyp+0uhQZX1ZX1Ny/9MVN2oo34o3Irtf5NeuK613Yh5 VtkY5YmRQMoW+IACGsUfVgd+oclM/zichX33sWfmnuazbHQKfkgsP0jgAJFda6kRYFf6/L U5VFH0taRlv78CcISt8PARGPF0+lJTbpiLNMZ5JQHay0+Z8OOtisHcxZH8vG1A== 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 4ZQwVj5vLhz9Sm; Mon, 31 Mar 2025 02:46: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 52V2k5S4066768; Mon, 31 Mar 2025 02:46:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2k5ju066765; Mon, 31 Mar 2025 02:46:05 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:46:05 GMT Message-Id: <202503310246.52V2k5ju066765@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: fd5bc306ff3d - main - ptrace(2): expand ability to fetch syscall parameters List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fd5bc306ff3d8f908f36703d6ab714322f9f3c75 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd5bc306ff3d8f908f36703d6ab714322f9f3c75 commit fd5bc306ff3d8f908f36703d6ab714322f9f3c75 Author: Konstantin Belousov AuthorDate: 2025-03-20 01:52:29 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:43:22 +0000 ptrace(2): expand ability to fetch syscall parameters Do not limit lwpinfo reporting of syscall number and args to SCE/SCX events. When td_sa holds the values, we can report them. Clear td_sa.code in TDA_SIG ast handler: this handler is run when the process is traced, and it is run with the last ptracestop() points before the return to userspace. This allows debugger to infer the interrupted syscall immediately after PT_ATTACH without the need to loose control to the debuggee' thread. It should work even when the debuggee is stopped in AST. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49430 --- sys/kern/kern_sig.c | 8 ++++++++ sys/kern/sys_process.c | 8 +++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index d7aa932aa7e3..0ee58af7fbe4 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -343,6 +343,14 @@ ast_sig(struct thread *td, int tda) * the postsig() loop was performed. */ sigfastblock_setpend(td, resched_sigs); + + /* + * Clear td_sa.code: signal to ptrace that syscall arguments + * are unavailable after this point. This AST handler is the + * last chance for ptracestop() to signal the tracer before + * the tracee returns to userspace. + */ + td->td_sa.code = 0; } static void diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 581f8f65ec56..c7dd505d97ca 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -1168,7 +1168,8 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) case PT_GET_SC_ARGS: CTR1(KTR_PTRACE, "PT_GET_SC_ARGS: pid %d", p->p_pid); - if ((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) == 0 + if (((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) == 0 && + td2->td_sa.code == 0) #ifdef COMPAT_FREEBSD32 || (wrap32 && !safe) #endif @@ -1511,12 +1512,9 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) pl->pl_sigmask = td2->td_sigmask; pl->pl_siglist = td2->td_siglist; strcpy(pl->pl_tdname, td2->td_name); - if ((td2->td_dbgflags & (TDB_SCE | TDB_SCX)) != 0) { + if (td2->td_sa.code != 0) { pl->pl_syscall_code = td2->td_sa.code; pl->pl_syscall_narg = td2->td_sa.callp->sy_narg; - } else { - pl->pl_syscall_code = 0; - pl->pl_syscall_narg = 0; } CTR6(KTR_PTRACE, "PT_LWPINFO: tid %d (pid %d) event %d flags %#x child pid %d syscall %d", From nobody Mon Mar 31 02:46:06 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQwVl4l84z5sTp9; Mon, 31 Mar 2025 02:46: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 4ZQwVl0XZHz47GL; Mon, 31 Mar 2025 02:46:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389167; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VmPfqzN21YiZWg79WyL6NebdHjHvN3CNJ9fdRfQoKEE=; b=UIJ5tM+i8yPAMLYc0XZSoG9pg4coLWIp5uutObJ/e99JZLHHiyrvmq3OC7DDCjYnNh9AXj zHXEWY/Z1L47mHLmO2JRL0l0rqbxXPmZ/aJ91MyRM4SQ5NxUuv3nUxfgIXZ3+c46yJXDa7 v5Yy1jBKaHM0bHPHOGiBgnItgQ14gHUxIK9d/iQjm17+ze06m529IHvu3ILMOjmKerAuLL Vt0qrBbm4Zh7kFQleW/u70gp02BWONaPr2VZZ1971eDLexjNuFLpQG3/CFAykiYcCgkIqk UWpKMIYWGF9IbYEhXn9fjHb++/0elInaiOw9JKEmvMPUCgfozA1LrV2RPAKGdw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743389167; a=rsa-sha256; cv=none; b=gWrQtxtHN9NJt5yuDLBm6DABZmYPc179VQKR5qPGxVdLeNXkfjBXagDttG8igOq0SAUjm4 wK34w8GgPFFdQIJaj9pnpFo0rTNdCsMZQv23WrbsuKURT7B3ICvMX5gLllh5eecFfFWqog /rZk5PTby+EK4XNTgqszIgjz30gw9Iqu8k8UGCip7p7jaxV362aMAC6/khhcC4jZoP6b39 PSzusZzlzvPYW6W5+jWKgOcGZnaiiOlj8iUt22A36xg7/BO2LoUzqZ9uIm8R2VfcloQnLt 2rdpBk0imqMWxKDsdAgpNwkteTqyeBPsZa+ktNYZIEByrbCg8W7djFRoWG3CkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743389167; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VmPfqzN21YiZWg79WyL6NebdHjHvN3CNJ9fdRfQoKEE=; b=YsmOSA9z4TPtGYVW0vanTW75QACkWZ6qMMzzhKh2uSBZV9rtJH+aCFooXCXuyJVbv/NBad j/7jfnFVL7bmySddOxL40hpwCQgMD/PyFKADUxcIlQaoLc+/yowXkRbKiwAFIYC0wvfVAX pbIgX82h4QOMaregREVvPhkm25MiKgMlaiTRmaUYwvQuXtuqsjYd9mJQhrYlcy2qrVjKjI C76qvXROtnh/Obn68qTP+/p2wBEGokH7WgAcn4H6wDHYGRPLoS2h/7kwOSTZiEnFMyGVaP OjipmsygEUhIb+ajEahO8aZ7uUsQgN6wpiTQZbHinvIJm2VCYIha1L9PPCuNsA== 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 4ZQwVk6QwPzBRV; Mon, 31 Mar 2025 02:46: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 52V2k6aA066801; Mon, 31 Mar 2025 02:46:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V2k6N8066798; Mon, 31 Mar 2025 02:46:06 GMT (envelope-from git) Date: Mon, 31 Mar 2025 02:46:06 GMT Message-Id: <202503310246.52V2k6N8066798@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: 526becbf6e42 - main - ptrace_test: add test for expanded reporting of syscall args List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 526becbf6e42331e3680d55fe1e9a82e1b56a735 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=526becbf6e42331e3680d55fe1e9a82e1b56a735 commit 526becbf6e42331e3680d55fe1e9a82e1b56a735 Author: Konstantin Belousov AuthorDate: 2025-03-24 02:44:38 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 02:45:30 +0000 ptrace_test: add test for expanded reporting of syscall args Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49430 --- tests/sys/kern/ptrace_test.c | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/sys/kern/ptrace_test.c b/tests/sys/kern/ptrace_test.c index 675d90e144ae..db681293f043 100644 --- a/tests/sys/kern/ptrace_test.c +++ b/tests/sys/kern/ptrace_test.c @@ -4160,6 +4160,53 @@ ATF_TC_BODY(ptrace__syscall_args, tc) REQUIRE_EQ(errno, ECHILD); } +/* + * Check that syscall info is available whenever kernel has valid td_sa. + * Assumes that libc nanosleep(2) is the plain syscall wrapper. + */ +ATF_TC_WITHOUT_HEAD(ptrace__syscall_args_anywhere); +ATF_TC_BODY(ptrace__syscall_args_anywhere, tc) +{ + struct timespec rqt; + struct ptrace_lwpinfo lwpi; + register_t args[8]; + pid_t debuggee, wpid; + int error, status; + + debuggee = fork(); + ATF_REQUIRE(debuggee >= 0); + if (debuggee == 0) { + rqt.tv_sec = 100000; + rqt.tv_nsec = 0; + for (;;) + nanosleep(&rqt, NULL); + _exit(0); + } + + /* Give the debuggee some time to go to sleep. */ + sleep(2); + error = ptrace(PT_ATTACH, debuggee, 0, 0); + ATF_REQUIRE(error == 0); + wpid = waitpid(debuggee, &status, 0); + REQUIRE_EQ(wpid, debuggee); + ATF_REQUIRE(WIFSTOPPED(status)); + REQUIRE_EQ(WSTOPSIG(status), SIGSTOP); + + error = ptrace(PT_LWPINFO, debuggee, (caddr_t)&lwpi, sizeof(lwpi)); + ATF_REQUIRE(error == 0); + ATF_REQUIRE(lwpi.pl_syscall_code == SYS_nanosleep); + ATF_REQUIRE(lwpi.pl_syscall_narg == 2); + error = ptrace(PT_GET_SC_ARGS, debuggee, (caddr_t)&args[0], + lwpi.pl_syscall_narg * sizeof(register_t)); + ATF_REQUIRE(error == 0); + ATF_REQUIRE(args[0] == (register_t)&rqt); + ATF_REQUIRE(args[1] == 0); + + error = ptrace(PT_DETACH, debuggee, 0, 0); + ATF_REQUIRE(error == 0); + kill(SIGKILL, debuggee); +} + /* * Verify that when the process is traced that it isn't reparent * to the init process when we close all process descriptors. @@ -4476,6 +4523,7 @@ ATF_TP_ADD_TCS(tp) #endif ATF_TP_ADD_TC(tp, ptrace__PT_LWPINFO_stale_siginfo); ATF_TP_ADD_TC(tp, ptrace__syscall_args); + ATF_TP_ADD_TC(tp, ptrace__syscall_args_anywhere); ATF_TP_ADD_TC(tp, ptrace__proc_reparent); ATF_TP_ADD_TC(tp, ptrace__procdesc_wait_child); ATF_TP_ADD_TC(tp, ptrace__procdesc_reparent_wait_child); From nobody Mon Mar 31 04:02:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZQyBc6xL4z5sYsV; Mon, 31 Mar 2025 04:02: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 4ZQyBc4D1rz3r27; Mon, 31 Mar 2025 04:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743393736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6irpxaR4+g9Un9aWaPUBS/ZCd54824fsQqxNmMAV9y4=; b=hcdT3UYv0EPsEpnTD0c0y1y9II2a81abTP4bCpcMXZw+bOwWdox1qE1iHEFxbbHNLA8Xw6 TnouOf8ZC34ykn3RDqM28T+q0J0C3sIyLXq1swPqE5iU/mjlnFfbve0aX4bdnDwbRlK5Fy lMppwoUA/Y5HhCmlJms/uZON7R+8bB6WhHYGIHBQ0z7mZVGB6ykmrewHkOGbgKiVIMiHRI FSOQkNFjJxH89ConqceEu29hc8tNPgRa8GTVDPMckNgKO2aynjiFahJybyOJ39nyaKgrUO JiKr79kzNgvRrUegBEjg9UbsC40a3/Z4AtnlCyerhSTALPuRjYRP3hTt9l88gw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743393736; a=rsa-sha256; cv=none; b=TL5hpjze6FUNMhD46YbptYOeDwJWlRhZ2RmCqCRFCKAoCTU5a+iecCd1AZbZrbf9h4FW6m xM3ihTDfPGL/Sp3MNfAkwUPmCShtojnCGDpCD0U1h54DRX4ggvnXYGW33M24f2UFFSiYZ4 Fiu/A3NGInpF+9i6XxRR7TleNrCN26Nx4k0S3F+msSeVsMFjVBqUNH1R4zpLvCvj2pp7Ve RKlwkCRGfdDYsnfepUo8CWe4WewijztMxqOQ8SyzUQEcpXWnOU34g+L/CFXqIZ1LAqDQh6 sHAOznNjPSIgjqQU7pZf1oFOF7STLdef7RhvLuYEzR2dBeIM9I+m1hKp+phWGw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743393736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6irpxaR4+g9Un9aWaPUBS/ZCd54824fsQqxNmMAV9y4=; b=ZgjwfSL7BAYAAoj6Oe7LCPU29isCoMCsp81UwffbZdmivVAjIP35RPK9aVwGzgg6v4zL+e b1ZtwSOqf/RcXiDptWQW4gJzzTnhYLO5EdWFbOffoBROdNc9hjb/mWgty3zeNEg9zaRWJK 2wQIr0R+2ZSM1Knr+alj+U5Ce7L3hA5aJkqfV/juIOGuuu1LmiMPI/3ZbdCurXO11swZRo OYCCN32O8K0lkT3q1uL9Ak1uopQQ6VPICFgFhbT54HEnhqBZOLzsHsKBHPaqhiZ8XjrdnU YMW0VpRPyWBxvl9pWcV15UQ7MDzH230MfPyEf0nybDNSR0I2oq8N5bZ+40ACfw== 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 4ZQyBc3fjbzDLk; Mon, 31 Mar 2025 04:02: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 52V42Ghp016938; Mon, 31 Mar 2025 04:02:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V42G5A016935; Mon, 31 Mar 2025 04:02:16 GMT (envelope-from git) Date: Mon, 31 Mar 2025 04:02:16 GMT Message-Id: <202503310402.52V42G5A016935@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: b68c7ebf5e63 - main - vm_reserv: extract common gap-checking code List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b68c7ebf5e633549dfda1cfa25991b097dfbcdce Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=b68c7ebf5e633549dfda1cfa25991b097dfbcdce commit b68c7ebf5e633549dfda1cfa25991b097dfbcdce Author: Doug Moore AuthorDate: 2025-03-31 04:00:53 +0000 Commit: Doug Moore CommitDate: 2025-03-31 04:00:53 +0000 vm_reserv: extract common gap-checking code vm_reserv_alloc_contig and vm_reserv_alloc_page both have code to determine whether a new reservation will fit between the predecessor and successor. Extract this code into a separate function rather than having it appear twice. Optimize slightly to avoid checking object size limit when there is a successor, and to avoid checking the upper bound at all when the size to be allocated is a multiple of reservation size. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D49460 --- sys/vm/vm_reserv.c | 175 ++++++++++++++++++++++++----------------------------- 1 file changed, 80 insertions(+), 95 deletions(-) diff --git a/sys/vm/vm_reserv.c b/sys/vm/vm_reserv.c index 3dc278851cc9..e553d115a6d4 100644 --- a/sys/vm/vm_reserv.c +++ b/sys/vm/vm_reserv.c @@ -549,6 +549,73 @@ vm_reserv_has_pindex(vm_reserv_t rv, vm_pindex_t pindex) return (((pindex - rv->pindex) & ~(VM_LEVEL_0_NPAGES - 1)) == 0); } +/* + * How many pages should be in a new allocation that starts at the first page of + * the reservation superpage that contains 'first', fits between the allocations + * that include 'mpred' and 'msucc', fits within 'object', includes at least + * 'minpages' pages, and tries to include every allocated page in a superpage? + * + * We must synchronize with the reserv object lock to protect the pindex/object + * of the resulting reservations against rename while we are inspecting. + */ +static u_long +vm_reserv_num_alloc_pages(vm_object_t object, vm_pindex_t first, + u_long minpages, vm_page_t mpred, vm_page_t msucc) +{ + vm_pindex_t leftcap, rightcap; + vm_reserv_t rv; + u_int allocpages; + + allocpages = roundup2(minpages, VM_LEVEL_0_NPAGES); + + vm_reserv_object_lock(object); + if (mpred != NULL) { + if ((rv = vm_reserv_from_page(mpred))->object != object) + leftcap = mpred->pindex + 1; + else + leftcap = rv->pindex + VM_LEVEL_0_NPAGES; + if (leftcap > first) + allocpages = 0; + } + if (minpages < allocpages) { + if (msucc == NULL) { + /* + * Would the last new reservation extend past the end of + * the object? + * + * If the object is unlikely to grow don't allocate a + * reservation for the tail. + */ + if ((object->flags & OBJ_ANON) == 0) + rightcap = object->size; + else + rightcap = OBJ_MAX_SIZE; + } else { + /* + * Would the last new reservation extend past the start + * of another page or reservation? + * + * If the object would, don't allocate a reservation for + * the tail. + */ + if ((rv = vm_reserv_from_page(msucc))->object != object) + rightcap = msucc->pindex; + else + rightcap = rv->pindex; + } + if (first + allocpages > rightcap) { + /* + * A reservation for the last of the requested pages + * will not fit. Reduce the size of the upcoming + * allocation accordingly. + */ + allocpages = minpages; + } + } + vm_reserv_object_unlock(object); + return (allocpages); +} + /* * Increases the given reservation's population count. Moves the reservation * to the tail of the partially populated reservation queue. @@ -623,9 +690,9 @@ vm_reserv_alloc_contig(vm_object_t object, vm_pindex_t pindex, int domain, struct vm_domain *vmd; vm_paddr_t pa, size; vm_page_t m, m_ret, msucc; - vm_pindex_t first, leftcap, rightcap; + vm_pindex_t first; vm_reserv_t rv; - u_long allocpages, maxpages, minpages; + u_long allocpages; int i, index, n; VM_OBJECT_ASSERT_WLOCKED(object); @@ -690,63 +757,14 @@ out: } /* - * Could at least one reservation fit between the first index to the - * left that can be used ("leftcap") and the first index to the right - * that cannot be used ("rightcap")? - * - * We must synchronize with the reserv object lock to protect the - * pindex/object of the resulting reservations against rename while - * we are inspecting. + * Check whether an allocation including at least one reservation can + * fit between mpred and msucc. */ first = pindex - VM_RESERV_INDEX(object, pindex); - minpages = VM_RESERV_INDEX(object, pindex) + npages; - maxpages = roundup2(minpages, VM_LEVEL_0_NPAGES); - allocpages = maxpages; - vm_reserv_object_lock(object); - if (mpred != NULL) { - if ((rv = vm_reserv_from_page(mpred))->object != object) - leftcap = mpred->pindex + 1; - else - leftcap = rv->pindex + VM_LEVEL_0_NPAGES; - if (leftcap > first) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - if (msucc != NULL) { - if ((rv = vm_reserv_from_page(msucc))->object != object) - rightcap = msucc->pindex; - else - rightcap = rv->pindex; - if (first + maxpages > rightcap) { - if (maxpages == VM_LEVEL_0_NPAGES) { - vm_reserv_object_unlock(object); - return (NULL); - } - - /* - * At least one reservation will fit between "leftcap" - * and "rightcap". However, a reservation for the - * last of the requested pages will not fit. Reduce - * the size of the upcoming allocation accordingly. - */ - allocpages = minpages; - } - } - vm_reserv_object_unlock(object); - - /* - * Would the last new reservation extend past the end of the object? - * - * If the object is unlikely to grow don't allocate a reservation for - * the tail. - */ - if ((object->flags & OBJ_ANON) == 0 && - first + maxpages > object->size) { - if (maxpages == VM_LEVEL_0_NPAGES) - return (NULL); - allocpages = minpages; - } + allocpages = vm_reserv_num_alloc_pages(object, first, + VM_RESERV_INDEX(object, pindex) + npages, mpred, msucc); + if (allocpages < VM_LEVEL_0_NPAGES) + return (NULL); /* * Allocate the physical pages. The alignment and boundary specified @@ -817,7 +835,7 @@ vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex, int domain, { struct vm_domain *vmd; vm_page_t m, msucc; - vm_pindex_t first, leftcap, rightcap; + vm_pindex_t first; vm_reserv_t rv; int index; @@ -859,45 +877,12 @@ out: } /* - * Could a reservation fit between the first index to the left that - * can be used and the first index to the right that cannot be used? - * - * We must synchronize with the reserv object lock to protect the - * pindex/object of the resulting reservations against rename while - * we are inspecting. + * Check whether an allocation including reservations can fit + * between mpred and msucc. */ first = pindex - VM_RESERV_INDEX(object, pindex); - vm_reserv_object_lock(object); - if (mpred != NULL) { - if ((rv = vm_reserv_from_page(mpred))->object != object) - leftcap = mpred->pindex + 1; - else - leftcap = rv->pindex + VM_LEVEL_0_NPAGES; - if (leftcap > first) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - if (msucc != NULL) { - if ((rv = vm_reserv_from_page(msucc))->object != object) - rightcap = msucc->pindex; - else - rightcap = rv->pindex; - if (first + VM_LEVEL_0_NPAGES > rightcap) { - vm_reserv_object_unlock(object); - return (NULL); - } - } - vm_reserv_object_unlock(object); - - /* - * Would the last new reservation extend past the end of the object? - * - * If the object is unlikely to grow don't allocate a reservation for - * the tail. - */ - if ((object->flags & OBJ_ANON) == 0 && - first + VM_LEVEL_0_NPAGES > object->size) + if (vm_reserv_num_alloc_pages(object, first, 1, mpred, msucc) < + VM_LEVEL_0_NPAGES) return (NULL); /* From nobody Mon Mar 31 07:55:51 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR3N81M15z5rcRX; Mon, 31 Mar 2025 07:55: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 4ZR3N76Dzlz46Vb; Mon, 31 Mar 2025 07:55:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743407751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KWqiEfAl4lwLa/mIOvFKeEXr0mZJI0SMViFq0GqWkBg=; b=kUEjgB4tsQhDgu5NKQq2i6xr0dIIhmaajEf5FHL2uWhFU0Jtu8Qez+ERaMovRRrGNWUSg6 IQ7EbUCEtKwiOKHU1pMEsnJKEqC6SiSGSZ0SNvZv+TXGMknkaD6HpQB2mlBKrtRNeJ6Dok h8Ih4KafO9JMROxGdwBPhQcEIyAL0R97RHBEpZ9XjEFEZm18O+hM2Nd73Qs8KTjQlf0XDB uE5MF5c6M7Nonuh+s6K684KI5fLFI4BYCOIK1Jgj1rUYqDazHs7bzDGZhb0hLMY/uh9xma 5bJvYnBlHbWUB/tBe9drwuf49TfdUWbd46/wnqP9DTjxVXHZWglqHZvdMTL2Zg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743407751; a=rsa-sha256; cv=none; b=fNATWdzmiKGNV4EhvyTbAsUiXJP85zdcvPAPurcpw4wYPYF+8ujrJkViBnXLioIOF3OSH8 XLimpaWjHGCnPdmqMXzRn2f7FtLIrBCozJFB5Vzunkfc0Wdj7vRqk69HT9M4etz6P3tU8b 8ffFF00pa1NpPliPhymtkfBNA+a4/matwXYMJmBcATBI4WUN/PHNjuV54mPBFUPMMItLhW ht+dAkZfR6dx60mkNgH0XCOWYwX/znle96QumBRF/j4HL+tMoa1RmM9kU4it1LawxCsbZV ei1vHdzHPqDhr33gA8senx6wuQSPHFdlz0cNxaeNwo4ShB+VU5MuNFgsWAGQ+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743407751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KWqiEfAl4lwLa/mIOvFKeEXr0mZJI0SMViFq0GqWkBg=; b=bOYExdbReQAQR7XHZqoAVQJwZMhMj6TVTxLdmB2GUqaQr2UxO/M9zuC0Z/8TL5Ryh1nxEc tOLLtA2IE8rDL5tdxG5AWkhR1h76uldC/Y65SaRrB+BmT5ff97EPfKoU76opuezzhnmWQb 2ENMR75NewVIHXukb04ebDBh/OPOTLerlvYsxoYRfYYc2U6H7+PB5/FJE8LSO/UWJlv3e7 zxR5kSY+5X01MN8vHv2hT2lJu6DVsFPneXOMJK3vRVJrYroeIXRZ61/KGlYL1IipiHYVEf tGqGbLAOv9Lx2ouUW0TbEkrDy69Loq8S8cKs8QtlzC2OylyonPd7UTyrdWkMCQ== 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 4ZR3N73zdGzcVP; Mon, 31 Mar 2025 07:55: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 52V7tpTd046773; Mon, 31 Mar 2025 07:55:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V7tpem046770; Mon, 31 Mar 2025 07:55:51 GMT (envelope-from git) Date: Mon, 31 Mar 2025 07:55:51 GMT Message-Id: <202503310755.52V7tpem046770@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: 6091e2aa9236 - main - pfctl.8: fix typo in reference to rc.conf variable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6091e2aa923617604f7333f26b54bab48d2c0aab Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=6091e2aa923617604f7333f26b54bab48d2c0aab commit 6091e2aa923617604f7333f26b54bab48d2c0aab Author: Quentin Thébault AuthorDate: 2025-03-29 13:12:17 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 07:51:08 +0000 pfctl.8: fix typo in reference to rc.conf variable Reviewed by: kp, @concussious, @ImAwsumm Pull Request: https://github.com/freebsd/freebsd-src/pull/1630 --- sbin/pfctl/pfctl.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbin/pfctl/pfctl.8 b/sbin/pfctl/pfctl.8 index 565cd8f7fd64..5029d8438ed7 100644 --- a/sbin/pfctl/pfctl.8 +++ b/sbin/pfctl/pfctl.8 @@ -82,7 +82,7 @@ Translation rules are described in .Xr pf.conf 5 . .Pp When the variable -.Va pf +.Va pf_enable is set to .Dv YES in From nobody Mon Mar 31 09:06:33 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xj3ybXz5rhYM; Mon, 31 Mar 2025 09:06: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 4ZR4xj36T2z3YNh; Mon, 31 Mar 2025 09:06:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411993; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t72eaCGnOa8wu4xsxJoqWl+wVOrD0DD7iLNzhjFKYcM=; b=CU0oQCuUvW8ZGTw6tTGqp3i64XUt+4dhwefoy2yJ4f4nE6K7ltDii7eFVIPnKa9UqO+VGv rDpLo71svybzv27iC3rl4hFaS6r5NTs0nNrBAQdKBHzE8qaUfn8F1RMBE/oJJYf90PRD2H R2cRio1mP/RCk3FcVW36AVKeZlg/5JCPLj5Fxhf6A56yYlADpDfCrt/ArjDGwbyzJ2T148 1GgW25iwPE3nsz/XG34s2IUYFN4IaVkzakcUqVBYM/ribATyN7cCUiOS+tuaHc3JkcunvT 035csMqCzdPo9EzBx9X4lad+eQAPcXQr6yQwC98Cp1yZnTHo+DGXM33nSdNLRw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411993; a=rsa-sha256; cv=none; b=pKbX+zbYuen9e2dRndqDebCSpatcCX7RV8u0vTppk93PQr3WCA6bIjSRDaA1Ir1DWDjvPe 0/IfscLUNUEQ5E3gCsgNxq0ZJSOc5OEou+eTWGSIiOe3BNWQOT4oMh4E+sgroCKEuEDApA hKq7V8Yw5yFLpsCgbR7C0pz9bAHrT3fRWBs6r4FJJkojmeix1hQQ1g/MabfsXh+PNGBkej um+NYTNPhjvzk7cg/2gqMvZ7s8zEg0+cdjctAEX5WKxT5VQE0fViBNgGgd10EkXpl7B+g7 +bC2sc7qVEfsKMFjjvVpB+IgaCZmWUTLHlTKXV6kA/PGiMMLWm4d0AazcDKW3g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411993; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t72eaCGnOa8wu4xsxJoqWl+wVOrD0DD7iLNzhjFKYcM=; b=Q/pZnya0kdNUoAkaOydVMnGwaphqZuXvvZdFkUZ/KtSnowyp+kUjBzUslBq/Xp38cM4mGu 98wHxILCIf6jynzdpFPtcH8aYsObaQAsxg5sAQVMQybs7pqwze/2+AedPH1DGKn8Dtxbi7 c9cTJg1YGyx4zxGjbPLgPCBNbo6e7w9hzknTjq28kRiGpsx2ru9976kDUZTmleYihd8kqI 4rtoTxfIiWa6jqgtrQRZWnYNIF4D6zpvGstcYI3oAw6NR6VsZhCgmWGatWB6y5Cb17f50B UTJd3KTCXp7NeHXhUbAjYsy0mpPX+t0/WhyPbDXKBYRUg1LMzVh2OthcqAabMA== 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 4ZR4xj2NFKzfYp; Mon, 31 Mar 2025 09:06: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 52V96XjS078765; Mon, 31 Mar 2025 09:06:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96Xtj078762; Mon, 31 Mar 2025 09:06:33 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:33 GMT Message-Id: <202503310906.52V96Xtj078762@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: 1a80a157cbe8 - main - ptrace: Do not pass a negative resid to proc_rwmem() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a80a157cbe823ba75bb88823dbf1b245fe87c99 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1a80a157cbe823ba75bb88823dbf1b245fe87c99 commit 1a80a157cbe823ba75bb88823dbf1b245fe87c99 Author: Mark Johnston AuthorDate: 2025-03-29 08:54:48 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 ptrace: Do not pass a negative resid to proc_rwmem() While here, avoid truncting uio_resid in proc_rwmem(). Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49479 --- sys/kern/sys_process.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index c7dd505d97ca..5126f34e3dc3 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -387,7 +387,7 @@ proc_rwmem(struct proc *p, struct uio *uio) /* * How many bytes to copy */ - len = min(PAGE_SIZE - page_offset, uio->uio_resid); + len = MIN(PAGE_SIZE - page_offset, uio->uio_resid); /* * Fault and hold the page on behalf of the process. @@ -1382,6 +1382,10 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) case PT_IO: piod = addr; + if (piod->piod_len > SSIZE_MAX) { + error = EINVAL; + goto out; + } iov.iov_base = piod->piod_addr; iov.iov_len = piod->piod_len; uio.uio_offset = (off_t)(uintptr_t)piod->piod_offs; From nobody Mon Mar 31 09:06:34 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xk5KJSz5rhk9; Mon, 31 Mar 2025 09:06: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 4ZR4xk2rhcz3YNk; Mon, 31 Mar 2025 09:06:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411994; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ENCZwrfajdaORctHA48eleSVyOfj+Zl3urdL2O1Rbd4=; b=vljOju7pJmP46F2C7yc9YDp82WL5Sko6DNyTGs8htHnOxNDYmET3eyFJO4C/VSPIqjwIvm ilL05HvPCloItFKxJdewgM7rMNjBmVH4gj6iwHjrLgrwLnR4ltO/jdSm7ny+QGMksfA+h5 5KGX4yrKRRb2uMd4kKNuwlIO9ENm7h1Sdo90PSd0uuenG4ZziG3hnAG3l23u50XVKsoc4N aTrQoREpdaKtjks4LfUaJD8p6AxXwdVxaOjnxIpjfwa1b6h/RxmO2Jss0nx3XNQcJjFFHh PsJl4v0Ux06vzDN+yFjw+u3XdmFdAMhcz0fONQlCjXoSEcV13qWi52QIw8enVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411994; a=rsa-sha256; cv=none; b=yNTvqEIcLCaUPb28ICRPazhse78dAhvC67OuAPufC0/9zPzerKHrKhfWQQqcp1bjVNosUH +Dx6oYniWOqcT1QZn5QVuUE/2zTbisHpKYIFSHgC1vF8jz5udYds2OURzKZ1+YoV2jCfOq Jf7OJ8suirQkO2mQzM45BsJkN/M4aaQmLBx2kDZuVagpMZ8fFEAGjvmg2nJjs7rAXB/IiE fGxMVX6Uaoiw5Z/uZ6IQbLPsW5zCOesKLUVjmJ2hqD7EQ7N4khURrWDyvyP1VpTlcO9yoH cOnl4PnIchfDxDN8AVUfS7Td90TwUnjTJyFy7JX5nfc7BVzP+L0I1bWIaSOaRw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411994; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ENCZwrfajdaORctHA48eleSVyOfj+Zl3urdL2O1Rbd4=; b=Dmz7DSsDB75YKyIxVnsS5ht7fNsLI/Q/q8c6Qn43vikpAhhLwRhbEGgiVuYREcviIxLjib wXJclxIqvWBubCz2XXt6Gyfc+TffY5uqq8Iu2UfNTWCXNsPOFFmx2MREPgrZFeAtyoLAVs bOPzcrjQrM2t/AFLlQGuxuTRPR3Mdmms4+H4pinfx58lj+emiseCm3STpW9qCY4nm51JfX nDHVvzK1WwGv8yyaoXbLHTUlIvb6Ny4TIlKB6x/w0kvfH7nko5iaSSaFzo3uTx6ifjJR9c Wv9CGwj+luc1JTDXnBKqSr5O6Zjj/6OfQkzXXmIzgZXnI8+VN/UbzpK9ae3g2Q== 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 4ZR4xk2SQPzdyn; Mon, 31 Mar 2025 09:06: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 52V96Y2E078799; Mon, 31 Mar 2025 09:06:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96YGW078796; Mon, 31 Mar 2025 09:06:34 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:34 GMT Message-Id: <202503310906.52V96YGW078796@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: 590b45036ee1 - main - socket: Handle the possibility of a protocol with no ctloutput List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 590b45036ee16163f9eb8c34791d197e76de502d Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=590b45036ee16163f9eb8c34791d197e76de502d commit 590b45036ee16163f9eb8c34791d197e76de502d Author: Mark Johnston AuthorDate: 2025-03-29 08:55:08 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 socket: Handle the possibility of a protocol with no ctloutput Add a default ctloutput handler and remove various NULL checks. This fixes a problem wherein the generic SO_SETFIB handler did not check whether the protocol has a ctloutput implementation before calling the function pointer. Reported by: syzkaller Reviewed by: glebius Fixes: caccbaef8e26 ("socket: Move SO_SETFIB handling to protocol layers") MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D49436 --- sys/kern/uipc_domain.c | 7 +++++++ sys/kern/uipc_socket.c | 12 +++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index 51e0f8cc7726..2d68e11b9f0a 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -97,6 +97,12 @@ pr_control_notsupp(struct socket *so, u_long cmd, void *data, return (EOPNOTSUPP); } +static int +pr_ctloutput_notsupp(struct socket *so, struct sockopt *sopt) +{ + return (ENOPROTOOPT); +} + static int pr_disconnect_notsupp(struct socket *so) { @@ -194,6 +200,7 @@ pr_init(struct domain *dom, struct protosw *pr) NOTSUPP(pr_connect2); NOTSUPP(pr_connectat); NOTSUPP(pr_control); + NOTSUPP(pr_ctloutput); NOTSUPP(pr_disconnect); NOTSUPP(pr_listen); NOTSUPP(pr_peeraddr); diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 63d30f04c8e0..ac00696236a5 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -3804,10 +3804,7 @@ sosetopt(struct socket *so, struct sockopt *sopt) CURVNET_SET(so->so_vnet); error = 0; if (sopt->sopt_level != SOL_SOCKET) { - if (so->so_proto->pr_ctloutput != NULL) - error = (*so->so_proto->pr_ctloutput)(so, sopt); - else - error = ENOPROTOOPT; + error = (*so->so_proto->pr_ctloutput)(so, sopt); } else { switch (sopt->sopt_name) { case SO_ACCEPTFILTER: @@ -4017,7 +4014,7 @@ sosetopt(struct socket *so, struct sockopt *sopt) error = ENOPROTOOPT; break; } - if (error == 0 && so->so_proto->pr_ctloutput != NULL) + if (error == 0) (void)(*so->so_proto->pr_ctloutput)(so, sopt); } bad: @@ -4068,10 +4065,7 @@ sogetopt(struct socket *so, struct sockopt *sopt) CURVNET_SET(so->so_vnet); error = 0; if (sopt->sopt_level != SOL_SOCKET) { - if (so->so_proto->pr_ctloutput != NULL) - error = (*so->so_proto->pr_ctloutput)(so, sopt); - else - error = ENOPROTOOPT; + error = (*so->so_proto->pr_ctloutput)(so, sopt); CURVNET_RESTORE(); return (error); } else { From nobody Mon Mar 31 09:06:35 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xl64LGz5rhYQ; Mon, 31 Mar 2025 09: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 4ZR4xl3j5Bz3YW3; Mon, 31 Mar 2025 09: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=1743411995; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jzGECOOrA8Wt6NRATXCL1pSn39aioS08EYHXVXCIIhM=; b=S/q7i+IYNoI6OSxlMgZUvlHkiipdChokDKtRw086OFAj+9CsEq97Iicetr4mJX7Br68lNZ VjYS0TFG4C5bDtuaOBjAIE0V49Egr8KyfjzivOuuM0D/M2hC5nIoZ9/LTznesXvxRX/451 7aaLSAI1DUZJZrlJkGK2palQ7ej9Ans6omVq8p9N/UE8iHs2aXN0JXbNHBG3YTQTUkcSte UtTdEeoH8WnoVzv6MO7HsSBo4yQBe/cARyTwWudiECxE5ogKwGH56yqU421NIpgUrBGfLJ nEBCFrEd4060ehqw8MTOtaMTO12D4BP6p6kSXRlztsldaiaqg+GCv5AL+aXNFQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411995; a=rsa-sha256; cv=none; b=BNcRKS3OzcgOILk5U/aXZPYVwDWJ11mZ/DIB7naJHhB4Yz6fvp83kw31S2kRhY4svxyJcs Cv/Nw85ZQFu0zVro8vd0n2TrVKRdZ4SrW0U6pQDbkOwsLnTrn18th/J5fN3Wk6cWdCZ8hA vLG2RQq/+JY/jHewc5mt7iJx/+pL3/cK2QG3/e5qbbGJtZ/xVBU03uqB1KO8n0sIUVUzyc FHraMN60DmI3YIJX7m+PCd5iJaDKFswBmt+3hfFaiZ1QLEd+Ams7rF0tmpHmiY0c7Xz5Xb 4zXLnQXMMRU/cIDBPMGgduWBvCp8/H5USZ+K/Oimp6MFx+tYP8y2L4zoHuWQaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411995; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jzGECOOrA8Wt6NRATXCL1pSn39aioS08EYHXVXCIIhM=; b=GAfaz8tmUGQnxzDaVHgEpdTOGv5PXrFz4gPIouumy9YN2e/jsVG0W8aVuuhxYFwOB20lnv QGzzfZOMMIgS/w3SzlShaX7e0S4k9ZocD3VkNTP48MXCltgKOQq+ee6duQEdnzCCl0riCs eqWVSAffPnhWASs4ZAMRNd4fHzP6fRtXs17HfQ3jbU4YAhnH+Qu0is8IErHXOm5fB5ubqi jvmsJwP+5bgXIowAqBhQwH6IJQiZTxE75HNVoeAkOXAhb/AdrwRH1tK8D0iq/tGv1Dcvmg ES5VRdyZBIYLHIZHDO64Lp24GplEtzyklQR/eUJt6T+tRZEP4y4K86DR5q+wqA== 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 4ZR4xl3JLRzfrm; Mon, 31 Mar 2025 09: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 52V96ZT5078840; Mon, 31 Mar 2025 09: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 52V96ZJV078837; Mon, 31 Mar 2025 09:06:35 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:35 GMT Message-Id: <202503310906.52V96ZJV078837@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: fe7fe3b175b6 - main - rangelock: Fix handling of trylocks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fe7fe3b175b626dd1402cd06745b1e3f070c3edd Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=fe7fe3b175b626dd1402cd06745b1e3f070c3edd commit fe7fe3b175b626dd1402cd06745b1e3f070c3edd Author: Mark Johnston AuthorDate: 2025-03-29 08:57:52 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 rangelock: Fix handling of trylocks When inserting a queue entry, i.e., locking a range, there are two points where a trylock operation may fail, one before the new entry is inserted, one after. In the latter case, rl_(r|w)_validate() would mark the entry and rangelock_lock_int() would free it. However, this is of course incorrect, since the entry is visible to other threads, which will eventually attempt to remove it and free it again. Factor out conflict handling in rl_(r|w)_validate() to a common function as they are functionally the same. Then, introduce a new result which indicates that a trylock failed but that the queue entry must not be cleaned up. While here, assert that a conflicting range isn't owned by the current thread, as that would indicate a bug in the consumer. Reviewed by: olce, kib Reported by: syzkaller Fixes: 5badbeeaf061 ("Re-implement rangelocks part 2") Differential Revision: https://reviews.freebsd.org/D49438 --- sys/kern/kern_rangelock.c | 122 ++++++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 43 deletions(-) diff --git a/sys/kern/kern_rangelock.c b/sys/kern/kern_rangelock.c index 59112acfb03d..3854ffbeec29 100644 --- a/sys/kern/kern_rangelock.c +++ b/sys/kern/kern_rangelock.c @@ -462,6 +462,10 @@ rl_insert_sleep(struct rangelock *lock) smr_enter(rl_smr); } +/* + * Try to insert an entry into the queue. Return true if successful, otherwise + * false. + */ static bool rl_q_cas(struct rl_q_entry **prev, struct rl_q_entry *old, struct rl_q_entry *new) @@ -517,15 +521,60 @@ again: enum RL_INSERT_RES { RL_TRYLOCK_FAILED, + RL_TRYLOCK_FAILED_MARKED, RL_LOCK_SUCCESS, RL_LOCK_RETRY, }; +/* + * Handle a possible lock conflict between cur and e. "inserted" is true if e + * is already inserted into the queue. + */ +static enum RL_INSERT_RES +rl_conflict(struct rangelock *lock, struct rl_q_entry *cur, struct rl_q_entry *e, + bool trylock, bool inserted) +{ + sleepq_lock(&lock->sleepers); + if (rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { + sleepq_release(&lock->sleepers); + return (RL_LOCK_SUCCESS); /* no conflict after all */ + } + + /* + * Make sure we're not conflicting with one of our own locks. This + * scenario could conceivably happen for one of two reasons: a bug in + * the rangelock consumer (if "inserted" is true), or a bug in the + * rangelock implementation itself (if "inserted" is false). + */ + KASSERT(cur->rl_q_owner != curthread, + ("%s: conflicting range is locked by the current thread", + __func__)); + + if (inserted) + rangelock_unlock_int(lock, e); + if (trylock) { + sleepq_release(&lock->sleepers); + + /* + * If the new entry e has been enqueued and is thus visible to + * other threads, it cannot be safely freed. + */ + return (inserted ? RL_TRYLOCK_FAILED_MARKED: RL_TRYLOCK_FAILED); + } + rl_insert_sleep(lock); + return (RL_LOCK_RETRY); +} + +/* + * Having inserted entry e, verify that no conflicting write locks are present; + * clean up dead entries that we encounter along the way. + */ static enum RL_INSERT_RES rl_r_validate(struct rangelock *lock, struct rl_q_entry *e, bool trylock, struct rl_q_entry **free) { struct rl_q_entry *cur, *next, **prev; + enum RL_INSERT_RES res; again: prev = &e->rl_q_next; @@ -550,28 +599,23 @@ again: cur = rl_e_unmark_unchecked(rl_q_load(prev)); continue; } - if (!rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { - sleepq_lock(&lock->sleepers); - if (rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { - sleepq_release(&lock->sleepers); - continue; - } - rangelock_unlock_int(lock, e); - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); - } - rl_insert_sleep(lock); - return (RL_LOCK_RETRY); - } + + res = rl_conflict(lock, cur, e, trylock, true); + if (res != RL_LOCK_SUCCESS) + return (res); } } +/* + * Having inserted entry e, verify that no conflicting locks are present; + * clean up dead entries that we encounter along the way. + */ static enum RL_INSERT_RES rl_w_validate(struct rangelock *lock, struct rl_q_entry *e, bool trylock, struct rl_q_entry **free) { struct rl_q_entry *cur, *next, **prev; + enum RL_INSERT_RES res; again: prev = (struct rl_q_entry **)&lock->head; @@ -596,20 +640,10 @@ again: cur = rl_e_unmark_unchecked(rl_q_load(prev)); continue; } - sleepq_lock(&lock->sleepers); - /* Reload after sleepq is locked */ - next = rl_q_load(&cur->rl_q_next); - if (rl_e_is_marked(next)) { - sleepq_release(&lock->sleepers); - goto again; - } - rangelock_unlock_int(lock, e); - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); - } - rl_insert_sleep(lock); - return (RL_LOCK_RETRY); + + res = rl_conflict(lock, cur, e, trylock, true); + if (res != RL_LOCK_SUCCESS) + return (res); } } @@ -653,19 +687,19 @@ again: prev = &cur->rl_q_next; cur = rl_q_load(prev); } else if (r == 0) { - sleepq_lock(&lock->sleepers); - if (__predict_false(rl_e_is_marked(rl_q_load( - &cur->rl_q_next)))) { - sleepq_release(&lock->sleepers); - continue; - } - if (trylock) { - sleepq_release(&lock->sleepers); - return (RL_TRYLOCK_FAILED); + enum RL_INSERT_RES res; + + res = rl_conflict(lock, cur, e, trylock, false); + switch (res) { + case RL_LOCK_SUCCESS: + /* cur does not conflict after all. */ + break; + case RL_LOCK_RETRY: + /* e is still valid. */ + goto again; + default: + return (res); } - rl_insert_sleep(lock); - /* e is still valid */ - goto again; } else /* r == 1 */ { e->rl_q_next = cur; if (rl_q_cas(prev, cur, e)) { @@ -697,10 +731,12 @@ rangelock_lock_int(struct rangelock *lock, bool trylock, vm_ooffset_t start, smr_enter(rl_smr); res = rl_insert(lock, e, trylock, &free); smr_exit(rl_smr); - if (res == RL_TRYLOCK_FAILED) { + if (res == RL_TRYLOCK_FAILED || res == RL_TRYLOCK_FAILED_MARKED) { MPASS(trylock); - e->rl_q_free = free; - free = e; + if (res == RL_TRYLOCK_FAILED) { + e->rl_q_free = free; + free = e; + } e = NULL; } rangelock_free_free(free); From nobody Mon Mar 31 09:06:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xn1HgDz5rhmQ; Mon, 31 Mar 2025 09:06: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 4ZR4xm5PpDz3YNq; Mon, 31 Mar 2025 09:06:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411996; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xZ0+aScfAdkpMnBWQhyLhForPuI9yl0+uW73jBJ/Y8A=; b=R7foS0ik9VwRpxZxgb1FOLzsWMHc8zoYp1L5oBRNzAAiLPVw4iL5zEilYmr2PCgjP/xR/8 OWLHa0ZES+QN5HwUsRqbyvfgpUNvipZtoSQMGuGtaPnC93ysaJOvU8bHvfdUMMLvPjFwL/ KV5TejQHa175hU6s0/MWgZ1GQeKISCfRXeyMubKigFnXv3VRsVJSQ39gl8gLqaigtYk89x PoFcL4xMP6bL0vmVTzqH0t+eQmKAXUM1uNfuFaiZrJp0XRg0uodrSp2vi6taMBtrutl36S GpnZa+JcwrmXACph6KUsillENqz9yewbAJallg8Ksw9D7n/16mOHyvdQBtVfgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411996; a=rsa-sha256; cv=none; b=Z5GEj6P+VynA8zlr9gohHUa1oK7puvWqbfZ+aaKVG1JWJM1jKjjQi0RwuMUw4shH2KINuk bz8xpLLk/SFxfgDFVwluCLtvEvJXy5dUwFQpNzVYzfuaYdN0E09aqXzZKukLAclza1zh3P 7lQsOkxjNnQ2uQogyuWLyPQPeSFykja73OZ8pORklpqlRijIWTXF1ii1nL0IrPMiO0PLBh xLzI17I8diS3Th6tk3dZLFg3N7XOSuR/0lHhCJtFgA9wAHxA59+jTspC9HPNCbEpDR7uQm +pW3UwrCAA5nJCy1sLmEEi8MEIaRzryfP45Jtpfx0B/QpkZBsVGi5qRtlgXKlQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411996; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xZ0+aScfAdkpMnBWQhyLhForPuI9yl0+uW73jBJ/Y8A=; b=UR8vFuw/zqA1hhlHLbGZOU66Wkjr5zBZEqbBWIzXMpTXUt2PPhnS9S/uOBndEcNtjAJ01R hPVQoLWzct2TqpS4OgGzcn+Qu1lJ6oxAyoa8rHRyz9El8yAIzcscitkIA/lY8+fe+PcA09 /YbFgsVNtidyF6TURN0x5RcVxFRd26DC75E+Tp2K7WVhiBB83hJGc+gefSp/WAyhxAfwnh Yz3h/TuXnaesyS5h1t//TrX7DRuqixxrN18QWhI2KW+skcH8fE/hnADmbPtI8cxWvwilmm 6O5wg+/7hQFTFeTjdqTmNZ7D9NCYkDxyD+R29pt65uptEPEVW4qHLLOOQ8BGOw== 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 4ZR4xm42hVzfgt; Mon, 31 Mar 2025 09:06: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 52V96awH078881; Mon, 31 Mar 2025 09:06:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96a5t078878; Mon, 31 Mar 2025 09:06:36 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:36 GMT Message-Id: <202503310906.52V96a5t078878@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: a6268f89d58c - main - proc: Disallow re-enabling of process itimers during exit List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a6268f89d58c1962d2372a664a35eaecbf367fbb Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a6268f89d58c1962d2372a664a35eaecbf367fbb commit a6268f89d58c1962d2372a664a35eaecbf367fbb Author: Mark Johnston AuthorDate: 2025-03-31 01:22:14 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 proc: Disallow re-enabling of process itimers during exit During process exit, it's possible for the exiting thread to send a signal to its process, via killjobc(). This happens after the itimer is drained. If itimers are stopped, i.e., P2_ITSTOPPED is set, then itimer_proc_continue() will resume the callout after it has been drained. Fix the problem by simply clearing P2_ITSTOPPED as part of the drain. Then, a signal received after that point will not re-enable the callout. For good measure, also make sure that we don't reset the itimer callout in an exiting process. Reported by: syzkaller Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49529 --- sys/kern/kern_exit.c | 1 + sys/kern/kern_time.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index a67d6b422964..54e3044ab093 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -375,6 +375,7 @@ exit1(struct thread *td, int rval, int signo) * Stop the real interval timer. If the handler is currently * executing, prevent it from rearming itself and let it finish. */ + p->p_flag2 &= ~P2_ITSTOPPED; if (timevalisset(&p->p_realtimer.it_value) && callout_stop(&p->p_itcallout) == 0) { timevalclear(&p->p_realtimer.it_interval); diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index c94ae49b6923..d7dc78366292 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -884,6 +884,8 @@ realitexpire_reset_callout(struct proc *p, sbintime_t *isbtp) { sbintime_t prec; + if ((p->p_flag & P_WEXIT) != 0) + return; prec = isbtp == NULL ? tvtosbt(p->p_realtimer.it_interval) : *isbtp; callout_reset_sbt(&p->p_itcallout, tvtosbt(p->p_realtimer.it_value), prec >> tc_precexp, realitexpire, p, C_ABSOLUTE); From nobody Mon Mar 31 09:06:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xp18Rpz5rhmR; Mon, 31 Mar 2025 09:06: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 4ZR4xn5SbNz3YWC; Mon, 31 Mar 2025 09:06:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411997; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bl0ip/sWFSJd7spGxMO3Y8F8EIzqWDc/Qd45tFNWqEs=; b=CEC6YBDjvsd2kzakrPiRMRAQCyDJSaBUN9jRJwuEcSmAzE1+LTRHU879BDW/q5l6+2lpGl nuPIdqnCZGt9R5HmkWQsfn9sOSnwkIWqpPrGnlsa7JCoRbiQR9OMWOUTKIgJlE26kPzZbX wlrv9/6aUpKRccy03GzKrMv0mBM6bXSfwDFTh55SDaG8uUlXfFqnunU5QTcdCkLaAKxJvk isbXuLo2n+8gAWQXW9xBIEeHc/Q9CNSf7F8OHubRL/NSa0R5+C5tr6e1tQ6Llr9QN6KQNF wwQ4oEFOXQixZSck7FHXJmsgLkfot0KMMoiEnNgsRNrceQ7+pTM4BUn10wr/wA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411997; a=rsa-sha256; cv=none; b=r2YSWaAUPHWybHq2u9OeGzlN90SF5mnelBdBWj/O/Lk3EugVZCfdUKP4BklaNuMVLW6szR 5F+vH+WY6j+BKjZX5JBtik3JagARujqUj3pcdLHF1MYdcoykanFY3vUq+aqPIsEuhO86gr JyHhebeKFQem91bQ/WpRIpFCQg8QOBDbh74puCJQYuNygwl0M22aXHuqwxpBx/WS35XlLE wwHf+W+YYGZ8nsa/1b7uU5yiQsVEHxQsTqbmlNhJdIG9u7xNiY3JniSh3Ao3fPwBeNfLgr QpGcQM410Km0KmUUsgaOpFwE6g7LCLLnPbz7iidMt6L1icU91MpP8cSnpoRNoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411997; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bl0ip/sWFSJd7spGxMO3Y8F8EIzqWDc/Qd45tFNWqEs=; b=Qnm/qf/2bFrBMyZKfCsow4l6RHjzHkqlXrloUUh9hfW1+q/dLolmpketPtydjFcYHWOmI2 9ix+vUVHksNxN3T+C8Z2Z5JBXQqPCl5RS7j1GvqhZKRu7kvniquWURAIEPPmdB4JXvKrWE 4ImEn5C57TZbTFtwfV1TEcdPgaUTrrkn18fVV8JpeiD3uSOB5L27KL6AtV+aMtAFyGPK8V 4RMtm/6yl8AJP9qneJRLisYGuaLXF3nMruPQB35Bd1IczMD1cwIijUMuQf3H97yWcV/k5t RS8jqyRBIAKppNXzxj25F4DOM/aUJ29eRo32dkJXFPXYve4tH7Do3N7qeg1nsA== 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 4ZR4xn531Nzfdg; Mon, 31 Mar 2025 09:06: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 52V96bXZ078915; Mon, 31 Mar 2025 09:06:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96bGo078912; Mon, 31 Mar 2025 09:06:37 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:37 GMT Message-Id: <202503310906.52V96bGo078912@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: 12ecb0fe0afd - main - file: Add foffset_lock_pair() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 12ecb0fe0afda8c051605045e446371ddd34741f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=12ecb0fe0afda8c051605045e446371ddd34741f commit 12ecb0fe0afda8c051605045e446371ddd34741f Author: Mark Johnston AuthorDate: 2025-03-31 01:25:16 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 file: Add foffset_lock_pair() This will be used in kern_copy_file_range(), which needs to lock two offsets. Reviewed by: kib, rmacklem MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49440 --- sys/kern/vfs_vnops.c | 20 ++++++++++++++++++++ sys/sys/file.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 0d96bdb3acba..69d8ffcdd5ad 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -892,6 +892,26 @@ foffset_read(struct file *fp) } #endif +void +foffset_lock_pair(struct file *fp1, off_t *off1p, struct file *fp2, off_t *off2p, + int flags) +{ + KASSERT(fp1 != fp2, ("foffset_lock_pair: fp1 == fp2")); + + /* Lock in a consistent order to avoid deadlock. */ + if ((uintptr_t)fp1 > (uintptr_t)fp2) { + struct file *tmpfp; + off_t *tmpoffp; + + tmpfp = fp1, fp1 = fp2, fp2 = tmpfp; + tmpoffp = off1p, off1p = off2p, off2p = tmpoffp; + } + if (fp1 != NULL) + *off1p = foffset_lock(fp1, flags); + if (fp2 != NULL) + *off2p = foffset_lock(fp2, flags); +} + void foffset_lock_uio(struct file *fp, struct uio *uio, int flags) { diff --git a/sys/sys/file.h b/sys/sys/file.h index d0b53196151e..0c025fde475c 100644 --- a/sys/sys/file.h +++ b/sys/sys/file.h @@ -86,6 +86,8 @@ struct ucred; #define FOF_NEXTOFF_W 0x08 /* Also update f_nextoff[UIO_WRITE] */ #define FOF_NOUPDATE 0x10 /* Do not update f_offset */ off_t foffset_lock(struct file *fp, int flags); +void foffset_lock_pair(struct file *fp1, off_t *off1p, struct file *fp2, + off_t *off2p, int flags); void foffset_lock_uio(struct file *fp, struct uio *uio, int flags); void foffset_unlock(struct file *fp, off_t val, int flags); void foffset_unlock_uio(struct file *fp, struct uio *uio, int flags); From nobody Mon Mar 31 09:06:38 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR4xr08Nxz5rhkK; Mon, 31 Mar 2025 09:06: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 4ZR4xq0Vfvz3YC4; Mon, 31 Mar 2025 09:06:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8N/QzN+32GUl9BfXWU74DCnerCE+vpIZQ2dy/ElKgjw=; b=nwg6FcO1XzG6T1WWrnppvVAiCZDnY50a0gTxsbXKN4eXZOEvHOvk9bBxVi/DkMN9i72IjF RDsmf4x42DqxRrfPPLRYVRwzuidoYhMBd58vx0tbJbwMUDupRNfvSWOrfTbCNsFxZ+HX3x zDEfWBESvUhLavb9/SFh6rHVNZpo21NI7l8sxlSWDkmz2dhF/5m8ksV8+FLbILr9rwYXvW VCTUrdKIpMDJ2HqIQ/9TusCbyo9D6YX2LUPNAlJICHuWXOcGtjMXfcAMlLEhxEQB2gus2h aaDsnlHKVcGHW/as00TSKXOXij6lRDmVK9ecjHs1g5EiL38b7KIILXuvYDju/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743411999; a=rsa-sha256; cv=none; b=t16A0nAIJvzYfu7tG23FOqzt9okUHa6mwFdk/qV0klh/W4w9GXZcXdbKttjQCYESr3njg4 WG9wj6RO1yrEFgI3uGb3RY9O3Kk7VLTZOaMjjEIUxHYIlClheiURBudXvnjX0Aqbd5iVGe woojXXSbfST6LmxPhFa8ikc+42+c9ICr24CEd4gvOTWgba+9g8Xz531amqnkoQCRtZZiPv DiWb35t/BXHGCCJQpNY4Jy3FBggjEAIquXLiy6/z518A7rf5znWZ6pWWvO7vx3OmUz5oyo IoPWDppXs1DcsFQDdL3J/d2zTQG2EFbWHhoaA/MtXToiLSNHVCxOD66TU7atiQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743411999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8N/QzN+32GUl9BfXWU74DCnerCE+vpIZQ2dy/ElKgjw=; b=tOusGr/h6dmbkK81EorjYiBBILIposmJkG5K/glECZN/NDjobaZ8mmkAmw++sAtPwZu7ae fuqJ2L/AaB6KzP7ZUbP2kVFaMTB5YifFeiSZzrqql5JfUH7VEp3nPQv9HO17j95vgZfiPg +WyJdMSVHqvuEad190PZ+U7zvq4p66haL8iomVESINszJK4ypuudukKna6kTEgm4xCTXE+ jL9fvvr+BmA2fBYa1Mv/bNb/cpeFLe9kiYmDmWYjqvrvcNL0LRn4iPPAd4bXQvgI3h1Wui WCqdU1j+jnBXCZaiN4RXBwJ5+303ci7nOD0gY8ZfveU8D9LezIppFKp5+9lK7w== 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 4ZR4xp5hljzfPq; Mon, 31 Mar 2025 09:06: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 52V96cjg078949; Mon, 31 Mar 2025 09:06:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V96cJP078946; Mon, 31 Mar 2025 09:06:38 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:06:38 GMT Message-Id: <202503310906.52V96cJP078946@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: 197997a4c36d - main - file: Fix offset handling in kern_copy_file_range() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 197997a4c36d8be5807688a4f973ebe8ae807a6e Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=197997a4c36d8be5807688a4f973ebe8ae807a6e commit 197997a4c36d8be5807688a4f973ebe8ae807a6e Author: Mark Johnston AuthorDate: 2025-03-31 01:23:30 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 09:01:09 +0000 file: Fix offset handling in kern_copy_file_range() One can ask copy_file_range(2) to use the file offsets of the file descriptions that it copies from and to. We were updating those offsets without any locking, which is incorrect and can lead to unkillable loops in the event of a race (e.g., the check for overlapping ranges in kern_copy_file_range() is subject to a TOCTOU race with the following loop which range-locks the input and output file). Use foffset_lock() to serialize updates to the file descriptions, as we do for other, similar system calls. Reported by: syzkaller Reviewed by: rmacklem, kib MFC after: 2 weeks Fixes: bbbbeca3e9a3 ("Add kernel support for a Linux compatible copy_file_range(2) syscall.") Differential Revision: https://reviews.freebsd.org/D49440 --- sys/kern/vfs_syscalls.c | 73 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 41609d7c5351..a6c216d61d8c 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -4940,16 +4940,17 @@ int kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, off_t *outoffp, size_t len, unsigned int flags) { - struct file *infp, *outfp; + struct file *infp, *infp1, *outfp, *outfp1; struct vnode *invp, *outvp; int error; size_t retlen; void *rl_rcookie, *rl_wcookie; - off_t savinoff, savoutoff; + off_t inoff, outoff, savinoff, savoutoff; + bool foffsets_locked; infp = outfp = NULL; rl_rcookie = rl_wcookie = NULL; - savinoff = -1; + foffsets_locked = false; error = 0; retlen = 0; @@ -4991,13 +4992,35 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, goto out; } - /* Set the offset pointers to the correct place. */ - if (inoffp == NULL) - inoffp = &infp->f_offset; - if (outoffp == NULL) - outoffp = &outfp->f_offset; - savinoff = *inoffp; - savoutoff = *outoffp; + /* + * Figure out which file offsets we're reading from and writing to. + * If the offsets come from the file descriptions, we need to lock them, + * and locking both offsets requires a loop to avoid deadlocks. + */ + infp1 = outfp1 = NULL; + if (inoffp != NULL) + inoff = *inoffp; + else + infp1 = infp; + if (outoffp != NULL) + outoff = *outoffp; + else + outfp1 = outfp; + if (infp1 != NULL || outfp1 != NULL) { + if (infp1 == outfp1) { + /* + * Overlapping ranges are not allowed. A more thorough + * check appears below, but we must not lock the same + * offset twice. + */ + error = EINVAL; + goto out; + } + foffset_lock_pair(infp1, &inoff, outfp1, &outoff, 0); + foffsets_locked = true; + } + savinoff = inoff; + savoutoff = outoff; invp = infp->f_vnode; outvp = outfp->f_vnode; @@ -5017,8 +5040,8 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, * overlap. */ if (invp == outvp) { - if ((savinoff <= savoutoff && savinoff + len > savoutoff) || - (savinoff > savoutoff && savoutoff + len > savinoff)) { + if ((inoff <= outoff && inoff + len > outoff) || + (inoff > outoff && outoff + len > inoff)) { error = EINVAL; goto out; } @@ -5027,28 +5050,36 @@ kern_copy_file_range(struct thread *td, int infd, off_t *inoffp, int outfd, /* Range lock the byte ranges for both invp and outvp. */ for (;;) { - rl_wcookie = vn_rangelock_wlock(outvp, *outoffp, *outoffp + - len); - rl_rcookie = vn_rangelock_tryrlock(invp, *inoffp, *inoffp + - len); + rl_wcookie = vn_rangelock_wlock(outvp, outoff, outoff + len); + rl_rcookie = vn_rangelock_tryrlock(invp, inoff, inoff + len); if (rl_rcookie != NULL) break; vn_rangelock_unlock(outvp, rl_wcookie); - rl_rcookie = vn_rangelock_rlock(invp, *inoffp, *inoffp + len); + rl_rcookie = vn_rangelock_rlock(invp, inoff, inoff + len); vn_rangelock_unlock(invp, rl_rcookie); } retlen = len; - error = vn_copy_file_range(invp, inoffp, outvp, outoffp, &retlen, + error = vn_copy_file_range(invp, &inoff, outvp, &outoff, &retlen, flags, infp->f_cred, outfp->f_cred, td); out: if (rl_rcookie != NULL) vn_rangelock_unlock(invp, rl_rcookie); if (rl_wcookie != NULL) vn_rangelock_unlock(outvp, rl_wcookie); - if (savinoff != -1 && (error == EINTR || error == ERESTART)) { - *inoffp = savinoff; - *outoffp = savoutoff; + if (foffsets_locked) { + if (error == EINTR || error == ERESTART) { + inoff = savinoff; + outoff = savoutoff; + } + if (inoffp == NULL) + foffset_unlock(infp, inoff, 0); + else + *inoffp = inoff; + if (outoffp == NULL) + foffset_unlock(outfp, outoff, 0); + else + *outoffp = outoff; } if (outfp != NULL) fdrop(outfp, td); From nobody Mon Mar 31 09:18:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR5C919hBz5rhvH; Mon, 31 Mar 2025 09:18: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 4ZR5C86tD5z3gf8; Mon, 31 Mar 2025 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743412692; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MP0EiSd7BHp5SaE+RpfS32CdggmcVaN8LgR4vA6Es4w=; b=k3XlKExI1L8QY1rKkyu5QP41cjDx2dFYFKLoU/y/RpPsPhcxzAZrEDE3MmlrESa9I5oUwk Ie6banrU/9zLN2+TokxGMq1m5tERKp/vsni4/JCK4ihNnKm2nCkcTXZlPtsqUZtS0Q+p05 9u+uAhf+c6IEUGzccqlPn8H7bzj78WXKWqhFSNStQFGMKboGVUNam1NDcotmnnxi8q54Eg cDu3e8Zcg+jZgNdlhNUNaJcnAO/573mpF6R0F7XXLL72nnPpjw/GRhLjohTHQsKiy3QdIK aSJvS79g5efEQgKj1LtRTcd1bJ6MLp4uHmWSvKeJcNromRq/DmncNOT00//7Pw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743412692; a=rsa-sha256; cv=none; b=NC9Jwu2HC89XThyBheb8PCbC3xILbyYODXPHtdvr8410y8ppPGmEIQ0lNhSMc1mpL+uHyO SwHykQuV6uPUgsI/erW/nGe7QYut5/4t/+2ODuli5odwrqOFjdv5tTBMyQ3MEbCJebd6qz gypPelb+0ESzJNfHxMSns+aCRN57+bZCxfpBmbFz/c7hmc9Mb9mOzS09JULLXA51yUDzAx S/GyhvQv0VmXaY2I4fNzQSMHXhti0wvj1Y/j0eB6TlWp3MoTbJtV8HVCzZMHML/UveDxcD z568UNskrkWZoKN4xho12cYewfxZYqaYodrNuN/udZ8AzmulnwWtWBtWbdojag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743412692; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MP0EiSd7BHp5SaE+RpfS32CdggmcVaN8LgR4vA6Es4w=; b=uQQWyYdII7uMv+Tawh17JbSzNz9ZrQhcNPlNXVRttZUYnslPanTGO+wpvhMhQOSPa5Mh9I Emq6wjWR+vDTrxnjFe0AYbCPgRZNeb78i+xdjDLNaZb4Gl2UW0tAbt23sPjX41nABZlhl1 +Q3rUHEJj8rZLwEl8JxnqzjbKqEXNFAkNHk03xiqrkVhO7Zzbb+FO93Ko7eIgziuJmScj/ 8YCvjVan+1P79LQrxNY1CJjk13LxDjZ5CwgrFSbP1LEBROz0FgpRDrHAxIr3KdO9a9JTRI tCeumnFcU/KXX6E5x133KK6Q5lmV4vJsSw5sVSjX9rWwRB2aN0rIsrnIi80Rww== 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 4ZR5C85pPXzfsq; Mon, 31 Mar 2025 09:18: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 52V9ICKs098954; Mon, 31 Mar 2025 09:18:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52V9ICYN098951; Mon, 31 Mar 2025 09:18:12 GMT (envelope-from git) Date: Mon, 31 Mar 2025 09:18:12 GMT Message-Id: <202503310918.52V9ICYN098951@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Igor Ostapenko Subject: git: 30e6e008bc06 - main - jail: Add meta and env parameters List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: igoro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 30e6e008bc06385a66756bebb41676f4f9017eca Auto-Submitted: auto-generated The branch main has been updated by igoro: URL: https://cgit.FreeBSD.org/src/commit/?id=30e6e008bc06385a66756bebb41676f4f9017eca commit 30e6e008bc06385a66756bebb41676f4f9017eca Author: Igor Ostapenko AuthorDate: 2025-03-31 09:08:43 +0000 Commit: Igor Ostapenko CommitDate: 2025-03-31 09:17:03 +0000 jail: Add meta and env parameters Each one is an arbitrary string associated with a jail. It can be set upon jail creation or added/modified later: > jail -cm ... meta="tag1=value1 tag2=value2" env="configuration" The values are not inherited from the parent jail. A parent jail can read both metadata parameters, while a child jail can read only env via security.jail.env sysctl. The maximum size of meta or env per jail is controlled by the global security.jail.meta_maxbufsize sysctl. Decreasing it does not alter the existing meta information. Each metadata buffer can be handled as a set of key=value\n strings: > jail -cm ... meta="$(echo k1=v1; echo k2=v2)" env.1=one > jls meta.k2 env.1 meta.k1 While meta.k1= resets the value to an empty string, the meta.k1 without the equal sign removes the given key. Relnotes: yes Reviewed by: jamie Tested by: dch Sponsored by: SkunkWerks GmbH Differential Revision: https://reviews.freebsd.org/D47668 --- lib/libjail/jail.c | 84 +++++- lib/libjail/jail.h | 1 + libexec/flua/libjail/lua_jail.c | 16 +- sys/conf/files | 1 + sys/kern/kern_jail.c | 11 +- sys/kern/kern_jailmeta.c | 621 ++++++++++++++++++++++++++++++++++++++++ sys/sys/jail.h | 4 + tests/sys/kern/Makefile | 1 + tests/sys/kern/jailmeta.sh | 588 +++++++++++++++++++++++++++++++++++++ usr.sbin/jail/jail.8 | 36 +++ usr.sbin/jls/jls.c | 8 + 11 files changed, 1351 insertions(+), 20 deletions(-) diff --git a/lib/libjail/jail.c b/lib/libjail/jail.c index 8e5b420d677b..30282e67866c 100644 --- a/lib/libjail/jail.c +++ b/lib/libjail/jail.c @@ -59,6 +59,7 @@ static int jailparam_type(struct jailparam *jp); static int kldload_param(const char *name); static char *noname(const char *name); static char *nononame(const char *name); +static char *kvname(const char *name); char jail_errmsg[JAIL_ERRMSGLEN]; @@ -521,6 +522,11 @@ jailparam_set(struct jailparam *jp, unsigned njp, int flags) jiov[i - 1].iov_len = strlen(nname) + 1; } + } else if (jp[j].jp_flags & JP_KEYVALUE && + jp[j].jp_value == NULL) { + /* No value means key removal. */ + jiov[i].iov_base = NULL; + jiov[i].iov_len = 0; } else { /* * Try to fill in missing values with an empty string. @@ -907,22 +913,41 @@ jailparam_type(struct jailparam *jp) * the "no" counterpart to a boolean. */ nname = nononame(name); - if (nname == NULL) { - unknown_parameter: - snprintf(jail_errmsg, JAIL_ERRMSGLEN, - "unknown parameter: %s", jp->jp_name); - errno = ENOENT; - return (-1); + if (nname != NULL) { + snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", nname); + miblen = sizeof(mib) - 2 * sizeof(int); + if (sysctl(mib, 2, mib + 2, &miblen, desc.s, + strlen(desc.s)) >= 0) { + name = alloca(strlen(nname) + 1); + strcpy(name, nname); + free(nname); + jp->jp_flags |= JP_NOBOOL; + goto mib_desc; + } + free(nname); } - name = alloca(strlen(nname) + 1); - strcpy(name, nname); - free(nname); - snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", name); - miblen = sizeof(mib) - 2 * sizeof(int); - if (sysctl(mib, 2, mib + 2, &miblen, desc.s, - strlen(desc.s)) < 0) - goto unknown_parameter; - jp->jp_flags |= JP_NOBOOL; + /* + * It might be an assumed sub-node of a fmt='A,keyvalue' sysctl. + */ + nname = kvname(name); + if (nname != NULL) { + snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", nname); + miblen = sizeof(mib) - 2 * sizeof(int); + if (sysctl(mib, 2, mib + 2, &miblen, desc.s, + strlen(desc.s)) >= 0) { + name = alloca(strlen(nname) + 1); + strcpy(name, nname); + free(nname); + jp->jp_flags |= JP_KEYVALUE; + goto mib_desc; + } + free(nname); + } +unknown_parameter: + snprintf(jail_errmsg, JAIL_ERRMSGLEN, + "unknown parameter: %s", jp->jp_name); + errno = ENOENT; + return (-1); } mib_desc: mib[1] = 4; @@ -943,6 +968,12 @@ jailparam_type(struct jailparam *jp) else if ((desc.i & CTLTYPE) != CTLTYPE_NODE) goto unknown_parameter; } + /* Make sure it is a valid keyvalue param. */ + if (jp->jp_flags & JP_KEYVALUE) { + if ((desc.i & CTLTYPE) != CTLTYPE_STRING || + strcmp(desc.s, "A,keyvalue") != 0) + goto unknown_parameter; + } /* See if this is an array type. */ p = strchr(desc.s, '\0'); isarray = 0; @@ -1119,3 +1150,26 @@ nononame(const char *name) strcpy(nname, name + 2); return (nname); } + +static char * +kvname(const char *name) +{ + const char *p; + char *kvname; + size_t len; + + p = strchr(name, '.'); + if (p == NULL) + return (NULL); + + len = p - name; + kvname = malloc(len + 1); + if (kvname == NULL) { + strerror_r(errno, jail_errmsg, JAIL_ERRMSGLEN); + return (NULL); + } + strncpy(kvname, name, len); + kvname[len] = '\0'; + + return (kvname); +} diff --git a/lib/libjail/jail.h b/lib/libjail/jail.h index 27f07cd98802..6ce79b1b0528 100644 --- a/lib/libjail/jail.h +++ b/lib/libjail/jail.h @@ -33,6 +33,7 @@ #define JP_BOOL 0x02 #define JP_NOBOOL 0x04 #define JP_JAILSYS 0x08 +#define JP_KEYVALUE 0x10 #define JAIL_ERRMSGLEN 1024 diff --git a/libexec/flua/libjail/lua_jail.c b/libexec/flua/libjail/lua_jail.c index f364b090b3f9..9632db795775 100644 --- a/libexec/flua/libjail/lua_jail.c +++ b/libexec/flua/libjail/lua_jail.c @@ -445,9 +445,16 @@ l_getparams(lua_State *L) for (size_t i = 0; i < params_count; ++i) { char *value; - value = jailparam_export(¶ms[i]); - lua_pushstring(L, value); - free(value); + if (params[i].jp_flags & JP_KEYVALUE && + params[i].jp_valuelen == 0) { + /* Communicate back a missing key. */ + lua_pushnil(L); + } else { + value = jailparam_export(¶ms[i]); + lua_pushstring(L, value); + free(value); + } + lua_setfield(L, -2, params[i].jp_name); } @@ -535,7 +542,8 @@ l_setparams(lua_State *L) } value = lua_tostring(L, -1); - if (value == NULL) { + /* Allow passing NULL for key removal. */ + if (value == NULL && !(params[i].jp_flags & JP_KEYVALUE)) { jailparam_free(params, i + 1); free(params); return (luaL_argerror(L, 2, diff --git a/sys/conf/files b/sys/conf/files index 9173fc9b81e5..3be4c1d8e3dd 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -3792,6 +3792,7 @@ kern/kern_hhook.c standard kern/kern_idle.c standard kern/kern_intr.c standard kern/kern_jail.c standard +kern/kern_jailmeta.c standard kern/kern_kcov.c optional kcov \ compile-with "${NOSAN_C} ${MSAN_CFLAGS}" kern/kern_khelp.c standard diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 6ffeab59112b..37c0bd49490f 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -2552,6 +2552,15 @@ kern_jail_get(struct thread *td, struct uio *optuio, int flags) /* By now, all parameters should have been noted. */ TAILQ_FOREACH(opt, opts, link) { + if (!opt->seen && + (strstr(opt->name, JAIL_META_PRIVATE ".") == opt->name || + strstr(opt->name, JAIL_META_SHARED ".") == opt->name)) { + /* Communicate back a missing key. */ + free(opt->value, M_MOUNT); + opt->value = NULL; + opt->len = 0; + continue; + } if (!opt->seen && strcmp(opt->name, "errmsg")) { error = EINVAL; vfs_opterror(opts, "unknown parameter: %s", opt->name); @@ -4272,7 +4281,7 @@ prison_path(struct prison *pr1, struct prison *pr2) /* * Jail-related sysctls. */ -static SYSCTL_NODE(_security, OID_AUTO, jail, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, +SYSCTL_NODE(_security, OID_AUTO, jail, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "Jails"); #if defined(INET) || defined(INET6) diff --git a/sys/kern/kern_jailmeta.c b/sys/kern/kern_jailmeta.c new file mode 100644 index 000000000000..4e37eccad03a --- /dev/null +++ b/sys/kern/kern_jailmeta.c @@ -0,0 +1,621 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 SkunkWerks GmbH + * + * This software was developed by Igor Ostapenko + * under sponsorship from SkunkWerks GmbH. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Buffer limit. + * + * The hard limit is the actual value used during setting or modification. The + * soft limit is used solely by the security.jail.param.meta and .env sysctl. If + * the hard limit is decreased, the soft limit may remain higher to ensure that + * previously set meta strings can still be correctly interpreted by end-user + * interfaces, such as jls(8). + */ + +static uint32_t jm_maxbufsize_hard = 4096; +static uint32_t jm_maxbufsize_soft = 4096; + +static int +jm_sysctl_meta_maxbufsize(SYSCTL_HANDLER_ARGS) +{ + int error; + uint32_t newmax = 0; + + /* Reading only. */ + + if (req->newptr == NULL) { + sx_slock(&allprison_lock); + error = SYSCTL_OUT(req, &jm_maxbufsize_hard, + sizeof(jm_maxbufsize_hard)); + sx_sunlock(&allprison_lock); + + return (error); + } + + /* Reading and writing. */ + + sx_xlock(&allprison_lock); + + error = SYSCTL_OUT(req, &jm_maxbufsize_hard, + sizeof(jm_maxbufsize_hard)); + if (error != 0) + goto end; + + error = SYSCTL_IN(req, &newmax, sizeof(newmax)); + if (error != 0) + goto end; + + jm_maxbufsize_hard = newmax; + if (jm_maxbufsize_hard >= jm_maxbufsize_soft) { + jm_maxbufsize_soft = jm_maxbufsize_hard; + } else if (TAILQ_EMPTY(&allprison)) { + /* + * For now, this is the simplest way to + * avoid O(n) iteration over all prisons in + * case of a large n. + */ + jm_maxbufsize_soft = jm_maxbufsize_hard; + } + +end: + sx_xunlock(&allprison_lock); + return (error); +} +SYSCTL_PROC(_security_jail, OID_AUTO, meta_maxbufsize, + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_meta_maxbufsize, "IU", + "Maximum buffer size of each meta and env"); + + +/* Jail parameter announcement. */ + +static int +jm_sysctl_param_meta(SYSCTL_HANDLER_ARGS) +{ + uint32_t soft; + + sx_slock(&allprison_lock); + soft = jm_maxbufsize_soft; + sx_sunlock(&allprison_lock); + + return (sysctl_jail_param(oidp, arg1, soft, req)); +} +SYSCTL_PROC(_security_jail_param, OID_AUTO, meta, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_param_meta, "A,keyvalue", + "Jail meta information hidden from the jail"); +SYSCTL_PROC(_security_jail_param, OID_AUTO, env, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, + jm_sysctl_param_meta, "A,keyvalue", + "Jail meta information readable by the jail"); + + +/* Generic OSD-based logic for any metadata buffer. */ + +struct meta { + char *name; + u_int osd_slot; + osd_method_t methods[PR_MAXMETHOD]; +}; + +/* A chain of hunks representing the final buffer after all manipulations. */ +struct hunk { + char *p; /* a buf reference */ + size_t len; /* number of bytes referred */ + char *owned; /* must be freed */ + struct hunk *next; +}; + +static inline struct hunk * +jm_h_alloc(void) +{ + /* All fields are zeroed. */ + return (malloc(sizeof(struct hunk), M_PRISON, M_WAITOK | M_ZERO)); +} + +static inline struct hunk * +jm_h_prepend(struct hunk *h, char *p, size_t len) +{ + struct hunk *n; + + n = jm_h_alloc(); + n->p = p; + n->len = len; + n->next = h; + return (n); +} + +static inline void +jm_h_cut_line(struct hunk *h, char *begin) +{ + struct hunk *rem; + char *end; + + /* Find the end of key=value. */ + for (end = begin; (end + 1) < (h->p + h->len); end++) + if (*end == '\0' || *end == '\n') + break; + + /* Pick up a non-empty remainder. */ + if ((end + 1) < (h->p + h->len) && *(end + 1) != '\0') { + rem = jm_h_alloc(); + rem->p = end + 1; + rem->len = h->p + h->len - rem->p; + + /* insert */ + rem->next = h->next; + h->next = rem; + } + + /* Shorten this hunk. */ + h->len = begin - h->p; +} + +static inline void +jm_h_cut_occurrences(struct hunk *h, const char *key, size_t keylen) +{ + char *p = h->p; + +#define nexthunk() \ + do { \ + h = h->next; \ + p = (h == NULL) ? NULL : h->p; \ + } while (0) + + while (p != NULL) { + p = strnstr(p, key, h->len - (p - h->p)); + if (p == NULL) { + nexthunk(); + continue; + } + if ((p == h->p || *(p - 1) == '\n') && p[keylen] == '=') { + jm_h_cut_line(h, p); + nexthunk(); + continue; + } + /* Continue with this hunk. */ + p += keylen; + /* Empty? The next hunk then. */ + if ((p - h->p) >= h->len) + nexthunk(); + } +} + +static inline size_t +jm_h_len(struct hunk *h) +{ + size_t len = 0; + while (h != NULL) { + len += h->len; + h = h->next; + } + return (len); +} + +static inline void +jm_h_assemble(char *dst, struct hunk *h) +{ + while (h != NULL) { + if (h->len > 0) { + memcpy(dst, h->p, h->len); + dst += h->len; + /* If not the last hunk then concatenate with \n. */ + if (h->next != NULL && *(dst - 1) == '\0') + *(dst - 1) = '\n'; + } + h = h->next; + } +} + +static inline struct hunk * +jm_h_freechain(struct hunk *h) +{ + struct hunk *n = h; + while (n != NULL) { + h = n; + n = h->next; + free(h->owned, M_PRISON); + free(h, M_PRISON); + } + + return (NULL); +} + +static int +jm_osd_method_set(void *obj, void *data, const struct meta *meta) +{ + struct prison *pr = obj; + struct vfsoptlist *opts = data; + struct vfsopt *opt; + + char *origosd; + char *origosd_copy; + char *oldosd; + char *osd; + size_t osdlen; + struct hunk *h; + char *key; + size_t keylen; + int error; + int repeats = 0; + bool repeat; + + sx_assert(&allprison_lock, SA_XLOCKED); + +again: + origosd = NULL; + origosd_copy = NULL; + osd = NULL; + h = NULL; + error = 0; + repeat = false; + TAILQ_FOREACH(opt, opts, link) { + /* Look for options with prefix. */ + if (strstr(opt->name, meta->name) != opt->name) + continue; + /* Consider only full or .* ones. */ + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + opt->seen = 1; + + /* The very first preconditions. */ + if (opt->len < 0) + continue; + if (opt->len > jm_maxbufsize_hard) { + error = EFBIG; + break; + } + /* NULL-terminated strings are expected from vfsopt. */ + if (opt->value != NULL && + ((char *)opt->value)[opt->len - 1] != '\0') { + error = EINVAL; + break; + } + + /* Work with our own copy of existing metadata. */ + if (h == NULL) { + h = jm_h_alloc(); /* zeroed */ + mtx_lock(&pr->pr_mtx); + origosd = osd_jail_get(pr, meta->osd_slot); + if (origosd != NULL) { + origosd_copy = malloc(strlen(origosd) + 1, + M_PRISON, M_NOWAIT); + if (origosd_copy == NULL) + error = ENOMEM; + else { + h->p = origosd_copy; + h->len = strlen(origosd) + 1; + memcpy(h->p, origosd, h->len); + } + } + mtx_unlock(&pr->pr_mtx); + if (error != 0) + break; + } + + /* 1) Change the whole metadata. */ + if (strcmp(opt->name, meta->name) == 0) { + if (opt->len > jm_maxbufsize_hard) { + error = EFBIG; + break; + } + h = jm_h_freechain(h); + h = jm_h_prepend(h, + (opt->value != NULL) ? opt->value : "", + /* avoid empty NULL-terminated string */ + (opt->len > 1) ? opt->len : 0); + continue; + } + + /* 2) Or add/replace/remove a specific key=value. */ + key = opt->name + strlen(meta->name) + 1; + keylen = strlen(key); + if (keylen < 1) { + error = EINVAL; + break; + } + jm_h_cut_occurrences(h, key, keylen); + if (opt->value == NULL) + continue; /* key removal */ + h = jm_h_prepend(h, NULL, 0); + h->len = keylen + 1 + opt->len; /* key=value\0 */ + h->owned = malloc(h->len, M_PRISON, M_WAITOK | M_ZERO); + h->p = h->owned; + memcpy(h->p, key, keylen); + h->p[keylen] = '='; + memcpy(h->p + keylen + 1, opt->value, opt->len); + } + + if (h == NULL || error != 0) + goto end; + + /* Assemble the final contiguous buffer. */ + osdlen = jm_h_len(h); + if (osdlen > jm_maxbufsize_hard) { + error = EFBIG; + goto end; + } + if (osdlen > 1) { + osd = malloc(osdlen, M_PRISON, M_WAITOK); + jm_h_assemble(osd, h); + osd[osdlen - 1] = '\0'; /* sealed */ + } + + /* Compare and swap the buffers. */ + mtx_lock(&pr->pr_mtx); + oldosd = osd_jail_get(pr, meta->osd_slot); + if (oldosd == origosd) { + error = osd_jail_set(pr, meta->osd_slot, osd); + } else { + /* + * The osd(9) framework requires protection only for pr_osd, + * which is covered by pr_mtx. Therefore, other code might + * legally alter jail metadata without allprison_lock. It + * means that here we could override data just added by other + * thread. This extra caution with retry mechanism aims to + * prevent user data loss in such potential cases. + */ + error = EAGAIN; + repeat = true; + } + mtx_unlock(&pr->pr_mtx); + if (error == 0) + osd = oldosd; + +end: + jm_h_freechain(h); + free(osd, M_PRISON); + free(origosd_copy, M_PRISON); + + if (repeat && ++repeats < 3) + goto again; + + return (error); +} + +static int +jm_osd_method_get(void *obj, void *data, const struct meta *meta) +{ + struct prison *pr = obj; + struct vfsoptlist *opts = data; + struct vfsopt *opt; + char *osd = NULL; + char empty = '\0'; + int error = 0; + bool locked = false; + const char *key; + size_t keylen; + const char *p; + + sx_assert(&allprison_lock, SA_SLOCKED); + + TAILQ_FOREACH(opt, opts, link) { + if (strstr(opt->name, meta->name) != opt->name) + continue; + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + + if (!locked) { + mtx_lock(&pr->pr_mtx); + locked = true; + osd = osd_jail_get(pr, meta->osd_slot); + if (osd == NULL) + osd = ∅ + } + + /* Provide full metadata. */ + if (strcmp(opt->name, meta->name) == 0) { + if (strlcpy(opt->value, osd, opt->len) >= opt->len) { + error = EINVAL; + break; + } + opt->seen = 1; + continue; + } + + /* Extract a specific key=value. */ + p = osd; + key = opt->name + strlen(meta->name) + 1; + keylen = strlen(key); + while ((p = strstr(p, key)) != NULL) { + if ((p == osd || *(p - 1) == '\n') + && p[keylen] == '=') { + if (strlcpy(opt->value, p + keylen + 1, + MIN(opt->len, strchr(p + keylen + 1, '\n') - + (p + keylen + 1) + 1)) >= opt->len) { + error = EINVAL; + break; + } + opt->seen = 1; + } + p += keylen; + } + if (error != 0) + break; + } + + if (locked) + mtx_unlock(&pr->pr_mtx); + + return (error); +} + +static int +jm_osd_method_check(void *obj __unused, void *data, const struct meta *meta) +{ + struct vfsoptlist *opts = data; + struct vfsopt *opt; + + TAILQ_FOREACH(opt, opts, link) { + if (strstr(opt->name, meta->name) != opt->name) + continue; + if (opt->name[strlen(meta->name)] != '.' && + opt->name[strlen(meta->name)] != '\0') + continue; + opt->seen = 1; + } + + return (0); +} + +static void +jm_osd_destructor(void *osd) +{ + free(osd, M_PRISON); +} + + +/* OSD for "meta" param */ + +static struct meta meta; + +static inline int +jm_osd_method_set_meta(void *obj, void *data) +{ + return (jm_osd_method_set(obj, data, &meta)); +} + +static inline int +jm_osd_method_get_meta(void *obj, void *data) +{ + return (jm_osd_method_get(obj, data, &meta)); +} + +static inline int +jm_osd_method_check_meta(void *obj, void *data) +{ + return (jm_osd_method_check(obj, data, &meta)); +} + +static struct meta meta = { + .name = JAIL_META_PRIVATE, + .osd_slot = 0, + .methods = { + [PR_METHOD_SET] = jm_osd_method_set_meta, + [PR_METHOD_GET] = jm_osd_method_get_meta, + [PR_METHOD_CHECK] = jm_osd_method_check_meta, + } +}; + + +/* OSD for "env" param */ + +static struct meta env; + +static inline int +jm_osd_method_set_env(void *obj, void *data) +{ + return (jm_osd_method_set(obj, data, &env)); +} + +static inline int +jm_osd_method_get_env(void *obj, void *data) +{ + return (jm_osd_method_get(obj, data, &env)); +} + +static inline int +jm_osd_method_check_env(void *obj, void *data) +{ + return (jm_osd_method_check(obj, data, &env)); +} + +static struct meta env = { + .name = JAIL_META_SHARED, + .osd_slot = 0, + .methods = { + [PR_METHOD_SET] = jm_osd_method_set_env, + [PR_METHOD_GET] = jm_osd_method_get_env, + [PR_METHOD_CHECK] = jm_osd_method_check_env, + } +}; + + +/* A jail can read its "env". */ + +static int +jm_sysctl_env(SYSCTL_HANDLER_ARGS) +{ + struct prison *pr; + char empty = '\0'; + char *tmpbuf; + size_t outlen; + int error = 0; + + pr = req->td->td_ucred->cr_prison; + + mtx_lock(&pr->pr_mtx); + arg1 = osd_jail_get(pr, env.osd_slot); + if (arg1 == NULL) { + tmpbuf = ∅ + outlen = 1; + } else { + outlen = strlen(arg1) + 1; + if (req->oldptr != NULL) { + tmpbuf = malloc(outlen, M_PRISON, M_NOWAIT); + error = (tmpbuf == NULL) ? ENOMEM : 0; + if (error == 0) + memcpy(tmpbuf, arg1, outlen); + } + } + mtx_unlock(&pr->pr_mtx); + + if (error != 0) + return (error); + + if (req->oldptr == NULL) + SYSCTL_OUT(req, NULL, outlen); + else { + SYSCTL_OUT(req, tmpbuf, outlen); + if (tmpbuf != &empty) + free(tmpbuf, M_PRISON); + } + + return (error); +} +SYSCTL_PROC(_security_jail, OID_AUTO, env, + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, + 0, 0, jm_sysctl_env, "A", "Meta information provided by parent jail"); + + +/* Setup and tear down. */ + +static int +jm_sysinit(void *arg __unused) +{ + meta.osd_slot = osd_jail_register(jm_osd_destructor, meta.methods); + env.osd_slot = osd_jail_register(jm_osd_destructor, env.methods); + + return (0); +} + +static int +jm_sysuninit(void *arg __unused) +{ + osd_jail_deregister(meta.osd_slot); + osd_jail_deregister(env.osd_slot); + + return (0); +} + +SYSINIT(jailmeta, SI_SUB_DRIVERS, SI_ORDER_ANY, jm_sysinit, NULL); +SYSUNINIT(jailmeta, SI_SUB_DRIVERS, SI_ORDER_ANY, jm_sysuninit, NULL); diff --git a/sys/sys/jail.h b/sys/sys/jail.h index 72799dbf172f..90fcf8cd5a47 100644 --- a/sys/sys/jail.h +++ b/sys/sys/jail.h @@ -141,6 +141,9 @@ MALLOC_DECLARE(M_PRISON); #define DEFAULT_HOSTUUID "00000000-0000-0000-0000-000000000000" #define OSRELEASELEN 32 +#define JAIL_META_PRIVATE "meta" +#define JAIL_META_SHARED "env" + struct racct; struct prison_racct; @@ -376,6 +379,7 @@ extern struct sx allprison_lock; /* * Sysctls to describe jail parameters. */ +SYSCTL_DECL(_security_jail); SYSCTL_DECL(_security_jail_param); #define SYSCTL_JAIL_PARAM_DECL(name) \ diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index be05f5d01faa..900c9a5b3bbe 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -59,6 +59,7 @@ TEST_METADATA.sigsys+= is_exclusive="true" ATF_TESTS_SH+= coredump_phnum_test ATF_TESTS_SH+= logsigexit_test +ATF_TESTS_SH+= jailmeta ATF_TESTS_SH+= sonewconn_overflow TEST_METADATA.sonewconn_overflow+= required_programs="python" TEST_METADATA.sonewconn_overflow+= required_user="root" diff --git a/tests/sys/kern/jailmeta.sh b/tests/sys/kern/jailmeta.sh new file mode 100644 index 000000000000..9a63f958231f --- /dev/null +++ b/tests/sys/kern/jailmeta.sh @@ -0,0 +1,588 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2024 SkunkWerks GmbH +# +# This software was developed by Igor Ostapenko +# under sponsorship from SkunkWerks GmbH. +# + +setup() +{ + # Check if we have enough buffer space for testing + if [ $(sysctl -n security.jail.meta_maxbufsize) -lt 128 ]; then + atf_skip "sysctl security.jail.meta_maxbufsize must be 128+ for testing." + fi +} + +atf_test_case "jail_create" "cleanup" +jail_create_head() +{ + atf_set descr 'Test that metadata can be set upon jail creation with jail(8)' + atf_set require.user root + atf_set execenv jail +} +jail_create_body() +{ + setup + + atf_check -s not-exit:0 -e match:"not found" -o ignore \ + jls -jj + + atf_check -s exit:0 \ + jail -c name=j persist meta="a b c" env="C B A" + + atf_check -s exit:0 -o inline:"a b c\n" \ + jls -jj meta + atf_check -s exit:0 -o inline:"C B A\n" \ + jls -jj env +} +jail_create_cleanup() +{ + jail -r j + return 0 +} + +atf_test_case "jail_modify" "cleanup" +jail_modify_head() +{ + atf_set descr 'Test that metadata can be modified after jail creation with jail(8)' + atf_set require.user root + atf_set execenv jail +} +jail_modify_body() +{ + setup + + atf_check -s not-exit:0 -e match:"not found" -o ignore \ + jls -jj + *** 602 LINES SKIPPED *** From nobody Mon Mar 31 10:07:54 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR6JV6V4zz5rmDX; Mon, 31 Mar 2025 10:07: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 4ZR6JV5ccPz476g; Mon, 31 Mar 2025 10:07:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743415674; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QC8p+gtgYiMxIw0u9emXyRUmerl7WiyNpqx0+NPxYq8=; b=hJyz/jjutF5DB8mW/QL9wR6cIq80CBbXR6UQavR/WWpcSLZk2/IWeNPbqTlGprcSRtrnMo BKGNnzHGnSk+3B15vYIe6iiQokqpeue9q82D3wRGNvY7y5/ZTYAXGDTDbZLGtHs/CQx5KT fEfHKqPpZUIIEts3VYx0h/jMl/XfA3ouquBNOFHScMlhb0YwIeSVjeNfr6UiKFDdRt+MKJ 3ErjyF1nHaKrnhghqSAIuanRrJqdSSYAErkiekp85jofceOXkZcvtYe+Wr76dPbtmQNLKn WuK879HKKTnOjzCB2KjCQfPen8JakZryBb7pfPxNCWtPwZO3kLSH8DAZUWUlWQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743415674; a=rsa-sha256; cv=none; b=GO/J2hxbph2pzObXCvcTCpsyZIIMVYnwlPCZgfakyH+2iQCMsl0Xt+W1Uj7PppdrtmWRr/ JH5eCGA1KqWiYtqfVZ6S4lnjxuWFkSoxdvdT9y2NraviaHDGV6yeMq63SmNQaESbH9ZYci VznZoJu702aV7fRviDToR9CVOksUjJFNHzqcxuPIupGOIGnfJD1Tcsg61e4cgYVe5VSC8W Fjh/R9dzOoj35wn0wKcHdL04DDsveGg/dhyEsNG+Dm/kV4nYEXwLlNrQ0b2OeYzGhjIosp vz/OgWt4M7TmVv4RGhN587qkSg8jxOZnSC/uv/FBuhxrpT5UsHTwYCh5uQspwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743415674; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QC8p+gtgYiMxIw0u9emXyRUmerl7WiyNpqx0+NPxYq8=; b=jQhWwAZoFWKWek3QDE08lSrQNykPbhm01U3EMUHCqz2k5OC4QztZKJYuM3BQb6sSaoFvGz Tjpto/D9EinevevCBaxHSO69vVNxKZDZNlRZZ4zafCRIPRM8nEhSst0B7JxLOVQt1SSAEh h3E7ahqJO+uIQS2/CcXlLySOZrkW6Y5htMOgFGSVkJngUbBqWNhJVJfX1+THsAFkCIAn1T ibML0K12Uh5MFSdxcJxllm/WabaJHMyk6hDyjUbGZW1nXu1o4tJKRrxBNJeAuIZoXU8JJb s5/6zaBKWmHCHtviAbXh1xxOcvlH9tEagncH8eFdE2o0e4Jk839sbRR0Ahe9nw== 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 4ZR6JV4zyYzgfW; Mon, 31 Mar 2025 10:07: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 52VA7ssj092200; Mon, 31 Mar 2025 10:07:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VA7sw8092197; Mon, 31 Mar 2025 10:07:54 GMT (envelope-from git) Date: Mon, 31 Mar 2025 10:07:54 GMT Message-Id: <202503311007.52VA7sw8092197@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: e8623834ca29 - main - sctp: fix double unlock in case adding a remote address fails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e8623834ca29b562687db945bdd12a3e2fe4aeb1 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=e8623834ca29b562687db945bdd12a3e2fe4aeb1 commit e8623834ca29b562687db945bdd12a3e2fe4aeb1 Author: Michael Tuexen AuthorDate: 2025-03-31 01:25:53 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 01:25:53 +0000 sctp: fix double unlock in case adding a remote address fails Thanks to glebius@ for pointing to the problem. Reported by: syzbot+1d5c164f1c10de84ad8a@syzkaller.appspotmail.com Fixes: 2d5c48eccd9f ("sctp: Tighten up locking around sctp_aloc_assoc()" MFC after: 3 days --- sys/netinet/sctp_pcb.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c index 55b452743f86..1a8a514fbf5f 100644 --- a/sys/netinet/sctp_pcb.c +++ b/sys/netinet/sctp_pcb.c @@ -4232,7 +4232,6 @@ sctp_aloc_assoc_locked(struct sctp_inpcb *inp, struct sockaddr *firstaddr, LIST_REMOVE(stcb, sctp_asocs); LIST_REMOVE(stcb, sctp_tcbasocidhash); SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_asoc), stcb); - SCTP_INP_WUNLOCK(inp); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, ENOBUFS); *error = ENOBUFS; return (NULL); From nobody Mon Mar 31 10:20:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR6Zj68QSz5rnXG; Mon, 31 Mar 2025 10:20: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 4ZR6Zj4Jl9z4DTm; Mon, 31 Mar 2025 10:20:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743416413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3EKP3sIV78DRvgPCS7xlvwyYeqJz80RHx/PbonSeNUE=; b=hJO/vUfqFcGRCRySo0eSLa+YecYafUDGmE+4/3lshaYpB7pcLlFBbyD8wO5fpjQokz3aOq NxXIwaGoBHujp5MB904JRXcQIS759/UWGrvi0o68QPbtUg7/l5vvRlTScbUTInC4GgD915 CNGn0fJBGsFJKSKdPK3L0Z3/JJpV0a2RKwO9oQMOOVomeDUUcuOli2WM7nwJ9mZNewlx4/ Exf8MSOgLrmbXPMXg2MVbyPd8C4GHX9H2jv1E37EijSiu0pZsNiNAHdvQDGu67esWkqHZf eMC5+TITC6tWo47qeRyEhU3VS3xvKBBHPMuIqspkyUaOs3oU8TAfRfmdN0T+rg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743416413; a=rsa-sha256; cv=none; b=fHA2/6R7UsNuVG3uSJ9YkGOm7gFJ5aqAVSy0Jn1TEFUS/hrvLC8hQ4Oegc/MYfBHjCzo92 zcgem386UiX2fMLTrPiXbJ8ObPBiYmYkZY0lg108nV7IVqfO4Kyum38KHM6e10iSsYvwPI +7h7hkM4HmFEoDldxraPL0z0wc+Po8mxVKIvv6S3TNPYLUub5+kaeYi4376reuE71Bz5H4 Gac7qYxYXag8zuCk5VDgN4+OCptBqN4q/9L0b+jOavHuYNmhmuSq7NTcgbdNw1ITaA7K/g qVEgqo8Ceb0vcmLpLDrIqIZ3pbHItdPF6oJmCHZ1di1V+8TBMxw9vgKBVq36/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743416413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3EKP3sIV78DRvgPCS7xlvwyYeqJz80RHx/PbonSeNUE=; b=ejf6zpUc0YYbsUwlHnvSrpGytpAE+DKFfiAlXyqocjXvEqn0T+pA8vj03q/n0pBK5gjpCi XzSLZt93MRnwV4BXRjJlgFVO2J650bA4NE8XK5sbRM29Bkn0XPIVsIFbcBYANwpN+FnjI0 WoPDQUHkfSaKzWbuntmJI7EKVRfp0WBslx18AMtsbfLaztDLIX1yTxhQT8WkEQ1cD4PYRl bWgzsujjo62pPoH9JRBwNLX8AOy0qnDb/O4nqiz1/7nFP/TkdXYFwLojvGdjMfYICrg7mA CL9fYpeYSIWie1pR5EhWelPKsaDUXlX/BYxC5WlKjd7mTwAeQLQVAYClNfDclQ== 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 4ZR6Zj29m0zhHx; Mon, 31 Mar 2025 10:20: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 52VAKDtO017659; Mon, 31 Mar 2025 10:20:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VAKDH7017643; Mon, 31 Mar 2025 10:20:13 GMT (envelope-from git) Date: Mon, 31 Mar 2025 10:20:13 GMT Message-Id: <202503311020.52VAKDH7017643@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: f6deb9ea0a0e - main - tcp rack: cleanup storing values for beta and beta_ecn List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 commit f6deb9ea0a0ee760e5ff9ad5c15d0bd7a1714355 Author: Michael Tuexen AuthorDate: 2025-03-31 01:40:17 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 01:40:17 +0000 tcp rack: cleanup storing values for beta and beta_ecn beta and beta_ecn were stored using a variable of type struct newreno in struct rack_control. Later, struct newreno was extended and now contains several more fields. This results in a memory inefficiency and also in copying around uninitialized memory. This patch fixes this by storing beta and beta_ecn individually in struct rack_control. Please note that the newreno_flags field was only stored and never used. Therefore, this is not stored anymore in struct rack_control. No functional change intended. CID: 1523796 Reviewed by: rrs MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49578 --- sys/netinet/tcp_stacks/rack.c | 45 +++++++++++++++++---------------------- sys/netinet/tcp_stacks/tcp_rack.h | 7 +++--- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 5a9171abeaf5..f5bc435890e7 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -618,8 +618,9 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) { struct sockopt sopt; struct cc_newreno_opts opt; - struct newreno old; struct tcpcb *tp; + uint32_t old_beta; + uint32_t old_beta_ecn; int error, failed = 0; tp = rack->rc_tp; @@ -639,7 +640,6 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) failed = 2; goto out; } - old.newreno_flags = CC_NEWRENO_BETA_ECN_ENABLED; /* Get the current values out */ sopt.sopt_valsize = sizeof(struct cc_newreno_opts); sopt.sopt_dir = SOPT_GET; @@ -649,33 +649,34 @@ rack_swap_beta_values(struct tcp_rack *rack, uint8_t flex8) failed = 3; goto out; } - old.beta = opt.val; + old_beta = opt.val; opt.name = CC_NEWRENO_BETA_ECN; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 4; goto out; } - old.beta_ecn = opt.val; + old_beta_ecn = opt.val; /* Now lets set in the values we have stored */ sopt.sopt_dir = SOPT_SET; opt.name = CC_NEWRENO_BETA; - opt.val = rack->r_ctl.rc_saved_beta.beta; + opt.val = rack->r_ctl.rc_saved_beta; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 5; goto out; } opt.name = CC_NEWRENO_BETA_ECN; - opt.val = rack->r_ctl.rc_saved_beta.beta_ecn; + opt.val = rack->r_ctl.rc_saved_beta_ecn; error = CC_ALGO(tp)->ctl_output(&tp->t_ccv, &sopt, &opt); if (error) { failed = 6; goto out; } /* Save off the values for restoral */ - memcpy(&rack->r_ctl.rc_saved_beta, &old, sizeof(struct newreno)); + rack->r_ctl.rc_saved_beta = old_beta; + rack->r_ctl.rc_saved_beta_ecn = old_beta_ecn; out: if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; @@ -688,8 +689,8 @@ out: log.u_bbr.flex1 = ptr->beta; log.u_bbr.flex2 = ptr->beta_ecn; log.u_bbr.flex3 = ptr->newreno_flags; - log.u_bbr.flex4 = rack->r_ctl.rc_saved_beta.beta; - log.u_bbr.flex5 = rack->r_ctl.rc_saved_beta.beta_ecn; + log.u_bbr.flex4 = rack->r_ctl.rc_saved_beta; + log.u_bbr.flex5 = rack->r_ctl.rc_saved_beta_ecn; log.u_bbr.flex6 = failed; log.u_bbr.flex7 = rack->gp_ready; log.u_bbr.flex7 <<= 1; @@ -14608,7 +14609,6 @@ rack_init(struct tcpcb *tp, void **ptr) rack->r_ctl.rc_split_limit = V_tcp_map_split_limit; /* We want abe like behavior as well */ - rack->r_ctl.rc_saved_beta.newreno_flags |= CC_NEWRENO_BETA_ECN_ENABLED; rack->r_ctl.rc_reorder_fade = rack_reorder_fade; rack->rc_allow_data_af_clo = rack_ignore_data_after_close; rack->r_ctl.rc_tlp_threshold = rack_tlp_thresh; @@ -14648,13 +14648,13 @@ rack_init(struct tcpcb *tp, void **ptr) rack->r_ctl.max_reduction = rack_max_reduce; rack->rc_force_max_seg = 0; TAILQ_INIT(&rack->r_ctl.opt_list); - rack->r_ctl.rc_saved_beta.beta = V_newreno_beta_ecn; - rack->r_ctl.rc_saved_beta.beta_ecn = V_newreno_beta_ecn; + rack->r_ctl.rc_saved_beta = V_newreno_beta_ecn; + rack->r_ctl.rc_saved_beta_ecn = V_newreno_beta_ecn; if (rack_hibeta_setting) { rack->rack_hibeta = 1; if ((rack_hibeta_setting >= 50) && (rack_hibeta_setting <= 100)) { - rack->r_ctl.rc_saved_beta.beta = rack_hibeta_setting; + rack->r_ctl.rc_saved_beta = rack_hibeta_setting; rack->r_ctl.saved_hibeta = rack_hibeta_setting; } } else { @@ -22964,7 +22964,7 @@ rack_process_option(struct tcpcb *tp, struct tcp_rack *rack, int sopt_name, rack->r_ctl.saved_hibeta = optval; if (rack->rc_pacing_cc_set) rack_undo_cc_pacing(rack); - rack->r_ctl.rc_saved_beta.beta = optval; + rack->r_ctl.rc_saved_beta = optval; } if (rack->rc_pacing_cc_set == 0) rack_set_cc_pacing(rack); @@ -23015,8 +23015,7 @@ rack_process_option(struct tcpcb *tp, struct tcp_rack *rack, int sopt_name, * Not pacing yet so set it into our local * rack pcb storage. */ - rack->r_ctl.rc_saved_beta.beta_ecn = optval; - rack->r_ctl.rc_saved_beta.newreno_flags = CC_NEWRENO_BETA_ECN_ENABLED; + rack->r_ctl.rc_saved_beta_ecn = optval; } break; case TCP_DEFER_OPTIONS: @@ -23742,7 +23741,7 @@ rack_inherit(struct tcpcb *tp, struct inpcb *parent) if (src->rack_hibeta != dest->rack_hibeta) { cnt++; if (src->rack_hibeta) { - dest->r_ctl.rc_saved_beta.beta = src->r_ctl.rc_saved_beta.beta; + dest->r_ctl.rc_saved_beta = src->r_ctl.rc_saved_beta; dest->rack_hibeta = 1; } else { dest->rack_hibeta = 0; @@ -23754,12 +23753,8 @@ rack_inherit(struct tcpcb *tp, struct inpcb *parent) cnt++; } /* TCP_RACK_PACING_BETA_ECN */ - if (dest->r_ctl.rc_saved_beta.beta_ecn != src->r_ctl.rc_saved_beta.beta_ecn) { - dest->r_ctl.rc_saved_beta.beta_ecn = src->r_ctl.rc_saved_beta.beta_ecn; - cnt++; - } - if (dest->r_ctl.rc_saved_beta.newreno_flags != src->r_ctl.rc_saved_beta.newreno_flags) { - dest->r_ctl.rc_saved_beta.newreno_flags = src->r_ctl.rc_saved_beta.newreno_flags; + if (dest->r_ctl.rc_saved_beta_ecn != src->r_ctl.rc_saved_beta_ecn) { + dest->r_ctl.rc_saved_beta_ecn = src->r_ctl.rc_saved_beta_ecn; cnt++; } /* We do not do TCP_DEFER_OPTIONS */ @@ -24437,7 +24432,7 @@ rack_get_sockopt(struct tcpcb *tp, struct sockopt *sopt) if (strcmp(tp->t_cc->name, CCALGONAME_NEWRENO) != 0) error = EINVAL; else if (rack->rc_pacing_cc_set == 0) - optval = rack->r_ctl.rc_saved_beta.beta; + optval = rack->r_ctl.rc_saved_beta; else { /* * Reach out into the CC data and report back what @@ -24461,7 +24456,7 @@ rack_get_sockopt(struct tcpcb *tp, struct sockopt *sopt) if (strcmp(tp->t_cc->name, CCALGONAME_NEWRENO) != 0) error = EINVAL; else if (rack->rc_pacing_cc_set == 0) - optval = rack->r_ctl.rc_saved_beta.beta_ecn; + optval = rack->r_ctl.rc_saved_beta_ecn; else { /* * Reach out into the CC data and report back what diff --git a/sys/netinet/tcp_stacks/tcp_rack.h b/sys/netinet/tcp_stacks/tcp_rack.h index a6cb0a81bb81..4374594a1d82 100644 --- a/sys/netinet/tcp_stacks/tcp_rack.h +++ b/sys/netinet/tcp_stacks/tcp_rack.h @@ -542,9 +542,10 @@ struct rack_control { uint32_t last_rcv_tstmp_for_rtt; uint32_t last_time_of_arm_rcv; uint32_t rto_ssthresh; - struct newreno rc_saved_beta; /* - * For newreno cc: - * rc_saved_cc are the values we have had + uint32_t rc_saved_beta; + uint32_t rc_saved_beta_ecn; /* + * For newreno cc: rc_saved_beta and + * rc_saved_beta_ecn are the values we have had * set by the user, if pacing is not happening * (i.e. its early and we have not turned on yet * or it was turned off). The minute pacing From nobody Mon Mar 31 11:16:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR7qM0xSbz5rsR9; Mon, 31 Mar 2025 11:16: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 4ZR7qL6Fscz3S37; Mon, 31 Mar 2025 11:16:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gg/u1//4UwmDNeUtKJlKlrfMcQ8FzK/4kw1tGwVEyV4=; b=EQP5m5c5T9/06fJs4rapOm/joGSIVavvnvi1z9cqT3mNtzg/J+WxtjUb9cXzBKSSZeC8/f +PCGju/wXpTjWe2zh8s1unDtgB6/ezjx7efI07C3ZtUTiu5Sgh3vZJNw1X3nJrmyCuECWf sQHLrkcpEzE0NvoOXYr+VW8WeDOEJxhsyrqCnymGR4pdRfwukidd8rSdvZfoxeEYAb7L7R SJi0o1fIGEf5OUETMs5j7FZis8EpcJLETTkDQ5VLt4AIPyJnOkQOq55QQSXRpQmBYOVuuw IuGDBzVSeXECx3I3REugq23hEyUBkZ/Jcue3FNR3iD81kexF/4kGQLPIQU3/EA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743419774; a=rsa-sha256; cv=none; b=qv5XUTlmxBnhX9CHE6w3B0YZVkWRufnraINQtXAa0vr1NqQxNOBlnKoPkCP99WrFs425nL fcd9LgiEQz29hK1PLte16kn5XEvorF6r2AyvkpOH+BT3FS6AokEyKr27qudsKfbDbip9iz nZXsFHQhwmgrVtPCMHWZOklJNGBmIONCx6EdM8fFkjRoPeopBW0k0ERcRBXtIdjY5jpBKU Bw63WFVX4ykD4bLsKtt/yg1ytgpN5enyJLzD5uPVJXJ1x3YX8AeNytG8lXLdaa8LVowsXg l1S+Es5vm06TIe2YCF+3b7X+g82q7cE9ZDOFaSJnqOpBXlyJ1QyBeiqEZu2Gqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419774; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gg/u1//4UwmDNeUtKJlKlrfMcQ8FzK/4kw1tGwVEyV4=; b=vFdBvIEZozoyb6eBST8ubzQLMUrBNcH7/MFw6vi/OHsahGjraybEtno2edUa9Vp0F9MHm7 lhzto/iAubumpR6AjkE5A+n8B9HUWsg49MXx6kdBwlWW258B5ruDfmUyHgsfQmdb+ExqbO XgsjHtth7c9gM1QjBIOdacU4hVsvT10M/Zeo1HaomIybjrYHnqZCiIEhpsaEEAOlB5NZ6f 48Y2G9h0zFoGMCdW+wsrVcp6hGdIc5nV5Ebgddam80X7mrAS95WaI8PPnomuKSrhzsalfK HsxBNtxYxI9gYIcs+3QG054fOrEfhano8YTTihQJmQ1x+lKq2u5zlyvWhwrcwQ== 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 4ZR7qL5ZHzzk9d; Mon, 31 Mar 2025 11:16: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 52VBGEhf023047; Mon, 31 Mar 2025 11:16:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VBGEfT023044; Mon, 31 Mar 2025 11:16:14 GMT (envelope-from git) Date: Mon, 31 Mar 2025 11:16:14 GMT Message-Id: <202503311116.52VBGEfT023044@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: a319ba694538 - main - hyperv/storvsc: Fix busdma constraints List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a319ba694538a38429115aaaf1d4b3946ea3a8b5 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a319ba694538a38429115aaaf1d4b3946ea3a8b5 commit a319ba694538a38429115aaaf1d4b3946ea3a8b5 Author: Mark Johnston AuthorDate: 2025-03-31 10:45:14 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 11:14:42 +0000 hyperv/storvsc: Fix busdma constraints - The BUS_DMA_KEEP_PG_OFFSET flag is needed, since storvsc_xferbuf_prepare() assumes that only the first segment may have a non-zero offset, and that all following segments are page-sized and -aligned. - storvsc_xferbuf_prepare() handles 64-bit bus addresses, so avoid unneeded bouncing on i386. PR: 285681 Reported by: dim Tested by: dim, whu MFC after: 2 weeks --- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c index eeec169baac5..cc3e7262e8d7 100644 --- a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c +++ b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c @@ -954,13 +954,18 @@ storvsc_init_requests(device_t dev) bus_get_dma_tag(dev), /* parent */ 1, /* alignment */ PAGE_SIZE, /* boundary */ +#if defined(__i386__) && defined(PAE) + BUS_SPACE_MAXADDR_48BIT, /* lowaddr */ + BUS_SPACE_MAXADDR_48BIT, /* highaddr */ +#else BUS_SPACE_MAXADDR, /* lowaddr */ BUS_SPACE_MAXADDR, /* highaddr */ +#endif NULL, NULL, /* filter, filterarg */ STORVSC_DATA_SIZE_MAX, /* maxsize */ STORVSC_DATA_SEGCNT_MAX, /* nsegments */ STORVSC_DATA_SEGSZ_MAX, /* maxsegsize */ - 0, /* flags */ + BUS_DMA_KEEP_PG_OFFSET, /* flags */ NULL, /* lockfunc */ NULL, /* lockfuncarg */ &sc->storvsc_req_dtag); From nobody Mon Mar 31 11:16:15 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR7qN3ySxz5rsNl; Mon, 31 Mar 2025 11:16: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 4ZR7qM6JD4z3SST; Mon, 31 Mar 2025 11:16:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419775; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=spnyCiPvkAH1Om8lr/6lENMMXAA5EySyYqJ11e+m7eE=; b=IUxbBIAUUFcZChoHeVvXPft2bCBiBep9/dEASqJ82Q9wxn77N7fp+6JFOV627vRMVB0EL7 m8ugmLK/9pA1YDJYUX5XOKVMuTdpO5eKOJxKfm6ntWnV4/biMfQHzaPKsiRRPJZYEywS1a AmcKsDxxRaq30lDuz0KJNbdAeExhX1X0d7s5FNCNVaamsXDZtq8W3gBoOVVWxfqmQVZFcf 0GCxMBDVaWdPl+HBRV3c41ypW7gcOdS9UlCIPH4ALJwF+khT7BTa1RULKyMRKcZ5vI1eWN NgZMk4POZYiipIpcOznrTvtVzfbkdrIln8QMEflo/3QXjiKCqc6UJyB9Axujfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743419775; a=rsa-sha256; cv=none; b=Ac1+mUeEPUbLgw7/kxfAsIqm1mV3b/f/ZXjubxWPQjBaFxJNYOQ+glA0F8Z6nQo6Ag1n/h tDZSbNylihPR2rVYdZSINf/k/E5IGpsA0zzHhNam+lMPoKLxW8/uc3L81x/BffuiplHuBN skj+EbzQCg3HPUmNNC885fu3b5A6gh7yy5Yf7tKakuLiCFiN+aDp9SC4spcZrS2ncsKSVA mJOqgaiXD2EwyeibMnPpY1PlnB+JfuUARXXMRs1K+6VZ9LFU6798Kp46wiJ1dphflIohll CrllFFXQzq2hmwv6RXcCbbWOSjy7wD+kReZLG370vJWVmI5Mm014IVJlzjAz1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743419775; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=spnyCiPvkAH1Om8lr/6lENMMXAA5EySyYqJ11e+m7eE=; b=fZXVwL6Q1Tzpfr+GeXf8+HAGWv2/2+1x0CGH/+sYv4aRAhmojwT3siLfPQY03sEqEnbQDB YQVVJsGxEdGkb2UDcUrK7Ho1cv8j8MQk33X32i5gmSBxKqLqFEFIQSKmbf9tFjs0lLumAM 4nxosby/DOlTh2bbAWnx8C405lySjvSrHD6VgJ6mOGWreZ1Yhj4d7yqNz83M0aYJLRydCy U5PdCm+Z6btO5WWAjnfmvXa4Q9EYbYjqxLlRY8CZnsBrb3rUZczxjJ00HR6lXk8bxlmF/n IVrIBobmONUomfnrRixo1kRMJdM2c5L0l5bdY7ST/59vGMTsHQ9Hq7mE5dn1Xg== 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 4ZR7qM5vnhzk6m; Mon, 31 Mar 2025 11:16: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 52VBGFw4023079; Mon, 31 Mar 2025 11:16:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VBGFao023076; Mon, 31 Mar 2025 11:16:15 GMT (envelope-from git) Date: Mon, 31 Mar 2025 11:16:15 GMT Message-Id: <202503311116.52VBGFao023076@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: 54a3920dc9b3 - main - hyperv/storvsc: Avoid conditional asserts in storvsc_xferbuf_prepare() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 commit 54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737 Author: Mark Johnston AuthorDate: 2025-03-31 10:45:55 +0000 Commit: Mark Johnston CommitDate: 2025-03-31 11:15:45 +0000 hyperv/storvsc: Avoid conditional asserts in storvsc_xferbuf_prepare() whu@ cannot reproduce the assertion failure which led to these ifdefs being added in the first place, and since they appear wrong, i.e., the assertions ought to apply to all platforms, let's remove them. This reverts commits 0af5a0cd2788efce9f444f4f781357d317bb0bb1 and 6f7b1310b6fe36f9bb653d3e97bc257adced3a2b. PR: 285681 Tested by: whu MFC after: 2 weeks --- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c index cc3e7262e8d7..29a88e76a579 100644 --- a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c +++ b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c @@ -1833,7 +1833,6 @@ storvsc_xferbuf_prepare(void *arg, bus_dma_segment_t *segs, int nsegs, int error for (i = 0; i < nsegs; i++) { #ifdef INVARIANTS -#if !defined(__aarch64__) if (nsegs > 1) { if (i == 0) { KASSERT((segs[i].ds_addr & PAGE_MASK) + @@ -1853,7 +1852,6 @@ storvsc_xferbuf_prepare(void *arg, bus_dma_segment_t *segs, int nsegs, int error segs[i].ds_len)); } } -#endif #endif prplist->gpa_page[i] = atop(segs[i].ds_addr); } From nobody Mon Mar 31 12:43:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZR9ld2WNXz5s05k; Mon, 31 Mar 2025 12:43: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 4ZR9ld2C8lz3FrJ; Mon, 31 Mar 2025 12:43:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743424989; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ybQY0LdhLmeCzBtAGr7owkQwUQJOqgbwPrMhY1iQ9SE=; b=fhvmxdDiQ0ZsFvksFxEWwzmSAcQTuqrbWzGjeGlFM6vRAoVwytTAK10UPNKtyD2431VZY1 6lXUoQ2RC9QO8SqWZiL30aqSDbnWdC9gwUu+AVIrvdSdq70m/X4Rs0oXeyimoZMJQoJU5Y YqJ/G9rlRwXCuJYWLRzLTFxWEdRgC2lIQGReG9Y9vvBpydbiGsMMg6GfmfEu5M7pfiJmJw stFjP6bDIFnJRG/WI69w92JEIJ7vgS+Cu8UHPnkcYWqZ+CcybLKZmDxlSxvBWsiyM3tL29 /OeaEpcjkeMFnWY1t7/dv5VG7llT0hzPsMAefDVyDa8xT7eKGmJvZ+Xzq8kcZg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743424989; a=rsa-sha256; cv=none; b=s3Zl7WVOZcFs6qkFUqvRPeYuQa1pxI0xrrh0Aj8fDf16keBa3avh7PbWcVMrlgvIo3N/jk 3z6UOOg+SqdujRexVuOmDVl0A7RQwTPm3o31OPpWVUU4guSDj5cwBsgsVw1gP1OIAVvESp ykN3eR0O21ZYLi38q39CKD26aMcFFI56drLAdEaVHaJdRBs+mC3mlN6BCyarPT4oIuxPHk xbGvA2kfigNPyMvs4PKzxaMLb0bBt1jH7Pam/FeTib26OQfzFPfhsQRvPwSfWBqKeOCziq mvFPY50mWRCRsRzcwDFj/dM6XA79zG4wTl9gafscxFSiI/sK5BUHi/vo1ZXKtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743424989; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ybQY0LdhLmeCzBtAGr7owkQwUQJOqgbwPrMhY1iQ9SE=; b=Q8O3HmMsjDw0Tq8ZXttebT40lymj+yfvAZQ6JLo0k5fuKsm/HzDBmAtxPLhprM8y5YK/Jl Zp/ZrBeZSzHANye8gif6nNu7uAz5SBtGQhlZB/9bkqtktt+hxv67px72vlZM5BiyFbZgWo hJQjR7Lpou3XM49XOrYdm7p5zPXuKJHdmRIbzCXXzsJjJy2RXyMioWH8z2ms/UDQ1V/Oju 3WKvmKVig4ZDDo2BY4ho4bFORIQMzf/Bnx73BX0ovUyh3JpqrFmYE9/CY12k8x2IDObhqm 49I4+CU5FZqOgyH+JQdpU6WEQ+7Rh/jl01b7tnUWQuBiLAaHZ0/R+MKl1rl7Rg== 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 4ZR9ld1mTrzm71; Mon, 31 Mar 2025 12:43: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 52VCh9br088859; Mon, 31 Mar 2025 12:43:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VCh9PU088854; Mon, 31 Mar 2025 12:43:09 GMT (envelope-from git) Date: Mon, 31 Mar 2025 12:43:09 GMT Message-Id: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2ad0f7e91582dde5475ceb1a1942930549e5c628 Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 Author: Tom Jones AuthorDate: 2025-03-31 12:24:15 +0000 Commit: Tom Jones CommitDate: 2025-03-31 12:42:31 +0000 Import iwx as ported from OpenBSD by Future Crew. This driver originates from OpenBSD and was ported to FreeBSD by Future Crew LLC who kindly provided a source release. iwx supports many recent Intel WiFi card and this driver should support running these cards with legacy, HT and VHT rates. There are some issues remaining in the port, but at this point wider testing is sought. To avoid breaking deployed WiFi configurations iwx probes with a lower priority than iwlwifi. This can be changed by blocking iwlwifi with devmatch. Reviewed by: adrian Obtained from: Future Crew LLC Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49259 --- sys/dev/iwx/if_iwx.c | 11016 +++++++++++++++++++++++++++++++++++++++++++ sys/dev/iwx/if_iwx_debug.c | 321 ++ sys/dev/iwx/if_iwx_debug.h | 265 ++ sys/dev/iwx/if_iwxreg.h | 7922 +++++++++++++++++++++++++++++++ sys/dev/iwx/if_iwxvar.h | 924 ++++ sys/modules/Makefile | 2 + sys/modules/iwx/Makefile | 10 + 7 files changed, 20460 insertions(+) diff --git a/sys/dev/iwx/if_iwx.c b/sys/dev/iwx/if_iwx.c new file mode 100644 index 000000000000..9e5d5a9569d5 --- /dev/null +++ b/sys/dev/iwx/if_iwx.c @@ -0,0 +1,11016 @@ +/*- + * SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) AND ISC + */ + +/* $OpenBSD: if_iwx.c,v 1.175 2023/07/05 15:07:28 stsp Exp $ */ + +/* + * + * Copyright (c) 2025 The FreeBSD Foundation + * + * Portions of this software were developed by Tom Jones + * under sponsorship from the FreeBSD Foundation. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +/*- + * Copyright (c) 2024 Future Crew, LLC + * Author: Mikhail Pchelin + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Copyright (c) 2014, 2016 genua gmbh + * Author: Stefan Sperling + * Copyright (c) 2014 Fixup Software Ltd. + * Copyright (c) 2017, 2019, 2020 Stefan Sperling + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*- + * Based on BSD-licensed source modules in the Linux iwlwifi driver, + * which were used as the reference documentation for this implementation. + * + ****************************************************************************** + * + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright(c) 2017 Intel Deutschland GmbH + * Copyright(c) 2018 - 2019 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * BSD LICENSE + * + * Copyright(c) 2017 Intel Deutschland GmbH + * Copyright(c) 2018 - 2019 Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT + * OWNER 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. + * + ***************************************************************************** + */ + +/*- + * Copyright (c) 2007-2010 Damien Bergamini + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +int iwx_himark = 224; +int iwx_lomark = 192; + +#define IWX_FBSD_RSP_V3 3 +#define IWX_FBSD_RSP_V4 4 + +#define DEVNAME(_sc) (device_get_nameunit((_sc)->sc_dev)) +#define IC2IFP(ic) (((struct ieee80211vap *)TAILQ_FIRST(&(ic)->ic_vaps))->iv_ifp) + +#define le16_to_cpup(_a_) (le16toh(*(const uint16_t *)(_a_))) +#define le32_to_cpup(_a_) (le32toh(*(const uint32_t *)(_a_))) + +#include +#include + +#include + +#define PCI_VENDOR_INTEL 0x8086 +#define PCI_PRODUCT_INTEL_WL_22500_1 0x2723 /* Wi-Fi 6 AX200 */ +#define PCI_PRODUCT_INTEL_WL_22500_2 0x02f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_3 0xa0f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_4 0x34f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_5 0x06f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_6 0x43f0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_7 0x3df0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_8 0x4df0 /* Wi-Fi 6 AX201 */ +#define PCI_PRODUCT_INTEL_WL_22500_9 0x2725 /* Wi-Fi 6 AX210 */ +#define PCI_PRODUCT_INTEL_WL_22500_10 0x2726 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_11 0x51f0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_12 0x7a70 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_13 0x7af0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_14 0x7e40 /* Wi-Fi 6 AX210 */ +#define PCI_PRODUCT_INTEL_WL_22500_15 0x7f70 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_16 0x54f0 /* Wi-Fi 6 AX211 */ +#define PCI_PRODUCT_INTEL_WL_22500_17 0x51f1 /* Wi-Fi 6 AX211 */ + +static const struct iwx_devices { + uint16_t device; + char *name; +} iwx_devices[] = { + { PCI_PRODUCT_INTEL_WL_22500_1, "Wi-Fi 6 AX200" }, + { PCI_PRODUCT_INTEL_WL_22500_2, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_3, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_4, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_5, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_6, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_7, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_8, "Wi-Fi 6 AX201" }, + { PCI_PRODUCT_INTEL_WL_22500_9, "Wi-Fi 6 AX210" }, + { PCI_PRODUCT_INTEL_WL_22500_10, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_11, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_12, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_13, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_14, "Wi-Fi 6 AX210" }, + { PCI_PRODUCT_INTEL_WL_22500_15, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_16, "Wi-Fi 6 AX211" }, + { PCI_PRODUCT_INTEL_WL_22500_17, "Wi-Fi 6 AX211" }, +}; + +static const uint8_t iwx_nvm_channels_8000[] = { + /* 2.4 GHz */ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 5 GHz */ + 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, + 149, 153, 157, 161, 165, 169, 173, 177, 181 +}; + +static const uint8_t iwx_nvm_channels_uhb[] = { + /* 2.4 GHz */ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 5 GHz */ + 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, + 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, + 149, 153, 157, 161, 165, 169, 173, 177, 181, + /* 6-7 GHz */ + 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, + 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, + 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, + 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 233 +}; + +#define IWX_NUM_2GHZ_CHANNELS 14 +#define IWX_NUM_5GHZ_CHANNELS 37 + +const struct iwx_rate { + uint16_t rate; + uint8_t plcp; + uint8_t ht_plcp; +} iwx_rates[] = { + /* Legacy */ /* HT */ + { 2, IWX_RATE_1M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 4, IWX_RATE_2M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 11, IWX_RATE_5M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 22, IWX_RATE_11M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 12, IWX_RATE_6M_PLCP, IWX_RATE_HT_SISO_MCS_0_PLCP }, + { 18, IWX_RATE_9M_PLCP, IWX_RATE_HT_SISO_MCS_INV_PLCP }, + { 24, IWX_RATE_12M_PLCP, IWX_RATE_HT_SISO_MCS_1_PLCP }, + { 26, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_8_PLCP }, + { 36, IWX_RATE_18M_PLCP, IWX_RATE_HT_SISO_MCS_2_PLCP }, + { 48, IWX_RATE_24M_PLCP, IWX_RATE_HT_SISO_MCS_3_PLCP }, + { 52, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_9_PLCP }, + { 72, IWX_RATE_36M_PLCP, IWX_RATE_HT_SISO_MCS_4_PLCP }, + { 78, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_10_PLCP }, + { 96, IWX_RATE_48M_PLCP, IWX_RATE_HT_SISO_MCS_5_PLCP }, + { 104, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_11_PLCP }, + { 108, IWX_RATE_54M_PLCP, IWX_RATE_HT_SISO_MCS_6_PLCP }, + { 128, IWX_RATE_INVM_PLCP, IWX_RATE_HT_SISO_MCS_7_PLCP }, + { 156, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_12_PLCP }, + { 208, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_13_PLCP }, + { 234, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_14_PLCP }, + { 260, IWX_RATE_INVM_PLCP, IWX_RATE_HT_MIMO2_MCS_15_PLCP }, +}; +#define IWX_RIDX_CCK 0 +#define IWX_RIDX_OFDM 4 +#define IWX_RIDX_MAX (nitems(iwx_rates)-1) +#define IWX_RIDX_IS_CCK(_i_) ((_i_) < IWX_RIDX_OFDM) +#define IWX_RIDX_IS_OFDM(_i_) ((_i_) >= IWX_RIDX_OFDM) +#define IWX_RVAL_IS_OFDM(_i_) ((_i_) >= 12 && (_i_) != 22) + +/* Convert an MCS index into an iwx_rates[] index. */ +const int iwx_mcs2ridx[] = { + IWX_RATE_MCS_0_INDEX, + IWX_RATE_MCS_1_INDEX, + IWX_RATE_MCS_2_INDEX, + IWX_RATE_MCS_3_INDEX, + IWX_RATE_MCS_4_INDEX, + IWX_RATE_MCS_5_INDEX, + IWX_RATE_MCS_6_INDEX, + IWX_RATE_MCS_7_INDEX, + IWX_RATE_MCS_8_INDEX, + IWX_RATE_MCS_9_INDEX, + IWX_RATE_MCS_10_INDEX, + IWX_RATE_MCS_11_INDEX, + IWX_RATE_MCS_12_INDEX, + IWX_RATE_MCS_13_INDEX, + IWX_RATE_MCS_14_INDEX, + IWX_RATE_MCS_15_INDEX, +}; + +static uint8_t iwx_lookup_cmd_ver(struct iwx_softc *, uint8_t, uint8_t); +static uint8_t iwx_lookup_notif_ver(struct iwx_softc *, uint8_t, uint8_t); +static int iwx_store_cscheme(struct iwx_softc *, const uint8_t *, size_t); +#if 0 +static int iwx_alloc_fw_monitor_block(struct iwx_softc *, uint8_t, uint8_t); +static int iwx_alloc_fw_monitor(struct iwx_softc *, uint8_t); +#endif +static int iwx_apply_debug_destination(struct iwx_softc *); +static void iwx_set_ltr(struct iwx_softc *); +static int iwx_ctxt_info_init(struct iwx_softc *, const struct iwx_fw_sects *); +static int iwx_ctxt_info_gen3_init(struct iwx_softc *, + const struct iwx_fw_sects *); +static void iwx_ctxt_info_free_fw_img(struct iwx_softc *); +static void iwx_ctxt_info_free_paging(struct iwx_softc *); +static int iwx_init_fw_sec(struct iwx_softc *, const struct iwx_fw_sects *, + struct iwx_context_info_dram *); +static void iwx_fw_version_str(char *, size_t, uint32_t, uint32_t, uint32_t); +static int iwx_firmware_store_section(struct iwx_softc *, enum iwx_ucode_type, + const uint8_t *, size_t); +static int iwx_set_default_calib(struct iwx_softc *, const void *); +static void iwx_fw_info_free(struct iwx_fw_info *); +static int iwx_read_firmware(struct iwx_softc *); +static uint32_t iwx_prph_addr_mask(struct iwx_softc *); +static uint32_t iwx_read_prph_unlocked(struct iwx_softc *, uint32_t); +static uint32_t iwx_read_prph(struct iwx_softc *, uint32_t); +static void iwx_write_prph_unlocked(struct iwx_softc *, uint32_t, uint32_t); +static void iwx_write_prph(struct iwx_softc *, uint32_t, uint32_t); +static uint32_t iwx_read_umac_prph(struct iwx_softc *, uint32_t); +static void iwx_write_umac_prph(struct iwx_softc *, uint32_t, uint32_t); +static int iwx_read_mem(struct iwx_softc *, uint32_t, void *, int); +static int iwx_poll_bit(struct iwx_softc *, int, uint32_t, uint32_t, int); +static int iwx_nic_lock(struct iwx_softc *); +static void iwx_nic_assert_locked(struct iwx_softc *); +static void iwx_nic_unlock(struct iwx_softc *); +static int iwx_set_bits_mask_prph(struct iwx_softc *, uint32_t, uint32_t, + uint32_t); +static int iwx_set_bits_prph(struct iwx_softc *, uint32_t, uint32_t); +static int iwx_clear_bits_prph(struct iwx_softc *, uint32_t, uint32_t); +static void iwx_dma_map_addr(void *, bus_dma_segment_t *, int, int); +static int iwx_dma_contig_alloc(bus_dma_tag_t, struct iwx_dma_info *, + bus_size_t, bus_size_t); +static void iwx_dma_contig_free(struct iwx_dma_info *); +static int iwx_alloc_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static void iwx_disable_rx_dma(struct iwx_softc *); +static void iwx_reset_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static void iwx_free_rx_ring(struct iwx_softc *, struct iwx_rx_ring *); +static int iwx_alloc_tx_ring(struct iwx_softc *, struct iwx_tx_ring *, int); +static void iwx_reset_tx_ring(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_free_tx_ring(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_enable_rfkill_int(struct iwx_softc *); +static int iwx_check_rfkill(struct iwx_softc *); +static void iwx_enable_interrupts(struct iwx_softc *); +static void iwx_enable_fwload_interrupt(struct iwx_softc *); +#if 0 +static void iwx_restore_interrupts(struct iwx_softc *); +#endif +static void iwx_disable_interrupts(struct iwx_softc *); +static void iwx_ict_reset(struct iwx_softc *); +static int iwx_set_hw_ready(struct iwx_softc *); +static int iwx_prepare_card_hw(struct iwx_softc *); +static int iwx_force_power_gating(struct iwx_softc *); +static void iwx_apm_config(struct iwx_softc *); +static int iwx_apm_init(struct iwx_softc *); +static void iwx_apm_stop(struct iwx_softc *); +static int iwx_allow_mcast(struct iwx_softc *); +static void iwx_init_msix_hw(struct iwx_softc *); +static void iwx_conf_msix_hw(struct iwx_softc *, int); +static int iwx_clear_persistence_bit(struct iwx_softc *); +static int iwx_start_hw(struct iwx_softc *); +static void iwx_stop_device(struct iwx_softc *); +static void iwx_nic_config(struct iwx_softc *); +static int iwx_nic_rx_init(struct iwx_softc *); +static int iwx_nic_init(struct iwx_softc *); +static int iwx_enable_txq(struct iwx_softc *, int, int, int, int); +static int iwx_disable_txq(struct iwx_softc *sc, int, int, uint8_t); +static void iwx_post_alive(struct iwx_softc *); +static int iwx_schedule_session_protection(struct iwx_softc *, + struct iwx_node *, uint32_t); +static void iwx_unprotect_session(struct iwx_softc *, struct iwx_node *); +static void iwx_init_channel_map(struct ieee80211com *, int, int *, + struct ieee80211_channel[]); +static int iwx_mimo_enabled(struct iwx_softc *); +static void iwx_init_reorder_buffer(struct iwx_reorder_buffer *, uint16_t, + uint16_t); +static void iwx_clear_reorder_buffer(struct iwx_softc *, struct iwx_rxba_data *); +static void iwx_sta_rx_agg(struct iwx_softc *, struct ieee80211_node *, uint8_t, + uint16_t, uint16_t, int, int); +static void iwx_sta_tx_agg_start(struct iwx_softc *, + struct ieee80211_node *, uint8_t); +static void iwx_ba_rx_task(void *, int); +static void iwx_ba_tx_task(void *, int); +static void iwx_set_mac_addr_from_csr(struct iwx_softc *, struct iwx_nvm_data *); +static int iwx_is_valid_mac_addr(const uint8_t *); +static void iwx_flip_hw_address(uint32_t, uint32_t, uint8_t *); +static int iwx_nvm_get(struct iwx_softc *); +static int iwx_load_firmware(struct iwx_softc *); +static int iwx_start_fw(struct iwx_softc *); +static int iwx_pnvm_handle_section(struct iwx_softc *, const uint8_t *, size_t); +static int iwx_pnvm_parse(struct iwx_softc *, const uint8_t *, size_t); +static void iwx_ctxt_info_gen3_set_pnvm(struct iwx_softc *); +static int iwx_load_pnvm(struct iwx_softc *); +static int iwx_send_tx_ant_cfg(struct iwx_softc *, uint8_t); +static int iwx_send_phy_cfg_cmd(struct iwx_softc *); +static int iwx_load_ucode_wait_alive(struct iwx_softc *); +static int iwx_send_dqa_cmd(struct iwx_softc *); +static int iwx_run_init_mvm_ucode(struct iwx_softc *, int); +static int iwx_config_ltr(struct iwx_softc *); +static void iwx_update_rx_desc(struct iwx_softc *, struct iwx_rx_ring *, int, bus_dma_segment_t *); +static int iwx_rx_addbuf(struct iwx_softc *, int, int); +static int iwx_rxmq_get_signal_strength(struct iwx_softc *, struct iwx_rx_mpdu_desc *); +static void iwx_rx_rx_phy_cmd(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static int iwx_get_noise(const struct iwx_statistics_rx_non_phy *); +static int iwx_rx_hwdecrypt(struct iwx_softc *, struct mbuf *, uint32_t); +#if 0 +int iwx_ccmp_decap(struct iwx_softc *, struct mbuf *, + struct ieee80211_node *, struct ieee80211_rxinfo *); +#endif +static void iwx_rx_frame(struct iwx_softc *, struct mbuf *, int, uint32_t, + int, int, uint32_t, uint8_t); +static void iwx_clear_tx_desc(struct iwx_softc *, struct iwx_tx_ring *, int); +static void iwx_txd_done(struct iwx_softc *, struct iwx_tx_ring *, + struct iwx_tx_data *); +static void iwx_txq_advance(struct iwx_softc *, struct iwx_tx_ring *, uint16_t); +static void iwx_rx_tx_cmd(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static void iwx_clear_oactive(struct iwx_softc *, struct iwx_tx_ring *); +static void iwx_rx_bmiss(struct iwx_softc *, struct iwx_rx_packet *, + struct iwx_rx_data *); +static int iwx_binding_cmd(struct iwx_softc *, struct iwx_node *, uint32_t); +static uint8_t iwx_get_vht_ctrl_pos(struct ieee80211com *, struct ieee80211_channel *); +static int iwx_phy_ctxt_cmd_uhb_v3_v4(struct iwx_softc *, + struct iwx_phy_ctxt *, uint8_t, uint8_t, uint32_t, uint8_t, uint8_t, int); +#if 0 +static int iwx_phy_ctxt_cmd_v3_v4(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t, uint32_t, uint8_t, uint8_t, int); +#endif +static int iwx_phy_ctxt_cmd(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t, uint32_t, uint32_t, uint8_t, uint8_t); +static int iwx_send_cmd(struct iwx_softc *, struct iwx_host_cmd *); +static int iwx_send_cmd_pdu(struct iwx_softc *, uint32_t, uint32_t, uint16_t, + const void *); +static int iwx_send_cmd_status(struct iwx_softc *, struct iwx_host_cmd *, + uint32_t *); +static int iwx_send_cmd_pdu_status(struct iwx_softc *, uint32_t, uint16_t, + const void *, uint32_t *); +static void iwx_free_resp(struct iwx_softc *, struct iwx_host_cmd *); +static void iwx_cmd_done(struct iwx_softc *, int, int, int); +static uint32_t iwx_fw_rateidx_ofdm(uint8_t); +static uint32_t iwx_fw_rateidx_cck(uint8_t); +static const struct iwx_rate *iwx_tx_fill_cmd(struct iwx_softc *, + struct iwx_node *, struct ieee80211_frame *, uint16_t *, uint32_t *, + struct mbuf *); +static void iwx_tx_update_byte_tbl(struct iwx_softc *, struct iwx_tx_ring *, int, + uint16_t, uint16_t); +static int iwx_tx(struct iwx_softc *, struct mbuf *, + struct ieee80211_node *); +static int iwx_flush_sta_tids(struct iwx_softc *, int, uint16_t); +static int iwx_drain_sta(struct iwx_softc *sc, struct iwx_node *, int); +static int iwx_flush_sta(struct iwx_softc *, struct iwx_node *); +static int iwx_beacon_filter_send_cmd(struct iwx_softc *, + struct iwx_beacon_filter_cmd *); +static int iwx_update_beacon_abort(struct iwx_softc *, struct iwx_node *, + int); +static void iwx_power_build_cmd(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_power_cmd *); +static int iwx_power_mac_update_mode(struct iwx_softc *, struct iwx_node *); +static int iwx_power_update_device(struct iwx_softc *); +#if 0 +static int iwx_enable_beacon_filter(struct iwx_softc *, struct iwx_node *); +#endif +static int iwx_disable_beacon_filter(struct iwx_softc *); +static int iwx_add_sta_cmd(struct iwx_softc *, struct iwx_node *, int); +static int iwx_rm_sta_cmd(struct iwx_softc *, struct iwx_node *); +static int iwx_rm_sta(struct iwx_softc *, struct iwx_node *); +static int iwx_fill_probe_req(struct iwx_softc *, + struct iwx_scan_probe_req *); +static int iwx_config_umac_scan_reduced(struct iwx_softc *); +static uint16_t iwx_scan_umac_flags_v2(struct iwx_softc *, int); +static void iwx_scan_umac_dwell_v10(struct iwx_softc *, + struct iwx_scan_general_params_v10 *, int); +static void iwx_scan_umac_fill_general_p_v10(struct iwx_softc *, + struct iwx_scan_general_params_v10 *, uint16_t, int); +static void iwx_scan_umac_fill_ch_p_v6(struct iwx_softc *, + struct iwx_scan_channel_params_v6 *, uint32_t, int); +static int iwx_umac_scan_v14(struct iwx_softc *, int); +static void iwx_mcc_update(struct iwx_softc *, struct iwx_mcc_chub_notif *); +static uint8_t iwx_ridx2rate(struct ieee80211_rateset *, int); +static int iwx_rval2ridx(int); +static void iwx_ack_rates(struct iwx_softc *, struct iwx_node *, int *, + int *); +static void iwx_mac_ctxt_cmd_common(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_ctx_cmd *, uint32_t); +static void iwx_mac_ctxt_cmd_fill_sta(struct iwx_softc *, struct iwx_node *, + struct iwx_mac_data_sta *, int); +static int iwx_mac_ctxt_cmd(struct iwx_softc *, struct iwx_node *, + uint32_t, int); +static int iwx_clear_statistics(struct iwx_softc *); +static int iwx_scan(struct iwx_softc *); +static int iwx_bgscan(struct ieee80211com *); +static int iwx_enable_mgmt_queue(struct iwx_softc *); +static int iwx_disable_mgmt_queue(struct iwx_softc *); +static int iwx_rs_rval2idx(uint8_t); +static uint16_t iwx_rs_ht_rates(struct iwx_softc *, struct ieee80211_node *, + int); +static uint16_t iwx_rs_vht_rates(struct iwx_softc *, struct ieee80211_node *, int); +static int iwx_rs_init_v3(struct iwx_softc *, struct iwx_node *); +static int iwx_rs_init_v4(struct iwx_softc *, struct iwx_node *); +static int iwx_rs_init(struct iwx_softc *, struct iwx_node *); +static int iwx_phy_send_rlc(struct iwx_softc *, struct iwx_phy_ctxt *, + uint8_t, uint8_t); +static int iwx_phy_ctxt_update(struct iwx_softc *, struct iwx_phy_ctxt *, + struct ieee80211_channel *, uint8_t, uint8_t, uint32_t, uint8_t, + uint8_t); +static int iwx_auth(struct ieee80211vap *, struct iwx_softc *); +static int iwx_deauth(struct iwx_softc *); +static int iwx_run(struct ieee80211vap *, struct iwx_softc *); +static int iwx_run_stop(struct iwx_softc *); +static struct ieee80211_node * iwx_node_alloc(struct ieee80211vap *, + const uint8_t[IEEE80211_ADDR_LEN]); +#if 0 +int iwx_set_key(struct ieee80211com *, struct ieee80211_node *, + struct ieee80211_key *); +void iwx_setkey_task(void *); +void iwx_delete_key(struct ieee80211com *, + struct ieee80211_node *, struct ieee80211_key *); +#endif +static int iwx_newstate(struct ieee80211vap *, enum ieee80211_state, int); +static void iwx_endscan(struct iwx_softc *); +static void iwx_fill_sf_command(struct iwx_softc *, struct iwx_sf_cfg_cmd *, + struct ieee80211_node *); +static int iwx_sf_config(struct iwx_softc *, int); +static int iwx_send_bt_init_conf(struct iwx_softc *); +static int iwx_send_soc_conf(struct iwx_softc *); +static int iwx_send_update_mcc_cmd(struct iwx_softc *, const char *); +static int iwx_send_temp_report_ths_cmd(struct iwx_softc *); +static int iwx_init_hw(struct iwx_softc *); +static int iwx_init(struct iwx_softc *); +static void iwx_stop(struct iwx_softc *); +static void iwx_watchdog(void *); +static const char *iwx_desc_lookup(uint32_t); +static void iwx_nic_error(struct iwx_softc *); +static void iwx_dump_driver_status(struct iwx_softc *); +static void iwx_nic_umac_error(struct iwx_softc *); +static void iwx_rx_mpdu_mq(struct iwx_softc *, struct mbuf *, void *, size_t); +static int iwx_rx_pkt_valid(struct iwx_rx_packet *); +static void iwx_rx_pkt(struct iwx_softc *, struct iwx_rx_data *, + struct mbuf *); +static void iwx_notif_intr(struct iwx_softc *); +#if 0 +/* XXX-THJ - I don't have hardware for this */ +static int iwx_intr(void *); +#endif +static void iwx_intr_msix(void *); +static int iwx_preinit(struct iwx_softc *); +static void iwx_attach_hook(void *); +static const struct iwx_device_cfg *iwx_find_device_cfg(struct iwx_softc *); +static int iwx_probe(device_t); +static int iwx_attach(device_t); +static int iwx_detach(device_t); + +/* FreeBSD specific glue */ +u_int8_t etherbroadcastaddr[ETHER_ADDR_LEN] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + +u_int8_t etheranyaddr[ETHER_ADDR_LEN] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +#if IWX_DEBUG +#define DPRINTF(x) do { if (sc->sc_debug == IWX_DEBUG_ANY) { printf x; } } while (0) +#else +#define DPRINTF(x) do { ; } while (0) +#endif + +/* FreeBSD specific functions */ +static struct ieee80211vap * iwx_vap_create(struct ieee80211com *, + const char[IFNAMSIZ], int, enum ieee80211_opmode, int, + const uint8_t[IEEE80211_ADDR_LEN], const uint8_t[IEEE80211_ADDR_LEN]); +static void iwx_vap_delete(struct ieee80211vap *); +static void iwx_parent(struct ieee80211com *); +static void iwx_scan_start(struct ieee80211com *); +static void iwx_scan_end(struct ieee80211com *); +static void iwx_update_mcast(struct ieee80211com *ic); +static void iwx_scan_curchan(struct ieee80211_scan_state *, unsigned long); +static void iwx_scan_mindwell(struct ieee80211_scan_state *); +static void iwx_set_channel(struct ieee80211com *); +static void iwx_endscan_cb(void *, int ); +static int iwx_wme_update(struct ieee80211com *); +static int iwx_raw_xmit(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_bpf_params *); +static int iwx_transmit(struct ieee80211com *, struct mbuf *); +static void iwx_start(struct iwx_softc *); +static int iwx_ampdu_rx_start(struct ieee80211_node *, + struct ieee80211_rx_ampdu *, int, int, int); +static void iwx_ampdu_rx_stop(struct ieee80211_node *, + struct ieee80211_rx_ampdu *); +static int iwx_addba_request(struct ieee80211_node *, + struct ieee80211_tx_ampdu *, int, int, int); +static int iwx_addba_response(struct ieee80211_node *, + struct ieee80211_tx_ampdu *, int, int, int); +static void iwx_key_update_begin(struct ieee80211vap *); +static void iwx_key_update_end(struct ieee80211vap *); +static int iwx_key_alloc(struct ieee80211vap *, struct ieee80211_key *, + ieee80211_keyix *,ieee80211_keyix *); +static int iwx_key_set(struct ieee80211vap *, const struct ieee80211_key *); +static int iwx_key_delete(struct ieee80211vap *, + const struct ieee80211_key *); +static int iwx_suspend(device_t); +static int iwx_resume(device_t); +static void iwx_radiotap_attach(struct iwx_softc *); + +/* OpenBSD compat defines */ +#define IEEE80211_HTOP0_SCO_SCN 0 +#define IEEE80211_VHTOP0_CHAN_WIDTH_HT 0 +#define IEEE80211_VHTOP0_CHAN_WIDTH_80 1 + +#define IEEE80211_HT_RATESET_SISO 0 +#define IEEE80211_HT_RATESET_MIMO2 2 + +const struct ieee80211_rateset ieee80211_std_rateset_11a = + { 8, { 12, 18, 24, 36, 48, 72, 96, 108 } }; + +const struct ieee80211_rateset ieee80211_std_rateset_11b = + { 4, { 2, 4, 11, 22 } }; + +const struct ieee80211_rateset ieee80211_std_rateset_11g = + { 12, { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 } }; + +inline int +ieee80211_has_addr4(const struct ieee80211_frame *wh) +{ + return (wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) == + IEEE80211_FC1_DIR_DSTODS; +} + +static uint8_t +iwx_lookup_cmd_ver(struct iwx_softc *sc, uint8_t grp, uint8_t cmd) +{ + const struct iwx_fw_cmd_version *entry; + int i; + + for (i = 0; i < sc->n_cmd_versions; i++) { + entry = &sc->cmd_versions[i]; + if (entry->group == grp && entry->cmd == cmd) + return entry->cmd_ver; + } + + return IWX_FW_CMD_VER_UNKNOWN; +} + +uint8_t +iwx_lookup_notif_ver(struct iwx_softc *sc, uint8_t grp, uint8_t cmd) +{ + const struct iwx_fw_cmd_version *entry; + int i; + + for (i = 0; i < sc->n_cmd_versions; i++) { + entry = &sc->cmd_versions[i]; + if (entry->group == grp && entry->cmd == cmd) + return entry->notif_ver; + } + + return IWX_FW_CMD_VER_UNKNOWN; +} + +static int +iwx_store_cscheme(struct iwx_softc *sc, const uint8_t *data, size_t dlen) +{ + const struct iwx_fw_cscheme_list *l = (const void *)data; + + if (dlen < sizeof(*l) || + dlen < sizeof(l->size) + l->size * sizeof(*l->cs)) + return EINVAL; + + /* we don't actually store anything for now, always use s/w crypto */ + + return 0; +} + +static int +iwx_ctxt_info_alloc_dma(struct iwx_softc *sc, + const struct iwx_fw_onesect *sec, struct iwx_dma_info *dram) +{ + int err = iwx_dma_contig_alloc(sc->sc_dmat, dram, sec->fws_len, 1); + if (err) { + printf("%s: could not allocate context info DMA memory\n", + DEVNAME(sc)); + return err; + } + + memcpy(dram->vaddr, sec->fws_data, sec->fws_len); + + return 0; +} + +static void +iwx_ctxt_info_free_paging(struct iwx_softc *sc) +{ + struct iwx_self_init_dram *dram = &sc->init_dram; + int i; + + if (!dram->paging) + return; + + /* free paging*/ + for (i = 0; i < dram->paging_cnt; i++) + iwx_dma_contig_free(&dram->paging[i]); + + free(dram->paging, M_DEVBUF); + dram->paging_cnt = 0; + dram->paging = NULL; +} + +static int +iwx_get_num_sections(const struct iwx_fw_sects *fws, int start) +{ + int i = 0; + + while (start < fws->fw_count && + fws->fw_sect[start].fws_devoff != IWX_CPU1_CPU2_SEPARATOR_SECTION && + fws->fw_sect[start].fws_devoff != IWX_PAGING_SEPARATOR_SECTION) { + start++; + i++; + } + + return i; +} + +static int +iwx_init_fw_sec(struct iwx_softc *sc, const struct iwx_fw_sects *fws, + struct iwx_context_info_dram *ctxt_dram) +{ + struct iwx_self_init_dram *dram = &sc->init_dram; + int i, ret, fw_cnt = 0; + + KASSERT(dram->paging == NULL, ("iwx_init_fw_sec")); + + dram->lmac_cnt = iwx_get_num_sections(fws, 0); + /* add 1 due to separator */ + dram->umac_cnt = iwx_get_num_sections(fws, dram->lmac_cnt + 1); + /* add 2 due to separators */ + dram->paging_cnt = iwx_get_num_sections(fws, + dram->lmac_cnt + dram->umac_cnt + 2); + + IWX_UNLOCK(sc); + dram->fw = mallocarray(dram->umac_cnt + dram->lmac_cnt, + sizeof(*dram->fw), M_DEVBUF, M_ZERO | M_NOWAIT); + if (!dram->fw) { + printf("%s: could not allocate memory for firmware sections\n", + DEVNAME(sc)); + IWX_LOCK(sc); + return ENOMEM; + } + + dram->paging = mallocarray(dram->paging_cnt, sizeof(*dram->paging), + M_DEVBUF, M_ZERO | M_WAITOK); + IWX_LOCK(sc); + if (!dram->paging) { + printf("%s: could not allocate memory for firmware paging\n", + DEVNAME(sc)); + return ENOMEM; + } + + /* initialize lmac sections */ + for (i = 0; i < dram->lmac_cnt; i++) { + ret = iwx_ctxt_info_alloc_dma(sc, &fws->fw_sect[i], + &dram->fw[fw_cnt]); + if (ret) + return ret; + ctxt_dram->lmac_img[i] = + htole64(dram->fw[fw_cnt].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware LMAC section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->fw[fw_cnt].paddr, + (unsigned long long)dram->fw[fw_cnt].size); + fw_cnt++; + } + + /* initialize umac sections */ + for (i = 0; i < dram->umac_cnt; i++) { + /* access FW with +1 to make up for lmac separator */ + ret = iwx_ctxt_info_alloc_dma(sc, + &fws->fw_sect[fw_cnt + 1], &dram->fw[fw_cnt]); + if (ret) + return ret; + ctxt_dram->umac_img[i] = + htole64(dram->fw[fw_cnt].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware UMAC section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->fw[fw_cnt].paddr, + (unsigned long long)dram->fw[fw_cnt].size); + fw_cnt++; + } + + /* + * Initialize paging. + * Paging memory isn't stored in dram->fw as the umac and lmac - it is + * stored separately. + * This is since the timing of its release is different - + * while fw memory can be released on alive, the paging memory can be + * freed only when the device goes down. + * Given that, the logic here in accessing the fw image is a bit + * different - fw_cnt isn't changing so loop counter is added to it. + */ + for (i = 0; i < dram->paging_cnt; i++) { + /* access FW with +2 to make up for lmac & umac separators */ + int fw_idx = fw_cnt + i + 2; + + ret = iwx_ctxt_info_alloc_dma(sc, + &fws->fw_sect[fw_idx], &dram->paging[i]); + if (ret) + return ret; + + ctxt_dram->virtual_img[i] = htole64(dram->paging[i].paddr); + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: firmware paging section %d at 0x%llx size %lld\n", + __func__, i, + (unsigned long long)dram->paging[i].paddr, + (unsigned long long)dram->paging[i].size); + } + + return 0; +} + +static void +iwx_fw_version_str(char *buf, size_t bufsize, + uint32_t major, uint32_t minor, uint32_t api) +{ + /* + * Starting with major version 35 the Linux driver prints the minor + * version in hexadecimal. + */ + if (major >= 35) + snprintf(buf, bufsize, "%u.%08x.%u", major, minor, api); + else + snprintf(buf, bufsize, "%u.%u.%u", major, minor, api); +} +#if 0 +static int +iwx_alloc_fw_monitor_block(struct iwx_softc *sc, uint8_t max_power, + uint8_t min_power) +{ + struct iwx_dma_info *fw_mon = &sc->fw_mon; + uint32_t size = 0; + uint8_t power; + int err; + + if (fw_mon->size) + return 0; + + for (power = max_power; power >= min_power; power--) { + size = (1 << power); + + err = iwx_dma_contig_alloc(sc->sc_dmat, fw_mon, size, 0); + if (err) + continue; + + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: allocated 0x%08x bytes for firmware monitor.\n", + DEVNAME(sc), size); + break; + } + + if (err) { + fw_mon->size = 0; + return err; + } + + if (power != max_power) + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: Sorry - debug buffer is only %luK while you requested %luK\n", + DEVNAME(sc), (unsigned long)(1 << (power - 10)), + (unsigned long)(1 << (max_power - 10))); + + return 0; +} + +static int +iwx_alloc_fw_monitor(struct iwx_softc *sc, uint8_t max_power) +{ + if (!max_power) { + /* default max_power is maximum */ + max_power = 26; + } else { + max_power += 11; + } + + if (max_power > 26) { + IWX_DPRINTF(sc, IWX_DEBUG_FIRMWARE_TLV, + "%s: External buffer size for monitor is too big %d, " + "check the FW TLV\n", DEVNAME(sc), max_power); + return 0; + } + + if (sc->fw_mon.size) + return 0; + + return iwx_alloc_fw_monitor_block(sc, max_power, 11); +} +#endif + +static int +iwx_apply_debug_destination(struct iwx_softc *sc) +{ +#if 0 + struct iwx_fw_dbg_dest_tlv_v1 *dest_v1; + int i, err; + uint8_t mon_mode, size_power, base_shift, end_shift; + uint32_t base_reg, end_reg; + + dest_v1 = sc->sc_fw.dbg_dest_tlv_v1; + mon_mode = dest_v1->monitor_mode; + size_power = dest_v1->size_power; + base_reg = le32toh(dest_v1->base_reg); + end_reg = le32toh(dest_v1->end_reg); + base_shift = dest_v1->base_shift; + end_shift = dest_v1->end_shift; + + DPRINTF(("%s: applying debug destination %d\n", DEVNAME(sc), mon_mode)); + + if (mon_mode == EXTERNAL_MODE) { *** 19565 LINES SKIPPED *** From nobody Mon Mar 31 14:57:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDl94Tsyz5s8Dw; Mon, 31 Mar 2025 14:57: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 4ZRDl92MZBz442V; Mon, 31 Mar 2025 14:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UE33rxKmJdeCM2IW18cgLUhJ7Os3hCAn0IQwBsc6LqM=; b=bL4WArGt7MTarwoyaskomcXl5cCX17h/mgoxoCwYPcQTYEc+mhJSwHPWFZGejWZ2pfV27g qXp0ITrFsbPDITJh/OkR8YS0iZPd/k8nRCYqxyOGAsQAkgHS1fH6RGJlXPiJZqGlL94CxP aNDmDe+OJnAwCyNr11sWf2iCLCtTwcsyfcVtmFUYUcuhdKOUIud9FmoyKwE7Bb7q78nAWv EHlzs8O8av5sNaPx+jTDXXawtFyDuXXijxpQsvkqd2SBpma/W+ouIpEPjgt9ZiFCKaLfn2 1erAlQQFcizBxtj7IqvuE4zaAzUK9OF16BJ77A/Y0K7rlteT/qat/VS2NkKg1g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433077; a=rsa-sha256; cv=none; b=oQV7Bx6Pu4+nMbAXpHQUOT0kD/QjnIc8OdGj42T7oIWWamJ6zU5afye01sWR+Bz1mM/JaS 9BPCO84Edj/WKoVlF1e44orSzAZlVYNuS+MeyCs0Rur3fEXifWGZdrkNkstebSmU1l8VsY 0Vn2B4vWJxPvLHycd06bX12BDAQhuupDjdj0XDZugaT/Ttjqb2FJ62zzBQsKJJlhKU37NN h2AIImRwH0fmBAR0GiiKvRMTXHUQ4eE8fuNUT+O+UM68x2nqMljXLNvnHdmcBKzu0h5n9t dPKIc5PFfrRUbqOpyyIPX1a5T7yGxic3lWOfZxZRRQJWHYbGou1T+M+Ch8/euw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UE33rxKmJdeCM2IW18cgLUhJ7Os3hCAn0IQwBsc6LqM=; b=GsUZzgUOg8tPFLWOanZsHBqi+Zx5jIy7at23VxweTSe8HyXtOpFp8cyrazqvtHGS/9z1VO DzeBq7L/hP8R/UgmhF3JbsgwaSDLbXbSOy65eqO6cSyLljJcePRO8ymHB/o9lYRVBS6cJJ OYoyrh3mQdCGUoi9F/mnL9HDunbFJnixBbLSs3CEjfFzq8pQhBOo2fImuMGKIaSuEmbXx7 J8z1JNNO0SRhpu5t+uWyieO23EB7W1PAOjhu+W/QX+O+Ao6a6KaypdIt+/zRnaogjSAjaH u0HAPX/IzNhneCyyVLSUHfkSjFMedVf7VMf4BoPkVkkmxWAQ6otEdVwnsrnKcw== 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 4ZRDl91HjkzqZ5; Mon, 31 Mar 2025 14:57: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 52VEvvE9037954; Mon, 31 Mar 2025 14:57:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEvveC037951; Mon, 31 Mar 2025 14:57:57 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:57 GMT Message-Id: <202503311457.52VEvveC037951@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: 8efd2acf07bc - main - pf: improve pf_state_key_attach() error handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c commit 8efd2acf07bc0e1c3ea1f7390e0f1cfb7cf6f86c Author: Kristof Provost AuthorDate: 2025-03-27 14:21:41 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:55:42 +0000 pf: improve pf_state_key_attach() error handling If we fail to attach the stack key that means we've already attached the wire key. That means the state could be found by other cores, and given that we then free it, be used after free. Fix this by not releasing the ID hashrow lock and key locks until after we've removed the inserted key again, ensuring the state cannot be found by other cores. Reported by: markj Submitted by: glebius Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49550 --- sys/netpfil/pf/pf.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index ef86d70db760..ae1ad679d951 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1523,15 +1523,28 @@ keyattach: printf("\n"); } s->timeout = PFTM_UNLINKED; + if (idx == PF_SK_STACK) + /* + * Remove the wire key from + * the hash. Other threads + * can't be referencing it + * because we still hold the + * hash lock. + */ + pf_state_key_detach(s, + PF_SK_WIRE); PF_HASHROW_UNLOCK(ih); KEYS_UNLOCK(); - if (idx == PF_SK_WIRE) { + if (idx == PF_SK_WIRE) + /* + * We've not inserted either key. + * Free both. + */ uma_zfree(V_pf_state_key_z, skw); - if (skw != sks) - uma_zfree(V_pf_state_key_z, sks); - } else { - pf_detach_state(s); - } + if (skw != sks) + uma_zfree( + V_pf_state_key_z, + sks); return (EEXIST); /* collision! */ } } From nobody Mon Mar 31 14:57:58 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDlB4lnNz5s8HV; Mon, 31 Mar 2025 14: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 4ZRDlB2YCDz44JF; Mon, 31 Mar 2025 14: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=1743433078; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pJcc9ku0H4a9W6qsftOEtaEQoQWf99SFklqMkGk7ZqI=; b=GbMwu4naz+j+d/zxtzU3PY/bgLt23srt3zRY97aGa1KQU9/5dmeGeGzO9hTPWu+rYv1uL8 lIBPCrP97Qr1Hy10ld+84t0ZmUgYZXqotzlQjxGKMm4rpEC0j2b9GSRUJn1tcwiCfgc+8N yR0WJRhlqu4KUgkZ1tzu53HeOAbAqC3eXe4VfwfDYTCXs4Uiy7WckWw1lFvEgs8flekUQz BnMyAUPU3JKOhsT12NfaL2r4Qzh1RcjDu+Jrwr9rvzyd4LGODT5AtBBbvbFdK4BtbMUaUX TAlOyAlgKwxOjtbvbLljflrXfLA1OUUOM81yzlkbKXVmnpY/ys0K6GPuA2M1vw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433078; a=rsa-sha256; cv=none; b=oTYdaC6o3eSB9kKOrUTvHZCQU9HLBT/CsKu+PcllamyeuSAvenIky2vvJTlI0v8J8etsmV N/F/77HJYbHH2TdGc2K0WIulLn7rHoTuw3lprVGmmOb+wU/vmAsba5NGfMYBBBl2h94urS YTi6HbQ2ComvtMfI2ZcI0Awy2ebk05L7YckoDUtX/ZzHkk4CGnL+Kq2V7UwBYmrWtjgz3s xeXpP0KLry2mLi2RcGp+VbaO1Y3JaZG1hzHRRThcD0/htGReSmqlXheoMC0L1XHzIGhJDP B7IWPIYBBup2PLFgsjkv6D7QbSXvEdJi8UCvYxP47wdeQvRZ67KPbWFMmm7dFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433078; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pJcc9ku0H4a9W6qsftOEtaEQoQWf99SFklqMkGk7ZqI=; b=R2ds7bwm1AZiDyxzvbxF0Yn7rv46K5fdxP9qszHd0OlQzCzlCQ++CcyfudkMD0Re7u5rZS KntpHPg7ExR445cKz/867tn48N/ZcQHJvmTW6jo7Ii9o0urEmsFjnuiUsNU+SknJ5MuGky +FkTKbgI3/JzHzKjuqiW/ma1XOF7QX828PVvFCvXTd2K4Ab1coXRw7bgIPEJ/4FidiSBla SC3VzuDSxT0pUyc7aqbRiuM0YDyjEZSjB9caFJIZuJpAqiToErDbyFZAtaxLxg6lHi587k qcV58tf5EfFzCYF2urPPkyghzd+69lhkNR2orNYPG/IBj/uRe89R+nLVD+Kjrw== 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 4ZRDlB26gVzqh6; Mon, 31 Mar 2025 14: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 52VEvwak037991; Mon, 31 Mar 2025 14: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 52VEvwOk037988; Mon, 31 Mar 2025 14:57:58 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:58 GMT Message-Id: <202503311457.52VEvwOk037988@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: bdea9cbcf2de - main - pf: don't use state keys after pf_state_insert() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bdea9cbcf2decafeb4da5a0280313efccc09e1b3 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=bdea9cbcf2decafeb4da5a0280313efccc09e1b3 commit bdea9cbcf2decafeb4da5a0280313efccc09e1b3 Author: Kristof Provost AuthorDate: 2025-03-27 14:35:40 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:16 +0000 pf: don't use state keys after pf_state_insert() pf_state_insert() may free the state keys, it's not safe to access these pointers after the call. Introduce osrc/odst (similar to osport/odport) to store the original source and destination addresses. This allows us to undo NAT transformations without having to access the state keys. Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49551 --- sys/net/pfvar.h | 2 ++ sys/netpfil/pf/pf.c | 30 +++++++++++++++--------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 39ca13c89379..156ffd22c07b 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1633,6 +1633,8 @@ struct pf_pdesc { struct pf_addr *src; /* src address */ struct pf_addr *dst; /* dst address */ + struct pf_addr osrc; + struct pf_addr odst; u_int16_t *pcksum; /* proto cksum */ u_int16_t *sport; u_int16_t *dport; diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index ae1ad679d951..12b4d8c1398b 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4280,8 +4280,7 @@ pf_send_tcp(const struct pf_krule *r, sa_family_t af, static void pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, - struct pf_state_key *sk, struct tcphdr *th, - u_int16_t bproto_sum, u_int16_t bip_sum, + struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, u_short *reason, int rtableid) { struct pf_addr * const saddr = pd->src; @@ -4289,12 +4288,12 @@ pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, /* undo NAT changes, if they have taken place */ if (nr != NULL) { - PF_ACPY(saddr, &sk->addr[pd->sidx], pd->af); - PF_ACPY(daddr, &sk->addr[pd->didx], pd->af); + PF_ACPY(saddr, &pd->osrc, pd->af); + PF_ACPY(daddr, &pd->odst, pd->af); if (pd->sport) - *pd->sport = sk->port[pd->sidx]; + *pd->sport = pd->osport; if (pd->dport) - *pd->dport = sk->port[pd->didx]; + *pd->dport = pd->odport; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); @@ -5926,7 +5925,7 @@ nextrule: ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURNICMP) || (r->rule_flag & PFRULE_RETURN))) { - pf_return(r, nr, pd, sk, th, bproto_sum, + pf_return(r, nr, pd, th, bproto_sum, bip_sum, &reason, r->rtableid); } @@ -5975,7 +5974,7 @@ nextrule: pd->act.log |= PF_LOG_FORCE; if (action == PF_DROP && (r->rule_flag & PFRULE_RETURN)) - pf_return(r, nr, pd, sk, th, + pf_return(r, nr, pd, th, bproto_sum, bip_sum, &reason, pd->act.rtableid); return (action); @@ -6255,15 +6254,12 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, pf_set_protostate(s, PF_PEER_SRC, PF_TCPS_PROXY_SRC); /* undo NAT changes, if they have taken place */ if (nr != NULL) { - struct pf_state_key *skt = s->key[PF_SK_WIRE]; - if (pd->dir == PF_OUT) - skt = s->key[PF_SK_STACK]; - PF_ACPY(pd->src, &skt->addr[pd->sidx], pd->af); - PF_ACPY(pd->dst, &skt->addr[pd->didx], pd->af); + PF_ACPY(pd->src, &pd->osrc, pd->af); + PF_ACPY(pd->dst, &pd->odst, pd->af); if (pd->sport) - *pd->sport = skt->port[pd->sidx]; + *pd->sport = pd->osport; if (pd->dport) - *pd->dport = skt->port[pd->didx]; + *pd->dport = pd->odport; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); @@ -9883,6 +9879,8 @@ pf_setup_pdesc(sa_family_t af, int dir, struct pf_pdesc *pd, struct mbuf **m0, } pd->src = (struct pf_addr *)&h->ip_src; pd->dst = (struct pf_addr *)&h->ip_dst; + PF_ACPY(&pd->osrc, pd->src, af); + PF_ACPY(&pd->odst, pd->dst, af); pd->ip_sum = &h->ip_sum; pd->virtual_proto = pd->proto = h->ip_p; pd->tos = h->ip_tos & ~IPTOS_ECN_MASK; @@ -9924,6 +9922,8 @@ pf_setup_pdesc(sa_family_t af, int dir, struct pf_pdesc *pd, struct mbuf **m0, h = mtod(pd->m, struct ip6_hdr *); pd->src = (struct pf_addr *)&h->ip6_src; pd->dst = (struct pf_addr *)&h->ip6_dst; + PF_ACPY(&pd->osrc, pd->src, af); + PF_ACPY(&pd->odst, pd->dst, af); pd->ip_sum = NULL; pd->tos = IPV6_DSCP(h); pd->ttl = h->ip6_hlim; From nobody Mon Mar 31 14:57:59 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDlC67Gfz5s8Sg; Mon, 31 Mar 2025 14:57: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 4ZRDlC3PgTz44Fx; Mon, 31 Mar 2025 14:57:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433079; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ues0sdQnAMEpKCU3sqOaJHUn5RC98+eIPVwfOeu8Lno=; b=K7SGpvcrFyN5gbxl8dhF3l0U562vQNvbMp9V6mUEg8IzobKcWTt0GwM4FxQmdspnAKZPPg RuywO4Ef8YcdMRZ6oa1aVsQK3jxllRYTgOqdC482zNEsOd+ccjj9IMHGI6bd/rCUtpR1bN gQumDddDdQ8uWQIYTsLLoKTAivpcxQfn4Fj2zdN6VPy9CGH/NB2m/ca/OgtMjS2EyLNpsz ctjpaSMcZ8wPQo3tiHKKS3n+qFYd4meeSUgGlzFVJ+TUWLZrrJLHMeI030On6iCKx5LwG3 olxMp8EQJyYKSzLKIs+j6/C6SD5oaqSBF7PZPUjMwCoB/HlWu/dqXeYrejc5pQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433079; a=rsa-sha256; cv=none; b=Cu+iMgdW/m7gYUU+OoTc0s1cFLlKEbl0zG5R/fCnQauAyP6VyDI9o4D8FcE7zfTLw0qdhk oOnhlHDupZvVvajLfTwq4WbxxOsDxpE8HvFbxWoX1CQoZCPvsKdgbuZznGHLczfPUtr2dV oX1A+FhYBuRw2v8iwdnfuAhMNbRRoSNdJ9K3mXXaNwlO2pzI7PIKDU9HOWrKCegJmryERP f4WOLy01xvegLTzoIDfgNs+x53O7kwuXln7mkyo6R6nC/soZI5kTf/w2iuhZXOItmBmmpb 00WTecrJIcyIhhBwGmRDkypp8aBVl2eN9AgZAgpn5HDzGEGdCCywxjzzAhqdLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433079; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ues0sdQnAMEpKCU3sqOaJHUn5RC98+eIPVwfOeu8Lno=; b=q8KkQonaCMZzarrLBDLDIEm9ZobVe9FMkpfBzUI54F1/qWwF3BLVK5g3HaVKuyJbq3K3Cc 79XNehcVvaJd+Gu8GShjSTxcWjmJc5Jeao18ax2eH0VD8BCe76UBNuRegR96wLqw/KoV89 xvJ1lRUdZNUql9HEZaQm+mouxZBlbrFpKfDirK5zr1d43m+cijpkJlkObMfwT5YOw3OqdX PMesm4aB2mr7mdEbDgCuRN0SNqBMh4LLyRfF35o2MMhMYkpPwTcpoez1uFd8I74sqsjWCN QBKp9TKUSX4C4LdOyWz+rhTLGGfDi/zpQJ71x9nPVdnWMDVQyvu/S8mETR88Xw== 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 4ZRDlC2q5Gzqh7; Mon, 31 Mar 2025 14:57: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 52VEvxYR038026; Mon, 31 Mar 2025 14:57:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEvxPN038023; Mon, 31 Mar 2025 14:57:59 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:57:59 GMT Message-Id: <202503311457.52VEvxPN038023@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: d7eacb1531e7 - main - pf: simplify action resolution in pf_test_rule() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d7eacb1531e7d3e8089ec59dd75717038eb18f41 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=d7eacb1531e7d3e8089ec59dd75717038eb18f41 commit d7eacb1531e7d3e8089ec59dd75717038eb18f41 Author: Kristof Provost AuthorDate: 2025-03-27 14:47:23 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:29 +0000 pf: simplify action resolution in pf_test_rule() Rather than looking at state keys after the fact just save the action in the nat64 section. This simplifies things and it also ensures we don't use state keys after pf_insert_state(). Reviewed by: glebius, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49552 --- sys/netpfil/pf/pf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 12b4d8c1398b..c75737f688b0 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -5491,6 +5491,7 @@ pf_test_rule(struct pf_krule **rm, struct pf_kstate **sm, int asd = 0; int match = 0; int state_icmp = 0, icmp_dir; + int action = PF_PASS; u_int16_t virtual_type, virtual_id; u_int16_t bproto_sum = 0, bip_sum = 0; u_int8_t icmptype = 0, icmpcode = 0; @@ -5963,7 +5964,6 @@ nextrule: if (pd->virtual_proto != PF_VPROTO_FRAGMENT && (!state_icmp && (r->keep_state || nr != NULL || (pd->flags & PFDESC_TCP_NORM)))) { - int action; bool nat64; action = pf_create_state(r, nr, a, pd, nk, sk, @@ -6005,6 +6005,9 @@ nextrule: goto cleanup; rewrite += ret; + + if (rewrite && sk->af != nk->af) + action = PF_AFRT; } } else { while ((ri = SLIST_FIRST(&match_rules))) { @@ -6032,10 +6035,7 @@ nextrule: */ return (PF_DEFER); - if (rewrite && sk != NULL && nk != NULL && sk->af != nk->af) { - return (PF_AFRT); - } else - return (PF_PASS); + return (action); cleanup: while ((ri = SLIST_FIRST(&match_rules))) { From nobody Mon Mar 31 14:58:00 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDlF1Plyz5s8KL; Mon, 31 Mar 2025 14:58: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 4ZRDlD4W1fz440C; Mon, 31 Mar 2025 14:58:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433080; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ruqH09PO99kmVCR9ORdKj3c5Wqou/Ie0u0VNeCYBWhY=; b=RrZFKmK8xryhw32IDeP2OQBFUAuNsoHaHbmFAMb/HZ2DXSe5DmB1Nbb01tq5ztGNmcY+0X JS2qWPutppIfuyX9c4XQDBIP4aaCO05UvoqwYMxafxiLL+2bi1ISgo4YFLs0PE37VB6Oo3 URVrD7ig1KGb3pdGtaC2QJQoEKloQz1df4wqvRwvUZdeiluPdE8sgl4FRiHmhouE/Kwc8Z 8XUNAPz2i4LJwb4vcZuwY14MGsdRisAOagJcmutzt1wjWt9eO8xwwPXhfRaouDMqXRRMsf 4Q7KoBHxCF22rhvlFqa60m6sQ1/yscPeyNHn4PsVsLoJcZ2AODQ4TGuVQmIkEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433080; a=rsa-sha256; cv=none; b=feZYe/iVZBRyCfY8jiQZvg8hPR2o+Fs2lDRyoFLLHtP6975Igv7MLt0dljlaesmkjAucol DrgWaern7rj3cEwO8YwMDpaecf5MckdbYCOAl40AcuVQ6yCLWIpzcua7pTploiOmK4ySVz rGelxxkae+C7A75OICsOTkUiKM9QlfToiyV7HeueXXkoz248k5TMdlDFob/mm8Gh3/7BuH p2IeqBRdmo8LVp5UNnmPaG0204A8sUx9d7LOwW0T2FnnjEz3iPDiXpkHPmXCrbc/IBOLNu LhjalLFKJlj4koVdKSgwdoEtrFtzk1Plj2Kt6LHinId1RxmOJCxWwhQb8jitSg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433080; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ruqH09PO99kmVCR9ORdKj3c5Wqou/Ie0u0VNeCYBWhY=; b=sNGBQW0ZWlzGF1xYTe76ygbwDkmxeoudQOJB4M4By9fPDzdnlwsDQFOtfQb8VPeWzlNAnC NAc8zegi/JkMuS2aEf9G8g+VKfAREAvV0xjjceNj8ZhkK1Thz4abs3+o6iQgwrrXev47sm mehelNlk+JgklqKQeCt2sspkYYPBm7w2vlQQJm2Pkys8Ea6O71x6LwtO3L0U+BlZFkE2z3 CLvoIs7JacUqcrM/Pygtge5Tkq+A76vkZIO8J+CaigJ3quCcMIuptwQ9TkLkAKrJ3ZwucP ZBZkeprQmUH7x+uzoY13ZR+7uza+cJVFt51QwenO7UlmPbL0AowqDdBng2CPSQ== 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 4ZRDlD46Lfzqb7; Mon, 31 Mar 2025 14:58: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 52VEw0MA038066; Mon, 31 Mar 2025 14:58:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEw0r1038063; Mon, 31 Mar 2025 14:58:00 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:00 GMT Message-Id: <202503311458.52VEw0r1038063@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: 592418343348 - main - pf: explicitly NULL state key pointers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 592418343348bcf4355c249f53cff89ed90ea1f5 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=592418343348bcf4355c249f53cff89ed90ea1f5 commit 592418343348bcf4355c249f53cff89ed90ea1f5 Author: Kristof Provost AuthorDate: 2025-03-27 14:37:59 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:43 +0000 pf: explicitly NULL state key pointers After the pf_state_insert() call we may not use these pointers again. Explicitly NULL them to ensure we don't. Also NULL them out if we free the keys directly. Reviewed by: glebius, markj MFC after: 3 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49553 --- sys/netpfil/pf/pf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index c75737f688b0..d60b30057cbb 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -1835,6 +1835,7 @@ pf_state_insert(struct pfi_kkif *kif, struct pfi_kkif *orig_kif, /* Returns with ID locked on success. */ if ((error = pf_state_key_attach(skw, sks, s)) != 0) return (error); + skw = sks = NULL; ih = &V_pf_idhash[PF_IDHASH(s)]; PF_HASHROW_ASSERT(ih); @@ -5969,6 +5970,7 @@ nextrule: action = pf_create_state(r, nr, a, pd, nk, sk, &rewrite, sm, tag, bproto_sum, bip_sum, &match_rules, udp_mapping); + sk = nk = NULL; if (action != PF_PASS) { pf_udp_mapping_release(udp_mapping); pd->act.log |= PF_LOG_FORCE; @@ -6017,6 +6019,7 @@ nextrule: uma_zfree(V_pf_state_key_z, sk); uma_zfree(V_pf_state_key_z, nk); + sk = nk = NULL; pf_udp_mapping_release(udp_mapping); } @@ -6234,6 +6237,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, goto drop; } else *sm = s; + sk = nk = NULL; STATE_INC_COUNTERS(s); From nobody Mon Mar 31 14:58:01 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDlG306jz5s88J; Mon, 31 Mar 2025 14:58: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 4ZRDlF5n28z44JQ; Mon, 31 Mar 2025 14:58:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433081; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=irAMakyIVZBtW88TbQGwGAnwXxsznFdFwc5hMO7CxMo=; b=VxP3ivFvN5SCph4cBh3ki9S/LQy/0KF+OijvG62m7aKVOUS3NDkAVq1CBxH818HKFuQMYv Rl1VC9LsfkjpYOxROCG7CBBr4JQCBZ2OyBZnbqPJJ1osqxWEgDjwgyqeHYqpvB8kIRvmem KkDk9mBozhzi1MYW0nQpIzuhuQBpSoEAQg0pV1oup1tap6JjXL5HyhGpzAPAVkyQZ5+4K2 PIfZoYleJgMDuegpOcHwBvnxQV7XiEUTnZUFlbZFsfs7+XxN7tTSMim8E3lvWsxLc+YkZD Zm97LQBV3xoIiNu7jMx3o/wJ4YYcjaB3DtwKSVdNsFl2QpcnnVcPX6KTDeHK8w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433081; a=rsa-sha256; cv=none; b=ucBIc1gCEhtQl1Kv1WLgusgqz4kWmO3oVdW34BgMcuSD5sYEdmef28q0ZWxCYcbcGCnv4g qSlW1dG6+zAUJugbsqzj+7ACF1ZRVNt2dyOv+udZiL15d20k+Q3SHf7TmWEE4OtLPEdteH v7++S9N7yiVt9vvBhWXMBIS/Av/aI0RPfMS/geSiyyhW2OR+jMuju+ikVn7xJy3EvYhacG ZZJnmCKBwhChwJNXVaWHDl+vdT0F5ygW9EXh0KafQO1d837F/HR5KwyYSaFzm6dtm/ZXPd pSSJS9/QjrDBRoUW778S59+3+nbwGhKZv62ycO1lrjI1cOG5KhtJHtKRfZrpIQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433081; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=irAMakyIVZBtW88TbQGwGAnwXxsznFdFwc5hMO7CxMo=; b=BfNHSkde5WLi18mUrGOlC0xg1XB+ugyHMQn4dmNgHODNMjWfnfdRBdKjQVTlzp6C61hc8i Vux1OF+r6Xch0+qIdswKHxhvv7ybWBR/7H5IJ56ayq/qAXGNSAfWflIl9Y0ypAL3laI2mA CEl5WyYhaJ/YFGx0dXOfdPWEEgUbzH40+BZbz79quKUpDg74DAYrVkRgEcNLUOmRr5m5K4 r9/kjbKVxtT5xcsvCyG0p9jAC2novTO7wUlVo8+zQV4bvGtccVXxJVzz+ZvmjKIFXAtWAQ IsZL+jKLXocW/I9z5q0aDdDei7kZ/PdrePGf4tSzo42k2XCl/Ef6/Te11ghcHg== 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 4ZRDlF4qS8zqZ6; Mon, 31 Mar 2025 14:58: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 52VEw1sa038100; Mon, 31 Mar 2025 14:58:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VEw1vx038097; Mon, 31 Mar 2025 14:58:01 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:01 GMT Message-Id: <202503311458.52VEw1vx038097@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: e7995c99f1e4 - main - pf: inline pf_addrcpy() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 commit e7995c99f1e4b3ae001a4ce53c07fb97ada3d003 Author: Kristof Provost AuthorDate: 2025-03-29 09:46:54 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:56:57 +0000 pf: inline pf_addrcpy() Make it easier for the compiler to inline this in the many cases where the 'af' is known at compile time. Reviewed by: glebius, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49581 --- sys/net/pfvar.h | 19 +++++++++++++++++++ sys/netpfil/pf/pf.c | 17 ----------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 156ffd22c07b..82967dc10d03 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -598,6 +598,25 @@ extern struct sx pf_end_lock; #endif /* PF_INET6_ONLY */ #endif /* PF_INET_INET6 */ +#ifdef _KERNEL +#ifdef INET6 +static void inline +pf_addrcpy(struct pf_addr *dst, const struct pf_addr *src, sa_family_t af) +{ + switch (af) { +#ifdef INET + case AF_INET: + memcpy(&dst->v4, &src->v4, sizeof(dst->v4)); + break; +#endif /* INET */ + case AF_INET6: + memcpy(&dst->v6, &src->v6, sizeof(dst->v6)); + break; + } +} +#endif /* INET6 */ +#endif + /* * XXX callers not FIB-aware in our version of pf yet. * OpenBSD fixed it later it seems, 2010/05/07 13:33:16 claudio. diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index d60b30057cbb..e4affb502d0e 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -798,23 +798,6 @@ pf_set_protostate(struct pf_kstate *s, int which, u_int8_t newstate) s->src.state = newstate; } -#ifdef INET6 -void -pf_addrcpy(struct pf_addr *dst, const struct pf_addr *src, sa_family_t af) -{ - switch (af) { -#ifdef INET - case AF_INET: - memcpy(&dst->v4, &src->v4, sizeof(dst->v4)); - break; -#endif /* INET */ - case AF_INET6: - memcpy(&dst->v6, &src->v6, sizeof(dst->v6)); - break; - } -} -#endif /* INET6 */ - static void pf_init_threshold(struct pf_threshold *threshold, u_int32_t limit, u_int32_t seconds) From nobody Mon Mar 31 14:58:02 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRDlH58SZz5s8F6; Mon, 31 Mar 2025 14: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 4ZRDlH0zNRz4477; Mon, 31 Mar 2025 14:58:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZJBu8yABC1EsiWzMAVJdozKHTz/qhdsPFjhGAeNPAg=; b=njHA+DTbHy6quqbPPh4oIYWUWfiFulrdMoYByT0ev+9JOyakVN4ZD1OFCzLSl+hvBkK8Ki xSQ8Yzw3DIuGKy9Ijqw/QxIxx43XvxEY9TOlnWP0hdvzURuHVsnLhctHrhX8aLaNmFd2To l2ZWECdJ17wbrBMeAPN7zIgPmhYKSKpHajhyQgL24dmNnZUCc/+gAz0qNFo41Mygqsi3bP N+4yUQlDMq6iZL8I78rQAl5q3dndtNGLKqmSGk9iGw6LZNKhWt0+6I5e3gQSk62c7w7BHg UCZjaFMTociFLWxwkO/weDL5dyZB7jzfKE6CnxTuVA0wMY9fsG78tWC+ALye9g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743433083; a=rsa-sha256; cv=none; b=kfm3T/xrG5+w370JhEnvQSSel3ACLFXdYbw4sScpv774mdcgnBkVLG/DobxWJhZUSuDjPu CRNqN7GkDnFXbRCmvItTe46xNbeLLmIh6q6OqiuKBnNi0x3Norr2u5KMtYUCTRyMdxiZfm RrZW2xWtDuEh3qBL5ildO4D4Q+NyraeBNuNesK+aEXVqHr630lDfEEBxtgW/H5jjrYBAmy HH1/92+1oJDF+xMtai7WoQjJ3vL7aDuu7GSRvrMIncuvzBnrlazj8sDnUQ2dEbF9hzlykR 8vKrhsYIj/XI9PDj32HkkGR8qqpfpYdFK04Fg8hZ7cblmNoiKUNyixp+xqUG0w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743433083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RZJBu8yABC1EsiWzMAVJdozKHTz/qhdsPFjhGAeNPAg=; b=htgOFF3TCdZVRWzKAhAF3xtjmoFX/boODRkCWdE7u2y3mykHc+SJzD/fwyKEPaZ0Unt+ns O7C5vDY0ndAfyKIU4T0pBq7dLdI79+AiD69l5/WLQlG6RJ/5GPwfG69yiyDQnTDoSk6B4Z rfIGVgXwMYxjIyR8ch8qlb/zHbrKSo0I/lp3+nO/TbnP/KvmQG0NFn4VzazH2F8a5SQ6QF KwhsuWQz5MlzpVmaACS4oeSn3lvd09GqhvbItZMlT2MdqOEKrsxw8yBpmcIg+p3VD/Ayx/ QNH1pXRP0ZQ2DBJlvyqk5W3GVuTv8P0W+TkYXd1eH1d3mWcvdmkjqGXNCNcCWQ== 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 4ZRDlG5qndzqZ7; Mon, 31 Mar 2025 14: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 52VEw2AK038139; Mon, 31 Mar 2025 14: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 52VEw2EV038132; Mon, 31 Mar 2025 14:58:02 GMT (envelope-from git) Date: Mon, 31 Mar 2025 14:58:02 GMT Message-Id: <202503311458.52VEw2EV038132@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: 1bf46184cdc3 - main - pf: factor out duplicate code to undo nat List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1bf46184cdc35779849d909b3a483183245a0aba Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=1bf46184cdc35779849d909b3a483183245a0aba commit 1bf46184cdc35779849d909b3a483183245a0aba Author: Kristof Provost AuthorDate: 2025-03-29 09:51:57 +0000 Commit: Kristof Provost CommitDate: 2025-03-31 12:57:14 +0000 pf: factor out duplicate code to undo nat Suggested by: markj Reviewed by: markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D49582 --- sys/netpfil/pf/pf.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index e4affb502d0e..775bd016c656 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4263,17 +4263,12 @@ pf_send_tcp(const struct pf_krule *r, sa_family_t af, } static void -pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, - struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, - u_short *reason, int rtableid) +pf_undo_nat(struct pf_krule *nr, struct pf_pdesc *pd, uint16_t bip_sum) { - struct pf_addr * const saddr = pd->src; - struct pf_addr * const daddr = pd->dst; - /* undo NAT changes, if they have taken place */ if (nr != NULL) { - PF_ACPY(saddr, &pd->osrc, pd->af); - PF_ACPY(daddr, &pd->odst, pd->af); + PF_ACPY(pd->src, &pd->osrc, pd->af); + PF_ACPY(pd->dst, &pd->odst, pd->af); if (pd->sport) *pd->sport = pd->osport; if (pd->dport) @@ -4282,6 +4277,15 @@ pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, *pd->ip_sum = bip_sum; m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); } +} + +static void +pf_return(struct pf_krule *r, struct pf_krule *nr, struct pf_pdesc *pd, + struct tcphdr *th, u_int16_t bproto_sum, u_int16_t bip_sum, + u_short *reason, int rtableid) +{ + pf_undo_nat(nr, pd, bip_sum); + if (pd->proto == IPPROTO_TCP && ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURN)) && @@ -6239,18 +6243,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, if (pd->proto == IPPROTO_TCP && (tcp_get_flags(th) & (TH_SYN|TH_ACK)) == TH_SYN && r->keep_state == PF_STATE_SYNPROXY) { pf_set_protostate(s, PF_PEER_SRC, PF_TCPS_PROXY_SRC); - /* undo NAT changes, if they have taken place */ - if (nr != NULL) { - PF_ACPY(pd->src, &pd->osrc, pd->af); - PF_ACPY(pd->dst, &pd->odst, pd->af); - if (pd->sport) - *pd->sport = pd->osport; - if (pd->dport) - *pd->dport = pd->odport; - if (pd->ip_sum) - *pd->ip_sum = bip_sum; - m_copyback(pd->m, pd->off, pd->hdrlen, pd->hdr.any); - } + pf_undo_nat(nr, pd, bip_sum); s->src.seqhi = htonl(arc4random()); /* Find mss option */ int rtid = M_GETFIB(pd->m); From nobody Mon Mar 31 15:14:04 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRF5n6ssLz5s9W3; Mon, 31 Mar 2025 15:14:05 +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 4ZRF5n5qbnz48Sv; Mon, 31 Mar 2025 15:14:05 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743434045; h=from:from:reply-to:subject: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=swLPVSivDthYqMvFfmx7lHLwWQIm5WJfdT4Zr0S4lPs=; b=nykEZZCOZLVNm4lR2I+UQKRsr6NccikFVmZUGAg9/BW4Phm0nlKyQTJPeI4IN8uU6QEJXz /JMaTgB2MTyClO9dfHrWec0ftasYqA1c2/bGQY4r5rPBWXuCgjwwpe7Zx7hdhIb+iFOoFs anmdf8FNsdlZvMqc5YLpP54lx/4K8UxWnHCpQkcuNYD2aLKGKhiPp72D+jlcz+NSwNKCor BwAAzCAPgKSU6XZzDgi6wULhwCtNGZPE1Inc7CYs6iCZ3NHTatbpKdIxJGiUPl4lW6LBDP QKTgPUa0Qc4UYDX3/32u2U8utJJjsBIHg6xkEUh0tKvCioC54hefmk3OOQkt3w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743434045; a=rsa-sha256; cv=none; b=aUxLktD8VSefNwQrf72Dd2pB1/dzj1aRYxAhaPnz9QgMw0CBg1B+zrV7oeJaIGxivrxY4j Aq8epj+k584WuFSBTJeAv7xJghEj96tUVQd9tvflH9w7KL+TSdP03B7HDsJyo2l5mlNMXi m5GUhL7w1kiZprvSOZMdLNTwUem0cecQIrsLmVfPff+I8Xj8wSp1MHGcPoJYxaORILsjvL u4LEls242EjNera4DxIGAZwSGVQjr+oKnWnvFl02S6+Du02b9CXpWkPWtghk5XL/8no1Jr pT4U54R1KlxhRnAJDKxXV9OKsUArRqhh4RXBQvfpZi0Z7CmaOF4YvqyD9DXIag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743434045; h=from:from:reply-to:subject: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=swLPVSivDthYqMvFfmx7lHLwWQIm5WJfdT4Zr0S4lPs=; b=CQ/GiX515Vb5fPCi5UocgqOfr2IQdrA88tlFjsfqWvSYhH84oMkwqG32rHzwSu2GfxdlsM yTVbG8swmQqA1nNCEFdAg4XXGy98agiZOE/kLMny8v7p4ahAr4oMMg0oIDRERtqW9tW+1+ hMPuvOh48AqPoIuuLnU3OaoBNL6TY/acbHUF8PmgQc9LQH07imRG3KcnSvr06tk28l2WCB oPcXq9Wc+L8gVPP4BhwM5BebzhHU371AmuTvBmP+UGiVJ9cY1pZ+j1QGWzZnG4N6p0fdr0 qenYBIXIGUxwklNurWFfoEo9nCchxCjMOgSdf0Z1tzbpMKxYG7sPSnp/taYmRw== Received: from [IPV6:2601:5c0:4200:b830:95ca:52bb:57ab:e333] (unknown [IPv6:2601:5c0:4200:b830:95ca:52bb:57ab:e333]) (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 4ZRF5n3tLwzymL; Mon, 31 Mar 2025 15:14:05 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <25967c7b-79c0-4883-8b92-86e58201589b@FreeBSD.org> Date: Mon, 31 Mar 2025 11:14:04 -0400 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e24279e0f9e2 - main - Remove mentions of ENOSYS added in d97e44784bb5 Content-Language: en-US To: Enji Cooper , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202503280240.52S2elHG075912@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: <202503280240.52S2elHG075912@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/27/25 21:40, Enji Cooper wrote: > The branch main has been updated by ngie: > > URL: https://cgit.FreeBSD.org/src/commit/?id=e24279e0f9e28ba0c1920cb539fc357568790c0a > > commit e24279e0f9e28ba0c1920cb539fc357568790c0a > Author: Enji Cooper > AuthorDate: 2025-03-27 19:26:59 +0000 > Commit: Enji Cooper > CommitDate: 2025-03-28 02:40:07 +0000 > > Remove mentions of ENOSYS added in d97e44784bb5 > > aio(4) is a hard requirement in the kernel as of f3215338ef82. The > scenario that the patch was submitted for is no longer possible. > > This isn't a straight up revert since the previous change also addressed > some minor issues. > > PR: 190942 > Reported by: asomers > MFC after: 2 weeks > MFC with: d97e44784bb5 > Fixes: d97e44784bb5 ("aio_*(2): mention ENOSYS under ERRORS") > Differential Revision: https://reviews.freebsd.org/D49541 FWIW, I think it would have been cleaner to do a full revert and then do a followup commit applying the other changes. You had to do the followup commit anyway to bump .Dd. Not anything to change here, but something to consider in the future. -- John Baldwin From nobody Mon Mar 31 17:07:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRHd14g32z5sHmr; Mon, 31 Mar 2025 17:07: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 4ZRHd12vdpz3Vwv; Mon, 31 Mar 2025 17:07:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743440869; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Tf0u3nUSwsMZN6yzQW5ur1h5t944xJani2c96Dk8Hw=; b=S3MMBlbAmXUZeREU9Pq6o75epOt1n2rnYpHhSzZ5VdYhcr3q7NsVBGqZcAQD6q20W8i6eV Ueedgv59gT0k8cBQxeFotG4HLfQeG/Y4QvTwYpwY/MlksG9DINHfBEqrcHTLUIdLVZCqmo IOqOuFUnrOtOYQwGyyRes4dg3HOWOLHvMjtR+0KM4VTFopsMuncZbawgjXZfkG/tM4eg6x b+m1u3t0QJoJ+k6sUw/LQxAgc3Q7fgqWNdyuwkU/lUVyZSTryOiN+iUQ48T4M0a0lNUOOo MmafhxSBdpMRxwUUATK2U1NSDLH3McBp68uvjRUfdV9Y+S/9LXsqJoYUEzGiOA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743440869; a=rsa-sha256; cv=none; b=kM4meQZG6xcdKPOV6qVmoy+ZFdu/yGkMYnK8Q9nsnwZ8LuanjzF3/2ASBvj+7WTwCagg5J 0IyMpSlgjQwaqekqzw3FXnrzVchGhmGgwLwd+5Yw7Cyjtx7cOerJXOr3tMd2oLGdl89ezu YjNttsoa9wta819bdVEcG8o9RBzbXxkoQvqfk+HFP9I5C3FytcdbzVy0e2vNNZ289tW9ol CZnvfdyjIc7oTSndNaQbvCt+KIu+QiZY/tv5hHZO6GGpNqlIUsKrmwxKDnEVTcG+GgIzjL oEQIVCNi6idQJzR9Um2Lbm4rkkQt9fPcVJQrdP2pV38TUvpVTgW+zlEV3pks/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743440869; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Tf0u3nUSwsMZN6yzQW5ur1h5t944xJani2c96Dk8Hw=; b=ZwXFVqKCr1Z6NlsFbWTWk/pLsI6SIDaNrvM0ggAQqBly673GBlhr6EFDWxNMQyepmN0SV9 wgcGP3HISsm/nJ2xoZnc2gAUy8SDuW2sSw7EKOkKGVXCLbAxakCm3L90fdn+8roF1mGu4d H0kjoX3opmD6TSwRE7NutuVmELZBsO88gdXTRTZnl1a14D4/OKaTHU3Yq8jfE87zvAsRk3 f/vCE5qhMlQDrlKs5nKsnqU+W7WnPFiXUIshRRPbRpqwHwSvPnfvsmjLiS4OnqTeeDnoPf CyKhR+sNMRz+vACW646GKpObRSbyUeBUm42lrUUox1+JITez1xxhMkwIxnWXCA== 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 4ZRHd12S5sztSw; Mon, 31 Mar 2025 17:07: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 52VH7nBP087086; Mon, 31 Mar 2025 17:07:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VH7ngb087083; Mon, 31 Mar 2025 17:07:49 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:07:49 GMT Message-Id: <202503311707.52VH7ngb087083@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: 6e76489098c6 - main - tcp: remove support for TCPPCAP List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6e76489098c6dc415ac3f2ae084154c3c22558ec Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=6e76489098c6dc415ac3f2ae084154c3c22558ec commit 6e76489098c6dc415ac3f2ae084154c3c22558ec Author: Michael Tuexen AuthorDate: 2025-03-31 14:55:39 +0000 Commit: Michael Tuexen CommitDate: 2025-03-31 14:55:39 +0000 tcp: remove support for TCPPCAP This feature could be used to store the last sent and received TCP packets for a TCP endpoint. There was no utility to get these packets from a live system or core. This functionality is now provided by TCP Black Box Logging, which also stores additional events. There are tools to get these traces from a live system or a core. Therefore remove TCPPCAP to avoid maintaining it, when it is not used anymore. Reviewed by: rrs, rscheff, Peter Lei, glebiu Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49589 --- ObsoleteFiles.inc | 3 + sys/conf/NOTES | 4 - sys/conf/files | 2 - sys/conf/options | 1 - sys/netinet/tcp.h | 4 +- sys/netinet/tcp_input.c | 7 - sys/netinet/tcp_output.c | 12 - sys/netinet/tcp_pcap.c | 452 --------------------------------- sys/netinet/tcp_pcap.h | 39 --- sys/netinet/tcp_subr.c | 24 -- sys/netinet/tcp_usrreq.c | 33 --- sys/netinet/tcp_var.h | 4 - tools/build/test-includes/badfiles.inc | 1 - usr.sbin/tcpsso/tcpsso.c | 2 - 14 files changed, 5 insertions(+), 583 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 850133db608a..14f54d75bc1d 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20250331: removal of TCPPCAP +OLD_FILES+=usr/include/netinet/tcp_pcap.h + # 20250310: caroot bundle updated OLD_FILES+=usr/share/certs/trusted/Entrust_Root_Certification_Authority_-_G4.pem OLD_FILES+=usr/share/certs/trusted/SecureSign_RootCA11.pem diff --git a/sys/conf/NOTES b/sys/conf/NOTES index fc32acd681b3..081cb985c7fe 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1025,9 +1025,6 @@ device dummymbuf # # PF_DEFAULT_TO_DROP causes the default pf(4) rule to deny everything. # -# TCPPCAP enables code which keeps the last n packets sent and received -# on a TCP socket. -# # TCP_BLACKBOX enables enhanced TCP event logging. # # TCP_HHOOK enables the hhook(9) framework hooks for the TCP stack. @@ -1050,7 +1047,6 @@ options IPFILTER_LOOKUP #ipfilter pools options IPFILTER_DEFAULT_BLOCK #block all packets by default options IPSTEALTH #support for stealth forwarding options PF_DEFAULT_TO_DROP #drop everything by default -options TCPPCAP options TCP_BLACKBOX options TCP_HHOOK options SOCKET_HHOOK diff --git a/sys/conf/files b/sys/conf/files index 3be4c1d8e3dd..2f4b7126a9cd 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -4389,8 +4389,6 @@ netinet/tcp_output.c optional inet | inet6 netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6 netinet/tcp_hpts.c optional tcphpts inet | tcphpts inet6 netinet/tcp_ratelimit.c optional ratelimit inet | ratelimit inet6 -netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap \ - compile-with "${NORMAL_C} ${NO_WNONNULL}" netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 netinet/tcp_stacks/bbr.c optional inet tcphpts tcp_bbr | inet6 tcphpts tcp_bbr \ diff --git a/sys/conf/options b/sys/conf/options index c467dc9995c2..92f3c310c77b 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -479,7 +479,6 @@ ROUTETABLES opt_route.h FIB_ALGO opt_route.h RSS opt_rss.h SLIP_IFF_OPTS opt_slip.h -TCPPCAP opt_global.h SIFTR TCP_BLACKBOX opt_global.h TCP_HHOOK opt_global.h diff --git a/sys/netinet/tcp.h b/sys/netinet/tcp.h index 69a8116a2201..94d41ff67836 100644 --- a/sys/netinet/tcp.h +++ b/sys/netinet/tcp.h @@ -224,8 +224,8 @@ __tcp_set_flags(struct tcphdr *th, uint16_t flags) #define TCP_KEEPINTVL 512 /* L,N interval between keepalives */ #define TCP_KEEPCNT 1024 /* L,N number of keepalives before close */ #define TCP_FASTOPEN 1025 /* enable TFO / was created via TFO */ -#define TCP_PCAP_OUT 2048 /* number of output packets to keep */ -#define TCP_PCAP_IN 4096 /* number of input packets to keep */ +/* unused 2048 was TCP_PCAP_OUT */ +/* unused 4096 was TCP_PCAP_IN */ #define TCP_FUNCTION_BLK 8192 /* Set the tcp function pointers to the specified stack */ #define TCP_FUNCTION_ALIAS 8193 /* Get the current tcp function pointer name alias */ /* Options for Rack and BBR */ diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 2fc1e0deea16..29a6b431f311 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -112,9 +112,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #include #ifdef TCP_OFFLOAD #include @@ -1546,10 +1543,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, KASSERT(tp->t_state != TCPS_TIME_WAIT, ("%s: TCPS_TIME_WAIT", __func__)); -#ifdef TCPPCAP - /* Save segment, if requested. */ - tcp_pcap_add(th, m, &(tp->t_inpkts)); -#endif TCP_LOG_EVENT(tp, th, &so->so_rcv, &so->so_snd, TCP_LOG_IN, 0, tlen, NULL, true); diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 135e7d8493e2..bc5b42ee6f2c 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -85,9 +85,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -1466,10 +1463,6 @@ send: TCP_PROBE5(send, NULL, tp, ip6, tp, th); -#ifdef TCPPCAP - /* Save packet, if requested. */ - tcp_pcap_add(th, m, &(tp->t_outpkts)); -#endif /* TODO: IPv6 IP6TOS_ECT bit on */ error = ip6_output(m, inp->in6p_outputopts, &inp->inp_route6, @@ -1512,11 +1505,6 @@ send: TCP_PROBE5(send, NULL, tp, ip, tp, th); -#ifdef TCPPCAP - /* Save packet, if requested. */ - tcp_pcap_add(th, m, &(tp->t_outpkts)); -#endif - error = ip_output(m, inp->inp_options, &inp->inp_route, ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0), 0, inp); diff --git a/sys/netinet/tcp_pcap.c b/sys/netinet/tcp_pcap.c deleted file mode 100644 index f26287bd7f03..000000000000 --- a/sys/netinet/tcp_pcap.c +++ /dev/null @@ -1,452 +0,0 @@ -/*- - * Copyright (c) 2015 - * Jonathan Looney. All rights reserved. - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define M_LEADINGSPACE_NOWRITE(m) \ - ((m)->m_data - M_START(m)) - -int tcp_pcap_aggressive_free = 1; -static int tcp_pcap_clusters_referenced_cur = 0; -static int tcp_pcap_clusters_referenced_max = 0; - -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_aggressive_free, - CTLFLAG_RW, &tcp_pcap_aggressive_free, 0, - "Free saved packets when the memory system comes under pressure"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_clusters_referenced_cur, - CTLFLAG_RD, &tcp_pcap_clusters_referenced_cur, 0, - "Number of clusters currently referenced on TCP PCAP queues"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_clusters_referenced_max, - CTLFLAG_RW, &tcp_pcap_clusters_referenced_max, 0, - "Maximum number of clusters allowed to be referenced on TCP PCAP " - "queues"); - -static int tcp_pcap_alloc_reuse_ext = 0; -static int tcp_pcap_alloc_reuse_mbuf = 0; -static int tcp_pcap_alloc_new_mbuf = 0; -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_reuse_ext, - CTLFLAG_RD, &tcp_pcap_alloc_reuse_ext, 0, - "Number of mbufs with external storage reused for the TCP PCAP " - "functionality"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_reuse_mbuf, - CTLFLAG_RD, &tcp_pcap_alloc_reuse_mbuf, 0, - "Number of mbufs with internal storage reused for the TCP PCAP " - "functionality"); -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_alloc_new_mbuf, - CTLFLAG_RD, &tcp_pcap_alloc_new_mbuf, 0, - "Number of new mbufs allocated for the TCP PCAP functionality"); - -VNET_DEFINE(int, tcp_pcap_packets) = 0; -#define V_tcp_pcap_packets VNET(tcp_pcap_packets) -SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_pcap_packets, - CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(tcp_pcap_packets), 0, - "Default number of packets saved per direction per TCPCB"); - -/* Initialize the values. */ -static void -tcp_pcap_max_set(void) -{ - - tcp_pcap_clusters_referenced_max = nmbclusters / 4; -} - -void -tcp_pcap_init(void) -{ - - tcp_pcap_max_set(); - EVENTHANDLER_REGISTER(nmbclusters_change, tcp_pcap_max_set, - NULL, EVENTHANDLER_PRI_ANY); -} - -/* - * If we are below the maximum allowed cluster references, - * increment the reference count and return TRUE. Otherwise, - * leave the reference count alone and return FALSE. - */ -static __inline bool -tcp_pcap_take_cluster_reference(void) -{ - if (atomic_fetchadd_int(&tcp_pcap_clusters_referenced_cur, 1) >= - tcp_pcap_clusters_referenced_max) { - atomic_add_int(&tcp_pcap_clusters_referenced_cur, -1); - return FALSE; - } - return TRUE; -} - -/* - * For all the external entries in m, apply the given adjustment. - * This can be used to adjust the counter when an mbuf chain is - * copied or freed. - */ -static __inline void -tcp_pcap_adj_cluster_reference(struct mbuf *m, int adj) -{ - while (m) { - if (m->m_flags & M_EXT) - atomic_add_int(&tcp_pcap_clusters_referenced_cur, adj); - - m = m->m_next; - } -} - -/* - * Free all mbufs in a chain, decrementing the reference count as - * necessary. - * - * Functions in this file should use this instead of m_freem() when - * they are freeing mbuf chains that may contain clusters that were - * already included in tcp_pcap_clusters_referenced_cur. - */ -static void -tcp_pcap_m_freem(struct mbuf *mb) -{ - while (mb != NULL) { - if (mb->m_flags & M_EXT) - atomic_subtract_int(&tcp_pcap_clusters_referenced_cur, - 1); - mb = m_free(mb); - } -} - -/* - * Copy data from m to n, where n cannot fit all the data we might - * want from m. - * - * Prioritize data like this: - * 1. TCP header - * 2. IP header - * 3. Data - */ -static void -tcp_pcap_copy_bestfit(struct tcphdr *th, struct mbuf *m, struct mbuf *n) -{ - struct mbuf *m_cur = m; - int bytes_to_copy=0, trailing_data, skip=0, tcp_off; - - /* Below, we assume these will be non-NULL. */ - KASSERT(th, ("%s: called with th == NULL", __func__)); - KASSERT(m, ("%s: called with m == NULL", __func__)); - KASSERT(n, ("%s: called with n == NULL", __func__)); - - /* We assume this initialization occurred elsewhere. */ - KASSERT(n->m_len == 0, ("%s: called with n->m_len=%d (expected 0)", - __func__, n->m_len)); - KASSERT(n->m_data == M_START(n), - ("%s: called with n->m_data != M_START(n)", __func__)); - - /* - * Calculate the size of the TCP header. We use this often - * enough that it is worth just calculating at the start. - */ - tcp_off = th->th_off << 2; - - /* Trim off leading empty mbufs. */ - while (m && m->m_len == 0) - m = m->m_next; - - if (m) { - m_cur = m; - } - else { - /* - * No data? Highly unusual. We would expect to at - * least see a TCP header in the mbuf. - * As we have a pointer to the TCP header, I guess - * we should just copy that. (???) - */ -fallback: - bytes_to_copy = tcp_off; - if (bytes_to_copy > M_SIZE(n)) - bytes_to_copy = M_SIZE(n); - bcopy(th, n->m_data, bytes_to_copy); - n->m_len = bytes_to_copy; - return; - } - - /* - * Find TCP header. Record the total number of bytes up to, - * and including, the TCP header. - */ - while (m_cur) { - if ((caddr_t) th >= (caddr_t) m_cur->m_data && - (caddr_t) th < (caddr_t) (m_cur->m_data + m_cur->m_len)) - break; - bytes_to_copy += m_cur->m_len; - m_cur = m_cur->m_next; - } - if (m_cur) - bytes_to_copy += (caddr_t) th - (caddr_t) m_cur->m_data; - else - goto fallback; - bytes_to_copy += tcp_off; - - /* - * If we already want to copy more bytes than we can hold - * in the destination mbuf, skip leading bytes and copy - * what we can. - * - * Otherwise, consider trailing data. - */ - if (bytes_to_copy > M_SIZE(n)) { - skip = bytes_to_copy - M_SIZE(n); - bytes_to_copy = M_SIZE(n); - } - else { - /* - * Determine how much trailing data is in the chain. - * We start with the length of this mbuf (the one - * containing th) and subtract the size of the TCP - * header (tcp_off) and the size of the data prior - * to th (th - m_cur->m_data). - * - * This *should not* be negative, as the TCP code - * should put the whole TCP header in a single - * mbuf. But, it isn't a problem if it is. We will - * simple work off our negative balance as we look - * at subsequent mbufs. - */ - trailing_data = m_cur->m_len - tcp_off; - trailing_data -= (caddr_t) th - (caddr_t) m_cur->m_data; - m_cur = m_cur->m_next; - while (m_cur) { - trailing_data += m_cur->m_len; - m_cur = m_cur->m_next; - } - if ((bytes_to_copy + trailing_data) > M_SIZE(n)) - bytes_to_copy = M_SIZE(n); - else - bytes_to_copy += trailing_data; - } - - m_copydata(m, skip, bytes_to_copy, n->m_data); - n->m_len = bytes_to_copy; -} - -void -tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue) -{ - struct mbuf *n = NULL, *mhead; - - KASSERT(th, ("%s: called with th == NULL", __func__)); - KASSERT(m, ("%s: called with m == NULL", __func__)); - KASSERT(queue, ("%s: called with queue == NULL", __func__)); - - /* We only care about data packets. */ - while (m && m->m_type != MT_DATA) - m = m->m_next; - - /* We only need to do something if we still have an mbuf. */ - if (!m) - return; - - /* If we are not saving mbufs, return now. */ - if (queue->mq_maxlen == 0) - return; - - /* - * Check to see if we will need to recycle mbufs. - * - * If we need to get rid of mbufs to stay below - * our packet count, try to reuse the mbuf. Once - * we already have a new mbuf (n), then we can - * simply free subsequent mbufs. - * - * Note that most of the logic in here is to deal - * with the reuse. If we are fine with constant - * mbuf allocs/deallocs, we could ditch this logic. - * But, it only seems to make sense to reuse - * mbufs we already have. - */ - while (mbufq_full(queue)) { - mhead = mbufq_dequeue(queue); - - if (n) { - tcp_pcap_m_freem(mhead); - } - else { - /* - * If this held an external cluster, try to - * detach the cluster. But, if we held the - * last reference, go through the normal - * free-ing process. - */ - if (mhead->m_flags & M_EXTPG) { - /* Don't mess around with these. */ - tcp_pcap_m_freem(mhead); - continue; - } else if (mhead->m_flags & M_EXT) { - switch (mhead->m_ext.ext_type) { - case EXT_SFBUF: - /* Don't mess around with these. */ - tcp_pcap_m_freem(mhead); - continue; - default: - if (atomic_fetchadd_int( - mhead->m_ext.ext_cnt, -1) == 1) - { - /* - * We held the last reference - * on this cluster. Restore - * the reference count and put - * it back in the pool. - */ - *(mhead->m_ext.ext_cnt) = 1; - tcp_pcap_m_freem(mhead); - continue; - } - /* - * We were able to cleanly free the - * reference. - */ - atomic_subtract_int( - &tcp_pcap_clusters_referenced_cur, - 1); - tcp_pcap_alloc_reuse_ext++; - break; - } - } else { - tcp_pcap_alloc_reuse_mbuf++; - } - - n = mhead; - tcp_pcap_m_freem(n->m_next); - m_init(n, M_NOWAIT, MT_DATA, 0); - } - } - - /* Check to see if we need to get a new mbuf. */ - if (!n) { - if (!(n = m_get(M_NOWAIT, MT_DATA))) - return; - tcp_pcap_alloc_new_mbuf++; - } - - /* - * What are we dealing with? If a cluster, attach it. Otherwise, - * try to copy the data from the beginning of the mbuf to the - * end of data. (There may be data between the start of the data - * area and the current data pointer. We want to get this, because - * it may contain header information that is useful.) - * In cases where that isn't possible, settle for what we can - * get. - */ - if ((m->m_flags & (M_EXT | M_EXTPG)) && - tcp_pcap_take_cluster_reference()) { - n->m_data = m->m_data; - n->m_len = m->m_len; - mb_dupcl(n, m); - } - else if (((m->m_data + m->m_len) - M_START(m)) <= M_SIZE(n)) { - /* - * At this point, n is guaranteed to be a normal mbuf - * with no cluster and no packet header. Because the - * logic in this code block requires this, the assert - * is here to catch any instances where someone - * changes the logic to invalidate that assumption. - */ - KASSERT((n->m_flags & (M_EXT | M_PKTHDR)) == 0, - ("%s: Unexpected flags (%#x) for mbuf", - __func__, n->m_flags)); - n->m_data = n->m_dat + M_LEADINGSPACE_NOWRITE(m); - n->m_len = m->m_len; - if (m->m_flags & M_EXTPG) - m_copydata(m, 0, m->m_len, n->m_data); - else - bcopy(M_START(m), n->m_dat, - m->m_len + M_LEADINGSPACE_NOWRITE(m)); - } - else { - /* - * This is the case where we need to "settle for what - * we can get". The most probable way to this code - * path is that we've already taken references to the - * maximum number of mbuf clusters we can, and the data - * is too long to fit in an mbuf's internal storage. - * Try for a "best fit". - */ - tcp_pcap_copy_bestfit(th, m, n); - - /* Don't try to get additional data. */ - goto add_to_queue; - } - - if (m->m_next) { - n->m_next = m_copym(m->m_next, 0, M_COPYALL, M_NOWAIT); - tcp_pcap_adj_cluster_reference(n->m_next, 1); - } - -add_to_queue: - /* Add the new mbuf to the list. */ - if (mbufq_enqueue(queue, n)) { - /* This shouldn't happen. If INVARIANTS is defined, panic. */ - KASSERT(0, ("%s: mbufq was unexpectedly full!", __func__)); - tcp_pcap_m_freem(n); - } -} - -void -tcp_pcap_drain(struct mbufq *queue) -{ - struct mbuf *m; - while ((m = mbufq_dequeue(queue))) - tcp_pcap_m_freem(m); -} - -void -tcp_pcap_tcpcb_init(struct tcpcb *tp) -{ - mbufq_init(&(tp->t_inpkts), V_tcp_pcap_packets); - mbufq_init(&(tp->t_outpkts), V_tcp_pcap_packets); -} - -void -tcp_pcap_set_sock_max(struct mbufq *queue, int newval) -{ - queue->mq_maxlen = newval; - while (queue->mq_len > queue->mq_maxlen) - tcp_pcap_m_freem(mbufq_dequeue(queue)); -} - -int -tcp_pcap_get_sock_max(struct mbufq *queue) -{ - return queue->mq_maxlen; -} diff --git a/sys/netinet/tcp_pcap.h b/sys/netinet/tcp_pcap.h deleted file mode 100644 index 8250c06d4ce0..000000000000 --- a/sys/netinet/tcp_pcap.h +++ /dev/null @@ -1,39 +0,0 @@ -/*- - * Copyright (c) 2015 - * Jonathan Looney. All rights reserved. - * - * 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 _NETINET_TCP_PCAP_H_ -#define _NETINET_TCP_PCAP_H_ - -void tcp_pcap_init(void); -void tcp_pcap_add(struct tcphdr *th, struct mbuf *m, struct mbufq *queue); -void tcp_pcap_drain(struct mbufq *queue); -void tcp_pcap_tcpcb_init(struct tcpcb *tp); -void tcp_pcap_set_sock_max(struct mbufq *queue, int newval); -int tcp_pcap_get_sock_max(struct mbufq *queue); - -extern int tcp_pcap_aggressive_free; - -#endif /* _NETINET_TCP_PCAP_H_ */ diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index f6317815521d..34964ed8283c 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -109,9 +109,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -1415,13 +1412,6 @@ tcp_drain(void *ctx __unused, int flags __unused) tcp_clean_sackreport(tcpb); #ifdef TCP_BLACKBOX tcp_log_drain(tcpb); -#endif -#ifdef TCPPCAP - if (tcp_pcap_aggressive_free) { - /* Free the TCP PCAP queues. */ - tcp_pcap_drain(&(tcpb->t_inpkts)); - tcp_pcap_drain(&(tcpb->t_outpkts)); - } #endif } } @@ -1535,9 +1525,6 @@ tcp_init(void *arg __unused) tcp_bad_csums = counter_u64_alloc(M_WAITOK); tcp_pacing_failures = counter_u64_alloc(M_WAITOK); tcp_dgp_failures = counter_u64_alloc(M_WAITOK); -#ifdef TCPPCAP - tcp_pcap_init(); -#endif hashsize = tcp_tcbhashsize; if (hashsize == 0) { @@ -2337,12 +2324,6 @@ tcp_newtcpcb(struct inpcb *inp, struct tcpcb *listening_tcb) * which may match an IPv4-mapped IPv6 address. */ inp->inp_ip_ttl = V_ip_defttl; -#ifdef TCPPCAP - /* - * Init the TCP PCAP queues. - */ - tcp_pcap_tcpcb_init(tp); -#endif #ifdef TCP_BLACKBOX /* Initialize the per-TCPCB log data. */ tcp_log_tcpcbinit(tp); @@ -2419,11 +2400,6 @@ tcp_discardcb(struct tcpcb *tp) if (tp->t_flags & TF_TOE) tcp_offload_detach(tp); #endif -#ifdef TCPPCAP - /* Free the TCP PCAP queues. */ - tcp_pcap_drain(&(tp->t_inpkts)); - tcp_pcap_drain(&(tp->t_outpkts)); -#endif /* Allow the CC algorithm to clean up after itself. */ if (CC_ALGO(tp)->cb_destroy != NULL) diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 13e66f758d45..fbc204097b25 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -95,9 +95,6 @@ #include #include #include -#ifdef TCPPCAP -#include -#endif #ifdef TCP_OFFLOAD #include #endif @@ -2342,26 +2339,6 @@ unlock_and_done: TP_MAXIDLE(tp)); goto unlock_and_done; -#ifdef TCPPCAP - case TCP_PCAP_OUT: - case TCP_PCAP_IN: - INP_WUNLOCK(inp); - error = sooptcopyin(sopt, &optval, sizeof optval, - sizeof optval); - if (error) - return (error); - - INP_WLOCK_RECHECK(inp); - if (optval >= 0) - tcp_pcap_set_sock_max( - (sopt->sopt_name == TCP_PCAP_OUT) ? - &(tp->t_outpkts) : &(tp->t_inpkts), - optval); - else - error = EINVAL; - goto unlock_and_done; -#endif - case TCP_FASTOPEN: { struct tcp_fastopen tfo_optval; @@ -2592,16 +2569,6 @@ unhold: INP_WUNLOCK(inp); error = sooptcopyout(sopt, &ui, sizeof(ui)); break; -#ifdef TCPPCAP - case TCP_PCAP_OUT: - case TCP_PCAP_IN: - optval = tcp_pcap_get_sock_max( - (sopt->sopt_name == TCP_PCAP_OUT) ? - &(tp->t_outpkts) : &(tp->t_inpkts)); - INP_WUNLOCK(inp); - error = sooptcopyout(sopt, &optval, sizeof optval); - break; -#endif case TCP_FASTOPEN: optval = tp->t_flags & TF_FASTOPEN; INP_WUNLOCK(inp); diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 31663ed48f81..5be024ededc7 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -499,10 +499,6 @@ struct tcpcb { uint64_t tcp_cnt_counters[TCP_NUM_CNT_COUNTERS]; uint64_t tcp_proc_time[TCP_NUM_CNT_COUNTERS]; #endif -#ifdef TCPPCAP - struct mbufq t_inpkts; /* List of saved input packets. */ - struct mbufq t_outpkts; /* List of saved output packets. */ -#endif }; #endif /* _KERNEL || _WANT_TCPCB */ diff --git a/tools/build/test-includes/badfiles.inc b/tools/build/test-includes/badfiles.inc index 5f088d3862aa..1e5182e40911 100644 --- a/tools/build/test-includes/badfiles.inc +++ b/tools/build/test-includes/badfiles.inc @@ -280,7 +280,6 @@ BADHDRS= \ netinet/tcp_log_buf.h \ netinet/tcp_lro.h \ netinet/tcp_offload.h \ - netinet/tcp_pcap.h \ netinet/tcp_ratelimit.h \ netinet/tcp_var.h \ netinet/tcpip.h \ diff --git a/usr.sbin/tcpsso/tcpsso.c b/usr.sbin/tcpsso/tcpsso.c index 95773fe5a4d7..14ea71f9ebbd 100644 --- a/usr.sbin/tcpsso/tcpsso.c +++ b/usr.sbin/tcpsso/tcpsso.c @@ -193,8 +193,6 @@ static struct so_name so_names[] = { tcp_entry(TCP_KEEPINTVL), /* unsigned int */ tcp_entry(TCP_KEEPINIT), /* unsigned int */ tcp_entry(TCP_KEEPCNT), /* unsigned int */ - tcp_entry(TCP_PCAP_OUT), /* int */ - tcp_entry(TCP_PCAP_IN), /* int */ tcp_entry(TCP_LOG), /* int */ tcp_entry(TCP_LOGID), /* char * */ tcp_entry(TCP_LOGDUMP), /* char * */ From nobody Mon Mar 31 17:25:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ1K4LZ6z5sKND; Mon, 31 Mar 2025 17:25: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 4ZRJ1J6TyHz3b1B; Mon, 31 Mar 2025 17:25:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743441924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cMDlfS8xzBSaojwcJlRShVhzT2RddsfLbHypH/qSHEg=; b=hTGlWMtetKQoNGA7c+WxyRE9U7D4AmeozwlD0+WLs9iI3OiNvk39lh1oC0p9PixK6i3BrB V5lfZk9vctC4FJlDziAH2tet5gUmNNPnVtoTD8McSm2wp5C8heTsMDZDeWUruEB8Opllgl qcedQOb8J6n6FmbX1GzOreD2UqPnAUbtfMWyN4DHJeHKiEPAyMD87wJVGLz/aLr8KBRiYx /aFg0KOLWsaLNJ/Nlf+eONhGMscp+0dldAKV9TEplljS2mSQmQVARd3bExR6BEP9vzB9WH fPxZe/w+o17QZJCtOsgr0BmGr0RIKEAbhPYDWwc/kD284lbYDsqWV/z5aE5H9g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743441924; a=rsa-sha256; cv=none; b=QbRT5D8RlRht3Dq0uDAP8qKrmHx8DSoCecqscuIdOZoQ4vqhGR1/JMIxjZ+yxcF/TZRyM7 RlFyn0BDPsIg7dDfIcCA+ccCyHZinQrICNo7PtJd/tqRZ3vl+YW7FOKUfIxzf3biIBykFS 1uFP1JdHKlltwD/EYqyYSqVkWrfG68irJlk7NkqvL69WUbLwY79k4ZW5J6aOoIyPh1snbI vARoTSifQm27ZVOnHrWnmjcRx7/hqrGB554eNyFzwBA5cqBo1bDnz9e9N8G15dpaCrgXEs +KWMLzYYMMbdBqIMakKvIjRYlpWOQuPqzSu72kHCPTG4EDOFGx82sx0XVMXsog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743441924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cMDlfS8xzBSaojwcJlRShVhzT2RddsfLbHypH/qSHEg=; b=w7PFlJo5V55VVaSP+aQc1R0QjmSVriWwvaWKfT+KKSAahMOIkC83uYJkzwkPUbyknqed1i QBrrmADTSDZAm2A1qMusd0X6YKhx9/byynYPivnPUpR5Lz3bNQkr67q3IZE4o56nXoa39+ a2O5ePpEx1YMvF3w6acjY70yNWoZfPLKJA1MOUEJ4O+TnrErWsN18kFV5SuK1Z1amNHH8A 8/jAUyBpg21JwdPKB18KtUdB8fM843iWcFBncftOivk3BzGS2L3lcfbAfLGoC7Miu2x38b C8qSIMfS12M6xSlIdHHLxrSav6ORsfWkkv9dBPAGd49hS5980XNydq+JGJ1AgA== 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 4ZRJ1J64PGzvFH; Mon, 31 Mar 2025 17:25: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 52VHPONY024797; Mon, 31 Mar 2025 17:25:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHPOv3024793; Mon, 31 Mar 2025 17:25:24 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:25:24 GMT Message-Id: <202503311725.52VHPOv3024793@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Ziaee Subject: git: 18b3e374f533 - stable/14 - hier.7: Add /dev/gpt List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 18b3e374f533e50daf1cd54a962a8194d2eebf7b Auto-Submitted: auto-generated The branch stable/14 has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=18b3e374f533e50daf1cd54a962a8194d2eebf7b commit 18b3e374f533e50daf1cd54a962a8194d2eebf7b Author: Roman Schmidt AuthorDate: 2025-03-19 06:05:56 +0000 Commit: Alexander Ziaee CommitDate: 2025-03-31 17:24:07 +0000 hier.7: Add /dev/gpt While here, fix a typo. MFC after: 3 days Reviewed by: mhorne, emaste, ziaee Approved by: mhorne (mentor) Pull Request: https://github.com/freebsd/freebsd-src/pull/1608 (cherry picked from commit f47cbb29e1c2bcb5b5ad838d2d5342a47b0c4692) --- share/man/man7/hier.7 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7 index 82600ad7b53e..c95384fb1c30 100644 --- a/share/man/man7/hier.7 +++ b/share/man/man7/hier.7 @@ -156,6 +156,8 @@ file descriptor files; see .Xr fd 4 .It Pa fd0 first floppy drive +.It Pa gpt/ +filesystems by GPT label .It Pa mmcsd0 first SD storage device .It Pa mmcsd0s1 @@ -168,7 +170,7 @@ infinite loop that accepts anything and contains nothing .It Pa nvd0 first NVMe storage device using NVMe namespaces .It Pa pts/ -pseduo-terminals; see +pseudo-terminals; see .Xr pts 4 .It Pa random source of weak randomness; see From nobody Mon Mar 31 17:25:25 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ1L3PCzz5sKRK; Mon, 31 Mar 2025 17:25: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 4ZRJ1L0kClz3b39; Mon, 31 Mar 2025 17:25:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743441926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WajD4R087vlXnvOFzdqi/AvEvl3vgEwZFkzbWQ9XEEM=; b=IdpbNFpozuE96zzLpqIHzCPEa/kzn41KUhcQdVOlb6BZTMTjOvI0vb4tjyBd47YP6hXHJE E+USV/LF7958NZignA+5QT80MGoaeAFmeqRh1NSD1uP3eS/i0JX90Xc+XwHJ/yW2SyV2NY RorjFHYYSfqrML/6PvRMrwZZ7a2aLvXlonbyZZ7zSzqLgqb0XgNyeUqGSNX3hUJJjXk3jG X69lfUs4ZNMh3wFEcZx93e1SC5tqkiilTVqEM1mhGMGOovWAVWaJYU0YVQP40zAX1QKVTl HHJJLjUsSoTPqnT3+QjEv1+Awau3hEvyPSvdhNyT9vPJQCXO6DO88RVfz21KrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743441926; a=rsa-sha256; cv=none; b=Zd8Sr6RCKZ9zJvEi/DmZnBLzWEXUZ+zkAm6PSZwxqt6KBTivnVQTVF+mGbYwpEDRRJOI4h TO4xZD01UMzUG1wad6gwRsuAQUiM/6YBj6G7FduZWYp3GWwkJuM1ruG+HV4BYO/PayZJYj WCijeTXcNos+4Rxh2/Cpky/ExvhkZFxFh8JKTTz6PXbo+mJHe4FifkeyGogkVvr61dc4W3 7PQTMJF94tS/GCeAUmZXx+ybvNpIxXam5R+M21l8AiiTlAvQoY1uiff9ykCuLGGLGwerNK /MRLk4zbdODlbUvlnmtET5jDsaL/Tu1qB0eKql4YoALDYtmfiq1NtB4SgdgmvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743441926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WajD4R087vlXnvOFzdqi/AvEvl3vgEwZFkzbWQ9XEEM=; b=awcNwqKU067WAwqo4q1SaIMRzW+ua0lT7i3MPh3fXBhhH3ndy0cHH1DVmF3MD0S9y9GUEr EdQgEXvEVgvVORJwsqf1d2XwIdbvbDU9hnfFlwb9cmCKO8260mLGqr4AmkCgBNnubVhevQ MA6CaXHyNKyewjCKhl+Vxfpt28O+afUVdZ4c5vjxGrro+/uA9Y+YCjRqV4XZN1VgAGDp/O rrfgX+0UIg2o/QQ/s6tOTprJLkWtGleGNyOpBTl+MYOKs+VXm3QAWXH9Y73cDaImRCZXhI BOT/yj62Sa6pkesNNe5/wkDqWgZUD5bvBrv8B2pJ4jfoRD2nnuzV6VG6QD2yqg== 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 4ZRJ1L04DRzvFJ; Mon, 31 Mar 2025 17:25: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 52VHPPUG024836; Mon, 31 Mar 2025 17:25:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHPPGX024833; Mon, 31 Mar 2025 17:25:25 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:25:25 GMT Message-Id: <202503311725.52VHPPGX024833@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Ziaee Subject: git: bb9c4de17bd1 - stable/14 - hier.7: Storage partitions are not filesystems List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bb9c4de17bd1c5144dac5ed16a523f77e464a392 Auto-Submitted: auto-generated The branch stable/14 has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=bb9c4de17bd1c5144dac5ed16a523f77e464a392 commit bb9c4de17bd1c5144dac5ed16a523f77e464a392 Author: Alexander Ziaee AuthorDate: 2025-03-26 17:51:04 +0000 Commit: Alexander Ziaee CommitDate: 2025-03-31 17:24:36 +0000 hier.7: Storage partitions are not filesystems I recommended the incorrect text to the submitter. MFC after: 3 days Fixes: f47cbb29e1c2 (Add /dev/gpt) Reported by: Mark Millard Reviewed by: imp, mhorne Approved by: mhorne (mentor) Differential Revision: https://reviews.freebsd.org/D49523 (cherry picked from commit 50296dccddf1a7734be2aef606cd8e0408ee8780) --- share/man/man7/hier.7 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7 index c95384fb1c30..70cb9f208764 100644 --- a/share/man/man7/hier.7 +++ b/share/man/man7/hier.7 @@ -157,7 +157,7 @@ file descriptor files; see .It Pa fd0 first floppy drive .It Pa gpt/ -filesystems by GPT label +storage partitions by GPT label .It Pa mmcsd0 first SD storage device .It Pa mmcsd0s1 From nobody Mon Mar 31 17:26:42 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ2p4YBzz5sKTD; Mon, 31 Mar 2025 17:26: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 4ZRJ2p3ts0z3bHB; Mon, 31 Mar 2025 17:26:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442002; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XN/M+tSgG+JezizPiodianONBqS7R+yQudjun2BfNsM=; b=RksyvFQJUkUeXbI1t8aWvo09IKZ3qzwcK12spikKUJnnXQXIycA7EbrV3tEHgc63jJuxxx wnLkeLIdL3AZwQLeHOErcDeqaaJczQAljrC4nBQKaqJuRVYHEvlcAK4AvZrPO0KSOTD1Wl PlIBjVaVenupI+hjkhbipLfPrG7x2MKRBBXYvGT7sZkjLxW/uarU4BrTcpHSsQ1+DF8HV/ bUYSlqlgRiE5TdQNFCpy64FXENL0IED3b7joqo0i1IRnRx+vPE/UL7lJcYpRHlJ51UKEN7 oEY5IK4mqGCKoKvDuGr7jctOFW642Lfqg5D1bmX5VbKSi7WNg5dJZ27Jhlc36A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442002; a=rsa-sha256; cv=none; b=tiwut4f0evkKL2ASOKCN4tAK2iKzDMdDA/quBu4I9jwwh7pTt8468wZYgdu3R+rGGtZwWm elHwRbRRvcDagkbJqO1klg3GgqpGBdbY69s3XGHAKY51D0Kc0K0WSmPn+vWLsTIpPbNPnI eRxDf3JbS+Bwtfyj/zhfGjLIYx+Z/G9N3WYNg92RoZR74Mpgcy9krZODraIUImLL03AIdT gdcvqeaY5u0ppWUbOXn7pramIPr9wx5AAjtxzwAw3T2vlASSfWjMo6yny9hyGKBCYf1zDQ 7yfgVbxs3qbRUG41r/fg3xHbp/7u/9hC+RE/H4OG6hxDwVwGgLU7diHXrZfScg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442002; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XN/M+tSgG+JezizPiodianONBqS7R+yQudjun2BfNsM=; b=NIQ+DS8Vw8ThaQ+2Mtp7ZqRvQObWH5C9DvvGXbJvgIClOiGdcUqG32YIIaFJPvFO31q4Ua OF0GnHfLsrn53BgmXz85GVCkDrEhJThwh4igqsrsBt7vvIXhXZEz/89e49RoX1E4kJQ1yB QGCgyk/o0QILIY0sJzj2J8ieKtpOJQqUCoeTt76XGojSGE8BCOEo32k8nUI0mAPd2hb2kM vfS4G915HK/Mmd/5qIuieSas13Ul/Kn0Fagwk2iyeckMxwHoCXr1QIek/TgTSoIYDo6+m+ 71PruIaTHoOpxZNhdRQ4Cmc9FmpH6/LPlPFijFBaKHF3neaXGapLC9i1wwUVWw== 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 4ZRJ2p3JMxzvKx; Mon, 31 Mar 2025 17:26: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 52VHQgqs025321; Mon, 31 Mar 2025 17:26:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHQgHt025318; Mon, 31 Mar 2025 17:26:42 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:26:42 GMT Message-Id: <202503311726.52VHQgHt025318@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Ziaee Subject: git: 1fdca2a3a935 - stable/14 - top: Polish key bindings in usage and manual List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1fdca2a3a935176ab307b8d8d25ad689b4188638 Auto-Submitted: auto-generated The branch stable/14 has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=1fdca2a3a935176ab307b8d8d25ad689b4188638 commit 1fdca2a3a935176ab307b8d8d25ad689b4188638 Author: Alexander Ziaee AuthorDate: 2025-03-23 18:28:53 +0000 Commit: Alexander Ziaee CommitDate: 2025-03-31 17:26:15 +0000 top: Polish key bindings in usage and manual Organize key bindings by ascii(7) for consistency and maintainability, mark them as Interactive Commands, wordsmith them, and sync their organization between the manual and help screen. MFC after: 3 days PR: 282734 Fixes: c8aa5e526 (move command mapping to commands.c) Reviewed by: imp, mhorne, Jim Brown Approved by: mhorne (mentor) Differential Revision: https://reviews.freebsd.org/D49462 (cherry picked from commit 0a85254d5a33800600477ce57fbaab64591aa6ea) --- usr.bin/top/commands.c | 26 +++---- usr.bin/top/top.1 | 183 +++++++++++++++++++++++++------------------------ 2 files changed, 105 insertions(+), 104 deletions(-) diff --git a/usr.bin/top/commands.c b/usr.bin/top/commands.c index e65f4ee6c4c4..3fa63459f2e1 100644 --- a/usr.bin/top/commands.c +++ b/usr.bin/top/commands.c @@ -51,35 +51,35 @@ static int str_addarg(char *str, int len, char *arg, bool first); const struct command all_commands[] = { - {'C', "toggle the displaying of weighted CPU percentage", false, CMD_wcputog}, + {' ', "update the display", false, CMD_update}, + {'/', "filter on command name (+ selects all commands)", false, CMD_grep}, + {'a', "toggle the display of process titles", false, CMD_showargs}, + {'C', "toggle the display of raw or weighted CPU percentage", false, CMD_wcputog}, {'d', "change number of displays to show", false, CMD_displays}, {'e', "list errors generated by last \"kill\" or \"renice\" command", false, CMD_errors}, - {'H', "toggle the displaying of threads", false, CMD_thrtog}, + {'H', "toggle the display of threads", false, CMD_thrtog}, {'h', "show this help text", true, CMD_help}, {'?', NULL, true, CMD_help}, - {'/', "filter on command name (+ selects all commands)", false, CMD_grep}, - {'i', "toggle the displaying of idle processes", false, CMD_idletog}, + {'i', "toggle the display of idle processes", false, CMD_idletog}, {'I', NULL, false, CMD_idletog}, - {'j', "toggle the displaying of jail ID", false, CMD_jidtog}, {'J', "display processes for only one jail (+ selects all jails)", false, CMD_jail}, + {'j', "toggle the display of jail ID", false, CMD_jidtog}, {'k', "kill processes; send a signal to a list of processes", false, CMD_kill}, - {'q', "quit" , true, CMD_quit}, {'m', "toggle the display between 'cpu' and 'io' modes", false, CMD_viewtog}, {'n', "change number of processes to display", false, CMD_number}, {'#', NULL, false, CMD_number}, {'o', "specify the sort order", false, CMD_order}, + {'P', "toggle the display of per-CPU statistics", false, CMD_pcputog}, {'p', "display one process (+ selects all processes)", false, CMD_pid}, - {'P', "toggle the displaying of per-CPU statistics", false, CMD_pcputog}, + {'q', "quit" , true, CMD_quit}, {'r', "renice a process", false, CMD_renice}, + {'S', "toggle the display of system processes", false, CMD_viewsys}, {'s', "change number of seconds to delay between updates", false, CMD_delay}, - {'S', "toggle the displaying of system processes", false, CMD_viewsys}, - {'a', "toggle the displaying of process titles", false, CMD_showargs}, - {'T', "toggle the displaying of thread IDs", false, CMD_toggletid}, + {'T', "toggle the display of thread IDs", false, CMD_toggletid}, {'t', "toggle the display of this process", false, CMD_selftog}, {'u', "display processes for only one user (+ selects all users)", false, CMD_user}, {'w', "toggle the display of swap use for each process", false, CMD_swaptog}, - {'z', "toggle the displaying of the system idle process", false, CMD_kidletog}, - {' ', "update the display", false, CMD_update}, + {'z', "toggle the display of the system idle process", false, CMD_kidletog}, {0, NULL, true, CMD_NONE} }; @@ -108,7 +108,7 @@ show_help(void) } else if (curcmd->c == ' '){ /* special case space rather than introducing a "display string" to * the struct */ - sprintf(keys, "SPC"); + sprintf(keys, "space"); } else { sprintf(keys, "%c", curcmd->c); } diff --git a/usr.bin/top/top.1 b/usr.bin/top/top.1 index ca74860aaa35..3443df0f8c22 100644 --- a/usr.bin/top/top.1 +++ b/usr.bin/top/top.1 @@ -1,4 +1,4 @@ -.Dd November 18, 2021 +.Dd March 25, 2025 .Dt TOP 1 .Os .Sh NAME @@ -235,7 +235,7 @@ or .Dq all . Boolean flags are toggles. A second specification of any of these options will negate the first. -.Sh "INTERACTIVE MODE" +.Sh INTERACTIVE MODE When .Nm is running in @@ -255,9 +255,8 @@ is between displays; that is, while it is waiting for seconds to elapse. If this is the case, the command will be processed and the display will be updated immediately thereafter -(reflecting any changes that the command may have specified). -This -happens even if the command was incorrect. +.Pq reflecting any changes that the command may have specified . +This happens even if the command was incorrect. If a key is pressed while .Nm is in the middle of updating the display, it will finish the update and @@ -269,65 +268,54 @@ in, the user's erase and kill keys (as set up by the command .Xr stty 1 ) are recognized, and a newline terminates the input. .Pp -These commands are currently recognized (^L refers to control-L): +The bindings are as follows: .Bl -tag -width indent -.It ^L -Redraw the screen. -.It h -Display a summary of the commands (help screen). -Version information -is included in this display. -.It q -Quit -.Nm -.It d -Change the number of displays to show (prompt for new number). -Remember that the next display counts as one, so typing 'd1' will make -.Nm -show one final display and then immediately exit. -.It / -Display only processes that contain the specified string in their -command name. -If displaying arguments is enabled, the arguments are searched -too. '+' shows all processes. -.It m -Toggle the display between 'cpu' and 'io' modes. -.It n or # -Change the number of processes to display (prompt for new number). -.It s -Change the number of seconds to delay between displays -(prompt for new number). -.It S -Toggle the display of system processes. -.It a -Toggle the display of process titles. -.It k +.It Ic space +Update the display. +.It Ic / +Filter by command name. +Prompt for +.Ar string +or +.Ql Ic + +to show all processes. +.It Ic a +Toggle display of process titles. +.It Ic C +Toggle display of raw or weighted CPU percentage. +.It Ic d +Change the number of remaining displays to show before exit. +Prompt for new number. +.It Ic e +Display a list of system errors (if any) generated by the last command. +.It Ic H +Toggle display of threads. +.It Ic h No or Ic \&? +Display a summary of the commands (help screen) and version information. +.It Ic i No or Ic I +Toggle display of idle processes. +.It Ic J +Filter processes owned by a specific jail. +Prompt for jail name or +.Ql Ic + +for all processes belonging to all jails and the host. +This will also enable the display of JID. +.It Ic j +Toggle display of +.Xr jail 8 +ID. +.It Ic k Send a signal .Pq SIGKILL by default to a list of processes. This acts similarly to the command .Xr kill 1 . -.It r -Change the priority -.Pq the Dq nice -of a list of processes. -This acts similarly to -.Xr renice 8 . -.It u -Display only processes owned by a specific set of usernames (prompt for -username). -If the username specified is simply -.Dq + -or -.Dq - , -then processes belonging to all users will be displayed. -Usernames can be added -to and removed from the set by prepending them with -.Dq + -and -.Dq - , -respectively. -.It o +.It Ic m +Toggle the display between 'cpu' and 'io' modes. +.It Ic n No or Ic # +Change the number of processes to display. +Prompt for new number. +.It Ic o Change the order in which the display is sorted. The sort key names include .Dq cpu , @@ -336,41 +324,54 @@ The sort key names include and .Dq time. The default is cpu. -.It p -Display a specific process (prompt for pid). -If the pid specified is simply -.Dq + , -then show all processes. -.It e -Display a list of system errors (if any) generated by the last -command. -.It H -Toggle the display of threads. -.It i or I -Toggle the display of idle processes. -.It j -Toggle the display of -.Xr jail 8 -ID. -.It J -Display only processes owned by a specific jail (prompt for jail). -If the jail specified is simply -.Dq + , -then processes belonging -to all jails and the host will be displayed. -This will also enable the display of JID. -.It P -Toggle the display of per-CPU statistics. -.It T -Toggle display of TID and PID -.It t -Toggle the display of the +.It Ic P +Toggle display of per-CPU statistics. +.It Ic p +Filter by exact process ID. +Prompt for +.Ar PID +or +.Ql Ic + +to show all processes. +.It Ic q +Quit +.Nm . +.It Ic r +Change the priority +.Pq the Dq nice +of a list of processes. +This acts similarly to +.Xr renice 8 . +.It Ic S +Toggle the display of system processes. +.It Ic s +Change the number of seconds to delay between displays. +Prompt for new number. +.It Ic T +Toggle display between thread ID and process ID. +.It Ic t +Toggle display of the .Nm process. -.It w -Toggle the display of swap usage. -.It z -Toggle the display of the system idle process. +.It Ic u +Filter by exact process owner username. +Prompt for +.Ar username +or +.Ql Ic - Ns +.No / Ns +.Ql Ic + +for all users. +Usernames can be added +to and removed from the set by prepending them with +.Ql + +and +.Ql - , +respectively. +.It Ic w +Toggle display of swap usage. +.It Ic z +Toggle display of the system idle process. .El .Sh "THE DISPLAY" The top few lines of the display show general information From nobody Mon Mar 31 17:26:43 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ2q5bFVz5sKPH; Mon, 31 Mar 2025 17:26: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 4ZRJ2q4rllz3bZW; Mon, 31 Mar 2025 17:26:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442003; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zvy7n21xtVAYknEuu2f1agsiIrcyXCd8tgjJl1P1Ujw=; b=KH0xfMRWZCnOUSO8wC03iBY/XHbAX1W2S4ivfADzyf4tIrYsS0dxi+TasE2BhPooSYN4su hvexZhACKl1mfY2iwu/P+fw6MRv4MhKp5xhnJA+FfyutQ3/BVeJVnefj97tI6S1/zHTkFy VbGgxHdedZoM8fprJctpRkJ8if/HNZbDN0b9Vrmy2wMMM++wUqS7xHUpKUUTxmjEqby62B H+Jv+KyGP+RC+O2bnvXoANQjZT77P7Kp79uerroKcuvjj36wwWnJcbR8cRMFP5wcjVIj6A KikIS/mUTu0q89Arq0VtejMvg8L/ExiRqm7Xj0xTza+7gGjZu/fnq5tBXm2xhA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442003; a=rsa-sha256; cv=none; b=Pbt1Q6rfoGlrB9taqq9JfA0KMH4btt+WRHk4IkBdzvF2w2k/RF0pBFi3wDLZw5/KvjLviw wpFDFw6tajqVfCBaoUslGl417c1XUdCWUcKELg7uLdF3Ew+Sf7RKb7N0mvH41hMY6mHdjC sS59tXeIb+eyI1WNNy4KGV8T8v7jA2IqyBBddyPl+7w9ez961n+UK87MZWHlG+biYsYFeN hl5pLz4Hn6J6S9WxH0OgvmnQA3nXL5z6Va3vgIT0nZXTaAdRbKA+ttVQA1akpbCaL11jsM ujYemg8NcLU5It1p9qrf1GoIiHFGCx8kusy26eZ6d7f1afk+kgs3jXNoJCeEjw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442003; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zvy7n21xtVAYknEuu2f1agsiIrcyXCd8tgjJl1P1Ujw=; b=Go04ohsdJfVAqZNe1frTbIb2V6ipP1pcSe6DAFEUY6cDnoU4ofZjuMG9eDZs7DAshU5s6r /MAVlDgz6EH5YpkvwCS8UTD0ePa3HjPfE8ngRO8X9n32qkY1G7nJaqoW9eTEMQWK4KPS/P iWt6jIY9cExjOPN2Tmpn4KulZGBa8dzywuoktfvzDNptL1An+5XmMqDuyoOuUWaLlX973j bXSz7jqG3M0efrluj7bPnxWQcajyHs2V5fiB/tB1Pv0lactwa7+lUgm8jfVeA3kt70cyBQ dr4bKlS/zWPZRR5IaJjr813azcF3qlrxOFsgFWRx02+IwLgZhkvuH38NpZa2Tg== 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 4ZRJ2q4GKxzv4j; Mon, 31 Mar 2025 17:26: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 52VHQhDT025354; Mon, 31 Mar 2025 17:26:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHQhiK025351; Mon, 31 Mar 2025 17:26:43 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:26:43 GMT Message-Id: <202503311726.52VHQhiK025351@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Ziaee Subject: git: c5411382707f - stable/14 - top: Sync usage and synopsis List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ziaee X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c5411382707f7b6dde9516166158ac15c50b7400 Auto-Submitted: auto-generated The branch stable/14 has been updated by ziaee: URL: https://cgit.FreeBSD.org/src/commit/?id=c5411382707f7b6dde9516166158ac15c50b7400 commit c5411382707f7b6dde9516166158ac15c50b7400 Author: Alexander Ziaee AuthorDate: 2025-03-26 04:42:51 +0000 Commit: Alexander Ziaee CommitDate: 2025-03-31 17:26:26 +0000 top: Sync usage and synopsis Switching between io and cpu sorting uses a great example in the usage. [-m io | cpu]. Use that everywhere. MFC after: 3 days Reviewed by: mhorne Approved by: mhorne (mentor) Differential Revision: https://reviews.freebsd.org/D49515 (cherry picked from commit 187d954eab94fdcb33609d91966dbd727acfd720) --- usr.bin/top/top.1 | 4 ++-- usr.bin/top/top.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.bin/top/top.1 b/usr.bin/top/top.1 index 3443df0f8c22..03f042acc744 100644 --- a/usr.bin/top/top.1 +++ b/usr.bin/top/top.1 @@ -6,10 +6,10 @@ .Nd display and update information about the top cpu processes .Sh SYNOPSIS .Nm -.Op Fl abCHIijnPpqSTtuvxz +.Op Fl abCHIijnPqSTtuvwz .Op Fl d Ar count .Op Fl J Ar jail -.Op Fl m Ar mode +.Op Fl m Ar cpu | io .Op Fl o Ar field .Op Fl p Ar pid .Op Fl s Ar time diff --git a/usr.bin/top/top.c b/usr.bin/top/top.c index d35d755fdc82..2b468c453e26 100644 --- a/usr.bin/top/top.c +++ b/usr.bin/top/top.c @@ -463,7 +463,7 @@ main(int argc, const char *argv[]) default: errx(1, -"[-abCHIijnPqStuvwz] [-d count] [-J jail] [-m cpu | io] [-o field]\n" +"[-abCHIijnPqSTtuvwz] [-d count] [-J jail] [-m cpu | io] [-o field]\n" " [-p pid] [-s time] [-U username] [number]"); } } From nobody Mon Mar 31 17:31:38 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ8W3BnPz5sL18; Mon, 31 Mar 2025 17:31: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 4ZRJ8V74jZz3cnj; Mon, 31 Mar 2025 17:31:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PFdfmXUcA8ddZwk8HlfJyd76zGmx73VE1hyL2n7JaIw=; b=WqLQsa9oc+d41mPm+fD9ZlLNhqoOzJtV8u1D7DDYie8x7UsQ7cyVRAsR95XEOf3lf6PvCV iSHPcrjj9Mw2hsu9+22zDNy18/YVtCPehy+JNrhI2eKE8adM0fkgT79zFaLARvATSjIpVF DK3nFuCci9A35Yqoj4s0WyKgQULq29zSYegG++BXJp2ZShPxwSw4r4dKJX4av5xxt2IaT/ k3g3cjVUOfAjRJQwl9Pc2aWPx5BGkSNrjoPiL4cBpzE/LFbtlwsDNxmtLbtkikGsPlSggM tq2KHzSAxDxhFfD0j6cywe2hmyvw7qSxP3b9CuSXREPVxTmRBHjev8x5uA1UqA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442299; a=rsa-sha256; cv=none; b=ftNo9PfwwXW0NB9+oN7Ix9AUE+kvFBK1R8U3y39UTfErWOCrJBLrSftd9vq6Wqg1Cc+VS6 VGfmEMoHMn5lCP2yqgS2//bUqTTF0zwIUhcXISwiF4lOtO45EmHO3OA6yELi7VrBPF5pKZ lzcnGclkEtrfK7FMWlHTR+SGq66HA3AliASbg/GufjIXCTiPb4kEkJ+Xxqnm3B0uBxSU2M 8ELqu4+bZNL0hgRujxi3ZhMzNQqcjD+f3IP/j6MrTRBDQ5x1MElYfy21h3qAzONq2u3KV4 yULTp4uogH026/Z1PPEFvTNsn9a7S97xs2sOvS3N2+mmmTnry5anCJ9xFt5fNw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PFdfmXUcA8ddZwk8HlfJyd76zGmx73VE1hyL2n7JaIw=; b=dioj6p3cwbjgGFkekUIL9tDmruIAZGClIYbmTjXMBUXcTCH4so0Q7TfKcVzfFAGKGiuHZ5 A9w3sJza89ApcxNv/GVAq7lZSvdYJGAthOGlTn8IJ1We7BY6yeEOf6hIQwpZw+OFgCqp70 nn7mqVgsEq3iEwpQi9hA6AvA5XRohW2Zn2IDhnhCGmvKLt/UGhj0w305KwMRLuhAlo21jf qtV2EAKZ292OrqLKSYsqguQE8ud7LAbpddN3LkqKSJlCKvAmw+KydBWQzoOLYCLLAu3TwE W8K5n20blRKG4nVq5cJkDpZEcjDg+ZUM2P+omHHoOekl3P+irys7k1fa7vRdwA== 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 4ZRJ8V4kmwzvLM; Mon, 31 Mar 2025 17:31: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 52VHVc2C036628; Mon, 31 Mar 2025 17:31:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHVcBk036625; Mon, 31 Mar 2025 17:31:38 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:31:38 GMT Message-Id: <202503311731.52VHVcBk036625@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 1bda3fae784e - stable/14 - tcp: don't ever return ECONNRESET on close(2) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1bda3fae784ecb6e227220d20088cfde5f19eed6 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=1bda3fae784ecb6e227220d20088cfde5f19eed6 commit 1bda3fae784ecb6e227220d20088cfde5f19eed6 Author: Gleb Smirnoff AuthorDate: 2024-12-23 18:35:49 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:31:21 +0000 tcp: don't ever return ECONNRESET on close(2) The SUS doesn't mention this error code as a possible one [1]. The FreeBSD manual page specifies a possible ECONNRESET for close(2): [ECONNRESET] The underlying object was a stream socket that was shut down by the peer before all pending data was delivered. In the past it had been EINVAL (see 21367f630d72), and this EINVAL was added as a safety measure in 623dce13c64ef. After conversion to ECONNRESET it had been documented in the manual page in 78e3a7fdd51e6, but I bet wasn't ever tested to actually be ever returned, cause the tcp-testsuite[2] didn't exist back then. So documentation is incorrect since 2006, if my bet wins. Anyway, in the modern FreeBSD the condition described above doesn't end up with ECONNRESET error code from close(2). The error condition is reported via SO_ERROR socket option, though. This can be checked using the tcp-testsuite, temporarily disabling the getsockopt(SO_ERROR) lines using sed command [3]. Most of these getsockopt(2)s are followed by '+0.00 close(3) = 0', which will confirm that close(2) doesn't return ECONNRESET even on a socket that has the error stored, neither it is returned in the case described in the manual page. The latter case is covered by multiple tests residing in tcp- testsuite/state-event-engine/rcv-rst-*. However, the deleted block of code could be entered in a race condition between close(2) and processing of incoming packet, when connection had already been half-closed with shutdown(SHUT_WR) and sits in TCPS_LAST_ACK. This was reported in the bug 146845. With the block deleted, we will continue into tcp_disconnect() which has proper handling of INP_DROPPED. The race explanation follows. The connection is in TCPS_LAST_ACK. The network input thread acquires the tcpcb lock first, sets INP_DROPPED, acquires the socket lock in soisdisconnected() and clears SS_ISCONNECTED. Meanwhile, the syscall thread goes through sodisconnect() which checks for SS_ISCONNECTED locklessly(!). The check passes and the thread blocks on the tcpcb lock in tcp_usr_disconnect(). Once input thread releases the lock, the syscall thread observes INP_DROPPED and returns ECONNRESET. - Thread 1: tcp_do_segment()->tcp_close()->in_pcbdrop(),soisdisconnected() - Thread 2: sys_close()...->soclose()->sodisconnect()->tcp_usr_disconnect() Note that the lockless operation in sodisconnect() isn't correct, but enforcing the socket lock there will not fix the problem. [1] https://pubs.opengroup.org/onlinepubs/9799919799/ [2] https://github.com/freebsd-net/tcp-testsuite [3] sed -i "" -Ee '/\+0\.00 getsockopt\(3, SOL_SOCKET, SO_ERROR, \[ECONNRESET\]/d' $(grep -lr ECONNRESET tcp-testsuite) PR: 146845 Reviewed by: tuexen, rrs, imp Differential Revision: https://reviews.freebsd.org/D48148 (cherry picked from commit 053a988497342a6fd0a717cc097d09c23f83e103) --- lib/libc/sys/close.2 | 5 +---- sys/netinet/tcp_usrreq.c | 5 ----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/lib/libc/sys/close.2 b/lib/libc/sys/close.2 index aba9cac5ae8a..1392541d91c4 100644 --- a/lib/libc/sys/close.2 +++ b/lib/libc/sys/close.2 @@ -27,7 +27,7 @@ .\" .\" @(#)close.2 8.2 (Berkeley) 4/19/94 .\" -.Dd December 1, 2017 +.Dd December 18, 2024 .Dt CLOSE 2 .Os .Sh NAME @@ -113,9 +113,6 @@ is not an active descriptor. An interrupt was received. .It Bq Er ENOSPC The underlying object did not fit, cached data was lost. -.It Bq Er ECONNRESET -The underlying object was a stream socket that was shut down by the peer -before all pending data was delivered. .El .Pp In case of any error except diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index 67645827cb58..3bdbd968216f 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -697,11 +697,6 @@ tcp_usr_disconnect(struct socket *so) inp = sotoinpcb(so); KASSERT(inp != NULL, ("tcp_usr_disconnect: inp == NULL")); INP_WLOCK(inp); - if (inp->inp_flags & INP_DROPPED) { - INP_WUNLOCK(inp); - NET_EPOCH_EXIT(et); - return (ECONNRESET); - } tp = intotcpcb(inp); if (tp->t_state == TCPS_TIME_WAIT) From nobody Mon Mar 31 17:31:39 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ8X2xLLz5sKVW; Mon, 31 Mar 2025 17:31: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 4ZRJ8W5ld8z3cnk; Mon, 31 Mar 2025 17:31:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O01j8w9nfOknz98VKoU7NezWfjrxDyQqlQMF3qJDsy8=; b=ekpxFucmuqEDBJx/lYFWYNSD4LWOh8XOk6fZe/qaMD7tbJ9LRuF+2aREHi9rNk/iZVs6HN wLyaNFKwjZWmdtFf/Ouxcygwti31b9btE6tiILq45rWgJIjR6y8TFDDcm38/wqRpfV0b6+ AHTy3+BBLP/2dJPwtNvBGbft5ebHrC5LsUg90Wq0wuZMWOGEgTKaUlbSx0umyyh7ebJMpx UKDjozoy1afXVM2nVuhUmmsRbSq/bOqlzaiqLHXhTCw7TSZD0WgkywFnW+glrwrxnn9ud0 btSg3vdNCRdzdGMrf2LLkxcGvW0n3FxRfoDBG2sMRGyAIGe2FyJGsSP3NOyfYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442299; a=rsa-sha256; cv=none; b=Zy1zCGpqP+8Hy0P11VksjJOo/r3xqrExR2yAr3K6AnYI0bZMFTQm+qUY7Qsm3kDhFShuWu YV8+5V9db3tjLLbsmuhQ3zkzDlGv4EeUpEi2QXuFnrAgFfGX2TzQNl9GgH1KfeRkyAGGSz qO4/viEQ9I21EujyU878QZJoQU4JI0AHPa+5LjMVjVuPbhHRCK99kU7WYiqP71ycYTlhxF Ul+WWyH3YpZbidv2OV/Sj/cvuBTfHMxj+wkywaZ3HtMfNRinlM+phlvLHQee7Dm0CY7Uym CnBSrk1HMeBzgRKLcNjjKBnpYRDXhYDvvZxeTd2DYRYLkPet/uk0pk5AjYPscQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O01j8w9nfOknz98VKoU7NezWfjrxDyQqlQMF3qJDsy8=; b=wemSjjeVI9obYz+O8ZNL25UAMhD2iQY4aWdjdori3owr/7ex5KRzRIL4INKlKpTNmu0jho YDkko9gkNN2fjR9H/Kp8Kp+7qBg8frjDgzmMlhON+cfVltPdKcU2H/fbayZqQIpEstTOIO mPu9P70zd4S6PvCag4SNdbYFnCqd8aCxiRkUKLZzwHr5I7EBerqjf2S3gZMX0Od2FF7b2R MHdTQiRTPte3Rn6hw/rG4kzFp7fTZde4RoSS+RU7MfH2RP3aFj6A5uACfFCHIKEIrcaqdR SYHhDpyUA7zivgfAOGwwEBQ2Ck4eQ6KCE5DTonTIbolL977rhXPOK8hN91w3Lw== 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 4ZRJ8W5Md2zvJ9; Mon, 31 Mar 2025 17:31: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 52VHVdDO036663; Mon, 31 Mar 2025 17:31:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHVdBi036660; Mon, 31 Mar 2025 17:31:39 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:31:39 GMT Message-Id: <202503311731.52VHVdBi036660@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 886fcbde46c7 - stable/14 - acpi_ibm: pass brightness events to evdev(4) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 886fcbde46c79ede25b41eddcf9795dfd600d082 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=886fcbde46c79ede25b41eddcf9795dfd600d082 commit 886fcbde46c79ede25b41eddcf9795dfd600d082 Author: Gleb Smirnoff AuthorDate: 2024-12-24 02:10:56 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:31:21 +0000 acpi_ibm: pass brightness events to evdev(4) unless the dev.acpi_ibm.0.handlerevents sysctl is set to process them internally. The default for the latter is to ignore them, so passing to evdev(4) is enabled by default. Reviewed by: wulf, imp Tested on: Lenovo Thinpad X11 Carbon 7Th Gen Differential Revision: https://reviews.freebsd.org/D48174 (cherry picked from commit c21f5751ef0932796676e55953461e0679020e28) --- sys/dev/acpi_support/acpi_ibm.c | 43 ++++++++++++++++++++++++++++++++++++++ sys/modules/acpi/acpi_ibm/Makefile | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/sys/dev/acpi_support/acpi_ibm.c b/sys/dev/acpi_support/acpi_ibm.c index a617088d4246..c1302508b8a2 100644 --- a/sys/dev/acpi_support/acpi_ibm.c +++ b/sys/dev/acpi_support/acpi_ibm.c @@ -37,6 +37,7 @@ */ #include "opt_acpi.h" +#include "opt_evdev.h" #include #include #include @@ -55,6 +56,11 @@ #include #include +#ifdef EVDEV_SUPPORT +#include +#include +#endif + #define _COMPONENT ACPI_OEM ACPI_MODULE_NAME("IBM") @@ -198,6 +204,9 @@ struct acpi_ibm_softc { struct sysctl_ctx_list *sysctl_ctx; struct sysctl_oid *sysctl_tree; +#ifdef EVDEV_SUPPORT + struct evdev_dev *evdev; +#endif }; static struct { @@ -363,6 +372,9 @@ static driver_t acpi_ibm_driver = { DRIVER_MODULE(acpi_ibm, acpi, acpi_ibm_driver, 0, 0); MODULE_DEPEND(acpi_ibm, acpi, 1, 1, 1); +#ifdef EVDEV_SUPPORT +MODULE_DEPEND(acpi_ibm, evdev, 1, 1, 1); +#endif static char *ibm_ids[] = {"IBM0068", "LEN0068", "LEN0268", NULL}; static int @@ -482,6 +494,20 @@ acpi_ibm_attach(device_t dev) } sc->ec_handle = acpi_get_handle(sc->ec_dev); +#ifdef EVDEV_SUPPORT + sc->evdev = evdev_alloc(); + evdev_set_name(sc->evdev, device_get_desc(dev)); + evdev_set_phys(sc->evdev, device_get_nameunit(dev)); + evdev_set_id(sc->evdev, BUS_HOST, 0, 0, 1); + evdev_support_event(sc->evdev, EV_SYN); + evdev_support_event(sc->evdev, EV_KEY); + evdev_support_key(sc->evdev, KEY_BRIGHTNESSUP); + evdev_support_key(sc->evdev, KEY_BRIGHTNESSDOWN); + + if (evdev_register(sc->evdev) != 0) + return (ENXIO); +#endif + /* Get the sysctl tree */ sc->sysctl_ctx = device_get_sysctl_ctx(dev); sc->sysctl_tree = device_get_sysctl_tree(dev); @@ -627,6 +653,10 @@ acpi_ibm_detach(device_t dev) if (sc->led_dev != NULL) led_destroy(sc->led_dev); +#ifdef EVDEV_SUPPORT + evdev_free(sc->evdev); +#endif + return (0); } @@ -1499,6 +1529,19 @@ acpi_ibm_notify(ACPI_HANDLE h, UINT32 notify, void *context) /* Execute event handler */ if (sc->handler_events & (1 << (arg - 1))) acpi_ibm_eventhandler(sc, (arg & 0xff)); +#ifdef EVDEV_SUPPORT + else if ((arg & 0xff) == IBM_EVENT_BRIGHTNESS_UP || + (arg & 0xff) == IBM_EVENT_BRIGHTNESS_DOWN) { + uint16_t key; + + key = arg == IBM_EVENT_BRIGHTNESS_UP ? + KEY_BRIGHTNESSUP : KEY_BRIGHTNESSDOWN; + evdev_push_key(sc->evdev, key, 1); + evdev_sync(sc->evdev); + evdev_push_key(sc->evdev, key, 0); + evdev_sync(sc->evdev); + } +#endif /* Notify devd(8) */ acpi_UserNotify("IBM", h, (arg & 0xff)); diff --git a/sys/modules/acpi/acpi_ibm/Makefile b/sys/modules/acpi/acpi_ibm/Makefile index 9e815ccc9e80..272204432f83 100644 --- a/sys/modules/acpi/acpi_ibm/Makefile +++ b/sys/modules/acpi/acpi_ibm/Makefile @@ -2,6 +2,6 @@ .PATH: ${SRCTOP}/sys/dev/acpi_support KMOD= acpi_ibm SRCS= acpi_ibm.c opt_acpi.h device_if.h bus_if.h acpi_if.h -SRCS+= opt_ddb.h +SRCS+= opt_ddb.h opt_evdev.h .include From nobody Mon Mar 31 17:31:40 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ8Y2gvJz5sL19; Mon, 31 Mar 2025 17:31: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 4ZRJ8Y0gglz3cwp; Mon, 31 Mar 2025 17:31:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442301; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yA/IhFwEcr90Y8QbhQJojJeHTb8yKc4zxrH1IlcFyHU=; b=Uxfb+cC73Kzi6YolyKYH77H+0syhX1CQik9tVoHgFL6tvXuCo53layh1aHb2CCvxI8zcPN yrYGFGW31rfrY9hvxZQ5EGcUq4Z7q2mKAEGOp9owcMhYy0jpi8G4R/V8kTbhiGxDT2dFHS 2N7tL1LG60ou94Aky3QzFSDfg74TqQlGX0vr3s4WUh+hfmpzcOjlcoKq4/piEZ8E+S3N8C o05AVsZ97O6uJbfIu88yL7HSXeihl+fP3nsiDo16T84naXIsv17URUa05RyrQ+Pp1gsdXz OOvJ5JwYlFOY8ZxolqElC3+quw1A6zb8R3C2LyjVGD70mPbhlZUjzhiF5qFv6A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442301; a=rsa-sha256; cv=none; b=MjX+Qr6xsKXpRvN7Dci1RSwoxEKNVn660AYJKcULApWNxPvOGxYunIDokl0ZNHldjwfYP3 LsdC2SvIrtDq4vDQdayuF9zaqa1QBBhRujprfmksi/IqsG3YW7tWFe3ZWqvZ2OLhdkDWFU BSS+gje0LAKUjaVTzSxb5rysQzUVjKnT0z6s1yBIoHc9lbUJX0yhaVQuCj3kCYUcEOey9p XnxWl5MYtscQOFbVPaHvXDRNyjcsBF59KC8lawbBl7+1SlzGXAj0az0vzMhET+FTADvu3Z DbvXW1CC7Yq6CGdphNMi0Oxd2vktbj6tkKrw7edZ5T7z6XCjRtOc+8lUqcQYsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442301; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yA/IhFwEcr90Y8QbhQJojJeHTb8yKc4zxrH1IlcFyHU=; b=fQV/r6F+kIuLectP+ZHT2GLHy/fLW1XheBxKNEgkCriTu4MHaf03tyL/UtKMZW99tn54sx /2wr5rp8b6899vJZlhJ7cDfNPagZhULY3bEKT2/dhE97GxzTxDhKwGUFQyPVYcYY7+jBmn BpsGAf9ls9OInIamtZgt7oTvYEiwJOB0PkpwkGuAfmvRmTDgBtq1eOhFx0Bvpyhd0tA8er aXHuaQuY93fh1q7zNLkaLih1ltoPvEB0ZBSyPxQTbz//Rj3msCn4WEMShIa6eqOZbJBUGl AivPhbURb32fGgv5w+2mCYXLHtB+al8xDNJVOWT2Fj9vZXk30421oEAnJAmrjQ== 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 4ZRJ8X6c1YzvLP; Mon, 31 Mar 2025 17:31: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 52VHVeGj036697; Mon, 31 Mar 2025 17:31:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHVetf036694; Mon, 31 Mar 2025 17:31:40 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:31:40 GMT Message-Id: <202503311731.52VHVetf036694@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: e215460dae3a - stable/14 - netlink/route: fix nlattr_get_multipath() to check length List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e215460dae3a8ff00ed0e78f978425464da36a3e Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=e215460dae3a8ff00ed0e78f978425464da36a3e commit e215460dae3a8ff00ed0e78f978425464da36a3e Author: Gleb Smirnoff AuthorDate: 2025-01-29 18:22:46 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:31:21 +0000 netlink/route: fix nlattr_get_multipath() to check length of supplied nexthop sub-attributes. While here, use unsigned types for length calculations and improve style(9). PR: 283860 (cherry picked from commit 49a6e213416b5c0c9eccdff0af1c6b01f34c3693) --- sys/netlink/route/rt.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/sys/netlink/route/rt.c b/sys/netlink/route/rt.c index 679260e54322..410b1b04b6fc 100644 --- a/sys/netlink/route/rt.c +++ b/sys/netlink/route/rt.c @@ -425,33 +425,45 @@ post_p_rtnh(void *_attrs, struct nl_pstate *npt __unused) NL_DECLARE_PARSER_EXT(mpath_parser, struct rtnexthop, NULL, nlf_p_rtnh, nla_p_rtnh, post_p_rtnh); struct rta_mpath { - int num_nhops; + u_int num_nhops; struct rta_mpath_nh nhops[0]; }; static int -nlattr_get_multipath(struct nlattr *nla, struct nl_pstate *npt, const void *arg, void *target) +nlattr_get_multipath(struct nlattr *nla, struct nl_pstate *npt, + const void *arg, void *target) { - int data_len = nla->nla_len - sizeof(struct nlattr); + struct rta_mpath *mp; struct rtnexthop *rtnh; + uint16_t data_len, len; + u_int max_nhops; + int error; - int max_nhops = data_len / sizeof(struct rtnexthop); + data_len = nla->nla_len - sizeof(struct nlattr); + max_nhops = data_len / sizeof(struct rtnexthop); - struct rta_mpath *mp = npt_alloc(npt, (max_nhops + 2) * sizeof(struct rta_mpath_nh)); + mp = npt_alloc(npt, (max_nhops + 2) * sizeof(struct rta_mpath_nh)); mp->num_nhops = 0; for (rtnh = (struct rtnexthop *)(nla + 1); data_len > 0; ) { - struct rta_mpath_nh *mpnh = &mp->nhops[mp->num_nhops++]; + struct rta_mpath_nh *mpnh; - int error = nl_parse_header(rtnh, rtnh->rtnh_len, &mpath_parser, + if (__predict_false(rtnh->rtnh_len <= sizeof(*rtnh) || + rtnh->rtnh_len > data_len)) { + NLMSG_REPORT_ERR_MSG(npt, "%s: bad length %u", + __func__, rtnh->rtnh_len); + return (EINVAL); + } + mpnh = &mp->nhops[mp->num_nhops++]; + error = nl_parse_header(rtnh, rtnh->rtnh_len, &mpath_parser, npt, mpnh); if (error != 0) { - NLMSG_REPORT_ERR_MSG(npt, "RTA_MULTIPATH: nexhop %d: parse failed", + NLMSG_REPORT_ERR_MSG(npt, + "RTA_MULTIPATH: nexthop %u: parse failed", mp->num_nhops - 1); return (error); } - - int len = NL_ITEM_ALIGN(rtnh->rtnh_len); + len = NL_ITEM_ALIGN(rtnh->rtnh_len); data_len -= len; rtnh = (struct rtnexthop *)((char *)rtnh + len); } From nobody Mon Mar 31 17:31:41 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ8Z35srz5sKxy; Mon, 31 Mar 2025 17: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 4ZRJ8Z0gGMz3ctj; Mon, 31 Mar 2025 17: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=1743442302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0ZL06qbk139NWkcizBYR3A/+K7Zx4L3FazQQi5tybi0=; b=QjKWRbKo5+itAeU0KiD/WhFhbMNNKgBeVPIJsRzs0htUtVEWPbgEwCl1II9m5vBgdQGr2X dnXVXiFQskmDe493cHNW5Q7AbaqJkOafTJmIOXku11+nMTsVxov62c4Y2NOJvPEEzsjxS2 hwbWJvUnholZohMsyiXsxEyT+EMXepxunWX1Bj02LZSrV/grGMhccLqtfJju3ZqAa9Xa/A S5iQndk/OpNc6YuraiIR+UgjgYKIdYHe8JbPmi6lmymJ6W05928ejUPeeGVSV9ngxzolA6 wnaOYYtpPkyCCw5DpQiMHbf2KxPQLK1/0NmZtBvRFhrElARcA/zzC+3c/rmdMg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442302; a=rsa-sha256; cv=none; b=mUo4x/Cbe3CcKiBnbSBjtcrA9TT1rk68HZxt3Nsk/WygiEvPfSWNDl6FSWPBjrONA7f48D 0++iRZLK15+yte0fbb8+xLVc5dUPW6DQmgb5vyyzcswa31/cIHh78grH+fZxPVBsRTnqiI qm6hPyYmmxM8EEIPP6A64sPkBA7LEny9mo5t85mp3YIQhW5alTgedPFpY0KnyqThsRCmL/ I+3MFNAFrPa9+5W0eeZk3hojoZwqiKRCpuh4deQ7cc7xXTDAesELIUr+7OUyNyBw78AA7L gLWXm48QVspApwUqpLWunBzH511Z+njYhdrMCCzbkcrRQVxD0i1U0PCpH2D73g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0ZL06qbk139NWkcizBYR3A/+K7Zx4L3FazQQi5tybi0=; b=Ahwnz0wdvhzOtvKVxZScmuEnnQLai3psNvsdV7+wDUF+kNILPPYJmPF3D2iKIDmugFblZK nwBCiAhBkXgkE5eLOcQtzKrtnS4he91I1luROdrwhaw55lfD//njBBZ/6AuG5BnTM9GWak ycgh7nQK4MRnmAavsyR+fZ0GYG02ItvhEp00TO8Q21pjQgH/GL779/WesbN7GVy2CuF/be c5iK3q2jdOj6RQjGdwz2O5bmdIVmNeuuyPtcbMMcztfsMmcAh+dz3hkYUB3LdRNUVKpCa/ nVxSxmaOQsJFyMMyRFD3joPtg/dKbbfEB6jtvT1zC+1FbU+8W1WrS0gIJaqN+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 4ZRJ8Z0HC9zvFd; Mon, 31 Mar 2025 17: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 52VHVfQw036731; Mon, 31 Mar 2025 17:31:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHVfZW036728; Mon, 31 Mar 2025 17:31:41 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:31:41 GMT Message-Id: <202503311731.52VHVfZW036728@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: f2a49434b550 - stable/14 - netlink/route: fix fib number validation in old Linux compat mode List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f2a49434b550df350bb5b311f701c6e3e6d9af36 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=f2a49434b550df350bb5b311f701c6e3e6d9af36 commit f2a49434b550df350bb5b311f701c6e3e6d9af36 Author: Gleb Smirnoff AuthorDate: 2025-01-29 22:06:57 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:31:21 +0000 netlink/route: fix fib number validation in old Linux compat mode The value passed via old field also needs to be validated. PR: 283848 Fixes: f34aca55adef1e28cd68b2e6705a0cac03f0238e (cherry picked from commit 031fbf8dc962ca8d458b217ba2b4a9e637b7e932) --- sys/netlink/route/rt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/netlink/route/rt.c b/sys/netlink/route/rt.c index 410b1b04b6fc..abbcc075dde3 100644 --- a/sys/netlink/route/rt.c +++ b/sys/netlink/route/rt.c @@ -953,10 +953,10 @@ rtnl_handle_newroute(struct nlmsghdr *hdr, struct nlpcb *nlp, return (EINVAL); } - if (attrs.rtm_table > 0 && attrs.rta_table == 0) { - /* pre-2.6.19 Linux API compatibility */ + /* pre-2.6.19 Linux API compatibility */ + if (attrs.rtm_table > 0 && attrs.rta_table == 0) attrs.rta_table = attrs.rtm_table; - } else if (attrs.rta_table >= V_rt_numfibs) { + if (attrs.rta_table >= V_rt_numfibs) { NLMSG_REPORT_ERR_MSG(npt, "invalid fib"); return (EINVAL); } From nobody Mon Mar 31 17:31:43 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJ8b5gfHz5sKrR; Mon, 31 Mar 2025 17:31: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 4ZRJ8b1cwzz3d0D; Mon, 31 Mar 2025 17:31:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442303; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rTueZPtTo6m/e0aCH7PP3iR/3XlJJjkUxNWRsFkUz5o=; b=Zb6oP7IkBHo0OPIMKVKApb62+tF4QvYB20XJ1kIKmuECgG5zK1Jz7OF5nLSVfkEeTomelc IKHJp7mcve+siWJNW8oewLyfmkcy8mSxxrd/SH4ggAoe49SZ+lfO9Mfj4t8VNbLEJqs4Vv IxMpfjuTYM7kKKrUEYlCFVuKIqazVa/BXRCL2Feoa6rYwABh7PYyIMfdn3WZzc8t/wrTlJ PoXtKwU72Ic2Y9kxrVINtKOLeyOyVk3pTQJGJjxXQHTWqW6B601rCI7drY17hWLu0AssQY vVDSDVHa6ChDXc4OhM0t2RN56Mpw2xQQBN3Rque1NxCXSgtsScuzf3hbLr6XoQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743442303; a=rsa-sha256; cv=none; b=XRw0172lYCQgYfKIunFnfFg/jyZPeCFRhfcDeWiEbcawPkm124lh9lW3kI7+B8Qa9sEtyv jdhEYWqEjrwchCXweuHxxhEp6dXkymRRtmRPdXWFukOGRD+PgIW2ZlyTfCH6XG5r/P0qVp Tt+/bjitDjggdSFaCulSy0UuU4EkLV6MkY72nbL+fO0U0ispAH9f0qFBKR9khYAJnu9z3+ cNqJfJIZxqA4CFNe1ANNvUlJHgfXWYu1TuLZk/nsQrkg+DM+F0r4h+4rttsENRC/TX428Q PCUKKPRAG1fDlfG40EoN4VfwSi+R7kE8eaDMXg6MxMWteO4VqgAjrvtEt/Uipg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743442303; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rTueZPtTo6m/e0aCH7PP3iR/3XlJJjkUxNWRsFkUz5o=; b=mhQu0kSU/hgW8S7Ms3t8pRMD9xi+8sVyiNqwKxhsKti6ULWaAz5tOXPqrwdWmNsDA1mF2H rqcTSjALrlNxvqIn6vaqdjdcPcynrf/GuEhaXu8GUwUohBP9NPJ2m55BH5RXHLBi43N/kB RHtrpTuxGAqJ8tWwMdkFROtYksy0yCKCt6FUsMy8lps4m9t0pDBiVsjflfixrmGMI/O1kc ZsGGL4A2j5zizZUrADjKajBo7GJU9rP+AmefPFbygZ+AqCOxGnfRp6k1UVqlIdFbcuS6v1 M2GGEQgTQLFrb26hlS55s6RMpr0tcNzAa3QcvNU5Ueedic71Iqjh9R5xEMNwlw== 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 4ZRJ8b0zVdzvLQ; Mon, 31 Mar 2025 17:31: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 52VHVhYf036764; Mon, 31 Mar 2025 17:31:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHVhXB036761; Mon, 31 Mar 2025 17:31:43 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:31:43 GMT Message-Id: <202503311731.52VHVhXB036761@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 96e6fc517ffe - stable/14 - netlink/route: validate family attribute List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 96e6fc517ffec074dbdb6a44b9c2daa7449fd91d Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=96e6fc517ffec074dbdb6a44b9c2daa7449fd91d commit 96e6fc517ffec074dbdb6a44b9c2daa7449fd91d Author: Gleb Smirnoff AuthorDate: 2025-01-29 23:40:56 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:31:21 +0000 netlink/route: validate family attribute PR: 283818 (cherry picked from commit cdacb12065e4d85416655743da5bc6b17a9d9119) --- sys/netlink/route/rt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/netlink/route/rt.c b/sys/netlink/route/rt.c index abbcc075dde3..7cd6e0045f01 100644 --- a/sys/netlink/route/rt.c +++ b/sys/netlink/route/rt.c @@ -956,7 +956,7 @@ rtnl_handle_newroute(struct nlmsghdr *hdr, struct nlpcb *nlp, /* pre-2.6.19 Linux API compatibility */ if (attrs.rtm_table > 0 && attrs.rta_table == 0) attrs.rta_table = attrs.rtm_table; - if (attrs.rta_table >= V_rt_numfibs) { + if (attrs.rta_table >= V_rt_numfibs || attrs.rtm_family > AF_MAX) { NLMSG_REPORT_ERR_MSG(npt, "invalid fib"); return (EINVAL); } @@ -1019,7 +1019,7 @@ rtnl_handle_delroute(struct nlmsghdr *hdr, struct nlpcb *nlp, return (ESRCH); } - if (attrs.rta_table >= V_rt_numfibs) { + if (attrs.rta_table >= V_rt_numfibs || attrs.rtm_family > AF_MAX) { NLMSG_REPORT_ERR_MSG(npt, "invalid fib"); return (EINVAL); } @@ -1042,7 +1042,7 @@ rtnl_handle_getroute(struct nlmsghdr *hdr, struct nlpcb *nlp, struct nl_pstate * if (error != 0) return (error); - if (attrs.rta_table >= V_rt_numfibs) { + if (attrs.rta_table >= V_rt_numfibs || attrs.rtm_family > AF_MAX) { NLMSG_REPORT_ERR_MSG(npt, "invalid fib"); return (EINVAL); } From nobody Mon Mar 31 17:44:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJR21dpCz5sLDc; Mon, 31 Mar 2025 17:44: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 4ZRJR20qG2z3hRP; Mon, 31 Mar 2025 17:44:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gO2046srpOYnifb2Abh/Qsu8x6IxEt6FR3tQ6VBSrYU=; b=gvDJqLw3+M2DwZMQIQDtEeWNCrzEb8xP1if+lrK99ydYbqzFpW92F8MApjAfwbfuhc0nXA 8ylMDsznXkH+DYB5VbBDF31iUZ+oep1MOBJkb3cBOTyQuBewLGhTJgSPkle5CR9yVSgAjr 0PYQ/UCcen5bqBMyVxnqRZWab5iTxGMETUjF5RQUZ2oZWUfRZgO7empWjkNg4AnkR6urVJ 0XjqIxQjiVdXKNLMxuX8ADKcbmP1an0QrQc3i27/sz/agiWeY/pD+yIG7H+la7GvQho2zp 4WsTEDajO74RqEdanjg90DZ3i3WucHVdhmElEUAVz7La3exhodFyKm6S5sKJ+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743443054; a=rsa-sha256; cv=none; b=ZNebnQAXhsfMRJpyvhfFo8HTRAPhmbOur07eau6fYLXi5VMq1Y/tmhhVPS8PpGi7VzwZv6 ZmCqlchldq1ztZyCkOw/ctjVmmOQl2l45y1wm4NpJ9Nk5GhR0WM3nKV88IWSSxwRT01rKF 4GSwzkSMxbb5VzZVO2Pbd8LEPl6jE9rlGcr/JtWq676r0rMcj0V19/AWehBO6htGkmHwG4 NLMpde0YRTCjOro188XrN/jBR5iTEllGGSQjvq+h8qqOTQ7Vg15OY4jEwC6aTvkzflofa2 wD6BzWGfRpED6CnUhrp6I6rWff2gNf9fbTogpxm2JQ3RoWB9t1KZhzYhCAIfyw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gO2046srpOYnifb2Abh/Qsu8x6IxEt6FR3tQ6VBSrYU=; b=fEj/kB2BPOVbzaSdgtqWLqtVcqzo1emjx8EVgx+Cp4EZ1JFcLEdJPGsAl9854s+brHzuG9 JjeW+77HcmEVrcf8TGZq14NdQQW0Xr9y7Wdb1ebnWWuObf0iC6r4oNRF79IR4yJ5msHnbx 5X9VOtV/LozW5d2Fub9jYdak8yQH7fFSZPplkJ816mgbbqatPnLbQ0PnICk/y+WD87Zh1e QQUy/OP0VTsXJ82hwlrcGf5xAedp5aJfH0A51l5ux92tAy0SxTuUnubXowNYV3unoAgkdh n0g8CglolsaBXTC3T35eOm4wJdOrR8+X6hcJ/4n4Ra8Pqp3yICKB7inY7Tqckg== 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 4ZRJR20PJdzvgq; Mon, 31 Mar 2025 17:44: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 52VHiDNC061449; Mon, 31 Mar 2025 17:44:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHiDeF061446; Mon, 31 Mar 2025 17:44:13 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:44:13 GMT Message-Id: <202503311744.52VHiDeF061446@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: eca3c0515b3f - stable/14 - linprocfs: Correct sysfs /proc//mountinfo entry List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: eca3c0515b3f60102ba0f62b72135e6d6dcd4b75 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=eca3c0515b3f60102ba0f62b72135e6d6dcd4b75 commit eca3c0515b3f60102ba0f62b72135e6d6dcd4b75 Author: Alex S AuthorDate: 2025-03-10 18:12:36 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:42:48 +0000 linprocfs: Correct sysfs /proc//mountinfo entry Technically mount source could be an arbitrary string (since it's effectively ignored), but it's common to repeat fs type there. (cherry picked from commit b9752d5d1cea30a39e89c83ea3aeb539581418cb) --- sys/compat/linprocfs/linprocfs.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 9e69c92dc014..d4f38b491471 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -448,9 +448,6 @@ linprocfs_docpuinfo(PFS_FILL_ARGS) } #endif /* __i386__ || __amd64__ */ -static const char *path_slash_sys = "/sys"; -static const char *fstype_sysfs = "sysfs"; - static int _mtab_helper(const struct pfs_node *pn, const struct statfs *sp, const char **mntfrom, const char **mntto, const char **fstype) @@ -478,8 +475,7 @@ _mtab_helper(const struct pfs_node *pn, const struct statfs *sp, } if (strcmp(*fstype, "linsysfs") == 0) { - *mntfrom = path_slash_sys; - *fstype = fstype_sysfs; + *mntfrom = *fstype = "sysfs"; } else { /* For Linux msdosfs is called vfat */ if (strcmp(*fstype, "msdosfs") == 0) From nobody Mon Mar 31 17:44:15 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJR3332vz5sLbL; Mon, 31 Mar 2025 17:44: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 4ZRJR31mMtz3hX2; Mon, 31 Mar 2025 17:44:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443055; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WDyr9uKwKuuME6fAIXjOLrMNegmipEexMREA56GN4I0=; b=wC2YpjOWfcGS66Rll/uTMT3uOETlkDuFm16/OFyUtcY0MDw7OS2u+RUB0sISoC0nxnvhnG hSSE+/RDve0jxUVyUV6qXELX3Lvd1okZqXemPZnInltMtZVIqSS+9Aj38ZeiKODugFZk0z gaBb8mu7+FO/Uyb6zYeux8V1EnZ2DOBJiG1mFQIC9UyQXYPq/nvVsFUI8PUWWwFgpjpNZs CROz1jkvobaIBZGF4SqiGHjjEDp+EsQFtmF67X7OQL29iThMJMwYR7QOXEgITiLD4Kbu9J fusX+IedPUMAon7cKpgJC4kJHmh4u10zcTIYcl2znEFOeBsSXpsR4fa167I2iQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743443055; a=rsa-sha256; cv=none; b=wGMId8lwOxwi+IThbj903d6hIKygvy/0Dkrm5T81fbO9eHeM+8N9twBFCG4NaBoLLAzDyt +3bhBC+tqTGECBt1KPkNqZ9bNXsHId3//rOuuwdKy3bsCKgIfD8A0VsUbd+/LA7CwhfxzT SPkrnErXzoHBpjwBo02b9zOCaaj9KpGcdyaNezS/dhusHFK5MlFrzm0AFmwl7orJUSQmRa UKFf55Q5H+YBMChU1rGxyeXCU/kI0gNQ+UxKHzYAYUNT2D+nkr/3y0TUOBBRqsWuntMS21 jeD4bmPTnA0slDACs84q7gKjNkEkIWZKbMpZZB5KnrvSTA+hYkqiherVw49b6g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443055; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WDyr9uKwKuuME6fAIXjOLrMNegmipEexMREA56GN4I0=; b=UWb+dhtx+OdRr3N+2p1/G54VSmiKfJRtP36Vlhm97jDEsYuJk24HER0uVOuO0e4Z25soBW JSId9dXH4NfSM3RssoLsM+D/xZkx9ZGxOqc5a7IEbeGA/0nR7OiiqIk3gL3V6oiPleZWMi EMjxXdMOf/tA/7whLDPR9IBboL8Q8vO8s2SoT4Wa7ASAUN+REPyTkEln9o89MX6owigJbs R1yHT5WmyFKyD2hKRE0LiSKUdRz/SpFThbZSQFKK9/C1jja00b7MbDD1KFsxOO0TlltLLY gSVEoFpPibk83/wvcSBnnv7BVHqN45hVZnt1l2Wm7D1aEwttSsrOWuHEKz5bUg== 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 4ZRJR31KVXzw1c; Mon, 31 Mar 2025 17:44: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 52VHiFvV061484; Mon, 31 Mar 2025 17:44:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHiF7D061481; Mon, 31 Mar 2025 17:44:15 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:44:15 GMT Message-Id: <202503311744.52VHiF7D061481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: a5918bfbf9ac - stable/14 - linux: Fix a typo in linux_recvmsg_common List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a5918bfbf9ac512ce2840541e9b66c2ffed44dc6 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=a5918bfbf9ac512ce2840541e9b66c2ffed44dc6 commit a5918bfbf9ac512ce2840541e9b66c2ffed44dc6 Author: Alex S AuthorDate: 2025-03-10 18:12:36 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:42:56 +0000 linux: Fix a typo in linux_recvmsg_common We are supposed to check the result of bsd_to_linux_sockopt_level here rather than its input. (cherry picked from commit 9f55630b8d72602f6ec86b15b607f5fc5fde911e) --- sys/compat/linux/linux_socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index d35ff37aee98..bed772d56684 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -1856,7 +1856,7 @@ linux_recvmsg_common(struct thread *td, l_int s, struct l_msghdr *msghdr, lcm->cmsg_level = bsd_to_linux_sockopt_level(cm->cmsg_level); if (lcm->cmsg_type == -1 || - cm->cmsg_level == -1) { + lcm->cmsg_level == -1) { LINUX_RATELIMIT_MSG_OPT2( "unsupported recvmsg cmsg level %d type %d", cm->cmsg_level, cm->cmsg_type); From nobody Mon Mar 31 17:44:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRJR60FfTz5sL8T; Mon, 31 Mar 2025 17:44: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 4ZRJR466Ndz3hlf; Mon, 31 Mar 2025 17:44:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mrNFMyFUu8GwTWTttkWevYIoVYvr/jZ0mufZ9/JuH8Y=; b=cJtGlzNJrva1vC8egK4YpP4zct7EC23MjE+53u4DlY4OcBZaxS35Bm46FBkmZkeoH5eP4t teKbs0AUjmB8vsGiOG7Dp/49UUQbrG5xPPJ/pDVZEe5rn2GDz2u6QXpb2niR5tVJ6TjcRu RVWem/jHZF5xQwF1m7AgSKwh4wrOffZrSAfYshsf3YFkuqu5l45FxX8p6M57h8TVel4IyI 2HS/Kb/OPWdwp1va+JAdkpBNLo1xSkSG+h43USBrEHfXR591iQJL1XhU+e9pyh0QJpAxky eqK55W6IL9gn2LND3WSXaEjLfcLbvBMBrI/qKGab5SSuF+jnKFb3PRJd1z7nxw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743443056; a=rsa-sha256; cv=none; b=M9JsPkEpKo4Jd2hosZVy5+B5dve0iSrziFioMRXr/WNjqU61Rr991LygxZptOONzKSabzR NSsAIbGyrvKPqGSIaWJd0kWzkxDBZLQ7ZdL29l6m98BM90VH0q7NyWxqc2Fm5jcMZ+KD4X 4Rry4otQVd/g58d3CacWezvh4OQjhH2P1nZ9dhx/aT1Fc+SpVawiNdTJPkDT67V5AgEpyq iNO7inF3q25ja5PGe7VNDSYb31ZwEjKu3yyesVPDIRS1E0ZHgsR9rNMs200PkMgy/gBwPh RiojjiG5h9nBUT0+ub1ivQAqL7j3QHTyfuE6iemO3jsdPjwzBecL7oe++aw/DA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743443056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mrNFMyFUu8GwTWTttkWevYIoVYvr/jZ0mufZ9/JuH8Y=; b=CjGQrrz34oXP8k8vvjmNCPcM+97Fmi0/JLOI2C+kxzehxjLoN1fm+tpPmXB8YKjJut8Tgq ZMnPUoDhlewmbRYN5RScCefa+Hh1cl+Bkc7Vm+NO8kBwKFw/KM7IjrbPW5Eor7y4TeYJvg 7PvB0WZvdRtMvypVnWYvMBHnPHVS2RPjE9FhFDkCGZWiHAlNqsV3/yF456Bk8DWZP0RBBi sNHMjiRd+AxNhl1qU95XdeHlVUtz1WyN+/aZYfiLbdQMGJGB4GfONN2GXYZNEHFta3u2RS Yt0ZcHPJw4v4cxT9V1FGdSM/GpcVhHoX6lmpYIECAo3SqvWH7rcxdXPxUvFh6g== 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 4ZRJR42GbnzvmL; Mon, 31 Mar 2025 17:44: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 52VHiGNV061516; Mon, 31 Mar 2025 17:44:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VHiGoA061513; Mon, 31 Mar 2025 17:44:16 GMT (envelope-from git) Date: Mon, 31 Mar 2025 17:44:16 GMT Message-Id: <202503311744.52VHiGoA061513@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 9e7af40094f7 - stable/14 - linux: Handle IP_RECVTOS cmsg type List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9e7af40094f73670a09edf09936f084234102d58 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=9e7af40094f73670a09edf09936f084234102d58 commit 9e7af40094f73670a09edf09936f084234102d58 Author: Alex S AuthorDate: 2025-03-10 18:12:36 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-31 17:43:06 +0000 linux: Handle IP_RECVTOS cmsg type This unbreaks apps using GameNetworkingSockets from Valve. (cherry picked from commit 186dc094cf1ce14b26c6dfa329a445357121238a) --- sys/compat/linux/linux_socket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index bed772d56684..4fcdd9517bda 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -135,7 +135,6 @@ linux_to_bsd_ip_sockopt(int opt) LINUX_RATELIMIT_MSG_NOTTESTED("IPv4 socket option IP_RECVTTL"); return (IP_RECVTTL); case LINUX_IP_RECVTOS: - LINUX_RATELIMIT_MSG_NOTTESTED("IPv4 socket option IP_RECVTOS"); return (IP_RECVTOS); case LINUX_IP_FREEBIND: LINUX_RATELIMIT_MSG_NOTTESTED("IPv4 socket option IP_FREEBIND"); @@ -663,6 +662,8 @@ bsd_to_linux_ip_cmsg_type(int cmsg_type) switch (cmsg_type) { case IP_RECVORIGDSTADDR: return (LINUX_IP_RECVORIGDSTADDR); + case IP_RECVTOS: + return (LINUX_IP_TOS); } return (-1); } From nobody Mon Mar 31 18:35:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRKZZ36PWz5sPCl; Mon, 31 Mar 2025 18:35: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 4ZRKZY6SjCz44Mx; Mon, 31 Mar 2025 18:35:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EPLs5XPaS/y3BzoiFcomgjGX9DMcrACAs7apQJKCa+Q=; b=N3PWsPTEND2hkMGNBOxb7Pm/yfHMAaX64EMMRot6LGpBHYWWid0UfAtl1MvFbk4PgOw14+ 6uoN8PRYKk2YmzVlWL7zsxvxbZUdWmE1qyIzlgjAaAyE9Ks3BobWWhF3TJAnXTZv47KgcQ 5NJU1yZyhIFUDLsTmnsrgLhWw5pNbszqk2UAQKfWN1HPO2IdcW13NVslMcWCNM9zJKjY25 0+RNIR3/yGFn1vEtnlzn1yYoxmEwuXqzi98EaVNhBgoLMUy3P98hhoJrox/n1QLa//cCTk mGgNtPYP6T3CfOtawowx+siI2tYMXMV0w+qsRUK+7WFFaqv4k4PJDx4qgGp2Vw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446149; a=rsa-sha256; cv=none; b=graeeJmNmwjArUB1lfJ/hukkj4e8bnKxRNenpNiygH0j4F1PzwVWy25fUxlShijhy/oEaN /tGtu78BrEGYnCZYFyhUz0t9n5cl/W6mEmgSgkjrY6pyDk213z0Jf6kaHf8aBIvgFevUqM nUzqWbQcxDyBAbReyGx1hJH23pl6bIER0v3NxnPsP98/S2vwDrvSGIiy35yqier11DyAJQ RiDKx4rB05PQbGzeW8rH8VCUu6nbZOOmisjNyvgB0ysKrfUK43RdlqdJOLgK8C8gRWP1fU EZluk735f4sAsXmFkPDOiuHagH5QImWbotCm4LNoCT5fRkreM9yd5L6guF5DOA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=EPLs5XPaS/y3BzoiFcomgjGX9DMcrACAs7apQJKCa+Q=; b=Oy/KODkuZUTvzrr2jRnanQa42yvzzsbPBBKHNfbBSRSpHkDEr7buzqpRrRPKqMsutdeuOh s2D9utdLtUy3qxpQ3rLTdKbyXGoct4m3L7mZQgjAWjGXCumXoX1GY+DqUYcpPCfAetrYJH usJqPgXLhXjUO2cjOpcwcHhGVbgLds+1WEhhJ0uO8BrSSCmvVBAaJGmmw5eY1TIlNWEXG7 BoEKLyKjRf9CxAza1tE7mNdWopAsoqXD6pPadOOLm9ui3zvs9Fq5Us4YLplsMFApK34m/q zIU/MFg+055e5DNlsbTH/+GTGih3iWlAKg28BRXAlisJ1Qytb1Zbes5Ho5wDYA== 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 4ZRKZY62MlzxCZ; Mon, 31 Mar 2025 18:35: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 52VIZnNZ056743; Mon, 31 Mar 2025 18:35:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZnG6056740; Mon, 31 Mar 2025 18:35:49 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:49 GMT Message-Id: <202503311835.52VIZnG6056740@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: a4251e93f8cb - stable/14 - top: Make locale issues non-fatal. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a4251e93f8cb008607bf9b50bd2fd95d3223dad1 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=a4251e93f8cb008607bf9b50bd2fd95d3223dad1 commit a4251e93f8cb008607bf9b50bd2fd95d3223dad1 Author: Dag-Erling Smørgrav AuthorDate: 2025-03-06 13:43:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:35:33 +0000 top: Make locale issues non-fatal. If the `setlocale()` call fails, emit a warning and sleep briefly so the user has a chance to see the warning before we redraw the screen. Note that we have no way of knowing exactly what is wrong, but at least we can suggest that they check their environment. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D49230 (cherry picked from commit 180065eb09e699820a1e1c45d3d00156e0effe29) --- usr.bin/top/top.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/top/top.c b/usr.bin/top/top.c index 2b468c453e26..856ad838dc1c 100644 --- a/usr.bin/top/top.c +++ b/usr.bin/top/top.c @@ -266,8 +266,8 @@ main(int argc, const char *argv[]) #endif if (setlocale(LC_ALL, "") == NULL) { - fprintf(stderr, "invalid locale.\n"); - exit(1); + warnx("invalid locale, check your environment"); + sleep(2); } mypid = getpid(); From nobody Mon Mar 31 18:35:52 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRKZc4wW7z5sP5Z; Mon, 31 Mar 2025 18:35: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 4ZRKZc34qqz44N4; Mon, 31 Mar 2025 18:35:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3AxXQrSsi2FDFSULG3KnccdOwnK6G/g7FMroDxTLicQ=; b=iCQyRIKMLvnWomAb9B1UW7NiDQm1tfjst42burrBaJC0ZD/pPaiBEGT8mcRVGqFM/KXpLX oES30LN+SLf/9dXbprwJLAKJjfARvQQkdwFHSioh+lhRvjweL8l3z7JHek6cYJy6Mx+q3E EzO2FwXdNRsAwe5XmXC8QQ9GOLLFTeXBCAHQ9mQfbVVuPWUUyc8gyRf9NXV+Qh7Q0eyr+n bQt3tIJS/Gwq0d2/n9MG/QInsJkXbDgVp/dsIUJhEiiY+dhYRgSYUAqm/ySJ67bsw3NlIK SutDyokXj+WExwCVNqrozKbF6l5Wg/ow5VUUMTRsLghrN3VXkl/dmDV+IJbSrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446152; a=rsa-sha256; cv=none; b=qFBhHBUsIn9DY9Cb/q4SpqCG1yFUATUtawFmuVo1CssKp3c+BTdFPxhxBhhkztnFlfPVZF 1srp2cp6VCiZNwRTopfUVqsJghJPvPBRsIAZyw/YBB6FXo0t39Ih5vunRZEHiB7URw2fFS OOUnjL84P3ljy4kMiwicnRJC/X+aW/6OnzTSx62ROKgBVT2fYGM0mGhUlQR6Zfd6kyp7/O 7tJBQEh8mPYVRI7Ot+ZcygiY19aEbvZQYHrw3oGgBeRdZ6XPD5i9ZsFoyd/Fstaf/EQqTp C2zXgM9jXfHQa9ig9LF60dHEIK0eBBkANo2b2Cg9iwp6/mnS6X9tx7NG9B+BMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3AxXQrSsi2FDFSULG3KnccdOwnK6G/g7FMroDxTLicQ=; b=ehMm/lFUaOCjIaqjEMZ1WSNvjh2B7eUSJldnU2hSvRoY7hxdLu4iJtixgHLuNpeRFyeP+C ygRu1LDwnWrXE9tRLdAJXh6u3tu4kZKJKam6ytGuKNXqC/RNLMRhlOcO2Q1GA/9x2SC6dn nHR6GTYqAQ8aB/gM/g98Zz8lu6KhhlRFHmZvzfDZwjRKk8KedQaAZpHTXxXmjvFIGfbl9m +NhFmBmXiuUF+1tUqzQ+7xTHmh2qfVSWFp86rpnKX7FVRd7VpAkx6vQ7G+DyWntp6ViXKx MxRZA0AmQOE7ZRhSZS0bpmmvc85ydqIOSTdgA7WJ5teFx7L7t2bgZEj0hEsywQ== 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 4ZRKZc2YwYzwkq; Mon, 31 Mar 2025 18:35: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 52VIZq4n056952; Mon, 31 Mar 2025 18:35:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZqPB056949; Mon, 31 Mar 2025 18:35:52 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:52 GMT Message-Id: <202503311835.52VIZqPB056949@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 910535a82a29 - stable/13 - uma: Avoid excessive per-CPU draining List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 910535a82a29d71eb3951b2368aef358a207f18d Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=910535a82a29d71eb3951b2368aef358a207f18d commit 910535a82a29d71eb3951b2368aef358a207f18d Author: Mark Johnston AuthorDate: 2025-03-17 19:12:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:36:01 +0000 uma: Avoid excessive per-CPU draining After commit 389a3fa693ef, uma_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) calls uma_zone_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) twice on each zone in addition to globally draining per-CPU caches. This was unintended and is unnecessarily slow; in particular, draining per-CPU caches requires binding to each CPU. Stop draining per-CPU caches when visiting each zone, just do it once in pcpu_cache_drain_safe() to minimize the amount of expensive sched_bind() calls. Fixes: 389a3fa693ef ("uma: Add UMA_ZONE_UNMANAGED") MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: gallatin, kib Differential Revision: https://reviews.freebsd.org/D49349 (cherry picked from commit f506d5af50fccc37f5aa9fe090e9a0d5f05506c8) --- sys/vm/uma_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 2236df90dfc0..7334db2a9bbd 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -5198,6 +5198,13 @@ uma_reclaim_domain(int req, int domain) zone_foreach(uma_reclaim_domain_cb, &args); break; case UMA_RECLAIM_DRAIN_CPU: + /* + * Reclaim globally visible free items from all zones, then drain + * per-CPU buckets, then reclaim items freed while draining. + * This approach minimizes expensive context switching needed to + * drain each zone's per-CPU buckets. + */ + args.req = UMA_RECLAIM_DRAIN; zone_foreach(uma_reclaim_domain_cb, &args); pcpu_cache_drain_safe(NULL); zone_foreach(uma_reclaim_domain_cb, &args); From nobody Mon Mar 31 18:35:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRKZb5pvwz5sPGV; Mon, 31 Mar 2025 18:35: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 4ZRKZZ6n01z44T9; Mon, 31 Mar 2025 18:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P3Sn1n9+uLkQA7LbOyMJzy0+Nfhxw8ND6fELLA5tojc=; b=kTF3Y6uBtlaCSzU7dkglrpPHlo5xN1tdx4hnislMjBQLy9s+7nBCHpWd6mHpnpriK2YPIX Q+MHJEVUmLOWfJX5Chp73Yj+S/QFP+wsB3bsvTvlMw4a2Hojatdk7EZ5a8wspowF8S0zew wT469HvxUeMFxk1rSeflfQDiics6/1ZpT9WVLmbJr4vY+LSyLNVu0uCwRZFUVRT3l3eOyp YttrmsAbIaMQbmq6TP7hlMG1cT6RmBDJE4FQ8AXDMVnoFqxi4duoW+eqoMGu9oysWpVd8u sD/x6ueyk85DvuoqhbnDqngCFAOUkYigUl1FFWMLTENQddMZNaITee8llhNxEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446151; a=rsa-sha256; cv=none; b=ezvybUZtuogdU/rMWuOctfvocArVAqszb8P6C0Eyi+bi8mSSaukkn+2D46UaNpqFmiD8eS zkgVCdr8EUD2aOgFlGyfWZJ9V/nZYqRk/rUTbVMHIeyNlcZwak+kwKnvaKQetvci0ZUHQn QD3K+qkE9XteDNFypX0RMoY+Ga4lUFbrjKdHep2ZHLMk0pBk+ISam+MVCQdNY0VUMvz62W Qy5zGvPoAe6vybyFjw4AF9QXa3I0v1kW7dg54X/y0c94oFRRREOLvvCycmFBQCdpE64PPW I6s/sjS2lBbUN7cvVHpWs4je2OAMJIewy/iYOURkLrcfrmtauv2Qeb6u9USazw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P3Sn1n9+uLkQA7LbOyMJzy0+Nfhxw8ND6fELLA5tojc=; b=n1tbPWd629iBUwuiH7MZaKT6MRcQoHdrDyzpBDz4yE3tWsmN1Ytg73f+OsZqpgk3Pu94x/ WncfDn0CoOlxpYk8IG42KAHeDPGHdM2rrdQAzvZWETq1kzUXwei74kcIBFbetKqT4yw3Ch i0f5ej5n+pRYCJXDEMN8MW4Oz1b9ecyzKdkUK5i6EtEBXZunt5qlwSuZ24d1Cb7LVmc1dU Nve7jg+mheWz70nB8aHjL1e5G7Y9roEiUcpy692VBRL1nZAE5jwepFsOjJxy11VBekiWQV WYv+AQlm+CaPoBDLATplzexWA/GIqD99MFA0Zu8b5NI+v3QPiCrdhRwObymBQA== 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 4ZRKZZ6GVhzxCb; Mon, 31 Mar 2025 18:35: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 52VIZojK056791; Mon, 31 Mar 2025 18:35:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZovc056788; Mon, 31 Mar 2025 18:35:50 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:50 GMT Message-Id: <202503311835.52VIZovc056788@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 02324ae8279a - stable/14 - uma: Avoid excessive per-CPU draining List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 02324ae8279a977e4fd4a8d05e136ec8a471d5ce Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=02324ae8279a977e4fd4a8d05e136ec8a471d5ce commit 02324ae8279a977e4fd4a8d05e136ec8a471d5ce Author: Mark Johnston AuthorDate: 2025-03-17 19:12:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:35:33 +0000 uma: Avoid excessive per-CPU draining After commit 389a3fa693ef, uma_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) calls uma_zone_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) twice on each zone in addition to globally draining per-CPU caches. This was unintended and is unnecessarily slow; in particular, draining per-CPU caches requires binding to each CPU. Stop draining per-CPU caches when visiting each zone, just do it once in pcpu_cache_drain_safe() to minimize the amount of expensive sched_bind() calls. Fixes: 389a3fa693ef ("uma: Add UMA_ZONE_UNMANAGED") MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: gallatin, kib Differential Revision: https://reviews.freebsd.org/D49349 (cherry picked from commit f506d5af50fccc37f5aa9fe090e9a0d5f05506c8) --- sys/vm/uma_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 661c98b272da..56b7cc601754 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -5296,6 +5296,13 @@ uma_reclaim_domain(int req, int domain) zone_foreach(uma_reclaim_domain_cb, &args); break; case UMA_RECLAIM_DRAIN_CPU: + /* + * Reclaim globally visible free items from all zones, then drain + * per-CPU buckets, then reclaim items freed while draining. + * This approach minimizes expensive context switching needed to + * drain each zone's per-CPU buckets. + */ + args.req = UMA_RECLAIM_DRAIN; zone_foreach(uma_reclaim_domain_cb, &args); pcpu_cache_drain_safe(NULL); zone_foreach(uma_reclaim_domain_cb, &args); From nobody Mon Mar 31 18:35:51 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRKZc2fkGz5sPMg; Mon, 31 Mar 2025 18:35: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 4ZRKZb2kJKz44W9; Mon, 31 Mar 2025 18:35:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7vuUyd5rtdYaPd5pGGdMx0TSDqMIkDWUF5azjiTXFOE=; b=i39WJvdqae9njkLgPumolGdu6lmdZ6PGjJQ0e4DkbVj6Q9nD6rtrr6a2C09xmqOuKNAlyN 7dbDadsSt17NNhTIgfdC6b2zBq1Mn5888mhLjXKHmL99aXNWWZ7MkMHJY6Rv61YoC4Tr0Z 0JD8oJBcLQOrQ20n/HmY9fBsVCqf4L26oldOy/b6Aj7EgJwr6fGWnxuXjUeHVQDaFD/C/8 PppuBMpqt38fdF9Ww+DFtGEqrvhlfwR68DwvCgP5JLuhxm34rJmSwYakpxdedlPhfan6ef Qi92mC7ZKV53JuTHjCG4mbzo5iptV4mzlFRzk/wD45ape4nOlWQBxUIV1c6K3A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446151; a=rsa-sha256; cv=none; b=fL+x4lJKZKK+7iw41Oy925Eu8N5wrzz1kW6n2+Z4OOOBAFP40bmtH6wkbjrjQaKXOvTqvj lL0TSThL2Dwg09WIquyYE7Hxtnqw1G0sjCjbVsvtAwQLEpWNEalQXCo6Cao3fid9TDhjXX FU/+DUl+NztGJbD8AQ5H8nl60zkXGXp/gLesz0n3OJvqn8pKzYa5OwCzV2iEVtQdXvFs8U 7DG8Qi1Lo9QRv1itMy1zCMMiM6h+ic/P+Gk3lPTz3h9gpAYx28kdoxbkZYihlRTGf9e8YI 0Kmf+EGBHIjv8NV+nZ+r2MXUMDIb1uIxfNor+jb3q54AI9KLlVmY3AFcsscIew== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7vuUyd5rtdYaPd5pGGdMx0TSDqMIkDWUF5azjiTXFOE=; b=YWbgKPf2S1/44jlGNj81ZDgpYQCqJW3MF7MjQY/8+ifuERCBuUM9ONhZ6ZhIQlQnPMx68b 2mGfD0o51pOKhzVG8NafJYYclstO1n4TQn8ZZOiZTFf4+r0zlvWfjZAALYN+xojGQcDIZ3 rihyGlW7MAjzXKbWccTrLVor/Np3IILoHioBJRdYi53gYJYFaYw+ySDkzF+yhTAlehK9A/ wKRxjHo6stl00t67pUQwl4vXGHoHMLiKuodM6TZcMHqybPZ++e+iOcExhU6brpqt0f41Pv 9kDz88BHcv3pGsm7idOFZN4R6sJQVlYJZBKAGfwG6GgFK6GSJ3CynzTcE9k+uA== 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 4ZRKZb22tkzxCc; Mon, 31 Mar 2025 18:35: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 52VIZpef056880; Mon, 31 Mar 2025 18:35:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZp7f056877; Mon, 31 Mar 2025 18:35:51 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:51 GMT Message-Id: <202503311835.52VIZp7f056877@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 227c1270719f - stable/13 - top: Make locale issues non-fatal. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 227c1270719f1add47b70d13b3a8cbf3cb188e13 Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=227c1270719f1add47b70d13b3a8cbf3cb188e13 commit 227c1270719f1add47b70d13b3a8cbf3cb188e13 Author: Dag-Erling Smørgrav AuthorDate: 2025-03-06 13:43:44 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:36:01 +0000 top: Make locale issues non-fatal. If the `setlocale()` call fails, emit a warning and sleep briefly so the user has a chance to see the warning before we redraw the screen. Note that we have no way of knowing exactly what is wrong, but at least we can suggest that they check their environment. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D49230 (cherry picked from commit 180065eb09e699820a1e1c45d3d00156e0effe29) --- usr.bin/top/top.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/top/top.c b/usr.bin/top/top.c index d35d755fdc82..8712e56d43ba 100644 --- a/usr.bin/top/top.c +++ b/usr.bin/top/top.c @@ -266,8 +266,8 @@ main(int argc, const char *argv[]) #endif if (setlocale(LC_ALL, "") == NULL) { - fprintf(stderr, "invalid locale.\n"); - exit(1); + warnx("invalid locale, check your environment"); + sleep(2); } mypid = getpid(); From nobody Mon Mar 31 19:00:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRL6h71kQz5sQdZ; Mon, 31 Mar 2025 19:00: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 4ZRL6h6HBfz3Bnx; Mon, 31 Mar 2025 19:00:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743447612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I3f+pyWisSaOwDmGczje9/ufXV75Dv+FKBE8+JYrVO8=; b=nNrfEanti2qs50qNhJMDrzeDUKvM/aPuc+rzQSebq5JuZ2qTrj1dPRbS9M8H2p894AMGTK 2RSz0g+gqLiql+rYbGgRSlhnny+MftwuH6hHazKf64yC2FNmVbtF5G9KSuRBe0I1kPdysQ FHn1PLGaSb2yAN1lC5QvxRPVHitowhfobzo9BXJ8K6zcNWBmoY97UzdiWtc79a8apCDj/1 vlYSAFufL8fP92HeUwq4CaEWvsB68XmacWFOnYOpgZIof14wfqbodlM19mOYGCK6/pDoeK aHQoH/l5bitKRB64M3e3imgnNP+YL8Urd+5zVvZelK9xs3R1Q/SlNtffIuM4bA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743447612; a=rsa-sha256; cv=none; b=vzwB3lWrTW5mDJdXxb0vYJ2uRZD5eNuf2DIhMymYXT0omqthVM1jyr8lssGK0PfDE/l09V XZaYj7OxGY6l8BdrAJUSKxmxhvDU1FQofIAKBPpMxVijSTU6ajAnF7oUk1MbaE+/6bvDmX B+hVMXK1rLUN30KA3MWL6CWngMhInG0Qkh/atZqLv9Uusufw8fk9mHsqNlolutMrURe3HM 4ys0BkciluW5XcRlCeMC1qZdElzSvFwBGzLczdQQOBGYfgjYtJer0NATssnzFdADeD927k 7QnaDRFzape+k4AtoXF4XKP4WeRFxYKs8PAG+xVLMGSGfZYew39V8aByG4V7cA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743447612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I3f+pyWisSaOwDmGczje9/ufXV75Dv+FKBE8+JYrVO8=; b=xMogji7skazlr8vEDAynfWSuN5qAifC+lY31D7UGsoZCrDvYCP460EIQfEjpxbwW/qC1qH 7XwNR5j5Y8zDipPiGVX5EKPZpIdLSfoJmzL4ZgrJyuRrzs+ubYTtpQViO7lsEHl5BTT8Dy l2ofGVG43zvlaMokHVCQgIEgc8+XgXHO+CjiY2xMYysru0I469rPfNb/swYk3u30r+ob/E xV10GzctQO4zv11GgevhZxDOfpV8YfNcvJaqJYsC2UguwE/anzavCsDQHgJ8qLh02FSXzE MXwu28cAb96OKcW1RoK2XrDJo+I2lzhin1awt1LvusU5w5n+NJXXN+efm6fGeA== 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 4ZRL6h572LzxF6; Mon, 31 Mar 2025 19:00: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 52VJ0CFX001193; Mon, 31 Mar 2025 19:00:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VJ0CmD001184; Mon, 31 Mar 2025 19:00:12 GMT (envelope-from git) Date: Mon, 31 Mar 2025 19:00:12 GMT Message-Id: <202503311900.52VJ0CmD001184@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: f0adc907fc7d - main - mlx5en: sync channel close with the rq completion processing List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f0adc907fc7d3eebfc692fd5f4987c97e61b103d Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f0adc907fc7d3eebfc692fd5f4987c97e61b103d commit f0adc907fc7d3eebfc692fd5f4987c97e61b103d Author: Konstantin Belousov AuthorDate: 2025-03-04 07:45:17 +0000 Commit: Konstantin Belousov CommitDate: 2025-03-31 18:59:50 +0000 mlx5en: sync channel close with the rq completion processing Without the wait, mlx5e_destroy_rq() might free mbuf that is passed up to the network stack on receive in mlx5e_poll_rx_cq(). Sponsored by: NVidia networking MFC after: 1 week --- sys/dev/mlx5/mlx5_en/en.h | 1 + sys/dev/mlx5/mlx5_en/mlx5_en_main.c | 11 +++++++++++ sys/dev/mlx5/mlx5_en/mlx5_en_rx.c | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/sys/dev/mlx5/mlx5_en/en.h b/sys/dev/mlx5/mlx5_en/en.h index fdc12381e91b..f59902be226a 100644 --- a/sys/dev/mlx5/mlx5_en/en.h +++ b/sys/dev/mlx5/mlx5_en/en.h @@ -772,6 +772,7 @@ struct mlx5e_rq { struct mlx5e_cq cq; struct lro_ctrl lro; volatile int enabled; + int processing; int ix; /* Dynamic Interrupt Moderation */ diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c index 2c83492bdaa9..c3539cf8b8f2 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c @@ -1470,6 +1470,17 @@ static void mlx5e_close_rq_wait(struct mlx5e_rq *rq) { + mtx_lock(&rq->mtx); + MPASS(rq->enabled == 0); + while (rq->processing > 0) { + /* + * No wakeup, relying on timeout. + * Use msleep_sbt() since msleep() conflicts with linuxkpi. + */ + msleep_sbt(&rq->processing, &rq->mtx, 0, "mlx5ecrq", + tick_sbt * hz, 0, C_HARDCLOCK); + } + mtx_unlock(&rq->mtx); mlx5e_disable_rq(rq); mlx5e_close_cq(&rq->cq); cancel_work_sync(&rq->dim.work); diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c b/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c index 3aef10109720..6b53db6fea23 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c @@ -697,6 +697,9 @@ mlx5e_rx_cq_comp(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe __unused) mtx_unlock(&c->iq.lock); mtx_lock(&rq->mtx); + if (rq->enabled == 0) + goto out; + rq->processing++; /* * Polling the entire CQ without posting new WQEs results in @@ -717,6 +720,8 @@ mlx5e_rx_cq_comp(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe __unused) net_dim(&rq->dim, rq->stats.packets, rq->stats.bytes); mlx5e_cq_arm(&rq->cq, MLX5_GET_DOORBELL_LOCK(&rq->channel->priv->doorbell_lock)); tcp_lro_flush_all(&rq->lro); + rq->processing--; +out: mtx_unlock(&rq->mtx); for (int j = 0; j != MLX5E_MAX_TX_NUM_TC; j++) { From nobody Mon Mar 31 19:14:38 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRLRc5dk9z5sRLk for ; Mon, 31 Mar 2025 19:14:52 +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 4ZRLRc0RJ7z3MCs for ; Mon, 31 Mar 2025 19:14:52 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=freebsd.org (policy=none); spf=pass (mx1.freebsd.org: domain of jrtc27@jrtc27.com designates 209.85.128.43 as permitted sender) smtp.mailfrom=jrtc27@jrtc27.com Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4394a0c65fcso46072525e9.1 for ; Mon, 31 Mar 2025 12:14:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743448490; x=1744053290; 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=lpizo2OwMi+XLl0pQ13vqszssQcb/KqimIYqrBm2c4s=; b=Vce4F7WeT0NfcZB+ouNBshb8YfjN4bsv01d/loyESWmVWhfmJ6EoyVgrUt0EWevRFx H+JpotcREa6JCONfU6WMXxMF4nhd3Rl0n6avBe/Kkpss9Wzt8TAjsI131+4DOr0WdQUp qlIZ7RX5hLzfzvVaYnFFx0AkrdjS0bwwWbkDiBmP2N7f4r9qTMrwoY0eZOPxD/vFGsfV pMEirSrI7hInhbGlgcMGo8QDi6EJarFqJHeT0w5Md/dQi10lhjX1I6TSVMgAjMHQsshI lOKfhfIp6Cauht7V5X89UeZKetyg213i0HQCsSgQxPabHHuGrDbvhNgoh5xm8OQTN++E /lbQ== X-Forwarded-Encrypted: i=1; AJvYcCWmLYPSYkklX9ByKinvjc+t0D9fSXudmmtdbB5csc4lZmkmbHmoRHhUgzagB/OYusJVxiIjs2DH90ZFinowvbJXkgNS@freebsd.org X-Gm-Message-State: AOJu0YxsT0jknbJcahukc/qcnwuloJdpT5UrvaSJRdfZsDzdX0FfVuVF mFpaXjH6+4/4kSA/Rdb2HFOPcX7G7PLSejdUMU/uonTAR03dlTBzzX2K2aTm+W8= X-Gm-Gg: ASbGnctzlG88nIVxlquK7HxGz/IVQQU0rOUEXwRFaokJX6IUW7ZqaunMbrGhvFvHtwE 0DITHdSHL16I2CZKcg3p0xCrjr4TtZAfEpHCTQDagby4Z+PkkpH1t+QYGyISWIQt3UOpCtKYQh6 EnnfQV/oukYSoyEvPyndjAb0MRwY1EaWuuxk77lJOqAj2Mtwvfrp12GVfa4tPyn6KTyaCz2oBDE jiEhyjO2VdU9MwmYFNAmp8AJyTzDJq3Q7SzsxuQZBkpQCqWWfdu11yGJ43qZ3/ERFh4mDyg5txW grb7HygA+CQMZQwWg12oLx7FAUJcznBWQ79d4Y6mBJyx3dSTEwiB2D+0PnY9YQin5H/uUw== X-Google-Smtp-Source: AGHT+IHOhkc2kYVm9Wjh0IIAq3Zv6g7qTx5Huz6nefadVxaHauRYfLGWOMGTRsRC+0cJPzqyaqKYig== X-Received: by 2002:a05:600c:34c1:b0:43d:b85:1831 with SMTP id 5b1f17b1804b1-43dabe240cemr111495185e9.0.1743448490375; Mon, 31 Mar 2025 12:14:50 -0700 (PDT) Received: from smtpclient.apple ([131.111.5.201]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d82e6a532sm172788125e9.9.2025.03.31.12.14.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Mar 2025 12:14:49 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\)) Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 From: Jessica Clarke In-Reply-To: <202503292018.52TKI7va048377@gitrepo.freebsd.org> Date: Mon, 31 Mar 2025 20:14:38 +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: <202503292018.52TKI7va048377@gitrepo.freebsd.org> To: Colin Percival X-Mailer: Apple Mail (2.3826.300.87.4.3) X-Spamd-Result: default: False [2.76 / 15.00]; NEURAL_SPAM_LONG(1.00)[1.000]; NEURAL_SPAM_MEDIUM(0.91)[0.911]; MV_CASE(0.50)[]; FORGED_SENDER(0.30)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; NEURAL_SPAM_SHORT(0.24)[0.245]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : SPF not aligned (relaxed), No valid DKIM,none]; RCVD_TLS_LAST(0.00)[]; ARC_NA(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEFALL_USER(0.00)[jrtc27]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[209.85.128.43:from]; TO_MATCH_ENVRCPT_SOME(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-all@freebsd.org]; RCVD_COUNT_TWO(0.00)[2]; FROM_NEQ_ENVFROM(0.00)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org]; MID_RHS_MATCH_FROM(0.00)[]; R_DKIM_NA(0.00)[]; RBL_SENDERSCORE_REPUT_8(0.00)[209.85.128.43:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.128.43:from]; FROM_HAS_DN(0.00)[] X-Rspamd-Queue-Id: 4ZRLRc0RJ7z3MCs X-Spamd-Bar: ++ On 29 Mar 2025, at 20:18, Colin Percival wrote: >=20 > The branch main has been updated by cperciva: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D0e33c2e6df7a5de65db40c7cc0fc97f6= 6da28ccd >=20 > commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd > Author: Colin Percival > AuthorDate: 2025-03-28 18:07:01 +0000 > Commit: Colin Percival > CommitDate: 2025-03-29 20:17:29 +0000 >=20 > pci: Only re-route IRQs based on firmware on x86 >=20 > There is a (very historical) call to pci_assign_interrupt for the > purpose of routing IRQs which may have been set up wrong by x86 = BIOS > or firmware. On non-x86 systems, this is unnecessary; and on = INTRNG > systems it results in a (synthetic) IRQ leak and ultimately a = kernel > panic after many hotplug/unplug cycles. This is in fact incorrect. Whilst there may well be a leak that needs fixing, the rerouting is absolutely needed on non-x86 platforms. See 5884fab46153dee52bda660bcabca95c3cc97f44 and 7de649170fd804668da78f005c7966941b402106 for some of the history behind this. As a result of this commit the problem described in the second commit is reintroduced. Jess > Suggested by: jhb > Reviewed by: jhb > MFC after: 2 weeks > Sponsored by: Amazon > Differential Revision: https://reviews.freebsd.org/D49560 > --- > sys/dev/pci/pci.c | 2 ++ > 1 file changed, 2 insertions(+) >=20 > diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c > index fe99d6beb029..3a51e4c38296 100644 > --- a/sys/dev/pci/pci.c > +++ b/sys/dev/pci/pci.c > @@ -4175,6 +4175,7 @@ pci_add_resources(device_t bus, device_t dev, = int force, uint32_t prefetchmask) > if (q->devid =3D=3D devid && q->type =3D=3D PCI_QUIRK_MAP_REG) > pci_add_map(bus, dev, q->arg1, rl, force, 0); >=20 > +#if defined(__i386__) || defined(__amd64__) > if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) { > /* > * Try to re-route interrupts. Sometimes the BIOS or > @@ -4184,6 +4185,7 @@ pci_add_resources(device_t bus, device_t dev, = int force, uint32_t prefetchmask) > */ > pci_assign_interrupt(bus, dev, 1); > } > +#endif >=20 > if (pci_usb_takeover && pci_get_class(dev) =3D=3D PCIC_SERIALBUS && > pci_get_subclass(dev) =3D=3D PCIS_SERIALBUS_USB) { From nobody Mon Mar 31 20:59:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRNmX2QxLz5sXy4; Mon, 31 Mar 2025 20:59:40 +0000 (UTC) (envelope-from cperciva@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 4ZRNmX1JDBz3cj2; Mon, 31 Mar 2025 20:59:40 +0000 (UTC) (envelope-from cperciva@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454780; 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=bQkNrsHkMxnH2ftYp/yp81OHMJYnec1e5tw1OIlS0ZA=; b=CkJG7lM0+HUc4WxYYo5iWbZ6sRCOQVJThzfm5/kpX+lniq844pynEVgBePJMImq5dZaFtg Fb7b0DbW4s7M44JFk4XCco3WdqO9XZLv2dlUp0nbE4yBtfdQTxJPstmVB08clMeL6x4Dzh K5Mtfm5W50pYDHYGab28wEDT0mVVfizOGdKIjQ5DXv8JpaTC458WLkNoxgJyYJpeT9B2EW RFvX1HXx90u83+IiiiM+6iY+wh0D3gwq79PYjIQPtzjLolHld+DwL3UmAA/RwsbKBHGFka ZdKDvpZLRuqAF6Cr+uK+tntWRsOWg5cejKaI4GuZfxzYmvbG/1UI4zM+klSmVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743454780; a=rsa-sha256; cv=none; b=Fnosi4bRh2rOr4FzMdw6hBOcffSbuWtxQX4ZfLDRcB3Lba96eUr9OVwk6sf5H8M151Ef9n IASdoo7FqCxfA8JgXQcPFdFcFtYuFZ3UuOOciso3D0rJCC4z5zcEs1cPfrsYd68WxdFZQd zaPwiLJ4JphTvGiTgnGXdh/PGj/Z91EHrPBKHh/eGrDG0FcWHvwewf04ViTYRuBLH+0X2Y 6tkN8k+sDFD0sW2juTjky+B7bkckHKqKWinTgHHxzJy63Q6DY4nE0p2ocURybXhvBODa7e YliAm3xduMTOS4zTflkn8ykzfR7NQFJs0C7rXGHz+3nOT7PT36cCDIRtUaQc0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454780; 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=bQkNrsHkMxnH2ftYp/yp81OHMJYnec1e5tw1OIlS0ZA=; b=eOhNs+NX0ZM/xMaZTUQlERMDyjIqFKoUp+xo2v2P95FGirKz9ltMtJgO1xyW3WukW9+HAZ Ll9MKwqrK07CfHfjcjK8Fq7nr2Dp0IDcKNaIlMfzljOTocmFjAmzRlogw21kkSSY/HNyDm sT52vhD48FQKUrbrTqtGAgIdWlDPYFl9+Tr3/+z69wUlKOVzR/ChQgLb7ONyW361wjAI0i d3K0yeDn3XmWEsqyQwciRAva2oqcNjyA3pK82TnjTi2PUz+yTspLgnprjMmQVvsDiBeiOg TbkewZ7OP1Mg0lZGVzFHYDw9BN3De145jwFGVzWvhMZ5bYlpsnFAtH2HY2wdHA== Received: from [192.168.6.36] (S0106684a76304d01.vf.shawcable.net [70.69.240.84]) (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: cperciva/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZRNmW3mbMz156k; Mon, 31 Mar 2025 20:59:39 +0000 (UTC) (envelope-from cperciva@freebsd.org) Message-ID: <8897817f-b403-4e72-8fa7-87db143695cd@freebsd.org> Date: Mon, 31 Mar 2025 13:59:37 -0700 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 To: Jessica Clarke , John Baldwin Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202503292018.52TKI7va048377@gitrepo.freebsd.org> Content-Language: en-US From: Colin Percival Autocrypt: addr=cperciva@freebsd.org; keydata= xsFNBGWMSrYBEACdWRqDn3B3SKO7IG0/fGHYtfs26f3Q5QeAcasy1fQLniwGQWn5rlILhbCD K/jdNoDm5Zxq20eqyffoDNObCjnHgg4tGANdi+RmDy+7CDpE789H8dss9y7Pt5DlGGAXQQnt hxush3EYS/Ctprd9UUL/lzOOLOU1aNtzB84tNrJBtcJmL7OYHfyTSNFxvedqJrrasejIQOLI t/DQ89BPzz+vsKHz7FJPXh3fsVkzLA00DJYcfkgxyABfJNA7U6yMwd4DVSdx/SsvfIDMVXnu UXCXswo106WPZbYGlZPpq0wW6iibtTerJix+8AeuwXvl9O1p8yESK4ErkIxCnmghTSz+pdzj z/6xBRkdDM9VdZ0r+CzsaNXMpDOzFuKyjaiYBdgCLljbDnXIHFcqXenrZ7Xwkm09g/M4uVSh pIUG2RYa6tsHSQoGCp3f2RZv1znfViKQFbbL83QjtPA20AhseZSYbHp1FPhXyy9J0wkGL16L e99g6gdGeIRE82BZjBjKGDkoyDPq+oDRSFl8NtzmIKy+cfz00nViqcTF4bREXEawFGhlpO0X O9q8mijI9iFB6zaPBiSdJGBL5ML5qLTNCl8Zlf4m1TBvmRTqF/lzMHVXHidDoUhpSh/y3AFZ 1KrYc27ztJQywDJPJPWPbtY8YhFLFs377gfP8WldsZjzp8nvoQARAQABzSVDb2xpbiBQZXJj aXZhbCA8Y3BlcmNpdmFARnJlZUJTRC5vcmc+wsGRBBMBCAA7FiEEglY7hNBiDtwN+4ZBOJfy 4i5lrT8FAmWMSrYCGwMICwkNCAwHCwMFFQoJCAsFFgMCAQACHgUCF4AACgkQOJfy4i5lrT++ ig/9GZKdN2fHSyrANKZX38ivd7IX2wAYouqH9DrQM94W8IciaDLmarN4Pl9mY+aucMwQUSyp uNtKOJwKqhVVaalF9Zw0sRMH4CJuvT7vKCtZ3q1Okb7soRvFte4d+vXhvPxCvBFDA5JzU7Lg DR5eqqcvF1dN1OuCq16pl0zCOSH/Jr5ToE3LM3Av1KBGcZD7ZSzHRWsFjV5AOUJKySuA3GwJ e/jASQcQ0YfCnru8ntLmYg/2SKvZFlfthZiCBnAppMt4n4BUAw3TDvf10HIDtdneejawcbLS gofLCvGqumwbZYAMKWrFzT4+7KQvr0pOw8QD7EbxnB4f9hQ7UiVF8qWsyKU3iv6b5JLhbS59 ooKRccyOvdMLcVJ0ZdpqoxrNv061ZUqLL5RiWjBlc1qjBnDxeg5oyM0rT8WLftdgvyH6RQt0 KWngumBAT5AT2DUYL8Uz1490cqfO9K4yEGZAJB9XRVX1g2IWTOjae+0g9ZII+h91UngFz+Rz aKDeseKBbCGDOFXx1TqKiHl2g255ZnUxKYTlucFtguv4gDGBgEk4G9JaEWBw1IWblcKhxH7L 2vWsUhvwghjIxHdO/RkeIeHvSp4YZxCJ7a3TaJLYAlwYopfTKVzNhcDY5h5syEuoHjyJCxXK SyoJYAVu8Yl2KUhvOtOmL1VZ6xyHnpdMRWKJZ5jOwU0EZYxKtgEQANYfgbtUMVnhjxDHhWLp g5kLHK3YW0TfJKzpXqDB7NiqxHofn4OcbZnVC3MKggcbs9o1/UtsjnlsG8550PfiYkDXvPiO RJwgbGs6MGIDK797C6cnBLQ8xwBa9SL4cl5iQFnhWmt6vwnJ+an/cm5JpYves3wL7jV09qU9 57hkHXEUcl38r4FssZzVcLKPUVTa3Un+QGRTGDGe/f4ctjMaqv0ZCM+l2ixPhf/vqESrfSLv V/+T3dmtUfXjazO3SABvsHwxgGuTTYOlKoPCaebr+BRdqm0xeIShoIlhvTI8y4clchqx/Uxg UG5X2kvU13k3DS3Q8uLE4Et9x1CcZT6WGgBZSR6R0WfD0SDnzufNnRWJ0dEPA2MtJHE7+85R Vi9j/IgZV+y5Ur+bnPkjDG1s2SVciX5v9HQ0oilcBhvx0j5lGE9hhurD9F+fCvkr4KdbCknE 6Y8ce8pCNBUoB/DqibJivOzTk9K9MGB5x0De5TerIrFiaw3/mQC9nGeO9dtE7wvDJetWeoTq 4BEaCzpufNqbkpOaTQILr4V6Gp7M6v97g83TVAwZntz/q8ptwuKQPZ2JaSFLZn7oWUpYXA5s +SIODFHLn6iMoYpBQskHQjnj4lEPJadl4qj+ZKA89iDAKsniyoFXsbJe2CPbMS1yzBxKZq6K D/jpt7BOnuHr/JrXABEBAAHCwXYEGAEIACAWIQSCVjuE0GIO3A37hkE4l/LiLmWtPwUCZYxK tgIbDAAKCRA4l/LiLmWtP3jmEACQrh9gWe8F1Tkw3m6VoHKwLc5he4tX3WpQa//soPO6iGG3 S3WPruQ46NrAaAojoOcKI9UONDO5rxG0ZTX53S+lu2EO47jbcLwOCjaEpjKpDRt9ZXBQE8Xl mtBE9Bp3W9gpjB1nE3KNM1mJYgsK0QdRpwwfh4pVgGpOj8j23I6MCK+v99zEBnpgCn2GX8W/ kctRXHqWwndHysOJtRP/zrl7dDaABF1f9efUl0LL3TD3GJ9VDz+DNOin/uK2a1hiJo8QzTRk PpfUQ2ebzDsrd1i/pOWkMSkdH+rEu4AGrXWtaBwrMyrGkL6Icb6yO+P9/z0W2wlgBf3P1YRt JPgQt/Dj3yvA/UnaV/QmuVQPjl13o24UnJGsZM8XGnNdfWBKkC1Q6VXC4QT+dyBHYH9MuE9d 6oGl8pFM1+cTfEfbM62/rRoPkF1yHMsI/903VxEvuUIKfhEZAVLFyHldooNxuchntHQP9y8J 8Ou9bWYQP7MnEn+kwSwrZkjurfPkan+xQvp6dDYnj3V0GwA5pprBMaB928VIDVOv+1PNQI3t Cvk5VPv/skq+TJRMHW7bFSt8PRa91cUf1FOLIz9APDiJOzXkwxUEHGV3zPSaUhs1JYjyBeGT wDAvtLUdjOnRhEUOwlnIrztmvyciutjJoVzKEEjj5WXnHk9L9kQ1bpAjkjTONw== In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/31/25 12:14, Jessica Clarke wrote: > On 29 Mar 2025, at 20:18, Colin Percival wrote: >> commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> Author: Colin Percival >> AuthorDate: 2025-03-28 18:07:01 +0000 >> Commit: Colin Percival >> CommitDate: 2025-03-29 20:17:29 +0000 >> >> pci: Only re-route IRQs based on firmware on x86 >> >> There is a (very historical) call to pci_assign_interrupt for the >> purpose of routing IRQs which may have been set up wrong by x86 BIOS >> or firmware. On non-x86 systems, this is unnecessary; and on INTRNG >> systems it results in a (synthetic) IRQ leak and ultimately a kernel >> panic after many hotplug/unplug cycles. > > This is in fact incorrect. Whilst there may well be a leak that needs > fixing, the rerouting is absolutely needed on non-x86 platforms. See > 5884fab46153dee52bda660bcabca95c3cc97f44 and > 7de649170fd804668da78f005c7966941b402106 for some of the history behind > this. As a result of this commit the problem described in the second > commit is reintroduced. Interesting. I also got an email telling me that this broke vtnet on powerpc64. BTW in addition to causing a leak (which ultimately happens in intr_map_irq) on arm64 I'm seeing the synthetic value from intr_map_irq being returned into PCI code as a *real* IRQ and causing a panic when PCI_INVALID_IRQ is returned. So there's something very wonky going on here... I'll back this out for now though; this is clearly not the right fix. -- Colin Percival FreeBSD Release Engineering Lead & EC2 platform maintainer Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From nobody Mon Mar 31 21:01:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRNpL52d7z5sYJ3; Mon, 31 Mar 2025 21:01: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 4ZRNpL492gz3dp1; Mon, 31 Mar 2025 21:01:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454874; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3aJl39QyLYfx8+kqmeDoFcj1sx01YNNvw0kOaf3Vw8A=; b=NV64agmb2kFaBlQGH4YU7nr6nXjhRWXJ6Ash+d1w1gRPG9iIZ5zSMOIpyvpzWhxfCbx5hn sUo2qk41vqn4z564qPnVurbyHkY109AGe8c1Vf39gSenJYjWH68oG5oV6+3c6yzZEfwzka y5XhiaesOwRknGFJrohceRk3SeKY8W2Afl6FYfPe4k98e7Ch5iP1hn8bYUzTZoowUyiUEf Df+H42ubtIWKSjqqlTkFz1X7t6rgEawJecUO8SkawgFmMxHOIITvyB9d7MaNYFk0kul679 Vwdx+C1CHqiG9xsdZypKX2twA8BAgqeKaEJs99LqnP3MlfXyaFLzl/ty4YVTeA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743454874; a=rsa-sha256; cv=none; b=YHAO1UKdccjtXgZqsDM1xytWRVS1u7TXoVGGMkiS5NY9A0SQxceoof5De94ELquUx4afgx jDSnxWldV7jxuBl+HfnLgcwghc6yYYAoMSCTLczPUV5boO+vqdy/lgB2g2rlwt5gM6UqPq xXjYR0mAF2P1nuIo5v06SmoZlx18ggn9qnJ2pC+hjeAuFbL552KqLjT6so5GLSj78kKLYW 4mcr5ekkpL+WlcIB8nhbkSOA/Xusp2sGhTAfNPfFOptdaPKcGEylLQASxkpykZ3WxwtXxN f54I5QBc/2TscN68OLcH0xLsQ6uDRiKlwkeEu2beWa7x2qztOf+4Kp+1AC2zpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743454874; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3aJl39QyLYfx8+kqmeDoFcj1sx01YNNvw0kOaf3Vw8A=; b=OSTasVZ346d6NFtKiS8P6swH8swW+QMXxfACiB4x8UNGJvIuoci3x5Jgs0X1q6UyQR483i y019ZyBwKASkEGkhajTlxnehgIiyzBZaeL8Bs46GZlyv2ThmnKqMzVuPQsSyWoMokQq/V5 g+OnP+JVOovFaAXgJ495TTM3sRSDlJX5saP0eDAdayT7HK3tZjjdl3vl0MZqk+J48b1czz HwHdTbmt20KsO+jcLYcdAS82rMOO19ZDe0OFlcEKp5UBXlR4zSYplsIX3DiemHMEBmnUwf gUMc0h9NMrlkJcZZexLBTEvNZTmglPNQqf17z0wyvCnX5Vbpk21WmHSm4I5VYg== 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 4ZRNpL3MPCz10wQ; Mon, 31 Mar 2025 21:01: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 52VL1Ega032616; Mon, 31 Mar 2025 21:01:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VL1EFb032613; Mon, 31 Mar 2025 21:01:14 GMT (envelope-from git) Date: Mon, 31 Mar 2025 21:01:14 GMT Message-Id: <202503312101.52VL1EFb032613@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: 680d34896c36 - main - Revert "pci: Only re-route IRQs based on firmware on x86" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 680d34896c3672da439a1bc3ca5711339e6e5f01 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=680d34896c3672da439a1bc3ca5711339e6e5f01 commit 680d34896c3672da439a1bc3ca5711339e6e5f01 Author: Colin Percival AuthorDate: 2025-03-31 21:00:36 +0000 Commit: Colin Percival CommitDate: 2025-03-31 21:01:09 +0000 Revert "pci: Only re-route IRQs based on firmware on x86" This reverts commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd. --- sys/dev/pci/pci.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 3a51e4c38296..fe99d6beb029 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -4175,7 +4175,6 @@ pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) if (q->devid == devid && q->type == PCI_QUIRK_MAP_REG) pci_add_map(bus, dev, q->arg1, rl, force, 0); -#if defined(__i386__) || defined(__amd64__) if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) { /* * Try to re-route interrupts. Sometimes the BIOS or @@ -4185,7 +4184,6 @@ pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) */ pci_assign_interrupt(bus, dev, 1); } -#endif if (pci_usb_takeover && pci_get_class(dev) == PCIC_SERIALBUS && pci_get_subclass(dev) == PCIS_SERIALBUS_USB) { From nobody Mon Mar 31 21:29:44 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRPRD3qyZz5sZtr; Mon, 31 Mar 2025 21:29: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 4ZRPRD321xz44q0; Mon, 31 Mar 2025 21:29:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yrtJtDkFGgljKihHv8ARVMiKqyyJCmyBwUyE0CtgX7E=; b=H4XYw7CACI04n1fMu42/7PUvZiUeHxyiiR1+c8MdDkC99tZZRajtYb3sV+37jtNXXbJL/7 eicqSuvv1OqsU4tmQHcPyG5jzb4EqGDjnyTKF88taqXscAhFRKKoIc3+R8ZfusG9WnU5UV qs16lClKf3QbaS0sbKJ3PIR5wry3+AO79z8A84aDXCQ6dJOQVc2qulHDkXSPTJse2H+5gM KwMAus0RQNLdAPGpLWYA08jkMBTjnp1EUO429NKQ5f3LQzLieiL/J0Pfh9gaU0+PNuDAiR +ctr5zPHqfA+rENoGKwdARdPMdet0d+b2NAjJCYCLPn/kSPsekRZ6wyQBKOcMw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743456584; a=rsa-sha256; cv=none; b=rkXSV121ttu1S1j3IVbVRD0bYtdthQhfWj3X2Whe+S+dj+IsWcCdKJroBx4YtHt9qHnlQT Co2Qxtt7BJcDhrl+5JaVGGw1+Njw3h2QcGE2QGhDEzm/yHAQyuApygR+wEa1/l401coTFp +fVxqVbVIrff9VRofVUZdGIkyvM34Q0FV3a8HsshvCyx880vURlmj4kjZE6EZdNxug4O+I x+6JYqv5DADpGcPe3XLscQp0SyyOfLJ6FDufFWKBDoVqL6Bk4xUVgZL4sNleA3cORFgYPe 8m/j5svKOU7yHENCMNFPMWqb0wi99kGiDHP4ElgqM6xhrolhYn3JGp6QpUodug== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yrtJtDkFGgljKihHv8ARVMiKqyyJCmyBwUyE0CtgX7E=; b=J4DRuSBO1uKqGE8+IQGNCdAp+DQZifa/fRGEEvHO5Ue2pVxGg1/1j8/gEFQZNof/HtwVpo 6Uoxb7J1coVpM0TrmZtzBNvSjzLy3imFosspOayJvGZqvbLxL8IICILdhbpkcJJbsRcyc8 7XIImRpK+5ajE75mpfLrCiJv0xQtQO8qO+gVt8z12YuCifHGGLlFM5PkvEJ5BgswwjvhEI RKcrSzHCeCc8rkcG9o6UK4tCpLXVJvqRkNwuwzq3SdppEBqNURnN1Maw79bl5yCQvBD9IJ aKd8Nwgf4YvuEclpJHC6eyLGjBIVbE5/eT2szUafA8lvHXKWKM2OLROwOnRgIg== 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 4ZRPRD2dcxz126d; Mon, 31 Mar 2025 21:29: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 52VLTia2077300; Mon, 31 Mar 2025 21:29:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VLTiSV077297; Mon, 31 Mar 2025 21:29:44 GMT (envelope-from git) Date: Mon, 31 Mar 2025 21:29:44 GMT Message-Id: <202503312129.52VLTiSV077297@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: 8d95e941d4cc - stable/14 - netbsd-tests: Update a test case to chase grep symlink handling changes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8d95e941d4ccd0bed8678e20f85dbaf008bd714f Auto-Submitted: auto-generated The branch stable/14 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=8d95e941d4ccd0bed8678e20f85dbaf008bd714f commit 8d95e941d4ccd0bed8678e20f85dbaf008bd714f Author: Mark Johnston AuthorDate: 2024-09-07 19:39:49 +0000 Commit: Enji Cooper CommitDate: 2025-03-31 21:27:25 +0000 netbsd-tests: Update a test case to chase grep symlink handling changes This test case verifies that grep detects symlink loops when traversing a directory hierarchy. Fixes: fc12c191c087 ("grep: Default to -p instead of -S.") Reviewed by: ngie, jhb Reported by: Jenkins MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D46544 (cherry picked from commit a700bef1e4ee3e6f4e1a86a374bf9b4044f69a70) --- contrib/netbsd-tests/usr.bin/grep/t_grep.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh index d2539a8250de..b1412a7a0715 100755 --- a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh +++ b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh @@ -81,7 +81,7 @@ recurse_symlink_body() atf_check -o file:"$(atf_get_srcdir)/d_recurse_symlink.out" \ -e file:"$(atf_get_srcdir)/d_recurse_symlink.err" \ - grep -r string test + grep -rS string test } atf_test_case word_regexps From nobody Mon Mar 31 21:31:00 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRPSh6BZcz5sZmb; Mon, 31 Mar 2025 21:31: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 4ZRPSh4yltz46Gd; Mon, 31 Mar 2025 21:31:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3d3nwMjK0iDfCE9f9h/nliKBA68q09UZUysQvpBwYwU=; b=GD4Dcmm0LtSIrlhtJWhkura/0TGwuR4kucok/PTOZEl9iWgT7NvqwVF12VkgYb+N/ileh0 xM6hejZt/IYCdbTAk59G+U/lLdlEzUKJyM+lSxD1rqDKhlKdDEseHPx6L1oo0QOi0Q9WtO n2J1gntcvRlgbt0ivWC4oves9pbOZUX6q5Cq3DsgWqBYxUXsBbNQt8IhZDX0ETc4cY0Uxh Uxf35YxuEl14iOFTN8W0D967qk2LT1+yMUwR4ZCYQ84rWue07EXht9sFYMEJqgdZE1OkwL BRzOHXhqdbCHwHJPS/L+yCBO2L66MvyCGH03uyoK+jEOlKh5xvTcnGevz+lqSA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743456660; a=rsa-sha256; cv=none; b=HEcOwDe9cOxkqp5bmzr19H4FMd80Rh43sVtNXLNaouXP4tNG9Gx0mPcf9Jn7zHZAOkfyxo MhahlbNENchHB3MT7Yih4suLcbet0nQplC+X3GMajDUR1hU2nmsLJvVPnd1BUsCpFYxVeC Zb813UUNEcqLEUiqREGkeI1yLgzlkwp6RRt3t5rUT7NDthIsDLj3mETdCHJjtBkxUutJLK SjdcA+t42V3CX7SVqTqauP8lExuQJjO5pJGigskJskBX1kdruY5RtV1CjZ4tmuXukNS2JH hWMmQ1uhGwQ2WsAo7S+DZTGzOQC0ITXefxnzzsEct1Etsgxppg8TA9bTePcNjg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456660; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3d3nwMjK0iDfCE9f9h/nliKBA68q09UZUysQvpBwYwU=; b=CGvj9ZjiGMHBEhuDQ5MFyGzUNSJAgSG56jVssk1Ie+NCvdU6sgU3p4F2Z0Bs5CchzsBPMz B1J925ri/I+BKyXAQ1AZumxMFciHH6PmnEaXFwGxWA/Nz+kJN0QBsIJAE2mwjtoj3MCJRq /Xhrsrqrm9RwLumkXonQb/azXTcpbaxVgtKix+YvA8t2Hl/nTl2ZnEBzP6TGSfKUa80+hX Zcqeo+3KALq4mHosNfwJiiTcxTP8Jm6UmoELiPm6/D4yBd4nMVWc5hh76JVhsVOGFb4FQe f52gsgmKXyhzgqI1uP/TOFHw3O+2Kv9GKk+BSVluGdg9elomT2vFKRZT1+KJbQ== 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 4ZRPSh4QCzz12ZN; Mon, 31 Mar 2025 21:31: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 52VLV01e089023; Mon, 31 Mar 2025 21:31:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VLV0Cp089020; Mon, 31 Mar 2025 21:31:00 GMT (envelope-from git) Date: Mon, 31 Mar 2025 21:31:00 GMT Message-Id: <202503312131.52VLV0Cp089020@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: 18c4022e9fdc - stable/13 - netbsd-tests: Update a test case to chase grep symlink handling changes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 18c4022e9fdc6d7f4f5da713de0e9d34d170536e Auto-Submitted: auto-generated The branch stable/13 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=18c4022e9fdc6d7f4f5da713de0e9d34d170536e commit 18c4022e9fdc6d7f4f5da713de0e9d34d170536e Author: Mark Johnston AuthorDate: 2024-09-07 19:39:49 +0000 Commit: Enji Cooper CommitDate: 2025-03-31 21:30:41 +0000 netbsd-tests: Update a test case to chase grep symlink handling changes This test case verifies that grep detects symlink loops when traversing a directory hierarchy. Fixes: fc12c191c087 ("grep: Default to -p instead of -S.") Reviewed by: ngie, jhb Reported by: Jenkins MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D46544 (cherry picked from commit a700bef1e4ee3e6f4e1a86a374bf9b4044f69a70) --- contrib/netbsd-tests/usr.bin/grep/t_grep.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh index d2539a8250de..b1412a7a0715 100755 --- a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh +++ b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh @@ -81,7 +81,7 @@ recurse_symlink_body() atf_check -o file:"$(atf_get_srcdir)/d_recurse_symlink.out" \ -e file:"$(atf_get_srcdir)/d_recurse_symlink.err" \ - grep -r string test + grep -rS string test } atf_test_case word_regexps From nobody Mon Mar 31 21:35:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRPYY0K43z5sb6N; Mon, 31 Mar 2025 21:35: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 4ZRPYX6BpSz49dt; Mon, 31 Mar 2025 21:35:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iDawhuA8u2CSppTx7Cz170MQNx/X8D8uHU/BRd7zePA=; b=Q6M9SCEa2d/D9nvMUnalS1CJWkhkegwYS4sMQctOssEUAaP9McZko8rXSYhJqv2FBHfAXo lp1GFZVxNCvhv8PRrcz8RtWvdWqwfFH7c/7GAIoMSWBL2XW3ESsRSFD9gqScAxwBAW6lBc bkoRfrL9nFpgcwg6QUrFQTwBaWLa4ziAcB1NA8rEzsHf5f+5nCIsY0IAvW/2FdG9Q7nOan 7nYJ78KejBB0IhLXPyKKl89cZOMZWWG6yesjQhiYo9mFBFaO8VwevkEVJzUaKejayrDMBA 2fd6NI04f9ipSlmVIWzPbmxahhpdbkkbJ7MCksN3IuqHxe5fXq+rsmpWr2ysUg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743456912; a=rsa-sha256; cv=none; b=q7dXvrt5cApsnDJcXmGJq0ZhurZzmvMleXs7Xx5u1FdxtmZkYUjB3hQNENzyEvWa8HdVB5 CXOCYg78T3ag5wyayDL/JvNVsC4TYM5ZS8a/it01HYWIPJ9zPm7dUkwf6dHLcsJn0iBwjS XXZApoOCTajSB5MMD08OjeCRf57So4pTKSlaeiDAPGfXR5nyBBfU4rjVpJPP0SDRGChp0X uK1iaEijLyYj/oqneeexSuUQj0xm/Rt5KwXoApfAUdJ3XoaZcLSx9NyrokAA8R29ZPhfGN a8nK/55sSGLPRKZm8KSHKDlAwPbJhqtx0bc+0O02iipSNfbFwRRVv04fKkoc7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743456912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iDawhuA8u2CSppTx7Cz170MQNx/X8D8uHU/BRd7zePA=; b=th+QxSM24ZxGi96wfvjGSHbqy0ZgW6MpnPjbq6FWYJf417aRrEADAV+XeWm38HHpILjd2x +KsL5eE6P9R3stvVTsAiIi9EZTeS9kCw58xP0LIHCxIOLvpfPZ1jryRiJAy8epAxQYcQ+J TxtcFisfa/wDr3Uv9gxnujg9g+LDz2IjF5LLcBatt2DdflU+OtlaoKEFEAbkykKmxZgpQe T5Ue0U1Aydt0R+ZN4woDvaMJ7P84to+0i9uENdqwJz7+lwmFjlxAZfE7rWSUZAP1YMSr3C GSgF8DQGIQsKoOEc6rY+520/C1bcCborcQMn5UwQ3WlV0dYYIuZP90YxIYABoA== 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 4ZRPYX5my6z11vh; Mon, 31 Mar 2025 21:35: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 52VLZCig093047; Mon, 31 Mar 2025 21:35:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VLZC0o093044; Mon, 31 Mar 2025 21:35:12 GMT (envelope-from git) Date: Mon, 31 Mar 2025 21:35:12 GMT Message-Id: <202503312135.52VLZC0o093044@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: ebd127c3e36c - stable/13 - file: Support testing multiple magic files. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ebd127c3e36c1f02a7a9b2d63621040e7d1a00d4 Auto-Submitted: auto-generated The branch stable/13 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=ebd127c3e36c1f02a7a9b2d63621040e7d1a00d4 commit ebd127c3e36c1f02a7a9b2d63621040e7d1a00d4 Author: Xin LI AuthorDate: 2023-10-09 06:06:20 +0000 Commit: Enji Cooper CommitDate: 2025-03-31 21:34:46 +0000 file: Support testing multiple magic files. This is based on upstream b74150490be904801378b2712fe0d532e1700124 but adapted to ATF. Reviewed by: jlduran@gmail.com, markj, vangyzen Differential Revision: https://reviews.freebsd.org/D42129 (cherry picked from commit 8f75390c66bdcde95e1b383aecaa27b4adf88279) --- usr.bin/file/tests/Makefile | 2 +- usr.bin/file/tests/file_test.sh | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/usr.bin/file/tests/Makefile b/usr.bin/file/tests/Makefile index ea0ebaa12ce2..cd3d00ae742c 100644 --- a/usr.bin/file/tests/Makefile +++ b/usr.bin/file/tests/Makefile @@ -2,7 +2,7 @@ PACKAGE= tests ATF_TESTS_SH= file_test SRCDIR= ${SRCTOP}/contrib/file/tests -_files!= echo ${SRCDIR}/*.testfile ${SRCDIR}/*.result ${SRCDIR}/*.magic +_files!= echo ${SRCDIR}/*.testfile ${SRCDIR}/*.flags ${SRCDIR}/*.result ${SRCDIR}/*.magic ${PACKAGE}FILES+=${_files} .include diff --git a/usr.bin/file/tests/file_test.sh b/usr.bin/file/tests/file_test.sh index 02d494b0f643..490274c05892 100644 --- a/usr.bin/file/tests/file_test.sh +++ b/usr.bin/file/tests/file_test.sh @@ -32,14 +32,26 @@ contrib_file_tests_body() { for testfile in "${srcdir}"/*.testfile; do test_name="${testfile%.testfile}" result_file="${test_name}.result" - magic_file="${test_name}.magic" file_args= - if [ -e "${magic_file}" ]; then - file_args="${file_args} --magic-file ${magic_file}" + magic_files= + for magic_file in ${test_name}*.magic; do + if [ -f "${magic_file}" ]; then + if [ -z "${magic_files}" ]; then + magic_files="${magic_file}" + else + magic_files="${magic_files}:${magic_file}" + fi + fi + done + if [ -z "${magic_files}" ]; then + magic_files=/usr/share/misc/magic + fi + if [ -f "${test_name}.flags" ]; then + file_args="${file_args} -$(cat "${test_name}.flags")" fi # The result files were created in UTC. - TZ=Z atf_check -o save:actual_output file ${file_args} \ - --brief "$testfile" + atf_check -o save:actual_output -e ignore env TZ=Z MAGIC="${magic_files}" \ + file ${file_args} --brief "$testfile" atf_check cmp actual_output "$result_file" done } From nobody Mon Mar 31 22:39:21 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRQzb4qYPz5rRH8; Mon, 31 Mar 2025 22:39:23 +0000 (UTC) (envelope-from rm@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 4ZRQzb2Lpmz459X; Mon, 31 Mar 2025 22:39:23 +0000 (UTC) (envelope-from rm@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743460763; h=from:from:reply-to:subject: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=0WJ6oQTtbvaPFldphQnEqTsxXNNpR825RlEb4cLwgCQ=; b=uIK7p8aNXXUGia0JlNAHYU24wiZhhd43v7kswySl/lGmXG4fAunvSikRzI2Py6eFWMNx7Z RvZWDCu/nBURrZ60Chu9YEmIQ5hP0TuWC5jHIW/EbBTQ++/o5bBMWQAdgWtls+K2TsDqwG V3W27/gsWhpmURdIswWWXz46Ua6e0rAqIB28Sqrq1CPsK1SVWsCmw7s8df0CwrPmB28zpt 2UWz93K4vXanGfiBjE60fUSLlrUvHhf1CGeSr4wiKERfvGtIQR8ru/+clAHIM+3ZpVpATf c5aSl4+6M7rZPZrZ8DnLthiDWPvQfm4HiUzrvNuugQHGj6/AFET9C82cOQQdFw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743460763; a=rsa-sha256; cv=none; b=MeEYpF6PaBvdGGrT+wzQW3bA4qtAgUx+DarNpF8qEbzZpUbOMxZIDpz4qcqDiSQuhUhQYc OHEvazwfLvq5dVkXURs5bl8UhVdYSbeaoTn1WONsyZ1rHSzrR7LYxRQvXDX8MUxtDCfGhf geDJVF4SMCH+zpkYolC20nHmhRKQQkaRGNsi59bhb3CDfSmlHIVMrhI0kfuEjDU+uciHZh dqscQHsEbMqzqNkkBfK6F+t8hWchH3VMcT/WyZb5EWs/9H5HdnibkNr1QJoS3KyIIHaZ5z QAkyPadl2j/aJJbu0G2ZLzs3NvmfncG4BOBRuTVVl0i5wfu6zOf8QwYrCt+bcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743460763; h=from:from:reply-to:subject: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=0WJ6oQTtbvaPFldphQnEqTsxXNNpR825RlEb4cLwgCQ=; b=CK15AxsZv/ynS5SMHVLzXW0plXhI3W5ddElV8ARWcpyyEqV9J5Ta79M4gKHB680GDyMui0 XKcwzXbW5CErWOOCYttkysmHKvtj6oUbYglxZSuYLfCUPHlrthey+9MIiTM+J6f9jmb42I 71WLZQ17xLNUMEubTPBxCsZmEDsGlUDNtrTvqx+b04Ih8cAjYtW2/GeQ+aZRqpoWQPb4f6 OBH5G0CrkhwOMTj9p819xPOpcL4lCflsuNYS+dLE4zqQZltm8G9K6E8rGMKJpQCh1IE5KF DlgJ5oVHMfchqOHyFU5WTJYprAIEOvHTiJic46Z2CLnPa8ItlvB+RXArybu+Nw== Received: from [127.0.0.1] (unknown [127.0.1.132]) by freefall.freebsd.org (Postfix) with ESMTP id 750CDBF12; Mon, 31 Mar 2025 22:39:22 +0000 (UTC) (envelope-from rm@FreeBSD.org) Message-ID: <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> Date: Tue, 1 Apr 2025 01:39:21 +0300 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. To: Tom Jones , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> Content-Language: en-US From: Ruslan Makhmatkhanov In-Reply-To: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Tom Jones wrote on 3/31/25 3:43 PM: > The branch main has been updated by thj: > > URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 > > commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 > Author: Tom Jones > AuthorDate: 2025-03-31 12:24:15 +0000 > Commit: Tom Jones > CommitDate: 2025-03-31 12:42:31 +0000 > > Import iwx as ported from OpenBSD by Future Crew. Wow! nobody expected the Spanish Inquisition. That's great, thank you! Works smoothly at glance. I had this in dmesg, not sure if it's known issue (should I submit PR?): wlan0: Ethernet address: xx:xx:xx:xx:xx:xx lo0: link state changed to UP lock order reversal: 1st 0xfffffe0111962058 iwx0_tx_lock (iwx0_tx_lock, sleep mutex) @ /usr/src/sys/net80211/ieee80211_output.c:1038 2nd 0xfffffe01119e93b0 iwx0 (network driver, sleep mutex) @ /usr/src/sys/dev/iwx/if_iwx.c:10778 lock order iwx0_tx_lock -> network driver attempted at: #0 0xffffffff80bceb31 at witness_checkorder+0xbe1 #1 0xffffffff80b31631 at __mtx_lock_flags+0x91 #2 0xffffffff848fc896 at iwx_raw_xmit+0x36 #3 0xffffffff80d0b17b at ieee80211_mgmt_output+0x1eb #4 0xffffffff80d0d00a at ieee80211_send_mgmt+0xc0a #5 0xffffffff80d19f04 at sta_newstate+0x5e4 #6 0xffffffff84900e2d at iwx_newstate+0xa4d #7 0xffffffff80d111dc at ieee80211_newstate_cb+0x29c #8 0xffffffff80bc10b2 at taskqueue_run_locked+0x1c2 #9 0xffffffff80bc1f73 at taskqueue_thread_loop+0xd3 #10 0xffffffff80b0af52 at fork_exit+0x82 #11 0xffffffff8106936e at fork_trampoline+0xe wlan0: link state changed to UP Intel(R) Wireless WiFi based driver for FreeBSD Connection was established as: media: IEEE 802.11 Wireless Ethernet autoselect mode 11na Thank you! -- Regards, Ruslan T.O.S. Of Reality From nobody Tue Apr 1 01:57:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRWN426FBz5rhZt; Tue, 01 Apr 2025 01:57: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 4ZRWN41Q1tz3NMv; Tue, 01 Apr 2025 01:57:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743472644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GQ9w8J5qLP2VlTyaiU3oC1ONwVg4Rp/Ck8F51Ij1US8=; b=F7S9DkY/5erCg/bLkdOHlCWxM3hqpcygh9BGRy5CaTzKn40kJh8Z/NeVdX9GftsB58c20G nYH4g8ySYZx2ZioHHxrDerLHiXQIZA/wbq8jXcU3J2zM476lyGqgIEJn656A/iu/j5/7I1 qYEkNR3uUdCYwpiFCaWqWWvsiNhoh/cLQVnqkbj4uvHDyr0+bXQZxBY4h92xAAwRwJXV7R JyCu4yJesUlKvisnM/zMJ/zcm6315RYhMuuhyuTpd+Pmjn3+fskUeVbnDf0jpXl0JJooHe 9P/gUjHftfwwn29Dwwg15GjZFz3QrPXMJDyJqbiqbE2TjLDb5Y+DvC64viyEYQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743472644; a=rsa-sha256; cv=none; b=iL3cJkNf0gCusX9ZcL+sx49l0AlxZkspghTsRrs+gNHw32yiVpQZdEDHq9oV7+K3S5Dv3N yHlAkoql0KAKRAQ467SO7oPyXB2YMjkXfkzirZ3VT1vBKkW2a6wM8+xkB4PxHJZimv7nPp apXo6Tq+LuoRWUzAotvjHpYnjzsehLiSvlIa4NpSV/kHi9NSUvHacejOT4XzAVbWg7dqWu 1EwTSSIJMA3lkXX1amrZCpJxOS1LexY/SwyEV6tkfua/CMHB6+tNPpmp5H/nTNOroyYVQE /aXnrE+fBzxhE4MXLGjGj1wWrZ5Lpd+OqRJXbT4nONPJj4AhAZxc+r2Gcw00Bw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743472644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GQ9w8J5qLP2VlTyaiU3oC1ONwVg4Rp/Ck8F51Ij1US8=; b=kJqnYOAi126Xpkcei4Af4bAKZxGzlxxFh23PIyxuWKa1kTC0vdh9tIo5/Da/XDuZdTNy0M GMfkysdbulzHEXoY5Uuu0zXFbRZvMO5hh+/q5cyMuWOZ/vvoVhnQ5ha5ryeGsDlXyOISji VRh+wOoAwcqUll1nUtl1HI8bUfnk5SzmOwtHqMtf4blJ/ZEFE/Aicvg+3ZHxBkSOdYP7aW nz+cWhPQtDBKt42SQZfKrvyczxtMjzPhlGyQGEgzQC8kodOThNUClBCKnXhIzzRx5xs8RA 6PC/IO4q6v6NcGDQ4ZMUMgF19jqRGTTfU9JqpquxhQeisp2Xmnsm0RszxnJxyQ== 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 4ZRWN40zFqz19N3; Tue, 01 Apr 2025 01:57: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 5311vOVd076862; Tue, 1 Apr 2025 01:57:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5311vOwq076859; Tue, 1 Apr 2025 01:57:24 GMT (envelope-from git) Date: Tue, 1 Apr 2025 01:57:24 GMT Message-Id: <202504010157.5311vOwq076859@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: bcd9c0cfb622 - stable/14 - getentropy tests: Update after commit 473681a1a506da List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bcd9c0cfb62287b4df4bb030fb56e8a96d30e102 Auto-Submitted: auto-generated The branch stable/14 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=bcd9c0cfb62287b4df4bb030fb56e8a96d30e102 commit bcd9c0cfb62287b4df4bb030fb56e8a96d30e102 Author: Mark Johnston AuthorDate: 2025-01-19 16:17:05 +0000 Commit: Enji Cooper CommitDate: 2025-04-01 01:52:46 +0000 getentropy tests: Update after commit 473681a1a506da - Use GETENTROPY_MAX instead of hard-coding the value. - Check for EINVAL instead of EIO Fixes: 473681a1a506 ("libc: Fix getentropy POSIX 2024 conformance issues") (cherry picked from commit c5056a3931b41a803a24b89400d38d5c5f843612) --- lib/libc/tests/gen/getentropy_test.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/libc/tests/gen/getentropy_test.c b/lib/libc/tests/gen/getentropy_test.c index 156d3a94a7de..6ac9d5678ea6 100644 --- a/lib/libc/tests/gen/getentropy_test.c +++ b/lib/libc/tests/gen/getentropy_test.c @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -62,13 +63,13 @@ ATF_TC_BODY(getentropy_sizes, tc) char buf[512]; ATF_REQUIRE_EQ(getentropy(buf, sizeof(buf)), -1); - ATF_REQUIRE_EQ(errno, EIO); - ATF_REQUIRE_EQ(getentropy(buf, 257), -1); - ATF_REQUIRE_EQ(errno, EIO); + ATF_REQUIRE_EQ(errno, EINVAL); + ATF_REQUIRE_EQ(getentropy(buf, GETENTROPY_MAX + 1), -1); + ATF_REQUIRE_EQ(errno, EINVAL); /* Smaller sizes always succeed: */ - ATF_REQUIRE_EQ(getentropy(buf, 256), 0); - ATF_REQUIRE_EQ(getentropy(buf, 128), 0); + ATF_REQUIRE_EQ(getentropy(buf, GETENTROPY_MAX), 0); + ATF_REQUIRE_EQ(getentropy(buf, GETENTROPY_MAX / 2), 0); ATF_REQUIRE_EQ(getentropy(buf, 0), 0); } From nobody Tue Apr 1 02:03:59 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRWWg25GGz5rhl0; Tue, 01 Apr 2025 02:03: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 4ZRWWg160bz3SJf; Tue, 01 Apr 2025 02:03:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743473039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ppjXOwAdxA7UnlVmly/TWr6KzXjelYQPQIZ+qaZ5TO0=; b=ULKKhTBZMLuQTKGuHNurpdXy6Xid+hhYglwPUOBUnb0Z8i6lN3AsVIe8qHFKFk7R1jCl3/ 71mw6zI6KHhMlc2NAUJ7sP5WRDLkOi5qQvMx1QMdYvEuDHCL4PKft820e5ZFNv+ge4YV+i EnluJoPHw5g485PVxzAPCgwResQJc9+x4lKTz+ZEq1DLUpFGMpTkOWfaAFrWS8S3fPTeXR 5Xu0sGbl5y29zhY02w7zHwqY4PDln5j3gGnWyy4JQCYrc94v+hvy5E+ZhHox3wjCkiskR6 zga9EAwe476SlJGC8DvjBuq7bH1k8zkvHDvGfsitKtSxzcwxb5QTpF4G37B+Fg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743473039; a=rsa-sha256; cv=none; b=Pm0WRCl6A1KeXRel5QxG5WJ7bc7JTXwSavYMdpUpDiGB3SD+8x/6gaIwgkUTD5gpfdRzL/ O12sbI906sPpCNyG6OQWQtm3cVWXcFRQvbdyP1ms53w6eOgTMcBrKYNSIBodKZ40KYh9tk gYCZC4sNV0ysxeydxuxckTA1if2BdYl5Di3g4jd3xRvZad89CJJyAnQnj4sNCVt4z/JtWp 3rwNAhvnLjjIYEyJfJZUArvtTwW4Z8PKWaGsUAAeRQFzsfb2qdIse18SNcTKo7eDxdMYSx Zq9XtsC7V7JozZR0kF9V33ljZzcQs86m/CkhJMBHTSG9ENWajBZCjdwjZKBXfA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743473039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ppjXOwAdxA7UnlVmly/TWr6KzXjelYQPQIZ+qaZ5TO0=; b=ubwhG49rEh4Lzr1StN9T1eblPrSjKparI05UvxWVQqnX3SDHBMjNDA2u+fue8DGNl3KPAf 0A2eLDbXHXMdvAH0CM2yjUORn/qMcG8f6JeLDOn0nhgHFCe34sfqPF5dUMT3ukNy06Rs5y wNplBklS3NE8gMamcNEvmS4UerwOIectuSjfb3tNUl5pmuaZrkHYVKwECj2Ce/hQraO/8P 2uY3L8yxpGQeQqxNcLKIcMl3i14Nc8aXX5dOqXIeEP/3XHlpvRai44XloUxnuvzpWSzyQ9 hSMta/LttSTowBK3F2ozJvTJQyO5SPnQ4HJPulXMFsAX43lbme1nIjrLpuZbQw== 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 4ZRWWg0gsnz19fj; Tue, 01 Apr 2025 02:03: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 53123xKE094989; Tue, 1 Apr 2025 02:03:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53123x15094986; Tue, 1 Apr 2025 02:03:59 GMT (envelope-from git) Date: Tue, 1 Apr 2025 02:03:59 GMT Message-Id: <202504010203.53123x15094986@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: 39775a21add6 - stable/14 - tests/netlink: mark a test that requires tun(4) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 39775a21add6b7cbb4b28dd30eb44cb577f10964 Auto-Submitted: auto-generated The branch stable/14 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=39775a21add6b7cbb4b28dd30eb44cb577f10964 commit 39775a21add6b7cbb4b28dd30eb44cb577f10964 Author: Gleb Smirnoff AuthorDate: 2024-01-11 04:51:53 +0000 Commit: Enji Cooper CommitDate: 2025-04-01 02:02:20 +0000 tests/netlink: mark a test that requires tun(4) (cherry picked from commit effa0f6c0aad54a07917af6986d71cd0a57223b8) --- tests/sys/netlink/test_rtnl_route.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/sys/netlink/test_rtnl_route.py b/tests/sys/netlink/test_rtnl_route.py index 20f2c3ce3ee2..370c8a74a2de 100644 --- a/tests/sys/netlink/test_rtnl_route.py +++ b/tests/sys/netlink/test_rtnl_route.py @@ -48,6 +48,7 @@ class TestRtNlRoute(NetlinkTestTemplate, SingleVnetTestTemplate): @pytest.mark.timeout(5) def test_add_route6_ll_if_gw(self): + self.require_module("if_tun") tun_ifname = IfaceFactory().create_iface("", "tun")[0].name tun_ifindex = socket.if_nametoindex(tun_ifname) @@ -68,6 +69,7 @@ class TestRtNlRoute(NetlinkTestTemplate, SingleVnetTestTemplate): @pytest.mark.timeout(5) def test_add_route4_ll_if_gw(self): + self.require_module("if_tun") tun_ifname = IfaceFactory().create_iface("", "tun")[0].name tun_ifindex = socket.if_nametoindex(tun_ifname) From nobody Tue Apr 1 02:39:34 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRXJl2Rnzz5rl8g; Tue, 01 Apr 2025 02:39: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 4ZRXJl1N4Kz3wVX; Tue, 01 Apr 2025 02:39:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743475175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ogGOTyFanSMCRe/X8bxmqS13slHfPPSjQ1lpONagByI=; b=oknv+76oxLI4r3xQSA2efxg84kES62jqOp525DFmvOfV8c+HkOxAkyOrznJIZ071Ns2WbF xehQAqnrVwsfzlpKNKFBg7TBhLnHb5X6Z0ycTDt+rE4JjmnVXYc+/QhmmiYgViyIaFPi81 1wvsFL7swowRpUfmNwOvHJV5NCapWA3Be4WbF58lOzyK2dKKg60L38SWbYw/igJKG9XLl+ 2t5WHwvkIo0xBe3a1SVDaLS79qQlVpyWqux5HFXAYVd60Zn95yUhRGoQfvyEWoahaaM0qG FE444uadu/Kf5HUbmLLZIc6X/wvaoMQPCpzUWdV+dHMbLOdzPSjFL2cGtKLipw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743475175; a=rsa-sha256; cv=none; b=kiBOwtFh9jYLCfc0N9gmUKop23spM3tlU5tMMu6j1Fn90QlfMuwik1zdcD3cgdcbUt4vbW 08tbqcbKM4bJTrmKHgJ9el8VurK+Iloi86OyYnAB1QlCASFNWGFADfIFSHQtdmzmStfR5s /h4dFqYHszKTONWn32EB0Ky3GLGfTkDUK49j+l5Lp6XiNODCGvq5ZUFP+p0wYHa9S0fwco BNicGEqtcy80hJg4BthiAs+ESdqVesDmPdUcyIjkVrDIW2aOyyrdI5d2e39RtdNQX18Xwz LTLo9j61iuqMxh1xpshxus2Auuk1nIJS7HQFDpLs2aljPm5jmtZ1NbVf92zW9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743475175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ogGOTyFanSMCRe/X8bxmqS13slHfPPSjQ1lpONagByI=; b=LnkcUoskNcP/ozZAmo7vuV5BfJBP9yC119Z9ez7xsKSBDJ9P2FWKkjfjHAE1FwPET4XlHQ u7l/ieS84RTFvvIFnmYMrPk6OmbHK4HAI81P3Ke7ooY1H/w4WITzRZI6Jeh0ctYiHHxX0E fLWQ6Qu/jPSTaaV5PckvxK5w5MYWejuV+T4NjeQLSWOTWFooOBbmfGuDt8XgLRK9wZ7IpR iG7DZeEC16IhSHnXNyvUzTDTW0ZFnpJ0IGk/bQM61KbhutXRGhkz1/6vFfn+2EBHSIX62V VzNiBZXRlnkX0AQ5+P2WpWLeKz+Nc15zsoor34u0AASzhZSdW0jfrRtJla9pEg== 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 4ZRXJl0fLZz1B9v; Tue, 01 Apr 2025 02:39: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 5312dYad052456; Tue, 1 Apr 2025 02:39:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5312dYw6052453; Tue, 1 Apr 2025 02:39:34 GMT (envelope-from git) Date: Tue, 1 Apr 2025 02:39:34 GMT Message-Id: <202504010239.5312dYw6052453@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: b84a505d2eae - stable/13 - m4 tests: Update tests after $FreeBSD$ removal List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b84a505d2eaea45a873f7a9778e73443ad0c65bb Auto-Submitted: auto-generated The branch stable/13 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=b84a505d2eaea45a873f7a9778e73443ad0c65bb commit b84a505d2eaea45a873f7a9778e73443ad0c65bb Author: Mark Johnston AuthorDate: 2023-08-23 19:43:33 +0000 Commit: Enji Cooper CommitDate: 2025-04-01 02:39:18 +0000 m4 tests: Update tests after $FreeBSD$ removal Fixes: d54a7d337331 ("Remove $FreeBSD$: one-line m4 tag") (cherry picked from commit d5b5497e10fd11dfea350d229406fa63fd0ea70f) --- usr.bin/m4/tests/regress.gnusofterror.out | 2 +- usr.bin/m4/tests/regress.quotes.out | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/m4/tests/regress.gnusofterror.out b/usr.bin/m4/tests/regress.gnusofterror.out index 322fa4c409fe..5c23eb237b6c 100644 --- a/usr.bin/m4/tests/regress.gnusofterror.out +++ b/usr.bin/m4/tests/regress.gnusofterror.out @@ -1,2 +1,2 @@ -m4: gnusofterror.m4 at line 3: include(hey I do not exit): No such file or directory +m4: gnusofterror.m4 at line 2: include(hey I do not exit): No such file or directory abc diff --git a/usr.bin/m4/tests/regress.quotes.out b/usr.bin/m4/tests/regress.quotes.out index fe5b8a4b45be..cf34ba42a8d0 100644 --- a/usr.bin/m4/tests/regress.quotes.out +++ b/usr.bin/m4/tests/regress.quotes.out @@ -1,5 +1,5 @@ m4: unclosed quote: - quotes.m4 at line 55 + quotes.m4 at line 54 1: normal quoted string [quoted STRING] From nobody Tue Apr 1 05:31:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRc6c22q6z5ry4n; Tue, 01 Apr 2025 05:31: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 4ZRc6b6yWKz422P; Tue, 01 Apr 2025 05:31:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743485463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qpIZSNbcV638juhlijuio7VzQGTLSgGI2e7j2vqDwQI=; b=KlAf5xWZMbrT+NNX0MooJ4QGjbif4wg5N4ZBP3jAKQdvBh3eveiCYyffnlTPP+9Zes4WZv O40HgGx3yb/+FYpYXiLzMc+cxzWoS5ZhhWlcECyWp0YSW45Cb+AiDWwswpZNMkliPgGIax hltxEYXsL+qXYOYno9Cl1RjdA/w8TBr7WcBBWWsU3zw4GGj0DDV6PbGsyJeisdqYyzjQIV mVcvuyzLLjFDo546K1R0+b4GdSEOCpxnYOED9xGvXsD52WFl6o2cW22FBhGzBx/p3QqSw2 Ku0UMzjgbaKZySBIYUX1GgAl9umxtlCpCSYX/BVkuyw1P4r2dKSeK8FFUYxKyQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743485463; a=rsa-sha256; cv=none; b=MvQHxXlPLYEmChUII8NxgnS+aUdrmAEAExGRttLVJ5745cxptOKyKIHAhQfNaaLWl+88Q/ evSPZ7HS0IwaAfHGM40dj52971VU2bdeF+pc6HeMdKc/PrbaZ2ZBKPIake4FTh6QlXJKMx Tnk7+FnmsyAiB6RMn0J+ULnTONG/vkN3KVAxVksZ6eh+BqSxNqa2c9FjlhDvZd3e6u51w4 HKYFJmJCV12TnfmUwp9SGiDwHxVykihihSPKHPLMvuK3H8aP5zcV6zD7NV9lwp0SQDqV59 ah3391gV/ma1uD/JzxVn4X2PDOUhmG83Hk5XofoQHA8FhACkT3IiaIFn5hFfSA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743485463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qpIZSNbcV638juhlijuio7VzQGTLSgGI2e7j2vqDwQI=; b=nRl7h8PSnHhESJ5OeUacqV4gFvrnvcERr/z2HHv5otSj1xUkG9j4bAPyQohxfPuun/In4x PMl97LT0QROBfPLQ/GZha8p22Hl3VEPAIG7CMdPaavEH4IFN+nT+qEPWKjUlowmOP2qiVQ E7WcdG6V0/8wkO+AScvZnXepWcBAq2yKYQ/7C2sPaawVny1AiHqAil1PW0TVV0PmunvgAP 3zP2EmSTJE2uXy/OnNeee+VPUCYnOM6+r6ZXbPmafjYCElqKxJeKQo3a57EpX19BvHvkCn V9L39qBLjxno/Xu6LQDbFlp3QSspy8WUBwF/CfGVswuO3OZHQONd/5dv7fcTQQ== 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 4ZRc6b6LRvz30v; Tue, 01 Apr 2025 05:31: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 5315V3fU084676; Tue, 1 Apr 2025 05:31:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5315V3Pa084673; Tue, 1 Apr 2025 05:31:03 GMT (envelope-from git) Date: Tue, 1 Apr 2025 05:31:03 GMT Message-Id: <202504010531.5315V3Pa084673@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Enji Cooper Subject: git: 4b98fe9def2d - stable/13 - Fix GoogleTest 1.14.0 import List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4b98fe9def2d182c45bc86fc6716c47e957902c3 Auto-Submitted: auto-generated The branch stable/13 has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=4b98fe9def2d182c45bc86fc6716c47e957902c3 commit 4b98fe9def2d182c45bc86fc6716c47e957902c3 Author: Enji Cooper AuthorDate: 2023-08-18 11:28:13 +0000 Commit: Enji Cooper CommitDate: 2025-04-01 05:30:20 +0000 Fix GoogleTest 1.14.0 import - Prune headers and tests no longer installed after the upgrade. - Remove GoogleTest-related files when MK_GOOGLETEST == no. - Disable `-Werror` with gcc to unbreak the gcc12 CI run with `lib/googletest`. Any issues found by g++ will be filed upstream and hopefully resolved in a future version. - Remove clang -Werror issues which are resolved in version 1.14.0 to avoid masking valid issues. Conflicts: ObsoleteFiles.inc tools/build/mk/OptionalObsoleteFiles.inc MFC after: 1 week MFC with: 28f6c2f292806bf31230a959bc4b19d7081669a7 (cherry picked from commit 0c785f06020f3b02e34c97eb27fecd3af8eb2a7b) --- ObsoleteFiles.inc | 16 ++++ lib/googletest/tests/gmock_main/Makefile | 1 + lib/googletest/tests/gtest/Makefile | 1 + lib/googletest/tests/gtest_main/Makefile | 1 + share/mk/googletest.test.inc.mk | 11 --- tools/build/mk/OptionalObsoleteFiles.inc | 157 ++++++++++++++++--------------- 6 files changed, 98 insertions(+), 89 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index eca0397d899a..7d17e95aca27 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -1419,6 +1419,22 @@ OLD_FILES+=usr/share/certs/trusted/E-Tugra_Global_Root_CA_ECC_v3.pem OLD_FILES+=usr/share/certs/trusted/E-Tugra_Global_Root_CA_RSA_v3.pem OLD_FILES+=usr/share/certs/trusted/Hongkong_Post_Root_CA_1.pem +# 20230807: GoogleTest 1.14.0 upgrade. +OLD_FILES+=usr/include/private/gmock/gmock-generated-actions.h +OLD_FILES+=usr/include/private/gmock/gmock-generated-function-mockers.h +OLD_FILES+=usr/include/private/gmock/gmock-generated-matchers.h +OLD_FILES+=usr/include/private/gmock/gmock-generated-nice-strict.h +OLD_FILES+=usr/include/private/gmock/internal/gmock-generated-internal-utils.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-linked_ptr.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-param-util-generated.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-tuple.h +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-actions_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-function-mockers_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-internal-utils_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-matchers_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers_test +OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-linked-ptr-test + # 20230806: Removal of support for the VTOC8 partitioning scheme OLD_FILES+=usr/include/sys/disk/vtoc.h OLD_FILES+=usr/include/sys/vtoc.h diff --git a/lib/googletest/tests/gmock_main/Makefile b/lib/googletest/tests/gmock_main/Makefile index 737c64b653a4..7523b585ac2c 100644 --- a/lib/googletest/tests/gmock_main/Makefile +++ b/lib/googletest/tests/gmock_main/Makefile @@ -34,5 +34,6 @@ CXXFLAGS.clang+= -Wno-error=inconsistent-missing-override CXXFLAGS.clang+= -Wno-error=missing-variable-declarations CXXFLAGS.clang+= -Wno-error=sign-compare CXXFLAGS.clang+= -Wno-error=unused-parameter +MK_WERROR.gcc= no .include diff --git a/lib/googletest/tests/gtest/Makefile b/lib/googletest/tests/gtest/Makefile index e95101738322..0000167dfe70 100644 --- a/lib/googletest/tests/gtest/Makefile +++ b/lib/googletest/tests/gtest/Makefile @@ -36,6 +36,7 @@ SRCS.googletest-param-test-test= \ LIBADD+= gtest CXXFLAGS.clang+= -Wno-error=missing-variable-declarations +MK_WERROR.gcc= no # XXX: explicitly listing -lpthread is incorrect. src.libnames.mk should be # handling this. diff --git a/lib/googletest/tests/gtest_main/Makefile b/lib/googletest/tests/gtest_main/Makefile index 49831d7513af..3124042f8b95 100644 --- a/lib/googletest/tests/gtest_main/Makefile +++ b/lib/googletest/tests/gtest_main/Makefile @@ -38,5 +38,6 @@ LIBADD.gtest_unittest+= pthread CXXFLAGS.clang+= -Wno-error=missing-variable-declarations CXXFLAGS.clang+= -Wno-error=unused-but-set-variable +MK_WERROR.gcc= no .include diff --git a/share/mk/googletest.test.inc.mk b/share/mk/googletest.test.inc.mk index 2034e12eaf30..05415775448b 100644 --- a/share/mk/googletest.test.inc.mk +++ b/share/mk/googletest.test.inc.mk @@ -1,4 +1,3 @@ - GTESTS_CXXFLAGS+= -DGTEST_HAS_POSIX_RE=1 GTESTS_CXXFLAGS+= -DGTEST_HAS_PTHREAD=1 GTESTS_CXXFLAGS+= -DGTEST_HAS_STREAM_REDIRECTION=1 @@ -6,16 +5,6 @@ GTESTS_CXXFLAGS+= -frtti .include -.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 100000 -# Required until googletest is upgraded to a more recent version (after -# upstream commit efecb0bfa687cf87836494f5d62868485c00fb66). -GTESTS_CXXFLAGS+= -Wno-deprecated-copy - -# Required until googletest is upgraded to a more recent version (after -# upstream commit d44b137fd104dfffdcdea103f7de11b9eccc45c2). -GTESTS_CXXFLAGS+= -Wno-signed-unsigned-wchar -.endif - # XXX: src.libnames.mk should handle adding this directory for libgtest's, # libgmock's, etc, headers. CXXFLAGS+= -I${DESTDIR}${INCLUDEDIR}/private diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index be2c26296828..a9436af31b77 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -2215,88 +2215,82 @@ OLD_FILES+=usr/share/man/man1/llvm-profdata.1.gz .endif .if ${MK_GOOGLETEST} == no -OLD_FILES+=usr/include/gmock/gmock-actions.h -OLD_FILES+=usr/include/gmock/gmock-cardinalities.h -OLD_FILES+=usr/include/gmock/gmock-generated-actions.h -OLD_FILES+=usr/include/gmock/gmock-generated-function-mockers.h -OLD_FILES+=usr/include/gmock/gmock-generated-matchers.h -OLD_FILES+=usr/include/gmock/gmock-generated-nice-strict.h -OLD_FILES+=usr/include/gmock/gmock-matchers.h -OLD_FILES+=usr/include/gmock/gmock-more-actions.h -OLD_FILES+=usr/include/gmock/gmock-more-matchers.h -OLD_FILES+=usr/include/gmock/gmock-spec-builders.h -OLD_FILES+=usr/include/gmock/gmock.h -OLD_FILES+=usr/include/gmock/internal/custom/gmock-generated-actions.h -OLD_FILES+=usr/include/gmock/internal/custom/gmock-matchers.h -OLD_FILES+=usr/include/gmock/internal/custom/gmock-port.h -OLD_FILES+=usr/include/gmock/internal/gmock-generated-internal-utils.h -OLD_FILES+=usr/include/gmock/internal/gmock-internal-utils.h -OLD_FILES+=usr/include/gmock/internal/gmock-port.h -OLD_DIRS+=usr/include/gmock -OLD_FILES+=usr/include/gtest/gtest_pred_impl.h -OLD_FILES+=usr/include/gtest/gtest_prod.h -OLD_FILES+=usr/include/gtest/gtest-death-test.h -OLD_FILES+=usr/include/gtest/gtest-message.h -OLD_FILES+=usr/include/gtest/gtest-param-test.h -OLD_FILES+=usr/include/gtest/gtest-printers.h -OLD_FILES+=usr/include/gtest/gtest-spi.h -OLD_FILES+=usr/include/gtest/gtest-test-part.h -OLD_FILES+=usr/include/gtest/gtest-typed-test.h -OLD_FILES+=usr/include/gtest/gtest.h -OLD_FILES+=usr/include/gtest/internal/custom/gtest-port.h -OLD_FILES+=usr/include/gtest/internal/custom/gtest-printers.h -OLD_FILES+=usr/include/gtest/internal/custom/gtest.h -OLD_FILES+=usr/include/gtest/internal/gtest-death-test-internal.h -OLD_FILES+=usr/include/gtest/internal/gtest-filepath.h -OLD_FILES+=usr/include/gtest/internal/gtest-internal.h -OLD_FILES+=usr/include/gtest/internal/gtest-linked_ptr.h -OLD_FILES+=usr/include/gtest/internal/gtest-param-util-generated.h -OLD_FILES+=usr/include/gtest/internal/gtest-param-util.h -OLD_FILES+=usr/include/gtest/internal/gtest-port-arch.h -OLD_FILES+=usr/include/gtest/internal/gtest-port.h -OLD_FILES+=usr/include/gtest/internal/gtest-string.h -OLD_FILES+=usr/include/gtest/internal/gtest-tuple.h -OLD_FILES+=usr/include/gtest/internal/gtest-type-util.h -OLD_DIRS+=usr/include/gtest -OLD_FILES+=usr/lib/libprivategmock_main.a -OLD_FILES+=usr/lib/libprivategmock_main.so -OLD_LIBS+=usr/lib/libprivategmock_main.so.0 -OLD_FILES+=usr/lib/libprivategmock_main_p.a +OLD_FILES+=usr/include/private/gmock/gmock-actions.h +OLD_FILES+=usr/include/private/gmock/gmock-cardinalities.h +OLD_FILES+=usr/include/private/gmock/gmock-function-mocker.h +OLD_FILES+=usr/include/private/gmock/gmock-matchers.h +OLD_FILES+=usr/include/private/gmock/gmock-more-actions.h +OLD_FILES+=usr/include/private/gmock/gmock-more-matchers.h +OLD_FILES+=usr/include/private/gmock/gmock-nice-strict.h +OLD_FILES+=usr/include/private/gmock/gmock-spec-builders.h +OLD_FILES+=usr/include/private/gmock/gmock.h +OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-generated-actions.h +OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-matchers.h +OLD_FILES+=usr/include/private/gmock/internal/custom/gmock-port.h +OLD_FILES+=usr/include/private/gmock/internal/gmock-internal-utils.h +OLD_FILES+=usr/include/private/gmock/internal/gmock-port.h +OLD_FILES+=usr/include/private/gmock/internal/gmock-pp.h +OLD_FILES+=usr/include/private/gtest/gtest-assertion-result.h +OLD_FILES+=usr/include/private/gtest/gtest-death-test.h +OLD_FILES+=usr/include/private/gtest/gtest-matchers.h +OLD_FILES+=usr/include/private/gtest/gtest-message.h +OLD_FILES+=usr/include/private/gtest/gtest-param-test.h +OLD_FILES+=usr/include/private/gtest/gtest-printers.h +OLD_FILES+=usr/include/private/gtest/gtest-spi.h +OLD_FILES+=usr/include/private/gtest/gtest-test-part.h +OLD_FILES+=usr/include/private/gtest/gtest-typed-test.h +OLD_FILES+=usr/include/private/gtest/gtest.h +OLD_FILES+=usr/include/private/gtest/gtest_pred_impl.h +OLD_FILES+=usr/include/private/gtest/gtest_prod.h +OLD_FILES+=usr/include/private/gtest/internal/custom/gtest-port.h +OLD_FILES+=usr/include/private/gtest/internal/custom/gtest-printers.h +OLD_FILES+=usr/include/private/gtest/internal/custom/gtest.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-death-test-internal.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-filepath.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-internal.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-param-util.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-port-arch.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-port.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-string.h +OLD_FILES+=usr/include/private/gtest/internal/gtest-type-util.h OLD_FILES+=usr/lib/libprivategmock.a -OLD_FILES+=usr/lib/libprivategmock.so -OLD_LIBS+=usr/lib/libprivategmock.so.0 OLD_FILES+=usr/lib/libprivategmock_p.a -OLD_FILES+=usr/lib/libprivategtest_main.a -OLD_FILES+=usr/lib/libprivategtest_main.so -OLD_LIBS+=usr/lib/libprivategtest_main.so.0 -OLD_FILES+=usr/lib/libprivategtest_main_p.a +OLD_LIBS+=usr/lib/libprivategmock.so +OLD_LIBS+=usr/lib/libprivategmock.so.0 +OLD_FILES+=usr/lib/libprivategmock_main.a +OLD_FILES+=usr/lib/libprivategmock_main_p.a +OLD_LIBS+=usr/lib/libprivategmock_main.so +OLD_LIBS+=usr/lib/libprivategmock_main.so.0 OLD_FILES+=usr/lib/libprivategtest.a -OLD_FILES+=usr/lib/libprivategtest.so -OLD_LIBS+=usr/lib/libprivategtest.so.0 OLD_FILES+=usr/lib/libprivategtest_p.a -OLD_FILES+=usr/tests/lib/googletest/gmock/gmock_stress_test +OLD_LIBS+=usr/lib/libprivategtest.so +OLD_LIBS+=usr/lib/libprivategtest.so.0 +OLD_FILES+=usr/lib/libprivategtest_main.a +OLD_FILES+=usr/lib/libprivategtest_main_p.a +OLD_LIBS+=usr/lib/libprivategtest_main.so +OLD_LIBS+=usr/lib/libprivategtest_main.so.0 +OLD_FILES+=usr/tests/lib/googletest/Kyuafile OLD_FILES+=usr/tests/lib/googletest/gmock/Kyuafile -OLD_DIRS+=usr/tests/lib/googletest/gmock -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_ex_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_link_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_test +OLD_FILES+=usr/tests/lib/googletest/gmock/gmock_stress_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/Kyuafile OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-actions_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-cardinalities_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-ex_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-actions_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-function-mockers_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-internal-utils_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-matchers_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-function-mocker_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-internal-utils_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-arithmetic_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-comparisons_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-containers_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers-misc_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-more-actions_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-nice-strict_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-port_test OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-spec-builders_test -OLD_FILES+=usr/tests/lib/googletest/gmock_main/Kyuafile -OLD_DIRS+=usr/tests/lib/googletest/gmock_main +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_ex_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_link_test +OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_test +OLD_FILES+=usr/tests/lib/googletest/gtest/Kyuafile OLD_FILES+=usr/tests/lib/googletest/gtest/googletest-param-test-test -OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_all_test +OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-unittest-api_test OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_environment_test OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_no_test_unittest OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_premature_exit_test @@ -2308,9 +2302,9 @@ OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-death-test_ex_nocatch_test OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-unittest-api_test OLD_FILES+=usr/tests/lib/googletest/gtest/Kyuafile OLD_DIRS+=usr/tests/lib/googletest/gtest +OLD_FILES+=usr/tests/lib/googletest/gtest_main/Kyuafile OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-death-test-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-filepath-test -OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-linked-ptr-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-listener-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-message-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-options-test @@ -2318,21 +2312,17 @@ OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-port-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-printers-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-test-part-test OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_help_test_ +OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest-typed-test_test OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_main_unittest OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_pred_impl_unittest OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_prod_test +OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_skip_in_environment_setup_test +OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_skip_test OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_sole_header_test OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_unittest -OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile1_test_ -OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile2_test_ -OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest-typed-test_test -OLD_FILES+=usr/tests/lib/googletest/gtest_main/Kyuafile -OLD_DIRS+=usr/tests/lib/googletest/gtest_main -OLD_FILES+=usr/tests/lib/googletest/Kyuafile -OLD_DIRS+=usr/tests/lib/googletest/ OLD_FILES+=usr/tests/share/examples/tests/googletest/Kyuafile -OLD_FILES+=usr/tests/share/examples/tests/googletest/sample1_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample10_unittest +OLD_FILES+=usr/tests/share/examples/tests/googletest/sample1_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample2_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample3_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample4_unittest @@ -2340,6 +2330,17 @@ OLD_FILES+=usr/tests/share/examples/tests/googletest/sample5_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample6_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample7_unittest OLD_FILES+=usr/tests/share/examples/tests/googletest/sample8_unittest +OLD_DIRS+=usr/include/private/gmock/ +OLD_DIRS+=usr/include/private/gmock/internal +OLD_DIRS+=usr/include/private/gmock/internal/custom +OLD_DIRS+=usr/include/private/gtest/ +OLD_DIRS+=usr/include/private/gtest/internal +OLD_DIRS+=usr/include/private/gtest/internal/custom +OLD_DIRS+=usr/tests/lib/googletest +OLD_DIRS+=usr/tests/lib/googletest/gmock +OLD_DIRS+=usr/tests/lib/googletest/gmock_main +OLD_DIRS+=usr/tests/lib/googletest/gtest +OLD_DIRS+=usr/tests/lib/googletest/gtest_main OLD_DIRS+=usr/tests/share/examples/tests/googletest .endif From nobody Tue Apr 1 06:10:55 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRd0b4nP7z5s1Wj; Tue, 01 Apr 2025 06:10: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 4ZRd0b43XJz3Q6Q; Tue, 01 Apr 2025 06:10:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743487855; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKtCMeQHB22jBKSCxhFyQAxCAq7PaCTeCi5yiIJf0K4=; b=QhTiBBnsgrxDcwDvNoPItzR1cumVpazV8hCicBd60sAcMlfNnLQrtSkJCVldFltpZNpLvq 3UOCdLWdkqn1HLQj6FE8jAO2WotZhTr5Ns5gK9q8IeeeA6xbi2IYEh1s7csrl4cVFu3dM+ DJvrdf+UQa4HBrc+PITr2x81Uoasmor/K40+jEeUrcITG9t3G96rnkSYnZMepXQcyu3AMT cE28m2xF3lAZEUp3aSaFP4mznXunzwCzZ590v2/9aCfwJvt+x8Y9UTx1UDLbGyQKXP/VOf 8yi0BG9jkdFFKcy36xeKY9ZcLEO8TjIPJ/4MT+qH1v9V7SgzOPWut8tqf8QIjA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743487855; a=rsa-sha256; cv=none; b=wWFTniV/8NGhnlkA1bUhjzznEJhJzuXK1UkSOxQ1OBQ4bU/5qK+D8Oi57uRGQvYZ2BOQaS GFdRKhM1ukqKr2/Hu8l7k9V/73FHdIpMWBD3Eib1p6ddjg2GFf5zDUd61HNMV31xEPLnaw y18QDsuqiCDufTine5W8oUUJarKe8lbQZd9u3qh2XxK2cOreNX9ay0irzseiQPeJrTlJj3 6NWJCj8KaxRL58XU5cLnoCzeVvE26eO8xDBMOTpygqsKq4WzLFPf5t/PoKjsZBYM3oac/f o6OjeKz9UpWhR/dOViYHV+707Q4kAqhwBRno+okjMgGPJjDMYkofH2KRvQqo8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743487855; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KKtCMeQHB22jBKSCxhFyQAxCAq7PaCTeCi5yiIJf0K4=; b=LG7Kn90f0dPeQECIqtehpPIXfpGS9IxdVjVh2o17E5LZqOZuBANVUMoSyReJl6pjz0EBBt vDuk3AmBrCDQJEdbGqmF1WZXqfiYHaxFdIH8iiuuubOSCrWgF6Gl4Q+RI0m5E4ZbGmS3nv hfzHysaw3WbTvTWi+0E5F/jrEl4WWS43KjT0Jeu1S4IDjB6P6RrSTCzYIN+VcLcH9iXqfy auUw3+XSptt83w5SsBVHVnuKzvloQyffpbHvE9EbG/RuIALAFDLLE29tPu3i1nPel7mv9G byy12acrCUdGGBZbjxiPTB9RUTjSuRkTPyGJHSu6w2FnyItce/YCJadtmXwNIA== 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 4ZRd0b3V14z3v2; Tue, 01 Apr 2025 06:10: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 5316At1I055451; Tue, 1 Apr 2025 06:10:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5316AtcP055448; Tue, 1 Apr 2025 06:10:55 GMT (envelope-from git) Date: Tue, 1 Apr 2025 06:10:55 GMT Message-Id: <202504010610.5316AtcP055448@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: 7becd87c988c - main - vm_grab: use iterator for grab lookup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7becd87c988c090bdc41a177bf06ad2894f79a5b Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=7becd87c988c090bdc41a177bf06ad2894f79a5b commit 7becd87c988c090bdc41a177bf06ad2894f79a5b Author: Doug Moore AuthorDate: 2025-04-01 06:09:34 +0000 Commit: Doug Moore CommitDate: 2025-04-01 06:09:34 +0000 vm_grab: use iterator for grab lookup When a page lookup fails in a vm_page_grab operation, use the results of the failed search, stored in an iterator, to begin the search for a predecessor to use in a call to vm_page_alloc_after(), to avoid doing that search from the root in vm_page_alloc(), as happens now. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49371 --- sys/vm/vm_page.c | 145 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 89 insertions(+), 56 deletions(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 4d9a57544487..f351f60f833c 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -4823,46 +4823,70 @@ vm_page_grab_pflags(int allocflags) } /* - * Grab a page, waiting until we are waken up due to the page - * changing state. We keep on waiting, if the page continues - * to be in the object. If the page doesn't exist, first allocate it - * and then conditionally zero it. + * Grab a page, waiting until we are woken up due to the page changing state. + * We keep on waiting, if the page continues to be in the object, unless + * allocflags forbid waiting. * - * This routine may sleep. + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. * - * The object must be locked on entry. The lock will, however, be released - * and reacquired if the routine sleeps. + * Return a grabbed page, or NULL. Set *found if a page was found, whether or + * not it was grabbed. + */ +static inline vm_page_t +vm_page_grab_lookup(struct pctrie_iter *pages, vm_object_t object, + vm_pindex_t pindex, int allocflags, bool *found) +{ + vm_page_t m; + + while ((*found = (m = vm_radix_iter_lookup(pages, pindex)) != NULL) && + !vm_page_tryacquire(m, allocflags)) { + if (!vm_page_grab_sleep(object, m, pindex, "pgrbwt", + allocflags, true)) + return (NULL); + pctrie_iter_reset(pages); + } + return (m); +} + +/* + * Grab a page. Keep on waiting, as long as the page exists in the object. If + * the page doesn't exist, first allocate it and then conditionally zero it. + * + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. */ vm_page_t vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags) { - vm_page_t m; + struct pctrie_iter pages; + vm_page_t m, mpred; + bool found; VM_OBJECT_ASSERT_WLOCKED(object); vm_page_grab_check(allocflags); -retrylookup: - if ((m = vm_page_lookup(object, pindex)) != NULL) { - if (!vm_page_tryacquire(m, allocflags)) { - if (vm_page_grab_sleep(object, m, pindex, "pgrbwt", - allocflags, true)) - goto retrylookup; + vm_page_iter_init(&pages, object); + while ((m = vm_page_grab_lookup( + &pages, object, pindex, allocflags, &found)) == NULL) { + if ((allocflags & VM_ALLOC_NOCREAT) != 0) + return (NULL); + if (found && + (allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) return (NULL); + mpred = vm_radix_iter_lookup_le(&pages, pindex); + m = vm_page_alloc_after(object, pindex, + vm_page_grab_pflags(allocflags), mpred); + if (m != NULL) { + if ((allocflags & VM_ALLOC_ZERO) != 0 && + (m->flags & PG_ZERO) == 0) + pmap_zero_page(m); + break; } - goto out; - } - if ((allocflags & VM_ALLOC_NOCREAT) != 0) - return (NULL); - m = vm_page_alloc(object, pindex, vm_page_grab_pflags(allocflags)); - if (m == NULL) { - if ((allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) + if ((allocflags & + (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) return (NULL); - goto retrylookup; } - if (allocflags & VM_ALLOC_ZERO && (m->flags & PG_ZERO) == 0) - pmap_zero_page(m); - -out: vm_page_grab_release(m, allocflags); return (m); @@ -5054,48 +5078,57 @@ out: } /* - * Fill a partial page with zeroes. The object write lock is held on entry and - * exit, but may be temporarily released. + * Grab a page. Keep on waiting, as long as the page exists in the object. If + * the page doesn't exist, and the pager has it, allocate it and zero part of + * it. + * + * The object must be locked on entry. This routine may sleep. The lock will, + * however, be released and reacquired if the routine sleeps. */ int vm_page_grab_zero_partial(vm_object_t object, vm_pindex_t pindex, int base, int end) { - vm_page_t m; - int rv; + struct pctrie_iter pages; + vm_page_t m, mpred; + int allocflags, rv; + bool found; VM_OBJECT_ASSERT_WLOCKED(object); KASSERT(base >= 0, ("%s: base %d", __func__, base)); KASSERT(end - base <= PAGE_SIZE, ("%s: base %d end %d", __func__, base, end)); -retry: - m = vm_page_grab(object, pindex, VM_ALLOC_NOCREAT); - if (m != NULL) { - MPASS(vm_page_all_valid(m)); - } else if (vm_pager_has_page(object, pindex, NULL, NULL)) { - m = vm_page_alloc(object, pindex, - VM_ALLOC_NORMAL | VM_ALLOC_WAITFAIL); - if (m == NULL) - goto retry; - vm_object_pip_add(object, 1); - VM_OBJECT_WUNLOCK(object); - rv = vm_pager_get_pages(object, &m, 1, NULL, NULL); - VM_OBJECT_WLOCK(object); - vm_object_pip_wakeup(object); - if (rv != VM_PAGER_OK) { - vm_page_free(m); - return (EIO); - } + allocflags = VM_ALLOC_NOCREAT | VM_ALLOC_NORMAL | VM_ALLOC_WAITFAIL; + vm_page_iter_init(&pages, object); + while ((m = vm_page_grab_lookup( + &pages, object, pindex, allocflags, &found)) == NULL) { + if (!vm_pager_has_page(object, pindex, NULL, NULL)) + return (0); + mpred = vm_radix_iter_lookup_le(&pages, pindex); + m = vm_page_alloc_after(object, pindex, + vm_page_grab_pflags(allocflags), mpred); + if (m != NULL) { + vm_object_pip_add(object, 1); + VM_OBJECT_WUNLOCK(object); + rv = vm_pager_get_pages(object, &m, 1, NULL, NULL); + VM_OBJECT_WLOCK(object); + vm_object_pip_wakeup(object); + if (rv != VM_PAGER_OK) { + vm_page_free(m); + return (EIO); + } - /* - * Since the page was not resident, and therefore not recently - * accessed, immediately enqueue it for asynchronous laundering. - * The current operation is not regarded as an access. - */ - vm_page_launder(m); - } else - return (0); + /* + * Since the page was not resident, and therefore not + * recently accessed, immediately enqueue it for + * asynchronous laundering. The current operation is + * not regarded as an access. + */ + vm_page_launder(m); + break; + } + } pmap_zero_page_area(m, base, end - base); KASSERT(vm_page_all_valid(m), ("%s: page %p is invalid", __func__, m)); From nobody Tue Apr 1 08:01:42 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRgSQ6Yhpz5s8D5; Tue, 01 Apr 2025 08:01: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 4ZRgSQ5mblz3MsY; Tue, 01 Apr 2025 08:01:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494502; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UsXQUBWyVEChGtFHrjO33UCkSxaoHWzPvm0R/BKfYnE=; b=ymHHrhb6QK4ElLkhCRLF18cX1IJSuHwFQcfccISMRtyUMAawkGYD3Q7h218rvo3vZGAk4S bUDaYCDX8i71vkuVipewDQZywxv1C1YqEP8ilIHPMcBwtqzalQp/Bt3vY0wkE4X9hK+yWK V96SY898zmg7GQbn3EklSat0U+ubUYSHn9W2Qq9eZQYSlziQRl/Q9V9bJL+8CC5SC+iHJh KaYfMxDFRZbe7MZSI/GnXI6olv1UqtTBoX1CaUNT5GE5/cI4L3VFeeVVvT+yJ4mdtgToA6 iVKaA/8u2a3g/JPCKIkRjDgsH31gV1YHA3ECaFBJJDoxBN0IdH1ezX0PeOLEYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743494502; a=rsa-sha256; cv=none; b=IXB7J1HzCNz9l2sO0rDBh5z35XgZniGlaTueJvSFY2fO83n5DhX9qGGpvXZCLAKA1+E3Hf jNshTzk3MIJE4fKicb/LD0DnzE1yMhq+IE63+NWtvpQPm6kn75ZBPVNgs8jy1krF5K+e5q +vOlr/HTjINOQhRHij8lZfjM4jIvH0QWVKe/q30CrrfrvvYniyg6Ipz1XCr7E7nS6Di7Gi 9MFjcJZus557j7fYBhs1dX2R95t68EzlrtlnJbfCwcXbFtNLFyYT+7A7uHG3ybWIuHVv/s MiNwD6jpOOxYt8GmeGKX/HNgrUF+11YHh020dht922bimgSmmdN1qRZ8Tm7Zzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494502; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UsXQUBWyVEChGtFHrjO33UCkSxaoHWzPvm0R/BKfYnE=; b=FEEf+IJqDQobNqf33im/UmoVbYtKCVhl7cP3iBbvgOHwYQUDy2Vew++w/ypbWqrGwDJPJI wtvk4d4rQsG9qi3jIzN9PYjv+q4CwpmkCCOtlqzTU7YrsynMLx32Jt9z6ECCGqpzXZKwM5 2exmgoq4Dc1+nNWoPb7sqMWRcOd0xPkXBGGlh2RwDGi3hLxdQDDAw3XlasFxcfn9NEMhlb GMdfDaEjuyBOSvtz1P7ev41mmTZU9WqerNEBVsCWGU03S2QKyeQ5fb3v/icfneGdOTbxuy nnSyQn2xI53nHHwanusXqw1EvGhlP/34IxdYj+N4qXQCKb4CTNSD6WXDPb+tpA== 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 4ZRgSQ5MJRz6h2; Tue, 01 Apr 2025 08:01: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 53181gLb063096; Tue, 1 Apr 2025 08:01:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53181gLO063093; Tue, 1 Apr 2025 08:01:42 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:01:42 GMT Message-Id: <202504010801.53181gLO063093@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 9f3e7b75976b - main - if_rsu: Add sitecom device id List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9f3e7b75976b40107160d1d1676051792b45b0bc Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=9f3e7b75976b40107160d1d1676051792b45b0bc commit 9f3e7b75976b40107160d1d1676051792b45b0bc Author: Nia Alarie AuthorDate: 2025-04-01 07:47:02 +0000 Commit: Tom Jones CommitDate: 2025-04-01 07:59:42 +0000 if_rsu: Add sitecom device id Approved by: thj, adrian Obtained from: NetBSD Differential Revision: https://reviews.freebsd.org/D49588 --- share/man/man4/rsu.4 | 4 +++- sys/dev/usb/usbdevs | 1 + sys/dev/usb/wlan/if_rsu.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/share/man/man4/rsu.4 b/share/man/man4/rsu.4 index 7aaacb8112a0..1c4f9774ea53 100644 --- a/share/man/man4/rsu.4 +++ b/share/man/man4/rsu.4 @@ -17,7 +17,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd November 10, 2024 +.Dd April 1, 2025 .Dt RSU 4 .Os .Sh NAME @@ -126,6 +126,8 @@ Sitecom WL-349 v1 .It Sitecom WL-353 .It +Sitecom WLA-1100 v1001 +.It Sweex LW154 .It TRENDnet TEW-646UBH diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 0dc99526d991..24a1591233f4 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -4560,6 +4560,7 @@ product SITECOMEU WLA1000 0x005b WLA-1000 product SITECOMEU RTL8188CU_1 0x0052 RTL8188CU product SITECOMEU RTL8188CU_2 0x005c RTL8188CU product SITECOMEU RTL8192CU 0x0061 RTL8192CU +product SITECOMEU RTL8188S 0x006b RTL8188S product SITECOMEU LN032 0x0072 LN-032 product SITECOMEU WLA7100 0x0074 WLA-7100 product SITECOMEU LN031 0x0056 LN-031 diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c index 35deed163706..07f7b6f3a708 100644 --- a/sys/dev/usb/wlan/if_rsu.c +++ b/sys/dev/usb/wlan/if_rsu.c @@ -144,6 +144,7 @@ static const STRUCT_USB_HOST_ID rsu_devs[] = { RSU_DEV_HT(SENAO, RTL8192SU_2), RSU_DEV_HT(SITECOMEU, WL349V1), RSU_DEV_HT(SITECOMEU, WL353), + RSU_DEV_HT(SITECOMEU, RTL8188S), RSU_DEV_HT(SWEEX2, LW154), RSU_DEV_HT(TRENDNET, TEW646UBH), #undef RSU_DEV_HT From nobody Tue Apr 1 08:01:43 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRgSS1G6Tz5s7pC; Tue, 01 Apr 2025 08:01: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 4ZRgSR6nmSz3Msc; Tue, 01 Apr 2025 08:01:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494504; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0VDzPNaofs89jI3WDWgdumt6S66mvsomFUd9otmqv7s=; b=jwNhW/vvvkTeZKy7HasXEY7Gf0cy/c3CULxy+p0Y7rCi+PLxd5r1QwX+yHKVpRCXlQl5e6 6Cee3l8f+L6SZfeRUaPubWDe28tAibVzXHbhSvBJ+crjUoHpy59pYmsgWqfcn8zEDUqh70 VPKhybmd1lOI4gju4eI/nVXWzZrheIsdI7oBHxS801G3DF1DShSWNjKLETP3E753bAIc01 uzUKDAjtuN3IDA1Fh8fW23PhQyxg/THhWdSvxC0fujdHHgUXgME/P/C/M5pn2dIjnNEBcI /xi2OINLgUXjGNTLI2PrhyzzAEAZa+vCNMKfvTDQ99VVt0wNOloU9+3fI5uKHQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743494504; a=rsa-sha256; cv=none; b=BgoacFZNMF3m0B6H29rwl62xRTsycX1VH4JS5aP6RZLIjxKEgtRvtRZx7Bg4rBjvwjfA2Z n5XRecCNGwoFvK5E0eRObwgMEX1mIAxqdvO4SzdkaNRrp89LEdaH7o5h57QShTJCbg8W4g gqSztV2GqtEnkecYs13exZis3Hz91Zqaf7CJ3eK3noj7l80L/6IJC2JW1hpOJlrH7qIHhx x7pJIgotQLp1uPjs3mR6at/ycHNGKQhx6nxzQi/l4NmzjAaYQxsMbf3g3/NiRL6gKBfVlx W8hGwnP/4Voh9zrtU1p56xysonMeeYHxs8DUTMl+J+YWji1MFKkV+jtQjx6yKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743494504; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0VDzPNaofs89jI3WDWgdumt6S66mvsomFUd9otmqv7s=; b=fH+jqfIOIowqlJF+Kh3m/DdVksni/VLGfDWYfW9eFIYb7Yg6wveEhNXax4hmv38nC8vwiQ RAVoUUlJ4r+7Z4KoP9E8OqbuA04okL3iyU9Vf9C2lTxMFAGI71vQaEohSa0qqmnpeY8OOg 2Z3FNEqAIxk/WHAmDSYorKY2MGO0XM2Sc7+4qCy02Uin4Gs4VLRBRHxDfjF8ylboIC1Oyy jnHXsPANGCVGLPaYFUlz1pCZjoj4AZbbiTAdMSvITV6ChXBQiz4bttkF6NnBCLpigLOEI1 fNgqKoHgjgPhkEdFeHcyzVLP0NVw/Yx7edFO/sg2qA8tV0RiiCW2aZXejl/xJw== 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 4ZRgSR6Nk4z6fG; Tue, 01 Apr 2025 08:01: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 53181h23063129; Tue, 1 Apr 2025 08:01:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53181hE2063126; Tue, 1 Apr 2025 08:01:43 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:01:43 GMT Message-Id: <202504010801.53181hE2063126@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 426f4e5e2e70 - main - if_run: Add sitecom device id List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 426f4e5e2e70e2a26d143bd3cc37c509a41684d5 Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=426f4e5e2e70e2a26d143bd3cc37c509a41684d5 commit 426f4e5e2e70e2a26d143bd3cc37c509a41684d5 Author: Nia Alarie AuthorDate: 2025-04-01 07:47:49 +0000 Commit: Tom Jones CommitDate: 2025-04-01 08:00:07 +0000 if_run: Add sitecom device id Reviewed by: thj, adrian Obtained from: NetBSD Differential Revision: https://reviews.freebsd.org/D49588 --- share/man/man4/run.4 | 4 +++- sys/dev/usb/usbdevs | 1 + sys/dev/usb/wlan/if_run.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/share/man/man4/run.4 b/share/man/man4/run.4 index 0e8a74d948bd..c3d9d75f8e28 100644 --- a/share/man/man4/run.4 +++ b/share/man/man4/run.4 @@ -17,7 +17,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd November 10, 2024 +.Dd April 1, 2025 .Dt RUN 4 .Os .Sh NAME @@ -228,6 +228,8 @@ Sitecom WL-302 .It Sitecom WL-315 .It +Sitecom WL-364 +.It SMC SMCWUSBS-N2 .It Sweex LW303 diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 24a1591233f4..d4176193d0b1 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -4557,6 +4557,7 @@ product SITECOMEU RT3072_5 0x004a RT3072 product SITECOMEU WL349V1 0x004b WL-349 v1 product SITECOMEU RT3072_6 0x004d RT3072 product SITECOMEU WLA1000 0x005b WLA-1000 +product SITECOMEU RT3070_1 0x0051 RT3070 product SITECOMEU RTL8188CU_1 0x0052 RTL8188CU product SITECOMEU RTL8188CU_2 0x005c RTL8188CU product SITECOMEU RTL8192CU 0x0061 RTL8192CU diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c index 00e005fd7d4d..97c790dd5b81 100644 --- a/sys/dev/usb/wlan/if_run.c +++ b/sys/dev/usb/wlan/if_run.c @@ -324,6 +324,7 @@ static const STRUCT_USB_HOST_ID run_devs[] = { RUN_DEV(SITECOMEU, RT2870_3), RUN_DEV(SITECOMEU, RT2870_4), RUN_DEV(SITECOMEU, RT3070), + RUN_DEV(SITECOMEU, RT3070_1), RUN_DEV(SITECOMEU, RT3070_2), RUN_DEV(SITECOMEU, RT3070_3), RUN_DEV(SITECOMEU, RT3070_4), From nobody Tue Apr 1 08:10:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRgf96Lmrz5s8fj; Tue, 01 Apr 2025 08:10: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 4ZRgf94wlGz3Q3B; Tue, 01 Apr 2025 08:10:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jVHymtY7GJNbBsw2gsJfKZOEV2bCbNajebMitdZzJrg=; b=BQd+XDsxFrI2rEV0Tzft8v05DJUkysLI/+icpZTh6Usr9/Y/UhPUeAvAkplN3t0mGDETli eFO6VLgCFb7ku7j7v3l4KJ6pfCw1c59YevkkOjaVjZPPkvCJd9yk8Ij1Hxby9MyNcl9/Wb Xtt7FujDX4T7U3hYkiOAEfwUxEdQYpk2IKRQtic6+KM6knFOFYmAMKU8c0cTo5IDNfksZ/ oeZc810l2mrFVuJBuuwodXz9MocuLiYJ6qJzRvPRKcErmb/0BgGF3Upt22xRp0YLCMvIAN Op2UVPyeSfxDK8DBCzJje5qYk/JVTgCNQU8YeiKTEVNBnqOOqijuEpAwiPb/uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743495009; a=rsa-sha256; cv=none; b=ev/w3m4o2nMKbuy+SJ7EpqX39NuSg6/ymtIDQ+fDZxRsBHLFfsjirm6tY3UYeXxIMBm8nR zndBU9z0qi6HYzzPA4vZrYzt5kT7QRXt/yQTqlPSGr/Ekxyu05NyCZIrj+rtT6kumNXxhv eoeesEs4gQsrhAcccgQKlVqsSVFySkFLrkI/YR0cjmLLVsYM13Bs9YmatfbZs4K7LPZX9/ sr0quk5iDUeZ17ezUihoKJsNY612OLWE/j4QOHiVQi/4fRHEXr7dFLJa1b1spDbJFee0RG 9PskEzkJg9i+w+xIjZ9y0UeBSy9nO0VD3UlRI3mkZ77z/iUvEDxZSdCkYxHICw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jVHymtY7GJNbBsw2gsJfKZOEV2bCbNajebMitdZzJrg=; b=ydBJNHNwp5gC5UZyTDTd7gAvH9suOVICI+uiaW1Zu54C8+k4fjyKuV9XhCrNzPWd15+Lll EEFtKmAbzbH/aPLrN1j3CBL2Za4QqV8HWcrbEPwcTYMjrIt8iQ/qPt3WpxBmM+fhj5Z64e 8/kKRHXFDjgdtW/mbnhGO1IYPKrdtp/27DHLdR4y7r4yyc+P9UxvEnhvdB8t0g0wLSuqK7 yd7+S099r014hITTlfrgR+4qff9iNHMejTmzEN59RdHQfrGFwBv2VQW+mA3youZzGHKXt6 u9PSfwHiLWLBYUYoCbdg2ddHpXXcpxGoJQIZBBhBlLJ3JScslfnesFx2w4dCCQ== 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 4ZRgf9434pz6hG; Tue, 01 Apr 2025 08:10: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 5318A9TP073972; Tue, 1 Apr 2025 08:10:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5318A96d073963; Tue, 1 Apr 2025 08:10:09 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:10:09 GMT Message-Id: <202504010810.5318A96d073963@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: 91506dba7f2e - main - zoneinfo: also install tzdata.zi and version List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 91506dba7f2eb147eeb55ec30640bc11755a1e8e Auto-Submitted: auto-generated The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=91506dba7f2eb147eeb55ec30640bc11755a1e8e commit 91506dba7f2eb147eeb55ec30640bc11755a1e8e Author: Philip Paeps AuthorDate: 2025-04-01 08:09:37 +0000 Commit: Philip Paeps CommitDate: 2025-04-01 08:09:37 +0000 zoneinfo: also install tzdata.zi and version Build and install the shrunk version of the time zone database required by libc++ 19 std::chrono::current_zone (etc). While here, also install the tzdata 'version' file to align more closely with other vendors. PR: 282377 Reviewed by: dim, emaste, imp Differential Revision: https://reviews.freebsd.org/D49577 --- share/zoneinfo/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile index 824dda827e44..e3111c915a93 100644 --- a/share/zoneinfo/Makefile +++ b/share/zoneinfo/Makefile @@ -98,6 +98,20 @@ zonefiles: ${TDATA} (umask 022; cd ${.CURDIR}; \ ${ZIC:Uzic} -D -d ${TZBUILDDIR} ${ZICFLAGS} -m ${NOBINMODE} \ ${LEAPFILE} ${TZFILES}) + (umask 022; cd ${TZBUILDDIR}; \ + read -r version <${CONTRIBDIR}version && \ + LC_ALL=C awk \ + -v DATAFORM='main' \ + -v PACKRATDATA='' \ + -v PACKRATLIST='' \ + -f ${CONTRIBDIR}ziguard.awk ${TZFILES} >${TZBUILDDIR}/main.zi; \ + LC_ALL=C awk \ + -v dataform='main' \ + -v deps='zishrink.awk' \ + -v redo='posix_only' \ + -v version="$$version" \ + -f ${CONTRIBDIR}zishrink.awk \ + main.zi >tzdata.zi; rm main.zi) (cd ${TZBUILDDIR} && find * -type f | LC_ALL=C sort) > ${.TARGET} beforeinstall: install-zoneinfo @@ -113,6 +127,8 @@ install-zoneinfo: ${CONTRIBDIR}/zone.tab ${DESTDIR}/usr/share/zoneinfo/ ${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ ${CONTRIBDIR}/zone1970.tab ${DESTDIR}/usr/share/zoneinfo/ + ${INSTALL} ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \ + ${CONTRIBDIR}/version ${DESTDIR}/usr/share/zoneinfo/ afterinstall: # From nobody Tue Apr 1 08:18:18 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRgqZ3Dc7z5s944; Tue, 01 Apr 2025 08:18: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 4ZRgqZ2F8Sz3Srw; Tue, 01 Apr 2025 08:18:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/K9BZCaq79MGKpMwSIHm9POElrcpIwvxfulLcMuvCU=; b=bS5pPhUw+5Te6HxZeTqmuydn2IjqdkhRZzhllRl8PqHTiMZSNxCTyPJ0XJQwSpZQUJXV6j cTbmu1NgZs6ZyPNcPXw+fQcsXL1uvUtzQ0TxHPcvvikh23g/519FT8YlPxPhzUjGPu4UQM RcAIAtXWhi6r9OwXij4HTTbKl3xxIKVkYinG3LEhn09McEIePKlVQuJNfWV+NwRn1wbO6s 8gmrjWNyxWwbw+QcbsIw/nYBCbX8Zbotm/rATzJ3RfVwMXDZ6dztZ5sLkvqbjrNG1OTKq6 dYzORuyjaBLBeJ/shrsDo84Nlz4OuOEEKjHdBtfVJx+aICFvE1C95QXptahWOw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743495498; a=rsa-sha256; cv=none; b=IWhpabKRA3NP37ByDj4c+0FiZLU8rZ3H4vvWDMGoyOc7mAv1sy5ZqnN5hiL8HTmxbiKi7q ENMGoonl4l7mjAQvEPaAZ89IbRXzMgamAWAByPnCEdbe6LyWB8Bt/gbmzqkkjlFUi9R8B1 PZkYI7TyMa4a77W4NFWYE4YFzfOJr+DwtROASk9aT1IwLjQU0N/IQY/dyks0guLVC0+Y/C AKn+fchFzE7SPHVoaZdzH+yBUeUYzd5HUcvxpVCAUUvy+5vNB4g5XS4juzU//5OSLCsaUF kzpbgGrYEaOE630SpkP3CBdfQmKA7fFj6PpoYFW5h6z5xx08Q4ZudGrMPP8DKQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743495498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R/K9BZCaq79MGKpMwSIHm9POElrcpIwvxfulLcMuvCU=; b=TB9ApndK0d76WJGpnBZTrBW3Lg66hZ+OnNTJBUGvb17O8mp8zpjAx4l0amLVUPg4kL2elq JlNoy108kIUwfI7ymmI2JQ3AfOwomgifFwlqV9rcbS/cjFXHOzACDq7leA+20mCCIF0JmT V8ZbrAG1Unre5Fx/kBt2dc7apVMIa3SW8UM8EWccdTmTBIhxbfqLamELtn+38j+Hprlg97 qlEsdE+rRz9DuDaLk8NHwiq7Mu5FG0zZdvyZ4nBqQIZRfrx9wH44e5hFVq96wFu49qIxn8 3RqmX6Lw8A6DmtS3XhF1eTyjOpYIuN83r+gTvw/tFnZeAdxY/4vKqkWAv3PzJA== 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 4ZRgqZ1Y4Zz7Kw; Tue, 01 Apr 2025 08:18: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 5318IIZa087949; Tue, 1 Apr 2025 08:18:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5318IIDu087946; Tue, 1 Apr 2025 08:18:18 GMT (envelope-from git) Date: Tue, 1 Apr 2025 08:18:18 GMT Message-Id: <202504010818.5318IIDu087946@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: e9efa3ed25d4 - main - Add a kgdb python script to extract bbl from kernel dumps List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d commit e9efa3ed25d4d5dad48a7bdf1816b79f3df5297d Author: Tom Jones AuthorDate: 2025-04-01 08:15:36 +0000 Commit: Tom Jones CommitDate: 2025-04-01 08:17:31 +0000 Add a kgdb python script to extract bbl from kernel dumps A kgdb script allows us to be relatively resilient to kernel structure changes, with a lower burden for updates when they happen than a C tool. tuexen@ requested we ship this script in a source distribution. Making it easier for users to extract useful debugging information from a core. It requires kgdb and python3 and would ideally be a lldb lua script, but there is more work needed on lldb lua before we can do that. Add the script as is. A single script we could run against a core would be nice, but I don't want to let that block making this tool more available. Reviewed by: teuxen, rrs Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48705 --- tools/tools/kgdb/tcplog.py | 267 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) diff --git a/tools/tools/kgdb/tcplog.py b/tools/tools/kgdb/tcplog.py new file mode 100644 index 000000000000..380f5fc85b53 --- /dev/null +++ b/tools/tools/kgdb/tcplog.py @@ -0,0 +1,267 @@ +#!/usr/bin/env python3 + +#- +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# This software was developed by Tom Jones under sponsorship +# from The FreeBSD Foundation + +## Extracting logs using the kgdb script +# +# This script extracts tcp black box logs from a kernel core for use with +# tcplog_dumper[1] and readbbr_log[2]. +# +# Some system configuration is required to enable black box logs +# +# [1]: https://github.com/Netflix/tcplog_dumper +# [2]: https://github.com/Netflix/read_bbrlog +# +# TCP Logs can be extracted from FreeBSD kernel core dumps using the gdb plugin +# provided in the `kgdb` directory. An example usage assuming relevant kernel +# builds and coredumps looks like: +# +# $ kgdb kernel-debug/kernel.debug vmcore.last +# Reading symbols from coredump/kernel-debug/kernel.debug... +# +# Unread portion of the kernel message buffer: +# KDB: enter: sysctl debug.kdb.enter +# +# __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:57 +# 57 __asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (offsetof(struct pcpu, +# (kgdb) source tcplog.py +# (kgdb) tcplog_dump vnet0 +# processing struct tcpcb * 0xfffff80006e8ca80 +# _t_logstate: 4 _t_logpoint: 0 '\000' t_lognum: 25 t_logsn: 25 +# log written to 0xfffff80006e8ca80_tcp_log.bin +# processing struct tcpcb * 0xfffff8000ec2b540 +# _t_logstate: 4 _t_logpoint: 0 '\000' t_lognum: 8 t_logsn: 8 +# log written to 0xfffff8000ec2b540_tcp_log.bin +# processing struct tcpcb * 0xfffff80006bd9540 +# no logs +# processing struct tcpcb * 0xfffff80006bd9a80 +# no logs +# processing struct tcpcb * 0xfffff8001d837540 +# no logs +# processing struct tcpcb * 0xfffff8001d837000 +# no logs +# +# processed 1 vnets, dumped 2 logs +# 0xfffff80006e8ca80_tcp_log.bin 0xfffff8000ec2b540_tcp_log.bin +# +# +# The generated files can be given to tcplog_dumper to generate pcaps like so: +# +# $ tcplog_dumper -s -f 0xfffff80006e8ca80_tcp_log.bin +# + +import struct + +TLB_FLAG_RXBUF = 0x0001 #/* Includes receive buffer info */ +TLB_FLAG_TXBUF = 0x0002 #/* Includes send buffer info */ +TLB_FLAG_HDR = 0x0004 #/* Includes a TCP header */ +TLB_FLAG_VERBOSE = 0x0008 #/* Includes function/line numbers */ +TLB_FLAG_STACKINFO = 0x0010 #/* Includes stack-specific info */ + +TCP_LOG_BUF_VER = 9 # from netinet/tcp_log_buf.h +TCP_LOG_DEV_TYPE_BBR = 1 # from dev/tcp_log/tcp_log_dev.h + +TCP_LOG_ID_LEN = 64 +TCP_LOG_TAG_LEN = 32 +TCP_LOG_REASON_LEN = 32 + +AF_INET = 2 +AF_INET6 = 28 + +INC_ISIPV6 = 0x01 + +class TCPLogDump(gdb.Command): + + def __init__(self): + super(TCPLogDump, self).__init__( + "tcplog_dump", gdb.COMMAND_USER + ) + + def dump_tcpcb(self, tcpcb): + if tcpcb['t_lognum'] == 0: + print("processing {}\t{}\n\tno logs".format(tcpcb.type, tcpcb)) + return + else: + print("processing {}\t{}".format(tcpcb.type, tcpcb)) + + print("\t_t_logstate:\t{} _t_logpoint:\t{} t_lognum:\t{} t_logsn:\t{}".format( + tcpcb['_t_logstate'], tcpcb['_t_logpoint'], tcpcb['t_lognum'], tcpcb['t_logsn'])) + + eaddr = (tcpcb['t_logs']['stqh_first']) + log_buf = bytes() + while eaddr != 0: + log_buf += self.print_tcplog_entry(eaddr) + eaddr = eaddr.dereference()['tlm_queue']['stqe_next'] + + if log_buf: + filename = "{}_tcp_log.bin".format(tcpcb) + + with open(filename, "wb") as f: + f.write(self.format_header(tcpcb, eaddr, len(log_buf))) + f.write(log_buf) + self.logfiles_dumped.append(filename) + print("\tlog written to {}".format(filename)) + + # tcpcb, entry address, length of data for header + def format_header(self, tcpcb, eaddr, datalen): + # Get a handle we can use to read memory + inf = gdb.inferiors()[0] # in a coredump this should always be safe + + # Add the common header + hdrlen = gdb.parse_and_eval("sizeof(struct tcp_log_header)") + hdr = struct.pack("=llq", TCP_LOG_BUF_VER, TCP_LOG_DEV_TYPE_BBR, hdrlen+datalen) + + inp = tcpcb.cast(gdb.lookup_type("struct inpcb").pointer()) + + # Add entry->tldl_ie + bufaddr = gdb.parse_and_eval( + "&(((struct inpcb *){})->inp_inc.inc_ie)".format(tcpcb)) + length = gdb.parse_and_eval("sizeof(struct in_endpoints)") + hdr += inf.read_memory(bufaddr, length).tobytes() + + # Add boot time + hdr += struct.pack("=16x") # BOOTTIME + + # Add id, tag and reason as UNKNOWN + + unknown = bytes("UNKNOWN", "ascii") + + hdr += struct.pack("={}s{}s{}s" + .format(TCP_LOG_ID_LEN, TCP_LOG_TAG_LEN, TCP_LOG_REASON_LEN), + unknown, unknown, unknown + ) + + # Add entry->tldl_af + if inp['inp_inc']['inc_flags'] & INC_ISIPV6: + hdr += struct.pack("=b", AF_INET6) + else: + hdr += struct.pack("=b", AF_INET) + + hdr += struct.pack("=7x") # pad[7] + + if len(hdr) != hdrlen: + print("header len {} bytes NOT CORRECT should be {}".format(len(hdr), hdrlen)) + + return hdr + + def print_tcplog_entry(self, eaddr): + # implement tcp_log_logs_to_buf + entry = eaddr.dereference() + + # If header is present copy out entire buffer + # otherwise copy just to the start of the header. + if entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_HDR: + length = gdb.parse_and_eval("sizeof(struct tcp_log_buffer)") + else: + length = gdb.parse_and_eval("&((struct tcp_log_buffer *) 0)->tlb_th") + + bufaddr = gdb.parse_and_eval("&(((struct tcp_log_mem *){})->tlm_buf)".format(eaddr)) + + # Get a handle we can use to read memory + inf = gdb.inferiors()[0] # in a coredump this should always be safe + buf_mem = inf.read_memory(bufaddr, length).tobytes() + + # If needed copy out a header size worth of 0 bytes + # this was a simple expression untiil gdb got involved. + if not entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_HDR: + buf_mem += bytes([0 for b + in range( + gdb.parse_and_eval("sizeof(struct tcp_log_buffer) - {}".format(length)) + ) + ]) + + # If verbose is set: + if entry['tlm_buf']['tlb_eventflags'] & TLB_FLAG_VERBOSE: + bufaddr = gdb.parse_and_eval("&(((struct tcp_log_mem *){})->tlm_v)".format(eaddr)) + length = gdb.parse_and_eval("sizeof(struct tcp_log_verbose)") + buf_mem += inf.read_memory(bufaddr, length).tobytes() + + return buf_mem + + def dump_vnet(self, vnet): + # This is the general access pattern for something in a vnet. + cmd = "(struct inpcbinfo*)((((struct vnet *) {} )->vnet_data_base) + (uintptr_t )&vnet_entry_tcbinfo)".format(vnet) + ti = gdb.parse_and_eval(cmd) + + # Get the inplist head (struct inpcb *)(struct inpcbinfo*)({})->ipi_listhead + inplist = ti['ipi_listhead'] + self.walk_inplist(inplist) + + def walk_inplist(self, inplist): + inp = inplist['clh_first'] + while inp != 0: + self.dump_tcpcb(inp.cast(gdb.lookup_type("struct tcpcb").pointer())) + inp = inp['inp_list']['cle_next'] + + def walk_vnets(self, vnet): + vnets = [] + while vnet != 0: + vnets.append(vnet) + vnet = vnet['vnet_le']['le_next'] + return vnets + + def complete(self, text, word): + return gdb.COMPLETE_SYMBOL + + def invoke(self, args, from_tty): + if not args: + self.usage() + return + + self.logfiles_dumped = [] + + node = gdb.parse_and_eval(args) + + # If we are passed vnet0 pull out the first vnet, it is always there. + if str(node.type) == "struct vnet_list_head *": + print("finding start of the vnet list and continuing") + node = node["lh_first"] + + if str(node.type) == "struct vnet *": + vnets = self.walk_vnets(node) + for vnet in vnets: + self.dump_vnet(vnet) + + print("\nprocessed {} vnets, dumped {} logs\n\t{}" + .format(len(vnets), len(self.logfiles_dumped), " ".join(self.logfiles_dumped))) + elif str(node.type) == "struct inpcbinfo *": + inplist = node['ipi_listhead'] + self.walk_inplist(inplist) + + print("\ndumped {} logs\n\t{}" + .format(len(self.logfiles_dumped), " ".join(self.logfiles_dumped))) + elif str(node.type) == "struct tcpcb *": + self.dump_tcpcb(node) + else: + self.usage() + + return + + def usage(self): + print("tcplog_dump
") + print("Locate tcp_log_buffers and write them to a file") + print("Address can be one of:") + print("\tvnet list head (i.e. vnet0)") + print("\tvnet directly") + print("\tinpcbinfo") + print("\ttcpcb") + print("\nIf given anything other than a struct tcpcb *, will try and walk all available members") + print("that can be found") + print("\n") + print("logs will be written to files in cwd in the format:") + print("\t\t `%p_tcp_log.bin` struct tcpcb *") + print("\t\t existing files will be stomped on") + print("\nexamples:\n") + print("\t(kgdb) tcplog_dump vnet0") + print("\t(kgdb) tcplog_dump (struct inpcbinfo *)V_tcbinfo # on a non-vnet kernel (maybe, untested)") + print("\t(kgdb) tcplog_dump (struct tcpcb *)0xfffff80006e8ca80") + print("\t\twill result in a file called: 0xfffff80006e8ca80_tcp_log.bin\n\n") + + return + +TCPLogDump() + From nobody Tue Apr 1 08:19:20 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRgsR53vbz5s9Fk; Tue, 01 Apr 2025 08:19:55 +0000 (UTC) (envelope-from thj@freebsd.org) Received: from fout-a5-smtp.messagingengine.com (fout-a5-smtp.messagingengine.com [103.168.172.148]) (using TLSv1.3 with cipher TLS_AES_256_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 4ZRgsR42dQz3VD3; Tue, 01 Apr 2025 08:19:55 +0000 (UTC) (envelope-from thj@freebsd.org) Authentication-Results: mx1.freebsd.org; none Received: from phl-compute-13.internal (phl-compute-13.phl.internal [10.202.2.53]) by mailfout.phl.internal (Postfix) with ESMTP id E675E1384566; Tue, 1 Apr 2025 04:19:54 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-13.internal (MEProxy); Tue, 01 Apr 2025 04:19:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1743495594; x=1743581994; bh=7 2t5+5aqXNv/Ck/UeXUw74mEVlGSiccMCgNjBzAk2Jk=; b=qj3JtS0lJTeMQv/6N P0ekCLizKKELlebqb4SYJkAJcCRqxjodKbawhGlnOhZy2dfsyesnaAKlJloh1a6o 6P5sv+tRztuPBedjjQdEepD1hyDITu6EJtQXH9VJikCmIo2GOJfQvYatss4rHO2y 966z1xSD5fdAeVidAhdP9Q6BHyW7fm2lwp9QiK6eEa0allURtc2YGV67On6/kPpc XHBH0cDaPg7wrkoxSgq5FUtgT9Y5H1xRRpas1BfKCYGIi4uNdvuSVfGaJ4UcPYVE QAd7EIPSOzxUOl5jJWjoKJ7qoiMu0FJV6DgdWhlZN1eXHJawBJukkkBxb5/iugLL Bk0sw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddukedvfedtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvffkjghfufgtgfesthejredtredt tdenucfhrhhomhepfdfvohhmucflohhnvghsfdcuoehthhhjsehfrhgvvggsshgurdhorh hgqeenucggtffrrghtthgvrhhnpeeitdfhvdejuddvjeeuudduhfehtdduleehtdfghfej ledvhfejuedvieeljeejgfenucffohhmrghinhepfhhrvggvsghsugdrohhrghenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhjsehfrhgv vggsshgurdhorhhgpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprh gtphhtthhopeguvghvqdgtohhmmhhithhsqdhsrhgtqdgrlhhlsehfrhgvvggsshgurdho rhhgpdhrtghpthhtohepuggvvhdqtghomhhmihhtshdqshhrtgdqmhgrihhnsehfrhgvvg gsshgurdhorhhgpdhrtghpthhtoheprhhmsehfrhgvvggsshgurdhorhhgpdhrtghpthht ohepshhrtgdqtghomhhmihhtthgvrhhssehfrhgvvggsshgurdhorhhg X-ME-Proxy: Feedback-ID: ib75146ab:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id AA298BA006F; Tue, 1 Apr 2025 04:19:54 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 X-ThreadId: Tfc9e6b13354e4541 Date: Tue, 01 Apr 2025 09:19:20 +0100 From: "Tom Jones" To: "Ruslan Makhmatkhanov" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-Id: <21d25fe5-9bc2-4a9a-a828-e0fffebfb397@app.fastmail.com> In-Reply-To: <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> References: <202503311243.52VCh9PU088854@gitrepo.freebsd.org> <27cc3bec-d002-4b65-b503-ac195379e823@FreeBSD.org> Subject: Re: git: 2ad0f7e91582 - main - Import iwx as ported from OpenBSD by Future Crew. Content-Type: text/plain Content-Transfer-Encoding: 7bit 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:151847, ipnet:103.168.172.0/24, country:AU] X-Rspamd-Queue-Id: 4ZRgsR42dQz3VD3 X-Spamd-Bar: ---- On Mon, Mar 31, 2025, at 23:39, Ruslan Makhmatkhanov wrote: > Tom Jones wrote on 3/31/25 3:43 PM: >> The branch main has been updated by thj: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=2ad0f7e91582dde5475ceb1a1942930549e5c628 >> >> commit 2ad0f7e91582dde5475ceb1a1942930549e5c628 >> Author: Tom Jones >> AuthorDate: 2025-03-31 12:24:15 +0000 >> Commit: Tom Jones >> CommitDate: 2025-03-31 12:42:31 +0000 >> >> Import iwx as ported from OpenBSD by Future Crew. > > Wow! nobody expected the Spanish Inquisition. That's great, thank you! > Works smoothly at glance. I had this in dmesg, not sure if it's known > issue (should I submit PR?): Thanks for the report, I think this is an issue with the tx lock. I'm working with adrian@ to further improve iwx and resolve these issues - Tom From nobody Tue Apr 1 12:32:02 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRnSM3L7zz5rSPr; Tue, 01 Apr 2025 12:32: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 4ZRnSL6hy3z4Kn5; Tue, 01 Apr 2025 12:32:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743510722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utZ1Hw0mnO/aB7yOvjC9G73Ffoc64rcRvIjYZZo1jeo=; b=FuHbBs4UGsDwhYvMYsfg3eVG70cB02tnm7pWU1+mfH/GC/TsZaf72t5aZh/sCBRU5Y/yPP 5pXdz7J6ImZqqFqSxwq4OHuwbvpfs161lP2Fi8v73fuC+fTvxLfoY8xvbGnvtT54ZXbqXe RQGow+YJBbdlWFEE9kUue9huyqxe2LyctO70MzTI1VueITTRs3rEYZcedyyVigj7uKkby6 G4ciyxw4aZjDv/cmw6zw23LFqjaETnSr0zrmNpsztNYgNEZuRzjttmoy3jiKRNh55Id3kG YYzkjvVKErymYd6wR44+PwrQmtWnm7f+ItSGNXiQZ4+nZJPGPOpWVMG5UecB1Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743510722; a=rsa-sha256; cv=none; b=eKVwuoX0w1Eyw1kCs0EvTaz0bhwzLZvMpW5tN8vMwMksJM0Uhoe2oZcXVOIL4jSYJkq3qD ltg8l0pONd8BLRDtY5CTrADXeJ0rOQAr1/TQUpuaCxcKIMOLBQJurwWmNid+/eUhph0Y6r +7d+jjhW7fGf3MQ3KkL3Fx7S8Q6VAe9rw7kSCSC/KQSG1rPg3XyOm3P7XfvZGjImkhRRbo KhT1++FXiYRt/P+reB4wwR4FfV7lHPW/P277USNr5BaiGVKOp94ULKicZie8bYcKkuF4Kq MMX9lmK9CBLE7f5mjB2tkRVMbea5w9cuYuW2O1h6+v20mmPmXrEZ7lRt90FhpA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743510722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utZ1Hw0mnO/aB7yOvjC9G73Ffoc64rcRvIjYZZo1jeo=; b=sH07ZE98AaFtu4sU6R8rfU0NQOyf/UwnmfaXR5Lw6gd3ISrAWXtjP/lAJ1o+i9+9HU/VEE bmPrwJzG/tVfPTcqaoMMPwx+npYWLo1Nioag0lPdhdLG+tMEakC+pKOuvjgbwU8QZ0JlT4 BjSzfmpKvAiD54fezYrQHJCUZWAqJsZBRDmTWaAEGmgjr82WJw2c6iE9uaCl+B31/ze7xh Bcv5Dj7fhW1YcygYZ8NDIYEWafxflcAbgseeUsDO6WdnMpVVnT7ofDait2O0WbVZyciHLG v1lHHVsxSaKpUxGqGRTOJdAWN3Fjt+501AxdOJAW4xZlzgdY7PJkdo4IUyFEzQ== 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 4ZRnSL534lzX1v; Tue, 01 Apr 2025 12:32: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 531CW2Xd069704; Tue, 1 Apr 2025 12:32:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531CW2Sk069701; Tue, 1 Apr 2025 12:32:02 GMT (envelope-from git) Date: Tue, 1 Apr 2025 12:32:02 GMT Message-Id: <202504011232.531CW2Sk069701@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: 9157372d3e57 - stable/14 - devd: raise the maximum allowed client to 50 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9157372d3e579c4f0f47f6d0507e0b7a7b57ae82 Auto-Submitted: auto-generated The branch stable/14 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=9157372d3e579c4f0f47f6d0507e0b7a7b57ae82 commit 9157372d3e579c4f0f47f6d0507e0b7a7b57ae82 Author: Baptiste Daroussin AuthorDate: 2025-03-20 08:53:16 +0000 Commit: Baptiste Daroussin CommitDate: 2025-04-01 12:31:59 +0000 devd: raise the maximum allowed client to 50 since the creation of libudev-devd, but also with powerd, recent libusb changes etc. 10 client is not enough anymore to cover the desktop needs and end users often ends up with: sonewconn: pcb 0xfffff8004dd43780 (local:/var/run/devd.seqpacket.pipe)... raise the maximum allowed client to 50, which should be enough to cover user requirements. MFC After: 1 week (cherry picked from commit 5682eee1efd35fb65751641181ae2a50d86efaab) --- sbin/devd/devd.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbin/devd/devd.cc b/sbin/devd/devd.cc index 05715c18708f..28aab82803c8 100644 --- a/sbin/devd/devd.cc +++ b/sbin/devd/devd.cc @@ -939,7 +939,7 @@ create_socket(const char *name, int socktype) return (fd); } -static unsigned int max_clients = 10; /* Default, can be overridden on cmdline. */ +static unsigned int max_clients = 50; /* Default, can be overridden on cmdline. */ static unsigned int num_clients; static list clients; From nobody Tue Apr 1 12:53:45 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRnxP4zjZz5rVHQ; Tue, 01 Apr 2025 12:53: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 4ZRnxP49Nrz3D8r; Tue, 01 Apr 2025 12:53:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743512025; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CCt27zinJ2OWYbOZg7orIh5gJA+80VLQ8oT/uFz97ec=; b=yxU/kSDAygLbxe7+toJWjFY2sXiiClrAOCMTM58sxA2wRfvR9FVD8vU42NJd++2MlQtwgo hK6rLgNk/iNbSFmf9NfBrnBIvvKzYEsoMN95xxrxdO7gunW++KIRVg9z1Dh18yGeLD8zbj lgZt4W52WSUecOj4o2R+CELsdjuwcYF7Rf462nMlPPHn3Zj8tsomkPEqfHUCoLXIgD2jgh NXAP1AjYiPTTNdq5on0K3GyNOSP1gb9sDE9Ik+45gbHhLw57lkL/aDugmmtMGj4ilQxxeZ FMJf7bZXIw44JDxSz2Rvyw/+tQQHRdblaK5oSa/sdxXtpz+H0Vb+ojdfFsCtNA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743512025; a=rsa-sha256; cv=none; b=rRCmBcA7Yv8TbLCElY/nR3dL8rJtMRJmQxnnEeKLUQOwKLkdEiGjISKPg9zLwXVE9xLTsL fPnpT3ipRwB8mzpL3rRIbjTv8DLHS0TsaKq2jUsvhYbpwOBQqkionQ30cM5hbopVguv+Vi ub6Qn3VcurNfqQNsHgcvsZF3y/9Fs6U4m0LkopyHPu2lhp1SVELOIBDgRlMhwfWuttm7Iz srlG4qvqwL3g7/A/j/gKSeDrIe4z2Hw6F3CnUCVsWZtzXmGjcuO1TB8Y8YFIcKrVPmuWTK 69nW37YpzRQr1sRWsoC42qLVB4IC2LKaed/Ik2EBgrm6SuN8c6SzDoQfwvZ11Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743512025; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CCt27zinJ2OWYbOZg7orIh5gJA+80VLQ8oT/uFz97ec=; b=ppQ4SQ0LP2KG6qG3JmLEaaWK1ztXu6LYHmLtDRjDaeR3EoGEBbLuOj8keuPRBe0x9DBZWj LVCXDyXvbXjUkn1ElyqTlMFAUEqprwDyfxt87h6Ko7uF0HBzQDYMab4jsR6P3eSk0X1HNY GqR1LXlZ9m7rQUG030L3nTyqa+psLJbaIui4cHVyk9geNzb8GhqReSYS2xyvw572pHuOLQ KI+vZExkk0OK8Xvj0gXcu8Jbf2dAsu846Irifgydiu7Lao8X0nTh1QNcE2Xn/YkoMi9aRG hw4BHZgtjDUulukDqaZ3zlrgZ212hAQJ9MzhhNQiD4ZpijOrMtyCwlZUUuY+bg== 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 4ZRnxP3fhJzXZk; Tue, 01 Apr 2025 12:53: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 531CrjmN009212; Tue, 1 Apr 2025 12:53:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531CrjcW009209; Tue, 1 Apr 2025 12:53:45 GMT (envelope-from git) Date: Tue, 1 Apr 2025 12:53:45 GMT Message-Id: <202504011253.531CrjcW009209@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: e683e7e0f887 - stable/14 - usr.bin/Makefile: always build ELF Tool Chain strings(1) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e683e7e0f887216b52dfd64db226f0a6d3ce853a Auto-Submitted: auto-generated The branch stable/14 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=e683e7e0f887216b52dfd64db226f0a6d3ce853a commit e683e7e0f887216b52dfd64db226f0a6d3ce853a Author: Ed Maste AuthorDate: 2025-03-20 17:47:29 +0000 Commit: Ed Maste CommitDate: 2025-04-01 12:52:53 +0000 usr.bin/Makefile: always build ELF Tool Chain strings(1) strings(1) is not conditional on WITH_/WITHOUT_TOOLCHAIN, as it is a small utility that is also useful outside of the toolchain context. As of commit 1cae7121c667 we switched to WITH_LLVM_BINUTILS by default. After this change building world with default options but installing WITHOUT_TOOLCHAIN failed, because we would build LLVM's strings but attempt to install ELF Tool Chain's version, which did not exist. Address this by always including ELF Tool Chain strings in non-install make targets, so that it will be available if options are changed at install time. PR: 285556 Reported by: Michael Butler Reviewed by: brooks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49425 (cherry picked from commit fdc4db57224ce19b867c60fce4c410068be40c27) --- usr.bin/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/usr.bin/Makefile b/usr.bin/Makefile index 58945f7ecb18..02c6018af6e1 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -258,6 +258,12 @@ SUBDIR.${MK_TOOLCHAIN}+= nm SUBDIR.${MK_TOOLCHAIN}+= objcopy SUBDIR.${MK_TOOLCHAIN}+= readelf SUBDIR.${MK_TOOLCHAIN}+= size +.endif +# Include elftoolchain's strings in build targets even if using LLVM_BINUTILS, +# as we may later install with different options. In particular, the release +# artifact builds use default options for buildworld but install with +# MK_TOOLCHAIN=no which implies MK_LLVM_BINUTILS=no. +.if ${MK_LLVM_BINUTILS} == "no" || !make(install) SUBDIR+= strings .endif SUBDIR.${MK_TOOLCHAIN}+= c89 From nobody Tue Apr 1 13:20:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRpWv2Vfcz5rWcG; Tue, 01 Apr 2025 13:20: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 4ZRpWt5NThz3MrH; Tue, 01 Apr 2025 13: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=1743513610; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mJqqfgjhbFW32NPlL1ndUlKrPXyq/sg/ui7EvqGu+NY=; b=SkNSwbaUxok921ZsPmuTt1IHQQREgWEdwlKoH98/kEEczwzyUkKlSuvqjuGEvPLKNdw+H+ pOd4icBLmUNVXjrEcCymIKQCxqp6/nhXOFFLqGJKgxWHCj+KlaVYUOK/mG/SYA7zKyErdl uM/bKTSVnzLv0BSjCUYpWhHkr1V111VAajmejRtYPEfxJg8kWPl0TbJgUW0hhjZqlI3WQL 6C1Xe73myTG9kgvYSKgFE9jM0aaKITR56KO1dpUvr7hjp9pcCp1EVEpgEMn8AXchj1lIkQ QDMVa7GpMjfOr9heJgfx5xf0of4boEdJ8gHWFH2P1LY/6NLYkLuTfITS7ujyvg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743513610; a=rsa-sha256; cv=none; b=xPpu4yf0lpF+cVrigT9YVyfMRSHD8TTTIyG2Kfn5itqjd03SkmqeLPY6Rd8mx4Btke48gM 2Rrz+exRSOvywVDqriEC5DYBnArtrFfdbtppqVNBfZVPSgwq8U1J+0jP8acFm+hna1QwDf tpd0kuge/pLZD9c1kImQQKWcQKMMat2hfB5KD6YE3T43OGzIPim8xX7MojOV5d2dUpRN/e OJ3S9boA0sCRQddnaddH/23l9efvBx0oOx4Ykloah72OcguCvLxToM4Cc7yczH25MS1J9X yzOUwc/zcK323hsWk/atW0NdpwkmiZDMH40fr0nm3kSw2w5RsGpxR/R/IctH4g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743513610; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mJqqfgjhbFW32NPlL1ndUlKrPXyq/sg/ui7EvqGu+NY=; b=Qwlx0UENXAfwhPOUjGRloXqmv+z+rclxrrNoC6niP47uvslArzN4T61u7o1KyWZT3rKeOm /oailuKGGz+cHBILuTIPmSzFFbhWY6tqvSNFLmJ8b/kUBBHtah+0jJA1Btw85FBPuVhiwe fShopmkMrqAs0RuWpF08RHsyRiZ9bI4I8vwbG3hne2HeGZL2CUdu7Ch/XnMTOMAWw1dNFL Kx0WV12dxFv17WjaXhgbDLSRjlEsr69fp3ywKdUP0csBNkAkhLqP8LYHzwrMtvVQoVfoEf 6pCcl/342dqZSj2i3dlajlc6dPCxS/LFzk/mAjKCqRzFm18f6XzMv/jVhGWecg== 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 4ZRpWt4hT0zY8X; Tue, 01 Apr 2025 13: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 531DKAuU054392; Tue, 1 Apr 2025 13: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 531DKAF3054383; Tue, 1 Apr 2025 13:20:10 GMT (envelope-from git) Date: Tue, 1 Apr 2025 13:20:10 GMT Message-Id: <202504011320.531DKAF3054383@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: e431b38b0f77 - stable/14 - snd_hda: Patch Framework 16 AMD List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e431b38b0f77a6deff9f6f214fe520b689c38bd2 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=e431b38b0f77a6deff9f6f214fe520b689c38bd2 commit e431b38b0f77a6deff9f6f214fe520b689c38bd2 Author: Christos Margiolis AuthorDate: 2025-03-25 19:13:49 +0000 Commit: Christos Margiolis CommitDate: 2025-04-01 13:20:05 +0000 snd_hda: Patch Framework 16 AMD Reported by: jrm Tested by: jrm Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: jrm Differential Revision: https://reviews.freebsd.org/D49416 (cherry picked from commit 2f1f523a45fb7f9fddd36a3402edbf7b111996c3) --- sys/dev/sound/pci/hda/hdaa_patches.c | 14 ++++++++++++++ sys/dev/sound/pci/hda/hdac.h | 1 + 2 files changed, 15 insertions(+) diff --git a/sys/dev/sound/pci/hda/hdaa_patches.c b/sys/dev/sound/pci/hda/hdaa_patches.c index 8ad1c845c254..233ba1ae8d13 100644 --- a/sys/dev/sound/pci/hda/hdaa_patches.c +++ b/sys/dev/sound/pci/hda/hdaa_patches.c @@ -340,6 +340,20 @@ hdac_pin_patch(struct hdaa_widget *w) patch_str = "as=3 seq=15 color=Black loc=Left"; break; } + } else if (id == HDA_CODEC_ALC295 && + subid == FRAMEWORK_LAPTOP_0005_SUBVENDOR) { + switch (nid) { + case 20: + /* + * This pin is a duplicate of pin 23 (both as=1 seq=0), + * which ends up in the driver disabling the + * association altogether. Since sound quality from pin + * 23 seems to be better, configure this one as a back + * speaker. + */ + patch_str = "as=1 seq=2"; + break; + } } else if (id == HDA_CODEC_ALC295 && subid == FRAMEWORK_LAPTOP_0006_SUBVENDOR) { switch (nid) { diff --git a/sys/dev/sound/pci/hda/hdac.h b/sys/dev/sound/pci/hda/hdac.h index 9b11dcba32a8..cb383d3be498 100644 --- a/sys/dev/sound/pci/hda/hdac.h +++ b/sys/dev/sound/pci/hda/hdac.h @@ -530,6 +530,7 @@ #define FRAMEWORK_LAPTOP_0001_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0001) #define FRAMEWORK_LAPTOP_0002_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0002) #define FRAMEWORK_LAPTOP_0003_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0003) +#define FRAMEWORK_LAPTOP_0005_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0005) #define FRAMEWORK_LAPTOP_0006_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0006) /* All codecs you can eat... */ From nobody Tue Apr 1 13:30:06 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRplL6k5Cz5rXLN; Tue, 01 Apr 2025 13:30: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 4ZRplL5PjSz3Sw2; Tue, 01 Apr 2025 13:30:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743514206; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Hn+ome3yCLSItvPlTRRZbqs9gOJ4hXDNStkVc9mvnIk=; b=bRbOfkb17axcwTk7IS/PvM7Tz5BZl9WSRiPJsDlQw+6Ln0SPKCj70JCptIAbFDC0is0xah PQn8wlkYte4RfCfIw73c1PubOoMdPJ7NiakCOI3TB6bRDjgT+zo4X3zzLl+3QBDJwXSP3q avftKXC44wSIijqXYTIGJYWt+0sLXQLEa9cFEVwmpxacXOwQA/7nGy0d35isti9sH7mwpX e8KVpfS0GaZFHjnZLG9ajDE0fTQm3tlO+k+oMEeOa+dMfEF8Z2c+EpmwnxLlys1ilNu5dF uKivqIyFx93vmp8B60CDa+DTZDwLqJOT8If9dO5e1fxapQHw3Zo9QK9ONv/9wg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743514206; a=rsa-sha256; cv=none; b=LgmX0ccXfCCFP4wNIutaW7S3Dd79BYRg0pO9vo+RQhhJycJLW94J47YB02bJqXEp6QfEAB Nqm52sRrC7hPXXBv135F6c1tJwxlX6suIf9sBQbz5aYR1xAc0dwOwEYDPoMpQUzYuwuIz8 VV4GhgOM2gvOSLh0U99VsAYCSxLuZslwWv0LQfxMoG087A6LrY+XMkkbNjqdk1G1+tpWWT /BUbqSR4YQXsufSrgJ7u2L0JZoBqQeal1CJsLWsmhYFCARo/+pDhsGzPB3gV4GLh90U3y3 DLGgJCedQAYr0ZCO/KsheZ0lLWq7KhETg5mFeOOD2ozcoANa74z7o2LgExlf2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743514206; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Hn+ome3yCLSItvPlTRRZbqs9gOJ4hXDNStkVc9mvnIk=; b=lTPTrJSxRbTSZExHZYzDOw87NH8UD6mgmXMmpdA7T8btSqHNJ5Zd9XZua1eG6ngrdC0lu/ 9TDKfxdsh9DagN6HQyuaId1hqc3ByjZk8JXHghne4+GOna/MiKeRH9QoCwX0wI56wDxTyd dRhYw3ohqPoyFIw6MblTXUVroB1jIJkIG0yCob5YosctbrYjP34DBnuCLswFZ4RXPst8AW IgHKAu0bTJeAf8s3eClf8+cFQpSd4qciejnzYiSBxq0tLqIETwgUhIymVoKVBvVW9VuHrc 1uUuvWhdGFWhfvmQ085fCY7T3Cc0uA2TiXC0/9jEMlmUQ6ktECMT8lH02TKcDw== 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 4ZRplL4gVpzZ2r; Tue, 01 Apr 2025 13:30: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 531DU6Sv071128; Tue, 1 Apr 2025 13:30:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531DU6QO071123; Tue, 1 Apr 2025 13:30:06 GMT (envelope-from git) Date: Tue, 1 Apr 2025 13:30:06 GMT Message-Id: <202504011330.531DU6QO071123@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 8900283fa37f - main - pkg.7: Add example for fetching package for different FreeBSD versions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8900283fa37f6555055d8af5ffa1a5a2fbe2940e Auto-Submitted: auto-generated The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=8900283fa37f6555055d8af5ffa1a5a2fbe2940e commit 8900283fa37f6555055d8af5ffa1a5a2fbe2940e Author: Christos Margiolis AuthorDate: 2025-04-01 13:29:50 +0000 Commit: Christos Margiolis CommitDate: 2025-04-01 13:29:50 +0000 pkg.7: Add example for fetching package for different FreeBSD versions MFC after: 1 week Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D49580 --- usr.sbin/pkg/pkg.7 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usr.sbin/pkg/pkg.7 b/usr.sbin/pkg/pkg.7 index 605653bbd8c6..982fd8ecaeb3 100644 --- a/usr.sbin/pkg/pkg.7 +++ b/usr.sbin/pkg/pkg.7 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 24, 2022 +.Dd March 30, 2025 .Dt PKG 7 .Os .Sh NAME @@ -313,6 +313,11 @@ Check installed packages for checksum mismatches: .Pp Check for missing dependencies: .Dl # pkg check -d -a +.Pp +Fetch a package for a different +.Fx +version, along with all its dependencies: +.Dl # pkg -o ABI=FreeBSD:15:amd64 -o IGNORE_OSVERSION=yes fetch -o destdir -d perl .Sh SEE ALSO .Xr ports 7 , .Xr pkg 8 From nobody Tue Apr 1 13:59:46 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRqPZ2l3Jz5rZDN; Tue, 01 Apr 2025 13:59: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 4ZRqPZ290Rz3gyd; Tue, 01 Apr 2025 13:59:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743515986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NIzELiZIHLCD3O1xf42gLafhTHLScgSxjbuHX77IvG8=; b=H1RWBTLvnqieJQaZocReipHY7KoWUdlDDsLd4ECuU9sGgVljQk6PFnlpk2uwBF9YW7kQmk i5UxZSZeW/eLbg68POLRm5FUPeugCkNh/ruoZeIJUY0FSePuzP016cTyC2+JuwbHxNTCgV FB4MrGk8MjnBF5/EfJq7OHt25C6pZt7yj+gAGkErj434jYA/9e0K3u5Ms5SRXKC7zFQGbC T354kHnmKAF6p1WQrrtaFCjimcRvaQatPT721GA3GOBbffYkk7H38UrECbPosKHYkjxxpi qMrJK3T1NREWpOk+kd5p0u9FPJzxt+QBvKE4RoUD7REKRUcBxppHE18p82AfSg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743515986; a=rsa-sha256; cv=none; b=EkwJ7dDets7FRsOKn9qkPfg9eJ83466Y+fnLVwVi8rCXTk0BlqgpTESxpxPuiyeRH14MaR qwt2KpTAAJ//ggiRuGPsVchJJFJMWYN/Qk3IWTuHZ5CZPoGk8ekuzPXK6pTPKKH5CLykzD wxbyw7cr6s/mXXkYhnXMcTt/sbdOV0hMLXT4gkf3H9u1hHy4rTtC06GqhdONWvzkvKWrsa MCvje1Gp+LfYTdu+PWYGLjY0q9QLo1J8Aoy2Gt//YOgVJV02iM/2Bm3CTFVqdRI0tGeTWJ kLmxtEKcEBFAMxvYt61L/BcHMnzDLcNbzqACAmePbnPxqjKLbq14bEnomTfI7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743515986; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NIzELiZIHLCD3O1xf42gLafhTHLScgSxjbuHX77IvG8=; b=DAu1hay49FdrcMzmv/O6tYC/1Y5cfMg9nWPk/whvzM0xTby3nnefaEkLIGKGqZK8dLpghO KZFbCNsPYO0TQpzzaiV6t+uOrSeXvCeLJ66BlPKJvsUCaAJzyxLzhEU+DgJ3DEinhy1ADP DhV0V1pEKitB/Cp5eKCAqR2+Alvwe9CMkVPpv94xEfzFGToIVG+M2x60edB2+UKBkjdDV/ ta1O6LLFTeWSNEPx6IcreDwG01YxuqxWB004XHWlGLGLkrEDBdNW+2qZNrTvsEX+CMtg5W kpIJnb/u9d4pzcmk84cvw5o7oLvuDFG0ocBuoBsC3wTk24AH4b//UTIsZ4cXyQ== 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 4ZRqPZ1Sg5zZtH; Tue, 01 Apr 2025 13:59: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 531Dxk24023698; Tue, 1 Apr 2025 13:59:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531DxkKu023695; Tue, 1 Apr 2025 13:59:46 GMT (envelope-from git) Date: Tue, 1 Apr 2025 13:59:46 GMT Message-Id: <202504011359.531DxkKu023695@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: 5abef29833d3 - main - fts: Stop abusing the comma operator. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5abef29833d32d257a20b61732993987dd2a6056 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=5abef29833d32d257a20b61732993987dd2a6056 commit 5abef29833d32d257a20b61732993987dd2a6056 Author: Dag-Erling Smørgrav AuthorDate: 2025-04-01 13:56:52 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-04-01 13:59:42 +0000 fts: Stop abusing the comma operator. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D49624 --- lib/libc/gen/fts.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libc/gen/fts.c b/lib/libc/gen/fts.c index 80f98a993123..0c26c91feb84 100644 --- a/lib/libc/gen/fts.c +++ b/lib/libc/gen/fts.c @@ -900,10 +900,12 @@ fts_stat(FTS *sp, FTSENT *p, int follow, int dfd) int saved_errno; const char *path; - if (dfd == -1) - path = p->fts_accpath, dfd = AT_FDCWD; - else + if (dfd == -1) { + path = p->fts_accpath; + dfd = AT_FDCWD; + } else { path = p->fts_name; + } /* If user needs stat info, stat buffer already allocated. */ sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp; From nobody Tue Apr 1 14:25:43 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRqzW2cXtz5rcDK; Tue, 01 Apr 2025 14:25: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 4ZRqzW1ptmz3pbX; Tue, 01 Apr 2025 14:25:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743517543; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W9i1oohFGaqYaZ+QDBdbmSmhkCUcLfmcZpXY0aCOgdE=; b=r50sjTIB1hkqpNhQzZgDniZSeL5Gn9zxcpUBTe6/4MzE8uM0j8XuVzVCpuO94RY7pIFLlW PMgj0n9g+MBFVCOQo4NgUc/gOJs+m9q9OaTUe5AEm5oDeaWY/K5VmuDDk2ER8ADlufCNrt XT+L0sdes+ZurshNRDUH5iFVAVK/D9dIyPTYhnbK5JHTnpIOdnKd9w79ks84gFzpwsqmxx Rg8DFJTqnU0P/8M7QQJ+8pIdxBz9KZtIg00sqEyKAqVSDH165qWob1xOkTMwmBZBcQgl9X 5qmsEiMbZG5JVgSad665YGvR1Eh9YM/DkkX1esys3WLexT2hnz94G6mjXJkHVA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743517543; a=rsa-sha256; cv=none; b=Z/+y4cEhnBKAglpQC3TZgaEuO6oeIL68bwGxGS/htltGSg+XVm9XWXOGyJMinXb54WcTxv LS+Is3QIn4tUxyYTqIg6GeDu6bwSlH2OcLJhugO25S35z+NozP2w+HLNKnxO0VAPU3pScJ 1Gbgd4YRy/iaMtBvlJR4fO1g/navtkxjQ/FF+HZCzoKrBNuSd1wW4kffebRlZSnCOCwIxU jQZaCGVNzxuH3ENcQ8992/EnzCeuRXmFWZo5YYxxQBORPsI4t3Wg5h+ahcMCm84TLHcZLW JM9jKCkeF33zlhXs2YOXuAZ744sMIKgbjoKtWwHxzydw5e8xHjNCet0tosuqqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743517543; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W9i1oohFGaqYaZ+QDBdbmSmhkCUcLfmcZpXY0aCOgdE=; b=Kys+quHFaS+UHO13fv+/jE37c4tKPs9S2aw5UluaJeEbUETEoFejW3cK8qQvfy0hLEukzu lOMso8zY6kam3X4GhsTG/XNQzNmddwgJ1QuM7T1f4AMVTI35VY/5ndqcvIfbedTNUHrsCi 3puZmPbNrdj0fB2+TCriapmjeuxJgzN0LOXeH1y56LOarVZj+ipAHFlKGcGV8LSngeBrE8 pwUMrAXdmKa+NoVPut71Dh8vTqv0+843VDEH/2I91zfsyDagpopcd8CoUrpPZASY3qbPTT tMX4X/na/YqHH1S/SBjULn/Bt/tsgbeNVWWx8vMJo4QMWASt/sqZBxYTpm7KVg== 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 4ZRqzW1P4Czbd5; Tue, 01 Apr 2025 14:25: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 531EPhZi078871; Tue, 1 Apr 2025 14:25:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EPhu4078868; Tue, 1 Apr 2025 14:25:43 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:25:43 GMT Message-Id: <202504011425.531EPhu4078868@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: 04a7134c1e92 - main - if_ovpn: fix use-after-free of mbuf List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 04a7134c1e92c7752ffdc665f99ae26db70866c0 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=04a7134c1e92c7752ffdc665f99ae26db70866c0 commit 04a7134c1e92c7752ffdc665f99ae26db70866c0 Author: Kristof Provost AuthorDate: 2025-04-01 13:19:26 +0000 Commit: Kristof Provost CommitDate: 2025-04-01 14:15:29 +0000 if_ovpn: fix use-after-free of mbuf m_unshare() can return a new mbuf pointer. We update the 'm' pointer in ovpn_udp_input(), but if we decide to pass on the packet (e.g. because it's for an unknown peer) the caller (udp_append()) continues with the old 'm' pointer, eventually resulting in a use-after-free. Re-order operations in ovpn_udp_input() so that we don't modify the 'm' pointer until we're committed to keeping the packet. PR: 283426 Test case by: takahiro.kurosawa@gmail.com MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/net/if_ovpn.c | 12 +++--- tests/sys/net/if_ovpn/if_ovpn.sh | 81 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 6 deletions(-) diff --git a/sys/net/if_ovpn.c b/sys/net/if_ovpn.c index cbcfe15dffc7..7bdbc565f4ca 100644 --- a/sys/net/if_ovpn.c +++ b/sys/net/if_ovpn.c @@ -2248,12 +2248,6 @@ ovpn_udp_input(struct mbuf *m, int off, struct inpcb *inp, M_ASSERTPKTHDR(m); - m = m_unshare(m, M_NOWAIT); - if (m == NULL) { - OVPN_COUNTER_ADD(sc, nomem_data_pkts_in, 1); - return (true); - } - OVPN_COUNTER_ADD(sc, transport_bytes_received, m->m_pkthdr.len - off); ohdrlen = sizeof(*ohdr) - sizeof(ohdr->auth_tag); @@ -2281,6 +2275,12 @@ ovpn_udp_input(struct mbuf *m, int off, struct inpcb *inp, return (false); } + m = m_unshare(m, M_NOWAIT); + if (m == NULL) { + OVPN_COUNTER_ADD(sc, nomem_data_pkts_in, 1); + return (true); + } + m = m_pullup(m, off + sizeof(*uhdr) + ohdrlen); if (m == NULL) { OVPN_RUNLOCK(sc); diff --git a/tests/sys/net/if_ovpn/if_ovpn.sh b/tests/sys/net/if_ovpn/if_ovpn.sh index ea1eed88de9e..2138e0f666ec 100644 --- a/tests/sys/net/if_ovpn/if_ovpn.sh +++ b/tests/sys/net/if_ovpn/if_ovpn.sh @@ -106,6 +106,86 @@ atf_test_case "4in4" "cleanup" ovpn_cleanup } +atf_test_case "bz283426" "cleanup" +bz283426_head() +{ + atf_set descr 'FreeBSD Bugzilla 283426' + atf_set require.user root + atf_set require.progs openvpn python3 +} + +bz283426_body() +{ + ovpn_init + + l=$(vnet_mkepair) + + vnet_mkjail a ${l}a + jexec a ifconfig ${l}a 192.0.2.1/24 up + vnet_mkjail b ${l}b + jexec b ifconfig ${l}b 192.0.2.2/24 up + + # Sanity check + atf_check -s exit:0 -o ignore jexec a ping -c 1 192.0.2.2 + + ovpn_start a " + dev ovpn0 + dev-type tun + proto udp4 + + cipher AES-256-GCM + auth SHA256 + + bind 0.0.0.0:1194 + server 198.51.100.0 255.255.255.0 + 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 192.0.2.1 + 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 + + atf_check -s exit:0 -o ignore jexec b ping -c 1 198.51.100.1 + + # Send a broadcast packet in the outer link. + echo "import socket as sk +s = sk.socket(sk.AF_INET, sk.SOCK_DGRAM) +s.setsockopt(sk.SOL_SOCKET, sk.SO_BROADCAST, 1) +s.sendto(b'x' * 1000, ('192.0.2.255', 1194))" | jexec b python3 + + atf_check -s exit:0 -o ignore jexec b ping -c 3 198.51.100.1 +} + +bz283426_cleanup() +{ + ovpn_cleanup +} + atf_test_case "4mapped" "cleanup" 4mapped_head() { @@ -1072,6 +1152,7 @@ destroy_unused_cleanup() atf_init_test_cases() { atf_add_test_case "4in4" + atf_add_test_case "bz283426" atf_add_test_case "4mapped" atf_add_test_case "6in4" atf_add_test_case "6in6" From nobody Tue Apr 1 14:39:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRrH50nFdz5rd7r; Tue, 01 Apr 2025 14:39: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 4ZRrH50CXXz3wKj; Tue, 01 Apr 2025 14:39:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NBeLtVWfrA2SnfxFXrWR+zaLJreTnqPleotyvgVtwHA=; b=fxjG1D6UhNbG48Lu3I5UOT9lUjzTIJDX3j1DBlFiRe98VSHUwNMrr4IjvKMlaQuYyfe+SU 45n/5LpanJ4BNd6e6kewyeSag97M1dqJRwEndezd2b623A9Utn5erplh84A0BCnZAzs1B7 5KqbZvXZ6NzJSFi//NWw7Kbu6aATsJHr2GzKlkkctNQ0/5xNm2iHpT0S5sqZCVf9U+Mxpn JtkK4KLD1YU8qhqH7IS8N8z2l/z4ZW2906ch2/ui/XNWNRX5yQG8luHnOZGoPATJYnKqbr 8nyHBULngpgOuCHsOImXzmDAFNomoDw9TZ7ZYTGRYAAK2DA5XwurDIoB7SgL5g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743518353; a=rsa-sha256; cv=none; b=C76+leRtAZOzWW1pGjtvaQo4GxcNWOhBVVwaTyO502dpKMxkM8ktpYMUMPsSazHrWVy0wP uDi8V6DvFI0qW7JuUE7o/hFOM7vYbvt2CVaaCUXMKnygmBFVr/+kMlQssVzSHRFoOoA8eb tSh9CuC/YwZGik4PZZheERemJ2Hb3se2ahfO2Axlc1Bdp/Lp45GAwjtUie6IvTMlxHe3rk VDZF3z+V6PMDB46j4ThGaqHS/MAU32PoQCocOVxbR8aiK5ma9qLFPmQq/8/KJ8ceNK66Ny laJnLr92HF9a2R6xUH62CdekQhZjGpP05mqiEw9Esu9m3vgOXrBxlmHwsnG4Yw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518353; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NBeLtVWfrA2SnfxFXrWR+zaLJreTnqPleotyvgVtwHA=; b=dORewgHOKQgFTz52NCBZtoCsrVfLBQy66VCrnCcnNmf1DRwjqUCPSN+PSBPuopkv1wvynk 3Mox9BVIrECS/r0G1Oh2Tm9S0WYRxUNMJNL1EM95WX5qd+Uz3KYAoThd66XQ9j+ZtS3Dps J1U2HwzE7rQT17AxQUvRwebZ1qFUBHnTzqikfpdeTBAQWdhaa7n53+u+eHy0RrD5n0Vi4q esQ7aAAlMvvFh23qzMeVzjukJ+aW8J2I7IylWI0i+2HKkym2zWqQ9WWHIB5P7ymcz7PXMC xgqc4lzdERvpaPj1oARyMRU+fEKnBoLuY+fWRy7QuhUY5Hy92bdDynR1ixLheA== 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 4ZRrH46dGSzbK6; Tue, 01 Apr 2025 14:39: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 531EdCru098275; Tue, 1 Apr 2025 14:39:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EdCPG098272; Tue, 1 Apr 2025 14:39:12 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:39:12 GMT Message-Id: <202504011439.531EdCPG098272@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: a12a9c6c5976 - main - LinuxKPI: be more verbose on _bus_dmamap_load_phys failures if debug is on List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a12a9c6c59764b876f06355f9f857e0018188d91 Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=a12a9c6c59764b876f06355f9f857e0018188d91 commit a12a9c6c59764b876f06355f9f857e0018188d91 Author: Bjoern A. Zeeb AuthorDate: 2025-03-29 14:31:18 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-01 14:37:28 +0000 LinuxKPI: be more verbose on _bus_dmamap_load_phys failures if debug is on With the [k]malloc adjustments in switching skbuff from using a tunable and conditional contigmalloc with boundries to using __kmalloc as allocator should just work. The allocations are now physically contiguous and nseg=1 should be fine even if we have to bounce. The problem now coming back is that busdma bounce code cannot deal with larger contiguous nseg=1 allocations. I originally found that on arm64 more than two years ago but I am also seeing it for amd64 now. Improve the debugging beyond the dump_stack() call and print the busdma error (so we know if it is EFBIG or else), print the physical address so we can see better if we should bounce and print the length so we have an idea on what lengths we are failing. D45813 has some observations and rtw88 seems to be a good driver to test with. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: dumbbell Differential Revision: https://reviews.freebsd.org/D49569 --- sys/compat/linuxkpi/common/src/linux_pci.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index a9942a657dce..fa5e3c71fad0 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -1471,14 +1471,19 @@ linux_dma_map_phys_common(struct device *dev, vm_paddr_t phys, size_t len, } nseg = -1; - if (_bus_dmamap_load_phys(obj->dmat, obj->dmamap, phys, len, - BUS_DMA_NOWAIT, &seg, &nseg) != 0) { + error = _bus_dmamap_load_phys(obj->dmat, obj->dmamap, phys, len, + BUS_DMA_NOWAIT, &seg, &nseg); + if (error != 0) { bus_dmamap_destroy(obj->dmat, obj->dmamap); DMA_PRIV_UNLOCK(priv); uma_zfree(linux_dma_obj_zone, obj); counter_u64_add(lkpi_pci_nseg1_fail, 1); - if (linuxkpi_debug) + if (linuxkpi_debug) { + device_printf(dev->bsddev, "%s: _bus_dmamap_load_phys " + "error %d, phys %#018jx len %zu\n", __func__, + error, (uintmax_t)phys, len); dump_stack(); + } return (0); } From nobody Tue Apr 1 14:41:38 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRrKv0kMpz5rd1b; Tue, 01 Apr 2025 14:41: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 4ZRrKt6SVHz3xRc; Tue, 01 Apr 2025 14:41:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H+wvBnk4jjjd3KtcoGzCIytSoNtrL3EEHdssStcKd8U=; b=fPA9dBVYchz3N1NHOcb6dJREe33FC6OnpFse/NEpPOotyD9MjpsDpZikVMbHN+4owNpc51 TTm8sA91Fj5LnsiiT8GU7oK5tRn9No1u2vDG9ZEbyAuLHDTxml+C3ceREf37iVEXw5XRDh +cYVcYqjhfVuo0Za+zzR7F5DGrg3iWfBxUeYzDvSgzktOPmZrstZ7yFX5bphN7g2JY/d1M TVv86b77Hcc4sOiLblhpVZ+/SyvbwMpvbGbskc8HY27d/Gf6cAy5igpZtVy3Oi89r+gJ08 bBurg6WqexB81mVSWIVO9HwGvMeuppkUSoWof6qN0bsBnfTgdIf/Ca0igiKmPQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743518498; a=rsa-sha256; cv=none; b=N7KL+Qv9qh5Ooy3U6MYJ99p76Gf2jL0HJQ6/4St1xaHYRPcVQx+JYbLsmVlyp/FlMJ7PCl S3bmITz075QJPfYi6abmc8DGzNt/bLubg95kxjjvYsOlLCpG4zHewWs2wA3pC5CgOmN669 t2Xv6P3YfkUaUVpQfRUpYqAnK4xjzd7PO6f5xxz3ICTfO4GfZsdjwDxUIPnOtccpMZgsFp mNaYVF5mxCS0x1PbDjRJ/MM55v/tQ60IaUUzPJIcdfbYKIlfB5yOyUyfEuAOPbQ8E1j8SL WSm1hBRVJtoHx3qYmc+9KI1n8RoGpKtNhuUOEbF21+UMbffaz016PUpYj58XeA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743518498; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H+wvBnk4jjjd3KtcoGzCIytSoNtrL3EEHdssStcKd8U=; b=Tejhi51f1MxCbx+61I3aT6Ls5WhlaBZpDqHc2xoPCLx1oXiNkwo14pisxVBSlVl4o+bsjG VkHp7JWB3VasmVNmsIvEdbVmKWWtABlrNTbZjBhQsaJTRQkXk9iKWeoEJRjmaazdklDTX7 YqYy/PbtZSiwlTHPnTKonMygPOcA6+hant5x3p43oHdxC8biQ9OdJ+Jgh4gsg4nO00SyRd NtdPmKhBGqh5heEyiIRfPp3eu3AQddcFdDwdtc0MFxiYicBEuSPPW/5FkBJw//DSoXR+g3 5Lr+1MS+e1JaEt18qbyC7Oh89HJswEoRma0AQ6uRi/dMUlO2qlFlJLNJkQ9Rng== 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 4ZRrKt5vbrzbfD; Tue, 01 Apr 2025 14:41: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 531EfcGG009649; Tue, 1 Apr 2025 14:41:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531EfcBO009646; Tue, 1 Apr 2025 14:41:38 GMT (envelope-from git) Date: Tue, 1 Apr 2025 14:41:38 GMT Message-Id: <202504011441.531EfcBO009646@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 19efc9e6320a - main - LinuxKPi: lkpi___kmalloc change a < into <= for proper boundry check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 19efc9e6320a30e230b0b40d5bae90142ec13aeb Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=19efc9e6320a30e230b0b40d5bae90142ec13aeb commit 19efc9e6320a30e230b0b40d5bae90142ec13aeb Author: Bjoern A. Zeeb AuthorDate: 2025-03-29 14:30:26 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-01 14:40:25 +0000 LinuxKPi: lkpi___kmalloc change a < into <= for proper boundry check lkpi___kmalloc() would use contigmalloc if the requested size is exactly PAGE_SIZE. But we can still fullfill this request from malloc() without losing the guarantee of physical contiguous memory. Sponsored by: The FreeBSD Foundation Reported by: emaste (in D46656) Fixes: 19df0c5abcb9d MFC after: 3 days Reviewed by: dumbbell, emaste Differential Revision: https://reviews.freebsd.org/D49570 --- sys/compat/linuxkpi/common/src/linux_slab.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/src/linux_slab.c b/sys/compat/linuxkpi/common/src/linux_slab.c index 5be4c1ec674c..bc780ab3f609 100644 --- a/sys/compat/linuxkpi/common/src/linux_slab.c +++ b/sys/compat/linuxkpi/common/src/linux_slab.c @@ -215,7 +215,7 @@ lkpi___kmalloc(size_t size, gfp_t flags) /* sizeof(struct llist_node) is used for kfree_async(). */ _s = MAX(size, sizeof(struct llist_node)); - if (_s < PAGE_SIZE) + if (_s <= PAGE_SIZE) return (malloc(_s, M_KMALLOC, linux_check_m_flags(flags))); else return (contigmalloc(_s, M_KMALLOC, linux_check_m_flags(flags), From nobody Tue Apr 1 16:21:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRtY14ykfz5rlhg; Tue, 01 Apr 2025 16:21:25 +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 4ZRtY118l9z3dnd; Tue, 01 Apr 2025 16:21:25 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743524485; 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=OS6O3QAvaXYnh+UM0ilVGsqmYZtgabL1m8cb0WhQqw0=; b=cjUKdsNG9OC0J5B3q3ZbqU3Q/LCD9dn9nyuRL568M0DezYorGJRrVauZ27BFTUtSwE8lNr KbESNE620NbHPJXh7AKmZmgzMvz4eLkO+wZxaMVBHesBwB2DASLZsrDqBKHBDG/gWjPf6G a1W1G5ckZnDp90Rp9mTFPbY1uJUu/9YR5hqTc8kTE9kwsDTPnggJ9nB1PSp/uGlYxHr5ov RllyGr/NNRnxLDslGIHq3UH+wVgCi2VgIWM8OI2BXN81ceaRzkIyNJ8XBHPTzTmIU1anXN 63+fTeGJxkp16AsHlmDDDX1Jhkwa15JcwiauumZSfbJSZ/mte1PX7kKoRX5x3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743524485; a=rsa-sha256; cv=none; b=oOhcrtGfEBymE2q74VpBkzhmZ3+Hu6Euf2kInR2H5icAIWo6yFNA0kQaS/NvyAUgfd7D4b dHg3RP9TqIGQK6AZjvLGDAgFcvOd2bq9G/g18tlIpwdRTuS/H0rkloe4LYTLWsv1yC10hb kLxEJZrFJFxln5KUfoTJuFpnc5ggDUs4xWU+cYs6oxzFcewoZa8h3rlSYepWf6wH7MEmKB uQCLebwfKSIVLdlcBEbXKdfYmRD9I3IL2iZtclYFAUU316i1BG9JNhtg/Ottbg8c8aF8f2 CLU/8FphG1cJE1uAV1lqxFSuTS+zktgqWVzhis9AtwaS4D4DgN/mYQJzQb5RvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743524485; 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=OS6O3QAvaXYnh+UM0ilVGsqmYZtgabL1m8cb0WhQqw0=; b=SYxDcKZSetvS3MW+W2WzKU+tj/56Wz2sh4Um5TfZRM4kko9ICcJRn0mGpqzoDERTTH8t15 RiavwMxw2yZBFtaDHJN2Z3l2USQlt/X/pOx2Rm0Jz7/xJgwjxxV6RCd6d5/1aId7YEUDVr JjtRRvaNJs8RIurnIlc/EIVmwmI+xAcjJh9XaI6HrWfsz4c+FmGnkuJ599KvwUq9qr7VKw G17LTy6sMpZpjJ/dPxlywJLMsTLPylhP0nuq7/akdTBTTtQoD/ZstFS4N342Jzk2MlBGFL bZIap10fwni6/EA/XO3WoahncIoYqgxB9Kw+J83mtU34C3uOhjjvBzFb0POLhg== Received: from [IPV6:2a05:b400:110:12fe::54] (user-12fe-54.svr-vpn-1.vpn.cl.cam.ac.uk [IPv6:2a05:b400:110:12fe::54]) (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 4ZRtXz6J5vzGBY; Tue, 01 Apr 2025 16:21:23 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Tue, 1 Apr 2025 12:21:16 -0400 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 0e33c2e6df7a - main - pci: Only re-route IRQs based on firmware on x86 Content-Language: en-US To: Jessica Clarke , Colin Percival Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" References: <202503292018.52TKI7va048377@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/31/25 14:14, Jessica Clarke wrote: > On 29 Mar 2025, at 20:18, Colin Percival wrote: >> >> The branch main has been updated by cperciva: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> >> commit 0e33c2e6df7a5de65db40c7cc0fc97f66da28ccd >> Author: Colin Percival >> AuthorDate: 2025-03-28 18:07:01 +0000 >> Commit: Colin Percival >> CommitDate: 2025-03-29 20:17:29 +0000 >> >> pci: Only re-route IRQs based on firmware on x86 >> >> There is a (very historical) call to pci_assign_interrupt for the >> purpose of routing IRQs which may have been set up wrong by x86 BIOS >> or firmware. On non-x86 systems, this is unnecessary; and on INTRNG >> systems it results in a (synthetic) IRQ leak and ultimately a kernel >> panic after many hotplug/unplug cycles. > > This is in fact incorrect. Whilst there may well be a leak that needs > fixing, the rerouting is absolutely needed on non-x86 platforms. See > 5884fab46153dee52bda660bcabca95c3cc97f44 and > 7de649170fd804668da78f005c7966941b402106 for some of the history behind > this. As a result of this commit the problem described in the second > commit is reintroduced. Hmm, this is my bad as I should have remembered those. However, as the second commit log alludes to, INTRng does not really match the design of what is intended here and what the PCI bus currently expects. The intr_map[] entry should probably only be allocated when the INTx IRQ is allocated via bus_alloc_resource() with a rid of 0, not when the IRQ is routed. In particular, there is no "unroute" callback which is where the leak comes from. The intention of routing is to confirm which pin on a PIC a PCI INTx line is connected to. It is not to actually allocate the interrupt as the routing may never get used if either MSI is used instead or if no driver attaches. The 0x20-0x23 you mention in the second commit log should probably be the IRQ value used instead of a dynamically allocated value, and the dynamically allocated value should be allocated as a result of bus_alloc_resource and stored internally. x86 manages to do this today with the mapping of (local APIC, IDT vector) tuples not encoded in the IRQ values. -- John Baldwin From nobody Tue Apr 1 17:09:59 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRvd40cZ6z5rpvP; Tue, 01 Apr 2025 17:10: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 4ZRvd34Dxyz41Jq; Tue, 01 Apr 2025 17: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=1743527399; h=from:from:reply-to:subject:subject: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+1eJLH7F648NLL9vVZ/Dn9X1XhYtwHWJFF8t/+5+Ys=; b=oOiWYrbHt+O+A1/tXc2DkwTU4Wreyiv3qpObWAPeSEIJeJh8DZyyZi6laKvZzHPgFhWRvo 7DnED3lU9VUpuP1XUNGeg3Xsocv+OxMgfiObe1CvtqAcY6b4ws++E6V5T8Dbw8o+xh/2nh 3uPz1RQDWOk0g5ojda6864LIkeFOli+KXmVzPJ8SzgKhCsKUCDBM4HjC6PRvCRqznyYRWN +3Q4n7L8evg/zwpyw/exTIDgaUHqGe22hxc6OYdgPwBI0cdDWTv9cXnyfA2KRMy6P+LX4e BXSnExsWaKzpeqsi0THzny45nc0JMwQIrOUSBr7DUKiZQ7gZDOPjtIm62G2P/A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743527399; a=rsa-sha256; cv=none; b=gTeAGCcB/lOc311KMDnUDMwB5QafJr7bTTAeGBigcLC2pWGP3RWC8wiRlm4mYAnxzAgpyK Tc6K5TdxnVPOBhKLBrVKEfkPs461qyxmBCxhUD7aOs0+Mr5JmkiF2jbUZwvUPL6ulII/nC l28bCGNaigTdmvCTNlwMgBn7peiFxLCCdVjB5kvRLdt3VnUqntmFBI0GzIq15eI1r6cO4Z EwvbYd84YcQ7xuqZhOhbUIZAGD3Wk1/HLJ4rbEy4YOwDrG6fXXYDf5HDrFaJeSe0pj6Fkp xq6xzSbdl2ARK7sLUYJAcaNgoNuXQuiZEi6EW50xTOm9Wy5YBEzj0kM0kmOrog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743527399; h=from:from:reply-to:subject:subject: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+1eJLH7F648NLL9vVZ/Dn9X1XhYtwHWJFF8t/+5+Ys=; b=HTwZVZG3rA3D/8rrcRrZV2rEF6ofCTPoQ0sutxut+N237Mjqa7FfPQrHqSD/7g6YRJEjJ1 IOTqM91DkCuSOlpUwK+pksyz8n1bAQTh5mBrBRb9o7/MkVMLH9OYzxzRdjeh4Zga2oz23s zx8uNxmpIn+N5gqnvSxMCZsM+3dvmKrQKNBbXJzvr8IcFAVhwDE3/TI1ne7FJMM9MaTT1H BAEmaxAWIoz6fi7cs8A1sTilTB6fGUapw896BFVojpuf21iO2glZhTr+a3yiiyjRnOsgro 1nvWYsqixqdr3jpnhqBLfK64outl+7Pc4hEATXAQgTN7kwtuB/lGOnyMuO1VAg== 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 4ZRvd339dNzg0f; Tue, 01 Apr 2025 17: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 531H9xw0077004; Tue, 1 Apr 2025 17: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 531H9x5t077001; Tue, 1 Apr 2025 17:09:59 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:09:59 GMT Message-Id: <202504011709.531H9x5t077001@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Igor Ostapenko Subject: git: ea1e4a7dd9bc - main - tests.7: Announce allow_network_access test suite conf variable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: igoro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 Auto-Submitted: auto-generated The branch main has been updated by igoro: URL: https://cgit.FreeBSD.org/src/commit/?id=ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 commit ea1e4a7dd9bcf1f46f55e4cc2dac6fa273bd3358 Author: Igor Ostapenko AuthorDate: 2025-04-01 17:08:48 +0000 Commit: Igor Ostapenko CommitDate: 2025-04-01 17:08:48 +0000 tests.7: Announce allow_network_access test suite conf variable Reviewed by: olivier Differential Revision: https://reviews.freebsd.org/D49594 --- share/man/man7/tests.7 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/share/man/man7/tests.7 b/share/man/man7/tests.7 index 1fbaad7d42a0..3cca7bdb1b91 100644 --- a/share/man/man7/tests.7 +++ b/share/man/man7/tests.7 @@ -171,6 +171,9 @@ Enables tests that change globally significant .Xr sysctl 8 variables. The tests will undo any changes in their cleanup phases. +.It allow_network_access +Enables tests that need to access the network the test host is connected to. +Such tests may require properly configured Internet access. .It disks Must be set to a space delimited list of disk device nodes. Tests that need destructive access to disks must use these devices. From nobody Tue Apr 1 17:46:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQp3TnSz5rsdW; Tue, 01 Apr 2025 17:46: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 4ZRwQp0mbPz3KhS; Tue, 01 Apr 2025 17:46:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pSODX4SI2yCjo79YrR7l+MvGIJQp+rpck4Uy6Da87H8=; b=jCVaEPTqPOZHcZaib7ocN6xwj9sZVBDoDRXoynaPO7JWf/S9THirVOhgqn/ywiFbZTaPR3 7HEiaYDizHKMf8RPOaa69436lVhWWlg2eyHeuWXTxnVQ7u4R5XzgsoE2SfrmxW8bF6lda1 wy2VKJb+FI/Il7DdbESuFVyIpfNCZF1dSrLACm4tYiszh+MrYn4CdNwqxxN2+g10CcDh1q tKSPrk1r2yLeQSQn2/ecQqIB43iYStVZvXVyqsNItF4hRBLd9bhGoNpFr+k/za7WLKgj86 u8Xa1uSDxFGeRT+iT1jymQD9nPeWdS9vWltJ7l8s28sRO6jgdhEmQjkt6xGT8g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529570; a=rsa-sha256; cv=none; b=P2Xi/xcjpPZbjvc4Zs/HYoJSKxov7hhwQHmQJ21YGrjFvcBLYoGCMODIcP32fWxhkuXseY 6ko65WuxH1A45VopDMcFArRsVpsHOq5rfe2KM8zsLOBWjOhyGrqa43YEur0MlzkrUSexJx iRTMapH/CNlvQJQxnZ4r52A5XepiQoeJsX1b7AI40IPNvHix0WDZYY74svc3PiPnhdYytx OKA1sS7WD+jFA2Q6B2mxTtzRt3sWkFLUdUZscCueddhZm1fqiNnajvISc/ylNxudpW6nWU Eg18X39/8zFjVzZ8xQp3G52ui3tNa60FWnI5e+PFxEbG2LDnNvIZ39+9FE5aoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pSODX4SI2yCjo79YrR7l+MvGIJQp+rpck4Uy6Da87H8=; b=ibi5VgMU8iAZZVA5/bo7lQUL2NRo1+4rxq6Ifrx66ouol+SzoAgiHih8hyGrm11X6W2hdj I8e1XmbyjaslAwvzlkaTKbAYTFMDzI80rxZlaBxYhpGl0tgjpf2fU6Ho7bzCCko5y6jerg QIYFcRuZ7OKdXdojZw60QKKLptzLmx+QvVQvwkyPjt+O4WF6gSJlwVBNzx0WdzEJGvRXZr uzzng8EFEuFb1L5CZknyMYVnafhB2k3q1n7T3RSi/8gEERI4MZCHjCxzXKli8YTzqxvQz5 IeLoESauvbqozM9E4IwzKKcODxWPegZuAHgXFLLiKjjV98IWKNtRqC4Gj9ZcnQ== 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 4ZRwQp02jCzh3C; Tue, 01 Apr 2025 17:46: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 531Hk9DF050098; Tue, 1 Apr 2025 17:46:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531Hk9fG050095; Tue, 1 Apr 2025 17:46:09 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:09 GMT Message-Id: <202504011746.531Hk9fG050095@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 3af851edd0b9 - stable/14 - acpica: Extract _OSC parsing to a common file List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3af851edd0b986eea6f13f09e6960fe075322028 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=3af851edd0b986eea6f13f09e6960fe075322028 commit 3af851edd0b986eea6f13f09e6960fe075322028 Author: Andrew Turner AuthorDate: 2024-12-12 16:29:45 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:57 +0000 acpica: Extract _OSC parsing to a common file This will be used by pci_host_generic_acpi.c so needs to be in a common location. Reviewed by: imp, jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48044 (cherry picked from commit ba1904937d9ae0539e39001467a1519b17177118) --- sys/dev/acpica/acpi_pcib.c | 59 ++++++++++++++++++++++++++++++++++++++++ sys/dev/acpica/acpi_pcib_acpi.c | 60 ++--------------------------------------- sys/dev/acpica/acpi_pcibvar.h | 1 + 3 files changed, 62 insertions(+), 58 deletions(-) diff --git a/sys/dev/acpica/acpi_pcib.c b/sys/dev/acpica/acpi_pcib.c index b16457ec853d..dfb4f143d5c4 100644 --- a/sys/dev/acpica/acpi_pcib.c +++ b/sys/dev/acpica/acpi_pcib.c @@ -38,6 +38,7 @@ #include #include +#include #include #include "pcib_if.h" @@ -277,3 +278,61 @@ acpi_pcib_get_cpus(device_t pcib, device_t dev, enum cpu_sets op, return (bus_get_cpus(pcib, op, setsize, cpuset)); } + +int +acpi_pcib_osc(device_t pcib, uint32_t *ap_osc_ctl, uint32_t osc_ctl) +{ + ACPI_STATUS status; + ACPI_HANDLE handle; + uint32_t cap_set[3]; + + static uint8_t pci_host_bridge_uuid[ACPI_UUID_LENGTH] = { + 0x5b, 0x4d, 0xdb, 0x33, 0xf7, 0x1f, 0x1c, 0x40, + 0x96, 0x57, 0x74, 0x41, 0xc0, 0x3d, 0xd7, 0x66 + }; + + /* + * Don't invoke _OSC if a control is already granted. + * However, always invoke _OSC during attach when 0 is passed. + */ + if (osc_ctl != 0 && (*ap_osc_ctl & osc_ctl) == osc_ctl) + return (0); + + /* Support Field: Extended PCI Config Space, PCI Segment Groups, MSI */ + cap_set[PCI_OSC_SUPPORT] = PCIM_OSC_SUPPORT_EXT_PCI_CONF | + PCIM_OSC_SUPPORT_SEG_GROUP | PCIM_OSC_SUPPORT_MSI; + /* Active State Power Management, Clock Power Management Capability */ + if (pci_enable_aspm) + cap_set[PCI_OSC_SUPPORT] |= PCIM_OSC_SUPPORT_ASPM | + PCIM_OSC_SUPPORT_CPMC; + + /* Control Field */ + cap_set[PCI_OSC_CTL] = *ap_osc_ctl | osc_ctl; + + handle = acpi_get_handle(pcib); + status = acpi_EvaluateOSC(handle, pci_host_bridge_uuid, 1, + nitems(cap_set), cap_set, cap_set, false); + if (ACPI_FAILURE(status)) { + if (status == AE_NOT_FOUND) { + *ap_osc_ctl |= osc_ctl; + return (0); + } + device_printf(pcib, "_OSC failed: %s\n", + AcpiFormatException(status)); + return (EIO); + } + + /* + * _OSC may return an error in the status word, but will + * update the control mask always. _OSC should not revoke + * previously-granted controls. + */ + if ((cap_set[PCI_OSC_CTL] & *ap_osc_ctl) != *ap_osc_ctl) + device_printf(pcib, "_OSC revoked %#x\n", + (cap_set[PCI_OSC_CTL] & *ap_osc_ctl) ^ *ap_osc_ctl); + *ap_osc_ctl = cap_set[PCI_OSC_CTL]; + if ((*ap_osc_ctl & osc_ctl) != osc_ctl) + return (EIO); + + return (0); +} diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c index 451a8d8b736d..c0274e84fdeb 100644 --- a/sys/dev/acpica/acpi_pcib_acpi.c +++ b/sys/dev/acpica/acpi_pcib_acpi.c @@ -311,62 +311,6 @@ get_decoded_bus_range(struct acpi_hpcib_softc *sc, rman_res_t *startp, } #endif -static int -acpi_pcib_osc(struct acpi_hpcib_softc *sc, uint32_t osc_ctl) -{ - ACPI_STATUS status; - uint32_t cap_set[3]; - - static uint8_t pci_host_bridge_uuid[ACPI_UUID_LENGTH] = { - 0x5b, 0x4d, 0xdb, 0x33, 0xf7, 0x1f, 0x1c, 0x40, - 0x96, 0x57, 0x74, 0x41, 0xc0, 0x3d, 0xd7, 0x66 - }; - - /* - * Don't invoke _OSC if a control is already granted. - * However, always invoke _OSC during attach when 0 is passed. - */ - if (osc_ctl != 0 && (sc->ap_osc_ctl & osc_ctl) == osc_ctl) - return (0); - - /* Support Field: Extended PCI Config Space, PCI Segment Groups, MSI */ - cap_set[PCI_OSC_SUPPORT] = PCIM_OSC_SUPPORT_EXT_PCI_CONF | - PCIM_OSC_SUPPORT_SEG_GROUP | PCIM_OSC_SUPPORT_MSI; - /* Active State Power Management, Clock Power Management Capability */ - if (pci_enable_aspm) - cap_set[PCI_OSC_SUPPORT] |= PCIM_OSC_SUPPORT_ASPM | - PCIM_OSC_SUPPORT_CPMC; - - /* Control Field */ - cap_set[PCI_OSC_CTL] = sc->ap_osc_ctl | osc_ctl; - - status = acpi_EvaluateOSC(sc->ap_handle, pci_host_bridge_uuid, 1, - nitems(cap_set), cap_set, cap_set, false); - if (ACPI_FAILURE(status)) { - if (status == AE_NOT_FOUND) { - sc->ap_osc_ctl |= osc_ctl; - return (0); - } - device_printf(sc->ap_dev, "_OSC failed: %s\n", - AcpiFormatException(status)); - return (EIO); - } - - /* - * _OSC may return an error in the status word, but will - * update the control mask always. _OSC should not revoke - * previously-granted controls. - */ - if ((cap_set[PCI_OSC_CTL] & sc->ap_osc_ctl) != sc->ap_osc_ctl) - device_printf(sc->ap_dev, "_OSC revoked %#x\n", - (cap_set[PCI_OSC_CTL] & sc->ap_osc_ctl) ^ sc->ap_osc_ctl); - sc->ap_osc_ctl = cap_set[PCI_OSC_CTL]; - if ((sc->ap_osc_ctl & osc_ctl) != osc_ctl) - return (EIO); - - return (0); -} - static int acpi_pcib_acpi_attach(device_t dev) { @@ -394,7 +338,7 @@ acpi_pcib_acpi_attach(device_t dev) if (!acpi_DeviceIsPresent(dev)) return (ENXIO); - acpi_pcib_osc(sc, 0); + acpi_pcib_osc(dev, &sc->ap_osc_ctl, 0); /* * Get our segment number by evaluating _SEG. @@ -819,7 +763,7 @@ acpi_pcib_request_feature(device_t pcib, device_t dev, enum pci_feature feature) return (EINVAL); } - return (acpi_pcib_osc(sc, osc_ctl)); + return (acpi_pcib_osc(dev, &sc->ap_osc_ctl, osc_ctl)); } static bus_dma_tag_t diff --git a/sys/dev/acpica/acpi_pcibvar.h b/sys/dev/acpica/acpi_pcibvar.h index 2b75c276f9d1..c763eeea1941 100644 --- a/sys/dev/acpica/acpi_pcibvar.h +++ b/sys/dev/acpica/acpi_pcibvar.h @@ -40,6 +40,7 @@ int acpi_pcib_route_interrupt(device_t pcib, device_t dev, int pin, ACPI_BUFFER *prtbuf); int acpi_pcib_power_for_sleep(device_t pcib, device_t dev, int *pstate); +int acpi_pcib_osc(device_t pcib, uint32_t *ap_osc_ctl, uint32_t osc_ctl); #endif /* _KERNEL */ From nobody Tue Apr 1 17:46:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQq2QlMz5rsk2; Tue, 01 Apr 2025 17:46: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 4ZRwQq0TBTz3L0l; Tue, 01 Apr 2025 17:46:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529571; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1Xw9jURhhwzIYZdkOG5SKYY2XMC809JO4L1jYpq9+8M=; b=T3pgxlr8STwIaH6FGQJhKhDBqN5g3oUYXlpSWp9izGxcwK1CrbOJpoNRPIprEmQg7Vm0PY IgZlwdQWRLzJh0OJ7OM6YMwFuIXajIpU7/ZxMQTQG0eDaTnAbnuKsFXmqOPlewNrPQjPc9 n0QLutw+5MTU30X3UgyUDvMv1tjyD905sCeWq2DqeGfDYZuygoabkq2QyZENQIqcs1LWIL gZn/uR5OgfFKyht+5AjNfP/cwkfAaHhj+u36+ouBwPdso9bh1/sQMSyZ8Mu+zM+zNsD1Di JRwHD3IKBDB/dTfsXGefO7cWjEBgYVuBC2apqvRYLvXbaiOwdj3xczS8ksz7Lg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529571; a=rsa-sha256; cv=none; b=aRKggAHBJDmlKh2JW/R3j0Vyet22MlTeUxDQ7C0/HVFpGkM+9antuZoUSv1W79+tcFOkkw 63u7rTV0RFDLFtRpwdGAIJpncKo/2TZWLvZMWqhPHKrg++Z7QrkiPNKIduXogL0Yhi68zu AAWh1NovjP01P7QoZ2D+C1NNEq1fvmNS5OhtMz6P0mTWmunuTXkDli38HBp3ubYEw9PEvv vzYeWVzxOjWuCSpYEdo0xy7ANA0c3jBWAXMJmv3Cu2C8/hKn/RCQ7oFSTeVBbQ/5t1Y/s0 Uoc9GsJ9VaSeWo2iwTbu7HG2wOhT7HDRTiBwUOw+Zf3bLpMv0NMUuKCW+ZcGeQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529571; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1Xw9jURhhwzIYZdkOG5SKYY2XMC809JO4L1jYpq9+8M=; b=JkjZgVe9M5sMEUxQYuHeb7VTLi0XZu76Eg1ljxB9CBGjjTjLJJn3mQnn7bSejUfCJzMNjI 9RjmRHnlBOPK9NS6U6DEHwf5T1G0iicnkTagwFCoSBy/mteVWL1xWS1wik3dW1jrZDklQK wgvPc4aeSPzfNMOtM21gQdgf3KAtnx3HbUYPtjJf35dQWINgYea0IGJjCKWSc8vGbwXQlW CljIBma4Te0K74/3ZSq5MK1la0Uy1S3DnRnJHqSaEHg6B4SO6PPvQY/iOyGmop7i4F3nOl cRWimncgfU1lcPq/lj9crt5Z3l+NyEBaw0tLNwqwcF36W2tFE85LFEO1ZgChuA== 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 4ZRwQq03djzh3D; Tue, 01 Apr 2025 17:46: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 531HkAke050130; Tue, 1 Apr 2025 17:46:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkAQb050127; Tue, 1 Apr 2025 17:46:10 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:10 GMT Message-Id: <202504011746.531HkAQb050127@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: d3916945e4e1 - stable/14 - pci: Use a switch statement when reading ivars List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d3916945e4e11fae3898d497deccefb5143796d0 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=d3916945e4e11fae3898d497deccefb5143796d0 commit d3916945e4e11fae3898d497deccefb5143796d0 Author: Andrew Turner AuthorDate: 2024-12-12 16:30:02 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:57 +0000 pci: Use a switch statement when reading ivars In pci_host_generic.c use a switch statement rather than a series of if statements. Reviewed by: imp Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48045 (cherry picked from commit fafb43abd0dcaf2d36ec7344f46e7e19c42be888) --- sys/dev/pci/pci_host_generic.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c index 19a2ec419ad0..37864da9baa4 100644 --- a/sys/dev/pci/pci_host_generic.c +++ b/sys/dev/pci/pci_host_generic.c @@ -369,13 +369,11 @@ generic_pcie_read_ivar(device_t dev, device_t child, int index, struct generic_pcie_core_softc *sc; sc = device_get_softc(dev); - - if (index == PCIB_IVAR_BUS) { + switch (index) { + case PCIB_IVAR_BUS: *result = sc->bus_start; return (0); - } - - if (index == PCIB_IVAR_DOMAIN) { + case PCIB_IVAR_DOMAIN: *result = sc->ecam; return (0); } From nobody Tue Apr 1 17:46:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQr5jW4z5rsbT; Tue, 01 Apr 2025 17:46: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 4ZRwQr1gQKz3KrY; Tue, 01 Apr 2025 17:46:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529572; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=x9gUswcE2OiSc8EcO+V3hBU5ewBIeWCDGG9zZajvJFk=; b=Rk/mpTgI891KZFaDGCijIPT3wpfufP/qPAdHgWvtDlOK0U9+VDStOp6SrPh7jfJIfM9VsK Ekl6T5qNNt+lJ+KqSqX1P/aa5Xwm1uj8EMooB1m3iMZTm5aJBOO6gJhiDeij8kecxZWRc2 R18JQ+zWlv/Iav4pWBgeVvXnsU2LoXswMKEH8rhNXB8Yh+jsBB+gNjUeURiycbnfOvmiwK SGNDBa9NDzd1wRF+NeBPfeDSkW97A/0zWXm0tCuxT89NpBpOsDuwlD/xdrsbexNC8IzrGi iik+/bOIc0AddFTeWLSJhk837qGPScLV93ffDEkxEWkD4t9oievn6tsSC5V4RA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529572; a=rsa-sha256; cv=none; b=a2+oh5sPzuRNlt4lH2gRDUiqDLSpJasEGd70EggQci3YFiznYBEOWdxvJEfcHz3SRDz9Zp K9tfgsPiFYUiPpd4cCArVm1jH1ESaRh/KIO3OzJBsmlIoaUo71z2QIHg1B/C+6VtcoidaM 0qCJmKcd1eCBJqA5JjWT+hPiDQ0N+LIyCFc593BBJkB+2vTy7MyJ430cdrM4/Y5KkXky/d xLoV8pqYlxfMQYnPeqRXIoYqEP1qnOdIa3YriX4ZBLlLjp4M/8WVEBDFjlkq5u9RoMI62t aVCeekbAh0uBw8DzVLEQ+RT4PPfGYcXiqQJO/Bz3onWe5NjduUgUaio96/ySvw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529572; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=x9gUswcE2OiSc8EcO+V3hBU5ewBIeWCDGG9zZajvJFk=; b=CwpuMhhxJD5HsMOOMsjLNlsHdp/jlnPCJH6gu3J8bnTFFrw3nr4A+C5WNMo4hVD4KnrVvD /URcOU/I3xEjSx052HRwWZiyneygCSa2JoOU5UcW3bytuhMzMTSg8hj3txWlUGS5ZZbFE/ kFiNFkC02yr60XUaKIKUYyZEYObYtVjOanyto1tV6p7pRaOK2CfDxnMqPrpI82yCAdKAQc nB10XK7kTWzD2Qv6PN3MHQpMv2pEGBhWoYkxJXmhRM3Xyb5i/UYB+wgWi6vZTrf7vjLbX0 t1roA2KL7EbWiQTVJy/WKoJo7jD9weEn2WIq/inGin1DLQInVMkYjyc5Q5z6TA== 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 4ZRwQr10SHzhS7; Tue, 01 Apr 2025 17:46: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 531HkCgV050162; Tue, 1 Apr 2025 17:46:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkChB050159; Tue, 1 Apr 2025 17:46:12 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:12 GMT Message-Id: <202504011746.531HkChB050159@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 506e41a1517e - stable/14 - pci: Make generic_pcie_read_ivar non static List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 506e41a1517e1d1cfd7e15829679299bc58e406d Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=506e41a1517e1d1cfd7e15829679299bc58e406d commit 506e41a1517e1d1cfd7e15829679299bc58e406d Author: Andrew Turner AuthorDate: 2024-12-12 16:30:16 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:57 +0000 pci: Make generic_pcie_read_ivar non static Allow this to be called from attachments to allow more ivars to be implemented. Reviewed by: imp Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48046 (cherry picked from commit 7cafe75c8c52deffcb3e64200eb4187a52cf202d) --- sys/dev/pci/pci_host_generic.c | 4 +--- sys/dev/pci/pci_host_generic.h | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c index 37864da9baa4..ff8d222e3fd3 100644 --- a/sys/dev/pci/pci_host_generic.c +++ b/sys/dev/pci/pci_host_generic.c @@ -67,8 +67,6 @@ static uint32_t generic_pcie_read_config(device_t dev, u_int bus, u_int slot, static void generic_pcie_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, uint32_t val, int bytes); static int generic_pcie_maxslots(device_t dev); -static int generic_pcie_read_ivar(device_t dev, device_t child, int index, - uintptr_t *result); static int generic_pcie_write_ivar(device_t dev, device_t child, int index, uintptr_t value); @@ -362,7 +360,7 @@ generic_pcie_maxslots(device_t dev) return (31); /* max slots per bus acc. to standard */ } -static int +int generic_pcie_read_ivar(device_t dev, device_t child, int index, uintptr_t *result) { diff --git a/sys/dev/pci/pci_host_generic.h b/sys/dev/pci/pci_host_generic.h index 2d7583b861c8..65f69fc05314 100644 --- a/sys/dev/pci/pci_host_generic.h +++ b/sys/dev/pci/pci_host_generic.h @@ -97,5 +97,6 @@ struct resource *pci_host_generic_core_alloc_resource(device_t, device_t, int, int *, rman_res_t, rman_res_t, rman_res_t, u_int); int pci_host_generic_core_release_resource(device_t, device_t, int, int, struct resource *); +int generic_pcie_read_ivar(device_t, device_t, int, uintptr_t *); #endif /* __PCI_HOST_GENERIC_H_ */ From nobody Tue Apr 1 17:46:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQs73qYz5rsW7; Tue, 01 Apr 2025 17:46:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRwQs2Lysz3L88; Tue, 01 Apr 2025 17:46:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=msZiYxftCzCSlMZfw+FNcS3VnV5R0zccEDPlC+/tZPQ=; b=aq27FdfXb+CqtyV9pdV/SPz6ymbKTwI+3FyZgxI3yaCqk4wouL+rthBpCRplhvHZAo+0GU jXp4/jCnt+MKcpo2Xflp2/6U1rZLXTdtl8eutMROSiB4NIqTcQbUueCfhG2B1xKch+OwxX rpX1LIW5zYDEqrM2bXdwW38giHV4aea0kkL50OT4uvgP0wtzsvmq4zySeFoQsSjKvrDKjS yKDTjbAaLg33gdOo4n7AJ1Zpdqs/qvPyYzzUL3sm93n+glOfUPtdOJ6vBjyZ+GiTUjqo9k DRej6LyjdUORjZRJi6ATvxZxMJ8cO9OkMeGMlcderulW9uiztl0OQsptOsc8pw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529573; a=rsa-sha256; cv=none; b=PxGZFbDSXaQHj8vtk5ht/y2r3NHTa5Zsrnd7NtgMESHPlfG9Na+9TkZynN6KFi5JkU0RqO dktpZB4u25TcX2uRHECF9modJlXYyDrDVDXgW1/GhL7N68Qa3D3JB4z1hHvdowUh+ar0/M MWdhQfvceuTIOgGyQsUNY1qxGQgGOJUGE0aP6TUTZ4TQAUEW7eqCSTIGD9GyhZmd5ofQuV OKF5MT2t9BH1PiX2y+zTc83lhhUBgDQBtf95p+XHAagNpOhK3VxCPPPZ7nkCr5ID4BNht5 5oPxw71lAeRqv28edXlsy3+kvWjY/R0dMfRcDFWtlSEhNMFiTjP97Rf424L6Aw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=msZiYxftCzCSlMZfw+FNcS3VnV5R0zccEDPlC+/tZPQ=; b=LvVP81toDX5C8l6qN24b+K1N+L46GDP9aMaAsiV5PiC3LPSpRJ1HETVoZ/waSSL3BnWoOX 8j8iFbzOFcz8CVBRMoMIN2quHQhr9oT90MD8LbOllM3FQCE26gnLkrok5N8CP6pVBDX6SK qVdtWq96KfOqQ/gwyCKictygN+k37N+n44SmwsckgVbSxJzl1OkPNqrVs+b2ckSgOxtEy6 Rz86r+WnbrDHb7kOEN0U51hdJcMVJYxujo4kMmQW+jNPbu5AQZU7VnygsB+r/Q9PyU/oc2 QL86PYKS5Sd+W7R8pP5kjeezlXXM6NTd5hF8PNA9qi6TgEFcO4tFbVDEoj5MqA== 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 4ZRwQs1yDTzhXn; Tue, 01 Apr 2025 17:46: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 531HkD1t050194; Tue, 1 Apr 2025 17:46:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkDCV050191; Tue, 1 Apr 2025 17:46:13 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:13 GMT Message-Id: <202504011746.531HkDCV050191@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 479872ce9194 - stable/14 - pci_host_generic: Support ACPI_IVAR_HANDLE List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 479872ce91942466a4c421541acbe5865da66bd8 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=479872ce91942466a4c421541acbe5865da66bd8 commit 479872ce91942466a4c421541acbe5865da66bd8 Author: Andrew Turner AuthorDate: 2024-12-12 16:30:28 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:57 +0000 pci_host_generic: Support ACPI_IVAR_HANDLE In the ACPI attachment support the ACPI_IVAR_HANDLE ivar. While here use the common ivar function to support the common ivars. Reviewed by: imp, jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48047 (cherry picked from commit deb36d0c65436d16b04f99cc2a27bd0f3980a6f0) --- sys/dev/pci/pci_host_generic_acpi.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/sys/dev/pci/pci_host_generic_acpi.c b/sys/dev/pci/pci_host_generic_acpi.c index 0cd17d5f5555..b389eeb16fcf 100644 --- a/sys/dev/pci/pci_host_generic_acpi.c +++ b/sys/dev/pci/pci_host_generic_acpi.c @@ -343,23 +343,16 @@ static int generic_pcie_acpi_read_ivar(device_t dev, device_t child, int index, uintptr_t *result) { - struct generic_pcie_acpi_softc *sc; - - sc = device_get_softc(dev); - - if (index == PCIB_IVAR_BUS) { - *result = sc->base.bus_start; - return (0); - } + ACPI_HANDLE handle; - if (index == PCIB_IVAR_DOMAIN) { - *result = sc->base.ecam; + switch (index) { + case ACPI_IVAR_HANDLE: + handle = acpi_get_handle(dev); + *result = (uintptr_t)handle; return (0); } - if (bootverbose) - device_printf(dev, "ERROR: Unknown index %d.\n", index); - return (ENOENT); + return (generic_pcie_read_ivar(dev, child, index, result)); } static int From nobody Tue Apr 1 17:46:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQt6Klyz5rsKG; Tue, 01 Apr 2025 17:46: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 4ZRwQt3Qnvz3Krg; Tue, 01 Apr 2025 17:46:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Kk1ACLrwTWjw1pmuYrnYSA36KO4cS/USoKAyIYZ0EgI=; b=FtUCBh2RFYPu5wPK7nB4oozV156xe+FKCMFlGQIt6CQ951ckqyp5VbRVKZWerkOZIm3ADk mIS03zEDWSx0g5qX8BQNvkez4wNHo2yVMTCK92FJ+p2JDhh5WuqATPL6gb/goWI2t9rNn0 m99DG+esQiK9rBvEjgI1S6gUWf0ovZEV5XSFbgBvlIK93OWijYdso5XSh45Z/4lx/nOR80 cYaZIaIgyHPWCPRsk2ppBBmAIjYTsmVrs7h3x1rpUGF0D7rnD4tkaFcfO4V0iqyEVypAwd CTWOwjFLJxpCQ2nGBwGGrPJMOlgj/WgiieLNkgsUzByzoovMCPjf9Cbv/DB7iQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529574; a=rsa-sha256; cv=none; b=DHmFg90Qb1YcKqKP1geoAl86MGsKoPe4/VXodKT9gE5zEltBttAbFSv9VwLhvr/wR7vlKj BpPHn4x5ZNijoshEDYThwc2LbRlsX0+ZTZKsyjGpzXURpt1B/s/WT9XBXfrRY/3rTsU8nl SaTsWdxRncGXY/QrJcs9cQUaS2dnKcwxl7rOPCkOW5D7M7eeg4riJrPcSCcibBbyEl9Jrg 87W1VxoG5zNEaMxyVt/RwzJHJyhezjLhxuyIpSGnlUexrhlz6oc8BxVlVuhKz2xT3+7tCE Sc49Z2VjCD2p67T+BthTJpXowzbysuq8tt5s7aNe5YIfmD2oPhEc7rTC9Yq4bA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Kk1ACLrwTWjw1pmuYrnYSA36KO4cS/USoKAyIYZ0EgI=; b=lQnv5UUHlONaAEPvPLhxGnKuxpdS6uHsxulzE/rpcgC4lsMUJ3XmPpJ7fjZ2FbYgkWQxql YbU9fksSHaV7IenIeSS5qbqe6GvtXGhz9THYaq4MKPu96rLZsY5brRDmxULOU0vQ1smOD4 NG3JB5OFrmEZ2wP3bl7c2wZDyIiiLOazW5S0iX0R51B6Q4ILTeTxXdIOfZGnhQeCVr68ZH m9XiSDes3BIHF65rRGOAcYYCetwkGaa3cOohlj4zBUvh+ykMDH6gUG7B2BlHOCjtDhx7WN VQOE97fTYKzze7cCbUrOBL8lkgSnckbjqYQ/7UL6WeWs7LbzngDlw2biHEnLXw== 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 4ZRwQt2Sj1zh3F; Tue, 01 Apr 2025 17:46: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 531HkEl1050226; Tue, 1 Apr 2025 17:46:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkEAd050223; Tue, 1 Apr 2025 17:46:14 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:14 GMT Message-Id: <202504011746.531HkEAd050223@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 3c9eae3c11da - stable/14 - pci_host_generic:Add pcib_request_feature on ACPI List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3c9eae3c11da69103389c2a1fd5a7c34948e6e13 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=3c9eae3c11da69103389c2a1fd5a7c34948e6e13 commit 3c9eae3c11da69103389c2a1fd5a7c34948e6e13 Author: Andrew Turner AuthorDate: 2024-12-12 16:30:39 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:57 +0000 pci_host_generic:Add pcib_request_feature on ACPI In the ACPI attachment add support for the pcib_request_feature method. This uses the common _OSC handling. Reviewed by: imp, jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48048 (cherry picked from commit 1f5c50a8617355758510675cb9412f56fed12efc) --- sys/dev/pci/pci_host_generic_acpi.c | 27 +++++++++++++++++++++++++++ sys/dev/pci/pci_host_generic_acpi.h | 1 + 2 files changed, 28 insertions(+) diff --git a/sys/dev/pci/pci_host_generic_acpi.c b/sys/dev/pci/pci_host_generic_acpi.c index b389eeb16fcf..992e8b5c8b8d 100644 --- a/sys/dev/pci/pci_host_generic_acpi.c +++ b/sys/dev/pci/pci_host_generic_acpi.c @@ -287,6 +287,8 @@ pci_host_generic_acpi_init(device_t dev) sc = device_get_softc(dev); handle = acpi_get_handle(dev); + acpi_pcib_osc(dev, &sc->osc_ctl, 0); + /* Get Start bus number for the PCI host bus is from _BBN method */ status = acpi_GetInteger(handle, "_BBN", &sc->base.bus_start); if (ACPI_FAILURE(status)) { @@ -503,6 +505,30 @@ generic_pcie_acpi_get_id(device_t pci, device_t child, enum pci_id_type type, return (pcib_get_id(pci, child, type, id)); } +static int +generic_pcie_acpi_request_feature(device_t pcib, device_t dev, + enum pci_feature feature) +{ + struct generic_pcie_acpi_softc *sc; + uint32_t osc_ctl; + + sc = device_get_softc(pcib); + + switch (feature) { + case PCI_FEATURE_HP: + osc_ctl = PCIM_OSC_CTL_PCIE_HP; + break; + case PCI_FEATURE_AER: + osc_ctl = PCIM_OSC_CTL_PCIE_AER; + break; + default: + return (EINVAL); + } + + return (acpi_pcib_osc(pcib, &sc->osc_ctl, osc_ctl)); +} + + static device_method_t generic_pcie_acpi_methods[] = { DEVMETHOD(device_probe, generic_pcie_acpi_probe), DEVMETHOD(device_attach, pci_host_generic_acpi_attach), @@ -516,6 +542,7 @@ static device_method_t generic_pcie_acpi_methods[] = { DEVMETHOD(pcib_release_msix, generic_pcie_acpi_release_msix), DEVMETHOD(pcib_map_msi, generic_pcie_acpi_map_msi), DEVMETHOD(pcib_get_id, generic_pcie_acpi_get_id), + DEVMETHOD(pcib_request_feature, generic_pcie_acpi_request_feature), DEVMETHOD_END }; diff --git a/sys/dev/pci/pci_host_generic_acpi.h b/sys/dev/pci/pci_host_generic_acpi.h index 802099abb9d7..5617da971306 100644 --- a/sys/dev/pci/pci_host_generic_acpi.h +++ b/sys/dev/pci/pci_host_generic_acpi.h @@ -35,6 +35,7 @@ struct generic_pcie_acpi_softc { struct generic_pcie_core_softc base; int segment; + uint32_t osc_ctl; ACPI_BUFFER ap_prt; /* interrupt routing table */ }; From nobody Tue Apr 1 17:46:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQx2Hyyz5rsk4; Tue, 01 Apr 2025 17:46: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 4ZRwQw5JY9z3L8K; Tue, 01 Apr 2025 17:46:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529576; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ITbOZEq6NrVNqm+XJ/jezUzjQNi7I6wI14hLo3bnj5M=; b=lvOFeRqLNhrxy3LsFK1VgOkUiUVj++8Piy7sxlj7/3BD2MbxuxVTI++MmAORp1M2dM1TXk gZLIbh9U+DQgbfKGTC7zE6S0PGkeA8uOxhNIsnHLO4JJkcWpz7UYcrjXvakWHEMSvOm+sR L0mPyVBnE6+Mq0II7ajFm2gCaWY1gtrELKOflZemTGVWOkdy4yrDXSssdBirm3GFlWstIx mq5vvHCPzrEta2Gom74xtr/uxn4BGoaUwcYCRVdyEviaQrfHFkdcVi8HOVAcXuwwYHHl/X dnMwFQ1KCHwkCexzg6DPGtNXkgFx/AST2NzZ/I3uqfSZY5jBrVwcYDezbdqlyA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529576; a=rsa-sha256; cv=none; b=gmwcDwXOx4xgDrIDKL7Av5jx7CMxUbN2H7k3uCA90n3U+mOpkuspUYVtYu7Sfv7VlIK3VC e2gkYHZimVUs6WICngomCmL/KGqJnkn8PdyVO1wpWnP/oYULswOPhx7oPU7t67wZijdDLn jud4Y0pDOvvm/SYXlLqiujPv2lI6E4fDAMRbnrkruaiUtyjzPDlnf2Z56oDpCOnDKWd3PF 53CgoMa2XC/dPwz9CgTCH4s9P6LW5rygQ011+V0IUO+nR5eJre9kv63h5rWsi4h7e8kTkz QrI8v8F2Pv/e9lj8Ug8kW5eg32mCGlqdSEwoLSSq1NuasINwo+woeeYsTrMzKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529576; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ITbOZEq6NrVNqm+XJ/jezUzjQNi7I6wI14hLo3bnj5M=; b=N84tBCluqMYXdUoQxzwm0Sps46ABRF9ML3iRiAltqWMhwpgqzpt6MdtW+mzi8OUHoU/2rE jof9hB+ww5JmegOCK4EyOre4hUZpx8DBZca12delXsSbIQ05kgMOimF/vSv+B+oPVOWwdV p8tLUpBH0RRFpeb1sTndw91OIivv+3Qy5xXNPluwyfhivWEOldEMkb4UpwZT9MFY2XQ5BV IBdoGBMJJFqr4SdqkRRgq7tFTaVM4oULSK4SgL9yqqKiu1SIxPVuSxnbFHrj2jgwcbSTmq eceA+bHhudVMd9jg7lK82eCbd6tJpmHDipt6DqJc6UDt3h8YFzR3aGKWdnpqZA== 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 4ZRwQw4MKtzh7f; Tue, 01 Apr 2025 17:46: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 531HkGJW050299; Tue, 1 Apr 2025 17:46:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkGCF050296; Tue, 1 Apr 2025 17:46:16 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:16 GMT Message-Id: <202504011746.531HkGCF050296@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 423362c3d8d6 - stable/14 - pci: Only claim to support PCI ASPM on x86 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 423362c3d8d6a236c49e7f9d667032c05d5c170d Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=423362c3d8d6a236c49e7f9d667032c05d5c170d commit 423362c3d8d6a236c49e7f9d667032c05d5c170d Author: Andrew Turner AuthorDate: 2025-01-03 15:50:38 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:58 +0000 pci: Only claim to support PCI ASPM on x86 We claim to support Active State Power Management, but don't appear to do anything different in the kernel when it's enabled other than tell the firmware we do. This breaks VMware Fusion on Apple Silicon when it's enabled as it expects the kernel to enable the ports. As it is reported to be needed on some x86 servers keep it enabled there, but disable on non-x86 architectures. Reported by: kp, tuexen Reviewed by: tuexen, mav, imp, jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48303 (cherry picked from commit 143dff0f9ce9a6f03ae5701368c7144b30e2dc39) --- sys/dev/pci/pci.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index b40a352a4818..102027123976 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -409,7 +409,15 @@ static int pci_enable_ari = 1; SYSCTL_INT(_hw_pci, OID_AUTO, enable_ari, CTLFLAG_RDTUN, &pci_enable_ari, 0, "Enable support for PCIe Alternative RID Interpretation"); +/* + * Some x86 firmware only enables PCIe hotplug if we claim to support aspm, + * however enabling it breaks some arm64 firmware as it powers off devices. + */ +#if defined(__i386__) || defined(__amd64__) int pci_enable_aspm = 1; +#else +int pci_enable_aspm = 0; +#endif SYSCTL_INT(_hw_pci, OID_AUTO, enable_aspm, CTLFLAG_RDTUN, &pci_enable_aspm, 0, "Enable support for PCIe Active State Power Management"); From nobody Tue Apr 1 17:46:15 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQw4vzTz5rsQW; Tue, 01 Apr 2025 17:46: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 4ZRwQv5D52z3L3N; Tue, 01 Apr 2025 17:46:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OlKjjqJcJUBIJ5CqtD81XNKXZrQ6Roa3VJD8hRoCeJQ=; b=XgL0sCYE5FnAFTigkZUMPcgPwk8Tw2rnRuM2JDZSbQyc0AIN7rZLETywlbdDeF5752pJnb th89hIqOLjvozFNoPxvMAdbuoGYavX+gfksYPywjghmb1zfq32sG37Fhi8ZVidE7S6xP6J qaWqs/UBon0tyf9DXdjNf3enLQPo++LYnxEF5oEweXv0g8RslzsQaGjgklsChgdarr18G6 BxRT7MMwHvP1Teb5WfLluEjAHrqibyzY11jGekaqGrn2fwlNBKZsTGEnxZwYlj4GOe3qBB D1MRaCVHBM2+bQtm92N6XN1fzF7/jy/qwR9OSzPrnmRKist9kI/cmmXMpukX7g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529575; a=rsa-sha256; cv=none; b=WMaJJb8mFlHWEtkNveEaELsBZrHo8xc+5QZyOpYUqMJkzHrODCXgXksScccSgNmf1NVuIN NRTLlU1eBZ9UiowA34RaI+NhDxq39WiqdAXlLKOEj5TvrpBwByVG9hFeIjort7dGZjfchA OpbxkIq2NPgDG8nCwad4Wl2XRYAWRIOJgkhW+KFYpQK9ILkZ2PQq7+kxCtHa1ja/XDc+du mczOyz4X0ONSWUr4Wt8DosB5FLstDz66H3bjA+fuBxjn3bOS0zmKBpGzb7KEXo4xgtHdGK KolS8M5tsEbTPmU3vpNxsaaElK1zzyTFmlJO8Pi3n8Gysz9UPau/HVurlk/j6A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OlKjjqJcJUBIJ5CqtD81XNKXZrQ6Roa3VJD8hRoCeJQ=; b=Si3wWRxrELiAPhRo3QbxEz6+xX3Gg8qA+PimgskKCNJINLvW2NtHq6abpQdo2roKEgpMUR lT7FpzU0GR5uQJ/GEY4eq/8JaKoFccIgQ0n6luVa1Vql4acVO38Ce02JCYCK4HWeapuu9B cyMlTja1opWAbkQm9CNKqN3Anl44AVn5X+Q/LCsSGcW44uk5X2g897B3pcjMPD/CTtMRmq CXbbekJTwJdq86U2agPGImS0TtH4CU55C5TCz7ab21wIDvl1FxVsyybhfFqjVJS32NuEV1 TX70krJCSPcaamZLBRhK1EPyQYA8qyuZ8HWIttyQJpEx4HNkMfN3w0Nd1Ih8cg== 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 4ZRwQv35rpzhS9; Tue, 01 Apr 2025 17:46: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 531HkFi3050265; Tue, 1 Apr 2025 17:46:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkF70050262; Tue, 1 Apr 2025 17:46:15 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:15 GMT Message-Id: <202504011746.531HkF70050262@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 355f02cddbf0 - stable/14 - conf: Add acpi_pci.c to the arm64 build List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 355f02cddbf017706d3293f09ed6c2b5570936c1 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=355f02cddbf017706d3293f09ed6c2b5570936c1 commit 355f02cddbf017706d3293f09ed6c2b5570936c1 Author: Andrew Turner AuthorDate: 2024-12-12 16:30:50 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:58 +0000 conf: Add acpi_pci.c to the arm64 build Reviewed by: jhb, emaste, cperciva Relnotes: yes (Support PCIe hotplug on arm64) Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D48049 (cherry picked from commit 38cb1ba8637d08ce3f6b3c614f39698db153cd4d) --- sys/conf/files.arm64 | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 563a8e93c3ad..cf2e1d22da88 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -150,6 +150,7 @@ crypto/openssl/aarch64/vpaes-armv8.S optional ossl \ dev/acpica/acpi_bus_if.m optional acpi dev/acpica/acpi_if.m optional acpi +dev/acpica/acpi_pci.c optional acpi pci dev/acpica/acpi_pci_link.c optional acpi pci dev/acpica/acpi_pcib.c optional acpi pci dev/acpica/acpi_pxm.c optional acpi From nobody Tue Apr 1 17:46:17 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRwQy3HxFz5rsbl; Tue, 01 Apr 2025 17:46: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 4ZRwQx5N5Hz3L3m; Tue, 01 Apr 2025 17:46:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529577; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Nc9koE9+2DFL6FhNTg//1tLGvJtwEotWnIA4a9D6Lp0=; b=fV97jL+mkNmdWWhMnsiymzHCALJNdkBtBn9tN7JCtwGcgbr70bOG3IDUArL1Kxb26jp67l +t5g7kWGt/zB4WBKdavHEysW5cSQ/ez/Cs9VcT/sr65V7nXOW3hwpy4krNctZ7xlmlUrAs J2ckhPxXFfVHXsdxQvQxs/4NUqxJPJV9GVYbdyHQ6AyF80dr72wffCBx0Kr9gPaxyFtHGv Xe2hiwC4dRuwjiiEN2STD87Ka1LVwL4VOvWazt4rOLkGE5+8wCH0wzkK/ZcE2If+lcK1w8 B1t3QMKo5eZ1pDV2py8c2ptnnE2E37L7glLtz7Qv0QzcyQ1oDWtXDVuUlYzFuA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743529577; a=rsa-sha256; cv=none; b=lV+FAQ/8TrwmQ1iyvv6wGcr/5ma70K2dSh9CaLBV3PQmZT7KVJ46yQpgh1MfgXYA0GmwXm +6zDDPHB5WCG1SoVwWA4fPzR/txsodh2eAl9CP/AAN9662PFYoL3lhx1WM/m7OXdqotEyO dEj/9WTWtpybf66GEEBic5WByxs3wbM9oRCK4rs/399Lv21gG738YmxquCptg9KoFw6gvl OsjO202BCxPYxpiukANqWuidaCkTRuitIBduOkjIUt2Ydytp8X6V4MtDpaYzG/RsAuBNMr IQBXgX8ce6N9kj5146C20dl4uvWgDTiI+wD4cVcnh3RbDhWpHrBLRpLSOUKMsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743529577; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Nc9koE9+2DFL6FhNTg//1tLGvJtwEotWnIA4a9D6Lp0=; b=PxdL4iZa1kIaqgN/OfUOtO5ZLoc5P1qfErbOeSeK84TG7W8GY9NoYzTC5ZVdpk+MsBeTVs jOBSh7HjJnFLjQqwJCx5Q2KNuQeO5DZjKCvZzVKgfKD0spswq5vTghODLe5PE+eO3mjnlx VNAAz3wQa5uqGjtIhGY79wu+WuXJi+8d8zbUGv0/gDraPEt/GUJo5SeNr//Esor/KTRVHU 3rib4xfCM5VLtH79wPInjtiMDIEMi8ZbgEVMIRuB2hWPxJdqrYjcQcssWpW4xmOaesUB8n NjWkupmHbVkCv/KLnLFmzPdk7vR4820+SA5600ZCkuWrYAT/pVYA6lqVY1ijMw== 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 4ZRwQx4yf3zh7g; Tue, 01 Apr 2025 17:46: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 531HkHts050331; Tue, 1 Apr 2025 17:46:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531HkHLJ050328; Tue, 1 Apr 2025 17:46:17 GMT (envelope-from git) Date: Tue, 1 Apr 2025 17:46:17 GMT Message-Id: <202504011746.531HkHLJ050328@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: a64357f31b7c - stable/14 - acpi_pci: Add quirk for PSTAT_PME-before-detach List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a64357f31b7c798452e7aca4e6ec34c2842a4fc1 Auto-Submitted: auto-generated The branch stable/14 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=a64357f31b7c798452e7aca4e6ec34c2842a4fc1 commit a64357f31b7c798452e7aca4e6ec34c2842a4fc1 Author: Colin Percival AuthorDate: 2025-02-27 00:31:08 +0000 Commit: Colin Percival CommitDate: 2025-04-01 17:43:58 +0000 acpi_pci: Add quirk for PSTAT_PME-before-detach In order to signal to Graviton [123] systems that a device is ready to be "ejected" (after a detach request is made via the EC2 API) we need to set PCIM_PSTAT_PME to 1 and PCIM_PSTAT_PMEENABLE to 0. We are not aware of any rationale for this requirement beyond "another OS kernel happens to do this", i.e. this is effectively bug-for-bug compatibility. Arguably this should be done by the ACPI _EJ0 method on these systems, but it is not. Create a new ACPI_Q_CLEAR_PME_ON_DETACH quirk and set it in EC2 AMIs, and add the PCI register write to acpi_pci_device_notify_handler when that quirk is set. Reviewed by: jhb MFC after: 1 month Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49146 (cherry picked from commit d70bac252d30adec4feba0c866dabe2c16a756d9) --- release/tools/ec2.conf | 7 +++++-- sys/dev/acpica/acpi_pci.c | 9 +++++++++ sys/dev/acpica/acpivar.h | 3 +++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/release/tools/ec2.conf b/release/tools/ec2.conf index 1fe44118fd3e..21ea56d109ca 100644 --- a/release/tools/ec2.conf +++ b/release/tools/ec2.conf @@ -65,8 +65,11 @@ ec2_common() { # Graviton 1 through Graviton 4 have a bug in their ACPI where they # mark the PL061's pins as needing to be configured in PullUp mode - # (in fact the PL061 has no pullup/pulldown resistors). - echo 'debug.acpi.quirks="8"' >> ${DESTDIR}/boot/loader.conf + # (in fact the PL061 has no pullup/pulldown resistors). Graviton 1 + # through Graviton 3 have non-functional PCI _EJ0 and need a value + # written to the PCI power status register in order to eject a + # device. + echo 'debug.acpi.quirks="24"' >> ${DESTDIR}/boot/loader.conf # Load the kernel module for the Amazon "Elastic Network Adapter" echo 'if_ena_load="YES"' >> ${DESTDIR}/boot/loader.conf diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 6411af02ee58..97704111839b 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -391,6 +391,8 @@ acpi_pci_device_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context) { device_t child, dev; ACPI_STATUS status; + int pmc; + uint16_t pmstat; int error; dev = context; @@ -416,6 +418,13 @@ acpi_pci_device_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context) device_get_nameunit(child), error); return; } + if ((acpi_quirks & ACPI_Q_CLEAR_PME_ON_DETACH) && + (pci_find_cap(child, PCIY_PMG, &pmc) == 0)) { + pmstat = pci_read_config(child, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~PCIM_PSTAT_PMEENABLE; + pmstat |= PCIM_PSTAT_PME; + pci_write_config(child, pmc + PCIR_POWER_STATUS, pmstat, 2); + } status = acpi_SetInteger(h, "_EJ0", 1); if (ACPI_FAILURE(status)) { bus_topo_unlock(); diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 668d0b51a1f3..830764434f48 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -230,6 +230,8 @@ extern struct mtx acpi_mutex; * compatible flag and ignoring overrides that redirect IRQ 0 to pin 2. * ACPI_Q_AEI_NOPULL: Specifies that _AEI objects incorrectly designate pins * as "PullUp" and they should be treated as "NoPull" instead. + * ACPI_Q_CLEAR_PME_ON_DETACH: Specifies that PCIM_PSTAT_(PME & ~PMEENABLE) + * should be written to the power status register as part of ACPI Eject. */ extern int acpi_quirks; #define ACPI_Q_OK 0 @@ -237,6 +239,7 @@ extern int acpi_quirks; #define ACPI_Q_TIMER (1 << 1) #define ACPI_Q_MADT_IRQ0 (1 << 2) #define ACPI_Q_AEI_NOPULL (1 << 3) +#define ACPI_Q_CLEAR_PME_ON_DETACH (1 << 4) #if defined(__amd64__) || defined(__i386__) /* From nobody Tue Apr 1 22:56:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZS3Jv5FV3z5sFRq; Tue, 01 Apr 2025 22:56:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZS3Jv30rtz3TcX; Tue, 01 Apr 2025 22:56:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548191; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mHUizYajC0yQjvZSEiL5S6DfdH4UWKCJ1D0LLGPguII=; b=wY7ltH0Mzo5u1gTevlZnekWeh9OQujE+Wh7C4llXZSADvjyQXrvvvlrDJJkVCFIZTXiPrb S81LVW8n9NBzN1oCU89z2hroX+QI2mVGgHDl/lBIV+O9TYxAtboTlf4uCnd17wF+sAZz0M QzQXF2Af0Qi/5JRLXv1XBd3wH5pjeXTWgko6FiLtDBktbR1e6GYq9IfM+v4/Vitbu2tcrb P5SQnEuXuS4s7Mt9Vw7IcyO4rOVdhnBuXeJ2oNIGBJ7obIU8KXGjyybUY693lc9y+sA4wn E7AkAcTkylu+PK0z+dRffkESz0jZpe1scowkcIvW/YXYBmK+JihoFH9BKOPSUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548191; a=rsa-sha256; cv=none; b=pg3n4r21zDaXcOP9BRf0Xnkgmv3eyChQYgRHGPdgaFU8ieS0Mt/1zU4XpsTIsKl6hdbyQt DzMA52ASNgAWGCYdKvi8PNTB6pz9mYb5HpW/Oypmi/jk0VRFdDHaz7go2v4uXmWo3Y94B2 5x2CXVBxC+9x+Legx11uSUlPdP5wE7+QfWbRyiVAKRD+rBoHfvUar1zQlKBzqcDpkHBXGc Wy7y4WTSJxcWBNj3MTNPpJkta0SGEiXGutgmb0HTZBNUo7vzYrIyYo5TjI/MtVQX5nd8/0 oZFzQPeKddPwykpKAHMRTu1DAIbW/4Xwv+1rkGySDC6SoblGTj5Jx5bAhBJIhQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548191; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mHUizYajC0yQjvZSEiL5S6DfdH4UWKCJ1D0LLGPguII=; b=KYZQDDwjqQg0VCR49XmIq6wIfVVw/4gp/39OWiJeP+w28fGhiOygiY5Rs7phhuUvkxgDpQ KT+Vqa1NLkg6cwB1mjMUFeBJ9GRDQfUauh4/SRt+ggCrd7oNaKv6X+ynWIwmWzQK1IZ/+S Yi8EWlOs23IHOD6vMIdUDHlIwdw9qEBaSuVXd+Ou9sb4tDefA2Yc1vr74M2xKXYcjxQBqo GL3Gj6OPyvRoUunGlLfLTgSfyQubA0PFWZKkrOvI6OvSwK+zPrL9h02GJyiEw1NgwIpzL8 g1QpGb58+/Esq/AxxsPgBhHxHaMJ/n/hsNpui/rvD49ljaNLdqGTURr+BXc7TA== 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 4ZS3Jv2X8Qzqv3; Tue, 01 Apr 2025 22:56:31 +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 531MuVfp029567; Tue, 1 Apr 2025 22:56:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531MuVEn029564; Tue, 1 Apr 2025 22:56:31 GMT (envelope-from git) Date: Tue, 1 Apr 2025 22:56:31 GMT Message-Id: <202504012256.531MuVEn029564@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: 45f70f98fc55 - main - iommu_gas_map_region(): add comment explaining the ma array shift List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 45f70f98fc55b753b1e7a7374b4a061aa1f27392 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=45f70f98fc55b753b1e7a7374b4a061aa1f27392 commit 45f70f98fc55b753b1e7a7374b4a061aa1f27392 Author: Konstantin Belousov AuthorDate: 2025-01-25 09:37:50 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 22:23:17 +0000 iommu_gas_map_region(): add comment explaining the ma array shift and the difference between start and entry->start values at this point. Sponsored by: Advanced Micro Devices (AMD) Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/dev/iommu/iommu_gas.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/dev/iommu/iommu_gas.c b/sys/dev/iommu/iommu_gas.c index d97bdee47b28..ffa8dc096adc 100644 --- a/sys/dev/iommu/iommu_gas.c +++ b/sys/dev/iommu/iommu_gas.c @@ -875,6 +875,11 @@ iommu_gas_map_region(struct iommu_domain *domain, struct iommu_map_entry *entry, if (entry->end == entry->start) return (0); + /* + * iommu_gas_alloc_region() might clipped the entry start and + * end positions. Adjust the beginning of the ma array to map + * the pages at the requested relative positions. + */ error = domain->ops->map(domain, entry, ma + OFF_TO_IDX(start - entry->start), eflags, ((flags & IOMMU_MF_CANWAIT) != 0 ? IOMMU_PGF_WAITOK : 0)); From nobody Tue Apr 1 22:59:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZS3Nk5c4yz5sFXd; Tue, 01 Apr 2025 22:59: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 4ZS3Nk58Y8z3WvY; Tue, 01 Apr 2025 22:59:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=v2eOC/arh+SD2rdAfzlciEJyX7zUovPqN0EjC9OYI0M=; b=Wv7FYZ8BgygtuQZGrz/Q0qGzWbwBqaXQ/2cnAkcoxn1WX0+jlsqfMvEudnj0gM7zJotgQU 5q9iAdCkwKJcyNj3wkyj6pfEm/ojGbB1p7L6TY0+gcaWmSMCzo+1mxHRF/FI28oqX3b5K9 ZhxJxKriYVZoUkfxcJSAHYau391Kw5orGxp0x/hCQQbU2YzkjfXwP2r52fmlqWB7rIsliJ TArW80XJiu+3UrXbnM5eOfKHmAnPZUs2Q0j0EMI8Meq35IktWf0NozGrnZlVI5A+tdz5pe e4UIDOcby8EpsfgsSyNSLIv8rJFTFjw+RLcLYd9ChHPR6tDn6dhGLMRDODzBWA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548390; a=rsa-sha256; cv=none; b=m5wdil+U4l5TVnDcs3UI9+5yJJbFPM8QO7WxId1Lbnj3RPqql+s4Z/RGD3Z3VLUJIBqY+c T29ZBTr6WNjz4Cs/GdU4G5iboKEeKfEplwwWeZBNowf+kbiqs84eYxyBMcWu5d7kqmIInZ k4tYkJWlLPqXePGSAHz88Hzjgk3xszJU3g4ypFC0hL67tnbU4hrUoEcipmH7qxBrVKCw7Z e3Yt4grFGXy987hBGLbh7FBzBUmR7JmG0pYj58EuPvOAeYFdf+2Ne8hZ3rTW84JSldRHD3 j5+WSL+OrsPWRrT5kj7d7TXG+PSFGQTmtO06lK3bxHvIkcBNrvEmsDYCOdLC2Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=v2eOC/arh+SD2rdAfzlciEJyX7zUovPqN0EjC9OYI0M=; b=Vj+3TG/QMZAwNQ10oxbjQy/xktkz/DaZxHNXil5hSxkKIQg8xyOjR1hjmHzDWqCxKeKdbt YHIy8VVtNeMsXmmcjxp8mFQszC6TZIsJr3leEISDM5+6Es23+wBoqlrczezccrAXxJ1uhz qednYOjAMXPgtD1sn6UHl8ih2YCs6u/I1GBj8g1RIIb49XMsq1dyDbTnReg6bLNav/sqSq 8RRb17i5RfOraa1ogv7VpRwDz6HYFUhloKHFGJE4SoViwLIxTmWCjE8gM5KWs2hy9RGZlO z/eDuFsMO08Tr/4JksXTVDGKpCivn9fJQlg//XeIS/DUDGVYfzumSCRUF0kvOg== 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 4ZS3Nk4ksSzrGy; Tue, 01 Apr 2025 22:59: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 531Mxonn030669; Tue, 1 Apr 2025 22:59:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531MxoD3030666; Tue, 1 Apr 2025 22:59:50 GMT (envelope-from git) Date: Tue, 1 Apr 2025 22:59:50 GMT Message-Id: <202504012259.531MxoD3030666@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: 299bb57d9b71 - main - bhyve: style, add comma to the last line of designated initializer List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 299bb57d9b71be2b033a92033268d8b1c732e4fe Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=299bb57d9b71be2b033a92033268d8b1c732e4fe commit 299bb57d9b71be2b033a92033268d8b1c732e4fe Author: Konstantin Belousov AuthorDate: 2023-12-19 15:57:43 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 22:59:16 +0000 bhyve: style, add comma to the last line of designated initializer Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/amd64/vmm/amd/amdvi_hw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 881bfa2ef946..87283325600c 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -1378,5 +1378,5 @@ const struct iommu_ops iommu_ops_amd = { .remove_mapping = amdvi_remove_mapping, .add_device = amdvi_add_device, .remove_device = amdvi_remove_device, - .invalidate_tlb = amdvi_invalidate_tlb + .invalidate_tlb = amdvi_invalidate_tlb, }; From nobody Tue Apr 1 23:07:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZS3YF5LSCz5sG3g; Tue, 01 Apr 2025 23:07: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 4ZS3YF3sGBz3dKb; Tue, 01 Apr 2025 23:07:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L3Blpnpffj6uNAsFGDHusZrjl+scvwspN+uLO9GQHsk=; b=pRf7RywIoYNPU5RB+ccDPKO3Fl1jtK3bhaOk2hQyQIW7BleLazxc/MP3DfTT6RtC4MzSts jQVkB6chG6Y2M1n9GpQ7AHOuHdugSoECdJD1YdYEA+Mviue+AYzRvvIjTDslPikOYaDqpm 0IZYqeeRll+UmRKq6vlY0vuYrOXW1uxUgY/r4EKtPO34dohgQw9t8mJ9Gs1P16FASmCW+O fe7r85ZeWiEW23VxV7rCYCOeC/EbRALzrejjBMS/WCEAxRccQlb5mmXfzfhO1p1XLpM7Sm zbJHbNt1q9I4bvZZSmUvYXYoi2hxg1Tc7cWeTsBW1ro/qq9wXIYprQvAMRz1hQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548833; a=rsa-sha256; cv=none; b=vLp/GKJ6mu37B71cN4qJqxc+pOtRNL0rjIbwiDOT80zFNxlMxevMwWVvhx/c9tfit+W9IR rEXt/9MY15Mct8nOkPe4o2V24k1YxSSywjkaYAP4axEpJSNN+AXMnfWFmUNz6ViKDypN/K 4QKyqdVnb42xdHpdS5vFvyIa1dYfubhrSqdxQp99TRujWkCCjGifwmLZ0/HcIyXz1QVEbd 062iv2NBQRT+pgcLhAspHvz0NxFkHk0Mr/W0luV7LBAUVzy5RTINLmyfyn0ZxSnXHn+22Z mEeW4NFZ4kYoPW6dUNEskgKVqedV8qbDAJ2y7YngVa4giDxr8W7lmG5BXQJbDA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L3Blpnpffj6uNAsFGDHusZrjl+scvwspN+uLO9GQHsk=; b=aHEaOGYsUnmVjrQmc5MxTGvgLJJwYPCgTMtMW74YzekRGhAhZbDghV19VMlAm0kRExSC9S asKvWrVdu1+HxvRuyqn+QqC7z5ICfoxSi9HoccIIaH/OuHnvRGOudw/5SglGNz6ot6V1Kk SEYpiMXYuL6tW0FvqQsOmQYPnK8sYM8OAyUVck4IXYAUggrPF3VKTL+CfN8CdwmvIkGYis wEJXddi3mwNkCHyuQvgtkna+nKLAqxeky+lnnYFFsbpXGPaxC0OOUAwuX13psAsEOwTUPg ggE6gs4PmJC+eJlpkzO6nnRcupxa8IlMZDj5uSz4/1G8egZQ82tYRmczG8K8YQ== 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 4ZS3YF38cWzqw2; Tue, 01 Apr 2025 23:07: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 531N7DRt050454; Tue, 1 Apr 2025 23:07:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531N7D7b050451; Tue, 1 Apr 2025 23:07:13 GMT (envelope-from git) Date: Tue, 1 Apr 2025 23:07:13 GMT Message-Id: <202504012307.531N7D7b050451@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: 512bb0da518b - main - x86/dmar: add dmar_is_running() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 512bb0da518be1dff3f937b7f653c6d3deb4b071 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=512bb0da518be1dff3f937b7f653c6d3deb4b071 commit 512bb0da518be1dff3f937b7f653c6d3deb4b071 Author: Konstantin Belousov AuthorDate: 2023-12-14 02:06:04 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 23:01:34 +0000 x86/dmar: add dmar_is_running() Sponsored by: Advanced Micro Devices (AMD) Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/x86/iommu/intel_dmar.h | 2 ++ sys/x86/iommu/intel_drv.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/sys/x86/iommu/intel_dmar.h b/sys/x86/iommu/intel_dmar.h index 57a66aae69b2..018501082dd2 100644 --- a/sys/x86/iommu/intel_dmar.h +++ b/sys/x86/iommu/intel_dmar.h @@ -263,6 +263,8 @@ int dmar_map_ioapic_intr(u_int ioapic_id, u_int cpu, u_int vector, bool edge, bool activehi, int irq, u_int *cookie, uint32_t *hi, uint32_t *lo); int dmar_unmap_ioapic_intr(u_int ioapic_id, u_int *cookie); +int dmar_is_running(void); + extern int haw; extern int dmar_rmrr_enable; diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c index dd2a3d1a631f..28db14bba95b 100644 --- a/sys/x86/iommu/intel_drv.c +++ b/sys/x86/iommu/intel_drv.c @@ -86,6 +86,7 @@ static device_t *dmar_devs; static int dmar_devcnt; +static bool dmar_running = false; typedef int (*dmar_iter_t)(ACPI_DMAR_HEADER *, void *); @@ -539,6 +540,7 @@ dmar_attach(device_t dev) DMAR_UNLOCK(unit); #endif + dmar_running = true; return (0); } @@ -1055,6 +1057,13 @@ dmar_inst_rmrr_iter(ACPI_DMAR_HEADER *dmarh, void *arg) } +int +dmar_is_running(void) +{ + + return (dmar_running ? 0 : ENXIO); +} + /* * Pre-create all contexts for the DMAR which have RMRR entries. */ From nobody Tue Apr 1 23:07:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZS3YH3w7rz5sG9g; Tue, 01 Apr 2025 23:07: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 4ZS3YG4nJYz3d8S; Tue, 01 Apr 2025 23:07:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548834; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o/NZZ3RYyNlKY/Ay+b3ZVANCROMduM/gIVf2uI+z9Ks=; b=yny2Sc0tmqPzsXHAXw63YggRvpT/qxwodVUnQD0CNoep5Uhs526Np1pB1vi5N2FPERZYmo SOMtTfwQ8h6ElbQGFV2ZY1+EdilTx195XmZTiWUFbc7ymt13DfpLRDmqfDAqnh/MZwqCkZ CxpG9G/5KJX2RR21Wm4U2X4OLp3Q8aixXAYQ3yOEods/nzopdKHQLDfyX9bOS4TxS9oPbr G4XvbegY2M3MRPAKgr6GQOu/nYOxe3M50WGZkfVjV+OVDWGrHVjsX+xtDcwhVsi+Iem+Pz Mt6HoqQCkEvbJZjBV2Rvp7gzItjxSoN1Bhh4Tl5Ag36w/4QKYdoODSlJRScGwA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743548834; a=rsa-sha256; cv=none; b=v0hGedQhOM45MDLtn5PJM1konLjFuMVgujQxJQGBBaQyESEd7K+AYEDxjf+KQ8lpo7fgAO PsW6d4x+LUSLhTCnzIN8zU9dlBYgcuXipHV7sXEqeHw7TDxY/vp/TUX+KJ25XERoLhHDqS raW6Kg2FnKArMy9/KsEtOrhnvbSZMBFCLznIeIMTumqHT1DF03Hs3J/LsS9YalbnOYKcuX Ac0MawKQab9e2XW8YiMYSYRGIIkSKucUmCubgBgbtejdpFaHo6r2x1Emo3RwCe2o6Od43f KyUPvi5YkVgVKqGavr8vcZ5VVJISQUGTBoNGfaleVFlvgKlXZ6orAHdcMJMECg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743548834; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=o/NZZ3RYyNlKY/Ay+b3ZVANCROMduM/gIVf2uI+z9Ks=; b=agLkO30liVoVBlAMK8hRlM/jccAi9g42N89e4vKyGqrR535hwx+1CkXTSosiid9YO/S1IF Pi5IKW8MZPE+RIF3bXemGEYGViPKGdFWu235t9EEEMYSN9UZyx95csEryUguboIUBo7t81 oV1JsElDov1K0Ot1aCZnVC9kRAdRLeSUSUVkEIe3DK+K5MPdFOKSGd5xVE//U1JU72aplN 9T4KAeo8G27QUt7jlkvhAzLpEOruf/g3g9Adz4yMVVBaSN+JzbYUipz1AqwtuOFz5lHWGN 46NKo+PDQscSOHopBTxpy3jnuACtLdeM97eZkJyPvBIz1hwx8/t46YkVW4mARQ== 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 4ZS3YG4NfVzqw3; Tue, 01 Apr 2025 23:07: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 531N7Ero050486; Tue, 1 Apr 2025 23:07:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 531N7EgE050483; Tue, 1 Apr 2025 23:07:14 GMT (envelope-from git) Date: Tue, 1 Apr 2025 23:07:14 GMT Message-Id: <202504012307.531N7EgE050483@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: 3b1093e2562a - main - x86/amdiommu: add amdiommu_is_running() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3b1093e2562a62c96d8e80a306e19f4ac2d2a2f4 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=3b1093e2562a62c96d8e80a306e19f4ac2d2a2f4 commit 3b1093e2562a62c96d8e80a306e19f4ac2d2a2f4 Author: Konstantin Belousov AuthorDate: 2025-01-25 09:58:35 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-01 23:01:42 +0000 x86/amdiommu: add amdiommu_is_running() Sponsored by: Advanced Micro Devices (AMD) Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/x86/iommu/amd_drv.c | 8 ++++++++ sys/x86/iommu/amd_iommu.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/sys/x86/iommu/amd_drv.c b/sys/x86/iommu/amd_drv.c index 77c4c68765c9..bf7ac4b157c4 100644 --- a/sys/x86/iommu/amd_drv.c +++ b/sys/x86/iommu/amd_drv.c @@ -71,6 +71,7 @@ #include static int amdiommu_enable = 0; +static bool amdiommu_running = false; /* * All enumerated AMD IOMMU units. @@ -555,6 +556,7 @@ amdiommu_attach(device_t dev) AMDIOMMU_UNLOCK(sc); TAILQ_INSERT_TAIL(&amdiommu_units, sc, unit_next); + amdiommu_running = true; return (0); errout8: @@ -617,6 +619,12 @@ static driver_t amdiommu_driver = { EARLY_DRIVER_MODULE(amdiommu, pci, amdiommu_driver, 0, 0, BUS_PASS_SUPPORTDEV); MODULE_DEPEND(amdiommu, pci, 1, 1, 1); +int +amdiommu_is_running(void) +{ + return (amdiommu_running ? 0 : ENXIO); +} + static struct amdiommu_unit * amdiommu_unit_by_device_id(u_int pci_seg, u_int device_id) { diff --git a/sys/x86/iommu/amd_iommu.h b/sys/x86/iommu/amd_iommu.h index 64dd13db9745..b9f07418ca9d 100644 --- a/sys/x86/iommu/amd_iommu.h +++ b/sys/x86/iommu/amd_iommu.h @@ -239,4 +239,6 @@ int amdiommu_domain_alloc_pgtbl(struct amdiommu_domain *domain); void amdiommu_domain_free_pgtbl(struct amdiommu_domain *domain); extern const struct iommu_domain_map_ops amdiommu_domain_map_ops; +int amdiommu_is_running(void); + #endif From nobody Wed Apr 2 02:57:56 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZS8gT34hdz5sWfD; Wed, 02 Apr 2025 02:57: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 4ZS8gT0mnRz3gbB; Wed, 02 Apr 2025 02:57:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743562677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pKlEBTmBwJNSzAVR0r41/hH1ZxZ5RMeNMqLnr509ACI=; b=H3MCZZdSd1fOAMDAz9c2+9GzHuhuNZI8O5INz/8w3dePqksYvVleSCCpSANY+G1NAsvUH/ I0axm/cM6A4e0sr7GgqxlQqYu0LreayH+SocVRLSpf5+TSioKjR8mF1XVoGVdCT+XdvfBr ViclQ+w0J4roRTEp6EkWuBcD2AWb/jjn3+WPTQy4HQ+YL7SVx3yMROJDUS4UWeO/NJG0iy TVJcMHzwf6ZAuM5alCgMEakSddwtjORwoXvzNjrfKQ093t6co7G8SeN1iWK4iVixvjhk4S 6PiI2obryIZf4xlLVNCrYhcPClBV6c7yF3ilwMyvYCsCmrcZktav33k40dIceg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743562677; a=rsa-sha256; cv=none; b=pgzJRFR9fTQEGq/hdjzXCDM3c144owWwjSNw6IejlO1jjGPeCa5623MXe+YLgxIDWxlMQW H1dU4DiMG6IQDerV0fNfxLMMPIEkLzFT/bRisChTigdXSt5tSF0h1cRm2JQZl5KYrymKjZ uCVK8HnyGOSIgfsUC9SumC7GbgGcRKkdnagdAKqttU9nXy93Q92JxEjbHp5MCF17LG8Xpo rPx5UyeHDOm0nGXIwrsqXceQtxlDAgMlVXtxyFQApeJHMdv/C6o2CRgn0EH1xAYl4X5KFO f8Dk8X2oFCEgA4YXz0yH2OnNudLWi3lhmbpIPVvg7Tbev2Xd6AakHr4ywmGENw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743562677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pKlEBTmBwJNSzAVR0r41/hH1ZxZ5RMeNMqLnr509ACI=; b=lKTzQAe6nksJMUwLwupjYOrLnOIQ688gca3FqrHYScmkDPVY9j4bBLV5cPNWBMFLfRrzui wlW03ETlyKH3c2+mNKJTZojlkFYCRczHAPd1e0LB0+LcbCuWkbSg7fOLv8YVRe7lJIIJWs RT+QM+WSNYgPNYGy588FhjtxVCTR+jdRkSJnKTNOA5OiL4H6VTKFNLSMGBNRoQ/m0yFnNH VME9vUta2BCBF5QYLtm3IhnAHYtFdy4cFX/DvSx+Clb2wIG7USjQttewtasbvudvmDnbPw CP27kwhCD7ifArSgLt5HQefe1FvO7UnNHYPuv0ceEJvq4jbDrNDwyoPubjpjVQ== 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 4ZS8gT0LwwzyCV; Wed, 02 Apr 2025 02:57: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 5322vuho078590; Wed, 2 Apr 2025 02:57:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5322vuj0078587; Wed, 2 Apr 2025 02:57:56 GMT (envelope-from git) Date: Wed, 2 Apr 2025 02:57:56 GMT Message-Id: <202504020257.5322vuj0078587@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: ba2336d3044c - main - arm64: add a driver for the uart found on Apple Silicon machines List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ba2336d3044c681462224c12879ecc8f659be54a Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ba2336d3044c681462224c12879ecc8f659be54a commit ba2336d3044c681462224c12879ecc8f659be54a Author: Kyle Evans AuthorDate: 2025-04-02 02:57:16 +0000 Commit: Kyle Evans CommitDate: 2025-04-02 02:57:17 +0000 arm64: add a driver for the uart found on Apple Silicon machines This is a revival of the old exynos4210 driver, with some additional bits to configure the apple "s5l" uart (which is actually slightly different to operate). This hasn't been tested on anything that would hit the non-s5l path, so banish it off to the apple/ domain until someone cares to confirm that none of the other hardware is broken -- it may be that nobody does, but the complexity isn't too bad: mostly the driver1 construct added to the uart_bas that we use to avoid having a whole bunch of shims for uart driver methods and hardcoded references to the cfg structs. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D48120 --- sys/arm64/apple/exynos_uart.c | 568 ++++++++++++++++++++++++++++++++++++++++++ sys/arm64/apple/exynos_uart.h | 136 ++++++++++ sys/conf/files.arm64 | 1 + sys/dev/uart/uart.h | 1 + 4 files changed, 706 insertions(+) diff --git a/sys/arm64/apple/exynos_uart.c b/sys/arm64/apple/exynos_uart.c new file mode 100644 index 000000000000..2767c338b918 --- /dev/null +++ b/sys/arm64/apple/exynos_uart.c @@ -0,0 +1,568 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2003 Marcel Moolenaar + * Copyright (c) 2007-2009 Andrew Turner + * Copyright (c) 2013 Ruslan Bukin + * All rights reserved. + * + * 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 ``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 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include "uart_if.h" + +struct exynos_uart_cfg; + +#define DEF_CLK 100000000 + +static int sscomspeed(long, long); +static int exynos4210_uart_param(struct uart_bas *, int, int, int, int); + +/* + * Low-level UART interface. + */ +static int exynos4210_probe(struct uart_bas *bas); +static void exynos4210_init_common(struct exynos_uart_cfg *cfg, + struct uart_bas *bas, int, int, int, int); +static void exynos4210_init(struct uart_bas *bas, int, int, int, int); +static void exynos4210_s5l_init(struct uart_bas *bas, int, int, int, int); +static void exynos4210_term(struct uart_bas *bas); +static void exynos4210_putc(struct uart_bas *bas, int); +static int exynos4210_rxready(struct uart_bas *bas); +static int exynos4210_getc(struct uart_bas *bas, struct mtx *mtx); + +extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs; + +static struct uart_ops uart_exynos4210_ops; +static struct uart_ops uart_s5l_ops; +static kobj_method_t exynos4210_methods[]; +static kobj_method_t s5l_methods[]; +static struct ofw_compat_data compat_data[]; + +enum exynos_uart_type { + EXUART_4210, + EXUART_S5L, +}; + +struct exynos_uart_cfg { + enum exynos_uart_type cfg_type; + uint64_t cfg_uart_full_mask; +}; + +struct exynos_uart_class { + struct uart_class base; + struct exynos_uart_cfg cfg; +}; + +static struct exynos_uart_class uart_ex4210_class = { + .base = { + "exynos4210 class", + exynos4210_methods, + 1, + .uc_ops = &uart_exynos4210_ops, + .uc_range = 8, + .uc_rclk = 0, + .uc_rshift = 0 + }, + .cfg = { + .cfg_type = EXUART_4210, + .cfg_uart_full_mask = UFSTAT_TXFULL, + }, +}; + + +static struct exynos_uart_class uart_s5l_class = { + .base = { + "s5l class", + s5l_methods, + 1, + .uc_ops = &uart_s5l_ops, + .uc_range = 8, + .uc_rclk = 0, + .uc_rshift = 0 + }, + .cfg = { + .cfg_type = EXUART_S5L, + .cfg_uart_full_mask = UFSTAT_S5L_TXFULL, + }, +}; + +static int +sscomspeed(long speed, long frequency) +{ + int x; + + if (speed <= 0 || frequency <= 0) + return (-1); + x = (frequency / 16) / speed; + return (x-1); +} + +static int +exynos4210_uart_param(struct uart_bas *bas, int baudrate, int databits, + int stopbits, int parity) +{ + int brd, ulcon; + + ulcon = 0; + + switch(databits) { + case 5: + ulcon |= ULCON_LENGTH_5; + break; + case 6: + ulcon |= ULCON_LENGTH_6; + break; + case 7: + ulcon |= ULCON_LENGTH_7; + break; + case 8: + ulcon |= ULCON_LENGTH_8; + break; + default: + return (EINVAL); + } + + switch (parity) { + case UART_PARITY_NONE: + ulcon |= ULCON_PARITY_NONE; + break; + case UART_PARITY_ODD: + ulcon |= ULCON_PARITY_ODD; + break; + case UART_PARITY_EVEN: + ulcon |= ULCON_PARITY_EVEN; + break; + case UART_PARITY_MARK: + case UART_PARITY_SPACE: + default: + return (EINVAL); + } + + if (stopbits == 2) + ulcon |= ULCON_STOP; + + uart_setreg(bas, SSCOM_ULCON, ulcon); + + /* baudrate may be negative, in which case we just leave it alone. */ + if (baudrate > 0) { + brd = sscomspeed(baudrate, bas->rclk); + uart_setreg(bas, SSCOM_UBRDIV, brd); + } + + return (0); +} + +static struct uart_ops uart_exynos4210_ops = { + .probe = exynos4210_probe, + .init = exynos4210_init, + .term = exynos4210_term, + .putc = exynos4210_putc, + .rxready = exynos4210_rxready, + .getc = exynos4210_getc, +}; + +static struct uart_ops uart_s5l_ops = { + .probe = exynos4210_probe, + .init = exynos4210_s5l_init, + .term = exynos4210_term, + .putc = exynos4210_putc, + .rxready = exynos4210_rxready, + .getc = exynos4210_getc, +}; + +static int +exynos4210_probe(struct uart_bas *bas) +{ + + return (0); +} + +static void +exynos4210_init_common(struct exynos_uart_cfg *cfg, struct uart_bas *bas, + int baudrate, int databits, int stopbits, int parity) +{ + + if (bas->rclk == 0) + bas->rclk = DEF_CLK; + + KASSERT(bas->rclk != 0, ("exynos4210_init: Invalid rclk")); + + bas->driver1 = cfg; + + /* Clear interrupts */ + if (cfg->cfg_type == EXUART_S5L) { + uart_setreg(bas, SSCOM_UTRSTAT, 0); + } else { + uart_setreg(bas, SSCOM_UCON, 0); + uart_setreg(bas, SSCOM_UFCON, + UFCON_TXTRIGGER_8 | UFCON_RXTRIGGER_8 | + UFCON_TXFIFO_RESET | UFCON_RXFIFO_RESET | + UFCON_FIFO_ENABLE); + } + + exynos4210_uart_param(bas, baudrate, databits, stopbits, parity); + + /* Enable UART. */ + if (cfg->cfg_type == EXUART_S5L) { + uart_setreg(bas, SSCOM_UCON, uart_getreg(bas, SSCOM_UCON) | + UCON_TOINT | UCON_S5L_RXTHRESH | UCON_S5L_RX_TIMEOUT | + UCON_S5L_TXTHRESH); + } else { + uart_setreg(bas, SSCOM_UCON, uart_getreg(bas, SSCOM_UCON) | + UCON_TXMODE_INT | UCON_RXMODE_INT | UCON_TOINT); + uart_setreg(bas, SSCOM_UMCON, UMCON_RTS); + } +} + +static void +exynos4210_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, + int parity) +{ + + return (exynos4210_init_common(&uart_ex4210_class.cfg, bas, baudrate, + databits, stopbits, parity)); +} + +static void +exynos4210_s5l_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, + int parity) +{ + + return (exynos4210_init_common(&uart_s5l_class.cfg, bas, baudrate, + databits, stopbits, parity)); +} + +static void +exynos4210_term(struct uart_bas *bas) +{ + /* XXX */ +} + +static void +exynos4210_putc(struct uart_bas *bas, int c) +{ + struct exynos_uart_cfg *cfg; + + cfg = bas->driver1; + + while ((bus_space_read_4(bas->bst, bas->bsh, SSCOM_UFSTAT) & + cfg->cfg_uart_full_mask) != 0) + continue; + + uart_setreg(bas, SSCOM_UTXH, c); + uart_barrier(bas); +} + +static int +exynos4210_rxready_impl(struct uart_bas *bas, bool intr) +{ + struct exynos_uart_cfg *cfg; + int ufstat, utrstat; + + cfg = bas->driver1; + if (!intr || cfg->cfg_type != EXUART_S5L) { + utrstat = bus_space_read_4(bas->bst, bas->bsh, SSCOM_UTRSTAT); + + if ((utrstat & UTRSTAT_RXREADY) != 0) + return (1); + if (cfg->cfg_type != EXUART_S5L) + return (0); + } + + ufstat = bus_space_read_4(bas->bst, bas->bsh, SSCOM_UFSTAT); + + return ((ufstat & (UFSTAT_RXCOUNT | UFSTAT_RXFULL)) != 0); +} + +static int +exynos4210_rxready(struct uart_bas *bas) +{ + + return (exynos4210_rxready_impl(bas, false)); +} + +static int +exynos4210_getc(struct uart_bas *bas, struct mtx *mtx) +{ + + while (!exynos4210_rxready(bas)) { + continue; + } + + return (uart_getreg(bas, SSCOM_URXH)); +} + +static int exynos4210_bus_probe(struct uart_softc *sc); +static int exynos4210_bus_attach(struct uart_softc *sc); +static int exynos4210_bus_flush(struct uart_softc *, int); +static int exynos4210_bus_getsig(struct uart_softc *); +static int exynos4210_bus_ioctl(struct uart_softc *, int, intptr_t); +static int exynos4210_bus_ipend(struct uart_softc *); +static int s5l_bus_ipend(struct uart_softc *); +static int exynos4210_bus_param(struct uart_softc *, int, int, int, int); +static int exynos4210_bus_receive(struct uart_softc *); +static int exynos4210_bus_setsig(struct uart_softc *, int); +static int exynos4210_bus_transmit(struct uart_softc *); + +static kobj_method_t exynos4210_methods[] = { + KOBJMETHOD(uart_probe, exynos4210_bus_probe), + KOBJMETHOD(uart_attach, exynos4210_bus_attach), + KOBJMETHOD(uart_flush, exynos4210_bus_flush), + KOBJMETHOD(uart_getsig, exynos4210_bus_getsig), + KOBJMETHOD(uart_ioctl, exynos4210_bus_ioctl), + KOBJMETHOD(uart_ipend, exynos4210_bus_ipend), + KOBJMETHOD(uart_param, exynos4210_bus_param), + KOBJMETHOD(uart_receive, exynos4210_bus_receive), + KOBJMETHOD(uart_setsig, exynos4210_bus_setsig), + KOBJMETHOD(uart_transmit, exynos4210_bus_transmit), + {0, 0 } +}; + +static kobj_method_t s5l_methods[] = { + KOBJMETHOD(uart_probe, exynos4210_bus_probe), + KOBJMETHOD(uart_attach, exynos4210_bus_attach), + KOBJMETHOD(uart_flush, exynos4210_bus_flush), + KOBJMETHOD(uart_getsig, exynos4210_bus_getsig), + KOBJMETHOD(uart_ioctl, exynos4210_bus_ioctl), + KOBJMETHOD(uart_ipend, s5l_bus_ipend), + KOBJMETHOD(uart_param, exynos4210_bus_param), + KOBJMETHOD(uart_receive, exynos4210_bus_receive), + KOBJMETHOD(uart_setsig, exynos4210_bus_setsig), + KOBJMETHOD(uart_transmit, exynos4210_bus_transmit), + {0, 0 } +}; + +int +exynos4210_bus_probe(struct uart_softc *sc) +{ + + sc->sc_txfifosz = 16; + sc->sc_rxfifosz = 16; + + return (0); +} + +static int +exynos4210_bus_attach(struct uart_softc *sc) +{ + struct exynos_uart_class *class; + struct exynos_uart_cfg *cfg; + + sc->sc_hwiflow = 0; + sc->sc_hwoflow = 0; + + class = (struct exynos_uart_class *)ofw_bus_search_compatible(sc->sc_dev, + compat_data)->ocd_data; + MPASS(class != NULL); + + cfg = &class->cfg; + MPASS(sc->sc_sysdev == NULL || cfg == sc->sc_sysdev->bas.driver1); + sc->sc_bas.driver1 = cfg; + + return (0); +} + +static int +exynos4210_bus_transmit(struct uart_softc *sc) +{ + struct exynos_uart_cfg *cfg; + int i; + int reg; + + cfg = sc->sc_bas.driver1; + uart_lock(sc->sc_hwmtx); + + /* tx fifo has room, fire away. */ + for (i = 0; i < sc->sc_txdatasz; i++) { + uart_setreg(&sc->sc_bas, SSCOM_UTXH, sc->sc_txbuf[i]); + uart_barrier(&sc->sc_bas); + } + + if (cfg->cfg_type == EXUART_S5L) { + sc->sc_txbusy = 1; + } else { + /* unmask TX interrupt */ + reg = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM); + reg &= ~(1 << 2); + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTM, + reg); + } + + uart_unlock(sc->sc_hwmtx); + + return (0); +} + +static int +exynos4210_bus_setsig(struct uart_softc *sc, int sig) +{ + + return (0); +} + +static int +exynos4210_bus_receive(struct uart_softc *sc) +{ + struct uart_bas *bas; + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + + while (exynos4210_rxready_impl(bas, true)) { + if (uart_rx_full(sc)) { + sc->sc_rxbuf[sc->sc_rxput] = UART_STAT_OVERRUN; + break; + } + + uart_rx_put(sc, uart_getreg(&sc->sc_bas, SSCOM_URXH)); + } + + uart_unlock(sc->sc_hwmtx); + + return (0); +} + +static int +exynos4210_bus_param(struct uart_softc *sc, int baudrate, int databits, + int stopbits, int parity) +{ + int error; + + if (sc->sc_bas.rclk == 0) + sc->sc_bas.rclk = DEF_CLK; + + KASSERT(sc->sc_bas.rclk != 0, ("exynos4210_init: Invalid rclk")); + + uart_lock(sc->sc_hwmtx); + error = exynos4210_uart_param(&sc->sc_bas, baudrate, databits, stopbits, + parity); + uart_unlock(sc->sc_hwmtx); + + return (error); +} + +static int +s5l_bus_ipend(struct uart_softc *sc) +{ + int ipend; + uint32_t uerstat, utrstat; + + ipend = 0; + uart_lock(sc->sc_hwmtx); + utrstat = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UTRSTAT); + + if (utrstat & (UTRSTAT_S5L_RXTHRESH | UTRSTAT_S5L_RX_TIMEOUT)) + ipend |= SER_INT_RXREADY; + + if (utrstat & UTRSTAT_S5L_TXTHRESH) + ipend |= SER_INT_TXIDLE; + + uerstat = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UERSTAT); + if ((uerstat & UERSTAT_BREAK) != 0) + ipend |= SER_INT_BREAK; + + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UTRSTAT, + utrstat); + uart_unlock(sc->sc_hwmtx); + + return (ipend); +} + +static int +exynos4210_bus_ipend(struct uart_softc *sc) +{ + uint32_t ints; + int reg; + int ipend; + + uart_lock(sc->sc_hwmtx); + ints = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTP); + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, SSCOM_UINTP, ints); + + ipend = 0; + if ((ints & UINTP_TXEMPTY) != 0) { + if (sc->sc_txbusy != 0) + ipend |= SER_INT_TXIDLE; + + /* mask TX interrupt */ + reg = bus_space_read_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM); + reg |= UINTM_TXINTR; + bus_space_write_4(sc->sc_bas.bst, sc->sc_bas.bsh, + SSCOM_UINTM, reg); + } + + if ((ints & UINTP_RXREADY) != 0) { + ipend |= SER_INT_RXREADY; + } + + uart_unlock(sc->sc_hwmtx); + return (ipend); +} + +static int +exynos4210_bus_flush(struct uart_softc *sc, int what) +{ + + return (0); +} + +static int +exynos4210_bus_getsig(struct uart_softc *sc) +{ + + return (0); +} + +static int +exynos4210_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) +{ + + return (EINVAL); +} + +static struct ofw_compat_data compat_data[] = { + {"apple,s5l-uart", (uintptr_t)&uart_s5l_class.base}, + {"samsung,exynos4210-uart", (uintptr_t)&uart_ex4210_class.base}, + {NULL, (uintptr_t)NULL}, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); diff --git a/sys/arm64/apple/exynos_uart.h b/sys/arm64/apple/exynos_uart.h new file mode 100644 index 000000000000..6c817252a69a --- /dev/null +++ b/sys/arm64/apple/exynos_uart.h @@ -0,0 +1,136 @@ +/* $NetBSD: s3c2xx0reg.h,v 1.4 2004/02/12 03:47:29 bsh Exp $ */ + +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 2002, 2003 Fujitsu Component Limited + * Copyright (c) 2002, 2003 Genetec Corporation + * All rights reserved. + * + * 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. + * 3. Neither the name of The Fujitsu Component Limited nor the name of + * Genetec corporation may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY FUJITSU COMPONENT LIMITED AND GENETEC + * CORPORATION ``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 FUJITSU COMPONENT LIMITED OR GENETEC + * CORPORATION 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. + */ + +/* s3c2410-specific registers */ +#define UMCON_AFC (1 << 4) /* auto flow control */ +#define UMSTAT_DCTS (1 << 2) /* CTS change */ +#define ULCON_IR (1 << 6) +#define ULCON_PARITY_SHIFT 3 + +/* + * Exynos-specific + * + * UFSTAT_TXFULL register differs between Exynos and others. + * Others have UFSTAT_TXFULL (1 << 9) + */ +#define UFSTAT_TXFULL (1 << 24) +#define UFSTAT_S5L_TXFULL (1 << 9) + +#define SSCOM_UINTM 0x038 +#define UINTM_TXINTR (1 << 2) +#define SSCOM_UINTP 0x030 +#define UINTP_RXREADY (1 << 0) +#define UINTP_TXEMPTY (1 << 2) + +/* common for s3c2800 and s3c24x0 */ +#define SSCOM_ULCON 0x00 /* UART line control */ +#define ULCON_PARITY_NONE (0 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ODD (4 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_EVEN (5 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ONE (6 << ULCON_PARITY_SHIFT) +#define ULCON_PARITY_ZERO (7 << ULCON_PARITY_SHIFT) +#define ULCON_STOP (1 << 2) +#define ULCON_LENGTH_5 0 +#define ULCON_LENGTH_6 1 +#define ULCON_LENGTH_7 2 +#define ULCON_LENGTH_8 3 +#define SSCOM_UCON 0x04 /* UART control */ +#define UCON_TXINT_TYPE (1 << 9) /* Tx interrupt. 0=pulse,1=level */ +#define UCON_TXINT_TYPE_LEVEL UCON_TXINT_TYPE +#define UCON_TXINT_TYPE_PULSE 0 +#define UCON_RXINT_TYPE (1 << 8) /* Rx interrupt */ +#define UCON_RXINT_TYPE_LEVEL UCON_RXINT_TYPE +#define UCON_RXINT_TYPE_PULSE 0 +#define UCON_TOINT (1 << 7) /* Rx timeout interrupt */ +#define UCON_ERRINT (1 << 6) /* receive error interrupt */ +#define UCON_LOOP (1 << 5) /* loopback */ +#define UCON_SBREAK (1 << 4) /* send break */ +#define UCON_TXMODE_DISABLE (0 << 2) +#define UCON_TXMODE_INT (1 << 2) +#define UCON_TXMODE_DMA (2 << 2) +#define UCON_TXMODE_MASK (3 << 2) +#define UCON_RXMODE_DISABLE (0 << 0) +#define UCON_RXMODE_INT (1 << 0) +#define UCON_RXMODE_DMA (2 << 0) +#define UCON_RXMODE_MASK (3 << 0) +#define UCON_S5L_RX_TIMEOUT (0x1 << 9) +#define UCON_S5L_RXTHRESH (0x1 << 12) +#define UCON_S5L_TXTHRESH (0x1 << 13) +#define SSCOM_UFCON 0x08 /* FIFO control */ +#define UFCON_TXTRIGGER_0 (0 << 6) +#define UFCON_TXTRIGGER_4 (1 << 6) +#define UFCON_TXTRIGGER_8 (2 << 6) +#define UFCON_TXTRIGGER_16 (3 << 6) +#define UFCON_RXTRIGGER_4 (0 << 4) +#define UFCON_RXTRIGGER_8 (1 << 4) +#define UFCON_RXTRIGGER_12 (2 << 4) +#define UFCON_RXTRIGGER_16 (3 << 4) +#define UFCON_TXFIFO_RESET (1 << 2) +#define UFCON_RXFIFO_RESET (1 << 1) +#define UFCON_FIFO_ENABLE (1 << 0) +#define SSCOM_UMCON 0x0c /* MODEM control */ +#define UMCON_RTS (1 << 0) /* Request to send */ +#define SSCOM_UTRSTAT 0x10 /* Status register */ +#define UTRSTAT_TXSHIFTER_EMPTY ( 1<< 2) +#define UTRSTAT_TXEMPTY (1 << 1) /* TX fifo or buffer empty */ +#define UTRSTAT_RXREADY (1 << 0) /* RX fifo or buffer is not empty */ +#define UTRSTAT_S5L_RXTHRESH (0x1 << 4) +#define UTRSTAT_S5L_TXTHRESH (0x1 << 5) +#define UTRSTAT_S5L_RX_TIMEOUT (0x1 << 9) +#define SSCOM_UERSTAT 0x14 /* Error status register */ +#define UERSTAT_BREAK (1 << 3) /* Break signal, not 2410 */ +#define UERSTAT_FRAME (1 << 2) /* Frame error */ +#define UERSTAT_PARITY (1 << 1) /* Parity error, not 2410 */ +#define UERSTAT_OVERRUN (1 << 0) /* Overrun */ +#define UERSTAT_ALL_ERRORS \ + (UERSTAT_OVERRUN|UERSTAT_BREAK|UERSTAT_FRAME|UERSTAT_PARITY) +#define SSCOM_UFSTAT 0x18 /* Fifo status register */ +#define UFSTAT_RXFULL (1 <<8) /* Rx fifo full */ +#define UFSTAT_TXCOUNT_SHIFT 4 /* TX FIFO count */ +#define UFSTAT_TXCOUNT (0x0f << UFSTAT_TXCOUNT_SHIFT) +#define UFSTAT_RXCOUNT_SHIFT 0 /* RX FIFO count */ +#define UFSTAT_RXCOUNT (0x0f << UFSTAT_RXCOUNT_SHIFT) +#define SSCOM_UMSTAT 0x1c /* Modem status register */ +#define UMSTAT_CTS (1 << 0) /* Clear to send */ +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define SSCOM_UTXH 0x20 /* Transmit data register */ +#define SSCOM_URXH 0x24 /* Receive data register */ +#else +#define SSCOM_UTXH 0x23 /* Transmit data register */ +#define SSCOM_URXH 0x27 /* Receive data register */ +#endif +#define SSCOM_UBRDIV 0x28 /* baud-reate divisor */ +#define SSCOM_SIZE 0x2c diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 480f1ac78905..74387914043e 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -548,6 +548,7 @@ arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ # Apple arm64/apple/apple_aic.c optional soc_apple_t8103 fdt arm64/apple/apple_wdog.c optional soc_apple_t8103 fdt +arm64/apple/exynos_uart.c optional soc_apple_t8103 fdt # Broadcom arm64/broadcom/brcmmdio/mdio_mux_iproc.c optional soc_brcm_ns2 fdt diff --git a/sys/dev/uart/uart.h b/sys/dev/uart/uart.h index 9b80f0148dc2..b9401996e655 100644 --- a/sys/dev/uart/uart.h +++ b/sys/dev/uart/uart.h @@ -40,6 +40,7 @@ struct uart_bas { bus_space_tag_t bst; bus_space_handle_t bsh; + void *driver1; u_int chan; u_int rclk; u_int regshft; From nobody Wed Apr 2 07:53:25 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSHDQ2Pxyz5rty7; Wed, 02 Apr 2025 07:53: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 4ZSHDQ0Vl6z48N4; Wed, 02 Apr 2025 07:53:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743580406; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tbdBvr5xcWtnX2QajG2ZNYSVG7qB95c7dfvftwUOdIo=; b=V8gv/Z1aoK9hL21hidGNgHNEmRknQyAqgDfzMz9r7K0U5+A7hAsr1+sQaRl+zSLumZS7Or tjNue7ovnSAH9Agb6ULboxPef9qZbNdd3KtpoBezmkLiyNlDaBMw29PnCwp/D0oBxcQwJd Ch5NhecbuyChIfA4p1bRL3usfgGTcKdhtuBL36UbgwfnrvSEWB00Pewt32El6nIhNMFobx qfM58ddTughz3R4sVOEyP3Qmx5d0f12ZCCrNlBf7RjAnZuzoiV4DVxdNWJoeqiJZn0qVWA ls3tOzepfQY41ARibF/bXiI0HLZRZ+SNKreVdyw0dX92N2ozjhkK1RVE1Ye6XQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743580406; a=rsa-sha256; cv=none; b=NfMQIAjtVlgGX/bDElp0LPOXT64pqv0c3r5JVoMiyRH+axZB/mjqkxQ+kKdwhOGNGBcyXr l6ijpSszXbd15OkK1f7ZYMCW+IWU79V06Gtvm+WZSo/1WMPCHAR1vpDws25l+83Fb0aY5U 6H1xpyWyx8K26+zgc6EJaHQLyEfqp+TqAYntqrh5JYtxwlW7cq/bBYWDAdS9BODujxNbme exyIKarv/PN6QSTGOWpiuP69fg+7HnOya2RoORVKQDZNUT/y3WXF4P00EAEHq4pEofgFU7 m7gBQi3S/JdSJiz8Ice7WBJPNmSD0/anVHUFOC7QPVtT5JFo6xIsR30S93oxUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743580406; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tbdBvr5xcWtnX2QajG2ZNYSVG7qB95c7dfvftwUOdIo=; b=AaYqZIoXbvNyYCSLglXq7QUBU7StfGmFMDa0bzGaf79ozp2g9O7jnGGpC50HNkcM/4gJ6r TMfySfqlyoSYqAJ/lDPWHoox4/DUy2d1RVrlQSki0ufzsVFrFLB60KMyC/baELBZ50Y4TH fXlXjtxCexvFAn0XwkHgCY5MMhL1L1G/1vmjBKdNohT/LnO6b0SiuG8aJ1yq3tmJ7GcEWn wedGfS7XVVC0UYdU4kbk2i71sSQCB7L6MrnlR22IzWNuXL6Dh6m9NB4qlbWv7e4rmJLfc2 TfQYzeVRzaeVnfUEUamglDy2sh7QMDOVgHjxIKclo9aiGBkvr7dHweTVG+2WyQ== 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 4ZSHDQ042Gz16dm; Wed, 02 Apr 2025 07:53: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 5327rPGQ038964; Wed, 2 Apr 2025 07:53:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5327rPq6038961; Wed, 2 Apr 2025 07:53:25 GMT (envelope-from git) Date: Wed, 2 Apr 2025 07:53:25 GMT Message-Id: <202504020753.5327rPq6038961@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Andrey V. Elsukov" Subject: git: 5b6d576d22bc - stable/14 - tests: fix test for NULL encription List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ae X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5b6d576d22bc15e8f6e71358c86d6e0df6ab8bcd Auto-Submitted: auto-generated The branch stable/14 has been updated by ae: URL: https://cgit.FreeBSD.org/src/commit/?id=5b6d576d22bc15e8f6e71358c86d6e0df6ab8bcd commit 5b6d576d22bc15e8f6e71358c86d6e0df6ab8bcd Author: Andrey V. Elsukov AuthorDate: 2025-03-25 07:23:40 +0000 Commit: Andrey V. Elsukov CommitDate: 2025-04-02 07:52:32 +0000 tests: fix test for NULL encription After 04207850a9b9 it is required that key length is not zero. Add some key to avoid error. Reported by: markj (cherry picked from commit b6708045590712930c533e916e3d6fdfe48ec5ba) --- tests/sys/netipsec/tunnel/empty.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sys/netipsec/tunnel/empty.sh b/tests/sys/netipsec/tunnel/empty.sh index dc1d3708f744..56480d21f4ec 100755 --- a/tests/sys/netipsec/tunnel/empty.sh +++ b/tests/sys/netipsec/tunnel/empty.sh @@ -11,7 +11,7 @@ v4_head() v4_body() { # Can't use filename "null" for this script: PR 223564 - ist_test 4 null "" + ist_test 4 null "1234" } v4_cleanup() @@ -28,7 +28,7 @@ v6_head() v6_body() { - ist_test 6 null "" + ist_test 6 null "5678" } v6_cleanup() From nobody Wed Apr 2 07:54:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSHFg4S7Lz5rtyl; Wed, 02 Apr 2025 07:54:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSHFg3lKXz4945; Wed, 02 Apr 2025 07:54:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743580471; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eodzRu6LPNUbHuYImpE5HxgNUFlNvp4cH2Vz/cSHuDc=; b=x6P+C+v3+UstSzKF/0k51/cp7p8BnKgx1Y5SFWxeb4NXcPk/iCemmQMfVMTnHEa9XkD7tb 2gGzYgMfeO30Kd079vAjz7wysSZqvYHsTMvK3RGg84LfNGq1T+L3TQCECi3DIp86MRUzau IrSshslOMSb2LFkQq6uAZhIIWY2bBA7Wn8/ww0cCl/rFgbNm/vDLEmokS+8wAKBJtTF3wY iBeAmayoFzyVwed0IgEj+i/K/XsHTQWoKcXFvyGCd3yHFk5Kdz5vjCiIEQo65b0wO1VHdF 8HNJ39KQN0sfyiHkr/JOscF7d6LpuLarNU1mQgha12GwtdgupqN/mwmlUB81pQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743580471; a=rsa-sha256; cv=none; b=PW97dWW28tVKnG5IKkSnqJ81pyawkiR+5c9xPSrx4ToAK5QePaDP6O4oUp4BZaXrH+INpY ywVq11mW70d+cEvsROCP4DFc9RYwuU5XQNg+XKp2sOj4hhFwo08h/MQbZC0t/8NPoJJGUy gjtQ5uExin0yzTtLT1NYoUz76WEfRA1sSL/nK92zz46+6Sq4ENMKxkoZ/RNw13PJ58yKC5 HhSn4MBzx9iDrrPp7tSMz8m3xNyZulgHSCJT+jO0fsCIZFEKGdvj/9lrWeGzDIIAVKcPUP 7FZbaFvmWalqql1JIC8UBLEL3bHHmU/U5MTkjUJd4Ru3N8RSQmzRl0VRqACCCA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743580471; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eodzRu6LPNUbHuYImpE5HxgNUFlNvp4cH2Vz/cSHuDc=; b=OhywG/2OLZI1hKu+3ThGhL7BMDVQiWVGfhZa2Ql5GrGsmbLZW2Vpz1/3BK2DdZqUk4UnBj wXY9MLF5Rcx+QDNpL2SoBCXCYtnH1m+Nbe4Bu4uhip2AimglL7lZP1a/U/96B/HxtmvB0A 5tY4Kgafsha4BXBitaliAtLvAw/KhtNtVc/UaFa0lOknZizg7v02rCkXdelSJYtnQk1+Xg 8ETM2YKfragg/4fbAiUd9Hl0iVXk00Y6ZeuXzxvt/qgMVld1U6GYIdITjOhldEJb+GjOlx 4xC7PrJPOsMycNvWFj0ueM3Rxjip7tfyxS/KSNQ8UXdGKBf/B9lGHIAGwNSeJA== 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 4ZSHFg3CV7z16pq; Wed, 02 Apr 2025 07:54:31 +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 5327sVfx039441; Wed, 2 Apr 2025 07:54:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5327sVRZ039438; Wed, 2 Apr 2025 07:54:31 GMT (envelope-from git) Date: Wed, 2 Apr 2025 07:54:31 GMT Message-Id: <202504020754.5327sVRZ039438@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Andrey V. Elsukov" Subject: git: f8cd0c8e20b0 - stable/13 - tests: fix test for NULL encription List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ae X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f8cd0c8e20b0be367c9508770a92ea7649f5da4b Auto-Submitted: auto-generated The branch stable/13 has been updated by ae: URL: https://cgit.FreeBSD.org/src/commit/?id=f8cd0c8e20b0be367c9508770a92ea7649f5da4b commit f8cd0c8e20b0be367c9508770a92ea7649f5da4b Author: Andrey V. Elsukov AuthorDate: 2025-03-25 07:23:40 +0000 Commit: Andrey V. Elsukov CommitDate: 2025-04-02 07:54:12 +0000 tests: fix test for NULL encription After 04207850a9b9 it is required that key length is not zero. Add some key to avoid error. Reported by: markj (cherry picked from commit b6708045590712930c533e916e3d6fdfe48ec5ba) --- tests/sys/netipsec/tunnel/empty.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sys/netipsec/tunnel/empty.sh b/tests/sys/netipsec/tunnel/empty.sh index dc1d3708f744..56480d21f4ec 100755 --- a/tests/sys/netipsec/tunnel/empty.sh +++ b/tests/sys/netipsec/tunnel/empty.sh @@ -11,7 +11,7 @@ v4_head() v4_body() { # Can't use filename "null" for this script: PR 223564 - ist_test 4 null "" + ist_test 4 null "1234" } v4_cleanup() @@ -28,7 +28,7 @@ v6_head() v6_body() { - ist_test 6 null "" + ist_test 6 null "5678" } v6_cleanup() From nobody Wed Apr 2 08:55:42 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSJcH12tYz5ryP7 for ; Wed, 02 Apr 2025 08:55: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 4ZSJcG6kJWz4J0Z; Wed, 02 Apr 2025 08:55:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=B2imcPIZObnx79wdCaBYW12ZvQkP5cHjQI3kol8ro9s=; b=az14JfpqrcpccTS5zB3eidA886epfiWhu7OsO1spomUbRpsDcnStEXzpDuH2o41W2AVQVh NRjbTN7ar0uHjqHUIQC7/Y1YJSz1RJ/l967EKhUBcXe3yJiWNCi7pnz/chSBbQMr5n//mF UCYYVF6ii4B0KjMRWtSgXaXzI9usje15hb1/jGBctIcBWu82leW4y44NRPiQHiajY2mlEf OuCyyid2Wxo4JRyhDPIuGOYSE9zufjxg3jUoC8PGuOOUi/1PA2n3Xbmp6jrENtb4Nqb1x8 QubaJtpM7LtJkM54pjxtLUJpVXW0mRbaANmiBCrYCYLII67IB9r2DjJ7zaSgvA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743584143; a=rsa-sha256; cv=none; b=Z9aImxjcReP/kQuJX7toxX+4SjtKp0ToKTyfKlgqkAnrXoEHSn8WrvyYlEaA8h1oLmhotx YS35kV+lcigJQ7CwzPqyNr41+sDWgUdxgGPO/bdbQjsBfRHM4mbbZbSTygNnBBAelBAZNm rbwtb7Z7mFad3V3Kvq5dYSYgR3jiwOCqs6WBMTQwOL8pnDOUS0Uot/NJ2HKosndQf0nZ78 tqYSO01Q/kE/vmWJ1uvpLIjdY0ylmzwpSj3wowG6gpM3Dsg8mgikTCionAKbAIDznifOMH B46Q8N3nem7dYkxB+jYm+wrhG8RgaELz0/oqnvyRYW0UoPXLdK32a515jka48g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=B2imcPIZObnx79wdCaBYW12ZvQkP5cHjQI3kol8ro9s=; b=tho3sn2CsrzC7pP0CdtW4GEHYPIuj/3oPO049qM39WPVOZlvzLeCm9hyT1YoDouAzi5zRW xGKebeQG+tcPKkjvnMkeuaSsbXYl4u9zebdSjgiNcbjSR+KCw3m3t7LL6ebV369uQDHx2h H6gaMn3mI6/EhK6SVeM5hbMoxIZSl7tzzHNSe8PFUlJvVeigQN9v3IFdQEtReIJCYV4Gca M11PzTAsE3DQzQsCaSPToF9Cc/IbTKREb7YJ0NsK1BuOGdHI0VCpWAKJ4HwhjV/YZlNT3Q I/hnrucV8/2BGZYVHFZQ+KRsij5h1ihIBWY/PY9kdoBWc8OpFGxO+cUDMHXPVg== 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 4ZSJcG692Fz186l; Wed, 02 Apr 2025 08:55: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 5328tgIS052689; Wed, 2 Apr 2025 08:55:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5328tgMh052687; Wed, 2 Apr 2025 08:55:42 GMT (envelope-from git) Date: Wed, 2 Apr 2025 08:55:42 GMT Message-Id: <202504020855.5328tgMh052687@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Philip Paeps Subject: git: aa386a969f3f - Create tag vendor/expat/2.7.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/tags/vendor/expat/2.7.1 X-Git-Reftype: annotated tag X-Git-Commit: aa386a969f3fd6cd2ddbadd0bd86feead5ec14a2 Auto-Submitted: auto-generated The annotated tag vendor/expat/2.7.1 has been created by philip: URL: https://cgit.FreeBSD.org/src/tag/?h=vendor/expat/2.7.1 tag vendor/expat/2.7.1 Tagger: Philip Paeps TaggerDate: 2025-04-02 04:16:50 +0000 Tag expat 2.7.1 commit b09cf48da48aa8f907a39a749b83279f35873a73 Author: Philip Paeps AuthorDate: 2025-04-02 04:16:50 +0000 Commit: Philip Paeps CommitDate: 2025-04-02 04:16:50 +0000 Vendor import of expat 2.7.1 From nobody Wed Apr 2 08:55:42 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSJcH12ndz5ryLc for ; Wed, 02 Apr 2025 08:55: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 4ZSJcG6jrzz4J0Y; Wed, 02 Apr 2025 08:55:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sdZh3ba4d66bF1El28Kc4sa4txQr3OAMxnYWnJaaib4=; b=AK7ar9Rq37djgUzQlPkBCaBBPsgAP/X6C6B/cZ7WcERTumk8KCEE3udLeUW1LWdrKeYGxO sbAM802D2GdxQCCP2UIIYxVwTVRG1YoMK4R3q+7BgN/kD35fxUzGZJiExgWTzf2Kd/yyVu AuKdqWeCARRVWjY/SwnmyacFqGk1lh0Z6VDSGz2yup/GptUkRk0KNzVVml92fjUdr6GN0Y /FJx+aIwA8+dh2E9AkIEhv1kfj2RmWUfbMxv7A3d7xxcc/hLU6eoe/lg1z4FUhzmIeIvjg F1YpZtXNZZaBISylr1aR/vRTrEHce7SpCyUksA/Uj1Eo11U+vYBsgW5jQxHUPg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743584143; a=rsa-sha256; cv=none; b=KhsGGJa2N4tsqrm22q7RE0Y5nzNtvy9YvJZvXGp8bQQZW5Curlg1yut1W1JTP+7xxPKWFV h//N/BofyiZ1pQf38pSarAEVISt71np1pP1mlDasjdhEiL1NOiHqsF/e6bVCmYJpviVksG tiQf9gd51Y7IxClhYqf37x0NACc8LBB17+szCravscVfg+AJ8wZt+F7Q7FHc1zXv+qPka9 2badJsDlMFeqyl/2h/JqNUytcKNfw31z5pMVTsERCIQdmP2GJKMdEFax7rvJ1aFM37g49v Ej3YloB8eM7RmjT8P7yNKafQcFSMBIy+rV+ee67u2Max8QST4UlqzgJcVc4drw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sdZh3ba4d66bF1El28Kc4sa4txQr3OAMxnYWnJaaib4=; b=xAdOpFVOIhNpzIoJBk4fDvarbwONrPQbl/aDgiazK5JaP5jpa1LXCdE5PFN9UZ2AiQ2FgA +12sZVJXBvfCdl2hW9a0z5mcZ6ZJ1m00LPpfgqsHbI46IiN+7JiKYBTkyCkLmH5z7RaiKr xipqZ7LFphTzCBULxSXvpRQSygd5T+wGirSyH9RQwwCx99N+du49c+PnbF16ybE9qGrqfo j70JfW8PvfoDHMpoqIbAO44vGNeU+iVfepbiEp6Cj+6g4i1d4mPGcqh+h/AOtkB2YldSJf 1VEFzxIwB865R2Ll9XyPVoJvcB7/nbeWz7ZOhTma44n6/cvcBF8tW19I91wKzg== 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 4ZSJcG5kkhz178V; Wed, 02 Apr 2025 08:55: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 5328tg4M052669; Wed, 2 Apr 2025 08:55:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5328tgEm052668; Wed, 2 Apr 2025 08:55:42 GMT (envelope-from git) Date: Wed, 2 Apr 2025 08:55:42 GMT Message-Id: <202504020855.5328tgEm052668@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Philip Paeps Subject: git: 7277ee24655b..b09cf48da48a - vendor/expat - vendor branch updated List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/vendor/expat X-Git-Reftype: branch X-Git-Commit: b09cf48da48aa8f907a39a749b83279f35873a73 X-Git-Oldrev: 7277ee24655bd9190ee1131666aebf6ed9d12390 X-Git-Newrev: b09cf48da48aa8f907a39a749b83279f35873a73 Auto-Submitted: auto-generated The branch vendor/expat has been updated by philip: URL: https://cgit.FreeBSD.org/src/log/?id=7277ee24655b..b09cf48da48a b09cf48da48a Vendor import of expat 2.7.1 From nobody Wed Apr 2 08:59:48 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSJj34Ydnz5ryRD; Wed, 02 Apr 2025 08:59: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 4ZSJj32jX6z4JgL; Wed, 02 Apr 2025 08:59:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584391; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4jKllDKxmofJU89/80bQoHiD4uB60TwE6mPXvZx829I=; b=lIihab9I3BwohEQpqCMouaVR8ezB+DKpl4mbQAFrvPfJN8trTuDH3F1ZDIdd5aqbYOoijP Uf5GqgID47qz28yiOIOJtviZCJiUJcbT9yOArrUevKMeAEHsq/jT+kHMsM4ouEkCB5u4fj kQTnN1c4+7YyCzm/x/3/I7WGSgvDtb+Gtkq9OqL1za10HkCQezqWz+jCtBnr9tfpiBb8Ag CG9KoWlntT3QXnRpeJeyB4v8u+uPa1aQF4PdWjVRIB3uMDWLgJ2y3SLnStJqm8fahEYCkE Y2NzAjNh8Pg+ZsCB5j1QDvgAnlMZ6PKW9jtrSYMEmzevCqe6KLwvM+EnkSDKyQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743584391; a=rsa-sha256; cv=none; b=IK+8iazfOtts7XFOFQmO4a/bOYOJCys+IXRu0CqL/pD/b6Bj/gBxqk0Tot90wP6uy2VM+F aQ599uyn3DjqztmRsK+Rdt5eqCskmg9XZmdYvHcH3iE/RkhzF03/F0u0dZ7c9gbpP2qmsF t8I4Ny4x/BBm9ni4kzg6FACzg7+RgRBuCfr3AKvm9UDw3t5od77zMN39MMiRnY1YrFD5uw VyoLe8rcTZe+FifJQwc28qw75io/kQm6VNee2AZ978Ipz2MQCef11Mtgv2ymsUemKZioCt LDK62R916KgVoFr0t2dWfBOxp31jSglxzBcrK0zwViI9l4FSAtNPE9BA5gsLmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743584391; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4jKllDKxmofJU89/80bQoHiD4uB60TwE6mPXvZx829I=; b=ThEEXQHvnLtUjlIQtmYqX3xdTA6Q73EwcZ5hhC6TdKK3bLiQ846sc2xMTrPk8mgM5TZoA5 +t81E2cHoI0nCBbxJrT4odZybfWeajrGHAfr2kla+thAJpeIg7d1pjdQ1sX0YnkCEqm5P8 MtooQzD4w/7Z1/pChNdiTmqwe2jqZOqMuGm7S78mEt5kXmjIH7QAWezLlj9PRtrfoAYLte izRz7bEB1lfCfbj9N+1B/YeH0oFHwxRSQxfwFcJN4RDo/gmyN2Swlf19JLO3WAr0qog25v w77pfIhe4IHFOFLnyGi/m6o1SFTzuieR9Qp+WBKSGn1h8O+amP8fsUSphAkJ4g== 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 4ZSJj30kZsz18Nm; Wed, 02 Apr 2025 08:59: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 5328xmZp053991; Wed, 2 Apr 2025 08:59:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5328xmnx053989; Wed, 2 Apr 2025 08:59:48 GMT (envelope-from git) Date: Wed, 2 Apr 2025 08:59:48 GMT Message-Id: <202504020859.5328xmnx053989@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: fe9278888fd4 - main - contrib/expat: import expat 2.7.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fe9278888fd4414abe2d922e469cf608005f4c65 Auto-Submitted: auto-generated The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=fe9278888fd4414abe2d922e469cf608005f4c65 commit fe9278888fd4414abe2d922e469cf608005f4c65 Merge: ba2336d3044c b09cf48da48a Author: Philip Paeps AuthorDate: 2025-04-02 08:56:02 +0000 Commit: Philip Paeps CommitDate: 2025-04-02 08:56:02 +0000 contrib/expat: import expat 2.7.1 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_0/expat/Changes Security: CVE-2024-8176 MFC after: 3 days contrib/expat/COPYING | 2 +- contrib/expat/Changes | 123 +++++- contrib/expat/Makefile.am | 4 +- contrib/expat/Makefile.in | 4 +- contrib/expat/README.md | 18 +- contrib/expat/configure.ac | 4 +- contrib/expat/doc/reference.html | 9 +- contrib/expat/doc/xmlwf.1 | 2 +- contrib/expat/doc/xmlwf.xml | 4 +- contrib/expat/fuzz/xml_lpm_fuzzer.cpp | 464 ++++++++++++++++++++++ contrib/expat/fuzz/xml_lpm_fuzzer.proto | 58 +++ contrib/expat/fuzz/xml_parse_fuzzer.c | 2 +- contrib/expat/fuzz/xml_parsebuffer_fuzzer.c | 2 +- contrib/expat/lib/expat.h | 6 +- contrib/expat/lib/internal.h | 5 +- contrib/expat/lib/xmlparse.c | 586 ++++++++++++++++++++-------- contrib/expat/tests/acc_tests.c | 5 +- contrib/expat/tests/alloc_tests.c | 27 ++ contrib/expat/tests/basic_tests.c | 331 +++++++++++++++- contrib/expat/tests/benchmark/benchmark.c | 57 ++- contrib/expat/tests/common.c | 33 +- contrib/expat/tests/common.h | 4 +- contrib/expat/tests/handlers.c | 23 ++ contrib/expat/tests/handlers.h | 9 + contrib/expat/tests/minicheck.h | 6 +- contrib/expat/tests/misc_tests.c | 247 ++++++++++-- contrib/expat/tests/xmltest.sh | 5 +- contrib/expat/xmlwf/readfilemap.c | 3 +- 28 files changed, 1779 insertions(+), 264 deletions(-) diff --cc contrib/expat/README.md index 23d26dad2b92,000000000000..77c6bf27d307 mode 100644,000000..100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@@ -1,315 -1,0 +1,311 @@@ +[![Run Linux CI tasks](https://github.com/libexpat/libexpat/actions/workflows/linux.yml/badge.svg)](https://github.com/libexpat/libexpat/actions/workflows/linux.yml) +[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat) +[![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) +[![Downloads SourceForge](https://img.shields.io/sourceforge/dt/expat?label=Downloads%20SourceForge)](https://sourceforge.net/projects/expat/files/) +[![Downloads GitHub](https://img.shields.io/github/downloads/libexpat/libexpat/total?label=Downloads%20GitHub)](https://github.com/libexpat/libexpat/releases) ++[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10205/badge)](https://www.bestpractices.dev/projects/10205) + +> [!CAUTION] +> +> Expat is **understaffed** and without funding. +> There is a [call for help with details](https://github.com/libexpat/libexpat/blob/master/expat/Changes) +> at the top of the `Changes` file. + + - # Expat, Release 2.6.4 ++# Expat, Release 2.7.1 + +This is Expat, a C99 library for parsing +[XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by +[James Clark](https://en.wikipedia.org/wiki/James_Clark_%28programmer%29) in 1997. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + - Expat supports the following compilers: ++Expat supports the following C99 compilers: + - - GNU GCC >=4.5 ++- GNU GCC >=4.5 (for use from C) or GNU GCC >=4.8.1 (for use from C++) +- LLVM Clang >=3.5 +- Microsoft Visual Studio >=16.0/2019 (rolling `${today} minus 5 years`) + +Windows users can use the +[`expat-win32bin-*.*.*.{exe,zip}` download](https://github.com/libexpat/libexpat/releases), +which includes both pre-compiled libraries and executables, and source code for +developers. + +Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html). +You may copy, distribute, and modify it under the terms of the License +contained in the file +[`COPYING`](https://github.com/libexpat/libexpat/blob/master/expat/COPYING) +distributed with this package. +This license is the same as the MIT/X Consortium license. + + +## Using libexpat in your CMake-Based Project + +There are three documented ways of using libexpat with CMake: + +### a) `find_package` with Module Mode + +This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html). + +Notice the *uppercase* `EXPAT` in the following example: + +```cmake - cmake_minimum_required(VERSION 3.0) # or 3.10, see below ++cmake_minimum_required(VERSION 3.10) + +project(hello VERSION 1.0.0) + +find_package(EXPAT 2.2.8 MODULE REQUIRED) + +add_executable(hello + hello.c +) + - # a) for CMake >=3.10 (see CMake's FindEXPAT docs) +target_link_libraries(hello PUBLIC EXPAT::EXPAT) - - # b) for CMake >=3.0 - target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS}) - target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES}) +``` + +### b) `find_package` with Config Mode + +This approach requires files from… + +- libexpat >=2.2.8 where packaging uses the CMake build system +or +- libexpat >=2.3.0 where packaging uses the GNU Autotools build system + on Linux +or +- libexpat >=2.4.0 where packaging uses the GNU Autotools build system + on macOS or MinGW. + +Notice the *lowercase* `expat` in the following example: + +```cmake - cmake_minimum_required(VERSION 3.0) ++cmake_minimum_required(VERSION 3.10) + +project(hello VERSION 1.0.0) + +find_package(expat 2.2.8 CONFIG REQUIRED char dtd ns) + +add_executable(hello + hello.c +) + +target_link_libraries(hello PUBLIC expat::expat) +``` + +### c) The `FetchContent` module + +This approach — as demonstrated below — requires CMake >=3.18 for both the +[`FetchContent` module](https://cmake.org/cmake/help/latest/module/FetchContent.html) +and its support for the `SOURCE_SUBDIR` option to be available. + +Please note that: +- Use of the `FetchContent` module with *non-release* SHA1s or `master` + of libexpat is neither advised nor considered officially supported. +- Pinning to a specific commit is great for robust CI. +- Pinning to a specific commit needs updating every time there is a new + release of libexpat — either manually or through automation —, + to not miss out on libexpat security updates. + +For an example that pulls in libexpat via Git: + +```cmake +cmake_minimum_required(VERSION 3.18) + +include(FetchContent) + +project(hello VERSION 1.0.0) + +FetchContent_Declare( + expat + GIT_REPOSITORY https://github.com/libexpat/libexpat/ + GIT_TAG 000000000_GIT_COMMIT_SHA1_HERE_000000000 # i.e. Git tag R_0_Y_Z + SOURCE_SUBDIR expat/ +) + +FetchContent_MakeAvailable(expat) + +add_executable(hello + hello.c +) + +target_link_libraries(hello PUBLIC expat) +``` + + +## Building from a Git Clone + +If you are building Expat from a check-out from the +[Git repository](https://github.com/libexpat/libexpat/), +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + +```console +./buildconf.sh +``` + +Once this has been done, follow the same instructions as for building +from a source distribution. + + +## Building from a Source Distribution + +### a) Building with the configure script (i.e. GNU Autotools) + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + +```console +./configure +``` + +There are many options which you may provide to configure (which you +can discover by running configure with the `--help` option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into `/usr/local/lib`, `expat.h` into `/usr/local/include`, and +`xmlwf` into `/usr/local/bin`. If, for example, you'd prefer to install +into `/home/me/mystuff/lib`, `/home/me/mystuff/include`, and +`/home/me/mystuff/bin`, you can tell `configure` about that with: + +```console +./configure --prefix=/home/me/mystuff +``` + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + +```console +./configure CPPFLAGS=-DXML_LARGE_SIZE +``` + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use — e.g. as part of +a Linux distribution — but rather for builds with special requirements. + +After running the configure script, the `make` command will build +things and `make install` will install things into their proper +location. Have a look at the `Makefile` to learn about additional +`make` options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run `make distclean`). +Please note that we configure with `--without-xmlwf` as xmlwf does not +support this mode of compilation (yet): + +1. Mass-patch `Makefile.am` files to use `libexpatw.la` for a library name: +
+ `find . -name Makefile.am -exec sed + -e 's,libexpat\.la,libexpatw.la,' + -e 's,libexpat_la,libexpatw_la,' + -i.bak {} +` + +1. Run `automake` to re-write `Makefile.in` files:
+ `automake` + +1. For UTF-16 output as unsigned short (and version/error strings as char), + run:
+ `./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`
+ For UTF-16 output as `wchar_t` (incl. version/error strings), run:
+ `./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T + --without-xmlwf` +
Note: The latter requires libc compiled with `-fshort-wchar`, as well. + +1. Run `make` (which excludes xmlwf). + +1. Run `make install` (again, excludes xmlwf). + +Using `DESTDIR` is supported. It works as follows: + +```console +make install DESTDIR=/path/to/image +``` + +overrides the in-makefile set `DESTDIR`, because variable-setting priority is + +1. commandline +1. in-makefile +1. environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in `conftools/expat.m4` to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file `doc/reference.html` in this +distribution. + + +### b) Building with CMake + +The CMake build system is still *experimental* and may replace the primary +build system based on GNU Autotools at some point when it is ready. + + +#### Available Options + +For an idea of the available (non-advanced) options for building with CMake: + +```console +# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,' +// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +// Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +// Path to a program. +DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man + +// Build man page for xmlwf +EXPAT_BUILD_DOCS:BOOL=ON + +// Build the examples for expat library +EXPAT_BUILD_EXAMPLES:BOOL=ON + +// Build fuzzers for the expat library +EXPAT_BUILD_FUZZERS:BOOL=OFF + +// Build pkg-config file +EXPAT_BUILD_PKGCONFIG:BOOL=ON + +// Build the tests for expat library +EXPAT_BUILD_TESTS:BOOL=ON + +// Build the xmlwf tool for expat library +EXPAT_BUILD_TOOLS:BOOL=ON + +// Character type to use (char|ushort|wchar_t) [default=char] +EXPAT_CHAR_TYPE:STRING=char + +// Install expat files in cmake install target +EXPAT_ENABLE_INSTALL:BOOL=ON + +// Use /MT flag (static CRT) when compiling in MSVC +EXPAT_MSVC_STATIC_CRT:BOOL=OFF + - // Build fuzzers via ossfuzz for the expat library ++// Build fuzzers via OSS-Fuzz for the expat library +EXPAT_OSSFUZZ_BUILD:BOOL=OFF + +// Build a shared expat library +EXPAT_SHARED_LIBS:BOOL=ON + +// Treat all compiler warnings as errors +EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF + +// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_GETRANDOM:STRING=AUTO + +// Utilize libbsd (for arc4random_buf) +EXPAT_WITH_LIBBSD:BOOL=OFF + +// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO +``` diff --cc contrib/expat/fuzz/xml_lpm_fuzzer.cpp index 000000000000,f52ea7b21e40..f52ea7b21e40 mode 000000,100644..100644 --- a/contrib/expat/fuzz/xml_lpm_fuzzer.cpp +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp diff --cc contrib/expat/fuzz/xml_lpm_fuzzer.proto index 000000000000,ddc4e958b919..ddc4e958b919 mode 000000,100644..100644 --- a/contrib/expat/fuzz/xml_lpm_fuzzer.proto +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.proto From nobody Wed Apr 2 14:31:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSS460MTrz5sMY0; Wed, 02 Apr 2025 14:31: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 4ZSS455ccxz3YPX; Wed, 02 Apr 2025 14:31:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743604309; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uJistIeOAdE4QGv4hJO7yl1X42pTCWpLN/AcBILX/bo=; b=KKkqsRfiOr0qfnmnFDFltrYKuq6xUClYar6KUY7cPFytKuPtQOqQqwXhImGkJAduJbUiKN CjSkYCbG6zV2sJa1bqJSU7UYOAEKCRSiQMBTPzWTwRzFrO+6pTpezU6gByVUH42fm6Yg3Y aFygF24UJnZzNZFfcWnmG+Q9Ub22uIO85sjY2osSqUYJOBQ3gdE2b9GH5mvBnPIcXk13JG t5JBr+3GMCSeihh2LnrcH/k2XiqK2pYeVz55pAcC2+dldkLYNmeRrESX6VBKNtPl2E5SYS r/tAYDl6vJgMGKF6nX/b5C4HOsIpxosbhmX0lR+3/AdlVJKReVrcg6aKKqBlqg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743604309; a=rsa-sha256; cv=none; b=BFe6vDe37HyEtHyTG4p2qVef3I8i5QoaJlC4eSy35zd8UJZ/YFjGX+JjwMkJr3nGxECwgI 0oCBuyXD7hUmPgv2kgfifjHVtsNdXLudlSdzzwBOci4sh34bYJwCzlhgzhgRaF/f/MY/Hb A00yOCjOxWvRkbOTMCiD0zYFgDm1djnL36zBfPNLbhcwJmkyycDdFCSt/k40V9xCICrV2O Uz4Uzkrta1EopMdE38PYxk6lqOxTvX48zm15T5fvoTXw//HGJY1gcNxdwPbLOdlrg757v0 p+xuebIMGhJ0RNDvYOk8GbEqP+hyBfxtO1NgD7vy55C1bOjyMW0zo5Gl02AbWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743604309; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uJistIeOAdE4QGv4hJO7yl1X42pTCWpLN/AcBILX/bo=; b=SomdM/IKO1xpeL8EV6AQwDOlZpmZfHhWnVRfgWjfBbah8M9h8q149kMNWIMAudagmcw79I OsGQ+Z1O1/mv5rPXA+FbdKtZdosdTk8ZupQK9PakW7gW72KwUqA+6Tn063wop+9x3pyl9C OPyfnDOxMVe3EB+FnpYxd+joQeamU53q4ZraWpUpTRRtjwnChF+HN7gX0L62ffZD1LBOtj N79fLghgK+6hPGqEAMiVTDOV5iP39APo36ev2J4iShPcaEYp8tdDwiYSai86z+w4x50lkp OjhUCnjg7mw5rMwI71mLq/8YhtReIoc/F0L++E7QgU0OGF6MJqUw49037fAqgg== 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 4ZSS455CCCz4cp; Wed, 02 Apr 2025 14:31: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 532EVnGj080674; Wed, 2 Apr 2025 14:31:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532EVnsB080671; Wed, 2 Apr 2025 14:31:49 GMT (envelope-from git) Date: Wed, 2 Apr 2025 14:31:49 GMT Message-Id: <202504021431.532EVnsB080671@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Cochard Subject: git: c10fd9ac00b1 - main - tests: Require allow_network_access for tests needing name resolution List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olivier X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c10fd9ac00b1097ab622d055dcc3d1484012bccc Auto-Submitted: auto-generated The branch main has been updated by olivier: URL: https://cgit.FreeBSD.org/src/commit/?id=c10fd9ac00b1097ab622d055dcc3d1484012bccc commit c10fd9ac00b1097ab622d055dcc3d1484012bccc Author: Olivier Cochard AuthorDate: 2025-04-02 14:25:40 +0000 Commit: Olivier Cochard CommitDate: 2025-04-02 14:31:18 +0000 tests: Require allow_network_access for tests needing name resolution Tests that require working name resolution or network access now mandate that the kuya variable allow_network_access be set. PR: 285826 Reported by: ngie Reviewed by: igoro Approved by: lwhsu Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D49633 --- lib/libc/tests/net/getaddrinfo/getaddrinfo.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/libc/tests/net/getaddrinfo/getaddrinfo.c b/lib/libc/tests/net/getaddrinfo/getaddrinfo.c index 022405f464ce..1e066add3119 100644 --- a/lib/libc/tests/net/getaddrinfo/getaddrinfo.c +++ b/lib/libc/tests/net/getaddrinfo/getaddrinfo.c @@ -79,7 +79,12 @@ send(int s, const void *msg, size_t len, int flags) } } -ATF_TC_WITHOUT_HEAD(basic); +ATF_TC(basic); +ATF_TC_HEAD(basic, tc) +{ + atf_tc_set_md_var(tc, "require.config", "allow_network_access"); +} + ATF_TC_BODY(basic, tc) { static const struct addrinfo hints = { @@ -205,7 +210,11 @@ ATF_TC_BODY(netdown, tc) /* * See https://reviews.freebsd.org/D37139. */ -ATF_TC_WITHOUT_HEAD(nofamily); +ATF_TC(nofamily); +ATF_TC_HEAD(nofamily, tc) +{ + atf_tc_set_md_var(tc, "require.config", "allow_network_access"); +} ATF_TC_BODY(nofamily, tc) { static const struct addrinfo hints4 = { From nobody Wed Apr 2 15:14:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZST1j3Ff9z5sQ3r; Wed, 02 Apr 2025 15:14: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 4ZST1j2fz3z3gMS; Wed, 02 Apr 2025 15:14:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606889; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qCfEbRJ1oXBIgdCsQJ3XHY59MyVKGCc3aAEQG7oIx+Q=; b=GBa4xENWD72yrxhsPO5Gu94ziWwXP+mV5glD0N9LPyxMg7ehRcByXUUXZh3PF+8eCkFnUG vAefkVJBfPTryCTla/Rd7ioD0DQAu53lIpEJ5IiDu1yhKb167p6Q62+1BLS8Y41wv5DONS uQjRpZusLtHgzAepirnyzh7WAxPfH87edwiwZH/YQUq0oU/mbQKQ96cNR5O297rFhpUXn9 uImeHocKap3rmsHE3VXtHAewSsWi9WeGoQX6n7syrBY4kF3hNe7KJdNwuGRtuH+FY3OTK/ NiviLlSwqIfxnoTMlCLZKzEgE7qkmKENcgjtgUIY7BEYoUB53PzVLjh33eKgrw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743606889; a=rsa-sha256; cv=none; b=Us8oRjm40oefiwiDtLuRBbww05pT35IypctWpViYDWee/ubUj/DqXpO66WZ3MGk1nFxuJl b0JVtbfxpz0HF7WanAqSAFCA/mOQOznErhEj2Sj68KSfiZlCdOPJ+7F8bI2DMYfYycihhF Q6YPOc0uAtwZWeqae0rzIaRke2V6QfpHz5Es01PNDNsQfgghV+0DVI9pzdwG1s1R90ssjP hyWoEhBp2Hy1KOVaTufWZTRLwZr9XCSAwr2q5HaSjKDEnC0HLByONGljuWGInnH71iUYgE J1ksAUfEKqp0FwTNFhorJUjLr8HDfm9JU0GxL68Z11xIgCg6WzYpkcSqV7BdTA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606889; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qCfEbRJ1oXBIgdCsQJ3XHY59MyVKGCc3aAEQG7oIx+Q=; b=IoqKe0gfkFdVH8FjZhmwfC1PGexElzF+HDl30oFTqeJhlVEmt9lWjhPQH1m/qcl9fZREAA WA6NA5mcp2tHlwlRyXCNS85tF8j1mXgnoZz67ezn+CulcAEjgJNWwpQta7khYIMaUo2Xr7 8msd65MagCOSfUi+ouRy8HcHS4xDCbEvBYj2TPETt8uObr0qlDV9gZ3jX2H1f9lBqRJRFl +xT5KuhtvP+t/c3hU6LgOxx5eDF8007A9is36ZRXsA5Gx/wRVBZHZP487HVrJ0ll/2JYwv 88CFgTEohatdQyIf+IQegbJ11OAOzTm4UbLZD7Jc+s5m4lcSzhACPCvV1bL/8w== 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 4ZST1j22PMz6NY; Wed, 02 Apr 2025 15:14: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 532FEnll061373; Wed, 2 Apr 2025 15:14:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532FEnJt061370; Wed, 2 Apr 2025 15:14:49 GMT (envelope-from git) Date: Wed, 2 Apr 2025 15:14:49 GMT Message-Id: <202504021514.532FEnJt061370@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 1cbe8781642e - stable/14 - libdtrace: Fix an off-by-one in the priority queue implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1cbe8781642e0dc961838b87793ffb145f70719a Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1cbe8781642e0dc961838b87793ffb145f70719a commit 1cbe8781642e0dc961838b87793ffb145f70719a Author: Mark Johnston AuthorDate: 2025-03-10 03:00:42 +0000 Commit: Mark Johnston CommitDate: 2025-04-02 15:14:36 +0000 libdtrace: Fix an off-by-one in the priority queue implementation The zero'th index in the array is unused, so a priority queue of N elements needs N+1 array slots. Fix the allocation. Also fix the assertion in dt_pq_insert(): the assertion needs to be checked after incrementing the count of items in the priority queue, otherwise it can miss an overflow. Reported by: CHERI MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D49242 (cherry picked from commit 7ee1bdd094d376fdc547e8ca33e472f1d37a7d79) --- cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c index 0cd556abd8f5..ffbac8b6ea1e 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c @@ -37,7 +37,7 @@ dt_pq_init(dtrace_hdl_t *dtp, uint_t size, dt_pq_value_f value_cb, void *cb_arg) if ((p = dt_zalloc(dtp, sizeof (dt_pq_t))) == NULL) return (NULL); - p->dtpq_items = dt_zalloc(dtp, size * sizeof (p->dtpq_items[0])); + p->dtpq_items = dt_zalloc(dtp, (size + 1) * sizeof (p->dtpq_items[0])); if (p->dtpq_items == NULL) { dt_free(dtp, p); return (NULL); @@ -73,9 +73,9 @@ dt_pq_insert(dt_pq_t *p, void *item) { uint_t i; - assert(p->dtpq_last < p->dtpq_size); - i = p->dtpq_last++; + assert(i <= p->dtpq_size); + p->dtpq_items[i] = item; while (i > 1 && dt_pq_getvalue(p, i) < dt_pq_getvalue(p, i / 2)) { From nobody Wed Apr 2 15:14:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZST1k5jzSz5sQMq; Wed, 02 Apr 2025 15:14: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 4ZST1k34qbz3gMm; Wed, 02 Apr 2025 15:14:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4lpPZQiTWomBBpLtGfFZ8hCmag8wRvoMukytbRLL3J0=; b=sPpMBdYzcVq7Z2Lu7m7WJnqgeOznZxQv+n+lh7W25++jdKgtJKmlikq/88clpjX5Onl8gd z9ySG/iHTdMSZcYUjWnzFErGzZJi3diov7WCDEDv4CEpkm/4SwedGf97BHbCFXXHrIhl+Z gHmRSFBueMYG7XdVog14+YeSnTq+hT/Dc13G+SUJIYaS1HC1IycDh8B7mvdm+u4rKPKbKD 2Ly4hTxS/6OpNGlqPan9fJkSBLIaEXqKnMlV3BdFNhKm+EQ6o6imKrQuqvNpkU3ia4703+ LdA4y76btaMCHYyFg1eJJtqEuHeORaXrXywQRsTeG9HtcuG4Xyct1KVp3f1jGQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743606890; a=rsa-sha256; cv=none; b=G/2nv0dmwWmpOeXJxo+251T1onsEJAkuyJGRlqqtXVQNEtFl/KfcAkVOoPAG6BMYKVhtFx rcI3/idvLwEzlv/St1w7OyoFs/UII3ePBvcIwAX8I3XF8sWlAxaAt/hdxjIYPY9wCgdLBy CSUjnjW6mQ9fEDhrIc/rZMnrDgGtZ787yAzl0GLQXMtW5TuI0oIXU7B4Bw8ItsRsmUbtti hMqAy2TzN0lT9nxyaoxFplTabMXEqz+qQ0FmdodCBuo7tyiF022OgFJWjmXq3MbbgNjfnf BcEhIjK8vOa62xFFGPl7jicmmWtAjzIcJ4CfE5ZjaSbnM9ZCURSXL7K7SatjMQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4lpPZQiTWomBBpLtGfFZ8hCmag8wRvoMukytbRLL3J0=; b=PVBGiDZxikASlBL+aNVm2dHe5zGdCrvKhceZNYRX+nFYbfU1Gu+x+4wflgeM5Cv4Fq+m0/ OzNtPNWTJAgZKbGvNi7k3xtNThhUnSZTnadLCfu0f08uVWhcIkN+E1qdD4/apUNEn3ZYkf 4UL4+swKN1EwB5Kliu4MWgXOYIbVUZiwWEoKZSu2blCza86BuzrUok9BnK02pyqmPObwpK haPFFD8kFK6Z41u7wPnOAndK+AtkKS3eidN+E1mZiEhAKYDPLD8H7ehRJN2/gpDOmjJhBn rddwjwuQN/SiMWvKfGHo2VllOizXQ1N2K+1BPorUt28Oyndd3e8HnsW1f3iugA== 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 4ZST1k2TDJz61N; Wed, 02 Apr 2025 15:14: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 532FEoTk061409; Wed, 2 Apr 2025 15:14:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532FEoLv061406; Wed, 2 Apr 2025 15:14:50 GMT (envelope-from git) Date: Wed, 2 Apr 2025 15:14:50 GMT Message-Id: <202504021514.532FEoLv061406@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 294cda7e4e33 - stable/14 - dtrace/arm64: Fix dtrace_gethrtime() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 294cda7e4e33cc3f7adcd0300e3868db62cd46f8 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=294cda7e4e33cc3f7adcd0300e3868db62cd46f8 commit 294cda7e4e33cc3f7adcd0300e3868db62cd46f8 Author: Mark Johnston AuthorDate: 2025-03-10 03:01:13 +0000 Commit: Mark Johnston CommitDate: 2025-04-02 15:14:37 +0000 dtrace/arm64: Fix dtrace_gethrtime() This routine returns a monotonic count of the number of nanoseconds elapsed since the previous call. On arm64 it uses the generic system timer. The implementation multiplies the counter value by 10**9 then divides by the counter frequency, but this multiplication can overflow. This can result in trace records with non-monotonic timestamps, which breaks libdtrace's temporal ordering algorithm. An easy fix is to reverse the order of operations, since the counter frequency will in general be smaller than 10**9. (In fact, it's mandated to be 1Ghz in ARMv9, which makes life simple.) However, this can give a fair bit of error. Adopt the calculation used on amd64, with tweaks to handle frequencies as low as 1MHz: the ARM generic timer documentation suggests that ARMv8 timers are typically in the 1MHz-50MHz range, which is true on arm64 systems that I have access to. MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D49244 (cherry picked from commit 36ae5ce2f2fda35763c2655a19bf1b0ee22fdf3c) --- sys/cddl/dev/dtrace/aarch64/dtrace_subr.c | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c b/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c index 20418e3a475b..32e84d8fbfe9 100644 --- a/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/aarch64/dtrace_subr.c @@ -151,6 +151,32 @@ dtrace_sync(void) dtrace_xcall(DTRACE_CPUALL, (dtrace_xcall_t)dtrace_sync_func, NULL); } +static uint64_t nsec_scale; + +#define SCALE_SHIFT 25 + +/* + * Choose scaling factors which let us convert a cntvct_el0 value to nanoseconds + * without overflow, as in the amd64 implementation. + * + * Documentation for the ARM generic timer states that typical counter + * frequencies are in the range 1Mhz-50Mhz; in ARMv9 the frequency is fixed at + * 1GHz. The lower bound of 1MHz forces the shift to be at most 25 bits. At + * that frequency, the calculation (hi * scale) << (32 - shift) will not + * overflow for over 100 years, assuming that the counter value starts at 0 upon + * boot. + */ +static void +dtrace_gethrtime_init(void *arg __unused) +{ + uint64_t freq; + + freq = READ_SPECIALREG(cntfrq_el0); + nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / freq; +} +SYSINIT(dtrace_gethrtime_init, SI_SUB_DTRACE, SI_ORDER_ANY, + dtrace_gethrtime_init, NULL); + /* * DTrace needs a high resolution time function which can be called from a * probe context and guaranteed not to have instrumented with probes itself. @@ -161,10 +187,13 @@ uint64_t dtrace_gethrtime(void) { uint64_t count, freq; + uint32_t lo, hi; count = READ_SPECIALREG(cntvct_el0); - freq = READ_SPECIALREG(cntfrq_el0); - return ((1000000000UL * count) / freq); + lo = count; + hi = count >> 32; + return (((lo * nsec_scale) >> SCALE_SHIFT) + + ((hi * nsec_scale) << (32 - SCALE_SHIFT))); } /* From nobody Wed Apr 2 15:14:51 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZST1l6tFfz5sQMt; Wed, 02 Apr 2025 15:14: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 4ZST1l4QVYz3gBy; Wed, 02 Apr 2025 15:14:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bPrL7SeIp2CzeNI8abD6cNVDmoqVK9p2lYt77rt9e44=; b=FSDmUtqT2uKjcQwPvbGQHnXQ/zXAs8w0/Ix1NGiwkDKC1ldG08WNEwJxaIQ5aFnB7FIrZQ 38/HKWUK8A5yslhRL1eyq8LOASAjeahVmK7DbJFs6m6C8qSc8IBTUhVEO9MgFKDJEaf28O q6TFOamcIQMO9AOGPMhk3cJNDpuwULxvQXfUNECpmQC3XwE4ZU9bUMQs0KwnSEgd1+8qVi USbSKwJnj4Pd3dp5E5xllUxGeVsLT0SMDruu8UirieoTSLvCVhOtA+VV8vVi2kjxkm1CBc pJwPqx/l6gWMQb9CwScZf6mn+iyHrLS65l9gK85udQHHcQKVXqIUyQ+08fj8+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743606891; a=rsa-sha256; cv=none; b=ghEPKRN7+p9N7v6sgfKuvIWng6180l5MJlJ8DNg/DBxJijR26V2ceKxozg85AKQ5z86UnI kcGzHtLPk28qOQ+eEDrhHmzE+tyx132tTct1PxA89OHmB6CEK1C7WtJcK+aMvfzhnhUXOd d83hD64P15zQLLFJkLl/H7JuMpV3F5C90VIdotAcmL6zHakWWY11qVOx4h9kSbpsdL3Cj8 n3kMK6gL+O+uyaImiHI7BEe8xCjtqiTyFDeDVYVxVHnkKrYdWe7ufXH6hNX8XMSuCW97f0 Mq3xYZAMoOJr7Wgu58RcdXS4U4nV8jeIHYueJs8lCPNOOCLcmTQHYzhXqqG7rA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743606891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bPrL7SeIp2CzeNI8abD6cNVDmoqVK9p2lYt77rt9e44=; b=MfwrTvK1OdAFOY9sk1pnbhr+B4etD+WM9oPyQiON14yGUHVsekk+Mk6J51itD+jVCIXa9x Xkbzlv/7qCCZqg17NYU+qBY8rs/TKORU9VRzuqN9KLjpNfsDx2NjB5k1JQ/9+c8KWyYEb2 mSeD7P7LheLQ79eIHAzab635kVcUf+R8MiP+uI8ZWVSp6hw+m9bNBVa1IQpihkL6xnCuUb MVCxM34+gUKlqXPPcbQzBgBN7W1yYoJwEtJXRwjL2L2I8KOXmhTSDIMjXmeLM7uuvtEJRW n4xZ65t4+rgXA+mCmOGSMIJD5I0tnNWtq/UE9qBwZeP3F+xU/dzRZnrAdjyBhg== 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 4ZST1l3R0jz6Kt; Wed, 02 Apr 2025 15:14: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 532FEpLl061448; Wed, 2 Apr 2025 15:14:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532FEpuj061445; Wed, 2 Apr 2025 15:14:51 GMT (envelope-from git) Date: Wed, 2 Apr 2025 15:14:51 GMT Message-Id: <202504021514.532FEpuj061445@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 0ae0226cd12a - stable/14 - libdtrace: Fix an off-by-one in CPU ID handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0ae0226cd12a0c77ad0c299896fa8792ea7f9cbe Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=0ae0226cd12a0c77ad0c299896fa8792ea7f9cbe commit 0ae0226cd12a0c77ad0c299896fa8792ea7f9cbe Author: Mark Johnston AuthorDate: 2025-03-10 03:00:59 +0000 Commit: Mark Johnston CommitDate: 2025-04-02 15:14:37 +0000 libdtrace: Fix an off-by-one in CPU ID handling The illumos-specific _SC_CPUID_MAX is the largest CPU ID in the system. This was mapped to _SC_NPROCESSORS_CONF, which is the total number of CPUs recognized by the kernel. If CPU IDs are contiguous, as is the case on amd64 and arm64, this value is one greater than the maximum ID. As a result, when consuming per-CPU dtrace buffers, libdtrace tries to fetch from a non-existent CPU. This is mostly harmless in practice, but still wrong. As we don't have a sysconf value for the maximum CPU ID, add a wrapper which fetches it using the kern.smp.maxid sysctl. MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D49243 (cherry picked from commit 9a30c8d347bf9aaa89277b6e5a275f737be8edce) --- .../opensolaris/lib/libdtrace/common/dt_aggregate.c | 6 ++++-- cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c | 8 ++++---- cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h | 1 + cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c | 14 ++++++++++++++ cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h | 5 ----- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c index 643e7fae8ace..1c3131e74cb0 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c @@ -1092,8 +1092,10 @@ dt_aggregate_go(dtrace_hdl_t *dtp) assert(agp->dtat_ncpu == 0); assert(agp->dtat_cpus == NULL); - agp->dtat_maxcpu = dt_sysconf(dtp, _SC_CPUID_MAX) + 1; - agp->dtat_ncpu = dt_sysconf(dtp, _SC_NPROCESSORS_MAX); + agp->dtat_maxcpu = dt_cpu_maxid(dtp) + 1; + if (agp->dtat_maxcpu <= 0) + return (-1); + agp->dtat_ncpu = dt_sysconf(dtp, _SC_NPROCESSORS_CONF); agp->dtat_cpus = malloc(agp->dtat_ncpu * sizeof (processorid_t)); if (agp->dtat_cpus == NULL) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c index 6a32235f7e39..a760642c33bb 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c @@ -3949,8 +3949,8 @@ dt_consume_begin(dtrace_hdl_t *dtp, FILE *fp, return (rval); } - if (max_ncpus == 0) - max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1; + if (max_ncpus == 0 && (max_ncpus = dt_cpu_maxid(dtp) + 1) <= 0) + return (-1); for (i = 0; i < max_ncpus; i++) { dtrace_bufdesc_t *nbuf; @@ -4040,8 +4040,8 @@ dtrace_consume(dtrace_hdl_t *dtp, FILE *fp, if (!dtp->dt_active) return (dt_set_errno(dtp, EINVAL)); - if (max_ncpus == 0) - max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1; + if (max_ncpus == 0 && (max_ncpus = dt_cpu_maxid(dtp) + 1) <= 0) + return (-1); if (pf == NULL) pf = (dtrace_consume_probe_f *)dt_nullprobe; diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h index 1be984f28001..b73ecc3e57f4 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h @@ -620,6 +620,7 @@ extern int dt_version_defined(dt_version_t); */ extern char *dt_cpp_add_arg(dtrace_hdl_t *, const char *); extern char *dt_cpp_pop_arg(dtrace_hdl_t *); +extern int dt_cpu_maxid(dtrace_hdl_t *); #ifdef illumos extern int dt_set_errno(dtrace_hdl_t *, int); diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c index 5976333e1b16..5dc8e1648fd3 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c @@ -463,6 +463,20 @@ dt_cpp_pop_arg(dtrace_hdl_t *dtp) return (arg); } +int +dt_cpu_maxid(dtrace_hdl_t *dtp) +{ + size_t len; + u_int count; + int error; + + len = sizeof(count); + error = sysctlbyname("kern.smp.maxid", &count, &len, NULL, 0); + if (error != 0) + return (dt_set_errno(dtp, errno)); + return (count); +} + /*PRINTFLIKE1*/ void dt_dprintf(const char *format, ...) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h b/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h index 1f4c5a2efd6b..c9496c2df5ba 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h @@ -620,11 +620,6 @@ extern int _dtrace_debug; } #endif -#ifndef illumos -#define _SC_CPUID_MAX _SC_NPROCESSORS_CONF -#define _SC_NPROCESSORS_MAX _SC_NPROCESSORS_CONF -#endif - /* * Values for the dt_oformat property. */ From nobody Wed Apr 2 15:51:43 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSTrJ0Vktz5sSS9; Wed, 02 Apr 2025 15: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 4ZSTrH73NQz3lWT; Wed, 02 Apr 2025 15:51:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743609104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rWp4vZFvDv3UxUOLs+Vjwen4i/fjYkOs25jJAIDX6SE=; b=lKNKu1LS3sYP07hNG72N4ikRLD/wtQat1PhcobLusfz7/cxzxbsA2JeTMZnEi48wQ29DSN 2eeP8x7SZfmj9F2/a9ONI3hQt54yApzZ40BNTOSyjHtZZZpTjFOhOJykNd82QvE0lqsrtJ dorCCDjTl6LHZpnrs4kawKjN66blsdLm+N5r6UzCGI2bHh/PQCXoVf9aAJsCAIfk9ZcSJu /X7eIFXZRHpgHys5FJ2KVttm29LY+dfQ47HlaWoGjcQSMbKDvvSlxExeenvjVnQ566+50f Dq0TZLMOBAE7S+sOhF68ZBvxbLQ5liUdakpzImf9/JfDvgq6XvtNV7IR4+CHJQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743609104; a=rsa-sha256; cv=none; b=iAAsXXWxbWm1Pgw1wzpA2gjStTn7gyyKWdTDkW1OI8AGBSrLG5iJJarujsN55WaSaP0hyH ZnURYg1qUAMDwq32pg6bkafjtzaUUDUsVeX1cHx02SHyaV+hVRsZ7Iz2qsVDIAqNJ9EmiR PRYiCtzipfNwMKVvnqmFUJoCpiW00GrpgQHRCvgofL1gavozOCRn48897LJXtWCjjr6EI6 DnC/9siHYNnqu6Ah1oTHJfM4NqNuzA8wmehx5d6/rIU2CLYZ1dD0xKsWf73o+v1XSaz5IQ 8seL/A/5FkslXD0X+Hwei8cKGba5YjxU0TpFxE5H3+zM1rQbVzVmYQjEzNOMOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743609104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rWp4vZFvDv3UxUOLs+Vjwen4i/fjYkOs25jJAIDX6SE=; b=u1T7Is1x7trcVR+T3hbQnRoYkzEgM33MUWdJeWeK4mdZTra/1opoxRJxa+XmnwWaG5dyh3 v+CHfVL8VQ+5aT7rDx6hX6h2MZs21PjV/61u3uwDHwFlEehqIovaM5JHJkITvBK8Ndzvu6 nhL4l7aEYEGGaXr/8EKEUAT1Ra3+bzoLJYeo8wyKoMuuieTgogxLpR8+15fx0kVFUfRShF 9LQ9MZCzlVGCB280ypzsotqAlAgqggQOi/teAZVIlf8GEmprzZ7+uDfABd3THwtPZiqy2j yYGwPg2GzsD+DK8aIxOWJSiDl3SvfEo+ON3vM0TX2JyAKb/lMWX74BLG9Lkpdw== 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 4ZSTrH6502z75F; Wed, 02 Apr 2025 15:51: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 532FphXI033972; Wed, 2 Apr 2025 15:51:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532Fph8x033969; Wed, 2 Apr 2025 15:51:43 GMT (envelope-from git) Date: Wed, 2 Apr 2025 15:51:43 GMT Message-Id: <202504021551.532Fph8x033969@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: e85aaed60eb0 - main - Correct CTLTYPE of SYSCTL_SBINTIME_MSEC etc List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf commit e85aaed60eb061f31b2f1e5dc92b0ff0419b5fbf Author: Colin Percival AuthorDate: 2025-03-31 04:05:33 +0000 Commit: Colin Percival CommitDate: 2025-04-02 15:51:04 +0000 Correct CTLTYPE of SYSCTL_SBINTIME_MSEC etc These should be CTLTYPE_S64, not CTLTYPE_INT, since they handle 64-bit values. Reviewed by: imp Fixes: 003ffd57fee1 ("Add sysctl_usec_to_sbintime [...]") MFC after: 2 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49584 --- sys/sys/sysctl.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index 916c91da3d53..0eb9ff274c1b 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -864,7 +864,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); /* OID expressing a sbintime_t as microseconds */ #define SYSCTL_SBINTIME_USEC(parent, nbr, name, access, ptr, descr) \ SYSCTL_OID(parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ (ptr), 0, sysctl_usec_to_sbintime, "Q", descr); \ CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64) @@ -874,7 +874,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64); \ sysctl_add_oid(ctx, parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ __ptr, 0, sysctl_usec_to_sbintime, "Q", __DESCR(descr), \ NULL); \ }) @@ -882,7 +882,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); /* OID expressing a sbintime_t as milliseconds */ #define SYSCTL_SBINTIME_MSEC(parent, nbr, name, access, ptr, descr) \ SYSCTL_OID(parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ (ptr), 0, sysctl_msec_to_sbintime, "Q", descr); \ CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64) @@ -892,7 +892,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry); CTASSERT(((access) & CTLTYPE) == 0 || \ ((access) & SYSCTL_CT_ASSERT_MASK) == CTLTYPE_S64); \ sysctl_add_oid(ctx, parent, nbr, name, \ - CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ + CTLTYPE_S64 | CTLFLAG_MPSAFE | CTLFLAG_RD | (access), \ __ptr, 0, sysctl_msec_to_sbintime, "Q", __DESCR(descr), \ NULL); \ }) From nobody Wed Apr 2 16:25:33 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSVbK6l3Hz5sVWV; Wed, 02 Apr 2025 16:25: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 4ZSVbK61Phz3rpy; Wed, 02 Apr 2025 16:25:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611133; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eM3YhrlSgrTYDFcTjq8dOVXHjmlWzjM577jNcYaLLDo=; b=tEvrR8/n9wis4d2JQNfOflbAFA4iM/dFvOf1IuDk2CXSX/sPEcgacM1GBadYDKmrSY+c/P z1aebKiyBoLe4F2KrUPMWuJbqxo/XhjwXr4ENj7Es5k9etD80MNEV4DzmnzcX5WBc1S1qk AODJ1r0vcBW1q+ICmNEcTMn/m3snXTq3dDVi83V7EYe8SJGKg8R3HLmms3yxN5/c2b6Z7I eEk5PFrtzetT33sT+AjibLZ3CAHuaCnFKEdBnSuqnMrf9he2YtlczLw7qZH9IQGKc5+6GT MfwrgwuuhPzd55yY+DmaCBwkxzYDBdQQzIc/G1UeqqnJhYFwc6sU6dsAvzJCpw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611133; a=rsa-sha256; cv=none; b=JPUiATNhDawCpyK+QIIVPxwcJcNX71JJJ4F8hwJhextNlBw3kFN4821IVhXqGAH9qL6snR 6Qq1Thp9xGrK+WsCYDRxvPQ/yykJGYowOulqoN5Nw67/RaFjLh/3iWApdvVNf863jfl73u OHh2YlCXSlvk54R0jJ55bPRHiL0y2tOAAyF+kxdhJwvbNnTCu1aGBEBTh8u82PP4KodN9q gP4aJuVmFx3xBbl0RfXZQwWGo7zjDsHKaw4xMAJc+X0zf5OK9JZt8cbckEqVuFWVzO5niH 8m/FTa7Wnpkgtn4HYluh2T8wIDrrADFHXDSdceWAq0hzKYej6LRoeL496cOJHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611133; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eM3YhrlSgrTYDFcTjq8dOVXHjmlWzjM577jNcYaLLDo=; b=UTvk8PGXm+hcwHAJQlt4n00aB15K7uI0ifwU31lyaWuzIB8qqEFd++yuyH60+N55knYYw9 qcZ+g4Bu1F/znyR0CCNsapDKtYX1Dt/c1g9k3aTAfewMOuTr5dOACx5hFkfXYgC8Uav7V2 AZjKSx8zsgdPDvrgRaLyYzODhgLNShShd9q2SVpUmDPjI1RCaXK0wuNJUJ701uxqptK9Nl 1R9rYaAlW7MJ9D0dW+sO2TBfkhopTNvQv5SC0C5lR1BZRy25AJPgu2fqS4+lUXU01UUqCg 9dQ8pv8iQskaLIcAYJvB7eAYxFilxrb4znq9kRQIFZuN5bdoKNYyeCgvTfhYJQ== 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 4ZSVbK5339z7Wx; Wed, 02 Apr 2025 16:25: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 532GPXon092755; Wed, 2 Apr 2025 16:25:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GPXBp092752; Wed, 2 Apr 2025 16:25:33 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:25:33 GMT Message-Id: <202504021625.532GPXBp092752@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: ce9c46738295 - main - ktrace tests: don't use INADDR_ANY as a destination for sendto(2) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ce9c4673829561bf66c78577be2b078d5662a33b Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=ce9c4673829561bf66c78577be2b078d5662a33b commit ce9c4673829561bf66c78577be2b078d5662a33b Author: Gleb Smirnoff AuthorDate: 2025-04-02 16:21:04 +0000 Commit: Gleb Smirnoff CommitDate: 2025-04-02 16:25:01 +0000 ktrace tests: don't use INADDR_ANY as a destination for sendto(2) The INADDR_ANY is a broadcast address, and with recent changes its use as destination for UDP sendto(2) was disallowed unless SO_BROADCAST is set. Use just a localhost address for a successful sendto(2). While here convert a couple checks that happen in the parent to use normal ATF_REQUIRE() instead of CHILD_REQUIRE(). PR: 285851 Fixes: 3b281d1421a78b588c5fc4182009ce62d8823d95 --- tests/sys/kern/ktrace_test.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/sys/kern/ktrace_test.c b/tests/sys/kern/ktrace_test.c index dfd60b73a5cd..785c78bedaba 100644 --- a/tests/sys/kern/ktrace_test.c +++ b/tests/sys/kern/ktrace_test.c @@ -378,12 +378,11 @@ ATF_TC_BODY(ktrace__cap_sockaddr, tc) ATF_REQUIRE(sigaddset(&set, SIGUSR1) != -1); ATF_REQUIRE(sigprocmask(SIG_BLOCK, &set, NULL) != -1); - CHILD_REQUIRE((sfd = socket(AF_INET, SOCK_DGRAM, - IPPROTO_UDP)) != -1); + ATF_REQUIRE((sfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1); addr.sin_family = AF_INET; addr.sin_port = htons(5000); - addr.sin_addr.s_addr = INADDR_ANY; - CHILD_REQUIRE(bind(sfd, (const struct sockaddr *)&addr, + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + ATF_REQUIRE(bind(sfd, (const struct sockaddr *)&addr, sizeof(addr)) != -1); ATF_REQUIRE((pid = fork()) != -1); @@ -409,7 +408,7 @@ ATF_TC_BODY(ktrace__cap_sockaddr, tc) saddr = (struct sockaddr_in *)&violation.cap_data.cap_sockaddr; ATF_REQUIRE_EQ(saddr->sin_family, AF_INET); ATF_REQUIRE_EQ(saddr->sin_port, htons(5000)); - ATF_REQUIRE_EQ(saddr->sin_addr.s_addr, INADDR_ANY); + ATF_REQUIRE_EQ(saddr->sin_addr.s_addr, htonl(INADDR_LOOPBACK)); close(sfd); } From nobody Wed Apr 2 16:26:51 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSVcr2JGVz5sVgS; Wed, 02 Apr 2025 16: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 4ZSVcr0LVFz3swc; Wed, 02 Apr 2025 16: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=1743611212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rt98GqE8fAYh/uZ2QOyrxPQvAlnu+5zc3R+yLXYA1LU=; b=xAYjhJAi4MHs6vpzi4rkA472plV/GBGLF8gw/JAciUEyBU5vX0KFIZy8EMSdgtXezLsUQ1 GQhZjV3+eMLrWOONuvoHAC65jfhFv5BBYc4gBRl3r2Ve4t5N9ct6xCc7OJIu08flpQa3EP nj+bMbJMpz7xpT2ViYuMbKhk2/MCGcZNsANmqL8/Js2t3oN2uwBc36fgeM5ftoTKD4ag+O 6AXLnVkyfNs6VRa/eZoyI6Z5ox5tvM/fWdguZV77Mrd17M3S//KNrqGjm9NZwni1RvVUe1 00aDEhqAcE3BoF0m0AI3aNWl6ScW5BEv/86HWMi+6jc4eN2dWlVyeDe06vdDNg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611212; a=rsa-sha256; cv=none; b=Wo02GzZlCW94te5mBm+PAguj4qn710QEQarX385FH9wd7eTMSQ6fA4NVKnNzYPXiMNZqIE 1IHDtfAVZTxjeHhTLGNSsz0AxJOuStGj07rflkYhBuYG96pj1kygVUXgz699Dyc4TRGb5z oadFMifgoOlXhvWrEitWN07sD1yOVlLMrel86MvrwHBql9Hv/GfdQvZv16uk57SHiwEk3r 3D8bUtIcCMwnWJDY08W8zkI8nrIQ71WYAnkPlHRmvgoulG12QKu5Rgv3kpnWrjz+9j8EU4 BvtGeWIi0Y//ZGF/jpS3CFzlEaQz2XIxsARCKmH26uhaYSFfCWZfHRQlrBLSjQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rt98GqE8fAYh/uZ2QOyrxPQvAlnu+5zc3R+yLXYA1LU=; b=hL1pOJW8WbyvVdy/3RvSm/vmkQDM82F9rega5FP+Hwjnyfr45Mx2dObhWeqxI4kH0+wULL 1o/4P5n5KEY2lhcCj8b3ST5aoOxFofm5kCmSFrioeIew25dvgeTNc5hGx/R8CwNqNIl7EL qONNuLPzcVD8d/1PwC7cRXXrsjl5qFHUqYB7J9BhK987aJj25wrnO5nVEeWNj2H38UFeHw rlM9H/FqRx6HsL6hj/jlP+6KAKHlW6D3MQlJvCrYtBoEBWTOi0gTlOBMeLVRXLL8+5Mfqv wekSznS51VX9ftDk8wYoURWH37mWGjNN78kQWt00+N89Xp1yiI/PrTR9Hxl0Pw== 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 4ZSVcq70hwz7w1; Wed, 02 Apr 2025 16:26: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 532GQpba093279; Wed, 2 Apr 2025 16: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 532GQpMQ093276; Wed, 2 Apr 2025 16:26:51 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:26:51 GMT Message-Id: <202504021626.532GQpMQ093276@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: 03c12d0c21a3 - main - MAC/do: parse_single_rule(): Fix herald comment's first line List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 commit 03c12d0c21a3f3aba5db8b86fc3b4637cfe109a7 Author: Olivier Certner AuthorDate: 2025-04-01 16:43:40 +0000 Commit: Olivier Certner CommitDate: 2025-04-02 16:26:33 +0000 MAC/do: parse_single_rule(): Fix herald comment's first line No functional change. MFC after: 5 days Sponsored by: The FreeBSD Foundation --- sys/security/mac_do/mac_do.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 8175f8ccdab4..7bd3e2294798 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -844,7 +844,7 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, } /* - * See also first comments for parse_rule() below. + * See also the herald comment for parse_rules() below. * * The second part of a rule, called (or ), is a comma-separated * (',') list of '=' clauses similar to that of the From nobody Wed Apr 2 16:26:53 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSVcs2JgQz5sVGQ; Wed, 02 Apr 2025 16: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 4ZSVcs1FtCz3swd; Wed, 02 Apr 2025 16: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=1743611213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N4l53Ym/P7gY9UJOwK51T0q+uxijZWMG40XevkFsNEY=; b=t4XmB8L2IYNR+H8phWmfs3yRWZb63eeKZ3n1GI5Sv6wuBWT9NaiE6bM404hq+96ZBTIRYR i6Gy7NZ/roMPS2Y4V+ebV2msQD5mVLvpMyaE9a0U4Vw8lDm6HTnA9E5QclUhz9yu4E+Tky GeVNwCeIAEgAOtgsi745xTvPkILbZp3UlvqNqadI/1hq241Il0skgi6z0R5Q/TNLTnVn7Y LhMqYoyqUjajI1EgluCbyZI+m6xVXjHBPZ5jX+OtaTRy/MdIrAIKL/xAuuBGTOSzmq8oI6 GqFkBBdXjvxFR/P7CjNYpT7d+p+nE+r9Ln9BqRleMlNftQV0M6lc6BKexvpd+A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743611213; a=rsa-sha256; cv=none; b=dyp5g3AN1SKU+qzUy5K1apkOLn6jdspJzWiPNwenktlZ8YO3kgNkW6xzyF9s6LkbIhRkoJ F8vVlwGzsshi2BDUGr3WxsgjklRr2reuyvdft3kIiGNuGf0ZjYaf7v8UF8YwiESqQVQaIx thZ6IDDlbWpvNFSvSAnT+JrM+RnmmXq1UNY5/F4MkENkcLBzG/52fhS4Zft1LYwxC6gkGA Ix8wDP1q80wdH7SLFMqlXvAdP0YfZbfmXC27NS/wymFtwsvM+MuD01g6/WvQGnTXgbuyPO QB2Yav2WRcO6LOylKI2s0fVxyNuZLuAe7aevL0bLjE/gUqKRfBX238rF9/hPKA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743611213; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=N4l53Ym/P7gY9UJOwK51T0q+uxijZWMG40XevkFsNEY=; b=ERoAti38/tXT2wFwehEO0lcfZ4npxpwHCXN56WzKjWm6ufXY+5krWNogC4eHeTZd+cjR45 SYUCvr4frThwIkoMxSnSc9TcI+XKYUoAFCZuz9imtwHcQWuZhioCxSRsWDD4IfvtqlwIBC vdDommppgkL4oZgNBCsrBqT82CejVQJJyOr7s0RKrR4vmm/M+GMufknnt6vRWF1yY7AdMF W89aIGy1FJwul3YSu9hgdEgpwI4mLGwQ1UGNFy4hZ4U6dAxvf1vZMI1UYCOd6TODFlqkZs QQSmrhxfsWhvQh6IZs8i4tbieaDnysGZOL4p60FXwagEdmGnH7/IMD+6BjddiQ== 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 4ZSVcs0r21z7w2; Wed, 02 Apr 2025 16: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 532GQr6R093315; Wed, 2 Apr 2025 16: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 532GQrT9093312; Wed, 2 Apr 2025 16:26:53 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:26:53 GMT Message-Id: <202504021626.532GQrT9093312@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: f01d26dec67f - main - MAC/do: Rules: and parts now to be separated by '>' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f01d26dec67fb6597438ed765269b85d1099a6fa Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=f01d26dec67fb6597438ed765269b85d1099a6fa commit f01d26dec67fb6597438ed765269b85d1099a6fa Author: Olivier Certner AuthorDate: 2025-04-01 17:06:17 +0000 Commit: Olivier Certner CommitDate: 2025-04-02 16:26:38 +0000 MAC/do: Rules: and parts now to be separated by '>' Previously, we would accept only ':' as the separator, which makes parsing of the rule specification harder for humans, especially those people that are used to UNIX systems where ':' is used as the separator in PATH. With ':', the and parts can look like two different elements that are unrelated, especially to these eyes. Change parse_single_rule() so that '>' is also accepted as a separator between and , and promote it as the one to use. During a transition period, we will still allow the use of ':' for backwards compatibility. The manual page update comes from separate revision D49628. ':' has been completely removed from it on purpose. Reviewed by: bapt, manpages (ziaee) MFC after: 5 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49627 --- share/man/man4/mac_do.4 | 34 +++++++++++++++++----------------- sys/security/mac_do/mac_do.c | 11 ++++++----- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/share/man/man4/mac_do.4 b/share/man/man4/mac_do.4 index 9a9f669cd51c..4c067205225c 100644 --- a/share/man/man4/mac_do.4 +++ b/share/man/man4/mac_do.4 @@ -75,9 +75,9 @@ and a .Li Aq to part .Pq also called Dq target , -in this order, separated by a colon -.Pq Ql ":" : -.Dl Ao rule Ac \ ⟶\ Ao from Ac So ":" Sc Ao to Ac +in this order, separated by a greater-than sign +.Pq Ql > : +.Dl Ao rule Ac \ ⟶\ Ao from Ac So > Sc Ao to Ac .Ss Rule's Ao from Ac Part The first part of a rule, .Li Aq from , @@ -347,32 +347,32 @@ as this path is currently not configurable. Here are several examples of single rules matching processes having a real user ID of 10001: .Bl -tag -width indent -.It Li uid=10001:uid=10002 +.It Li uid=10001>uid=10002 Allows the process to switch any of its real, effective or saved user ID to 10002, but keeping the groups it is already in, and with the same primary/supplementary groups split. -.It Li uid=10001:uid=10002,uid=10003 +.It Li uid=10001>uid=10002,uid=10003 Same as the first example, but also allows to switch to UID 10003 instead of 10002. -.It Li uid=10001:uid=10002,gid=10002 +.It Li uid=10001>uid=10002,gid=10002 Same as the first example, but the new primary groups must be set to 10002 and no supplementary groups should be set. -.It Li uid=10001:uid=10002,gid=10002,+gid=.\& +.It Li uid=10001>uid=10002,gid=10002,+gid=.\& Same as the previous example, but in addition allowing to retain any current supplementary groups. -.It Li uid=10001:uid=10002,gid=10002,!gid=.\& +.It Li uid=10001>uid=10002,gid=10002,!gid=.\& Same as the previous example, but with the additional constraint that all current supplementary groups must be kept. -.It Li uid=10001:uid=10002,gid=10002,+gid=.,-gid=10001 +.It Li uid=10001>uid=10002,gid=10002,+gid=.,-gid=10001 Same as -.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +.Ql uid=10001>uid=10002,gid=10002,+gid=.\& above, but 10001 cannot be retained as a supplementary group. -.It Li uid=10001:uid=10002,gid=10002,+gid=.,!gid=10003 +.It Li uid=10001>uid=10002,gid=10002,+gid=.,!gid=10003 Same as -.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +.Ql uid=10001>uid=10002,gid=10002,+gid=.\& above, with the additional constraint that 10003 must appear in the supplementary groups. -.It Li uid=10001:uid=10002,gid=*,+gid=* +.It Li uid=10001>uid=10002,gid=*,+gid=* Same as the first example, but lifting any constraints on groups, allowing the process to become part of any groups it sees fit. .El @@ -380,17 +380,17 @@ process to become part of any groups it sees fit. Here are several examples of single rules matching processes having a real group ID of 10001: .Bl -tag -width indent -.It Li gid=10001:uid=0 +.It Li gid=10001>uid=0 Makes 10001 a more powerful .Ql wheel group, allowing its members to switch to root without password. -.It Li gid=10001:gid=10002 +.It Li gid=10001>gid=10002 Allows the process to enter GID 10002 as a primary group, but only if giving up all its supplementary groups. -.It Li security.mac.do.rules=gid=10001:gid=10002,+gid=.\& +.It Li security.mac.do.rules=gid=10001>gid=10002,+gid=.\& Same as the previous example, but allows to retain any current supplementary groups. -.It Li gid=10001:gid=10002,!gid=.\& +.It Li gid=10001>gid=10002,!gid=.\& Same as the previous example, but with the additional constraint that all current supplementary groups must be kept. .El diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 7bd3e2294798..a83c194b24ae 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -891,7 +891,7 @@ parse_single_rule(char *rule, struct rules *const rules, goto einval; } - from_id = strsep_noblanks(&rule, ":"); + from_id = strsep_noblanks(&rule, ":>"); if (is_null_or_empty(from_id)) { make_parse_error(parse_error, 0, "No ID specified."); goto einval; @@ -991,8 +991,9 @@ einval: * to point to a 'struct parse_error' giving an error message for the problem, * else '*parse_error' is set to NULL. * - * Expected format: A semi-colon-separated list of rules of the form - * ":". The part is of the form "=" where + * Expected format: A >-colon-separated list of rules of the form + * ">" (for backwards compatibility, a semi-colon ":" is accepted + * in place of '>'). The part is of the form "=" where * is "uid" or "gid", an UID or GID (depending on ) and is * "*", "any" or a comma-separated list of '=' clauses (see the * comment for parse_single_rule() for more details). For convenience, empty @@ -1002,8 +1003,8 @@ einval: * allowed between '' and ''). * * Examples: - * - "uid=1001:uid=1010,gid=1010;uid=1002:any" - * - "gid=1010:gid=1011,gid=1012,gid=1013" + * - "uid=1001>uid=1010,gid=1010;uid=1002>any" + * - "gid=1010>gid=1011,gid=1012,gid=1013" */ static int parse_rules(const char *const string, struct rules **const rulesp, From nobody Wed Apr 2 16:57:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSWHn4M3Fz5sWvr; Wed, 02 Apr 2025 16:57: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 4ZSWHn3h37z3w3d; Wed, 02 Apr 2025 16:57:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zeivw4R2jFRImEQeMF7v/TCLAlUwkh5tXVdyQghI6SM=; b=xWxBP5B5yItWA0/R2yYWkt6mVf4iNTzwLxmgaOF1srJv1lRX+J73ecLtekifuHxNQ/sBtj redlPWxlLI1Z8E7QdLYBydBdtfhJEqAbTJfYUzPcFWkqvLsk56LbGm4AEhOMGk76NakbME Mnj/1fHNq2hsyYZb41yX+HHTKbCRkLU5voT/RcBFt2k6mex/+FsVnAEZbG/0JopVho7n2G gcpUzgxxArL/6jQK6bqEluDdi+3KxlR93i2qhBaYWKKfRSPkH736HcRLN96gSag+M391rr R5cqh7hFsH67ALGcEuGI5s5LTvlkQwJzgLr0lgEdLUO87o9Adij6Gz3x10TWGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743613029; a=rsa-sha256; cv=none; b=LH1nKdHC/U8/ZHMyhaIseRWHmJeZR/H+4+DRzlcnIpH6JUT/fn+IHynD1T6iqq2JwGs2Si xk984ZSD+JB+/UJs1wzZhaRXKH9xsCQh9MhE9MRiveUwEkRr8NUBuq1x7TuiYr9gXcQNad TQt/qVnJDhu+Zb+A+KgXTtGDH04+KhruhxLRp8/twFNTfhFwBfn8/dOCQOic5iTNvR/YYq 3jWjeOAUmKfUOWOmN2ZNSgyMxyQYGG+ZsoeJdXui27z/03RUc+qj3T7Gsfj0sLuXtJqmrh EfZAZO5NdqmNVFJD8RcPYYsqPdcwxEMdW36I5YeH3kHktNpZN2Qs2eNwgHPVkQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Zeivw4R2jFRImEQeMF7v/TCLAlUwkh5tXVdyQghI6SM=; b=MJwKylNaEcIGh7v21rY6KZfYDGHC/pUT7kohObT/sye4dQfQvK4hGSlIYIBKldw9FN4z4V p5qEKL7Jvf8iE1/8nlEYWsX+gm1HfM2VtxipqxzZCsAwd4FrAM6tEHFGoiaA7DG2JPPerJ 8uCGgTRmTnVlud/wm+KV3V26zPexDQTukmys3MG4FxnjClooOlSjTHt3E62zo1IIzdcfBO N+O9T3m2zpECkBm8iPFbrFS+SDMjZfTPZd9F1j5KZu7/nIdLr6QRp6hhpZxAIdOoQK7rs6 aROyxHe01MkJ45hf+xV8qfh5d9OILmy2+ad5ZXjE+kfQpRORbOfKIxEtbc/Prw== 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 4ZSWHn3BMYz8TB; Wed, 02 Apr 2025 16:57: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 532Gv9Or049183; Wed, 2 Apr 2025 16:57:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532Gv93w049180; Wed, 2 Apr 2025 16:57:09 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:57:09 GMT Message-Id: <202504021657.532Gv93w049180@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: e69623451ea6 - main - mccomphy: add support for YT8531 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e69623451ea62d2c3c76e0d0e775aa3f7317f2eb Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=e69623451ea62d2c3c76e0d0e775aa3f7317f2eb commit e69623451ea62d2c3c76e0d0e775aa3f7317f2eb Author: Jari Sihvola AuthorDate: 2025-03-29 20:55:13 +0000 Commit: Mitchell Horne CommitDate: 2025-04-02 16:56:36 +0000 mccomphy: add support for YT8531 Reviewed by: mhorne Tested by: mhorne MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D45600 --- sys/dev/mii/mcommphy.c | 258 ++++++++++++++++++++++++++++++++++++++++++++----- sys/dev/mii/miidevs | 2 + 2 files changed, 235 insertions(+), 25 deletions(-) diff --git a/sys/dev/mii/mcommphy.c b/sys/dev/mii/mcommphy.c index a8a16c00bade..edbed0c66279 100644 --- a/sys/dev/mii/mcommphy.c +++ b/sys/dev/mii/mcommphy.c @@ -1,6 +1,7 @@ /* * Copyright (c) 2022 Jared McNeill * Copyright (c) 2022 Soren Schmidt + * Copyright (c) 2024 Jari Sihvola * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +27,8 @@ */ /* - * Motorcomm YT8511C / YT8511H Integrated 10/100/1000 Gigabit Ethernet phy + * Motorcomm YT8511C/YT8511H/YT8531 + * Integrated 10/100/1000 Gigabit Ethernet phy */ #include @@ -42,12 +44,16 @@ #include #include +#include +#include "miidevs.h" #include "miibus_if.h" -#define MCOMMPHY_OUI 0x000000 -#define MCOMMPHY_MODEL 0x10 -#define MCOMMPHY_REV 0x0a +#define MCOMMPHY_YT8511_OUI 0x000000 +#define MCOMMPHY_YT8511_MODEL 0x10 +#define MCOMMPHY_YT8511_REV 0x0a + +#define MCOMMPHY_YT8531_MODEL 0x11 #define EXT_REG_ADDR 0x1e #define EXT_REG_DATA 0x1f @@ -61,9 +67,49 @@ #define PHY_SLEEP_CONTROL1_REG 0x27 #define PLLON_IN_SLP 0x4000 +/* Registers and values for YT8531 */ +#define YT8531_CHIP_CONFIG 0xa001 +#define RXC_DLY_EN (1 << 8) + +#define YT8531_PAD_DRSTR_CFG 0xa010 +#define PAD_RXC_MASK 0x7 +#define PAD_RXC_SHIFT 13 +#define JH7110_RGMII_RXC_STRENGTH 6 + +#define YT8531_RGMII_CONFIG1 0xa003 +#define RX_DELAY_SEL_SHIFT 10 +#define RX_DELAY_SEL_MASK 0xf +#define RXC_DLY_THRESH 2250 +#define RXC_DLY_ADDON 1900 +#define TX_DELAY_SEL_FE_MASK 0xf +#define TX_DELAY_SEL_FE_SHIFT 4 +#define TX_DELAY_SEL_MASK 0xf +#define TX_DELAY_SEL_SHIFT 0 +#define TX_CLK_SEL (1 << 14) +#define INTERNAL_DLY_DIV 150 + +#define YT8531_SYNCE_CFG 0xa012 +#define EN_SYNC_E (1 << 6) + #define LOWEST_SET_BIT(mask) ((((mask) - 1) & (mask)) ^ (mask)) #define SHIFTIN(x, mask) ((x) * LOWEST_SET_BIT(mask)) +static const struct mii_phydesc mcommphys[] = { + MII_PHY_DESC(MOTORCOMM, YT8511), + MII_PHY_DESC(MOTORCOMM2, YT8531), + MII_PHY_END +}; + +struct mcommphy_softc { + mii_softc_t mii_sc; + device_t dev; + bool tx_10_inv; + bool tx_100_inv; + bool tx_1000_inv; +}; + +static void mcommphy_yt8531_speed_adjustment(struct mii_softc *sc); + static int mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) { @@ -84,6 +130,16 @@ mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) /* Update the media status. */ PHY_STATUS(sc); + /* + * For the needs of JH7110 which has two Ethernet devices with + * different TX inverted configuration depending on speed used + */ + if (sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL && + (sc->mii_media_active != mii->mii_media_active || + sc->mii_media_status != mii->mii_media_status)) { + mcommphy_yt8531_speed_adjustment(sc); + } + /* Callback if something changed. */ mii_phy_update(sc, cmd); @@ -105,26 +161,22 @@ mcommphy_probe(device_t dev) * The YT8511C reports an OUI of 0. Best we can do here is to match * exactly the contents of the PHY identification registers. */ - if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_OUI && - MII_MODEL(ma->mii_id2) == MCOMMPHY_MODEL && - MII_REV(ma->mii_id2) == MCOMMPHY_REV) { + if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_YT8511_OUI && + MII_MODEL(ma->mii_id2) == MCOMMPHY_YT8511_MODEL && + MII_REV(ma->mii_id2) == MCOMMPHY_YT8511_REV) { device_set_desc(dev, "Motorcomm YT8511 media interface"); - return BUS_PROBE_DEFAULT; + return (BUS_PROBE_DEFAULT); } - return (ENXIO); + + /* YT8531 follows a conventional procedure */ + return (mii_phy_dev_probe(dev, mcommphys, BUS_PROBE_DEFAULT)); } -static int -mcommphy_attach(device_t dev) +static void +mcommphy_yt8511_setup(struct mii_softc *sc) { - struct mii_softc *sc = device_get_softc(dev); uint16_t oldaddr, data; - mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); - - PHY_RESET(sc); - - /* begin chip stuff */ oldaddr = PHY_READ(sc, EXT_REG_ADDR); PHY_WRITE(sc, EXT_REG_ADDR, PHY_CLOCK_GATING_REG); @@ -150,21 +202,177 @@ mcommphy_attach(device_t dev) PHY_WRITE(sc, EXT_REG_DATA, data); PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - /* end chip stuff */ +} + +static void +mcommphy_yt8531_speed_adjustment(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + struct mii_data *mii = sc->mii_pdata; + bool tx_clk_inv = false; + uint16_t reg, oldaddr; + + switch (IFM_SUBTYPE(mii->mii_media_active)) { + case IFM_1000_T: + tx_clk_inv = mcomm_sc->tx_1000_inv; + break; + case IFM_100_T: + tx_clk_inv = mcomm_sc->tx_100_inv; + break; + case IFM_10_T: + tx_clk_inv = mcomm_sc->tx_10_inv; + break; + } + + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); + reg = PHY_READ(sc, EXT_REG_DATA); + if (tx_clk_inv) + reg |= TX_CLK_SEL; + else + reg &= ~TX_CLK_SEL; + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + return; +} + +static int +mcommphy_yt8531_setup_delay(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); + pcell_t val; + uint16_t reg, oldaddr; + int rx_delay, tx_delay = 0; + bool rxc_dly_en_off = false; + + if (OF_getencprop(cfg->phynode, "rx-internal-delay-ps", &val, + sizeof(val)) > 0) { + if (val <= RXC_DLY_THRESH && val % INTERNAL_DLY_DIV == 0) { + rx_delay = val / INTERNAL_DLY_DIV; + rxc_dly_en_off = true; + } else { + rx_delay = (val - RXC_DLY_ADDON) / INTERNAL_DLY_DIV; + if ((val - RXC_DLY_ADDON) % INTERNAL_DLY_DIV != 0) + return (ENXIO); + } + } + + if (OF_getencprop(cfg->phynode, "tx-internal-delay-ps", &val, + sizeof(val)) > 0) { + tx_delay = val / INTERNAL_DLY_DIV; + if (val % INTERNAL_DLY_DIV != 0) + return (ENXIO); + } + + mii_fdt_free_config(cfg); - sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & sc->mii_capmask; - if (sc->mii_capabilities & BMSR_EXTSTAT) - sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + /* Modifying Chip Config register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_CHIP_CONFIG); + reg = PHY_READ(sc, EXT_REG_DATA); + if (rxc_dly_en_off) + reg &= ~(RXC_DLY_EN); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + /* Modifying RGMII Config1 register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(RX_DELAY_SEL_MASK << RX_DELAY_SEL_SHIFT); + reg |= rx_delay << RX_DELAY_SEL_SHIFT; + reg &= ~(TX_DELAY_SEL_MASK << TX_DELAY_SEL_SHIFT); + reg |= tx_delay << TX_DELAY_SEL_SHIFT; + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + return (0); +} + +static int +mcommphy_yt8531_setup(struct mii_softc *sc) +{ + struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; + mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); + uint16_t reg, oldaddr; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-10-inverted")) + mcomm_sc->tx_10_inv = true; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-100-inverted")) + mcomm_sc->tx_100_inv = true; + + if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-1000-inverted")) + mcomm_sc->tx_1000_inv = true; + + mii_fdt_free_config(cfg); + + oldaddr = PHY_READ(sc, EXT_REG_ADDR); + + /* Modifying Pad Drive Strength register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_PAD_DRSTR_CFG); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(PAD_RXC_MASK << PAD_RXC_SHIFT); + reg |= (JH7110_RGMII_RXC_STRENGTH << PAD_RXC_SHIFT); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + /* Modifying SyncE Config register */ + PHY_WRITE(sc, EXT_REG_ADDR, YT8531_SYNCE_CFG); + reg = PHY_READ(sc, EXT_REG_DATA); + reg &= ~(EN_SYNC_E); + PHY_WRITE(sc, EXT_REG_DATA, reg); + + PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); + + if (mcommphy_yt8531_setup_delay(sc) != 0) + return (ENXIO); + + return (0); +} + +static int +mcommphy_attach(device_t dev) +{ + struct mcommphy_softc *mcomm_sc = device_get_softc(dev); + mii_softc_t *mii_sc = &mcomm_sc->mii_sc; + int ret = 0; + + mcomm_sc->dev = dev; + + mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); + + PHY_RESET(mii_sc); + + if (mii_sc->mii_mpd_model == MCOMMPHY_YT8511_MODEL) + mcommphy_yt8511_setup(mii_sc); + else if (mii_sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL) + ret = mcommphy_yt8531_setup(mii_sc); + else { + device_printf(dev, "no PHY model detected\n"); + return (ENXIO); + } + if (ret) { + device_printf(dev, "PHY setup failed, error: %d\n", ret); + return (ret); + } + + mii_sc->mii_capabilities = PHY_READ(mii_sc, MII_BMSR) & + mii_sc->mii_capmask; + if (mii_sc->mii_capabilities & BMSR_EXTSTAT) + mii_sc->mii_extcapabilities = PHY_READ(mii_sc, MII_EXTSR); device_printf(dev, " "); - mii_phy_add_media(sc); + mii_phy_add_media(mii_sc); printf("\n"); - MIIBUS_MEDIAINIT(sc->mii_dev); + MIIBUS_MEDIAINIT(mii_sc->mii_dev); return (0); } - static device_method_t mcommphy_methods[] = { /* device interface */ DEVMETHOD(device_probe, mcommphy_probe), @@ -177,7 +385,7 @@ static device_method_t mcommphy_methods[] = { static driver_t mcommphy_driver = { "mcommphy", mcommphy_methods, - sizeof(struct mii_softc) + sizeof(struct mcommphy_softc) }; DRIVER_MODULE(mcommphy, miibus, mcommphy_driver, 0, 0); diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index c8eba403c22d..5c10fd0f0224 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -63,6 +63,7 @@ oui LEVEL1 0x00207b Level 1 oui MARVELL 0x005043 Marvell Semiconductor oui MICREL 0x0010a1 Micrel oui MOTORCOMM 0x000000 Motorcomm +oui MOTORCOMM2 0xc82b5e Motorcomm oui MYSON 0x00c0b4 Myson Technology oui NATSEMI 0x080017 National Semiconductor oui PMCSIERRA 0x00e004 PMC-Sierra @@ -295,6 +296,7 @@ model MICREL KSZ9031 0x0022 Micrel KSZ9031 10/100/1000 PHY /* Motorcomm PHYs */ model MOTORCOMM YT8511 0x010a Motorcomm YT8511 10/100/1000 PHY +model MOTORCOMM2 YT8531 0x0011 Motorcomm YT8531 10/100/1000 PHY /* Myson Technology PHYs */ model xxMYSON MTD972 0x0000 MTD972 10/100 media interface From nobody Wed Apr 2 16:57:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSWHp6y0pz5sXFs; Wed, 02 Apr 2025 16:57: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 4ZSWHp4bGyz3wPk; Wed, 02 Apr 2025 16:57:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BmdhR1iJcQ2LlYWyWAgO/nxRGZhmK8SAWlfvpeJjTdk=; b=JIS3MaCd9lrFFqgY3IXQhu2mIxV0zq0oiAfaNlkP3arf/GGQ6vZ+HeTp0pBnR8wvzS6IbS a8Jg6WQNX5dr0Pr6/p9+Gs3bQDc3fcs4SBKrfiJQCjwSydR0Cn1qb4uU60LNRfjYaE15vD 1upfZJOPFWHKyK0RfPIBEiv+kuOHLJB1j7DDWbgJgLfGq7gxwtK5IKRZnD6PIl3OptcGip Z5RN1DMBcCn563+Xc8Zb7c22DtJxwYSa6nExG5JbTeEITFJMvtZ2TMwOzIiZjyZDognMiD diR7nVbYoBi2r+9tYJnWgLOoovM27cpxRV2wdfWOyKJgmVqLXHsZA9wgSeOB+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743613030; a=rsa-sha256; cv=none; b=dGZ1og2RSOAo4tK0v6U03NJpiYV3Fpsb2URPGdR0A9M8xJo5t9uPvFKLosi4FisocNhEm6 Qh4QLAEI8R2QUKm5G6jdu+pXeDGgheGpSWszJ2M6z91I47hbadK3My7j3gTES5vugZJrBD 3j7ayiea1UNaNNSd1K4fnOu6PnvH3wbRjOL6JU+kbukqgs3jhxz488AMAxQcVQOOHkleOr rQxmx6HqVcwowpcJ5qdoAIkKW5lwodBVWrAgEJC8kznqylISBJqjGNMijDnjD08rY5aiWk 8QcZWFE5FW1mkPMO640zRgVJxKThhaxehm0PMvpvYee37tHNkr9jY2bbnMnghQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743613030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BmdhR1iJcQ2LlYWyWAgO/nxRGZhmK8SAWlfvpeJjTdk=; b=jiYLSUtpi/K5ZPnSI+fqx8C8Lip2oP33YpUEbf8AVZO6fXv7LsswWSpnZ6rrAtnrdTAVzn RHDfq7lIt67Hy7gsCSvNpfbHXhZXYmuKu6PdquRP0z9jSkxo0KVxx0WVmzAgtA3bR/LJPY OzubaVtE5gf1XVw7bjql1/+UL47M4NBjQyAx4VlOY/YD+UHa/YsXecJZOR6VurEzhb6msA knpAD4YxjMKyKnDm77oZQ7OoNhwTdBiPAx+cHZmZ6agGbof3rgtxfHToIj2tjgqxI+R0m2 4SHNpKrxjoRhsEHczQoMhm9VGAsfUC9GXdjVDe6H4hRFwFoWjPtkDCfXKgV8Jg== 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 4ZSWHp47hCz8TC; Wed, 02 Apr 2025 16:57: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 532GvAtY049215; Wed, 2 Apr 2025 16:57:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532GvAcA049212; Wed, 2 Apr 2025 16:57:10 GMT (envelope-from git) Date: Wed, 2 Apr 2025 16:57:10 GMT Message-Id: <202504021657.532GvAcA049212@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: cd92dd23241e - main - eqos: Add StarFive JH7110 variant List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cd92dd23241e22dce06ebeb0c8e98eec5afcc896 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=cd92dd23241e22dce06ebeb0c8e98eec5afcc896 commit cd92dd23241e22dce06ebeb0c8e98eec5afcc896 Author: Jari Sihvola AuthorDate: 2025-04-02 16:30:23 +0000 Commit: Mitchell Horne CommitDate: 2025-04-02 16:56:38 +0000 eqos: Add StarFive JH7110 variant Found on the VisionFive v2 SBC, and similar. Reviewed by: mhorne Tested by: mhorne Discussed with: sos Differential Revision: https://reviews.freebsd.org/D45600 --- sys/dev/eqos/if_eqos.c | 33 ++++-- sys/dev/eqos/if_eqos_reg.h | 1 + sys/dev/eqos/if_eqos_starfive.c | 219 ++++++++++++++++++++++++++++++++++++++ sys/dev/eqos/if_eqos_var.h | 7 ++ sys/riscv/conf/std.starfive | 2 + sys/riscv/starfive/files.starfive | 4 + 6 files changed, 260 insertions(+), 6 deletions(-) diff --git a/sys/dev/eqos/if_eqos.c b/sys/dev/eqos/if_eqos.c index 6e2eea2e6c37..de3d8da7c3bf 100644 --- a/sys/dev/eqos/if_eqos.c +++ b/sys/dev/eqos/if_eqos.c @@ -456,7 +456,7 @@ eqos_reset(struct eqos_softc *sc) int retry; WR4(sc, GMAC_DMA_MODE, GMAC_DMA_MODE_SWR); - for (retry = 2000; retry > 0; retry--) { + for (retry = 5000; retry > 0; retry--) { DELAY(1000); val = RD4(sc, GMAC_DMA_MODE); if (!(val & GMAC_DMA_MODE_SWR)) @@ -491,7 +491,7 @@ eqos_init(void *if_softc) struct eqos_softc *sc = if_softc; if_t ifp = sc->ifp; struct mii_data *mii = device_get_softc(sc->miibus); - uint32_t val; + uint32_t val, mtl_tx_val, mtl_rx_val; if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) return; @@ -508,13 +508,18 @@ eqos_init(void *if_softc) val = RD4(sc, GMAC_DMA_CHAN0_CONTROL); val &= ~GMAC_DMA_CHAN0_CONTROL_DSL_MASK; val |= ((DESC_ALIGN - 16) / 8) << GMAC_DMA_CHAN0_CONTROL_DSL_SHIFT; - val |= GMAC_DMA_CHAN0_CONTROL_PBLX8; + if (sc->pblx8) + val |= GMAC_DMA_CHAN0_CONTROL_PBLX8; WR4(sc, GMAC_DMA_CHAN0_CONTROL, val); val = RD4(sc, GMAC_DMA_CHAN0_TX_CONTROL); + if (sc->txpbl > 0) + val |= (sc->txpbl << GMAC_DMA_CHAN0_TXRX_PBL_SHIFT); val |= GMAC_DMA_CHAN0_TX_CONTROL_OSP; val |= GMAC_DMA_CHAN0_TX_CONTROL_START; WR4(sc, GMAC_DMA_CHAN0_TX_CONTROL, val); val = RD4(sc, GMAC_DMA_CHAN0_RX_CONTROL); + if (sc->rxpbl > 0) + val |= (sc->rxpbl << GMAC_DMA_CHAN0_TXRX_PBL_SHIFT); val &= ~GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_MASK; val |= (MCLBYTES << GMAC_DMA_CHAN0_RX_CONTROL_RBSZ_SHIFT); val |= GMAC_DMA_CHAN0_RX_CONTROL_START; @@ -527,11 +532,19 @@ eqos_init(void *if_softc) GMAC_MMC_CONTROL_CNTPRSTLVL); /* Configure operation modes */ + if (sc->thresh_dma_mode) { + mtl_tx_val = sc->ttc; + mtl_rx_val = sc->rtc; + } else { + mtl_tx_val = GMAC_MTL_TXQ0_OPERATION_MODE_TSF; + mtl_rx_val = GMAC_MTL_RXQ0_OPERATION_MODE_RSF; + } + WR4(sc, GMAC_MTL_TXQ0_OPERATION_MODE, - GMAC_MTL_TXQ0_OPERATION_MODE_TSF | + mtl_tx_val | GMAC_MTL_TXQ0_OPERATION_MODE_TXQEN_EN); WR4(sc, GMAC_MTL_RXQ0_OPERATION_MODE, - GMAC_MTL_RXQ0_OPERATION_MODE_RSF | + mtl_rx_val | GMAC_MTL_RXQ0_OPERATION_MODE_FEP | GMAC_MTL_RXQ0_OPERATION_MODE_FUP); @@ -1112,6 +1125,14 @@ eqos_attach(device_t dev) int error; int n; + /* default values */ + sc->thresh_dma_mode = false; + sc->pblx8 = true; + sc->txpbl = 0; + sc->rxpbl = 0; + sc->ttc = 0x10; + sc->rtc = 0; + /* setup resources */ if (bus_alloc_resources(dev, eqos_spec, sc->res)) { device_printf(dev, "Could not allocate resources\n"); @@ -1128,7 +1149,7 @@ eqos_attach(device_t dev) GMAC_MAC_VERSION_USERVER_SHIFT; snpsver = ver & GMAC_MAC_VERSION_SNPSVER_MASK; - if (snpsver != 0x51) { + if (snpsver != 0x51 && snpsver != 0x52) { device_printf(dev, "EQOS version 0x%02x not supported\n", snpsver); return (ENXIO); diff --git a/sys/dev/eqos/if_eqos_reg.h b/sys/dev/eqos/if_eqos_reg.h index f9e7f9368cf2..fe7440bd19c7 100644 --- a/sys/dev/eqos/if_eqos_reg.h +++ b/sys/dev/eqos/if_eqos_reg.h @@ -241,6 +241,7 @@ #define GMAC_DMA_CHAN0_RX_END_ADDR 0x1128 #define GMAC_DMA_CHAN0_TX_RING_LEN 0x112C #define GMAC_DMA_CHAN0_RX_RING_LEN 0x1130 +#define GMAC_DMA_CHAN0_TXRX_PBL_SHIFT 16 #define GMAC_DMA_CHAN0_INTR_ENABLE 0x1134 #define GMAC_DMA_CHAN0_INTR_ENABLE_NIE (1U << 15) #define GMAC_DMA_CHAN0_INTR_ENABLE_AIE (1U << 14) diff --git a/sys/dev/eqos/if_eqos_starfive.c b/sys/dev/eqos/if_eqos_starfive.c new file mode 100644 index 000000000000..62f8b3f38983 --- /dev/null +++ b/sys/dev/eqos/if_eqos_starfive.c @@ -0,0 +1,219 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 Jari Sihvola + */ + +#include "opt_platform.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include "if_eqos_if.h" +#include "gpio_if.h" + +#include + +/* JH7110's board specific code for eqos Ethernet controller driver */ + +#define JH7110_CSR_FREQ 198000000 + +#define WR4(sc, o, v) bus_write_4(sc->base.res[EQOS_RES_MEM], (o), (v)) + +static const struct ofw_compat_data compat_data[] = { + {"starfive,jh7110-dwmac", 1}, + { NULL, 0} +}; + +struct if_eqos_starfive_softc { + struct eqos_softc base; + clk_t gtx; + clk_t tx; + clk_t stmmaceth; + clk_t pclk; +}; + +static int +if_eqos_starfive_set_speed(device_t dev, int speed) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + uint64_t freq; + int err; + + switch (speed) { + case IFM_1000_T: + case IFM_1000_SX: + freq = 125000000; + break; + case IFM_100_TX: + freq = 25000000; + break; + case IFM_10_T: + freq = 2500000; + break; + default: + device_printf(dev, "unsupported media %u\n", speed); + return (-EINVAL); + } + + clk_set_freq(sc->gtx, freq, 0); + err = clk_enable(sc->gtx); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->gtx)); + } + + return (0); +} + + + +static int +if_eqos_starfive_clk_init(device_t dev) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + int err; + + if (clk_get_by_ofw_name(dev, 0, "gtx", &sc->gtx) != 0) { + device_printf(sc->base.dev, "could not get gtx clock\n"); + return (ENXIO); + } + + if (clk_get_by_ofw_name(dev, 0, "tx", &sc->tx) == 0) { + err = clk_enable(sc->tx); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->tx)); + } + } + if (clk_get_by_ofw_name(dev, 0, "stmmaceth", &sc->stmmaceth) == 0) { + err = clk_enable(sc->stmmaceth); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->stmmaceth)); + } + } + if (clk_get_by_ofw_name(dev, 0, "pclk", &sc->pclk) == 0) { + err = clk_enable(sc->pclk); + if (err != 0) { + device_printf(dev, "Could not enable clock %s\n", + clk_get_name(sc->pclk)); + } + } + + return (0); +} + +static int +if_eqos_starfive_init(device_t dev) +{ + struct if_eqos_starfive_softc *sc = device_get_softc(dev); + hwreset_t rst_ahb, rst_stmmaceth; + phandle_t node; + + node = ofw_bus_get_node(dev); + + sc->base.ttc = 0x10; + sc->base.rtc = 0; + + if (OF_hasprop(node, "snps,force_thresh_dma_mode")) + sc->base.thresh_dma_mode = true; + + if (OF_hasprop(node, "snps,no-pbl-x8")) + sc->base.pblx8 = false; + + if (OF_hasprop(node, "snps,txpbl")) { + OF_getencprop(node, "snps,txpbl", &sc->base.txpbl, + sizeof(sc->base.txpbl)); + } + if (OF_hasprop(node, "snps,rxpbl")) { + OF_getencprop(node, "snps,rxpbl", &sc->base.rxpbl, + sizeof(sc->base.rxpbl)); + } + + if (hwreset_get_by_ofw_name(dev, 0, "ahb", &rst_ahb)) { + device_printf(dev, "Cannot get ahb reset\n"); + return (ENXIO); + } + if (hwreset_assert(rst_ahb) != 0) { + device_printf(dev, "Cannot assert ahb reset\n"); + return (ENXIO); + } + + if (hwreset_get_by_ofw_name(dev, 0, "stmmaceth", &rst_stmmaceth)) { + device_printf(dev, "Cannot get stmmaceth reset\n"); + return (ENXIO); + } + if (hwreset_assert(rst_stmmaceth) != 0) { + device_printf(dev, "Cannot assert stmmaceth reset\n"); + return (ENXIO); + } + + sc->base.csr_clock = JH7110_CSR_FREQ; + sc->base.csr_clock_range = GMAC_MAC_MDIO_ADDRESS_CR_150_250; + + if (if_eqos_starfive_clk_init(dev) != 0) { + device_printf(dev, "Clock initialization failed\n"); + return (ENXIO); + } + if (hwreset_deassert(rst_ahb) != 0) { + device_printf(dev, "Cannot deassert rst_ahb\n"); + return (ENXIO); + } + if (hwreset_deassert(rst_stmmaceth) != 0) { + device_printf(dev, "Cannot deassert rst_stmmaceth\n"); + return (ENXIO); + } + + return (0); +} + +static int +eqos_starfive_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, "DesignWare EQOS Gigabit Ethernet for JH7110"); + + return (BUS_PROBE_DEFAULT); +} + + +static device_method_t eqos_starfive_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, eqos_starfive_probe), + + /* EQOS interface */ + DEVMETHOD(if_eqos_init, if_eqos_starfive_init), + DEVMETHOD(if_eqos_set_speed, if_eqos_starfive_set_speed), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(eqos, eqos_starfive_driver, eqos_starfive_methods, + sizeof(struct if_eqos_starfive_softc), eqos_driver); +DRIVER_MODULE(eqos_starfive, simplebus, eqos_starfive_driver, 0, 0); diff --git a/sys/dev/eqos/if_eqos_var.h b/sys/dev/eqos/if_eqos_var.h index c21a703747ec..892b15ba589e 100644 --- a/sys/dev/eqos/if_eqos_var.h +++ b/sys/dev/eqos/if_eqos_var.h @@ -85,6 +85,13 @@ struct eqos_softc { bool link_up; int tx_watchdog; + bool thresh_dma_mode; + bool pblx8; + uint32_t txpbl; + uint32_t rxpbl; + uint32_t ttc; + uint32_t rtc; + struct ifnet *ifp; device_t miibus; struct mtx lock; diff --git a/sys/riscv/conf/std.starfive b/sys/riscv/conf/std.starfive index e4e3e7c46f3e..9bdb1af9e79c 100644 --- a/sys/riscv/conf/std.starfive +++ b/sys/riscv/conf/std.starfive @@ -4,6 +4,8 @@ device uart_snps # DesignWare Synopsis UART driver +device eqos + # MMC/SD/SDIO Card slot support device dwmmc device dwmmc_starfive diff --git a/sys/riscv/starfive/files.starfive b/sys/riscv/starfive/files.starfive index 10c56448970d..57d4618d00f9 100644 --- a/sys/riscv/starfive/files.starfive +++ b/sys/riscv/starfive/files.starfive @@ -5,4 +5,8 @@ dev/clk/starfive/jh7110_clk_sys.c standard dev/clk/starfive/jh7110_clk_stg.c standard dev/mmc/host/dwmmc_starfive.c optional dwmmc_starfive fdt +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/starfive_syscon.c standard From nobody Wed Apr 2 18:43:28 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSYfT19C4z5rQp5; Wed, 02 Apr 2025 18:43: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 4ZSYfS74Ynz3CM9; Wed, 02 Apr 2025 18:43:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619409; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KZgwttJBtVJP5EXzZznnIh3m3K5qOxtP+9YMwX5UJoc=; b=e4vy02OjXWscGcuf4T+XYTF2u8Sp2sxJ18vULN8eWEskSg1rIY3k50AtV2RE99Iakn4+eG Y3itxNyD/ZgCxDPi46S1eAt2VihPwmUQlC60yMnq8yWYmEFIqWN4+b3rFCy2sKCxrq5+51 Ir3V5c7nOuAXHYI3C93GNX8byOEKekF1H6OrnJ2h5sfRV/1SLVM288mbK7Geu9IYUra9dq VdOnFiGtffzreUvZa1gOUD9vILc8wtM/i6JGWrP7AjmhnovtaVdhQYJDMazlEMYRSR29Y/ 6uOZ0aCO8M4+FvKigizL9h7eSBKghgsl8zQRFRBom7wR88Gmnc8WTT8awuI+ng== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619409; a=rsa-sha256; cv=none; b=ORMsrcoL2RJdayg1pcjLh67VlnSYFiVKHyUvAGc0ZJc4ERXnWpYyNBm4ChUQiWzgPPOMqL EqHCsio1jIdcFptTS41wFxiU5oAxuFIEvZSxw+iLr1Oi92tofIwynFRK/9OtINfBpZKc4D P9IO3QSbMBfpv4eGF2uwqm7iFmmLdGEeSPD/8KLS+kShryHpK4OFmXedfSVTFofr9xghtl wwSGQkC9Yrhgw1A3kXJVf2JZbTr8tRR/tRLyjWzQ7tz7GbtG91AWqJ/eTD+B4IItZNZdq0 +AIDKDk0bxgw8ElVgMyVF9iQrmA+fRnKS9X4FQ4kKFclxnaE0X4HQqvzF3TBwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619409; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KZgwttJBtVJP5EXzZznnIh3m3K5qOxtP+9YMwX5UJoc=; b=n96VzthoPRAJEpK99AUITzlAlt244EVaj3K0D661khaDSSJF/Sfh759G/dHbsDUq5PL36F sj/qxZ/HGgja8OQAPzAuTjBVxNXN7sAu0ohAalL42yS64tfH/lAHM/HkwksHlQvvMG7NrZ kU9WuE/H3VPPLDs8OpHDeAq6FtpW6uz1VyMoUekFIB58aprdS4KjhCk7vD/3xLIfdLxXo4 /PSIxtrioZkXdDl8Bteb2aUSyfrr2bCLyxThWO7oDG4IIJBLC3CqKk9+0FMBYNE6tbl1ZU lGywNooYxohPcmZmkZoeaECveRtmXzsiRXVLFBl8NSX8nqrfUGcrYuEoN/e7bA== 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 4ZSYfS6ZdMzCW9; Wed, 02 Apr 2025 18:43: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 532IhSK6053787; Wed, 2 Apr 2025 18:43:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhSGn053784; Wed, 2 Apr 2025 18:43:28 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:28 GMT Message-Id: <202504021843.532IhSGn053784@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: e94d3f65b901 - main - libiscsiutil: Fix header to work with C++ List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e94d3f65b90107204d477a7fab059d8cf3b1b0c3 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e94d3f65b90107204d477a7fab059d8cf3b1b0c3 commit e94d3f65b90107204d477a7fab059d8cf3b1b0c3 Author: John Baldwin AuthorDate: 2025-04-02 18:40:32 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:40:32 +0000 libiscsiutil: Fix header to work with C++ Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49137 --- lib/libiscsiutil/libiscsiutil.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/libiscsiutil/libiscsiutil.h b/lib/libiscsiutil/libiscsiutil.h index c091c1d9753a..b50afa1c9409 100644 --- a/lib/libiscsiutil/libiscsiutil.h +++ b/lib/libiscsiutil/libiscsiutil.h @@ -95,6 +95,8 @@ struct rchap { size_t rchap_challenge_len; }; +__BEGIN_DECLS + struct chap *chap_new(void); char *chap_get_id(const struct chap *chap); char *chap_get_challenge(const struct chap *chap); @@ -174,4 +176,6 @@ void log_debugx(const char *, ...) __printflike(1, 2); char *checked_strdup(const char *); +__END_DECLS + #endif /* !__LIBISCSIUTIL_H__ */ From nobody Wed Apr 2 18:43:29 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSYfV2KsSz5rQZJ; Wed, 02 Apr 2025 18:43: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 4ZSYfV0s8sz3CB9; Wed, 02 Apr 2025 18:43:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619410; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xpB6nCOUTGHg2IgCJP0yaVOGeSo1ZCFGRA4MkHde044=; b=Vp7DGL1hkqlIk5tZUm1SYnkk8G9jtSMvZMugkXjR4JELNbh03vKh/o2F7H2zAbFSrHG1Di R2KHHoKnDYzjwMellvKC6aqnYAiTjkM2M8FFSDGwG65A3Bt5W/rPvfO/i0k23wh3Yu0CoN OQqS1zqpb3GxZfgMcm9GZPptuW/V+UN80ztOk22crmZEL+me2g2w0tGTSez96pTAEWvQZM l25iU/rkd2Bp1O3uA7rU5RubINmP7KTGKFJzcYgtcyCnpEO+n6/KSqoBd0CLJWHBUlmDQg YSkcZyWzsEgJsMSS0ZvFs8rotGMMxD2n3hGG1i7RHBAZhOv1PDilFhWRK17ETw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619410; a=rsa-sha256; cv=none; b=XYoNY1lcRx/l9PdLbPqakZSHnASb/g006DJG+PneZiTwSzUqticFRBVt4JgjjBZNSF1o0/ LLbyx5exHz9aNu10jyvvR3NwRPzB43J2m8UrbvFpp6C8PVgvxPtkOqcq0SuPA7zp2mj85L Vrfjz4+cP5Unm8X3oASjcnczJf6rVC8rt43LBUjjNk1RHfx3yClq7bwaKuL+49zWVeeRZC xi91yFEampQMz17DueJJdASHSryYbKp2RMEAZVKZcrgASOwPggViHidW9iMe44yFQaX0lY XUmaBYMWgsrk/+lCleQ1XW0i2IpLAiRkEupWcOcDio2aEIlDQQ6qmG5nwFZ4hw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619410; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xpB6nCOUTGHg2IgCJP0yaVOGeSo1ZCFGRA4MkHde044=; b=eymuUJ2nSZxICpuZKJbi3G6zvj9avqMRKHL0HijD5WK+WAnaaqC6jBGFwh4CF4aZUBgEP0 gR7n1CcIOWChEQw2IzDfcGwQPJ3fb1/AWDmcXs6RdpJllAzrXlkGNXJMP6GHZs8swZkP/U KJipyzCNUNwyYXI+jnfbR2/jO0YUzQ4wylMbPuIHxuS171yp0pTfJAl3epZGcG2x2+YtZX imIlF/+SOI1TzQJVuDaAmIlw2nVbFm77E/PaP5fzbi4u9z8oYwQjYCZF+MvICs6otToI3x cpQxsGpy/6UDCwELBm7BCq6FelwbWfzW/p5SeG2KjtMi9i7sscC+TryjNqFscQ== 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 4ZSYfV0QCHzCgy; Wed, 02 Apr 2025 18:43: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 532IhTTn053820; Wed, 2 Apr 2025 18:43:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhTxj053817; Wed, 2 Apr 2025 18:43:29 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:29 GMT Message-Id: <202504021843.532IhTxj053817@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: 480009522604 - main - ctl_ioctl.h: Do not use enums for bit fields of flags List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 48000952260469477346c8a89e927af69ebc00e2 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=48000952260469477346c8a89e927af69ebc00e2 commit 48000952260469477346c8a89e927af69ebc00e2 Author: John Baldwin AuthorDate: 2025-04-02 18:40:54 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:41:22 +0000 ctl_ioctl.h: Do not use enums for bit fields of flags C++ does not permit treating enum values as individual bits used with the bitwise operators. For types that are a mask of flags, switch the typedef to an unsigned int and use preprocessor macros for flag constants. Reviewed by: imp, asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49138 --- sys/cam/ctl/ctl_ioctl.h | 104 ++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/sys/cam/ctl/ctl_ioctl.h b/sys/cam/ctl/ctl_ioctl.h index c7070b63eb09..ae48951f8acd 100644 --- a/sys/cam/ctl/ctl_ioctl.h +++ b/sys/cam/ctl/ctl_ioctl.h @@ -112,10 +112,10 @@ typedef enum { CTL_SS_ERROR } ctl_stats_status; -typedef enum { - CTL_STATS_FLAG_NONE = 0x00, - CTL_STATS_FLAG_TIME_VALID = 0x01 -} ctl_stats_flags; +typedef u_int ctl_stats_flags; + +#define CTL_STATS_FLAG_NONE 0x00 +#define CTL_STATS_FLAG_TIME_VALID 0x01 struct ctl_io_stats { uint32_t item; @@ -151,16 +151,16 @@ struct ctl_get_io_stats { * CONTINUOUS: This error will stay around until explicitly cleared. * DESCRIPTOR: Use descriptor sense instead of fixed sense. */ -typedef enum { - CTL_LUN_INJ_NONE = 0x000, - CTL_LUN_INJ_ABORTED = 0x001, - CTL_LUN_INJ_MEDIUM_ERR = 0x002, - CTL_LUN_INJ_UA = 0x003, - CTL_LUN_INJ_CUSTOM = 0x004, - CTL_LUN_INJ_TYPE = 0x0ff, - CTL_LUN_INJ_CONTINUOUS = 0x100, - CTL_LUN_INJ_DESCRIPTOR = 0x200 -} ctl_lun_error; +typedef u_int ctl_lun_error; + +#define CTL_LUN_INJ_NONE 0x000 +#define CTL_LUN_INJ_ABORTED 0x001 +#define CTL_LUN_INJ_MEDIUM_ERR 0x002 +#define CTL_LUN_INJ_UA 0x003 +#define CTL_LUN_INJ_CUSTOM 0x004 +#define CTL_LUN_INJ_TYPE 0x0ff +#define CTL_LUN_INJ_CONTINUOUS 0x100 +#define CTL_LUN_INJ_DESCRIPTOR 0x200 /* * Flags to specify what type of command the given error pattern will @@ -180,18 +180,18 @@ typedef enum { * RANGE: For read/write commands, act when the LBA is in the * specified range. */ -typedef enum { - CTL_LUN_PAT_NONE = 0x000, - CTL_LUN_PAT_READ = 0x001, - CTL_LUN_PAT_WRITE = 0x002, - CTL_LUN_PAT_READWRITE = CTL_LUN_PAT_READ | CTL_LUN_PAT_WRITE, - CTL_LUN_PAT_READCAP = 0x004, - CTL_LUN_PAT_TUR = 0x008, - CTL_LUN_PAT_ANY = 0x0ff, - CTL_LUN_PAT_MASK = 0x0ff, - CTL_LUN_PAT_CMD = 0x100, - CTL_LUN_PAT_RANGE = 0x200 -} ctl_lun_error_pattern; +typedef u_int ctl_lun_error_pattern; + +#define CTL_LUN_PAT_NONE 0x000 +#define CTL_LUN_PAT_READ 0x001 +#define CTL_LUN_PAT_WRITE 0x002 +#define CTL_LUN_PAT_READWRITE CTL_LUN_PAT_READ | CTL_LUN_PAT_WRITE +#define CTL_LUN_PAT_READCAP 0x004 +#define CTL_LUN_PAT_TUR 0x008 +#define CTL_LUN_PAT_ANY 0x0ff +#define CTL_LUN_PAT_MASK 0x0ff +#define CTL_LUN_PAT_CMD 0x100 +#define CTL_LUN_PAT_RANGE 0x200 /* * This structure allows the user to specify a particular CDB pattern to @@ -231,10 +231,10 @@ struct ctl_error_desc { STAILQ_ENTRY(ctl_error_desc) links; /* Kernel use only */ }; -typedef enum { - CTL_OOA_FLAG_NONE = 0x00, - CTL_OOA_FLAG_ALL_LUNS = 0x01 -} ctl_ooa_flags; +typedef u_int ctl_ooa_flags; + +#define CTL_OOA_FLAG_NONE 0x00 +#define CTL_OOA_FLAG_ALL_LUNS 0x01 typedef enum { CTL_OOA_OK, @@ -242,16 +242,16 @@ typedef enum { CTL_OOA_ERROR } ctl_get_ooa_status; -typedef enum { - CTL_OOACMD_FLAG_NONE = 0x00, - CTL_OOACMD_FLAG_DMA = 0x01, - CTL_OOACMD_FLAG_BLOCKED = 0x02, - CTL_OOACMD_FLAG_ABORT = 0x04, - CTL_OOACMD_FLAG_RTR = 0x08, - CTL_OOACMD_FLAG_DMA_QUEUED = 0x10, - CTL_OOACMD_FLAG_STATUS_QUEUED = 0x20, - CTL_OOACMD_FLAG_STATUS_SENT = 0x40 -} ctl_ooa_cmd_flags; +typedef u_int ctl_ooa_cmd_flags; + +#define CTL_OOACMD_FLAG_NONE 0x00 +#define CTL_OOACMD_FLAG_DMA 0x01 +#define CTL_OOACMD_FLAG_BLOCKED 0x02 +#define CTL_OOACMD_FLAG_ABORT 0x04 +#define CTL_OOACMD_FLAG_RTR 0x08 +#define CTL_OOACMD_FLAG_DMA_QUEUED 0x10 +#define CTL_OOACMD_FLAG_STATUS_QUEUED 0x20 +#define CTL_OOACMD_FLAG_STATUS_SENT 0x40 struct ctl_ooa_entry { ctl_ooa_cmd_flags cmd_flags; @@ -322,18 +322,18 @@ typedef enum { * * The OFFLINE flag tells us that this LUN can not access backing store. */ -typedef enum { - CTL_LUN_FLAG_ID_REQ = 0x01, - CTL_LUN_FLAG_STOPPED = 0x02, - CTL_LUN_FLAG_NO_MEDIA = 0x04, - CTL_LUN_FLAG_PRIMARY = 0x08, - CTL_LUN_FLAG_SERIAL_NUM = 0x10, - CTL_LUN_FLAG_DEVID = 0x20, - CTL_LUN_FLAG_DEV_TYPE = 0x40, - CTL_LUN_FLAG_UNMAP = 0x80, - CTL_LUN_FLAG_EJECTED = 0x100, - CTL_LUN_FLAG_READONLY = 0x200 -} ctl_backend_lun_flags; +typedef u_int ctl_backend_lun_flags; + +#define CTL_LUN_FLAG_ID_REQ 0x01 +#define CTL_LUN_FLAG_STOPPED 0x02 +#define CTL_LUN_FLAG_NO_MEDIA 0x04 +#define CTL_LUN_FLAG_PRIMARY 0x08 +#define CTL_LUN_FLAG_SERIAL_NUM 0x10 +#define CTL_LUN_FLAG_DEVID 0x20 +#define CTL_LUN_FLAG_DEV_TYPE 0x40 +#define CTL_LUN_FLAG_UNMAP 0x80 +#define CTL_LUN_FLAG_EJECTED 0x100 +#define CTL_LUN_FLAG_READONLY 0x200 /* * LUN creation parameters: From nobody Wed Apr 2 18:43:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSYfW4MPQz5rR5w; Wed, 02 Apr 2025 18:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSYfW1qJDz3CBD; Wed, 02 Apr 2025 18:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619411; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4crWn84xClsSW7BHm+X0MBLRadE2auPQzD9k/he2+DE=; b=RwPOSLbP1ctCrzo4c61eu4OQ48T32eT3TvC4Kqlg2ArUvwGfaMVX0r2JFdwTzqHZFxjcIT O8zriQFNKiCvUF9tUxB8DO6EcHCZK2V8CksHUdt9i2qauOVBlI5Ts2OdrTqCYtJjngB0lq UyIbEtuNCPhDllR6Ti7mEq6LQunTOVCl+YPTPptLd6OXiGZwsFhwDrVHh1wOo9RC/6VNnr QvoWcNkWe8OpCwCngw94aRIde74ciqOW0h8KZjcoQEfNoqst94V0xgSnMgr6mmLCtqRd+z 5xPdPpzDoHkEioqIHh1yNgLDfAEE4/TGT+rMdKhEIW8nRys3QOXmufSkWb5kmg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619411; a=rsa-sha256; cv=none; b=h7JGKYYzS4ZFB8/7KcVLp8cBt/VUe4PnWLkJ1yVopQOMoMX5FeBc5AD+QpA8ZDpBEEAJ3X OEsHJupdyraeAQMaRje+uVY+tZMcRVcPb801H/bLHyvIZjk/QdoRfrgDSSlkEdZV+s9qT2 rj/X85Rr+JSufbA79SI0otTI4RTek60RwNKytGDpwPpwVFmMCk6rDEwUSQtClviKzHOP43 O1h4y+NRAtPb9QHBnSTCNd1BDWikEFh64noSApf78qaCQ0B4iHCqKJH+O8nUQ7SG1UGhtN hnoRoHYMpHoc6yevXp3KaFir186KnPIjDvVxPC/dxq4OJi/LVZxjZXn/fN8fCQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619411; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4crWn84xClsSW7BHm+X0MBLRadE2auPQzD9k/he2+DE=; b=pw+ezSf6p+E0AZ/PZK29y74X/dWRyhS0DJT4TdjVXsEHDYu1I4dTyN04yaANl0vwpUOkMi Yx0V0yjg+a9SV7YLxn5maQVf7/1fO+NgB2vPgG8wTiIGxpf/Zu9jTUAPTtWOSy+rdErBfP nDu+ghFo08Iq+T9Qsop11aeMl8/5GNIGDklZLUvcKxr70b1cdi1niPzevKQMcN4iI1uQ60 MtMM/X94244Tg+HYSffvuUnNIwA8D2gaqwGm6kAe67oQmxw2nEysHRxc2TdU1FHmN68/T6 gn5QvwkETmqdjM22prIgfTx/u5+ASWG9XZOAHZljrSE95mPKh5uarbV3OObvjA== 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 4ZSYfW1JPgzCGK; Wed, 02 Apr 2025 18:43:31 +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 532IhVX1053853; Wed, 2 Apr 2025 18:43:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhVXE053850; Wed, 2 Apr 2025 18:43:31 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:31 GMT Message-Id: <202504021843.532IhVXE053850@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: 839d0755fea8 - main - ctld: Convert to C++ List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 839d0755fea8ef761698b50fa5f293546ae832a8 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=839d0755fea8ef761698b50fa5f293546ae832a8 commit 839d0755fea8ef761698b50fa5f293546ae832a8 Author: John Baldwin AuthorDate: 2025-04-02 18:41:35 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:41:35 +0000 ctld: Convert to C++ This is the minimal set of changes need to compile as C++ so git can handle the rename correctly. Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49139 --- usr.sbin/ctld/Makefile | 6 ++--- usr.sbin/ctld/{conf.c => conf.cc} | 0 usr.sbin/ctld/conf.h | 4 ++++ usr.sbin/ctld/{ctld.c => ctld.cc} | 35 ++++++++++++++++------------- usr.sbin/ctld/{discovery.c => discovery.cc} | 0 usr.sbin/ctld/{isns.c => isns.cc} | 6 ++--- usr.sbin/ctld/{kernel.c => kernel.cc} | 12 +++++----- usr.sbin/ctld/{login.c => login.cc} | 8 +++---- usr.sbin/ctld/{uclparse.c => uclparse.cc} | 0 9 files changed, 39 insertions(+), 32 deletions(-) diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 787a608c37be..f96f3152e061 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -4,9 +4,9 @@ CFLAGS+=-I${SRCTOP}/contrib/libucl/include .PATH: ${SRCTOP}/contrib/libucl/include PACKAGE= iscsi -PROG= ctld -SRCS= ctld.c conf.c discovery.c isns.c kernel.c -SRCS+= login.c parse.y token.l y.tab.h uclparse.c +PROG_CXX= ctld +SRCS= ctld.cc conf.cc discovery.cc isns.cc kernel.cc +SRCS+= login.cc parse.y token.l y.tab.h uclparse.cc CFLAGS+= -I${.CURDIR} CFLAGS+= -I${SRCTOP}/sys CFLAGS+= -I${SRCTOP}/sys/cam/ctl diff --git a/usr.sbin/ctld/conf.c b/usr.sbin/ctld/conf.cc similarity index 100% rename from usr.sbin/ctld/conf.c rename to usr.sbin/ctld/conf.cc diff --git a/usr.sbin/ctld/conf.h b/usr.sbin/ctld/conf.h index d8f036e67136..6e287ce70436 100644 --- a/usr.sbin/ctld/conf.h +++ b/usr.sbin/ctld/conf.h @@ -36,6 +36,8 @@ * ctld. */ +__BEGIN_DECLS + bool auth_group_start(const char *name); void auth_group_finish(void); bool auth_group_add_chap(const char *user, const char *secret); @@ -97,4 +99,6 @@ bool lun_set_size(uint64_t value); bool parse_conf(const char *path); +__END_DECLS + #endif /* !__CONF_H__ */ diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.cc similarity index 98% rename from usr.sbin/ctld/ctld.c rename to usr.sbin/ctld/ctld.cc index 21d833df5f83..f07ee7b34cd7 100644 --- a/usr.sbin/ctld/ctld.c +++ b/usr.sbin/ctld/ctld.cc @@ -77,6 +77,9 @@ static struct connection_ops conn_ops = { #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, }; @@ -95,7 +98,7 @@ conf_new(void) { struct conf *conf; - conf = calloc(1, sizeof(*conf)); + conf = reinterpret_cast(calloc(1, sizeof(*conf))); if (conf == NULL) log_err(1, "calloc"); TAILQ_INIT(&conf->conf_luns); @@ -145,7 +148,7 @@ auth_new(struct auth_group *ag) { struct auth *auth; - auth = calloc(1, sizeof(*auth)); + auth = reinterpret_cast(calloc(1, sizeof(*auth))); if (auth == NULL) log_err(1, "calloc"); auth->a_auth_group = ag; @@ -303,7 +306,7 @@ auth_name_new(struct auth_group *ag, const char *name) { struct auth_name *an; - an = calloc(1, sizeof(*an)); + an = reinterpret_cast(calloc(1, sizeof(*an))); if (an == NULL) log_err(1, "calloc"); an->an_auth_group = ag; @@ -361,7 +364,7 @@ auth_portal_new(struct auth_group *ag, const char *portal) char *net, *mask, *str, *tmp; int len, dm, m; - ap = calloc(1, sizeof(*ap)); + ap = reinterpret_cast(calloc(1, sizeof(*ap))); if (ap == NULL) log_err(1, "calloc"); ap->ap_auth_group = ag; @@ -494,7 +497,7 @@ auth_group_new(struct conf *conf, const char *name) } } - ag = calloc(1, sizeof(*ag)); + ag = reinterpret_cast(calloc(1, sizeof(*ag))); if (ag == NULL) log_err(1, "calloc"); if (name != NULL) @@ -547,7 +550,7 @@ portal_new(struct portal_group *pg) { struct portal *portal; - portal = calloc(1, sizeof(*portal)); + portal = reinterpret_cast(calloc(1, sizeof(*portal))); if (portal == NULL) log_err(1, "calloc"); TAILQ_INIT(&portal->p_targets); @@ -578,7 +581,7 @@ portal_group_new(struct conf *conf, const char *name) return (NULL); } - pg = calloc(1, sizeof(*pg)); + pg = reinterpret_cast(calloc(1, sizeof(*pg))); if (pg == NULL) log_err(1, "calloc"); pg->pg_name = checked_strdup(name); @@ -711,7 +714,7 @@ isns_new(struct conf *conf, const char *addr) { struct isns *isns; - isns = calloc(1, sizeof(*isns)); + isns = reinterpret_cast(calloc(1, sizeof(*isns))); if (isns == NULL) log_err(1, "calloc"); isns->i_conf = conf; @@ -973,7 +976,7 @@ pport_new(struct kports *kports, const char *name, uint32_t ctl_port) { struct pport *pp; - pp = calloc(1, sizeof(*pp)); + pp = reinterpret_cast(calloc(1, sizeof(*pp))); if (pp == NULL) log_err(1, "calloc"); pp->pp_kports = kports; @@ -1032,7 +1035,7 @@ port_new(struct conf *conf, struct target *target, struct portal_group *pg) free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1077,7 +1080,7 @@ port_new_ioctl(struct conf *conf, struct kports *kports, struct target *target, free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1106,7 +1109,7 @@ port_new_pp(struct conf *conf, struct target *target, struct pport *pp) free(name); return (NULL); } - port = calloc(1, sizeof(*port)); + port = reinterpret_cast(calloc(1, sizeof(*port))); if (port == NULL) log_err(1, "calloc"); port->p_conf = conf; @@ -1187,7 +1190,7 @@ target_new(struct conf *conf, const char *name) if (valid_iscsi_name(name, log_warnx) == false) { return (NULL); } - targ = calloc(1, sizeof(*targ)); + targ = reinterpret_cast(calloc(1, sizeof(*targ))); if (targ == NULL) log_err(1, "calloc"); targ->t_name = checked_strdup(name); @@ -1245,7 +1248,7 @@ lun_new(struct conf *conf, const char *name) return (NULL); } - lun = calloc(1, sizeof(*lun)); + lun = reinterpret_cast(calloc(1, sizeof(*lun))); if (lun == NULL) log_err(1, "calloc"); lun->l_conf = conf; @@ -1365,7 +1368,7 @@ connection_new(struct portal *portal, int fd, const char *host, { struct ctld_connection *conn; - conn = calloc(1, sizeof(*conn)); + conn = reinterpret_cast(calloc(1, sizeof(*conn))); if (conn == NULL) log_err(1, "calloc"); connection_init(&conn->conn, &conn_ops, proxy_mode); @@ -2254,7 +2257,7 @@ found: switch (kev.filter) { case EVFILT_READ: - portal = kev.udata; + portal = reinterpret_cast(kev.udata); assert(portal->p_socket == (int)kev.ident); client_salen = sizeof(client_sa); diff --git a/usr.sbin/ctld/discovery.c b/usr.sbin/ctld/discovery.cc similarity index 100% rename from usr.sbin/ctld/discovery.c rename to usr.sbin/ctld/discovery.cc diff --git a/usr.sbin/ctld/isns.c b/usr.sbin/ctld/isns.cc similarity index 96% rename from usr.sbin/ctld/isns.c rename to usr.sbin/ctld/isns.cc index 0b836324ff47..e4d3744b84dc 100644 --- a/usr.sbin/ctld/isns.c +++ b/usr.sbin/ctld/isns.cc @@ -48,14 +48,14 @@ isns_req_alloc(void) { struct isns_req *req; - req = calloc(1, sizeof(struct isns_req)); + 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 = calloc(1, req->ir_buflen); + req->ir_buf = reinterpret_cast(calloc(1, req->ir_buflen)); if (req->ir_buf == NULL) { free(req); log_err(1, "calloc"); @@ -101,7 +101,7 @@ isns_req_getspace(struct isns_req *req, uint32_t len) log_err(1, "realloc"); return (1); } - req->ir_buf = newbuf; + req->ir_buf = reinterpret_cast(newbuf); req->ir_buflen = newlen; return (0); } diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.cc similarity index 98% rename from usr.sbin/ctld/kernel.c rename to usr.sbin/ctld/kernel.cc index 06ca99ce9d1f..9ddf22b9f4e0 100644 --- a/usr.sbin/ctld/kernel.c +++ b/usr.sbin/ctld/kernel.cc @@ -170,7 +170,7 @@ cctl_start_element(void *user_data, const char *name, const char **attr) log_errx(1, "%s: improper lun element nesting", __func__); - cur_lun = calloc(1, sizeof(*cur_lun)); + 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)); @@ -287,7 +287,7 @@ 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 = calloc(1, sizeof(*cur_port)); + 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)); @@ -422,7 +422,7 @@ conf_new_from_kernel(struct kports *kports) str = NULL; len = 4096; retry: - str = realloc(str, len); + str = reinterpret_cast(realloc(str, len)); if (str == NULL) log_err(1, "realloc"); @@ -471,7 +471,7 @@ retry: str = NULL; len = 4096; retry_port: - str = realloc(str, len); + str = reinterpret_cast(realloc(str, len)); if (str == NULL) log_err(1, "realloc"); @@ -691,13 +691,13 @@ kernel_lun_add(struct lun *lun) req.reqdata.create.device_type = lun->l_device_type; if (lun->l_serial != NULL) { - strncpy(req.reqdata.create.serial_num, lun->l_serial, + strncpy((char *)req.reqdata.create.serial_num, lun->l_serial, sizeof(req.reqdata.create.serial_num)); req.reqdata.create.flags |= CTL_LUN_FLAG_SERIAL_NUM; } if (lun->l_device_id != NULL) { - strncpy(req.reqdata.create.device_id, lun->l_device_id, + strncpy((char *)req.reqdata.create.device_id, lun->l_device_id, sizeof(req.reqdata.create.device_id)); req.reqdata.create.flags |= CTL_LUN_FLAG_DEVID; } diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.cc similarity index 99% rename from usr.sbin/ctld/login.c rename to usr.sbin/ctld/login.cc index 8833779c825f..84d329964ada 100644 --- a/usr.sbin/ctld/login.c +++ b/usr.sbin/ctld/login.cc @@ -47,7 +47,7 @@ #define MAX_DATA_SEGMENT_LENGTH (128 * 1024) static void login_send_error(struct pdu *request, - char class, char detail); + char error_class, char detail); static void kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl, @@ -230,16 +230,16 @@ login_new_response(struct pdu *request) } static void -login_send_error(struct pdu *request, char class, char detail) +login_send_error(struct pdu *request, char error_class, char detail) { struct pdu *response; struct iscsi_bhs_login_response *bhslr2; log_debugx("sending Login Response PDU with failure class 0x%x/0x%x; " - "see next line for reason", class, detail); + "see next line for reason", error_class, detail); response = login_new_response(request); bhslr2 = (struct iscsi_bhs_login_response *)response->pdu_bhs; - bhslr2->bhslr_status_class = class; + bhslr2->bhslr_status_class = error_class; bhslr2->bhslr_status_detail = detail; pdu_send(response); diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.cc similarity index 100% rename from usr.sbin/ctld/uclparse.c rename to usr.sbin/ctld/uclparse.cc From nobody Wed Apr 2 18:43:32 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSYfZ1BHlz5rQl8; Wed, 02 Apr 2025 18:43: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 4ZSYfX2tvsz3CS8; Wed, 02 Apr 2025 18:43:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619412; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BGbEDWj+xcMyaFAnDuY6pFVdFPjr1CeOi8m3+G4AZGY=; b=dzP3x9gbgfo9FZrY1VvgQWy4n4BoloGoIcuSU3UAkazlhkRotvrkfTNBQSO32qlBaNPtdW XRHoVG5YKb7eNkb1Q2QEv4BQjyZnsk3+TbHW4fQ7dbQjOSsk5JL7gwoFB8eJEqQ3kEUGwO U0PheAQD8CfmBC10Jnj/goS+kyn/r0ZtAh8N3KxJJbK2il+3NjKhtu5wwqcjWDUCvZ33Vm ETtJwtqSjn2hjVyzhF1vpkVQmrlaH48hWNoZIxy6M4mOIHHC+i4WfNvcmQuruzhjXpU1XC 97FK5t4KbiWhVt/KhT08n0nBcHrWAWlphm+j2s9gUF32F/g792GCfGJi0ZarAw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743619412; a=rsa-sha256; cv=none; b=T4lORMRFs8VSZPXdw/DAvAPREXVnyJ47PqPtHQ/tAHciwPsXMxXxGnJ7Fz5Qv0xNE7uBg7 4u79bOBd/6hSzmRSliqdpMQvvmvMxZ7KzVxbyLB3QgfHhD0duvNv4DPgYRtebAIG/3MPt6 KYznzTnbc3fi5rswDzVPopKI0EKXI5WjAG9qrkAODN0d9ccDKI5j6RtjjDBkKftagVZiMA 06yv66fFpYrUU0MIvVc/JRjQyYZ+wDgrSYMgbwZuY3D/waUxQUYR6/NVL4PDVgUrEGB5TC fMfoPHTyQao9862s9BmMOl0c+qVQbXL7lGMb2FeKcKO58SyWMitFBoLph+Imgg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743619412; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BGbEDWj+xcMyaFAnDuY6pFVdFPjr1CeOi8m3+G4AZGY=; b=mREwvMtkP07b2qt8P3YO+qVPI3al36odYXPUWW0vFoGME/DeqegVUbw6pY8sDQP9ejDmxz B87sfCn+F1+hlHpwKNIMkMGpMAtuXUY484Rrzrlgi9SBMKwX97aDwXBdwN0JYTrIZlYivb dXZ6ql8o71G3Uzod4kRAG0Oej79WM+G4PV9m6pU54fLLBMEPZdimwxbnv59P8TUMAz+7jO IBbRBn82nv6yCWPVXXQgFT/uS+Fh5vZWE29NBWQWUuQh8XUzXRbSE50/meLvoOMWMKxcyB qusmv6tY0rgPnyzIsKtjwkUelgF+EUFIXdaM+3t3OCmYWh4g8gaDGgkxGOhnrA== 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 4ZSYfX2G9tzCWB; Wed, 02 Apr 2025 18:43: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 532IhWqk053893; Wed, 2 Apr 2025 18:43:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532IhWg9053889; Wed, 2 Apr 2025 18:43:32 GMT (envelope-from git) Date: Wed, 2 Apr 2025 18:43:32 GMT Message-Id: <202504021843.532IhWg9053889@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: 7feee915ace1 - main - depend-cleanup: Handle ctld moving from C to C++ List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 commit 7feee915ace1adcbbeca6bdbaf68ac27dee13ce5 Author: John Baldwin AuthorDate: 2025-04-02 18:42:08 +0000 Commit: John Baldwin CommitDate: 2025-04-02 18:43:17 +0000 depend-cleanup: Handle ctld moving from C to C++ Reviewed by: asomers Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49140 --- tools/build/depend-cleanup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/build/depend-cleanup.sh b/tools/build/depend-cleanup.sh index eec073feca19..ab779ea83a64 100755 --- a/tools/build/depend-cleanup.sh +++ b/tools/build/depend-cleanup.sh @@ -337,3 +337,12 @@ if [ $MACHINE_ARCH = aarch64 ]; then # 20250110 3f224333af16 add timingsafe_memcmp() assembly implementation ALL_libcompats= clean_dep lib/libc timingsafe_memcmp c fi + +# 20250402 839d0755fea8 ctld converted to C++ +clean_dep usr.sbin/ctld ctld c +clean_dep usr.sbin/ctld conf c +clean_dep usr.sbin/ctld discovery c +clean_dep usr.sbin/ctld isns c +clean_dep usr.sbin/ctld kernel c +clean_dep usr.sbin/ctld login c +clean_dep usr.sbin/ctld uclparse c From nobody Wed Apr 2 19:12:23 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSZHq5KrYz5rSdV; Wed, 02 Apr 2025 19:12: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 4ZSZHq4QPKz3JNB; Wed, 02 Apr 2025 19:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743621143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gVokESxDeLPoDtopB99ZkN+sfzBW9Skqadhdy9p8ALw=; b=hrvF0hebJkuWBWEmfwWetilORRnwLphBOiRyJ+MVArzXOqAqfa3EXTGkH1POsiQKQWUXi1 zdicjVBtcjaQrhjh/J0nZj2S3mPhK/Pv8oXe512lMrV20FtEqZ74unyRauk1gbnBewrniO ERbvx0v5YVpXFj4iCGraDlO0Gs3gEdtuAk37dYvsEFcBQ6othg1gbeG0A7vZh1tHSdytC+ bhpQRzpUbRSTA3Cp6q2KB8KlCnIGa3+LcT5JlhcEegdnO4zjoecqZJRKr/yxb+O3xapTp9 OOmg8PR4Xc7raVjLdiAQARaqwS1CdZvmgs2DZQAGZnrSCyNoYIoyTya4pFc77Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743621143; a=rsa-sha256; cv=none; b=j+hb1CHeQc4gEeo0lwJCc7h2YzGVcR7Ej4s3wWVY7b7sH6nJslWyah2Xg84LHwhh2gzRKf 2641Iz0K47pByGL8Scq2qgIrPVid2gbtOyXpO3SurpiCRCjHNqWojvYdkB0rBD5Zqoer9w lNSAE84MrlBjxaWkuIRnLTQV7kScC7D5tPIgrij0i8ct5/WVek9h0lo1n9NubWWmo4KOwt u7s3kmcmDcFWOFaye3i7XradbZk/GZv81sv3yMtnIRRKCxfOQbDhWG0aj7QT0tn//wQW1Z y+wjyrcP+igig4JZoA5icNNhqv/NMUcnSM5KEhOOcfxUWIxaCLx2DtUgJDr/2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743621143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gVokESxDeLPoDtopB99ZkN+sfzBW9Skqadhdy9p8ALw=; b=ockn1NxjxkIV2K4hvkZgBpUujsD1cqfyt2x7/Vo/utODmEfi7hQ2ljywE5nbxruCiM382e G8MKZxrqg+wtuPTQA9QhhpDnT32OcmVId2BwiDSN3zyU5P6YSSQQ6FakgUaPo+EvRGw7fU rO22jsDi3m2vlxJTJtTKh1vmrB8EHHMEZSIN/SzJCscj4zbf3Z2cyBRAnFBAu1ETnLnQ/p HApEJpGLHnT/Y/hCfwS/LKKFHhgLpy7cnIPfaS8Uwpp1y6FvyyjY44th6N3Kmz5b3sY8GY tWc6o0HPPa3km89hvehautnPmH8IKIpTdBXulrG+goiyrWFNYkOOP0kHxmdfwA== 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 4ZSZHq3klxzD01; Wed, 02 Apr 2025 19:12: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 532JCNYZ010035; Wed, 2 Apr 2025 19:12:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JCNlU010031; Wed, 2 Apr 2025 19:12:23 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:12:23 GMT Message-Id: <202504021912.532JCNlU010031@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: 58164dcb55d6 - main - pfctl: fix recursive printing of NAT rules List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 58164dcb55d62ca73b5e550b8344bf61e2d8a47a Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=58164dcb55d62ca73b5e550b8344bf61e2d8a47a commit 58164dcb55d62ca73b5e550b8344bf61e2d8a47a Author: Kristof Provost AuthorDate: 2025-04-02 16:04:46 +0000 Commit: Kristof Provost CommitDate: 2025-04-02 19:11:47 +0000 pfctl: fix recursive printing of NAT rules pfctl_show_nat() is called recursively to print nat anchors. This passes the anchor path, but this path was modified by pfctl_show_nat(), leading to issues printing the anchors. Make a copy of the path ('npath') before we modify it. Ensure we do this correctly by sprinking in 'const', and add a test case to verify that we do now print things correctly. Reported by: Thomas Pasqualini MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/pfctl.c | 33 +++++++++++++++--------------- tests/sys/netpfil/pf/anchor.sh | 46 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 7e06f4136686..1c5b7f5e1fc0 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -93,12 +93,12 @@ int pfctl_load_hostid(struct pfctl *, u_int32_t); int pfctl_load_reassembly(struct pfctl *, u_int32_t); int pfctl_load_syncookies(struct pfctl *, u_int8_t); int pfctl_get_pool(int, struct pfctl_pool *, u_int32_t, u_int32_t, int, - char *, int); + const char *, int); void pfctl_print_eth_rule_counters(struct pfctl_eth_rule *, int); void pfctl_print_rule_counters(struct pfctl_rule *, int); int pfctl_show_eth_rules(int, char *, int, enum pfctl_show, char *, int, int); int pfctl_show_rules(int, char *, int, enum pfctl_show, char *, int, int); -int pfctl_show_nat(int, char *, int, char *, int, int); +int pfctl_show_nat(int, const char *, int, char *, int, int); int pfctl_show_src_nodes(int, int); int pfctl_show_states(int, const char *, int); int pfctl_show_status(int, int); @@ -956,7 +956,7 @@ pfctl_id_kill_states(int dev, const char *iface, int opts) int pfctl_get_pool(int dev, struct pfctl_pool *pool, u_int32_t nr, - u_int32_t ticket, int r_action, char *anchorname, int which) + u_int32_t ticket, int r_action, const char *anchorname, int which) { struct pfioc_pooladdr pp; struct pf_pooladdr *pa; @@ -1438,7 +1438,7 @@ pfctl_show_rules(int dev, char *path, int opts, enum pfctl_show format, } int -pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, +pfctl_show_nat(int dev, const char *path, int opts, char *anchorname, int depth, int wildcard) { struct pfctl_rules_info ri; @@ -1461,16 +1461,17 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, p[0] = '\0'; } + if ((npath = calloc(1, MAXPATHLEN)) == NULL) + errx(1, "pfctl_rules: calloc"); + if (anchorname[0] == '/') { - if ((npath = calloc(1, MAXPATHLEN)) == NULL) - errx(1, "pfctl_rules: calloc"); snprintf(npath, MAXPATHLEN, "%s", anchorname); } else { - if (path[0]) - snprintf(&path[len], MAXPATHLEN - len, "/%s", anchorname); + snprintf(npath, MAXPATHLEN, "%s", path); + if (npath[0]) + snprintf(&npath[len], MAXPATHLEN - len, "/%s", anchorname); else - snprintf(&path[len], MAXPATHLEN - len, "%s", anchorname); - npath = path; + snprintf(&npath[len], MAXPATHLEN - len, "%s", anchorname); } /* @@ -1500,12 +1501,12 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, INDENT(depth, !(opts & PF_OPT_VERBOSE)); printf("}\n"); } - path[len] = '\0'; + npath[len] = '\0'; return (0); } for (i = 0; i < 3; i++) { - ret = pfctl_get_rules_info_h(pfh, &ri, nattype[i], path); + ret = pfctl_get_rules_info_h(pfh, &ri, nattype[i], npath); if (ret != 0) { warnc(ret, "DIOCGETRULES"); return (-1); @@ -1513,19 +1514,19 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth, for (nr = 0; nr < ri.nr; ++nr) { INDENT(depth, !(opts & PF_OPT_VERBOSE)); - if ((ret = pfctl_get_rule_h(pfh, nr, ri.ticket, path, + if ((ret = pfctl_get_rule_h(pfh, nr, ri.ticket, npath, nattype[i], &rule, anchor_call)) != 0) { warnc(ret, "DIOCGETRULE"); return (-1); } if (pfctl_get_pool(dev, &rule.rdr, nr, - ri.ticket, nattype[i], path, PF_RDR) != 0) + ri.ticket, nattype[i], npath, PF_RDR) != 0) return (-1); if (pfctl_get_pool(dev, &rule.nat, nr, - ri.ticket, nattype[i], path, PF_NAT) != 0) + ri.ticket, nattype[i], npath, PF_NAT) != 0) return (-1); if (pfctl_get_pool(dev, &rule.route, nr, - ri.ticket, nattype[i], path, PF_RT) != 0) + ri.ticket, nattype[i], npath, PF_RT) != 0) return (-1); if (dotitle) { diff --git a/tests/sys/netpfil/pf/anchor.sh b/tests/sys/netpfil/pf/anchor.sh index 40e8354a2343..463cd4d475e3 100644 --- a/tests/sys/netpfil/pf/anchor.sh +++ b/tests/sys/netpfil/pf/anchor.sh @@ -316,6 +316,51 @@ counter_cleanup() pft_cleanup } +atf_test_case "nat" "cleanup" +nat_head() +{ + atf_set descr 'Test nested nat anchors' + atf_set require.user root +} + +nat_body() +{ + pft_init + + epair=$(vnet_mkepair) + vnet_mkjail alcatraz ${epair}a + + ifconfig ${epair}b 192.0.2.2/24 up + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "nat-anchor \"foo/*\"" \ + "pass" + + echo "nat log on ${epair}a inet from 192.0.2.0/24 to any port = 53 -> 192.0.2.1" \ + | jexec alcatraz pfctl -a "foo/bar" -g -f - + echo "rdr on ${epair}a proto tcp to port echo -> 127.0.0.1 port echo" \ + | jexec alcatraz pfctl -a "foo/baz" -g -f - + + jexec alcatraz pfctl -sn -a "*" + jexec alcatraz pfctl -sn -a "foo/bar" + jexec alcatraz pfctl -sn -a "foo/baz" + + atf_check -s exit:0 -o match:"nat log on epair0a inet from 192.0.2.0/24 to any port = domain -> 192.0.2.1" \ + jexec alcatraz pfctl -sn -a "*" + atf_check -s exit:0 -o match:"rdr on epair0a inet proto tcp from any to any port = echo -> 127.0.0.1 port 7" \ + jexec alcatraz pfctl -sn -a "*" +} + +nat_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "pr183198" @@ -326,4 +371,5 @@ atf_init_test_cases() atf_add_test_case "quick" atf_add_test_case "quick_nested" atf_add_test_case "counter" + atf_add_test_case "nat" } From nobody Wed Apr 2 19:28:33 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSZff3VWXz5rTs9; Wed, 02 Apr 2025 19:28:42 +0000 (UTC) (envelope-from olce@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 4ZSZff2tRZz3LXh; Wed, 02 Apr 2025 19:28:42 +0000 (UTC) (envelope-from olce@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743622122; 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=SiWXNKSqe2vZ6y4nwSpD2Xthlbqsu9bRC9320GGWl6s=; b=ettk3/c7y+zrZP44u9/b7pHz+mV+9PjtLYGls/aisDufFzSC+mQ/LAYFsqCSHUTKU/ldSv Q5QL+p0aSwtwffKjOUIjO5KcL4f4fKPNoWSeil82vNpV8Eh9l3wu/AMKMqAmv1BbiCodtT mYeE5gSNrJie09ZZtr7U6NxzerK0OqImoTnr7e+VQpMfOG0SVw8VJJtjWLEJQCTGnloZvR HMolsavYjj1v/KoVY1kxfI2r6YOnrJcixfCOCyysdIr2W+4qT+il12b1Yf2sTL+/+R9Dzr AAlJHPsX5bDzwbNfKU9Gc6rmC4dyvRnruRepOS1HaaE95VEQwABg8t6JrSGsag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743622122; a=rsa-sha256; cv=none; b=UxH1XIrthAB4d5T7LXFyO2y3hYMY+D0lKZKzuMvEm6X1clqb7TPZ3D5q034RwEJecxlDnM Wqz1xsUDR06k6jnS/PguyTxAMyI+WaA9qsQrdx2e98t08EgV+Ho20L9uE1uKm23s0Tnuwk FZ3hFmPqICTpqQvUoe/cB2BMFBqV3T999Uim1+PHIlo0DXu6B8iFq8OeGMLkQsfE6CWrf0 egxqp5zybcNi6t2VKBWUPDxKEfcU57cKijVUDJ5K2ssjGTW+QPvSsKm5lB/b29p3qfzqPv gObwlTE2NRWcnG4rWrx4QzrCA1lJMIy675N0+CkMOmRTkJaqCsxJJDNorGdHUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743622122; 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=SiWXNKSqe2vZ6y4nwSpD2Xthlbqsu9bRC9320GGWl6s=; b=oQ87vMYTgEbFMQlAF0fP84i7mW9hiVGk2ye2gRF1UFw2L3usdZiYstt/PQJo55Qs/prqlC hPcDGulmeOvBbgcXsj6WzqfzzI1N0AwIHaoG3IryRV2YxhXpCga25Sa9pv77/xPwTuQ9gv Gzz9/5ucqQcH3h9R1h4w7NHUZ0SAX9jKeiVZagJP/a8jYs58rqXW79M/nFFNXnVyvN+os3 X8J8mOOpIZuAISkk8BiB5wAiAs87esDY1vYn4k+fik5EcxAy6sWpDyLZPFbR5yagkO+UPt OUys/XrwlaG6X6V+L0E9U6XLl42INcEkbQ790ARniuFXCKPw5TNxh4vmVewyBg== Received: from ravel.localnet (aclermont-ferrand-653-1-222-123.w90-14.abo.wanadoo.fr [90.14.66.123]) (using TLSv1.3 with cipher TLS_AES_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: olce/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZSZfd5WkVz170h; Wed, 02 Apr 2025 19:28:41 +0000 (UTC) (envelope-from olce@freebsd.org) From: Olivier Certner To: Mitchell Horne Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 Date: Wed, 02 Apr 2025 21:28:33 +0200 Message-ID: <2992932.slGk94SIus@ravel> In-Reply-To: <202504021657.532Gv93w049180@gitrepo.freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3044768.hHqAuc6tWs"; micalg="pgp-sha384"; protocol="application/pgp-signature" --nextPart3044768.hHqAuc6tWs Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="UTF-8"; protected-headers="v1" From: Olivier Certner To: Mitchell Horne Date: Wed, 02 Apr 2025 21:28:33 +0200 Message-ID: <2992932.slGk94SIus@ravel> In-Reply-To: <202504021657.532Gv93w049180@gitrepo.freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> MIME-Version: 1.0 Hi Mitchell, This commit is likely the cause of the current build failure on amd64, see: https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ Thanks and regards. -- Olivier Certner --nextPart3044768.hHqAuc6tWs Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part. Content-Transfer-Encoding: 7Bit -----BEGIN PGP SIGNATURE----- iQIzBAABCQAdFiEEmNCxHjkosai0LYIujKEwQJceJicFAmftj+EACgkQjKEwQJce JievKhAAhSOV+pMxoQwRqjEwACzvW828AcksFG6mouZzrFucxR1IK0vp9/MYEQnh SMGdMFTVwkkO1CdCOSfUtn3Oc3Cn0PVfrUaxA/etqHqHl4aQYdWAdO9Pm45Vf7Ir xEdOQI7Mr+wzroFOfgLCvI4aF/xBc4EnrznFeQkHTv4sN3WXjn25Kkxoz7OtODzL +6TIR2e7XDHSzAUOMcW9bJHNIEeOgXxcTMW7GIX6kcZW3+QnGdDN1hlvl9tT2X1P hTZfpxdJzfRvBs2qKOwnxYxY6R/6Pjw/X06Tg35IjKR4NfROkOvcG4/CYHBvcXay 2eOZsokO4UZHj9C/qHhP6mfeNPUTpmoc7jCDNi95NKsL46pjAfEc+roSgUMwbxc/ Uxt7SWfeDRnHEY9rNvM3+M5JQLDISVFeQ1oCwKKDa1F+xd3dtCjiPrFI3eb1otbv UtpH5QxikBV0wQ8Tt4JOKlx+H+sP2JYWaKESbwDNy7MTUMVhZ5QNgWkMWo1UcTf6 zVzJtBZ9XGPCSjion5hVUZN9vmFLKBqT0ILMqQQug4DR6SNRGNrROpbJ8u2UGcr4 lNYhw3nTZE0tQbC5qI+kMvh8llYXtO9I2QegcSLRNIeSVQOn5G3wgJW/xz7ye+QK Hzi9C00bC+Bm+F7C0mAACfEB0HKfFKvkOLXA3XVFWyh+MPRMt5A= =729C -----END PGP SIGNATURE----- --nextPart3044768.hHqAuc6tWs-- From nobody Wed Apr 2 19:43:28 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSZzl714pz5rW1Z; Wed, 02 Apr 2025 19:43:31 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta004.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) (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 4ZSZzl53cgz3Pmw; Wed, 02 Apr 2025 19:43:31 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTPS id zsrUtdSXW5Mqy03zmuHT83; Wed, 02 Apr 2025 19:43:30 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id 03zluUDD2JhBP03zmuhKR9; Wed, 02 Apr 2025 19:43:30 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=QY3Fvdbv c=1 sm=1 tr=0 ts=67ed9362 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=XR8D0OoHHMoA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=QJRumn0MJZXuOLPX7-kA: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 BC0FD244; Wed, 02 Apr 2025 12:43:28 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id 8A364214; Wed, 02 Apr 2025 12:43:28 -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: Olivier Certner cc: Mitchell Horne , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 In-reply-to: <2992932.slGk94SIus@ravel> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> Comments: In-reply-to Olivier Certner message dated "Wed, 02 Apr 2025 21:28:33 +0200." List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 02 Apr 2025 12:43:28 -0700 Message-Id: <20250402194328.8A364214@slippy.cwsent.com> X-CMAE-Envelope: MS4xfDid13pctxuSV98IYaJdeJVjujXduY4FpEhLKwDNolfhcPfibeLWvKnUq8tbK0ioyYjFVRzWpHTfjoMiqnDFUqja8rEr6tkdbmOZ/tzyGxqA8wJpWg2+ 0QVUXw5+yoNgy9qLnlqBlHWS9E1OXDkxtjN8dJCxV2+t/hdcjR4Q3JQyKRlfUy62WYBw5vegoKEa5bBywr8gWkTkA4g9+azjd3m7U7vb2Q0xzOihtO0zT+rW 5BIV6ILe+ATMtXm7nHjF70BXJqIGvA7OEc/UbKI2e8DNCYt5QvpJNEz7TkQgr7j5mR6tU+EOAeBalSOpkOxyZFCwLom481wZtnYIvkqpQEGcTlSrgamKB+M7 K1SiEmXL 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] X-Rspamd-Queue-Id: 4ZSZzl53cgz3Pmw X-Spamd-Bar: ---- In message <2992932.slGk94SIus@ravel>, Olivier Certner writes: > > Hi Mitchell, > > This commit is likely the cause of the current build failure on amd64, see: > https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ > > Thanks and regards. > > -- > Olivier Certner Hmm. I wonder why this was committed in the first place. The review listed isn't this commit. Should this be reverted to a) correct the commit log message to document the correct revision and b) fix the build? -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0 From nobody Wed Apr 2 19:44:26 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSb0p63gpz5rWN9; Wed, 02 Apr 2025 19:44: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 4ZSb0p3jbmz3Px6; Wed, 02 Apr 2025 19:44:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hHm7zryA1OvB9sv8ni1ec4u741X6ecUexQNcm5T2mNc=; b=FPRpT2nU5MOBl4oCABT9yJKfhxtF0a6uw790vTCGiHvYdD+1bRCxIkQAGIcUDISvaVmmx2 ituAumjhZjJppmcJC90772A7jQ7E1ky8lqgIRFMyrRTAIDPvViXO8E4ieaK1zQ96GffbDk gv6p8Tm6JgMO1S6AMjZ3gY2fIglWTUoIjCEmTUVbsUkpAdcUMnibYjpy9UxhH/mTsv2KEY raRiv/VDXFosy7JQPii5EySKErB/P9DFI09EoY0QZJZ7zIJVE+Fe1RnUwMFstNnVAkBPV3 sO6OCgCvQGmMQ9lGlgiQGPP4gII/jl+WjSdeYGgb0KntWpBG2NLIjVTLfN8Iew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743623066; a=rsa-sha256; cv=none; b=bG7sIYISgRpH5jEVGYc8u7TkeDJb5wthUuVucPuDtQnum7JPBsEa70uYC00gBnRorP/iJL qNRjm4xJW68RtzJsGN9MtQ5gg/y+UUFOtO+82nPUmambln4bNN4KJbXjFPCGIBcqxV+RED RAOr5CXl0Y2R1BbHthJQj96F8lM4b0DSR8iOHTG138ArQnMiWK0v4j/ViDGDuy/7kj1yjV AsVN0yqCX9tRf6avX5jaTxnBaHJvvxPylaEGbOi9cKvyvt/rx3QW7eLBYcjtUXk9JLlknA A/fJDgX2n4d0U4szv32Q18sJ99ZNha0KG34ZXfG1iFianVcE1g3Lj4s7J2sJEA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hHm7zryA1OvB9sv8ni1ec4u741X6ecUexQNcm5T2mNc=; b=Yh783VGv150H6j8eLlYXMq8rfwWARzv4oczTYRffyZa6D0dT3KHfCzXZIX2Hu8AaHx2Jx8 R6vKa7cbe9aRd9ht9gZZmMNTXPNMBdaQ8JJI1r+/Nz9ISUqdfGJJMGgUZK79FIavt7w7sC pjkly/9ELsxL6lY/0vsMc9cD7VANC29LXYE/chCoHsNeTxwP54qjjf1zFpXVZdFnzPcUPP Q1vdhAhoE6uFiJCsPgws4n7kJ26j9AS0LRUmHcjs3rXfI8lmi3T7PkVSdUn1Nwq0JvD0io AQM3slo0jXU4hEfdLPXb6HrSrsaBqKByBGP4h95TvmcArqKDBmTe6HNFXXzAyw== 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 4ZSb0p38nWzTsY; Wed, 02 Apr 2025 19:44: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 532JiQbG066510; Wed, 2 Apr 2025 19:44:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JiQwC066507; Wed, 2 Apr 2025 19:44:26 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:44:26 GMT Message-Id: <202504021944.532JiQwC066507@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 61c010f3b35e - main - tests/netinet: enable test against kern/189088 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 61c010f3b35e867166a2be5906a71b9cbcedf7db Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=61c010f3b35e867166a2be5906a71b9cbcedf7db commit 61c010f3b35e867166a2be5906a71b9cbcedf7db Author: Gleb Smirnoff AuthorDate: 2025-04-02 19:44:14 +0000 Commit: Gleb Smirnoff CommitDate: 2025-04-02 19:44:14 +0000 tests/netinet: enable test against kern/189088 This test was created together with the bug, however after fixing commit 9fdbf7eef5c0 it was not enabled. Also, the test has a mistake: the second netstat check would fail cause it would see the route remaining from the first run. Workaround that by running the second run in a separate pair of fibs to the first one. --- tests/sys/netinet/fibs_test.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/sys/netinet/fibs_test.sh b/tests/sys/netinet/fibs_test.sh index b58a45b26f3e..5fe8f7d87641 100644 --- a/tests/sys/netinet/fibs_test.sh +++ b/tests/sys/netinet/fibs_test.sh @@ -352,14 +352,13 @@ same_ip_multiple_ifaces_head() } same_ip_multiple_ifaces_body() { - atf_expect_fail "kern/189088 Assigning the same IP to multiple interfaces in different FIBs creates a host route for only one" ADDR="192.0.2.2" MASK0="24" MASK1="32" # Unlike most of the tests in this file, this is applicable regardless # of net.add_addr_allfibs - get_fibs 2 + get_fibs 4 # Setup the interfaces, then remove one alias. It should not panic. setup_tap ${FIB0} inet ${ADDR} ${MASK0} @@ -371,13 +370,13 @@ same_ip_multiple_ifaces_body() setfib ${FIB1} netstat -rn -f inet # Do it again, in the opposite order. It should not panic. - setup_tap ${FIB0} inet ${ADDR} ${MASK0} + setup_tap ${FIB2} inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap ${FIB1} inet ${ADDR} ${MASK1} + setup_tap ${FIB3} inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP0} -alias ${ADDR} atf_check -o not-match:"^${ADDR}[[:space:]]" \ - setfib ${FIB0} netstat -rn -f inet + setfib ${FIB2} netstat -rn -f inet } same_ip_multiple_ifaces_cleanup() { From nobody Wed Apr 2 19:48:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSb5d1L82z5rWcR; Wed, 02 Apr 2025 19:48: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 4ZSb5d0XQNz3QVr; Wed, 02 Apr 2025 19:48:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623317; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TenN7cVhbNpMUSFz2EY0+5hkj9vDXqKKSZhURcV8ERU=; b=IMwOeo1F+P9yAcwJ4IE7BfYPKcFTfeqwvuk7sa+UGAv5b33uqu5g+hJQXVYDnlU2Zy1hP8 t8zVcTsYvQ0GHACBS0eSDMp/xnIPU29Oo3fF7XMMdtOKrLc48+x0SpU2izUKUYTtrp2/1L Z8jPiT1sSue/yz7UaoAoj1qfeA2DO1qr5ogrume8DZi2WQOBnQv0BiwPtfMkpfLDRsXMmS CCtKxHYrds0z63+l0+Z9tXrBIj79huCh96iPHj/XgNGmy2Q9qM47lXTHqCbbz0w8FZWBJk FpIuQeieEzIwl24kx/kYO+vZoB75RwxZFzQKWVR/R+c3gb61si/tIK303GHgtQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743623317; a=rsa-sha256; cv=none; b=IYR5MWYvdP06kSWBTif5Ti6uxgLscJkVf6ahsP2MUvJVCI7wrODx6WDXfCMPevmA1c4+hS dxXSsg7VND26oxElKl2Ylv8K5fTYgwEIj7/TZ/dxPmNGjxJagJexNvbKU+DcYEDAUaVdgf 0g1rW1Y2bpfD/WjeQ0hp5sbd+tE3sbYLvSI0LELSeDSPElLoAnmAtgDscUMasP1UAyfyGX 5ygnZ+CtY8j+MpY+OWaQsMDi+KwSyN0KXOkYtJSQLITrvxoMaCODY8I8VuUg79Wet42qvU FQrLcu/YXaXAPA8OwunVZifYcWEI9shP1qS+Tt9tJJkVxTeEOgBJA/5dEs0RLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743623317; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TenN7cVhbNpMUSFz2EY0+5hkj9vDXqKKSZhURcV8ERU=; b=dX4kTg/t9UWkKB3PkV9dmjpeMMzs+wIlho5Wt/T3t6PVR1PnHL0ethCyNPNQOw+yvT0l6k Ckvv6stI26V0YaLEJQRRbYEmIOTlX23rmokSnDHPIbfKMvgissohOsYrR2kEZ55JGxUgmu WiM13DxwM61L3VIdGA/FVwe8DpHgNOmTlzyAeyotyDeyg1OmQRNvh/4cLuxO3cAG2uQhv2 8y6236+6BEEwXxfU6qwC7qV+Bayl5cWKCHFsQffoh0oHa9DUeLnrW3iCO3vRxpVPo5Ym4G 7DEcAEt+0f19YQUMGUBrXPtMoPi5i5XQeVOD68UGjLbkofjeXzx64IQP/gqdpw== 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 4ZSb5c6lG2zVMh; Wed, 02 Apr 2025 19:48: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 532Jmar1067882; Wed, 2 Apr 2025 19:48:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532JmaON067879; Wed, 2 Apr 2025 19:48:36 GMT (envelope-from git) Date: Wed, 2 Apr 2025 19:48:36 GMT Message-Id: <202504021948.532JmaON067879@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Navdeep Parhar Subject: git: cc05f8de571d - main - pci.4: Update the information on pci_bar_mmap to match pciio.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: np X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cc05f8de571dcb9f8c64a4151d7a5567873295e3 Auto-Submitted: auto-generated The branch main has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=cc05f8de571dcb9f8c64a4151d7a5567873295e3 commit cc05f8de571dcb9f8c64a4151d7a5567873295e3 Author: Navdeep Parhar AuthorDate: 2025-04-02 19:15:46 +0000 Commit: Navdeep Parhar CommitDate: 2025-04-02 19:47:59 +0000 pci.4: Update the information on pci_bar_mmap to match pciio.h Reviewed by: kib,markj,ziaee MFC after: 1 week Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D49639 --- share/man/man4/pci.4 | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/share/man/man4/pci.4 b/share/man/man4/pci.4 index 8623eaf3c3b5..91fbb557f644 100644 --- a/share/man/man4/pci.4 +++ b/share/man/man4/pci.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 1, 2025 +.Dd April 2, 2025 .Dt PCI 4 .Os .Sh NAME @@ -372,16 +372,18 @@ The input parameters and results are passed in the .Va pci_bar_mmap structure, which has the following fields: .Bl -tag -width Vt struct pcise pbm_sel -.It Vt uint64_t pbm_map_base +.It Vt void *pbm_map_base Reports the established mapping base to the caller. If .Va PCIIO_BAR_MMAP_FIXED flag was specified, then this field must be filled before the call with the desired address for the mapping. -.It Vt uint64_t pbm_map_length +.It Vt size_t pbm_map_length Reports the mapped length of the BAR, in bytes. -Its .Vt uint64_t value is always multiple of machine pages. -.It Vt int64_t pbm_bar_length +Its +.Vt size_t +value is always multiple of machine pages. +.It Vt uint64_t pbm_bar_length Reports length of the bar as exposed by the device. .It Vt int pbm_bar_off Reports offset from the mapped base to the start of the From nobody Wed Apr 2 19:48:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSb5k5vykz5rWLt for ; Wed, 02 Apr 2025 19:48:42 +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 4ZSb5k3WpNz3Qyb for ; Wed, 02 Apr 2025 19:48:37 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43cfa7e7f54so1074295e9.1 for ; Wed, 02 Apr 2025 12:48:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743623316; x=1744228116; 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=eDtJFobK9CyUiqpakA9XeiNTBWC+qTKot7fbfeFqz8I=; b=q3sjJx9bl0ZeXJ4dDpCJgIJKs4wql/MUknDhyhGIcAY1rHzJvjgr7NT5xCTzZBe02y NbINsu8ftvgPG3P52IZUjk4PdRKi3T7hwuQSG0GPwnyICZtXXEVwyMX9hNEQbEoN6lYh stX21IHA6d2WKlY3dglcovX/vVNL2IteA69n1eXET+V5mPvBf+8lLOHZ2YmNUVMJeRrn 72ozF9rseiVJaJJM+XlOiTq+y8j8SBV8r9xhgply4t0LXOkkDT4McuawVcb0G4KXXX+w oVWK4Nztj/1l2yGa1kN6nMGkzh9eNE7wInr5+c9Dot6QAtBF/sxydhw7ykGZ+h9OTAXW WVaQ== X-Forwarded-Encrypted: i=1; AJvYcCUVt/N/59+BypxiJWRkn+hMD3aW7BQRXxc9VnpjP6jGTcqb21DwbrsshkkU85Y8ankZsB01MefbhUPP9Q4OOEVQEIGs@freebsd.org X-Gm-Message-State: AOJu0YxdJABdusrHSaKJMT8FHhy1zRtJ5jumpNB1747k8xmKpwpix+0r 8ePioib4S6m4I3I8Ph6I339NRd5v1do2dgdFWOmjzDdVNZQCQIgE0mVrTTmU9XU= X-Gm-Gg: ASbGnctts+1vIktLDlG/R0es9EtPqHURXKy79IKxFDaBG+9lsppacZm77dXE4/VfuwI mpREhQO0OpXEo7aNb5INKzjLNitRbsUNNfknLkSFXIVjHqXtijlHD6UMn2YeXGSea4QaWXbmhVe NLO0DhjuljKOxSpydbHNvYPHv4D0R8k+t+DS5qKUFarNIAzbrmIqEc2Lju1VBy+kHwYw31qqJ0W QrpudqbYxwZVERfVsV/k6p2HXO/klflpo5yAwufWuRINJNKMGxDSTP+8eisyNX1e7UXlephv2VC PyTKsyLxHnSgXotzesKxyZw09AN5pgtacPJQncJvc0De9pu5UbH7XeoEKII= X-Google-Smtp-Source: AGHT+IEhJmJ2suYoapcLcorso42vZtL7BH7ym/M4jFObgc3QCMT+ok8HG5hYFttR/f49lxkiAvkYPw== X-Received: by 2002:a05:600c:1ca3:b0:439:9737:675b with SMTP id 5b1f17b1804b1-43ebeed6dd4mr6724405e9.7.1743623315531; Wed, 02 Apr 2025 12:48:35 -0700 (PDT) Received: from smtpclient.apple ([131.111.5.201]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b658b5dsm17627474f8f.3.2025.04.02.12.48.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Apr 2025 12:48:35 -0700 (PDT) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\)) Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 From: Jessica Clarke In-Reply-To: <20250402194328.8A364214@slippy.cwsent.com> Date: Wed, 2 Apr 2025 20:48:24 +0100 Cc: Olivier Certner , Mitchell Horne , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <97BD6C92-2FE2-4630-A137-AFBB156D54B5@freebsd.org> References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> <20250402194328.8A364214@slippy.cwsent.com> To: Cy Schubert X-Mailer: Apple Mail (2.3826.300.87.4.3) 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] X-Rspamd-Queue-Id: 4ZSb5k3WpNz3Qyb X-Spamd-Bar: ---- On 2 Apr 2025, at 20:43, Cy Schubert wrote: >=20 > In message <2992932.slGk94SIus@ravel>, Olivier Certner writes: >>=20 >> Hi Mitchell, >>=20 >> This commit is likely the cause of the current build failure on = amd64, see: >> https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ >>=20 >> Thanks and regards. >>=20 >> --=20 >> Olivier Certner >=20 > Hmm. I wonder why this was committed in the first place. The review = listed=20 > isn't this commit. >=20 > Should this be reverted to a) correct the commit log message to = document=20 > the correct revision and b) fix the build? The review was split into multiple commits and Phabricator automatically updated it to match the changes from a single one of the commits. https://reviews.freebsd.org/D45600?id=3D139913 is an earlier version that included these changes. Jess From nobody Wed Apr 2 20:14:39 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSbgg4WPqz5rYV6; Wed, 02 Apr 2025 20:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZSbgg3bkGz3Vjd; Wed, 02 Apr 2025 20:14:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2m1nqpEMNUoaXHxqgzZaNchB9EICGesOsafhIH9o+QY=; b=ATRMVqnfcu2eCsVRdnw+6pSCGEU4z/R36WjbNbc0E3drj7omDG694svg390eG6qzcpGBs7 8faowrrTUAChQiVUgPapIHpmccg+Wmd2lNviOterdK7qY6FZ6QKlTA//fbU6fGk6THEX35 vapmDBiNZ/ZVP8z0vF1YhMYmNqpW45Z/ukrunx2ta19xyAI0cH65iltOYqa0NfxjC782rz ZTTnnl52DizJD0n832kQSRzTqPqKe/1FcvzOUFnqQ/LKAenqNaHaVzHlenj5QcxF+CD36k nimUPgf58lVzaUZf0QXzjmr/gmSow4N4xDemrvQyqMKUTab+tWmWE8jsMrko3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743624879; a=rsa-sha256; cv=none; b=bIYLwDIaQjqJnPtVFG/hnqARpETueHXRCpjBxRBOLrXKUTR5oJVtVRwlpTBxa+OCJVnwDu KY7r+mPcAWq+l6PkxccIVcgAMvDcXCU9+88ErvWGfSgFLPRfHpIdhPZq9gJaLO5Edoo/0y j7cSiAv2XjVYUTOKn08Y+9XxmaBgnh1G2UGmvxNfO7t9SGnCYEpMftQ4sQvg3IQHLg5p4k 29dlBEUk0dSsDbeiFalC17XyW9kbHnrcD5inka67ha7FepGb5jDzF6C1UuXFJyfOpJ19jf UkU23ZAn0DXxb+o7qnapt+i04RX/9rR88ey9+DHBcT2/N2bePNtbhYSzkPJJ7w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2m1nqpEMNUoaXHxqgzZaNchB9EICGesOsafhIH9o+QY=; b=rJaOJz7cmHrSJJaCDbQJp9eHOEhx4GrgCLxbnLHAYnGLmftaL9JylLEGMePnXtZMm2RK10 X8aFZOCb7l33K2cJSMsKXg2seHi7qTcpjKFzWXwzTL6VN9aBEy3DMSeifGXyukb9vX+vfM FOiS6TsZsqosbq3n7epBz/BDrpfClzOzwp7f3B4HSU39UL7oESjzUsZceFRGfg4g/cGDL2 dtbNN1pf8heLYsDpTZBt4/SvT73OhHUxuYeV0PM5WJTMgUt/v3Cbxtqpm2jjJmkpPe2I7a OC1eEp96+NwaPQzWK+/C38sb/xjTbcRuX3XVum1T/QOzszRJ0zy14WrNeHySDw== 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 4ZSbgg3B1FzX1S; Wed, 02 Apr 2025 20:14: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 532KEdqf024260; Wed, 2 Apr 2025 20:14:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KEdTG024257; Wed, 2 Apr 2025 20:14:39 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:14:39 GMT Message-Id: <202504022014.532KEdTG024257@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: 9be42ee6c9c7 - main - pci: Make PCIe Eject timeout configurable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9be42ee6c9c741052bdc49f13bc953bf88a24423 Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=9be42ee6c9c741052bdc49f13bc953bf88a24423 commit 9be42ee6c9c741052bdc49f13bc953bf88a24423 Author: Colin Percival AuthorDate: 2025-03-31 04:08:44 +0000 Commit: Colin Percival CommitDate: 2025-04-02 20:14:24 +0000 pci: Make PCIe Eject timeout configurable PCIe mandates a 5 second delay between when the "Attention Button" is pressed and when the associated device is detached; this is to allow for the button to be pressed a second time to cancel the ejection. On some systems this 5 second delay may not be desireable; so introduce a hw.pci.pcie_hp_detach_timeout sysctl (which can also be set as a loader tunable) which specifies the timeout in milliseconds (default 5000). If set to zero, the device is detached immediately. Reviewed by: jhb MFC after: 2 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D49585 --- sys/dev/pci/pci_pci.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c index 10133c0c68d9..5e71a376604b 100644 --- a/sys/dev/pci/pci_pci.c +++ b/sys/dev/pci/pci_pci.c @@ -800,6 +800,11 @@ SYSCTL_INT(_hw_pci, OID_AUTO, enable_pcie_hp, CTLFLAG_RDTUN, &pci_enable_pcie_hp, 0, "Enable support for native PCI-express HotPlug."); +static sbintime_t pcie_hp_detach_timeout = 5 * SBT_1S; +SYSCTL_SBINTIME_MSEC(_hw_pci, OID_AUTO, pcie_hp_detach_timeout, CTLFLAG_RWTUN, + &pcie_hp_detach_timeout, + "Attention Button delay for PCI-express Eject."); + static void pcib_probe_hotplug(struct pcib_softc *sc) { @@ -1068,11 +1073,17 @@ pcib_pcie_intr_hotplug(void *arg) &sc->pcie_ab_task, NULL); } else if (old_slot_sta & PCIEM_SLOT_STA_PDS) { /* Only initiate detach sequence if device present. */ - device_printf(dev, - "Attention Button Pressed: Detaching in 5 seconds\n"); - sc->flags |= PCIB_DETACH_PENDING; - taskqueue_enqueue_timeout(taskqueue_bus, - &sc->pcie_ab_task, 5 * hz); + if (pcie_hp_detach_timeout != 0) { + device_printf(dev, + "Attention Button Pressed: Detaching in %ld ms\n", + (long)(pcie_hp_detach_timeout / SBT_1MS)); + sc->flags |= PCIB_DETACH_PENDING; + taskqueue_enqueue_timeout_sbt(taskqueue_bus, + &sc->pcie_ab_task, pcie_hp_detach_timeout, + SBT_1S, 0); + } else { + sc->flags |= PCIB_DETACHING; + } } } if (sc->pcie_slot_sta & PCIEM_SLOT_STA_PFD) From nobody Wed Apr 2 20:14:40 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSbgh5VmTz5rXv0; Wed, 02 Apr 2025 20:14: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 4ZSbgh4W4Wz3VgK; Wed, 02 Apr 2025 20:14:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2lggKKs0XBJZ9ejgzvFcAMuxYoH2G3Q5L44SCOROrb8=; b=vH8Ens4Y70B5D+jAfKENxlzfVxv3HpvoX89XL69Mel5VMWQwQjthza1NH9jwxjSnjgJaoD 0NLNKvjSJeFgw8VGbboM19ZSOSX5L9Z5UuniTCOl2kzvMKhULr6+rc6OD/MC6LGTJcK9O/ T4GUuy7V82shnVba1FXKFxQ8yexhiQFWnDH44pF0rPp7PBFzXMna+OfkrhlZoQho5a8ggM ASPl9gQr+8jr+S1dzla2xNgESqaTRiVaTGeLTrQs3NG5DQ1ho2ASJ4pBTTdmB0JA/orRLU Q5nrTCV62lweEXSkzkNYMzsFo1C5mcjjmwgfD60v+qewt0/OyUlCVat1MnSoFg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743624880; a=rsa-sha256; cv=none; b=iN4RY3RAS3dcjpSz/DKizs7E1V4y3HsvLa1gEsuRKskiJYZegPy3Z28zNKDehZciIUeifa 14yy9eznUvRkNM1Nf1W2tT6SIRWbhkPizpJSmckHlLIA2YpvV5HNk8oygOlkd9jFxSjqM4 04IpYa0GruvI9xXtgLxbxEzM/Gs/6zESVmwsyUCgDjxvc6UbaWDHObNmd9IMDCAbeyPgF3 PkuxYUM9s8YDlP4tvr78qJ5bvyRLELtkf3/IRdqijCK/0rBvAjQ2/nTa7AtCu+MBYFJP6R XiNYXMiKSau+AIPNLlfxxOd3KCEFAz+DOJn7/p6/kGM25AyfQJ9p870FJvNj+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743624880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2lggKKs0XBJZ9ejgzvFcAMuxYoH2G3Q5L44SCOROrb8=; b=NWWBoSvWmgUgmZa7fP2ctjQItofE2QBeTxM2NTWDg5ppYhdLmgVYOXxpAfjmGhIq4Nv2Ti EbvX9hsAROvWPzyDDAveCDwjSo8u1k0VHjVWRJTQYsBZ7rWc/WAqWzfQQ/nGZ5pjh6MNnm 86jZrUoYcll7+DW25TbIKhfYsCHpFPF5MMWarrb0BV/2y348OoS26mZalGoGece7iRvpY9 7R8J+xIOZ05i+A0d3Vfd0uY305CRl63v1JTPhVz4i/Re2pc+ZbqZsVsB373j9G6NhzAms6 Ex2zGLtn+vV+UTkW3sPzvONUmLMCBA25V3aCFWFaOrBKnvEempx5VpgfRrOqQA== 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 4ZSbgh3qCzzWrJ; Wed, 02 Apr 2025 20:14: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 532KEe25024298; Wed, 2 Apr 2025 20:14:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KEeow024295; Wed, 2 Apr 2025 20:14:40 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:14:40 GMT Message-Id: <202504022014.532KEeow024295@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: 80febaa1714e - main - EC2: Set PCIe eject timeout to 0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 80febaa1714e897d67a8217edc305a0e81498a6f Auto-Submitted: auto-generated The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=80febaa1714e897d67a8217edc305a0e81498a6f commit 80febaa1714e897d67a8217edc305a0e81498a6f Author: Colin Percival AuthorDate: 2025-03-31 04:11:23 +0000 Commit: Colin Percival CommitDate: 2025-04-02 20:14:24 +0000 EC2: Set PCIe eject timeout to 0 Since PCIe device detaching is done via API, there is no opportunity to "press the attention button a second time" and thus the 5 second timeout mandated by PCIe serves no purpose. MFC after: 2 weeks Sponsored by: Amazon --- release/tools/ec2.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/release/tools/ec2.conf b/release/tools/ec2.conf index 4f78e5913e56..507d9acabfd9 100644 --- a/release/tools/ec2.conf +++ b/release/tools/ec2.conf @@ -86,6 +86,12 @@ ec2_common() { # historical "nvd" driver. echo 'hw.nvme.use_nvd="0"' >> ${DESTDIR}/boot/loader.conf + # Reduce the timeout for PCIe Eject ("hotunplug") requests. PCIe + # mandates a 5 second timeout to allow someone to cancel the eject + # by pressing the "Attention button" a second time, but in the EC2 + # environment this delay serves no purpose. + echo 'hw.pci.pcie_hp_detach_timeout="0"' >> ${DESTDIR}/boot/loader.conf + # Disable KbdInteractiveAuthentication according to EC2 requirements. sed -i '' -e \ 's/^#KbdInteractiveAuthentication yes/KbdInteractiveAuthentication no/' \ From nobody Wed Apr 2 20:22:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSbrP2zQtz5rYgZ; Wed, 02 Apr 2025 20:22: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 4ZSbrP1mHmz3XKs; Wed, 02 Apr 2025 20:22:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743625333; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=drQHqDoMXmg4e2ENtrd3IrgKGXMdHfoDtTWZOEIKWtM=; b=VfLS/GsGNjAkikGYPCYfZxfyfNdqMddsXUeLFYJlYon6fefoZr8Pg5JwWyNhSVtW0TEHkj ugV+CIRDIUkVLMKFuiQfjrQkIxoPgvCUuSJN0yeUA3HSSBm0Bof8dOrIgt/3RKcWhnWtQN 94uqgW6P6V5p8dxVJzA29HfevFFzB0aD73WYbUO6wc1f0qNoGPppGGBvNyonVQEQbUK9yM 73fRwH6K/XxjrpZ6Ge5Ab5fhk3AyReofRRnbQeNLZnOOQIDbiAAgplR8g4Jygh+mre3Tyd 8ipQUzo4fuL5T+zRUEPLghnl4/l0MjGZ0UPz/7apR8hRLv+F1soq6YzLVyojEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743625333; a=rsa-sha256; cv=none; b=PL5WS/NKT82xRtTlOf1uxFxWTA+CY8CUVrketnbxnJ6YWa58tx/F3mxPXyxW3kJ8H+k8df oWCmD1as6E0bdJvP7ufL2kHdR0oulpQslFo+jLKTwIrFmYC/A+O/7EDv2c7OMl/pme57OT UOgJ7KZMbiiox2P2uX1r+vd8lPRVpYDaALyWyCto20APTvsagA4/BaSjbWchyrVVmW4p71 C3MfSeIZ7bi+q3VCOTucQOaQ1GotPQt5KtQrfKznJTAPOAL1MO2sH0CEbGz4X3DnKXAE39 S0Sr/00o4hYIqEWS7y2HViqzdbeUM1zazGdA+PWjq08tT79uPwhirPEPhDID4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743625333; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=drQHqDoMXmg4e2ENtrd3IrgKGXMdHfoDtTWZOEIKWtM=; b=nwrttG+H2LpQf0/99iPuPXirfFxv5BzbswzFvhSDmFf+VubRHeG8yamVYCTiX9GUQphKno V4VbGHykFanQCyIatlC/mfMYEvNNDdvOeu7E3yBbCXc1Xa6UoFE7fg5fRzeKKqINrBrfRM a8LpMYvHDeMImKOppPO2TdI3paSCHHCtyOkt6aKjDkHCUqvXtYwMhNx0CznN+g1+Qbd6ni avBtHAP0uA47yxQSRGQ2E9Gp/AxXZWHwGFpK+IsaoAomd/A02fQN+5PV8Dxh6cY4xjVHoI eiZ1uSgN6LM7yBPvVfFvzNXX5qCw4ZpxUtPk04e9+Hjmubda+CzA4OIWf1sndg== 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 4ZSbrP1BC5zWs6; Wed, 02 Apr 2025 20:22: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 532KMDrR042026; Wed, 2 Apr 2025 20:22:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KMDWu042023; Wed, 2 Apr 2025 20:22:13 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:22:13 GMT Message-Id: <202504022022.532KMDWu042023@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: fd748c7d5b7a - main - efirt: add a tunable to disable printing faults during EFIRT calls List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fd748c7d5b7aefbeda604403f203637b12ae89df Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fd748c7d5b7aefbeda604403f203637b12ae89df commit fd748c7d5b7aefbeda604403f203637b12ae89df Author: Konstantin Belousov AuthorDate: 2025-03-31 18:38:36 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-02 20:21:56 +0000 efirt: add a tunable to disable printing faults during EFIRT calls PR: 285797 Reported and tested by: Bakul Shah Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49592 --- sys/amd64/amd64/trap.c | 13 +++++++++++-- sys/arm64/arm64/trap.c | 3 +++ sys/dev/efidev/efirt.c | 11 ++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 8e9b115ef224..1041422b9f92 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -163,6 +163,9 @@ SYSCTL_INT(_machdep, OID_AUTO, uprintf_signal, CTLFLAG_RWTUN, &uprintf_signal, 0, "Print debugging information on trap signal to ctty"); +u_long cnt_efirt_faults; +int print_efirt_faults = 1; + /* * Control L1D flush on return from NMI. * @@ -431,8 +434,14 @@ trap(struct trapframe *frame) */ if ((td->td_pflags & TDP_EFIRT) != 0 && curpcb->pcb_onfault != NULL && type != T_PAGEFLT) { - trap_diag(frame, 0); - printf("EFI RT fault %s\n", traptype_to_msg(type)); + u_long cnt = atomic_fetchadd_long(&cnt_efirt_faults, 1); + + if ((print_efirt_faults == 1 && cnt == 1) || + print_efirt_faults == 2) { + trap_diag(frame, 0); + printf("EFI RT fault %s\n", + traptype_to_msg(type)); + } frame->tf_rip = (long)curpcb->pcb_onfault; return; } diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c index d612905b77c8..fdcc38cd9a31 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -85,6 +85,9 @@ static void print_registers(struct trapframe *frame); int (*dtrace_invop_jump_addr)(struct trapframe *); +u_long cnt_efirt_faults; +int print_efirt_faults; + typedef void (abort_handler)(struct thread *, struct trapframe *, uint64_t, uint64_t, int); diff --git a/sys/dev/efidev/efirt.c b/sys/dev/efidev/efirt.c index 5dff2258725d..9523ffc7f386 100644 --- a/sys/dev/efidev/efirt.c +++ b/sys/dev/efidev/efirt.c @@ -123,11 +123,20 @@ efi_status_to_errno(efi_status status) } static struct mtx efi_lock; -static SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL, +SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL, "EFI"); static bool efi_poweroff = true; SYSCTL_BOOL(_hw_efi, OID_AUTO, poweroff, CTLFLAG_RWTUN, &efi_poweroff, 0, "If true, use EFI runtime services to power off in preference to ACPI"); +extern int print_efirt_faults; +SYSCTL_INT(_hw_efi, OID_AUTO, print_faults, CTLFLAG_RWTUN, + &print_efirt_faults, 0, + "Print fault information upon trap from EFIRT calls: " + "0 - never, 1 - once, 2 - always"); +extern u_long cnt_efirt_faults; +SYSCTL_ULONG(_hw_efi, OID_AUTO, total_faults, CTLFLAG_RD, + &cnt_efirt_faults, 0, + "Total number of faults that occurred during EFIRT calls"); static bool efi_is_in_map(struct efi_md *map, int ndesc, int descsz, vm_offset_t addr) From nobody Wed Apr 2 20:47:22 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZScPR0j9Mz5rbhN; Wed, 02 Apr 2025 20:47: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 4ZScPQ5JjRz3bk2; Wed, 02 Apr 2025 20:47:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743626842; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9Oav4mU4UUNz9cR/evreoYfX07GbffjAWqNyoKwIKoA=; b=rDuUOnVFzkaXuM+I03/4DGkQ9+Beb+isbDgYbk+yIBT3x1kz+FPslngUk2nTyJXrsYxs4Q WmGUiOh/W4BQVRcJJ0Zp+6HQCvOKwuZZAoOv7Irt1YAeEBHnFeCLvSeG+M+H7G3ZeBxcwN ihBPL++Nf+fytpnPPF+dO5ayk5wHZudJnfubl2fXNVxoWbCISGaBd7nByeiUXoivjJVw2X HY7bjkZRTaKhGQVjKQYVh4Gu209kdU8jpPPX/PXBhk5JxmoLkcTGc3FXjmcWFqTR5VoOEX x4AXjrf4Slx1a3UE9Ity3qEJMZxYiAzEzW9gGW0cB32DNRdWJULcF0/4zaT8ow== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743626842; a=rsa-sha256; cv=none; b=OQ5vn2EKtMupErRh9szsTpdmmglzbfPF5I8gej5zC4hB2lIcjxp3BSbnNBRLCCoYPuHVXA Zi4wdz7zPEEpnxSzw+0D0JHxO8A24YHO9vnwyArumpyrmaDw7nkhWnT4TwjLW5MI19Ukfm xxZqARi6cEd47zWldBbchsOTvzx9Fc9/fuylYrCesyujWNyO+NDiUWdEKp78LSvtMt+13X S+TuiQYqjJbh6Xh5AmQEAoiaQrG1n3eaQ8cJuRQFTQ2TlSRYqGl0d2CmZ+tA1SmMISVDUf DqZq87FzWMDvP1G39hDxoxoyHOKuRZrPVIM000/A19mQa8RpZUI8YWVHHcHXXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743626842; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9Oav4mU4UUNz9cR/evreoYfX07GbffjAWqNyoKwIKoA=; b=DebrzJdq9IwdTlmBqX+FTh/kmhZE3XZkVjlnn2jqBGKHvum95czo67POUJzQHLhVhH7hS3 54KIjs/XLzPjl/2ngfoPB//oU0jKVaRwqaUkvcnLdxaIm6tkmGUA7DIFCSUNC6s0cJSr13 TWct40Ntn418wlhFUCbQTweV0d5NXN2WKWX2d/wGV0yFSnN8xKXCRZIyitwwHyp1dLwTOb PqCR1Zi4cRjS37dBtDngL6+X8nRF5+nQVLcpkdj5gS/sLq49zpc7eIyVE5T07elMqFAb07 L+eOXKdG5OwUumx3NtFdOq+or11iO6OWg55+X7Niw19Lk0xi3/+Q33P+sQYQHw== 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 4ZScPQ4hPWzY2C; Wed, 02 Apr 2025 20:47: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 532KlMCP080614; Wed, 2 Apr 2025 20:47:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532KlMGP080611; Wed, 2 Apr 2025 20:47:22 GMT (envelope-from git) Date: Wed, 2 Apr 2025 20:47:22 GMT Message-Id: <202504022047.532KlMGP080611@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: 2ec2ba7e232d - main - vfs: Add VFS/syscall support for Solaris style extended attributes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=2ec2ba7e232dd126df0617194fd07be78c7a2ab9 commit 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Author: Rick Macklem AuthorDate: 2025-04-02 20:45:14 +0000 Commit: Rick Macklem CommitDate: 2025-04-02 20:45:14 +0000 vfs: Add VFS/syscall support for Solaris style extended attributes Some systems, such as Solaris, represent extended attributes as a set of files in a directory associated with a file object. This allows extended attributes to be acquired/modified via regular file system operations, such as read(2), write(2), lseek(2) and ftruncate(2). Since ZFS already has the capability to do this, this patch allows system calls (and the NFSv4 client/server) such access to extended attributes. This permits handling of large extended attributes and allows the NFSv4 server to provide the service to NFSv4 clients that want it, such as Windows, MacOS and Solaris. The top level syscall change is a new open(2)/openat(2) flag I called O_NAMEDATTR that allows the named attribute directory or any attribute within that directory to be open'd. The patch defines two new v_irflag flags called VIRF_NAMEDDIR and VIRF_NAMEDATTR to indicate that the vnode is for this alternate name space and not a normal file object. The patch also defines flags (OPENNAMED and CREATENAMED) for VOP_LOOKUP() to pass this new case down into VOP_LOOKUP() and MNT_NAMEDATTR for file systems that support named attributes. Most of the code in this patch is to avoid creation of links, symlinks or non-regular file objects in the named attribute directory. It also must avoid using the name cache, since the named attribute directory is associated with the same name as the file object. Man pages updates will be done as separate commits. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49583 --- sys/kern/vfs_cache.c | 6 +++++- sys/kern/vfs_default.c | 1 + sys/kern/vfs_lookup.c | 1 + sys/kern/vfs_subr.c | 1 + sys/kern/vfs_syscalls.c | 42 ++++++++++++++++++++++++++++++++++++++++++ sys/kern/vfs_vnops.c | 39 ++++++++++++++++++++++++++++++++++++++- sys/sys/fcntl.h | 1 + sys/sys/mount.h | 4 +++- sys/sys/namei.h | 5 +++-- sys/sys/unistd.h | 1 + sys/sys/vnode.h | 9 ++++++--- 11 files changed, 102 insertions(+), 8 deletions(-) diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index c55e103a1a37..e96724b928a6 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -4461,7 +4461,7 @@ cache_fpl_terminated(struct cache_fpl *fpl) (NC_NOMAKEENTRY | NC_KEEPPOSENTRY | LOCKLEAF | LOCKPARENT | WANTPARENT | \ FAILIFEXISTS | FOLLOW | EMPTYPATH | LOCKSHARED | ISRESTARTED | WILLBEDIR | \ ISOPEN | NOMACCHECK | AUDITVNODE1 | AUDITVNODE2 | NOCAPCHECK | OPENREAD | \ - OPENWRITE | WANTIOCTLCAPS) + OPENWRITE | WANTIOCTLCAPS | OPENNAMED) #define CACHE_FPL_INTERNAL_CN_FLAGS \ (ISDOTDOT | MAKEENTRY | ISLASTCN) @@ -4525,6 +4525,10 @@ cache_can_fplookup(struct cache_fpl *fpl) cache_fpl_aborted_early(fpl); return (false); } + if ((cnp->cn_flags & OPENNAMED) != 0) { + cache_fpl_aborted_early(fpl); + return (false); + } return (true); } diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 5e6516921002..9f150570945b 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -451,6 +451,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap) case _PC_DEALLOC_PRESENT: case _PC_INF_PRESENT: case _PC_MAC_PRESENT: + case _PC_NAMEDATTR_ENABLED: *ap->a_retval = 0; return (0); default: diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c index 290834c10be5..127d068f1fff 100644 --- a/sys/kern/vfs_lookup.c +++ b/sys/kern/vfs_lookup.c @@ -381,6 +381,7 @@ namei_setup(struct nameidata *ndp, struct vnode **dpp, struct pwd **pwdp) error = fgetvp_lookup(ndp, dpp); } if (error == 0 && (*dpp)->v_type != VDIR && + (cnp->cn_flags & OPENNAMED) == 0 && (cnp->cn_pnbuf[0] != '\0' || (cnp->cn_flags & EMPTYPATH) == 0)) error = ENOTDIR; diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 96e8bb765972..c8ccbc18a7fe 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -4774,6 +4774,7 @@ DB_SHOW_COMMAND(mount, db_show_mount) MNT_FLAG(MNT_FORCE); MNT_FLAG(MNT_SNAPSHOT); MNT_FLAG(MNT_BYFSID); + MNT_FLAG(MNT_NAMEDATTR); #undef MNT_FLAG if (mflags != 0) { if (buf[0] != '\0') diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index a6c216d61d8c..7096c4b34d5b 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1435,6 +1435,10 @@ restart: vput(nd.ni_dvp); vrele(vp); return (EEXIST); + } else if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + NDFREE_PNBUF(&nd); + vput(nd.ni_dvp); + return (EINVAL); } else { VATTR_NULL(&vattr); vattr.va_mode = (mode & ALLPERMS) & @@ -1543,6 +1547,11 @@ restart: vrele(nd.ni_vp); return (EEXIST); } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + NDFREE_PNBUF(&nd); + vput(nd.ni_dvp); + return (EINVAL); + } if (vn_start_write(nd.ni_dvp, &mp, V_NOWAIT) != 0) { NDFREE_PNBUF(&nd); vput(nd.ni_dvp); @@ -1688,6 +1697,10 @@ kern_linkat_vp(struct thread *td, struct vnode *vp, int fd, const char *path, vrele(vp); return (EPERM); /* POSIX */ } + if ((vn_irflag_read(vp) & (VIRF_NAMEDDIR | VIRF_NAMEDATTR)) != 0) { + vrele(vp); + return (EINVAL); + } NDINIT_ATRIGHTS(&nd, CREATE, LOCKPARENT | AUDITVNODE2 | NOCACHE, segflag, path, fd, &cap_linkat_target_rights); @@ -1829,6 +1842,10 @@ restart: goto out; goto restart; } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } VATTR_NULL(&vattr); vattr.va_mode = ACCESSPERMS &~ td->td_proc->p_pd->pd_cmask; #ifdef MAC @@ -3721,6 +3738,7 @@ kern_renameat(struct thread *td, int oldfd, const char *old, int newfd, struct nameidata fromnd, tond; uint64_t tondflags; int error; + short irflag; again: bwillwrite(); @@ -3773,6 +3791,12 @@ again: return (error); goto again; } + irflag = vn_irflag_read(fvp); + if (((irflag & VIRF_NAMEDATTR) != 0 && tdvp != fromnd.ni_dvp) || + (irflag & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } if (tvp != NULL) { if (fvp->v_type == VDIR && tvp->v_type != VDIR) { error = ENOTDIR; @@ -3892,6 +3916,10 @@ restart: return (error); goto restart; } + if ((vn_irflag_read(nd.ni_dvp) & VIRF_NAMEDDIR) != 0) { + error = EINVAL; + goto out; + } VATTR_NULL(&vattr); vattr.va_type = VDIR; vattr.va_mode = (mode & ACCESSPERMS) &~ td->td_proc->p_pd->pd_cmask; @@ -4629,6 +4657,7 @@ kern_fhopen(struct thread *td, const struct fhandle *u_fhp, int flags) struct file *fp; int fmode, error; int indx; + bool named_attr; error = priv_check(td, PRIV_VFS_FHOPEN); if (error != 0) @@ -4651,6 +4680,19 @@ kern_fhopen(struct thread *td, const struct fhandle *u_fhp, int flags) if (error != 0) return (error); + /* + * Check to see if the file handle refers to a named attribute + * directory or attribute. If it does, the O_NAMEDATTR flag + * must have been specified. + */ + named_attr = (vn_irflag_read(vp) & + (VIRF_NAMEDDIR | VIRF_NAMEDATTR)) != 0; + if ((named_attr && (fmode & O_NAMEDATTR) == 0) || + (!named_attr && (fmode & O_NAMEDATTR) != 0)) { + vput(vp); + return (ENOATTR); + } + error = falloc_noinstall(td, &fp); if (error != 0) { vput(vp); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 69d8ffcdd5ad..c448d62e9920 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -208,6 +208,11 @@ open2nameif(int fmode, u_int vn_open_flags) res |= OPENREAD; if ((fmode & FWRITE) != 0) res |= OPENWRITE; + if ((fmode & O_NAMEDATTR) != 0) { + res |= OPENNAMED; + if ((fmode & O_CREAT) != 0) + res |= CREATENAMED; + } if ((vn_open_flags & VN_OPEN_NOAUDIT) == 0) res |= AUDITVNODE1; if ((vn_open_flags & VN_OPEN_NOCAPCHECK) != 0) @@ -261,6 +266,19 @@ restart: if ((error = namei(ndp)) != 0) return (error); if (ndp->ni_vp == NULL) { + if ((fmode & O_NAMEDATTR) != 0) { + if ((ndp->ni_dvp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0) + error = EINVAL; + else if ((vn_irflag_read(ndp->ni_dvp) & + VIRF_NAMEDDIR) == 0) + error = ENOENT; + if (error != 0) { + vp = ndp->ni_dvp; + ndp->ni_dvp = NULL; + goto bad; + } + } VATTR_NULL(vap); vap->va_type = VREG; vap->va_mode = cmode; @@ -315,7 +333,21 @@ restart: error = EEXIST; goto bad; } - if (vp->v_type == VDIR) { + if ((fmode & O_NAMEDATTR) != 0) { + short irflag; + + irflag = vn_irflag_read(vp); + if ((vp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0 || + ((irflag & VIRF_NAMEDATTR) != 0 && + vp->v_type != VREG)) + error = EINVAL; + else if ((irflag & (VIRF_NAMEDDIR | + VIRF_NAMEDATTR)) == 0) + error = ENOATTR; + if (error != 0) + goto bad; + } else if (vp->v_type == VDIR) { error = EISDIR; goto bad; } @@ -331,6 +363,11 @@ restart: if ((error = namei(ndp)) != 0) return (error); vp = ndp->ni_vp; + if ((fmode & O_NAMEDATTR) != 0 && (vp->v_mount->mnt_flag & + MNT_NAMEDATTR) == 0) { + error = EINVAL; + goto bad; + } } error = vn_open_vnode(vp, fmode, cred, curthread, fp); if (first_open) { diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h index 143824558fc2..08aa26fbce02 100644 --- a/sys/sys/fcntl.h +++ b/sys/sys/fcntl.h @@ -140,6 +140,7 @@ typedef __pid_t pid_t; #define O_DSYNC 0x01000000 /* POSIX data sync */ #if __BSD_VISIBLE #define O_EMPTY_PATH 0x02000000 +#define O_NAMEDATTR 0x04000000 /* NFSv4 named attributes */ #endif /* diff --git a/sys/sys/mount.h b/sys/sys/mount.h index 6715c55d7a6d..66822a5aadc2 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -365,6 +365,7 @@ struct mntoptnames { { MNT_RELOAD, "reload" }, \ { MNT_FORCE, "force" }, \ { MNT_SNAPSHOT, "snapshot" }, \ + { MNT_NAMEDATTR, "named attributes" }, \ { 0, NULL } #endif @@ -390,6 +391,7 @@ struct mntoptnames { #define MNT_SUJ 0x0000000100000000ULL /* using journaled soft updates */ #define MNT_AUTOMOUNTED 0x0000000200000000ULL /* mounted by automountd(8) */ #define MNT_UNTRUSTED 0x0000000800000000ULL /* filesys metadata untrusted */ +#define MNT_NAMEDATTR 0x0000020000000000ULL /* named attributes enabled */ /* * NFS export related mount flags. @@ -429,7 +431,7 @@ struct mntoptnames { MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \ MNT_NFS4ACLS | MNT_AUTOMOUNTED | MNT_VERIFIED | \ - MNT_UNTRUSTED) + MNT_UNTRUSTED | MNT_NAMEDATTR) /* Mask of flags that can be updated. */ #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ diff --git a/sys/sys/namei.h b/sys/sys/namei.h index 1416ff983f32..20c4f4c34dc0 100644 --- a/sys/sys/namei.h +++ b/sys/sys/namei.h @@ -172,14 +172,15 @@ int cache_fplookup(struct nameidata *ndp, enum cache_fpl_status *status, #define OPENREAD 0x00200000 /* open for reading */ #define OPENWRITE 0x00400000 /* open for writing */ #define WANTIOCTLCAPS 0x00800000 /* leave ioctl caps for the caller */ -/* UNUSED 0x01000000 */ +#define OPENNAMED 0x01000000 /* opening a named attribute (dir) */ #define NOEXECCHECK 0x02000000 /* do not perform exec check on dir */ #define MAKEENTRY 0x04000000 /* entry is to be added to name cache */ #define ISSYMLINK 0x08000000 /* symlink needs interpretation */ #define ISLASTCN 0x10000000 /* this is last component of pathname */ #define ISDOTDOT 0x20000000 /* current component name is .. */ #define TRAILINGSLASH 0x40000000 /* path ended in a slash */ -#define PARAMASK 0x7ffffe00 /* mask of parameter descriptors */ +#define CREATENAMED 0x80000000 /* create a named attribute dir */ +#define PARAMASK 0xfffffe00 /* mask of parameter descriptors */ /* * Flags which must not be passed in by callers. diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h index 096d3444f997..59cef241754a 100644 --- a/sys/sys/unistd.h +++ b/sys/sys/unistd.h @@ -154,6 +154,7 @@ #define _PC_MAC_PRESENT 63 #define _PC_ACL_NFS4 64 #define _PC_DEALLOC_PRESENT 65 +#define _PC_NAMEDATTR_ENABLED 66 #endif /* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 00f8a1eabc4e..e1b30977f4bd 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -246,6 +246,8 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); #define VIRF_MOUNTPOINT 0x0004 /* This vnode is mounted on */ #define VIRF_TEXT_REF 0x0008 /* Executable mappings ref the vnode */ #define VIRF_CROSSMP 0x0010 /* Cross-mp vnode, no locking */ +#define VIRF_NAMEDDIR 0x0020 /* Named attribute directory */ +#define VIRF_NAMEDATTR 0x0040 /* Named attribute */ #define VI_UNUSED0 0x0001 /* unused */ #define VI_MOUNT 0x0002 /* Mount in progress */ @@ -305,9 +307,10 @@ struct vattr { /* * Flags for va_vaflags. */ -#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ -#define VA_EXCLUSIVE 0x02 /* exclusive create request */ -#define VA_SYNC 0x04 /* O_SYNC truncation */ +#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ +#define VA_EXCLUSIVE 0x02 /* exclusive create request */ +#define VA_SYNC 0x04 /* O_SYNC truncation */ +#define VA_NAMEDATTR_TYPE 0x08 /* vnode is for named attribute */ /* * Flags for ioflag. (high 16 bits used to ask for read-ahead and From nobody Wed Apr 2 21:18:45 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSd5f2QlQz5rtVK; Wed, 02 Apr 2025 21:18: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 4ZSd5d6f86z3j0y; Wed, 02 Apr 2025 21:18:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743628725; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=q6J+ce+O/ztJ0oBXl41/r0z1ZDmkFF+HgEBMef3Db+o=; b=KZiPbds1sLvYT4jGQuilXymz9iW15oPlT7QSi5NxTet+JP4yKJ5jcwusdA5YlOmrajUxCJ TAe7MSWZ0JA2h0xTGC/dXeWtdrJwoupdY/gapbo65ROqe5jHk/tPzsmkAWEN6ZPftGHxfD j+jT3WQ1FwtsZdFfeyv8jI28btLLdgADW5IWk/DrlfY/kZg9VdCxXIilakmORsRc5JKtU+ axkdjkXHCmoZ4F4H0gxXTLLjWIwUQwm1hYCV+4/tLPgu3ZIQbJ2PxonyLbdjB9L6juexxl IvSBS0XtV9048MsYYOfGnTVaLydxe27tLXP9pt7ZF+FV+TMqC8EupmiXAyR2GA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743628725; a=rsa-sha256; cv=none; b=JiGeA2O1041aUZ28Lcc8UUXCXMZYsNRpaIY5wsSztEnc6s6Oi0xfyu0WrHBy/UcPwz+SFB bkp9VdHVS4LIESWthSY9Z47/vMWH49sZg7RAbPa8pnk4YIu3xt5UgqVesqLqjSGxnqgYpS Gjyhr3i0y/5H0EQEatsw8ZLvEkkeY/5rPPs36qcZ4jRxicM+tcmrlt1Ph+gsuCORAkjRZ9 r7aZ2oklHjBMZ7Idxm4V0+ZNio/s6s/zu0dJ66er65swfRr7ROE4HG5WhsnSMJ7Y3ehxv+ jjl0Tw1huhFErhm7j/IiqjcL32XTK2987NtVa2ghhZxzABQp8IK8laZwIkqrGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743628725; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=q6J+ce+O/ztJ0oBXl41/r0z1ZDmkFF+HgEBMef3Db+o=; b=ynipGP+aRMz3ReZSXZRjwsdtKfad+R6+BTtQX2u8Gft7u5GvSHJ4WwSP3UYW8fv91oy+T5 U9YrE3A5kihFDff6416f9gf+55uHNyufDMcH3cSlBrgT+ZTb0D7WIXa2T+jO15KNF2mUg5 RMxxlgvLMdXi6zbbNluEUMDhWQAMpkkuM2LWFyfNP+/JZdesAM+t753L0faYctvh2myS3t Y+tWYjvWCRD+DFSMbssLk6Y0W8wMqG8e1NGTbPucetnpzOeKeDHZ6qcsDfaDuOa3eQvs/Q huP863fl36or1Nxi92PshK8QwNf2WvbIJDFpFC2NPdQKT/mV8+C4Bu9FZtHqYQ== 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 4ZSd5d6FfGzYyH; Wed, 02 Apr 2025 21:18: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 532LIjOw038105; Wed, 2 Apr 2025 21:18:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532LIjLI038102; Wed, 2 Apr 2025 21:18:45 GMT (envelope-from git) Date: Wed, 2 Apr 2025 21:18:45 GMT Message-Id: <202504022118.532LIjLI038102@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: 6441407b297e - main - vnode.h: Delete VA_NAMEDATTR_TYPE List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6441407b297eb4a449b8e66632dd3ba56a412ff1 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=6441407b297eb4a449b8e66632dd3ba56a412ff1 commit 6441407b297eb4a449b8e66632dd3ba56a412ff1 Author: Rick Macklem AuthorDate: 2025-04-02 21:17:18 +0000 Commit: Rick Macklem CommitDate: 2025-04-02 21:17:18 +0000 vnode.h: Delete VA_NAMEDATTR_TYPE Commit 2ec2ba7e232d added a new va_vaflags called VA_NAMEDATTR_TYPE. This is not needed, since a new flag will be committed by D49651 when it is committed. This patch reverts the definition of this flag value. Discussed with: kib --- sys/sys/vnode.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index e1b30977f4bd..8b4ac2031cf2 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -307,10 +307,9 @@ struct vattr { /* * Flags for va_vaflags. */ -#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ -#define VA_EXCLUSIVE 0x02 /* exclusive create request */ -#define VA_SYNC 0x04 /* O_SYNC truncation */ -#define VA_NAMEDATTR_TYPE 0x08 /* vnode is for named attribute */ +#define VA_UTIMES_NULL 0x01 /* utimes argument was NULL */ +#define VA_EXCLUSIVE 0x02 /* exclusive create request */ +#define VA_SYNC 0x04 /* O_SYNC truncation */ /* * Flags for ioflag. (high 16 bits used to ask for read-ahead and From nobody Wed Apr 2 21:54:40 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSdv41tbVz5rxBB; Wed, 02 Apr 2025 21:54: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 4ZSdv41GXLz3qLL; Wed, 02 Apr 2025 21:54:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743630880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7VZhvWFG4I9YU2LkxkdyfuxBZoAvE3yuIJRpgh3wSQ4=; b=HbdPhWDlU8YlOBA7MzLtzkSII7kYSMkuTtWR6K00OfAvNlEYm4IcX98MG8zv4GzFWpn1Sw qd06ubGFEwNkkfokev8uuwDohgMj/WRRq2K4vC1i+iN+HC6PyePV8cSK2iRNkcNAuUmkpD POxW57Xz2Vl3Bwp/tqF9z9p8iSdhUvZpxDW/Kby3FEa0/RiYPRe6t5uhzdg2g+0ZLqJw23 xfbdOMmZuW/NfBDKk4YWvhivKm2DwYB2YYNVXDumKl557P+VW9GurIyRQGUQT58MB1/5ht 62k1gbG//Dd0ZmeIvEZLiuNSwTMCIs3qmd3++a+ovR7zXR4dmP4NVTt9Gi2itA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743630880; a=rsa-sha256; cv=none; b=unxPGbDuFtu0lAFIIq5JeFdkF2Jau690NtqQyfTxgzlb+k1qms9mQYyO+jpNlYdSxXu96Z yBgbGFdwvOiMlEiqhUDKzaMAffxDTfXw3jWitftW3GUT+bEqLz8CpkUGVuY4i/VtHpR3Kh 0MUGxcBjnFMIlMpRxLTkjj/ZInZ4z8zxBvVCivgiGpd0H6EiKXUuDub3NM37HMPXbHTttV zIc9tBFkBD87Uh/8aSoXu4q0wYprLRT1H90G4tRGsgR/Xr/XU/f0pCnVfaku6qIPg1QHhU Uyj901tapvKGoycbmKEJ46V7cRDOPKSaXarShjSNrvV9ItuLqBKxru741/0/cQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743630880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7VZhvWFG4I9YU2LkxkdyfuxBZoAvE3yuIJRpgh3wSQ4=; b=kBuBSMoY2WRWG/s9PG/TulCD3DIFVoGFi6/4i6DJl+n26DZCi+y/Pk19J1x87ZDCaw7ZGm Ct04498NrMQ5R8DaHUqJOio3pt4R56Gl2HI0nhzjNsk02nkIwmMoMqp02725cDd8TLf5H9 5T+7nmoAsNdN9th3hCDO3Ysio+BTZjNlejTSQY9pYGwbffomiR1E1GNEduCzx8GsFfDqg6 7IPQpcYY+3beIT291RKG4XTDVgsoBJME2vmILRYJdltTtsGH1zEIuKCTHto1M0ld4U4G2r kouSKxOLQBthqnhLW7rvOTVdlMhpde38f6rgkiwc3yfFtKUkCWE/jwdPrK/v4Q== 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 4ZSdv40ssPzb44; Wed, 02 Apr 2025 21:54: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 532Lsepm010055; Wed, 2 Apr 2025 21:54:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 532LseGA010052; Wed, 2 Apr 2025 21:54:40 GMT (envelope-from git) Date: Wed, 2 Apr 2025 21:54:40 GMT Message-Id: <202504022154.532LseGA010052@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: d0b59c4d3a09 - main - kern_mkdirat(): unconditionally provide the out label List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d0b59c4d3a091a7a3cf589dead8dddafe00703f7 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=d0b59c4d3a091a7a3cf589dead8dddafe00703f7 commit d0b59c4d3a091a7a3cf589dead8dddafe00703f7 Author: Konstantin Belousov AuthorDate: 2025-04-02 21:53:14 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-02 21:54:23 +0000 kern_mkdirat(): unconditionally provide the out label Needed for the MAC-less kernel configs. Fixes: 2ec2ba7e232dd126df0617194fd07be78c7a2ab9 Sponsored by: The FreeBSD Foundation --- sys/kern/vfs_syscalls.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 7096c4b34d5b..1a3400a87eeb 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3930,9 +3930,7 @@ restart: goto out; #endif error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); -#ifdef MAC out: -#endif NDFREE_PNBUF(&nd); VOP_VPUT_PAIR(nd.ni_dvp, error == 0 ? &nd.ni_vp : NULL, true); vn_finished_write(mp); From nobody Thu Apr 3 00:52:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSjr3511Yz5s9RD; Thu, 03 Apr 2025 00:52:19 +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 4ZSjr24kTQz3L5P; Thu, 03 Apr 2025 00:52:18 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=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 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 5330q3F6047267; Thu, 3 Apr 2025 03:52:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 5330q3F6047267 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 5330q31E047266; Thu, 3 Apr 2025 03:52:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 3 Apr 2025 03:52:03 +0300 From: Konstantin Belousov To: Navdeep Parhar Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 011e3d0b8b90 - main - cxgbe(4): Perform Conventional Reset instead of FLR on the device. Message-ID: References: <202503160235.52G2ZIgC026408@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <202503160235.52G2ZIgC026408@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-Spamd-Result: default: False [-0.32 / 15.00]; NEURAL_SPAM_MEDIUM(1.00)[1.000]; NEURAL_HAM_LONG(-0.85)[-0.849]; NEURAL_HAM_SHORT(-0.47)[-0.465]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TO_DN_SOME(0.00)[]; MISSING_XM_UA(0.00)[]; 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)[]; RCPT_COUNT_THREE(0.00)[4]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all]; RCVD_TLS_LAST(0.00)[]; HAS_XAW(0.00)[] X-Rspamd-Queue-Id: 4ZSjr24kTQz3L5P X-Spamd-Bar: / On Sun, Mar 16, 2025 at 02:35:18AM +0000, Navdeep Parhar wrote: > The branch main has been updated by np: > > URL: https://cgit.FreeBSD.org/src/commit/?id=011e3d0b8b90a4330f14b2cb7da45ed7b805ed10 > > commit 011e3d0b8b90a4330f14b2cb7da45ed7b805ed10 > Author: Navdeep Parhar > AuthorDate: 2024-12-07 08:00:49 +0000 > Commit: Navdeep Parhar > CommitDate: 2025-03-16 01:16:42 +0000 > > cxgbe(4): Perform Conventional Reset instead of FLR on the device. > > The driver uses bus_reset_child on its parent to reset itself but that > performs an FLR whereas the hardware needs a Conventional Reset[1] for > full re-initialization. Add routines that perform conventional hot > reset and use them instead. The available reset mechanisms are: > * PCIe secondary bus reset (default) > * PCIe link bounce > > hw.cxgbe.reset_method can be used to override the default. The internal > PL_RST is also available but is for testing only. > > [1] 6.6.1 in PCI Express® Base Specification 5.0 version 1.0 > > MFC after: 1 month > Sponsored by: Chelsio Communications > --- > sys/dev/cxgbe/t4_main.c | 137 +++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 118 insertions(+), 19 deletions(-) > > diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c > index 6ee839151db0..20df6a97aa87 100644 > --- a/sys/dev/cxgbe/t4_main.c > +++ b/sys/dev/cxgbe/t4_main.c > @@ -633,6 +633,10 @@ static int t4_reset_on_fatal_err = 0; > SYSCTL_INT(_hw_cxgbe, OID_AUTO, reset_on_fatal_err, CTLFLAG_RWTUN, > &t4_reset_on_fatal_err, 0, "reset adapter on fatal errors"); > > +static int t4_reset_method = 1; > +SYSCTL_INT(_hw_cxgbe, OID_AUTO, reset_method, CTLFLAG_RWTUN, &t4_reset_method, > + 0, "reset method: 0 = PL_RST, 1 = PCIe secondary bus reset, 2 = PCIe link bounce"); > + > static int t4_clock_gate_on_suspend = 0; > SYSCTL_INT(_hw_cxgbe, OID_AUTO, clock_gate_on_suspend, CTLFLAG_RWTUN, > &t4_clock_gate_on_suspend, 0, "gate the clock on suspend"); > @@ -2535,40 +2539,135 @@ t4_reset_post(device_t dev, device_t child) > return (0); > } > > -static int > -reset_adapter_with_pci_bus_reset(struct adapter *sc) > -{ > - int rc; > - > - mtx_lock(&Giant); > - rc = BUS_RESET_CHILD(device_get_parent(sc->dev), sc->dev, 0); > - mtx_unlock(&Giant); > - return (rc); > -} > - > static int > reset_adapter_with_pl_rst(struct adapter *sc) > { > - suspend_adapter(sc); > - > /* This is a t4_write_reg without the hw_off_limits check. */ > MPASS(sc->error_flags & HW_OFF_LIMITS); > bus_space_write_4(sc->bt, sc->bh, A_PL_RST, > F_PIORSTMODE | F_PIORST | F_AUTOPCIEPAUSE); > pause("pl_rst", 1 * hz); /* Wait 1s for reset */ > + return (0); > +} > > - resume_adapter(sc); > +static int > +reset_adapter_with_pcie_sbr(struct adapter *sc) > +{ > + device_t pdev = device_get_parent(sc->dev); > + device_t gpdev = device_get_parent(pdev); > + device_t *children; > + int rc, i, lcap, lsta, nchildren; > + uint32_t v; > > - return (0); > + rc = pci_find_cap(gpdev, PCIY_EXPRESS, &v); > + if (rc != 0) { > + CH_ERR(sc, "%s: pci_find_cap(%s, pcie) failed: %d\n", __func__, > + device_get_nameunit(gpdev), rc); > + return (ENOTSUP); > + } > + lcap = v + PCIER_LINK_CAP; > + lsta = v + PCIER_LINK_STA; > + > + nchildren = 0; > + device_get_children(pdev, &children, &nchildren); > + for (i = 0; i < nchildren; i++) > + pci_save_state(children[i]); > + v = pci_read_config(gpdev, PCIR_BRIDGECTL_1, 2); > + pci_write_config(gpdev, PCIR_BRIDGECTL_1, v | PCIB_BCR_SECBUS_RESET, 2); > + pause("pcie_sbr1", hz / 10); /* 100ms */ > + pci_write_config(gpdev, PCIR_BRIDGECTL_1, v, 2); > + pause("pcie_sbr2", hz); /* Wait 1s before restore_state. */ > + v = pci_read_config(gpdev, lsta, 2); > + if (pci_read_config(gpdev, lcap, 2) & PCIEM_LINK_CAP_DL_ACTIVE) > + rc = v & PCIEM_LINK_STA_DL_ACTIVE ? 0 : ETIMEDOUT; > + else if (v & (PCIEM_LINK_STA_TRAINING_ERROR | PCIEM_LINK_STA_TRAINING)) > + rc = ETIMEDOUT; > + else > + rc = 0; > + if (rc != 0) > + CH_ERR(sc, "%s: PCIe link is down after reset, LINK_STA 0x%x\n", > + __func__, v); > + else { > + for (i = 0; i < nchildren; i++) > + pci_restore_state(children[i]); > + } > + free(children, M_TEMP); > + > + return (rc); > +} > + > +static int > +reset_adapter_with_pcie_link_bounce(struct adapter *sc) We already have pcie_link_reset() that is used for BUS_RESET_CHILD() on pcib. See e.g. mlx5_core/mlx5_fwdump.c::mlx5_fw_reset() for its use. We needed exactly link bounce for that. From nobody Thu Apr 3 01:11:40 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSkGN66cSz5sBx6; Thu, 03 Apr 2025 01:11: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 4ZSkGN3GNJz3PHR; Thu, 03 Apr 2025 01:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743642700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XL2tajn4w1AstARqBMX7a3iWKiRGMlI7BKJwoov/4dc=; b=mlYLNYd4uaZ8uc3/iP+JOUAEUTryWT89M4RNba9mgNfEnmeopXsY1MK8/67f0K/TX0kKSs J0k4XqMBSucttXMJsvFXKG6DuzBPpqgWzAb1KMCI/8L6EzDQ60EsgW2tZUhL6nFcyMEcGY KKFY1naBaIqYc+PVmLnPDjupWVsDdhGsW0wj48TLi0bevw2J0vjI18xH1tauA09srA+Kw5 I6EgY1Rh6HkibfZHkdO6JHV4EtE+XqT+pVGbS9qgB6X23PufbVxKBYJCQ7mMwTa4422nR8 Cz8/ZHQafpeeHmr4CGbP+hP0yTJ5D25joDy8pMY4K0YOMa0W2yyoVxcgvuznXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743642700; a=rsa-sha256; cv=none; b=gKxK1mtaEDzckLZb2+/hEFSS05IXQwrdHx9/OanFlKB0rYCAKwmSfsrivybDaUVdyFChBT r4AJ5UBr2bN9MNG9TiJ42FgRu+m6N2sp/F3yvkQM3Xt/tRFMEQsKW6w0y63GncmaNbdMsi QqFPbxEZbA4QeNVwbQfpNLvzp9XBuWkhMlR3KWOBrLw9lm37IRsVvqeNNTdYOyXrfwwO2r 6u3LJDTiya5+3YxJCLg58vjht1nCgTTZF5UdUT8hqtlOgNl4N/Uoz2slcaBg/kLNcGnO/w IKGr7ZVfvLv0/a2M8P90cloidLvd6+2rb+BJDoolDJxpDXW7LwZzgy8JJUjm1w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743642700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XL2tajn4w1AstARqBMX7a3iWKiRGMlI7BKJwoov/4dc=; b=BIQS2sYCcixfv5KGgJ1L0v8+kQKn+vl7mGMDY9ZaNEciZc+U/O3DrxbPJQDlLxM0Ge3HOR h+Aw9yFo+VgHda7Vjf1OOAXXOruxyq8h+V3kkMVO3KQmu6vXjbcCoWvkQ97Pu15F3P7BAD HQNICFzna0v9QY6XpfiAbVjkwuu3uxdTG/kD/ghBxtk0YQtIgkiP6eOEvRqlASZ2BlFnGO Cn0H505F9Hikqtdc6e37Xih4MjcT9U9te/NIw5tyioSpdAxenYAnFCDlLVMy951rTWO9yc /IPRsCzYdVW8Q3vuDbihbW4UjXqvJrWz9j/t5vPep4uxOEtuPeYTb0ZujL7eOw== 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 4ZSkGN1vWGzgmF; Thu, 03 Apr 2025 01:11: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 5331Besu082345; Thu, 3 Apr 2025 01:11:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5331BeQ0082342; Thu, 3 Apr 2025 01:11:40 GMT (envelope-from git) Date: Thu, 3 Apr 2025 01:11:40 GMT Message-Id: <202504030111.5331BeQ0082342@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: 0a91888870e2 - main - arm64: add a GPIO driver for Apple Silicon List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0a91888870e2227d3b3576aaa949764929550b94 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0a91888870e2227d3b3576aaa949764929550b94 commit 0a91888870e2227d3b3576aaa949764929550b94 Author: Kyle Evans AuthorDate: 2025-04-03 01:11:26 +0000 Commit: Kyle Evans CommitDate: 2025-04-03 01:11:33 +0000 arm64: add a GPIO driver for Apple Silicon This is a ported version of OpenBSD's work, modulo interrupt functionality. We won't need GPIO interrupts until we start to get closer to audio support, and the existing version is sufficient for, e.g., pcie. Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D49630 --- sys/arm64/apple/apple_pinctrl.c | 469 ++++++++++++++++++++++++++++++++++++++++ sys/conf/files.arm64 | 1 + 2 files changed, 470 insertions(+) diff --git a/sys/arm64/apple/apple_pinctrl.c b/sys/arm64/apple/apple_pinctrl.c new file mode 100644 index 000000000000..ec2dd5907024 --- /dev/null +++ b/sys/arm64/apple/apple_pinctrl.c @@ -0,0 +1,469 @@ +/* $OpenBSD: aplpinctrl.c,v 1.4 2022/04/06 18:59:26 naddy Exp $ */ +/* + * Copyright (c) 2021 Mark Kettenis + * Copyright (c) 2022 Kyle Evans + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "pic_if.h" +#include "gpio_if.h" + +#define APPLE_PIN(pinmux) ((pinmux) & 0xffff) +#define APPLE_FUNC(pinmux) ((pinmux) >> 16) + +#define GPIO_PIN(pin) ((pin) * 4) +#define GPIO_PIN_GROUP_MASK (7 << 16) +#define GPIO_PIN_INPUT_ENABLE (1 << 9) +#define GPIO_PIN_FUNC_MASK (3 << 5) +#define GPIO_PIN_FUNC_SHIFT 5 +#define GPIO_PIN_MODE_MASK (7 << 1) +#define GPIO_PIN_MODE_INPUT (0 << 1) +#define GPIO_PIN_MODE_OUTPUT (1 << 1) +#define GPIO_PIN_MODE_IRQ_HI (2 << 1) +#define GPIO_PIN_MODE_IRQ_LO (3 << 1) +#define GPIO_PIN_MODE_IRQ_UP (4 << 1) +#define GPIO_PIN_MODE_IRQ_DN (5 << 1) +#define GPIO_PIN_MODE_IRQ_ANY (6 << 1) +#define GPIO_PIN_MODE_IRQ_OFF (7 << 1) +#define GPIO_PIN_DATA (1 << 0) +#define GPIO_IRQ(grp, pin) (0x800 + (grp) * 64 + ((pin) >> 5) * 4) + +#define APPLE_PINCTRL_DEFAULT_CAPS \ + (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT) + +#define HREAD4(sc, reg) \ + bus_read_4((sc)->sc_res[APPLE_PINCTRL_MEMRES], reg) +#define HWRITE4(sc, reg, val) \ + bus_write_4((sc)->sc_res[APPLE_PINCTRL_MEMRES], reg, val) +#define HSET4(sc, reg, bits) \ + HWRITE4((sc), (reg), HREAD4((sc), (reg)) | (bits)) +#define HCLR4(sc, reg, bits) \ + HWRITE4((sc), (reg), HREAD4((sc), (reg)) & ~(bits)) + +struct apple_pinctrl_irqsrc { + struct intr_irqsrc isrc; + int irq; + int type; +}; + +enum { + APPLE_PINCTRL_MEMRES = 0, + APPLE_PINCTRL_IRQRES, + APPLE_PINCTRL_NRES, +}; + +struct apple_pinctrl_softc { + device_t sc_dev; + device_t sc_busdev; + struct mtx sc_mtx; + int sc_ngpios; + + void *sc_intrhand; + struct resource *sc_res[APPLE_PINCTRL_NRES]; + struct apple_pinctrl_irqsrc *sc_irqs; +}; + +#define APPLE_PINCTRL_LOCK(sc) mtx_lock_spin(&(sc)->sc_mtx) +#define APPLE_PINCTRL_UNLOCK(sc) mtx_unlock_spin(&(sc)->sc_mtx) +#define APPLE_PINCTRL_LOCK_ASSERT(sc) mtx_assert(&(sc)->sc_mtx, MA_OWNED) + +static struct ofw_compat_data compat_data[] = { + {"apple,pinctrl", 1}, + {NULL, 0}, +}; + +static struct resource_spec apple_pinctrl_res_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { -1, 0, 0 }, +}; + +static int apple_pinctrl_probe(device_t dev); +static int apple_pinctrl_attach(device_t dev); +static int apple_pinctrl_detach(device_t dev); + +static int apple_pinctrl_configure(device_t, phandle_t); +static phandle_t apple_pinctrl_get_node(device_t, device_t); + +static int +apple_pinctrl_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, "Apple Pinmux Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +apple_pinctrl_attach(device_t dev) +{ + pcell_t gpio_ranges[4]; + phandle_t node; + struct apple_pinctrl_softc *sc; + int error; + + sc = device_get_softc(dev); + sc->sc_dev = dev; + + node = ofw_bus_get_node(dev); + + if (bus_alloc_resources(dev, apple_pinctrl_res_spec, sc->sc_res) != 0) { + device_printf(dev, "cannot allocate device resources\n"); + return (ENXIO); + } + + mtx_init(&sc->sc_mtx, "aapl gpio", "gpio", MTX_SPIN); + + error = OF_getencprop(node, "gpio-ranges", gpio_ranges, + sizeof(gpio_ranges)); + if (error == -1) { + device_printf(dev, "failed to get gpio-ranges\n"); + goto error; + } + + sc->sc_ngpios = gpio_ranges[3]; + if (sc->sc_ngpios == 0) { + device_printf(dev, "no GPIOs\n"); + goto error; + } + + sc->sc_busdev = gpiobus_attach_bus(dev); + if (sc->sc_busdev == NULL) { + device_printf(dev, "failed to attach gpiobus\n"); + goto error; + } + + fdt_pinctrl_register(dev, "pinmux"); + fdt_pinctrl_configure_tree(dev); + + if (!OF_hasprop(node, "interrupt-controller")) + return (0); + + sc->sc_irqs = mallocarray(sc->sc_ngpios, + sizeof(*sc->sc_irqs), M_DEVBUF, M_ZERO | M_WAITOK); + intr_pic_register(dev, OF_xref_from_node(ofw_bus_get_node(dev))); + + return (0); +error: + mtx_destroy(&sc->sc_mtx); + bus_release_resources(dev, apple_pinctrl_res_spec, sc->sc_res); + return (ENXIO); +} + +static int +apple_pinctrl_detach(device_t dev) +{ + + return (EBUSY); +} + +static void +apple_pinctrl_pin_configure(struct apple_pinctrl_softc *sc, uint32_t pin, + uint32_t flags) +{ + uint32_t reg; + + APPLE_PINCTRL_LOCK_ASSERT(sc); + + MPASS(pin < sc->sc_ngpios); + + reg = HREAD4(sc, GPIO_PIN(pin)); + reg &= ~GPIO_PIN_FUNC_MASK; + reg &= ~GPIO_PIN_MODE_MASK; + + if ((flags & GPIO_PIN_PRESET_LOW) != 0) + reg &= ~GPIO_PIN_DATA; + else if ((flags & GPIO_PIN_PRESET_HIGH) != 0) + reg |= GPIO_PIN_DATA; + + if ((flags & GPIO_PIN_INPUT) != 0) + reg |= GPIO_PIN_MODE_INPUT; + else if ((flags & GPIO_PIN_OUTPUT) != 0) + reg |= GPIO_PIN_MODE_OUTPUT; + + HWRITE4(sc, GPIO_PIN(pin), reg); +} + +static device_t +apple_pinctrl_get_bus(device_t dev) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + return (sc->sc_busdev); +} + +static int +apple_pinctrl_pin_max(device_t dev, int *maxpin) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + *maxpin = sc->sc_ngpios - 1; + return (0); +} + +static int +apple_pinctrl_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + snprintf(name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', pin); + + return (0); +} + +static int +apple_pinctrl_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + *flags = 0; + + APPLE_PINCTRL_LOCK(sc); + + reg = HREAD4(sc, GPIO_PIN(pin)); + if ((reg & GPIO_PIN_MODE_INPUT) != 0) + *flags |= GPIO_PIN_INPUT; + else if ((reg & GPIO_PIN_MODE_OUTPUT) != 0) + *flags |= GPIO_PIN_OUTPUT; + + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + + *caps = APPLE_PINCTRL_DEFAULT_CAPS; + return (0); +} + +static int +apple_pinctrl_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + apple_pinctrl_pin_configure(sc, pin, flags); + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + reg = HREAD4(sc, GPIO_PIN(pin)); + *val = !!(reg & GPIO_PIN_DATA); + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static int +apple_pinctrl_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct apple_pinctrl_softc *sc; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + if (value) + HSET4(sc, GPIO_PIN(pin), GPIO_PIN_DATA); + else + HCLR4(sc, GPIO_PIN(pin), GPIO_PIN_DATA); + device_printf(sc->sc_dev, "set pin %d to %x\n", + pin, HREAD4(sc, GPIO_PIN(pin))); + APPLE_PINCTRL_UNLOCK(sc); + return (0); +} + + +static int +apple_pinctrl_pin_toggle(device_t dev, uint32_t pin) +{ + struct apple_pinctrl_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + if (pin >= sc->sc_ngpios) + return (EINVAL); + + APPLE_PINCTRL_LOCK(sc); + reg = HREAD4(sc, GPIO_PIN(pin)); + if ((reg & GPIO_PIN_DATA) == 0) + reg |= GPIO_PIN_DATA; + else + reg &= ~GPIO_PIN_DATA; + HWRITE4(sc, GPIO_PIN(pin), reg); + APPLE_PINCTRL_UNLOCK(sc); + return (0); +} + + +static int +apple_pinctrl_pin_config_32(device_t dev, uint32_t first_pin, uint32_t num_pins, + uint32_t *pin_flags) +{ + struct apple_pinctrl_softc *sc; + uint32_t pin; + + sc = device_get_softc(dev); + if (first_pin >= sc->sc_ngpios) + return (EINVAL); + + /* + * The configuration for a bank of pins is scattered among several + * registers; we cannot g'tee to simultaneously change the state of all + * the pins in the flags array. So just loop through the array + * configuring each pin for now. If there was a strong need, it might + * be possible to support some limited simultaneous config, such as + * adjacent groups of 8 pins that line up the same as the config regs. + */ + APPLE_PINCTRL_LOCK(sc); + for (pin = first_pin; pin < num_pins; ++pin) { + if (pin_flags[pin] & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) + apple_pinctrl_pin_configure(sc, pin, pin_flags[pin]); + } + APPLE_PINCTRL_UNLOCK(sc); + + return (0); +} + +static phandle_t +apple_pinctrl_get_node(device_t dev, device_t bus) +{ + + /* GPIO bus */ + return (ofw_bus_get_node(dev)); +} + +static int +apple_pinctrl_configure(device_t dev, phandle_t cfgxref) +{ + struct apple_pinctrl_softc *sc; + pcell_t *pinmux; + phandle_t node; + ssize_t len; + uint32_t reg; + uint16_t pin, func; + int i; + + sc = device_get_softc(dev); + node = OF_node_from_xref(cfgxref); + + len = OF_getencprop_alloc(node, "pinmux", (void **)&pinmux); + if (len <= 0) + return (-1); + + APPLE_PINCTRL_LOCK(sc); + for (i = 0; i < len / sizeof(pcell_t); i++) { + pin = APPLE_PIN(pinmux[i]); + func = APPLE_FUNC(pinmux[i]); + reg = HREAD4(sc, GPIO_PIN(pin)); + reg &= ~GPIO_PIN_FUNC_MASK; + reg |= (func << GPIO_PIN_FUNC_SHIFT) & GPIO_PIN_FUNC_MASK; + HWRITE4(sc, GPIO_PIN(pin), reg); + } + APPLE_PINCTRL_UNLOCK(sc); + + OF_prop_free(pinmux); + return 0; +} + +static device_method_t apple_pinctrl_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, apple_pinctrl_probe), + DEVMETHOD(device_attach, apple_pinctrl_attach), + DEVMETHOD(device_detach, apple_pinctrl_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, apple_pinctrl_get_bus), + DEVMETHOD(gpio_pin_max, apple_pinctrl_pin_max), + DEVMETHOD(gpio_pin_getname, apple_pinctrl_pin_getname), + DEVMETHOD(gpio_pin_getflags, apple_pinctrl_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, apple_pinctrl_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, apple_pinctrl_pin_setflags), + DEVMETHOD(gpio_pin_get, apple_pinctrl_pin_get), + DEVMETHOD(gpio_pin_set, apple_pinctrl_pin_set), + DEVMETHOD(gpio_pin_toggle, apple_pinctrl_pin_toggle), + DEVMETHOD(gpio_pin_config_32, apple_pinctrl_pin_config_32), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, apple_pinctrl_get_node), + + /* fdt_pinctrl interface */ + DEVMETHOD(fdt_pinctrl_configure, apple_pinctrl_configure), + + DEVMETHOD_END +}; + +static driver_t apple_pinctrl_driver = { + "gpio", + apple_pinctrl_methods, + sizeof(struct apple_pinctrl_softc), +}; + +EARLY_DRIVER_MODULE(apple_pinctrl, simplebus, apple_pinctrl_driver, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index 74387914043e..901da27e63f2 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -547,6 +547,7 @@ arm/annapurna/alpine/alpine_serdes.c optional al_serdes fdt \ # Apple arm64/apple/apple_aic.c optional soc_apple_t8103 fdt +arm64/apple/apple_pinctrl.c optional soc_apple_t8103 fdt arm64/apple/apple_wdog.c optional soc_apple_t8103 fdt arm64/apple/exynos_uart.c optional soc_apple_t8103 fdt From nobody Thu Apr 3 02:27:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSlxc75dhz5sJRn; Thu, 03 Apr 2025 02:27: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 4ZSlxc6Lbvz3cHH; Thu, 03 Apr 2025 02:27:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/a2hg2xNhOoWoRyodSjFZs4lTZRsGTCwRcgXHSKAUTw=; b=Er4SyTQFCbBpmfq8wVWBWYDvR7jj8PQVnQwrIipI4bHd0K0WO/eE4HjJBbS7rsWmeE4B9g pNAAmYSAnr5aYcFgfLHa92FdioRXGLZZ7CDViinpZLM/J3R0DXoQ08wpXUm9Zij1+cfsjv 5Uze9M51fOMBtAAUSv33Alsr9tAiQ1cLPYE+FpW0why+KscYUasBqYwZ583vRBgOGw4g/d 9U16ZAtMya+rbL7VtdyP+eL1hqgTY+3BXVnLGlLSM7XAfO9B/8b76g/oarLW+WDcVajDLt MJBU0mVX647k2Q6j+oZ5PRypgKLOAOfrlbGpMnrZxF6quKgybOfr1bPBh4r00g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743647236; a=rsa-sha256; cv=none; b=A2phqOuHcYXTD6l5ybWNTyRGixwMapWiktLx2cQ7xCF6PnUzrho31JVCXXnaNd/1W+cxLA VU3waHlfXYPJkLybkvuhj9bFavav9QespRDc5ZB0XrY3N3qZ43UfVKOm1Nk9eAqp34c777 ijBc7blxFrP5XKVbNCdRL5GqAkpPzSncNynRDFbnCn4gpjyxkOsXSFEjt6m6Bs148h5R14 60zATeLcFJbDWZGjTDQYGYuwL5NqbUpcpuhpohhtA/yBrxyRL4CQTCTE57zy5WpRRvrVkQ JAD3uR3hWaJrhhSwDM8sPPm6UKnOnAuyDJ+XtpeHpyOYAyoz+qNDxbcJ+xTl2A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/a2hg2xNhOoWoRyodSjFZs4lTZRsGTCwRcgXHSKAUTw=; b=f3U8ZKL5dK8iJH2xlRkuPvx0MbiSHGn3OPiWAH45lvvjjYKNz0ro15qrgglwCPoBJy2UY+ NCdRSL8MczCBI0rhxs1n5oR3CQVcjpTVvHU/D30wQct6tEYKP3jr4senkdP28xMQsua13x eW8DXCi3maUC11Uw6+1xiR3vDGaBrOY8CNK8xK3hZmBWvLCipp5cBH5CHLgw7m99xbwRwq kEpOZvAT3c5C4mfgQ/5zHcqo+z7s1CAx6Qclnrb2+aXtb/iYU7MOW/Ar/MOFoN6irD4gNw ozbMAtpJJfXk66JSVk5JdSv3hh1Sw6RqS6lwIH6ErpQLm6ntXMjKbZVS+RzfFw== 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 4ZSlxc5CW2zjXZ; Thu, 03 Apr 2025 02:27: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 5332RGsi014886; Thu, 3 Apr 2025 02:27:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5332RGCb014883; Thu, 3 Apr 2025 02:27:16 GMT (envelope-from git) Date: Thu, 3 Apr 2025 02:27:16 GMT Message-Id: <202504030227.5332RGCb014883@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: b847e406e1df - main - Revert "mccomphy: add support for YT8531" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b847e406e1df46a732dab71d324e9dbfa1969447 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=b847e406e1df46a732dab71d324e9dbfa1969447 commit b847e406e1df46a732dab71d324e9dbfa1969447 Author: Mitchell Horne AuthorDate: 2025-04-03 02:22:35 +0000 Commit: Mitchell Horne CommitDate: 2025-04-03 02:26:58 +0000 Revert "mccomphy: add support for YT8531" The new code makes use of FDT/OFW types and interfaces, and obviously fails to build on amd64. Revert to fix. Pointy-hat-to: mhorne This reverts commit e69623451ea62d2c3c76e0d0e775aa3f7317f2eb. --- sys/dev/mii/mcommphy.c | 258 +++++-------------------------------------------- sys/dev/mii/miidevs | 2 - 2 files changed, 25 insertions(+), 235 deletions(-) diff --git a/sys/dev/mii/mcommphy.c b/sys/dev/mii/mcommphy.c index edbed0c66279..a8a16c00bade 100644 --- a/sys/dev/mii/mcommphy.c +++ b/sys/dev/mii/mcommphy.c @@ -1,7 +1,6 @@ /* * Copyright (c) 2022 Jared McNeill * Copyright (c) 2022 Soren Schmidt - * Copyright (c) 2024 Jari Sihvola * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +26,7 @@ */ /* - * Motorcomm YT8511C/YT8511H/YT8531 - * Integrated 10/100/1000 Gigabit Ethernet phy + * Motorcomm YT8511C / YT8511H Integrated 10/100/1000 Gigabit Ethernet phy */ #include @@ -44,16 +42,12 @@ #include #include -#include -#include "miidevs.h" #include "miibus_if.h" -#define MCOMMPHY_YT8511_OUI 0x000000 -#define MCOMMPHY_YT8511_MODEL 0x10 -#define MCOMMPHY_YT8511_REV 0x0a - -#define MCOMMPHY_YT8531_MODEL 0x11 +#define MCOMMPHY_OUI 0x000000 +#define MCOMMPHY_MODEL 0x10 +#define MCOMMPHY_REV 0x0a #define EXT_REG_ADDR 0x1e #define EXT_REG_DATA 0x1f @@ -67,49 +61,9 @@ #define PHY_SLEEP_CONTROL1_REG 0x27 #define PLLON_IN_SLP 0x4000 -/* Registers and values for YT8531 */ -#define YT8531_CHIP_CONFIG 0xa001 -#define RXC_DLY_EN (1 << 8) - -#define YT8531_PAD_DRSTR_CFG 0xa010 -#define PAD_RXC_MASK 0x7 -#define PAD_RXC_SHIFT 13 -#define JH7110_RGMII_RXC_STRENGTH 6 - -#define YT8531_RGMII_CONFIG1 0xa003 -#define RX_DELAY_SEL_SHIFT 10 -#define RX_DELAY_SEL_MASK 0xf -#define RXC_DLY_THRESH 2250 -#define RXC_DLY_ADDON 1900 -#define TX_DELAY_SEL_FE_MASK 0xf -#define TX_DELAY_SEL_FE_SHIFT 4 -#define TX_DELAY_SEL_MASK 0xf -#define TX_DELAY_SEL_SHIFT 0 -#define TX_CLK_SEL (1 << 14) -#define INTERNAL_DLY_DIV 150 - -#define YT8531_SYNCE_CFG 0xa012 -#define EN_SYNC_E (1 << 6) - #define LOWEST_SET_BIT(mask) ((((mask) - 1) & (mask)) ^ (mask)) #define SHIFTIN(x, mask) ((x) * LOWEST_SET_BIT(mask)) -static const struct mii_phydesc mcommphys[] = { - MII_PHY_DESC(MOTORCOMM, YT8511), - MII_PHY_DESC(MOTORCOMM2, YT8531), - MII_PHY_END -}; - -struct mcommphy_softc { - mii_softc_t mii_sc; - device_t dev; - bool tx_10_inv; - bool tx_100_inv; - bool tx_1000_inv; -}; - -static void mcommphy_yt8531_speed_adjustment(struct mii_softc *sc); - static int mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) { @@ -130,16 +84,6 @@ mcommphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) /* Update the media status. */ PHY_STATUS(sc); - /* - * For the needs of JH7110 which has two Ethernet devices with - * different TX inverted configuration depending on speed used - */ - if (sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL && - (sc->mii_media_active != mii->mii_media_active || - sc->mii_media_status != mii->mii_media_status)) { - mcommphy_yt8531_speed_adjustment(sc); - } - /* Callback if something changed. */ mii_phy_update(sc, cmd); @@ -161,22 +105,26 @@ mcommphy_probe(device_t dev) * The YT8511C reports an OUI of 0. Best we can do here is to match * exactly the contents of the PHY identification registers. */ - if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_YT8511_OUI && - MII_MODEL(ma->mii_id2) == MCOMMPHY_YT8511_MODEL && - MII_REV(ma->mii_id2) == MCOMMPHY_YT8511_REV) { + if (MII_OUI(ma->mii_id1, ma->mii_id2) == MCOMMPHY_OUI && + MII_MODEL(ma->mii_id2) == MCOMMPHY_MODEL && + MII_REV(ma->mii_id2) == MCOMMPHY_REV) { device_set_desc(dev, "Motorcomm YT8511 media interface"); - return (BUS_PROBE_DEFAULT); + return BUS_PROBE_DEFAULT; } - - /* YT8531 follows a conventional procedure */ - return (mii_phy_dev_probe(dev, mcommphys, BUS_PROBE_DEFAULT)); + return (ENXIO); } -static void -mcommphy_yt8511_setup(struct mii_softc *sc) +static int +mcommphy_attach(device_t dev) { + struct mii_softc *sc = device_get_softc(dev); uint16_t oldaddr, data; + mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); + + PHY_RESET(sc); + + /* begin chip stuff */ oldaddr = PHY_READ(sc, EXT_REG_ADDR); PHY_WRITE(sc, EXT_REG_ADDR, PHY_CLOCK_GATING_REG); @@ -202,177 +150,21 @@ mcommphy_yt8511_setup(struct mii_softc *sc) PHY_WRITE(sc, EXT_REG_DATA, data); PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); -} - -static void -mcommphy_yt8531_speed_adjustment(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - struct mii_data *mii = sc->mii_pdata; - bool tx_clk_inv = false; - uint16_t reg, oldaddr; - - switch (IFM_SUBTYPE(mii->mii_media_active)) { - case IFM_1000_T: - tx_clk_inv = mcomm_sc->tx_1000_inv; - break; - case IFM_100_T: - tx_clk_inv = mcomm_sc->tx_100_inv; - break; - case IFM_10_T: - tx_clk_inv = mcomm_sc->tx_10_inv; - break; - } - - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); - reg = PHY_READ(sc, EXT_REG_DATA); - if (tx_clk_inv) - reg |= TX_CLK_SEL; - else - reg &= ~TX_CLK_SEL; - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - return; -} - -static int -mcommphy_yt8531_setup_delay(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); - pcell_t val; - uint16_t reg, oldaddr; - int rx_delay, tx_delay = 0; - bool rxc_dly_en_off = false; - - if (OF_getencprop(cfg->phynode, "rx-internal-delay-ps", &val, - sizeof(val)) > 0) { - if (val <= RXC_DLY_THRESH && val % INTERNAL_DLY_DIV == 0) { - rx_delay = val / INTERNAL_DLY_DIV; - rxc_dly_en_off = true; - } else { - rx_delay = (val - RXC_DLY_ADDON) / INTERNAL_DLY_DIV; - if ((val - RXC_DLY_ADDON) % INTERNAL_DLY_DIV != 0) - return (ENXIO); - } - } - - if (OF_getencprop(cfg->phynode, "tx-internal-delay-ps", &val, - sizeof(val)) > 0) { - tx_delay = val / INTERNAL_DLY_DIV; - if (val % INTERNAL_DLY_DIV != 0) - return (ENXIO); - } - - mii_fdt_free_config(cfg); + /* end chip stuff */ - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - /* Modifying Chip Config register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_CHIP_CONFIG); - reg = PHY_READ(sc, EXT_REG_DATA); - if (rxc_dly_en_off) - reg &= ~(RXC_DLY_EN); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - /* Modifying RGMII Config1 register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_RGMII_CONFIG1); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(RX_DELAY_SEL_MASK << RX_DELAY_SEL_SHIFT); - reg |= rx_delay << RX_DELAY_SEL_SHIFT; - reg &= ~(TX_DELAY_SEL_MASK << TX_DELAY_SEL_SHIFT); - reg |= tx_delay << TX_DELAY_SEL_SHIFT; - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - return (0); -} - -static int -mcommphy_yt8531_setup(struct mii_softc *sc) -{ - struct mcommphy_softc *mcomm_sc = (struct mcommphy_softc *)sc; - mii_fdt_phy_config_t *cfg = mii_fdt_get_config(mcomm_sc->dev); - uint16_t reg, oldaddr; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-10-inverted")) - mcomm_sc->tx_10_inv = true; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-100-inverted")) - mcomm_sc->tx_100_inv = true; - - if (OF_hasprop(cfg->phynode, "motorcomm,tx-clk-1000-inverted")) - mcomm_sc->tx_1000_inv = true; - - mii_fdt_free_config(cfg); - - oldaddr = PHY_READ(sc, EXT_REG_ADDR); - - /* Modifying Pad Drive Strength register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_PAD_DRSTR_CFG); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(PAD_RXC_MASK << PAD_RXC_SHIFT); - reg |= (JH7110_RGMII_RXC_STRENGTH << PAD_RXC_SHIFT); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - /* Modifying SyncE Config register */ - PHY_WRITE(sc, EXT_REG_ADDR, YT8531_SYNCE_CFG); - reg = PHY_READ(sc, EXT_REG_DATA); - reg &= ~(EN_SYNC_E); - PHY_WRITE(sc, EXT_REG_DATA, reg); - - PHY_WRITE(sc, EXT_REG_ADDR, oldaddr); - - if (mcommphy_yt8531_setup_delay(sc) != 0) - return (ENXIO); - - return (0); -} - -static int -mcommphy_attach(device_t dev) -{ - struct mcommphy_softc *mcomm_sc = device_get_softc(dev); - mii_softc_t *mii_sc = &mcomm_sc->mii_sc; - int ret = 0; - - mcomm_sc->dev = dev; - - mii_phy_dev_attach(dev, MIIF_NOMANPAUSE, &mcommphy_funcs, 0); - - PHY_RESET(mii_sc); - - if (mii_sc->mii_mpd_model == MCOMMPHY_YT8511_MODEL) - mcommphy_yt8511_setup(mii_sc); - else if (mii_sc->mii_mpd_model == MCOMMPHY_YT8531_MODEL) - ret = mcommphy_yt8531_setup(mii_sc); - else { - device_printf(dev, "no PHY model detected\n"); - return (ENXIO); - } - if (ret) { - device_printf(dev, "PHY setup failed, error: %d\n", ret); - return (ret); - } - - mii_sc->mii_capabilities = PHY_READ(mii_sc, MII_BMSR) & - mii_sc->mii_capmask; - if (mii_sc->mii_capabilities & BMSR_EXTSTAT) - mii_sc->mii_extcapabilities = PHY_READ(mii_sc, MII_EXTSR); + sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & sc->mii_capmask; + if (sc->mii_capabilities & BMSR_EXTSTAT) + sc->mii_extcapabilities = PHY_READ(sc, MII_EXTSR); device_printf(dev, " "); - mii_phy_add_media(mii_sc); + mii_phy_add_media(sc); printf("\n"); - MIIBUS_MEDIAINIT(mii_sc->mii_dev); + MIIBUS_MEDIAINIT(sc->mii_dev); return (0); } + static device_method_t mcommphy_methods[] = { /* device interface */ DEVMETHOD(device_probe, mcommphy_probe), @@ -385,7 +177,7 @@ static device_method_t mcommphy_methods[] = { static driver_t mcommphy_driver = { "mcommphy", mcommphy_methods, - sizeof(struct mcommphy_softc) + sizeof(struct mii_softc) }; DRIVER_MODULE(mcommphy, miibus, mcommphy_driver, 0, 0); diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index 5c10fd0f0224..c8eba403c22d 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -63,7 +63,6 @@ oui LEVEL1 0x00207b Level 1 oui MARVELL 0x005043 Marvell Semiconductor oui MICREL 0x0010a1 Micrel oui MOTORCOMM 0x000000 Motorcomm -oui MOTORCOMM2 0xc82b5e Motorcomm oui MYSON 0x00c0b4 Myson Technology oui NATSEMI 0x080017 National Semiconductor oui PMCSIERRA 0x00e004 PMC-Sierra @@ -296,7 +295,6 @@ model MICREL KSZ9031 0x0022 Micrel KSZ9031 10/100/1000 PHY /* Motorcomm PHYs */ model MOTORCOMM YT8511 0x010a Motorcomm YT8511 10/100/1000 PHY -model MOTORCOMM2 YT8531 0x0011 Motorcomm YT8531 10/100/1000 PHY /* Myson Technology PHYs */ model xxMYSON MTD972 0x0000 MTD972 10/100 media interface From nobody Thu Apr 3 02:29:00 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSlzf0Hz3z5sJJw; Thu, 03 Apr 2025 02:29:02 +0000 (UTC) (envelope-from mhorne@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 4ZSlzd60s0z3cXR; Thu, 03 Apr 2025 02:29:01 +0000 (UTC) (envelope-from mhorne@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647341; 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=ta07fTwRss2dSoN/5YI56cfTRHhgWdRlel3dhhLyXVU=; b=UW9ij9R/Tw+dhNoymeK0nMBi58EhUgwt5tZVPY+kB0KxugaHiicEZLTYuIvsz6Exx5oEjB 0CdxlF0iLNSmq4FtjQQxZNtgnklls71vhAto50uLLyu/7YiHDdM6ZrkhhqxYIhwyFDh9Ol EK3eSoWe5gaFex1g3K1nKtTU0+ocQeK7gwXIwqM2oqN/MwWBZ2dx4rCkcm82M8Hy4xNN4B tmoPBrJ0GW8vHw8t2kc+PRCNDnnWYqOatLcpUTq/++HBhbvvedyaRN4rSFeWycO03ipS1T VUd++5Ja0OA9PF41BYgmASyhyP3k0TuYLr1x1Nh9CXb3FTsvEROy3L5cTMDgnw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743647341; a=rsa-sha256; cv=none; b=vgF/bMXqzMbVNvq3HLo/GepHbn8vEyf2W10MScq4OKsSiEQzw4hYMhpVUYcMHfgCVmxa7I yhxlYdPEIRILci3A5WwO27exnyl3RQ77Y0wH/BMjjr2pNr/B9xwgVPRh7IHEm/xwnR00y0 rG4FezZjAldajuK7N2CCYyseVnVp9c3Oi+Y/nOT7QpE572AYKRxWQtXcHazjJkGk/3xlN/ ZHFmHiUdaTLNaOBIbu7wD8Gt451o3b5unCYlo68sBeIFAtp+J9gcVUB6ETVJUSlFelz8jG 1Ee1MkpG1fBJUl7staSNvfbGMytCwZAgikRqD0JuzPQn5mVeklMYSyrCNTZNuA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743647341; 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=ta07fTwRss2dSoN/5YI56cfTRHhgWdRlel3dhhLyXVU=; b=wdhwneQMjGisf/+cSgWQMcXqi6J9NUcJyhhvFLBGGMBnPTUK/g/GlxTKucu/oJvoyJIK1n CKd4PgGVOv1+/ndd6aOyHzjmQtCYqKLcFvlNTKstKKMsrAVN875VUiSBN73x0IPeophCDN 68VQmZv5HEo7kVxYBiP1SIL8M5GUNz9puMdOYArfjI9g5JNb/C7qfZUjG4U0r2VyLrLImi kRWiFiLFc8c0Ec88CI/A2YRiM5se2CR6f4wplk8QNPoEi+f20fU3lVACcBTE3fCdt2U/ij W6JnugwYxpJ5reCVcRCBRTQXpte79zLhpqXk3I6sF3ecXPVnGESgQCIOvbBdvA== Received: from [192.168.1.151] (hlfxns018gw-134-41-170-224.dhcp-dynamic.fibreop.ns.bellaliant.net [134.41.170.224]) (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: mhorne) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ZSlzd37Gxz2kZ; Thu, 03 Apr 2025 02:29:01 +0000 (UTC) (envelope-from mhorne@freebsd.org) Message-ID: <0bf8c000-7c4d-4509-814b-e28bdac7dbee@freebsd.org> Date: Wed, 2 Apr 2025 23:29:00 -0300 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: e69623451ea6 - main - mccomphy: add support for YT8531 To: Olivier Certner Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202504021657.532Gv93w049180@gitrepo.freebsd.org> <2992932.slGk94SIus@ravel> Content-Language: en-CA From: Mitchell Horne In-Reply-To: <2992932.slGk94SIus@ravel> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 4/2/25 16:28, Olivier Certner wrote: > Hi Mitchell, > > This commit is likely the cause of the current build failure on amd64, see: > https://ci.freebsd.org/job/FreeBSD-main-amd64-build/31518/ > > Thanks and regards. > Yes, apparently I did not do my due diligence with this one. Reverted in b847e406e1df. Thanks and apologies! Mitchell From nobody Thu Apr 3 04:39:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSptZ3vNdz5sSJy; Thu, 03 Apr 2025 04:39: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 4ZSptZ36f5z3xyH; Thu, 03 Apr 2025 04:39:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743655190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Mqlr8Vxi0qWpMd9mWOOEYYmC6zfvRdMDMGVFYzUZdqU=; b=Z2R+oRuP2Mx1BX2mFcI/MN2WreDYt6WaZUxPzEP9+FifBTt7KQyR+y+13YxmQcUzxLc08c 4WPjAFE7ock32w1i9tTrvY2MeHUFWmQIrMz3GI0gr35wijMGtl7rJB9daLO4/vzqnYxzdU pnM3zEvjuGSpU6OFHmetNi+VnLRoECAWi5Spf4ViAUjIvTUDiJ5S4bcwHVxUNOZUXu7AnZ BAJyfprIavetRAyTeeGB6BwxJqehnNzoFSLYhl6xmIlu3OVfs6ZtG907fhIVzDw9Peqdix KAm6yKvNI/9vl5fAb81A2nQVmx7wOw/ueCk9V6C+xak2Mrh4sCXBqFytaECseQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743655190; a=rsa-sha256; cv=none; b=Um39vbkGHvUBCBtz0whDgdNccJLzYMLE85Pv5OOTD9SSli/DLhB/ZYOh+eHFLwYTO3yneI g6TeXsdPjVN7TP0pNkgWFrS2mOuoyBdGst0XyLpSph99KSJkkyHDlqeuBoUV9xp9tCdugr 4EHxtM70FeleMWg+bDa9PeU7V5xPTh/PldA3Y/ROfptJwByrqIv3omqGZB7IHT319WqAqH lcJ7KBUG4uHKQePDRXLHfxM+hyP85kYMw50oc0sGFQYdioQ6egL3qJnAMDUkaOoCefY7Ma m3sT1eu/gDc9pWU2uc6Mg1tjSw9Fz2j7omkLoKcULY9Lf9hJgAeeV6g+sJlklQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743655190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Mqlr8Vxi0qWpMd9mWOOEYYmC6zfvRdMDMGVFYzUZdqU=; b=bshPdFfiTxdxjfTcSEvmAzG2CZHYPFkBY7yidKggql8ecblpAvCkBCWtDzPmFHKmIAKKYf EvmA8E2duaoUejBSaEh5dgYqjXnd31aJmy+iyRzTZ1YxVqC2flMivOvoObVYEGPIBMXJmB vvNsqRBMMavN53tGfYtTTyJoI72Aj0mH3y2exFLgVd7l3AlJOuEGI/YJ9VPvmiCkqtF25O X5QY4uuNq9ZYCY242E/nsCKBeD0ljU07mZKg/+uqvlKEW1Vlt26nOOEAK4N8OPtBnDnGmU jXjnYmkb/7TKyht3593nEPhmmeVM8Z8TFkuajqSjDVZO+KXazT3/DIwFFrO1Zg== 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 4ZSptZ2Qs5zmj6; Thu, 03 Apr 2025 04:39: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 5334doJH060455; Thu, 3 Apr 2025 04:39:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5334doFV060452; Thu, 3 Apr 2025 04:39:50 GMT (envelope-from git) Date: Thu, 3 Apr 2025 04:39:50 GMT Message-Id: <202504030439.5334doFV060452@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jose Luis Duran Subject: git: bebe2fea1946 - stable/14 - openssh: Request the OpenSSL 1.1 API List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bebe2fea194624ce2116eadb48e5b99f29f48a14 Auto-Submitted: auto-generated The branch stable/14 has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=bebe2fea194624ce2116eadb48e5b99f29f48a14 commit bebe2fea194624ce2116eadb48e5b99f29f48a14 Author: Jose Luis Duran AuthorDate: 2025-03-27 00:19:14 +0000 Commit: Jose Luis Duran CommitDate: 2025-04-03 04:33:21 +0000 openssh: Request the OpenSSL 1.1 API Upstream OpenSSH commit f51423bda ("request 1.1x API compatibility for OpenSSL >=3.x") requests OPENSSL_API_COMPAT version 0x10100000L (OpenSSL 1.1.0), in order to avoid warnings about deprecated functions. Do the same here, to avoid getting those warnings. Reviewed by: emaste Approved by: emaste (mentor) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D49517 (cherry picked from commit d4f438357e90ee1cb12819d092913fdbce813626) --- secure/ssh.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/secure/ssh.mk b/secure/ssh.mk index 8411fb11fb16..f522e1a927fc 100644 --- a/secure/ssh.mk +++ b/secure/ssh.mk @@ -24,3 +24,5 @@ CFLAGS+= -DLIBWRAP=1 # Built-in security key support CFLAGS+= -include sk_config.h .endif + +CFLAGS+= -DOPENSSL_API_COMPAT=0x10100000L From nobody Thu Apr 3 07:07:25 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSt8t0Q2Xz5sdbt; Thu, 03 Apr 2025 07:07: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 4ZSt8s6vsmz3K9S; Thu, 03 Apr 2025 07:07:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743664046; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PIFPwYQHt4P1QYtT59TAeM9SQ/FuoNCJsOExUEj+1zc=; b=f7cWHR7IkDV0Bo+Os2HpLFqwqvCv2aXrfj/B53OfaBLhnZUxkyIHmbkR4m7y4BH7LtlN/S fPKZsw4ZSEoqq2uH2cgMgal4erE2c1IxY4LbPXb8VGVdeMpVnankKgMajHR+L9J+TUFqLp Lktdb9xqhiH4d8kaT9MkxYEcTX2QC1hWrQiurHQjZDQ7umgIJpMMJgN9vmt6xCUYJP02fP 0aemnQnraMlhpw0+gtfLx47gW98Qg3jsmBCv/k4dsBObaJ8YLsCraNsW4xkLDXQ8UPoyZA IKiAUzwoJ6dnpLmtUgkUiTKLb5ZMGaZkk3cag2TinDN+XxGVjSObsKMYYuIrmA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743664046; a=rsa-sha256; cv=none; b=PqqbkYshPUEY8QeP+wWfTZCcm/hYGTcQGssd/je4nmIedYOJIMkWLytWLk6NQwjkTzMjv1 LYs6IrZfMv7cMj4rbAw/1+u/LU6KtRJlAJNrm3fp+V2NJge6HkPmbf0C8v6Cg3rM7ZYDht 3BJ/iyVbekUEIrBii/PDCWjsXoHQTfu6DZvafmkTYjv/CnPSn5wcXOcBFyGP7MjBxIPGbx F869Qz8hx/vaU8qEYOFFWl3f94KCIQYEa3JhVSDKDZmxMFHNmZXQGPBT7bZz9gmGzBVINg S0a5u82KcflWuhGVhFXW9n5bczHQ5rlyh0pOrtO5Uu74t3JTKEDZNym/oY10EQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743664046; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PIFPwYQHt4P1QYtT59TAeM9SQ/FuoNCJsOExUEj+1zc=; b=OgOC5mCXdJeBApxsMlkdGlbFOYHSD2sFBttF+IeNOPTEXE5gQNw484OqS/cR3RRWpGySXh y6bxNuGI+kBrFR1CxeLIJKwLIA8zn+G5HIp1+X8KmbKTZUB0huFyhTlIZlNba1S6BjCMqH BB3EQt1fDhgyOXgR4fPsRK/tPj6wVJSaHBW0CFGiP7ScJA0wCPPgNwfJodEX3NjY4Vt4sd /NLd49cVKosrHuSrTvQSbTvAYBB9KDcEuS/E+Sn2c80LQi3Atn8cQwWv6Chl/lFwczcmxP oGJ/HvNXbjLztpDd86142Eb6i0e2LZJ2vTu1VVbXxCM6RrmngrmlT8TSOQTXBg== 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 4ZSt8s6Qmwzrq6; Thu, 03 Apr 2025 07:07: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 53377Ph9040793; Thu, 3 Apr 2025 07:07:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53377PCW040790; Thu, 3 Apr 2025 07:07:25 GMT (envelope-from git) Date: Thu, 3 Apr 2025 07:07:25 GMT Message-Id: <202504030707.53377PCW040790@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Tom Jones Subject: git: 74a6f2a76b32 - main - iwx: Shorten log code field List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: thj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 74a6f2a76b32e01d05c4ad71897bd3a6831e703e Auto-Submitted: auto-generated The branch main has been updated by thj: URL: https://cgit.FreeBSD.org/src/commit/?id=74a6f2a76b32e01d05c4ad71897bd3a6831e703e commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e Author: Tom Jones AuthorDate: 2025-04-03 07:06:40 +0000 Commit: Tom Jones CommitDate: 2025-04-03 07:06:40 +0000 iwx: Shorten log code field The widest value used with code is 32 bits, other values are smaller. Reduce this down. Update printfs. This fixes the build on i386. Reviewed by: bapt, emast, kevans, adrian Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49634 --- sys/dev/iwx/if_iwx_debug.c | 10 +++++----- sys/dev/iwx/if_iwx_debug.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/dev/iwx/if_iwx_debug.c b/sys/dev/iwx/if_iwx_debug.c index 7ce1ea8abe43..6a2bf32ad738 100644 --- a/sys/dev/iwx/if_iwx_debug.c +++ b/sys/dev/iwx/if_iwx_debug.c @@ -126,7 +126,7 @@ iwx_dump_cmd(uint32_t id, void *data, uint16_t len, const char *str, int type) } void -iwx_bbl_add_entry(uint64_t code, int type, int ticks) +iwx_bbl_add_entry(uint32_t code, int type, int ticks) { /* * Compress together repeated notifications, but increment the sequence @@ -162,22 +162,22 @@ iwx_bbl_print_entry(struct iwx_bbl_entry *e) switch(e->type) { case IWX_BBL_PKT_TX: printf("pkt "); - printf("seq %08d\t pkt len %ld", + printf("seq %08d\t pkt len %u", e->seq, e->code); break; printf("pkt dup "); - printf("seq %08d\t dup count %ld", + printf("seq %08d\t dup count %u", e->seq, e->code); break; case IWX_BBL_CMD_TX: printf("tx -> "); - printf("seq %08d\tcode 0x%08lx (%s:%s)", + printf("seq %08d\tcode 0x%08x (%s:%s)", e->seq, e->code, get_label(command_group, group), get_label(get_table(group), opcode)); break; case IWX_BBL_CMD_RX: printf("rx "); - printf("seq %08d\tcode 0x%08lx (%s:%s)", + printf("seq %08d\tcode 0x%08x (%s:%s)", e->seq, e->code, get_label(command_group, group), get_label(get_table(group), opcode)); break; diff --git a/sys/dev/iwx/if_iwx_debug.h b/sys/dev/iwx/if_iwx_debug.h index 7875338ef6b6..80fd3ffa6eed 100644 --- a/sys/dev/iwx/if_iwx_debug.h +++ b/sys/dev/iwx/if_iwx_debug.h @@ -56,7 +56,7 @@ enum { void print_opcode(const char *, int, int, uint32_t); void print_ratenflags(const char *, int , uint32_t , int ); void iwx_dump_cmd(uint32_t , void *, uint16_t, const char *, int); -void iwx_bbl_add_entry(uint64_t, int, int); +void iwx_bbl_add_entry(uint32_t, int, int); void iwx_bbl_print_log(void); #define IWX_BBL_NONE 0x00 @@ -254,7 +254,7 @@ static struct opcode_label phyops_opcodes[] = { struct iwx_bbl_entry { uint8_t type; - uint64_t code; + uint32_t code; uint32_t seq; uint32_t ticks; uint32_t count; From nobody Thu Apr 3 09:21:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSx7j3yw7z5snZt; Thu, 03 Apr 2025 09:21: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 4ZSx7j2v7dz3Z9Q; Thu, 03 Apr 2025 09:21:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743672097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f3W80gWUNnGx5WGJf5W6ryXsHFej/erAtlclAsuVoKc=; b=nQjfeMcM0hgiubWtOwrKSCijd7GIE3lRRSoQT23EbnEqoAtM9YmUGDnxBj/VDvwHFPl1RB 0njd8ZqBBYITegTGFX5EZByspk/AKRLC40GXZz9Sqhai5zj4TNKpCxMf0o97qY8ATRUxVr CRjGBfP3sONwqJHH6OYCp0Yu63MjZnC59w3IzLKyC12NOvqfv6KnP2l47/DyrE0RK6VLXx 7cejvW2092+nK5Z2JSC7TalsloiQofV7B8Bvr96v55W4iJCgO8e2aG7tbqb99AoKIlkfu+ SCcFpFUYDRnmkzV/drhLXvqWri1q8sucQ5Ng7x12yfnpIBMSC437P5QAHhQeaQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743672097; a=rsa-sha256; cv=none; b=Jvig0NY7GRCfo2KoEapGCv6uKMcW3ZDc8I5ER5Q/JeDp743DP2TIQtLOk5amvuNMpsd/JL JfF48EoSXqB9r/8Cqk6RxcL854ki0HvQAwJy9GnKJnPUlI6QKKgMYwZk9do235Q8sPaEJF 9zYXqfFmRF4l0IJWIwjT5BYZmoiTJBTKQqOw8JMEK6BIF971Yodk3PKHbxNdWS20zkKLw6 hPL9E0t/MlQOhkwZrLx/9+n9K+Io1Spd7GEOTiP2m5j5nGiCNcWBBr8spdz45fB2fr6GE5 TI2jV7ju6Kv8WbJrS9OTzbVXA8tGktdANiDH3CoRwZeqKJKRHv+u3CXCNvvA5A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743672097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=f3W80gWUNnGx5WGJf5W6ryXsHFej/erAtlclAsuVoKc=; b=l5XmhJmJ4Emwf32BPbpISFQ7cIMW976D8cJ1AkHWzg4GB/eHb5EiBwc8seVdbTk+YGkBjC Ou/RL25LesLIWmBeI8IuAU2BrviOb5kFS5EyRIWMey6ZH0staIRADAJ0DD3VeM33QXjVEG WNwL6EOHGBdNig3V/mGLTzLenangG1oP5EZjSeYD40I3RtXmob/mDrs+06uPo0xAv0HL7a XGzX1fa9SnGpVZ/5M9cgqqP3f6/iyGuxWmEsyyTZ7dlbLr/6N9/OaACPV6WFT1bQvDaoqt cey/mZ0A72+w6YR2pb/ORddXx85zuOBKosAJclxFiZ7fmSs2sTMu/RqYkr2vEA== 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 4ZSx7j2GC1zvxl; Thu, 03 Apr 2025 09:21: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 5339LbjS000307; Thu, 3 Apr 2025 09:21:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5339LblJ000304; Thu, 3 Apr 2025 09:21:37 GMT (envelope-from git) Date: Thu, 3 Apr 2025 09:21:37 GMT Message-Id: <202504030921.5339LblJ000304@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: fb7687edea52 - main - stress2: New tests added List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fb7687edea52ff1ddbae5fe947055fb37bd23ae3 Auto-Submitted: auto-generated The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=fb7687edea52ff1ddbae5fe947055fb37bd23ae3 commit fb7687edea52ff1ddbae5fe947055fb37bd23ae3 Author: Peter Holm AuthorDate: 2025-04-03 09:20:41 +0000 Commit: Peter Holm CommitDate: 2025-04-03 09:20:41 +0000 stress2: New tests added --- datamove6.sh | 50 ++++++ ftruncate3.sh | 96 +++++++++++ growfs3.sh | 41 +++++ kcmp.sh | 67 +++++++ marcus8.sh | 41 +++++ mprotect3.sh | 70 ++++++++ mprotect4.sh | 109 ++++++++++++ mprotect5.sh | 118 +++++++++++++ mprotect6.sh | 146 ++++++++++++++++ msdos17.sh | 144 ++++++++++++++++ msdos20.sh | 87 ++++++++++ msdos21.sh | 25 +++ newfs8.sh | 69 ++++++++ nullfs31.sh | 75 ++++++++ nullfs32.sh | 43 +++++ pthread10.sh | 106 ++++++++++++ rangelocks.sh | 194 +++++++++++++++++++++ rangelocks2.sh | 178 +++++++++++++++++++ rename16.sh | 261 ++++++++++++++++++++++++++++ rmdir.sh | 119 +++++++++++++ rsync.sh | 49 ++++++ rsync2.sh | 17 ++ rsync3.sh | 43 +++++ seekhole2.sh | 65 +++++++ syzkaller71.sh | 171 ++++++++++++++++++ syzkaller72.sh | 70 ++++++++ syzkaller73.sh | 537 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 27 files changed, 2991 insertions(+) diff --git a/datamove6.sh b/datamove6.sh new file mode 100755 index 000000000000..88bfea425bdc --- /dev/null +++ b/datamove6.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Variation of the datamove.sh, using MSDOSFS + +# No problems seen + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +here=`pwd` +prog=$(basename "$0" .sh) +cd /tmp +sed '1,/^EOF/d' < $here/datamove.sh > $prog.c +mycc -o $prog -Wall -Wextra -O2 -g $prog.c +rm -f $prog.c + +set -eu +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 2g -u $mdstart +newfs_msdos -F 32 -b 8192 /dev/md$mdstart 2> /dev/null +#mount -t msdosfs /dev/md$mdstart $mntpoint +mount_msdosfs -m 777 /dev/md$mdstart $mntpoint +set +e + +$here/../testcases/swap/swap -t 5m -i 100 -h & +for i in `jot 5`; do + su $testuser -c "cd $mntpoint; /tmp/$prog" +done +mv /tmp/$prog $mntpoint +for i in `jot 5`; do + mkdir -p $mntpoint/datamove.dir.$i + cd $mntpoint/datamove.dir.$i + $mntpoint/$prog & +done +pkill swap +wait +while mount | grep -q $mntpoint; do + umount -f $mntpoint > /dev/null 2>&1 +done +mdconfig -d -u $mdstart + +exit 0 diff --git a/ftruncate3.sh b/ftruncate3.sh new file mode 100755 index 000000000000..7373ae8d22a8 --- /dev/null +++ b/ftruncate3.sh @@ -0,0 +1,96 @@ +#!/bin/sh + +# Test scenario from Bug 64816: [nfs] [patch] mmap and/or ftruncate does not work correctly on nfs mounted file systems + +. ../default.cfg + +set -u +grep -q $mntpoint /etc/exports || + { echo "$mntpoint missing from /etc/exports"; exit 0; } +rpcinfo 2>/dev/null | grep -q mountd || exit 0 + +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include +#include +#include +#include +#include +#include +#include +#include + +void error(char *msg) +{ + fprintf(stderr, "Error: %s\nSystem error %d: %s\n", msg, errno, strerror(errno)); + exit(-1); +} + +#define SZ 1024 // Less than page size + +int main(int argn, char *argv[]) +{ + int fd, s; + char buffer[SZ]; + char *map; + + if (argn!=2) + { + fprintf(stderr, "Usage:\n %s [filename]\n", argv[0]); + _exit(-1); + } + + memset(buffer, 0, SZ); + s = 0; + + fd=open(argv[1], O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR); + if (fd==-1) + error("Could not create file"); + + if (write(fd, buffer, SZ)!=SZ) + error("Could not write buffer"); + + map=mmap(NULL, SZ, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + if (map==MAP_FAILED) + error("Map failed"); + map[SZ-1]=1; + + if (ftruncate(fd, SZ+1)!=0) + error("Could not truncate file"); + + if (map[SZ-1]==1) + printf("Test passed\n"); + else { + printf("Test failed\n"); + s = 1; + } + + exit(s); +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 -g /tmp/$prog.c || exit 1 + +mount | grep -q "on $mntpoint " && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mdconfig -s 1g -u $mdstart +newfs -n $newfs_flags /dev/md$mdstart > /dev/null +mount /dev/md$mdstart $mntpoint + +mp2=${mntpoint}2 +mkdir -p $mp2 +mount | grep -q "on $mp2 " && umount -f $mp2 +mount -t nfs -o retrycnt=3 127.0.0.1:$mntpoint $mp2 || exit 1 +sleep .2 +mount | grep $mntpoint + +cd $mp2 +/tmp/$prog $prog.data; s=$? +ls -ls $mp2/$prog.data +cd - + +umount $mp2 +umount $mntpoint +mdconfig -d -u $mdstart +rm -f /tmp/$prog /tmp/$prog.c +exit $s diff --git a/growfs3.sh b/growfs3.sh new file mode 100755 index 000000000000..33e8327cdbbc --- /dev/null +++ b/growfs3.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +set -eu +prog=$(basename "$0" .sh) +log=/tmp/$prog.log +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 32g -u $mdstart +/sbin/gpart create -s GPT md$mdstart > /dev/null +/sbin/gpart add -t freebsd-ufs -s 2g -a 4k md$mdstart > /dev/null +set +e + +newfs_flags=$(echo "-O1" "-O2" "-U" "-j" | awk -v N=`jot -r 1 1 4` '{print $N}') +echo "newfs $newfs_flags md${mdstart}p1" +newfs $newfs_flags md${mdstart}p1 > /dev/null +[ "$newfs_flags" = "-O2" ] && + tunefs -n disable md${mdstart}p1 > /dev/null 2>&1 +mount /dev/md${mdstart}p1 $mntpoint +cp -r /usr/include $mntpoint/inc1 +umount $mntpoint + +gpart resize -i 1 -s 31g -a 4k md$mdstart +growfs -y md${mdstart}p1 > /dev/null + +mount /dev/md${mdstart}p1 $mntpoint +cp -r /usr/include $mntpoint/inc2 +umount $mntpoint +fsck -fy /dev/md${mdstart}p1 > $log 2>&1; s=$? +grep -q "WAS MODIFIED" $log && { cat $log; s=1; } +rm -f $log +mdconfig -d -u $mdstart +exit $s diff --git a/kcmp.sh b/kcmp.sh new file mode 100755 index 000000000000..7c571dd8e8a1 --- /dev/null +++ b/kcmp.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Seen: +# UID PID PPID C PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND +# 0 3730 3668 11 20 0 13596 2904 exithold DE+ 0 1:59.68 ./kcmp + +# Fixed by: 5b3e5c6ce3e5 + +. ../default.cfg + +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < + +#include +#include +#include +#include +#include +#include +#include + +static void * +t1(void *data __unused) +{ + for (;;) + pause(); + + return (NULL); +} + +int +main(void) +{ + pid_t p1, p2; + pthread_t tid[2]; + time_t start; + uintptr_t idx1, idx2; + int r; + + if ((r = pthread_create(&tid[0], NULL, t1, NULL)) != 0) + errc(1, r, "pthread_create"); + if ((r = pthread_create(&tid[1], NULL, t1, NULL)) != 0) + errc(1, r, "pthread_create"); + + start = time(NULL); + while (time(NULL) - start < 60) { + idx1 = idx2 = 0; + p1 = arc4random() % 1000000; + p2 = arc4random() % 1000000; + kcmp(p1, p2, KCMP_VM, idx1, idx2); + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog + +rm /tmp/$prog.c /tmp/$prog +exit 0 diff --git a/marcus8.sh b/marcus8.sh new file mode 100755 index 000000000000..0c6110c8ec4c --- /dev/null +++ b/marcus8.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +# Run with marcus.cfg on a 5g swap backed MD with UFS non SU fs. +# Check for non empty file system after test. + +. ../default.cfg + +set -u +mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 4g -u $mdstart +newfs_flags="" # With SU this test runs out of disk space +newfs $newfs_flags md$mdstart > /dev/null +tunefs -n disable md$mdstart # Remove the default SU flag +mount /dev/md$mdstart $mntpoint +chmod 777 $mntpoint + +export runRUNTIME=5m +export CTRLDIR=$mntpoint/stressX.control +export RUNDIR=$mntpoint/stressX + +su $testuser -c 'cd ..; ./run.sh marcus.cfg' + +nb=`find $RUNDIR | wc -l` +[ $nb -gt 1 ] && { find $RUNDIR -ls | head -12; s=1; } || s=0 +n=0 +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 + [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; } +done +checkfs /dev/md$mdstart; s2=$? +mdconfig -d -u $mdstart +exit $((s + s2)) diff --git a/mprotect3.sh b/mprotect3.sh new file mode 100755 index 000000000000..9bd4a6f9be79 --- /dev/null +++ b/mprotect3.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +# Test scenario from: +# Bug 272585 - calling mprotect in an mmap-ed stack can affect non-target pages +# Test scenario by: John F. Carr + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include +#include +#include +#include +#include +#include + +#ifndef MAP_GROWSDOWN +#define MAP_GROWSDOWN 0 +#endif +#ifndef MAP_STACK +#define MAP_STACK 0 +#endif + +int main(void) +{ + long pagesize; + char *addr, *guard; + size_t alloc_size; + + pagesize = sysconf(_SC_PAGESIZE); + if (pagesize < 0) + err(EX_OSERR, "getPAGESIZE"); + + alloc_size = 0x200000 + pagesize; + + addr = mmap(0, alloc_size, PROT_READ|PROT_WRITE, + MAP_GROWSDOWN|MAP_STACK|MAP_PRIVATE|MAP_ANONYMOUS, + -1, 0); + if (addr == MAP_FAILED) { + err(EX_OSERR, "mmap"); + } + + /* Only 0x20 causes a failure. */ + guard = addr + alloc_size - 0x20 * pagesize; + + if (mprotect(guard, pagesize, PROT_NONE)) { + err(EX_OSERR, "mprotect"); + } + + printf("mapped %p..%p, guard at %p\n", addr, addr + alloc_size, guard); + fflush(stdout); + + ((volatile char *)guard)[-1]; + + return 0; +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c || exit 0 + +cd /tmp +./$prog; s=$? +cd - + +rm -f /tmp/$prog /tmp/$prog.c /tmp/$prog.core +exit $s diff --git a/mprotect4.sh b/mprotect4.sh new file mode 100755 index 000000000000..c233d20852a2 --- /dev/null +++ b/mprotect4.sh @@ -0,0 +1,109 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int go, n, ps; +static char *cp; +static volatile char v; + +void * +rd(void *arg __unused) +{ + int i; + + while (go == 0) + usleep(100); + while (go == 1) { + for (i = 0; i < n; i += ps) { + v = cp[i]; + } + pthread_yield(); + } + return(NULL); +} + +void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int e, i, nb; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + + ps = getpagesize(); + cp = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_create(&tid[i], NULL, rd, NULL)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + for (i = 0; i < n; i += ps) { + if (mprotect(&cp[i], ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + cp[i] = 1; + if (mprotect(&cp[i], ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + nb++; + } + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + if (nb >= 0) { +#if defined(DEBUG) + fprintf(stderr, "%d loops\n", nb); +#endif + ; + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog `sysctl -n hw.ncpu`; s=$? + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/mprotect5.sh b/mprotect5.sh new file mode 100755 index 000000000000..ab4d2eeee118 --- /dev/null +++ b/mprotect5.sh @@ -0,0 +1,118 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static pthread_mutex_t write_mutex; +static int go, n, ps; +static char *cp, *wp; + +void * +wr(void *arg __unused) +{ + while (go == 0) + usleep(100); + while (go == 1) { + pthread_mutex_lock(&write_mutex); + if (wp != NULL) + *wp += 1; + pthread_mutex_unlock(&write_mutex); + } + return(NULL); +} + +void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int e, i, nb; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + + ps = getpagesize(); + cp = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + pthread_mutex_init(&write_mutex, NULL); + pthread_mutex_lock(&write_mutex); + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_create(&tid[i], NULL, wr, NULL)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + for (i = 0; i < n; i += ps) { + pthread_mutex_lock(&write_mutex); + if (mprotect(&cp[i], ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + cp[i] = 0; + wp = &cp[i]; + pthread_mutex_unlock(&write_mutex); + + usleep(100); + + pthread_mutex_lock(&write_mutex); + if (mprotect(&cp[i], ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + wp = NULL; + pthread_mutex_unlock(&write_mutex); + nb++; + } + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + if (nb >= 0) { +#if defined(DEBUG) + fprintf(stderr, "%d loops\n", nb); +#endif + ; + } +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 /tmp/$prog.c -lpthread || exit 1 + +/tmp/$prog `sysctl -n hw.ncpu`; s=$? + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/mprotect6.sh b/mprotect6.sh new file mode 100755 index 000000000000..ef1443c216d3 --- /dev/null +++ b/mprotect6.sh @@ -0,0 +1,146 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +. ../default.cfg +set -u +prog=$(basename "$0" .sh) +cat > /tmp/$prog.c < +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static pthread_mutex_t write_mutex; +static volatile int done; +static int go, n, *once, *p, ps; + +static void * +wr(void *arg) +{ + int idx; + + alarm(180); + idx = *(int *)arg; + while (go == 0) + usleep(100); + while (go == 1) { + while (go == 1 && once[idx] == 0) + usleep(100); + if (go == 0) + break; + p[idx]++; + once[idx] = 0; + pthread_mutex_lock(&write_mutex); + done++; + pthread_mutex_unlock(&write_mutex); + } + return(NULL); +} + +static void +setonce(int val) +{ + int i; + + for (i = 0; i < n; i++) + once[i] = val; +} + +static void +usage(char *prog) { + fprintf(stderr, "Usage: %s \n", prog); + _exit(1); +} + +int +main(int argc, char *argv[]) +{ + pthread_t *tid; + time_t start; + int *arg; + int e, i, nb, r; + + if (argc != 2) + usage(argv[0]); + if (sscanf(argv[1], "%d", &n) != 1) + usage(argv[0]); + if (n > 1) + n--; + if ((tid = calloc(n, sizeof(pthread_t *))) == NULL) + err(1, "calloc()"); + if ((once = calloc(n, sizeof(int *))) == NULL) + err(1, "calloc()"); + setonce(0); + + ps = getpagesize(); + p = mmap(NULL, n * ps, PROT_READ, MAP_PRIVATE | MAP_ANON, -1, 0); + go = 0; + pthread_mutex_init(&write_mutex, NULL); + for (i = 0; i < n; i++) { + arg = malloc(sizeof(int)); + *arg = i; + if ((e = pthread_create(&tid[i], NULL, wr, (void *)arg)) != 0) + errc(1, e, "pthread_create()"); + } + go = 1; + + nb = 0; + start = time(NULL); + while (time(NULL) - start < 120) { + if (mprotect(p, n * ps, PROT_READ|PROT_WRITE) == -1) + err(1, "mprotect(PROT_READ)"); + done = 0; + setonce(1); + while (done != n) + usleep(100); + if (mprotect(p, n * ps, PROT_READ) == -1) + err(1, "mprotect(PROT_READ)"); + nb++; + usleep(100); + } + go = 0; + for (i = 0; i < n; i++) { + if ((e = pthread_join(tid[i], NULL)) != 0) + errc(1, e, "pthread_join() in loop %d", i); + } + r = 0; + for (i = 1; i < n; i++) { + if (p[0] != p[i]) + r++; + } + if (r != 0) { + fprintf(stderr, "%d loops.\n", nb); + for (i = 0; i < n; i++) + fprintf(stderr, "p[%3d] = %d\n", i, p[i]); + } + + return (r); +} +EOF +mycc -o /tmp/$prog -Wall -Wextra -O0 -g /tmp/$prog.c -lpthread || exit 1 + +n=`sysctl -n hw.ncpu` +if [ $# -eq 1 ]; then + echo $1 | grep -Eq '^[0-9]+$' && n=$1 +fi +../testcases/swap/swap -t 2m > /dev/null & +sleep 10 +/tmp/$prog $n; s=$? +pkill -9 swap +wait + +rm -d /tmp/$prog /tmp/$prog.c +exit $s diff --git a/msdos17.sh b/msdos17.sh new file mode 100755 index 000000000000..392a9a622b9a --- /dev/null +++ b/msdos17.sh @@ -0,0 +1,144 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# No problems observed + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +set -u +prog=$(basename "$0" .sh) +mount | grep -q "on $mntpoint " && umount $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 1g -u $mdstart +gpart create -s bsd md$mdstart > /dev/null +gpart add -t freebsd-ufs md$mdstart > /dev/null +part=a +newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null || exit 1 +mount -t msdosfs /dev/md${mdstart}$part $mntpoint + +here=`pwd` +cd /tmp +cat > $prog.c < +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +static volatile u_int *share; +static char file1[80], file2[80]; + +#define SYNC 0 +#define STOP 1 + +static void +test0(void) +{ + struct stat sb; + + while (share[STOP] == 0) { + while (share[SYNC] != 0) + usleep(100); + if (rename(file1, file2) == -1) + err(1, "rename(%s, %s)", file1, file2); + if (stat(file1, &sb) == 0) + err(1, "stat(%s)", file1); + atomic_add_int(&share[SYNC], 1); + } + + _exit(0); +} + +static void +test1(void) +{ + struct stat sb; + + while (share[STOP] == 0) { + while (share[SYNC] != 1) + usleep(100); + if (rename(file2, file1) == -1) + err(1, "rename(%s, %s)", file2, file1); + if (stat(file2, &sb) == 0) + err(1, "stat(%s)", file2); + atomic_add_int(&share[SYNC], -1); + } + + _exit(0); +} + +int +main(void) +{ + pid_t pids[2]; + size_t len; + int fd; + char cwd[80]; + + len = PAGE_SIZE; + if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED) + err(1, "mmap"); + + if (getcwd(cwd, sizeof(cwd)) == NULL) + err(1, "getcwd()"); + snprintf(file1, sizeof(file1), "%s/a.%06d", cwd, getpid()); + snprintf(file2, sizeof(file2), "%s/b.%06d", cwd, getpid()); + if ((fd = open(file1, O_CREAT, 0640)) == -1) + err(1, "open(%s)", file1); + close(fd); + + if ((pids[0] = fork()) == 0) + test0(); + if ((pids[1] = fork()) == 0) + test1(); + + sleep(120); + share[STOP] = 1; + + if (waitpid(pids[0], NULL, 0) == -1) + err(1, "waitpid(%d)", pids[0]); + if (waitpid(pids[1], NULL, 0) == -1) + err(1, "waitpid(%d)", pids[1]); + unlink(file1); + unlink(file2); +} +EOF +mycc -o $prog -Wall $prog.c || exit 1 +rm -f $prog.c +cd $here + +(cd ../testcases/swap; ./swap -t 5m -i 20 -l 100) & +cd $mntpoint +pids="" +for i in `jot 30`; do + /tmp/$prog & + pids="$pids $!" +done +for pid in $pids; do + wait $pid +done +cd $here +while pkill swap; do :; done +wait + +umount $mntpoint +mdconfig -d -u $mdstart +rm -f /tmp/$prog +exit 0 diff --git a/msdos20.sh b/msdos20.sh new file mode 100755 index 000000000000..96c224a629f3 --- /dev/null *** 2207 LINES SKIPPED *** From nobody Thu Apr 3 10:21:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSyTL14M1z5rNmh; Thu, 03 Apr 2025 10:21: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 4ZSyTL0X3Fz3gWm; Thu, 03 Apr 2025 10:21:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743675718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Af0zGa2YSq4wk4FCrDKJV3ZcRQlM5zNK353Pu8s/Ao8=; b=lQr6zMFFkLNwl4mp5Fgkx/GdnOIaTf3EsvJgMyv2Ui6DiQ6AvYSjP76betdQ1iFj+ku87K UY3uvecpdMPv0JMMPfV7XQ343BkuDSKAbDS8jDyY8dZinQqf4/YhBXzZg/Ll8zhKX5IFT5 dTnhxjAxKdbC/SO0mEsnyhvp3NjrkH7I81RUzDCGRd2T2Hp86S8UvV26+7BuWY0QC6/qQ1 j5ng0tOrsQOiPpbfiP6M2bzzFKjKsva4D3jbNDVHTdtO+PUf6DXT9SIUUS0nU7v+6kFy7V iKRoJUK8L9q5ynZMu5QaHVn/Pp9KAOxjrv4gh7GRREKd8oeQrZGh9h5txEXB9A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743675718; a=rsa-sha256; cv=none; b=Lr1CSA2YMk/iQlk0yWXH9xZtuO8cNIosTz8KKm8UBQzwluoD6agtEiu3abG3q0MgUJJEHo wSHKmbEFHfvzfcEccOJYY68TZgN1FsocMflUS0MgkKPoPcIPWIpEUEB0cc7XRXueSqhYcT psj7TZL8Ve1qx+j14m/wc+kCeA1mHgi+qPmHFyxo5DMj1mxvbqGpxTkxyVKRRLmLHkKUDu sCkCTsrwb0mgTHT9XKf4U8qURn/APSUr8q3kjjPz6I/KqmV7TXvUKV6TGj9/4CgzdTrskJ N2WqfZ2/DKyouLymFoKdVRYO4U+16NPGuPtYlhXrCDWghA3UUHQfI55kNFAwcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743675718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Af0zGa2YSq4wk4FCrDKJV3ZcRQlM5zNK353Pu8s/Ao8=; b=GznD60mZTeUhKwA6r+Y74tJDjJAN3XPLa9FsUldolazESGQMLMRcZgMH9PHZBUuKc3NJB+ Uv28XY8DrprCUL9WwuWFBd6GTlZV7Yfwlvk5eU2MSToEJYN84iu6lDPKmlM5i5SKxW9AEJ wZL4jLm0TSwQDy5/p3e4kv8bsR6fISWgaoI0y0i0IEG3pGu5MzVdM6A07boI+z9YBwDNY6 VGra4yUm5nAWyy9kB/Mx78xzQrD25bddtbx4cOUa7wzT9lTBkz4lXcjp5p6wB5VlQAvild QZAzO5WdUE3cqBlwcMvWab6kFpIWS4A4edrKhtMYFqHTQ87gdF0NDrsrLTwacw== 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 4ZSyTL0714zxhj; Thu, 03 Apr 2025 10:21: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 533ALvtg009884; Thu, 3 Apr 2025 10:21:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533ALvur009881; Thu, 3 Apr 2025 10:21:57 GMT (envelope-from git) Date: Thu, 3 Apr 2025 10:21:57 GMT Message-Id: <202504031021.533ALvur009881@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Piotr Kubaj Subject: git: 1e84a6ba21fd - stable/14 - ipmi: fix runtime on powerpc64le List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pkubaj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1e84a6ba21fddc77c33ad059e476a302f40cd544 Auto-Submitted: auto-generated The branch stable/14 has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=1e84a6ba21fddc77c33ad059e476a302f40cd544 commit 1e84a6ba21fddc77c33ad059e476a302f40cd544 Author: Piotr Kubaj AuthorDate: 2025-03-27 11:55:48 +0000 Commit: Piotr Kubaj CommitDate: 2025-04-03 10:21:38 +0000 ipmi: fix runtime on powerpc64le Differential Revision: https://reviews.freebsd.org/D49530 (cherry picked from commit 2e16618fe789f110bd8d297b1c65b166fa60c2fe) --- sys/dev/ipmi/ipmi_opal.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/dev/ipmi/ipmi_opal.c b/sys/dev/ipmi/ipmi_opal.c index c69757b7d020..6f8ab50c1bd2 100644 --- a/sys/dev/ipmi/ipmi_opal.c +++ b/sys/dev/ipmi/ipmi_opal.c @@ -94,6 +94,7 @@ opal_ipmi_recv(struct opal_ipmi_softc *sc, uint64_t *msg_len, int timo) opal_call(OPAL_POLL_EVENTS, NULL); err = opal_call(OPAL_IPMI_RECV, sc->sc_interface, vtophys(sc->sc_msg), vtophys(msg_len)); + *msg_len = be64toh(*msg_len); if (err != OPAL_EMPTY) break; From nobody Thu Apr 3 10:27:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZSybP1Lrjz5rPBM; Thu, 03 Apr 2025 10:27: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 4ZSybP0htnz3gmg; Thu, 03 Apr 2025 10:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743676033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W2oweZG9CTwRm01hSWoeRG8+fO9Ku72nCVYJ5o5FraQ=; b=pmwe/pbUcLB3Fz5UHzSdBqL2Y8YwvAUOR9bkz1u9MfmvrKDYUOACc54a6FVNvGYZI2KmRq CzSiiVFoxfxQsBmuUGQYSTfYnAGUtUMZHqVMaNEtBgGVybRp+Up1RnLxdn0lPeCvwhFsQQ qYzxxQmD9HTsshwkmqmtaaZUXniB/pGyLbgqQj1f1j7MDxKAhpf7OphrRKdHUpAxbCD4xG BlzelA44LZG0jkbTRWsUWSDHGg+AvHS2AEYj3satFxIcbvFR3yr4AtGNOEHxoWJu8mCoao bdeH6ThEpC3FwvGt3Hi4j6edUFZCDVYs4zzSnKrCKHufiz9koOGIKXtUDgj/rQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743676033; a=rsa-sha256; cv=none; b=DjcF0RFlzgwv20XAkzzyY4SOzxALeyWQ7Fap0QAaDY1Ydjypmf7WaiLWcDTh1edC4OGWa9 qCdlIPWRmhRrG36NMfeqYlqkPvdh0qMVhqjhO5jBi7BxzIdBToVzb21iowclTqD79K4vSj p8LarmFEH0ymVM9DcNKo3o28NzjyRtaWHAfHgRn+nKUlMpRkmM/8OqhqkeSBSJB9ocgYb4 OtiKAhQS7bgR9VyXSaGFfHCTnDRsCi2uffG1O7FLM8idL+BMXZroZ++7Tz3LXcF+BaXd6F NX1jHXiSdsiaMPYam7fLnZpFGJw7+Xg7AAm0/15f+gaQu7hRZD3xe2YgWPg2ZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743676033; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W2oweZG9CTwRm01hSWoeRG8+fO9Ku72nCVYJ5o5FraQ=; b=vLLVFXNsShTZlV6fVApz48zfI+Ap2JQ7xqc82rOszqyVp9Qp7ZSBMleTf492gCl/KxX5oW ugErBcXhrUEIaWANV68135Qe74GxLXh1z3cvIDscBSS/KFcLmktIVf8uDOPBPHnFQwawZS GpUGGTWv3IjJa1r2g6pbwcjAHp00R4nv9rTyD5wRH97f9bCUEZcXEStURIBDdiOJqVBPif dDJJnbPnaasNO+G09gCyshuaA+XgTmMTlMSsPoHIEE17uRX3YItvbct9b0eojlb9UzSDLy JvzhoS5NFIrr47BlIcF90qqv60YIVtOZAlGSrqUURnM1OoVVI7125hGyPIK96w== 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 4ZSybP0JXYzxW8; Thu, 03 Apr 2025 10:27: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 533ARCEL013820; Thu, 3 Apr 2025 10:27:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533ARCPt013817; Thu, 3 Apr 2025 10:27:12 GMT (envelope-from git) Date: Thu, 3 Apr 2025 10:27:12 GMT Message-Id: <202504031027.533ARCPt013817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: ef777be98543 - main - stress2: Move files to the right directory List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ef777be98543f7daae90bd123d4fc1ec4a54efc2 Auto-Submitted: auto-generated The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=ef777be98543f7daae90bd123d4fc1ec4a54efc2 commit ef777be98543f7daae90bd123d4fc1ec4a54efc2 Author: Peter Holm AuthorDate: 2025-04-03 10:25:31 +0000 Commit: Peter Holm CommitDate: 2025-04-03 10:25:31 +0000 stress2: Move files to the right directory --- datamove6.sh => tools/test/stress2/misc/datamove6.sh | 0 ftruncate3.sh => tools/test/stress2/misc/ftruncate3.sh | 0 growfs3.sh => tools/test/stress2/misc/growfs3.sh | 0 kcmp.sh => tools/test/stress2/misc/kcmp.sh | 0 marcus8.sh => tools/test/stress2/misc/marcus8.sh | 0 mprotect3.sh => tools/test/stress2/misc/mprotect3.sh | 0 mprotect4.sh => tools/test/stress2/misc/mprotect4.sh | 0 mprotect5.sh => tools/test/stress2/misc/mprotect5.sh | 0 mprotect6.sh => tools/test/stress2/misc/mprotect6.sh | 0 msdos17.sh => tools/test/stress2/misc/msdos17.sh | 0 msdos20.sh => tools/test/stress2/misc/msdos20.sh | 0 msdos21.sh => tools/test/stress2/misc/msdos21.sh | 0 newfs8.sh => tools/test/stress2/misc/newfs8.sh | 0 nullfs31.sh => tools/test/stress2/misc/nullfs31.sh | 0 nullfs32.sh => tools/test/stress2/misc/nullfs32.sh | 0 pthread10.sh => tools/test/stress2/misc/pthread10.sh | 0 rangelocks.sh => tools/test/stress2/misc/rangelocks.sh | 0 rangelocks2.sh => tools/test/stress2/misc/rangelocks2.sh | 0 rename16.sh => tools/test/stress2/misc/rename16.sh | 0 rmdir.sh => tools/test/stress2/misc/rmdir.sh | 0 rsync.sh => tools/test/stress2/misc/rsync.sh | 0 rsync2.sh => tools/test/stress2/misc/rsync2.sh | 0 rsync3.sh => tools/test/stress2/misc/rsync3.sh | 0 seekhole2.sh => tools/test/stress2/misc/seekhole2.sh | 0 syzkaller71.sh => tools/test/stress2/misc/syzkaller71.sh | 0 syzkaller72.sh => tools/test/stress2/misc/syzkaller72.sh | 0 syzkaller73.sh => tools/test/stress2/misc/syzkaller73.sh | 0 27 files changed, 0 insertions(+), 0 deletions(-) diff --git a/datamove6.sh b/tools/test/stress2/misc/datamove6.sh similarity index 100% rename from datamove6.sh rename to tools/test/stress2/misc/datamove6.sh diff --git a/ftruncate3.sh b/tools/test/stress2/misc/ftruncate3.sh similarity index 100% rename from ftruncate3.sh rename to tools/test/stress2/misc/ftruncate3.sh diff --git a/growfs3.sh b/tools/test/stress2/misc/growfs3.sh similarity index 100% rename from growfs3.sh rename to tools/test/stress2/misc/growfs3.sh diff --git a/kcmp.sh b/tools/test/stress2/misc/kcmp.sh similarity index 100% rename from kcmp.sh rename to tools/test/stress2/misc/kcmp.sh diff --git a/marcus8.sh b/tools/test/stress2/misc/marcus8.sh similarity index 100% rename from marcus8.sh rename to tools/test/stress2/misc/marcus8.sh diff --git a/mprotect3.sh b/tools/test/stress2/misc/mprotect3.sh similarity index 100% rename from mprotect3.sh rename to tools/test/stress2/misc/mprotect3.sh diff --git a/mprotect4.sh b/tools/test/stress2/misc/mprotect4.sh similarity index 100% rename from mprotect4.sh rename to tools/test/stress2/misc/mprotect4.sh diff --git a/mprotect5.sh b/tools/test/stress2/misc/mprotect5.sh similarity index 100% rename from mprotect5.sh rename to tools/test/stress2/misc/mprotect5.sh diff --git a/mprotect6.sh b/tools/test/stress2/misc/mprotect6.sh similarity index 100% rename from mprotect6.sh rename to tools/test/stress2/misc/mprotect6.sh diff --git a/msdos17.sh b/tools/test/stress2/misc/msdos17.sh similarity index 100% rename from msdos17.sh rename to tools/test/stress2/misc/msdos17.sh diff --git a/msdos20.sh b/tools/test/stress2/misc/msdos20.sh similarity index 100% rename from msdos20.sh rename to tools/test/stress2/misc/msdos20.sh diff --git a/msdos21.sh b/tools/test/stress2/misc/msdos21.sh similarity index 100% rename from msdos21.sh rename to tools/test/stress2/misc/msdos21.sh diff --git a/newfs8.sh b/tools/test/stress2/misc/newfs8.sh similarity index 100% rename from newfs8.sh rename to tools/test/stress2/misc/newfs8.sh diff --git a/nullfs31.sh b/tools/test/stress2/misc/nullfs31.sh similarity index 100% rename from nullfs31.sh rename to tools/test/stress2/misc/nullfs31.sh diff --git a/nullfs32.sh b/tools/test/stress2/misc/nullfs32.sh similarity index 100% rename from nullfs32.sh rename to tools/test/stress2/misc/nullfs32.sh diff --git a/pthread10.sh b/tools/test/stress2/misc/pthread10.sh similarity index 100% rename from pthread10.sh rename to tools/test/stress2/misc/pthread10.sh diff --git a/rangelocks.sh b/tools/test/stress2/misc/rangelocks.sh similarity index 100% rename from rangelocks.sh rename to tools/test/stress2/misc/rangelocks.sh diff --git a/rangelocks2.sh b/tools/test/stress2/misc/rangelocks2.sh similarity index 100% rename from rangelocks2.sh rename to tools/test/stress2/misc/rangelocks2.sh diff --git a/rename16.sh b/tools/test/stress2/misc/rename16.sh similarity index 100% rename from rename16.sh rename to tools/test/stress2/misc/rename16.sh diff --git a/rmdir.sh b/tools/test/stress2/misc/rmdir.sh similarity index 100% rename from rmdir.sh rename to tools/test/stress2/misc/rmdir.sh diff --git a/rsync.sh b/tools/test/stress2/misc/rsync.sh similarity index 100% rename from rsync.sh rename to tools/test/stress2/misc/rsync.sh diff --git a/rsync2.sh b/tools/test/stress2/misc/rsync2.sh similarity index 100% rename from rsync2.sh rename to tools/test/stress2/misc/rsync2.sh diff --git a/rsync3.sh b/tools/test/stress2/misc/rsync3.sh similarity index 100% rename from rsync3.sh rename to tools/test/stress2/misc/rsync3.sh diff --git a/seekhole2.sh b/tools/test/stress2/misc/seekhole2.sh similarity index 100% rename from seekhole2.sh rename to tools/test/stress2/misc/seekhole2.sh diff --git a/syzkaller71.sh b/tools/test/stress2/misc/syzkaller71.sh similarity index 100% rename from syzkaller71.sh rename to tools/test/stress2/misc/syzkaller71.sh diff --git a/syzkaller72.sh b/tools/test/stress2/misc/syzkaller72.sh similarity index 100% rename from syzkaller72.sh rename to tools/test/stress2/misc/syzkaller72.sh diff --git a/syzkaller73.sh b/tools/test/stress2/misc/syzkaller73.sh similarity index 100% rename from syzkaller73.sh rename to tools/test/stress2/misc/syzkaller73.sh From nobody Thu Apr 3 14:05:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT3Rp1BYhz5rxBl; Thu, 03 Apr 2025 14:05: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 4ZT3Rp0T64z41dl; Thu, 03 Apr 2025 14:05:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743689158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jklQIm9EIUROMO+uEfPHZk3n1f/T2dyitxJMwU98l54=; b=IKN6JgRUoZFT6XpkY02t5agUde/vCPJFmJTCJNFS/85KDP/oOx2jTKbLLM65dD//7Hjkpn lPiqmMVtNPW8jT9CJ9RfmbvbHFJr6aeRcAKc2YU3gBmB4Y3qiThJqOmgRuQ/OvdyGlOG50 AL6rQRN//BcQPeu/XOhMoQHrEH2V/ibbCZCQ7Xwzx4lKYguLQ1wzMysGwpmz722utCREgW tPLs1qajv+JrFYgU7Fv8Ak/gsYeVh7ObWXH3c+lJPLRj/DJ23pk34JBAiBH7mGgTw3XS9R 5MUoWRUYTyKfLyvF/wvH6ULKbt5ThNLspZD/t7PV4rMuklgbAMGDFN1AaI8NEw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743689158; a=rsa-sha256; cv=none; b=cRa6L1vnHFKl3jCIOmpyO+AgRb/csbcrJIp9JcTy5I329wsAjpS9tydRWh4HFyJ1rlDX9o Nv31F6xzyds27tFluMeYVtnHQXa5t8monqpRSXXs4FNzGtHaW6XCEQ6FhoTFXz7GU7ht3/ Nfuh4GPlLL3ysZhVD8Tv3whpOo/U0spelEPCnYbRRHWu5pLV4J5gbaxZ6pRnfRbhoCqnDV hYwg6Y/LGBZj9Wk/enRL5SJ1KLbAS/gw6MLQz+qpmSTCs507cDs9m0CZrwc08lqouXWYM/ NH4HORAfUgR+kKkxlesXxkoXjQv2yB7YOyiEeOdnMfCqJ9K/rJWL7NGwW4KJtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743689158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jklQIm9EIUROMO+uEfPHZk3n1f/T2dyitxJMwU98l54=; b=gyCwOyvkLsBp/mWy6sM4Z9RszdEuqd3jC4Fb4WICvQjTk+2NC6/ONrzxdiIea6szig1nOi opeK3bsszFfbaT11GaRdpP4oGlZ9SG2F9i5cMpCYisBEIRD0ZTLAmPrm9NHzifZuL4oMBm TFvktCkpb+rEiaJTVj3Cifcd7rfeeApQZl1eWfSYMVk79DYtvkp7XQts+yoBjdIxpLwENz za0Kdhk9BUNYtbBopgUzY/g9UV9cHFAMC22s4SSh04WP9bq4lgZIHMN/zTcouS/ShLDe9c qUtReLGKjsskz3t8eisfRPjlZH3N1MyTJ8abXVcsFMnECuZ6QH//y7+9roJ7bw== 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 4ZT3Rn6v25z14RY; Thu, 03 Apr 2025 14:05: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 533E5vlk024547; Thu, 3 Apr 2025 14:05:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533E5vEY024544; Thu, 3 Apr 2025 14:05:57 GMT (envelope-from git) Date: Thu, 3 Apr 2025 14:05:57 GMT Message-Id: <202504031405.533E5vEY024544@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: 944eda42fa6e - main - openfirm: Add OF_device_unregister_xref List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 944eda42fa6e449ec802958d41302e71a125ca5f Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=944eda42fa6e449ec802958d41302e71a125ca5f commit 944eda42fa6e449ec802958d41302e71a125ca5f Author: Emannuel Vadot AuthorDate: 2025-04-03 13:54:41 +0000 Commit: Kyle Evans CommitDate: 2025-04-03 14:03:44 +0000 openfirm: Add OF_device_unregister_xref When a device fails to attach, or a module is unloaded, we want to be able to unregister the xref as the device goes away. While the device_t may still be valid, it won't be providing whatever functionality the consumer that follows the xref wants it for and thus, we should not keep it discoverable. [Commit message re-worded by kevans@] Reviewed by: ian, imp Differential Revision: https://reviews.freebsd.org/D22945 --- share/man/man9/OF_device_from_xref.9 | 14 +++++++++++++- sys/dev/ofw/openfirm.c | 19 +++++++++++++++++++ sys/dev/ofw/openfirm.h | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/share/man/man9/OF_device_from_xref.9 b/share/man/man9/OF_device_from_xref.9 index 85a19df6641b..0b858866b654 100644 --- a/share/man/man9/OF_device_from_xref.9 +++ b/share/man/man9/OF_device_from_xref.9 @@ -23,19 +23,22 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 9, 2018 +.Dd April 3, 2025 .Dt OF_DEVICE_FROM_XREF 9 .Os .Sh NAME .Nm OF_device_from_xref , .Nm OF_xref_from_device , .Nm OF_device_register_xref +.Nm OF_device_unregister_xref .Nd "manage mappings between xrefs and devices" .Sh SYNOPSIS .In dev/ofw/ofw_bus.h .In dev/ofw/ofw_bus_subr.h .Ft int .Fn OF_device_register_xref "phandle_t xref" "device_t dev" +.Ft void +.Fn OF_device_unregister_xref "phandle_t xref" "device_t dev" .Ft device_t .Fn OF_device_from_xref "phandle_t xref" .Ft phandle_t @@ -57,6 +60,15 @@ If a mapping entry for already exists, it is replaced with the new one. The function always returns 0. .Pp +.Fn OF_device_unregister_xref +removes a map entry from the effective phandle +.Fa xref +to device +.Fa dev . +If a mapping entry for +.Fa xref +does not exists, it silently returns. +.Pp .Fn OF_device_from_xref returns a device_t instance associated with the effective phandle .Fa xref . diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c index f9c73122b454..22e8d470e6c9 100644 --- a/sys/dev/ofw/openfirm.c +++ b/sys/dev/ofw/openfirm.c @@ -187,6 +187,15 @@ xrefinfo_add(phandle_t node, phandle_t xref, device_t dev) return (xi); } +static void +xrefinfo_remove(struct xrefinfo *xi) +{ + + mtx_lock(&xreflist_lock); + SLIST_REMOVE(&xreflist, xi, xrefinfo, next_entry); + mtx_unlock(&xreflist_lock); +} + /* * OFW install routines. Highest priority wins, equal priority also * overrides allowing last-set to win. @@ -704,6 +713,16 @@ OF_device_register_xref(phandle_t xref, device_t dev) panic("Attempt to register device before xreflist_init"); } +void +OF_device_unregister_xref(phandle_t xref, device_t dev) +{ + struct xrefinfo *xi; + + if ((xi = xrefinfo_find(xref, FIND_BY_XREF)) == NULL) + return; + xrefinfo_remove(xi); +} + /* Call the method in the scope of a given instance. */ int OF_call_method(const char *method, ihandle_t instance, int nargs, int nreturns, diff --git a/sys/dev/ofw/openfirm.h b/sys/dev/ofw/openfirm.h index 30203404a6b0..4e2b035827cb 100644 --- a/sys/dev/ofw/openfirm.h +++ b/sys/dev/ofw/openfirm.h @@ -149,6 +149,7 @@ phandle_t OF_xref_from_node(phandle_t node); device_t OF_device_from_xref(phandle_t xref); phandle_t OF_xref_from_device(device_t dev); int OF_device_register_xref(phandle_t xref, device_t dev); +void OF_device_unregister_xref(phandle_t xref, device_t dev); /* Device I/O functions */ ihandle_t OF_open(const char *path); From nobody Thu Apr 3 15:00:40 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT4fx03TQz5s1dR; Thu, 03 Apr 2025 15:00: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 4ZT4fw6fdSz456F; Thu, 03 Apr 2025 15:00:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=DnV1trvrdNMuF9UTSE7nMtjo50ckEFRdxjWUooiXWkF3CrMcws+uTb7eYuPeqSOVJzQ1gt d+0JD1HqzgvSOEYlg/8E1XxgUnBLmMt8sxOjlRGGEDmvlVhqamJ28566sc5Amfyh8q75rF td9lRL/Mw9DyLNijjSXPsqNeRmN5sUPQ8Isn83MlodYOlOFWnWGsnjHii6m+yGEIOx9sgH 4CHcGMVV6d3CpUfAZq1+480/pW1grWDOjsJvC1hJe0K9i4uw2xyK2YWES+ZU9KfOoC4437 Zibn2y+XST3PCzLEqa26l2yNyFDOOa+UrfAu0OiY39U2gvnavJvGIgE2t7i1cw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743692440; a=rsa-sha256; cv=none; b=TBxqH3o0koTIzYd2bGzR0CYfwElTLkxMgxtLxveiznwaOQ0MjTP40hy6AoOGMm+krQ3bra QnSoIeo9JvS4Rgr5YlEUCR74LGmWsw1Pv/WZgzLQ1/toA/cuorQ972BB6FQ6W7jqIMkXuk +bUWuvVcHcQ8KetYB7eOUviZjMhiT/wSoBcdofJkd5o1LAqYCOfMoiqQcFJxYuF05OKG3X gBa0K5IXs506yryoTFlhMY9jPidvQcLOoWbujtHC6rTLf9l6723ynGYDkKS6jIL6ANRx4E K5Kj6QXmcAoOBM2eVARRh6VnZJl7dkphh8iQtZOg/LdEyz3sLmQj4ShNhQXoVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=U+swh1gVX3ibbXffn3Vg7uEN8bDkX0ep0DushVCKrel+y3/jNXLdXsby6ja5OohB19hfLl 0uWSjh/094z4ITNmOx+M4KiCj8ZtpZFeKEumegeRUYSyLHAHAQCXgtCEeGOcZTByojevbA pqd1qvhHZ47WV10lYqQMHpNRAP9xw80VezwVvnfellhs24VWIyKoIoXLSGL+TdDvtnfvgU JETyxYmnSUGrx/bVDJAJBWbccCBNWHwyrYjs48Lpu0QOj93arRt+garLLOoMgLkwuFn47K Do5GiShdq96RRDI894cmVXGFTVjyzHYieqOTzlvTD9tsVrR2koS9Svnw6EGTQQ== 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 4ZT4fw6CK4z15Zj; Thu, 03 Apr 2025 15:00: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 533F0e4l032184; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533F0eYL032181; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git) Date: Thu, 3 Apr 2025 15:00:40 GMT Message-Id: <202504031500.533F0eYL032181@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: 86db734ae292 - main - stat(2): add st_bsdflags field List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 86db734ae292fee58532f09b17b50438f6889cc8 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=86db734ae292fee58532f09b17b50438f6889cc8 commit 86db734ae292fee58532f09b17b50438f6889cc8 Author: Konstantin Belousov AuthorDate: 2025-04-02 20:43:53 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-03 14:45:05 +0000 stat(2): add st_bsdflags field Reviewed by: markj, rmacklem Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49651 --- sys/compat/freebsd32/freebsd32.h | 2 +- sys/compat/freebsd32/freebsd32_misc.c | 2 +- sys/kern/kern_descrip.c | 1 + sys/kern/vfs_default.c | 2 ++ sys/kern/vfs_subr.c | 1 + sys/sys/stat.h | 5 ++++- sys/sys/vnode.h | 4 ++-- 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h index 3b45d291c70a..9d7a99535288 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -214,7 +214,7 @@ struct stat32 { ino_t st_ino; nlink_t st_nlink; mode_t st_mode; - uint16_t st_padding0; + uint16_t st_bsdflags; uid_t st_uid; gid_t st_gid; uint32_t st_padding1; diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index e10f5782c10f..3efc93969419 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -2309,8 +2309,8 @@ copy_stat(struct stat *in, struct stat32 *out) CP(*in, *out, st_flags); CP(*in, *out, st_gen); CP(*in, *out, st_filerev); + CP(*in, *out, st_bsdflags); TS_CP(*in, *out, st_birthtim); - out->st_padding0 = 0; out->st_padding1 = 0; #ifdef __STAT32_TIME_T_EXT out->st_atim_ext = 0; diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 9d81c30df328..f007b22f90ec 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1618,6 +1618,7 @@ kern_fstat(struct thread *td, int fd, struct stat *sbp) AUDIT_ARG_FILE(td->td_proc, fp); sbp->st_filerev = 0; + sbp->st_bsdflags = 0; error = fo_stat(fp, sbp, td->td_ucred); fdrop(fp, td); #ifdef __STAT_TIME_T_EXT diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 9f150570945b..c76fc9f9dc59 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -1513,6 +1513,7 @@ vop_stdstat(struct vop_stat_args *a) vap->va_gen = 0; vap->va_rdev = NODEV; vap->va_filerev = 0; + vap->va_bsdflags = 0; error = VOP_GETATTR(vp, vap, a->a_active_cred); if (error) @@ -1590,6 +1591,7 @@ vop_stdstat(struct vop_stat_args *a) sb->st_blocks = vap->va_bytes / S_BLKSIZE; sb->st_gen = vap->va_gen; sb->st_filerev = vap->va_filerev; + sb->st_bsdflags = vap->va_bsdflags; out: return (vop_stat_helper_post(a, error)); } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index c8ccbc18a7fe..fb624f751402 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1202,6 +1202,7 @@ vattr_null(struct vattr *vap) vap->va_gen = VNOVAL; vap->va_vaflags = 0; vap->va_filerev = VNOVAL; + vap->va_bsdflags = 0; } /* diff --git a/sys/sys/stat.h b/sys/sys/stat.h index 15b7ec99bdd9..6aa536732efd 100644 --- a/sys/sys/stat.h +++ b/sys/sys/stat.h @@ -159,7 +159,7 @@ struct stat { ino_t st_ino; /* inode's number */ nlink_t st_nlink; /* number of hard links */ mode_t st_mode; /* inode protection mode */ - __int16_t st_padding0; + __int16_t st_bsdflags; /* misc system flags */ uid_t st_uid; /* user ID of the file's owner */ gid_t st_gid; /* group ID of the file's group */ __int32_t st_padding1; @@ -340,6 +340,9 @@ struct nstat { #define SF_NOUNLINK 0x00100000 /* file may not be removed or renamed */ #define SF_SNAPSHOT 0x00200000 /* snapshot inode */ +/* st_bsdflags */ +#define SFBSD_NAMEDATTR 0x0001 /* file is named attribute or dir */ + #ifdef _KERNEL /* * Shorthand abbreviations of above. diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 8b4ac2031cf2..a2706e6e6b88 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -283,7 +283,7 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); struct vattr { __enum_uint8(vtype) va_type; /* vnode type (for create) */ u_short va_mode; /* files access mode and type */ - u_short va_padding0; + uint16_t va_bsdflags; /* same as st_bsdflags from stat(2) */ uid_t va_uid; /* owner user id */ gid_t va_gid; /* owner group id */ nlink_t va_nlink; /* number of references to file */ @@ -988,10 +988,10 @@ void vop_rename_fail(struct vop_rename_args *ap); AUDIT_ARG_VNODE1(ap->a_vp); \ _error = mac_vnode_check_stat(_ap->a_active_cred, _ap->a_file_cred, _ap->a_vp);\ if (__predict_true(_error == 0)) { \ - ap->a_sb->st_padding0 = 0; \ ap->a_sb->st_padding1 = 0; \ bzero(_ap->a_sb->st_spare, sizeof(_ap->a_sb->st_spare)); \ ap->a_sb->st_filerev = 0; \ + ap->a_sb->st_bsdflags = 0; \ } \ _error; \ }) From nobody Thu Apr 3 16:42:52 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6ws0ml6z5s8NJ; Thu, 03 Apr 2025 16:42: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 4ZT6wr6bFtz4HbG; Thu, 03 Apr 2025 16:42:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698572; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=E8jR30DhfkIXBY0NK14td3HeYVomR+ByzAARPvRMt4Y=; b=fxPDwo83WMwh+rW1JkJ+Hxr6OKGIPhw2wiozQRdgN9+BIgQ9IQYOqSw6plyUZ3ABAFViap qUSevHOzIpEZTXcSpBOSzqBx39B/pMiK1qDSZ9f5bv2Gs3mkrocfy7d9AJgXk79XgMjGHe ENkcK5pfBvKOzoMGgBGQ0NQ6UYiyu2P7ysI0N8ae2hB8J4oNpC58kM+yNA8zeWb0w3v5I3 gZP999kgh9gDYWAt+CTnZENwgpbnMt5O3ov4JRKGm7buLbyGMjzlzO3y3C1Psy7n5mOwoc q4eYG4cSYLgscXAt+v4pZWst/02stzUD9kq6Tveq2nSW/e/0IIhCdhob1i0KNA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698572; a=rsa-sha256; cv=none; b=Bnx0tBf5WHvsXPVdDF9DCZfRjlW6s2+zyl1xl9dafblTtI9oSa3pvFmkRU5eQLqiqDKrjW e/yQuwSQrp+PRSpZ5b/rfapgpAB8dSap6MW8Ur6c8o+Hk7qgaHUqeuSPDcm2Wxq/Q2yJho whuLaxsFEookZyRS21iT/XBdvn+kJaDGxCFuZUARVaoGNAWsdz0VVT4S7Tf8LHLsjnQ5z3 vIqekU1fcC71ZUvn3LSsEOlHW2l62h/KM8BTsx1DyjCSTkhxNojNReSH7Co+hYR58ss14h qnNrWe7KDU9FbAjRrZOlipTfoszZc80v0auKru1Jk28kfrI4IlX2ovlnXugTzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698572; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=E8jR30DhfkIXBY0NK14td3HeYVomR+ByzAARPvRMt4Y=; b=XFs6ILFUykd99/g3dqZ5/DjN/UxEaU0ZF1arhD99VxmF5a9aGy6L8WiT9XJbNHwzlsIpXL g1MoG3zPbLMsiY9sY4co+ZSiM0r/STw/T2o+lqqHSeLq0qdtpeDwF3bP+L44Y2890DWPn2 uzIXH4f8Z4tO1tec0slSg/01pAQHjlqkBdBZi8s1werMZ2zoSQhVU1SvTePfAg3b6wrkop KlpCbM/knzYwLSP60dGNXX0XciNY3xckfQVW+erRg2+F+Nqt/lqMMmhxtPPZILPVIk2W1I m22tbSFXlUpHhyqftVfkBbCYbKEav5PkpMvVsj92aHF0uCYonZPWd7oK5W8wTw== 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 4ZT6wr6025z18TW; Thu, 03 Apr 2025 16:42: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 533GgqQC022469; Thu, 3 Apr 2025 16:42:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533GgqHL022466; Thu, 3 Apr 2025 16:42:52 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:42:52 GMT Message-Id: <202504031642.533GgqHL022466@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: c844e848458f - stable/14 - snmp_pf: fix pfInterfacesIfRefsState List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c844e848458f50d77e9fa39b77d6f6e30c39f593 Auto-Submitted: auto-generated The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=c844e848458f50d77e9fa39b77d6f6e30c39f593 commit c844e848458f50d77e9fa39b77d6f6e30c39f593 Author: Kristof Provost AuthorDate: 2025-03-19 06:08:55 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 16:41:25 +0000 snmp_pf: fix pfInterfacesIfRefsState pfInterfacesIfRefsState was described as 'Null', which upset bsnmpwalk's attempt to resolve OIDs to symbolic names: > bsnmpwalk: Error adding leaf pfInterfacesIfRefsState to list This was done back in d6d3f01e0a339, because we don't return this value any more. Return it to 'Unsigned32', which fixes things, even if we still don't actually return this value. While here update the ORGANIZATION to reflect current ownership. Reviewed by: philip MFC after: 2 weeks Event: Tokyo Hackathon 202503 Differential Revision: https://reviews.freebsd.org/D49413 (cherry picked from commit 712309a64512c7e4ebf0e10de8a5c59d5a185ae8) --- usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt | 14 ++++++-------- usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt index 13a4a646a669..8127eb92601f 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt @@ -21,19 +21,17 @@ IMPORTS FROM BEGEMOT-MIB; begemotPf MODULE-IDENTITY - LAST-UPDATED "201003180000Z" - ORGANIZATION "NixSys BVBA" + LAST-UPDATED "202503190000Z" + ORGANIZATION "Alternative Enterprises (HK) Limited" CONTACT-INFO " Philip Paeps - Postal: NixSys BVBA - Louizastraat 14 - BE-2800 Mechelen - Belgium - E-Mail: philip@FreeBSD.org" DESCRIPTION "The Begemot MIB for the pf packet filter." + REVISION "202503190000Z" + DESCRIPTION + "Reverted pfInterfacesIfRefsState to Unsigned32" REVISION "201003180000Z" DESCRIPTION "Modified pfTablesAddrEntry to support IPv6 @@ -583,7 +581,7 @@ PfInterfacesIfEntry ::= SEQUENCE { pfInterfacesIfDescr OCTET STRING, pfInterfacesIfType INTEGER, pfInterfacesIfTZero TimeTicks, - pfInterfacesIfRefsState Null, + pfInterfacesIfRefsState Unsigned32, pfInterfacesIfRefsRule Unsigned32, pfInterfacesIf4BytesInPass Counter64, pfInterfacesIf4BytesInBlock Counter64, diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def b/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def index dcdf676aa752..7a517a876fab 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def +++ b/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def @@ -107,7 +107,7 @@ (2 pfInterfacesIfDescr OCTETSTRING GET) (3 pfInterfacesIfType ENUM ( 0 group 1 instance 2 detached ) GET) (4 pfInterfacesIfTZero TIMETICKS GET) - (5 pfInterfacesIfRefsState NULL GET) + (5 pfInterfacesIfRefsState UNSIGNED32 GET) (6 pfInterfacesIfRefsRule UNSIGNED32 GET) (7 pfInterfacesIf4BytesInPass COUNTER64 GET) (8 pfInterfacesIf4BytesInBlock COUNTER64 GET) From nobody Thu Apr 3 16:42:53 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6wt2Vm6z5s8Dx; Thu, 03 Apr 2025 16:42: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 4ZT6wt0Qg2z4Hm3; Thu, 03 Apr 2025 16:42:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BwGgJep3d2Ztwi1GOgSNrjt/xFzDOI3vt7C/OYq2xT0=; b=Sd4Nlt1wKJ35VnVJijIadOrg9xQcxZmKGR9NONF4mJUiWSIU6o2tAcOZdDsgOQSdIXiPIn 2GzI43VdL0DRhnTxrwkH9ae0u8mi1KqmIswmJj7Lpl9Nv7TOatuWhwKgsRaS1PV7bgZJWr KalF5yC7lNV8OO1HxbWzhCWS/nTp8crlaNGv0mdPVbe2jleKZ86SJLeSLHnCHGCmXqb0SQ m5EN9QzneCYTBkSA07kqf2jlrIJPtyJZbnRFfhC1fiQFdC611pddm+sgdG/MIqLyiDxREu 107XTerFyn6jRH8KjuAnn9GANQcoM0D1Lsbosf/E4bzZUAgEy7SlI4JXOhI18A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698574; a=rsa-sha256; cv=none; b=du8lQVIW5HhI7ToztnRAemFjkgT1C4HMMdKjmfbl9MtZ/brOYvyVQzYU0aA/c/7hhtny+l tVomIFVBpVCuD5pKP07J1DeOrSFyZcnP3rWaGJrXvCSMKvq7k3gyKtLDmF4MyKYXEyuTsQ z3TXtwbsEDNNKKDPvd8Lk2H6WiPo8ViuSvrvlCL91TxhL6OV/5C7Q4lXunby3lTiaRzbUE Y8dMkd3tDtZsh17FJQ+3tOxVDs8KoSgVg4smAEueP2ua+EH3QQspD8YQZaSAoIn6OXHpwO YkYwwDR/zqGLullGupre8Wag9U+wbtoBLzqpEIkuuyvT5YD5lnHSkhnIJZ0JFg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BwGgJep3d2Ztwi1GOgSNrjt/xFzDOI3vt7C/OYq2xT0=; b=h+bIxNNXr/FWwAlpxPQNd7Ecbl+xR8FwjMKbsXkiuzbDEJrmRTaqxAFEX0/V9TzW7pcRlr CufYzp7oqw2u4r0fX0VnuObt0PlmOrmiD+c/E8Frpvesh01mqId4QbO8XrSkEiedolNP/S pvFD0NVgsTxe8m1BuO1Nv+RL69Ry02BTfYfwVS6x/5Ugt4i5SW9SY3ESIj2Rj/tPqvKD9m LVl/gicJYdB8enC3RNkbKVW+QXL7kdxNZLkAsy4K8nVBYSCxEiXNVFyatA2oqmyF03E+Mj esStsQNvJgOr8BlimQ9QASG4Su9cGKQdn+WRDR1t3e2HDsPPRQXAEbfEQEHIAg== 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 4ZT6ws6vdLz17kC; Thu, 03 Apr 2025 16:42: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 533GgrcD022516; Thu, 3 Apr 2025 16:42:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533Ggr2T022513; Thu, 3 Apr 2025 16:42:53 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:42:53 GMT Message-Id: <202504031642.533Ggr2T022513@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 3410b98ce2c3 - stable/14 - pf tests: add a basic snmp_pf test case List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3410b98ce2c36a49fffa9a975425333c1f05b0bc Auto-Submitted: auto-generated The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=3410b98ce2c36a49fffa9a975425333c1f05b0bc commit 3410b98ce2c36a49fffa9a975425333c1f05b0bc Author: Kristof Provost AuthorDate: 2025-03-19 06:42:42 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 16:41:25 +0000 pf tests: add a basic snmp_pf test case Event: Tokyo Hackathon 202503 (cherry picked from commit c849f533326026501c28cb2c344b16723862551a) --- tests/sys/netpfil/pf/Makefile | 6 +++- tests/sys/netpfil/pf/bsnmpd.conf | 47 ++++++++++++++++++++++++++ tests/sys/netpfil/pf/snmp.sh | 71 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) diff --git a/tests/sys/netpfil/pf/Makefile b/tests/sys/netpfil/pf/Makefile index f2ccd5aa6ec2..1d9c685b2565 100644 --- a/tests/sys/netpfil/pf/Makefile +++ b/tests/sys/netpfil/pf/Makefile @@ -38,6 +38,7 @@ ATF_TESTS_SH+= altq \ sctp \ set_skip \ set_tos \ + snmp \ src_track \ syncookie \ synproxy \ @@ -54,7 +55,9 @@ TEST_METADATA+= execenv_jail_params="vnet allow.raw_sockets" PROGS= divapp -${PACKAGE}FILES+= CVE-2019-5597.py \ +${PACKAGE}FILES+= \ + bsnmpd.conf \ + CVE-2019-5597.py \ CVE-2019-5598.py \ daytime_inetd.conf \ echo_inetd.conf \ @@ -69,6 +72,7 @@ ${PACKAGE}FILES+= CVE-2019-5597.py \ rdr-srcport.py \ utils.subr +${PACKAGE}FILESMODE_bsnmpd.conf= 0555 ${PACKAGE}FILESMODE_CVE-2019-5597.py= 0555 ${PACKAGE}FILESMODE_CVE-2019-5598.py= 0555 ${PACKAGE}FILESMODE_fragcommon.py= 0555 diff --git a/tests/sys/netpfil/pf/bsnmpd.conf b/tests/sys/netpfil/pf/bsnmpd.conf new file mode 100644 index 000000000000..27abdda6cbd3 --- /dev/null +++ b/tests/sys/netpfil/pf/bsnmpd.conf @@ -0,0 +1,47 @@ +location := "A galaxy far, far away" +contact := "skywalker@Tatooine" +system := 1 + +read := "public" +write := "geheim" +trap := "mytrap" + +NoAuthProtocol := 1.3.6.1.6.3.10.1.1.1 +HMACMD5AuthProtocol := 1.3.6.1.6.3.10.1.1.2 +HMACSHAAuthProtocol := 1.3.6.1.6.3.10.1.1.3 +NoPrivProtocol := 1.3.6.1.6.3.10.1.2.1 +DESPrivProtocol := 1.3.6.1.6.3.10.1.2.2 +AesCfb128Protocol := 1.3.6.1.6.3.10.1.2.4 + +securityModelAny := 0 +securityModelSNMPv1 := 1 +securityModelSNMPv2c := 2 +securityModelUSM := 3 + +MPmodelSNMPv1 := 0 +MPmodelSNMPv2c := 1 +MPmodelSNMPv3 := 3 + +noAuthNoPriv := 1 +authNoPriv := 2 +authPriv := 3 + +%snmpd +begemotSnmpdDebugDumpPdus = 2 +begemotSnmpdDebugSyslogPri = 7 + +begemotSnmpdCommunityString.0.1 = $(read) +begemotSnmpdCommunityDisable = 1 + +begemotSnmpdTransInetStatus.1.4.0.0.0.0.161.1 = 4 +begemotSnmpdTransInetStatus.2.16.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.161.1 = 4 + +begemotSnmpdLocalPortStatus."/var/run/snmpd.sock" = 1 +begemotSnmpdLocalPortType."/var/run/snmpd.sock" = 4 + +sysContact = $(contact) +sysLocation = $(location) +sysObjectId = 1.3.6.1.4.1.12325.1.1.2.1.$(system) + +begemotSnmpdModulePath."mibII" = "/usr/lib/snmp_mibII.so" +begemotSnmpdModulePath."pf" = "/usr/lib/snmp_pf.so" diff --git a/tests/sys/netpfil/pf/snmp.sh b/tests/sys/netpfil/pf/snmp.sh new file mode 100644 index 000000000000..0d6b2eb10ec7 --- /dev/null +++ b/tests/sys/netpfil/pf/snmp.sh @@ -0,0 +1,71 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2025 Kristof Provost +# +# 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. + +. $(atf_get_srcdir)/utils.subr + +atf_test_case "basic" "cleanup" +basic_head() +{ + atf_set descr 'Basic pf_snmp test' + atf_set require.user root +} + +basic_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + # Start bsnmpd + jexec alcatraz bsnmpd -c $(atf_get_srcdir)/bsnmpd.conf + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "pass" + + # Sanity check, and create state + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + # pf should be enabled + atf_check -s exit:0 -o match:'pfStatusRunning.0 = true' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def begemot +} + +basic_cleanup() +{ + pft_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case "basic" +} From nobody Thu Apr 3 16:42:54 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6wv38xgz5s8CJ; Thu, 03 Apr 2025 16:42: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 4ZT6wv17CVz4HgT; Thu, 03 Apr 2025 16:42:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QuUX8OR6Roo/oltdnZBBgjmcXPJE725k1WuELF123bU=; b=KMs7eae61c2xX2DAyQofMGfj3WBtQUjudszTGlkjoqtJafEzIk/kqivEft6pc87k+s7azn SBWGfL8OYcaVv/wMzBQvGhzZda5rp7JRvVGEjJjpFGwVcPHU7r0r0Ea7ExdjfXWyVcT5Dp pJloMq1myrrL9ITReStjw4o9WFeyxSU+tC2gEX2whP2CQmiNuSQb+YuqWhbCdpwtPSEiub nijuccnCQ2/EpmyvlPGyEDoEbO9AcMrJrKlzMzTZu5UQ5R1EakeO1J86RQQ3X78eGNeSLV Km3JE1bb7z4gzjFU1E7uKayhLhY3Kw8z0sC/juNeIStHOAhqJeO40Ijp1DoBtw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698575; a=rsa-sha256; cv=none; b=oMc2W44fN1C9CS9h/bfOfwlhkB5/4P8pzkct8qanMCHYIczyUZIeSYLOEM3vXr4ieIyhuT 9KYZfSlX36irl17G6TFZwrWMdt0NK2OMjehviGfX/NB7UArr+CNw6hF8yHYWrwBQ69y31k w5lthsXQ6Iw33UsbR3hUeNn1JdRYxCgIqvs8BjNztzPnqVuesWSjcSPxQaJYrcBTMRq0vS jcGovnKZOcM0xFhX3V2Yo4mRv9B0Lx8MfRP/OPzSY8JpHIZW4Br8gKESVwMf7DbQ6PXmEk HV2mhh6cwMKzh7aTWsOVdhP/P7Ng8JfuoD7DaWtZeHohCaU6XJ4hgeumDF4vLg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QuUX8OR6Roo/oltdnZBBgjmcXPJE725k1WuELF123bU=; b=q/SQjbh8ldBFYpBb6D56RBwz/iO6xU2BELenK4r1kn6wc2iqTafjIThlpzPR5AuR5a8Ce/ mqxayXpNrrl730fdTO9kRaoV+qGuDUDU0rym4WzF0ZRECIr6MrWuKjtxmL3WSf2V0JAtPx YsQQyVXC3woJ8JcWkKdhE/bqF8XFnelalEsQ1CfqacxU+4Wc0rCMendGVkb2+zbwltL+1m xnkYh9c4SRmFe3UZyaEAwzAkyF5xhBwvmTVWyLPVttlDphP4lANAAcGnlb/cVFABj2IrkP zJVcc3g5XR5vUlP4lu/zqx2VWPBAfrmZjeoVr+99MXd7q1d9YWTbhWRSbTc7cA== 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 4ZT6wv0krVz17kD; Thu, 03 Apr 2025 16:42: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 533GgtXf022553; Thu, 3 Apr 2025 16:42:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533GgsFZ022550; Thu, 3 Apr 2025 16:42:54 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:42:54 GMT Message-Id: <202504031642.533GgsFZ022550@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 7fa5f4995f06 - stable/14 - pf tests: test table information export via snmp_pf List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7fa5f4995f0657c9992bf09df43b2a815938b33d Auto-Submitted: auto-generated The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=7fa5f4995f0657c9992bf09df43b2a815938b33d commit 7fa5f4995f0657c9992bf09df43b2a815938b33d Author: Kristof Provost AuthorDate: 2025-03-20 01:27:52 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 16:41:25 +0000 pf tests: test table information export via snmp_pf Event: Tokyo Hackathon 202503 (cherry picked from commit 36586800803d24f1137d861bbaf487a6bde16a09) --- tests/sys/netpfil/pf/snmp.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/sys/netpfil/pf/snmp.sh b/tests/sys/netpfil/pf/snmp.sh index 0d6b2eb10ec7..37cc4b75cf92 100644 --- a/tests/sys/netpfil/pf/snmp.sh +++ b/tests/sys/netpfil/pf/snmp.sh @@ -65,7 +65,59 @@ basic_cleanup() pft_cleanup } +atf_test_case "table" "cleanup" +table_head() +{ + atf_set descr 'Test tables and pf_snmp' + atf_set require.user root +} + +table_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "table counters { 192.0.2.0/24 }" \ + "pass in from " + + # Start bsnmpd after creating the table so we don't have to wait for + # a refresh timeout + jexec alcatraz bsnmpd -c $(atf_get_srcdir)/bsnmpd.conf + + # Sanity check, and create state + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + # We should have one table + atf_check -s exit:0 -o match:'pfTablesTblNumber.0 = 1' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def begemot + + # We have the 'foo' table + atf_check -s exit:0 -o match:'pfTablesTblDescr.* = foo' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables + + # Which contains address 192.0.2.0/24 + atf_check -s exit:0 -o match:'pfTablesAddrNet.* = 192.0.2.0' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables + atf_check -s exit:0 -o match:'pfTablesAddrPrefix.* = 24' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables +} + +table_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "basic" + atf_add_test_case "table" } From nobody Thu Apr 3 16:43:06 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6x732C6z5s8ft; Thu, 03 Apr 2025 16:43: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 4ZT6x644l3z4J3F; Thu, 03 Apr 2025 16:43:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nUHsz9t2Blv7buWGJwHLavDL2PC5/M1n+M+3z0+LPhs=; b=kJ8s8+SdmKGqLvpdn1Gveanw8s15/hzy3o8k/93dOPBrk9ZsB0yx1jjl5n4nQTdSMzjhle dI7uD4Masd0WR84yby+kVWppPQ6CjzO2O9NBWyQwp1NsUWYfOcYMwiqMWRcMX8PD9ku5mN bAEuAsxZoupWEKYOg1SK+/rSkpTbhmsiL3Dff6WSrsu71IONTRQofDPKgUOEW8fTOiXDbT KjixHdWRGbjm2+t8oqAlbBY73nFer+KqJyo0l8fp9PueqcLbd2o0EpxhRW/+npCh3waUGA eMpG3UofdArpMZFHAk5HSzXg2OqsxPIIDJcm+IjWY5UGoyj44kAyi8M6SFOJhg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698586; a=rsa-sha256; cv=none; b=K5yrfp/SJPel/apI0oJ3B8Kzu3mBM2x3QMM1GwyoozCkI5rB8e+C1sXrK4It05p2zAXIsj np5h2GagKac4jhhDnH2tjxm5qDOM36q7bGH05hbsezo7M9aU5CAT6UgsmCQrBxyX5mwFY0 Jgg0I6ccJSu/uhVLjZthrjxcpv2Rm0fjyEn+K7TJATwfCD3OMXaB4Z9q9pt6MPkHsY+IUV 5unWUuEK/0X3fJMwnKxJuk9KfpAZU6G1V8eSaKyHY+4bC0NlEIxLPgqw3ZzOwvBJmMeyu7 KnUayFrQXGSoiVKIU4dALMSt5loR33NL08f6Cubk1GUL/q70B8TgTPojXtlIHw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nUHsz9t2Blv7buWGJwHLavDL2PC5/M1n+M+3z0+LPhs=; b=UFaJ7NVNWV2sPLhHJ1h+LBIllCp7abB5gtbi/GzqksZbdSBo2Jh4f8PRtoN+un57vyiX3P mFBYE4T0nnxvAGLcef31u9vJ31LiF5pTwMPNtTAHAf2oUY5Uw5m43EEq2ImTDkVlE/wDTR S2nKzi5T0W2M3zMiL+3hj6xQfxMeciL90YAuUf64cCxQwK1uvuJJ2h0riMpOGsaHivaxPV 4TYo7hP2vLYGsM6hWmRoj+NcV1JaZUMySwJahg5RRBMepMbJW3oZGa9eGeCZKiK++lQbXq A8b0OUcr2tbo20Lzo7EazMms37z8phhq2GRMAd7wmiLzB4/4iYRBRxNypDhnvA== 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 4ZT6x63hMzz1806; Thu, 03 Apr 2025 16:43: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 533Gh60I022821; Thu, 3 Apr 2025 16:43:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533Gh6rw022818; Thu, 3 Apr 2025 16:43:06 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:43:06 GMT Message-Id: <202504031643.533Gh6rw022818@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 42aa0d02c281 - stable/13 - pf tests: test table information export via snmp_pf List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 42aa0d02c281d790c77ce18789ccab20e9274260 Auto-Submitted: auto-generated The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=42aa0d02c281d790c77ce18789ccab20e9274260 commit 42aa0d02c281d790c77ce18789ccab20e9274260 Author: Kristof Provost AuthorDate: 2025-03-20 01:27:52 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 05:58:58 +0000 pf tests: test table information export via snmp_pf Event: Tokyo Hackathon 202503 (cherry picked from commit 36586800803d24f1137d861bbaf487a6bde16a09) --- tests/sys/netpfil/pf/snmp.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/sys/netpfil/pf/snmp.sh b/tests/sys/netpfil/pf/snmp.sh index 0d6b2eb10ec7..37cc4b75cf92 100644 --- a/tests/sys/netpfil/pf/snmp.sh +++ b/tests/sys/netpfil/pf/snmp.sh @@ -65,7 +65,59 @@ basic_cleanup() pft_cleanup } +atf_test_case "table" "cleanup" +table_head() +{ + atf_set descr 'Test tables and pf_snmp' + atf_set require.user root +} + +table_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "table counters { 192.0.2.0/24 }" \ + "pass in from " + + # Start bsnmpd after creating the table so we don't have to wait for + # a refresh timeout + jexec alcatraz bsnmpd -c $(atf_get_srcdir)/bsnmpd.conf + + # Sanity check, and create state + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + # We should have one table + atf_check -s exit:0 -o match:'pfTablesTblNumber.0 = 1' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def begemot + + # We have the 'foo' table + atf_check -s exit:0 -o match:'pfTablesTblDescr.* = foo' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables + + # Which contains address 192.0.2.0/24 + atf_check -s exit:0 -o match:'pfTablesAddrNet.* = 192.0.2.0' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables + atf_check -s exit:0 -o match:'pfTablesAddrPrefix.* = 24' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables +} + +table_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "basic" + atf_add_test_case "table" } From nobody Thu Apr 3 16:43:04 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6x45T5zz5s8NK; Thu, 03 Apr 2025 16:43: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 4ZT6x433CYz4JJT; Thu, 03 Apr 2025 16:43:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+jb0CTBcF9votHOCyF3ERUOYvuDkngNuzI6ez97FGK4=; b=CV4Jw2qIpdyzSmTwgRbtfKlfcGjYSVITyS08veBSMwx4njXNkBR++zTc3o5HAdmJuxuzNM TMe/9RoV+ZX0b876mH5elL7CO3kWVBqY0ihHDXPyOPUqy3gj2P5JYVOmvrqtj8KIxxpeki Ydh8ch6BRvl9CmX9kgZLo0Ph8o5lr4hnSxyrL9/0uNEiyid74CCBtMpyHGC9nYVyQkr6pm 63gPpscC37W57u7pKLgwqNhmNaOt2gmIzSVWIYqhszvIBPkuezo5cQl9vghjZzedqPHs34 /0W9mmmzrJMC+5P67ppc2O6nHY5ZnGW/ze+vVysKUIVljrl92cNJiAFzzCZXqw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698584; a=rsa-sha256; cv=none; b=UCCg1Iejrxu77mWyBrAKLJHV2DFqMNgIoUFaUswUsVLDuUl96o6tDGX2qP1v684ywo6XqF yal8EP/nVUAml6L/CLSyrd+Su+YnRaFusxV9cKj0DU3lxFPVxoARjDtM5H1Ztw87BkKhGo LYhcwWGTs37kHul3sEd4ktQGNFymuUt3/4ZYYM2wbkqbQYdFvJ3A7ZoiE/bh05amV9j5Wq kkz3xVJ5WVf2BhvMaydhDUUokjcVQVabnG83c046g3+DhAZDeY8nmMYNRHemEeYJ17FGWS 6GSsYnXP3grBhtFJ+uT7aWJDuS5+/nrFWX6fMhPM2OpZmQ6Six1NWRT8MgmLTQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698584; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+jb0CTBcF9votHOCyF3ERUOYvuDkngNuzI6ez97FGK4=; b=BBNDIk+Mx27P0j8inDv1lD1TJb4ve2k1/Jt/H1a22v+bzK8+IEf6LF4MbdVIjqcPBDAZKv b4hWaK7GJUlsB4Me1FwrNh0l5+4AlM8C+KvyVutD9rsZ1Dog48W7TtR1UkQOfSdyEJcndQ EDRFTdSzlLVeYc+Ef2QHIspwi7U/c6/GsnxvmTHlMBz8jS34RbHhcmPfySUruNpgZ70wje npZbLQN2zb5KVRf1mSwm4MnVFYDz2sF1oAGbb/eDlm0HI+E1fMsTV+LKyhRxk2qKf2Kaly 6i+sfFHjE55j8+Y5z4fr7rjvwUEErLMA8ZZtC8vR6ui8P6QjM8V/lJUmba+Ttg== 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 4ZT6x42TXVz18Fx; Thu, 03 Apr 2025 16:43: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 533Gh4KK022748; Thu, 3 Apr 2025 16:43:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533Gh4Zq022746; Thu, 3 Apr 2025 16:43:04 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:43:04 GMT Message-Id: <202504031643.533Gh4Zq022746@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 861b8faca9e3 - stable/13 - snmp_pf: fix pfInterfacesIfRefsState List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 861b8faca9e3644cc88e391e852bf034e5cfc298 Auto-Submitted: auto-generated The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=861b8faca9e3644cc88e391e852bf034e5cfc298 commit 861b8faca9e3644cc88e391e852bf034e5cfc298 Author: Kristof Provost AuthorDate: 2025-03-19 06:08:55 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 05:57:30 +0000 snmp_pf: fix pfInterfacesIfRefsState pfInterfacesIfRefsState was described as 'Null', which upset bsnmpwalk's attempt to resolve OIDs to symbolic names: > bsnmpwalk: Error adding leaf pfInterfacesIfRefsState to list This was done back in d6d3f01e0a339, because we don't return this value any more. Return it to 'Unsigned32', which fixes things, even if we still don't actually return this value. While here update the ORGANIZATION to reflect current ownership. Reviewed by: philip MFC after: 2 weeks Event: Tokyo Hackathon 202503 Differential Revision: https://reviews.freebsd.org/D49413 (cherry picked from commit 712309a64512c7e4ebf0e10de8a5c59d5a185ae8) --- usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt | 14 ++++++-------- usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt index 13a4a646a669..8127eb92601f 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt @@ -21,19 +21,17 @@ IMPORTS FROM BEGEMOT-MIB; begemotPf MODULE-IDENTITY - LAST-UPDATED "201003180000Z" - ORGANIZATION "NixSys BVBA" + LAST-UPDATED "202503190000Z" + ORGANIZATION "Alternative Enterprises (HK) Limited" CONTACT-INFO " Philip Paeps - Postal: NixSys BVBA - Louizastraat 14 - BE-2800 Mechelen - Belgium - E-Mail: philip@FreeBSD.org" DESCRIPTION "The Begemot MIB for the pf packet filter." + REVISION "202503190000Z" + DESCRIPTION + "Reverted pfInterfacesIfRefsState to Unsigned32" REVISION "201003180000Z" DESCRIPTION "Modified pfTablesAddrEntry to support IPv6 @@ -583,7 +581,7 @@ PfInterfacesIfEntry ::= SEQUENCE { pfInterfacesIfDescr OCTET STRING, pfInterfacesIfType INTEGER, pfInterfacesIfTZero TimeTicks, - pfInterfacesIfRefsState Null, + pfInterfacesIfRefsState Unsigned32, pfInterfacesIfRefsRule Unsigned32, pfInterfacesIf4BytesInPass Counter64, pfInterfacesIf4BytesInBlock Counter64, diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def b/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def index dcdf676aa752..7a517a876fab 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def +++ b/usr.sbin/bsnmpd/modules/snmp_pf/pf_tree.def @@ -107,7 +107,7 @@ (2 pfInterfacesIfDescr OCTETSTRING GET) (3 pfInterfacesIfType ENUM ( 0 group 1 instance 2 detached ) GET) (4 pfInterfacesIfTZero TIMETICKS GET) - (5 pfInterfacesIfRefsState NULL GET) + (5 pfInterfacesIfRefsState UNSIGNED32 GET) (6 pfInterfacesIfRefsRule UNSIGNED32 GET) (7 pfInterfacesIf4BytesInPass COUNTER64 GET) (8 pfInterfacesIf4BytesInBlock COUNTER64 GET) From nobody Thu Apr 3 16:43:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT6x62wtNz5s8M4; Thu, 03 Apr 2025 16:43: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 4ZT6x54Kkhz4J0M; Thu, 03 Apr 2025 16:43:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698585; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p8RQMEb/MLNBZhJTr/EHrnSn6eMoHZLfOY4XRrMsS4c=; b=mNoKoKUrzkn9mBluW/MJxBDyibV0BRDu46PzBmZ8D0MYPszuQLE8W0OJF7H3kpXNqOaGKS W93sB4kGttPihpywQICmIpE6McGCIVaRn6S5WmXMY+Er1nXaqThapALDt/a4dVG/VOwWkg bLGkDam9HzuUph7mFYiiG4VaiHQwVEF8/s2VjPGaOxqZEXHrhTz1ryGCEO9asuxOpVjvRD 12vHQhw+l+LkaiSn3KalcZJHWngPaigNAiYobAXUOgY7yRAzSxkh9upPAP173ENkMQcOb4 31tdb/bxK0cCUpNH/hafB9EF2Lq1QIdHvtuF/SKy+fg3WKFz+GLGYIXglnMstg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743698585; a=rsa-sha256; cv=none; b=xr2FLwx4X75/T0DQeMIyRsGVqoR8z0yBvTU/mh64bitV48yOatVRFnZgg4mLQ9c8xz4ADf XONCXn6TpQGT65OiJnaDq7Ea02xXXwzp2OOtlSkGioBirN4pxKD2N4mblSkiMVYSTmDvVK fW84yUvhgIjnqhYgZnPFRHLzkBQg7hM2JSh1c/s1faxtJhloptY40HwIqr9GI/oa0sWMCt TLLqIL6De4ZzMwFkPyA3CsjFKauw5Erg2mvD2/+6PvS5GBRbaxHF4Fug5U3omyTQpUudcl 9ZntQ2/v7sFnx1kSy5U7FCNyFOLg/y7u+38MaLwN5ffDf2ECtAOucyyNyw4ZIQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743698585; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p8RQMEb/MLNBZhJTr/EHrnSn6eMoHZLfOY4XRrMsS4c=; b=Cz+JG9B6wH1lXO0kJkGiz/XwjR5HrPnqyOIkRuIsXaesRTBeGKhbMb2qDy6eDF1U6wx37/ z7eZ726BY1q6AboEEKWoZeDAcrdgNEcsNRBhqPlBgSB9kx0tid5QQBJu9O48rn/y6XgAxz OCQN5gCo12JUmKCDPfpwqYFvmwnIfZSL4Q2ReS7RQRmSDAT27c9J+q/NLSyN4jqfw6jgVf Kyo855kPExo6o/LUWCnhU/jXQ1rY43BjAVHFa9Eei5RaRYK4nII4vxtHaELuUwQt1TNXfL puz24927tLO9SAKEwgwrqtRCvaBxLfNeq8WQc3eqVbJr7qANquB74Ag/afpgCg== 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 4ZT6x53NR8z181n; Thu, 03 Apr 2025 16:43: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 533Gh5Cw022788; Thu, 3 Apr 2025 16:43:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533Gh5YO022785; Thu, 3 Apr 2025 16:43:05 GMT (envelope-from git) Date: Thu, 3 Apr 2025 16:43:05 GMT Message-Id: <202504031643.533Gh5YO022785@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: ca1bf31177d2 - stable/13 - pf tests: add a basic snmp_pf test case List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ca1bf31177d2cdf7618f63f2317558fa089af54e Auto-Submitted: auto-generated The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=ca1bf31177d2cdf7618f63f2317558fa089af54e commit ca1bf31177d2cdf7618f63f2317558fa089af54e Author: Kristof Provost AuthorDate: 2025-03-19 06:42:42 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 05:58:48 +0000 pf tests: add a basic snmp_pf test case Event: Tokyo Hackathon 202503 (cherry picked from commit c849f533326026501c28cb2c344b16723862551a) --- tests/sys/netpfil/pf/Makefile | 6 +++- tests/sys/netpfil/pf/bsnmpd.conf | 47 ++++++++++++++++++++++++++ tests/sys/netpfil/pf/snmp.sh | 71 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) diff --git a/tests/sys/netpfil/pf/Makefile b/tests/sys/netpfil/pf/Makefile index f033940b4564..eaec2c9d5203 100644 --- a/tests/sys/netpfil/pf/Makefile +++ b/tests/sys/netpfil/pf/Makefile @@ -27,6 +27,7 @@ ATF_TESTS_SH+= altq \ sctp \ set_skip \ set_tos \ + snmp \ src_track \ syncookie \ synproxy \ @@ -40,7 +41,9 @@ ATF_TESTS_PYTEST+= sctp.py # Tests reuse jail names and so cannot run in parallel. TEST_METADATA+= is_exclusive=true -${PACKAGE}FILES+= CVE-2019-5597.py \ +${PACKAGE}FILES+= \ + bsnmpd.conf \ + CVE-2019-5597.py \ CVE-2019-5598.py \ echo_inetd.conf \ fragcommon.py \ @@ -50,6 +53,7 @@ ${PACKAGE}FILES+= CVE-2019-5597.py \ pfsync_defer.py \ utils.subr +${PACKAGE}FILESMODE_bsnmpd.conf= 0555 ${PACKAGE}FILESMODE_CVE-2019-5597.py= 0555 ${PACKAGE}FILESMODE_CVE-2019-5598.py= 0555 ${PACKAGE}FILESMODE_fragcommon.py= 0555 diff --git a/tests/sys/netpfil/pf/bsnmpd.conf b/tests/sys/netpfil/pf/bsnmpd.conf new file mode 100644 index 000000000000..27abdda6cbd3 --- /dev/null +++ b/tests/sys/netpfil/pf/bsnmpd.conf @@ -0,0 +1,47 @@ +location := "A galaxy far, far away" +contact := "skywalker@Tatooine" +system := 1 + +read := "public" +write := "geheim" +trap := "mytrap" + +NoAuthProtocol := 1.3.6.1.6.3.10.1.1.1 +HMACMD5AuthProtocol := 1.3.6.1.6.3.10.1.1.2 +HMACSHAAuthProtocol := 1.3.6.1.6.3.10.1.1.3 +NoPrivProtocol := 1.3.6.1.6.3.10.1.2.1 +DESPrivProtocol := 1.3.6.1.6.3.10.1.2.2 +AesCfb128Protocol := 1.3.6.1.6.3.10.1.2.4 + +securityModelAny := 0 +securityModelSNMPv1 := 1 +securityModelSNMPv2c := 2 +securityModelUSM := 3 + +MPmodelSNMPv1 := 0 +MPmodelSNMPv2c := 1 +MPmodelSNMPv3 := 3 + +noAuthNoPriv := 1 +authNoPriv := 2 +authPriv := 3 + +%snmpd +begemotSnmpdDebugDumpPdus = 2 +begemotSnmpdDebugSyslogPri = 7 + +begemotSnmpdCommunityString.0.1 = $(read) +begemotSnmpdCommunityDisable = 1 + +begemotSnmpdTransInetStatus.1.4.0.0.0.0.161.1 = 4 +begemotSnmpdTransInetStatus.2.16.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.161.1 = 4 + +begemotSnmpdLocalPortStatus."/var/run/snmpd.sock" = 1 +begemotSnmpdLocalPortType."/var/run/snmpd.sock" = 4 + +sysContact = $(contact) +sysLocation = $(location) +sysObjectId = 1.3.6.1.4.1.12325.1.1.2.1.$(system) + +begemotSnmpdModulePath."mibII" = "/usr/lib/snmp_mibII.so" +begemotSnmpdModulePath."pf" = "/usr/lib/snmp_pf.so" diff --git a/tests/sys/netpfil/pf/snmp.sh b/tests/sys/netpfil/pf/snmp.sh new file mode 100644 index 000000000000..0d6b2eb10ec7 --- /dev/null +++ b/tests/sys/netpfil/pf/snmp.sh @@ -0,0 +1,71 @@ +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2025 Kristof Provost +# +# 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. + +. $(atf_get_srcdir)/utils.subr + +atf_test_case "basic" "cleanup" +basic_head() +{ + atf_set descr 'Basic pf_snmp test' + atf_set require.user root +} + +basic_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + # Start bsnmpd + jexec alcatraz bsnmpd -c $(atf_get_srcdir)/bsnmpd.conf + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "pass" + + # Sanity check, and create state + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + # pf should be enabled + atf_check -s exit:0 -o match:'pfStatusRunning.0 = true' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def begemot +} + +basic_cleanup() +{ + pft_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case "basic" +} From nobody Thu Apr 3 17:00:17 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT7Jx3WvNz5s9LH; Thu, 03 Apr 2025 17:00: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 4ZT7Jx3598z4Lp6; Thu, 03 Apr 2025 17:00:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743699617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5rUFxBjh2Tgd5hedv1Y6SVR8Veo/gJt6QZAD+mdFqbM=; b=oZv26jBHppoq69RKT8xeSF/mgtABBD4RZlYSFiy0jtagSTNe+IVetPjiQCjRUSWoMAmgO/ 0ZfPmacRgV3sMG30F8HDbpjdRAdEb9dolGgRAMJVChO0W/CsefjGShmvt3GJJam8bYvdFA KnPMkZITat+P+kP/8Yg3bUX22gqKb+8fJaVKNHkLONfYya0VhxtjBGFnNLDQQoUVyq03AX cxIFo7u6iH5N/5dOBtXfhagh2z0Z8SliBFHx5ov3VYdzcmn/B6t3JaAGkmU7BYNWAk0frj 8LYU+ZiSfcpgtN2VhsAQp6xQ2XunEVW9M12jm7wnvuu01X7D8fHYw7oW5/J2GA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743699617; a=rsa-sha256; cv=none; b=t86Lg56/je8WGp4oOxhuKgPUrWXMTS3wXqDYBkem+ZuO1XDiITIFMEvtFS6H4JUM00Xx9f pGuX7J8NEFmq+xzdOminmV5XZgCxDz6vxT5d1HYkUkMPZn4jOfdf3YQktkXKYvtjWTWfmP unMQTVcLc+9LSki4PEyvv9iMPxXK6VRylE8NHRofZuus7uSQ7rSEkVL9U8OAxfOEHSO5cY 8vKX6XUQcXwz/0p4SX+Tkh/UFcQn1q3G+3FlEBqoDJ8xbP15JzSm4XTle9PsErvX9YgZNm 8w41pe3y69ikCClHS+NB8IZp6zedxtjOPLjj5du6Rab05hubenGQmIeWp1asgQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743699617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5rUFxBjh2Tgd5hedv1Y6SVR8Veo/gJt6QZAD+mdFqbM=; b=KVbq/O+8wKAvO3LRB1B5MXNdga9F3bhqgHVYK7bB9BviXShL+s7B57DTUZjdiVIcvxKtt2 dpC2ODA5LGx2W9Y0EEHhuqUrppovVBs7A0aqQkwBB3X8b86ki6MyaeLxPggD62DndpgGcg lASe5e9K3/9CoC1ned6Sr1fRbVCKf2jiuy4aYr+WEsObgXtfTXmDWq5FaHDc7nX/Ly2KYV V5H8mAyAbe3Ij9MJrAW3l1pIePsyDQgGhf082Ca0lbr6Yl/gv8wpQatmwlMRVT+RVDZ/xt jfp6KbmChf/lV43BJte5Yyy4oNCltXwYC2Mn+phlLZcW3ZnwVRmDoa+7ylNyvg== 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 4ZT7Jx2dklz18S8; Thu, 03 Apr 2025 17:00: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 533H0HDm052489; Thu, 3 Apr 2025 17:00:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533H0HXR052468; Thu, 3 Apr 2025 17:00:17 GMT (envelope-from git) Date: Thu, 3 Apr 2025 17:00:17 GMT Message-Id: <202504031700.533H0HXR052468@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: 7e70d94acd68 - main - pf: allow 'allow-opts' to be used on match rules List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 commit 7e70d94acd68b3ac6b45f49d4ab7a0f7867c3ea7 Author: Kristof Provost AuthorDate: 2025-04-03 12:58:21 +0000 Commit: Kristof Provost CommitDate: 2025-04-03 16:29:38 +0000 pf: allow 'allow-opts' to be used on match rules Allow the 'allow-opts' setting to be set on match rules. The intended use case is to simplify dealing with traffic where IP options are expected (e.g. IGMP), without allowing them on other traffic, or making the ruleset more complex. Add a test case confirming this works as expected. Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/parse.y | 5 ++-- sys/net/pfvar.h | 1 + sys/netpfil/pf/pf.c | 6 ++-- tests/sys/netpfil/pf/match.sh | 66 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index ea81efd7fd94..1362ae43428c 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -5325,8 +5325,9 @@ filter_consistent(struct pfctl_rule *r, int anchor_call) r->af == AF_INET ? "inet" : "inet6"); problems++; } - if (r->allow_opts && r->action != PF_PASS) { - yyerror("allow-opts can only be specified for pass rules"); + if (r->allow_opts && r->action != PF_PASS && r->action != PF_MATCH) { + yyerror("allow-opts can only be specified for pass or " + "match rules"); problems++; } if (r->rule_flag & PFRULE_FRAGMENT && (r->src.port_op || diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 82967dc10d03..c511d61d6cc1 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -696,6 +696,7 @@ struct pf_rule_actions { uint8_t min_ttl; uint8_t set_prio[2]; uint8_t rt; + uint8_t allow_opts; }; union pf_keth_rule_ptr { diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 775bd016c656..c343512b20dd 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -4890,6 +4890,8 @@ pf_rule_to_actions(struct pf_krule *r, struct pf_rule_actions *a) a->set_prio[0] = r->set_prio[0]; a->set_prio[1] = r->set_prio[1]; } + if (r->allow_opts) + a->allow_opts = r->allow_opts; } int @@ -6102,7 +6104,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, memcpy(&s->match_rules, match_rules, sizeof(s->match_rules)); memcpy(&s->act, &pd->act, sizeof(struct pf_rule_actions)); - if (r->allow_opts) + if (pd->act.allow_opts) s->state_flags |= PFSTATE_ALLOWOPTS; if (r->rule_flag & PFRULE_STATESLOPPY) s->state_flags |= PFSTATE_SLOPPY; @@ -10473,7 +10475,7 @@ done: goto eat_pkt; if (action == PF_PASS && pd.badopts && - !((s && s->state_flags & PFSTATE_ALLOWOPTS) || r->allow_opts)) { + !((s && s->state_flags & PFSTATE_ALLOWOPTS) || pd.act.allow_opts)) { action = PF_DROP; REASON_SET(&reason, PFRES_IPOPTIONS); pd.act.log = PF_LOG_FORCE; diff --git a/tests/sys/netpfil/pf/match.sh b/tests/sys/netpfil/pf/match.sh index 93b908e62f2d..58c1e021310a 100644 --- a/tests/sys/netpfil/pf/match.sh +++ b/tests/sys/netpfil/pf/match.sh @@ -26,6 +26,8 @@ . $(atf_get_srcdir)/utils.subr +common_dir=$(atf_get_srcdir)/../common + atf_test_case "dummynet" "cleanup" dummynet_head() { @@ -112,8 +114,72 @@ quick_cleanup() pft_cleanup } +atf_test_case "allow_opts" "cleanup" +allow_opts_head() +{ + atf_set descr 'Test allowing IP options via match' + atf_set require.user root + atf_set require.progs python3 scapy +} + +allow_opts_body() +{ + pft_init + + epair=$(vnet_mkepair) + + ifconfig ${epair}b 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}a + jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up + + jexec alcatraz pfctl -e + jexec alcatraz pfctl -x loud + pft_set_rules alcatraz \ + "match proto icmp allow-opts" \ + "pass" + + # Sanity check + atf_check -s exit:0 -o ignore \ + ping -c 1 192.0.2.1 + + atf_check -s exit:0 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b + + # This doesn't work without 'allow-opts' + pft_set_rules alcatraz \ + "match proto icmp" \ + "pass" + atf_check -s exit:1 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b + + # Setting it on a pass rule still works. + pft_set_rules alcatraz \ + "pass allow-opts" + atf_check -s exit:0 -o ignore \ + ${common_dir}/pft_ping.py \ + --sendif ${epair}b \ + --to 192.0.2.1 \ + --send-nop \ + --replyif ${epair}b +} + +allow_opts_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "dummynet" atf_add_test_case "quick" + atf_add_test_case "allow_opts" } From nobody Thu Apr 3 17:38:46 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZT89N0pByz5sDC9 for ; Thu, 03 Apr 2025 17:38:48 +0000 (UTC) (envelope-from 01000195fcbbe2ea-17ef9c04-6d3f-4df7-b18b-c52b72dc4565-000000@amazonses.com) Received: from a8-237.smtp-out.amazonses.com (a8-237.smtp-out.amazonses.com [54.240.8.237]) (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 4ZT89M4QhGz3G0t for ; Thu, 03 Apr 2025 17:38:47 +0000 (UTC) (envelope-from 01000195fcbbe2ea-17ef9c04-6d3f-4df7-b18b-c52b72dc4565-000000@amazonses.com) Authentication-Results: mx1.freebsd.org; none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=vnqrkfnvu6csdl6mwgk5t6ix3nnepx57; d=tarsnap.com; t=1743701926; h=Message-ID:Date:MIME-Version:Subject:To:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding; bh=ZNjFqeFA013cybgGqYdoiGtYBDOvJI3vWKI+e0MUgx4=; b=p1lF1VBMsWYKgJAq+j9mpJRrb2Zd2F54QFOt6KvceaJXOjv4FyhHHVw1aWoku05I h7b/EuW7AtgF0xgL3Nz9zbPN3xtuv+xEYSl+/1VyNepJsUFqVbZg8naGqQFNxDiR5Oj 97o0+whBhfgKXAbHL2PRGJ13qMP5wCZk67gurP1Y= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=6gbrjpgwjskckoa6a5zn6fwqkn67xbtw; d=amazonses.com; t=1743701926; h=Message-ID:Date:MIME-Version:Subject:To:References:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Feedback-ID; bh=ZNjFqeFA013cybgGqYdoiGtYBDOvJI3vWKI+e0MUgx4=; b=hvLCCEjB3ZX91TeUUq6e1TKMvQnx1+Yomf+9FoHLJ9Ep4etbetaH+NRWOL2Zjz0j hnfGaFQmpGP+8iiiSoTjH3aNiOff6Lfw2AmpohBdsNXBp9lhBJsI7fmFYH4ZFkoZaVx Icnler+pyRJdNvllul161ZrpRKz9PaNH9QC1v3y8= Message-ID: <01000195fcbbe2ea-17ef9c04-6d3f-4df7-b18b-c52b72dc4565-000000@email.amazonses.com> Date: Thu, 3 Apr 2025 17:38:46 +0000 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field To: Tom Jones , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202504030707.53377PCW040790@gitrepo.freebsd.org> Content-Language: en-US From: Colin Percival Autocrypt: addr=cperciva@tarsnap.com; keydata= xsFNBGWMSrYBEACdWRqDn3B3SKO7IG0/fGHYtfs26f3Q5QeAcasy1fQLniwGQWn5rlILhbCD K/jdNoDm5Zxq20eqyffoDNObCjnHgg4tGANdi+RmDy+7CDpE789H8dss9y7Pt5DlGGAXQQnt hxush3EYS/Ctprd9UUL/lzOOLOU1aNtzB84tNrJBtcJmL7OYHfyTSNFxvedqJrrasejIQOLI t/DQ89BPzz+vsKHz7FJPXh3fsVkzLA00DJYcfkgxyABfJNA7U6yMwd4DVSdx/SsvfIDMVXnu UXCXswo106WPZbYGlZPpq0wW6iibtTerJix+8AeuwXvl9O1p8yESK4ErkIxCnmghTSz+pdzj z/6xBRkdDM9VdZ0r+CzsaNXMpDOzFuKyjaiYBdgCLljbDnXIHFcqXenrZ7Xwkm09g/M4uVSh pIUG2RYa6tsHSQoGCp3f2RZv1znfViKQFbbL83QjtPA20AhseZSYbHp1FPhXyy9J0wkGL16L e99g6gdGeIRE82BZjBjKGDkoyDPq+oDRSFl8NtzmIKy+cfz00nViqcTF4bREXEawFGhlpO0X O9q8mijI9iFB6zaPBiSdJGBL5ML5qLTNCl8Zlf4m1TBvmRTqF/lzMHVXHidDoUhpSh/y3AFZ 1KrYc27ztJQywDJPJPWPbtY8YhFLFs377gfP8WldsZjzp8nvoQARAQABzSVDb2xpbiBQZXJj aXZhbCA8Y3BlcmNpdmFAdGFyc25hcC5jb20+wsGRBBMBCAA7FiEEglY7hNBiDtwN+4ZBOJfy 4i5lrT8FAmWMSyYCGwMICwkNCAwHCwMFFQoJCAsFFgMCAQACHgUCF4AACgkQOJfy4i5lrT+i Yg/+PYyJNoFuygtV5t/skcjYmvEC93mnazEvh+x99vGYZnGKeJ8NDOF4QCUzeHquOWxDi8Zl reXyswKcrIquPxxX6+YyGe97VbvLnez3ksfzOYRj1F4qV0Rq8ZNK51+bvIrbcS3SfDaRioAk D7WWwFor8y/hSwxYkfsKbtP5PRcem20JUxuC085zqWLaKv5t5n2CBzAGMjwJaQ3tM3AXVwWJ uJaHA6ot/6fntJlmkfcyCYyyr0D6b0guRj3STbZ2hNn5o2AI+f6LJJ31s2sPFjl6rs7fORf3 hFSNOHDd2HxfVBXFdQy24ROkC4orBBz2xh9GScjxxT/hbXkfufkubFubw7n0HkvHzA3UF+Qq A8JiI3n+d7ocsP0/5BQ2sZdeqPGJgHx6RkAMuW1tJ29wSvCN1qMgFwhYkpQdfvHlociQrimU fvlRfSrBEe8o7tvIuEdpvwvCZSTJqQbVoMw8UHFE7nzyCXUSab5h6PbjakCqim13ekVO2KFF TTPcz5o5jEeUY75tzbIwcDfFbT5KqNjWy06TVdM9VEJDHSfOfxHR3kSEwZ+tT2aTvL3grsUn gFwSNcj4Cl4CRFfUw8zVZY+7O7RiMlhBqykikvUurrdGKc1Scwa0yuppdA6eVvylyTWSQGrQ +uLWtV1LUKN7ZqKJWBkLPt9nS4XZWGyBvxOHYqjOwU0EZYxKtgEQANYfgbtUMVnhjxDHhWLp g5kLHK3YW0TfJKzpXqDB7NiqxHofn4OcbZnVC3MKggcbs9o1/UtsjnlsG8550PfiYkDXvPiO RJwgbGs6MGIDK797C6cnBLQ8xwBa9SL4cl5iQFnhWmt6vwnJ+an/cm5JpYves3wL7jV09qU9 57hkHXEUcl38r4FssZzVcLKPUVTa3Un+QGRTGDGe/f4ctjMaqv0ZCM+l2ixPhf/vqESrfSLv V/+T3dmtUfXjazO3SABvsHwxgGuTTYOlKoPCaebr+BRdqm0xeIShoIlhvTI8y4clchqx/Uxg UG5X2kvU13k3DS3Q8uLE4Et9x1CcZT6WGgBZSR6R0WfD0SDnzufNnRWJ0dEPA2MtJHE7+85R Vi9j/IgZV+y5Ur+bnPkjDG1s2SVciX5v9HQ0oilcBhvx0j5lGE9hhurD9F+fCvkr4KdbCknE 6Y8ce8pCNBUoB/DqibJivOzTk9K9MGB5x0De5TerIrFiaw3/mQC9nGeO9dtE7wvDJetWeoTq 4BEaCzpufNqbkpOaTQILr4V6Gp7M6v97g83TVAwZntz/q8ptwuKQPZ2JaSFLZn7oWUpYXA5s +SIODFHLn6iMoYpBQskHQjnj4lEPJadl4qj+ZKA89iDAKsniyoFXsbJe2CPbMS1yzBxKZq6K D/jpt7BOnuHr/JrXABEBAAHCwXYEGAEIACAWIQSCVjuE0GIO3A37hkE4l/LiLmWtPwUCZYxK tgIbDAAKCRA4l/LiLmWtP3jmEACQrh9gWe8F1Tkw3m6VoHKwLc5he4tX3WpQa//soPO6iGG3 S3WPruQ46NrAaAojoOcKI9UONDO5rxG0ZTX53S+lu2EO47jbcLwOCjaEpjKpDRt9ZXBQE8Xl mtBE9Bp3W9gpjB1nE3KNM1mJYgsK0QdRpwwfh4pVgGpOj8j23I6MCK+v99zEBnpgCn2GX8W/ kctRXHqWwndHysOJtRP/zrl7dDaABF1f9efUl0LL3TD3GJ9VDz+DNOin/uK2a1hiJo8QzTRk PpfUQ2ebzDsrd1i/pOWkMSkdH+rEu4AGrXWtaBwrMyrGkL6Icb6yO+P9/z0W2wlgBf3P1YRt JPgQt/Dj3yvA/UnaV/QmuVQPjl13o24UnJGsZM8XGnNdfWBKkC1Q6VXC4QT+dyBHYH9MuE9d 6oGl8pFM1+cTfEfbM62/rRoPkF1yHMsI/903VxEvuUIKfhEZAVLFyHldooNxuchntHQP9y8J 8Ou9bWYQP7MnEn+kwSwrZkjurfPkan+xQvp6dDYnj3V0GwA5pprBMaB928VIDVOv+1PNQI3t Cvk5VPv/skq+TJRMHW7bFSt8PRa91cUf1FOLIz9APDiJOzXkwxUEHGV3zPSaUhs1JYjyBeGT wDAvtLUdjOnRhEUOwlnIrztmvyciutjJoVzKEEjj5WXnHk9L9kQ1bpAjkjTONw== In-Reply-To: <202504030707.53377PCW040790@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Feedback-ID: ::1.us-east-1.Lv9FVjaNvvR5llaqfLoOVbo2VxOELl7cjN0AOyXnPlk=:AmazonSES X-SES-Outgoing: 2025.04.03-54.240.8.237 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:14618, ipnet:54.240.8.0/21, country:US] X-Rspamd-Queue-Id: 4ZT89M4QhGz3G0t X-Spamd-Bar: ---- On 4/3/25 00:07, Tom Jones wrote: > commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e > > This fixes the build on i386. You sure about that? /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[0].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[0].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[1].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[1].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[i + 2].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >= width of type [-Werror,-Wshift-count-overflow] 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + le32toh(desc->tbs[i + 2].tb_len)) >> 32) | ^ ~~ /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type 'unsigned long' but the argument has type 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat] 10971 | DPRINTF(("%s: k->wk_keytsc=%lu\n", __func__, k->wk_keytsc)); | ~~~ ^~~~~~~~~~~~ | %llu -- Colin Percival FreeBSD Release Engineering Lead & EC2 platform maintainer Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From nobody Thu Apr 3 19:09:29 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBB12sL5z5sKS3; Thu, 03 Apr 2025 19:09: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 4ZTBB12KvDz3Pvl; Thu, 03 Apr 2025 19:09:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743707369; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6mk4cxwl/giV9HJHn5WKAgZT2Ae98mwHAUZMcG8CVZM=; b=jF/dW88x+ONBPJ0x85dSquUoEHLXumiSiCrY2Lf7DNfOzXI74PP2Thl8Y4f6pL66pzUg2L J5RKBRtX5iZftKfolQX1XascovzdqCljKQ8Ds9u4rMXMyJvVrXTUz718InL7YLdiEkHKQ2 nUQvJXmxD66GEGAx65+0qyjn/F6+mYsRih7gigYCFixavI2pLIFx/vG1T+xlHMahtnH3ls uVvUJRGYBqrgw02dU4S1Ey9Rpcdn+TileMfslpS/sJMYcI/rV2ZjPDCq/Kewuhx3xykbFM qK0h21Z72vb/dt+lEfEM0SBvXXjESqDtqWx2kCGd5QbqXZG/BAQeeDwn8pV7Tg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743707369; a=rsa-sha256; cv=none; b=cmxgtG4LrbLn/YFBMr1xuFCO19fnYk/ru8Y4MVR6rIouodnkLjxgshnCyrAHp9dqxUG1Jq JQZfN5ABONOI6JcjShk/eyxX6pNhVxHiQoRjybgMKL+0R57Q7QsWaWy8R+I4P2uIT34xB0 ID0oKtjxjMFXqkIKEgrI7FJTGrjiaOewkzxTF45PlC0VOyRBoSBxVgeQ5rQC3dAIWO11mN 8RdQ+DT0/PVYDl+xvJbZ9zU4i/nyOvLaR/PjhqaiDCVDLuE7gB8x4d+gyAhI8ywoivWBip RUWuiRnn3E/Zh5LMyUkUn1Ms63PQvDJxcK30MnKpKgcvBMEnfawW8+4c0oxejQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743707369; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6mk4cxwl/giV9HJHn5WKAgZT2Ae98mwHAUZMcG8CVZM=; b=Gt+R9KcacC6nMSWSdYauMP88+HBz/DfLE3c7rIvUME/qUzDk10lxTXUOSjCIXS+tWYvRYd I/CT0JByUfZ0uKxPpPIYjOcYvUMyIw2YMT4P+UThv4ygBdJrQVJ2AzNKrEbG8yIv24irAe eiJEsYLlGVhhrMVq/cQ8M3t7qNx0n7/3PeOxPRrZY86dzdS7/InwML7ct9JYnnZ2y4Tyhz LGaHTM0R/sMDPot3d6aIslle74QUQdF3ySjKYE8s3+xEjDwQx33CtuD2e0tmHUS+TbTEZ3 xcARwyCH76H4eWJwKJSTlVdsyzBaKgmg0MPrMKMFR745L5Bq3D+xPwAhK40JgA== 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 4ZTBB11VVbz1CVw; Thu, 03 Apr 2025 19:09: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 533J9Tug085721; Thu, 3 Apr 2025 19:09:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533J9TsK085718; Thu, 3 Apr 2025 19:09:29 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:09:29 GMT Message-Id: <202504031909.533J9TsK085718@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: 296b60793df6 - main - iwx: Disconnect from the i386 build List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 296b60793df6ae855ba414fbf4823467e9615b2f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=296b60793df6ae855ba414fbf4823467e9615b2f commit 296b60793df6ae855ba414fbf4823467e9615b2f Author: Mark Johnston AuthorDate: 2025-04-03 19:08:23 +0000 Commit: Mark Johnston CommitDate: 2025-04-03 19:08:23 +0000 iwx: Disconnect from the i386 build The module fails to compile. Disconnect it until that's resolved one way or another. Reported by: cperciva --- sys/modules/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 3442b35c2233..71193e3559be 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -803,7 +803,6 @@ _ipw= ipw _iwi= iwi _iwm= iwm _iwn= iwn -_iwx= iwx .if ${MK_SOURCELESS_UCODE} != "no" _ipwfw= ipwfw _iwifw= iwifw @@ -836,6 +835,7 @@ _ccp= ccp _enic= enic _iavf= iavf _ioat= ioat +_iwx= iwx _ixl= ixl _nvdimm= nvdimm _pms= pms From nobody Thu Apr 3 19:31:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgp5RsKz5sLtp; Thu, 03 Apr 2025 19:31: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 4ZTBgp4tM8z3Rtx; Thu, 03 Apr 2025 19:31:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708710; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=53E9a8aU0cijSwhr9OOdOK51TdkU9tugbXobjf79boM=; b=h0b0Dfs17oV4VWyTM5GT4fSmHNbC783ApWfDCac9oxYbqZgnq++OBl86zHoaoURFlY9BEW q2cmvg9zPeJdReI/6dxaj7KC9BxLD8/jd28FEe9wVUFu9/F9WsAplZJOTMB8pJRRetFG0/ BnWq8efDPpLPPRT8Va9oKFJ7wtopqAVfCKsMXwn4ZhtWQ8v87BjPIb/xA6oczk5tW1Y6+4 LKpsMaMf/rWxLGZ6gqNJxtek7VdMAYBej2ScN5IHf2RXrBenptdAOvKt6vLgkOQavEJZ74 T4b9Frbp3K7TlLhS9/EVIkZfsg8k87lGr21LQhH0NJTP7mvq7gZTfKTeh/hMZw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708710; a=rsa-sha256; cv=none; b=gwWgQG3YSGpKDyhBX/m7ERQQs3kkfCEzvyH/Hsugpelll/rSO/YeJt+CoUjkl3JgVAzeiK ffsjujo/THcLgNrd71CCrWG3mLpA1mOIjHfu1y8oCJvNzocjkkDj8wvQ80P0svrpuk32U0 7Ql/zDnaW4DAT2jCjbH7brnJuMBbViwXvDEKDK59b/6yOGGZ8tPC8IUW46wp2+vZ9hvK5H CJrPje2efUlt7veCUZnAIuBbJ1wpdcKSWDxiAhx+rErVfRuJR/kqaVhWO+9TvNELTOh5qi Mc+A5mnIDTILxngGP7CLcvv01dEkXxbqJV2yrmWbsO8f0QLHVeT8Kg3gly9Nqg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708710; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=53E9a8aU0cijSwhr9OOdOK51TdkU9tugbXobjf79boM=; b=MAsC8HcDGBvXgZZDOvHRSeaEwxgmTGVYiMo9XYtcKysdMf0VnyIMo+67QkfQwWdIxDlgjF T4ZNXvpN4Fv3RnA5gijENIKM1xBFAUxDq4/x4PGxAUgjDYYPsPefWtg+vdbvagLUI0GLpo QvnYjXOStePl84acaGzxlE2hd5rG2k+ojTlY9Y6CvDDuBm/d1qVAHn574joMw4a61glVvg XI+KQB5KGFb7ej7ymCsJSiRu+p8NW5eSDTAWDRCetkeCZ50XUPsXz1UUzD8pGVZClrxXGv IDtkB54oLSr+mb1m+SuuIYc719zp9I/hTREwu/cR/vNPHLIStvq6gFKUIhAx5A== 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 4ZTBgp4RQtz1Cpk; Thu, 03 Apr 2025 19:31: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 533JVoFR033750; Thu, 3 Apr 2025 19:31:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVoh1033747; Thu, 3 Apr 2025 19:31:50 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:50 GMT Message-Id: <202504031931.533JVoh1033747@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 4b4bd20e17e0 - stable/14 - mac_do(4): Enhance GID rule validation to check all groups in cr_groups List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4b4bd20e17e0cc57a085f96d5a2b73f2e631e1b5 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=4b4bd20e17e0cc57a085f96d5a2b73f2e631e1b5 commit 4b4bd20e17e0cc57a085f96d5a2b73f2e631e1b5 Author: Li-Wen Hsu AuthorDate: 2024-10-28 18:58:12 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:49 +0000 mac_do(4): Enhance GID rule validation to check all groups in cr_groups Previously, the rule validation only checked the primary GID (cr_gid). This caused issues when applying GID-based rules, as users with matching secondary groups were not considered valid. This patch modifies both functions to iterate through all groups in cr_groups to ensure all group memberships are considered when validating GID-based rules. For example, a user's primary group is staff (20) and they are also in the wheel (0) group, this change allows the rule gid=0:any to enable them to run commands as any user. Reviewed by: delphij (earlier version), bapt Differential Revision: https://reviews.freebsd.org/D47304 (cherry picked from commit 7937bfbc0ca53fe7cdd0d54414f9296e273a518e) --- sys/security/mac_do/mac_do.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 507e64ea0175..1aad37f549bc 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -411,7 +411,7 @@ rule_is_valid(struct ucred *cred, struct rule *r) { if (r->from_type == RULE_UID && r->f_uid == cred->cr_uid) return (true); - if (r->from_type == RULE_GID && r->f_gid == cred->cr_gid) + if (r->from_type == RULE_GID && groupmember(r->f_gid, cred)) return (true); return (false); } @@ -516,7 +516,7 @@ check_setuid(struct ucred *cred, uid_t uid) } } if (r->from_type == RULE_GID) { - if (cred->cr_gid != r->f_gid) + if (!groupmember(r->f_gid, cred)) continue; if (r->to_type == RULE_ANY) { error = 0; From nobody Thu Apr 3 19:31:51 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgr0j2lz5sLxV; Thu, 03 Apr 2025 19:31: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 4ZTBgq5wkRz3RZY; Thu, 03 Apr 2025 19:31:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4OtTjirvvIFcwk1wsnJ9OHmPf1h0MzIT7X2UtObHMj8=; b=fIt84fA1t28okRmTi9+ED6CExi50glRVVwWkcBBH3ImFJSEdMqpOPloRxtwPUVoCXi49j/ fRk9JQmqFxqqy1x3Ps8n9hZpwbUgQfS+optRC3hZxdon1gx6PfsOk8vYhn7zPXJNZ90suQ QrOKBilocfyLgQGoK975RY51njsu3F2p8yTgLgWRMFV4h5FDSAKZHJjWanmpPU+3SGD0e0 LP+d9fJzXVNgBWBtEWtE5lLc8Sc4zEsb2howP4/jqBQAbsb9gWwmFtory26YlROAwqX6Z0 tPOhacepk83dVTF5NZGMhOGbaxiU1ujXTcpikuYVFPK1CpqWQLbOCJ/EvRYctQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708711; a=rsa-sha256; cv=none; b=lU93OZ/Te0oe1NSIZU+nn4lCu13T9gTxgKF1IwsjNNdl4vMMnQWxbxwLUdWTcT5c5bGseY F1srFNvAxOSv3dudazVFd4AIlbvG6KUtrIMIZdY6Rc/z9UZYKyaKmnKZTG0zgA1VZfIzz4 bK0QaveP1HkDnX76B463bEZ7CIMGwF4DRgOFB/OKNNYQdn/h1LvLIKDwN+qIYfO81EiWZH OhuVWCLME5woXZ/JnCes8murN8Axdk8r8My3Rf1wH/U+WeljHGsMVWtGy2D5l2ZijPLtrD jm+k0AMTB+/klMgayDxvK6pIVPw/7DGvf6V/wqAX8NrOycvlsgM5CE9KiJa4bw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4OtTjirvvIFcwk1wsnJ9OHmPf1h0MzIT7X2UtObHMj8=; b=BPH3KXB8SqUWPqs+Cr+1kjNGzTny2C6apx1PCFpQgGqiqX5UcY5GKQka+rEan9xN/aIE8N gftnP1zjIyjuzIIkOHxxrBIV/X/eDEbBt3Vxx0TDRxYL6XnAsaFwBlRtD8akbBRr0dCAG2 0rK3uTP8/1U+Swa1CGrnD7m8kO/w3hqiLK0eKyhxeBmOw/SfpoVKb5McNlsl0qn3+clFF8 JRA+57rKDX/y4/hZFtIaruWa5j7stBFTaHROPfzWZVYWOzeCzZUauNvfRxpDxZJEIIY0/d I/i9/reUDZf+F2G1ueKcovLQd+SeRq1CDFe5tB3zuAWRTLWUpNMspWkGZnh4sw== 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 4ZTBgq5N15zZj; Thu, 03 Apr 2025 19:31: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 533JVpUe033785; Thu, 3 Apr 2025 19:31:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVpqN033782; Thu, 3 Apr 2025 19:31:51 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:51 GMT Message-Id: <202504031931.533JVpqN033782@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: ea3d86ea5774 - stable/14 - MAC/do: Sort header inclusions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ea3d86ea5774450581f58e4cbdb45530f120b05a Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=ea3d86ea5774450581f58e4cbdb45530f120b05a commit ea3d86ea5774450581f58e4cbdb45530f120b05a Author: Olivier Certner AuthorDate: 2024-11-25 14:46:41 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:55 +0000 MAC/do: Sort header inclusions In accordance with style(9). Reviewed by: bapt, emaste Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47771 (cherry picked from commit f0600c41e754f32b388af804fb542b0f0ea89dee) --- sys/security/mac_do/mac_do.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 1aad37f549bc..e72ffed2ff04 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -5,10 +5,11 @@ */ #include -#include +#include #include #include #include +#include #include #include #include @@ -17,7 +18,6 @@ #include #include #include -#include #include #include From nobody Thu Apr 3 19:31:53 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgt38ZJz5sLty; Thu, 03 Apr 2025 19:31: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 4ZTBgt0bYWz3Rcq; Thu, 03 Apr 2025 19:31:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ar0DUZ6wHtr3ER4oNM3YTT1HO5Ec3ffMriCAHhd8Tyc=; b=KtLHKrnJaXO3KtL5PU94JfJ8x6MKn2wdq3Pkc/8lX2S6nn+XdpYoFRjHVO1uaxcI126flB jnR+MLB4uyc2tT0Yj6zAe9wYiDHTVWOAbalUHIYNUFpC3dd6AqHle/S0uHTIEYjAWDfkvo t1t3CzmW4cmC+KIktUGI8nVdyhX07y559BtxUeAtqqoVvvSbaXBpHbsls2Pm0DlHLETJT3 raUwpCsy72wqvtJTO3pUoMrrH5cg6t5VKfEBEQs5hwxgEh0+dpG/39C8P135spGjl207EQ IUIsBfzpQyL/K5RM1MkUXUb26OA55VquQt2RkF+rIBXjPOK4e4ZIhP1ACR7zzw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708714; a=rsa-sha256; cv=none; b=MTuPxWhFH6lY5TsEjnYHhr+6t1LyJKsM/EJuBXOXK2SB+8z9aXYtjSZoK3MdyLxnUPbEee qeBmUwCRfrB381scLPvzHPgklGY39BduvwlfbqPYaRgZ+GZctJWIC4EbTrXbqlPZ++ASPf AP4fk6pslSwxLCQpDkb4vKiATpbz3d3uAfrOJak+L8lxNYKXEQ4GptClBNHwddskE+6r/2 A9+2A6skPLwdi7LYFM2dr65yVC95Fc8XLVPyKvwX6ZIRJbftOLCi30JxKJqP/uRNyFassQ GIlYSesYRcrryTDZzyiicKDrXxNM9E1yf5mh/pnfVRiKXQO7atdVDVJL9HiiXg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708714; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ar0DUZ6wHtr3ER4oNM3YTT1HO5Ec3ffMriCAHhd8Tyc=; b=ev9J0L3aN8sxc8lNw4rXeqlM6Wzaas8XIw3TboktrRqq3usPmhGO8r1V6BV94J31DjmHdK pzlX9ATpeNCjM7vg1rSJFGjpgcxYR3zo4bhQh3eIwXXZC1NHxF/WWWgHgOO451h3NkAZB5 kibGqOUh1p1tf4QR5GjJVrlp1I7mGG0vdog9mGDxcNiBK2zWWZCwaayTDDe3NN6VSvVlFv b5G6I1u6O2Vu1C9+kRJqTeDPAwuQeRb4bYduElsrn93IsRG0QnAif5OZ0CHm75/JbmIj+A yGlzrwj3ZKf8wDRXa7iSr3YUCbuvmaPkySlCz46ecgeH3iYM1d0cH37R2/uztg== 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 4ZTBgt09B6zLq; Thu, 03 Apr 2025 19:31: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 533JVrZ0033855; Thu, 3 Apr 2025 19:31:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVrpf033852; Thu, 3 Apr 2025 19:31:53 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:53 GMT Message-Id: <202504031931.533JVrpf033852@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 41d1660fcf39 - stable/14 - MAC/do: Rename rule_is_valid() => rule_applies() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 41d1660fcf39a44a14756b97ec067c63b3de64a2 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=41d1660fcf39a44a14756b97ec067c63b3de64a2 commit 41d1660fcf39a44a14756b97ec067c63b3de64a2 Author: Olivier Certner AuthorDate: 2024-07-01 13:24:47 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:56 +0000 MAC/do: Rename rule_is_valid() => rule_applies() This function checks whether a rule applies in the current context, i.e., if the subject's users/groups match that of the rule. By contrast, it doesn't check if the rule as specified by the user is valid (i.e., consistent). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47592 (cherry picked from commit ccae2774897c1f8bb11f696d5895fb686db98176) --- sys/security/mac_do/mac_do.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 2ddc13d62b4f..4cc2a7971545 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -406,7 +406,7 @@ init(struct mac_policy_conf *mpc) } static bool -rule_is_valid(struct ucred *cred, struct rule *r) +rule_applies(struct ucred *cred, struct rule *r) { if (r->from_type == RULE_UID && r->f_uid == cred->cr_uid) return (true); @@ -427,7 +427,7 @@ priv_grant(struct ucred *cred, int priv) rule = mac_do_rule_find(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { - if (rule_is_valid(cred, r)) { + if (rule_applies(cred, r)) { switch (priv) { case PRIV_CRED_SETGROUPS: case PRIV_CRED_SETUID: @@ -466,7 +466,7 @@ check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) rule = mac_do_rule_find(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { - if (rule_is_valid(cred, r)) { + if (rule_applies(cred, r)) { mtx_unlock(&pr->pr_mtx); return (0); } From nobody Thu Apr 3 19:31:52 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgs4xKTz5sLrS; Thu, 03 Apr 2025 19:31: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 4ZTBgs0mjRz3RRH; Thu, 03 Apr 2025 19:31:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YvJrzkxohOKcEg/7sg5PJo8GIKzMqozntT73W1rgzEU=; b=WkHURHb6EkQGrnHiH0Et6Z9UeeMdEo6Z2dr7a7nT67ISOGDyZWgTprweBxiM1cX3C/EZ3c xjmr+5UDONQIVvjj1z7EkHGr/9Ea0tEzQvz779oPWSaa+/EOr1UqFJhvRwZgsSTxkkvhMB l6dIkggXlVD9qrTtaV/nH15OAM/4QCxLWDDuEq+kFI4NajmG83EEDfrmEoaf3MTFuBk4Fy 7JzxnUoqVDqqeA/kxk/LzTVhyUeq3inOqcECCFnN1rv7gz/dFh7C+MR+aw/itNHdHClbXc SkAtEGbpE9W8PK13PxaSXZ31XDBPQm9MsnUb6u3q3NnzzFZAR2/55vwEu2YRUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708713; a=rsa-sha256; cv=none; b=AqP26yyiJInnKCmzCDtoSjkkroXLYcc++4xE9JqnCzdF2amCe7r/NXi+n2rSwzS2lF9LN/ dFi9+Q0771b6vdBjW53BioQAbvfBJC8DA3vbbp/qHd1vXNmBEQOv1/WRa+IALyw4vAbN9C slVd6QFza9BW7/Euh3c6DluHrm9vFAj7Iyw4Tr3+jOd1MGWoGoqOxnYgtGaDfb4dYNMZcZ rsPGXo0FV3MKwWgSQ//7t519quGNSIKOUwZM7CwZmL13E6mGIo85Mnp+eRPBH0bjGCuuDc mgku6Ska9XgGCzWomN3/3MaUXtB7rYsqs1Iq2EaFJbkfvi7yrXIJ8liqtaQh1g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YvJrzkxohOKcEg/7sg5PJo8GIKzMqozntT73W1rgzEU=; b=Wznwyg5KzqsfMmsThXpL5cFY+On5Br/bah1TDv0Idm8AYsjAhO81+rK1Y/oK/OU1g/wnn4 pQLJkMAyBGRGwpLWU74rzQhn4WWot/eCkgLvxYnynreWOm2d1Sn4ZqbOpehdRpllXIYBCa UeAuw/ROK5LmVxrd0SboaMq2/pMUgcFzBMb5HM/fm/KcShBC8xInFI3aYiigGIHmOeVekt SzR7m7bcU9JZzSWowErcALL0BQIZmOSMpx5fNmoGgXMgpRYU7nUebsPl7Q4N1FiiPZhSwJ OAEktjZRrbWUfUAMtXMampdWF20StK6uDpBCkQYI7zeUYtd0nML0EFivPqE3ow== 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 4ZTBgr6K24zLp; Thu, 03 Apr 2025 19:31: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 533JVqpc033820; Thu, 3 Apr 2025 19:31:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVqQD033817; Thu, 3 Apr 2025 19:31:52 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:52 GMT Message-Id: <202504031931.533JVqQD033817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: d84014ce3aae - stable/14 - MAC/do: parse_rules(): Copy input string on its own List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d84014ce3aae885af3a7a0a737f38c5d758a830a Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=d84014ce3aae885af3a7a0a737f38c5d758a830a commit d84014ce3aae885af3a7a0a737f38c5d758a830a Author: Olivier Certner AuthorDate: 2024-06-28 15:14:30 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:55 +0000 MAC/do: parse_rules(): Copy input string on its own Since all callers have to do it, save them that burden and do it in parse_rules() instead. While here, replace "strlen(x) == 0" with the simpler and more efficient "x[0] == '\0'". Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47591 (cherry picked from commit 2200a3ec711baa98c20a4b65868957dc40912f0f) --- sys/security/mac_do/mac_do.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index e72ffed2ff04..2ddc13d62b4f 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -130,23 +130,26 @@ out: } static int -parse_rules(char *string, struct rulehead *head) +parse_rules(const char *const string, struct rulehead *const head) { struct rule *new; + char *const copy = strdup(string, M_DO); + char *p = copy; char *element; int error = 0; - while ((element = strsep(&string, ",")) != NULL) { - if (strlen(element) == 0) + while ((element = strsep(&p, ",")) != NULL) { + if (element[0] == '\0') continue; error = parse_rule_element(element, &new); - if (error) + if (error != 0) { + toast_rules(head); goto out; + } TAILQ_INSERT_TAIL(head, new, r_entries); } out: - if (error != 0) - toast_rules(head); + free(copy, M_DO); return (error); } @@ -175,7 +178,7 @@ mac_do_rule_find(struct prison *spr, struct prison **prp) static int sysctl_rules(SYSCTL_HANDLER_ARGS) { - char *copy_string, *new_string; + char *new_string; struct rulehead head, saved_head; struct prison *pr; struct mac_do_rule *rules; @@ -196,10 +199,8 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) if (error) goto out; - copy_string = strdup(new_string, M_DO); TAILQ_INIT(&head); - error = parse_rules(copy_string, &head); - free(copy_string, M_DO); + error = parse_rules(new_string, &head); if (error) goto out; TAILQ_INIT(&saved_head); @@ -272,7 +273,7 @@ mac_do_prison_set(void *obj, void *data) struct vfsoptlist *opts = data; struct rulehead head, saved_head; struct mac_do_rule *rules; - char *rules_string, *copy_string; + char *rules_string; int error, jsys, len; error = vfs_copyopt(opts, "mdo", &jsys, sizeof(jsys)); @@ -293,10 +294,8 @@ mac_do_prison_set(void *obj, void *data) mac_do_alloc_prison(pr, &rules); if (rules_string == NULL) break; - copy_string = strdup(rules_string, M_DO); TAILQ_INIT(&head); - error = parse_rules(copy_string, &head); - free(copy_string, M_DO); + error = parse_rules(rules_string, &head); if (error) return (1); TAILQ_INIT(&saved_head); From nobody Thu Apr 3 19:31:56 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgw3sykz5sLrT; Thu, 03 Apr 2025 19:31: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 4ZTBgw2D95z3Rgb; Thu, 03 Apr 2025 19:31:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zFk/K4vHx4qeODhZE5Zl7jCiocrGOsPFx+ibwGAlTpA=; b=oa98za7MrGeJYHBUdbwx1iYfW9YPCunsCMzvJ74lGsqGvc8poockhr3F+XEi/BxhMusg3i 3I7NY7oaOq2bJWVLCem7km7KwSCHgqhVLB/yTtAAxt2Kb1/RFfcAxLpY7YfXmdiUc5Ea/m aAjzqPAHidhdW+SYuLFNv89Sgcrdv4A0rrt/qGUo9k3A5tY4n2RBUK7RVjj2D52oV5YF6Y OU0ODW24D7vpxXWbEagslH+K5MifO9CuQMfcaiA9WYAFgX0XerFYbwXurOSekFcesMfqGD dM9sfcHqIcOZWYMxDfC7s3kKjykiTY6nV8Sq3xQVhpwVaLRUU0UhbNwLW0o4Zw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708716; a=rsa-sha256; cv=none; b=uoggP4wnO+F1PtkqlnjIkrX3bMmBK32Qt+vLqOtnAC7JV1JrmhCptlLeFnyhRs5fUffA+l 6gxChwFrVXPsguXlzgtHonQURUrjutm0GRcJ2WNuAgu67qE4TkhsVsW1Lvti0V+R8L2yCM ZKmBudtXMopdP9oDAycp+urke2Cg85WBrrU1NjuC+Ht4kZTjF4RghgbDZso5eh4Id8HJzu 8Rp5Fppw8iJFr/5ZUTTRc/yROlWz0OGkONmLVl/4t1weiqwbMNFT0fiyU5j9XKE62BN8+K BjSFgbSxArza3dYDXAyrJkuQre124LNO1QBzAynpHDG/YpEEiXWyUD1+cdw0Mg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708716; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zFk/K4vHx4qeODhZE5Zl7jCiocrGOsPFx+ibwGAlTpA=; b=hsXFp9QmWWzQGtk0tbLGbAzWv08XMG2yrSL6iCb/KEejMdhdKRx+7V1DGW7h7UPPe+vjgB nabYCI1KNJtcIg8RzNSa/Xm4HUmh6686Fs8P2CNbnGiPyHKDXaYB78ztnMRtqF1InrsW17 WddEnrVpO05/TV+OBi3CQcUEOmyVjP2sObwK030vJ9RYKDlX6seIA4f/mmC7gJjIJy9UIS pbksreqr0ilKC3zY7NenPKPKrpAR8bN085X8UGGWwsQz5bjVtw8FmAADc/tlGPQQ2IJ2A/ LiHYSUrJPfz+092m70oc++usoHk0prNjAPs9Z6s2T+sJq8z/XOVaWLkwmheV8A== 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 4ZTBgw1qgtzLr; Thu, 03 Apr 2025 19:31: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 533JVuoS033931; Thu, 3 Apr 2025 19:31:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVuRh033928; Thu, 3 Apr 2025 19:31:56 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:56 GMT Message-Id: <202504031931.533JVuRh033928@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 546477d560ab - stable/14 - MAC/do: Rename internal mac_do_rule_find() => find_rules() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 546477d560abfda2dfaf18dad7d0541194837f7e Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=546477d560abfda2dfaf18dad7d0541194837f7e commit 546477d560abfda2dfaf18dad7d0541194837f7e Author: Olivier Certner AuthorDate: 2024-07-01 14:35:12 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:56 +0000 MAC/do: Rename internal mac_do_rule_find() => find_rules() To simplify, be consistent with the rename 'struct mac_do_rule' => 'struct rules' and other functions, and because this function is internal (and thus is never the first mac_do(4)'s function to appear in a stack trace). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47594 (cherry picked from commit 8ce5770604981a19884604ad532f9528e087c69a) --- sys/security/mac_do/mac_do.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 5ac77974379c..1037a4811ada 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -154,7 +154,7 @@ out: } static struct rules * -mac_do_rule_find(struct prison *spr, struct prison **prp) +find_rules(struct prison *spr, struct prison **prp) { struct prison *pr; struct rules *rules; @@ -184,7 +184,7 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) struct rules *rules; int error; - rules = mac_do_rule_find(req->td->td_ucred->cr_prison, &pr); + rules = find_rules(req->td->td_ucred->cr_prison, &pr); mtx_unlock(&pr->pr_mtx); if (req->newptr == NULL) return (sysctl_handle_string(oidp, rules->string, MAC_RULE_STRING_LEN, req)); @@ -235,14 +235,14 @@ mac_do_alloc_prison(struct prison *pr, struct rules **lrp) struct rules *rules, *new_rules; void **rsv; - rules = mac_do_rule_find(pr, &ppr); + rules = find_rules(pr, &ppr); if (ppr == pr) goto done; mtx_unlock(&ppr->pr_mtx); new_rules = malloc(sizeof(*new_rules), M_PRISON, M_WAITOK|M_ZERO); rsv = osd_reserve(mac_do_osd_jail_slot); - rules = mac_do_rule_find(pr, &ppr); + rules = find_rules(pr, &ppr); if (ppr == pr) { free(new_rules, M_PRISON); osd_free_reserved(rsv); @@ -322,7 +322,7 @@ mac_do_prison_get(void *obj, void *data) struct rules *rules; int jsys, error; - rules = mac_do_rule_find(pr, &ppr); + rules = find_rules(pr, &ppr); error = vfs_setopt(opts, "mdo", &jsys, sizeof(jsys)); if (error != 0 && error != ENOENT) goto done; @@ -425,7 +425,7 @@ priv_grant(struct ucred *cred, int priv) if (do_enabled == 0) return (EPERM); - rule = mac_do_rule_find(cred->cr_prison, &pr); + rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { if (rule_applies(cred, r)) { switch (priv) { @@ -464,7 +464,7 @@ check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) } free(freebuf, M_TEMP); - rule = mac_do_rule_find(cred->cr_prison, &pr); + rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { if (rule_applies(cred, r)) { mtx_unlock(&pr->pr_mtx); @@ -500,7 +500,7 @@ check_setuid(struct ucred *cred, uid_t uid) free(freebuf, M_TEMP); error = EPERM; - rule = mac_do_rule_find(cred->cr_prison, &pr); + rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { if (r->from_type == RULE_UID) { if (cred->cr_uid != r->f_uid) From nobody Thu Apr 3 19:31:55 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgv34SJz5sLmS; Thu, 03 Apr 2025 19:31: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 4ZTBgv1WxYz3RRp; Thu, 03 Apr 2025 19:31:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b+7NUhcM7VN9YBdhn5qrjWGnC5XyxARl/I8qAlevRac=; b=MUuggiG3iybbKooHnMCx3eru96CgwFi8Q85Ylr4GprMgJwi0AsQAwtVFInJlnWfG85teeX EfY+VrdPm+n2nKml82QMythOH6Zl4IiMg8NVAhXIbZeOmHtLnJZSSuE+dob4vWrdXRxlny nyL5NUf6B6H6oukXM+cMiZVZqp+ALaK+yhJeXMTJNtKOnLQr0GezVvivj69pwUxzc0Usas rLvujJAigKm6ZZgJ+udta4so8Lk8+ifMilJeZjb4TDcC/Cx9thds2kaCb1MN5qD4rl7eQq F+th2WrM0GD8AZgzCK3MgYdiRKaS1j5kgloCcXvdXuQ4fjnL5RGltXjulsIBrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708715; a=rsa-sha256; cv=none; b=gV5bC8swKINt+581VTrA10iKBzazZCIKXadNu3z+iaE/tv1ug402iTULQTxBFpVEIZ2SGH ubcwy+h8ywIQkuKHfcf6yURXhdkoCe03+rt3atuKwbSPeWG1/60NBD81TZ/20+JKhmOPZA LQQJSgyij4uDpeW//7CG2HzdROKjGVOzbBH5CQooipMbQs/gKE63fBaw3gZQk0x40U+BR/ kUUPHScwd0Nmftzkj9JcRUjkhYTWkO7bAus+dIZH5hL7I8sXFkQN5x73KDF8UnztBpBc83 2j0X/O5wvFPYRnsxBYKA4LCWfBBQlCp17ftWUcoK8QIemCIMVllm72rnK4r/wA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=b+7NUhcM7VN9YBdhn5qrjWGnC5XyxARl/I8qAlevRac=; b=BWh8uaegk6N9hfzh6T8zo1AwhWj+srbHz2kyq3rPdavZp7IRBoRqIpFCrUqVulHIquST0P EOBJSAPZcpINVWz20o5lKUSTsMicAf+vQXqtOJdkjs6WV8LLQDJSPQQGaPfVHSXL4SR6Bw Qy6DjUag0M/qLxkcBYq+XiWnK62HjZcjR3BRHPs5FrmBGYMVsU0P0xPMD2PYsY5tqBfSDW kXQhIECt0nuHr+iQwbxOBLWizIEztzPmZgYcTEpi+XK+cMQ9tP6MSyCK7Wk9EY3uW6f2Po S6BTi7JM47n8n59averUw+SC06CpBJOK6gI8XFjpUaa8K0qHNKhfqGDlXzCipg== 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 4ZTBgv17jjzZk; Thu, 03 Apr 2025 19:31: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 533JVtaq033895; Thu, 3 Apr 2025 19:31:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVtOC033892; Thu, 3 Apr 2025 19:31:55 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:55 GMT Message-Id: <202504031931.533JVtOC033892@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: d50dbaf784de - stable/14 - MAC/do: Rename private struct 'mac_do_rule' => 'rules' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d50dbaf784de92fea98a5116184537f3dc012be0 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=d50dbaf784de92fea98a5116184537f3dc012be0 commit d50dbaf784de92fea98a5116184537f3dc012be0 Author: Olivier Certner AuthorDate: 2024-07-01 14:28:20 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:56 +0000 MAC/do: Rename private struct 'mac_do_rule' => 'rules' To simplify and be consistent with 'struct rule'. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47593 (cherry picked from commit 02ed945ccec43340208d3a9c152fb98f55dbed69) --- sys/security/mac_do/mac_do.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 4cc2a7971545..5ac77974379c 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -53,12 +53,12 @@ struct rule { TAILQ_ENTRY(rule) r_entries; }; -struct mac_do_rule { +struct rules { char string[MAC_RULE_STRING_LEN]; TAILQ_HEAD(rulehead, rule) head; }; -static struct mac_do_rule rules0; +static struct rules rules0; static void toast_rules(struct rulehead *head) @@ -153,11 +153,11 @@ out: return (error); } -static struct mac_do_rule * +static struct rules * mac_do_rule_find(struct prison *spr, struct prison **prp) { struct prison *pr; - struct mac_do_rule *rules; + struct rules *rules; for (pr = spr;; pr = pr->pr_parent) { mtx_lock(&pr->pr_mtx); @@ -181,7 +181,7 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) char *new_string; struct rulehead head, saved_head; struct prison *pr; - struct mac_do_rule *rules; + struct rules *rules; int error; rules = mac_do_rule_find(req->td->td_ucred->cr_prison, &pr); @@ -229,10 +229,10 @@ destroy(struct mac_policy_conf *mpc) } static void -mac_do_alloc_prison(struct prison *pr, struct mac_do_rule **lrp) +mac_do_alloc_prison(struct prison *pr, struct rules **lrp) { struct prison *ppr; - struct mac_do_rule *rules, *new_rules; + struct rules *rules, *new_rules; void **rsv; rules = mac_do_rule_find(pr, &ppr); @@ -261,7 +261,7 @@ done: static void mac_do_dealloc_prison(void *data) { - struct mac_do_rule *r = data; + struct rules *r = data; toast_rules(&r->head); } @@ -272,7 +272,7 @@ mac_do_prison_set(void *obj, void *data) struct prison *pr = obj; struct vfsoptlist *opts = data; struct rulehead head, saved_head; - struct mac_do_rule *rules; + struct rules *rules; char *rules_string; int error, jsys, len; @@ -319,7 +319,7 @@ mac_do_prison_get(void *obj, void *data) { struct prison *ppr, *pr = obj; struct vfsoptlist *opts = data; - struct mac_do_rule *rules; + struct rules *rules; int jsys, error; rules = mac_do_rule_find(pr, &ppr); @@ -348,7 +348,7 @@ static int mac_do_prison_remove(void *obj, void *data __unused) { struct prison *pr = obj; - struct mac_do_rule *r; + struct rules *r; mtx_lock(&pr->pr_mtx); r = osd_jail_get(pr, mac_do_osd_jail_slot); @@ -420,7 +420,7 @@ priv_grant(struct ucred *cred, int priv) { struct rule *r; struct prison *pr; - struct mac_do_rule *rule; + struct rules *rule; if (do_enabled == 0) return (EPERM); @@ -449,7 +449,7 @@ check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) char *fullpath = NULL; char *freebuf = NULL; struct prison *pr; - struct mac_do_rule *rule; + struct rules *rule; if (do_enabled == 0) return (0); @@ -484,7 +484,7 @@ check_setuid(struct ucred *cred, uid_t uid) char *fullpath = NULL; char *freebuf = NULL; struct prison *pr; - struct mac_do_rule *rule; + struct rules *rule; if (do_enabled == 0) return (0); From nobody Thu Apr 3 19:31:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgx57YNz5sLmX; Thu, 03 Apr 2025 19:31: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 4ZTBgx30gNz3S1F; Thu, 03 Apr 2025 19:31:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708717; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZwAYr4qTNHWAJgj4v+ddQX0MQynnYLmb5NtCNdDgK/I=; b=dyrUfQk4x5WsVltY9/ncKPU9cpVG4EhCa5ARFABdrIDwBvMWD3yKJwpgWOPQpSsQ/M7kEo s5iUI3Z/7XAmyM+0e//dN5Z8Okn/odnHWnnbddxkyhVfr0U+I/lIkEuPBy+/bkOHOtBZpQ OibxufxvLjKqKojdrtFczkzxb1jEG+o3HxLDlt2RrmbYoXv6AykUK1wE/xM5gMn4GGPI6Y bk5vSZKmMr2kB8oiqugXp3XaalZ+gMYfdohDH+8snf27DpqeWSFe2I4PG0Bw7aeIy6kfKo 31x9PwjGfkeZfVoM0fci7pg9Cx6izKnctcFJVXN81TH0Z3IQaAGfBCtPuZQJ5g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708717; a=rsa-sha256; cv=none; b=q7BcyVdivTnaiVvm/z6XmkqREflYn8CPsMJK4knIKoQ0g79HiRSAOuBY4X4Zv1SqnAr4E2 xUchNZ03UyC4RopIMhZNw01tLaV8vS4d/HaeNQGPKudptOC8xM1xNPXhifhaZpIgZrM9XV ITH0rWXGUe2oAhg83fXDlkKoixl7osyOoNITCLBalk22c3kBFfTSEnn1sVU3e1xn2fMlNj HbdNB+em7O9iuzmQFUn29/dOLzqlogPDkqDsglnD3eRHJGHuCv6i+DXQyFbrEmlPUhZIV7 EjaBGaZRcDiJ8FBnQVUMLvIG/2yMFnfFugDPKWwxfMBztxxsc4ra7v3EzecqKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708717; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZwAYr4qTNHWAJgj4v+ddQX0MQynnYLmb5NtCNdDgK/I=; b=ZsgNZtMcG9QWyQhf9TmV/GFM/+z9ym2Nb8bJ9l1Prmcu9PwsadKtfOaKoCK+s66H5Qm5r2 9eLU6wHZuJcx3dcakY0255fYa2o7/3jnDNWlf9tDcVkGex2tkyaeYmFOgPI8pofqNy6jqt m1OlSbCZHKUoUYQVrtqjgBkpy0Tpjz136UaHOZgbI/kcVkpR0JO8m6JFcSq8KWZz637iD6 gM0B7vIDqVXBT8TfZT5NRi7qQ+2nT4M5/NByNiHlUnVD4XfO8MlXLoN5x3/jTCV0aB1UVa MvZvPZim4Jy6nr+mXqdUP+3xWSN63eReBWJ4ntgWNfmajqD5+3mRJPwWJaVtiA== 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 4ZTBgx2WGkzXH; Thu, 03 Apr 2025 19:31: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 533JVvLA033966; Thu, 3 Apr 2025 19:31:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVv3Y033963; Thu, 3 Apr 2025 19:31:57 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:57 GMT Message-Id: <202504031931.533JVv3Y033963@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 75870a3ebc92 - stable/14 - MAC/do: Use prison_lock()/prison_unlock() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 75870a3ebc929a3f154c0f80db7f3bc0864a874d Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=75870a3ebc929a3f154c0f80db7f3bc0864a874d commit 75870a3ebc929a3f154c0f80db7f3bc0864a874d Author: Olivier Certner AuthorDate: 2024-07-01 14:50:40 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:56 +0000 MAC/do: Use prison_lock()/prison_unlock() Instead of fiddling directly with 'pr_mtx'. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47595 (cherry picked from commit 83fcbbff6b01ebbd1d8538cb5396d87d0a816db6) --- sys/security/mac_do/mac_do.c | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 1037a4811ada..ce4ab7fa9e3a 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -160,7 +160,7 @@ find_rules(struct prison *spr, struct prison **prp) struct rules *rules; for (pr = spr;; pr = pr->pr_parent) { - mtx_lock(&pr->pr_mtx); + prison_lock(pr); if (pr == &prison0) { rules = &rules0; break; @@ -168,7 +168,7 @@ find_rules(struct prison *spr, struct prison **prp) rules = osd_jail_get(pr, mac_do_osd_jail_slot); if (rules != NULL) break; - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); } *prp = pr; @@ -185,15 +185,15 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) int error; rules = find_rules(req->td->td_ucred->cr_prison, &pr); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); if (req->newptr == NULL) return (sysctl_handle_string(oidp, rules->string, MAC_RULE_STRING_LEN, req)); new_string = malloc(MAC_RULE_STRING_LEN, M_DO, M_WAITOK|M_ZERO); - mtx_lock(&pr->pr_mtx); + prison_lock(pr); strlcpy(new_string, rules->string, MAC_RULE_STRING_LEN); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); error = sysctl_handle_string(oidp, new_string, MAC_RULE_STRING_LEN, req); if (error) @@ -204,11 +204,11 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) if (error) goto out; TAILQ_INIT(&saved_head); - mtx_lock(&pr->pr_mtx); + prison_lock(pr); TAILQ_CONCAT(&saved_head, &rules->head, r_entries); TAILQ_CONCAT(&rules->head, &head, r_entries); strlcpy(rules->string, new_string, MAC_RULE_STRING_LEN); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); toast_rules(&saved_head); out: @@ -239,7 +239,7 @@ mac_do_alloc_prison(struct prison *pr, struct rules **lrp) if (ppr == pr) goto done; - mtx_unlock(&ppr->pr_mtx); + prison_unlock(ppr); new_rules = malloc(sizeof(*new_rules), M_PRISON, M_WAITOK|M_ZERO); rsv = osd_reserve(mac_do_osd_jail_slot); rules = find_rules(pr, &ppr); @@ -248,14 +248,14 @@ mac_do_alloc_prison(struct prison *pr, struct rules **lrp) osd_free_reserved(rsv); goto done; } - mtx_lock(&pr->pr_mtx); + prison_lock(pr); osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, new_rules); TAILQ_INIT(&new_rules->head); done: if (lrp != NULL) *lrp = rules; - mtx_unlock(&pr->pr_mtx); - mtx_unlock(&ppr->pr_mtx); + prison_unlock(pr); + prison_unlock(ppr); } static void @@ -286,9 +286,9 @@ mac_do_prison_set(void *obj, void *data) jsys = JAIL_SYS_NEW; switch (jsys) { case JAIL_SYS_INHERIT: - mtx_lock(&pr->pr_mtx); + prison_lock(pr); osd_jail_del(pr, mac_do_osd_jail_slot); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); break; case JAIL_SYS_NEW: mac_do_alloc_prison(pr, &rules); @@ -299,11 +299,11 @@ mac_do_prison_set(void *obj, void *data) if (error) return (1); TAILQ_INIT(&saved_head); - mtx_lock(&pr->pr_mtx); + prison_lock(pr); TAILQ_CONCAT(&saved_head, &rules->head, r_entries); TAILQ_CONCAT(&rules->head, &head, r_entries); strlcpy(rules->string, rules_string, MAC_RULE_STRING_LEN); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); toast_rules(&saved_head); break; } @@ -329,7 +329,7 @@ mac_do_prison_get(void *obj, void *data) error = vfs_setopts(opts, "mdo.rules", rules->string); if (error != 0 && error != ENOENT) goto done; - mtx_unlock(&ppr->pr_mtx); + prison_unlock(ppr); error = 0; done: return (0); @@ -350,9 +350,9 @@ mac_do_prison_remove(void *obj, void *data __unused) struct prison *pr = obj; struct rules *r; - mtx_lock(&pr->pr_mtx); + prison_lock(pr); r = osd_jail_get(pr, mac_do_osd_jail_slot); - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); toast_rules(&r->head); return (0); } @@ -431,14 +431,14 @@ priv_grant(struct ucred *cred, int priv) switch (priv) { case PRIV_CRED_SETGROUPS: case PRIV_CRED_SETUID: - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); return (0); default: break; } } } - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); return (EPERM); } @@ -467,11 +467,11 @@ check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { if (rule_applies(cred, r)) { - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); return (0); } } - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); return (EPERM); } @@ -527,7 +527,7 @@ check_setuid(struct ucred *cred, uid_t uid) } } } - mtx_unlock(&pr->pr_mtx); + prison_unlock(pr); return (error); } From nobody Thu Apr 3 19:31:58 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBgz4lMDz5sLmY; Thu, 03 Apr 2025 19:31: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 4ZTBgy3xPnz3S62; Thu, 03 Apr 2025 19:31:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hBwnXaTP91AWbYxYKGooUHQ27We8yWFD3FjUmFIZZqA=; b=siTSYJRjCZzI/N3ULWOBNMRdpl4gI1hY5T4HZoZ2xvYqYcfX1bY5podgnVB0G3XwFGHc1g Yf6XXx7y9wmdH8EAJa+qyPm+oOa0afPcVej1OgGMcS+sW2T1ferK9PX5TZ9gwxDOJAhSBL 3oYqDivzo6OU217UW+1u7lOQTsAf2WB7FIksBA54ZiLkAIOX1aJctj+ZHodHWLT4cveUTg BwVgiCB3vT+H1JasnCUeS/5DheJBc7dCCIGwx3xArX0WIyaxbev7A9TylrJDunGLi8RVsY q83lSbKddiDGgrgaReieGn4THpnlZ1OAiNlKrqhdH9zat/R3Hy9YeNIHmU42lQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708718; a=rsa-sha256; cv=none; b=ZfMbG9zT0hGNXx+YonvoZ6FE720r9rq9ZQAx/9RQ3pVjULxG15/WzCqPJ0cBiUD5RfZdZU RWB1cg5+WQUwd/dAx3+4Q1oMfBtnCEIzfBe/fCDhTJgjUTVIFZZIK4znmA4Pok+4/V+A/N PP7O6w8LV9vumU/v6EuZQLK2Zw2SbVqDkPvzoquW9ONIODcbrdcNyNxrcMIkzUWPJmYoEa NoQtZQWU6jPZnDnJfOS+CSaIm2GGtZV3YbZPdRBu3OAeGDkylvHbF8jLQS+dbOwKj2KBmy ER6P9ZfDtj7tCLZQRTfhcryTDyaMcLaBXD0p6W1AKqrFawQW53K/AX2i/5Re8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hBwnXaTP91AWbYxYKGooUHQ27We8yWFD3FjUmFIZZqA=; b=Yy68Sn7xRhj/Vs2zHr5PbFr709QIstAl0LTqMao9vW1gyHq/Ky0HSZ0xlUYur+oWCI1uf0 Q2VRLcxdbRMcwgW3o78tvTNuudXXjSH2Jx82z9qFTqY4/HxqZ34fNA/iLoU6GbR3qLpzlM c4MaMFS/q4zPSnXIk8BCsJ/tPqVFHo6dlpjdMrDXxGIxUjP118AYOhlCaQij08hhcKGpOF Uf/zo+9UTFO3KpPx1ZO7mbVws4z7Z99/mQbOt0pHNUu/hASdMWCmI2LP85/aA1PyKhS6AJ 6eMmzWFhNTy6x1bntnJWj8D3yPPO86KweIC2MoJm7v1piTX6TzSQYSnFzvzaLA== 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 4ZTBgy3S65zmq; Thu, 03 Apr 2025 19:31: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 533JVwoa034000; Thu, 3 Apr 2025 19:31:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVwxj033997; Thu, 3 Apr 2025 19:31:58 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:58 GMT Message-Id: <202504031931.533JVwxj033997@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 9b6284bda25a - stable/14 - MAC/do: find_rules(): Clarify the contract List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9b6284bda25ad0921ad2c0a72f759e542831f251 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=9b6284bda25ad0921ad2c0a72f759e542831f251 commit 9b6284bda25ad0921ad2c0a72f759e542831f251 Author: Olivier Certner AuthorDate: 2024-07-03 13:11:12 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:57 +0000 MAC/do: find_rules(): Clarify the contract While here, rename an internal variable. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47596 (cherry picked from commit b2c661fe7e0b0dff859767a6a8714198b38dc235) --- sys/security/mac_do/mac_do.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index ce4ab7fa9e3a..dca5a1809966 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -153,24 +153,32 @@ out: return (error); } +/* + * Find rules applicable to the passed prison. + * + * Returns the applicable rules (and never NULL). 'pr' must be unlocked. + * 'aprp' is set to the (ancestor) prison holding these, and it must be unlocked + * once the caller is done accessing the rules. '*aprp' is equal to 'pr' if and + * only if the current jail has its own set of rules. + */ static struct rules * -find_rules(struct prison *spr, struct prison **prp) +find_rules(struct prison *const pr, struct prison **const aprp) { - struct prison *pr; + struct prison *cpr; struct rules *rules; - for (pr = spr;; pr = pr->pr_parent) { - prison_lock(pr); - if (pr == &prison0) { + for (cpr = pr;; cpr = cpr->pr_parent) { + prison_lock(cpr); + if (cpr == &prison0) { rules = &rules0; break; } - rules = osd_jail_get(pr, mac_do_osd_jail_slot); + rules = osd_jail_get(cpr, mac_do_osd_jail_slot); if (rules != NULL) break; - prison_unlock(pr); + prison_unlock(cpr); } - *prp = pr; + *aprp = cpr; return (rules); } From nobody Thu Apr 3 19:32:00 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh13Y7Dz5sLmd; Thu, 03 Apr 2025 19:32: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 4ZTBh05YW5z3S1m; Thu, 03 Apr 2025 19:32:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8TAMQBb/21OBNMv9hsKR9iDs1ecaNWW3MSzCnCgs1qU=; b=YGH7CXCCbBAZut1mo0A864TVzK2jqIgZHMhB+UJqCPP4BBgJ9P2PWQPiZEpp3NNlDtEM4V snKgYCoI1Wpp9cqk0S3FcgN+O+Zb9eXnMArCx7z4U8f/SUF5q2iDg3UvbPsKbX+f2lb7l7 b/F/6Kj8GlVr/EgG2S+KueUez++4IDp4N26m+BvPH+/dBC/3bgmKkfZQM09iOlxrk/KsUt idycFsAvESy8lkVvkYfq0axPXQH+Ys4fXEVK5L0/juTRLeydrW2t7oSFH1bW6q8xU5dCki 3bM7C+HY42inZS/FMEMpenmCDeDVKBLliVCnMuWx3dEA2hw0blKsF24/sk/wFg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708720; a=rsa-sha256; cv=none; b=o/OLg3jpTEGoOJ5RPrvRs/xgQVenl4gpTmoUfUqk3M8JZxcC8bFpo2FuL6yFKM1hMIV/KV lIA+1B9ee4YkfNJ5IthlTyJjgqNDlK0SfQcH8W3yZXNEKhKR3NSdnOaxl8f83sefMGvl0G aYnDzK5rJZmGQf5O1Ds5aDCBIIXUwjEgLtWfnAybt9uTslgD6eT/lHevR82S81gdIq4Xgn wGNBnht1r7rWTO44RvkpgK5x2HuvUsW6vyTWbNEC+0zBggEf1JT3nEXUX9AyRtZlJ9bSMp BDBa8WCQJHgVp5lGwly4zOTOEs7GDFqEybNY7X+EUTTBc4yr5EsNYf6HIO8HUw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8TAMQBb/21OBNMv9hsKR9iDs1ecaNWW3MSzCnCgs1qU=; b=dVC8U/EX+a+QVx3bz6yiecftuvCAhNh3cOTFKs38cm1/43CSIDcUiNCxsxxkWrhf5JNQq+ f2wP4UzLzUVF6s6i34vj+GQVatAoiSaPhe9rPBixLj9vh59TL61EIqdTQcdRtQr5pzBGhU WHZXUEM8YN3AQxVaOrklYOsP0/aH8ziUNyfjn/buE4VEXE/Rb3iRBQeWjS1/i3goV/1m3b tjH3YbpFTj2rV0izt5IS2+sMEAULQ3LhVU8RSA2vHD/Lb6x8CIKm2DSIm83SgyvCyWLNSo 4+O0TsF0chnyS52K15fDEIX1gtUHL8uJJgw+dXFG6JSrGVwJRnPJzDUxo0wglw== 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 4ZTBh04s4FzLs; Thu, 03 Apr 2025 19:32: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 533JW0QG036472; Thu, 3 Apr 2025 19:32:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW0CQ036457; Thu, 3 Apr 2025 19:32:00 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:00 GMT Message-Id: <202504031932.533JW0CQ036457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 72edbeb06172 - stable/14 - MAC/do: Allocate/deallocate rules as a whole List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 72edbeb061721b808fdd1b070fdf90ee6a05adac Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=72edbeb061721b808fdd1b070fdf90ee6a05adac commit 72edbeb061721b808fdd1b070fdf90ee6a05adac Author: Olivier Certner AuthorDate: 2024-07-15 15:12:47 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:57 +0000 MAC/do: Allocate/deallocate rules as a whole Stop recycling the top-level 'struct rules' already assigned to jails. This considerably simplifies the code, as now changing rules on a jail amounts to just changing the OSD pointer. Also, this is to increase potential concurrency in preparation for incoming fixes about enforcing rules. Indeed, keeping these changes relatively simple requires rules assigned to a jail to slightly outlive resetting them, which is most easily done by just operating on pointers to separate rules objects. The (negligible) price to pay for this change is that setting rules on a jail now systematically needs to allocate memory (and also that the OSD slot needs to be accessed twice, once to get the old rules to free them and another one to set the rules, which was already the case before when memory had to be allocated). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47598 (cherry picked from commit 3186b192e4db7896bae22a9116ab915bf852fa27) --- sys/security/mac_do/mac_do.c | 173 +++++++++++++++++++------------------------ 1 file changed, 75 insertions(+), 98 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 61c305547d39..3f7964220ca4 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -58,18 +58,30 @@ struct rules { TAILQ_HEAD(rulehead, rule) head; }; -static struct rules rules0; +static struct rules *rules0; static void -toast_rules(struct rulehead *head) +toast_rules(struct rules *const rules) { - struct rule *r; + struct rulehead *const head = &rules->head; + struct rule *rule; - while ((r = TAILQ_FIRST(head)) != NULL) { - TAILQ_REMOVE(head, r, r_entries); - free(r, M_DO); + while ((rule = TAILQ_FIRST(head)) != NULL) { + TAILQ_REMOVE(head, rule, r_entries); + free(rule, M_DO); } - TAILQ_INIT(head); + free(rules, M_DO); +} + +static struct rules * +alloc_rules(void) +{ + struct rules *const rules = malloc(sizeof(*rules), M_DO, M_WAITOK); + + _Static_assert(MAC_RULE_STRING_LEN > 0, "MAC_RULE_STRING_LEN <= 0!"); + rules->string[0] = 0; + TAILQ_INIT(&rules->head); + return (rules); } static int @@ -133,30 +145,32 @@ out: /* * Parse rules specification and produce rule structures out of it. * - * 'head' must be an empty list head. Returns 0 on success, with 'head' filled - * with structures representing the rules. On error, 'head' is left empty and - * the returned value is non-zero. If 'string' has length greater or equal to + * Returns 0 on success, with '*rulesp' made to point to a 'struct rule' + * representing the rules. On error, the returned value is non-zero and + * '*rulesp' is unchanged. If 'string' has length greater or equal to * MAC_RULE_STRING_LEN, ENAMETOOLONG is returned. If it is not in the expected * format (comma-separated list of clauses of the form "=:", * where is "uid" or "gid", an UID or GID (depending on ) and * is "*", "any" or some UID), EINVAL is returned. */ static int -parse_rules(const char *const string, struct rulehead *const head) +parse_rules(const char *const string, struct rules **const rulesp) { const size_t len = strlen(string); char *copy; char *p; char *element; + struct rules *rules; struct rule *new; int error = 0; - QMD_TAILQ_CHECK_TAIL(head, r_entries); - MPASS(TAILQ_EMPTY(head)); - if (len >= MAC_RULE_STRING_LEN) return (ENAMETOOLONG); + rules = alloc_rules(); + bcopy(string, rules->string, len + 1); + MPASS(rules->string[len] == '\0'); /* Catch some races. */ + copy = malloc(len + 1, M_DO, M_WAITOK); bcopy(string, copy, len + 1); MPASS(copy[len] == '\0'); /* Catch some races. */ @@ -167,11 +181,13 @@ parse_rules(const char *const string, struct rulehead *const head) continue; error = parse_rule_element(element, &new); if (error != 0) { - toast_rules(head); + toast_rules(rules); goto out; } - TAILQ_INSERT_TAIL(head, new, r_entries); + TAILQ_INSERT_TAIL(&rules->head, new, r_entries); } + + *rulesp = rules; out: free(copy, M_DO); return (error); @@ -194,7 +210,7 @@ find_rules(struct prison *const pr, struct prison **const aprp) for (cpr = pr;; cpr = cpr->pr_parent) { prison_lock(cpr); if (cpr == &prison0) { - rules = &rules0; + rules = rules0; break; } rules = osd_jail_get(cpr, mac_do_osd_jail_slot); @@ -207,53 +223,6 @@ find_rules(struct prison *const pr, struct prison **const aprp) return (rules); } -/* - * Ensure the passed prison has its own 'struct rules'. - * - * On entry, the prison must be unlocked, but will be returned locked. Returns - * the newly allocated and initialized 'struct rules', or the existing one. - */ -static struct rules * -ensure_rules(struct prison *const pr) -{ - struct rules *rules, *new_rules; - void **rsv; - - if (pr == &prison0) { - prison_lock(pr); - return (&rules0); - } - - /* Optimistically try to avoid memory allocations. */ -restart: - prison_lock(pr); - rules = osd_jail_get(pr, mac_do_osd_jail_slot); - if (rules != NULL) - return (rules); - prison_unlock(pr); - - new_rules = malloc(sizeof(*new_rules), M_DO, M_WAITOK|M_ZERO); - TAILQ_INIT(&new_rules->head); - rsv = osd_reserve(mac_do_osd_jail_slot); - prison_lock(pr); - rules = osd_jail_get(pr, mac_do_osd_jail_slot); - if (rules != NULL) { - /* - * We could cleanup while holding the prison lock (given the - * current implementation of osd_free_reserved()), but be safe - * and a good citizen by not keeping it more than strictly - * necessary. The only consequence is that we have to relookup - * the rules. - */ - prison_unlock(pr); - osd_free_reserved(rsv); - free(new_rules, M_DO); - goto restart; - } - osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, new_rules); - return (new_rules); -} - /* * OSD destructor for slot 'mac_do_osd_jail_slot'. * @@ -264,17 +233,19 @@ dealloc_osd(void *const value) { struct rules *const rules = value; - toast_rules(&rules->head); - free(rules, M_DO); + toast_rules(rules); } /* - * Deallocate the rules associated to a prison. + * Remove the rules specifically associated to a prison. + * + * In practice, this means that the rules become inherited (from the closest + * ascendant that has some). * * Destroys the 'mac_do_osd_jail_slot' slot of the passed jail. */ static void -dealloc_rules(struct prison *const pr) +remove_rules(struct prison *const pr) { prison_lock(pr); /* This calls destructor dealloc_osd(). */ @@ -283,25 +254,38 @@ dealloc_rules(struct prison *const pr) } /* - * Assign already parsed rules to a jail. + * Assign already built rules to a jail. */ static void -set_rules(struct prison *const pr, const char *const rules_string, - struct rulehead *const head) +set_rules(struct prison *const pr, struct rules *const rules) { - struct rules *rules; - struct rulehead old_head; + struct rules *old_rules; + void **rsv; - MPASS(rules_string != NULL); - MPASS(strlen(rules_string) < MAC_RULE_STRING_LEN); + rsv = osd_reserve(mac_do_osd_jail_slot); - TAILQ_INIT(&old_head); - rules = ensure_rules(pr); - strlcpy(rules->string, rules_string, MAC_RULE_STRING_LEN); - TAILQ_CONCAT(&old_head, &rules->head, r_entries); - TAILQ_CONCAT(&rules->head, head, r_entries); + prison_lock(pr); + if (pr == &prison0) { + old_rules = rules0; + rules0 = rules; + } else { + old_rules = osd_jail_get(pr, mac_do_osd_jail_slot); + osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, rules); + } prison_unlock(pr); - toast_rules(&old_head); + if (old_rules != NULL) + toast_rules(old_rules); +} + +/* + * Assigns empty rules to a jail. + */ +static void +set_empty_rules(struct prison *const pr) +{ + struct rules *const rules = alloc_rules(); + + set_rules(pr, rules); } /* @@ -312,13 +296,13 @@ set_rules(struct prison *const pr, const char *const rules_string, static int parse_and_set_rules(struct prison *const pr, const char *rules_string) { - struct rulehead head; + struct rules *rules; int error; - error = parse_rules(rules_string, &head); + error = parse_rules(rules_string, &rules); if (error != 0) return (error); - set_rules(pr, rules_string, &head); + set_rules(pr, rules); return (0); } @@ -361,7 +345,7 @@ static void destroy(struct mac_policy_conf *mpc) { osd_jail_deregister(mac_do_osd_jail_slot); - toast_rules(&rules0.head); + toast_rules(rules0); } static int @@ -382,7 +366,7 @@ mac_do_prison_set(void *obj, void *data) jsys = JAIL_SYS_NEW; switch (jsys) { case JAIL_SYS_INHERIT: - dealloc_rules(pr); + remove_rules(pr); error = 0; break; case JAIL_SYS_NEW: @@ -422,8 +406,7 @@ mac_do_prison_create(void *obj, void *data __unused) { struct prison *const pr = obj; - (void)ensure_rules(pr); - prison_unlock(pr); + set_empty_rules(pr); return (0); } @@ -431,12 +414,8 @@ static int mac_do_prison_remove(void *obj, void *data __unused) { struct prison *pr = obj; - struct rules *r; - prison_lock(pr); - r = osd_jail_get(pr, mac_do_osd_jail_slot); - prison_unlock(pr); - toast_rules(&r->head); + remove_rules(pr); return (0); } @@ -481,12 +460,10 @@ init(struct mac_policy_conf *mpc) struct prison *pr; mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, methods); - TAILQ_INIT(&rules0.head); + rules0 = alloc_rules(); sx_slock(&allprison_lock); - TAILQ_FOREACH(pr, &allprison, pr_list) { - (void)ensure_rules(pr); - prison_unlock(pr); - } + TAILQ_FOREACH(pr, &allprison, pr_list) + set_empty_rules(pr); sx_sunlock(&allprison_lock); } From nobody Thu Apr 3 19:32:01 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh23r47z5sLfy; Thu, 03 Apr 2025 19:32: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 4ZTBh16LbMz3S28; Thu, 03 Apr 2025 19:32:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qdcgcq9RbtG84TxAkcXTnNRfEiDXCgIFuFgACB+5dMU=; b=WZrDSl7GRTIdqjyk7it/VRjA9asrfTHVNUX+eUubp3FPwD7O7ugRGhwKCgK5VTWyRDrD28 tPJF50hcKzZwd1LucbeN0RVRgetQeGWCZlgTFaCKt/CqTFYIKlhEltjEy2Gb+g8WVc4ZmF LVrK/aAKsoH3qw+v8VMDXMDHamyNOLYMDy5InrjLi3svBxTvDOiVkTmo0gw4r9cp/7Lkyr Jl6XnFq4XrUTey2cHyt95hQ0cogJZWqpj7O7t4b1OK4ZuIK+y4KEk5P/MwwrBwBrxOkZFb 5v4wQYcsMhwzQSs3dI7grk9aWCeDUjkwequ+bQSCvGvShJ6Qe1IUK0pcbPsV2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708721; a=rsa-sha256; cv=none; b=R0qQlBzKNqS1ibalKSn5j1NMjRD2JqbCFwgwjifoe+I6BUnUfiJVM9ze9YrzEyeJIZUFlI njOWaAuqXFMUajeBIcLQj5lLRIYMfpSD0+7Qvs+psyWvaQWcYRNjrUhKXTDHbWJIv5D86V +0RcWxYd+4LGJTHSAV76ACnFE33ykQjUVkniMlYUDel2VpM47zHfngInX1utVgngStuHru Sv+qKJ9gc2LnNTPbzbmUqHCpiDLpKts2ILnQYu8nMBgR8jyTf+fCsgB8Rg6jPYPYE7E7aA JZk+4sWyZMJR1G9yq/Yn0mW6Wafs4GQF2+q7UQSFBmhu4WgrAUEARZZlZYw3OQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qdcgcq9RbtG84TxAkcXTnNRfEiDXCgIFuFgACB+5dMU=; b=tgtAEWjnmPAxur8QyrRsktMVNH4xsIlAT+hHvGjKFBZYlT3iO1kucWl3DpsLpjDUFl815/ iMM6yOIdNw0cn/dT8VmaYNLw6DfeK2trVooqU0Pzz2GwvgYXQJ98QLBBeS+wff7faqa2oZ daaJhBTGiKuWgpkROgXMUOKhPHyKsCpyC0ZH9YVngI6Qh8VypV4iavcL7X6UbYz0TI0YDG Sz7Tq666FfzBWm3iSMQv3grGxasESb338dGFh3nG9aB7Q8zc0wbL/U1kR/o5hTnNC0YT7h +lY3ifFh2h1u2Agk92GPt6TK8NRJwPDur1mozU1zZasukqVMZK9B8zv/qOVm8g== 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 4ZTBh15fYhz1Cly; Thu, 03 Apr 2025 19:32: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 533JW1ee037358; Thu, 3 Apr 2025 19:32:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW1Mj037355; Thu, 3 Apr 2025 19:32:01 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:01 GMT Message-Id: <202504031932.533JW1Mj037355@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 750580d15588 - stable/14 - MAC/do: Remove PR_METHOD_REMOVE method List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 750580d15588c295aedced21a84b3fd8986fe6bb Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=750580d15588c295aedced21a84b3fd8986fe6bb commit 750580d15588c295aedced21a84b3fd8986fe6bb Author: Olivier Certner AuthorDate: 2024-07-03 12:22:35 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:58 +0000 MAC/do: Remove PR_METHOD_REMOVE method It isn't really needed, since common jail code destroys jail OSD storage at jail destruction (via osd_jail_exit()), triggering our destructor dealloc_osd(). Leveraging this mechanism is arguably even better as it causes deallocation to always happen without the 'allprison_lock' lock. While here, make the static definition of 'methods' top-level, renaming it to 'osd_methods'. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47599 (cherry picked from commit 301eeb10dc197986b2b6261b064cbfe96333f7fb) --- sys/security/mac_do/mac_do.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 3f7964220ca4..ed4c984ff559 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -410,15 +410,6 @@ mac_do_prison_create(void *obj, void *data __unused) return (0); } -static int -mac_do_prison_remove(void *obj, void *data __unused) -{ - struct prison *pr = obj; - - remove_rules(pr); - return (0); -} - static int mac_do_prison_check(void *obj, void *data) { @@ -447,19 +438,26 @@ mac_do_prison_check(void *obj, void *data) return (error); } +/* + * OSD jail methods. + * + * There is no PR_METHOD_REMOVE, as OSD storage is destroyed by the common jail + * code (see prison_cleanup()), which triggers a run of our dealloc_osd() + * destructor. + */ +static const osd_method_t osd_methods[PR_MAXMETHOD] = { + [PR_METHOD_CREATE] = mac_do_prison_create, + [PR_METHOD_GET] = mac_do_prison_get, + [PR_METHOD_SET] = mac_do_prison_set, + [PR_METHOD_CHECK] = mac_do_prison_check, +}; + static void init(struct mac_policy_conf *mpc) { - static osd_method_t methods[PR_MAXMETHOD] = { - [PR_METHOD_CREATE] = mac_do_prison_create, - [PR_METHOD_GET] = mac_do_prison_get, - [PR_METHOD_SET] = mac_do_prison_set, - [PR_METHOD_CHECK] = mac_do_prison_check, - [PR_METHOD_REMOVE] = mac_do_prison_remove, - }; struct prison *pr; - mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, methods); + mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, osd_methods); rules0 = alloc_rules(); sx_slock(&allprison_lock); TAILQ_FOREACH(pr, &allprison, pr_list) From nobody Thu Apr 3 19:31:59 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh05t7Dz5sM0n; Thu, 03 Apr 2025 19:32: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 4ZTBgz4nGDz3S6G; Thu, 03 Apr 2025 19:31:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708719; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HOpQ4JLs/8qRk6WUkCGZChXLEo9JyFbRJ/B/zCu9+uA=; b=dv4FTHgYxDF6ZTOX6F9oxbqZ7+5HgmBNJwqjCvqbgV412zWraaduN6PWjh0MjTaSjsKTBM QsgN7C9TFkZwHUGPlf2vVlN4tmnrw+SHOQ8ZjkW+k6BZ5mjjJ3HQNqDl2tZv+qqq81mnJs fiYOPc3jan+bzAaBfOBglaZ+36qPCjmlY0kWQiFgDz/7Orhbrea3bJ9N3Qq5GPGZxjwwYq g8m6CQRxgFjoJKpqHsgDTAg193YrwoM+j2Ll4e+dmlVKFFFUZA14v0SfhiUUSN6ugIuVGP xJZ8NtABkD7YvzxwV2o7eKZGU+2ZJfVZsWZW3jx+aF+t0vGJrSEX+pOuz0X9OQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708719; a=rsa-sha256; cv=none; b=ntRJTjdV+CbbnhpofKDKMwWBU9tRymwRQ176HLdClNtLUGWZ/V+g+5AtLvyp9k7tHQrbLn pHFPHo05EtNEENSLs3xKq1ivJy8a8wjKMfzVirzL2uoRrZJjX06L9x1ARZ+59eOKyqkye1 BV2DxKyIhsq6sY1fsI0BXIzr+G6Dwozp6LNuwAsAGVKFMYLnT1Mt+U1SFUO6ZFVYwB7cm+ mvDFqYwkenmy53/9ImtIetEtMHGH0dJ5Eu8qNglenbleyIddIKX2vPIaxeyvSF1oXXgLe6 bvfBcNkSee2pBP359ckcxl9qm3QbkwJMMrL76sd7EsewZ373AuPpDY0mbaWrLg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708719; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HOpQ4JLs/8qRk6WUkCGZChXLEo9JyFbRJ/B/zCu9+uA=; b=hEKPCa3WImHcdBflcrsesqCXC1oCziXfivZwKJ5mfhGu9c/Qx8yxJi3cJvCTUCezwUZ/H5 O3v85pH0/yH0xe0I3rS4qOQsIZuWBaNE2T+067rBkFo4qhi/P9/I1AdTqIlNQRX4JimL24 CtQJXo8ak1KiheojblpVPFC9tpGSpcEorG5HKwNNWZBrJsrQjnCLNqYoqQl9bsd2RVHlYN M4QU4l9q25SELTTw1Rl8yWiFwnTntQbVIbn2+aA1749EwNU766e7kgtLS3cm7CWwhheOce qPRezWpLkwYNr9JbXss6qi9OAe/b7WJsXnEg7uCqYmDxqT30upDS2qAYmH+9FQ== 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 4ZTBgz4GvPzZl; Thu, 03 Apr 2025 19:31: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 533JVx4G035074; Thu, 3 Apr 2025 19:31:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JVxng035059; Thu, 3 Apr 2025 19:31:59 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:31:59 GMT Message-Id: <202504031931.533JVxng035059@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 862665e3805c - stable/14 - MAC/do: Factor out setting/destroying rule structures List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 862665e3805ca092498c34eca356adb797eeaa6e Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=862665e3805ca092498c34eca356adb797eeaa6e commit 862665e3805ca092498c34eca356adb797eeaa6e Author: Olivier Certner AuthorDate: 2024-07-02 17:07:25 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:57 +0000 MAC/do: Factor out setting/destroying rule structures This generally removes duplicate code and clarifies higher-level operations, allowing to fix several important bugs. New (internal) functions: - ensure_rules(): Ensure that a jail has a populated 'mac_do_osd_jail_slot', and returns the corresponding 'struct rules'. - dealloc_rules(): Destroy the 'mac_do_osd_jail_slot' slot of a jail. - set_rules(): Assign already parsed rules to a jail. Leverages ensure_rules(). - parse_and_set_rules(): Combination of parse_rules() and set_rules(). Bugs fixed in mac_do_prison_set(): - A panic if "mdo" is explicitly passed to JAIL_SYS_NEW but "mdo.rules" is absent, in which case 'rules_string' wasn't set (setting 'rules' at this point would do nothing). - In the JAIL_SYS_NEW case, would release the prison lock and reacquire it, but still using the same 'rules' pointer that can have been freed and changed concurrently, as the prison lock is temporary unlocked. (This is generally a bug of the mac_do_alloc_prison()'s interface when 'lrp' is not NULL.) Suppress mac_do_alloc_prison(), as it has the following bugs: - The interface bug mentioned just above. - Wrong locking, leading to deadlocks in case of setting jail parameters multiple times (concurrently or not). It has been replaced by either parse_and_set_rules(), or by ensure_rules() directly coupled with prison_unlock(). Rename mac_do_dealloc_prison(), the OSD destructor, to dealloc_osd(), and make it free the 'struct rules' itself (which was leaking). While here, in parse_rules(): Clarify the contract by adding comments, and check (again) for the rules specification's length. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47597 (cherry picked from commit bbf8af664dc94804c219cd918788c0c127a5c310) --- sys/security/mac_do/mac_do.c | 235 ++++++++++++++++++++++++++++--------------- 1 file changed, 156 insertions(+), 79 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index dca5a1809966..61c305547d39 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -69,6 +69,7 @@ toast_rules(struct rulehead *head) TAILQ_REMOVE(head, r, r_entries); free(r, M_DO); } + TAILQ_INIT(head); } static int @@ -129,15 +130,38 @@ out: return (error); } +/* + * Parse rules specification and produce rule structures out of it. + * + * 'head' must be an empty list head. Returns 0 on success, with 'head' filled + * with structures representing the rules. On error, 'head' is left empty and + * the returned value is non-zero. If 'string' has length greater or equal to + * MAC_RULE_STRING_LEN, ENAMETOOLONG is returned. If it is not in the expected + * format (comma-separated list of clauses of the form "=:", + * where is "uid" or "gid", an UID or GID (depending on ) and + * is "*", "any" or some UID), EINVAL is returned. + */ static int parse_rules(const char *const string, struct rulehead *const head) { - struct rule *new; - char *const copy = strdup(string, M_DO); - char *p = copy; + const size_t len = strlen(string); + char *copy; + char *p; char *element; + struct rule *new; int error = 0; + QMD_TAILQ_CHECK_TAIL(head, r_entries); + MPASS(TAILQ_EMPTY(head)); + + if (len >= MAC_RULE_STRING_LEN) + return (ENAMETOOLONG); + + copy = malloc(len + 1, M_DO, M_WAITOK); + bcopy(string, copy, len + 1); + MPASS(copy[len] == '\0'); /* Catch some races. */ + + p = copy; while ((element = strsep(&p, ",")) != NULL) { if (element[0] == '\0') continue; @@ -183,11 +207,125 @@ find_rules(struct prison *const pr, struct prison **const aprp) return (rules); } +/* + * Ensure the passed prison has its own 'struct rules'. + * + * On entry, the prison must be unlocked, but will be returned locked. Returns + * the newly allocated and initialized 'struct rules', or the existing one. + */ +static struct rules * +ensure_rules(struct prison *const pr) +{ + struct rules *rules, *new_rules; + void **rsv; + + if (pr == &prison0) { + prison_lock(pr); + return (&rules0); + } + + /* Optimistically try to avoid memory allocations. */ +restart: + prison_lock(pr); + rules = osd_jail_get(pr, mac_do_osd_jail_slot); + if (rules != NULL) + return (rules); + prison_unlock(pr); + + new_rules = malloc(sizeof(*new_rules), M_DO, M_WAITOK|M_ZERO); + TAILQ_INIT(&new_rules->head); + rsv = osd_reserve(mac_do_osd_jail_slot); + prison_lock(pr); + rules = osd_jail_get(pr, mac_do_osd_jail_slot); + if (rules != NULL) { + /* + * We could cleanup while holding the prison lock (given the + * current implementation of osd_free_reserved()), but be safe + * and a good citizen by not keeping it more than strictly + * necessary. The only consequence is that we have to relookup + * the rules. + */ + prison_unlock(pr); + osd_free_reserved(rsv); + free(new_rules, M_DO); + goto restart; + } + osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, new_rules); + return (new_rules); +} + +/* + * OSD destructor for slot 'mac_do_osd_jail_slot'. + * + * Called with 'value' not NULL. + */ +static void +dealloc_osd(void *const value) +{ + struct rules *const rules = value; + + toast_rules(&rules->head); + free(rules, M_DO); +} + +/* + * Deallocate the rules associated to a prison. + * + * Destroys the 'mac_do_osd_jail_slot' slot of the passed jail. + */ +static void +dealloc_rules(struct prison *const pr) +{ + prison_lock(pr); + /* This calls destructor dealloc_osd(). */ + osd_jail_del(pr, mac_do_osd_jail_slot); + prison_unlock(pr); +} + +/* + * Assign already parsed rules to a jail. + */ +static void +set_rules(struct prison *const pr, const char *const rules_string, + struct rulehead *const head) +{ + struct rules *rules; + struct rulehead old_head; + + MPASS(rules_string != NULL); + MPASS(strlen(rules_string) < MAC_RULE_STRING_LEN); + + TAILQ_INIT(&old_head); + rules = ensure_rules(pr); + strlcpy(rules->string, rules_string, MAC_RULE_STRING_LEN); + TAILQ_CONCAT(&old_head, &rules->head, r_entries); + TAILQ_CONCAT(&rules->head, head, r_entries); + prison_unlock(pr); + toast_rules(&old_head); +} + +/* + * Parse a rules specification and assign them to a jail. + * + * Returns the same error code as parse_rules() (which see). + */ +static int +parse_and_set_rules(struct prison *const pr, const char *rules_string) +{ + struct rulehead head; + int error; + + error = parse_rules(rules_string, &head); + if (error != 0) + return (error); + set_rules(pr, rules_string, &head); + return (0); +} + static int sysctl_rules(SYSCTL_HANDLER_ARGS) { char *new_string; - struct rulehead head, saved_head; struct prison *pr; struct rules *rules; int error; @@ -207,17 +345,7 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) if (error) goto out; - TAILQ_INIT(&head); - error = parse_rules(new_string, &head); - if (error) - goto out; - TAILQ_INIT(&saved_head); - prison_lock(pr); - TAILQ_CONCAT(&saved_head, &rules->head, r_entries); - TAILQ_CONCAT(&rules->head, &head, r_entries); - strlcpy(rules->string, new_string, MAC_RULE_STRING_LEN); - prison_unlock(pr); - toast_rules(&saved_head); + error = parse_and_set_rules(pr, new_string); out: free(new_string, M_DO); @@ -236,51 +364,11 @@ destroy(struct mac_policy_conf *mpc) toast_rules(&rules0.head); } -static void -mac_do_alloc_prison(struct prison *pr, struct rules **lrp) -{ - struct prison *ppr; - struct rules *rules, *new_rules; - void **rsv; - - rules = find_rules(pr, &ppr); - if (ppr == pr) - goto done; - - prison_unlock(ppr); - new_rules = malloc(sizeof(*new_rules), M_PRISON, M_WAITOK|M_ZERO); - rsv = osd_reserve(mac_do_osd_jail_slot); - rules = find_rules(pr, &ppr); - if (ppr == pr) { - free(new_rules, M_PRISON); - osd_free_reserved(rsv); - goto done; - } - prison_lock(pr); - osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, new_rules); - TAILQ_INIT(&new_rules->head); -done: - if (lrp != NULL) - *lrp = rules; - prison_unlock(pr); - prison_unlock(ppr); -} - -static void -mac_do_dealloc_prison(void *data) -{ - struct rules *r = data; - - toast_rules(&r->head); -} - static int mac_do_prison_set(void *obj, void *data) { struct prison *pr = obj; struct vfsoptlist *opts = data; - struct rulehead head, saved_head; - struct rules *rules; char *rules_string; int error, jsys, len; @@ -289,33 +377,19 @@ mac_do_prison_set(void *obj, void *data) jsys = -1; error = vfs_getopt(opts, "mdo.rules", (void **)&rules_string, &len); if (error == ENOENT) - rules = NULL; + rules_string = ""; else jsys = JAIL_SYS_NEW; switch (jsys) { case JAIL_SYS_INHERIT: - prison_lock(pr); - osd_jail_del(pr, mac_do_osd_jail_slot); - prison_unlock(pr); + dealloc_rules(pr); + error = 0; break; case JAIL_SYS_NEW: - mac_do_alloc_prison(pr, &rules); - if (rules_string == NULL) - break; - TAILQ_INIT(&head); - error = parse_rules(rules_string, &head); - if (error) - return (1); - TAILQ_INIT(&saved_head); - prison_lock(pr); - TAILQ_CONCAT(&saved_head, &rules->head, r_entries); - TAILQ_CONCAT(&rules->head, &head, r_entries); - strlcpy(rules->string, rules_string, MAC_RULE_STRING_LEN); - prison_unlock(pr); - toast_rules(&saved_head); + error = parse_and_set_rules(pr, rules_string); break; } - return (0); + return (error); } SYSCTL_JAIL_PARAM_SYS_NODE(mdo, CTLFLAG_RW, "Jail MAC/do parameters"); @@ -346,9 +420,10 @@ done: static int mac_do_prison_create(void *obj, void *data __unused) { - struct prison *pr = obj; + struct prison *const pr = obj; - mac_do_alloc_prison(pr, NULL); + (void)ensure_rules(pr); + prison_unlock(pr); return (0); } @@ -405,11 +480,13 @@ init(struct mac_policy_conf *mpc) }; struct prison *pr; - mac_do_osd_jail_slot = osd_jail_register(mac_do_dealloc_prison, methods); + mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, methods); TAILQ_INIT(&rules0.head); sx_slock(&allprison_lock); - TAILQ_FOREACH(pr, &allprison, pr_list) - mac_do_alloc_prison(pr, NULL); + TAILQ_FOREACH(pr, &allprison, pr_list) { + (void)ensure_rules(pr); + prison_unlock(pr); + } sx_sunlock(&allprison_lock); } From nobody Thu Apr 3 19:32:02 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh35DpLz5sLqT; Thu, 03 Apr 2025 19:32: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 4ZTBh26hYgz3SFL; Thu, 03 Apr 2025 19:32:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W8YW+2fddAPgGj2VwWxWxESa3KO8MdIRAaZSRKSEtQE=; b=K/ivd1OOADrckDcItAccckZDfzIl8ZkTrELJhtX7ioJE5XIph3S9IW3sMqUEolkJGIiMpK 5bQizIdD3SQMAOgQQKF3l/ADau4aszqCOxSD7zdL0SP5PC7LKdaHmUKZvLf6221Lb/3oTi tojcGP4OY+W6zqhEqUPzJxFM9NTQBLOOpp14QiVn3mvVaekgPKn5oOwPaJOEuFx2GEH34H MnsNOu075tj8277DjxV5v11sijEMh00KOL76d6L2KPfje+LIvb48tOD+E+613CgY//7WbG eXSh6xvpgSUtFld4tsJJNsqU081tg5kbUtYlO1CTSljHPJjfXBJ4h3tA5m0F6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708722; a=rsa-sha256; cv=none; b=ZlUJHk0Wms2BlUueIHOzQrwm43NxbvdwG11dq1qRrxCh/ZVLM+mMvfgPtnDi5z1VkSDLpD SiNFrPD/+nkVQefNkzcIszb91kGainWbId48L3oHRW+h7qbl5Y6cxnl+lVSs0rSzPA1vVW OewiM0UwAjZVvg5ePN3dxyp2A1q3TX6TwCyJ65wUAiDKfcnhLv0PjlBP625etIK/NNnnMM XU6BrROxOV5qmMgk4AHgH8QnbGjjiv+HVAiiCRW56tdVEAXXN0etYL9lGXDWjmadzyxTnd 3XFIRM+TS4km/7WIfE5Ke7zbWGzUKMIvvXIVwfejInEReSI9R0hX2BVVJ7ANpQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W8YW+2fddAPgGj2VwWxWxESa3KO8MdIRAaZSRKSEtQE=; b=SPrWwTPZL8NIi9PJuhrm9nigYRSYWWAdmCnEOl87xpi0RV1qRussgZz6dP6Hb1qtCVt2mk OlZpCObYTCAOGRd5aHbNTJVxJfR3PUnoJ6V0gUEYpL8aZ//RZeOTSa3IiqrWWMahDokXCw xkqik616yyzO5wSFkwGGRSaMZeBCVGrgGX8qqFH5WYQXIjw9nEMr/9XJexXDTsucWIqIYM fNlYQxVbrubDwRg9srdqYkLw8bimXeBLM5Tx9jhvoSlf6CwY2dHU12nZq1QmiznkLZvBJg JjYkSzIQP9BfSEdh8QYqPikQQfSeuD4myvhi8J0SmL9uRSwvXiCyecyaSra3/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 4ZTBh26F2NzWW; Thu, 03 Apr 2025 19:32: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 533JW2ZB037392; Thu, 3 Apr 2025 19:32:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW2aq037389; Thu, 3 Apr 2025 19:32:02 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:02 GMT Message-Id: <202504031932.533JW2aq037389@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 4d2b20daf4d4 - stable/14 - MAC/do: sysctl_rules(): Always copy the rules specification string List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4d2b20daf4d416a0d748f9ec27cfa112caafa7e1 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=4d2b20daf4d416a0d748f9ec27cfa112caafa7e1 commit 4d2b20daf4d416a0d748f9ec27cfa112caafa7e1 Author: Olivier Certner AuthorDate: 2024-07-03 12:52:38 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:58 +0000 MAC/do: sysctl_rules(): Always copy the rules specification string We are not guaranteed that the 'rules' storage stays stable if we don't hold the prison lock. For this reason, always copy the specification string (under the lock). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47600 (cherry picked from commit 292c814931d975d56d5ffa7c3c85191d56a059c4) --- sys/security/mac_do/mac_do.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index ed4c984ff559..94fe7b99fc9d 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -309,30 +309,22 @@ parse_and_set_rules(struct prison *const pr, const char *rules_string) static int sysctl_rules(SYSCTL_HANDLER_ARGS) { - char *new_string; + char *const buf = malloc(MAC_RULE_STRING_LEN, M_DO, M_WAITOK); struct prison *pr; struct rules *rules; int error; rules = find_rules(req->td->td_ucred->cr_prison, &pr); + strlcpy(buf, rules->string, MAC_RULE_STRING_LEN); prison_unlock(pr); - if (req->newptr == NULL) - return (sysctl_handle_string(oidp, rules->string, MAC_RULE_STRING_LEN, req)); - new_string = malloc(MAC_RULE_STRING_LEN, M_DO, - M_WAITOK|M_ZERO); - prison_lock(pr); - strlcpy(new_string, rules->string, MAC_RULE_STRING_LEN); - prison_unlock(pr); - - error = sysctl_handle_string(oidp, new_string, MAC_RULE_STRING_LEN, req); - if (error) + error = sysctl_handle_string(oidp, buf, MAC_RULE_STRING_LEN, req); + if (error != 0 || req->newptr == NULL) goto out; - error = parse_and_set_rules(pr, new_string); - + error = parse_and_set_rules(pr, buf); out: - free(new_string, M_DO); + free(buf, M_DO); return (error); } From nobody Thu Apr 3 19:32:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh42lPxz5sLkl; Thu, 03 Apr 2025 19:32: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 4ZTBh40lHQz3S0V; Thu, 03 Apr 2025 19:32:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dunC5dbTo8yV8wxECdhO4ZypmzfNyv4zd0uhZbpXA7Y=; b=L2pV0BwebwWj6Itq0kZ+ON1z/hYt53Z+tQ9Dj1HpUU4H4SRDA003ckYf5pBf8bcthGUTYP +i6cSYeXzDZBOiA8yNNNTjwbYx3m3jXEiqRr5GMvgNHZXNuCS7G6PJjLhm//EHl3jcmpIW QRqC2Kbc3Gv+I9ymzfmcfuTTJvPRvDOOg/W29D55eghVUuQiMCc0GcbUcVE0SHqKLtbJho kXrDkVcGu37cysH6L4RIJMNmx8jSYDuvzWFrqltW3PQragpq0Tg614d65aSg9Epjao486O iOfszHxzv3mFGzso8Jp/xGe+eHDvy9Y9bRz21BNbVWjg7sLUfhErZMM5iQ34/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708724; a=rsa-sha256; cv=none; b=wNIrBNtPBUVoRf4kmtIfOHLXEqAvPwqsBPs3paDNqZuDLVeNbGYqVDJN5IIN17X5EV6KR1 kwJZGkHbfhp5LDZmf4IJw5Pxoipi4WqPTElrNMaq8wWA1BqDDcLlfp8E+t0faARqTpe2JA 3LOB7sBU1TedYw8KuweaRes51UiPqNb8foZiLl+MiEFlQg0IP8cgq0sLXHl0V6Kp7rrbGh eqSW4Fcrhi5SiUHByDANp4hYHiLh7g+WYT8FiFra1EMmpHcguznCUOTSwV2yxmyDTtji1H 9FmKCV6IERevvBOUx7NfTBK1GFzQrJOzRVpw8gWsDfnL8JGo4PXTbzw21esWvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708724; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dunC5dbTo8yV8wxECdhO4ZypmzfNyv4zd0uhZbpXA7Y=; b=N1v3FM2rzeHJTK2gtkRjimFT/wIqRHqiq894sq+nXEFLEIHabOBHB/MqFb/3zDLCWfbEB5 XmAFzdtHeKcy41sUyf1eVsLlgIJUPrKe7NNyCUzljW06IBqkaNTWfR7AMzmV7kCs1mqT6Q Gl8+NCi2/pBT7I2rAvsJAG6rzGhEuExgIUzoJyBFpq8hF3bNVBAOy1SMv0iuhl37qvhtKn 3CzUbk7+xkzTemMH/fpLiSwC64haZ8yd3fCCqsOISrdAMS7IWLkTuylY70TVgltMmuidHL Na0fpd+lNgfEDxOek2DfaKEzCRRgJJHpaq8H8L5M5fouPlCva/RsmbTGKK009w== 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 4ZTBh40LNGzXL; Thu, 03 Apr 2025 19:32: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 533JW3KR037432; Thu, 3 Apr 2025 19:32:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW3wd037429; Thu, 3 Apr 2025 19:32:03 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:03 GMT Message-Id: <202504031932.533JW3wd037429@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 37a72b0ce427 - stable/14 - MAC/do: sysctl_rules(): Set the requesting's thread's jail's rules List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 37a72b0ce4276ba9da54210638d714444c0e8100 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=37a72b0ce4276ba9da54210638d714444c0e8100 commit 37a72b0ce4276ba9da54210638d714444c0e8100 Author: Olivier Certner AuthorDate: 2024-07-03 12:59:12 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:58 +0000 MAC/do: sysctl_rules(): Set the requesting's thread's jail's rules Allowing to change the rules specification on a jail other than the requesting's thread one is a security issue, as it will immediately apply to the jail we inherited from and all its other descendants that inherit from it. With this change, setting the 'mdo_rules' sysctl in a jail forces that jail to no more inherit from its parent. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47601 (cherry picked from commit 53d2e0d4854997005271ee60791ab114bd6e0099) --- sys/security/mac_do/mac_do.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 94fe7b99fc9d..98bace7052f6 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -310,11 +310,12 @@ static int sysctl_rules(SYSCTL_HANDLER_ARGS) { char *const buf = malloc(MAC_RULE_STRING_LEN, M_DO, M_WAITOK); + struct prison *const td_pr = req->td->td_ucred->cr_prison; struct prison *pr; struct rules *rules; int error; - rules = find_rules(req->td->td_ucred->cr_prison, &pr); + rules = find_rules(td_pr, &pr); strlcpy(buf, rules->string, MAC_RULE_STRING_LEN); prison_unlock(pr); @@ -322,7 +323,8 @@ sysctl_rules(SYSCTL_HANDLER_ARGS) if (error != 0 || req->newptr == NULL) goto out; - error = parse_and_set_rules(pr, buf); + /* Set our prison's rules, not that of the jail we inherited from. */ + error = parse_and_set_rules(td_pr, buf); out: free(buf, M_DO); return (error); From nobody Thu Apr 3 19:32:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh53zLYz5sM12; Thu, 03 Apr 2025 19:32: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 4ZTBh520ZTz3SHs; Thu, 03 Apr 2025 19:32:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708725; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WMElTZAMATZ/16025R4zGa2S3Py2D02TS/H/tj6+74A=; b=eFj/Ud64YAM/yzMLfvo+1IBce+kLM5JhWS5GFAfvMKiqSR0CIeFtmLgUMd5UvzX1h6pcTq NGJfviE6DjPTX6FT/8Bt7iUzHoRQQoU8DAMdJ0N8+2zP6EFQI0lejfPDlf0XUaCYlBCcy7 WfNPR4TJrFTi1g919ICfOFnx3Z13cGVnlkaYWhADY16V3A1/DWx7jvDn41qVsYDQZlISdc NsIJ4608g4OHev6jPvIC9QLmyeKjhGhdBDzB3SPcbYWS/LJYdyl5sPk2fhXafWKFM5Vmn9 CyunzD4D/U0laJi26znOsS33rnw/FUwtjfx7SIg1ePZA2hujskYhDHuvCW6ecQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708725; a=rsa-sha256; cv=none; b=qDwhIFnww/KsYiIoV+fRO4XgyIafLmUMJGfCy183DuPUamPIH5z7FLt0p89flb2BGSCqk4 5VfiK6K//dhyiNV+xjqfyJv1yDLvCUIB/l1rnw+ID2zPpTCqoLQP89IU4vxBSkfoaler3M mmjYkky3jWsgoNP7CjDYMsAKEApt5U52cCy2S1jn7G/fKiRZWGiduabgy+uN05+AOFxovf /sCK2iORPR47g9YL3ExUbMDRJvn3oOjKLOK7YjnlGyAYhh6vz2HJ242FO5QcTNLGll0kSQ WzhYUgqAe3Ke/AilzVILXufuk5qsbXHCVVZIUZM/0Md5CDlh41z47TdYAE0YHw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708725; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WMElTZAMATZ/16025R4zGa2S3Py2D02TS/H/tj6+74A=; b=vtqczLrksXdI/ni4mdQrJ/C0LWrXEfVZt2+J5jIZab+GCbspY+O60gz39WPfLTXGiLQB4r F+sqpyQn4drFHzb+Lx3XRF+dEZ8sK6bTKAnLg83muSdkCM1AlP9Qbskl8b+hfm+WRTpSSS rTuDe35sVfQTHvBJfXNp8d57Ge9LbWHZIqBevIb9euHDyYZd00vAlDaUtWCr7AsD//O2hP py4xPYfvlVG957Eewp3zWfzVefCn2kw9UjwfXeDjncAf+ZWzYY6T+sN737XRKpWwWcLki9 5d+wfPJxwLqAc4FBbGve7SKM11ZsRSFi+breSlrLTT9NJmIxl0VuZbCsnF9s8A== 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 4ZTBh51HsMzWX; Thu, 03 Apr 2025 19:32: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 533JW5s6037465; Thu, 3 Apr 2025 19:32:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW5tE037462; Thu, 3 Apr 2025 19:32:05 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:05 GMT Message-Id: <202504031932.533JW5tE037462@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: e553ebd516fa - stable/14 - MAC/do: Enable changing 'security.mac.do.rules' from a jail List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e553ebd516fa7cbc7822f8a822e24345d0d26838 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=e553ebd516fa7cbc7822f8a822e24345d0d26838 commit e553ebd516fa7cbc7822f8a822e24345d0d26838 Author: Olivier Certner AuthorDate: 2024-07-03 13:49:51 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:58 +0000 MAC/do: Enable changing 'security.mac.do.rules' from a jail Now that sysctl_rules() has been fixed to behave. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47602 (cherry picked from commit b3f93680e39b90c02ddabdaf98f9c9a669d24c00) --- sys/security/mac_do/mac_do.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 98bace7052f6..787790cb2b34 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -331,7 +331,7 @@ out: } SYSCTL_PROC(_security_mac_do, OID_AUTO, rules, - CTLTYPE_STRING|CTLFLAG_RW|CTLFLAG_MPSAFE, + CTLTYPE_STRING|CTLFLAG_RW|CTLFLAG_PRISON|CTLFLAG_MPSAFE, 0, 0, sysctl_rules, "A", "Rules"); From nobody Thu Apr 3 19:32:06 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh65wvfz5sM15; Thu, 03 Apr 2025 19:32: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 4ZTBh62KBsz3S9n; Thu, 03 Apr 2025 19:32:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708726; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ntcj8PUveMCjXHTLcqO7VJyZX/rz4bbrbyUxZujAAPU=; b=SHvBxt4YM3I434bO4oG5qRL5zYuczd1JpArrYYbbON6ds8qKDCMrKpF1iybdGYnJb4ACio s7VY/2LlfpjmgHR31Sif54R8QldposRLSdQEIGx9XOtRAKqL5EaAhpX+xSoHNbf4joRk3Z kSjkwdIcNzrWA4qBbUuTnXa3eYduFxjgQqa0/BbsB/agLOmUYRWxuQVljjql8R1+IAeQ85 8mIKzCVMnnHyNgJYgPJ21nCPoT8ZYJraWAZVMY8o3q8sgQpD+5/mPV5zHgKIp0KMaAIyob Y4tbEzqJIlOTFWt+YQ+EJLdccHwHM91aQUhtQ8e5zt5cInehCNOLU7P6SJtRbg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708726; a=rsa-sha256; cv=none; b=XDCl9kvZhpMk1k5jr27IHk48qabNQ2hvKPC6mxYtra0QRxkRsgKpMoK8xb89u8yS9JDUyj 0BfFl5g5BVb4Zm/EdGzaVr5A52yi3e2RlIoB/GTvgwN+R630vgZFche9Okz/Nbi6C1m8ol VHZsZkJqp/zfoxvPQBi5LUOiyOZwjrCUm/iQQ/nsd/rdmvK93szVpNFjyFGXHTyyESpfi1 rhKZvc3Dn7X51lHBFvl7VnHMnsrLUKMcM5GJl4eql7XFIzXGlYb+nocQI7A+MXIWStmUqx 7Vqn8nMN8otk5N6lsE5YV/Ts66iO9moqPoR/5MxEZ3mWf90EwXVVsPf0DfCUdw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708726; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ntcj8PUveMCjXHTLcqO7VJyZX/rz4bbrbyUxZujAAPU=; b=Ta5qKLf0hjFnwzA5kBmpzJMB8O0ptbx6h17pAw+j61CojBMtRwcptAzHDK3c4kqJ2WjB/D 7dhtNMDzkMVB25q8WqVyMBhVYkh8l5MZ055mM+FvkLCq+qyymajReCN2KeAb+Y33GAa0vJ MwvmoSv5J8cO6dU6fVc4xzJiGb4ow4E4vWQzpF+LJTUMDGY5LE3CH7dtwKYZmt8mrlmcY7 l6vYeAOGAtavGGB43ptT7x3YMmj9yRrHyNUkU1BiKKYjoDpbuAzHnNVblEZlGW3z2Z5H/T ULQTAClhj7DOLAUusdy3SkuPCT3ePnRdD9lrqiID3vLfKA1NCucLG0tmeS0kOQ== 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 4ZTBh61r7fzXM; Thu, 03 Apr 2025 19:32: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 533JW6PG038369; Thu, 3 Apr 2025 19:32:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW61D038353; Thu, 3 Apr 2025 19:32:06 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:06 GMT Message-Id: <202504031932.533JW61D038353@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: ae2ee5470d9d - stable/14 - MAC/do: Remove the 'prison0' special cases in the common paths List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ae2ee5470d9d0630d8f03c3ea4e4b2852a33d055 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=ae2ee5470d9d0630d8f03c3ea4e4b2852a33d055 commit ae2ee5470d9d0630d8f03c3ea4e4b2852a33d055 Author: Olivier Certner AuthorDate: 2024-07-03 13:23:26 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:59 +0000 MAC/do: Remove the 'prison0' special cases in the common paths The rules on 'prison0' are initialized in init(), now using set_empty_rules(). Until the jail is destroyed, they can never be uninitialized by a call to osd_jail_del(), since the only chain to call it is mac_do_prison_set() -> remove_rules() -> osd_jail_del(), and mac_do_prison_set() (method PR_METHOD_SET) can never be called on 'prison0'. This guarantees that find_rules() always find a valid 'rules' pointer to return. There's no need to do anything special in destroy() for 'prison0', as osd_jail_deregister() now takes care of it. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47603 (cherry picked from commit beb5603c51e0323e267ceff8f83b3c95151f0822) --- sys/security/mac_do/mac_do.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 787790cb2b34..8ce84d7ba099 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -58,8 +58,6 @@ struct rules { TAILQ_HEAD(rulehead, rule) head; }; -static struct rules *rules0; - static void toast_rules(struct rules *const rules) { @@ -204,19 +202,20 @@ out: static struct rules * find_rules(struct prison *const pr, struct prison **const aprp) { - struct prison *cpr; + struct prison *cpr, *ppr; struct rules *rules; - for (cpr = pr;; cpr = cpr->pr_parent) { + cpr = pr; + for (;;) { prison_lock(cpr); - if (cpr == &prison0) { - rules = rules0; - break; - } rules = osd_jail_get(cpr, mac_do_osd_jail_slot); if (rules != NULL) break; prison_unlock(cpr); + + ppr = cpr->pr_parent; + MPASS(ppr != NULL); /* prison0 always has rules. */ + cpr = ppr; } *aprp = cpr; @@ -265,13 +264,8 @@ set_rules(struct prison *const pr, struct rules *const rules) rsv = osd_reserve(mac_do_osd_jail_slot); prison_lock(pr); - if (pr == &prison0) { - old_rules = rules0; - rules0 = rules; - } else { - old_rules = osd_jail_get(pr, mac_do_osd_jail_slot); - osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, rules); - } + old_rules = osd_jail_get(pr, mac_do_osd_jail_slot); + osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, rules); prison_unlock(pr); if (old_rules != NULL) toast_rules(old_rules); @@ -339,7 +333,6 @@ static void destroy(struct mac_policy_conf *mpc) { osd_jail_deregister(mac_do_osd_jail_slot); - toast_rules(rules0); } static int @@ -452,7 +445,7 @@ init(struct mac_policy_conf *mpc) struct prison *pr; mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, osd_methods); - rules0 = alloc_rules(); + set_empty_rules(&prison0); sx_slock(&allprison_lock); TAILQ_FOREACH(pr, &allprison, pr_list) set_empty_rules(pr); From nobody Thu Apr 3 19:32:07 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh773NZz5sLxt; Thu, 03 Apr 2025 19:32: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 4ZTBh72vl6z3SB9; Thu, 03 Apr 2025 19:32:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vEgEdTGbr54huzJnqGKMFj7ufB0VYGpSmo5Jsx2W1LM=; b=onkSx2lnp+XZQNfbN6bOreEuDchI8CcImeSmrLQKq7BcxZXM4VvcINJagOLNZkU9FS1sF6 HBuynwepBWAgbLMCgAvueI/sh5m/Cqp97K7YMcAJMb7L0KeOYfzJR/RcHVt0L1+NiSuZXY VFo36Tq97Cmxb5C5Ttrsd1lV5J5g27BTpbKqFFwv5f19dcXsPfLQQE5hf1e2oUxwJklhvf ojbQMvBuIbeXDI0HH3zYIdM+hys+7zvLpkaGUogTadAxi/QhYLbsMWL4POLozw3FEgcAVA p4SR1at2sXfOiFO0OSy/zxruSQTt7mki4FyF3QJqVcXAZshNQfkjJdy6hk9jlA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708727; a=rsa-sha256; cv=none; b=q4kjb+k2G8yE1ILvDISrbGtlm6zZewUMzW5KD0746LhzsKpMIcSO5lO9MaQgLy0Mmnczgz O9Wt5ppHBOkxB+8wlCdRCxU1aJUhvYtM+WMwFwT8KdfPuwW25CWQ37pPEIfHKFa0NG2sOp QcHIgHKMNDF01ujz+6hQBaMyv4RahkuAFEBbcE6dXRI+5c06If+hPTfLe1e1XBqn3z3dP3 WvwOf16qwKQko0LT/RB675Swh0V4tVn6MjWvJNtvTdM6aYH2AEfg2UinsOUS+dmqRsrV0p bwZ2w8zfoBQvMN3vuZ3JBX7c7Va4jLW8JaguLqXpgOZh2ofK8vQmMJ9ULX/qZg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vEgEdTGbr54huzJnqGKMFj7ufB0VYGpSmo5Jsx2W1LM=; b=THEJrQAUdr4wyQxwNm4vM/qxVoo+hvwenmzeRTwQVP6sSeBpWCJY0hLxM/fmCdmnCTwtkN W7+T70wkEeIYI9PfZz3g6u50ewvdORJYV9LcRQ2D7PlrQaJUiKeaVpdz7Z3lhqkfgN3kbb WdQX7mWVXbhFLBs6pFewUP3ZLYE63yk748ihJrM0RKc7xwit6I6+pmTQ7ErH/8mLSktlQR R6P7dYjiXvfQs4lYqo3HFj5P7m2vNuhxjJwUDJhVL0vXNjDqk4M5EtLJ6PBw04kS3PXqSB KcIOUmsHVdIiL/KKaR5D5aJFBYrJ8/P7Q/0dgYupQA3+COLuYdNces64iATMIg== 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 4ZTBh72RKczZm; Thu, 03 Apr 2025 19:32: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 533JW7XE039520; Thu, 3 Apr 2025 19:32:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW7ka039507; Thu, 3 Apr 2025 19:32:07 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:07 GMT Message-Id: <202504031932.533JW7ka039507@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8d8c3948544c - stable/14 - MAC/do: Move destroy() to a better place List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8d8c3948544c6e8a4c93cdcec3de428132d9ac28 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8d8c3948544c6e8a4c93cdcec3de428132d9ac28 commit 8d8c3948544c6e8a4c93cdcec3de428132d9ac28 Author: Olivier Certner AuthorDate: 2024-07-03 13:52:33 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:59 +0000 MAC/do: Move destroy() to a better place No functional change intended. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47604 (cherry picked from commit 73cecc0ef78e49295cd9cd8df1bf271f5b8c437d) --- sys/security/mac_do/mac_do.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 8ce84d7ba099..cb166cfd6128 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -329,12 +329,6 @@ SYSCTL_PROC(_security_mac_do, OID_AUTO, rules, 0, 0, sysctl_rules, "A", "Rules"); -static void -destroy(struct mac_policy_conf *mpc) -{ - osd_jail_deregister(mac_do_osd_jail_slot); -} - static int mac_do_prison_set(void *obj, void *data) { @@ -452,6 +446,12 @@ init(struct mac_policy_conf *mpc) sx_sunlock(&allprison_lock); } +static void +destroy(struct mac_policy_conf *mpc) +{ + osd_jail_deregister(mac_do_osd_jail_slot); +} + static bool rule_applies(struct ucred *cred, struct rule *r) { From nobody Thu Apr 3 19:32:08 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBh91bhSz5sLvH; Thu, 03 Apr 2025 19:32: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 4ZTBh84LXRz3SBN; Thu, 03 Apr 2025 19:32:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2S7ePLUjj+8EgRjsn1ee7c/K556UPTgR6/Ij1Bg7xMU=; b=EyfjCLm1WaK3GzGCT6uYv8P4flKAdrXLw2x46K8+oidXfLADhvpZ7tpnLIQC12x6rK8yf1 N8eqxVq9xtxPZcM6daqBsEqX1uJuHMhdLX/n80Fmn/hgo917SnCwcusDhv34v7LFOX+Lio UOt0h3a7ej/Hs5sAiICD8oI8/iqOc3eXRINYaqx75DfqTPapbsODIXn+SsWEwiivRYUU9r y91ZFO9aNC+RHhRr+Ssl+mlBiXR8vG3bcKZtvf43L0CAoDi+Q5GetXAkzB9kx+eY4CPdvE NR7mwvoTQ/yESkBMQowzP/fIYdQa5g1iP9TzIRhKRoQlnB//St1KgQXxWgM/ig== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708728; a=rsa-sha256; cv=none; b=KPUS13/L8a3yOlu5dilheDQ9NCASmSqwQJR23ELf6f1fSTPFoDUGDsfJYY8wil+XG3cJ9l vmyu+Gd4I1o6krT8lyCCDABrcOY2yfzL4uWdL+5aZEDAZ/LDt78CUwbVBLc7TP1YUiEmFH z3nck51cfg6V7FIWIKtezmR6lzY1apO+5LHrH6QeMsM4pmoLfeLB+oQ6VV9cDCQFJUER1+ PmVHFfgNAK+5hv3w4BoFyK2kmmphyyixL7ALcpg8x5vcM0rmDha8ZXIH3I7wBBcwrMpKyg wzPAYEBmu7gl1/s3DRkY9FSaGYYMYkv8TOVzukI4WSbVuMdXrW43gCW5Bjr7YQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2S7ePLUjj+8EgRjsn1ee7c/K556UPTgR6/Ij1Bg7xMU=; b=n2oFSsr6nRjMbV/RlP9sM2WRPS/DRSMS2rL02uQbSOfR25QSqaQ/bsP/WCO5BCAcmLZyKq IRqaki1f38qEq6Qve+lLZLvCnRc8bVp/tN+UPcFEMdkNB2piEx5GYWMuRkC4sHcVivUc6G GFdClnbDnBk57yMBociIdTT2S4ELZQkHVm4RicLiaQxbXiwM05N5iLr0faw/bNe9OioBEh mEgtDlW2zofyKN9496UEZqpY8XpiwqaMvEDX/oX/UEkBaarVvFR59iqRhJNXsbZseRY7Yz i4JfSDWQv9vUONdyoWJcZcwi9sQyqibOTXpT+fJ8A7vPX5xDeBJSxZcOsVGwJA== 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 4ZTBh83qsDz1Cpq; Thu, 03 Apr 2025 19:32: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 533JW8rU039922; Thu, 3 Apr 2025 19:32:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW8SL039919; Thu, 3 Apr 2025 19:32:08 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:08 GMT Message-Id: <202504031932.533JW8SL039919@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 6b76b0f95c62 - stable/14 - MAC/do: parse_rule_element(): Fix a panic, harden, simplify List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6b76b0f95c6255237a462eb20bf7966e3e7e35a9 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=6b76b0f95c6255237a462eb20bf7966e3e7e35a9 commit 6b76b0f95c6255237a462eb20bf7966e3e7e35a9 Author: Olivier Certner AuthorDate: 2024-07-03 14:13:33 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:30:59 +0000 MAC/do: parse_rule_element(): Fix a panic, harden, simplify The panic is caused by dereferencing 'element' at a point where it can be NULL (if string ends at the ':'). Harden and simplify by enforcing the control flow rule in this function that jumping to the end is reserved for error cases. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47605 (cherry picked from commit add521c1a5d21ec84454009d42d1dcd688d77008) --- sys/security/mac_do/mac_do.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index cb166cfd6128..3327711fa9b9 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -94,7 +94,7 @@ parse_rule_element(char *element, struct rule **rule) type = strsep(&element, "="); if (type == NULL) { error = EINVAL; - goto out; + goto error; } if (strcmp(type, "uid") == 0) { new->from_type = RULE_UID; @@ -102,24 +102,30 @@ parse_rule_element(char *element, struct rule **rule) new->from_type = RULE_GID; } else { error = EINVAL; - goto out; + goto error; } id = strsep(&element, ":"); if (id == NULL) { error = EINVAL; - goto out; + goto error; } - if (new->from_type == RULE_UID) + switch (new->from_type) { + case RULE_UID: new->f_uid = strtol(id, &p, 10); - if (new->from_type == RULE_GID) + break; + case RULE_GID: new->f_gid = strtol(id, &p, 10); + break; + default: + __assert_unreachable(); + } if (*p != '\0') { error = EINVAL; - goto out; + goto error; } - if (*element == '\0') { + if (element == NULL || *element == '\0') { error = EINVAL; - goto out; + goto error; } if (strcmp(element, "any") == 0 || strcmp(element, "*") == 0) { new->to_type = RULE_ANY; @@ -128,15 +134,17 @@ parse_rule_element(char *element, struct rule **rule) new->t_uid = strtol(element, &p, 10); if (*p != '\0') { error = EINVAL; - goto out; + goto error; } } -out: - if (error != 0) { - free(new, M_DO); - *rule = NULL; - } else - *rule = new; + + MPASS(error == 0); + *rule = new; + return (0); +error: + MPASS(error != 0); + free(new, M_DO); + *rule = NULL; return (error); } From nobody Thu Apr 3 19:32:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhB1g6vz5sLmr; Thu, 03 Apr 2025 19:32: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 4ZTBh941Cdz3SBY; Thu, 03 Apr 2025 19:32:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708729; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KI1hqC11xUpZMXXXJVuAordSDBhJ6b7aMBly7YS0pMI=; b=P8xQlbmoHmIVODaTxx7imVjtYTEBTf4Y6Fh9Q4VbL9OaO7CTU3q9xBzF6ZkkrSveAIaOOy Ys61g0FgrwPq0NUaZqZ0ZmJPbjCoA9b7KqnbEPEgj5XUzv6h0gtnezRcfoQYM+YyYSmtKN DH8cxTn2quGcGvC7HM/BvbJnj9SVegjUbZ2/lj39LtrVPTpCf5/ygBSeyT2los/KzoLCSy XKasGZVKJUFECO3O+qp2uu0B6v7PIcELAPsrFNcxT+M4lRU3qSCp1LWplgH/bJcN05Xdty swE/+L8fRai3GlbULA2+9P+WmvBjLnxJ0zaJMe1wMePWXCOgGizDkS/vze58vQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708729; a=rsa-sha256; cv=none; b=U3vQOeMMJJ2jZSitPS9vhPR+YyJd84TPUW3eH14HZ40VMJ3tiOY83a2axDpxfGn8YAWAlb uNZFrDuX8Urx9NsRC3EyW19LvEvbfOvGDZ4lKawWl0dqsFQIX6VxYpA/6kUKpajlgYGpvc lNnHOgmZ7ZYfOMUJH3LpJTCVAgKExctvdCc2UweEM77TPfEzLLxGsBJAJ8D/pyVrnKmMO5 py3AFWL20RtFMIq63iKMzr3fEmYH/WGLjrwbh4E7ZV1QrRt1IebumN90FHGttNSky8o/wT Y15LVpBK6ozfbdCDaXwmAQfZVUy4XGpTyCgbrTjiBjWuFPwmw5HUiPUgSbrypA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708729; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KI1hqC11xUpZMXXXJVuAordSDBhJ6b7aMBly7YS0pMI=; b=QQUHKRIcFrXCoZyCORUALi2Dkopz4sNRT/Mc0A8VzKcR3fMdLb98nwI13N0Gb1TECdAfwI smu3zudiH8BqcG4aiJKLini3bm779mWPd499r2QcE2oJFT43VzUMgu0HG63WEpp2THrWp6 yaI5Fp3SdaJQTMd0NWSq4XSYf3v8p/Tovngojs0GDmiZ2lbKJiqxdIGYCWv7n3lBtOLlqJ Y8RzrXLfPtzaX/ifKEXvNaPAjN56vgNfBmVaZyOHj3oUuLXJ3RSAQL44sBshbIzZVeiYgF H7aLLxTqaNmDtwz9engI7OtHXnuFCciBpAlDcBxpDDiHLpeC5b7+6sCbE619iQ== 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 4ZTBh93d1GzLw; Thu, 03 Apr 2025 19:32: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 533JW9BZ039955; Thu, 3 Apr 2025 19:32:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JW9kA039952; Thu, 3 Apr 2025 19:32:09 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:09 GMT Message-Id: <202504031932.533JW9kA039952@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 9b7e21d9187c - stable/14 - MAC/do: Re-order jail methods more logically, rename List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9b7e21d9187cfff32d190fabadee20561afeaba2 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=9b7e21d9187cfff32d190fabadee20561afeaba2 commit 9b7e21d9187cfff32d190fabadee20561afeaba2 Author: Olivier Certner AuthorDate: 2024-07-03 15:00:43 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:00 +0000 MAC/do: Re-order jail methods more logically, rename No functional change intended. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47606 (cherry picked from commit 2b2c19b7f697cc88d4da3e8e13051139cd0a4f96) --- sys/security/mac_do/mac_do.c | 87 +++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 3327711fa9b9..78c05e9be260 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -337,40 +337,23 @@ SYSCTL_PROC(_security_mac_do, OID_AUTO, rules, 0, 0, sysctl_rules, "A", "Rules"); -static int -mac_do_prison_set(void *obj, void *data) -{ - struct prison *pr = obj; - struct vfsoptlist *opts = data; - char *rules_string; - int error, jsys, len; - - error = vfs_copyopt(opts, "mdo", &jsys, sizeof(jsys)); - if (error == ENOENT) - jsys = -1; - error = vfs_getopt(opts, "mdo.rules", (void **)&rules_string, &len); - if (error == ENOENT) - rules_string = ""; - else - jsys = JAIL_SYS_NEW; - switch (jsys) { - case JAIL_SYS_INHERIT: - remove_rules(pr); - error = 0; - break; - case JAIL_SYS_NEW: - error = parse_and_set_rules(pr, rules_string); - break; - } - return (error); -} SYSCTL_JAIL_PARAM_SYS_NODE(mdo, CTLFLAG_RW, "Jail MAC/do parameters"); SYSCTL_JAIL_PARAM_STRING(_mdo, rules, CTLFLAG_RW, MAC_RULE_STRING_LEN, "Jail MAC/do rules"); + static int -mac_do_prison_get(void *obj, void *data) +mac_do_jail_create(void *obj, void *data __unused) +{ + struct prison *const pr = obj; + + set_empty_rules(pr); + return (0); +} + +static int +mac_do_jail_get(void *obj, void *data) { struct prison *ppr, *pr = obj; struct vfsoptlist *opts = data; @@ -391,16 +374,7 @@ done: } static int -mac_do_prison_create(void *obj, void *data __unused) -{ - struct prison *const pr = obj; - - set_empty_rules(pr); - return (0); -} - -static int -mac_do_prison_check(void *obj, void *data) +mac_do_jail_check(void *obj, void *data) { struct vfsoptlist *opts = data; char *rules_string; @@ -427,6 +401,34 @@ mac_do_prison_check(void *obj, void *data) return (error); } +static int +mac_do_jail_set(void *obj, void *data) +{ + struct prison *pr = obj; + struct vfsoptlist *opts = data; + char *rules_string; + int error, jsys, len; + + error = vfs_copyopt(opts, "mdo", &jsys, sizeof(jsys)); + if (error == ENOENT) + jsys = -1; + error = vfs_getopt(opts, "mdo.rules", (void **)&rules_string, &len); + if (error == ENOENT) + rules_string = ""; + else + jsys = JAIL_SYS_NEW; + switch (jsys) { + case JAIL_SYS_INHERIT: + remove_rules(pr); + error = 0; + break; + case JAIL_SYS_NEW: + error = parse_and_set_rules(pr, rules_string); + break; + } + return (error); +} + /* * OSD jail methods. * @@ -435,12 +437,13 @@ mac_do_prison_check(void *obj, void *data) * destructor. */ static const osd_method_t osd_methods[PR_MAXMETHOD] = { - [PR_METHOD_CREATE] = mac_do_prison_create, - [PR_METHOD_GET] = mac_do_prison_get, - [PR_METHOD_SET] = mac_do_prison_set, - [PR_METHOD_CHECK] = mac_do_prison_check, + [PR_METHOD_CREATE] = mac_do_jail_create, + [PR_METHOD_GET] = mac_do_jail_get, + [PR_METHOD_CHECK] = mac_do_jail_check, + [PR_METHOD_SET] = mac_do_jail_set, }; + static void init(struct mac_policy_conf *mpc) { From nobody Thu Apr 3 19:32:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhC2JVhz5sM19; Thu, 03 Apr 2025 19: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 4ZTBhB4y5fz3SGR; Thu, 03 Apr 2025 19:32:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708730; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ge2eM/1xAFnGDifZ0bDSLdVWRr9s61cQ3FuA91ETudM=; b=CV0aSrPfk6jnAPxsgdRZJDZPtFa9XAim4EG3DJjq0mKIHFYK4pfwSCMr6L/0pyEVWgEsmq oGwNobXhyymiSDqTdsmqRKQVTPWb5GY3A/lnFP9j9TUCrwy+k4IBTYV0BFWnx3fEU60itT arMigqe0ajzPXkuhglERb6ccHK1ZrT6abPeVacUFm/V4q0azah6bdVkV02fQ0cR85DezBg PRxCXHHJLAqGjjWqBY0TMutOTi4kGgaGmKGGHkJZvlFtiW5yRRHbDwDfN9g178c7eQq7WJ CBAPI5N3gz+UExTU307buYvA1ZXKSM691L+tI4y0b/yM8RodUPEzAov2U8jg8Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708730; a=rsa-sha256; cv=none; b=VaBVG7oy/03h7nWlfORt3scuRXOxUI9SO58cIVE7Y/CdBL1ceCKWRVfY9VmZHq98olsVtZ gj1vnutM0Cz4cWIlHXjna0gQ2EwGX9E6kKAAEUi1SjmZdzpfF4XSo5IdPWD0iNLA4MWca/ kapT1HqGyXHy4E5JnDTNEOHN3XtnlqaPdubYXpUEHLcApWsVLP9Xc6wjhETW5t6CLiDfVX /JyV1wX7Y5637vrR93HsiCNxejewAeW4pdYbnZN6ysY0mg/dKg6Ax/fYkAujBPsX4EdFQA MZLVocW8sud44G9ciasc5xGivJS7ZYKJDTkPvKGbdDvPJlsB8bh2pAhY+GHSZw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708730; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ge2eM/1xAFnGDifZ0bDSLdVWRr9s61cQ3FuA91ETudM=; b=ZuQ6AirRwmUZVPsK6C+FuGPesYCn+EryzTby53fuMeUyEFaX4MZxDfMFfeYAOBNuVjekvx hAZyzJJMe8jETjG8VSx0c16LSSXDzB5LzsgULtZuOCq41cGYXymA+aAbcCBfrv2QArFnfw bFH5t0yfRd5ziGtSiCLX2c37EcyBF9Fr3buziGQ1uDjmQyJ3drQN35/Xu6vH17ibgv/RZV 71+hUyond37fMpWMc8FXv6VmdHxD+5Eyse7ZxsvtViuxu3484dXpC3YWXmqg0TYNAok0hT mYBDf8QLNQXXMVnTrdqzBI887FJMzocby5g3cTJzNH87iWLY8u80b8kKz6A3bg== 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 4ZTBhB4W8BzkJ; Thu, 03 Apr 2025 19:32: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 533JWA8N039988; Thu, 3 Apr 2025 19: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 533JWAiC039985; Thu, 3 Apr 2025 19:32:10 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:10 GMT Message-Id: <202504031932.533JWAiC039985@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: e014e1fd4b54 - stable/14 - MAC/do: Prefix internal functions used as hooks/callbacks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e014e1fd4b54e9936d8a73121ed6dcd9a81ed504 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=e014e1fd4b54e9936d8a73121ed6dcd9a81ed504 commit e014e1fd4b54e9936d8a73121ed6dcd9a81ed504 Author: Olivier Certner AuthorDate: 2024-07-30 13:14:02 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:00 +0000 MAC/do: Prefix internal functions used as hooks/callbacks So that we immediately know whether a kernel stack involves MAC/do. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47607 (cherry picked from commit 11ba1f2fe2d4e151ffc0a66d03a0691a7b8d2866) --- sys/security/mac_do/mac_do.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 78c05e9be260..a57c29c407b8 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -309,7 +309,7 @@ parse_and_set_rules(struct prison *const pr, const char *rules_string) } static int -sysctl_rules(SYSCTL_HANDLER_ARGS) +mac_do_sysctl_rules(SYSCTL_HANDLER_ARGS) { char *const buf = malloc(MAC_RULE_STRING_LEN, M_DO, M_WAITOK); struct prison *const td_pr = req->td->td_ucred->cr_prison; @@ -334,7 +334,7 @@ out: SYSCTL_PROC(_security_mac_do, OID_AUTO, rules, CTLTYPE_STRING|CTLFLAG_RW|CTLFLAG_PRISON|CTLFLAG_MPSAFE, - 0, 0, sysctl_rules, "A", + 0, 0, mac_do_sysctl_rules, "A", "Rules"); @@ -445,7 +445,7 @@ static const osd_method_t osd_methods[PR_MAXMETHOD] = { static void -init(struct mac_policy_conf *mpc) +mac_do_init(struct mac_policy_conf *mpc) { struct prison *pr; @@ -458,7 +458,7 @@ init(struct mac_policy_conf *mpc) } static void -destroy(struct mac_policy_conf *mpc) +mac_do_destroy(struct mac_policy_conf *mpc) { osd_jail_deregister(mac_do_osd_jail_slot); } @@ -474,7 +474,7 @@ rule_applies(struct ucred *cred, struct rule *r) } static int -priv_grant(struct ucred *cred, int priv) +mac_do_priv_grant(struct ucred *cred, int priv) { struct rule *r; struct prison *pr; @@ -501,7 +501,7 @@ priv_grant(struct ucred *cred, int priv) } static int -check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) +mac_do_check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) { struct rule *r; char *fullpath = NULL; @@ -535,7 +535,7 @@ check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) } static int -check_setuid(struct ucred *cred, uid_t uid) +mac_do_check_setuid(struct ucred *cred, uid_t uid) { struct rule *r; int error; @@ -590,11 +590,11 @@ check_setuid(struct ucred *cred, uid_t uid) } static struct mac_policy_ops do_ops = { - .mpo_destroy = destroy, - .mpo_init = init, - .mpo_cred_check_setuid = check_setuid, - .mpo_cred_check_setgroups = check_setgroups, - .mpo_priv_grant = priv_grant, + .mpo_destroy = mac_do_destroy, + .mpo_init = mac_do_init, + .mpo_cred_check_setuid = mac_do_check_setuid, + .mpo_cred_check_setgroups = mac_do_check_setgroups, + .mpo_priv_grant = mac_do_priv_grant, }; MAC_POLICY_SET(&do_ops, mac_do, "MAC/do", From nobody Thu Apr 3 19:32:11 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhD01VMz5sLmv; Thu, 03 Apr 2025 19:32: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 4ZTBhC6240z3SKZ; Thu, 03 Apr 2025 19: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=1743708731; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HvsYpVAfW+GpM/xhazlkhItOFkcUZHct+DYC+2RibMk=; b=mchdALnMB62g2FCzgWktg9WlG4pu1E5mJmAKte46Hny7UE2vJNivWzLLSJlBoAnlh70hWP mN2GezrDbnrZlgq6EtOubVmHz+J3cvErLm5RIHr58Dq9Vuw1CUaDb1kflfCmRgGy43yPHw /Ppf160E0nUt1iFFQS1paLKVbd2QANC2B/NUsIKx+yEEeijOTzQHrZYN3tcMzs/4auAYRK YZCixQcGPpaIhALx0nqHr9el9WVwHjpmeYRBCdeQX1dhlLc/C2j1MhNIa9ZuU09nstt7QP JrmAVD70U3hsYPf9QnwAmcNWRYeY5AEwISM3JpP0js1XMlQUMimeNKEEJZsSWQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708731; a=rsa-sha256; cv=none; b=HF48X2FWAcBHcDKmov2Qfu06aHjAn3yvolXKimY7ef4Jyv4+sJKDrqZWLjtdMkcQMQjFXl 1fGoucj9slE1/Z2BlBNwRAX2HX5ALx1ZY+2XkPoPk4v93ZvwxfiN5cBAjmsAIzW4N+beIV dsReqhvcw2hwtHzLv7N8qFhm/ME9yXar/yP/IKsIOGXGzXPKaU5JHjYQUUtJ9Uds7qgaYQ Jo9LfOw0Cx8pGMTEKq+KF8kTagGVJFCTFrc3gEvgbhcMWEnl4ZOmJ7MXsr8+l/YpanCu9x Chhj4vo8KGltfE0vsS3Y9yoH+zk6QD9JfxIm6A6OPHcAEwSsegFe9r9xJxKP9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708731; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HvsYpVAfW+GpM/xhazlkhItOFkcUZHct+DYC+2RibMk=; b=T/SW+BLVxIX6aRcVGTWn0P57ultyJaHjBDTbB+/eLvh+Nm9lHcMCyk4UFblZ8KoyKfj87E LoAp2PXRBmKpolQ+MRhFd+wKz0VQDrnYfmOFOTVYUQXjbXwSi1iWF2NoyBto8bBUcSAQKx 7lEUtB0k3n8kgKJE/CdYjCrWp5Zxy2GAo4u/vZUIk3CUfc2rZt9cOjU61HGNBN/HnxNuhZ Maa7DKuia39uvNSqKNbkQvFTir8RFiTXlqVVwFWDE7cKYOSYOu0l/yHsat5qn3TgWGtsx0 OyDusF3h/bDmZYp0+f24JvxOHNbQ0EvubUohB5EFCwPY1FDaNAyR9d4Y90xCaQ== 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 4ZTBhC5QsHzmt; Thu, 03 Apr 2025 19: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 533JWBbs040020; Thu, 3 Apr 2025 19:32:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWBpK040017; Thu, 3 Apr 2025 19:32:11 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:11 GMT Message-Id: <202504031932.533JWBpK040017@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 3c77f39d2ae6 - stable/14 - MAC/do: Sysctl knobs/jail parameters under MAC's common nodes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3c77f39d2ae647114b6ad4c5b108387f3c6818c1 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=3c77f39d2ae647114b6ad4c5b108387f3c6818c1 commit 3c77f39d2ae647114b6ad4c5b108387f3c6818c1 Author: Olivier Certner AuthorDate: 2024-07-04 09:51:00 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:00 +0000 MAC/do: Sysctl knobs/jail parameters under MAC's common nodes Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47608 (cherry picked from commit f3a06ced25681b6da40c652203f882ba18be227d) --- sys/security/mac_do/mac_do.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index a57c29c407b8..6f68a6f62a79 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -23,8 +23,6 @@ #include -SYSCTL_DECL(_security_mac); - static SYSCTL_NODE(_security_mac, OID_AUTO, do, CTLFLAG_RW|CTLFLAG_MPSAFE, 0, "mac_do policy controls"); @@ -338,8 +336,8 @@ SYSCTL_PROC(_security_mac_do, OID_AUTO, rules, "Rules"); -SYSCTL_JAIL_PARAM_SYS_NODE(mdo, CTLFLAG_RW, "Jail MAC/do parameters"); -SYSCTL_JAIL_PARAM_STRING(_mdo, rules, CTLFLAG_RW, MAC_RULE_STRING_LEN, +SYSCTL_JAIL_PARAM_SYS_SUBNODE(mac, do, CTLFLAG_RW, "Jail MAC/do parameters"); +SYSCTL_JAIL_PARAM_STRING(_mac_do, rules, CTLFLAG_RW, MAC_RULE_STRING_LEN, "Jail MAC/do rules"); @@ -361,10 +359,10 @@ mac_do_jail_get(void *obj, void *data) int jsys, error; rules = find_rules(pr, &ppr); - error = vfs_setopt(opts, "mdo", &jsys, sizeof(jsys)); + error = vfs_setopt(opts, "mac.do", &jsys, sizeof(jsys)); if (error != 0 && error != ENOENT) goto done; - error = vfs_setopts(opts, "mdo.rules", rules->string); + error = vfs_setopts(opts, "mac.do.rules", rules->string); if (error != 0 && error != ENOENT) goto done; prison_unlock(ppr); @@ -380,14 +378,14 @@ mac_do_jail_check(void *obj, void *data) char *rules_string; int error, jsys, len; - error = vfs_copyopt(opts, "mdo", &jsys, sizeof(jsys)); + error = vfs_copyopt(opts, "mac.do", &jsys, sizeof(jsys)); if (error != ENOENT) { if (error != 0) return (error); if (jsys != JAIL_SYS_NEW && jsys != JAIL_SYS_INHERIT) return (EINVAL); } - error = vfs_getopt(opts, "mdo.rules", (void **)&rules_string, &len); + error = vfs_getopt(opts, "mac.do.rules", (void **)&rules_string, &len); if (error != ENOENT) { if (error != 0) return (error); @@ -409,10 +407,10 @@ mac_do_jail_set(void *obj, void *data) char *rules_string; int error, jsys, len; - error = vfs_copyopt(opts, "mdo", &jsys, sizeof(jsys)); + error = vfs_copyopt(opts, "mac.do", &jsys, sizeof(jsys)); if (error == ENOENT) jsys = -1; - error = vfs_getopt(opts, "mdo.rules", (void **)&rules_string, &len); + error = vfs_getopt(opts, "mac.do.rules", (void **)&rules_string, &len); if (error == ENOENT) rules_string = ""; else From nobody Thu Apr 3 19:32:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhF6ZVBz5sM32; Thu, 03 Apr 2025 19:32: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 4ZTBhF0773z3SRn; Thu, 03 Apr 2025 19:32:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708733; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Ei5lxwUJn7V90/CIL5wltbKekV9rDztVA1PcTK2iUo=; b=HV9H5PjM3Cjx2iT/pvNHa7zg2hvngyRKgnDOTuFel0YrzpbblxDAAtWE+b/kGvMSC+aBjS RPKmMyeRsYatd/pvflKm8dPpXRWL3twQZd22GYS2J4VbULzIwiiCRnW5Uf5+MimIr4TPJ5 nGDkniRsuTMJSI7DANlTglFlNDCDNHMiFlMasIcE0oNyOjWksED9dxDiy/oLmQvCLnx5Uv yTCkJ3C/ADy/7v/TAl/AuAlyd1FH3Nh2A1r0bUgWBy7WLniUYGNzb6CGqKYXixGCTzLR2+ J6Wvx+XXaj+o6AxB+NN+uEMq3frvsNt3CMG53PXLUnIHJmoHrYR9Iw9+U3+PaQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708733; a=rsa-sha256; cv=none; b=uZ+uhnagkLVvuJPtncJ/iAbuZLG5ChgOg3lXN/nkFTRIKvrmjO8Dxb8KPd3LTFuvsAw0bV LmUKP1ysiHnArp0qVugZoGISO4T/G2WO9hf847G39AX9X/g2ujg0rm4V8wwiZMAHrFdCEt ZFJnsfWSWBXkoch22tL+TG4Xc5frNWWcydG7ullNajSmydrbRAxQ+ynVvIvmTo3Hv6hyI1 mxKSH63gDzFxdxKNgUV5vqYNrPauEdXyefhyPdrmEw4twcuZtLvTaaG5EO+uKXJOdwDYM5 BbGAwnwQmnJ7PoSuSPsLcV9Z3I5HrqaQhS/taEtev67Uy5VvvrjcsweoVi0mhA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708733; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2Ei5lxwUJn7V90/CIL5wltbKekV9rDztVA1PcTK2iUo=; b=eXhB2sjzYD3F4BpuF+IJx0U5Nz6AQs+OXhFw9RnbHxOcjLmw3i3TNPbni8x6hbCtfSP3mm S9pZn/6aZHKZssGZKPpZoqOhFpNFo252QjTZdLEdGpJdR0hEINJpPErFJNFmx//gAqYS7k BqrWFTcG2/yTOseWS3rGefcPUsc4lmkSZ8kcdCwjHV0NRKJtrA0tB3w4a8t6g7OQFHgHFy 0UzyCWJJhsL+zdB/TCBOv+Bz/SuJX3WEBxcDRkVUxMBmDkmEN6iv64Ge8//0QyOq/GGvtL dqiQwTuqdAAneUh6q/lvy91+cKqkrwZqijwZx7hmZ9SGJOCinMDelNVOEvQuaw== 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 4ZTBhD6RdJzLx; Thu, 03 Apr 2025 19:32: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 533JWCY2040058; Thu, 3 Apr 2025 19:32:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWCxW040055; Thu, 3 Apr 2025 19:32:12 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:12 GMT Message-Id: <202504031932.533JWCxW040055@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: bd9e3fcaa064 - stable/14 - MAC/do: Fix jail_get() (PR_METHOD_GET) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: bd9e3fcaa064779618353cb45fd03d2d5c66a804 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=bd9e3fcaa064779618353cb45fd03d2d5c66a804 commit bd9e3fcaa064779618353cb45fd03d2d5c66a804 Author: Olivier Certner AuthorDate: 2024-07-03 15:22:28 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:00 +0000 MAC/do: Fix jail_get() (PR_METHOD_GET) - Properly fill 'jsys' before copying it out (we would leak bytes from the kernel stack). When the current jail has its own 'struct rules', set it to the special value JAIL_SYS_DISABLE if it in fact holds no rules. - Don't forget to unlock the jail holding rules on error. - Correctly return errors. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47609 (cherry picked from commit 2a20ce91dc29e5a80f4eeb9352cf3169cd1891b9) --- sys/security/mac_do/mac_do.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 6f68a6f62a79..2482221e43a3 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -353,22 +353,28 @@ mac_do_jail_create(void *obj, void *data __unused) static int mac_do_jail_get(void *obj, void *data) { - struct prison *ppr, *pr = obj; - struct vfsoptlist *opts = data; + struct prison *ppr, *const pr = obj; + struct vfsoptlist *const opts = data; struct rules *rules; int jsys, error; rules = find_rules(pr, &ppr); + + jsys = pr == ppr ? + (TAILQ_EMPTY(&rules->head) ? JAIL_SYS_DISABLE : JAIL_SYS_NEW) : + JAIL_SYS_INHERIT; error = vfs_setopt(opts, "mac.do", &jsys, sizeof(jsys)); if (error != 0 && error != ENOENT) goto done; + error = vfs_setopts(opts, "mac.do.rules", rules->string); if (error != 0 && error != ENOENT) goto done; - prison_unlock(ppr); + error = 0; done: - return (0); + prison_unlock(ppr); + return (error); } static int From nobody Thu Apr 3 19:32:15 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhH42KYz5sM34; Thu, 03 Apr 2025 19:32: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 4ZTBhH1WY5z3SSm; Thu, 03 Apr 2025 19:32:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8bWInagmaisdctugBFzThOVGojwk1hwhOGYQ35WIfao=; b=uHkSu9FeGnrYdcNdRmDqhAgBwSt7YCa9Cv2NfAOTNF6BMHrKFTYieN2odrya/qZMOgytOi AFppxpP4PxPQ4yvirNBZToV+IfWmfzutIC75xRyzlMloFGIlwryDU1WSXjTBErlD0WyXv3 sHQD8+XkgSKp0f2/H0oTb9bt+TVMDitcZuIUr2U6+usQI3UflF0UHhIqjrWtwX4k0EVBNG xsusR082ji3We9k6ViLlwflO2fdoKHt6L5RA/OOe6ocUIgEzLYbAbsWsefcuBpZVoTNfZa cZrOCDEPYZ9t8GLtID6+Twdy8DfggJjDnjrzqc4hB2JUkPud1HL1nDoopZ8wmg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708735; a=rsa-sha256; cv=none; b=Et8wO2QrfKBnxbMxTPn0BUzKzYXo11j+wKF5NYV6zxNfvScyCA6ZaICqIe6FNnfZYCBWmM iKkkmnp2sGjjcoEXA6s8HIr7ub0G5EvZ6u/mmZ8ibCgwvthiLPJmGCXkIcMNfM2fexGtzW 3GlQWu+eCxW4rki/rFPPCvyUTd8tBGz93iwH/R6l+h+Bfo0Df5XEsA0W0/0x1oaKGIec5/ btosMQR8vlwbAvVBntnmq2m4NkA7YXcOhe+oW0hmD4v7BFMh+G4gWcO0cmCQM9nBt4ZTQt LN0F2GlOPiQ2iMdcrWV4DrZOujpz+zfEkL54pcK1JgGmlpdLSqhfJ+0saCbCgQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8bWInagmaisdctugBFzThOVGojwk1hwhOGYQ35WIfao=; b=WoXezcXGppCJ+cEQjB2VzkghytkrGG0e0QEFXbxRQxwItz20Jr6UMus4KtqzThEpos8VFR t1naVtzn6s65nLNBVxqLOC0zhAVCcUdq4U+0nwTeaFuk6U8RcBBZDd9sLkQaVpYB61pgyJ abLLzlCpK/86/4G71stB8zujY4KX97MtvwoSgBdLZBcH1XDAXb98tJgNuoXsP241feVYVB pSAEgQghQVQ/TMaUgq9a5r5a4DJvSoN+t7ojSLXIrm0TyM4HRfSW6BvZpF/nACYikeVirg jP8QmBJbM1VOZcZmG2C5VIcXFNiOn0y1aTOweH/TWiIJwZh6UA0JbCTcP1HoEg== 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 4ZTBhH15G3z1Cm1; Thu, 03 Apr 2025 19:32: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 533JWF41040123; Thu, 3 Apr 2025 19:32:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWFgD040120; Thu, 3 Apr 2025 19:32:15 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:15 GMT Message-Id: <202504031932.533JWFgD040120@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 9195f21e0f34 - stable/14 - MAC/do: parse_rule_element(): Style, more clarity List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 9195f21e0f34bc4132e4a4fc9229bf828b0e7164 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=9195f21e0f34bc4132e4a4fc9229bf828b0e7164 commit 9195f21e0f34bc4132e4a4fc9229bf828b0e7164 Author: Olivier Certner AuthorDate: 2024-07-04 16:35:47 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:01 +0000 MAC/do: parse_rule_element(): Style, more clarity Add newlines to separate logical blocks. Remove braces around 'if's non-compound substatements. No functional change (intended). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47611 (cherry picked from commit e4ce30f8da612db96410b66cccf9fc12ccce282a) --- sys/security/mac_do/mac_do.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index ed1d0bcfa43c..4ef9b68bf513 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -94,19 +94,22 @@ parse_rule_element(char *element, struct rule **rule) error = EINVAL; goto error; } - if (strcmp(type, "uid") == 0) { + + if (strcmp(type, "uid") == 0) new->from_type = RULE_UID; - } else if (strcmp(type, "gid") == 0) { + else if (strcmp(type, "gid") == 0) new->from_type = RULE_GID; - } else { + else { error = EINVAL; goto error; } + id = strsep(&element, ":"); if (id == NULL) { error = EINVAL; goto error; } + switch (new->from_type) { case RULE_UID: new->f_uid = strtol(id, &p, 10); @@ -121,13 +124,14 @@ parse_rule_element(char *element, struct rule **rule) error = EINVAL; goto error; } + if (element == NULL || *element == '\0') { error = EINVAL; goto error; } - if (strcmp(element, "any") == 0 || strcmp(element, "*") == 0) { + if (strcmp(element, "any") == 0 || strcmp(element, "*") == 0) new->to_type = RULE_ANY; - } else { + else { new->to_type = RULE_UID; new->t_uid = strtol(element, &p, 10); if (*p != '\0') { From nobody Thu Apr 3 19:32:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhG3Xn5z5sM5N; Thu, 03 Apr 2025 19:32: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 4ZTBhG0K0Wz3SN0; Thu, 03 Apr 2025 19:32:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IAdlVnJk+GcAD3XgcOd5DMC98DMn63K9jnkpFeyTiHg=; b=SzlzY6G5fbhXI1+9L4qxUDiLq+xFEGvwR8WmdSy36zpU19zmTDvepQ4NYoTkIRtXswC0YZ F0Oybx2xXrwv292AxKwniSvz36GXiD0Rh88veVK0qQv0Hqq/Rwd8xxXJ6SeI/fF2TvyYtz CpbXdylSWNP18OOb8maJNMnQWbzjrtaR4jfcbGRkYBAgo5/zqVZ+UBYgZEZa3tsrDReIaC iWWXLiM3XnlwWNnJX+36l0pNQMNRIJVpHV/cDavHF5WhL4WDkzkiGGxN273l7zv+gXn7Fw yEEO9j5ZHRO46manhPQgwOYjd2xSnWZLjJRY+X3X1c24mQsTPDoqje5OmH2OSw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708734; a=rsa-sha256; cv=none; b=FLJ0e/qBYpYijh9cK3HB4sfFqrDNaHxHhZfUKuB/KdASDGu/+E3NHp84qigj+W4XrQJ9Uy y2EajcvQLsSUPh2oi7QAVxqfKWgGqOT44WfXKaQD0RdMTVcN/EGR28GKmSR8LkMiHpZO2j 0eUlFpuG93mU3IqM/m9MjzgKQiNCEhENFRE6p/I10ardcxO8K6dh8V6wUycxsZVsEl7ar4 3LD6psaH9N8dN9U4mRSmaJLoY8z2IqlmXZlapVRKP6+J5/GQiftfbwCTCwqvqXwE5O8fr9 BwdU5kwfeIbHPajdSYp6GM3LAdNgnjh7pioqFCXoyDxHvQGlXJU3gwaXuXuYvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=IAdlVnJk+GcAD3XgcOd5DMC98DMn63K9jnkpFeyTiHg=; b=jyABsIaUH0RqE/v48hRA/Z481frDh8kBdi2AY0vC1/425iGlIH0MkVJ9He6ctbBh+bVAi6 6+K5aHVGiFBnU9VAyXdwrdmhy0CBu3Y4L6/KlLbt1rVBOXMXaFafuuY4suSPbhFc7YAF6f UO+gDn0v1/dwGwgJmZMu4W46RgW9kg0dgipshZuzV919+DstJDsuW0R2HptqHDyIbtuFlT XBV/K1RGQwrlCLDlQowPeh28UCNFTa9fufH1OnSU9RONHb8FiE8vDwRnsCsz+n/Cak0b7Z UUzZvL1oYSG3zpDboSSqYmLUmbp592J+5YgMw3lwkorrFjFx0uO0/IHj53aWEQ== 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 4ZTBhF6tT0zkL; Thu, 03 Apr 2025 19:32: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 533JWDmV040090; Thu, 3 Apr 2025 19:32:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWDZJ040087; Thu, 3 Apr 2025 19:32:13 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:13 GMT Message-Id: <202504031932.533JWDZJ040087@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 7d536064a027 - stable/14 - MAC/do: jail_check()/jail_set(): Revamp List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 7d536064a02704898504a9f03f973a1ffa592cb0 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=7d536064a02704898504a9f03f973a1ffa592cb0 commit 7d536064a02704898504a9f03f973a1ffa592cb0 Author: Olivier Certner AuthorDate: 2024-07-03 15:44:24 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:01 +0000 MAC/do: jail_check()/jail_set(): Revamp Handle JAIL_SYS_DISABLE the same as JAIL_SYS_NEW with an empty rules specification, coherently with jail_get(). Also accept JAIL_SYS_DISABLE in "mac.do" without "mac.do.rules" being specified. The default value for "mac.do", if not passed explicitly, is either JAIL_SYS_NEW if "mac.do.rules" is present and non-empty, or JAIL_SYS_DISABLE if present and empty or not present. Perform all cheap sanity checks in jail_check(), and have these materialized as well in jail_set() under INVARIANTS. Cheap checks are type and coherency checks between the values of "mac.do" and "mac.do.rules". They don't include parsing the "mac.do.rules" string but just checking its length (when applicable). In a nutshell, JAIL_SYS_DISABLE and JAIL_SYS_INHERIT are allowed iff "mac.do.rules" isn't specified or is with an empty string, and JAIL_SYS_NEW is allowed iff "mac.do.rules" is specified (the latter may be empty, in which case this is equivalent to JAIL_SYS_DISABLE). Normally, vfs_getopts() is the function to use to read string options. Because we need the length of the "mac.do.rules" string to check it, in order to avoid double search within jail options in jail_check(), we use vfs_getopt() instead, but perform some additional checks afterwards (the same as those performed by vfs_getopts()). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47610 (cherry picked from commit 11eb32958f2c6e70892201982c1c92a0140d6864) --- sys/security/mac_do/mac_do.c | 128 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 111 insertions(+), 17 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 2482221e43a3..ed1d0bcfa43c 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -377,31 +377,94 @@ done: return (error); } +/* + * -1 is used as a sentinel in mac_do_jail_check() and mac_do_jail_set() below. + */ +_Static_assert(-1 != JAIL_SYS_DISABLE && -1 != JAIL_SYS_NEW && + -1 != JAIL_SYS_INHERIT, + "mac_do(4) uses -1 as a sentinel for uninitialized 'jsys'."); + +/* + * We perform only cheap checks here, i.e., we do not really parse the rules + * specification string, if any. + */ static int mac_do_jail_check(void *obj, void *data) { struct vfsoptlist *opts = data; char *rules_string; - int error, jsys, len; + int error, jsys, size; error = vfs_copyopt(opts, "mac.do", &jsys, sizeof(jsys)); - if (error != ENOENT) { + if (error == ENOENT) + jsys = -1; + else { if (error != 0) return (error); - if (jsys != JAIL_SYS_NEW && jsys != JAIL_SYS_INHERIT) + if (jsys != JAIL_SYS_DISABLE && jsys != JAIL_SYS_NEW && + jsys != JAIL_SYS_INHERIT) return (EINVAL); } - error = vfs_getopt(opts, "mac.do.rules", (void **)&rules_string, &len); - if (error != ENOENT) { + + /* + * We use vfs_getopt() here instead of vfs_getopts() to get the length. + * We perform the additional checks done by the latter here, even if + * jail_set() calls vfs_getopts() itself later (they becoming + * inconsistent wouldn't cause any security problem). + */ + error = vfs_getopt(opts, "mac.do.rules", (void**)&rules_string, &size); + if (error == ENOENT) { + /* + * Default (in absence of "mac.do.rules") is to disable (and, in + * particular, not inherit). + */ + if (jsys == -1) + jsys = JAIL_SYS_DISABLE; + + if (jsys == JAIL_SYS_NEW) { + vfs_opterror(opts, "'mac.do.rules' must be specified " + "given 'mac.do''s value"); + return (EINVAL); + } + + /* Absence of "mac.do.rules" at this point is OK. */ + error = 0; + } else { if (error != 0) return (error); - if (len > MAC_RULE_STRING_LEN) { - vfs_opterror(opts, "mdo.rules too long"); + + /* Not a proper string. */ + if (size == 0 || rules_string[size - 1] != '\0') { + vfs_opterror(opts, "'mac.do.rules' not a proper string"); + return (EINVAL); + } + + if (size > MAC_RULE_STRING_LEN) { + vfs_opterror(opts, "'mdo.rules' too long"); return (ENAMETOOLONG); } + + if (jsys == -1) + /* Default (if "mac.do.rules" is present). */ + jsys = rules_string[0] == '\0' ? JAIL_SYS_DISABLE : + JAIL_SYS_NEW; + + /* + * Be liberal and accept JAIL_SYS_DISABLE and JAIL_SYS_INHERIT + * with an explicit empty rules specification. + */ + switch (jsys) { + case JAIL_SYS_DISABLE: + case JAIL_SYS_INHERIT: + if (rules_string[0] != '\0') { + vfs_opterror(opts, "'mac.do.rules' specified " + "but should not given 'mac.do''s value"); + return (EINVAL); + } + break; + } } - if (error == ENOENT) - error = 0; + return (error); } @@ -411,24 +474,55 @@ mac_do_jail_set(void *obj, void *data) struct prison *pr = obj; struct vfsoptlist *opts = data; char *rules_string; - int error, jsys, len; + int error, jsys; + + /* + * The invariants checks used below correspond to what has already been + * checked in jail_check() above. + */ error = vfs_copyopt(opts, "mac.do", &jsys, sizeof(jsys)); - if (error == ENOENT) - jsys = -1; - error = vfs_getopt(opts, "mac.do.rules", (void **)&rules_string, &len); - if (error == ENOENT) - rules_string = ""; - else - jsys = JAIL_SYS_NEW; + MPASS(error == 0 || error == ENOENT); + if (error != 0) + jsys = -1; /* Mark unfilled. */ + + rules_string = vfs_getopts(opts, "mac.do.rules", &error); + MPASS(error == 0 || error == ENOENT); + if (error == 0) { + MPASS(strlen(rules_string) < MAC_RULE_STRING_LEN); + if (jsys == -1) + /* Default (if "mac.do.rules" is present). */ + jsys = rules_string[0] == '\0' ? JAIL_SYS_DISABLE : + JAIL_SYS_NEW; + else + MPASS(jsys == JAIL_SYS_NEW || + ((jsys == JAIL_SYS_DISABLE || + jsys == JAIL_SYS_INHERIT) && + rules_string[0] == '\0')); + } else { + MPASS(jsys != JAIL_SYS_NEW); + if (jsys == -1) + /* + * Default (in absence of "mac.do.rules") is to disable + * (and, in particular, not inherit). + */ + jsys = JAIL_SYS_DISABLE; + /* If disabled, we'll store an empty rule specification. */ + if (jsys == JAIL_SYS_DISABLE) + rules_string = ""; + } + switch (jsys) { case JAIL_SYS_INHERIT: remove_rules(pr); error = 0; break; + case JAIL_SYS_DISABLE: case JAIL_SYS_NEW: error = parse_and_set_rules(pr, rules_string); break; + default: + __assert_unreachable(); } return (error); } From nobody Thu Apr 3 19:32:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhJ5cS0z5sM36; Thu, 03 Apr 2025 19:32: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 4ZTBhJ2MWYz3SSx; Thu, 03 Apr 2025 19:32:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YYWbHv9MvDoQmz/Wd7Qi514kseWXqP4vanvNetyY1s8=; b=NIPFByVDBx9zMEJ7kHAO/+lB02Mg0myVr+1RMp2w9gJcBSFzLnEr46k4mu058EqG6G26EP hQgBhes4pEiACTyavzv22qLsSzSJ2gEiGaOlPMX5qrhUPpFB8ZsbcqCdCM4HZyr1SU8mnB Vc17FpPE04GpYvDIM2vGjTYMTr9hEvP0V3U4b/EsVSHyUGhXSbyU3/Og0OuWpQBU9LIQOV RhQMGxR1jz2X3xE7+KVw4idj5mjGNNFwJF36S+8vziwN7tjo2p0SkjqVNfmlC0sBglydbc fpuaeOWQExPyvd/yvkLjEibVGjsrg6/vuHvqNVhgDZxkA/JIuhglJXGWrR4MZg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708736; a=rsa-sha256; cv=none; b=EDn/KQgygjBU7IZw6v8WDfvg1/l7ysooicFqb6Azm9ifDspGASC7Q4udT/hLSy3/kF/rhE zgR195Fup9GrxaZqwXdI2ZIfYPe6HOor30X5ujGWXJ6fLqZKd0b52/kHDmuPOl/dSYGfl2 TFZn9SwChCtc+syEEwJqA6D36bhO7c6Wul8BbdAdvYT17zxG0diI0x2SiuOVbKxqfv2KYE MMchbAbo2IPuEEzoNYKXB/oK8RUMfuA3xYn3j/n14K8aTSXnn2EE3ayxg3lLB/MfTJcbow CHzQLqpHRFdHiQYDWBW7Dn5GBIAN626HDe8JmCWoMow7ox1Q+u3qNjr/MbvJGQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YYWbHv9MvDoQmz/Wd7Qi514kseWXqP4vanvNetyY1s8=; b=LyLAnE5KYrqbPwNpj9vVUBnH25AqFuW4qZZIj1i/JDGAg4BXuIZceoeUCVNfBeyfLgKUAD HY52nyze/ihxYkYCmX2oTCnOfRD2/2B/rpX3mxn8fFE0YNf9tL/5/EXC2HTZiJtyfn3LBe f0XMZlqrD2/dSmDR1l9FpV73960kkKhFO8uUA17TZb0i5Eezv1wO2vax9HOcMBS53amaRi 5Yl84jq1Us1DDMRnvbaT4YUBpwxUDiUW8zYTnsLwky079tXy3lxDjmzc0rcYA0wTmknYT1 7gUJ/ptVH3gloQ8KuDZvEpoe7joZvIqmXTXEghDnWr2jaGfRY8C1x1KT7fJs1g== 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 4ZTBhJ1yjLzkM; Thu, 03 Apr 2025 19:32: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 533JWG37040155; Thu, 3 Apr 2025 19:32:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWGjh040152; Thu, 3 Apr 2025 19:32:16 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:16 GMT Message-Id: <202504031932.533JWGjh040152@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 75ee4893e87b - stable/14 - MAC/do: parse_rule_element(): Bug in parsing the origin ID List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 75ee4893e87b8a98c3c21572562b4368892a8bf2 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=75ee4893e87b8a98c3c21572562b4368892a8bf2 commit 75ee4893e87b8a98c3c21572562b4368892a8bf2 Author: Olivier Certner AuthorDate: 2024-07-05 11:49:27 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:01 +0000 MAC/do: parse_rule_element(): Bug in parsing the origin ID The ID field was allowed to be empty, which would be then parsed as 0 by strtol(). There remains bugs in this function, where parsing for from- or to- IDs accepts spaces and produces 0, but this will conveniently be fixed in a later commit introducing strtoui_strict(). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47612 (cherry picked from commit fa4352b74580832d7b501d34d09a564438a82c3d) --- sys/security/mac_do/mac_do.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 4ef9b68bf513..edd728ea070a 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -105,7 +105,7 @@ parse_rule_element(char *element, struct rule **rule) } id = strsep(&element, ":"); - if (id == NULL) { + if (id == NULL || *id == '\0') { error = EINVAL; goto error; } From nobody Thu Apr 3 19:32:17 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhL0BvLz5sLsX; Thu, 03 Apr 2025 19:32: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 4ZTBhK3cjMz3SQW; Thu, 03 Apr 2025 19:32:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JcjTMMu9wMZU/AHeNC/m2Q5Pc+D0UmghjUs09EBaSaA=; b=XjINQVC1VddMrRw8HYWxpvMGHtZfFOJIt0eNprXq20hrhtbSUNdqIOmeVepxQ+AVZg3ZnI CeWt5E38Xv7qUMXV92vXmZFkSfiBxAUnI8Wl3B/Mgm0PfJny8qj6eIfDZwMWAxkZEGyxLg WNdT8+Rdi5qcBiTLUwSHPyYxx9TRtaF7EcAoDV5oMuTJQAvbpDQq+wmUb8CCpsN0AOPD0t 0aaTUWog0SJyC3UgC8fhakxOovG5gRCa/IKTDKCCMr8oPFbyBgeurRe7TaxKSSe7c5+BTZ TOdZEx3XzDp1MYwvAoF4bicVCMB9zR58oiB3N53A1du2fiVsbXwMo2G5fWdWrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708737; a=rsa-sha256; cv=none; b=D6BAGitkqyKXgee6PMULuObaMYDys8IH6Dst572CJEoJqKhjwLgIMBh7ZegC/Rh8B+u0MK IlHNPDjhLHiu8+fTjeJUMxjj//B0UaSK5BhDbQIn7Maf07uLiQKNuY8AhcejjypjmQBsoe /K7YHOT0uzimvm4zX3bCW/gznIXqwNQq9Zozl8+noRDyR0bzkQmZxA+IuxEVFwEvsRF0Fu e6Mi+vMDOkiQipRduiTbhieVMT0MwMhXmfhhkta2DNa+aDZ0p3D9nSj8uMZmezjAYAYwUI f/vGfUrTeyOLi10xjd/GNQ0y6DcISHys6EKrrZBifhFtDvuzNCYBANsFhYjjdw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=JcjTMMu9wMZU/AHeNC/m2Q5Pc+D0UmghjUs09EBaSaA=; b=DhaFX9OmjWF/IKzWjJn6T1nIYscHGdtOGm6B9B5DPVK6IZIUNVpDp5X83PVLcIOXACHCin nAeL2dmOFewh1e99ihNddocjV+CbtWbpKTGvaIo1Z0P7/zGAnO/d6I11ou8znSNyGI/0ka buglk0F0u5OmKcXyhoyiZPxy89NZ6F8+8W94koCSo26hdH77dM03bgENCvsrqh2MTpxEIz NfXkhQFAW6GrKpB4LQYD949uMoZ0d6BPLPHHyc+Pzb338x13U2qqVJoerG+0/P++cXQX3b 7B6FB4gaM9arsqhIPiMv+OqTIVsdxcgTLOhsae/u3WAieFRkHjKbzBUqt1WEsQ== 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 4ZTBhK2yq6z1Cm2; Thu, 03 Apr 2025 19:32: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 533JWHZY040187; Thu, 3 Apr 2025 19:32:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWH20040184; Thu, 3 Apr 2025 19:32:17 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:17 GMT Message-Id: <202504031932.533JWH20040184@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: f89a4b6162a8 - stable/14 - MAC/do: 'struct rule': IDs and types as 'u_int', rename fields List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f89a4b6162a839c21061b64628e88e54fa8dddf4 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=f89a4b6162a839c21061b64628e88e54fa8dddf4 commit f89a4b6162a839c21061b64628e88e54fa8dddf4 Author: Olivier Certner AuthorDate: 2024-07-05 11:43:41 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:02 +0000 MAC/do: 'struct rule': IDs and types as 'u_int', rename fields This is in preparation for introducing a common conversion function for IDs and to simplify code a bit by removing the from-IDs union and not having to introduce a new one for to-IDs in a later commit. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47613 (cherry picked from commit 6aadc7b2ee055fba58984fec715b6e2a754f9d3e) --- sys/security/mac_do/mac_do.c | 102 ++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 59 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index edd728ea070a..bfd5eb136fc1 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -40,14 +40,19 @@ static unsigned mac_do_osd_jail_slot; #define RULE_GID 2 #define RULE_ANY 3 +/* + * We assume that 'uid_t' and 'gid_t' are aliases to 'u_int' in conversions + * required for parsing rules specification strings. + */ +_Static_assert(sizeof(uid_t) == sizeof(u_int) && (uid_t)-1 >= 0 && + sizeof(gid_t) == sizeof(u_int) && (gid_t)-1 >= 0, + "mac_do(4) assumes that 'uid_t' and 'gid_t' are aliases to 'u_int'"); + struct rule { - int from_type; - union { - uid_t f_uid; - gid_t f_gid; - }; - int to_type; - uid_t t_uid; + u_int from_type; + u_int from_id; + u_int to_type; + u_int to_id; TAILQ_ENTRY(rule) r_entries; }; @@ -83,71 +88,50 @@ alloc_rules(void) static int parse_rule_element(char *element, struct rule **rule) { - int error = 0; - char *type, *id, *p; + const char *from_type, *from_id, *to; + char *p; struct rule *new; new = malloc(sizeof(*new), M_DO, M_ZERO|M_WAITOK); - type = strsep(&element, "="); - if (type == NULL) { - error = EINVAL; - goto error; - } + from_type = strsep(&element, "="); + if (from_type == NULL) + goto einval; - if (strcmp(type, "uid") == 0) + if (strcmp(from_type, "uid") == 0) new->from_type = RULE_UID; - else if (strcmp(type, "gid") == 0) + else if (strcmp(from_type, "gid") == 0) new->from_type = RULE_GID; - else { - error = EINVAL; - goto error; - } + else + goto einval; - id = strsep(&element, ":"); - if (id == NULL || *id == '\0') { - error = EINVAL; - goto error; - } + from_id = strsep(&element, ":"); + if (from_id == NULL || *from_id == '\0') + goto einval; - switch (new->from_type) { - case RULE_UID: - new->f_uid = strtol(id, &p, 10); - break; - case RULE_GID: - new->f_gid = strtol(id, &p, 10); - break; - default: - __assert_unreachable(); - } - if (*p != '\0') { - error = EINVAL; - goto error; - } + new->from_id = strtol(from_id, &p, 10); + if (*p != '\0') + goto einval; - if (element == NULL || *element == '\0') { - error = EINVAL; - goto error; - } - if (strcmp(element, "any") == 0 || strcmp(element, "*") == 0) + to = element; + if (to == NULL || *to == '\0') + goto einval; + + if (strcmp(to, "any") == 0 || strcmp(to, "*") == 0) new->to_type = RULE_ANY; else { new->to_type = RULE_UID; - new->t_uid = strtol(element, &p, 10); - if (*p != '\0') { - error = EINVAL; - goto error; - } + new->to_id = strtol(to, &p, 10); + if (*p != '\0') + goto einval; } - MPASS(error == 0); *rule = new; return (0); -error: - MPASS(error != 0); +einval: free(new, M_DO); *rule = NULL; - return (error); + return (EINVAL); } /* @@ -568,9 +552,9 @@ mac_do_destroy(struct mac_policy_conf *mpc) static bool rule_applies(struct ucred *cred, struct rule *r) { - if (r->from_type == RULE_UID && r->f_uid == cred->cr_uid) + if (r->from_type == RULE_UID && r->from_id == cred->cr_uid) return (true); - if (r->from_type == RULE_GID && groupmember(r->f_gid, cred)) + if (r->from_type == RULE_GID && groupmember(r->from_id, cred)) return (true); return (false); } @@ -663,25 +647,25 @@ mac_do_check_setuid(struct ucred *cred, uid_t uid) rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { if (r->from_type == RULE_UID) { - if (cred->cr_uid != r->f_uid) + if (cred->cr_uid != r->from_id) continue; if (r->to_type == RULE_ANY) { error = 0; break; } - if (r->to_type == RULE_UID && uid == r->t_uid) { + if (r->to_type == RULE_UID && uid == r->to_id) { error = 0; break; } } if (r->from_type == RULE_GID) { - if (!groupmember(r->f_gid, cred)) + if (!groupmember(r->from_id, cred)) continue; if (r->to_type == RULE_ANY) { error = 0; break; } - if (r->to_type == RULE_UID && uid == r->t_uid) { + if (r->to_type == RULE_UID && uid == r->to_id) { error = 0; break; } From nobody Thu Apr 3 19:32:18 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhM3d3cz5sM3y; Thu, 03 Apr 2025 19:32: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 4ZTBhL4dCYz3SbS; Thu, 03 Apr 2025 19:32:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=syCLeOr2VVqvjoEqINUhMCu/EMGkok7eNwAECpX/Ggw=; b=ZTTXHpJGDnUyO3fBGp/minKERc/p8gc2EgLZ7n36WEnRjbrF+degdq3FEXoH0DAYsTEuuK Q2TKdYqiklJPtyC4rjanYL1vYpIesqXuTMhOI7zSDWTRUfYVK6OW6CB8CZ4Tl8PNnHnEuL XelfZOXkw99SjKGQdpMBF534vZ91zywwoAuNp7+BrWvBHbK1eAbZauZNfLa8rtEIg8Io1u JEAOVCOM24U9ZNS8vuHp7/pdx1khssjIU3IfV+RwpUbBQGYpyTGHY7J6kQwyBz+RWomp3s t0HiTaY6JxzNUdvXapGBqGoKX5VZ8tTTZ9ydPhCWpu0a3p9nVcOfgh7m9upebQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708738; a=rsa-sha256; cv=none; b=tt+Qxx107fGAVBUyDAl53ApUY0fqfINQO/mzUaqFLLDSLHKwguxGsMbZDToZIoyCBeXDEs rHwi7cAyhEb94Kel3JCpuubDrD0svwvQnaAadN2UtMXUAw/N/auapuRJLMLkWkdNIPR0CI w4Ev4MWwEEG+bM+0BqCEY/t+JBxt7aUqiILO10+5M/8vj1kgUbamp0syZMaKiRAU868hNb 0UdWBh7nFdpZKujcqUvoNMS81WXhdLJ/yDCbAawGnq2HVCuV/r0Lq9s1aWR426UbV5BF7c nXioqlRGbJ658oU3Do/FtHVOHkSaJdVcLq7x/UF7oHTJJtST3rCqXMmzNEelAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=syCLeOr2VVqvjoEqINUhMCu/EMGkok7eNwAECpX/Ggw=; b=gToXe3FFQHfJoT2JsdGzTBwZLj5fjb6GAkgamvWElp+kmOsx1tJuqy8O1H7plMe8GIoEVk AjHooVwkaMPutnqmQSBFZ2Kxfv9NVznnfk7QXeUppG3sp7iAq4tc+xHGEtBcH0FZCpfrai h1UefDAP+NT3ncHnGuJ08ywm8Lnw5UgrPa/zTFwERQk5zLfRcXNvvdu1CPOXX05sZ54VZ6 A6jvS8MoM6tKhvmyEkqMsLY8OIIoh7I/nOFx+fEGeL9rYqeoxDOO97ee7BzQO3dGi/LHwL 38qp80ndSKOF4hZriJWGOomfsR2hokYZCowbvb+D5VDMYeh+UFK7unhwVTqMSA== 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 4ZTBhL49nrzkN; Thu, 03 Apr 2025 19:32: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 533JWIR3040226; Thu, 3 Apr 2025 19:32:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWI8O040223; Thu, 3 Apr 2025 19:32:18 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:18 GMT Message-Id: <202504031932.533JWI8O040223@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8638177eb714 - stable/14 - MAC/do: Better parsing for IDs (strtoui_strict()) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8638177eb714216f042c511d2f05d7c13ce6fe84 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8638177eb714216f042c511d2f05d7c13ce6fe84 commit 8638177eb714216f042c511d2f05d7c13ce6fe84 Author: Olivier Certner AuthorDate: 2024-07-05 12:16:36 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:02 +0000 MAC/do: Better parsing for IDs (strtoui_strict()) Introduce strtoui_strict(), which signals an error on overflow contrary to the in-kernel strto*() family of functions which have no 'errno' to set and thus do not allow callers to distinguish a genuine maximum value on input and overflow. It is built on top of strtoq() and the 'quad_t' type in order to achieve this distinction and also to still support negative inputs with the usual meaning for these functions. See the introduced comments for more details. Use strtoui_strict() to read IDs instead of strtol(). Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47614 (cherry picked from commit 0af43c029048e1ad2f8b140a3baf3851785c12d9) --- sys/security/mac_do/mac_do.c | 55 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index bfd5eb136fc1..e13684c15dab 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -6,8 +6,10 @@ #include #include +#include #include #include +#include #include #include #include @@ -85,11 +87,52 @@ alloc_rules(void) return (rules); } +/* + * String to unsigned int. + * + * Contrary to the "standard" strtou*() family of functions, do not tolerate + * spaces at start nor an empty string, and returns a status code, the 'u_int' + * result being returned through a passed pointer (if no error). + * + * We detour through 'quad_t' because in-kernel strto*() functions cannot set + * 'errno' and thus can't distinguish a true maximum value from one returned + * because of overflow. We use 'quad_t' instead of 'u_quad_t' to support + * negative specifications (e.g., such as "-1" for UINT_MAX). + */ +static int +strtoui_strict(const char *const restrict s, const char **const restrict endptr, + int base, u_int *result) +{ + char *ep; + quad_t q; + + /* Rule out spaces and empty specifications. */ + if (s[0] == '\0' || isspace(s[0])) { + if (endptr != NULL) + *endptr = s; + return (EINVAL); + } + + q = strtoq(s, &ep, base); + if (endptr != NULL) + *endptr = ep; + if (q < 0) { + /* We allow specifying a negative number. */ + if (q < -(quad_t)UINT_MAX - 1 || q == QUAD_MIN) + return (EOVERFLOW); + } else { + if (q > UINT_MAX || q == UQUAD_MAX) + return (EOVERFLOW); + } + + *result = (u_int)q; + return (0); +} + static int parse_rule_element(char *element, struct rule **rule) { - const char *from_type, *from_id, *to; - char *p; + const char *from_type, *from_id, *to, *p; struct rule *new; new = malloc(sizeof(*new), M_DO, M_ZERO|M_WAITOK); @@ -109,8 +152,8 @@ parse_rule_element(char *element, struct rule **rule) if (from_id == NULL || *from_id == '\0') goto einval; - new->from_id = strtol(from_id, &p, 10); - if (*p != '\0') + error = strtoui_strict(from_id, &p, 10, &new->from_id); + if (error != 0 || *p != '\0') goto einval; to = element; @@ -121,8 +164,8 @@ parse_rule_element(char *element, struct rule **rule) new->to_type = RULE_ANY; else { new->to_type = RULE_UID; - new->to_id = strtol(to, &p, 10); - if (*p != '\0') + error = strtoui_strict(to, &p, 10, &new->to_id); + if (error != 0 || *p != '\0') goto einval; } From nobody Thu Apr 3 19:32:19 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhN0B3Wz5sM1n; Thu, 03 Apr 2025 19:32: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 4ZTBhM5Vlkz3STW; Thu, 03 Apr 2025 19:32:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708739; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rwx/EMYQlwBBGixLz2wWKQbgQugavEYfZkQ3bGBsus0=; b=OQZ7++9niy3g5AnU7T6lLQTyaYyDlabTTAFbCeIU240dueeOKak3qqNUoEtw1i/FC9t7NE rqJiu7XHm8D0Cjk399olcbQ3uGOsXXFGUcW9J5mJm3M4AijYA6eEf6p8FvqQSHPbZsxPQk GGJgocQH6zNcLCXwaSXTVkY7qUsa5uDfXXxaa9ljiSp9UJr+hIwf5o2b0b9w4GJO8yBK8Q yM1ldUlWRu1RT+QRy5StebpXLCBLdSm+4F0WkRnt+8Ewd+M8KjQUSaMzZu5KDYTcBJzT2p thgbztcPpEV6MIs06i4nPvUwQGCzRAjnHG16JJppbwyYti7tlB907mSOMmjEDA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708739; a=rsa-sha256; cv=none; b=pfCQzCyaiojlUc450PcQQlRYzowLhFH4ZJ2+yFaq26N8mH3wshcp39nsg7e8qSf5sTHVul ZAB5ZKAmdZ2OXZYv5GJTUoO32PjtUxv1Wp1AJF2nHbhdV/L//GeA8tdDdo0BvAj27Zb+ed uknZtPub1tLimG1gnGcjj35ntu/39rQniiP6jVgBHFkDHdJW1s5fwfG3sknzwBtSun9Nbe JQL3+D9YaBe1QPVQtupeEhxTLIlm2zSlMJFfy4X7SfV9CxnabGkn6FdqXn6eDPcWp86pIk DxCc4ToS3YT5LVvUcS0sQLGdofgzRm66OUHUinGyHZYy2w8H6Vagx26Ubaloog== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708739; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rwx/EMYQlwBBGixLz2wWKQbgQugavEYfZkQ3bGBsus0=; b=RvywzDAxek3pzMv6/rnQDK9zMjGgb5ShcQ6XcdPCJ5ewoN6H8hfIri29+10oYPYpZbiabM yWfoKEly/SBuFhcjCjHdhKVqF4gljcvXbdFcbq0G14ccUEa9mIfODUfoR4tCDu4yajey43 P+Gr6AzH6Grh5RrPkF0ss/kbEvmSWhB77TvIVpNO9WQiFsHypz6EgqDOPmvd3qslUAqxGj x19lgXm4z9vOXFawWx6nPiGpqMN2NinLaC2+FwG/O8tbK+aKTaOI6XnOi4JtXWdteVwgeA /++NIomE/Fuz6yvT/aVvxLrv0KHpGr9BnVXePrs5eRaTKpi0pPj11cswt+iZ4A== 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 4ZTBhM4zYmz1Cpx; Thu, 03 Apr 2025 19:32: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 533JWJjf040258; Thu, 3 Apr 2025 19:32:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWJ9P040255; Thu, 3 Apr 2025 19:32:19 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:19 GMT Message-Id: <202504031932.533JWJ9P040255@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8e605d88c2f1 - stable/14 - MAC/do: Ease input/output of ID types List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8e605d88c2f1ed3fea26fb5017a76d02952b47eb Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8e605d88c2f1ed3fea26fb5017a76d02952b47eb commit 8e605d88c2f1ed3fea26fb5017a76d02952b47eb Author: Olivier Certner AuthorDate: 2024-07-05 13:30:15 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:02 +0000 MAC/do: Ease input/output of ID types Have a static constant array mapping numerical ID types to their canonical representations ('id_type_to_str'). New parse_id_type() that parses a type thanks to 'id_type_to_str' and with a special case to accept also 'any'. Have parse_rule_element() use parse_id_type(). A later commit will add a second call to the latter for the destination ID. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47615 (cherry picked from commit 65766063f85d8b8fe8b24a50250a12a122974c26) --- sys/security/mac_do/mac_do.c | 49 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index e13684c15dab..5bec02ee2e56 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -38,10 +38,20 @@ static MALLOC_DEFINE(M_DO, "do_rule", "Rules for mac_do"); static unsigned mac_do_osd_jail_slot; +#define RULE_INVALID 0 /* Must stay 0. */ #define RULE_UID 1 #define RULE_GID 2 #define RULE_ANY 3 +static const char *id_type_to_str[] = { + [RULE_INVALID] = "invalid", + [RULE_UID] = "uid", + [RULE_GID] = "gid", + /* See also parse_id_type(). */ + [RULE_ANY] = "*", + NULL +}; + /* * We assume that 'uid_t' and 'gid_t' are aliases to 'u_int' in conversions * required for parsing rules specification strings. @@ -129,11 +139,36 @@ strtoui_strict(const char *const restrict s, const char **const restrict endptr, return (0); } +static int +parse_id_type(const char *const string, int *const type) +{ + /* + * Special case for "any", as the canonical form for RULE_ANY in + * id_type_to_str[] is "*". + */ + if (strcmp(string, "any") == 0) { + *type = RULE_ANY; + return (0); + } + + /* Start at 1 to avoid parsing "invalid". */ + for (size_t i = 1; id_type_to_str[i] != NULL; ++i) { + if (strcmp(string, id_type_to_str[i]) == 0) { + *type = i; + return (0); + } + } + + *type = RULE_INVALID; + return (EINVAL); +} + static int parse_rule_element(char *element, struct rule **rule) { const char *from_type, *from_id, *to, *p; struct rule *new; + int error; new = malloc(sizeof(*new), M_DO, M_ZERO|M_WAITOK); @@ -141,12 +176,16 @@ parse_rule_element(char *element, struct rule **rule) if (from_type == NULL) goto einval; - if (strcmp(from_type, "uid") == 0) - new->from_type = RULE_UID; - else if (strcmp(from_type, "gid") == 0) - new->from_type = RULE_GID; - else + error = parse_id_type(from_type, &new->from_type); + if (error != 0) goto einval; + switch (new->from_type) { + case RULE_UID: + case RULE_GID: + break; + default: + goto einval; + } from_id = strsep(&element, ":"); if (from_id == NULL || *from_id == '\0') From nobody Thu Apr 3 19:32:20 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhP2Pq8z5sM45; Thu, 03 Apr 2025 19:32: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 4ZTBhN6zqgz3SfX; Thu, 03 Apr 2025 19:32:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708741; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wmI1d2guClEpZvr7fHJjoKLJ3zc1oAFvT9EqcrISurY=; b=wruQ9YhVPpZnxrPyKEMTpSR0Ng/fHv2ySVZ2n/sFaAyx0tCAipn4WF4diOa4pH6o6sEUXv HKljYnvxaB0OEZbKJOekO7fG7J3b7OEX8DfMDRGoedR9MzT0a7LmSHdCbf5IdZGgVXUzlZ VvXngdTmgM7sqv8Q1XlPjU0B4AXux2XXHHJuDApcE7yt1ycmoSJJUCg1HRjPTIPFVbveGY T/ZRsXPQoen0R6ofWmZlVXYr7OBQFdoYQiJ1HDi/RrpV7oVjPwomv2jIDvVizJWJxSnv4e eODGajDKq2p2KSzkXoz0N05GKYteAHvhSFewddtsC5M5gjN3a9+5T0NvhzpnWg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708741; a=rsa-sha256; cv=none; b=pQIj3sr1Q+8PAMVh3nPdYIG0Jr0wkovOEwDzZifzV34PqD0oCQXY8CmZCV5ROC3vnxkcJA zjGbSTFyN78VUbw7NHsMPYb0LzAWftINLDBKiJ8XVJ+R/7WElG97srt2PS0R3zIaZ9Xkhs inMyXLCkowKcEx4von2opoo5sfEByln8jtyVp3me2yA5QAVXrz8bse/ccb8sDNlPv/Vqx6 F+OdN70in1Nd+jcufpt7c7MtvrY0XuXjTmq60aMO9khf896XIHwxm23YkspQIrkrtX5bgP vK2AVJ+S2mbUMlb4/1179+/kcJ86o8hxsvoQ9ELSNexDt9eONaIFSdTbiV/X+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708741; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wmI1d2guClEpZvr7fHJjoKLJ3zc1oAFvT9EqcrISurY=; b=pOIuHSQIxSTkuV2RVPE/xTLJ4SU3Xs94VRnFqXKqcAxE+FOOMwMK21SKief6TBDdCAaXG0 9xun+w1FAMtxHbm47SnTs3V3vdraNqjlBMlnVLkoTzTHWvQ/srLPwIHx1Pj84J6HHkW52h +f7KdUVgn6ziu+RGFzmtyn0i5Up5L8r+7IPWXps18RWnmHl0FkCwCK9rK+IxN7TCJoeBy6 /3bpDrc05LYA4JaBfVo8b8tlNvey2gwPALpz9q/6Ij3C7AWcTMbfle1T34TjWVBrK1t2sl TqH+1RLko/ggjEVTkiUJZBVZCngH+y2cALpyQhkOJBaj3yCpjXM21nCpdW7naw== 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 4ZTBhN6Q3VzZr; Thu, 03 Apr 2025 19:32: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 533JWKe2040291; Thu, 3 Apr 2025 19:32:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWKxH040288; Thu, 3 Apr 2025 19:32:20 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:20 GMT Message-Id: <202504031932.533JWKxH040288@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 1ccf02edc8e5 - stable/14 - MAC/do: Rename private OSD slot by removing 'mac_do_' prefix List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1ccf02edc8e549e437c866be6dd641d4659b7ee1 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=1ccf02edc8e549e437c866be6dd641d4659b7ee1 commit 1ccf02edc8e549e437c866be6dd641d4659b7ee1 Author: Olivier Certner AuthorDate: 2024-11-25 15:07:57 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:02 +0000 MAC/do: Rename private OSD slot by removing 'mac_do_' prefix This variable is static and holds the OSD slot number for jails that MAC/do uses to store rules. In the same vein as previous renames, simplify it by removing the redundant prefix, as this name cannot appear in code outside of 'mac_do.c', nor in stack traces on panic. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47772 (cherry picked from commit 40a664a463bab87505c8d42816a71202e8ad7bd9) --- sys/security/mac_do/mac_do.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 5bec02ee2e56..fc1a6de471b6 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -36,7 +36,7 @@ static MALLOC_DEFINE(M_DO, "do_rule", "Rules for mac_do"); #define MAC_RULE_STRING_LEN 1024 -static unsigned mac_do_osd_jail_slot; +static unsigned osd_jail_slot; #define RULE_INVALID 0 /* Must stay 0. */ #define RULE_UID 1 @@ -284,7 +284,7 @@ find_rules(struct prison *const pr, struct prison **const aprp) cpr = pr; for (;;) { prison_lock(cpr); - rules = osd_jail_get(cpr, mac_do_osd_jail_slot); + rules = osd_jail_get(cpr, osd_jail_slot); if (rules != NULL) break; prison_unlock(cpr); @@ -299,7 +299,7 @@ find_rules(struct prison *const pr, struct prison **const aprp) } /* - * OSD destructor for slot 'mac_do_osd_jail_slot'. + * OSD destructor for slot 'osd_jail_slot'. * * Called with 'value' not NULL. */ @@ -317,14 +317,14 @@ dealloc_osd(void *const value) * In practice, this means that the rules become inherited (from the closest * ascendant that has some). * - * Destroys the 'mac_do_osd_jail_slot' slot of the passed jail. + * Destroys the 'osd_jail_slot' slot of the passed jail. */ static void remove_rules(struct prison *const pr) { prison_lock(pr); /* This calls destructor dealloc_osd(). */ - osd_jail_del(pr, mac_do_osd_jail_slot); + osd_jail_del(pr, osd_jail_slot); prison_unlock(pr); } @@ -337,11 +337,11 @@ set_rules(struct prison *const pr, struct rules *const rules) struct rules *old_rules; void **rsv; - rsv = osd_reserve(mac_do_osd_jail_slot); + rsv = osd_reserve(osd_jail_slot); prison_lock(pr); - old_rules = osd_jail_get(pr, mac_do_osd_jail_slot); - osd_jail_set_reserved(pr, mac_do_osd_jail_slot, rsv, rules); + old_rules = osd_jail_get(pr, osd_jail_slot); + osd_jail_set_reserved(pr, osd_jail_slot, rsv, rules); prison_unlock(pr); if (old_rules != NULL) toast_rules(old_rules); @@ -617,7 +617,7 @@ mac_do_init(struct mac_policy_conf *mpc) { struct prison *pr; - mac_do_osd_jail_slot = osd_jail_register(dealloc_osd, osd_methods); + osd_jail_slot = osd_jail_register(dealloc_osd, osd_methods); set_empty_rules(&prison0); sx_slock(&allprison_lock); TAILQ_FOREACH(pr, &allprison, pr_list) @@ -628,7 +628,7 @@ mac_do_init(struct mac_policy_conf *mpc) static void mac_do_destroy(struct mac_policy_conf *mpc) { - osd_jail_deregister(mac_do_osd_jail_slot); + osd_jail_deregister(osd_jail_slot); } static bool From nobody Thu Apr 3 19:32:21 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhQ5klhz5sMCF; Thu, 03 Apr 2025 19:32: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 4ZTBhQ08Q6z3Sfj; Thu, 03 Apr 2025 19:32:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r1BnCkoIwBPK2K9i6QutqmDRui/H+VgbEc/jbtzSZtk=; b=eMagIThpFcfCN+OYGrMom7bDrKsQvhUr2drESMxGcPqoEGi0tbnVM5xhC/6APn9BUAW8yg dNMhdZyFyfKeNmMUG1O04UhnlRbXW3TjPJy5PH8Jvq5jrvLKCk0ctVqnd1aZd9eeZMoGjr gD0oNBcfbr9A+2q/2rilgqQswZWUdcdbcNXYz1qRPY3KIk9znRX7dnVcCg+ipBIw5QBqzb TfgSckevRzwzwwfY5x8FODhJ4UkJYNzfkXwoDDChAACKrxIOP6YOusJNiPeG671QNfrkJP qH2Bow9vtk0oKUxGZ63bq+Q+oKQcAC12fAJ6URn/s9pV4ynzMesxMRxHkcavlQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708742; a=rsa-sha256; cv=none; b=Tx5b9pipyI2ghCwc4UzxrbLDif5ZQP08dmXT21GG3x8VAJinLS2AGOfTc+ijb197FEQfJe zf/kOM4+I5uxmBvGlVEPzDf38R6wEmKzzHw8eitzPp0YYlCGmvsQ9lvx6ooj6F9YwrMpZe GbwmlfntyYn0sIPQ9GGKOsGWeX1KuJdkXZTFObFCmKmSvGq/oW77Jl3C5sNTvPIFZIOO7h NgH+/YYc4VU5Wm85d85jh4VXqYYuN2Jnl2ZoH1Csw8cwHUkQDLYaGIs7Ojw2mydQu8IovB y4hmn0yQAJwcmoUetbi4fBQaJB0wtxTn4NTbplU0CdXI3E80+8/LwjwUnO4cvg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=r1BnCkoIwBPK2K9i6QutqmDRui/H+VgbEc/jbtzSZtk=; b=lfP/9I2leX1P8YrB58sKxyhGN3fbilNbFzGruOpLK1DBkpOI8MokeaRYjw+DoIT7k0pIya xUIB710r27yU4z3elKDGuJrqqz2ti8iUJvv79uLb5L7WOY08iPsQCl+kFwdP7vbgQcfxAY z+Oc4LiFa+1BmtaCU/NDcvUveQsMbKc9AE+laBFIbnAvSw3myGnf+ZR7TI213XnxI9wwIY 7x8lUdd0aRp6WnQeSHagaEg0oGvRB4RV4KcVtRLBZ+WTSgdBGgrUVL3SocZWJm05pgQNqI 74U5tHaoQDBCb5FUM3+EMPRjX8zc/ZCBmAhJjii8OiwIic0g/tKO3w/YeVFTAg== 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 4ZTBhP6pHYzLy; Thu, 03 Apr 2025 19:32: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 533JWLeS040327; Thu, 3 Apr 2025 19:32:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWLxC040324; Thu, 3 Apr 2025 19:32:21 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:21 GMT Message-Id: <202504031932.533JWLxC040324@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 83ffc412b2e9 - stable/14 - MAC/do: Support multiple users and groups as single rule's targets List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 83ffc412b2e91f99752b59a3675c97959ad77734 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=83ffc412b2e91f99752b59a3675c97959ad77734 commit 83ffc412b2e91f99752b59a3675c97959ad77734 Author: Olivier Certner AuthorDate: 2024-07-05 15:56:13 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:03 +0000 MAC/do: Support multiple users and groups as single rule's targets Supporting group targets is a requirement for MAC/do to be able to enforce a limited set of valid new groups passed to setgroups(). Additionally, it must be possible for this set of groups to also depend on the target UID, since users and groups are quite tied in UNIX (users are automatically placed in only the groups specified through '/etc/passwd' (primary group) and '/etc/group' (supplementary ones)). These requirements call for a re-design of the specification of the rules specification string and of 'struct rule'. A rules specification string is now a list of rules separated by ';' (instead of ','). One rule is still composed of a "from" part and a "to" (or "target") part, both being separated by ':' (as before). The first part, "from", is matched against the credentials of the process calling setuid()/setgroups(). Its specification remains unchanged: It is a '=' clause, where is either "uid" or "gid" and an UID or GID. The second part, "to", is now a comma-separated (',') list of '=' clauses similar to that of the "from" part, with the extensions that may also be "*" or "any" or ".", and that may contain at most one of the '+', '-' and '!' characters when is GID. "*" and "any" both designate any ID for the , and are aliases to each other. In front of them, only the "+" flag is allowed (in addition to the previous rules). "." designates the process' current IDs for the , as explained below. For GIDs, an absence of flag indicates that the specified GID is allowed as the real, effective and/or saved GIDs (the "primary" groups). Conversely, the presence of any allowed flag indicates that the specification concerns supplementary groups. The '+' flag in front of "gid" indicates that the ID is allowed as a supplementary group. The '!' flag indicates that the ID is mandatory, i.e., must be listed in the supplementary groups. The '-' flag indicates that the GID must not be listed in the supplementary groups. A specification with '-' is only useful in conjunction with a '+'-tagged specification where only one of them has ".", or if other MAC policies are loaded that would give access to other, unwanted groups. "." indicates some ID that the calling process already has on privilege check. For type "uid", it designates any of the real, effective or saved UIDs. For type "gid", its effect depends on the presence of one of the '+', '-' or '!' flags. If no flag is present, it designates any of the real, effective or saved GIDs. If one is present, it designates any of the supplementary groups. If the "to" part doesn't specify any explicit UID, any of the UIDs of the calling process is implied (it is as if "uid=." had been specified). Similarly, if it doesn't specify any explicit GID, "gid=.,!gid=." is assumed, meaning that all the groups of the calling process are implied and must be present. More precisely, each of the desired real, effective and saved GIDs must be one of the current real, effective or saved GID, whereas all others (the supplementary ones) must be the same as those that are current. No two clauses in a single "to" list may display the same , except for GIDs but only if, each time the same appears, it does so with a different flag (no flag counting as a separate flag) and all the specified flags are not contradictory (e.g., it is possible to have the same GID appear with no flag and the "+" flag, but the same GID with both "+" and "-" will be rejected). 'struct rule' now holds arrays of UIDs (field 'uids') and GIDs (field 'gids') that are admissible as targets, with accompanying flags (such as MDF_SUPP_MUST, representing the '!' flag). Some flags are also held by ID type, including flags associated to individual IDs, as MDF_CURRENT in these flags stands for the process being privilege-checked's current IDs, to which ID flags apply. As a departure from this scheme, "*" or "any" as for GIDs is either represented by MDF_ANY or MDF_ANY_SUPP. This is to make it coexist with a "."/MDF_CURRENT specification for the other category of groups (among primary and supplementary groups), which needs to be qualified by the usual GID flags. This commit contains only the changes to parse the new rules and to build their representation. The privilege granting part is not fixed here, beyond what making compilation work requires (and, in preparation for some subsequent commit, minimal adaptations to the matching logic in check_setuid()). Approved by: markj (mentor) Relnotes: yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47616 (cherry picked from commit 6c3def74e2deb825e7dac4ffebaaf651f547e392) --- sys/security/mac_do/mac_do.c | 736 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 659 insertions(+), 77 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index fc1a6de471b6..92c09d540723 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -38,18 +38,18 @@ static MALLOC_DEFINE(M_DO, "do_rule", "Rules for mac_do"); static unsigned osd_jail_slot; -#define RULE_INVALID 0 /* Must stay 0. */ -#define RULE_UID 1 -#define RULE_GID 2 -#define RULE_ANY 3 +#define IT_INVALID 0 /* Must stay 0. */ +#define IT_UID 1 +#define IT_GID 2 +#define IT_ANY 3 +#define IT_LAST IT_ANY static const char *id_type_to_str[] = { - [RULE_INVALID] = "invalid", - [RULE_UID] = "uid", - [RULE_GID] = "gid", + [IT_INVALID] = "invalid", + [IT_UID] = "uid", + [IT_GID] = "gid", /* See also parse_id_type(). */ - [RULE_ANY] = "*", - NULL + [IT_ANY] = "*", }; /* @@ -60,19 +60,236 @@ _Static_assert(sizeof(uid_t) == sizeof(u_int) && (uid_t)-1 >= 0 && sizeof(gid_t) == sizeof(u_int) && (gid_t)-1 >= 0, "mac_do(4) assumes that 'uid_t' and 'gid_t' are aliases to 'u_int'"); +/* + * Internal flags. + * + * They either apply as per-type (t) or per-ID (i) but are conflated because all + * per-ID flags are also valid as per-type ones to qualify the "current" (".") + * per-type flag. Also, some of them are in fact exclusive, but we use one-hot + * encoding for simplicity. + * + * There is currently room for "only" 16 bits. As these flags are purely + * internal, they can be renumbered and/or their type changed as needed. + * + * See also the check_*() functions below. + */ +typedef uint16_t flags_t; + +/* (i,gid) Specification concerns primary groups. */ +#define MDF_PRIMARY (1u << 0) +/* (i,gid) Specification concerns supplementary groups. */ +#define MDF_SUPP_ALLOW (1u << 1) +/* (i,gid) Group must appear as a supplementary group. */ +#define MDF_SUPP_MUST (1u << 2) +/* (i,gid) Group must not appear as a supplementary group. */ +#define MDF_SUPP_DONT (1u << 3) +#define MDF_SUPP_MASK (MDF_SUPP_ALLOW | MDF_SUPP_MUST | MDF_SUPP_DONT) +#define MDF_ID_MASK (MDF_PRIMARY | MDF_SUPP_MASK) + +/* + * (t) All IDs allowed. + * + * For GIDs, MDF_ANY only concerns primary groups. The MDF_PRIMARY and + * MDF_SUPP_* flags never apply to MDF_ANY, but can be present if MDF_CURRENT is + * present also, as usual. + */ +#define MDF_ANY (1u << 8) +/* (t) Current IDs allowed. */ +#define MDF_CURRENT (1u << 9) +#define MDF_TYPE_COMMON_MASK (MDF_ANY | MDF_CURRENT) +/* (t,gid) All IDs allowed as supplementary groups. */ +#define MDF_ANY_SUPP (1u << 10) +/* (t,gid) Some ID or MDF_CURRENT has MDF_SUPP_MUST or MDF_SUPP_DONT. */ +#define MDF_MAY_REJ_SUPP (1u << 11) +/* (t,gid) Some explicit ID (not MDF_CURRENT) has MDF_SUPP_MUST. */ +#define MDF_EXPLICIT_SUPP_MUST (1u << 12) +/* (t,gid) Whether any target clause is about primary groups. Used during + * parsing only. */ +#define MDF_HAS_PRIMARY_CLAUSE (1u << 13) +/* (t,gid) Whether any target clause is about supplementary groups. Used during + * parsing only. */ +#define MDF_HAS_SUPP_CLAUSE (1u << 14) +#define MDF_TYPE_GID_MASK (MDF_ANY_SUPP | MDF_MAY_REJ_SUPP | \ + MDF_EXPLICIT_SUPP_MUST | MDF_HAS_PRIMARY_CLAUSE | MDF_HAS_SUPP_CLAUSE) +#define MDF_TYPE_MASK (MDF_TYPE_COMMON_MASK | MDF_TYPE_GID_MASK) + +/* + * Persistent structures. + */ + +struct id_spec { + u_int id; + flags_t flags; /* See MDF_* above. */ +}; + +/* + * This limits the number of target clauses per type to 65535. With the current + * value of MAC_RULE_STRING_LEN (1024), this is way more than enough anyway. + */ +typedef uint16_t id_nb_t; +/* We only have a few IT_* types. */ +typedef uint16_t id_type_t; + struct rule { - u_int from_type; - u_int from_id; - u_int to_type; - u_int to_id; TAILQ_ENTRY(rule) r_entries; + id_type_t from_type; + u_int from_id; + flags_t uid_flags; /* See MDF_* above. */ + id_nb_t uids_nb; + flags_t gid_flags; /* See MDF_* above. */ + id_nb_t gids_nb; + struct id_spec *uids; + struct id_spec *gids; }; +TAILQ_HEAD(rulehead, rule); + struct rules { char string[MAC_RULE_STRING_LEN]; - TAILQ_HEAD(rulehead, rule) head; + struct rulehead head; +}; + +/* + * Temporary structures used to build a 'struct rule' above. + */ + +struct id_elem { + TAILQ_ENTRY(id_elem) ie_entries; + struct id_spec spec; }; +TAILQ_HEAD(id_list, id_elem); + +#ifdef INVARIANTS +static void +check_type(const id_type_t type) +{ + if (type > IT_LAST) + panic("Invalid type number %u", type); +} + +static void +panic_for_unexpected_flags(const id_type_t type, const flags_t flags, + const char *const str) +{ + panic("ID type %s: Unexpected flags %u (%s), ", id_type_to_str[type], + flags, str); +} + +static void +check_type_and_id_flags(const id_type_t type, const flags_t flags) +{ + const char *str; + + check_type(type); + switch (type) { + case IT_UID: + if (flags != 0) { + str = "only 0 allowed"; + goto unexpected_flags; + } + break; + case IT_GID: + if ((flags & ~MDF_ID_MASK) != 0) { + str = "only bits in MDF_ID_MASK allowed"; + goto unexpected_flags; + } + if (!powerof2(flags & MDF_SUPP_MASK)) { + str = "only a single flag in MDF_SUPP_MASK allowed"; + goto unexpected_flags; + } + break; + default: + __assert_unreachable(); + } + return; + +unexpected_flags: + panic_for_unexpected_flags(type, flags, str); +} + +static void +check_type_and_id_spec(const id_type_t type, const struct id_spec *const is) +{ + check_type_and_id_flags(type, is->flags); +} + +static void +check_type_and_type_flags(const id_type_t type, const flags_t flags) +{ + const char *str; + + check_type_and_id_flags(type, flags & MDF_ID_MASK); + if ((flags & ~MDF_ID_MASK & ~MDF_TYPE_MASK) != 0) { + str = "only MDF_ID_MASK | MDF_TYPE_MASK bits allowed"; + goto unexpected_flags; + } + if ((flags & MDF_ANY) != 0 && (flags & MDF_CURRENT) != 0 && + (type == IT_UID || (flags & MDF_PRIMARY) != 0)) { + str = "MDF_ANY and MDF_CURRENT are exclusive for UIDs " + "or primary group GIDs"; + goto unexpected_flags; + } + if ((flags & MDF_ANY_SUPP) != 0 && (flags & MDF_CURRENT) != 0 && + (flags & MDF_SUPP_MASK) != 0) { + str = "MDF_SUPP_ANY and MDF_CURRENT with supplementary " + "groups specification are exclusive"; + goto unexpected_flags; + } + if (((flags & MDF_PRIMARY) != 0 || (flags & MDF_ANY) != 0) && + (flags & MDF_HAS_PRIMARY_CLAUSE) == 0) { + str = "Presence of folded primary clause not reflected " + "by presence of MDF_HAS_PRIMARY_CLAUSE"; + goto unexpected_flags; + } + if (((flags & MDF_SUPP_MASK) != 0 || (flags & MDF_ANY_SUPP) != 0) && + (flags & MDF_HAS_SUPP_CLAUSE) == 0) { + str = "Presence of folded supplementary clause not reflected " + "by presence of MDF_HAS_SUPP_CLAUSE"; + goto unexpected_flags; + } + return; + +unexpected_flags: + panic_for_unexpected_flags(type, flags, str); +} +#else /* !INVARIANTS */ +#define check_type_and_id_flags(...) +#define check_type_and_id_spec(...) +#define check_type_and_type_flags(...) +#endif /* INVARIANTS */ + +/* + * Returns EALREADY if both flags have some overlap, or EINVAL if flags are + * incompatible, else 0 with flags successfully merged into 'dest'. + */ +static int +coalesce_id_flags(const flags_t src, flags_t *const dest) +{ + flags_t res; + + if ((src & *dest) != 0) + return (EALREADY); + + res = src | *dest; + + /* Check for compatibility of supplementary flags, and coalesce. */ + if ((res & MDF_SUPP_MASK) != 0) { + /* MDF_SUPP_DONT incompatible with the rest. */ + if ((res & MDF_SUPP_DONT) != 0 && (res & MDF_SUPP_MASK & + ~MDF_SUPP_DONT) != 0) + return (EINVAL); + /* + * Coalesce MDF_SUPP_ALLOW and MDF_SUPP_MUST into MDF_SUPP_MUST. + */ + if ((res & MDF_SUPP_ALLOW) != 0 && (res & MDF_SUPP_MUST) != 0) + res &= ~MDF_SUPP_ALLOW; + } + + *dest = res; + return (0); +} + static void toast_rules(struct rules *const rules) { @@ -81,6 +298,8 @@ toast_rules(struct rules *const rules) while ((rule = TAILQ_FIRST(head)) != NULL) { TAILQ_REMOVE(head, rule, r_entries); + free(rule->uids, M_DO); + free(rule->gids, M_DO); free(rule, M_DO); } free(rules, M_DO); @@ -97,6 +316,12 @@ alloc_rules(void) return (rules); } +static bool +is_null_or_empty(const char *s) +{ + return (s == NULL || s[0] == '\0'); +} + /* * String to unsigned int. * @@ -140,79 +365,442 @@ strtoui_strict(const char *const restrict s, const char **const restrict endptr, } static int -parse_id_type(const char *const string, int *const type) +parse_id_type(const char *const string, id_type_t *const type) { /* - * Special case for "any", as the canonical form for RULE_ANY in + * Special case for "any", as the canonical form for IT_ANY in * id_type_to_str[] is "*". */ if (strcmp(string, "any") == 0) { - *type = RULE_ANY; + *type = IT_ANY; return (0); } /* Start at 1 to avoid parsing "invalid". */ - for (size_t i = 1; id_type_to_str[i] != NULL; ++i) { + for (size_t i = 1; i <= IT_LAST; ++i) { if (strcmp(string, id_type_to_str[i]) == 0) { *type = i; return (0); } } - *type = RULE_INVALID; + *type = IT_INVALID; return (EINVAL); } +static size_t +parse_gid_flags(const char *const string, flags_t *const flags, + flags_t *const gid_flags) +{ + switch (string[0]) { + case '+': + *flags |= MDF_SUPP_ALLOW; + goto has_supp_clause; + case '!': + *flags |= MDF_SUPP_MUST; + *gid_flags |= MDF_MAY_REJ_SUPP; + goto has_supp_clause; + case '-': + *flags |= MDF_SUPP_DONT; + *gid_flags |= MDF_MAY_REJ_SUPP; + goto has_supp_clause; + has_supp_clause: + *gid_flags |= MDF_HAS_SUPP_CLAUSE; + return (1); + } + + return (0); +} + +static bool +parse_any(const char *const string) +{ + return (strcmp(string, "*") == 0 || strcmp(string, "any") == 0); +} + +static bool +has_clauses(const id_nb_t nb, const flags_t type_flags) +{ + return ((type_flags & MDF_TYPE_MASK) != 0 || nb != 0); +} + static int -parse_rule_element(char *element, struct rule **rule) +parse_target_clause(char *to, struct rule *const rule, + struct id_list *const uid_list, struct id_list *const gid_list) { - const char *from_type, *from_id, *to, *p; - struct rule *new; + char *to_type, *to_id; + const char *p; + struct id_list *list; + id_nb_t *nb; + flags_t *tflags; + struct id_elem *ie; + struct id_spec is = {.flags = 0}; + flags_t gid_flags = 0; + id_type_t type; int error; - new = malloc(sizeof(*new), M_DO, M_ZERO|M_WAITOK); + MPASS(to != NULL); + to_type = strsep(&to, "="); + MPASS(to_type != NULL); + to_type += parse_gid_flags(to_type, &is.flags, &gid_flags); + error = parse_id_type(to_type, &type); + if (error != 0) + goto einval; + if (type != IT_GID && is.flags != 0) + goto einval; + + to_id = strsep(&to, ""); + switch (type) { + case IT_GID: + if (to_id == NULL) + goto einval; + + if (is.flags == 0) { + /* No flags: Dealing with a primary group. */ + is.flags |= MDF_PRIMARY; + gid_flags |= MDF_HAS_PRIMARY_CLAUSE; + } + + list = gid_list; + nb = &rule->gids_nb; + tflags = &rule->gid_flags; + + /* "*" or "any"? */ + if (parse_any(to_id)) { + /* + * We check that we have not seen any other clause of + * the same category (i.e., concerning primary or + * supplementary groups). + */ + if ((is.flags & MDF_PRIMARY) != 0) { + if ((*tflags & MDF_HAS_PRIMARY_CLAUSE) != 0) + goto einval; + *tflags |= gid_flags | MDF_ANY; + } else { + /* + * If a supplementary group flag was present, it + * must be MDF_SUPP_ALLOW ("+"). + */ + if ((is.flags & MDF_SUPP_MASK) != MDF_SUPP_ALLOW || + (*tflags & MDF_HAS_SUPP_CLAUSE) != 0) + goto einval; + *tflags |= gid_flags | MDF_ANY_SUPP; + } + goto check_type_and_finish; + } else { + /* + * Check that we haven't already seen "any" for the same + * category. + */ + if ((is.flags & MDF_PRIMARY) != 0) { + if ((*tflags & MDF_ANY) != 0) + goto einval; + } else if ((*tflags & MDF_ANY_SUPP) != 0 && + (is.flags & MDF_SUPP_ALLOW) != 0) + goto einval; + *tflags |= gid_flags; + } + break; + + case IT_UID: + if (to_id == NULL) + goto einval; + + list = uid_list; + nb = &rule->uids_nb; + tflags = &rule->uid_flags; + + /* "*" or "any"? */ + if (parse_any(to_id)) { + /* There must not be any other clause. */ + if (has_clauses(*nb, *tflags)) + goto einval; + *tflags |= MDF_ANY; + goto check_type_and_finish; + } else { + /* + * Check that we haven't already seen "any" for the same + * category. + */ + if ((*tflags & MDF_ANY) != 0) + goto einval; + } + break; + + case IT_ANY: + /* No ID allowed. */ + if (to_id != NULL) + goto einval; + /* + * We can't have IT_ANY after any other IT_*, it must be the + * only one. + */ + if (has_clauses(rule->uids_nb, rule->uid_flags) || + has_clauses(rule->gids_nb, rule->gid_flags)) + goto einval; + rule->uid_flags |= MDF_ANY; + rule->gid_flags |= MDF_ANY | MDF_ANY_SUPP | + MDF_HAS_PRIMARY_CLAUSE | MDF_HAS_SUPP_CLAUSE; + goto finish; + + default: + /* parse_id_type() returns no other types currently. */ + __assert_unreachable(); + } - from_type = strsep(&element, "="); - if (from_type == NULL) + /* Rule out cases that have been treated above. */ + MPASS((type == IT_UID || type == IT_GID) && !parse_any(to_id)); + + /* "."? */ + if (strcmp(to_id, ".") == 0) { + if ((*tflags & MDF_CURRENT) != 0) { + /* Duplicate "." . Try to coalesce. */ + error = coalesce_id_flags(is.flags, tflags); + if (error != 0) + goto einval; + } else + *tflags |= MDF_CURRENT | is.flags; + goto check_type_and_finish; + } + + /* Parse an ID. */ + error = strtoui_strict(to_id, &p, 10, &is.id); + if (error != 0 || *p != '\0') goto einval; + /* Explicit ID flags. */ + if (type == IT_GID && (is.flags & MDF_SUPP_MUST) != 0) + *tflags |= MDF_EXPLICIT_SUPP_MUST; + + /* + * We check for duplicate IDs and coalesce their 'struct id_spec' only + * at end of parse_single_rule() because it is much more performant then + * (using sorted arrays). + */ + ++*nb; + if (*nb == 0) + return (EOVERFLOW); + ie = malloc(sizeof(*ie), M_DO, M_WAITOK); + ie->spec = is; + TAILQ_INSERT_TAIL(list, ie, ie_entries); + check_type_and_id_spec(type, &is); +finish: + return (0); +check_type_and_finish: + check_type_and_type_flags(type, *tflags); + return (0); +einval: + return (EINVAL); +} + +static int +u_int_cmp(const u_int i1, const u_int i2) +{ + return ((i1 > i2) - (i1 < i2)); +} + +static int +id_spec_cmp(const void *const p1, const void *const p2) +{ + const struct id_spec *const is1 = p1; + const struct id_spec *const is2 = p2; + + return (u_int_cmp(is1->id, is2->id)); +} + +/* + * Transfer content of 'list' into 'array', freeing and emptying list. + * + * 'nb' must be 'list''s length and not be greater than 'array''s size. The + * destination array is sorted by ID. Structures 'struct id_spec' with same IDs + * are coalesced if that makes sense (not including duplicate clauses), else + * EINVAL is returned. On success, 'nb' is updated (lowered) to account for + * coalesced specifications. The parameter 'type' is only for testing purposes + * (INVARIANTS). + */ +static int +pour_list_into_rule(const id_type_t type, struct id_list *const list, + struct id_spec *const array, id_nb_t *const nb) +{ + struct id_elem *ie, *ie_next; + size_t idx = 0; + + /* Fill the array. */ + TAILQ_FOREACH_SAFE(ie, list, ie_entries, ie_next) { + MPASS(idx < *nb); + array[idx] = ie->spec; + free(ie, M_DO); + ++idx; + } + MPASS(idx == *nb); + TAILQ_INIT(list); + + /* Sort it (by ID). */ + qsort(array, *nb, sizeof(*array), id_spec_cmp); + + /* Coalesce same IDs. */ + if (*nb != 0) { + size_t ref_idx = 0; + + for (idx = 1; idx < *nb; ++idx) { + const u_int id = array[idx].id; + + if (id != array[ref_idx].id) { + ++ref_idx; + if (ref_idx != idx) + array[ref_idx] = array[idx]; + continue; + } + + switch (type) { + int error; + + case IT_GID: + error = coalesce_id_flags(array[idx].flags, + &array[ref_idx].flags); + if (error != 0) + return (EINVAL); + check_type_and_id_flags(type, + array[ref_idx].flags); + break; + + case IT_UID: + /* + * No flags in this case. Multiple appearances + * of the same UID is an exact redundancy, so + * error out. + */ + return (EINVAL); + + default: + __assert_unreachable(); + } + } + *nb = ref_idx + 1; + } + + return (0); +} + +/* + * See also first comments for parse_rule() below. + * + * The second part of a rule, called (or ), is a comma-separated + * (',') list of '=' clauses similar to that of the + * part, with the extensions that may also be "*" or "any" or ".", and that + * may contain at most one of the '+', '-' and '!' characters when + * is "gid" (no flags are allowed for "uid"). No two clauses in a single + * list may list the same . "*" and "any" both designate any ID for + * the , and are aliases to each other. In front of "any" (or "*"), only + * the '+' flag is allowed (in the "gid" case). "." designates the process' + * current IDs for the . The precise meaning of flags and "." is + * explained in functions checking privileges below. + */ +static int +parse_single_rule(char *rule, struct rules *const rules) +{ + const char *from_type, *from_id, *p; + char *to_list; + struct id_list uid_list, gid_list; + struct id_elem *ie, *ie_next; + struct rule *new; + int error; + + MPASS(rule != NULL); + TAILQ_INIT(&uid_list); + TAILQ_INIT(&gid_list); + + /* Freed when the 'struct rules' container is freed. */ + new = malloc(sizeof(*new), M_DO, M_WAITOK | M_ZERO); + + from_type = strsep(&rule, "="); + MPASS(from_type != NULL); /* Because 'rule' was not NULL. */ error = parse_id_type(from_type, &new->from_type); if (error != 0) goto einval; switch (new->from_type) { - case RULE_UID: - case RULE_GID: + case IT_UID: + case IT_GID: break; default: goto einval; } - from_id = strsep(&element, ":"); - if (from_id == NULL || *from_id == '\0') + from_id = strsep(&rule, ":"); + if (is_null_or_empty(from_id)) goto einval; error = strtoui_strict(from_id, &p, 10, &new->from_id); if (error != 0 || *p != '\0') goto einval; - to = element; - if (to == NULL || *to == '\0') + /* + * We will now parse the "to" list. + * + * In order to ease parsing, we will begin by building lists of target + * UIDs and GIDs in local variables 'uid_list' and 'gid_list'. The + * number of each type of IDs will be filled directly in 'new'. At end + * of parse, we will allocate both arrays of IDs to be placed into the + * 'uids' and 'gids' members, sort them, and discard the tail queues + * used to build them. This conversion to sorted arrays at end of parse + * allows to minimize memory allocations and enables searching IDs in + * O(log(n)) instead of linearly. + */ + to_list = strsep(&rule, ","); + if (to_list == NULL) goto einval; + do { + error = parse_target_clause(to_list, new, &uid_list, &gid_list); + if (error != 0) + goto einval; - if (strcmp(to, "any") == 0 || strcmp(to, "*") == 0) - new->to_type = RULE_ANY; - else { - new->to_type = RULE_UID; - error = strtoui_strict(to, &p, 10, &new->to_id); - if (error != 0 || *p != '\0') + to_list = strsep(&rule, ","); + } while (to_list != NULL); + + if (new->uids_nb != 0) { + new->uids = malloc(sizeof(*new->uids) * new->uids_nb, M_DO, + M_WAITOK); + error = pour_list_into_rule(IT_UID, &uid_list, new->uids, + &new->uids_nb); + if (error != 0) + goto einval; + } + MPASS(TAILQ_EMPTY(&uid_list)); + if (!has_clauses(new->uids_nb, new->uid_flags)) { + /* No UID specified, default is "uid=.". */ + MPASS(new->uid_flags == 0); + new->uid_flags = MDF_CURRENT; + check_type_and_type_flags(IT_UID, new->uid_flags); + } + + if (new->gids_nb != 0) { + new->gids = malloc(sizeof(*new->gids) * new->gids_nb, M_DO, + M_WAITOK); + error = pour_list_into_rule(IT_GID, &gid_list, new->gids, + &new->gids_nb); + if (error != 0) goto einval; } + MPASS(TAILQ_EMPTY(&gid_list)); + if (!has_clauses(new->gids_nb, new->gid_flags)) { + /* No GID specified, default is "gid=.,!gid=.". */ + MPASS(new->gid_flags == 0); + new->gid_flags = MDF_CURRENT | MDF_PRIMARY | MDF_SUPP_MUST | + MDF_HAS_PRIMARY_CLAUSE | MDF_HAS_SUPP_CLAUSE; + check_type_and_type_flags(IT_GID, new->gid_flags); + } - *rule = new; + TAILQ_INSERT_TAIL(&rules->head, new, r_entries); return (0); + einval: + free(new->gids, M_DO); + free(new->uids, M_DO); free(new, M_DO); - *rule = NULL; + TAILQ_FOREACH_SAFE(ie, &gid_list, ie_entries, ie_next) + free(ie, M_DO); + TAILQ_FOREACH_SAFE(ie, &uid_list, ie_entries, ie_next) + free(ie, M_DO); return (EINVAL); } @@ -223,19 +811,25 @@ einval: * representing the rules. On error, the returned value is non-zero and * '*rulesp' is unchanged. If 'string' has length greater or equal to * MAC_RULE_STRING_LEN, ENAMETOOLONG is returned. If it is not in the expected - * format (comma-separated list of clauses of the form "=:", - * where is "uid" or "gid", an UID or GID (depending on ) and - * is "*", "any" or some UID), EINVAL is returned. + * format, EINVAL is returned. + * + * Expected format: A semi-colon-separated list of rules of the form + * ":". The part is of the form "=" where + * is "uid" or "gid", an UID or GID (depending on ) and is + * "*", "any" or a comma-separated list of '=' clauses (see the + * comment for parse_single_rule() for more details). For convenience, empty + * rules are allowed (and do nothing). + * + * Examples: + * - "uid=1001:uid=1010,gid=1010;uid=1002:any" + * - "gid=1010:gid=1011,gid=1012,gid=1013" */ static int parse_rules(const char *const string, struct rules **const rulesp) { const size_t len = strlen(string); - char *copy; - char *p; - char *element; + char *copy, *p, *rule; struct rules *rules; - struct rule *new; int error = 0; if (len >= MAC_RULE_STRING_LEN) @@ -250,15 +844,14 @@ parse_rules(const char *const string, struct rules **const rulesp) MPASS(copy[len] == '\0'); /* Catch some races. */ p = copy; - while ((element = strsep(&p, ",")) != NULL) { - if (element[0] == '\0') + while ((rule = strsep(&p, ";")) != NULL) { + if (rule[0] == '\0') continue; - error = parse_rule_element(element, &new); + error = parse_single_rule(rule, rules); if (error != 0) { toast_rules(rules); goto out; } - TAILQ_INSERT_TAIL(&rules->head, new, r_entries); } *rulesp = rules; @@ -293,8 +886,8 @@ find_rules(struct prison *const pr, struct prison **const aprp) MPASS(ppr != NULL); /* prison0 always has rules. */ cpr = ppr; } - *aprp = cpr; + *aprp = cpr; return (rules); } @@ -634,9 +1227,9 @@ mac_do_destroy(struct mac_policy_conf *mpc) static bool rule_applies(struct ucred *cred, struct rule *r) { - if (r->from_type == RULE_UID && r->from_id == cred->cr_uid) + if (r->from_type == IT_UID && r->from_id == cred->cr_uid) return (true); - if (r->from_type == RULE_GID && groupmember(r->from_id, cred)) + if (r->from_type == IT_GID && groupmember(r->from_id, cred)) return (true); return (false); } @@ -706,11 +1299,12 @@ static int mac_do_check_setuid(struct ucred *cred, uid_t uid) { struct rule *r; - int error; char *fullpath = NULL; char *freebuf = NULL; struct prison *pr; struct rules *rule; + struct id_spec uid_is = {.id = uid}; + int error; if (do_enabled == 0) return (0); @@ -728,29 +1322,17 @@ mac_do_check_setuid(struct ucred *cred, uid_t uid) error = EPERM; rule = find_rules(cred->cr_prison, &pr); TAILQ_FOREACH(r, &rule->head, r_entries) { - if (r->from_type == RULE_UID) { - if (cred->cr_uid != r->from_id) - continue; - if (r->to_type == RULE_ANY) { - error = 0; - break; - } - if (r->to_type == RULE_UID && uid == r->to_id) { - error = 0; - break; - } - } - if (r->from_type == RULE_GID) { - if (!groupmember(r->from_id, cred)) - continue; - if (r->to_type == RULE_ANY) { - error = 0; - break; - } - if (r->to_type == RULE_UID && uid == r->to_id) { - error = 0; - break; - } + if (!((r->from_type == IT_UID && cred->cr_uid == r->from_id) || + (r->from_type == IT_GID && groupmember(r->from_id, cred)))) + continue; + + if (r->uid_flags & MDF_ANY || *** 9 LINES SKIPPED *** From nobody Thu Apr 3 19:32:22 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhR3nRVz5sLyY; Thu, 03 Apr 2025 19:32: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 4ZTBhR0pPXz3Sfv; Thu, 03 Apr 2025 19:32:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q5ZHhxuxhSHbVyx/Vncthp46cLcDqeUR6EMRJjfqHGE=; b=mB+XfNVHeMzreJm0mCyIvyFMaXrRCcRV6eWOqUARYkEtnqUSlBGihfIQ+XFPTEryTVvWCd b47Haig1uet9aElfmIcQQ2t3Ruj6PoEMANT4sC7AbZU8eGWiXUOmL8ZumCXBoRhmjJoDHW tE34ew3SKqJMyv2jPT5iumZKdD1LW28nf2UcsygJkcvfkvfKralptptAbt6w9KUJhFeiEu jk8dbPIPffjnTOBYa2UUBExGxRGI2Sn1jvhMYutBgXp8FN9PKLsS/GcC7E73Qchrb2KMyR CUaR0kpUrK4PMHawzWkf4lO54QxsH9nSgIDzywZbxhq9p7Xa3LZIO7SPMcEJ3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708743; a=rsa-sha256; cv=none; b=bLK+ZZf4gjlnaJnNMGJbaKe9rn+YkWPBQTaS08lpGdUgGdkaXbmtWGhaTTrCcsUeUHEr3X bVIuoaZwPWTm8HEVJtXwONJq9vCcoqnjemHGYOSR7+eqlERbgvguBJyZSxpC42A/PfTQlC jmJjBA+PChyL7ilgOX3yfjTqQO42BDpqam5yBKsEMAY4k5BSr7KZJOsoHhJZVRQY2xz/Vr DFEHbdfA4c8ln/baa57+1v8rHxxsAYBz3qSdtqMlqQ84Mo/K/A2+bn1/LXMGb1pXeHqFDP W6kSQBTLJog5c3tQTx8k9toWep5cfqSJyqqToopihVr2lhAQTnjAm1qg3Srzvw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q5ZHhxuxhSHbVyx/Vncthp46cLcDqeUR6EMRJjfqHGE=; b=RObC26Y0+HLIOUUNE063WC1mxRBUkeakYiboYXYOVeUSfydb6j5ilQi2nipXysrrN1r8y8 bgIsVnlUiUV8HA9SilxIMf2JIjs2Kbq4lBuY5lTxwqRPuABX7nFuljXc3tbzNHwAv/sfi2 AmME6+UOO+gTmAMbM1VTqshyegAyPheh14GLbkCRfsHmM4+zR6mmiPJmav2jv6elJdDFvg 5cAwaFVT0kVFZYBUeZoV3y0U2Fk6Qmgt8Ks6T8PgMVMO1oAxJmSv7B6SSN2YsGiRntLcX6 hGQRvoqFN+YLgEeHC7WwyrWqzf9K1iKe3GTPfkyslF1kM7GcLKbJlHwApoqaZg== 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 4ZTBhR0N23zZt; Thu, 03 Apr 2025 19:32: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 533JWM18040360; Thu, 3 Apr 2025 19:32:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWM6c040357; Thu, 3 Apr 2025 19:32:22 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:22 GMT Message-Id: <202504031932.533JWM6c040357@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 4450915a9bdc - stable/14 - MAC/do: Output errors when parsing rules List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4450915a9bdc58816ea460b4979a90cb9dc25c3b Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=4450915a9bdc58816ea460b4979a90cb9dc25c3b commit 4450915a9bdc58816ea460b4979a90cb9dc25c3b Author: Olivier Certner AuthorDate: 2024-08-07 09:25:00 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:03 +0000 MAC/do: Output errors when parsing rules So that administrators can more easily know what the problem is with the rules they are trying to set. The new sysctl 'security.mac.do.print_parse_error' controls whether trying to set sysctl 'security.mac.do.rules' with invalid rules triggers printing of the error on the system console. Setting jail parameters directlty reports an error to the calling process thanks to the VFS options mechanism used by the jail machinery, so is not controlled by the new sysctl setting. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47617 (cherry picked from commit 87c06b7d026f2beeb3c2f695567ef72aa3a427ea) --- sys/security/mac_do/mac_do.c | 231 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 191 insertions(+), 40 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 92c09d540723..decfb3c756f0 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -23,6 +23,8 @@ #include #include +#include + #include static SYSCTL_NODE(_security_mac, OID_AUTO, do, @@ -32,6 +34,11 @@ static int do_enabled = 1; SYSCTL_INT(_security_mac_do, OID_AUTO, enabled, CTLFLAG_RWTUN, &do_enabled, 0, "Enforce do policy"); +static int print_parse_error = 1; +SYSCTL_INT(_security_mac_do, OID_AUTO, print_parse_error, CTLFLAG_RWTUN, + &print_parse_error, 0, "Print parse errors on setting rules " + "(via sysctl(8))."); + static MALLOC_DEFINE(M_DO, "do_rule", "Rules for mac_do"); #define MAC_RULE_STRING_LEN 1024 @@ -52,6 +59,13 @@ static const char *id_type_to_str[] = { [IT_ANY] = "*", }; +#define PARSE_ERROR_SIZE 256 + +struct parse_error { + size_t pos; + char msg[PARSE_ERROR_SIZE]; +}; + /* * We assume that 'uid_t' and 'gid_t' are aliases to 'u_int' in conversions * required for parsing rules specification strings. @@ -364,8 +378,32 @@ strtoui_strict(const char *const restrict s, const char **const restrict endptr, return (0); } + +static void +make_parse_error(struct parse_error **const parse_error, const size_t pos, + const char *const fmt, ...) +{ + struct parse_error *const err = malloc(sizeof(*err), M_DO, M_WAITOK); + va_list ap; + + err->pos = pos; + va_start(ap, fmt); + vsnprintf(err->msg, PARSE_ERROR_SIZE, fmt, ap); + va_end(ap); + + MPASS(*parse_error == NULL); + *parse_error = err; +} + +static void +free_parse_error(struct parse_error *const parse_error) +{ + free(parse_error, M_DO); +} + static int -parse_id_type(const char *const string, id_type_t *const type) +parse_id_type(const char *const string, id_type_t *const type, + struct parse_error **const parse_error) { /* * Special case for "any", as the canonical form for IT_ANY in @@ -385,6 +423,7 @@ parse_id_type(const char *const string, id_type_t *const type) } *type = IT_INVALID; + make_parse_error(parse_error, 0, "No valid type found."); return (EINVAL); } @@ -426,8 +465,10 @@ has_clauses(const id_nb_t nb, const flags_t type_flags) static int parse_target_clause(char *to, struct rule *const rule, - struct id_list *const uid_list, struct id_list *const gid_list) + struct id_list *const uid_list, struct id_list *const gid_list, + struct parse_error **const parse_error) { + const char *const start = to; char *to_type, *to_id; const char *p; struct id_list *list; @@ -439,21 +480,30 @@ parse_target_clause(char *to, struct rule *const rule, id_type_t type; int error; + MPASS(*parse_error == NULL); MPASS(to != NULL); to_type = strsep(&to, "="); MPASS(to_type != NULL); to_type += parse_gid_flags(to_type, &is.flags, &gid_flags); - error = parse_id_type(to_type, &type); + error = parse_id_type(to_type, &type, parse_error); if (error != 0) goto einval; - if (type != IT_GID && is.flags != 0) + if (type != IT_GID && is.flags != 0) { + make_parse_error(parse_error, to_type - start, + "Expected type 'gid' after flags, not '%s'.", + to_type); goto einval; + } to_id = strsep(&to, ""); switch (type) { case IT_GID: - if (to_id == NULL) + if (to_id == NULL) { + make_parse_error(parse_error, to_type - start, + "No '=' and ID specification after type '%s'.", + to_type); goto einval; + } if (is.flags == 0) { /* No flags: Dealing with a primary group. */ @@ -473,17 +523,33 @@ parse_target_clause(char *to, struct rule *const rule, * supplementary groups). */ if ((is.flags & MDF_PRIMARY) != 0) { - if ((*tflags & MDF_HAS_PRIMARY_CLAUSE) != 0) + if ((*tflags & MDF_HAS_PRIMARY_CLAUSE) != 0) { + make_parse_error(parse_error, + to_id - start, + "'any' specified after another " + "(primary) GID."); goto einval; + } *tflags |= gid_flags | MDF_ANY; } else { /* * If a supplementary group flag was present, it * must be MDF_SUPP_ALLOW ("+"). */ - if ((is.flags & MDF_SUPP_MASK) != MDF_SUPP_ALLOW || - (*tflags & MDF_HAS_SUPP_CLAUSE) != 0) + if ((is.flags & MDF_SUPP_MASK) != MDF_SUPP_ALLOW) { + make_parse_error(parse_error, + to_id - start, + "'any' specified with another " + "flag than '+'."); + goto einval; + } + if ((*tflags & MDF_HAS_SUPP_CLAUSE) != 0) { + make_parse_error(parse_error, + to_id - start, + "'any' with flag '+' specified after " + "another (supplementary) GID."); goto einval; + } *tflags |= gid_flags | MDF_ANY_SUPP; } goto check_type_and_finish; @@ -493,18 +559,32 @@ parse_target_clause(char *to, struct rule *const rule, * category. */ if ((is.flags & MDF_PRIMARY) != 0) { - if ((*tflags & MDF_ANY) != 0) + if ((*tflags & MDF_ANY) != 0) { + make_parse_error(parse_error, + to_id - start, + "Some (primary) GID specified after " + "'any'."); goto einval; + } } else if ((*tflags & MDF_ANY_SUPP) != 0 && - (is.flags & MDF_SUPP_ALLOW) != 0) + (is.flags & MDF_SUPP_ALLOW) != 0) { + make_parse_error(parse_error, + to_id - start, + "Some (supplementary) GID specified after " + "'any' with flag '+'."); goto einval; + } *tflags |= gid_flags; } break; case IT_UID: - if (to_id == NULL) + if (to_id == NULL) { + make_parse_error(parse_error, to_type - start, + "No '=' and ID specification after type '%s'.", + to_type); goto einval; + } list = uid_list; nb = &rule->uids_nb; @@ -513,8 +593,11 @@ parse_target_clause(char *to, struct rule *const rule, /* "*" or "any"? */ if (parse_any(to_id)) { /* There must not be any other clause. */ - if (has_clauses(*nb, *tflags)) + if (has_clauses(*nb, *tflags)) { + make_parse_error(parse_error, to_id - start, + "'any' specified after another UID."); goto einval; + } *tflags |= MDF_ANY; goto check_type_and_finish; } else { @@ -522,22 +605,32 @@ parse_target_clause(char *to, struct rule *const rule, * Check that we haven't already seen "any" for the same * category. */ - if ((*tflags & MDF_ANY) != 0) + if ((*tflags & MDF_ANY) != 0) { + make_parse_error(parse_error, to_id - start, + "Some UID specified after 'any'."); goto einval; + } } break; case IT_ANY: /* No ID allowed. */ - if (to_id != NULL) + if (to_id != NULL) { + make_parse_error(parse_error, to_type - start, + "No '=' and ID allowed after type '%s'.", to_type); goto einval; + } /* * We can't have IT_ANY after any other IT_*, it must be the * only one. */ if (has_clauses(rule->uids_nb, rule->uid_flags) || - has_clauses(rule->gids_nb, rule->gid_flags)) + has_clauses(rule->gids_nb, rule->gid_flags)) { + make_parse_error(parse_error, to_type - start, + "Target clause of type '%s' coming after another " + "clause (must be alone).", to_type); goto einval; + } rule->uid_flags |= MDF_ANY; rule->gid_flags |= MDF_ANY | MDF_ANY_SUPP | MDF_HAS_PRIMARY_CLAUSE | MDF_HAS_SUPP_CLAUSE; @@ -556,8 +649,12 @@ parse_target_clause(char *to, struct rule *const rule, if ((*tflags & MDF_CURRENT) != 0) { /* Duplicate "." . Try to coalesce. */ error = coalesce_id_flags(is.flags, tflags); - if (error != 0) + if (error != 0) { + make_parse_error(parse_error, to_id - start, + "Incompatible flags with prior clause " + "with same target."); goto einval; + } } else *tflags |= MDF_CURRENT | is.flags; goto check_type_and_finish; @@ -565,8 +662,11 @@ parse_target_clause(char *to, struct rule *const rule, /* Parse an ID. */ error = strtoui_strict(to_id, &p, 10, &is.id); - if (error != 0 || *p != '\0') + if (error != 0 || *p != '\0') { + make_parse_error(parse_error, to_id - start, + "Cannot parse a numerical ID (base 10)."); goto einval; + } /* Explicit ID flags. */ if (type == IT_GID && (is.flags & MDF_SUPP_MUST) != 0) @@ -578,18 +678,22 @@ parse_target_clause(char *to, struct rule *const rule, * (using sorted arrays). */ ++*nb; - if (*nb == 0) + if (*nb == 0) { + make_parse_error(parse_error, 0, + "Too many target clauses of type '%s'.", to_type); return (EOVERFLOW); + } ie = malloc(sizeof(*ie), M_DO, M_WAITOK); ie->spec = is; TAILQ_INSERT_TAIL(list, ie, ie_entries); check_type_and_id_spec(type, &is); -finish: - return (0); check_type_and_finish: check_type_and_type_flags(type, *tflags); +finish: return (0); einval: + /* We must have built a parse error on error. */ + MPASS(*parse_error != NULL); return (EINVAL); } @@ -620,7 +724,8 @@ id_spec_cmp(const void *const p1, const void *const p2) */ static int pour_list_into_rule(const id_type_t type, struct id_list *const list, - struct id_spec *const array, id_nb_t *const nb) + struct id_spec *const array, id_nb_t *const nb, + struct parse_error **const parse_error) { struct id_elem *ie, *ie_next; size_t idx = 0; @@ -658,8 +763,12 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, case IT_GID: error = coalesce_id_flags(array[idx].flags, &array[ref_idx].flags); - if (error != 0) + if (error != 0) { + make_parse_error(parse_error, 0, + "Incompatible flags or duplicate " + "GID %u.", id); return (EINVAL); + } check_type_and_id_flags(type, array[ref_idx].flags); break; @@ -670,6 +779,8 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, * of the same UID is an exact redundancy, so * error out. */ + make_parse_error(parse_error, 0, + "Duplicate UID %u.", id); return (EINVAL); default: @@ -697,8 +808,10 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, * explained in functions checking privileges below. */ static int -parse_single_rule(char *rule, struct rules *const rules) +parse_single_rule(char *rule, struct rules *const rules, + struct parse_error **const parse_error) { + const char *const start = rule; const char *from_type, *from_id, *p; char *to_list; struct id_list uid_list, gid_list; @@ -706,7 +819,7 @@ parse_single_rule(char *rule, struct rules *const rules) struct rule *new; int error; - MPASS(rule != NULL); + MPASS(*parse_error == NULL); TAILQ_INIT(&uid_list); TAILQ_INIT(&gid_list); @@ -715,7 +828,7 @@ parse_single_rule(char *rule, struct rules *const rules) from_type = strsep(&rule, "="); MPASS(from_type != NULL); /* Because 'rule' was not NULL. */ - error = parse_id_type(from_type, &new->from_type); + error = parse_id_type(from_type, &new->from_type, parse_error); if (error != 0) goto einval; switch (new->from_type) { @@ -723,16 +836,23 @@ parse_single_rule(char *rule, struct rules *const rules) case IT_GID: break; default: + make_parse_error(parse_error, 0, "Type '%s' not allowed in " + "the \"from\" part of rules."); goto einval; } from_id = strsep(&rule, ":"); - if (is_null_or_empty(from_id)) + if (is_null_or_empty(from_id)) { + make_parse_error(parse_error, 0, "No ID specified."); goto einval; + } error = strtoui_strict(from_id, &p, 10, &new->from_id); - if (error != 0 || *p != '\0') + if (error != 0 || *p != '\0') { + make_parse_error(parse_error, from_id - start, + "Cannot parse a numerical ID (base 10)."); goto einval; + } /* * We will now parse the "to" list. @@ -747,12 +867,17 @@ parse_single_rule(char *rule, struct rules *const rules) * O(log(n)) instead of linearly. */ to_list = strsep(&rule, ","); - if (to_list == NULL) + if (to_list == NULL) { + make_parse_error(parse_error, 0, "No target list."); goto einval; + } do { - error = parse_target_clause(to_list, new, &uid_list, &gid_list); - if (error != 0) + error = parse_target_clause(to_list, new, &uid_list, &gid_list, + parse_error); + if (error != 0) { + (*parse_error)->pos += to_list - start; goto einval; + } to_list = strsep(&rule, ","); } while (to_list != NULL); @@ -761,7 +886,7 @@ parse_single_rule(char *rule, struct rules *const rules) new->uids = malloc(sizeof(*new->uids) * new->uids_nb, M_DO, M_WAITOK); error = pour_list_into_rule(IT_UID, &uid_list, new->uids, - &new->uids_nb); + &new->uids_nb, parse_error); if (error != 0) goto einval; } @@ -777,7 +902,7 @@ parse_single_rule(char *rule, struct rules *const rules) new->gids = malloc(sizeof(*new->gids) * new->gids_nb, M_DO, M_WAITOK); error = pour_list_into_rule(IT_GID, &gid_list, new->gids, - &new->gids_nb); + &new->gids_nb, parse_error); if (error != 0) goto einval; } @@ -801,6 +926,7 @@ einval: free(ie, M_DO); TAILQ_FOREACH_SAFE(ie, &uid_list, ie_entries, ie_next) free(ie, M_DO); + MPASS(*parse_error != NULL); return (EINVAL); } @@ -811,7 +937,9 @@ einval: * representing the rules. On error, the returned value is non-zero and * '*rulesp' is unchanged. If 'string' has length greater or equal to * MAC_RULE_STRING_LEN, ENAMETOOLONG is returned. If it is not in the expected - * format, EINVAL is returned. + * format, EINVAL is returned. If an error is returned, '*parse_error' is set + * to point to a 'struct parse_error' giving an error message for the problem, + * else '*parse_error' is set to NULL. * * Expected format: A semi-colon-separated list of rules of the form * ":". The part is of the form "=" where @@ -825,15 +953,22 @@ einval: * - "gid=1010:gid=1011,gid=1012,gid=1013" */ static int -parse_rules(const char *const string, struct rules **const rulesp) +parse_rules(const char *const string, struct rules **const rulesp, + struct parse_error **const parse_error) { const size_t len = strlen(string); char *copy, *p, *rule; struct rules *rules; int error = 0; - if (len >= MAC_RULE_STRING_LEN) + *parse_error = NULL; + + if (len >= MAC_RULE_STRING_LEN) { + make_parse_error(parse_error, 0, + "Rule specification string is too long (%zu, max %zu)", + len, MAC_RULE_STRING_LEN - 1); return (ENAMETOOLONG); + } rules = alloc_rules(); bcopy(string, rules->string, len + 1); @@ -847,8 +982,9 @@ parse_rules(const char *const string, struct rules **const rulesp) while ((rule = strsep(&p, ";")) != NULL) { if (rule[0] == '\0') continue; - error = parse_single_rule(rule, rules); + error = parse_single_rule(rule, rules, parse_error); if (error != 0) { + (*parse_error)->pos += rule - copy; toast_rules(rules); goto out; } @@ -957,12 +1093,13 @@ set_empty_rules(struct prison *const pr) * Returns the same error code as parse_rules() (which see). */ static int -parse_and_set_rules(struct prison *const pr, const char *rules_string) +parse_and_set_rules(struct prison *const pr, const char *rules_string, + struct parse_error **const parse_error) { struct rules *rules; int error; - error = parse_rules(rules_string, &rules); + error = parse_rules(rules_string, &rules, parse_error); if (error != 0) return (error); set_rules(pr, rules); @@ -976,6 +1113,7 @@ mac_do_sysctl_rules(SYSCTL_HANDLER_ARGS) struct prison *const td_pr = req->td->td_ucred->cr_prison; struct prison *pr; struct rules *rules; + struct parse_error *parse_error; int error; rules = find_rules(td_pr, &pr); @@ -987,7 +1125,13 @@ mac_do_sysctl_rules(SYSCTL_HANDLER_ARGS) goto out; /* Set our prison's rules, not that of the jail we inherited from. */ - error = parse_and_set_rules(td_pr, buf); + error = parse_and_set_rules(td_pr, buf, &parse_error); + if (error != 0) { + if (print_parse_error) + printf("MAC/do: Parse error at index %zu: %s\n", + parse_error->pos, parse_error->msg); + free_parse_error(parse_error); + } out: free(buf, M_DO); return (error); @@ -1137,6 +1281,7 @@ mac_do_jail_set(void *obj, void *data) struct prison *pr = obj; struct vfsoptlist *opts = data; char *rules_string; + struct parse_error *parse_error; int error, jsys; /* @@ -1182,7 +1327,13 @@ mac_do_jail_set(void *obj, void *data) break; case JAIL_SYS_DISABLE: case JAIL_SYS_NEW: - error = parse_and_set_rules(pr, rules_string); + error = parse_and_set_rules(pr, rules_string, &parse_error); + if (error != 0) { + vfs_opterror(opts, + "MAC/do: Parse error at index %zu: %s\n", + parse_error->pos, parse_error->msg); + free_parse_error(parse_error); + } break; default: __assert_unreachable(); From nobody Thu Apr 3 19:32:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhS4dGDz5sMFj; Thu, 03 Apr 2025 19:32: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 4ZTBhS1S3Qz3Sj5; Thu, 03 Apr 2025 19:32:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708744; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wdfN/4mmGZmeBWkKZvRkY1XkKuboz1ffkACjJK3F+Po=; b=d+d3qpuOj69QFsZHofFznebaPZbAhzEg7hz9sRq79CB3v7pKPS9+qnN+BefTnBOLmC2QTF 4VXKvUyeKne7iUTT+urzBojQmpM6STsUiTsWLqfHgRRPfnv6QdNmyYwKYY3Ni3gQaVnESg 3SCNzqJb8HsOoGTLEqN3SEZFrn12I4Um/2UhBdXBcm4dG8qIs1w0422Le3WEPkKncestl8 Iavuk2rdtBPL53nqYvBFIW+WS4VDkr4x9nRvhMjqcqosuDw4BNYCkCJPA7auDrjD/2VYBw rXDU96o5vat8sXI20/NcpqymcOZmA88284I5sLpgUDWQYQV55tJvMJsEas0dEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708744; a=rsa-sha256; cv=none; b=L7+E+2G/UR10sbNhSszRXQ3tvk5MXXGPOmLbGAwm6QhZvV4+r2FnEkh+5fuIwU8xEXfy2v vQrZfwVSRx0fF9an1A2N/eyE1LC2uXg1VEd9LhRWUNI+BtBzFXaVV+oIhnpkb3XSupTzXd 8mQAO3odAmRWDykLVAsnCDycLei6Yt6DsEUIfk/L6BhSBGopqBRSKa52IonJL+4+Iw2SWe pNy1kN0KfkWx48YHRzwt46DyEhqy5JhhdjVwgSZtqGVXG8YnPJvPO/xJY0t0cmW+pWzFi6 UOLS/uDSzvcGpFHmjvASW4Uz9fyCmWA2BfNVEFvaXDEh/X/D+7t+CQDClg33Mw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708744; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wdfN/4mmGZmeBWkKZvRkY1XkKuboz1ffkACjJK3F+Po=; b=J695lmnYl8NPVj9npSPnphm7cuXeQLdr9K+KVFBou/TGz9x0K7CR+k6o/Fhs+tyKaL6TEh 53jfU1ddeP1mjG5DuIcKJORoNSR3npn+vKdSSmBFVPY1EUaVKJqPFyzSfIQeqcDqWS4iHt CvZYl6xwdzoqotEv43p8D0+l8oMRclbWaRVyb2iKgsVqkkZi3nLETx7kgUcgrjARB5skcM 6/EU//XLyOx6WTO53VyMiFpCjb28XkXZR+HXmgMFMvf76hiHfNSPRIwyRSQpjNwALUZglu 4MSMM/f4ddkVXd9bSEnkCiKrSeJunBgVwF9DRU2KieaygSmODPa13GNkBHJw2g== 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 4ZTBhS0y1JzkR; Thu, 03 Apr 2025 19:32: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 533JWOuZ040402; Thu, 3 Apr 2025 19:32:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWOmF040398; Thu, 3 Apr 2025 19:32:24 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:24 GMT Message-Id: <202504031932.533JWOmF040398@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: c1d7552dddb5 - stable/14 - New setcred() system call and associated MAC hooks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: c1d7552dddb5276c8d1cfe2b8c533646164e2f7a Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=c1d7552dddb5276c8d1cfe2b8c533646164e2f7a commit c1d7552dddb5276c8d1cfe2b8c533646164e2f7a Author: Olivier Certner AuthorDate: 2024-07-18 20:47:43 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:03 +0000 New setcred() system call and associated MAC hooks This new system call allows to set all necessary credentials of a process in one go: Effective, real and saved UIDs, effective, real and saved GIDs, supplementary groups and the MAC label. Its advantage over standard credential-setting system calls (such as setuid(), seteuid(), etc.) is that it enables MAC modules, such as MAC/do, to restrict the set of credentials some process may gain in a fine-grained manner. Traditionally, credential changes rely on setuid binaries that call multiple credential system calls and in a specific order (setuid() must be last, so as to remain root for all other credential-setting calls, which would otherwise fail with insufficient privileges). This piecewise approach causes the process to transiently hold credentials that are neither the original nor the final ones. For the kernel to enforce that only certain transitions of credentials are allowed, either these possibly non-compliant transient states have to disappear (by setting all relevant attributes in one go), or the kernel must delay setting or checking the new credentials. Delaying setting credentials could be done, e.g., by having some mode where the standard system calls contribute to building new credentials but without committing them. It could be started and ended by a special system call. Delaying checking could mean that, e.g., the kernel only verifies the credentials transition at the next non-credential-setting system call (we just mention this possibility for completeness, but are certainly not endorsing it). We chose the simpler approach of a new system call, as we don't expect the set of credentials one can set to change often. It has the advantages that the traditional system calls' code doesn't have to be changed and that we can establish a special MAC protocol for it, by having some cleanup function called just before returning (this is a requirement for MAC/do), without disturbing the existing ones. The mac_cred_check_setcred() hook is passed the flags received by setcred() (including the version) and both the old and new kernel's 'struct ucred' instead of 'struct setcred' as this should simplify evolving existing hooks as the 'struct setcred' structure evolves. The mac_cred_setcred_enter() and mac_cred_setcred_exit() hooks are always called by pairs around potential calls to mac_cred_check_setcred(). They allow MAC modules to allocate/free data they may need in their mac_cred_check_setcred() hook, as the latter is called under the current process' lock, rendering sleepable allocations impossible. MAC/do is going to leverage these in a subsequent commit. A scheme where mac_cred_check_setcred() could return ERESTART was considered but is incompatible with proper composition of MAC modules. While here, add missing includes and declarations for standalone inclusion of both from kernel and userspace (for the latter, it has been working thanks to already including ). Reviewed by: brooks Approved by: markj (mentor) Relnotes: yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47618 (cherry picked from commit ddb3eb4efe55e57c206f3534263c77b837aff1dc) --- lib/libc/sys/Symbol.map | 1 + sys/bsm/audit_kevents.h | 1 + sys/compat/freebsd32/freebsd32_misc.c | 9 + sys/compat/freebsd32/freebsd32_proto.h | 7 + sys/compat/freebsd32/freebsd32_syscall.h | 3 +- sys/compat/freebsd32/freebsd32_syscalls.c | 2 + sys/compat/freebsd32/freebsd32_sysent.c | 2 + sys/compat/freebsd32/freebsd32_systrace_args.c | 30 ++ sys/kern/init_sysent.c | 2 + sys/kern/kern_jail.c | 1 + sys/kern/kern_prot.c | 373 ++++++++++++++++++++++++- sys/kern/syscalls.c | 2 + sys/kern/syscalls.master | 8 + sys/kern/systrace_args.c | 30 ++ sys/security/mac/mac_cred.c | 47 ++++ sys/security/mac/mac_framework.h | 6 +- sys/security/mac/mac_policy.h | 10 +- sys/security/mac_stub/mac_stub.c | 20 ++ sys/security/mac_test/mac_test.c | 29 ++ sys/sys/priv.h | 3 +- sys/sys/syscall.h | 3 +- sys/sys/syscall.mk | 3 +- sys/sys/syscallsubr.h | 2 + sys/sys/sysproto.h | 7 + sys/sys/ucred.h | 77 ++++- 25 files changed, 662 insertions(+), 16 deletions(-) diff --git a/lib/libc/sys/Symbol.map b/lib/libc/sys/Symbol.map index d6126fd952fd..506d88d46c34 100644 --- a/lib/libc/sys/Symbol.map +++ b/lib/libc/sys/Symbol.map @@ -427,6 +427,7 @@ FBSD_1.7 { FBSD_1.8 { getrlimitusage; kcmp; + setcred; }; FBSDprivate_1.0 { diff --git a/sys/bsm/audit_kevents.h b/sys/bsm/audit_kevents.h index d06381837aad..0f110d5f9ddd 100644 --- a/sys/bsm/audit_kevents.h +++ b/sys/bsm/audit_kevents.h @@ -662,6 +662,7 @@ #define AUE_AIO_READV 43268 /* FreeBSD-specific. */ #define AUE_FSPACECTL 43269 /* FreeBSD-specific. */ #define AUE_TIMERFD 43270 /* FreeBSD/Linux. */ +#define AUE_SETCRED 43271 /* FreeBSD-specific. */ /* * Darwin BSM uses a number of AUE_O_* definitions, which are aliased to the diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index c4872373735c..7d945cfb6de5 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -86,6 +86,7 @@ #include #include #include +#include #include #include #include @@ -115,6 +116,7 @@ #endif #include +#include #include #include @@ -4172,3 +4174,10 @@ ofreebsd32_sethostid(struct thread *td, struct ofreebsd32_sethostid_args *uap) sizeof(hostid), NULL, 0)); } #endif + +int +freebsd32_setcred(struct thread *td, struct freebsd32_setcred_args *uap) +{ + /* Last argument is 'is_32bit'. */ + return (user_setcred(td, uap->flags, uap->wcred, uap->size, true)); +} diff --git a/sys/compat/freebsd32/freebsd32_proto.h b/sys/compat/freebsd32/freebsd32_proto.h index 50448b6dce16..ea72f0e57acd 100644 --- a/sys/compat/freebsd32/freebsd32_proto.h +++ b/sys/compat/freebsd32/freebsd32_proto.h @@ -694,6 +694,11 @@ struct freebsd32_timerfd_settime_args { char new_value_l_[PADL_(const struct itimerspec32 *)]; const struct itimerspec32 * new_value; char new_value_r_[PADR_(const struct itimerspec32 *)]; char old_value_l_[PADL_(struct itimerspec32 *)]; struct itimerspec32 * old_value; char old_value_r_[PADR_(struct itimerspec32 *)]; }; +struct freebsd32_setcred_args { + char flags_l_[PADL_(u_int)]; u_int flags; char flags_r_[PADR_(u_int)]; + char wcred_l_[PADL_(const struct setcred32 *)]; const struct setcred32 * wcred; char wcred_r_[PADR_(const struct setcred32 *)]; + char size_l_[PADL_(size_t)]; size_t size; char size_r_[PADR_(size_t)]; +}; int freebsd32_wait4(struct thread *, struct freebsd32_wait4_args *); int freebsd32_ptrace(struct thread *, struct freebsd32_ptrace_args *); int freebsd32_recvmsg(struct thread *, struct freebsd32_recvmsg_args *); @@ -811,6 +816,7 @@ int freebsd32_aio_writev(struct thread *, struct freebsd32_aio_writev_args *); int freebsd32_aio_readv(struct thread *, struct freebsd32_aio_readv_args *); int freebsd32_timerfd_gettime(struct thread *, struct freebsd32_timerfd_gettime_args *); int freebsd32_timerfd_settime(struct thread *, struct freebsd32_timerfd_settime_args *); +int freebsd32_setcred(struct thread *, struct freebsd32_setcred_args *); #ifdef COMPAT_43 @@ -1306,6 +1312,7 @@ int freebsd11_freebsd32_fstatat(struct thread *, struct freebsd11_freebsd32_fsta #define FREEBSD32_SYS_AUE_freebsd32_aio_readv AUE_AIO_READV #define FREEBSD32_SYS_AUE_freebsd32_timerfd_gettime AUE_TIMERFD #define FREEBSD32_SYS_AUE_freebsd32_timerfd_settime AUE_TIMERFD +#define FREEBSD32_SYS_AUE_freebsd32_setcred AUE_SETCRED #undef PAD_ #undef PADL_ diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h index 01c1a5c515d8..6aef20fb0231 100644 --- a/sys/compat/freebsd32/freebsd32_syscall.h +++ b/sys/compat/freebsd32/freebsd32_syscall.h @@ -508,4 +508,5 @@ #define FREEBSD32_SYS_freebsd32_timerfd_settime 587 #define FREEBSD32_SYS_kcmp 588 #define FREEBSD32_SYS_getrlimitusage 589 -#define FREEBSD32_SYS_MAXSYSCALL 590 +#define FREEBSD32_SYS_freebsd32_setcred 591 +#define FREEBSD32_SYS_MAXSYSCALL 592 diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c index 6d50f7c03626..1501c0a78f0e 100644 --- a/sys/compat/freebsd32/freebsd32_syscalls.c +++ b/sys/compat/freebsd32/freebsd32_syscalls.c @@ -595,4 +595,6 @@ const char *freebsd32_syscallnames[] = { "freebsd32_timerfd_settime", /* 587 = freebsd32_timerfd_settime */ "kcmp", /* 588 = kcmp */ "getrlimitusage", /* 589 = getrlimitusage */ + "#590", /* 590 = fchroot */ + "freebsd32_setcred", /* 591 = freebsd32_setcred */ }; diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c index 3d4916427475..5c5cbe967126 100644 --- a/sys/compat/freebsd32/freebsd32_sysent.c +++ b/sys/compat/freebsd32/freebsd32_sysent.c @@ -651,4 +651,6 @@ struct sysent freebsd32_sysent[] = { { .sy_narg = AS(freebsd32_timerfd_settime_args), .sy_call = (sy_call_t *)freebsd32_timerfd_settime, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 587 = freebsd32_timerfd_settime */ { .sy_narg = AS(kcmp_args), .sy_call = (sy_call_t *)sys_kcmp, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 588 = kcmp */ { .sy_narg = AS(getrlimitusage_args), .sy_call = (sy_call_t *)sys_getrlimitusage, .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 589 = getrlimitusage */ + { .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT }, /* 590 = fchroot */ + { .sy_narg = AS(freebsd32_setcred_args), .sy_call = (sy_call_t *)freebsd32_setcred, .sy_auevent = AUE_SETCRED, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 591 = freebsd32_setcred */ }; diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c index 8f7d9edadfee..c5b16c12edd2 100644 --- a/sys/compat/freebsd32/freebsd32_systrace_args.c +++ b/sys/compat/freebsd32/freebsd32_systrace_args.c @@ -3391,6 +3391,15 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 3; break; } + /* freebsd32_setcred */ + case 591: { + struct freebsd32_setcred_args *p = params; + uarg[a++] = p->flags; /* u_int */ + uarg[a++] = (intptr_t)p->wcred; /* const struct setcred32 * */ + uarg[a++] = p->size; /* size_t */ + *n_args = 3; + break; + } default: *n_args = 0; break; @@ -9159,6 +9168,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* freebsd32_setcred */ + case 591: + switch (ndx) { + case 0: + p = "u_int"; + break; + case 1: + p = "userland const struct setcred32 *"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; default: break; }; @@ -11057,6 +11082,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* freebsd32_setcred */ + case 591: + if (ndx == 0 || ndx == 1) + p = "int"; + break; default: break; }; diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c index e740d6ef1b72..fa2660165590 100644 --- a/sys/kern/init_sysent.c +++ b/sys/kern/init_sysent.c @@ -650,4 +650,6 @@ struct sysent sysent[] = { { .sy_narg = AS(timerfd_settime_args), .sy_call = (sy_call_t *)sys_timerfd_settime, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 587 = timerfd_settime */ { .sy_narg = AS(kcmp_args), .sy_call = (sy_call_t *)sys_kcmp, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 588 = kcmp */ { .sy_narg = AS(getrlimitusage_args), .sy_call = (sy_call_t *)sys_getrlimitusage, .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 589 = getrlimitusage */ + { .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT }, /* 590 = fchroot */ + { .sy_narg = AS(setcred_args), .sy_call = (sy_call_t *)sys_setcred, .sy_auevent = AUE_SETCRED, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 591 = setcred */ }; diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 103b44cc00b9..99cf8f731c48 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -3939,6 +3939,7 @@ prison_priv_check(struct ucred *cred, int priv) * Allow jailed processes to manipulate process UNIX * credentials in any way they see fit. */ + case PRIV_CRED_SETCRED: case PRIV_CRED_SETUID: case PRIV_CRED_SETEUID: case PRIV_CRED_SETGID: diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 3f1d28376d49..31652a338e8e 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -49,6 +49,7 @@ #include #include +#include #include #include #include @@ -75,6 +76,10 @@ #include #include +#ifdef MAC +#include +#endif + #ifdef REGRESSION FEATURE(regression, "Kernel support for interfaces necessary for regression testing (SECURITY RISK!)"); @@ -484,6 +489,365 @@ done: return (error); } +static int +gidp_cmp(const void *p1, const void *p2) +{ + const gid_t g1 = *(const gid_t *)p1; + const gid_t g2 = *(const gid_t *)p2; + + return ((g1 > g2) - (g1 < g2)); +} + +/* + * Final storage for groups (including the effective GID) will be returned via + * 'groups'. '*groups' must be NULL on input, and if not equal to 'smallgroups' + * on output, must be freed (M_TEMP) *even if* an error is returned. + */ +static int +kern_setcred_copyin_supp_groups(struct setcred *const wcred, + const u_int flags, gid_t *const smallgroups, gid_t **const groups) +{ + MPASS(*groups == NULL); + + if (flags & SETCREDF_SUPP_GROUPS) { + int error; + + /* + * Check for the limit for number of groups right now in order + * to limit the amount of bytes to copy. + */ + if (wcred->sc_supp_groups_nb > ngroups_max) + return (EINVAL); + + /* + * Since we are going to be copying the supplementary groups + * from userland, make room also for the effective GID right + * now, to avoid having to allocate and copy again the + * supplementary groups. + */ + *groups = wcred->sc_supp_groups_nb < CRED_SMALLGROUPS_NB ? + smallgroups : malloc((wcred->sc_supp_groups_nb + 1) * + sizeof(*groups), M_TEMP, M_WAITOK); + + error = copyin(wcred->sc_supp_groups, *groups + 1, + wcred->sc_supp_groups_nb * sizeof(*groups)); + if (error != 0) + return (error); + wcred->sc_supp_groups = *groups + 1; + } else { + wcred->sc_supp_groups_nb = 0; + wcred->sc_supp_groups = NULL; + } + + return (0); +} + +int +user_setcred(struct thread *td, const u_int flags, + const void *const uwcred, const size_t size, bool is_32bit) +{ + struct setcred wcred; +#ifdef MAC + struct mac mac; + /* Pointer to 'struct mac' or 'struct mac32'. */ + void *umac; +#endif + gid_t smallgroups[CRED_SMALLGROUPS_NB]; + gid_t *groups = NULL; + int error; + + /* + * As the only point of this wrapper function is to copyin() from + * userland, we only interpret the data pieces we need to perform this + * operation and defer further sanity checks to kern_setcred(), except + * that we redundantly check here that no unknown flags have been + * passed. + */ + if ((flags & ~SETCREDF_MASK) != 0) + return (EINVAL); + +#ifdef COMPAT_FREEBSD32 + if (is_32bit) { + struct setcred32 wcred32; + + if (size != sizeof(wcred32)) + return (EINVAL); + error = copyin(uwcred, &wcred32, sizeof(wcred32)); + if (error != 0) + return (error); + /* These fields have exactly the same sizes and positions. */ + memcpy(&wcred, &wcred32, &wcred32.setcred32_copy_end - + &wcred32.setcred32_copy_start); + /* Remaining fields are pointers and need PTRIN*(). */ + PTRIN_CP(wcred32, wcred, sc_supp_groups); + PTRIN_CP(wcred32, wcred, sc_label); + } else +#endif /* COMPAT_FREEBSD32 */ + { + if (size != sizeof(wcred)) + return (EINVAL); + error = copyin(uwcred, &wcred, sizeof(wcred)); + if (error != 0) + return (error); + } +#ifdef MAC + umac = wcred.sc_label; +#endif + /* Also done on !MAC as a defensive measure. */ + wcred.sc_label = NULL; + + /* + * Copy supplementary groups as needed. There is no specific + * alternative for 32-bit compatibility as 'gid_t' has the same size + * everywhere. + */ + error = kern_setcred_copyin_supp_groups(&wcred, flags, smallgroups, + &groups); + if (error != 0) + goto free_groups; + +#ifdef MAC + if ((flags & SETCREDF_MAC_LABEL) != 0) { +#ifdef COMPAT_FREEBSD32 + if (is_32bit) + error = mac_label_copyin32(umac, &mac, NULL); + else +#endif + error = mac_label_copyin(umac, &mac, NULL); + if (error != 0) + goto free_groups; + wcred.sc_label = &mac; + } +#endif + + error = kern_setcred(td, flags, &wcred, groups); + +#ifdef MAC + if (wcred.sc_label != NULL) + free_copied_label(wcred.sc_label); +#endif + +free_groups: + if (groups != smallgroups) + free(groups, M_TEMP); + + return (error); +} + +#ifndef _SYS_SYSPROTO_H_ +struct setcred_args { + u_int flags; /* Flags. */ + const struct setcred *wcred; + size_t size; /* Passed 'setcred' structure length. */ +}; +#endif +/* ARGSUSED */ +int +sys_setcred(struct thread *td, struct setcred_args *uap) +{ + return (user_setcred(td, uap->flags, uap->wcred, uap->size, false)); +} + +/* + * CAUTION: This function normalizes groups in 'wcred'. + * + * If 'preallocated_groups' is non-NULL, it must be an already allocated array + * of size 'wcred->sc_supp_groups_nb + 1', with the supplementary groups + * starting at index 1, and 'wcred->sc_supp_groups' then must point to the first + * supplementary group. + */ +int +kern_setcred(struct thread *const td, const u_int flags, + struct setcred *const wcred, gid_t *preallocated_groups) +{ + struct proc *const p = td->td_proc; + struct ucred *new_cred, *old_cred, *to_free_cred; + struct uidinfo *uip = NULL, *ruip = NULL; +#ifdef MAC + void *mac_set_proc_data = NULL; + bool proc_label_set = false; +#endif + gid_t *groups = NULL; + gid_t smallgroups[CRED_SMALLGROUPS_NB]; + int error; + bool cred_set; + + /* Bail out on unrecognized flags. */ + if (flags & ~SETCREDF_MASK) + return (EINVAL); + + /* + * Part 1: We allocate and perform preparatory operations with no locks. + */ + + if (flags & SETCREDF_SUPP_GROUPS) { + if (wcred->sc_supp_groups_nb > ngroups_max) + return (EINVAL); + if (preallocated_groups != NULL) { + groups = preallocated_groups; + MPASS(preallocated_groups + 1 == wcred->sc_supp_groups); + } else { + groups = wcred->sc_supp_groups_nb < CRED_SMALLGROUPS_NB ? + smallgroups : + malloc((wcred->sc_supp_groups_nb + 1) * + sizeof(*groups), M_TEMP, M_WAITOK); + memcpy(groups + 1, wcred->sc_supp_groups, + wcred->sc_supp_groups_nb * sizeof(*groups)); + } + } + + if (flags & SETCREDF_MAC_LABEL) { +#ifdef MAC + error = mac_set_proc_prepare(td, wcred->sc_label, + &mac_set_proc_data); + if (error != 0) + goto free_groups; +#else + error = ENOTSUP; + goto free_groups; +#endif + } + + if (flags & SETCREDF_UID) { + AUDIT_ARG_EUID(wcred->sc_uid); + uip = uifind(wcred->sc_uid); + } + if (flags & SETCREDF_RUID) { + AUDIT_ARG_RUID(wcred->sc_ruid); + ruip = uifind(wcred->sc_ruid); + } + if (flags & SETCREDF_SVUID) + AUDIT_ARG_SUID(wcred->sc_svuid); + + if (flags & SETCREDF_GID) + AUDIT_ARG_EGID(wcred->sc_gid); + if (flags & SETCREDF_RGID) + AUDIT_ARG_RGID(wcred->sc_rgid); + if (flags & SETCREDF_SVGID) + AUDIT_ARG_SGID(wcred->sc_svgid); + if (flags & SETCREDF_SUPP_GROUPS) { + int ngrp = wcred->sc_supp_groups_nb; + + /* + * Output the raw supplementary groups array for better + * traceability. + */ + AUDIT_ARG_GROUPSET(groups + 1, ngrp); + ++ngrp; + groups_normalize(&ngrp, groups); + wcred->sc_supp_groups_nb = ngrp - 1; + } + + /* + * We first completely build the new credentials and only then pass them + * to MAC along with the old ones so that modules can check whether the + * requested transition is allowed. + */ + new_cred = crget(); + to_free_cred = new_cred; + if (flags & SETCREDF_SUPP_GROUPS) + crextend(new_cred, wcred->sc_supp_groups_nb + 1); + +#ifdef MAC + mac_cred_setcred_enter(); +#endif + + /* + * Part 2: We grab the process lock as to have a stable view of its + * current credentials, and prepare a copy of them with the requested + * changes applied under that lock. + */ + + PROC_LOCK(p); + old_cred = crcopysafe(p, new_cred); + + /* + * Change user IDs. + */ + if (flags & SETCREDF_UID) + change_euid(new_cred, uip); + if (flags & SETCREDF_RUID) + change_ruid(new_cred, ruip); + if (flags & SETCREDF_SVUID) + change_svuid(new_cred, wcred->sc_svuid); + + /* + * Change groups. + * + * crsetgroups_internal() changes both the effective and supplementary + * ones. + */ + if (flags & SETCREDF_SUPP_GROUPS) { + groups[0] = flags & SETCREDF_GID ? wcred->sc_gid : + new_cred->cr_gid; + crsetgroups_internal(new_cred, wcred->sc_supp_groups_nb + 1, + groups); + } else if (flags & SETCREDF_GID) + change_egid(new_cred, wcred->sc_gid); + if (flags & SETCREDF_RGID) + change_rgid(new_cred, wcred->sc_rgid); + if (flags & SETCREDF_SVGID) + change_svgid(new_cred, wcred->sc_svgid); + +#ifdef MAC + /* + * Change the MAC label. + */ + if (flags & SETCREDF_MAC_LABEL) { + error = mac_set_proc_core(td, new_cred, mac_set_proc_data); + if (error != 0) + goto unlock_finish; + proc_label_set = true; + } + + /* + * MAC security modules checks. + */ + error = mac_cred_check_setcred(flags, old_cred, new_cred); + if (error != 0) + goto unlock_finish; +#endif + /* + * Privilege check. + */ + error = priv_check_cred(old_cred, PRIV_CRED_SETCRED); + if (error != 0) + goto unlock_finish; + + /* + * Set the new credentials, noting that they have changed. + */ + cred_set = proc_set_cred_enforce_proc_lim(p, new_cred); + if (cred_set) { + setsugid(p); + to_free_cred = old_cred; + MPASS(error == 0); + } else + error = EAGAIN; + +unlock_finish: + PROC_UNLOCK(p); + /* + * Part 3: After releasing the process lock, we perform cleanups and + * finishing operations. + */ + +#ifdef MAC + if (mac_set_proc_data != NULL) + mac_set_proc_finish(td, proc_label_set, mac_set_proc_data); + mac_cred_setcred_exit(); +#endif + crfree(to_free_cred); + if (uip != NULL) + uifree(uip); + if (ruip != NULL) + uifree(ruip); +free_groups: + if (groups != preallocated_groups && groups != smallgroups) + free(groups, M_TEMP); /* Deals with 'groups' being NULL. */ + return (error); +} + /* * Use the clause in B.4.2.2 that allows setuid/setgid to be 4.2/4.3BSD * compatible. It says that setting the uid/gid to euid/egid is a special @@ -859,15 +1223,6 @@ sys_setgroups(struct thread *td, struct setgroups_args *uap) return (error); } -static int -gidp_cmp(const void *p1, const void *p2) -{ - const gid_t g1 = *(const gid_t *)p1; - const gid_t g2 = *(const gid_t *)p2; - - return ((g1 > g2) - (g1 < g2)); -} - /* * CAUTION: This function normalizes 'groups', possibly also changing the value * of '*ngrpp' as a consequence. diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c index f21cdd66b3cf..ac2984e339f2 100644 --- a/sys/kern/syscalls.c +++ b/sys/kern/syscalls.c @@ -595,4 +595,6 @@ const char *syscallnames[] = { "timerfd_settime", /* 587 = timerfd_settime */ "kcmp", /* 588 = kcmp */ "getrlimitusage", /* 589 = getrlimitusage */ + "#590", /* 590 = fchroot */ + "setcred", /* 591 = setcred */ }; diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 825ab1a4536c..a52f4bd88b85 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -3354,5 +3354,13 @@ _Out_ rlim_t *res ); } +590 AUE_NULL UNIMPL fchroot +591 AUE_SETCRED STD|CAPENABLED { + int setcred( + u_int flags, + _In_reads_bytes_(size) _Contains_ptr_ const struct setcred *wcred, + size_t size + ); + } ; vim: syntax=off diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c index dd2f7a43ee78..dca61ab5fcad 100644 --- a/sys/kern/systrace_args.c +++ b/sys/kern/systrace_args.c @@ -3478,6 +3478,15 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 3; break; } + /* setcred */ + case 591: { + struct setcred_args *p = params; + uarg[a++] = p->flags; /* u_int */ + uarg[a++] = (intptr_t)p->wcred; /* const struct setcred * */ + uarg[a++] = p->size; /* size_t */ + *n_args = 3; + break; + } default: *n_args = 0; break; @@ -9304,6 +9313,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* setcred */ + case 591: + switch (ndx) { + case 0: + p = "u_int"; + break; + case 1: + p = "userland const struct setcred *"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; default: break; }; @@ -11292,6 +11317,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* setcred */ + case 591: + if (ndx == 0 || ndx == 1) + p = "int"; + break; default: break; }; diff --git a/sys/security/mac/mac_cred.c b/sys/security/mac/mac_cred.c index 304265b783f1..5066de277176 100644 --- a/sys/security/mac/mac_cred.c +++ b/sys/security/mac/mac_cred.c @@ -209,6 +209,53 @@ mac_cred_check_relabel(struct ucred *cred, struct label *newlabel) return (error); } +/* + * Entry hook for setcred(). + * + * Called with no lock held by setcred() so that MAC modules may allocate memory + * in preparation for checking privileges. A call to this hook is always + * followed by a matching call to mac_cred_setcred_exit(). Between these two, + * setcred() may or may not call mac_cred_check_setcred(). + */ +void +mac_cred_setcred_enter(void) +{ + MAC_POLICY_PERFORM_NOSLEEP(cred_setcred_enter); +} + +MAC_CHECK_PROBE_DEFINE3(cred_check_setcred, "unsigned int", "struct ucred *", + "struct ucred *"); + +/* + * Check hook for setcred(). + * + * When called, the current process' lock is held. It thus cannot perform + * memory allocations, which must be done in advance in + * mac_cred_setcred_enter(). It *MUST NOT* tamper with the process' lock. + */ +int +mac_cred_check_setcred(u_int flags, const struct ucred *old_cred, + struct ucred *new_cred) +{ + int error; + + MAC_POLICY_CHECK_NOSLEEP(cred_check_setcred, flags, old_cred, new_cred); + MAC_CHECK_PROBE3(cred_check_setcred, error, flags, old_cred, new_cred); + + return (error); +} + +/* + * Exit hook for setcred(). + * + * Called with no lock held, exactly once per call to mac_cred_setcred_enter(). + */ +void +mac_cred_setcred_exit(void) +{ + MAC_POLICY_PERFORM_NOSLEEP(cred_setcred_exit); +} + MAC_CHECK_PROBE_DEFINE2(cred_check_setuid, "struct ucred *", "uid_t"); int diff --git a/sys/security/mac/mac_framework.h b/sys/security/mac/mac_framework.h index 644028bde478..99bb11be8796 100644 --- a/sys/security/mac/mac_framework.h +++ b/sys/security/mac/mac_framework.h @@ -72,6 +72,7 @@ struct mbuf; struct mount; struct msg; struct msqid_kernel; +struct pipepair; struct proc; struct semid_kernel; struct shmfd; @@ -80,7 +81,6 @@ struct sockaddr; struct socket; struct sysctl_oid; struct sysctl_req; -struct pipepair; struct thread; struct timespec; struct ucred; @@ -115,6 +115,10 @@ int mac_cred_check_setaudit(struct ucred *cred, struct auditinfo *ai); int mac_cred_check_setaudit_addr(struct ucred *cred, struct auditinfo_addr *aia); int mac_cred_check_setauid(struct ucred *cred, uid_t auid); +void mac_cred_setcred_enter(void); +int mac_cred_check_setcred(u_int flags, const struct ucred *old_cred, + struct ucred *new_cred); +void mac_cred_setcred_exit(void); int mac_cred_check_setegid(struct ucred *cred, gid_t egid); int mac_cred_check_seteuid(struct ucred *cred, uid_t euid); int mac_cred_check_setgid(struct ucred *cred, gid_t gid); diff --git a/sys/security/mac/mac_policy.h b/sys/security/mac/mac_policy.h index 084684e57497..66e489060804 100644 --- a/sys/security/mac/mac_policy.h +++ b/sys/security/mac/mac_policy.h @@ -144,6 +144,10 @@ typedef int (*mpo_cred_check_setaudit_t)(struct ucred *cred, typedef int (*mpo_cred_check_setaudit_addr_t)(struct ucred *cred, struct auditinfo_addr *aia); typedef int (*mpo_cred_check_setauid_t)(struct ucred *cred, uid_t auid); +typedef void (*mpo_cred_setcred_enter_t)(void); +typedef int (*mpo_cred_check_setcred_t)(u_int flags, + const struct ucred *old_cred, struct ucred *new_cred); +typedef void (*mpo_cred_setcred_exit_t)(void); typedef int (*mpo_cred_check_setegid_t)(struct ucred *cred, gid_t egid); typedef int (*mpo_cred_check_seteuid_t)(struct ucred *cred, uid_t euid); typedef int (*mpo_cred_check_setgid_t)(struct ucred *cred, gid_t gid); @@ -720,6 +724,9 @@ struct mac_policy_ops { mpo_cred_check_setaudit_t mpo_cred_check_setaudit; mpo_cred_check_setaudit_addr_t mpo_cred_check_setaudit_addr; mpo_cred_check_setauid_t mpo_cred_check_setauid; + mpo_cred_setcred_enter_t mpo_cred_setcred_enter; + mpo_cred_check_setcred_t mpo_cred_check_setcred; + mpo_cred_setcred_exit_t mpo_cred_setcred_exit; mpo_cred_check_setuid_t mpo_cred_check_setuid; mpo_cred_check_seteuid_t mpo_cred_check_seteuid; mpo_cred_check_setgid_t mpo_cred_check_setgid; @@ -1033,8 +1040,9 @@ struct mac_policy_conf { * 3 7.x * 4 8.x * 5 14.x + * 6 15.x */ -#define MAC_VERSION 5 +#define MAC_VERSION 6 #define MAC_POLICY_SET(mpops, mpname, mpfullname, mpflags, privdata_wanted) \ static struct mac_policy_conf mpname##_mac_policy_conf = { \ diff --git a/sys/security/mac_stub/mac_stub.c b/sys/security/mac_stub/mac_stub.c index c602c639ec95..a3b0dd01a76b 100644 --- a/sys/security/mac_stub/mac_stub.c +++ b/sys/security/mac_stub/mac_stub.c @@ -222,6 +222,23 @@ stub_cred_check_setauid(struct ucred *cred, uid_t auid) return (0); } +static void +stub_cred_setcred_enter(void) +{ +} + +static int +stub_cred_check_setcred(u_int flags, const struct ucred *old_cred, + struct ucred *new_cred) +{ + return (0); +} + +static void +stub_cred_setcred_exit(void) +{ +} + static int stub_cred_check_setegid(struct ucred *cred, gid_t egid) { @@ -1688,6 +1705,9 @@ static struct mac_policy_ops stub_ops = .mpo_cred_check_setaudit = stub_cred_check_setaudit, .mpo_cred_check_setaudit_addr = stub_cred_check_setaudit_addr, .mpo_cred_check_setauid = stub_cred_check_setauid, + .mpo_cred_setcred_enter = stub_cred_setcred_enter, + .mpo_cred_check_setcred = stub_cred_check_setcred, + .mpo_cred_setcred_exit = stub_cred_setcred_exit, .mpo_cred_check_setegid = stub_cred_check_setegid, .mpo_cred_check_seteuid = stub_cred_check_seteuid, .mpo_cred_check_setgid = stub_cred_check_setgid, diff --git a/sys/security/mac_test/mac_test.c b/sys/security/mac_test/mac_test.c index 7a6a76ce23cc..890b8328055e 100644 --- a/sys/security/mac_test/mac_test.c +++ b/sys/security/mac_test/mac_test.c @@ -257,6 +257,32 @@ test_cred_check_setauid(struct ucred *cred, uid_t auid) return (0); } +COUNTER_DECL(cred_setcred_enter); +static void +test_cred_setcred_enter(void) +{ + COUNTER_INC(cred_setcred_enter); +} + +COUNTER_DECL(cred_check_setcred); +static int +test_cred_check_setcred(u_int flags, const struct ucred *old_cred, + struct ucred *new_cred) +{ + LABEL_CHECK(old_cred->cr_label, MAGIC_CRED); + LABEL_CHECK(new_cred->cr_label, MAGIC_CRED); + COUNTER_INC(cred_check_setcred); + + return (0); +} + +COUNTER_DECL(cred_setcred_exit); +static void +test_cred_setcred_exit(void) +{ + COUNTER_INC(cred_setcred_exit); +} + COUNTER_DECL(cred_check_setegid); static int test_cred_check_setegid(struct ucred *cred, gid_t egid) @@ -3033,6 +3059,9 @@ static struct mac_policy_ops test_ops = .mpo_cred_check_setaudit = test_cred_check_setaudit, *** 201 LINES SKIPPED *** From nobody Thu Apr 3 19:32:25 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhT4t42z5sM1t; Thu, 03 Apr 2025 19:32: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 4ZTBhT1mpJz3SgQ; Thu, 03 Apr 2025 19:32:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708745; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UPKo3Z/I4Kg5KOxnlSuDlKEG/adlsitixpnubfObERM=; b=cyUxJlPP7vPafTW9+L2IUaWymeo/sUxnWi3nRbFH0P7GeIfVyfGJaI+3+aQzL2J6/C4K1N osN82H/YdHiLOlS7uBzvhFb3Ahi24HeRKFyChJYXK5UXQwaa/kvOse/xlwp19Aq4Ys5UnU 6uWwGvqzbtnEhnjvl/YEEzTSShcZ6DubBGeE22eFikpQnxn2jMtExlA+6I5+HvIWS4lBxe GMm3kJRZSDOPZQeMrehkBTBx8lheR6vL6RWAJPkmAfS4m9ZDMry/Pkdwr26AYp9ndZMS9q qAIcVSBJPNvQePtei2Vy0UVrPE3sMHs39UOGvY6pmxNH5fvsgwcdjuunajnd/w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708745; a=rsa-sha256; cv=none; b=O7nCbrk8z8K2T5NXwNG2wmVB20lUzdxckPZKxW9E7LsvjEoslQ0RgqTG+atPKor9Ef9whS g26o+Vlr7JPq7O13ilcdzdDIeSqM24sPZVFutCL7I5I7cXfXEWAdIIaZzMeR6Rf9M8pdh2 9OAwEh3aeNlmhUgrSDeaKMJyDPWOyfZRH17wJ2kk9nRxnyYU0pvngpHstoX6J/Edu15qPN +RSrqMKqtY60sx7ljE7gtkYBRB/7oQxxFmR7tSIxu2ma+Sbd5RlCMyEk6wahOW1jsOBUIm /jCOLomZO32fufKHBjbqSXcbecgrHY8XrFc6SmaSVxCjun1Y8sdHFDGsg7hL5A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708745; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=UPKo3Z/I4Kg5KOxnlSuDlKEG/adlsitixpnubfObERM=; b=s+3atLMP4krWX6NRRnIAtn29LipDeOTKEdDESbAUJb4EooNxec+UKOTnSms70ea//qWBuz 5JCebdUFT3w7ELE+wC5K3uaHkx+ry54IRaog/8yB/Clfb5wsIUsnI8KmOY/vD49PbV5Kzu i+xigazBvoVU7sUmXJ4nza31zgrfZ3xCBeAnTNRXWEvdGwfutB8tBx5dAIofHImB3c3IFG fkgQ4EquZ0C4TtLzLG/yQi6ueIiVb4hmjEETWSFJsyptAnD2garOs7hUC9pPJ3xUxk5+7N jOk3FWBX0f/PaqDrNq8ZCBcE+LvItX9a6fmqsJ6j9jvHRMYUXet/sbKkRO8Q0A== 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 4ZTBhT1NQzzkS; Thu, 03 Apr 2025 19:32: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 533JWPHw040435; Thu, 3 Apr 2025 19:32:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWPZA040432; Thu, 3 Apr 2025 19:32:25 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:25 GMT Message-Id: <202504031932.533JWPZA040432@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: e34dec3f12b6 - stable/14 - UPDATING: Request recompiling MAC modules because of new hooks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e34dec3f12b6a4cab5926537a4f651d8a881edd0 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=e34dec3f12b6a4cab5926537a4f651d8a881edd0 commit e34dec3f12b6a4cab5926537a4f651d8a881edd0 Author: Olivier Certner AuthorDate: 2025-04-03 07:43:32 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:04 +0000 UPDATING: Request recompiling MAC modules because of new hooks --- UPDATING | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/UPDATING b/UPDATING index 62d80d0c4c74..65c8b793a1ae 100644 --- a/UPDATING +++ b/UPDATING @@ -12,6 +12,12 @@ Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before updating system packages and/or ports. +20250403: + Commit 8aedc83c1cc2 ("New setcred() system call and associated MAC + hooks") introduces new MAC hooks for the new setcred() system call, + modifying the layout and size of 'struct mac_policy_ops'. As a result, + all MAC modules need to be recompiled. + 20250228: Commit 9fed5151903f modified the internal API between the nfscommon and nfscl modules. As such, both of these modules From nobody Thu Apr 3 19:32:26 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhV4sgvz5sMCP; Thu, 03 Apr 2025 19:32: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 4ZTBhV2jsVz3Sr8; Thu, 03 Apr 2025 19:32:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708746; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k/u9cEayx55aY1AmUjXxKEtodZi0WZO9RdVToOg0DhE=; b=Ce+5e8w2V0dhaDQv+CZu9x4M0vbnaOHqx3GkiKSPVT4CQ4jmbSQ6ziKn9oKBkIu3aeNEjX 7Dja/5a/Uj3OiG1DFnkUH7+wdGbkmfOBPqfCkevCmnudlzwqJtU95OrcTMVsEBS5FHlRmf KF6sFJyP960u156cYRMP96EvowHKxou0EZCoS5u2RpYatyQ+OdDxr9u+XGAziuiCZPp9Kt /D6YYgKd8nagbDDtMtoo3s9LS5C1aBIgqZV5gFgEIBxuh1uSS87+oVD71fCvzbx6tgGsBx S1kAaGXStVdta+ILuEoMtLA4IAveO2R27rhszJ7ZNDpYDhFaaUo1pn4TEEWdQQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708746; a=rsa-sha256; cv=none; b=iGZFSPWQ27E4YYrbfIJbYQyWKl351vnvFfz2L1wxzWQ+zp81F2v9e2r3UJ6c9xKzpN55ao 6FdiBdmS1JbfBf0SX5FOEYl0C+P4xClNua9+Wl/22R04GeTgcTwHDtu6Rtkqs7m1TF/crQ uZlGSZ9MAjEmPvLC2d/TDUjWpifNk6pCs6eGmL71nfK5/butWeG6IZe1KuSuaZ9/g/B/GC BO2c1F48+5k5zhQ8LnDiWdA05nMomcY9x6chSPfE7kwYZVClXOLxe/f3v4BnNI6CWzWOrR LpAXSdIi6egvdAAoJZY73a6V91yeHkuK5h0mRybWhlqZQsvokiKsHhnbqLboHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708746; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k/u9cEayx55aY1AmUjXxKEtodZi0WZO9RdVToOg0DhE=; b=IetgRhXijEZKo25TWtwZUCG8q9nuSeyffBe57guu/jG91qX3PLyBgFrH0OB707XG5ylfsl by3wMGb01fViC2r7ZgwvM3ab1Wgjq/SFc4UZsuqMhlvc4wf1d+vxC66JnHrLdiIoKZl5VR GLUk4o4cZSJfm+eU51CXLUEmhLa3rrG5UzFsRoE1Sd+Ms0VSbU+I8yFgia8AGLMOyM+x0t 5Ubuk2PzZYkZjqU8tz2ntlz0AmTR5agahEvfbBjC/HJYF6puYB4L5SUgrMSVjSAF1SOdxk /uI3e3ZVdTTAWY8E2M8s3uwh5jdi/2NM+ggFTlICkbea4AKkdvrV79e+WUN90g== 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 4ZTBhV2HVHzM2; Thu, 03 Apr 2025 19:32: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 533JWQa8040468; Thu, 3 Apr 2025 19:32:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWQv6040465; Thu, 3 Apr 2025 19:32:26 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:26 GMT Message-Id: <202504031932.533JWQv6040465@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 1780d3f3d1a7 - stable/14 - MAC/do: Introduce rules reference counting List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1780d3f3d1a777934e39442a346a9bc28d6acc26 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=1780d3f3d1a777934e39442a346a9bc28d6acc26 commit 1780d3f3d1a777934e39442a346a9bc28d6acc26 Author: Olivier Certner AuthorDate: 2024-07-19 15:30:00 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:04 +0000 MAC/do: Introduce rules reference counting This is going to be used in subsequent commits to keep rules alive even if disconnected from their jail in the meantime. We'll indeed have to release the prison lock between two uses (outright rejection, final granting) where the rules must absolutely stay the same for security reasons. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47619 (cherry picked from commit 3d8d91a5b32c219c7ee47840dcacbaf8c7480267) --- sys/security/mac_do/mac_do.c | 63 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index decfb3c756f0..7527732eae1a 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -159,8 +160,9 @@ struct rule { TAILQ_HEAD(rulehead, rule); struct rules { - char string[MAC_RULE_STRING_LEN]; - struct rulehead head; + char string[MAC_RULE_STRING_LEN]; + struct rulehead head; + volatile u_int use_count __aligned(CACHE_LINE_SIZE); }; /* @@ -327,6 +329,7 @@ alloc_rules(void) _Static_assert(MAC_RULE_STRING_LEN > 0, "MAC_RULE_STRING_LEN <= 0!"); rules->string[0] = 0; TAILQ_INIT(&rules->head); + rules->use_count = 0; return (rules); } @@ -1027,16 +1030,46 @@ find_rules(struct prison *const pr, struct prison **const aprp) return (rules); } +static void +hold_rules(struct rules *const rules) +{ + refcount_acquire(&rules->use_count); +} + +static void +drop_rules(struct rules *const rules) +{ + if (refcount_release(&rules->use_count)) + toast_rules(rules); +} + +#ifdef INVARIANTS +static void +check_rules_use_count(const struct rules *const rules, u_int expected) +{ + const u_int use_count = refcount_load(&rules->use_count); + + if (use_count != expected) + panic("MAC/do: Rules at %p: Use count is %u, expected %u", + rules, use_count, expected); +} +#else +#define check_rules_use_count(...) +#endif /* INVARIANTS */ + /* * OSD destructor for slot 'osd_jail_slot'. * - * Called with 'value' not NULL. + * Called with 'value' not NULL. We have arranged that it is only ever called + * when the corresponding jail goes down or at module unload. */ static void dealloc_osd(void *const value) { struct rules *const rules = value; + /* No one should be using the rules but us at this point. */ + check_rules_use_count(rules, 1); toast_rules(rules); } @@ -1051,10 +1084,28 @@ dealloc_osd(void *const value) static void remove_rules(struct prison *const pr) { + struct rules *old_rules; + int error __unused; + prison_lock(pr); - /* This calls destructor dealloc_osd(). */ + /* + * We go to the burden of extracting rules first instead of just letting + * osd_jail_del() calling dealloc_osd() as we want to decrement their + * use count, and possibly free them, outside of the prison lock. + */ + old_rules = osd_jail_get(pr, osd_jail_slot); + error = osd_jail_set(pr, osd_jail_slot, NULL); + /* osd_set() never fails nor allocate memory when 'value' is NULL. */ + MPASS(error == 0); + /* + * This completely frees the OSD slot, but doesn't call the destructor + * since we've just put NULL in the slot. + */ osd_jail_del(pr, osd_jail_slot); prison_unlock(pr); + + if (old_rules != NULL) + drop_rules(old_rules); } /* @@ -1066,6 +1117,8 @@ set_rules(struct prison *const pr, struct rules *const rules) struct rules *old_rules; void **rsv; + check_rules_use_count(rules, 0); + hold_rules(rules); rsv = osd_reserve(osd_jail_slot); prison_lock(pr); @@ -1073,7 +1126,7 @@ set_rules(struct prison *const pr, struct rules *const rules) osd_jail_set_reserved(pr, osd_jail_slot, rsv, rules); prison_unlock(pr); if (old_rules != NULL) - toast_rules(old_rules); + drop_rules(old_rules); } /* From nobody Thu Apr 3 19:32:27 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhW63sZz5sLsr; Thu, 03 Apr 2025 19:32: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 4ZTBhW3Djlz3Sgn; Thu, 03 Apr 2025 19:32:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jshh3X8yDvIFD6j+kPYWaxy9o6F3A75qJYZEyXwBPPE=; b=VQxdRu+uWlFy/IYn+lRNdCyY9OIe9JqhriEJOOteB1saMrSk4wM+isalyFj4pQ0u8s5ZUK C7pRaz+lrrPs1hIlXn+d/hneLLi+w8AFUBBZC4cr+XAa4AVzq+ccygJ4elK8uePMZrY2Df dTkb1sV2DQ5oFMJjoqo+Sd1a6ZWtPNOywBmIeG4TbZ/kiMSKHKuptCabZST5iwyfX/l9U6 onExIk/jCciKXjmSw17nIEHf2NHTBDnpL8RiB/dEpBTKsN4uwud01zYqc+2C9IivyPyiDN BS8cW5cLeyU4t4E6maj8fmLqpXkJFXD+vXOE/3mYl4bdu+nMha4qcL95aH7l2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708747; a=rsa-sha256; cv=none; b=EfPCsy1KXNco/UXY5yseHZUAdNxGREGfkqAXAap37miRTQ6DGhkwe1endowO/ZYGAfd6mV PLhln00t3O/HyAAtjCLMx8pSWmY7cYN0wotMr9bsIDZOk03MVyA6K61Bxe5oLZ+nPMRpng GTR3zxQSZNu1zydUp6arJvk8RWsD5kEaaH+NNXykXxxFuDOVO/NdKRM2f4ziTix59oBvn2 0dOQtCOV690EJA0qbi6KUcbPLEzFVcVjZGdicGcsVev7JcPYxZGUOkmqr1K0wU5+ELXEMu IisJhVCqIzJA+8L9N1PdTyCFuM/MkWZYqvFUbvABhJWazVcxbkufcNAYQ2dLjQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jshh3X8yDvIFD6j+kPYWaxy9o6F3A75qJYZEyXwBPPE=; b=Hdd/HyJALvhp0qVSLUFq0zCGViz+8JONFxY0r9tnMHPhoY0rAyn+rfA9+iMrR79NvaAPtE tpOGo2GX89XRKKsOMkKVwKIIPO0t9fSy7Y3Q5q77ggk1F6b0yXEoFGNDMtxuNJDBAnYbtX z5pRwmH5THUppZW2j0bf2vL/V7LhbvT/aFTbvFPaxcK5aSHSFmdh/W+einGrBctnahrFoQ QrbELZPwWYvJqnRfhIgQlnE4OExNhWTEmK/kUXi5AZjMCONDhJJ1hQ7vv2JgdhtMeyF5Hk AKWQ+8iWV/vaC7Tsj+GLU+xUivKK9+0KWQv7aG1WOLDrA4i46PZGDMPhjEUTvQ== 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 4ZTBhW2XvZzpf; Thu, 03 Apr 2025 19:32: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 533JWRXR040501; Thu, 3 Apr 2025 19:32:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWRM1040498; Thu, 3 Apr 2025 19:32:27 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:27 GMT Message-Id: <202504031932.533JWRM1040498@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 986ac13041c8 - stable/14 - MAC/do: Interpret the new rules specification; Monitor setcred() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 986ac13041c8205aaea98e8dcdedee798d4bef6c Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=986ac13041c8205aaea98e8dcdedee798d4bef6c commit 986ac13041c8205aaea98e8dcdedee798d4bef6c Author: Olivier Certner AuthorDate: 2024-07-22 14:11:34 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:04 +0000 MAC/do: Interpret the new rules specification; Monitor setcred() TL;DR: Now monitor setcred() calls, and reject or grant them according to the new rules specification. Drop monitoring setuid() and setgroups(). As previously explained in the commit introducing the setcred() system call, MAC/do must know the entire new credentials while the old ones are still available to be able to approve or reject the requested changes. To this end, the chosen approach was to introduce a new system call, setcred(), instead of modifying existing ones to be able to participate in a "prepare than commit"-like protocol. ****** The MAC framework typically calls several hooks of its registered policies as part of the privilege checking/granting process. Each system call calls some dedicated hook early, to which it usually passes the same arguments it received, whose goal is to forcibly deny access to the functionality when needed (i.e., a single deny by any policy globally denies the access). Then, the system call usually calls priv_check() or priv_check_cred() an unspecified number of times, each of which may trigger calls to two generic MAC hooks. The first such call is to mac_priv_check(), and always happens. Its role is to deny access early and forcibly, as can be done also in system calls' dedicated early hooks (with different reach, however). The second, mac_priv_grant(), is called only if the priv_check*() and prison_priv_check() generic code doesn't handle the request by itself, i.e., doesn't explicitly grant access (to the super user, or to all users for a few specific privileges). It allows any single policy to grant the requested access (regardless of whether the other policies do so or not). MAC/do currently only has an effect on processes spawned from the '/usr/bin/mdo' executable. It implements all setcred() hooks, called via mac_cred_setcred_enter(), mac_cred_check_setcred() and mac_cred_setcred_exit(). In the first one, implemented in mac_do_setcred_enter(), it checks if MAC/do has to apply to the current process, allocates (or re-uses) per-thread data to be later used by the other hooks (those of setcred() and the mac_priv_grant() one, called by priv_check*()) and fills them with the current context (the rules to apply). This is both because memory allocations cannot be performed while holding the process lock and to ensure that all hooks called by a single setcred() see the same rules to apply (not doing this would be a security hazard as rules are concurrently changed by the administrator, as explained in more details below). In the second one (implemented by mac_do_check_setcred()), it stores in MAC/do's per-thread data the new credentials. Indeed, the next MAC/do's hook implementation to be called, mac_do_priv_grant() (implementing the mac_priv_grant() hook) must have knowledge of the new credentials that setcred() wants to install in order to validate them (or not), which the MAC framework can't provide as the priv_check*() API only passes the current credentials and a specific privilege number to the mac_priv_check() and mac_priv_grant() hooks. By contrast, the very point of MAC/do is to grant the privilege of changing credentials not only based on the current ones but also on the seeked-for ones. The MAC framework's constraints that mac_priv_grant() hooks are called without context and that MAC modules must compose (each module may implement any of the available hooks, and in particular those of setcred()) impose some aspects of MAC/do's design. Because MAC/do's rules are tied to jails, accessing the current rules requires holding the corresponding jail's lock. As other policies might try to grab the same jail's lock in the same hooks, it is not possible to keep the rules' jail's lock between mac_do_setcred_enter() and mac_do_priv_grant() to ensure that the rules are still alive. We have thus augmented 'struct rules' with a reference count, and its lifecyle is now decoupled from being referenced or not by a jail. As a thread enters mac_cred_setcred_enter(), it grabs a hold on the current rules and keeps a pointer to them in the per-thread data. In its mac_do_setcred_exit(), MAC/do just "frees" the per-thread data, in particular by dropping the referenced rules (we wrote "frees" within guillemets, as in fact the per-thread structure is reused, and only freed when a thread exits or the module is unloaded). Additionally, ensuring that all hooks have a consistent view of the rules to apply might become crucial if we augment MAC/do with forceful access denial policies in the future (i.e., policies that forcibly disable access regardless of other MAC policies wanting to grant that access). Indeed, without the above-mentioned design, if newly installed rules start to forcibly deny some specific transitions, and some thread is past the mac_cred_check_setcred() hook but before the mac_priv_grant() one, the latter may grant some privileges that should have been rejected first by the former (depending on the content of user-supplied rules). A previous version of this change used to implement access denial mandated by the '!' and '-' GID flags in mac_do_check_setcred() with the goal to have this rejection prevail over potential other MAC modules authorizing the transition. However, this approach had two drawbacks. First, it was incompatible both conceptually and in the current implementation with multiple rules being treated as an inclusive disjunction, where any single rule granting access is enough for MAC/do to grant access. Explicit denial requested by one matching rule could prevent another rule from granting access. The implementation could have been fixed, but the conflation of rules being considered as disjoint for explicit granting but conjunct for forced denial would have remained. Second, MAC/do applies only to processes spawned from a particular executable, and imposing system-wide restrictions on only these processes is conceptually strange and probably not very useful. In the end, we moved the implementation of explicit access denial into mac_do_priv_grant(), along with the interpretation of other target clauses. The separate definition of 'struct mac_do_data_header' may seem odd, as it is only used in 'struct mac_do_setcred_data'. It is a remnant of an earlier version that was not using setcred(), but rather implemented hooks for setuid() and setgroups(). We however kept it, as it clearly separates the machinery to pass data from dedicated system call hooks to priv_grant() from the actual data that MAC/do needs to monitor a call to setcred() specifically. It may be useful in the future if we evolve MAC/do to also grant privileges through other system calls (each seen as a complete credentials transition on its own). The target supplementary groups are checked with merge-like algorithms leveraging the fact that all supplementary groups in credentials ('struct ucred') and in each rule ('struct rule') are sorted, avoiding to start a binary search for each considered GID which is asymptotically more costly. All access granting/denial is thus at most linear and in at most the sum of the number of requested groups, currently held ones and those contained in the rule, per applicable rule. This should be enough in all practical cases. There is however still room for more optimizations, without or with changes in rules' data structures, if the need ever arises. Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47620 (cherry picked from commit 8f7e8726e3f5f20b9eed0ad12fc2d2a4ec304d14) --- sys/security/mac_do/mac_do.c | 712 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 618 insertions(+), 94 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 7527732eae1a..2ce608c754bc 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -45,6 +45,7 @@ static MALLOC_DEFINE(M_DO, "do_rule", "Rules for mac_do"); #define MAC_RULE_STRING_LEN 1024 static unsigned osd_jail_slot; +static unsigned osd_thread_slot; #define IT_INVALID 0 /* Must stay 0. */ #define IT_UID 1 @@ -1064,11 +1065,24 @@ check_rules_use_count(const struct rules *const rules, u_int expected) * when the corresponding jail goes down or at module unload. */ static void -dealloc_osd(void *const value) +dealloc_jail_osd(void *const value) { struct rules *const rules = value; - /* No one should be using the rules but us at this point. */ + /* + * If called because the "holding" jail goes down, no one should be + * using the rules but us at this point because no threads of that jail + * (or its sub-jails) should currently be executing (in particular, + * currently executing setcred()). The case of module unload is more + * complex. Although the MAC framework takes care that no hook is + * called while a module is unloading, the unload could happen between + * two calls to MAC hooks in the course of, e.g., executing setcred(), + * where the rules' reference count has been bumped to keep them alive + * even if the rules on the "holding" jail has been concurrently + * changed. These other references are held in our thread OSD slot, so + * we ensure that all thread's slots are freed first in mac_do_destroy() + * to be able to check that only one reference remains. + */ check_rules_use_count(rules, 1); toast_rules(rules); } @@ -1090,8 +1104,8 @@ remove_rules(struct prison *const pr) prison_lock(pr); /* * We go to the burden of extracting rules first instead of just letting - * osd_jail_del() calling dealloc_osd() as we want to decrement their - * use count, and possibly free them, outside of the prison lock. + * osd_jail_del() calling dealloc_jail_osd() as we want to decrement + * their use count, and possibly free them, outside of the prison lock. */ old_rules = osd_jail_get(pr, osd_jail_slot); error = osd_jail_set(pr, osd_jail_slot, NULL); @@ -1398,7 +1412,7 @@ mac_do_jail_set(void *obj, void *data) * OSD jail methods. * * There is no PR_METHOD_REMOVE, as OSD storage is destroyed by the common jail - * code (see prison_cleanup()), which triggers a run of our dealloc_osd() + * code (see prison_cleanup()), which triggers a run of our dealloc_jail_osd() * destructor. */ static const osd_method_t osd_methods[PR_MAXMETHOD] = { @@ -1409,148 +1423,658 @@ static const osd_method_t osd_methods[PR_MAXMETHOD] = { }; -static void -mac_do_init(struct mac_policy_conf *mpc) +/* + * Common header structure. + * + * Each structure that is used to pass information between some MAC check + * function and priv_grant() must start with this header. + */ +struct mac_do_data_header { + /* Size of the allocated buffer holding the containing structure. */ + size_t allocated_size; + /* Full size of the containing structure. */ + size_t size; + /* + * For convenience, we use privilege numbers as an identifier for the + * containing structure's type, since there is one distinct privilege + * for each privilege changing function we are supporting. 0 in 'priv' + * indicates this header is uninitialized. + */ + int priv; + /* Rules to apply. */ + struct rules *rules; +}; + +/* + * The case of unusable or absent per-thread data can actually happen as nothing + * prevents, e.g., priv_check*() with privilege 'priv' to be called standalone, + * as it is currently by, e.g., the Linux emulator for PRIV_CRED_SETUID. We + * interpret such calls to priv_check*() as full, unrestricted requests for + * 'priv', contrary to what we're doing here for selected operations, and + * consequently will not grant the requested privilege. + * + * Also, we protect ourselves from a concurrent change of 'do_enabled' while + * a call to setcred() is in progress by storing the rules per-thread + * which is then consulted by each successive hook so that they all have + * a coherent view of the specifications, and we empty the slot (actually, mark + * it as empty) when MAC/do is disabled. + */ +static int +check_data_usable(const void *const data, const size_t size, const int priv) { - struct prison *pr; + const struct mac_do_data_header *const hdr = data; - osd_jail_slot = osd_jail_register(dealloc_osd, osd_methods); - set_empty_rules(&prison0); - sx_slock(&allprison_lock); - TAILQ_FOREACH(pr, &allprison, pr_list) - set_empty_rules(pr); - sx_sunlock(&allprison_lock); + if (hdr == NULL || hdr->priv == 0) + return (ENOENT); + /* + * Impacting changes in the protocols we are based on... Don't crash in + * production. + */ + if (hdr->priv != priv) { + MPASS(hdr->priv == priv); + return (EBUSY); + } + MPASS(hdr->size == size); + MPASS(hdr->size <= hdr->allocated_size); + return (0); } static void -mac_do_destroy(struct mac_policy_conf *mpc) +clear_data(void *const data) { - osd_jail_deregister(osd_jail_slot); + struct mac_do_data_header *const hdr = data; + + if (hdr != NULL) { + drop_rules(hdr->rules); + /* We don't deallocate so as to save time on next access. */ + hdr->priv = 0; + } +} + +static void * +fetch_data(void) +{ + return (osd_thread_get_unlocked(curthread, osd_thread_slot)); } static bool -rule_applies(struct ucred *cred, struct rule *r) +is_data_reusable(const void *const data, const size_t size) { - if (r->from_type == IT_UID && r->from_id == cred->cr_uid) - return (true); - if (r->from_type == IT_GID && groupmember(r->from_id, cred)) - return (true); - return (false); + const struct mac_do_data_header *const hdr = data; + + return (hdr != NULL && size <= hdr->allocated_size); } +static void +set_data_header(void *const data, const size_t size, const int priv, + struct rules *const rules) +{ + struct mac_do_data_header *const hdr = data; + + MPASS(hdr->priv == 0); + MPASS(priv != 0); + MPASS(size <= hdr->allocated_size); + hdr->size = size; + hdr->priv = priv; + hdr->rules = rules; +} + +/* The proc lock (and any other non-sleepable lock) must not be held. */ +static void * +alloc_data(void *const data, const size_t size) +{ + struct mac_do_data_header *const hdr = realloc(data, size, M_DO, + M_WAITOK); + + MPASS(size >= sizeof(struct mac_do_data_header)); + hdr->allocated_size = size; + hdr->priv = 0; + if (hdr != data) { + /* + * This call either reuses the existing memory allocated for the + * slot or tries to allocate some without blocking. + */ + int error = osd_thread_set(curthread, osd_thread_slot, hdr); + + if (error != 0) { + /* Going to make a M_WAITOK allocation. */ + void **const rsv = osd_reserve(osd_thread_slot); + + error = osd_thread_set_reserved(curthread, + osd_thread_slot, rsv, hdr); + MPASS(error == 0); + } + } + return (hdr); +} + +/* Destructor for 'osd_thread_slot'. */ +static void +dealloc_thread_osd(void *const value) +{ + free(value, M_DO); +} + +/* + * Whether to grant access to some primary group according to flags. + * + * The passed 'flags' must be those of a rule's matching GID, or the IT_GID type + * flags when MDF_CURRENT has been matched. + * + * Return values: + * - 0: Access granted. + * - EJUSTRETURN: Flags are agnostic. + */ static int -mac_do_priv_grant(struct ucred *cred, int priv) +grant_primary_group_from_flags(const flags_t flags) { - struct rule *r; - struct prison *pr; - struct rules *rule; + return ((flags & MDF_PRIMARY) != 0 ? 0 : EJUSTRETURN); +} - if (do_enabled == 0) - return (EPERM); +/* + * Same as grant_primary_group_from_flags(), but for supplementary groups. + * + * Return values: + * - 0: Access granted. + * - EJUSTRETURN: Flags are agnostic. + * - EPERM: Access denied. + */ +static int +grant_supplementary_group_from_flags(const flags_t flags) +{ + if ((flags & MDF_SUPP_MASK) != 0) + return ((flags & MDF_SUPP_DONT) != 0 ? EPERM : 0); - rule = find_rules(cred->cr_prison, &pr); - TAILQ_FOREACH(r, &rule->head, r_entries) { - if (rule_applies(cred, r)) { - switch (priv) { - case PRIV_CRED_SETGROUPS: - case PRIV_CRED_SETUID: - prison_unlock(pr); - return (0); - default: + return (EJUSTRETURN); +} + +static int +rule_grant_supplementary_groups(const struct rule *const rule, + const struct ucred *const old_cred, const struct ucred *const new_cred) +{ + const gid_t *const old_groups = old_cred->cr_groups; + const gid_t *const new_groups = new_cred->cr_groups; + const int old_ngroups = old_cred->cr_ngroups; + const int new_ngroups = new_cred->cr_ngroups; + const flags_t gid_flags = rule->gid_flags; + const bool current_has_supp = (gid_flags & MDF_CURRENT) != 0 && + (gid_flags & MDF_SUPP_MASK) != 0; + id_nb_t rule_idx = 0; + int old_idx = 1, new_idx = 1; + + if ((gid_flags & MDF_ANY_SUPP) != 0 && + (gid_flags & MDF_MAY_REJ_SUPP) == 0) + /* + * Any set of supplementary groups is accepted, no need to loop + * over them. + */ + return (0); + + for (; new_idx < new_ngroups; ++new_idx) { + const gid_t gid = new_groups[new_idx]; + bool may_accept = false; + + if ((gid_flags & MDF_ANY_SUPP) != 0) + may_accept = true; + + /* Do we have to check for the current supplementary groups? */ + if (current_has_supp) { + /* + * Linear search, as both supplementary groups arrays + * are sorted. Advancing 'old_idx' with a binary search + * on absence of MDF_SUPP_MUST doesn't seem worth it in + * practice. + */ + for (; old_idx < old_ngroups; ++old_idx) { + const gid_t old_gid = old_groups[old_idx]; + + if (old_gid < gid) { + /* Mandatory but absent. */ + if ((gid_flags & MDF_SUPP_MUST) != 0) + return (EPERM); + } else if (old_gid == gid) { + switch (gid_flags & MDF_SUPP_MASK) { + case MDF_SUPP_DONT: + /* Present but forbidden. */ + return (EPERM); + case MDF_SUPP_ALLOW: + case MDF_SUPP_MUST: + may_accept = true; + break; + default: +#ifdef INVARIANTS + __assert_unreachable(); +#else + /* Better be safe than sorry. */ + return (EPERM); +#endif + } + ++old_idx; + break; + } + else + break; + } + } + + /* + * Search by GID for a corresponding 'struct id_spec'. + * + * Again, linear search, with same note on not using binary + * search optimization as above (the trigger would be absence of + * MDF_EXPLICIT_SUPP_MUST this time). + */ + for (; rule_idx < rule->gids_nb; ++rule_idx) { + const struct id_spec is = rule->gids[rule_idx]; + + if (is.id < gid) { + /* Mandatory but absent. */ + if ((is.flags & MDF_SUPP_MUST) != 0) + return (EPERM); + } else if (is.id == gid) { + switch (is.flags & MDF_SUPP_MASK) { + case MDF_SUPP_DONT: + /* Present but forbidden. */ + return (EPERM); + case MDF_SUPP_ALLOW: + case MDF_SUPP_MUST: + may_accept = true; + break; + case 0: + /* Primary group only. */ + break; + default: +#ifdef INVARIANTS + __assert_unreachable(); +#else + /* Better be safe than sorry. */ + return (EPERM); +#endif + } + ++rule_idx; break; } + else + break; } + + /* 'gid' wasn't explicitly accepted. */ + if (!may_accept) + return (EPERM); } - prison_unlock(pr); - return (EPERM); + + /* + * If we must have all current groups and we didn't browse all + * of them at this point (because the remaining ones have GIDs + * greater than the last requested group), we are simply missing + * them. + */ + if ((gid_flags & MDF_CURRENT) != 0 && + (gid_flags & MDF_SUPP_MUST) != 0 && + old_idx < old_ngroups) + return (EPERM); + /* + * Similarly, we have to finish browsing all GIDs from the rule + * in case some are marked mandatory. + */ + if ((gid_flags & MDF_EXPLICIT_SUPP_MUST) != 0) { + for (; rule_idx < rule->gids_nb; ++rule_idx) { + const struct id_spec is = rule->gids[rule_idx]; + + if ((is.flags & MDF_SUPP_MUST) != 0) + return (EPERM); + } + } + + return (0); } static int -mac_do_check_setgroups(struct ucred *cred, int ngrp, gid_t *groups) +rule_grant_primary_group(const struct rule *const rule, + const struct ucred *const old_cred, const gid_t gid) { - struct rule *r; - char *fullpath = NULL; - char *freebuf = NULL; - struct prison *pr; - struct rules *rule; + struct id_spec gid_is = {.flags = 0}; + const struct id_spec *found_is; + int error; - if (do_enabled == 0) - return (0); - if (cred->cr_uid == 0) + if ((rule->gid_flags & MDF_ANY) != 0) return (0); - if (vn_fullpath(curproc->p_textvp, &fullpath, &freebuf) != 0) - return (EPERM); - if (strcmp(fullpath, "/usr/bin/mdo") != 0) { - free(freebuf, M_TEMP); - return (EPERM); + /* Was MDF_CURRENT specified, and is 'gid' a current GID? */ + if ((rule->gid_flags & MDF_CURRENT) != 0 && + group_is_primary(gid, old_cred)) { + error = grant_primary_group_from_flags(rule->gid_flags); + if (error == 0) + return (0); } - free(freebuf, M_TEMP); - rule = find_rules(cred->cr_prison, &pr); - TAILQ_FOREACH(r, &rule->head, r_entries) { - if (rule_applies(cred, r)) { - prison_unlock(pr); + /* Search by GID for a corresponding 'struct id_spec'. */ + gid_is.id = gid; + found_is = bsearch(&gid_is, rule->gids, rule->gids_nb, + sizeof(*rule->gids), id_spec_cmp); + + if (found_is != NULL) { + error = grant_primary_group_from_flags(found_is->flags); + if (error == 0) return (0); - } } - prison_unlock(pr); return (EPERM); } static int -mac_do_check_setuid(struct ucred *cred, uid_t uid) +rule_grant_primary_groups(const struct rule *const rule, + const struct ucred *const old_cred, const struct ucred *const new_cred) { - struct rule *r; - char *fullpath = NULL; - char *freebuf = NULL; - struct prison *pr; - struct rules *rule; - struct id_spec uid_is = {.id = uid}; int error; - if (do_enabled == 0) + /* Shortcut. */ + if ((rule->gid_flags & MDF_ANY) != 0) + return (0); + + error = rule_grant_primary_group(rule, old_cred, new_cred->cr_gid); + if (error != 0) + return (error); + error = rule_grant_primary_group(rule, old_cred, new_cred->cr_rgid); + if (error != 0) + return (error); + error = rule_grant_primary_group(rule, old_cred, new_cred->cr_svgid); + if (error != 0) + return (error); + return (0); +} + +static bool +user_is_current(const uid_t uid, const struct ucred *const old_cred) +{ + return (uid == old_cred->cr_uid || uid == old_cred->cr_ruid || + uid == old_cred->cr_svuid); +} + +static int +rule_grant_user(const struct rule *const rule, + const struct ucred *const old_cred, const uid_t uid) +{ + struct id_spec uid_is = {.flags = 0}; + const struct id_spec *found_is; + + if ((rule->uid_flags & MDF_ANY) != 0) + return (0); + + /* Was MDF_CURRENT specified, and is 'uid' a current UID? */ + if ((rule->uid_flags & MDF_CURRENT) != 0 && + user_is_current(uid, old_cred)) + return (0); + + /* Search by UID for a corresponding 'struct id_spec'. */ + uid_is.id = uid; + found_is = bsearch(&uid_is, rule->uids, rule->uids_nb, + sizeof(*rule->uids), id_spec_cmp); + + if (found_is != NULL) return (0); - if (cred->cr_uid == uid || cred->cr_uid == 0 || cred->cr_ruid == 0) + + return (EPERM); +} + +static int +rule_grant_users(const struct rule *const rule, + const struct ucred *const old_cred, const struct ucred *const new_cred) +{ + int error; + + /* Shortcut. */ + if ((rule->uid_flags & MDF_ANY) != 0) return (0); - if (vn_fullpath(curproc->p_textvp, &fullpath, &freebuf) != 0) + error = rule_grant_user(rule, old_cred, new_cred->cr_uid); + if (error != 0) + return (error); + error = rule_grant_user(rule, old_cred, new_cred->cr_ruid); + if (error != 0) + return (error); + error = rule_grant_user(rule, old_cred, new_cred->cr_svuid); + if (error != 0) + return (error); + + return (0); +} + +static int +rule_grant_setcred(const struct rule *const rule, + const struct ucred *const old_cred, const struct ucred *const new_cred) +{ + int error; + + error = rule_grant_users(rule, old_cred, new_cred); + if (error != 0) + return (error); + error = rule_grant_primary_groups(rule, old_cred, new_cred); + if (error != 0) + return (error); + error = rule_grant_supplementary_groups(rule, old_cred, new_cred); + if (error != 0) + return (error); + + return (0); +} + +static bool +rule_applies(const struct rule *const rule, const struct ucred *const cred) +{ + if (rule->from_type == IT_UID && rule->from_id == cred->cr_uid) + return (true); + if (rule->from_type == IT_GID && groupmember(rule->from_id, cred)) + return (true); + return (false); +} + +/* + * To pass data between check_setcred() and priv_grant() (on PRIV_CRED_SETCRED). + */ +struct mac_do_setcred_data { + struct mac_do_data_header hdr; + const struct ucred *new_cred; + u_int setcred_flags; +}; + +static int +mac_do_priv_grant(struct ucred *cred, int priv) +{ + struct mac_do_setcred_data *const data = fetch_data(); + const struct rules *rules; + const struct ucred *new_cred; + const struct rule *rule; + u_int setcred_flags; + int error; + + /* Bail out fast if we aren't concerned. */ + if (priv != PRIV_CRED_SETCRED) return (EPERM); - if (strcmp(fullpath, "/usr/bin/mdo") != 0) { - free(freebuf, M_TEMP); + + /* + * Do we have to do something? + */ + if (check_data_usable(data, sizeof(*data), priv) != 0) + /* No. */ return (EPERM); - } - free(freebuf, M_TEMP); + rules = data->hdr.rules; + new_cred = data->new_cred; + KASSERT(new_cred != NULL, + ("priv_check*() called before mac_cred_check_setcred()")); + setcred_flags = data->setcred_flags; + + /* + * Explicitly check that only the flags we currently support are present + * in order to avoid accepting transitions with other changes than those + * we are actually going to check. Currently, this rules out the + * SETCREDF_MAC_LABEL flag. This may be improved by adding code + * actually checking whether the requested label and the current one + * would differ. + */ + if ((setcred_flags & ~(SETCREDF_UID | SETCREDF_RUID | SETCREDF_SVUID | + SETCREDF_GID | SETCREDF_RGID | SETCREDF_SVGID | + SETCREDF_SUPP_GROUPS)) != 0) + return (EPERM); + + /* + * Browse rules, and for those that match the requestor, call specific + * privilege granting functions interpreting the "to"/"target" part. + */ error = EPERM; - rule = find_rules(cred->cr_prison, &pr); - TAILQ_FOREACH(r, &rule->head, r_entries) { - if (!((r->from_type == IT_UID && cred->cr_uid == r->from_id) || - (r->from_type == IT_GID && groupmember(r->from_id, cred)))) - continue; + TAILQ_FOREACH(rule, &rules->head, r_entries) + if (rule_applies(rule, cred)) { + error = rule_grant_setcred(rule, cred, new_cred); + if (error != EPERM) + break; + } - if (r->uid_flags & MDF_ANY || - ((r->uid_flags & MDF_CURRENT) && (uid == cred->cr_uid || - uid == cred->cr_ruid || uid == cred->cr_svuid)) || - bsearch(&uid_is, r->uids, r->uids_nb, sizeof(*r->uids), - id_spec_cmp) != NULL) { - error = 0; - break; - } - } - prison_unlock(pr); return (error); } +static int +check_proc(void) +{ + char *path, *to_free; + int error; + + /* + * Only grant privileges if requested by the right executable. + * + * XXXOC: We may want to base this check on a tunable path and/or + * a specific MAC label. Going even further, e.g., envisioning to + * completely replace the path check with the latter, we would need to + * install FreeBSD on a FS with multilabel enabled by default, which in + * practice entails adding an option to ZFS to set MNT_MULTILABEL + * automatically on mounts, ensuring that root (and more if using + * different partitions) ZFS or UFS filesystems are created with + * multilabel turned on, and having the installation procedure support + * setting a MAC label per file (perhaps via additions to mtree(1)). So + * this probably isn't going to happen overnight, if ever. + */ + if (vn_fullpath(curproc->p_textvp, &path, &to_free) != 0) + return (EPERM); + error = strcmp(path, "/usr/bin/mdo") == 0 ? 0 : EPERM; + free(to_free, M_TEMP); + return (error); +} + +static void +mac_do_setcred_enter(void) +{ + struct rules *rules; + struct prison *pr; + struct mac_do_setcred_data * data; + int error; + + /* + * If not enabled, don't prepare data. Other hooks will check for that + * to know if they have to do something. + */ + if (do_enabled == 0) + return; + + /* + * MAC/do only applies to a process launched from a given executable. + * For other processes, we just won't intervene (we don't deny requests, + * nor do we grant privileges to them). + */ + error = check_proc(); + if (error != 0) + return; + + /* + * Find the currently applicable rules. + */ + rules = find_rules(curproc->p_ucred->cr_prison, &pr); + hold_rules(rules); + prison_unlock(pr); + + /* + * Setup thread data to be used by other hooks. + */ + data = fetch_data(); + if (!is_data_reusable(data, sizeof(*data))) + data = alloc_data(data, sizeof(*data)); + set_data_header(data, sizeof(*data), PRIV_CRED_SETCRED, rules); + /* Not really necessary, but helps to catch programming errors. */ + data->new_cred = NULL; + data->setcred_flags = 0; +} + +static int +mac_do_check_setcred(u_int flags, const struct ucred *const old_cred, + struct ucred *const new_cred) +{ + struct mac_do_setcred_data *const data = fetch_data(); + + /* + * Do we have to do something? + */ + if (check_data_usable(data, sizeof(*data), PRIV_CRED_SETCRED) != 0) + /* No. */ + return (0); + + /* + * Keep track of the setcred() flags and the new credentials for + * priv_check*(). + */ + data->new_cred = new_cred; + data->setcred_flags = flags; + + return (0); +} + +static void +mac_do_setcred_exit(void) +{ + struct mac_do_setcred_data *const data = fetch_data(); + + if (check_data_usable(data, sizeof(*data), PRIV_CRED_SETCRED) == 0) + /* + * This doesn't deallocate the small per-thread data storage, + * which can be reused on subsequent calls. (That data is of + * course deallocated as the current thread dies or this module + * is unloaded.) + */ + clear_data(data); +} + +static void +mac_do_init(struct mac_policy_conf *mpc) +{ + struct prison *pr; + + osd_jail_slot = osd_jail_register(dealloc_jail_osd, osd_methods); + set_empty_rules(&prison0); + sx_slock(&allprison_lock); + TAILQ_FOREACH(pr, &allprison, pr_list) + set_empty_rules(pr); + sx_sunlock(&allprison_lock); + + osd_thread_slot = osd_thread_register(dealloc_thread_osd); +} + +static void +mac_do_destroy(struct mac_policy_conf *mpc) +{ + /* + * osd_thread_deregister() must be called before osd_jail_deregister(), + * for the reason explained in dealloc_jail_osd(). + */ + osd_thread_deregister(osd_thread_slot); + osd_jail_deregister(osd_jail_slot); +} + static struct mac_policy_ops do_ops = { - .mpo_destroy = mac_do_destroy, .mpo_init = mac_do_init, - .mpo_cred_check_setuid = mac_do_check_setuid, - .mpo_cred_check_setgroups = mac_do_check_setgroups, + .mpo_destroy = mac_do_destroy, + .mpo_cred_setcred_enter = mac_do_setcred_enter, + .mpo_cred_check_setcred = mac_do_check_setcred, + .mpo_cred_setcred_exit = mac_do_setcred_exit, .mpo_priv_grant = mac_do_priv_grant, }; -MAC_POLICY_SET(&do_ops, mac_do, "MAC/do", - MPC_LOADTIME_FLAG_UNLOADOK, NULL); +MAC_POLICY_SET(&do_ops, mac_do, "MAC/do", MPC_LOADTIME_FLAG_UNLOADOK, NULL); MODULE_VERSION(mac_do, 1); From nobody Thu Apr 3 19:32:28 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhX5DQxz5sLwg; Thu, 03 Apr 2025 19:32: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 4ZTBhX3cRFz3Sd2; Thu, 03 Apr 2025 19:32:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nIon7UWWWgCIERESHUKZy6sOWE1Gf+p+LMwqeYdX6dY=; b=FCdQA/tEWlD1tlbe804HeGujjDpRILekEG+qYo9cQrF8wyy06NvW7QfYqKK8wDqxcTq45g C8VeWF6bHPx0LEOH5yXT+yqm83X+U3SH/mQyff6b/dSHmi3ql6mpsuYRVmg4EQaGTiSSIr 6vLFa4dWlwGU2ubSd9NRnRUDx9o5oVJVzyEZhQ+2v3DRFXE3QK3y29xmaaQTucseZktYP0 f10IF3+gEabuggAMWhfgTyOOqXNty0DHYQIy1lN573sO0uM4xFUOpBMFwzyA0eiyp4df1+ 9vIDriB21Kk/+6LwYm21nIcC0MZMC3DdpWNwt45RrSiaXpF9J7CfTii4etd5UQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708748; a=rsa-sha256; cv=none; b=GtLzgbC710XJ4VelLt5uZq7H7gNjqBtfJD2ffnyzUjSYgEDUyE/Piwnhx/nok9ruX3nWkV aYaTF2HqAwXym8Y55Wfjq8sAOhMDqY0cVbSxsrnQObQ4rINs6sPtd0zxfOp2mN3EvQbE4h +f54rb1HWrE5PxsDZWiUW6mzVfgMuvk2kySBvG5lqYHJqpqgPjiC8IP+THF5mtgXTELO2Z DqJXMWx6TJG4R/1Ne3/Vzx7LRNpkoqvDNU3rCCAAfMQs5OUrYmuo3rMFhUnWOrgYRIkLlm QonWVYKvW00DJd+eBlvKA1gv46gOqvauEf1xWehr/qVPZZvL0ejuZ7u1HsCWqA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708748; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nIon7UWWWgCIERESHUKZy6sOWE1Gf+p+LMwqeYdX6dY=; b=nt8xlfiUHP4VSWNMEbuzMAbOafeEiQtx0Oy0ehdt6q4Vabiy/XxjfMJrtgL3uBq3yhsYP8 rOzPEgSnL2mEsDueSCo5CBx6vQqiAUU34ak0MGKLZe192zmDgxE9hW/WyjL1gbx37mn7R4 duMG4C5jHBILSe9/ULJdAajJ46ZTeXJBEWaFEUIdybHy0ukY4QR/7qaWg5xmebDAIH7evA AyC1wb2ZAQHPPPq/wpEaONs/IEz+sTUvUIQBh89ckLn8aFXivj+y2N+Wm7XrsgLoZexz2G 3gnW28L6CB6qPq/G0Zssd7nFtWEAS6aTg5JrDntnXM2W0+WyXsBdpQNbVEwG1w== 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 4ZTBhX3CxlzkW; Thu, 03 Apr 2025 19:32: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 533JWS8R040535; Thu, 3 Apr 2025 19:32:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWSFJ040532; Thu, 3 Apr 2025 19:32:28 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:28 GMT Message-Id: <202504031932.533JWSFJ040532@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 68c46c41a7f8 - stable/14 - mdo(1): Use setcred() to change credentials List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 68c46c41a7f875b245325e94e994fda1bd0b3056 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=68c46c41a7f875b245325e94e994fda1bd0b3056 commit 68c46c41a7f875b245325e94e994fda1bd0b3056 Author: Olivier Certner AuthorDate: 2024-07-29 14:24:08 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:05 +0000 mdo(1): Use setcred() to change credentials As this is the only system call that MAC/do currently supports, and the only one that really can be for transitions involving simultaneous changes of user and group IDs. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47621 (cherry picked from commit e395e354823b690ba19ecc8e3688bacec6f67ad3) --- usr.bin/mdo/mdo.c | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/usr.bin/mdo/mdo.c b/usr.bin/mdo/mdo.c index 22e2838daa08..8435fc17f26f 100644 --- a/usr.bin/mdo/mdo.c +++ b/usr.bin/mdo/mdo.c @@ -5,6 +5,7 @@ */ #include +#include #include #include @@ -27,6 +28,8 @@ main(int argc, char **argv) { struct passwd *pw; const char *username = "root"; + struct setcred wcred = SETCRED_INITIALIZER; + u_int setcred_flags = 0; bool uidonly = false; int ch; @@ -50,20 +53,45 @@ main(int argc, char **argv) const char *errp = NULL; uid_t uid = strtonum(username, 0, UID_MAX, &errp); if (errp != NULL) - err(EXIT_FAILURE, "%s", errp); + err(EXIT_FAILURE, "invalid user ID '%s'", + username); pw = getpwuid(uid); } if (pw == NULL) err(EXIT_FAILURE, "invalid username '%s'", username); } + + wcred.sc_uid = wcred.sc_ruid = wcred.sc_svuid = pw->pw_uid; + setcred_flags |= SETCREDF_UID | SETCREDF_RUID | SETCREDF_SVUID; + if (!uidonly) { - if (initgroups(pw->pw_name, pw->pw_gid) == -1) - err(EXIT_FAILURE, "failed to call initgroups"); - if (setgid(pw->pw_gid) == -1) - err(EXIT_FAILURE, "failed to call setgid"); + /* + * If there are too many groups specified for some UID, setting + * the groups will fail. We preserve this condition by + * allocating one more group slot than allowed, as + * getgrouplist() itself is just some getter function and thus + * doesn't (and shouldn't) check the limit, and to allow + * setcred() to actually check for overflow. + */ + const long ngroups_alloc = sysconf(_SC_NGROUPS_MAX) + 2; + gid_t *const groups = malloc(sizeof(*groups) * ngroups_alloc); + int ngroups = ngroups_alloc; + + if (groups == NULL) + err(EXIT_FAILURE, "cannot allocate memory for groups"); + + getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups); + + wcred.sc_gid = wcred.sc_rgid = wcred.sc_svgid = pw->pw_gid; + wcred.sc_supp_groups = groups + 1; + wcred.sc_supp_groups_nb = ngroups - 1; + setcred_flags |= SETCREDF_GID | SETCREDF_RGID | SETCREDF_SVGID | + SETCREDF_SUPP_GROUPS; } - if (setuid(pw->pw_uid) == -1) - err(EXIT_FAILURE, "failed to call setuid"); + + if (setcred(setcred_flags, &wcred, sizeof(wcred)) != 0) + err(EXIT_FAILURE, "calling setcred() failed"); + if (*argv == NULL) { const char *sh = getenv("SHELL"); if (sh == NULL) From nobody Thu Apr 3 19:32:29 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhY6jRQz5sLss; Thu, 03 Apr 2025 19:32: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 4ZTBhY47hkz3SmL; Thu, 03 Apr 2025 19:32:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lVv2qUJzOfUePmTyZLXH6waHtr1qILqd52J927WOw5I=; b=W7e+PEBCRXzu09/UFRYdjEq3cbd2m+WIRwT7tVtdMdmlfomfzxZ83vYDWi2A+JHqvGUGnw f/9yYIQp+Y5DGK2H88+JvPs8d+jEurl7zumDZoF2lRJmiv5rb0/Ry7Fu1Lcoeeb/9YQfha QHQtEi1XB0dSitfXT7BzZWF17K9Fkb0UmLsbYDSd9hluCk/YMd3rJ70r8WMsNg2bx3KhHc In3J8Pmh4xympa1ZmvJ+q/XPHP2sdaLYqqahVG+7kWfwlixUEn9Btpv4bcIh9u2IyL1Uvu ldyyU53unuokhR/CfFGOrHPOLMvziuSBziYtJ49nt+BM0IUKjT9XN6fRyWCLTA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708749; a=rsa-sha256; cv=none; b=HZ7PiyRhT2aVlGACHiVsyTIvVZ1+SmZ+SCQ8i9U8nSFFoV3oGq2e0+z+JPgRatsa3cMz52 5oBLpCWSwa7HMjQzFRM9uNGp3OR+XSSnGLeq7gkfsn9eNnOLG7ZBuIwV1EmQ4VBZzAlyar iITyjSUZ5YsgNPniA6WBpZHV/FICvjUOoV3cAQNdWff4XDkUOawbMh5asxWcJDi10Y5yLJ vcwln57oWWry9cQAd7iU+KEQuDO6Ir18IC2bdxEocY9m6g7wnit4UkhYmL/FlPHPD8IoTP DJV+hiQ+Ogyla8lQ+N9trJwQDyIUS/i7XzXueXFVzGohm2rlwf4s/U3L3cZSQA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lVv2qUJzOfUePmTyZLXH6waHtr1qILqd52J927WOw5I=; b=Pa+BXitBj+W/kyG0mz/TAVzUl4KCVZOd1O3FFgmeHbVOww9QfZDIqdEmmixIXVNdiwRBw5 wmY/41lZyumGErXJOzMsDS9e5dG6s5gOolhshnfIdrwVfEblS+juLwuRRoSzrzi875f+3l TekTJa3uDql2zzt2Az6/kK/3RwMo+m+z4oZny48UBKNPbYsTOJKcG8LTcpLGQwR7O677x1 lk5ViobsUvkwVnWsoDC04kxZ/lgl1k508OBssYYJFPbDepEAcuOYLHGMcxr88ujNbL0FDI YHEO3CStpFfRVgavnUwtonXuzfSybpQHVxufwylBEBf1RQmOjouhW5fKXjEB9Q== 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 4ZTBhY3ZQ0zkX; Thu, 03 Apr 2025 19:32: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 533JWTvJ040570; Thu, 3 Apr 2025 19:32:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWTU3040567; Thu, 3 Apr 2025 19:32:29 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:29 GMT Message-Id: <202504031932.533JWTU3040567@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 5e00a28b2f02 - stable/14 - MAC/do: toast_rules(): Minor simplification List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5e00a28b2f02a820f9cf9e04b38839f8da835db8 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=5e00a28b2f02a820f9cf9e04b38839f8da835db8 commit 5e00a28b2f02a820f9cf9e04b38839f8da835db8 Author: Olivier Certner AuthorDate: 2024-08-13 08:53:24 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:05 +0000 MAC/do: toast_rules(): Minor simplification Use the most common pattern to browse and delete elements of a list, as it reads quicker. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47622 (cherry picked from commit 2110eef4bf608b6c1facc57c68d02960b6d880c9) --- sys/security/mac_do/mac_do.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 2ce608c754bc..dc5933930a41 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -311,10 +311,9 @@ static void toast_rules(struct rules *const rules) { struct rulehead *const head = &rules->head; - struct rule *rule; + struct rule *rule, *rule_next; - while ((rule = TAILQ_FIRST(head)) != NULL) { - TAILQ_REMOVE(head, rule, r_entries); + TAILQ_FOREACH_SAFE(rule, head, r_entries, rule_next) { free(rule->uids, M_DO); free(rule->gids, M_DO); free(rule, M_DO); From nobody Thu Apr 3 19:32:30 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhb2PClz5sLwj; Thu, 03 Apr 2025 19:32:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTBhZ59t6z3SkH; Thu, 03 Apr 2025 19:32:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3Ch3g6TuFXbBGDzY/pxikNSh1zXdYwUZR0kgRTJ5mvg=; b=bwygokWq2A0On+gVp649xbIfvwfK65OsZAyY1KdpClwGTKP8NoEVjAiexSDR0P5FJFFcL6 v+eVOk90vZMt5FqxUqsuvwyK7n7FZaE0UTp2cQgBz63rQiIhf+gX5ssACQL23h4qEPhLsQ L+60vzi0jOFpivTA7ntRuteSABpM2PZM3ElHPBeYoj4mW4GSOWlZs+bjSOph+lTcbwqbzq XmBr/97gHKUgWtDJzyBowxy7Ec9jLq5cKzyzq0AHrTQK7SoZM/UQyJGG36e4sp+ZNOapnF IZUyAnOZnkbRyilWJdsW7Pm0acKBhsTgAV5iFe8MRIVcxmLQbLY90TdLfUvvaw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708750; a=rsa-sha256; cv=none; b=qM+hbl/kLU01raLYQrCEffU5JX5qFStf5u481VlRX8XXiVi7FwCQGcoSJzPXJM5Asp330V c0TpppCrAKk5F7Ke2qMHcutbArmbM4qfDkSS9JtPqZg9wZDnai31Gi/XVzv0FsurJvu7DI yjkg3z37YU1WSu39nGY2TY4ruvZtbh42gYz6oZph3pPWHJ1bdZzzk/VUm9rYAuXRHIBX4T 8+nNlOuSEz6fofU/FO39xRDQW414w30gcukJSAt7Y+Z9QxA9huZi5TjPrazf9RdMikcfBN M7/ziIVkYoLFnqVeetv4+CWwCWgfaS6h/f1hjUMDu2ixCAaCd/mbC6YiXs5i2w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3Ch3g6TuFXbBGDzY/pxikNSh1zXdYwUZR0kgRTJ5mvg=; b=AOZWTcjWnNF2dtNxxqQn32JCLMnUcvaZpyND0wPdDzWEqLfzgX/x5jAsJI5uGt78Lrnefl wYElPu5rSe9612pEUPoNdogbJpUYOpVd5vY2lxZri5pPz9pNDI1dMdgg1wW35pcuqv8MLY tHQuI81exMrrLUBbxBwBP7p8LU57D06RA+gMDP4FN67yvjOPZyZLQwpv610bLxY6rUaAtq RtuownIaX/oKoqGjkD22kpA8I1lHSlNebE9FdgCefIkGaii2EPry5iQyAHT/EfvuoVCIWe wVIVlqa1yuar+ANEF9m+qSTBP63DepbF+mToCQNQBtfq1cP5NHpNSt2GbvIKnQ== 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 4ZTBhZ4TS3zM4; Thu, 03 Apr 2025 19:32: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 533JWU9t040610; Thu, 3 Apr 2025 19:32:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWUOK040608; Thu, 3 Apr 2025 19:32:30 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:30 GMT Message-Id: <202504031932.533JWUOK040608@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8bf992d2ebad - stable/14 - MAC/do: parse_rules(): Tolerate blanks around tokens List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8bf992d2ebadfe287909be02e6d0a51409597b05 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8bf992d2ebadfe287909be02e6d0a51409597b05 commit 8bf992d2ebadfe287909be02e6d0a51409597b05 Author: Olivier Certner AuthorDate: 2024-11-12 17:13:26 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:05 +0000 MAC/do: parse_rules(): Tolerate blanks around tokens To this end, we introduce the strsep_noblanks() function, designed to be a drop-in replacement for strstep(), and use it in place of the latter. We had taken care of calling strsep() even when the remaining sub-string was not delimited (i.e., with empty string as its second argument), so this commit only has mechanical replacements of existing calls. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47623 (cherry picked from commit 4a03b64517b3151064c52e213ebbc068ab1430d1) --- sys/security/mac_do/mac_do.c | 61 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index dc5933930a41..669f0cfefdfb 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -381,6 +381,48 @@ strtoui_strict(const char *const restrict s, const char **const restrict endptr, return (0); } +/* + * strsep() variant skipping spaces and tabs. + * + * Skips spaces and tabs at beginning and end of the token before one of the + * 'delim' characters, i.e., at start of string and just before one of the + * delimiter characters (so it doesn't prevent tokens containing spaces and tabs + * in the middle). + */ +static char * +strsep_noblanks(char **const stringp, const char *delim) +{ + char *p = *stringp; + char *ret, *wsp; + size_t idx; + + if (p == NULL) + return (NULL); + + idx = strspn(p, " \t"); + p += idx; + + ret = strsep(&p, delim); + + /* Rewind spaces/tabs at the end. */ + if (p == NULL) + wsp = ret + strlen(ret); + else + wsp = p - 1; + for (; wsp != ret; --wsp) { + switch (wsp[-1]) { + case ' ': + case '\t': + continue; + } + break; + } + *wsp = '\0'; + + *stringp = p; + return (ret); +} + static void make_parse_error(struct parse_error **const parse_error, const size_t pos, @@ -485,7 +527,7 @@ parse_target_clause(char *to, struct rule *const rule, MPASS(*parse_error == NULL); MPASS(to != NULL); - to_type = strsep(&to, "="); + to_type = strsep_noblanks(&to, "="); MPASS(to_type != NULL); to_type += parse_gid_flags(to_type, &is.flags, &gid_flags); error = parse_id_type(to_type, &type, parse_error); @@ -498,7 +540,7 @@ parse_target_clause(char *to, struct rule *const rule, goto einval; } - to_id = strsep(&to, ""); + to_id = strsep_noblanks(&to, ""); switch (type) { case IT_GID: if (to_id == NULL) { @@ -829,7 +871,7 @@ parse_single_rule(char *rule, struct rules *const rules, /* Freed when the 'struct rules' container is freed. */ new = malloc(sizeof(*new), M_DO, M_WAITOK | M_ZERO); - from_type = strsep(&rule, "="); + from_type = strsep_noblanks(&rule, "="); MPASS(from_type != NULL); /* Because 'rule' was not NULL. */ error = parse_id_type(from_type, &new->from_type, parse_error); if (error != 0) @@ -844,7 +886,7 @@ parse_single_rule(char *rule, struct rules *const rules, goto einval; } - from_id = strsep(&rule, ":"); + from_id = strsep_noblanks(&rule, ":"); if (is_null_or_empty(from_id)) { make_parse_error(parse_error, 0, "No ID specified."); goto einval; @@ -869,7 +911,7 @@ parse_single_rule(char *rule, struct rules *const rules, * allows to minimize memory allocations and enables searching IDs in * O(log(n)) instead of linearly. */ - to_list = strsep(&rule, ","); + to_list = strsep_noblanks(&rule, ","); if (to_list == NULL) { make_parse_error(parse_error, 0, "No target list."); goto einval; @@ -882,7 +924,7 @@ parse_single_rule(char *rule, struct rules *const rules, goto einval; } - to_list = strsep(&rule, ","); + to_list = strsep_noblanks(&rule, ","); } while (to_list != NULL); if (new->uids_nb != 0) { @@ -949,7 +991,10 @@ einval: * is "uid" or "gid", an UID or GID (depending on ) and is * "*", "any" or a comma-separated list of '=' clauses (see the * comment for parse_single_rule() for more details). For convenience, empty - * rules are allowed (and do nothing). + * rules are allowed (and do nothing), and spaces and tabs are allowed (and + * removed) around each token (tokens are natural ones, except that + * '' as a whole is considered a single token, so no blanks are + * allowed between '' and ''). * * Examples: * - "uid=1001:uid=1010,gid=1010;uid=1002:any" @@ -982,7 +1027,7 @@ parse_rules(const char *const string, struct rules **const rulesp, MPASS(copy[len] == '\0'); /* Catch some races. */ p = copy; - while ((rule = strsep(&p, ";")) != NULL) { + while ((rule = strsep_noblanks(&p, ";")) != NULL) { if (rule[0] == '\0') continue; error = parse_single_rule(rule, rules, parse_error); From nobody Thu Apr 3 19:32:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhc2pnBz5sM4Q; Thu, 03 Apr 2025 19:32: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 4ZTBhb5bllz3SsL; Thu, 03 Apr 2025 19:32:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XFMYKNdG4wOeokRIG/adhXzlQIb9GiiJFJ3LR9GP10M=; b=qGmTn3TnPFA7vxtdQUqw4m7ZEkB2z+EbxRkrMMGbfvNOWH1lLePLsQLMeoOFrP0lW89UU3 iq4MgDtFTLyS9a/FbyquheW9mwnVRtmm48lIU41+TJqjdaHaL3fg0mz2LNIhbBsUwNIc3u Jw/Orh8r+ohdTRxa1o4H+gUS5aXvcSp9JQ3vKV4z0yqQOhUV0FQP8JGQ6NuBIJOSju5lXF 4ISm+rN8KJYy3of4P0xm9mVaQkteVHEdkDGdri17+aOI6cx8J5C1A5KAgJQD1jInpAenyr KCYgQvCxYGMlU9KP2OYR9xHCnvJRRj/PDTrp5qPHCWsd89jAZODOxCCw1XM+7Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708751; a=rsa-sha256; cv=none; b=BhX5L5OXQeQeSHib9FPPKciHxhL/L1Igjoy1khe+e6aeuUDGFLuFR04jg7f9ks4JRBq+Wf 4xTyIBZMKSb7UxI2mS5BISKTeutMuMC6+8tcRiNzvMcJC7t16umDNjHTf29CFC+5TZ2Bdz fJlaOTSB01i4MLER8fK7hrJmPkUqOmok4QzvT82YuvCKXrrPlIMmNcTXi2N3wm6uK0Cuwx OqENzBc1XXsfppEtmOrxf/T2mMCDQWQkXkHw5F1700k3GFLjVrTc+Kekaz6xQap9u6tPvw bNfeJtWtPNrIQJad8b4JNWtjZWxh9cRsU7CBZi3vKs6nOrWMBVAa+C6dJyye+w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XFMYKNdG4wOeokRIG/adhXzlQIb9GiiJFJ3LR9GP10M=; b=rKkUuX2xFGbVBgjalBZ1CtYVtXFKpVzD9Q5JMESyjeyS/yT3t2Fe5vkJt5NpyW6q/MUGsp xPoJKj1VwPgr1m3Tg1dKYeq89IBqggNfsKhymfbKFDHsohmkaQ2Y5n/7GEAL4ZZOercPGX NO/IgPTWCA8n4pifMl/sZljlpew11PpZAO4RBsiPMF5phXS8Xlt+yuma75NemK6WR3+XRY d+svnKruxQnxBq/F2ocQaiuCBReiKvqEr7w6kA3T4ZGC2rZOZrzNOgA82DZryhp2B3jIKw xSFf1cdzUHxw2LGZyZLfgIv4YtSjCt3CRSSz/3S2qDKrltGrN1JkZa8sZqvTtA== 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 4ZTBhb5BxbzsB; Thu, 03 Apr 2025 19:32:31 +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 533JWVwZ040645; Thu, 3 Apr 2025 19:32:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWVxi040642; Thu, 3 Apr 2025 19:32:31 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:31 GMT Message-Id: <202504031932.533JWVxi040642@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 53e73ec9f6c4 - stable/14 - MAC/do: Convert internal TAILQs to STAILQs List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 53e73ec9f6c41ca8f35258b64d8a57cbc4bb2b16 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=53e73ec9f6c41ca8f35258b64d8a57cbc4bb2b16 commit 53e73ec9f6c41ca8f35258b64d8a57cbc4bb2b16 Author: Olivier Certner AuthorDate: 2024-11-12 17:31:33 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:06 +0000 MAC/do: Convert internal TAILQs to STAILQs We only browse these forward and never need to remove arbitrary elements from them. No functional change (intended). Reviewed by: bapt, emaste Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47624 (cherry picked from commit c7fc71c6af0761f81ecafdb281dd43a081b3b22f) --- sys/security/mac_do/mac_do.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 669f0cfefdfb..44c33d7cfa57 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -147,7 +147,7 @@ typedef uint16_t id_nb_t; typedef uint16_t id_type_t; struct rule { - TAILQ_ENTRY(rule) r_entries; + STAILQ_ENTRY(rule) r_entries; id_type_t from_type; u_int from_id; flags_t uid_flags; /* See MDF_* above. */ @@ -158,7 +158,7 @@ struct rule { struct id_spec *gids; }; -TAILQ_HEAD(rulehead, rule); +STAILQ_HEAD(rulehead, rule); struct rules { char string[MAC_RULE_STRING_LEN]; @@ -171,11 +171,11 @@ struct rules { */ struct id_elem { - TAILQ_ENTRY(id_elem) ie_entries; + STAILQ_ENTRY(id_elem) ie_entries; struct id_spec spec; }; -TAILQ_HEAD(id_list, id_elem); +STAILQ_HEAD(id_list, id_elem); #ifdef INVARIANTS static void @@ -313,7 +313,7 @@ toast_rules(struct rules *const rules) struct rulehead *const head = &rules->head; struct rule *rule, *rule_next; - TAILQ_FOREACH_SAFE(rule, head, r_entries, rule_next) { + STAILQ_FOREACH_SAFE(rule, head, r_entries, rule_next) { free(rule->uids, M_DO); free(rule->gids, M_DO); free(rule, M_DO); @@ -328,7 +328,7 @@ alloc_rules(void) _Static_assert(MAC_RULE_STRING_LEN > 0, "MAC_RULE_STRING_LEN <= 0!"); rules->string[0] = 0; - TAILQ_INIT(&rules->head); + STAILQ_INIT(&rules->head); rules->use_count = 0; return (rules); } @@ -730,7 +730,7 @@ parse_target_clause(char *to, struct rule *const rule, } ie = malloc(sizeof(*ie), M_DO, M_WAITOK); ie->spec = is; - TAILQ_INSERT_TAIL(list, ie, ie_entries); + STAILQ_INSERT_TAIL(list, ie, ie_entries); check_type_and_id_spec(type, &is); check_type_and_finish: check_type_and_type_flags(type, *tflags); @@ -776,14 +776,14 @@ pour_list_into_rule(const id_type_t type, struct id_list *const list, size_t idx = 0; /* Fill the array. */ - TAILQ_FOREACH_SAFE(ie, list, ie_entries, ie_next) { + STAILQ_FOREACH_SAFE(ie, list, ie_entries, ie_next) { MPASS(idx < *nb); array[idx] = ie->spec; free(ie, M_DO); ++idx; } MPASS(idx == *nb); - TAILQ_INIT(list); + STAILQ_INIT(list); /* Sort it (by ID). */ qsort(array, *nb, sizeof(*array), id_spec_cmp); @@ -865,8 +865,8 @@ parse_single_rule(char *rule, struct rules *const rules, int error; MPASS(*parse_error == NULL); - TAILQ_INIT(&uid_list); - TAILQ_INIT(&gid_list); + STAILQ_INIT(&uid_list); + STAILQ_INIT(&gid_list); /* Freed when the 'struct rules' container is freed. */ new = malloc(sizeof(*new), M_DO, M_WAITOK | M_ZERO); @@ -935,7 +935,7 @@ parse_single_rule(char *rule, struct rules *const rules, if (error != 0) goto einval; } - MPASS(TAILQ_EMPTY(&uid_list)); + MPASS(STAILQ_EMPTY(&uid_list)); if (!has_clauses(new->uids_nb, new->uid_flags)) { /* No UID specified, default is "uid=.". */ MPASS(new->uid_flags == 0); @@ -951,7 +951,7 @@ parse_single_rule(char *rule, struct rules *const rules, if (error != 0) goto einval; } - MPASS(TAILQ_EMPTY(&gid_list)); + MPASS(STAILQ_EMPTY(&gid_list)); if (!has_clauses(new->gids_nb, new->gid_flags)) { /* No GID specified, default is "gid=.,!gid=.". */ MPASS(new->gid_flags == 0); @@ -960,16 +960,16 @@ parse_single_rule(char *rule, struct rules *const rules, check_type_and_type_flags(IT_GID, new->gid_flags); } - TAILQ_INSERT_TAIL(&rules->head, new, r_entries); + STAILQ_INSERT_TAIL(&rules->head, new, r_entries); return (0); einval: free(new->gids, M_DO); free(new->uids, M_DO); free(new, M_DO); - TAILQ_FOREACH_SAFE(ie, &gid_list, ie_entries, ie_next) + STAILQ_FOREACH_SAFE(ie, &gid_list, ie_entries, ie_next) free(ie, M_DO); - TAILQ_FOREACH_SAFE(ie, &uid_list, ie_entries, ie_next) + STAILQ_FOREACH_SAFE(ie, &uid_list, ie_entries, ie_next) free(ie, M_DO); MPASS(*parse_error != NULL); return (EINVAL); @@ -1279,7 +1279,7 @@ mac_do_jail_get(void *obj, void *data) rules = find_rules(pr, &ppr); jsys = pr == ppr ? - (TAILQ_EMPTY(&rules->head) ? JAIL_SYS_DISABLE : JAIL_SYS_NEW) : + (STAILQ_EMPTY(&rules->head) ? JAIL_SYS_DISABLE : JAIL_SYS_NEW) : JAIL_SYS_INHERIT; error = vfs_setopt(opts, "mac.do", &jsys, sizeof(jsys)); if (error != 0 && error != ENOENT) @@ -1967,7 +1967,7 @@ mac_do_priv_grant(struct ucred *cred, int priv) * privilege granting functions interpreting the "to"/"target" part. */ error = EPERM; - TAILQ_FOREACH(rule, &rules->head, r_entries) + STAILQ_FOREACH(rule, &rules->head, r_entries) if (rule_applies(rule, cred)) { error = rule_grant_setcred(rule, cred, new_cred); if (error != EPERM) From nobody Thu Apr 3 19:32:32 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhd2bsQz5sLwn; Thu, 03 Apr 2025 19:32: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 4ZTBhc6VyMz3T5D; Thu, 03 Apr 2025 19:32:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708752; h=from:from:reply-to:subject:subject: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/l7Z8Q27vOehYMNQbwSHL23ceK0JM9bdTWrNDOOjaU=; b=iaZUTOiyh2Zc0d2ssInmD+Gwwd5b8gjRTI90cS1ZF8s7oBWsCUCaIjho7UqDpoHwHxRqBL a0A4ImTHYG8rmIkAaIVGHCUyqXkW/hPZFwbxOh9bIHYCcGvjLOB5jTKcuqpvtV2a5xSONt JGjAo7t5R3i3P8TJHJ/Txp9IiT81wngn8Vd0etbZoDaDtUxfrLSpmr0YbeLpcV4DMI1lTc TYlIZpAOyhtlkgzHX0qfD1YwBgtTZW0d4JHnz71IeRdL9AILjh7uzv5+A8v7ih+sl7OLz1 cKkr8IJd25XVE5qllzUDJHy+aPW7hgIsxBxw9k198qdDRv0dWOsdADwg0WDkhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708752; a=rsa-sha256; cv=none; b=AFeOPY36gPMZk5NPCPZWfK8MbMgBLn9k9TCmWX7badpJ2SSvScrTPGR5UfyaHmN/pOqQqn 9pLUGtqKzf2BD2MaW7K11RpEYwOPyMHfK6gkOTk4hlU3+IoziY1HpPDE9vXnUtbQv/uN4u bBPnzt3J8FhuAYJFNTI8VFR9J+/iybzyg72a9xAQdQuybK1k6rJ1qLD2xslw1vRfS/agac nxle3RJYXfKsfJcP56Mko52M44bijItTL8ZpRwuz/zV5ItPq2a1rJ2Kk9nmTa+xwtsQpUy PFIMSPOZhHTxOA0EjCeiOqtrVewZHogejSkv6asXK47LmphtqoeTBNj02uiXow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708752; h=from:from:reply-to:subject:subject: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/l7Z8Q27vOehYMNQbwSHL23ceK0JM9bdTWrNDOOjaU=; b=VmU8Z+eE3LCrFLU07avOscLaPTWfq1T8bC+EVSpHW5q60dTsihCupXiVcreo8qEXKDDvaY k8YLMB/7uNLmngdBPl6k4t5/h/O1jNr+1+dbClteNOKIolCl1sQD0t/eRJH1ddGEzSOXD5 rGrfr/zEBg+S8yiR1OuHHWH0iKBP+JfzCUGCsPiuMT9EHd/+EDWpFVOde2eloxBk5OVFtr irmyb02MPU0/yZbTUp66AIOeg6DBjcTzFCboky9JhTjkXUc5Na5rFVmHQ6VGaSwhzQ90JF XwuS+hmKoegUhfci/rgy9n8OgWLwkTSPn9QCdgUoxRsZkX+ujBQenmbkrAJQiA== 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 4ZTBhc5qWCzZv; Thu, 03 Apr 2025 19:32: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 533JWW9R040679; Thu, 3 Apr 2025 19:32:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWWLd040676; Thu, 3 Apr 2025 19:32:32 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:32 GMT Message-Id: <202504031932.533JWWLd040676@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 8f72bcd9fd5d - stable/14 - MAC/do: Apply a rule on real UID/GID instead of effective ones List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8f72bcd9fd5d951fe673ca4c3dfef017f39c672e Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=8f72bcd9fd5d951fe673ca4c3dfef017f39c672e commit 8f72bcd9fd5d951fe673ca4c3dfef017f39c672e Author: Olivier Certner AuthorDate: 2024-11-29 14:39:17 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:06 +0000 MAC/do: Apply a rule on real UID/GID instead of effective ones We intend MAC/do to authorize transitions based on the "real" identity information of the calling process, rather than transiently-acquired effective IDs. Reviewed by: bapt Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D47845 (cherry picked from commit de701f9bdbe0ede691a0439d1c469082b94fe234) --- sys/security/mac_do/mac_do.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 44c33d7cfa57..7ec34b20c882 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -1906,9 +1906,9 @@ rule_grant_setcred(const struct rule *const rule, static bool rule_applies(const struct rule *const rule, const struct ucred *const cred) { - if (rule->from_type == IT_UID && rule->from_id == cred->cr_uid) + if (rule->from_type == IT_UID && rule->from_id == cred->cr_ruid) return (true); - if (rule->from_type == IT_GID && groupmember(rule->from_id, cred)) + if (rule->from_type == IT_GID && realgroupmember(rule->from_id, cred)) return (true); return (false); } From nobody Thu Apr 3 19:32:33 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhf4R1Fz5sMG0; Thu, 03 Apr 2025 19:32: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 4ZTBhf0T08z3Ssk; Thu, 03 Apr 2025 19:32:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uly7TnOmSY59SCe769jgu8TPHVNGdMO6nxxlx5T1RM4=; b=mTH5lGuTehIzrJvX6t6Wt0pSXgrsX4mc5EtiUpeaAFDrkzzfjYxnafuDCj05acWAvf2Tjt /4OYZ5hcwhl7iAmZQzMTU/TusWnqf9U2VFb9AF7NVh4IZ+fGe1Kj3Pwopq2vHCAxitQljG e6hwA8H3hmqUgd8ZVy84f5GaD0V6TcdjRM9K7FpAr7D36oicCqV/yyvlLLikUJb/uxmzpd SQnI3mxjogaBgWiX2XzFPjh5gO3jSf0/6XGFymfsjSyJYgfCCUAZMvfzDTd4SKFOVjo+s5 d6W1D3pYc01V6MalNsvOq2gvFmx5EIWJ7Y24Gh5LCh3sLg3NOkzG2ThZ4eAvnQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708754; a=rsa-sha256; cv=none; b=oFN3hO8uPxyGJRFilP0u9GJmk3whjJQY1Qira7OIQLF2rxZPzuG3OBChAaX/QKf6Jr6t29 oYk7+he59xFsgHJzwtb5H30zOx1VQObW2gaBL2mW5Kj5+sFHD56eFSAue48Dk5ByaMKByJ HlLnSN02iGYiveLVE59HW52lORpV7a/S/nati6V6Y+PLZyY95Y8jQW5Jebja6kRvkjpNxV Ce4MCXGN7uPjPFNstcMCb2cT16FLp/Bhrew/kCTKLRgmVy8NFUr/wckoT18RQWzzVK5f40 +SjpeyKLN42YmUL6QJGsSxL7VAVhSsc6327mZKfVxblckhCyiemzXn0KvTLkyg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uly7TnOmSY59SCe769jgu8TPHVNGdMO6nxxlx5T1RM4=; b=kUgVBji44ERWZmP0UJ942PidUqqECBP/El3Jc15vggMoKzmWOMb7DP9tuPRdsw38K54YOX rQ4530EJ9MeP+dgbeUwLLgzY2kaUgVTZbQa0nFLWQ9zK4wmUQEwbC3QHIIBKR9l+CvDVpW OlfqlmzYDLrF92wXlOUOdV2nF3/8VM0537XnBL1CyxqHeLqNGoa+OebqRyGPvHuquDbGw8 vxfi3nA/7JT0l66U/f3q4nTMryXlFxQBRYf/4pE6JqFInMPiY3I+TjXwWPXIXNnAj0c39q IKDihp2Xbh5E23EJcpMq00gV9dBnDS4w2juavmABJujBy60bcOx2XIDxJfV5bQ== 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 4ZTBhf01PmzkZ; Thu, 03 Apr 2025 19:32: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 533JWXpu040713; Thu, 3 Apr 2025 19:32:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWXiW040710; Thu, 3 Apr 2025 19:32:33 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:33 GMT Message-Id: <202504031932.533JWXiW040710@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: ba9aea5dc0e0 - stable/14 - MAC/do: Update copyright List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ba9aea5dc0e02375d0c46762b39d60f9a7d4b68a Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=ba9aea5dc0e02375d0c46762b39d60f9a7d4b68a commit ba9aea5dc0e02375d0c46762b39d60f9a7d4b68a Author: Olivier Certner AuthorDate: 2024-12-16 16:52:14 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:06 +0000 MAC/do: Update copyright Approved by: emaste (mentor) Sponsored by: The FreeBSD Foundation (cherry picked from commit e94684b3e0d966f755f785e4908317bd6bdd2ea0) --- sys/security/mac_do/mac_do.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index 7ec34b20c882..c5f986920db1 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -1,7 +1,12 @@ /*- + * SPDX-License-Identifier: BSD-2-Clause + * * Copyright(c) 2024 Baptiste Daroussin + * Copyright (c) 2024 The FreeBSD Foundation * - * SPDX-License-Identifier: BSD-2-Clause + * Portions of this software were developed by Olivier Certner + * at Kumacom SARL under sponsorship from the FreeBSD + * Foundation. */ #include From nobody Thu Apr 3 19:32:35 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhg6XQkz5sMCd; Thu, 03 Apr 2025 19:32: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 4ZTBhg1Qrwz3SvQ; Thu, 03 Apr 2025 19:32:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D2Xzck3Da5HG2WF7cnYfxmz9SnAhPp7dpyqlgo1YurI=; b=ZBMNaSTjEkwOOKdw+1ad+6TMIzlNs+cG+RjZe03s5oStf+gQjUVwa+6CnWBg7hjpaJK/2P sYyF+dqT2A31q3jOye3OYB0sIt7fVcs+DxCkzs8R5ykjHgOjdjhiiEd3qHRI3inbidBPJA cwKpGqdn0I/m7SmRW59rbr5vXXKTOb/KXEIGJ5rrzgAGf1M9mNsobnceH2UpqF2NFhkFSr NtQxRd/tv5QcPHorW0nb0PROqkcOH58f443RkuZv9JS4Vu9p5d3KH4rcUFruhu8LjNTS25 nuzxc0WXj7eYmgMMnyUZTFco4jvMKKydW8bl+RgYcEsW36O6Y7a552KWZTXnOQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708755; a=rsa-sha256; cv=none; b=TA3JNvYc+WjBTVXyIhwNMuKz1j2Vcd14xyCeYmV7A0j86wysiefg0jLQFToNl/MUhRy7Vn pl+xkiiT8KI5ZWdRqwQQscfsSeYmFr9Eje2v41G7rRGB5oet2tPAle7uagnwaF7JhE4R0L 9FIF62JSb7cn0So974ycod1LdZ7t5htaKaQ0Ub7zRbdH1etM62KbP95774dkStIsazPf/E vdzf2RlIGhEWiwsr59F6BH6YZtAY819iAnNY/PpSKdz3JxvPtV52GUhZTxU6zzv/t0vZTi CK7gO6TCJ4W+xIyuCCFGdsNcWwo3vGLqOl6Ay4MfC7EvPpIYkPDtsIqFwnmOvQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D2Xzck3Da5HG2WF7cnYfxmz9SnAhPp7dpyqlgo1YurI=; b=AIGHJ0+0QhAzhbthuAEHoFrGM955Kjn/YhniE/WmKLf6O/gAv77quFua1E0w0w5iV6NnAv itJHoefbyZO4e8gL49jIOpMjgIPoYe+wkT+t5MGZ5ER8znhmVlofknlhDpDCCvwB89uynT RW6Dp8W0L18qroC8cXUUhtX1QsHMo5qRN/qhgm3xvI9OeURM5t7I2rkyf67XB5ltGvmcBa szyKbLo4H2ZQTrdQjxDjEbx/wSTZzrU95haXIemsMsidQreYG+iB+8h79nPxixc7kmpE95 ZUDQqXtJcH42tgtL5XrNt69dYm612R+rIU3tOMI7D876polt+OCZRl6AjIkzjQ== 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 4ZTBhg0n7mzmw; Thu, 03 Apr 2025 19:32: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 533JWZdG040747; Thu, 3 Apr 2025 19:32:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWZ3v040744; Thu, 3 Apr 2025 19:32:35 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:35 GMT Message-Id: <202504031932.533JWZ3v040744@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: f9b5d5bf1186 - stable/14 - MAC/do: Fix a compilation warning about an unused function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f9b5d5bf1186d4b01e92229d271f2cb0d8764b25 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=f9b5d5bf1186d4b01e92229d271f2cb0d8764b25 commit f9b5d5bf1186d4b01e92229d271f2cb0d8764b25 Author: Olivier Certner AuthorDate: 2024-12-17 14:17:16 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:06 +0000 MAC/do: Fix a compilation warning about an unused function grant_supplementary_group_from_flags() had been used in previous versions of the recent changes, but recently has not been needed anymore. It has been kept around just in case deliberately, by analogy with grant_primary_group_from_flags() (this one still being used). (cherry picked from commit f1ddb6fb8c4d051a205dae3a848776c9d56f86ff) --- sys/security/mac_do/mac_do.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/security/mac_do/mac_do.c b/sys/security/mac_do/mac_do.c index c5f986920db1..8175f8ccdab4 100644 --- a/sys/security/mac_do/mac_do.c +++ b/sys/security/mac_do/mac_do.c @@ -1628,7 +1628,7 @@ grant_primary_group_from_flags(const flags_t flags) * - EJUSTRETURN: Flags are agnostic. * - EPERM: Access denied. */ -static int +static int __unused grant_supplementary_group_from_flags(const flags_t flags) { if ((flags & MDF_SUPP_MASK) != 0) From nobody Thu Apr 3 19:32:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhk0Qmbz5sLt5; Thu, 03 Apr 2025 19:32: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 4ZTBhj47KJz3Syr; Thu, 03 Apr 2025 19:32:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Tpi/vqv8MyXJ1DxIy/bS06Q5AQ1awa47Z0wtmPd2zNY=; b=Am8YZPpKC4HvHEfFrFNdtKaswkCp4DI7z29GEsgl9cxoFbj/Si8oOhTE5ml75BQNBHq/pA gRjruL/Y+TJD9wHSJGMry1xY62bVmLOY3i5LB1wuvloGA0rndiD1AfMpC6pSnUsdCV/ZkK h4EUd0ioHwwpdhwkg/z/Q6B5E+6yUueCKjIrQ8/0xIK33dBibd5xiks18iBJ7CqK6Q2dP2 coPH+8wOsaXPv8EeqXgmIwW1gzU/B8BzODiOl4xnrWkj48aTx3ShkhO+RGjv/Q8Ppgsbbj NAXTS3veY5Ch6p8bsyMDtMEJnnjNSFENDuzKpT3XJurfyrTR0fSlcCwvyDtI6A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708757; a=rsa-sha256; cv=none; b=fyKyj6EIPA0nvHehHqJ9LFrC3VuAWMDRL2//700rRmJ8cRHNW/Bb1OW1Z3E9QvkM76aeOd nspXikPhcWcUZ9IR8ugteJEE3tFtYF3tg8UvN+VfDKMkRg7nLF2Ridx5Ypppha++UWmPiO +WgWySpPsVFjiIlQ197hzog0khu8726VG8oeL9M+R/T8sBCj87URDYBkRhfIM3aSPJZ8b8 qKnvVAohURZvMWowEVX3ro2Y9GkkDTWKKAdM7ffB2V+vYJjEJ59lqp3FZoR8b6Xxbm8qfo evEf6tp44+1zdxW8/eJOb5wdziam6Vu1omeCB2pFw9tWpiM7MFbi01TjaDuH7w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Tpi/vqv8MyXJ1DxIy/bS06Q5AQ1awa47Z0wtmPd2zNY=; b=OMr6QHeZ4+zi9FLiAKmW02LKMrIShWHPf5jhN1WWmgib794Hq+QzZGniPNQ2WxUziJrNM4 +/DuA/Yvf/23AE9bczUUnWqwCKnQqvN7e+IJlBinECIx268GXR7MOEeQvzP8ippH8YSo2r 4yAuaDVbG7nxLBMZMvR0V4DSt0M+M1EkNFmyc2Cj3EHkxGjjchv+Q1ELC6cywStjawD195 DJ7V+rM0Wgf8Cc9TQ4oxTFEZMb/xP4wxQs6PpWNCnE5SCbvhibHZ8D5k8W0g56qFLzIfsm 8+EMX5XWcxYamjU/Thce+GjdVR0+rKno70GMSaK+Ay4qah3Q5wi7Vl/60vmNkw== 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 4ZTBhj2tXjzpg; Thu, 03 Apr 2025 19:32: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 533JWbwF040824; Thu, 3 Apr 2025 19:32:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWb5Q040821; Thu, 3 Apr 2025 19:32:37 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:37 GMT Message-Id: <202504031932.533JWb5Q040821@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: f74cd62b5c71 - stable/14 - mac_do(4): Revamp manual page after MAC/do updates List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f74cd62b5c71796f20c0f8a40b2364fd6b4fc1ee Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=f74cd62b5c71796f20c0f8a40b2364fd6b4fc1ee commit f74cd62b5c71796f20c0f8a40b2364fd6b4fc1ee Author: Olivier Certner AuthorDate: 2024-12-19 21:13:12 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:07 +0000 mac_do(4): Revamp manual page after MAC/do updates The new manual page in particular describes MAC/do's new rules syntax and the jail support, as well as security considerations explaining the overall design and how to leverage it in the most secure fashion. Reviewed by: bapt, otis, Alexander Ziaee (in part) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48153 (cherry picked from commit bc201841d13928c2a088fb07ac0a010b36eafa13) --- share/man/man4/mac_do.4 | 460 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 417 insertions(+), 43 deletions(-) diff --git a/share/man/man4/mac_do.4 b/share/man/man4/mac_do.4 index aa84a71b4953..9a9f669cd51c 100644 --- a/share/man/man4/mac_do.4 +++ b/share/man/man4/mac_do.4 @@ -1,38 +1,274 @@ .\"- +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2024 Baptiste Daroussin +.\" Copyright (c) 2024 The FreeBSD Foundation .\" -.\" SPDX-License-Identifier: BSD-2-Clause +.\" Portions of this documentation were written by Olivier Certner +.\" at Kumacom SARL under sponsorship from the FreeBSD +.\" Foundation. .\" -.Dd May 22, 2024 +.Dd December 19, 2024 .Dt MAC_DO 4 .Os .Sh NAME .Nm mac_do -.Nd "policy allowing user to execute program as another user" +.Nd "policy allowing unprivileged users to change process credentials" .Sh SYNOPSIS To compile the -.Nm -policy into your kernel, place the following lines -in your kernel configruation file: +.Sy mac_do +policy into your kernel, place the following lines in your kernel configuration +file: .Bd -ragged -offset indent .Cd "options MAC" .Cd "options MAC_DO" .Ed +.Pp +Alternately, to load this policy module at boot time, place the following line +in your kernel configuration file: +.Bd -ragged -offset indent +.Cd "options MAC" +.Ed +.Pp +and in +.Xr loader.conf 5 : +.Bd -literal -offset indent +mac_do_load="YES" +.Ed .Sh DESCRIPTION The .Nm -policy grants users the ability to run processs as other users -according to predefined rules. +policy module allows unprivileged users to change process credentials according +to rules configured by the administrator. +It supports per-jail configuration. +.Pp +Currently, the +.Nm +policy module only produces effects to processes spwaned from the +.Pa /usr/bin/mdo +executable, please see +.Xr mdo 1 +for more details on this program. +.Sh CREDENTIALS RULES +Rules specify which transitions of process credentials +.Nm +will allow, based on current process credentials and the desired final ones. +They are passed by an administrator in the form of a string having the specific +syntax described below in a top-bottom manner. +They have been designed to be able to finely describe the desired target +credentials in a safe and compact way. +.Ss Top-Level List of Rules +At the top, rules are a possibly empty list of individual rules separated by +a semi-colon +.Pq Ql ";" : +.Dl Ao rules Ac \ ⟶\ Oo Ao rule Ac Oo So ";" Sc Ao rule Ac Oc Ns * Oc +They form a disjunction, i.e., +.Nm +authorizes a credentials transition as soon as at least one rule in the list +matches. .Pp -The exact set of kernel privileges granted are: -.Bl -inset -compact -offset indent -.It Dv PRIV_CRED_SETGROUPS -.It Dv PRIV_CRED_SETUID +One rule is composed of a +.Li Aq from +part +.Pq also called Dq match +and a +.Li Aq to +part +.Pq also called Dq target , +in this order, separated by a colon +.Pq Ql ":" : +.Dl Ao rule Ac \ ⟶\ Ao from Ac So ":" Sc Ao to Ac +.Ss Rule's Ao from Ac Part +The first part of a rule, +.Li Aq from , +is matched against the credentials of the process requesting some credentials +transition. +It has the form: +.Dl Ao from Ac \ ⟶\ Ao type Ac So = Sc Ao id Ac +.Pp +.Li Aq type +must be: +.Dl Ao type Ac \ ⟶\ Op So uid Sc | So gid Sc +i.e., one of the literal strings +.Ql uid +or +.Ql gid . +.Li Aq id +must be the numerical ID of a user or group, and is matched with the current +process real ID of the corresponding type. +.Ss Rule's Ao to Ac Part +The second part of a rule, +.Li Aq to , +is a comma-separated +.Pq Ql "," +non-empty list of target clauses: +.Dl Ao to Ac \ ⟶\ Ao target_clause Ac Oo So "," Sc Ao target_clause Ac Oc Ns * +Target clauses of a given rule also form a disjunction, i.e., the IDs they +specify are alternatives for the target credentials, except in some cases +described below. +.Pp +The next subsections describe the syntax of target clauses, the defaults that +apply and the principle of non-redundancy and non-contradiction in each rule's +.Li Aq to +part. +.Ss Target Clauses +A target clause in a rule's +.Li Aq to +part must be of one of the following forms: +.Dl Ao target_clause Ac \ ⟶\ So any Sc +.Dl Ao target_clause Ac \ ⟶\ Ao flags Ac Ao type Ac So = Sc Ao id Ac +The first form is a compact way to specify that any target credentials are +allowed. +The second form is similar to that of +.Li Aq from +clauses, with the following extensions: +.Bl -bullet -compact +.It +.Li Aq id +may also be a literal +.Ql * +or +.Ql any +or +.Ql "." . +.Ql * +and +.Ql any +both designate any ID for the specified +.Li Aq type , +and are treated identically. +.Ql "." +designates the process' current IDs for the specified +.Li Aq type , +as explained below. +.It +.Li Aq flags +may contain at most one of the +.Ql + , +.Ql - +and +.Ql "!" +characters, and may be non-empty only when +.Li Aq type +is +.Ql gid . +Additionally, if +.Li Aq id +is +.Ql * +or +.Ql any , +only the +.Ql + +flag may appear. +.El +.Pp +For target clauses of +.Ql gid +type, an absence of flag indicates that the specified group ID is allowed as the +real, effective and/or saved group IDs +.Pq the Do primary Dc groups . +Conversely, the presence of any allowed flag indicates that the specification +concerns supplementary groups. +Each flag has a specific meaning: +.Bl -bullet -compact +.It +.Ql + +indicates that the group ID is allowed as a supplementary group. +.It +.Ql "!" +indicates that the group ID is mandatory, i.e., it must be listed in the +supplementary groups. +.It +.Ql - +indicates that the group ID must not be listed in the supplementary groups. .El +A specification with +.Ql - +is only useful in conjunction with a +.Ql + Ns +-tagged specification where only one of them has +.Ql "." +as its +.Li Aq id . +Target clauses having the +.Ql "!" +or +.Ql - +flag are +.Dq forcing +clauses, and as such do not take part in the disjunction of the other +target clauses but rather unconditionally apply in their rule. +.Pp +.Ql "." +is a placeholder for IDs that the calling process already has on privilege +check. +For type +.Ql uid , +it designates any of the process' real, effective or +saved user IDs. +For type +.Ql gid , +its effect depends on whether flags are present. +If none is present, it designates any of the process' real, effective or saved +group IDs. +If one is present, it designates any of the process' supplementary groups. +.Ss Defaults for the Ao to Ac Part +If the +.Li Aq to +part does not list a target clause with type +.Ql uid , +any of the current user IDs of the calling process is accepted. +In other words, in this case, +.Nm +behaves as if a target clause of: +.Dl uid=. +had been listed. .Pp +Similarly, if the +.Li Aq to +part does not list a target clause with type +.Ql gid , +all the groups of the calling process are assumed to be required. +More precisely, each of the desired real, effective and saved group IDs must be +one of the current real, effective or saved group ID, and all supplementary +groups must be the same as those that are current. +It is as if the +.Li Aq to +part had contained the following two clauses: +.Dl gid=.,!gid=. +.Ss Non-Redundancy and Non-Contradiction in a Ao to Ac Part +No two target clauses of a single rule may express the exact same logical intent +nor contradictory ones. +.Pp +In practice, no two clauses may display the same ID except for group IDs but +only if, each time the same ID appears, it does so with a different flag, or no +flags only once. +Additionally, the specified flags in multiple occurences must not be +contradictory. +For example, the same group ID appearing with both +.Ql + +and +.Ql - +will cause rejection of the rule. +.Ss Parsing Specifics +Any amount of whitespace is allowed around tokens of the above grammar, except +that there may be no spaces between +.Li Aq flags +and +.Li Aq id +in target clauses. +.Pp +For convenience, numerical IDs may be specified as negative integers, which are +then converted to unsigned ones as specified in the C standard for the +.Vt uid_t +and +.Vt gid_t +types, which are both 64-bit unsigned integers. +.Sh RUNTIME CONFIGURATION The following .Xr sysctl 8 -MIBs are available: +knobs are available: .Bl -tag -width indent .It Va security.mac.do.enabled Enable the @@ -40,39 +276,177 @@ Enable the policy. (Default: 1). .It Va security.mac.do.rules -The set of rules. +The list of credential rules, whose syntax is described in the +.Sx CREDENTIALS RULES +section above. +This list is specific to each jail. +Please see the +.Sx JAIL SUPPORT +section below for more details on the interaction of +.Nm +with jails. +.It Va security.mac.do.print_parse_error +Logs a message on trying to set incorrect rules via the +.Va security.mac.do.rules +.Xr sysctl 8 +knob. .El +.Sh JAIL SUPPORT +.Nm +supports per-jail configuration of rules. .Pp -The rules consist of a list of elements separated by -.So , Sc . -Each element is of the form -.Sm off -.Do -.Op Cm uid | Cm gid -.Li = -.Ar fid -.Li : -.Ar tid -.Dc -.Sm on . -Where -.Ar fid -is the uid or gid of the user or group the rule applies to, and -.Ar tid -is the uid of the targetted user. -Two special forms are accepted for -.Ar tid : -.Va any -or -.Va * , -which allow to target any user. -.Sh EXAMPLES -The following rule: +By default, at creation, a new jail has no credentials rules, effectively +disabling +.Nm +for its processes. .Pp -.Dl security.mac.do.rules=uid=1001:80,gid=0:any +The following jail parameters are defined: +.Bl -tag -width indent +.It Va mac.do +Possible values are: +.Bl -tag -width "'disable'" -compact +.It Ql enable +.Nm +will enforce specific credential rules in the jail. +The +.Va mac.do.rules +jail parameter must also be set in this case. +.It Ql disable +Disables +.Nm +in the jail. +Strictly equivalent to jail creation's default behavior and to setting the rules +to an empty string. +.It Ql inherit +The jail's credentials rules are inherited from the jail's parent +.Pq which may themselves have been inherited . +Modified rules propagate to all children jails configured for inheritance. +.El +.It Va mac.do.rules +The credentials rules for the jail. +It is always equal to the value that can be retrieved by the +.Xr sysctl 8 +knob +.Va security.mac.do.rules +described in section +.Sx RUNTIME CONFIGURATION . +If set, and the jail parameter +.Va mac.do +is not so explicitly, the value of the latter will default to +.Ql disable +if empty, else to +.Ql enable . +.El .Pp -means the user with the uid 1001 can execute processes as user with uid 80, -all the users which belongs to the group gid 0 can execute processes as any user. +Each jail must have +.Xr mdo 1 +installed at path +.Pa /usr/bin/mdo , +as this path is currently not configurable. +.Sh EXAMPLES +Here are several examples of single rules matching processes having a real user +ID of 10001: +.Bl -tag -width indent +.It Li uid=10001:uid=10002 +Allows the process to switch any of its real, effective or saved user ID to +10002, but keeping the groups it is already in, and with the same +primary/supplementary groups split. +.It Li uid=10001:uid=10002,uid=10003 +Same as the first example, but also allows to switch to UID 10003 instead of +10002. +.It Li uid=10001:uid=10002,gid=10002 +Same as the first example, but the new primary groups must be set to 10002 and +no supplementary groups should be set. +.It Li uid=10001:uid=10002,gid=10002,+gid=.\& +Same as the previous example, but in addition allowing to retain any current +supplementary groups. +.It Li uid=10001:uid=10002,gid=10002,!gid=.\& +Same as the previous example, but with the additional constraint that all +current supplementary groups must be kept. +.It Li uid=10001:uid=10002,gid=10002,+gid=.,-gid=10001 +Same as +.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +above, but 10001 cannot be retained as a supplementary group. +.It Li uid=10001:uid=10002,gid=10002,+gid=.,!gid=10003 +Same as +.Ql uid=10001:uid=10002,gid=10002,+gid=.\& +above, with the additional constraint that 10003 must appear in the +supplementary groups. +.It Li uid=10001:uid=10002,gid=*,+gid=* +Same as the first example, but lifting any constraints on groups, allowing the +process to become part of any groups it sees fit. +.El +.Pp +Here are several examples of single rules matching processes having a real group +ID of 10001: +.Bl -tag -width indent +.It Li gid=10001:uid=0 +Makes 10001 a more powerful +.Ql wheel +group, allowing its members to switch to root without password. +.It Li gid=10001:gid=10002 +Allows the process to enter GID 10002 as a primary group, but only if +giving up all its supplementary groups. +.It Li security.mac.do.rules=gid=10001:gid=10002,+gid=.\& +Same as the previous example, but allows to retain any current supplementary +groups. +.It Li gid=10001:gid=10002,!gid=.\& +Same as the previous example, but with the additional constraint that all +current supplementary groups must be kept. +.El .Sh SEE ALSO .Xr mdo 1 , -.Xr mac 4 +.Xr setcred 2 , +.Xr mac 4 , +.Xr jail 8 , +.Xr sysctl 8 +.Sh AUTHORS +.An Olivier Certner Aq Mt olce@FreeBSD.org +.An Baptiste Daroussin Aq Mt bapt@FreeBSD.org +.Sh BUGS +Currently, +.Nm +considers only credentials transitions requested through the +.Xr setcred 2 +system call. +This system call was in large part created so that +.Nm +can see whole credentials transitions to decide whether to authorize them, which +the traditional UNIX's piecewise approach of successively changing different +parts of them cannot allow. +.Pp +However, calls to traditional or standard credentials-changing functions can be +considered as full transitions on their own, however limited, and as such should +be equally monitored by +.Nm . +Future work will lift this restriction. +.Sh SECURITY CONSIDERATIONS +The threat model for +.Nm +is to consider userland programs as generally untrustable to decide upon which +credentials changes are acceptable. +It is in contrast with the traditional UNIX way to change credentials, in which +specialized programs are installed with the setuid bit, giving them full +administrator privileges so that they are effectively able to establish new +ones. +Vulnerabilities in such credentials-changing programs can have catastrophic +consequences on the integrity of the system. +.Pp +Consequently, +.Nm +does not rely on companion userland programs to decide whether some credentials +transition is acceptable. +Instead, it maintains its own configuration independently from the userland +password and group databases. +Establishing this configuration currently itself relies on userland programs +issuing calls to +.Xr sysctl 3 +or +.Xr jail 2 . +It should thus be established near system boot or jail start, before any +possible attacks could happen on the system, and further measures should be +taken to ensure that potential corruptions does not affect the configuration in +subsequent restarts, such as re-establishing pristine state or ensuring that the +boot procedure up to the configuration of +.Nm +can be trusted. From nobody Thu Apr 3 19:32:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhh5Mftz5sM4h; Thu, 03 Apr 2025 19:32: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 4ZTBhh2W4Hz3Svg; Thu, 03 Apr 2025 19:32:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pLyjSZxrOtQavmJqzEamoGQu03ECLuT7juwazP/GzWU=; b=vagRuWSfUgKAqwijThkMJNAi10HQ73c0WZ2yzH019IB3JLYX3sWk2AbhYl8ru13PkPuVm0 VnSwkt8Ko/8iMFFTFNYTKn7g9Gio8r9CdteiUh7mqrxGavgM0JLbQjpl9NcjIjrxTrDZIj EXTmvVa8bvraNElAQ3scQs1xqXrs4fq1Gqi/udXan3TH4DLibXHyuKaPUuG3rckIfIYYXs khimdw/ufBE296SAjepd9IGdN5UA1XL2LBd3sPH2MjE1EFZQRwjJzmNTcKsGS6KtggMrLj 7evLr+RuDA0UKhXtfS6QNCf5NBK+lHlRnyfLaQHzvdjJytHkCTW2PPNfnEE9jA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708756; a=rsa-sha256; cv=none; b=AlsWBicqTS2v63qGSHgo+fRGh9xT8TQ3qxMs9n9+QalxLVbaf8pAl5qQf1sk8fJMMbyFdc KOZh8gWdnOekwSZG5vx9pQT66Ts0kBHclkT04Ke3Y2QogWj+wdB0DuMNNoru6MP3SEXzBd I6wAW9Z1QBsVVb1Rf3ijOGwq83JzSW9varTxPdysZPJbqK2sFHN1NgoIuit266+/4IvkVU eo/MiSji2lbt29L5wxc/3afYk2lcC8htmW4HkXzpCxPonFdCkMxJw1zWeCxYqvT2sD5e/S qDX3mSGTIUwiTxOXoMWrHMp3PTX1DZ331o+bmtD4VSlJrI3urfSe4KQFVL3fzQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708756; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pLyjSZxrOtQavmJqzEamoGQu03ECLuT7juwazP/GzWU=; b=nskin65UeTBQanJnYU6jR92UyCCU2OISaOlDMhf+DRznBvVb+ppXssj04mnHrPeFmDLT++ dTFJM1L8MX2zrTHRaH/udYMV9zSHHAAEPFTmGYyLEZ6QyuN+yFHyR9inUs2pIgV6QlU5+K 9pUroWDKtafABi/l5yiZViJNlBpV9wjHOI3xeiQMO8H/5ZP8JUIOGbjc4vb4o3k8oxwzzl zfR/ckVIx/bm5iJTMxHnY9a0BPYyZD2Hy83Mgk+UH2smCsLqN3RDkeqCW+4JabE7mOI+p0 MJuINfuGUnW1y3BZHRD7BsFkK6jWGMFKrPDXKOdqfVYAxIV4v8Y27kVfi/miPA== 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 4ZTBhh24m6zkb; Thu, 03 Apr 2025 19:32: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 533JWaUU040790; Thu, 3 Apr 2025 19:32:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWaAI040787; Thu, 3 Apr 2025 19:32:36 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:36 GMT Message-Id: <202504031932.533JWaAI040787@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: e286a0373631 - stable/14 - setcred(2): Add manual page List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e286a0373631d4f826d0f431de3269abbc7c9156 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=e286a0373631d4f826d0f431de3269abbc7c9156 commit e286a0373631d4f826d0f431de3269abbc7c9156 Author: Olivier Certner AuthorDate: 2024-12-12 08:38:00 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:07 +0000 setcred(2): Add manual page Reviewed by: Alexander Ziaee Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48063 (cherry picked from commit b6f4027ad9a2ede69a7ec11137cc4ea69ec2f0a0) --- lib/libc/sys/Makefile.inc | 1 + lib/libc/sys/setcred.2 | 290 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 291 insertions(+) diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index f01b085f712b..ebcb69d283f6 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -311,6 +311,7 @@ MAN+= abort2.2 \ semget.2 \ semop.2 \ send.2 \ + setcred.2 \ setfib.2 \ sendfile.2 \ setgroups.2 \ diff --git a/lib/libc/sys/setcred.2 b/lib/libc/sys/setcred.2 new file mode 100644 index 000000000000..a1b819d24c52 --- /dev/null +++ b/lib/libc/sys/setcred.2 @@ -0,0 +1,290 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright © 2024 The FreeBSD Foundation +.\" +.\" This documentation was written by Olivier Certner +.\" at Kumacom SARL under sponsorship from the FreeBSD Foundation. +.\" +.Dd December 19, 2024 +.Dt SETCRED 2 +.Os +.Sh NAME +.Nm setcred +.Nd set current process credentials atomically +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/ucred.h +.Ft int +.Fn setcred "u_int flags" "const struct setcred *wcred" "size_t size" +.Sh DESCRIPTION +The +.Fn setcred +system call can set any combination of user-accessible credentials of the +current process in an atomic manner. +.Pp +This system call is normally permitted only for processes having the ID of the +super-user (0) as their effective user ID, or not at all if the +.Xr sysctl 8 +variable +.Va security.bsd.suser_enabled +is zero or some active MAC policy specifically denies these processes. +.Pp +Some MAC policies, such as +.Xr mac_do 4 , +may also allow unprivileged users to call it successfully, possibly depending on +the exact credentials transition requested, once again unless any active MAC +policy specifically denies that. +.Pp +The +.Fa flags +argument serves to indicate which process credentials should be changed by the +call. +Allowed flags are: +.Pp +.Bl -tag -width "SETCREDF_SUPP_GROUPS " -compact +.It Fa SETCREDF_UID +Set the effective user ID. +.It Fa SETCREDF_RUID +Set the real user ID. +.It Fa SETCREDF_SVUID +Set the saved user ID. +.It Fa SETCREDF_GID +Set the effective group ID. +.It Fa SETCREDF_RGID +Set the real group ID. +.It Fa SETCREDF_SVGID +Set the saved group ID. +.It Fa SETCREDF_SUPP_GROUPS +Set the supplementary group list. +.It Fa SETCREDF_MAC_LABEL +Set the MAC label. +.El +.Pp +The +.Vt struct setcred +structure is currently defined as: +.Bd -literal +struct setcred { + uid_t sc_uid; /* effective user id */ + uid_t sc_ruid; /* real user id */ + uid_t sc_svuid; /* saved user id */ + gid_t sc_gid; /* effective group id */ + gid_t sc_rgid; /* real group id */ + gid_t sc_svgid; /* saved group id */ + u_int sc_pad; /* padding, unused */ + u_int sc_supp_groups_nb; /* supplementary groups number */ + gid_t *sc_supp_groups; /* supplementary groups */ + struct mac *sc_label; /* MAC label */ +}; +.Ed +.Pp +Its fields are: +.Pp +.Bl -tag -width "sc_supp_groups_nb " -compact +.It Fa sc_uid +The ID to set the effective user to, if flag +.Dv SETCREDF_UID +is specified. +.It Fa sc_ruid +The ID to set the real user to, if flag +.Dv SETCREDF_RUID +is specified. +.It Fa sc_svuid +The ID to set the saved user to, if flag +.Dv SETCREDF_SVUID +is specified. +.It Fa sc_gid +The ID to set the effective group to, if flag +.Dv SETCREDF_GID +is specified. +.It Fa sc_rgid +The ID to set the real group to, if flag +.Dv SETCREDF_RGID +is specified. +.It Fa sc_svgid +The ID to set the saved group to, if flag +.Dv SETCREDF_SVGID +is specified. +.It Fa sc_supp_groups_nb +The size of array +.Fa sc_supp_groups , +if flag +.Dv SETCREDF_SUPP_GROUPS +is specified. +It must be less than or equal to +.Dv {NGROUPS_MAX} . +.It Fa sc_supp_groups +An array of IDs to set the supplementary groups to, if flag +.Dv SETCREDF_SUPP_GROUPS +is specified. +Note that all groups in this array will be set as supplementary groups only, in +contrast to +.Xr setgroups 2 +which treats the first element specially as the new effective group, not adding +it to supplementary groups. +.It Fa sc_label +A pointer to a valid MAC label structure, e.g., built with the +.Xr mac_from_text 3 +function, if flag +.Dv SETCREDF_MAC_LABEL +is specified. +.El +.Pp +For forward compatibility and security reasons, it is recommended that users +always initialize objects of type +.Vt struct setcred +with the provided initializer: +.Dv SETCRED_INITIALIZER . +.Pp +The +.Fa size +argument must be the size of the passed +.Fa wcred +structure. +.Sh RETURN VALUES +.Rv -std +.Sh ERRORS +The +.Fn setcred +system call will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Unrecognized flags were passed in +.Fa flags , +or the +.Fa size +parameter does not match the size of +.Vt struct setcred , +or the field +.Fa sc_supp_group_nb +has a value strictly greater than +.Dv {NGROUPS_MAX} +.Po if flag +.Dv SETCREDF_SUPP_GROUPS +was supplied +.Pc , +or the MAC label pointed to by field +.Fa sc_label +is invalid +.Po if flag +.Dv SETCREDF_MAC_LABEL +was supplied +.Pc . +.It Bq Er EFAULT +The +.Fa wcred +pointer, or pointers in fields +.Fa sc_supp_groups +.Po if flag +.Dv SETCREDF_SUPP_GROUPS +was supplied +.Pc +or +.Fa sc_label +.Po if flag +.Dv SETCREDF_MAC_LABEL +was supplied +.Pc +point to invalid locations. +.It Bq Er EPERM +The user is not the super-user and/or the requested credentials transition is +not allowed by the system or MAC modules. +.It Bq Er EOPNOTSUPP +Some of the requested credentials have a type that the system does not support. +This currently can occur only if the kernel has been compiled without MAC and +.Dv SETCREDF_MAC_LABEL +has been passed. +.El +.Sh SEE ALSO +.Xr issetugid 2 , +.Xr setregid 2 , +.Xr setreuid 2 , +.Xr setuid 2 , +.Xr mac_text 3 , +.Xr mac 4 , +.Xr mac_do 4 , +.Xr maclabel 7 +.Sh STANDARDS +The +.Fn setcred +system call is specific to +.Fx . +.Pp +A call to +.Fn setcred +usually changes process credentials that are listed by POSIX/SUS standards. +The changed values then produce the effects with respect to the rest of the +system that are described in these standards, as if these changes had resulted +from calling standard or traditional credentials-setting functions. +Currently, all flags but +.Dv SETCREDF_MAC_LABEL +lead to modifying standard credentials. +.Pp +The only differences in using +.Fn setcred +to change standard credentials instead of standard or traditional functions are: +.Pp +.Bl -bullet -compact +.It +All requested changes are performed atomically. +.It +Only the super-user or an unprivileged user authorized by some MAC module can +successfully call +.Fn setcred , +even if the standard system calls would have authorized any unprivileged user to +effect the same changes. +For example, +.Fn seteuid +allows any unprivileged user to change the effective user ID to either the real +or saved ones, while +.Fn setcred +called with flag +.Dv SETCREDF_UID +does not. +.El +.Sh HISTORY +The +.Fn setcred +system call appeared in +.Fx 15.0 . +.Pp +Traditionally in UNIX, all credential changes beyond shuffles of effective, real +and saved IDs have been done by setuid binaries that successively call multiple +credentials-setting system calls and in a specific order. +For example, to change all user IDs to that of some unprivileged user, +.Fn setuid +must be called last so that all other credentials-changing calls can be +performed successfully beforehand, as they require super-user privileges. +.Pp +This piecewise approach causes such a process to transiently hold high privilege +credentials that are neither the original nor necessarily the desired final +ones. +Besides opening a transition window where possible vulnerabilities could have +catastrophic consequences, it makes it impossible for the kernel to enforce that +only certain transitions of credentials are allowed. +.Pp +The necessity of an atomic, global approach to changing credentials clearly +appeared while working on extending +.Xr mac_do 4 +to allow rules to authorize only specific changes of primary or supplementary +groups, which prompted the addition of +.Fn setcred . +.Sh AUTHORS +The +.Fn setcred +system call and this manual page were written by +.An Olivier Certner Aq Mt olce.freebsd@certner.fr . +.Sh SECURITY CONSIDERATIONS +The same considerations as those of standard or traditional credentials-setting +system calls apply to +.Fn setcred , +except for the lack of atomicity of successive such calls. +.Pp +In particular, please consult section +.Sy SECURITY CONSIDERATIONS +of the +.Xr setuid 2 +manual page about the absence of effect of changing standard credentials on +already open files. From nobody Thu Apr 3 19:32:38 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTBhl0fQdz5sMGD; Thu, 03 Apr 2025 19:32: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 4ZTBhk5F5wz3TBl; Thu, 03 Apr 2025 19:32:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uFnDleLQJnZt7SbTRbwI1gNXIdHdsoT27JanbnCyrP8=; b=AGtRUEYSkKyvyE+t/qB/cWdpHnajL7qvD167cU8jysqqp/U5zi6HXXbSV5gjY09LwcJAWj hPY8WUG68vn2iMRHNRxv/y9wLtGGdJ1/Sn8P2wcapbliv70aGEiTgLGsmw2XtQXyF2rDMs OFEmpWaVkx0MAuzB+cnsRj5WvKhBAPRRt6YkTAVpUktZHWGSn2DMnEWkYqw5GULsWTH0dL kAyLTkX0Fk/3WhK+j9xtOzlplew3Ao4Smw544hbkMWvptNXKdn3+g3j3KItHwBxtf2xAgB Zx9MbmmcGCsSJUgLN805NcdUTSsYd+gvZQo00urhshDBfxdsT69knV5vi9wCvA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743708758; a=rsa-sha256; cv=none; b=Uimk91Ww2BU2PbahE9vJcLxqhRRprLfQaCCksiDzewa5Rt9nPYIjJ4Gwm6Kb7YgFDCnB2E 1eNsyU+He/BolBCkuDIokYOXttXUQttsmzR/oK5ski8n0HPDS4l2Gw8Ym38s1GzOayI/MD tEHP0k5EfGldX7jL0S0Fn3ed72GtO4MalDS9sLG/mAU8BcO3wdaAFY1VTzSkVZxNdFYgQp o1kWXrq0LdfJ7UMMJ4qXDYBBqOP9zOXY0ELdOzBj5UyrLWIVBbyozf5bh2KkJ8VlbOJOSp rjag64xxW3E1r63izfM12F4uE+e6F98DU4pGi3GE0iz65MHzL4v1JlzHOVaO7A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743708758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uFnDleLQJnZt7SbTRbwI1gNXIdHdsoT27JanbnCyrP8=; b=gIVAMpXZMR34p2aT+DdpKc9eFRBkfhgf4Q67oiVISaN5icLzLqUU3W9QcHrwRI/PWobZvW yVQo01EFek4DUPr5dRAZilHoSSwqTzdt4revbs0Upq4xRIPPWMxPBQTPpaLzfzmIDwmBXt 4C0JQeogg4YiiJDbx45+8jXuc76O1ROoKa1nU5p+D+6AgM1D2fFobSiXrSYtwTNxtSHrUs VdUQbM50E0E070EiNqCpDtuMI56dCsoMmHo8+/ApNxlYUnHU4/NGo2SMqe/E3tnsmp3BOv KHqcY2ValNnQ25cbk3uRvv8J9sDoFgoHPVcbQb/+ZkfCgIg97Ej31GrIH60i/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 4ZTBhk3wFkz1Cm4; Thu, 03 Apr 2025 19:32: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 533JWcJE040858; Thu, 3 Apr 2025 19:32:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533JWcHK040855; Thu, 3 Apr 2025 19:32:38 GMT (envelope-from git) Date: Thu, 3 Apr 2025 19:32:38 GMT Message-Id: <202504031932.533JWcHK040855@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 3aa59485c449 - stable/14 - mac(4): Mention mac_do(4) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3aa59485c449f49cceb5bbb2f3602a1708b14604 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=3aa59485c449f49cceb5bbb2f3602a1708b14604 commit 3aa59485c449f49cceb5bbb2f3602a1708b14604 Author: Juraj Lutter AuthorDate: 2024-12-30 18:02:58 +0000 Commit: Olivier Certner CommitDate: 2025-04-03 19:31:07 +0000 mac(4): Mention mac_do(4) Mention also mac_do(4) in the mac(4) manual page. Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D48255 (cherry picked from commit 4c0435d919b1059a449d97d74abc251c6f526588) --- share/man/man4/mac.4 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/man/man4/mac.4 b/share/man/man4/mac.4 index 006922a17f2b..134086139f53 100644 --- a/share/man/man4/mac.4 +++ b/share/man/man4/mac.4 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 25, 2023 +.Dd December 30, 2024 .Dt MAC 4 .Os .Sh NAME @@ -54,6 +54,7 @@ Currently, the following MAC policy modules are shipped with .It Xr mac_biba 4 Ta "Biba integrity policy" Ta yes Ta boot only .It Xr mac_bsdextended 4 Ta "File system firewall" Ta no Ta any time .It Xr mac_ddb 4 Ta "ddb(4) interface restrictions" Ta no Ta any time +.It Xr mac_do 4 Ta "Change command's uid/gid" Ta no Ta any time .It Xr mac_ifoff 4 Ta "Interface silencing" Ta no Ta any time .It Xr mac_ipacl 4 Ta "IP Address access control" Ta no Ta any time .It Xr mac_lomac 4 Ta "Low-Watermark MAC policy" Ta yes Ta boot only @@ -203,6 +204,7 @@ man page. .Xr mac_biba 4 , .Xr mac_bsdextended 4 , .Xr mac_ddb 4 , +.Xr mac_do 4 , .Xr mac_ifoff 4 , .Xr mac_ipacl 4 , .Xr mac_lomac 4 , From nobody Thu Apr 3 20:00:02 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTCJL4Bv8z5sPPJ; Thu, 03 Apr 2025 20:00: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 4ZTCJL3BQSz3jsN; Thu, 03 Apr 2025 20:00:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743710402; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Nj+qNxf1ZnF7oOPUGKOYKGvnkQNvQabKs/wHxLwb3HQ=; b=p2usyuAL1V9oyXNb3wJMRRwUufaxKTwsYC1qKZVmSlmul/G3SvztxxqhLD/EE4Ii6puWwZ Ehc8WSDCzk1aqJ71pHIf4otcnppc4j9Ck0IG6lD6WCr9t/RE9pXeTaVTt86HvldiamUaji GY8cUVqaNp2g+Byw6j/d9/uUJnQfEqltEljgEDqJXPgdeqMSJzKwJN5LXpnV8/3HdLbXsX 70YvMTjTB/JOZ8J4lwXR5fayqpsIWwfUGQFi1pZmnHyXMsM5wyeKGw48cl8nukgPRoxrt0 T5w1+wIJWfOg0OTzMXF6F9FJyZr4YcfVp9l5IfBJgx/u+B05N+w1kJ3Sl2RwwA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743710402; a=rsa-sha256; cv=none; b=a5I3p+aalKV1QeEYo2z6Tg4TwUHFvTEV8KMmGVjh5JfhESiu7+gN1ovCn8x25naQShyMhT gaPvzc8VI4uSzYve6SFX9DUWT3VXxt2UNMkFDRSUjkkNbF8VlQ0Ik+D2+TI6YLQiHzWsy7 92Wynn4UAQQXZmFuFSYaaBzD3vSggd3Cy3uWYuUNf46Dq1lmwuz6YL99wHHd6xQ9DcZlB5 0JgUPBiCfoT33O+5Ke0xTWu+1BU2iqR2apCgKYR2t8+f+7XclxkyGlLOG483RS/34rA3FI ezKhJ61MVuHs/0O5m1THNy/gW35RaC6Qkw+0C7nPIHsuOKENCnbC9tUaQk4FSQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743710402; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Nj+qNxf1ZnF7oOPUGKOYKGvnkQNvQabKs/wHxLwb3HQ=; b=hyaVJFB0zwN7BFmUJsSeTq15xb3JvXCzA9Hx+LlDJhBsMPu15D4P4D4QqpU79ySB9bNNHC UYlg3skTyVoygTlspr34tFNoKSgP9H1uTKLpPHdmt95V1h43QWm0D4MKMWr9oDQfUFdlWO 1poiXZ1X85o3vsM9IAZJhpvfysBvw1ldnULSMfrIj++Ln/1xQtK1PJb/A2Sy7sHK0ug9Sf 3UQ9TnpHAH0PkdTmUiMYyjFtMlBuMhUaXcc6m8OC6vGPVHOKSpOzPu0whupoRICxS8rEab MziKLMilcy0zPAdSBrfWBN8k4Ox5hQTmAM2SjiQp/KR09ncDqBSNGSImntqExA== 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 4ZTCJL2cD1z1MT; Thu, 03 Apr 2025 20:00: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 533K02Ma083498; Thu, 3 Apr 2025 20:00:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533K028N083492; Thu, 3 Apr 2025 20:00:02 GMT (envelope-from git) Date: Thu, 3 Apr 2025 20:00:02 GMT Message-Id: <202504032000.533K028N083492@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eric Joyner Subject: git: f034ddd2fa38 - stable/14 - igc(4): Fix attach for I226-K and LMVP devices List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: erj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f034ddd2fa38cb2b0e3d16059cb059626a770e19 Auto-Submitted: auto-generated The branch stable/14 has been updated by erj: URL: https://cgit.FreeBSD.org/src/commit/?id=f034ddd2fa38cb2b0e3d16059cb059626a770e19 commit f034ddd2fa38cb2b0e3d16059cb059626a770e19 Author: Eric Joyner AuthorDate: 2025-02-26 17:19:38 +0000 Commit: Eric Joyner CommitDate: 2025-04-03 19:59:47 +0000 igc(4): Fix attach for I226-K and LMVP devices Summary: The device IDs for these were in the driver's list of PCI ids to attach to, but igc_set_mac_type() had never been setup to set the correct mac type for these devices. Fix this by adding these IDs to the switch block in order for them to be recognized by the driver instead of returning an error. This fixes the igc(4) attach for the I226-K LOM on the ASRock Z790 PG-ITX/TB4 motherboard, allowing it to be recognized and used. Signed-off-by: Eric Joyner Reviewed by: kbowling@ Relnotes: yes Differential Revision: https://reviews.freebsd.org/D49147 (cherry picked from commit 7ee310c80ea7b336972f53cc48b8c3d03029941e) --- sys/dev/igc/igc_api.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/igc/igc_api.c b/sys/dev/igc/igc_api.c index 9e91e7a4c73f..da499274fca4 100644 --- a/sys/dev/igc/igc_api.c +++ b/sys/dev/igc/igc_api.c @@ -109,6 +109,8 @@ s32 igc_set_mac_type(struct igc_hw *hw) case IGC_DEV_ID_I220_V: case IGC_DEV_ID_I225_K2: case IGC_DEV_ID_I225_LMVP: + case IGC_DEV_ID_I226_K: + case IGC_DEV_ID_I226_LMVP: case IGC_DEV_ID_I225_IT: case IGC_DEV_ID_I226_LM: case IGC_DEV_ID_I226_V: From nobody Thu Apr 3 20:02:18 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTCLz0Zf7z5sPFd; Thu, 03 Apr 2025 20:02:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTCLy6xj8z3kTv; Thu, 03 Apr 2025 20:02:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743710539; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Be1L65/bfKMHtbpecN4PMXAS0Iokd//1H0zq+776LFE=; b=omnovEcIm+gY23NhNGLXnzX6UJ8FNhm5XJurPOeoi6WtMRf9wW33E2tmw6ECf5nU8FopED l22nd2+FU2hRx0DfBrRGWBTU8eB7bXVWI6A6Ff0XQJ3k9DScIVV/3MxTzmqKtIDAIe5AxW x8fQWxgrI/VZwiL28Wmp8IWIV1mcnzVNneFFUmnQVsfZenes1C1rLyc0ps3cOmu4n7UvJ6 mt6v4fkDUBfNJO/v5tDj05Of5lYNX/LBu6SW5tndWTa/OGs89byAOvB+wDJA4LQUENNadd Onqf4gINpHaSbklHe0N7sBCg0shBCX3NYfkh2s36/O0NIw2fCuSl86WDUhKUgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743710539; a=rsa-sha256; cv=none; b=uV5d2tc36UQEN8LJlVSj+uFTicIGoUd4A/Q8kDkSESFIeg/Vt/s4I3BWSZdRsNeLAxdwYr yBZmyzseEsQUO1l3T0KnRIgSAHpMcZw25gVZHjdoCXjpJI9lP/4yxnXeEDIqKqUJKXXCuo V3IsXQck2SQYIh6b0LSgNZcV20PqmKVgNdPRKysJrE24vXOko1c3/EnoJwgu+tWW3o9HH6 abfCrHiXemtznmbD2eZqITbaSKbJx2n+O4Onjxsaz8KkBHxJZrYFGmNShbjgPpSEt810nQ EOy0QvwGySrt0y8L+FwPxuT9qPD+Al9sF0dfYifMw5ybh3G9LcdbX4f9O2O0dQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743710539; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Be1L65/bfKMHtbpecN4PMXAS0Iokd//1H0zq+776LFE=; b=OthobKEPNBxKvGH9n3od9VkLfGMJChCpBgUKz3Ph0nlVKA/fjH1are3BZfjHlKXwyQqdet ZnTYnPYjDtnYpUn7JzE2FKa7okHu/84MX6ZyYpPf6lG/GLmismOSYaugagDdVtJYEEvHLS a3PRQslZLmSOQD2lw8ANhCgxe3MIJGMdlkEUHeC3Q8nh8civJ8hlIpnGfh4U9zlGzsTpuC b9KD/NSfyVrAgTqYnf1Iz8Jocjv/V1eGGsGdVMUxHeM4e8DjlCeHPXKvcl8Nwd/yMl40fD PTwXfOORceF/DnH9ptyvK1PDrpeg8xpVjmPgfGszJQ2cO9FPRt6p4iDcHX1hIQ== 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 4ZTCLy6XzMz1ZV; Thu, 03 Apr 2025 20:02: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 533K2IJB096625; Thu, 3 Apr 2025 20:02:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533K2IcZ096622; Thu, 3 Apr 2025 20:02:18 GMT (envelope-from git) Date: Thu, 3 Apr 2025 20:02:18 GMT Message-Id: <202504032002.533K2IcZ096622@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eric Joyner Subject: git: 5ae5f71d505c - stable/13 - igc(4): Fix attach for I226-K and LMVP devices List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: erj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5ae5f71d505ccddc7de235d3f9e3d9bdb03dd454 Auto-Submitted: auto-generated The branch stable/13 has been updated by erj: URL: https://cgit.FreeBSD.org/src/commit/?id=5ae5f71d505ccddc7de235d3f9e3d9bdb03dd454 commit 5ae5f71d505ccddc7de235d3f9e3d9bdb03dd454 Author: Eric Joyner AuthorDate: 2025-02-26 17:19:38 +0000 Commit: Eric Joyner CommitDate: 2025-04-03 20:00:25 +0000 igc(4): Fix attach for I226-K and LMVP devices Summary: The device IDs for these were in the driver's list of PCI ids to attach to, but igc_set_mac_type() had never been setup to set the correct mac type for these devices. Fix this by adding these IDs to the switch block in order for them to be recognized by the driver instead of returning an error. This fixes the igc(4) attach for the I226-K LOM on the ASRock Z790 PG-ITX/TB4 motherboard, allowing it to be recognized and used. Signed-off-by: Eric Joyner Reviewed by: kbowling@ Relnotes: yes Differential Revision: https://reviews.freebsd.org/D49147 (cherry picked from commit 7ee310c80ea7b336972f53cc48b8c3d03029941e) --- sys/dev/igc/igc_api.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/igc/igc_api.c b/sys/dev/igc/igc_api.c index 9e91e7a4c73f..da499274fca4 100644 --- a/sys/dev/igc/igc_api.c +++ b/sys/dev/igc/igc_api.c @@ -109,6 +109,8 @@ s32 igc_set_mac_type(struct igc_hw *hw) case IGC_DEV_ID_I220_V: case IGC_DEV_ID_I225_K2: case IGC_DEV_ID_I225_LMVP: + case IGC_DEV_ID_I226_K: + case IGC_DEV_ID_I226_LMVP: case IGC_DEV_ID_I225_IT: case IGC_DEV_ID_I226_LM: case IGC_DEV_ID_I226_V: From nobody Thu Apr 3 21:04:22 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTDkZ52VXz5sTrX; Thu, 03 Apr 2025 21:04: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 4ZTDkZ4MVnz3tQp; Thu, 03 Apr 2025 21:04:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743714262; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KeBUB57Si6Z8wPJwv5D23Vt6Z2W9cUQHUF6yAPvM2Y0=; b=Fzcg6jitAydI3ytUxw5Ik20x8yTi5QAo82agUYaSU63AP+uCnaBr63y8fmykfpjV2+e6Ei jBCKwgUsI3xwmyDG0CRZa+aq+ZgdxZIRjNE+6n9c8cp9v743vkqjcik1ZGMWp4Xkoo5gBA IOv7m0GdW616EEw5Tfa7QhdE/pLYZxGlQC2aJk9OnF0rUb5QFIosn4c426QUiriq8TdIbz ZX843M9OeQWoPcjm2NmW4Frycw0bCt7I7u2p/IVfTgheXminbCr+lUNRXrkOAPW9hf6SUd LcMf+jnV34gB3vjqPs+Pj/Utl9roVA0pqir85cOtrwAHZCTT4BvqdygOQnKO+Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743714262; a=rsa-sha256; cv=none; b=EgrXIsaF+EuCVZTuzZ0nmqQ1yLWLK5DKg/5TVILkUTijWSxGkC4AjsX/AX+dJJg5Xun+zC 4v0/RYH/SNtQxGWziNtSFXXcV5BdKvL2FVKU1EMbt7tC1/KZm0WQyZrj4bSyt/Cp+MTH4C g0AmwZnjncjMGovnyv4rt4DkGfk0SmrXhX5lo3Zwvi7dmWdEQEEfBFuRit/XWgQIAZFL9G u1XVGPvyLqUWrUgEpgvirqTt99Ng1Z6GNluJ0XBso/loYUWj/YaQu6aYzDh/Vyx3rVsPfm YycAARqxLywWfVswh/QpyMjZY1eUyRMwqJwRkm8r3VtzXKrIybWK7RRE7BkrXg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743714262; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KeBUB57Si6Z8wPJwv5D23Vt6Z2W9cUQHUF6yAPvM2Y0=; b=wbMs6omjoG/N5k2XfkslFvGZQblcKgalIUQ3sdIVwkojf8WMQheC46fbpZs9jH5Sq/4b+l v+fywRKdERZj1EtaA4nNZAUDiJOGHG2BCAITMOhCQEXRhr631srgaWmvgQsWhcZhv8pfFX cnbSXRdeDcqVJSWiQG0pg/kMZ8FO0nmXp0v39ACeTpHBlUVhrvUQ/V6jNu+klHeC4SUemc jyoWyYTTFHcAxzQ9Me06vQePWKgi0DWCIBYBIxal3jed6ZKUK6bBxo6QUMVl87UK4+5oYv g+xA+EY4hgaiI2aYIAZI/IJcsnGwshYTrXEUwxYH8M0Ps14A19CFTiyiwCRjRQ== 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 4ZTDkZ3rngz2XN; Thu, 03 Apr 2025 21:04: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 533L4MC6010052; Thu, 3 Apr 2025 21:04:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533L4MBG010049; Thu, 3 Apr 2025 21:04:22 GMT (envelope-from git) Date: Thu, 3 Apr 2025 21:04:22 GMT Message-Id: <202504032104.533L4MBG010049@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: 94acddd2ad01 - main - tcp: improve initializing the fields in tcp_log_buffer List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 94acddd2ad0142221124c3fb7fe3778a5a1f8036 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=94acddd2ad0142221124c3fb7fe3778a5a1f8036 commit 94acddd2ad0142221124c3fb7fe3778a5a1f8036 Author: Michael Tuexen AuthorDate: 2025-04-03 06:59:46 +0000 Commit: Michael Tuexen CommitDate: 2025-04-03 06:59:46 +0000 tcp: improve initializing the fields in tcp_log_buffer Initialize the fields in the tcp_log_buffer in the sequence they appear in the structure and add the initialization of tlb_flex1, tlb_flex2, and _pad[]. Reviewed by: rrs, Peter Lei MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49652 --- sys/netinet/tcp_log_buf.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sys/netinet/tcp_log_buf.c b/sys/netinet/tcp_log_buf.c index 7b937958a4fb..e9ad05382b81 100644 --- a/sys/netinet/tcp_log_buf.c +++ b/sys/netinet/tcp_log_buf.c @@ -1857,16 +1857,21 @@ retry: COPY_STAT_T(rttvar); COPY_STAT(rcv_up); COPY_STAT(rcv_adv); + COPY_STAT_T(flags2); COPY_STAT(rcv_nxt); COPY_STAT(rcv_wnd); COPY_STAT_T(dupacks); COPY_STAT_T(segqlen); COPY_STAT(snd_numholes); - COPY_STAT(snd_scale); - COPY_STAT(rcv_scale); - COPY_STAT_T(flags2); + log_buf->tlb_flex1 = 0; + log_buf->tlb_flex2 = 0; COPY_STAT_T(fbyte_in); COPY_STAT_T(fbyte_out); + COPY_STAT(snd_scale); + COPY_STAT(rcv_scale); + log_buf->_pad[0] = 0; + log_buf->_pad[1] = 0; + log_buf->_pad[2] = 0; #undef COPY_STAT #undef COPY_STAT_T /* Copy stack-specific info. */ From nobody Fri Apr 4 00:54:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTKrD5fwwz5slnr; Fri, 04 Apr 2025 00:54: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 4ZTKrD51hcz3Jpp; Fri, 04 Apr 2025 00:54:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743728076; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uOSwMbqKWi2GC7hiXKbVSIhXtWLlM7f7NSs1VKfne0k=; b=btAO3n9lz9tsp06p2BiRvCirVT2ly6edrxp6e7F2pDAUVBLwjFDbYtISx43LQcrcWZ/P7m 7w3397PSzySgIABK4nBbjM8jalNpZsDblQ1WFnDuRfCMqKrqogp7aDk9fr6cUgUDiYwzFc lq7We8IXymLRICzjvOLLpJfyjnzENnZv05TnBatXwDLH3pQMkMXfm3Awt4IX1e6wk/5Sm7 R7OE451PYX2G5qs/786ywe65ejE+XkA9C6JJch3aSGvyyvrgT7RoLOvJqY9FN+odxBoUu6 Sk4EJ7w2rjnhHKJmYjqxugcEGSV7/br3RWNoRzNTAmNdsJIPH9/A5lTG3Xyn6A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743728076; a=rsa-sha256; cv=none; b=sWDzTta1T/J18UhlMP0/dCOSyT3zd96eKxVEXxU3O/f3lmgukCIrxYl4D/9KqNBem5afHF qNndCaYpML9vUL0RbRkyimN8Kan7KjxPBx30tZUJcTeZTuYrkPlvcR37gKwyxG7QIGGBLf LjJglbPSG8S2irwdYM5MOEcw6L7KdgZ8fykxTsJAqT7H1WmpiTXsqkuvX+W6NEnUT7jlwx B5gRzGW6wTSlZvqwtdUUwJZV4eimq5R2Q2tWB8fBl9irirEIealZ/4TI8Ae2nNstX7Hhn2 JM6Ebzoc3jZLVtWKQ79ROQLP1o3+eJJam1BzTT1VVnecPl1xpcEW6LBqd3QQrA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743728076; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=uOSwMbqKWi2GC7hiXKbVSIhXtWLlM7f7NSs1VKfne0k=; b=NX1BY2/uBDOxw7Sy4Er3CUhj6DYsa8a2PUj/MlJRL/kv9i6mUqWknlqPJf9FBQZ539E+Mv wng6bPR/vcZ05mbX7D1wlL8eQ86piCxgCLy2Bj8ulc7ilptILyQo8OEoIoCoYfMoe6KQ1b r0YcKBAn7+HpkEg4IBikpTKgBpBRUuBtKeAtUG+EcaxAK7lDuWw70jhvOF6NzGeBoO4cOW pld4zdcD+k7cLJVegqrnpkRvYiE4MHYQA097EoWyuHgPnIzDHkTb9QSI7CA5UfAevuDtU+ sPhRlfOY8hThBOBEoBKjyi1o/S1q2Uav2clJS/g5jx9GSvjlWQP6gYpAprfu/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 4ZTKrD4LqNz8kh; Fri, 04 Apr 2025 00:54: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 5340saqj037573; Fri, 4 Apr 2025 00:54:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5340sacU037570; Fri, 4 Apr 2025 00:54:36 GMT (envelope-from git) Date: Fri, 4 Apr 2025 00:54:36 GMT Message-Id: <202504040054.5340sacU037570@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: b01d15abbae5 - stable/14 - iommu_gas_map_region(): add comment explaining the ma array shift List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: b01d15abbae5767d1a3fae6afe56475c988447a3 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b01d15abbae5767d1a3fae6afe56475c988447a3 commit b01d15abbae5767d1a3fae6afe56475c988447a3 Author: Konstantin Belousov AuthorDate: 2025-01-25 09:37:50 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-04 00:54:06 +0000 iommu_gas_map_region(): add comment explaining the ma array shift (cherry picked from commit 45f70f98fc55b753b1e7a7374b4a061aa1f27392) --- sys/dev/iommu/iommu_gas.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/dev/iommu/iommu_gas.c b/sys/dev/iommu/iommu_gas.c index d97bdee47b28..ffa8dc096adc 100644 --- a/sys/dev/iommu/iommu_gas.c +++ b/sys/dev/iommu/iommu_gas.c @@ -875,6 +875,11 @@ iommu_gas_map_region(struct iommu_domain *domain, struct iommu_map_entry *entry, if (entry->end == entry->start) return (0); + /* + * iommu_gas_alloc_region() might clipped the entry start and + * end positions. Adjust the beginning of the ma array to map + * the pages at the requested relative positions. + */ error = domain->ops->map(domain, entry, ma + OFF_TO_IDX(start - entry->start), eflags, ((flags & IOMMU_MF_CANWAIT) != 0 ? IOMMU_PGF_WAITOK : 0)); From nobody Fri Apr 4 00:54:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTKrG1cp5z5slcJ; Fri, 04 Apr 2025 00:54: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 4ZTKrF5Vtlz3JkY; Fri, 04 Apr 2025 00:54:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743728077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tYo98Vl+ADvPPoQY7Z/lGIecz9njknaRRm41ou9kUI8=; b=TNyzRfIVqdLqIEQSMY/xEjK/t0fUOLxW1iCZmVdNDON6leo5jPD60kxt9DZM/A+Hlle625 HOAe7xPG6Sozuin/rn7x/Xr/7NxOm92ij3nuHVBwiye7LGYD4+2KSkDnZAOa3nIlkxbekl fbnVzIArz8RazMEyK2i26MABxLNbFeLMYei4BOYtSwFkQJhD7cRF+Gi15tnBD3zGOB96bc rJ2OFY+QqqyGl0vPraddDcx4tjNh4xnq4A8znd5Mofktib47axbRjvwimP0DA31tT9t+J6 2Ke9P5gZcWis5T2dHyOljs1nvIxWKBPc7d83UI3+5EulJrtCIhxkdQI5iOjxnw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743728077; a=rsa-sha256; cv=none; b=j567HELQ/Nx//KxVh9F0KcXxdRs+KkezjM0VLE4MiT7m13ettRrvfLDQ5oXDqb4+cKOTMU l7+ULl4n70zQJYsUC6EKMvk7ECAS3nxPvDdZ5IaLpCYiLrh3ZhW0yT+9dwO1jjspZYU+ql HW0pDItxJ80qi6mz1ZtIAcma5qO9i8jQWa/ZMlfAI0PCAhbYzu8lOa1fqGuRwk3G1tqbI1 ZvVwqlmcSfNJP2yRZZxqN9z+cGyzH8cTXqRvZgDM+5fZhaaTEkHfZK2SDgBTLCeXnuQdL5 URAAfGM/NVaGZavX7juhxlvW0hwghRZsR9aMt6Q2yrwg2rEAF67CJ4EMCvMDyA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743728077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tYo98Vl+ADvPPoQY7Z/lGIecz9njknaRRm41ou9kUI8=; b=wyT3kIm6u5M6NoIxFcnPL3tWDedVT/VvpdotXaz5ekRpu+TyzKwOQYnPKpwTiGNIeIRtvk YlXMkS9UTVjQDu58jWEprhZBeYHtGM6z5dLLn0nWc4oMbB28OyQseFkOb5YUXX+3Y6whhy Ca5z4tGL6gXnbMhbzB/ryrBVnNDn6EBDzkve9Lk4nNryoNAP8vPWxb0EI9YbY3p2FhWlyj cbq2AKX/Q5ITAJp7C/deENIA5Kmnyydrq2bCg2ioJ6+K76zeAS3fJEH0HslURA86vcUp+M prWFdc7BRmuGKzdfBAUrp/yVvU1++GtrFyf2ezTg/dr2u4yK7tuhDNHKIzU/6Q== 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 4ZTKrF51Lpz8Nl; Fri, 04 Apr 2025 00:54: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 5340sbxG037608; Fri, 4 Apr 2025 00:54:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5340sbm6037605; Fri, 4 Apr 2025 00:54:37 GMT (envelope-from git) Date: Fri, 4 Apr 2025 00:54:37 GMT Message-Id: <202504040054.5340sbm6037605@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 53b2f30f9090 - stable/14 - bhyve: style, add comma to the last line of designated initializer List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 53b2f30f9090f15a51251b8c1f86de489cd5c4b8 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=53b2f30f9090f15a51251b8c1f86de489cd5c4b8 commit 53b2f30f9090f15a51251b8c1f86de489cd5c4b8 Author: Konstantin Belousov AuthorDate: 2023-12-19 15:57:43 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-04 00:54:06 +0000 bhyve: style, add comma to the last line of designated initializer (cherry picked from commit 299bb57d9b71be2b033a92033268d8b1c732e4fe) --- sys/amd64/vmm/amd/amdvi_hw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 2707109ce587..a82d55e4c9fb 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -1379,5 +1379,5 @@ const struct iommu_ops iommu_ops_amd = { .remove_mapping = amdvi_remove_mapping, .add_device = amdvi_add_device, .remove_device = amdvi_remove_device, - .invalidate_tlb = amdvi_invalidate_tlb + .invalidate_tlb = amdvi_invalidate_tlb, }; From nobody Fri Apr 4 03:24:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTP951T0Pz5rSvX; Fri, 04 Apr 2025 03:24: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 4ZTP950QFSz3lC4; Fri, 04 Apr 2025 03:24:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737065; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BFI5ooCVuEnr2Qs2kd4PNQMAs+1UvA3Msj61Zz6rHI4=; b=sJ9XVrMUlt0Ttz05rFXgEGxroJGrGMPl6oEgiUZkCCfWayH0luGsUiUYHJkvectQuuoeTI 8pMSlE0qWsMZhC+ANL8dnSGKzxiWVL1ePr+DEpzxNduN9qqFVvYCWMqa4gakCsZ2PskZ8V hJVIl+PFpGw+7y0lgFsor9Jsk7M6d57Kp+taulaqMNebFfVUJY52SbB8uDhOs0SNjLgZfl pZ6huRS3pBOMAgMxJtdSKYgd/hXrt6RMQkeLTwJ2evlZYhqj5yae8NaL7mYkgi0ryVhGa+ lE2WGfv8OGO8U7n1Nx9UIGbfo/YCzkIgq8A26VogEVYEZpz/HiKVvlcaET0TSw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743737065; a=rsa-sha256; cv=none; b=WCLfTzGxoj4F7hD9giB5Qa7pbVrKRU3+4vICSXJP6kygOVsVrpOfKECFcO/P3N+c1+BJ7H SJ1o9HiBOBNTym5GPmlYtx/NjLUhIzHxmiJZLqIV/wXDn9YozU+2phlzMUEmDLtCIu21/E bad3fVFTBtTNkhZumTahhgZI8cTBEmIgqSFmuZLFe3Ar0e3inuJKb7xOyHD1n1FgO3+q/T 4xLK+fpBBkF+b5YcSKQU6COvXofxhpRfoG2jsOzjdMMJNmJ1at5iuXn987XAAWAOgNl2gr z1xKGWxhBPQkhdc3roPreBHzSrWRNcQ8NNx8n8D2RbqpbZwYcZqaVG3118B7xg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737065; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BFI5ooCVuEnr2Qs2kd4PNQMAs+1UvA3Msj61Zz6rHI4=; b=Ur5Bq2QTJjc/C0s0bgtV/IW37SrdN8GkTe6eY5rvJC8hI4lqihr+6aCvAZcL+3HeBTh1k/ 735jyCgIOQouub2qs7tKYfkfJkhDCWauMxs3OMgq57zeoWsuyV63lCuOgphtBzv+mpSeRk 44Vdho/dOnVCG+QoBfHRXVxRkweaaA/Pjp5kuzo6KZngsNKmxkepjSti1OmJYu6TMO+ppn acCiNwyQC+GCn9CtwQ6llMWMcXME7F74cDinc9NlTdTKLhSGhTQSsQm5wipNV7kQBMtpHk hH8UEDevJrqLr2nKDm0MjHh3cnxgQky0/4R6pc0+aNJsFMhYjgaTCA7Xe+3SSw== 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 4ZTP946fh4zTZn; Fri, 04 Apr 2025 03:24: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 5343OOKD020589; Fri, 4 Apr 2025 03:24:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5343OOeP020586; Fri, 4 Apr 2025 03:24:24 GMT (envelope-from git) Date: Fri, 4 Apr 2025 03:24:24 GMT Message-Id: <202504040324.5343OOeP020586@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 08fd0689d06f - main - net80211: document the crypto enmic/demic functions. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 08fd0689d06fb8587f7d37d8a39647992456b3fd Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=08fd0689d06fb8587f7d37d8a39647992456b3fd commit 08fd0689d06fb8587f7d37d8a39647992456b3fd Author: Adrian Chadd AuthorDate: 2025-03-16 18:13:01 +0000 Commit: Adrian Chadd CommitDate: 2025-04-04 03:23:10 +0000 net80211: document the crypto enmic/demic functions. These functions implement what's needed for TKIP Michael MIC - which is performed over the entire unencrypted MSDU. Each potential fragmented MPDU is encrypted and has its own ICV/MIC. CCMP/GCMP encrypts each MPDU separately (including the MPDUs that make up an A-MPDU), so they'll implement null functions here and instead do the MIC/ICV insertion inline in the crypto functions themselves. Hopefully this makes it a bit clearer on how things should behave, and will help figure out and clean up what further hardware offload features we need. Differential Revision: https://reviews.freebsd.org/D49392 Reviewed by: bz --- sys/net80211/ieee80211_crypto.c | 18 ++++++++++++++++-- sys/net80211/ieee80211_crypto.h | 25 +++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/sys/net80211/ieee80211_crypto.c b/sys/net80211/ieee80211_crypto.c index 600d69d6043b..744d69ce3d1d 100644 --- a/sys/net80211/ieee80211_crypto.c +++ b/sys/net80211/ieee80211_crypto.c @@ -774,8 +774,22 @@ ieee80211_crypto_decap(struct ieee80211_node *ni, struct mbuf *m, int hdrlen, #undef IEEE80211_WEP_HDRLEN } -/* - * Check and remove any MIC. +/** + * @brief Check and remove any post-defragmentation MIC from an MSDU. + * + * This is called after defragmentation. Crypto types that implement + * a MIC/ICV check per MSDU will not implement this function. + * + * As an example, TKIP decapsulation covers both MIC/ICV checks per + * MPDU (the "WEP" ICV) and then a Michael MIC verification on the + * defragmented MSDU. Please see 802.11-2020 12.5.2.1.3 (TKIP decapsulation) + * for more information. + * + * @param vap the current VAP + * @param k the current key + * @param m the mbuf representing the MSDU + * @param f set to 1 to force a MSDU MIC check, even if HW decrypted + * @returns 0 if error / MIC check failed, 1 if OK */ int ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, diff --git a/sys/net80211/ieee80211_crypto.h b/sys/net80211/ieee80211_crypto.h index a830d89c6dc8..fa0d3fc3272a 100644 --- a/sys/net80211/ieee80211_crypto.h +++ b/sys/net80211/ieee80211_crypto.h @@ -216,6 +216,11 @@ struct ieee80211_cipher { void (*ic_setiv)(struct ieee80211_key *, uint8_t *); int (*ic_encap)(struct ieee80211_key *, struct mbuf *); int (*ic_decap)(struct ieee80211_key *, struct mbuf *, int); + /* + * ic_enmic() and ic_demic() are currently only used by TKIP. + * Please see ieee80211_crypto_enmic() and ieee80211_crypto_demic() + * for more information. + */ int (*ic_enmic)(struct ieee80211_key *, struct mbuf *, int); int (*ic_demic)(struct ieee80211_key *, struct mbuf *, int); }; @@ -240,8 +245,24 @@ int ieee80211_crypto_decap(struct ieee80211_node *, struct mbuf *, int, struct ieee80211_key **); int ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, struct mbuf *, int); -/* - * Add any MIC. +/** + * @brief Add any pre-fragmentation MIC to an MSDU. + * + * This is called before 802.11 fragmentation. Crypto types that implement + * a MIC/ICV check per MSDU will not implement this function. + * + * As an example, TKIP implements a Michael MIC check over the entire + * unencrypted MSDU before fragmenting it into MPDUs and passing each + * MPDU to be separately encrypted with their own MIC/ICV. + * + * Please see 802.11-2020 12.5.2.1.2 (TKIP cryptographic encapsulation) + * for more information. + * + * @param vap the current VAP + * @param k the current key + * @param m the mbuf representing the MSDU + * @param f set to 1 to force a MSDU MIC check, even if HW encrypted + * @returns 0 if error / MIC encap failed, 1 if OK */ static __inline int ieee80211_crypto_enmic(struct ieee80211vap *vap, From nobody Fri Apr 4 03:24:25 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTP961bW4z5rSPD; Fri, 04 Apr 2025 03:24: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 4ZTP960bMrz3lM4; Fri, 04 Apr 2025 03:24:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/IsX50caP34tSpf2ex/o3fuCCkjzquozEk90FlfY4gY=; b=cn6RHurobY3/mx0KJKMpYNzf4UW4IxTAPBiXcW0S9lPOHMqUx6vgq6elHwYKicXf67mRMj vQ42AGFy/MGmsQYjlkVv7IAh+uPWJ3OmmIdmB8WXxC/OgCvjd4oE2XvWTB/507S1SvWroM HVTL8EuHJCpFYJhYBDrxIG9XKX1KtJIQskULnWFqcpOSkdeNxPIfO4ccIHNephXM0R2Vdq zHPa13bd+fZ8JkNNPd7lEFPmw26EkEDdS+dz7lR8LVdGH5L3EnKp3Ozbbk0eMS+spC330q fbI65REJU0Xa0Ni1H4CbgMe6JaDQ5T/3vgd2Sltfu/f0bFV6c7+SqnFRj7To2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743737066; a=rsa-sha256; cv=none; b=Dl8ecYEoEFas/2BvvfBuxzOCi2Qs+hWWc5diOGy5LBy2kwe55Dm7mY6TC3ouN+vzkm2XGy h+8KBgqUhdDi1s9+cLrLg2hKYMnJAZpbHvXyalPueKGkef8xAAIQ9iIeGaAQ6dJ7ukgXBv usSEjYWnu874Di2WY3Yv434jiB4Q66DeIT6vg7ReXeLWDDd0oZVXfoWTUPd6kogYF72jHk F4RszCOfZIUYfGHDz8Wd03Rj1U7M7Go69b9Xz3vPVbR/94h/mvXGfJXbFMauf/fRnXEB79 90ufX4b3J0bq24xs6eY1KbjEySRa2zZWWwCNdHS248/AYpZTYIyDMNYviRedWQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743737066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/IsX50caP34tSpf2ex/o3fuCCkjzquozEk90FlfY4gY=; b=Ritfslpw4W1TZJiadHurU209SR+QQEKXRNqOV7hkCgvntbJTT4zJiYWditN7cOPcNCH2Kv 3TwnZvNGqUOJ9sQ2xL2cQt+OBm3X/jYffZJ7KGxptO8vfzdOAKpqQOHc/goPohiosGcuQn sF2kT/Zu89HYmLse9CZXrbe2Ig9mAFtZpQGqQvL7sRZwDBMLhVeft8HnbTrNaghFkBaj5y uxL3qSKQJNYF5QU9e8nY41xkq8BKzVDVj6X8/VY3bVnMbJCLtpb3G8EB24FRr8adNUuPhm NcFPCpEPXu/mNyAwVpKDhjFb9KFhZeSnzD9sSsZknDmZ48xJSmxOV8DJT0snNw== 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 4ZTP960BTrzDW0; Fri, 04 Apr 2025 03:24: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 5343OPTY020622; Fri, 4 Apr 2025 03:24:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5343OPkK020619; Fri, 4 Apr 2025 03:24:25 GMT (envelope-from git) Date: Fri, 4 Apr 2025 03:24:25 GMT Message-Id: <202504040324.5343OPkK020619@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 628d1501f7ec - main - ifconfig: decode 256 bit CCM/GCM ciphers and 256 bit 802.1x/none keymgmt List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 628d1501f7ec5674ac06d10861d60e7326e0ef25 Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=628d1501f7ec5674ac06d10861d60e7326e0ef25 commit 628d1501f7ec5674ac06d10861d60e7326e0ef25 Author: Adrian Chadd AuthorDate: 2025-03-24 01:14:21 +0000 Commit: Adrian Chadd CommitDate: 2025-04-04 03:23:47 +0000 ifconfig: decode 256 bit CCM/GCM ciphers and 256 bit 802.1x/none keymgmt * add AES-GCM-256 and AES-CCM-256 ciphers * add WPA-PSK-SHA256 and UNSPEC-SHA256 key management This allows them to show in ifconfig -v wlan0 list scan, eg RSN Differential Revision: https://reviews.freebsd.org/D49481 Reviewed by: thj --- sbin/ifconfig/ifieee80211.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c index 656e71e325cd..80633e5e9ffc 100644 --- a/sbin/ifconfig/ifieee80211.c +++ b/sbin/ifconfig/ifieee80211.c @@ -3138,6 +3138,10 @@ rsn_cipher(const u_int8_t *sel) return "AES-OCB"; case RSN_SEL(RSN_CSE_GCMP_128): return "AES-GCMP"; + case RSN_SEL(RSN_CSE_CCMP_256): + return "AES-CCMP-256"; + case RSN_SEL(RSN_CSE_GCMP_256): + return "AES-GCMP-256"; } return "?"; #undef WPA_SEL @@ -3154,6 +3158,10 @@ rsn_keymgmt(const u_int8_t *sel) return "8021X-UNSPEC"; case RSN_SEL(RSN_ASE_8021X_PSK): return "8021X-PSK"; + case RSN_SEL(RSN_ASE_8021X_UNSPEC_SHA256): + return "8021X-UNSPEC-SHA256"; + case RSN_SEL(RSN_ASE_8021X_PSK_SHA256): + return "8021X-PSK-256"; case RSN_SEL(RSN_ASE_NONE): return "NONE"; } From nobody Fri Apr 4 09:05:48 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTXl02rscz5rwvm; Fri, 04 Apr 2025 09:05: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 4ZTXl00y2Gz3WlX; Fri, 04 Apr 2025 09:05:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743757548; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mvU9mIsQL4ZDokibBb1IMhQ1D6DMOFj1Xz4hmZWa1QY=; b=mIPA9PgDVe4OAZSGqYubD3bxZ7/gjj0KnlP/OmLPSgsV048NAv8RXOx5/IKZ47u47BSeVP HENjAUNYtsRYttxKNDdpa8OKuYjTFUgfxnDLlkeqvn1MkT498Cpi8xcZUTXGv9Je5luD0m aMuoXecz3/Aios37eJtqlQoan182hWDMiJ5QbX9M9C13u6C6BbxQRxz1CKHmN6k/MFsJUa NpKI5Hboc0Az5BbsIpG3Z75fqDRt8SlEscRCabK3O76ZI/snZq35svLR/mnjQTlhX0d2Oq niwY9Id4hAHhmWs6LBq24uGwEWEDTqtWSm6u+v4XV5rXJtHgHjeOMgHTlqXMuw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743757548; a=rsa-sha256; cv=none; b=TQFM4TmP7EW5YeTVp/2tRjN/Ry6rDL/4A2bJcZuiymZ/VOeJm7vTbuMtzWMNpsBfp87N5a nwblfL74BounU18idTLcfnuaESy8JOhRmJMcC/pNtOI3Tm1yzxKFe/vk6+LiawLGP0lg3h q75xUGw5SG8jrqQ7yuAN/YaQeYABdNubDCxdNAumdqXCp+oviGIbf5Vynmi1JbK6VdF2sN SPYZ85eaTMielhDVeorI9Ap/P9fIjcLiMIlMJ24XI1NWvn1JVpB4/lddo3vBvJIixnCtPz A1C7ezclncUvzLSkotR/mXxHH4wjhND2l1NKsY2irOiVSxs5I9L+UkexbU37Qg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743757548; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=mvU9mIsQL4ZDokibBb1IMhQ1D6DMOFj1Xz4hmZWa1QY=; b=w5DSZElGHPzRCmtIVZMv9sLRtBp9D4d75MayXk9LRp4oKwgShQOmDYKFVffZhd9G4YZ+9N /8oDWfPzrM0d9W7tYcYDsBrvqewgNlvE7uyxJWhnEsYr7Bd3YFbzr0X5sbpmsxWdqsM08d Z01CbhgA1eernBGP21oaVd8JTNXMjn/E2GMi0Xy9rZgWJexle8L0YawwV7fAAiHes+EHjU 63QtRzf4Kaz9uCEGrFjV18ElqcAt6YVEBXI4hLQ679+130owdiQSGPHPnqegZI7Zt4nlN3 rFTis3QhiH+m912v/uDwbaPHeJ3Ve45lE7cvAcg1s4khwEf/yPL5q9BiuoYk+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 4ZTXl00YLBzgxh; Fri, 04 Apr 2025 09:05: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 53495mvB054699; Fri, 4 Apr 2025 09:05:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53495miV054696; Fri, 4 Apr 2025 09:05:48 GMT (envelope-from git) Date: Fri, 4 Apr 2025 09:05:48 GMT Message-Id: <202504040905.53495miV054696@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: e754d89bba8c - stable/14 - tcp: fix detection of bad RTOs List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e754d89bba8c526fd1ff792616ff4cbf9c6e093e Auto-Submitted: auto-generated The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=e754d89bba8c526fd1ff792616ff4cbf9c6e093e commit e754d89bba8c526fd1ff792616ff4cbf9c6e093e Author: Michael Tuexen AuthorDate: 2025-03-20 15:17:40 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 09:05:10 +0000 tcp: fix detection of bad RTOs If timestamps are enabled, the actions performed by a retransmission timeout were rolled back, when they should not. It is needed to make sure the incoming segment advances SND.UNA. To do this, remove the incorrect upfront check and extend the check in the fast path to handle also the case of timestamps. PR: 282605 Reviewed by: cc, rscheff, Peter Lei Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49414 (cherry picked from commit fbcf3b74e8f2c0c5ba37f1839bfe9395eb2fd0b1) --- sys/netinet/tcp_input.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index c868ba648bd7..104e98436f0c 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1637,11 +1637,6 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, to.to_tsecr -= tp->ts_offset; if (TSTMP_GT(to.to_tsecr, tcp_ts_getticks())) to.to_tsecr = 0; - else if (tp->t_rxtshift == 1 && - tp->t_flags & TF_PREVVALID && - tp->t_badrxtwin != 0 && - TSTMP_LT(to.to_tsecr, tp->t_badrxtwin)) - cc_cong_signal(tp, th, CC_RTO_ERR); } /* * Process options only when we get SYN/ACK back. The SYN case @@ -1786,15 +1781,17 @@ tcp_do_segment(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, TCPSTAT_INC(tcps_predack); /* - * "bad retransmit" recovery without timestamps. + * "bad retransmit" recovery. */ - if ((to.to_flags & TOF_TS) == 0 && - tp->t_rxtshift == 1 && + if (tp->t_rxtshift == 1 && tp->t_flags & TF_PREVVALID && tp->t_badrxtwin != 0 && - TSTMP_LT(ticks, tp->t_badrxtwin)) { + (((to.to_flags & TOF_TS) != 0 && + to.to_tsecr != 0 && + TSTMP_LT(to.to_tsecr, tp->t_badrxtwin)) || + ((to.to_flags & TOF_TS) == 0 && + TSTMP_LT(ticks, tp->t_badrxtwin)))) cc_cong_signal(tp, th, CC_RTO_ERR); - } /* * Recalculate the transmit timer / rtt. From nobody Fri Apr 4 16:56:24 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTlB06pMkz5s4ls; Fri, 04 Apr 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 4ZTlB05sWdz3JnV; Fri, 04 Apr 2025 16:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743785784; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9miVLS1EJZOreosvxHEmie3h4WKi8LSmH4IFBArubc4=; b=NpIExGWdz6zc0uF4uJIJ8vW8AJkqo0Yptr6Nh9ATfFpWJzfWP2MPF9d/rHm187+Otc5XBA FZVvCv2zOkAGRaxgqK4WI22uTDQpQmC/Q1Lu3a753yu42U4OK/p4T4quC+X6x0aURD29Mx 48lAf1tp2EyWjpasH2tdO6omnp6rpHLHhsiybjizBBa7aeTzLluO+jAbGyuZFyjMkCkErc SpezE8rpthJpSEaWKxNM2ty4WBDm41DjaRpKFTud7NhnbPux3vUwktC6xXomkoKjeknaR3 oIXBgcMI7nt5IarC4a7ozC2rE9SWob6vFeYLWOlKkS0GTVMXLZ3rTWLvd0zh6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743785784; a=rsa-sha256; cv=none; b=Mkmy68/jDpFO5ItuYA8Rc0mBRTHQR82sHTC/3XOPYr62rHh14Oomnej5OFGX67slieTjWZ pVgZiL81Ki8nEaDnvwqi+ICflBblCeO8t7uEEUrALvy8pBp/2rzhCl4K9QoJ0IAxsphLBU 9oT+HgIiy4Zzs1BZaXOxhthwPnXns0X39u0XepSkRLj7xYOG5kvPpfmPddy789HwQT1JGs XgVlpnRFluZQxPxlL52dLk870qhI+ZWJUDdZ9YY9zAZx+X+WX62juJuWkNIUwqQ9d4D/S7 AD/xK/tsgIxKz9jBLUhn43UfWdUxEnseHuAGlRKKJq3cm+HAZgCc2Gt0F9jkjw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743785784; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9miVLS1EJZOreosvxHEmie3h4WKi8LSmH4IFBArubc4=; b=aAhi/lOSLy2Iry5pLvowmWxkG9KhluIgtjzujURkOVGepe/BCUBO2N8rhgSQf0Cbj69wz3 kU5w2Rp86Egz64BWgeAKBAwQ7wjfqR4Zhv4sICdk2Qzq0Ecz2Oucx2Wg5fISON8vd6QT8N vQBRhRy+vKb0oaVv8Dqa+4tFRwlqs1AtkCuIBgKRm1BYvuXLUn5fFyUqFGz7TiYhU/qlYk ceRn6X4V+M/NVRmZ/0cgwLBGI/AgJQxL7gPU8yDGYrY3PKuEm/IWERE6KScKFErvyDu7qS 5Derjqplgxx2W9GqMtu5arbqbGipFWL6Eo0Yjk3SRe1bgCflT0j/xmOrTyMPfw== 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 4ZTlB05RyhzvNr; Fri, 04 Apr 2025 16:56: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 534GuOqI031572; Fri, 4 Apr 2025 16:56:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534GuO64031569; Fri, 4 Apr 2025 16:56:24 GMT (envelope-from git) Date: Fri, 4 Apr 2025 16:56:24 GMT Message-Id: <202504041656.534GuO64031569@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: 2a0d26d793b2 - main - tcp: fix typos in comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c commit 2a0d26d793b2ff63d36305aa98047a4bc6a6cd8c Author: Peter Lei AuthorDate: 2025-04-04 16:54:35 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 16:54:35 +0000 tcp: fix typos in comment Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 29a6b431f311..a9b5f5374503 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1453,7 +1453,7 @@ drop: * is at least 3/8 of the current socket buffer size. * 3. receive buffer size has not hit maximal automatic size; * - * If all of the criteria are met we increaset the socket buffer + * If all of the criteria are met, we increase the socket buffer * by a 1/2 (bounded by the max). This allows us to keep ahead * of slow-start but also makes it so our peer never gets limited * by our rwnd which we then open up causing a burst. From nobody Fri Apr 4 20:09:20 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTqSc6v3Pz5sLgy; Fri, 04 Apr 2025 20:09: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 4ZTqSc655Yz4154; Fri, 04 Apr 2025 20:09:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HW200ifUS42kC+8/2Xz/uDLXKQ6jXpYohTXAI1KjGqk=; b=dMSM6uB7kkwlThRnA9WzYmY54D+DqSSJp24it71K7Qr3WSl0f7XrzjlaTYK3ZYj8qsFooA IeqdyIE+a17juGpnFMNEMdzVz46ROcleiuKkSk0iEPtHGfXte70us+FfVYALZ2Qt0CqR64 eiDC9e9EUFOWNwLZHqaVhAUWCV81TH6b3+LjyCo3+8aVM3wQTXzK3MYcVYVqNEsK94IHYg 8K59q4K6qStSbPvEWSMa4YAS4nV+qT0VPM+sgAMI6bCp7BFwhUoWIIP4B6R6GNCKRn/mll r6xsKPsNRqmVT+Kn/2tLcarY9qJwEn8vd0kpA7P3qjA6vzcH1ot4dE1+c9Gy0w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743797360; a=rsa-sha256; cv=none; b=vsHNWZ8bwlqD1e6sDFJB098V9VsCrMdlg+B/d13hpgAjpViJ4F1dw76MFdJjFp4uiNd9yi qK3/XEgJ+8L2WreNDddD6IKoZIHvQOhsX1EMc1HrukdW9R6tODah8wOHlywAWcxCok8ixU 1ru+4ljfEbSZt4yH1FmKjaYwO16B0w5fWFkfabHlwZAr2XBNWmbU2yPKI8wfkFIpe0ubRz gv+5S+4RGSd0YFeNHHDPjKQn8zLU3bvFwWLSlIR4uQb2unO0VZaxzphPiv00PVfTArJbYE FwMp79pFC/HGu28A9xJj0qrr4AmGysS3EjjK/U0BT0PwUDk5susStfJPH1yStQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HW200ifUS42kC+8/2Xz/uDLXKQ6jXpYohTXAI1KjGqk=; b=vVVIjXe8hUOJucCyVOcQA9BVHaL/lZr1c2tPlum2M/pS0iKoGKdEC3plcknO2lBB8i2TYS iOIcoNUEwBufnqSV88nOvrTfy++e2vWd+bqa/Gs/5Iw+6kkTR4bXKwr6LzhSNfVusuxBmT rlaSkd054kwNyE8fG9IpoMr1ro7YV+vMWz8jfM47/rVzdihuYftjZQYJn5zHPgvYQWbuWF kRCcDn8sycIElsmJla8HUptVyc+h6AxktZeuEYPS+p+Tklw5ufLhgpo99aOq4cTXXKMImJ xH8N/eoQ66Vc+Xau0ueWru1nkj/S9YUG+/tis+DfZ1vOVjeRwjNUghmXTBjUWw== 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 4ZTqSc5Dg8z11BL; Fri, 04 Apr 2025 20:09: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 534K9KaE090273; Fri, 4 Apr 2025 20:09:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534K9Kv4090270; Fri, 4 Apr 2025 20:09:20 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:09:20 GMT Message-Id: <202504042009.534K9Kv4090270@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: 3bd1e85fc13c - main - tcp: clear sendfile logging struct List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3bd1e85fc13cb90853046300dcaa31d63b45ee21 Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=3bd1e85fc13cb90853046300dcaa31d63b45ee21 commit 3bd1e85fc13cb90853046300dcaa31d63b45ee21 Author: Peter Lei AuthorDate: 2025-04-04 20:07:09 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 20:07:09 +0000 tcp: clear sendfile logging struct The sendfile black box logging struct is much smaller than the encompassing stack specific logging union. Be sure to clear the trailing unused memory when logging. Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_log_buf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/netinet/tcp_log_buf.c b/sys/netinet/tcp_log_buf.c index e9ad05382b81..5142b3ebdd71 100644 --- a/sys/netinet/tcp_log_buf.c +++ b/sys/netinet/tcp_log_buf.c @@ -2878,6 +2878,7 @@ tcp_log_sendfile(struct socket *so, off_t offset, size_t nbytes, int flags) struct timeval tv; tcp_log_eventspecific_t log; + memset(&log, 0, sizeof(log)); microuptime(&tv); log.u_sf.offset = offset; log.u_sf.length = nbytes; From nobody Fri Apr 4 20:12:28 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTqXF0vFDz5sMk5; Fri, 04 Apr 2025 20:12: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 4ZTqXF0bT2z423C; Fri, 04 Apr 2025 20:12:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797549; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Es31No3C+NBnCfUG9/n9y1hEaidx/Pf8IHHgoqVYCps=; b=RRNj5Q9FPiwwVWbkOcjMkAZvoyUEjmh5cQc/upX6koBttmL0OyK5e66K3vpADw/IFPV9hM yZ10jVH25YaY8d/nJxc1usj3nUP/XmW6RLhEgouUyje7qathhsGw8urfVhlYkwUEf9+L0H HamABlACnDR+pJ2S2HwzrtY7r7A7iXg2kuzZPsFtYK9LuKHGFdPhovFIZ497OJhDDyON5A 24pneq57W57oNuD0Olm7OhGrWuwAra6EH+yUjXhO6lYf3dyCWfKqwTf3iXhkzuG7i9BFBu krDW16snrjEbZL0g10ihcnQsHBnEV4yKfTLeVXWBNnV9dAbCzrbOCaERcogtIw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743797549; a=rsa-sha256; cv=none; b=k7IDldQlF6DsvG/NMWzPiNbC22V2wIsizd3/cpB10RMFemINPHW3EF4rylJK71+W/dnMQ3 djUnB24O/4PEfw4Hh8qdmHLehQtI+tWohuDT9cruuYzAtWOtkhzY9ATkRMlS7G4NX33aDZ +swUrv0Hp2gGVG3EMsQbYaTmOgrgR61wf+zydWtkBrMTt+ABKipn/y4PcbP6JwkAV+UljI EwhmbZwWnr+OuBr2A6wmuOyWX6Pg8RMV7E/3CyJNB5WqYNRgepaJhviDlpjhaZyc6U30Vy W60budVJShlEHiyZADgBN9ynXtjTE5+WczyPUGyaqi+8W63ymiDcG6zMU+6+LA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743797549; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Es31No3C+NBnCfUG9/n9y1hEaidx/Pf8IHHgoqVYCps=; b=dCdYmwYK5T7OGRUxjJMfcR8fKTwJ0yN3hY0wIOdrIDPLlfMjggiINqCH+d/G6nb754xME+ IuG7XzsDvC0bH17AWzByn1u1+xzoXyyHLhg6aCDUbmy6ZtksjrGYJjjOtQ0/EGt6r5p+dz 6g+OV4RraoOES56t4jzw74oW1YQ8BmSXdCG+gBFCpWt6pCNFQB1Byq5fl8ifcOS7CF27x0 Fr84w0gHny6emUOUrsZ4oyby0MoKoKz7kgzNRAoS7zj9aCCvMBGECsO6l+/asEBJJyf56i 1REolPmjJSwZdyvyy3u0683AZEQBAfIzSu8ahx4OP7CNmIKQjAkpTk9E9r6v3w== 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 4ZTqXF07Jqz11YC; Fri, 04 Apr 2025 20:12: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 534KCSGp006516; Fri, 4 Apr 2025 20:12:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534KCSSw006513; Fri, 4 Apr 2025 20:12:28 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:12:28 GMT Message-Id: <202504042012.534KCSSw006513@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: 382af4d38b62 - main - tcp: clear blackbox logging union List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 382af4d38b62675f00f64275793a6b5fccfe62fa Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=382af4d38b62675f00f64275793a6b5fccfe62fa commit 382af4d38b62675f00f64275793a6b5fccfe62fa Author: Peter Lei AuthorDate: 2025-04-04 20:10:48 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 20:10:48 +0000 tcp: clear blackbox logging union Clear the black box logging containing union rather than the u_bbr structure for clarity and consistency. Currently u_bbr, u_raw, and u64_raw are the same size. No functional change intended. Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc. --- sys/netinet/tcp_hpts.c | 2 +- sys/netinet/tcp_stacks/rack.c | 66 +++++++++++++++++++-------------------- sys/netinet/tcp_stacks/rack_pcm.c | 2 +- sys/netinet/tcp_subr.c | 4 +-- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/sys/netinet/tcp_hpts.c b/sys/netinet/tcp_hpts.c index 5b39c94e0e58..91f8251589e4 100644 --- a/sys/netinet/tcp_hpts.c +++ b/sys/netinet/tcp_hpts.c @@ -440,7 +440,7 @@ tcp_hpts_log(struct tcp_hpts_entry *hpts, struct tcpcb *tp, struct timeval *tv, * 16 bit - cwnd_gain * 8 bit - bbr_state, bbr_substate, inhpts; */ - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = hpts->p_nxt_slot; log.u_bbr.flex2 = hpts->p_cur_slot; log.u_bbr.flex3 = hpts->p_prev_slot; diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index f5bc435890e7..cb4e22401c12 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -684,7 +684,7 @@ out: struct newreno *ptr; ptr = ((struct newreno *)tp->t_ccv.cc_data); - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = ptr->beta; log.u_bbr.flex2 = ptr->beta_ecn; @@ -2678,7 +2678,7 @@ rack_log_retran_reason(struct tcp_rack *rack, struct rack_sendmap *rsm, uint32_t */ return; } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = tsused; log.u_bbr.flex2 = thresh; log.u_bbr.flex3 = rsm->r_flags; @@ -2709,7 +2709,7 @@ rack_log_to_start(struct tcp_rack *rack, uint32_t cts, uint32_t to, int32_t slot union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = rack->rc_tp->t_srtt; log.u_bbr.flex2 = to; log.u_bbr.flex3 = rack->r_ctl.rc_hpts_flags; @@ -2752,7 +2752,7 @@ rack_log_to_event(struct tcp_rack *rack, int32_t to_num, struct rack_sendmap *rs union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex8 = to_num; log.u_bbr.flex1 = rack->r_ctl.rc_rack_min_rtt; @@ -2792,7 +2792,7 @@ rack_log_map_chg(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex8 = flag; log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.cur_del_rate = (uintptr_t)prev; @@ -2840,7 +2840,7 @@ rack_log_rtt_upd(struct tcpcb *tp, struct tcp_rack *rack, uint32_t t, uint32_t l if (tcp_bblogging_on(tp)) { union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = t; log.u_bbr.flex2 = len; @@ -3013,7 +3013,7 @@ rack_log_progress_event(struct tcp_rack *rack, struct tcpcb *tp, uint32_t tick, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = line; log.u_bbr.flex2 = tick; @@ -3042,7 +3042,7 @@ rack_log_type_bbrsnd(struct tcp_rack *rack, uint32_t len, uint32_t slot, uint32_ if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = slot; if (rack->rack_no_prr) @@ -3149,7 +3149,7 @@ rack_log_type_just_return(struct tcp_rack *rack, uint32_t cts, uint32_t tlen, ui union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = slot; log.u_bbr.flex2 = rack->r_ctl.rc_hpts_flags; @@ -3185,7 +3185,7 @@ rack_log_to_cancel(struct tcp_rack *rack, int32_t hpts_removed, int line, uint32 if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = line; log.u_bbr.flex2 = rack->r_ctl.rc_last_output_to; @@ -3230,7 +3230,7 @@ rack_log_alt_to_to_cancel(struct tcp_rack *rack, /* No you can't use 1, its for the real to cancel */ return; } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = flex1; log.u_bbr.flex2 = flex2; @@ -3255,7 +3255,7 @@ rack_log_to_processing(struct tcp_rack *rack, uint32_t cts, int32_t ret, int32_t union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = timers; log.u_bbr.flex2 = ret; log.u_bbr.flex3 = rack->r_ctl.rc_timer_exp; @@ -3285,7 +3285,7 @@ rack_log_to_prr(struct tcp_rack *rack, int frm, int orig_cwnd, int line) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = rack->r_ctl.rc_prr_out; log.u_bbr.flex2 = rack->r_ctl.rc_prr_recovery_fs; if (rack->rack_no_prr) @@ -4118,7 +4118,7 @@ rack_log_rtt_shrinks(struct tcp_rack *rack, uint32_t us_cts, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = line; log.u_bbr.flex2 = rack->r_ctl.rc_time_probertt_starts; log.u_bbr.flex3 = rack->r_ctl.rc_lower_rtt_us_cts; @@ -4864,7 +4864,7 @@ rack_log_gp_calc(struct tcp_rack *rack, uint32_t add_part, uint32_t sub_part, ui union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = add_part; log.u_bbr.flex2 = sub_part; @@ -5214,7 +5214,7 @@ rack_do_goodput_measurement(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = rack->r_ctl.last_rnd_of_gp_rise; @@ -5250,7 +5250,7 @@ rack_do_goodput_measurement(struct tcpcb *tp, struct tcp_rack *rack, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = (uint32_t)gp_est; @@ -5533,7 +5533,7 @@ rack_ack_received(struct tcpcb *tp, struct tcp_rack *rack, uint32_t th_ack, uint union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = th_ack; log.u_bbr.flex2 = tp->t_ccv.flags; @@ -5648,7 +5648,7 @@ rack_post_recovery(struct tcpcb *tp, uint32_t th_ack) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = th_ack; log.u_bbr.flex2 = tp->t_ccv.flags; @@ -6481,7 +6481,7 @@ rack_log_hpts_diag(struct tcp_rack *rack, uint32_t cts, if (rack_verbose_logging && tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = diag->p_nxt_slot; log.u_bbr.flex2 = diag->p_cur_slot; log.u_bbr.flex3 = diag->slot_req; @@ -6520,7 +6520,7 @@ rack_log_wakeup(struct tcpcb *tp, struct tcp_rack *rack, struct sockbuf *sb, uin union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex1 = sb->sb_flags; log.u_bbr.flex2 = len; log.u_bbr.flex3 = sb->sb_state; @@ -14227,7 +14227,7 @@ rack_log_chg_info(struct tcpcb *tp, struct tcp_rack *rack, uint8_t mod, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex8 = mod; log.u_bbr.flex1 = flex1; @@ -15117,7 +15117,7 @@ rack_fini(struct tcpcb *tp, int32_t tcb_is_purged) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.flex8 = 10; log.u_bbr.flex1 = rack->r_ctl.rc_num_maps_alloced; log.u_bbr.flex2 = rack->rc_free_cnt; @@ -15361,7 +15361,7 @@ rack_log_input_packet(struct tcpcb *tp, struct tcp_rack *rack, struct tcp_ackent tcp_req = tcp_req_find_req_for_seq(tp, ae->ack); } #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr == 0) log.u_bbr.flex1 = rack->r_ctl.rc_prr_sndcnt; @@ -15564,7 +15564,7 @@ rack_log_pcm(struct tcp_rack *rack, uint8_t mod, uint32_t flex1, uint32_t flex2, struct timeval tv; (void)tcp_get_usecs(&tv); - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_tv_to_usectick(&tv); log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); log.u_bbr.flex8 = mod; @@ -15647,7 +15647,7 @@ rack_new_round_setup(struct tcpcb *tp, struct tcp_rack *rack, uint32_t high_seq) union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack->r_ctl.current_round; log.u_bbr.flex2 = rack->r_ctl.last_rnd_of_gp_rise; @@ -16570,7 +16570,7 @@ rack_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, tcp_req = tcp_req_find_req_for_seq(tp, th->th_ack); } #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr == 0) log.u_bbr.flex1 = rack->r_ctl.rc_prr_sndcnt; @@ -17344,7 +17344,7 @@ at_lt_bw: union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_get_usecs(&tv); log.u_bbr.flex1 = rack_bw_multipler; log.u_bbr.flex2 = len; @@ -18102,7 +18102,7 @@ rack_log_fsb(struct tcp_rack *rack, struct tcpcb *tp, struct socket *so, uint32_ union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = error; log.u_bbr.flex2 = flags; @@ -18367,7 +18367,7 @@ rack_log_queue_level(struct tcpcb *tp, struct tcp_rack *rack, err = in_pcbquery_txrlevel(rack->rc_inp, &p_queue); err = in_pcbquery_txrtlmt(rack->rc_inp, &p_rate); #endif - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); log.u_bbr.flex1 = p_rate; log.u_bbr.flex2 = p_queue; @@ -18820,7 +18820,7 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma counter_u64_add(rack_collapsed_win_rxt, 1); counter_u64_add(rack_collapsed_win_rxt_bytes, (rsm->r_end - rsm->r_start)); } - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; @@ -19369,7 +19369,7 @@ again: if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; @@ -21886,7 +21886,7 @@ send: if (tcp_bblogging_on(rack->rc_tp)) { union tcp_log_stackspecific log; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(rack->rc_tp); if (rack->rack_no_prr) log.u_bbr.flex1 = 0; diff --git a/sys/netinet/tcp_stacks/rack_pcm.c b/sys/netinet/tcp_stacks/rack_pcm.c index 09e90da88895..b0e300847c4a 100644 --- a/sys/netinet/tcp_stacks/rack_pcm.c +++ b/sys/netinet/tcp_stacks/rack_pcm.c @@ -241,7 +241,7 @@ skip_ack_accounting: for (i=0; ir_ctl.pcm_i.cnt; i++) { e = &rack->r_ctl.pcm_s[i]; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.timeStamp = tcp_tv_to_usectick(&tv); log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); log.u_bbr.flex8 = 1; diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 34964ed8283c..f3f28f54c459 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2086,7 +2086,7 @@ tcp_respond(struct tcpcb *tp, void *ipgen, struct tcphdr *th, struct mbuf *m, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(tp); log.u_bbr.flex8 = 4; log.u_bbr.pkts_out = tp->t_maxseg; @@ -4364,7 +4364,7 @@ tcp_req_log_req_info(struct tcpcb *tp, struct tcp_sendfile_track *req, union tcp_log_stackspecific log; struct timeval tv; - memset(&log.u_bbr, 0, sizeof(log.u_bbr)); + memset(&log, 0, sizeof(log)); log.u_bbr.inhpts = tcp_in_hpts(tp); log.u_bbr.flex8 = val; log.u_bbr.rttProp = req->timestamp; From nobody Fri Apr 4 20:41:27 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTrB721lBz5sPbV; Fri, 04 Apr 2025 20:41:51 +0000 (UTC) (envelope-from thj@freebsd.org) Received: from fout-a1-smtp.messagingengine.com (fout-a1-smtp.messagingengine.com [103.168.172.144]) (using TLSv1.3 with cipher TLS_AES_256_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 4ZTrB64nhyz458n; Fri, 04 Apr 2025 20:41:50 +0000 (UTC) (envelope-from thj@freebsd.org) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=MXrdcPIZ; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=freebsd.org (policy=none); spf=softfail (mx1.freebsd.org: 103.168.172.144 is neither permitted nor denied by domain of thj@freebsd.org) smtp.mailfrom=thj@freebsd.org Received: from phl-compute-10.internal (phl-compute-10.phl.internal [10.202.2.50]) by mailfout.phl.internal (Postfix) with ESMTP id C89A413801BB; Fri, 4 Apr 2025 16:41:49 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-10.internal (MEProxy); Fri, 04 Apr 2025 16:41:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1743799309; x=1743885709; bh=5 Qa6ZJIMQ40keRa7Mmp65HDs6VxW5PZfBqKHtBxjJJE=; b=MXrdcPIZLuDBG5BjJ 9xcySRs/gvFdb6F9XPubk+4vD9bfDH9Mm/MEocC47oHlfH062nd4Lpcv5qAC5xtj beMB4WCdjumLRA4QQ5lv+t+QpvkftRH6ThiC3/RbeCsshv02YbwnLeCJRIhdNqQ1 97OgEQp5ggPOPaCPAIm5IiXsdeXse1j706qSn+eO13t4vJv5QLJPLj1dIOD05P14 NRouclewZK+yHZvuiWzAHUeSxnZkjNqSz28ausEbAKyclaUSn4B+5pcGZfRc0OEA 7nGn2DKW0fgLApNDjyYZLVsmazsNTqeeXIqzrIg4NFRkDZJWjM4Afoe3xDQF4y9z MzMMQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduledvgeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvffkjghfufgtgfesthhqredtredt jeenucfhrhhomhepfdfvohhmucflohhnvghsfdcuoehthhhjsehfrhgvvggsshgurdhorh hgqeenucggtffrrghtthgvrhhnpefhveetjeeggedtudeuffevleevudejveduiedtfeeh ffelveejtdejkedutdehveenucffohhmrghinhepthgrrhhsnhgrphdrtghomhenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhjsehfrhgv vggsshgurdhorhhgpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprh gtphhtthhopeguvghvqdgtohhmmhhithhsqdhsrhgtqdgrlhhlsehfrhgvvggsshgurdho rhhgpdhrtghpthhtohepuggvvhdqtghomhhmihhtshdqshhrtgdqmhgrihhnsehfrhgvvg gsshgurdhorhhgpdhrtghpthhtohepshhrtgdqtghomhhmihhtthgvrhhssehfrhgvvggs shgurdhorhhgpdhrtghpthhtoheptghpvghrtghivhgrsehtrghrshhnrghprdgtohhm X-ME-Proxy: Feedback-ID: ib75146ab:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 7C1C6BA0070; Fri, 4 Apr 2025 16:41:49 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 X-ThreadId: Te805ccfc18d7a474 Date: Fri, 04 Apr 2025 21:41:27 +0100 From: "Tom Jones" To: "Colin Percival" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-Id: <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> In-Reply-To: <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> References: <202504030707.53377PCW040790@gitrepo.freebsd.org> <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.29 / 15.00]; RBL_SENDERSCORE_REPUT_9(-1.00)[103.168.172.144:from]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.995]; R_DKIM_ALLOW(-0.20)[messagingengine.com:s=fm2]; RCVD_IN_DNSWL_LOW(-0.10)[103.168.172.144:from]; MIME_GOOD(-0.10)[text/plain]; DMARC_POLICY_SOFTFAIL(0.10)[freebsd.org : No valid SPF, DKIM not aligned (relaxed),none]; XM_UA_NO_VERSION(0.01)[]; TO_DN_SOME(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEFALL_USER(0.00)[thj]; ARC_NA(0.00)[]; ASN(0.00)[asn:209242, ipnet:103.168.172.0/24, country:US]; DWL_DNSWL_NONE(0.00)[messagingengine.com:dkim]; MLMMJ_DEST(0.00)[dev-commits-src-all@freebsd.org,dev-commits-src-main@freebsd.org]; RCVD_COUNT_THREE(0.00)[3]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[messagingengine.com:+] X-Rspamd-Queue-Id: 4ZTrB64nhyz458n X-Spamd-Bar: ---- Sorry for the breakage, something has broken in my mail filters so direc= t mails to me aren=E2=80=99t landing in my inbox when also sent to src-c= ommits (just the folder for commits).=20 I=E2=80=99ll look at this as soon as I can (probably not until Monday). = If you want to remove iwx from the build (or just i386 in the meantime)= please do.=20 On Thu, Apr 3, 2025, at 18:38, Colin Percival wrote: > On 4/3/25 00:07, Tom Jones wrote: >> commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e >> =20 >> This fixes the build on i386. > > You sure about that? > > /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5762 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[0].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5762 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[0].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5769 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[1].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5769 | if (data->cmd_paddr >> 32 !=3D (data->cmd_paddr +=20 > le32toh(desc->tbs[1].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5778 | if (data->cmd_paddr >> 32 !=3D (data->cmd_pad= dr +=20 > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > | ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >=3D width o= f type=20 > [-Werror,-Wshift-count-overflow] > 5778 | if (data->cmd_paddr >> 32 !=3D (data->cmd_pad= dr +=20 > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > |=20 > ^ ~~ > /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type '= unsigned=20 > long' but the argument has type 'uint64_t' (aka 'unsigned long long')=20 > [-Werror,-Wformat] > 10971 | DPRINTF(("%s: k->wk_keytsc=3D%lu\n", __func__, k->wk= _keytsc)); > | ~~~ ^~~~~~~= ~~~~~ > | %llu > > --=20 > Colin Percival > FreeBSD Release Engineering Lead & EC2 platform maintainer > Founder, Tarsnap | www.tarsnap.com | Online backups for the truly para= noid --=20 - Tom From nobody Fri Apr 4 20:58:56 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTrYr3mSlz5sQ52; Fri, 04 Apr 2025 20:58:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZTrYr32zZz47JN; Fri, 04 Apr 2025 20:58:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743800336; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rlBf15QUcPrEOyiFr1bAbey50pdLf7HgVjG1iTnJ2/4=; b=oS9wWOh3D6+ckpaphVuohqHlnhwPxGqeJY1EVrLn8sp4kptL7zwfUhj6tm+pivWHPgfRw/ VAFD+A8wH8cJTZ0WNWLrkkkMZXkkgHceZMbTCC7d0H9vVVGjgmi1dpZUi1fHG0Ada8+CBA czvmm4nFiPPNeeUxxhq1YBEL2ccZVQA+7sFY5qtZ9f94VnNqcGzDlB0Z+4eSVJnheeJH+Y dal/FDfTB0n/zRIlXHckEdyX7GMXUM6+bqMzTfNo5z0jGix0I6E3vHFNfSQjDbcRGwXkDG CrxLLwhuoQdCTNeAF6E2o3Rb8W0FafnNk6oRfFf/11RiOXHyuutMGEBVh0ToQw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743800336; a=rsa-sha256; cv=none; b=GswIVF5FlRuOHu/O1/8HVByEdsLxJqScpVuNS2lgqzs9k/KFC3Jx4vNXpZBrziUgy3QQrL 9rKA1xEggziuIXYnb4vMezKKXOgsw3ocYWnj/nNAJjYzudhFFsNYHYCwNLf1FzPCXdVcbN gr4/i1eUXZJGoAYHIFZAIWJk+nJp+CVa50CNee8wfbs8VHEGpVCzIfVrQe4Iq6XaWZB2wy XnPH4QMOCf/sK9RK6/sH0TDjZXv2LIn29lHcYOO+QovGL2jydBPbB2KQYQYJZXqYZ8glIC uZbzJVyxVLT4Muio0C0xqSSyROfddVAPnmaN2Vz8qKstBW3lYonjZQwfkm3wow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743800336; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rlBf15QUcPrEOyiFr1bAbey50pdLf7HgVjG1iTnJ2/4=; b=RfgA7PJ6lxO/eXgXlDzoqW+IyEy8pzoCgGIotjE5Mb2mU5KQIaizW3KDb1FBOCAQBBwJah /vmT5Plvis0cGx5TydIMTqaz2r53MO5yCszHVbBEW2mNrfJJzeuHnpG78rhhmqRqgKpYz5 lVkTGbnV+mGVKEMMz6LID0oQ8tEtW9XU0WK+QCf9fo0Ub14td/FS6dIoEZ+HFiglt8migL ECatt+9+Md5C6SUsiBL2/bh9p37O87jo6EEZP+bPycX06HFOKOMECCqJXe11lG75zCVC0J o8GTD54OKiARJDmF4FuKuH2g9vq2v/vrHB/OvrYE5sEWo5PNag4IUU6gYglnRw== 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 4ZTrYr2G1xz12Cv; Fri, 04 Apr 2025 20:58: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 534Kwur9083484; Fri, 4 Apr 2025 20:58:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534KwuRX083481; Fri, 4 Apr 2025 20:58:56 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:58:56 GMT Message-Id: <202504042058.534KwuRX083481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Piotr Kubaj Subject: git: 1962f9631187 - stable/14 - zfs: enable FPU on powerpc* List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pkubaj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1962f96311878e5413f6e70e0925f08c1d2f9db8 Auto-Submitted: auto-generated The branch stable/14 has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=1962f96311878e5413f6e70e0925f08c1d2f9db8 commit 1962f96311878e5413f6e70e0925f08c1d2f9db8 Author: Piotr Kubaj AuthorDate: 2025-03-27 16:32:59 +0000 Commit: Piotr Kubaj CommitDate: 2025-04-04 20:57:57 +0000 zfs: enable FPU on powerpc* Differential Revision: https://reviews.freebsd.org/D49538 (cherry picked from commit 5b02365ac656e1cccf293ec1c57a8eb6c5cd51e2) --- sys/conf/files.powerpc | 13 +++++++++++-- .../openzfs/include/os/freebsd/spl/sys/simd_powerpc.h | 17 ++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/sys/conf/files.powerpc b/sys/conf/files.powerpc index 6d44d9114e25..ddce4b917890 100644 --- a/sys/conf/files.powerpc +++ b/sys/conf/files.powerpc @@ -17,8 +17,17 @@ contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S optional zfs comp # zfs sha2 hash support contrib/openzfs/module/icp/asm-ppc64/sha2/sha256-p8.S optional zfs compile-with "${ZFS_S}" contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-p8.S optional zfs compile-with "${ZFS_S}" -contrib/openzfs/module/icp/asm-ppc64/sha2/sha256-ppc.S optional zfs compile-with "${ZFS_S}" -contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-ppc.S optional zfs compile-with "${ZFS_S}" +zfs-sha256-ppc.o optional zfs \ + dependency "$S/contrib/openzfs/module/icp/asm-ppc64/sha2/sha256-ppc.S" \ + compile-with "${CC} -c ${ZFS_ASM_CFLAGS} -o ${.TARGET} ${WERROR} $S/contrib/openzfs/module/icp/asm-ppc64/sha2/sha256-ppc.S" \ + no-implicit-rule \ + clean "zfs-sha256-ppc.o" + +zfs-sha512-ppc.o optional zfs \ + dependency "$S/contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-ppc.S" \ + compile-with "${CC} -c ${ZFS_ASM_CFLAGS} -o ${.TARGET} ${WERROR} $S/contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-ppc.S" \ + no-implicit-rule \ + clean "zfs-sha512-ppc.o" cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs powerpc | dtrace powerpc | zfs powerpcspe | dtrace powerpcspe compile-with "${ZFS_C}" cddl/dev/dtrace/powerpc/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}" diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h index 2fd806e1a0b5..6d8503196050 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h @@ -43,18 +43,25 @@ #ifndef _FREEBSD_SIMD_POWERPC_H #define _FREEBSD_SIMD_POWERPC_H +#include + #include #include #include #include +#include -/* FreeBSD doesn't support floating point on powerpc kernel yet */ -#define kfpu_allowed() 0 - +#define kfpu_allowed() 1 #define kfpu_initialize(tsk) do {} while (0) -#define kfpu_begin() do {} while (0) -#define kfpu_end() do {} while (0) +#define kfpu_begin() { \ + if (__predict_false(!is_fpu_kern_thread(0))) \ + fpu_kern_enter(PCPU_GET(curthread), NULL, FPU_KERN_NOCTX);\ +} +#define kfpu_end() { \ + if (__predict_false(PCPU_GET(curpcb)->pcb_flags & PCB_KERN_FPU_NOSAVE))\ + fpu_kern_leave(PCPU_GET(curthread), NULL); \ +} #define kfpu_init() (0) #define kfpu_fini() do {} while (0) From nobody Fri Apr 4 20:58:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTrYs4ysQz5sQGf; Fri, 04 Apr 2025 20:58: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 4ZTrYs2zXSz47DK; Fri, 04 Apr 2025 20:58:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743800337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5zYQhIBOGGJzo6lr3rtxDgkGDCM9Wi3pWLx9SRfVm3I=; b=r0Tcn7INOQiCSlBm9k8Jh1TlE5UZHGDal3a3xPRBUhE+hLwVZdhrTiRG6hhy5YBQJQE6a/ yqdJCJI7jqx0pLZ1FywrlvRb0MqOGB18z4RZZ09MOYdYwyCFemU47kS/3EhrLlv+By7+ur Ynm/cZC1AaBYKniM5UzQzE6eKdmP8qdrEJz4aH+nLuIYXXAD3lOm7Uy18DKaKifpbevKNp +oZOgxIY+zdKmO+h2seLL+NwKcx9V1snvf+M0jYFs94CeD4RsEyA0HaY6cekywuylhEKHC f+HxpeiR7nP7EbLv2YJhooovSsvcDELvh5hVzIeHYrNOfEL2USRCK5PukhE8HA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743800337; a=rsa-sha256; cv=none; b=N1qciupstA7yu2VYu7Kedq5SLHvs9pEeb1esxu5bJ+vlc7+TaWOvb5GfiM8FOfTn6uuH2U VOAhR3tq7hO0DDT6S5bhR7io32KxJzEQRartatDiWjghXK75HTHYfEFsLWfmadT3YgAtbe it8jjpdodYS7lBlQEurFTWKTqFgh8VUH2LLqlGw51qWKgkpuMnP2WvKd60mySyfKS9nJRP H/Q12In2x3mz4l57Y2CPlj6aQX34h6pQcEH3NbwdgaZ4V2J5RRVdKUppXCyvK/NLuTP70b 72KBnFWSLM30s166F4LYYMIU4VfQ6zCzze039ERp821MNBlHFpGvtZu5VbASVg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743800337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5zYQhIBOGGJzo6lr3rtxDgkGDCM9Wi3pWLx9SRfVm3I=; b=ftx97sWP5hpuLoVMaoqEWHNf5RKANdSGR1+FsXqu6eElbeXwrqTBLJpMsAofrpdeUtlRFi ZnhITj9/7/1Ka2solGgt4OZrUuHUctekMLjGIkjCW/r+IGoAoQSMPY8DzMiMayFvRB1fQ1 PiwD6Pza338mg+Un3f1C0TqSkRw6z6niVlSUuE7bFZiBvfleZuhLYz7GvoZWsPQiZ89Nmr 5yoiH3kDd4FzEdaxpUW0QfhlInwU7/hw/TiwRPeYAe6ZULazRfQNJu+gD9NmApP4/H5pZ+ fE32YfRyQS/DvjNg4ETrtBfINcWjS8c+J0aUNlRRqO0mu9OwYq2K+I8VrlqKMw== 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 4ZTrYs2ZqJz12Cw; Fri, 04 Apr 2025 20:58: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 534Kwvnv083519; Fri, 4 Apr 2025 20:58:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534KwvFD083516; Fri, 4 Apr 2025 20:58:57 GMT (envelope-from git) Date: Fri, 4 Apr 2025 20:58:57 GMT Message-Id: <202504042058.534KwvFD083516@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Piotr Kubaj Subject: git: 54a94356c90e - stable/14 - zfs: remove inclusion of machine/pcpu.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pkubaj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 54a94356c90ea5be276568c9c7d0696360ab9242 Auto-Submitted: auto-generated The branch stable/14 has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=54a94356c90ea5be276568c9c7d0696360ab9242 commit 54a94356c90ea5be276568c9c7d0696360ab9242 Author: Piotr Kubaj AuthorDate: 2025-03-28 16:51:08 +0000 Commit: Piotr Kubaj CommitDate: 2025-04-04 20:58:18 +0000 zfs: remove inclusion of machine/pcpu.h It was necessary in the beginning for a definition of curthread, but in the later versions of the patch turned out to be not needed. Fixes: 5b02365ac656e1cccf293ec1c57a8eb6c5cd51e2 Reported by: mav (cherry picked from commit a440b544d566a91fb0e869e3f3828081c3763f94) --- sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h index 6d8503196050..608122d9d135 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_powerpc.h @@ -43,8 +43,6 @@ #ifndef _FREEBSD_SIMD_POWERPC_H #define _FREEBSD_SIMD_POWERPC_H -#include - #include #include From nobody Fri Apr 4 21:37:55 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTsQq34pYz5sSfl; Fri, 04 Apr 2025 21:37: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 4ZTsQq2KHFz3Fxm; Fri, 04 Apr 2025 21:37:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743802675; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AuK/6xhIaucXuy+IqIna6eBgXhUuX7kReOAFFSluI+c=; b=rcZ3yyihyWA8EoubtAwrJJCNOoWTJI8T7IZSmJtgcxy/sXAERgOv1jBrD4c7O6Nbni4l8C OZGWw/Ko0lk0mPF0hxPRzwT3KvxWAHQ7IbTNnILlDx+ysx5QBOFbFEC/SGJQJKYn75B95X uCB+ap81j2dot1UBLaAasbuNnAwWejS4VzAOTUw5Pcot1BRBhjUs0sq1/40oaN6UZbJETI n1JH4n0MntbdOOsvXcY7+WC9Vz7xw7C9rrL5eKmqet7JkrB47C0/Z/DXOA6F+45+TcQ0MM JY+gm5WdmO64oL7XJbRSsoFAcBwytkm0Q83mpDr3LQuWQatTNNI9JaP9stPkSg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743802675; a=rsa-sha256; cv=none; b=oxFReru5gsXAYlJ3/IU5rpUymI36gFLuDIChjSwJxnmtilNK9s6qKYfwdtbqdq89jo1ebn d8+NkcYk9RcfZ/DGExv+lLEhYXJF+EqoEjBTa1Ilq9w6g2BvAxoaROLQ5qaNT1H/YICbNe ORHaurBcRiuQwUiPCLZbZHr5HeSGyoyHoww5B1Mabr+ymaECs3Bb65NvEufTKnzbwC1Jun Yteax83d8eg1/W1Jzsjv6c3BZv8ICXeiwKLh8Wn8vJPP32CxA9FYYD6G4HMcZj+c9TkqGk KI8ZQmVMyBs3v1aj2kjCn4884HfsSm6kmtOjQLdcqt6VSjdrK60Omknf4tEv2w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743802675; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AuK/6xhIaucXuy+IqIna6eBgXhUuX7kReOAFFSluI+c=; b=l0hono0Z7DQw5tqZ4jxRdPqlf6OEiLIBPz7+oZQLppe3+PhN4D9jT8YBRNah/DvDB2F2aT GglSRsrdA/5IvsTuc6nJq8cDVGIrjku0UEpczI2WZkN6YNySwhmrj/+IwVgS9EV5Eaghaj xletm36/0jcrwGt+ZLFgHJTUrxajES5NCDyuJiILCi5+yaDh15pDyrfSuWlrbXOP7wgSey 2UFtj7gwsmXlIAYmX1p5EGzvY8L8pMu7FAT3ynZr4ONlAZv1BR1KOKDd77f67UOkFDR/CQ FzABWI4ucxMsPIlG/3Aay583Bt8OF2a9nTUnPdQsFsgtSBR07LWbNmS3lwC4Kg== 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 4ZTsQq1dF9z13fv; Fri, 04 Apr 2025 21:37: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 534Lbtcc058021; Fri, 4 Apr 2025 21:37:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534LbtF5058018; Fri, 4 Apr 2025 21:37:55 GMT (envelope-from git) Date: Fri, 4 Apr 2025 21:37:55 GMT Message-Id: <202504042137.534LbtF5058018@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: b1c62081feec - main - tcp: remove struct tcp_log_rack List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b1c62081feec535a4f2eeb4f8deb58913d9e281c Auto-Submitted: auto-generated The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=b1c62081feec535a4f2eeb4f8deb58913d9e281c commit b1c62081feec535a4f2eeb4f8deb58913d9e281c Author: Michael Tuexen AuthorDate: 2025-04-04 21:34:30 +0000 Commit: Michael Tuexen CommitDate: 2025-04-04 21:34:30 +0000 tcp: remove struct tcp_log_rack struct tcp_log_rack is not used, therefore remove it. Reviewed by: Peter Lei MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D49669 --- sys/netinet/tcp_log_buf.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sys/netinet/tcp_log_buf.h b/sys/netinet/tcp_log_buf.h index 9ee2d97d47c2..06b2998b19ed 100644 --- a/sys/netinet/tcp_log_buf.h +++ b/sys/netinet/tcp_log_buf.h @@ -60,14 +60,6 @@ struct tcp_log_verbose uint8_t _pad[4]; } ALIGN_TCP_LOG; -/* Internal RACK state variables. */ -struct tcp_log_rack -{ - uint32_t tlr_rack_rtt; /* rc_rack_rtt */ - uint8_t tlr_state; /* Internal RACK state */ - uint8_t _pad[3]; /* Padding */ -}; - struct tcp_log_bbr { uint64_t cur_del_rate; uint64_t delRate; @@ -126,7 +118,6 @@ struct tcp_log_sendfile { */ union tcp_log_stackspecific { - struct tcp_log_rack u_rack; struct tcp_log_bbr u_bbr; struct tcp_log_sendfile u_sf; struct tcp_log_raw u_raw; /* "raw" log access */ @@ -185,7 +176,6 @@ struct tcp_log_buffer uint8_t _pad[3]; /* Padding */ /* Per-stack info */ union tcp_log_stackspecific tlb_stackinfo; -#define tlb_rack tlb_stackinfo.u_rack /* The packet */ uint32_t tlb_len; /* The packet's data length */ From nobody Fri Apr 4 23:23:41 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTvmz51jWz5sbVr; Fri, 04 Apr 2025 23:23:47 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) (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 4ZTvmz0J8Rz3VbY; Fri, 04 Apr 2025 23:23:47 +0000 (UTC) (envelope-from markjdb@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-qk1-x733.google.com with SMTP id af79cd13be357-7c5e2fe5f17so248539685a.3; Fri, 04 Apr 2025 16:23:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743809025; x=1744413825; darn=freebsd.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:sender :from:to:cc:subject:date:message-id:reply-to; bh=Umw1+sK3JlLczvqaArquLggNDd+t4YG9fK7EmCCeKYo=; b=b5uBB2oP7581AE2j/xqCkEQj6zhpMjWRjDLiAdpNiGt71UW79iFd3MUtONEIqUxhMl FWVxleGRFVXXEgKv9XGoqvZCO7FhB7spts0Bo3YonWrDgJW1GmF0xSNFzUsSR/6Ng5m+ vpVjOrA4SoCn/FYLRgN0QPz3Yjaa2V6vMq24JGqENzUe/+QmwRo9C0FpujSA44i7EQBp MP4X1CdTdKa0Yp2KYITDpxiZQrMoMsFzt3JvzaQifSNJMgpv6/FYZAhtodtq5hWLcpub XnSu9R9MoiV8CkZQKIiJD/ebi68wjW5S6YJWoBY/zoNKoicTpIg6NWEfhkf3t2356StG kPpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743809025; x=1744413825; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Umw1+sK3JlLczvqaArquLggNDd+t4YG9fK7EmCCeKYo=; b=X+cxCX6atFZ0zbYYocEKWlnIFJNHTup/Ca7qA2SRPndH/k+57anMyF9fxsV6Em0WlN LC28YYFLetKxXb3HyKRGxWGcQC+SDilqMg+J/h1kZ5SYOn2hbsJvS70Kf8iApDeuPXWK SVPEDoNGWKNNif5PBk3ibnxQt2V762KnHZnGwcw1tTQJheWeCMmJ+w4EsFlMOWmowZXd QBrrul80rbKQw4FRfHX70VHb1hqSDuiKz+AjgHIEgjpeGTx0mf4hkinw8V51LqFOd/Ml m7k4J1AsonuPDtM5qUQebj8jcLmzqUVn3bYlgzGI58MU69skVFYtWR9w0FRrSM9LE1VB fEig== X-Forwarded-Encrypted: i=1; AJvYcCW3AT3he9VrUOfqfJhqQoIzRceAA342qBfmNx/7KJYhwKNYzXQ3OZai5DANTZHA+oeZC0xX8kB11SNcVlszc112TeY3RnE=@freebsd.org, AJvYcCWFlxE30JZk8uCjQo4/GtMD5of9lXQUo9ZdV9LHt4hwUSa93W6TRbvq6kIiWOEmqLE/FthNJAKpjceJoRw+cSSsEZNF@freebsd.org, AJvYcCX1NZ/HXJPR6Qk2tb0MsarbSP3kyLrJ0/z+4aJsVBVWSnt1XQGSOBgCXdBD89LR+wZDHa65V2VqSWuB/tdb91I=@freebsd.org X-Gm-Message-State: AOJu0YxcX6asFKojl3yz09Z/JZ95cr/uodl/xVpuJ8UALv7qWpUvQJmg Pu+ef2tqNZs2gk1Uo3qVxLmNY5SBCHDW2XsMMeE17Fmf6yBEgOlPf08i6yop3cw= X-Gm-Gg: ASbGnctOSS5ugkDqnhpiiESYjKD5SDRmuWJeAaf3B5lItNz8TfaTwxg5C/AR+r4W/LA t5XFllAopTVFwNG7OHeglHnaasd14V40HEOQg0zMw98T30m4PWJB3dDYLSI5grdEF1eE+PrHbgd +GomR97vf9fnEvuQVqCLb4eJbRU3DTiRASWazu8OrOeNIoZEJEjre78tIGE5OGJv+3/f9Ke03lu RVaFSPS2aGqttmBNDPuGD3Ht5JY2I2RlVll2jdID7eqOx92WL3CMORUZugY6CWW12C/6HW/Gk9e 1z5CA9ZyREP8E2Mn3d5GcQY/FiWaODCpgFo+4HYvXeOlh64MDOTHefmPOqk= X-Google-Smtp-Source: AGHT+IFPpAQXfSQiPBfTy/0wHLQPhvimXVMGw3xDw6o/JkFN3QlNXTCRAbImVBKyXqgRWbiYPTzhsw== X-Received: by 2002:a05:620a:24c6:b0:7c5:4949:2400 with SMTP id af79cd13be357-7c77dd6b3d4mr220408685a.9.1743809025268; Fri, 04 Apr 2025 16:23:45 -0700 (PDT) Received: from nuc (192-0-220-237.cpe.teksavvy.com. [192.0.220.237]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c76e75ec7bsm272868685a.43.2025.04.04.16.23.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Apr 2025 16:23:44 -0700 (PDT) Date: Fri, 4 Apr 2025 19:23:41 -0400 From: Mark Johnston To: Tom Jones Cc: Colin Percival , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 74a6f2a76b32 - main - iwx: Shorten log code field Message-ID: References: <202504030707.53377PCW040790@gitrepo.freebsd.org> <01000195fcbbe2ed-0afa2175-1e23-4d89-bda4-5bd86437b3a2-000000@email.amazonses.com> <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1db1061f-f8a7-40d8-b9b3-e3a81bdfaebf@app.fastmail.com> 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] X-Rspamd-Queue-Id: 4ZTvmz0J8Rz3VbY X-Spamd-Bar: ---- On Fri, Apr 04, 2025 at 09:41:27PM +0100, Tom Jones wrote: > Sorry for the breakage, something has broken in my mail filters so direct mails to me aren’t landing in my inbox when also sent to src-commits (just the folder for commits). > > I’ll look at this as soon as I can (probably not until Monday). If you want to remove iwx from the build (or just i386 in the meantime) please do. I removed iwx from the i386 build yesterday: https://cgit.freebsd.org/src/commit/?id=296b60793df6ae855ba414fbf4823467e9615b2f > > On Thu, Apr 3, 2025, at 18:38, Colin Percival wrote: > > On 4/3/25 00:07, Tom Jones wrote: > >> commit 74a6f2a76b32e01d05c4ad71897bd3a6831e703e > >> > >> This fixes the build on i386. > > > > You sure about that? > > > > /usr/src/sys/dev/iwx/if_iwx.c:5762:22: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[0].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5762:80: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5762 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[0].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5769:22: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[1].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5769:80: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5769 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[1].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5778:23: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > > | ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:5778:85: error: shift count >= width of type > > [-Werror,-Wshift-count-overflow] > > 5778 | if (data->cmd_paddr >> 32 != (data->cmd_paddr + > > le32toh(desc->tbs[i + 2].tb_len)) >> 32) > > | > > ^ ~~ > > /usr/src/sys/dev/iwx/if_iwx.c:10971:47: error: format specifies type 'unsigned > > long' but the argument has type 'uint64_t' (aka 'unsigned long long') > > [-Werror,-Wformat] > > 10971 | DPRINTF(("%s: k->wk_keytsc=%lu\n", __func__, k->wk_keytsc)); > > | ~~~ ^~~~~~~~~~~~ > > | %llu > > > > -- > > Colin Percival > > FreeBSD Release Engineering Lead & EC2 platform maintainer > > Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid > > -- > - Tom > From nobody Fri Apr 4 23:25:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTvpR4MQTz5sbY9; Fri, 04 Apr 2025 23:25: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 4ZTvpR3h4Gz3W5D; Fri, 04 Apr 2025 23:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=titvMm1vrUnWoKYPG2jC1r+afxZ0EDhneD7xNlmq2Mg=; b=M2l9IpC9gxfazvY+ujHLMxjQJny0tHJj4QgzsLpP01r3juyfTtFPF7jnBxED3/CfSQcFRo cDQUfcnOLATd4z1DC5ldwU3/Ye2TmulTppu4phDUFOcA4IIGBquLl0OL2a0utLCRjkdBfN VVxpRlrvOD2s0vZh8yTfBOnhU4zdiIXpm++dEKQ+XvXMJl7ZDPDHhyReQISrVMbHg1WnJT GVsOQNW/lbL5sYcqMhmZxau7sbZrcrN7O/5XIWZDYfCVnUQZXdvBGuWdQ41VnQe9dFfiZX YC2mHpDKpecqan+6z1Cu1Jr7j8SBq+CG0wCcl3xiyCoDB+xZ07przi1Su8XLGw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809103; a=rsa-sha256; cv=none; b=OUfwYIa1a91YhLV1Q+AYncLZfFd7oEpZVrJIWqSkmo1G0cFoSOtI2eP8KKWUZVVlWzT1cE B13iR2rn25FL3Ev7uWTv0Fd8gsQ+l8QyH7WwVoZqivxpfWJsSo11VMuPExGrSc13LHpqV+ dBbPl8PFFWqQE1vR78YbsTwCdEY8QTpK7jO4Ea6VyvhCYnCxkKjK5ukY4/UhMiZe1gMDmz N+015408kxtlaMY3zxlUZaqWBaD8e+CXFGb0wg5Pp+h+uIkeO4wQZNVg0dVGdgLbI06bby nWDlHrzDoYYyLGZeuW0Rs4D3R0Ommon5Ioio1cVXGJ/+dXHLt7YfK7kDrbs0EA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=titvMm1vrUnWoKYPG2jC1r+afxZ0EDhneD7xNlmq2Mg=; b=JafzpYlYTinxdV0tAeiMAO7/S5ogcEA6b5puyS+XLhXhVAEdGjTZxpXM2asllgDHpWi5H2 mOjW0OoRYwQFhiTAMg7a7jMW5Ipebj0L00pFR+x9HNnJ1xBus+id8uf/T5G51mKNGrJR9E yn6l7JX7z1x2bWNNW/g2zQgSOrjWCVPaAFgBL5GKwEpy0bmYrCN/LA830eeJVmf8qnRh41 AAcZT45A/O4znSBT5yGE95FszojZCn9ygD2Iccna1Z1T0lTLKfn2yxRJer9xuLOiQHqaSy DfJr/iFcEQJnZIRmtvdfbVd/D1dfmuwxRob2HGSy5vyc2c98qqqaAwaFgevheg== 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 4ZTvpR300Yz16Sc; Fri, 04 Apr 2025 23:25: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 534NP3BW063241; Fri, 4 Apr 2025 23:25:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP385063238; Fri, 4 Apr 2025 23:25:03 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:03 GMT Message-Id: <202504042325.534NP385063238@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: 43c1eb894a57 - main - vm_object: Fix handling of wired map entries in vm_object_split() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 43c1eb894a57ef30562a02708445c512610d4f02 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=43c1eb894a57ef30562a02708445c512610d4f02 commit 43c1eb894a57ef30562a02708445c512610d4f02 Author: Mark Johnston AuthorDate: 2025-04-04 20:29:25 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 vm_object: Fix handling of wired map entries in vm_object_split() Suppose a vnode is mapped with MAP_PROT and MAP_PRIVATE, mlock() is called on the mapping, and then the vnode is truncated such that the last page of the mapping becomes invalid. The now-invalid page will be unmapped, but stays resident in the VM object to preserve the invariant that a range of pages mapped by a wired map entry is always resident. This invariant is checked by vm_object_unwire(), for example. Then, suppose that the mapping is upgraded to PROT_READ|PROT_WRITE. We will copy the invalid page into a new anonymous VM object. If the process then forks, vm_object_split() may then be called on the object. Upon encountering an invalid page, rather than moving it into the destination object, it is removed. However, this is wrong when the entry is wired, since the invalid page's wiring belongs to the map entry; this behaviour also violates the invariant mentioned above. Fix this by moving invalid pages into the destination object if the map entry is wired. In this case we must not dirty the page, so add a flag to vm_page_iter_rename() to control this. Reported by: syzkaller Reviewed by: dougm, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49443 --- sys/vm/vm_object.c | 11 ++++++++--- sys/vm/vm_page.c | 16 ++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 4ab20a86e155..c69fd0d1c161 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1597,16 +1597,21 @@ retry: } /* - * The page was left invalid. Likely placed there by + * If the page was left invalid, it was likely placed there by * an incomplete fault. Just remove and ignore. + * + * One other possibility is that the map entry is wired, in + * which case we must hang on to the page to avoid leaking it, + * as the map entry owns the wiring. This case can arise if the + * backing pager is truncated. */ - if (vm_page_none_valid(m)) { + if (vm_page_none_valid(m) && entry->wired_count == 0) { if (vm_page_iter_remove(&pages, m)) vm_page_free(m); continue; } - /* vm_page_iter_rename() will dirty the page. */ + /* vm_page_iter_rename() will dirty the page if it is valid. */ if (!vm_page_iter_rename(&pages, m, new_object, m->pindex - offidxstart)) { vm_page_xunbusy(m); diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index f351f60f833c..f9653f1d1ec9 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -2038,15 +2038,10 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex, * * Panics if a page already resides in the new object at the new pindex. * - * Note: swap associated with the page must be invalidated by the move. We - * have to do this for several reasons: (1) we aren't freeing the - * page, (2) we are dirtying the page, (3) the VM system is probably - * moving the page from object A to B, and will then later move - * the backing store from A to B and we can't have a conflict. - * - * Note: we *always* dirty the page. It is necessary both for the - * fact that we moved it, and because we may be invalidating - * swap. + * This routine dirties the page if it is valid, as callers are expected to + * transfer backing storage only after moving the page. Dirtying the page + * ensures that the destination object retains the most recent copy of the + * page. * * The objects must be locked. */ @@ -2087,7 +2082,8 @@ vm_page_iter_rename(struct pctrie_iter *old_pages, vm_page_t m, m->object = new_object; vm_page_insert_radixdone(m, new_object, mpred); - vm_page_dirty(m); + if (vm_page_any_valid(m)) + vm_page_dirty(m); vm_pager_page_inserted(new_object, m); return (true); } From nobody Fri Apr 4 23:25:04 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTvpS65Scz5sbBW; Fri, 04 Apr 2025 23:25: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 4ZTvpS450gz3WJ2; Fri, 04 Apr 2025 23:25:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yAHBPimYQpXBvlVAfLEvHFTj784m9UnX6sInP+X9GbE=; b=awshiEiudrSJKOlnj4ugWXMoQx11aS5aAJSbuo84CTNaWM2QXAgeIqTDmO7Yqm/GXEX39w 48BMCkAvhAgmntDruLFNm4CzIPPjaKXXn2CcpgHHoWQCO3wPSwtsn0IdcuPZ246RJ8B3E2 lOUEXUeNU/EhYmEw86tfsoujPgcYkh9idcIRptF9BfYwewp8z4fuCP5H0CiliI2BKDuRrQ 54h3Ky1rJqIyg2zUKe7N6akGytmpT8FpU8LMOiIs7oCY1K6SQFluRD/mvZlPyzZNERJii5 TrDntVGX/6iKRpftnO3bOu44x3oFXME4QbGJL4drgjGiH7PF6QRVZzdEGlxD0g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809104; a=rsa-sha256; cv=none; b=SXPVXjQL5IfIGOV2hiaRwsHx5pI0LxsjtWEbQY/Mu8iN9kbP8rI7qx0LhnbfVWKB9t0Yn+ iyxARRa1xJ1YMy/PGS8/5RLw2N5rKgA9tZs0oexL+xqlHG/8v/1GaJ47TMI1ShQ3RTVZHG y2UmOyre63FNQWnSICqE4d46/J76ncm2BfVQ8iB+TmattW8/9jWho2BASn3Wqy774L5j0l nfVT39GheKHp3O9dh0uRm6+quuQaI6Le0dEIIJ0IrsODTcRX7rFCPYMdhhxl3R9e2ci5+d e/KCH7ivl+/QOjdVvOZ9iva72RZUhcy1ek944q/+2sYpZIJHkIuLdyBbEq+r/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yAHBPimYQpXBvlVAfLEvHFTj784m9UnX6sInP+X9GbE=; b=V9xvA0ETci0gKMvJ+kwM9XxBuS41Syh/K2bLe5zGbPUHbB1AQ6AbLZ40M2JI4RDen0KqMl 6BHxZOYXGHKcOmrcK3lYk5+Zd4/cjVxGMkBnNTF9FERWWE5yCfz6KqUGYpae589Q0sRqYU lOJ7jHho4+h5Q6SLR0pt1J+MlGoTpnAUIceViVp5F7l2BmBMyzbIZ3CXCTTkVArYfRs+5B +Pg+Vgm7xbNRrr1G9LlreIsUoOGONlGX80CdXJVUd3jfazI+QM/kEcKHBErGDyu7bEbDhM B4e4mmsDmsstLvrQ95RF/k/mG10NrX84LPQO38dwWC9yxHHC60jwc3xDnKDjDw== 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 4ZTvpS3fc2z15vB; Fri, 04 Apr 2025 23:25: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 534NP4vA063276; Fri, 4 Apr 2025 23:25:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP4oS063273; Fri, 4 Apr 2025 23:25:04 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:04 GMT Message-Id: <202504042325.534NP4oS063273@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: f8ed8382daf4 - main - gve: Allocate qpl per ring at ring allocation time List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c commit f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:31 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Allocate qpl per ring at ring allocation time Every tx and rx ring has its own queue-page-list (QPL) that serves as the bounce buffer. Previously we were allocating QPLs for all queues before the queues themselves were allocated and later associating a QPL with a queue. This is avoidable complexity: it is much more natural for each queue to allocate and free its own QPL. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49426 --- sys/dev/gve/gve.h | 6 +- sys/dev/gve/gve_main.c | 8 --- sys/dev/gve/gve_qpl.c | 174 +++++++++++++++++------------------------------ sys/dev/gve/gve_rx.c | 15 +++- sys/dev/gve/gve_rx_dqo.c | 15 +++- sys/dev/gve/gve_tx.c | 12 +++- sys/dev/gve/gve_tx_dqo.c | 16 ++++- 7 files changed, 114 insertions(+), 132 deletions(-) diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index 39965c8669cf..bf15eb3ccabc 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -542,7 +542,6 @@ struct gve_priv { struct gve_irq_db *irq_db_indices; enum gve_queue_format queue_format; - struct gve_queue_page_list *qpls; struct gve_queue_config tx_cfg; struct gve_queue_config rx_cfg; uint32_t num_queues; @@ -629,8 +628,9 @@ void gve_db_bar_write_4(struct gve_priv *priv, bus_size_t offset, uint32_t val); void gve_db_bar_dqo_write_4(struct gve_priv *priv, bus_size_t offset, uint32_t val); /* QPL (Queue Page List) functions defined in gve_qpl.c */ -int gve_alloc_qpls(struct gve_priv *priv); -void gve_free_qpls(struct gve_priv *priv); +struct gve_queue_page_list *gve_alloc_qpl(struct gve_priv *priv, uint32_t id, + int npages, bool single_kva); +void gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl); int gve_register_qpls(struct gve_priv *priv); int gve_unregister_qpls(struct gve_priv *priv); void gve_mextadd_free(struct mbuf *mbuf); diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 8e764f9660d7..72e7fc2e3f89 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -482,8 +482,6 @@ gve_free_rings(struct gve_priv *priv) gve_free_irqs(priv); gve_free_tx_rings(priv); gve_free_rx_rings(priv); - if (gve_is_qpl(priv)) - gve_free_qpls(priv); } static int @@ -491,12 +489,6 @@ gve_alloc_rings(struct gve_priv *priv) { int err; - if (gve_is_qpl(priv)) { - err = gve_alloc_qpls(priv); - if (err != 0) - goto abort; - } - err = gve_alloc_rx_rings(priv); if (err != 0) goto abort; diff --git a/sys/dev/gve/gve_qpl.c b/sys/dev/gve/gve_qpl.c index 1fcc2b5365c9..0e7098dcd4a1 100644 --- a/sys/dev/gve/gve_qpl.c +++ b/sys/dev/gve/gve_qpl.c @@ -36,28 +36,9 @@ static MALLOC_DEFINE(M_GVE_QPL, "gve qpl", "gve qpl allocations"); -static uint32_t -gve_num_tx_qpls(struct gve_priv *priv) -{ - if (!gve_is_qpl(priv)) - return (0); - - return (priv->tx_cfg.max_queues); -} - -static uint32_t -gve_num_rx_qpls(struct gve_priv *priv) -{ - if (!gve_is_qpl(priv)) - return (0); - - return (priv->rx_cfg.max_queues); -} - -static void -gve_free_qpl(struct gve_priv *priv, uint32_t id) +void +gve_free_qpl(struct gve_priv *priv, struct gve_queue_page_list *qpl) { - struct gve_queue_page_list *qpl = &priv->qpls[id]; int i; for (i = 0; i < qpl->num_dmas; i++) { @@ -92,12 +73,14 @@ gve_free_qpl(struct gve_priv *priv, uint32_t id) if (qpl->dmas != NULL) free(qpl->dmas, M_GVE_QPL); + + free(qpl, M_GVE_QPL); } -static int +struct gve_queue_page_list * gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) { - struct gve_queue_page_list *qpl = &priv->qpls[id]; + struct gve_queue_page_list *qpl; int err; int i; @@ -105,9 +88,12 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) device_printf(priv->dev, "Reached max number of registered pages %ju > %ju\n", (uintmax_t)npages + priv->num_registered_pages, (uintmax_t)priv->max_registered_pages); - return (EINVAL); + return (NULL); } + qpl = malloc(sizeof(struct gve_queue_page_list), M_GVE_QPL, + M_WAITOK | M_ZERO); + qpl->id = id; qpl->num_pages = 0; qpl->num_dmas = 0; @@ -163,126 +149,90 @@ gve_alloc_qpl(struct gve_priv *priv, uint32_t id, int npages, bool single_kva) priv->num_registered_pages++; } - return (0); + return (qpl); abort: - gve_free_qpl(priv, id); - return (err); + gve_free_qpl(priv, qpl); + return (NULL); } -void -gve_free_qpls(struct gve_priv *priv) -{ - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int i; - - if (num_qpls == 0) - return; - - if (priv->qpls != NULL) { - for (i = 0; i < num_qpls; i++) - gve_free_qpl(priv, i); - free(priv->qpls, M_GVE_QPL); - priv->qpls = NULL; - } -} - -int gve_alloc_qpls(struct gve_priv *priv) +int +gve_register_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int num_pages; + struct gve_ring_com *com; + struct gve_tx_ring *tx; + struct gve_rx_ring *rx; int err; int i; - if (num_qpls == 0) + if (gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) return (0); - priv->qpls = malloc(num_qpls * sizeof(*priv->qpls), M_GVE_QPL, - M_WAITOK | M_ZERO); - - num_pages = gve_is_gqi(priv) ? - priv->tx_desc_cnt / GVE_QPL_DIVISOR : - GVE_TX_NUM_QPL_PAGES_DQO; - for (i = 0; i < gve_num_tx_qpls(priv); i++) { - err = gve_alloc_qpl(priv, i, num_pages, - /*single_kva=*/true); - if (err != 0) - goto abort; - } - - num_pages = gve_is_gqi(priv) ? priv->rx_desc_cnt : GVE_RX_NUM_QPL_PAGES_DQO; - for (; i < num_qpls; i++) { - err = gve_alloc_qpl(priv, i, num_pages, /*single_kva=*/false); - if (err != 0) - goto abort; - } - - return (0); - -abort: - gve_free_qpls(priv); - return (err); -} - -static int -gve_unregister_n_qpls(struct gve_priv *priv, int n) -{ - int err; - int i; - - for (i = 0; i < n; i++) { - err = gve_adminq_unregister_page_list(priv, priv->qpls[i].id); + /* Register TX qpls */ + for (i = 0; i < priv->tx_cfg.num_queues; i++) { + tx = &priv->tx[i]; + com = &tx->com; + err = gve_adminq_register_page_list(priv, com->qpl); if (err != 0) { device_printf(priv->dev, - "Failed to unregister qpl %d, err: %d\n", - priv->qpls[i].id, err); + "Failed to register qpl %d, err: %d\n", + com->qpl->id, err); + /* Caller schedules a reset when this fails */ + return (err); } } - if (err != 0) - return (err); - - return (0); -} - -int -gve_register_qpls(struct gve_priv *priv) -{ - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); - int err; - int i; - - if (gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) - return (0); - - for (i = 0; i < num_qpls; i++) { - err = gve_adminq_register_page_list(priv, &priv->qpls[i]); + /* Register RX qpls */ + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + rx = &priv->rx[i]; + com = &rx->com; + err = gve_adminq_register_page_list(priv, com->qpl); if (err != 0) { device_printf(priv->dev, "Failed to register qpl %d, err: %d\n", - priv->qpls[i].id, err); - goto abort; + com->qpl->id, err); + /* Caller schedules a reset when this fails */ + return (err); } } - gve_set_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK); return (0); - -abort: - gve_unregister_n_qpls(priv, i); - return (err); } int gve_unregister_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); int err; + int i; + struct gve_ring_com *com; + struct gve_tx_ring *tx; + struct gve_rx_ring *rx; if (!gve_get_state_flag(priv, GVE_STATE_FLAG_QPLREG_OK)) return (0); - err = gve_unregister_n_qpls(priv, num_qpls); + for (i = 0; i < priv->tx_cfg.num_queues; i++) { + tx = &priv->tx[i]; + com = &tx->com; + err = gve_adminq_unregister_page_list(priv, com->qpl->id); + if (err != 0) { + device_printf(priv->dev, + "Failed to unregister qpl %d, err: %d\n", + com->qpl->id, err); + } + } + + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + rx = &priv->rx[i]; + com = &rx->com; + err = gve_adminq_unregister_page_list(priv, com->qpl->id); + if (err != 0) { + device_printf(priv->dev, + "Failed to unregister qpl %d, err: %d\n", + com->qpl->id, err); + } + } + if (err != 0) return (err); diff --git a/sys/dev/gve/gve_rx.c b/sys/dev/gve/gve_rx.c index e540ad6f4c11..e1a228c0e69c 100644 --- a/sys/dev/gve/gve_rx.c +++ b/sys/dev/gve/gve_rx.c @@ -36,6 +36,7 @@ static void gve_rx_free_ring_gqi(struct gve_priv *priv, int i) { struct gve_rx_ring *rx = &priv->rx[i]; + struct gve_ring_com *com = &rx->com; if (rx->page_info != NULL) { free(rx->page_info, M_GVE); @@ -51,6 +52,11 @@ gve_rx_free_ring_gqi(struct gve_priv *priv, int i) gve_dma_free_coherent(&rx->desc_ring_mem); rx->desc_ring = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static void @@ -113,10 +119,13 @@ gve_rx_alloc_ring_gqi(struct gve_priv *priv, int i) rx->mask = priv->rx_pages_per_qpl - 1; rx->desc_ring = rx->desc_ring_mem.cpu_addr; - com->qpl = &priv->qpls[priv->tx_cfg.max_queues + i]; + com->qpl = gve_alloc_qpl(priv, i + priv->tx_cfg.max_queues, + priv->rx_desc_cnt, /*single_kva=*/false); if (com->qpl == NULL) { - device_printf(priv->dev, "No QPL left for rx ring %d", i); - return (ENOMEM); + device_printf(priv->dev, + "Failed to alloc QPL for rx ring %d", i); + err = ENOMEM; + goto abort; } rx->page_info = malloc(priv->rx_desc_cnt * sizeof(*rx->page_info), diff --git a/sys/dev/gve/gve_rx_dqo.c b/sys/dev/gve/gve_rx_dqo.c index 6ce9ddd887d0..a499ac9d3c6a 100644 --- a/sys/dev/gve/gve_rx_dqo.c +++ b/sys/dev/gve/gve_rx_dqo.c @@ -58,6 +58,7 @@ void gve_rx_free_ring_dqo(struct gve_priv *priv, int i) { struct gve_rx_ring *rx = &priv->rx[i]; + struct gve_ring_com *com = &rx->com; int j; if (rx->dqo.compl_ring != NULL) { @@ -86,6 +87,11 @@ gve_rx_free_ring_dqo(struct gve_priv *priv, int i) if (!gve_is_qpl(priv) && rx->dqo.buf_dmatag) bus_dma_tag_destroy(rx->dqo.buf_dmatag); + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } int @@ -123,10 +129,13 @@ gve_rx_alloc_ring_dqo(struct gve_priv *priv, int i) M_GVE, M_WAITOK | M_ZERO); if (gve_is_qpl(priv)) { - rx->com.qpl = &priv->qpls[priv->tx_cfg.max_queues + i]; + rx->com.qpl = gve_alloc_qpl(priv, i + priv->tx_cfg.max_queues, + GVE_RX_NUM_QPL_PAGES_DQO, /*single_kva=*/false); if (rx->com.qpl == NULL) { - device_printf(priv->dev, "No QPL left for rx ring %d", i); - return (ENOMEM); + device_printf(priv->dev, + "Failed to alloc QPL for rx ring %d", i); + err = ENOMEM; + goto abort; } return (0); } diff --git a/sys/dev/gve/gve_tx.c b/sys/dev/gve/gve_tx.c index 04dde4f1a79b..e594c66149bc 100644 --- a/sys/dev/gve/gve_tx.c +++ b/sys/dev/gve/gve_tx.c @@ -52,6 +52,7 @@ static void gve_tx_free_ring_gqi(struct gve_priv *priv, int i) { struct gve_tx_ring *tx = &priv->tx[i]; + struct gve_ring_com *com = &tx->com; if (tx->desc_ring != NULL) { gve_dma_free_coherent(&tx->desc_ring_mem); @@ -62,6 +63,11 @@ gve_tx_free_ring_gqi(struct gve_priv *priv, int i) free(tx->info, M_GVE); tx->info = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static void @@ -109,9 +115,11 @@ gve_tx_alloc_ring_gqi(struct gve_priv *priv, int i) } tx->desc_ring = tx->desc_ring_mem.cpu_addr; - com->qpl = &priv->qpls[i]; + com->qpl = gve_alloc_qpl(priv, i, priv->tx_desc_cnt / GVE_QPL_DIVISOR, + /*single_kva=*/true); if (com->qpl == NULL) { - device_printf(priv->dev, "No QPL left for tx ring %d\n", i); + device_printf(priv->dev, + "Failed to alloc QPL for tx ring %d\n", i); err = ENOMEM; goto abort; } diff --git a/sys/dev/gve/gve_tx_dqo.c b/sys/dev/gve/gve_tx_dqo.c index bf314ef95173..7361d47b8ce6 100644 --- a/sys/dev/gve/gve_tx_dqo.c +++ b/sys/dev/gve/gve_tx_dqo.c @@ -75,6 +75,7 @@ void gve_tx_free_ring_dqo(struct gve_priv *priv, int i) { struct gve_tx_ring *tx = &priv->tx[i]; + struct gve_ring_com *com = &tx->com; int j; if (tx->dqo.desc_ring != NULL) { @@ -109,6 +110,11 @@ gve_tx_free_ring_dqo(struct gve_priv *priv, int i) free(tx->dqo.qpl_bufs, M_GVE); tx->dqo.qpl_bufs = NULL; } + + if (com->qpl != NULL) { + gve_free_qpl(priv, com->qpl); + com->qpl = NULL; + } } static int @@ -210,7 +216,15 @@ gve_tx_alloc_ring_dqo(struct gve_priv *priv, int i) if (gve_is_qpl(priv)) { int qpl_buf_cnt; - tx->com.qpl = &priv->qpls[i]; + tx->com.qpl = gve_alloc_qpl(priv, i, GVE_TX_NUM_QPL_PAGES_DQO, + /*single_kva*/false); + if (tx->com.qpl == NULL) { + device_printf(priv->dev, + "Failed to alloc QPL for tx ring %d", i); + err = ENOMEM; + goto abort; + } + qpl_buf_cnt = GVE_TX_BUFS_PER_PAGE_DQO * tx->com.qpl->num_pages; From nobody Fri Apr 4 23:25:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTvpV1KTRz5sbdY; Fri, 04 Apr 2025 23:25: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 4ZTvpT5yv0z3WJ7; Fri, 04 Apr 2025 23:25:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7oUp8gxi2EQpHLJoSTJf/QoreWNDscg4O2XMM0MwXXk=; b=cfvpjz/AgxmAjJRTGrK/YBz3+rS94LNGT5REVT9riGhuyD5+YczfWAmt6mxSjz+GXk5tDm 5ZCj/W0FERdhbtaQFWts20Q3/f/qDmr0yPKOk2eEf7kDZlVvZZ5LzUnbpUpUyWqddsh2jG aOYvD3Rv50cnNzfK47z9DJ8v7X2MwZ61sXdpwwJluPJhcYSrfKTelV6s0JXyDtSVkEFG4z 9PRHLN3bRSIq7MFJUZdP4msSQdDvCd+35+EKmttgYK6dtYXsR5AJu6W8GAktWogpcKgbWb C8rJqZf4fIBPOE89wtZ4XQ1RT7SK2JyCpZjk8EMA21sD4856rAP8rLg4BBOHig== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809105; a=rsa-sha256; cv=none; b=VjjJyLvNwlkpQ/CyCaGe5i+4eTRZKKvaE7rGrUqbGdB3Timl9VYF1TbAAQ/Ex6cNPaWmNY UUZYHboVxrx/s04wKUDHP8TOxf9Ll+MrDWkUryeZd4d160XsI8QDBlOp5vmwK2wSrKdUBc Y1521hzxSsPdkWbM5jpFmSVoiSGpM7yCxTAkGiVxJamHW5f6CZedR74aCWidIE1Da0RkOl vdJKmxz2dwRXntkXA4y4Gj1N+IWidVqIMkTIjOLtKB3k1eeiJgdSs9ps7KhhNpW0TOtlgh Cr2nwR2N0ultDQznhdmaZop2tAwEZ5pY79ea28SinM0aKgPNW+idpEJalbSVgA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7oUp8gxi2EQpHLJoSTJf/QoreWNDscg4O2XMM0MwXXk=; b=uChJppgSVyjHbHBGwocKIoG+aTzlyS274ShEK2rDFsr3lO0UXpqAXFCRb8t83AD+LSabB+ iu1KEDvZbDWRY9gsaJT9GRFASKN4SUJepqCCE5EN3lkqkmPsISHYHITyNqiPPHO3XktONL rxi59rD6SO4Lon/HQs5MT9d7bPZyx7cB4v01z8EtRLSP0L2+iNdiGpdS1GFlQ8UG+1icN4 B3g/aerlEqWlawzS+5CLFlIOQ9Hi8Vdrlhp4e/MUdQER2qkN2qecXdi4f0yYcPHqI8gBmt MllHfB3oarcIpxA2BidKMXoNQVIIm77NBw6DbqrogWJaCVj1V3xuZOg8jpwvew== 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 4ZTvpT4CmZz15vC; Fri, 04 Apr 2025 23:25: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 534NP5m9063309; Fri, 4 Apr 2025 23:25:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP52a063306; Fri, 4 Apr 2025 23:25:05 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:05 GMT Message-Id: <202504042325.534NP52a063306@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: e0464f74d557 - main - gve: Add feature to adjust RX/TX queue counts List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e0464f74d5579e1538ce741b0a15e6604dbc53c4 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e0464f74d5579e1538ce741b0a15e6604dbc53c4 commit e0464f74d5579e1538ce741b0a15e6604dbc53c4 Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:32 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Add feature to adjust RX/TX queue counts This change introduces new sysctl handlers that allow the user to change RX/TX queue counts. As before, the default queue counts will be the max value the device can support. When chaning queue counts, the interface turns down momentarily while allocating/freeing resources as necessary. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49427 --- share/man/man4/gve.4 | 19 +++++++++++ sys/dev/gve/gve.h | 10 +++--- sys/dev/gve/gve_main.c | 88 +++++++++++++++++++++++++++++++++++++++++++++--- sys/dev/gve/gve_rx.c | 20 ++++------- sys/dev/gve/gve_sysctl.c | 83 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/gve/gve_tx.c | 21 ++++-------- sys/dev/gve/gve_utils.c | 6 ++-- 7 files changed, 208 insertions(+), 39 deletions(-) diff --git a/share/man/man4/gve.4 b/share/man/man4/gve.4 index 5f58a4c1a503..2ae96c93e37d 100644 --- a/share/man/man4/gve.4 +++ b/share/man/man4/gve.4 @@ -79,6 +79,13 @@ binds to a single PCI device ID presented by gVNIC: .It 0x1AE0:0x0042 .El +.Sh EXAMPLES +.Pp +Change the TX queue count to 4 for the gve0 interface: +.D1 sysctl dev.gve.0.num_tx_queues=4 +.Pp +Change the RX queue count to 4 for the gve0 interface: +.D1 sysctl dev.gve.0.num_rx_queues=4 .Sh DIAGNOSTICS The following messages are recorded during driver initialization: .Bl -diag @@ -211,6 +218,18 @@ The default value is 0, which means hardware LRO is enabled by default. The software LRO stack in the kernel is always used. This sysctl variable needs to be set before loading the driver, using .Xr loader.conf 5 . +.It Va dev.gve.X.num_rx_queues and dev.gve.X.num_tx_queues +Run-time tunables that represent the number of currently used RX/TX queues. +The default value is the max number of RX/TX queues the device can support. +.Pp +This call turns down the interface while setting up the new queues, +which may potentially cause any new packets to be dropped. +This call can fail if the system is not able to provide the driver with enough resources. +In that situation, the driver will revert to the previous number of RX/TX queues. +If this also fails, a device reset will be triggered. +.Pp +Note: sysctl nodes for queue stats remain available even if a queue is removed. +.Pp .El .Sh LIMITATIONS .Nm diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index bf15eb3ccabc..2b49ee5ad45a 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -620,6 +620,8 @@ gve_is_qpl(struct gve_priv *priv) /* Defined in gve_main.c */ void gve_schedule_reset(struct gve_priv *priv); +int gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); +int gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); /* Register access functions defined in gve_utils.c */ uint32_t gve_reg_bar_read_4(struct gve_priv *priv, bus_size_t offset); @@ -636,8 +638,8 @@ int gve_unregister_qpls(struct gve_priv *priv); void gve_mextadd_free(struct mbuf *mbuf); /* TX functions defined in gve_tx.c */ -int gve_alloc_tx_rings(struct gve_priv *priv); -void gve_free_tx_rings(struct gve_priv *priv); +int gve_alloc_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); +void gve_free_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); int gve_create_tx_rings(struct gve_priv *priv); int gve_destroy_tx_rings(struct gve_priv *priv); int gve_tx_intr(void *arg); @@ -656,8 +658,8 @@ int gve_xmit_dqo_qpl(struct gve_tx_ring *tx, struct mbuf *mbuf); void gve_tx_cleanup_tq_dqo(void *arg, int pending); /* RX functions defined in gve_rx.c */ -int gve_alloc_rx_rings(struct gve_priv *priv); -void gve_free_rx_rings(struct gve_priv *priv); +int gve_alloc_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); +void gve_free_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx); int gve_create_rx_rings(struct gve_priv *priv); int gve_destroy_rx_rings(struct gve_priv *priv); int gve_rx_intr(void *arg); diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 72e7fc2e3f89..39556b85f493 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -192,6 +192,74 @@ reset: gve_schedule_reset(priv); } +int +gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) +{ + int err; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (new_queue_cnt < priv->rx_cfg.num_queues) { + /* + * Freeing a ring still preserves its ntfy_id, + * which is needed if we create the ring again. + */ + gve_free_rx_rings(priv, new_queue_cnt, priv->rx_cfg.num_queues); + } else { + err = gve_alloc_rx_rings(priv, priv->rx_cfg.num_queues, new_queue_cnt); + if (err != 0) { + device_printf(priv->dev, "Failed to allocate new queues"); + /* Failed to allocate rings, start back up with old ones */ + gve_up(priv); + return (err); + + } + } + priv->rx_cfg.num_queues = new_queue_cnt; + + err = gve_up(priv); + if (err != 0) + gve_schedule_reset(priv); + + return (err); +} + +int +gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) +{ + int err; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (new_queue_cnt < priv->tx_cfg.num_queues) { + /* + * Freeing a ring still preserves its ntfy_id, + * which is needed if we create the ring again. + */ + gve_free_tx_rings(priv, new_queue_cnt, priv->tx_cfg.num_queues); + } else { + err = gve_alloc_tx_rings(priv, priv->tx_cfg.num_queues, new_queue_cnt); + if (err != 0) { + device_printf(priv->dev, "Failed to allocate new queues"); + /* Failed to allocate rings, start back up with old ones */ + gve_up(priv); + return (err); + + } + } + priv->tx_cfg.num_queues = new_queue_cnt; + + err = gve_up(priv); + if (err != 0) + gve_schedule_reset(priv); + + return (err); +} + static int gve_set_mtu(if_t ifp, uint32_t new_mtu) { @@ -480,8 +548,14 @@ static void gve_free_rings(struct gve_priv *priv) { gve_free_irqs(priv); - gve_free_tx_rings(priv); - gve_free_rx_rings(priv); + + gve_free_tx_rings(priv, 0, priv->tx_cfg.num_queues); + free(priv->tx, M_GVE); + priv->tx = NULL; + + gve_free_rx_rings(priv, 0, priv->rx_cfg.num_queues); + free(priv->rx, M_GVE); + priv->rx = NULL; } static int @@ -489,11 +563,15 @@ gve_alloc_rings(struct gve_priv *priv) { int err; - err = gve_alloc_rx_rings(priv); + priv->rx = malloc(sizeof(struct gve_rx_ring) * priv->rx_cfg.max_queues, + M_GVE, M_WAITOK | M_ZERO); + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); if (err != 0) goto abort; - err = gve_alloc_tx_rings(priv); + priv->tx = malloc(sizeof(struct gve_tx_ring) * priv->tx_cfg.max_queues, + M_GVE, M_WAITOK | M_ZERO); + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); if (err != 0) goto abort; @@ -595,7 +673,7 @@ gve_set_queue_cnts(struct gve_priv *priv) priv->rx_cfg.num_queues); } - priv->num_queues = priv->tx_cfg.num_queues + priv->rx_cfg.num_queues; + priv->num_queues = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues; priv->mgmt_msix_idx = priv->num_queues; } diff --git a/sys/dev/gve/gve_rx.c b/sys/dev/gve/gve_rx.c index e1a228c0e69c..de64375ac4f3 100644 --- a/sys/dev/gve/gve_rx.c +++ b/sys/dev/gve/gve_rx.c @@ -185,38 +185,32 @@ abort: } int -gve_alloc_rx_rings(struct gve_priv *priv) +gve_alloc_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { - int err = 0; int i; + int err; - priv->rx = malloc(sizeof(struct gve_rx_ring) * priv->rx_cfg.num_queues, - M_GVE, M_WAITOK | M_ZERO); + KASSERT(priv->rx != NULL, ("priv->rx is NULL!")); - for (i = 0; i < priv->rx_cfg.num_queues; i++) { + for (i = start_idx; i < stop_idx; i++) { err = gve_rx_alloc_ring(priv, i); if (err != 0) goto free_rings; } return (0); - free_rings: - while (i--) - gve_rx_free_ring(priv, i); - free(priv->rx, M_GVE); + gve_free_rx_rings(priv, start_idx, i); return (err); } void -gve_free_rx_rings(struct gve_priv *priv) +gve_free_rx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { int i; - for (i = 0; i < priv->rx_cfg.num_queues; i++) + for (i = start_idx; i < stop_idx; i++) gve_rx_free_ring(priv, i); - - free(priv->rx, M_GVE); } static void diff --git a/sys/dev/gve/gve_sysctl.c b/sys/dev/gve/gve_sysctl.c index c96d082837a4..8f52ffad6f3e 100644 --- a/sys/dev/gve/gve_sysctl.c +++ b/sys/dev/gve/gve_sysctl.c @@ -285,6 +285,88 @@ gve_setup_main_stat_sysctl(struct sysctl_ctx_list *ctx, &priv->reset_cnt, 0, "Times reset"); } +static int +gve_check_num_queues(struct gve_priv *priv, int val, bool is_rx) +{ + if (val < 1) { + device_printf(priv->dev, + "Requested num queues (%u) must be a positive integer\n", val); + return (EINVAL); + } + + if (val > (is_rx ? priv->rx_cfg.max_queues : priv->tx_cfg.max_queues)) { + device_printf(priv->dev, + "Requested num queues (%u) is too large\n", val); + return (EINVAL); + } + + return (0); +} + +static int +gve_sysctl_num_tx_queues(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->tx_cfg.num_queues; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_num_queues(priv, val, /*is_rx=*/false); + if (err != 0) + return (err); + + if (val != priv->tx_cfg.num_queues) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_tx_queues(priv, val); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static int +gve_sysctl_num_rx_queues(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->rx_cfg.num_queues; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_num_queues(priv, val, /*is_rx=*/true); + + if (err != 0) + return (err); + + if (val != priv->rx_cfg.num_queues) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_rx_queues(priv, val); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static void +gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, + struct sysctl_oid_list *child, struct gve_priv *priv) +{ + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_tx_queues", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_num_tx_queues, "I", "Number of TX queues"); + + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_rx_queues", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_num_rx_queues, "I", "Number of RX queues"); +} + void gve_setup_sysctl(struct gve_priv *priv) { device_t dev; @@ -300,6 +382,7 @@ void gve_setup_sysctl(struct gve_priv *priv) gve_setup_queue_stat_sysctl(ctx, child, priv); gve_setup_adminq_stat_sysctl(ctx, child, priv); gve_setup_main_stat_sysctl(ctx, child, priv); + gve_setup_sysctl_writables(ctx, child, priv); } void diff --git a/sys/dev/gve/gve_tx.c b/sys/dev/gve/gve_tx.c index e594c66149bc..b667df4ca06e 100644 --- a/sys/dev/gve/gve_tx.c +++ b/sys/dev/gve/gve_tx.c @@ -181,39 +181,32 @@ abort: } int -gve_alloc_tx_rings(struct gve_priv *priv) +gve_alloc_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { - int err = 0; int i; + int err; - priv->tx = malloc(sizeof(struct gve_tx_ring) * priv->tx_cfg.num_queues, - M_GVE, M_WAITOK | M_ZERO); + KASSERT(priv->tx != NULL, ("priv->tx is NULL!")); - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = start_idx; i < stop_idx; i++) { err = gve_tx_alloc_ring(priv, i); if (err != 0) goto free_rings; - } return (0); - free_rings: - while (i--) - gve_tx_free_ring(priv, i); - free(priv->tx, M_GVE); + gve_free_tx_rings(priv, start_idx, i); return (err); } void -gve_free_tx_rings(struct gve_priv *priv) +gve_free_tx_rings(struct gve_priv *priv, uint16_t start_idx, uint16_t stop_idx) { int i; - for (i = 0; i < priv->tx_cfg.num_queues; i++) + for (i = start_idx; i < stop_idx; i++) gve_tx_free_ring(priv, i); - - free(priv->tx, M_GVE); } static void diff --git a/sys/dev/gve/gve_utils.c b/sys/dev/gve/gve_utils.c index 080343d3f651..4e9dd4625e2f 100644 --- a/sys/dev/gve/gve_utils.c +++ b/sys/dev/gve/gve_utils.c @@ -234,7 +234,7 @@ gve_free_irqs(struct gve_priv *priv) return; } - num_irqs = priv->tx_cfg.num_queues + priv->rx_cfg.num_queues + 1; + num_irqs = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues + 1; for (i = 0; i < num_irqs; i++) { irq = &priv->irq_tbl[i]; @@ -268,8 +268,8 @@ gve_free_irqs(struct gve_priv *priv) int gve_alloc_irqs(struct gve_priv *priv) { - int num_tx = priv->tx_cfg.num_queues; - int num_rx = priv->rx_cfg.num_queues; + int num_tx = priv->tx_cfg.max_queues; + int num_rx = priv->rx_cfg.max_queues; int req_nvecs = num_tx + num_rx + 1; int got_nvecs = req_nvecs; struct gve_irq *irq; From nobody Fri Apr 4 23:25:06 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTvpW1Mm8z5sbSt; Fri, 04 Apr 2025 23:25: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 4ZTvpV6WDjz3Vtf; Fri, 04 Apr 2025 23:25:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZqhi3Ye9c8g51TPSXm0SKJT2sOXU9R68ER3rXV9ROg=; b=OfaMXvrQbnqFX8UfjABXtzAmBTFC3zMmyG5ONVY9N6BpIctJ4XhanzVRGpfgNcVUX7+N// ASdVLOLyk/gMJjHphUT/eTbLCcPBbXPkyU0GLoUf61wxrO9U3tDBRTVem6juEGG4AuME6S BxqQiNUFWpH7BlPVVj8PYzKu0jdlQQtWoy5O3JygDKPKvBkvvYVVeAXIlaB8ijQhR3RRPB 3aBRog3mjTObiidkM2zgKeV2EFvX2/Wm/4uSvWKBkJi6f17FjPumWkUZ7Z9Udk8mlxXQsk bNllV4P5M1N+p81erwUSbQFMtonaptyzFhcbzb7lyNiEDHWO2nwtSTFobpvj9A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743809106; a=rsa-sha256; cv=none; b=ZUzLJ8cJQn/gSfeTJBzEF8Nc+YOvhXNl9clGmcIn21vMDvF2CSdqFdkkrAFVJhWsxM3njy /QpV9UMAth/Uf+uxYOnTkYCeOZlep0I57VEQcPFpJ7HI5x6Ew8feQ70FnPjIdtlcfiQEWM 3yjNLZoh1ggpyiWhs43muFkFAK6wByQYAs2X4x2MleqIQFE+VB0+DxmjaDTz3BU0LxjUq5 VzfYO0DsHeKjrTK9ZbAn+61vZvHPmFFKk/mGSEIdwX+IOtIc8cQbozfnw+H2wxzQTZlMjz b/X+73ie/PWk2fEuNISOCOOpptmiN6vamzboLsilUutxRM2LY6Vh922mh8UBQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743809106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eZqhi3Ye9c8g51TPSXm0SKJT2sOXU9R68ER3rXV9ROg=; b=oDCDozofdbnn5ZxmTL5pCvLz2UTXfUQGztrWWijSSFPCOkbClf73jmo8ZYwHuMKDtwC+Fx 0pNOhozfcz5XX4O+zOcii5I24nNzsU5FQiTyFhm2rRHyJY5VjKGU0FDW8AZoDm+qrPXhkY TZUHnScJ44CV7xtdzIHOizzqy3+/XHBC2cPbdLB+UroFhfMoTV3tqfKSqYnTIKr3edp9d0 sXYA+rS2+u27wgXJfRgOUnQeh/2yL4VGH19WfXe4szJeffGg12DkrOiqc6mrOiN7z9EXWq /Av9pmTjtCGXI6j1XFdfEGgEJewKfC1dOVcqQap+NP+G1yp8f7QVForkYFL4rg== 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 4ZTvpV4wNFz16Dm; Fri, 04 Apr 2025 23:25: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 534NP66l063342; Fri, 4 Apr 2025 23:25:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 534NP6HZ063339; Fri, 4 Apr 2025 23:25:06 GMT (envelope-from git) Date: Fri, 4 Apr 2025 23:25:06 GMT Message-Id: <202504042325.534NP6HZ063339@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: 22fe926a62b7 - main - gve: Add feature to change TX/RX ring size List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 22fe926a62b7bca771d46502dd6a8c202f25b5be Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=22fe926a62b7bca771d46502dd6a8c202f25b5be commit 22fe926a62b7bca771d46502dd6a8c202f25b5be Author: Vee Agarwal AuthorDate: 2025-04-04 22:53:33 +0000 Commit: Mark Johnston CommitDate: 2025-04-04 23:24:49 +0000 gve: Add feature to change TX/RX ring size This change introduces new sysctl handlers that allow the user to change RX/TX ring sizes. As before, the default ring sizes will come from the device (usually 1024). We also get the max/min limits from the device. In the case min values are not provided we have statically defined constants for the min values. Additionally, if the modify ring option is not enabled on the device, changing ring sizes via sysctl will not be possible. When changing ring sizes, the interface turns down momentarily while allocating/freeing resources as necessary. Signed-off-by: Vee Agarwal Reviewed by: markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49428 --- share/man/man4/gve.4 | 17 ++++++++++ sys/dev/gve/gve.h | 10 ++++++ sys/dev/gve/gve_adminq.c | 53 ++++++++++++++++++++++++++++- sys/dev/gve/gve_adminq.h | 14 ++++++-- sys/dev/gve/gve_main.c | 52 +++++++++++++++++++++++++++-- sys/dev/gve/gve_sysctl.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 227 insertions(+), 6 deletions(-) diff --git a/share/man/man4/gve.4 b/share/man/man4/gve.4 index 2ae96c93e37d..754071e2fad8 100644 --- a/share/man/man4/gve.4 +++ b/share/man/man4/gve.4 @@ -86,6 +86,12 @@ Change the TX queue count to 4 for the gve0 interface: .Pp Change the RX queue count to 4 for the gve0 interface: .D1 sysctl dev.gve.0.num_rx_queues=4 +.Pp +Change the TX ring size to 512 for the gve0 interface: +.D1 sysctl dev.gve.0.tx_ring_size=512 +.Pp +Change the RX ring size to 512 for the gve0 interface: +.D1 sysctl dev.gve.0.rx_ring_size=512 .Sh DIAGNOSTICS The following messages are recorded during driver initialization: .Bl -diag @@ -230,6 +236,17 @@ If this also fails, a device reset will be triggered. .Pp Note: sysctl nodes for queue stats remain available even if a queue is removed. .Pp +.It Va dev.gve.X.rx_ring_size and dev.gve.X.tx_ring_size +Run-time tunables that represent the current ring size for RX/TX queues. +The default value is set to device defaults for ring size. +.Pp +This call turns down the interface while setting up the queues with the new ring size, +which may potentially cause any new packets to be dropped. +This call can fail if the system is not able to provide the driver with enough resources. +In that situation, the driver will try to revert to the previous ring size for RX/TX queues. +If this also fails, the device will be in an unhealthy state and will need to be reloaded. +This value must be a power of 2 and within the defined range. +.Pp .El .Sh LIMITATIONS .Nm diff --git a/sys/dev/gve/gve.h b/sys/dev/gve/gve.h index 2b49ee5ad45a..5b298b889ed6 100644 --- a/sys/dev/gve/gve.h +++ b/sys/dev/gve/gve.h @@ -63,6 +63,10 @@ */ #define GVE_QPL_DIVISOR 16 +/* Ring Size Limits */ +#define GVE_DEFAULT_MIN_RX_RING_SIZE 512 +#define GVE_DEFAULT_MIN_TX_RING_SIZE 256 + static MALLOC_DEFINE(M_GVE, "gve", "gve allocations"); struct gve_dma_handle { @@ -529,12 +533,17 @@ struct gve_priv { uint16_t num_event_counters; uint16_t default_num_queues; uint16_t tx_desc_cnt; + uint16_t max_tx_desc_cnt; + uint16_t min_tx_desc_cnt; uint16_t rx_desc_cnt; + uint16_t max_rx_desc_cnt; + uint16_t min_rx_desc_cnt; uint16_t rx_pages_per_qpl; uint64_t max_registered_pages; uint64_t num_registered_pages; uint32_t supported_features; uint16_t max_mtu; + bool modify_ringsize_enabled; struct gve_dma_handle counter_array_mem; __be32 *counters; @@ -622,6 +631,7 @@ gve_is_qpl(struct gve_priv *priv) void gve_schedule_reset(struct gve_priv *priv); int gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); int gve_adjust_rx_queues(struct gve_priv *priv, uint16_t new_queue_cnt); +int gve_adjust_ring_sizes(struct gve_priv *priv, uint16_t new_desc_cnt, bool is_rx); /* Register access functions defined in gve_utils.c */ uint32_t gve_reg_bar_read_4(struct gve_priv *priv, bus_size_t offset); diff --git a/sys/dev/gve/gve_adminq.c b/sys/dev/gve/gve_adminq.c index dd03f817f45a..3415d2fa4b60 100644 --- a/sys/dev/gve/gve_adminq.c +++ b/sys/dev/gve/gve_adminq.c @@ -59,6 +59,7 @@ void gve_parse_device_option(struct gve_priv *priv, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, struct gve_device_option_dqo_rda **dev_op_dqo_rda, struct gve_device_option_dqo_qpl **dev_op_dqo_qpl, + struct gve_device_option_modify_ring **dev_op_modify_ring, struct gve_device_option_jumbo_frames **dev_op_jumbo_frames) { uint32_t req_feat_mask = be32toh(option->required_features_mask); @@ -121,6 +122,34 @@ void gve_parse_device_option(struct gve_priv *priv, *dev_op_dqo_qpl = (void *)(option + 1); break; + case GVE_DEV_OPT_ID_MODIFY_RING: + if (option_length < (sizeof(**dev_op_modify_ring) - + sizeof(struct gve_ring_size_bound)) || + req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_MODIFY_RING) { + device_printf(priv->dev, GVE_DEVICE_OPTION_ERROR_FMT, + "Modify Ring", (int)sizeof(**dev_op_modify_ring), + GVE_DEV_OPT_REQ_FEAT_MASK_MODIFY_RING, + option_length, req_feat_mask); + break; + } + + if (option_length > sizeof(**dev_op_modify_ring)) { + device_printf(priv->dev, GVE_DEVICE_OPTION_TOO_BIG_FMT, + "Modify Ring"); + } + *dev_op_modify_ring = (void *)(option + 1); + + /* Min ring size included; set the minimum ring size. */ + if (option_length == sizeof(**dev_op_modify_ring)) { + priv->min_rx_desc_cnt = max( + be16toh((*dev_op_modify_ring)->min_ring_size.rx), + GVE_DEFAULT_MIN_RX_RING_SIZE); + priv->min_tx_desc_cnt = max( + be16toh((*dev_op_modify_ring)->min_ring_size.tx), + GVE_DEFAULT_MIN_TX_RING_SIZE); + } + break; + case GVE_DEV_OPT_ID_JUMBO_FRAMES: if (option_length < sizeof(**dev_op_jumbo_frames) || req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES) { @@ -155,6 +184,7 @@ gve_process_device_options(struct gve_priv *priv, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, struct gve_device_option_dqo_rda **dev_op_dqo_rda, struct gve_device_option_dqo_qpl **dev_op_dqo_qpl, + struct gve_device_option_modify_ring **dev_op_modify_ring, struct gve_device_option_jumbo_frames **dev_op_jumbo_frames) { char *desc_end = (char *)descriptor + be16toh(descriptor->total_length); @@ -176,6 +206,7 @@ gve_process_device_options(struct gve_priv *priv, dev_op_gqi_qpl, dev_op_dqo_rda, dev_op_dqo_qpl, + dev_op_modify_ring, dev_op_jumbo_frames); dev_opt = (void *)((char *)(dev_opt + 1) + be16toh(dev_opt->option_length)); } @@ -390,8 +421,18 @@ gve_adminq_set_mtu(struct gve_priv *priv, uint32_t mtu) { static void gve_enable_supported_features(struct gve_priv *priv, uint32_t supported_features_mask, + const struct gve_device_option_modify_ring *dev_op_modify_ring, const struct gve_device_option_jumbo_frames *dev_op_jumbo_frames) { + if (dev_op_modify_ring && + (supported_features_mask & GVE_SUP_MODIFY_RING_MASK)) { + if (bootverbose) + device_printf(priv->dev, "MODIFY RING device option enabled.\n"); + priv->modify_ringsize_enabled = true; + priv->max_rx_desc_cnt = be16toh(dev_op_modify_ring->max_ring_size.rx); + priv->max_tx_desc_cnt = be16toh(dev_op_modify_ring->max_ring_size.tx); + } + if (dev_op_jumbo_frames && (supported_features_mask & GVE_SUP_JUMBO_FRAMES_MASK)) { if (bootverbose) @@ -410,6 +451,7 @@ gve_adminq_describe_device(struct gve_priv *priv) struct gve_device_option_gqi_qpl *dev_op_gqi_qpl = NULL; struct gve_device_option_dqo_rda *dev_op_dqo_rda = NULL; struct gve_device_option_dqo_qpl *dev_op_dqo_qpl = NULL; + struct gve_device_option_modify_ring *dev_op_modify_ring = NULL; struct gve_device_option_jumbo_frames *dev_op_jumbo_frames = NULL; uint32_t supported_features_mask = 0; int rc; @@ -438,10 +480,15 @@ gve_adminq_describe_device(struct gve_priv *priv) bus_dmamap_sync(desc_mem.tag, desc_mem.map, BUS_DMASYNC_POSTREAD); + /* Default min in case device options don't have min values */ + priv->min_rx_desc_cnt = GVE_DEFAULT_MIN_RX_RING_SIZE; + priv->min_tx_desc_cnt = GVE_DEFAULT_MIN_TX_RING_SIZE; + rc = gve_process_device_options(priv, desc, &dev_op_gqi_qpl, &dev_op_dqo_rda, &dev_op_dqo_qpl, + &dev_op_modify_ring, &dev_op_jumbo_frames); if (rc != 0) goto free_device_descriptor; @@ -489,8 +536,12 @@ gve_adminq_describe_device(struct gve_priv *priv) priv->default_num_queues = be16toh(desc->default_num_queues); priv->supported_features = supported_features_mask; + /* Default max to current in case modify ring size option is disabled */ + priv->max_rx_desc_cnt = priv->rx_desc_cnt; + priv->max_tx_desc_cnt = priv->tx_desc_cnt; + gve_enable_supported_features(priv, supported_features_mask, - dev_op_jumbo_frames); + dev_op_modify_ring, dev_op_jumbo_frames); for (i = 0; i < ETHER_ADDR_LEN; i++) priv->mac[i] = desc->mac[i]; diff --git a/sys/dev/gve/gve_adminq.h b/sys/dev/gve/gve_adminq.h index 37a7cb3ecbb8..bc51046a3037 100644 --- a/sys/dev/gve/gve_adminq.h +++ b/sys/dev/gve/gve_adminq.h @@ -153,13 +153,21 @@ struct gve_device_option_dqo_qpl { _Static_assert(sizeof(struct gve_device_option_dqo_qpl) == 8, "gve: bad admin queue struct length"); +struct gve_ring_size_bound { + __be16 rx; + __be16 tx; +}; + +_Static_assert(sizeof(struct gve_ring_size_bound) == 4, + "gve: bad admin queue struct length"); + struct gve_device_option_modify_ring { __be32 supported_features_mask; - __be16 max_rx_ring_size; - __be16 max_tx_ring_size; + struct gve_ring_size_bound max_ring_size; + struct gve_ring_size_bound min_ring_size; }; -_Static_assert(sizeof(struct gve_device_option_modify_ring) == 8, +_Static_assert(sizeof(struct gve_device_option_modify_ring) == 12, "gve: bad admin queue struct length"); struct gve_device_option_jumbo_frames { diff --git a/sys/dev/gve/gve_main.c b/sys/dev/gve/gve_main.c index 39556b85f493..8a00deedef36 100644 --- a/sys/dev/gve/gve_main.c +++ b/sys/dev/gve/gve_main.c @@ -32,10 +32,10 @@ #include "gve_adminq.h" #include "gve_dqo.h" -#define GVE_DRIVER_VERSION "GVE-FBSD-1.3.2\n" +#define GVE_DRIVER_VERSION "GVE-FBSD-1.3.3\n" #define GVE_VERSION_MAJOR 1 #define GVE_VERSION_MINOR 3 -#define GVE_VERSION_SUB 2 +#define GVE_VERSION_SUB 3 #define GVE_DEFAULT_RX_COPYBREAK 256 @@ -260,6 +260,54 @@ gve_adjust_tx_queues(struct gve_priv *priv, uint16_t new_queue_cnt) return (err); } +int +gve_adjust_ring_sizes(struct gve_priv *priv, uint16_t new_desc_cnt, bool is_rx) +{ + int err; + uint16_t prev_desc_cnt; + + GVE_IFACE_LOCK_ASSERT(priv->gve_iface_lock); + + gve_down(priv); + + if (is_rx) { + gve_free_rx_rings(priv, 0, priv->rx_cfg.num_queues); + prev_desc_cnt = priv->rx_desc_cnt; + priv->rx_desc_cnt = new_desc_cnt; + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); + if (err != 0) { + device_printf(priv->dev, + "Failed to allocate rings. Trying to start back up with previous ring size."); + priv->rx_desc_cnt = prev_desc_cnt; + err = gve_alloc_rx_rings(priv, 0, priv->rx_cfg.num_queues); + } + } else { + gve_free_tx_rings(priv, 0, priv->tx_cfg.num_queues); + prev_desc_cnt = priv->tx_desc_cnt; + priv->tx_desc_cnt = new_desc_cnt; + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); + if (err != 0) { + device_printf(priv->dev, + "Failed to allocate rings. Trying to start back up with previous ring size."); + priv->tx_desc_cnt = prev_desc_cnt; + err = gve_alloc_tx_rings(priv, 0, priv->tx_cfg.num_queues); + } + } + + if (err != 0) { + device_printf(priv->dev, "Failed to allocate rings! Cannot start device back up!"); + return (err); + } + + err = gve_up(priv); + if (err != 0) { + gve_schedule_reset(priv); + return (err); + } + + return (0); +} + static int gve_set_mtu(if_t ifp, uint32_t new_mtu) { diff --git a/sys/dev/gve/gve_sysctl.c b/sys/dev/gve/gve_sysctl.c index 8f52ffad6f3e..f7c7b5803865 100644 --- a/sys/dev/gve/gve_sysctl.c +++ b/sys/dev/gve/gve_sysctl.c @@ -354,6 +354,83 @@ gve_sysctl_num_rx_queues(SYSCTL_HANDLER_ARGS) return (err); } +static int +gve_check_ring_size(struct gve_priv *priv, int val, bool is_rx) +{ + if (!powerof2(val) || val == 0) { + device_printf(priv->dev, + "Requested ring size (%u) must be a power of 2\n", val); + return (EINVAL); + } + + if (val < (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)) { + device_printf(priv->dev, + "Requested ring size (%u) cannot be less than %d\n", val, + (is_rx ? priv->min_rx_desc_cnt : priv->min_tx_desc_cnt)); + return (EINVAL); + } + + + if (val > (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)) { + device_printf(priv->dev, + "Requested ring size (%u) cannot be greater than %d\n", val, + (is_rx ? priv->max_rx_desc_cnt : priv->max_tx_desc_cnt)); + return (EINVAL); + } + + return (0); +} + +static int +gve_sysctl_tx_ring_size(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->tx_desc_cnt; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_ring_size(priv, val, /*is_rx=*/false); + if (err != 0) + return (err); + + if (val != priv->tx_desc_cnt) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_ring_sizes(priv, val, /*is_rx=*/false); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + +static int +gve_sysctl_rx_ring_size(SYSCTL_HANDLER_ARGS) +{ + struct gve_priv *priv = arg1; + int val; + int err; + + val = priv->rx_desc_cnt; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + err = gve_check_ring_size(priv, val, /*is_rx=*/true); + if (err != 0) + return (err); + + if (val != priv->rx_desc_cnt) { + GVE_IFACE_LOCK_LOCK(priv->gve_iface_lock); + err = gve_adjust_ring_sizes(priv, val, /*is_rx=*/true); + GVE_IFACE_LOCK_UNLOCK(priv->gve_iface_lock); + } + + return (err); +} + static void gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, struct sysctl_oid_list *child, struct gve_priv *priv) @@ -365,6 +442,16 @@ gve_setup_sysctl_writables(struct sysctl_ctx_list *ctx, SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "num_rx_queues", CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, gve_sysctl_num_rx_queues, "I", "Number of RX queues"); + + if (priv->modify_ringsize_enabled) { + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "tx_ring_size", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_tx_ring_size, "I", "TX ring size"); + + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_ring_size", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, priv, 0, + gve_sysctl_rx_ring_size, "I", "RX ring size"); + } } void gve_setup_sysctl(struct gve_priv *priv) From nobody Sat Apr 5 00:48:17 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTxfT64mDz5shSS; Sat, 05 Apr 2025 00:48: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 4ZTxfT5ChCz3lLK; Sat, 05 Apr 2025 00:48:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LL8njGV6qVyjQh6BG31Lc6xMmnPZRcOG8qGEZEI0/v8=; b=N2qpKdv58i9PUJ50qdyuIhIG3qmLTxQs5jOhCl4dBE03LuUfO7S4Rmlk22U2Fp4ZPAsVBq 9eynttQTCR8LanALaLziJYVHJaNl/oY05huGxmXs5//Ag1a8/ABh/EldoH+ameeQNd6KuU 0Mo18h8VeMPz/MgtXlcRB7OJkvav07n8/FsdtHBN6Ep2obNfrkW1g6maYTr8gi4hK9is8b N+Siq42dMaWzg8ZGvmvK9AsE0VeiBBVC59FFVlJ/GkSBYmJQgX6Sv+kEbUzhEedlJo7tBG ewRrP54vzyTAhapzVCTPtzPpCnfkCBoXQ0ig2XxV0tdPdpXIq3QjaMd/EcFhxQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743814097; a=rsa-sha256; cv=none; b=o9Rxohe9tt/rnV8xGSoqstDfJvCoVU9eaGFarmG0beRX7U7MNt82POSpykjaS8jrRYnnij wxywPb9kfOns0AJiBAqEuaf4L4MBSOAbeJbDTcUtrLwumll2QUFKdLG3e8lQgWhnxHr9/W 1DpZNi1QrY0gPe2BjuW7yB/kSfKYuR9HuJuWqVAjBpeh2QulAxNM+BAwVtvjSnhXMv8xhv OpVnmyMkYPj999kiQSS8rx/y9kylLGPv/C1nPMffH+9Z345WxqGqCCgHX1swQVEFB76sxq cuCoak3DNz9iQfdZ7bKB9Jr3sv3UTUobJDmpDWR/C+sjSiFTdhi5O4mGGFpFWw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LL8njGV6qVyjQh6BG31Lc6xMmnPZRcOG8qGEZEI0/v8=; b=jRIbnoRgJkVpVRO3eCq102Eu7KZgtbDGb3MYUtvUGbMlTxKguCrOkviTNNUgvC1gCOeLX6 UFr9POOnBxfhu5GIpXXY6OkDktvQUIloKlFNRa9lE5qIuj02Ng3jiiXBKOGZDG8iAElhMC WwlNJmZdPnZW+Xjv/6gAlmX8N9UjIUNtBZPw66UT79hJtYXU3yfgtwDwqw50YoIY6Qv5/H tT03sff9iy5PManhsba1PSuAoV6o4fbpkQIJGYDpQwPq4cD+8g5JYB+0ZO7L+Zg0sF/bAM pN61FPzHPD5geapzXNtRprjpAiLMXn/xdwBPUcDMl2HLl4tiTTwpy/BVmEBDpw== 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 4ZTxfT4l5yz17C1; Sat, 05 Apr 2025 00:48: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 5350mHqo012856; Sat, 5 Apr 2025 00:48:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5350mHXh012853; Sat, 5 Apr 2025 00:48:17 GMT (envelope-from git) Date: Sat, 5 Apr 2025 00:48:17 GMT Message-Id: <202504050048.5350mHXh012853@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: 23427c8e1fed - main - libc: allow __cxa_atexit handlers to be added during __cxa_finalize List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c commit 23427c8e1fedb9fc68ad0bd27a59c7ffd2b3008c Author: Aurélien Croc de Suray AuthorDate: 2025-04-05 00:47:53 +0000 Commit: Kyle Evans CommitDate: 2025-04-05 00:47:53 +0000 libc: allow __cxa_atexit handlers to be added during __cxa_finalize science/dlib-cpp reveals an interesting scenario that works fine on other platforms but not on FreeBSD; notably, it ends up creating a new global object from some destructor which is called during __cxa_finalize. This breaks when libdlib is dlopen()ed and then subsequently dlclose()ed, as we never end up invoking the created object's dtor until program exit when the shlib is already unmapped. Fix it by noting when we're in the middle of __cxa_finalize for a dso, and then restarting the search if __cxa_atexit() was called in the middle somewhere. We wait until we've processed the initial set before starting over and processing the newly added handlers as if it were a complete set of handlers added during runtime. The alternative is calling them as they're added to maintain a LIFO in terms of total ordering, but in theory a constructor could add another global object that also needs to be destroyed, and that object needs to be destroyed after the one that constructed it to avoid creating unexpected lifetime issues. This manifests in the pdlib PHP extension for dlib crashing, see [0]. [0] https://github.com/goodspb/pdlib/issues/39 PR: 285870 Reviewed by: kevans (also supplied commit message) MFC after: 1 week --- lib/libc/stdlib/atexit.c | 61 ++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/lib/libc/stdlib/atexit.c b/lib/libc/stdlib/atexit.c index e5aa66c51f38..6e4a12f9e530 100644 --- a/lib/libc/stdlib/atexit.c +++ b/lib/libc/stdlib/atexit.c @@ -35,6 +35,7 @@ #include "namespace.h" #include #include +#include #include #include #include @@ -56,6 +57,8 @@ _Block_copy(void*); #define ATEXIT_FN_CXA 2 static pthread_mutex_t atexit_mutex = PTHREAD_MUTEX_INITIALIZER; +static void *current_finalize_dso = NULL; +static bool call_finalize_again = false; #define _MUTEX_LOCK(x) if (__isthreaded) _pthread_mutex_lock(x) #define _MUTEX_UNLOCK(x) if (__isthreaded) _pthread_mutex_unlock(x) @@ -115,6 +118,9 @@ atexit_register(struct atexit_fn *fptr) __atexit = p; } p->fns[p->ind++] = *fptr; + if (current_finalize_dso != NULL && + current_finalize_dso == fptr->fn_dso) + call_finalize_again = true; _MUTEX_UNLOCK(&atexit_mutex); return 0; } @@ -208,33 +214,38 @@ __cxa_finalize(void *dso) } _MUTEX_LOCK(&atexit_mutex); - for (p = __atexit; p; p = p->next) { - for (n = p->ind; --n >= 0;) { - if (p->fns[n].fn_type == ATEXIT_FN_EMPTY) - continue; /* already been called */ - fn = p->fns[n]; - if (dso != NULL && dso != fn.fn_dso) { - /* wrong DSO ? */ - if (!has_phdr || global_exit || - !__elf_phdr_match_addr(&phdr_info, - fn.fn_ptr.cxa_func)) - continue; + current_finalize_dso = dso; + do { + call_finalize_again = false; + for (p = __atexit; p; p = p->next) { + for (n = p->ind; --n >= 0;) { + if (p->fns[n].fn_type == ATEXIT_FN_EMPTY) + continue; /* already been called */ + fn = p->fns[n]; + if (dso != NULL && dso != fn.fn_dso) { + /* wrong DSO ? */ + if (!has_phdr || global_exit || + !__elf_phdr_match_addr(&phdr_info, + fn.fn_ptr.cxa_func)) + continue; + } + /* + Mark entry to indicate that this particular + handler has already been called. + */ + p->fns[n].fn_type = ATEXIT_FN_EMPTY; + _MUTEX_UNLOCK(&atexit_mutex); + + /* Call the function of correct type. */ + if (fn.fn_type == ATEXIT_FN_CXA) + fn.fn_ptr.cxa_func(fn.fn_arg); + else if (fn.fn_type == ATEXIT_FN_STD) + fn.fn_ptr.std_func(); + _MUTEX_LOCK(&atexit_mutex); } - /* - Mark entry to indicate that this particular handler - has already been called. - */ - p->fns[n].fn_type = ATEXIT_FN_EMPTY; - _MUTEX_UNLOCK(&atexit_mutex); - - /* Call the function of correct type. */ - if (fn.fn_type == ATEXIT_FN_CXA) - fn.fn_ptr.cxa_func(fn.fn_arg); - else if (fn.fn_type == ATEXIT_FN_STD) - fn.fn_ptr.std_func(); - _MUTEX_LOCK(&atexit_mutex); } - } + } while (call_finalize_again); + current_finalize_dso = NULL; _MUTEX_UNLOCK(&atexit_mutex); if (dso == NULL) _MUTEX_DESTROY(&atexit_mutex); From nobody Sat Apr 5 00:48:18 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZTxfW127Nz5shKs; Sat, 05 Apr 2025 00:48: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 4ZTxfV6Vgrz3lYd; Sat, 05 Apr 2025 00:48:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814098; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RaHnwtyvFqSUQd1NmJt19Dju0f+HDSdF5f/0VJcEhQc=; b=rwxRux0wKkOU8wkSxPHMCqXTORBSE27JVWLVsW5sEcxp/6NdeZiorYGUIo9g/3MvQ67bNE PG60KKw9RkjtwMK2J4fNAS6Xt1fF//Vu6azCff/r91YpUhL+K5C7NHRE0tVxKQABucpH10 83IF3nibLVnPW1hSI9+RxyBzxVqW1+VHf+G+inTcNyI7ttbkZzr3DhGWkatqXfv69cGXtl LA9tkhcMCOStC4HLRVWdmnX9VxvAv9ljymuA9uWqaVcbNwStwpzsuY+Mz9AbNumZE7dntX iSngixRDEUO6WpL1Zs4KydHZk0FeXDN7m7BOOMdDceaI3A3VcD+AGxDKpgm5Ag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743814098; a=rsa-sha256; cv=none; b=MaYKcbBudDlRvEh5Cu63HbRmdRCkDLJjazxQmjBG0aa0BFLh54K2FBiJrRG6envjwvOnwz xixjSrgFKqAOowgEU1FurFumqzmvJKnRe70dN3ucvlwpja25nnWkvtmBWlX9hZHLGg3Sj9 5RVOuPvCGiROxeTiTC1yUeFJbJuy9o1upOeoqM+6J57VQdBxOeGVUEr2QtgFn2Le/SGNt6 l4Unilpf98XxAKWNgHNrbh6KAmeSi5RcgB8KWGp2kI8yk67mqf+yGX0qMuaxPwOD3snJZe F489sRNFyeuEOeShNrS3yHulbe1ZzeSusd92Y9z84nwK/2L/7u6/iX1XxizUYw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743814098; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RaHnwtyvFqSUQd1NmJt19Dju0f+HDSdF5f/0VJcEhQc=; b=wPhsdGWzmfkhc+ZRESHFAE6YBK7/RpOwjwI8aA70RHe1zvAJlkL1KE2O9xjJTHfJ4uD4Ok 2h/Vbro3IAI6+LKORGmH3VY2/7F7sv1x2nkZ6tCmwIrVl/BZ7LzcUUuui+HOEPS3oi627U SxBPKklbNnWPzEjaq4vx5CrP39Inqrwis+QKzDP/zfi27Qvopmi2PUu48augSBZsaOWju8 gwBV155MatFonVgbEcM7CcQuZfL1x7UnfbjUAxUX9nrAQvjmmPfEAMIuaEWr6nszrGOxs3 3g8RZxWYpY1iPMH7Iy588W23wtDaG0+MxroyBcAJdOnnXPqkS7OkgH98RzAZYQ== 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 4ZTxfV5zmXz188q; Sat, 05 Apr 2025 00:48: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 5350mI2U012888; Sat, 5 Apr 2025 00:48:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5350mIcR012885; Sat, 5 Apr 2025 00:48:18 GMT (envelope-from git) Date: Sat, 5 Apr 2025 00:48:18 GMT Message-Id: <202504050048.5350mIcR012885@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: ee9ce1078c59 - main - libc: tests: add some tests for __cxa_atexit handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ee9ce1078c596f5719f312feedd616ab0fb41dc9 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ee9ce1078c596f5719f312feedd616ab0fb41dc9 commit ee9ce1078c596f5719f312feedd616ab0fb41dc9 Author: Kyle Evans AuthorDate: 2025-04-05 00:47:54 +0000 Commit: Kyle Evans CommitDate: 2025-04-05 00:47:54 +0000 libc: tests: add some tests for __cxa_atexit handling This adds a basic test that __cxa_atexit works, and also adds some tests for __cxa_atexit handlers registered in the middle of __cxa_finalize. PR: 285870 --- lib/libc/tests/stdlib/Makefile | 2 + lib/libc/tests/stdlib/cxa_atexit_test.c | 132 +++++++++++++++++++++++++++ lib/libc/tests/stdlib/libatexit/Makefile | 11 +++ lib/libc/tests/stdlib/libatexit/libatexit.cc | 67 ++++++++++++++ 4 files changed, 212 insertions(+) diff --git a/lib/libc/tests/stdlib/Makefile b/lib/libc/tests/stdlib/Makefile index 6f57b8014a1e..54ac8a5f3b42 100644 --- a/lib/libc/tests/stdlib/Makefile +++ b/lib/libc/tests/stdlib/Makefile @@ -1,6 +1,7 @@ .include ATF_TESTS_C+= clearenv_test +ATF_TESTS_C+= cxa_atexit_test ATF_TESTS_C+= dynthr_test ATF_TESTS_C+= heapsort_test ATF_TESTS_C+= libc_exit_test @@ -79,5 +80,6 @@ LIBADD.libc_exit_test+= pthread LIBADD.strtod_test+= m SUBDIR+= dynthr_mod +SUBDIR+= libatexit .include diff --git a/lib/libc/tests/stdlib/cxa_atexit_test.c b/lib/libc/tests/stdlib/cxa_atexit_test.c new file mode 100644 index 000000000000..7e2cafbce850 --- /dev/null +++ b/lib/libc/tests/stdlib/cxa_atexit_test.c @@ -0,0 +1,132 @@ +/*- + * Copyright (c) 2025 Kyle Evans + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +#include +#include +#include +#include + +#include + +#define ARBITRARY_EXIT_CODE 42 + +static char * +get_shlib(const char *srcdir) +{ + char *shlib; + + shlib = NULL; + if (asprintf(&shlib, "%s/libatexit.so", srcdir) < 0) + atf_tc_fail("failed to construct path to libatexit.so"); + return (shlib); +} + +static void +run_test(const atf_tc_t *tc, bool with_fatal_atexit, bool with_exit) +{ + pid_t p; + void (*set_fatal_atexit)(bool); + void (*set_exit_code)(int); + void *hdl; + char *shlib; + + shlib = get_shlib(atf_tc_get_config_var(tc, "srcdir")); + + hdl = dlopen(shlib, RTLD_LAZY); + ATF_REQUIRE_MSG(hdl != NULL, "dlopen: %s", dlerror()); + + free(shlib); + + if (with_fatal_atexit) { + set_fatal_atexit = dlsym(hdl, "set_fatal_atexit"); + ATF_REQUIRE_MSG(set_fatal_atexit != NULL, + "set_fatal_atexit: %s", dlerror()); + } + if (with_exit) { + set_exit_code = dlsym(hdl, "set_exit_code"); + ATF_REQUIRE_MSG(set_exit_code != NULL, "set_exit_code: %s", + dlerror()); + } + + p = atf_utils_fork(); + if (p == 0) { + /* + * Don't let the child clobber the results file; stderr/stdout + * have been replaced by atf_utils_fork() to capture it. We're + * intentionally using exit() instead of _exit() here to run + * __cxa_finalize at exit, otherwise we'd just leave it be. + */ + closefrom(3); + + if (with_fatal_atexit) + set_fatal_atexit(true); + if (with_exit) + set_exit_code(ARBITRARY_EXIT_CODE); + + dlclose(hdl); + + /* + * If the dtor was supposed to exit (most cases), then we should + * not have made it to this point. If it's not supposed to + * exit, then we just exit with success here because we might + * be expecting either a clean exit or a signal on our way out + * as the final __cxa_finalize tries to run a callback in the + * unloaded DSO. + */ + if (with_exit) + exit(1); + exit(0); + } + + dlclose(hdl); + atf_utils_wait(p, with_exit ? ARBITRARY_EXIT_CODE : 0, "", ""); +} + +ATF_TC_WITHOUT_HEAD(simple_cxa_atexit); +ATF_TC_BODY(simple_cxa_atexit, tc) +{ + /* + * This test exits in a global object's dtor so that we check for our + * dtor being run at dlclose() time. If it isn't, then the forked child + * will have a chance to exit(1) after dlclose() to raise a failure. + */ + run_test(tc, false, true); +} + +ATF_TC_WITHOUT_HEAD(late_cxa_atexit); +ATF_TC_BODY(late_cxa_atexit, tc) +{ + /* + * This test creates another global object during a __cxa_atexit handler + * invocation. It's been observed in the wild that we weren't executing + * it, then the DSO gets torn down and it was executed at application + * exit time instead. In the best case scenario we would crash if + * something else hadn't been mapped there. + */ + run_test(tc, true, false); +} + +ATF_TC_WITHOUT_HEAD(late_cxa_atexit_ran); +ATF_TC_BODY(late_cxa_atexit_ran, tc) +{ + /* + * This is a slight variation of the previous test where we trigger an + * exit() in our late-registered __cxa_atexit handler so that we can + * ensure it was ran *before* dlclose() finished and not through some + * weird chain of events afterwards. + */ + run_test(tc, true, true); +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, simple_cxa_atexit); + ATF_TP_ADD_TC(tp, late_cxa_atexit); + ATF_TP_ADD_TC(tp, late_cxa_atexit_ran); + return (atf_no_error()); +} diff --git a/lib/libc/tests/stdlib/libatexit/Makefile b/lib/libc/tests/stdlib/libatexit/Makefile new file mode 100644 index 000000000000..9ba04c77af62 --- /dev/null +++ b/lib/libc/tests/stdlib/libatexit/Makefile @@ -0,0 +1,11 @@ +SHLIB_CXX= libatexit +SHLIB_NAME= libatexit.so +SHLIB_MAJOR= 1 +SHLIBDIR= ${TESTSDIR} +PACKAGE= tests +SRCS= libatexit.cc + +TESTSDIR:= ${TESTSBASE}/${RELDIR:C/libc\/tests/libc/:H} + + +.include diff --git a/lib/libc/tests/stdlib/libatexit/libatexit.cc b/lib/libc/tests/stdlib/libatexit/libatexit.cc new file mode 100644 index 000000000000..bb286c97e421 --- /dev/null +++ b/lib/libc/tests/stdlib/libatexit/libatexit.cc @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2025 Kyle Evans + * + * SPDX-License-Identifier: BSD-2-Clause + * + */ + +#include + +static int exit_code = -1; +static bool fatal_atexit; + +extern "C" { + void set_fatal_atexit(bool); + void set_exit_code(int); +} + +void +set_fatal_atexit(bool fexit) +{ + fatal_atexit = fexit; +} + +void +set_exit_code(int code) +{ + exit_code = code; +} + +struct other_object { + ~other_object() { + + /* + * In previous versions of our __cxa_atexit handling, we would + * never actually execute this handler because it's added during + * ~object() below; __cxa_finalize would never revisit it. We + * will allow the caller to configure us to exit with a certain + * exit code so that it can run us twice: once to ensure we + * don't crash at the end, and again to make sure the handler + * actually ran. + */ + if (exit_code != -1) + _exit(exit_code); + } +}; + +void +create_staticobj() +{ + static other_object obj; +} + +struct object { + ~object() { + /* + * If we're doing the fatal_atexit behavior (i.e., create an + * object that will add its own dtor for __cxa_finalize), then + * we don't exit here. + */ + if (fatal_atexit) + create_staticobj(); + else if (exit_code != -1) + _exit(exit_code); + } +}; + +static object obj; From nobody Sat Apr 5 03:18:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZV10B26SRz5ssly; Sat, 05 Apr 2025 03:18: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 4ZV10B1gyWz3LBZ; Sat, 05 Apr 2025 03:18:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743823130; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L4hWLvTJvu7IrBPda8eAP1o3btnLBDdvjiibfvTnP/A=; b=U0pmfjWh2sqbL1A6KBL/+JRn38i8Z1Y1gnReW6UIj+gJDucc/+3gXUlTudOf9pMzs7ijqW PnNkWXic6FXlZEiVnSjLk150sMtu6kmTemtM5+4q5FnLqX7U5dQsi79KbtkBk44Ip5N+oO 3Y+Ce/TU93RhVNZ83WKt5+0X96sB08wyVJ7qkgsznE4nKtViZSOuhWY+UMJK01kY9j6hfw dZMOtmDg3jgHAnreWQd2cDM5XL9eu5chW8EQjsMQPnrsRxtZvHgLgkoAFrlra84R5wrAcl F67cBZjTzhJjhnlXSC+6esaTmAHnjWYSs8vJWNC/wY+mC/YMcQwzeVGmcOcE8Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743823130; a=rsa-sha256; cv=none; b=rGcCvriekp9OoejnIv0kQr7cFelGJF2WFgmi/vrcZkrrWkI77N31QbNnHH37hbF/kuLP/4 XULhwVeLBq/YP1hadHdVL3D5vo4nqruVs0TQAACHQqdqTxejx5OIk/8uuXA0lPpyN331yo L0Z4Nfixjhkw60ZT/wFEGW/VzeR9Xyekv+bNNIyCwp8uM8DqeiFAS1QkRG8wVCBtmXZOBV CHv992OnbIXuN9EHCS6cxrPUj6XLmz3KcfJ+yt1JuuA89YDocEMMPnO/HJ5xq8vQ6CYLLS wKycx5gCFOOoPZRaJTZh1dA5l0v8Rn1xmyoY2/TJDGJ55LGNxieByw3HNXkeEw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743823130; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=L4hWLvTJvu7IrBPda8eAP1o3btnLBDdvjiibfvTnP/A=; b=FcApTjdjggr2w70texM2FLGkBx/l9QxIJwagWVfi5Od26FClc2cd+UzbgeyF0R7dl6wf09 emLPNbAVNwAkZsE/CJZquZZSqtiEERhA/JXvxkmOcLs0CbjAsC8YPygmfVhZBvZ2WBDUPJ SOQaDCknEmmJaUUG0o5wvSTecTGgjapQELZqfHk+zS0eUUuXWKQvLzXHZBB9RtdHZO5ofu Tw47WkC4lXy/WUCsAQK334Tr3qfd4mBJur5Y98ybMHpsHlou+OsIAAes4PNTCRXEQKDmIc amki8H11X4lTs2Cxg2e+bSu//qOFRVLh2x51Gn2AWOjSvjtLODQ5tWGethDdBg== 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 4ZV10B044Wz1CpG; Sat, 05 Apr 2025 03:18: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 5353InC1095152; Sat, 5 Apr 2025 03:18:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5353InRP095148; Sat, 5 Apr 2025 03:18:49 GMT (envelope-from git) Date: Sat, 5 Apr 2025 03:18:49 GMT Message-Id: <202504050318.5353InRP095148@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 6f7ee9ac036e - stable/14 - contrib/expat: import expat 2.7.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6f7ee9ac036ebd210d70cb177eba0c3c5bc930e3 Auto-Submitted: auto-generated The branch stable/14 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=6f7ee9ac036ebd210d70cb177eba0c3c5bc930e3 commit 6f7ee9ac036ebd210d70cb177eba0c3c5bc930e3 Author: Philip Paeps AuthorDate: 2025-04-02 08:56:02 +0000 Commit: Philip Paeps CommitDate: 2025-04-05 03:17:53 +0000 contrib/expat: import expat 2.7.1 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_0/expat/Changes Security: CVE-2024-8176 (cherry picked from commit fe9278888fd4414abe2d922e469cf608005f4c65) --- contrib/expat/COPYING | 2 +- contrib/expat/Changes | 123 +++++- contrib/expat/Makefile.am | 4 +- contrib/expat/Makefile.in | 4 +- contrib/expat/README.md | 18 +- contrib/expat/configure.ac | 4 +- contrib/expat/doc/reference.html | 9 +- contrib/expat/doc/xmlwf.1 | 2 +- contrib/expat/doc/xmlwf.xml | 4 +- contrib/expat/fuzz/xml_lpm_fuzzer.cpp | 464 ++++++++++++++++++++++ contrib/expat/fuzz/xml_lpm_fuzzer.proto | 58 +++ contrib/expat/fuzz/xml_parse_fuzzer.c | 2 +- contrib/expat/fuzz/xml_parsebuffer_fuzzer.c | 2 +- contrib/expat/lib/expat.h | 6 +- contrib/expat/lib/internal.h | 5 +- contrib/expat/lib/xmlparse.c | 586 ++++++++++++++++++++-------- contrib/expat/tests/acc_tests.c | 5 +- contrib/expat/tests/alloc_tests.c | 27 ++ contrib/expat/tests/basic_tests.c | 331 +++++++++++++++- contrib/expat/tests/benchmark/benchmark.c | 57 ++- contrib/expat/tests/common.c | 33 +- contrib/expat/tests/common.h | 4 +- contrib/expat/tests/handlers.c | 23 ++ contrib/expat/tests/handlers.h | 9 + contrib/expat/tests/minicheck.h | 6 +- contrib/expat/tests/misc_tests.c | 247 ++++++++++-- contrib/expat/tests/xmltest.sh | 5 +- contrib/expat/xmlwf/readfilemap.c | 3 +- 28 files changed, 1779 insertions(+), 264 deletions(-) diff --git a/contrib/expat/COPYING b/contrib/expat/COPYING index ce9e5939291e..c6d184a8aae8 100644 --- a/contrib/expat/COPYING +++ b/contrib/expat/COPYING @@ -1,5 +1,5 @@ Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper -Copyright (c) 2001-2022 Expat maintainers +Copyright (c) 2001-2025 Expat maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/contrib/expat/Changes b/contrib/expat/Changes index aa19f70ae219..9d6c64b6a460 100644 --- a/contrib/expat/Changes +++ b/contrib/expat/Changes @@ -11,16 +11,23 @@ !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! !! !! -!! - fixing a complex non-public security issue, !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! +!! - helping CPython Expat bindings with supporting Expat's billion laughs !! +!! attack protection API (https://github.com/python/cpython/issues/90949): !! +!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! +!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! +!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! +!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! +!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! +!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! +!! - XML_SetReparseDeferralEnabled !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! !! - smart ideas on fixing the Autotools CMake files generation issue !! !! without breaking CI (needs discussion before pull requests), !! -!! - the Windows binaries topic (needs requirements engineering first), !! !! - pushing migration from `int` to `size_t` further !! !! including edge-cases test coverage (needs discussion before anything). !! !! !! @@ -30,6 +37,116 @@ !! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.1 Thu March 27 2025 + Bug fixes: + #980 #989 Restore event pointer behavior from Expat 2.6.4 + (that the fix to CVE-2024-8176 changed in 2.7.0); + affected API functions are: + - XML_GetCurrentByteCount + - XML_GetCurrentByteIndex + - XML_GetCurrentColumnNumber + - XML_GetCurrentLineNumber + - XML_GetInputContext + + Other changes: + #976 #977 Autotools: Integrate files "fuzz/xml_lpm_fuzzer.{cpp,proto}" + with Automake that were missing from 2.7.0 release tarballs + #983 #984 Fix printf format specifiers for 32bit Emscripten + #992 docs: Promote OpenSSF Best Practices self-certification + #978 tests/benchmark: Resolve mistaken double close + #986 Address compiler warnings + #990 #993 Version info bumped from 11:1:10 (libexpat*.so.1.10.1) + to 11:2:10 (libexpat*.so.1.10.2); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #982 CI: Start running Perl XML::Parser integration tests + #987 CI: Enforce Clang Static Analyzer clean code + #991 CI: Re-enable warning clang-analyzer-valist.Uninitialized + for clang-tidy + #981 CI: Cover compilation with musl + #983 #984 CI: Cover compilation with 32bit Emscripten + #976 #977 CI: Protect against fuzzer files missing from future + release archives + + Special thanks to: + Berkay Eren Ürün + Matthew Fernandez + and + Perl XML::Parser + +Release 2.7.0 Thu March 13 2025 + Security fixes: + #893 #973 CVE-2024-8176 -- Fix crash from chaining a large number + of entities caused by stack overflow by resolving use of + recursion, for all three uses of entities: + - general entities in character data ("&g1;") + - general entities in attribute values ("") + - parameter entities ("%p1;") + Known impact is (reliable and easy) denial of service: + CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:H/RL:O/RC:C + (Base Score: 7.5, Temporal Score: 7.2) + Please note that a layer of compression around XML can + significantly reduce the minimum attack payload size. + + Other changes: + #935 #937 Autotools: Make generated CMake files look for + libexpat.@SO_MAJOR@.dylib on macOS + #925 Autotools: Sync CMake templates with CMake 3.29 + #945 #962 #966 CMake: Drop support for CMake <3.13 + #942 CMake: Small fuzzing related improvements + #921 docs: Add missing documentation of error code + XML_ERROR_NOT_STARTED that was introduced with 2.6.4 + #941 docs: Document need for C++11 compiler for use from C++ + #959 tests/benchmark: Fix a (harmless) TOCTTOU + #944 Windows: Fix installer target location of file xmlwf.xml + for CMake + #953 Windows: Address warning -Wunknown-warning-option + about -Wno-pedantic-ms-format from LLVM MinGW + #971 Address Cppcheck warnings + #969 #970 Mass-migrate links from http:// to https:// + #947 #958 .. + #974 #975 Document changes since the previous release + #974 #975 Version info bumped from 11:0:10 (libexpat*.so.1.10.0) + to 11:1:10 (libexpat*.so.1.10.1); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #926 tests: Increase robustness + #927 #932 .. + #930 #933 tests: Increase test coverage + #617 #950 .. + #951 #952 .. + #954 #955 .. Fuzzing: Add new fuzzer "xml_lpm_fuzzer" based on + #961 Google's libprotobuf-mutator ("LPM") + #957 Fuzzing|CI: Start producing fuzzing code coverage reports + #936 CI: Pass -q -q for LCOV >=2.1 in coverage.sh + #942 CI: Small fuzzing related improvements + #139 #203 .. + #791 #946 CI: Make GitHub Actions build using MSVC on Windows and + produce 32bit and 64bit Windows binaries + #956 CI: Get off of about-to-be-removed Ubuntu 20.04 + #960 #964 CI: Start uploading to Coverity Scan for static analysis + #972 CI: Stop loading DTD from the internet to address flaky CI + #971 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Alexander Gieringer + Berkay Eren Ürün + Hanno Böck + Jann Horn + Mark Brand + Sebastian Andrzej Siewior + Snild Dolkow + Thomas Pröll + Tomas Korbar + valord577 + and + Google Project Zero + Linutronix + Red Hat + Siemens + Release 2.6.4 Wed November 6 2024 Security fixes: #915 CVE-2024-50602 -- Fix crash within function XML_ResumeParser @@ -46,6 +163,8 @@ Release 2.6.4 Wed November 6 2024 #904 tests: Resolve duplicate handler #317 #918 tests: Improve tests on doctype closing (ex CVE-2019-15903) #914 Fix signedness of format strings + #915 For use from C++, expat.h started requiring C++11 due to + use of C99 features #919 #920 Version info bumped from 10:3:9 (libexpat*.so.1.9.3) to 11:0:10 (libexpat*.so.1.10.0); see https://verbump.de/ for what these numbers do diff --git a/contrib/expat/Makefile.am b/contrib/expat/Makefile.am index 7d8e17c2cf86..c20531a8d6c6 100644 --- a/contrib/expat/Makefile.am +++ b/contrib/expat/Makefile.am @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2023 Sebastian Pipping +# Copyright (c) 2017-2025 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -96,6 +96,8 @@ EXTRA_DIST = \ conftools/expat.m4 \ conftools/get-version.sh \ \ + fuzz/xml_lpm_fuzzer.cpp \ + fuzz/xml_lpm_fuzzer.proto \ fuzz/xml_parsebuffer_fuzzer.c \ fuzz/xml_parse_fuzzer.c \ \ diff --git a/contrib/expat/Makefile.in b/contrib/expat/Makefile.in index c0fcb5dd05d1..069ec4047eea 100644 --- a/contrib/expat/Makefile.in +++ b/contrib/expat/Makefile.in @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2023 Sebastian Pipping +# Copyright (c) 2017-2025 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -494,6 +494,8 @@ EXTRA_DIST = \ conftools/expat.m4 \ conftools/get-version.sh \ \ + fuzz/xml_lpm_fuzzer.cpp \ + fuzz/xml_lpm_fuzzer.proto \ fuzz/xml_parsebuffer_fuzzer.c \ fuzz/xml_parse_fuzzer.c \ \ diff --git a/contrib/expat/README.md b/contrib/expat/README.md index 23d26dad2b92..77c6bf27d307 100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@ -3,6 +3,7 @@ [![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) [![Downloads SourceForge](https://img.shields.io/sourceforge/dt/expat?label=Downloads%20SourceForge)](https://sourceforge.net/projects/expat/files/) [![Downloads GitHub](https://img.shields.io/github/downloads/libexpat/libexpat/total?label=Downloads%20GitHub)](https://github.com/libexpat/libexpat/releases) +[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10205/badge)](https://www.bestpractices.dev/projects/10205) > [!CAUTION] > @@ -11,7 +12,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.6.4 +# Expat, Release 2.7.1 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by @@ -22,9 +23,9 @@ are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind of structures for which you may register handlers. -Expat supports the following compilers: +Expat supports the following C99 compilers: -- GNU GCC >=4.5 +- GNU GCC >=4.5 (for use from C) or GNU GCC >=4.8.1 (for use from C++) - LLVM Clang >=3.5 - Microsoft Visual Studio >=16.0/2019 (rolling `${today} minus 5 years`) @@ -52,7 +53,7 @@ This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake Notice the *uppercase* `EXPAT` in the following example: ```cmake -cmake_minimum_required(VERSION 3.0) # or 3.10, see below +cmake_minimum_required(VERSION 3.10) project(hello VERSION 1.0.0) @@ -62,12 +63,7 @@ add_executable(hello hello.c ) -# a) for CMake >=3.10 (see CMake's FindEXPAT docs) target_link_libraries(hello PUBLIC EXPAT::EXPAT) - -# b) for CMake >=3.0 -target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS}) -target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES}) ``` ### b) `find_package` with Config Mode @@ -85,7 +81,7 @@ or Notice the *lowercase* `expat` in the following example: ```cmake -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.10) project(hello VERSION 1.0.0) @@ -295,7 +291,7 @@ EXPAT_ENABLE_INSTALL:BOOL=ON // Use /MT flag (static CRT) when compiling in MSVC EXPAT_MSVC_STATIC_CRT:BOOL=OFF -// Build fuzzers via ossfuzz for the expat library +// Build fuzzers via OSS-Fuzz for the expat library EXPAT_OSSFUZZ_BUILD:BOOL=OFF // Build a shared expat library diff --git a/contrib/expat/configure.ac b/contrib/expat/configure.ac index fffcd125e9c4..0c88b8867019 100644 --- a/contrib/expat/configure.ac +++ b/contrib/expat/configure.ac @@ -11,7 +11,7 @@ dnl Copyright (c) 2000 Clark Cooper dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. dnl Copyright (c) 2001-2003 Greg Stein dnl Copyright (c) 2006-2012 Karl Waclawek -dnl Copyright (c) 2016-2024 Sebastian Pipping +dnl Copyright (c) 2016-2025 Sebastian Pipping dnl Copyright (c) 2017 S. P. Zeidler dnl Copyright (c) 2017 Stephen Groat dnl Copyright (c) 2017-2020 Joe Orton @@ -85,7 +85,7 @@ dnl If the API changes incompatibly set LIBAGE back to 0 dnl LIBCURRENT=11 # sync -LIBREVISION=0 # with +LIBREVISION=2 # with LIBAGE=10 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) diff --git a/contrib/expat/doc/reference.html b/contrib/expat/doc/reference.html index c2ae9bb71431..2b3bd39580a9 100644 --- a/contrib/expat/doc/reference.html +++ b/contrib/expat/doc/reference.html @@ -14,7 +14,7 @@ Copyright (c) 2000 Clark Cooper Copyright (c) 2000-2004 Fred L. Drake, Jr. Copyright (c) 2002-2012 Karl Waclawek - Copyright (c) 2017-2024 Sebastian Pipping + Copyright (c) 2017-2025 Sebastian Pipping Copyright (c) 2017 Jakub Wilk Copyright (c) 2021 Tomas Korbar Copyright (c) 2021 Nicolas Cavallari @@ -52,7 +52,7 @@

The Expat XML Parser - Release 2.6.4 + Release 2.7.1

@@ -1267,6 +1267,11 @@ call-backs, except when parsing an external parameter entity and XML_STATUS_ERROR otherwise. The possible error codes are:

+
XML_ERROR_NOT_STARTED
+
+ when stopping or suspending a parser before it has started, + added in Expat 2.6.4. +
XML_ERROR_SUSPENDED
when suspending an already suspended parser.
XML_ERROR_FINISHED
diff --git a/contrib/expat/doc/xmlwf.1 b/contrib/expat/doc/xmlwf.1 index 61b302581ce9..76aa7e30d074 100644 --- a/contrib/expat/doc/xmlwf.1 +++ b/contrib/expat/doc/xmlwf.1 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH XMLWF 1 "November 6, 2024" "" "" +.TH XMLWF 1 "March 27, 2025" "" "" .SH NAME xmlwf \- Determines if an XML document is well-formed .SH SYNOPSIS diff --git a/contrib/expat/doc/xmlwf.xml b/contrib/expat/doc/xmlwf.xml index cf6d984af463..17e9cf51c191 100644 --- a/contrib/expat/doc/xmlwf.xml +++ b/contrib/expat/doc/xmlwf.xml @@ -9,7 +9,7 @@ Copyright (c) 2001 Scott Bronson Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2009 Karl Waclawek - Copyright (c) 2016-2024 Sebastian Pipping + Copyright (c) 2016-2025 Sebastian Pipping Copyright (c) 2016 Ardo van Rangelrooij Copyright (c) 2017 Rhodri James Copyright (c) 2020 Joe Orton @@ -21,7 +21,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ Scott"> Bronson"> - November 6, 2024"> + March 27, 2025"> 1"> bronson@rinspin.com"> diff --git a/contrib/expat/fuzz/xml_lpm_fuzzer.cpp b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp new file mode 100644 index 000000000000..f52ea7b21e40 --- /dev/null +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp @@ -0,0 +1,464 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2022 Mark Brand + Copyright (c) 2025 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#if defined(NDEBUG) +# undef NDEBUG // because checks below rely on assert(...) +#endif + +#include +#include +#include + +#include "expat.h" +#include "xml_lpm_fuzzer.pb.h" +#include "src/libfuzzer/libfuzzer_macro.h" + +static const char *g_encoding = nullptr; +static const char *g_external_entity = nullptr; +static size_t g_external_entity_size = 0; + +void +SetEncoding(const xml_lpm_fuzzer::Encoding &e) { + switch (e) { + case xml_lpm_fuzzer::Encoding::UTF8: + g_encoding = "UTF-8"; + break; + + case xml_lpm_fuzzer::Encoding::UTF16: + g_encoding = "UTF-16"; + break; + + case xml_lpm_fuzzer::Encoding::ISO88591: + g_encoding = "ISO-8859-1"; + break; + + case xml_lpm_fuzzer::Encoding::ASCII: + g_encoding = "US-ASCII"; + break; + + case xml_lpm_fuzzer::Encoding::NONE: + g_encoding = NULL; + break; + + default: + g_encoding = "UNKNOWN"; + break; + } +} + +static int g_allocation_count = 0; +static std::vector g_fail_allocations = {}; + +void * +MallocHook(size_t size) { + g_allocation_count += 1; + for (auto index : g_fail_allocations) { + if (index == g_allocation_count) { + return NULL; + } + } + return malloc(size); +} + +void * +ReallocHook(void *ptr, size_t size) { + g_allocation_count += 1; + for (auto index : g_fail_allocations) { + if (index == g_allocation_count) { + return NULL; + } + } + return realloc(ptr, size); +} + +void +FreeHook(void *ptr) { + free(ptr); +} + +XML_Memory_Handling_Suite memory_handling_suite + = {MallocHook, ReallocHook, FreeHook}; + +void InitializeParser(XML_Parser parser); + +// We want a parse function that supports resumption, so that we can cover the +// suspend/resume code. +enum XML_Status +Parse(XML_Parser parser, const char *input, int input_len, int is_final) { + enum XML_Status status = XML_Parse(parser, input, input_len, is_final); + while (status == XML_STATUS_SUSPENDED) { + status = XML_ResumeParser(parser); + } + return status; +} + +// When the fuzzer is compiled with instrumentation such as ASan, then the +// accesses in TouchString will fault if they access invalid memory (ie. detect +// either a use-after-free or buffer-overflow). By calling TouchString in each +// of the callbacks, we can check that the arguments meet the API specifications +// in terms of length/null-termination. no_optimize is used to ensure that the +// compiler has to emit actual memory reads, instead of removing them. +static volatile size_t no_optimize = 0; +static void +TouchString(const XML_Char *ptr, int len = -1) { + if (! ptr) { + return; + } + + if (len == -1) { + for (XML_Char value = *ptr++; value; value = *ptr++) { + no_optimize += value; + } + } else { + for (int i = 0; i < len; ++i) { + no_optimize += ptr[i]; + } + } +} + +static void +TouchNodeAndRecurse(XML_Content *content) { + switch (content->type) { + case XML_CTYPE_EMPTY: + case XML_CTYPE_ANY: + assert(content->quant == XML_CQUANT_NONE); + assert(content->name == NULL); + assert(content->numchildren == 0); + assert(content->children == NULL); + break; + + case XML_CTYPE_MIXED: + assert(content->quant == XML_CQUANT_NONE + || content->quant == XML_CQUANT_REP); + assert(content->name == NULL); + for (unsigned int i = 0; i < content->numchildren; ++i) { + assert(content->children[i].type == XML_CTYPE_NAME); + assert(content->children[i].quant == XML_CQUANT_NONE); + assert(content->children[i].numchildren == 0); + assert(content->children[i].children == NULL); + TouchString(content->children[i].name); + } + break; + + case XML_CTYPE_NAME: + assert((content->quant == XML_CQUANT_NONE) + || (content->quant == XML_CQUANT_OPT) + || (content->quant == XML_CQUANT_REP) + || (content->quant == XML_CQUANT_PLUS)); + assert(content->numchildren == 0); + assert(content->children == NULL); + TouchString(content->name); + break; + + case XML_CTYPE_CHOICE: + case XML_CTYPE_SEQ: + assert((content->quant == XML_CQUANT_NONE) + || (content->quant == XML_CQUANT_OPT) + || (content->quant == XML_CQUANT_REP) + || (content->quant == XML_CQUANT_PLUS)); + assert(content->name == NULL); + for (unsigned int i = 0; i < content->numchildren; ++i) { + TouchNodeAndRecurse(&content->children[i]); + } + break; + + default: + assert(false); + } +} + +static void XMLCALL +ElementDeclHandler(void *userData, const XML_Char *name, XML_Content *model) { + TouchString(name); + TouchNodeAndRecurse(model); + XML_FreeContentModel((XML_Parser)userData, model); +} + +static void XMLCALL +AttlistDeclHandler(void *userData, const XML_Char *elname, + const XML_Char *attname, const XML_Char *atttype, + const XML_Char *dflt, int isrequired) { + (void)userData; + TouchString(elname); + TouchString(attname); + TouchString(atttype); + TouchString(dflt); + (void)isrequired; +} + +static void XMLCALL +XmlDeclHandler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + (void)userData; + TouchString(version); + TouchString(encoding); + (void)standalone; +} + +static void XMLCALL +StartElementHandler(void *userData, const XML_Char *name, + const XML_Char **atts) { + (void)userData; + TouchString(name); + for (size_t i = 0; atts[i] != NULL; ++i) { + TouchString(atts[i]); + } +} + +static void XMLCALL +EndElementHandler(void *userData, const XML_Char *name) { + (void)userData; + TouchString(name); +} + +static void XMLCALL +CharacterDataHandler(void *userData, const XML_Char *s, int len) { + (void)userData; + TouchString(s, len); +} + +static void XMLCALL +ProcessingInstructionHandler(void *userData, const XML_Char *target, + const XML_Char *data) { + (void)userData; + TouchString(target); + TouchString(data); +} + +static void XMLCALL +CommentHandler(void *userData, const XML_Char *data) { + TouchString(data); + // Use the comment handler to trigger parser suspend, so that we can get + // coverage of that code. + XML_StopParser((XML_Parser)userData, XML_TRUE); +} + +static void XMLCALL +StartCdataSectionHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +EndCdataSectionHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +DefaultHandler(void *userData, const XML_Char *s, int len) { + (void)userData; + TouchString(s, len); +} + +static void XMLCALL +StartDoctypeDeclHandler(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *pubid, + int has_internal_subset) { + (void)userData; + TouchString(doctypeName); + TouchString(sysid); + TouchString(pubid); + (void)has_internal_subset; +} + +static void XMLCALL +EndDoctypeDeclHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +EntityDeclHandler(void *userData, const XML_Char *entityName, + int is_parameter_entity, const XML_Char *value, + int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + (void)userData; + TouchString(entityName); + (void)is_parameter_entity; + TouchString(value, value_length); + TouchString(base); + TouchString(systemId); + TouchString(publicId); + TouchString(notationName); +} + +static void XMLCALL +NotationDeclHandler(void *userData, const XML_Char *notationName, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + (void)userData; + TouchString(notationName); + TouchString(base); + TouchString(systemId); + TouchString(publicId); +} + +static void XMLCALL +StartNamespaceDeclHandler(void *userData, const XML_Char *prefix, + const XML_Char *uri) { + (void)userData; + TouchString(prefix); + TouchString(uri); +} + +static void XMLCALL +EndNamespaceDeclHandler(void *userData, const XML_Char *prefix) { + (void)userData; + TouchString(prefix); +} + +static int XMLCALL +NotStandaloneHandler(void *userData) { + (void)userData; + return XML_STATUS_OK; +} + +static int XMLCALL +ExternalEntityRefHandler(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + int rc = XML_STATUS_ERROR; + TouchString(context); + TouchString(base); + TouchString(systemId); + TouchString(publicId); + + if (g_external_entity) { + XML_Parser ext_parser + = XML_ExternalEntityParserCreate(parser, context, g_encoding); + rc = Parse(ext_parser, g_external_entity, g_external_entity_size, 1); + XML_ParserFree(ext_parser); + } + + return rc; +} + +static void XMLCALL +SkippedEntityHandler(void *userData, const XML_Char *entityName, + int is_parameter_entity) { + (void)userData; + TouchString(entityName); + (void)is_parameter_entity; +} + +static int XMLCALL +UnknownEncodingHandler(void *encodingHandlerData, const XML_Char *name, + XML_Encoding *info) { + (void)encodingHandlerData; + TouchString(name); + (void)info; + return XML_STATUS_ERROR; +} + +void +InitializeParser(XML_Parser parser) { + XML_SetUserData(parser, (void *)parser); + XML_SetHashSalt(parser, 0x41414141); + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + + XML_SetElementDeclHandler(parser, ElementDeclHandler); + XML_SetAttlistDeclHandler(parser, AttlistDeclHandler); + XML_SetXmlDeclHandler(parser, XmlDeclHandler); + XML_SetElementHandler(parser, StartElementHandler, EndElementHandler); + XML_SetCharacterDataHandler(parser, CharacterDataHandler); + XML_SetProcessingInstructionHandler(parser, ProcessingInstructionHandler); + XML_SetCommentHandler(parser, CommentHandler); + XML_SetCdataSectionHandler(parser, StartCdataSectionHandler, + EndCdataSectionHandler); + // XML_SetDefaultHandler disables entity expansion + XML_SetDefaultHandlerExpand(parser, DefaultHandler); + XML_SetDoctypeDeclHandler(parser, StartDoctypeDeclHandler, + EndDoctypeDeclHandler); + // Note: This is mutually exclusive with XML_SetUnparsedEntityDeclHandler, + // and there isn't any significant code change between the two. + XML_SetEntityDeclHandler(parser, EntityDeclHandler); + XML_SetNotationDeclHandler(parser, NotationDeclHandler); + XML_SetNamespaceDeclHandler(parser, StartNamespaceDeclHandler, + EndNamespaceDeclHandler); + XML_SetNotStandaloneHandler(parser, NotStandaloneHandler); + XML_SetExternalEntityRefHandler(parser, ExternalEntityRefHandler); + XML_SetSkippedEntityHandler(parser, SkippedEntityHandler); + XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, (void *)parser); +} + +DEFINE_TEXT_PROTO_FUZZER(const xml_lpm_fuzzer::Testcase &testcase) { + g_external_entity = nullptr; + + if (! testcase.actions_size()) { + return; + } + + g_allocation_count = 0; + g_fail_allocations.clear(); + for (int i = 0; i < testcase.fail_allocations_size(); ++i) { + g_fail_allocations.push_back(testcase.fail_allocations(i)); + } + + SetEncoding(testcase.encoding()); + XML_Parser parser + = XML_ParserCreate_MM(g_encoding, &memory_handling_suite, "|"); + InitializeParser(parser); + + for (int i = 0; i < testcase.actions_size(); ++i) { + const auto &action = testcase.actions(i); + switch (action.action_case()) { + case xml_lpm_fuzzer::Action::kChunk: + if (XML_STATUS_ERROR + == Parse(parser, action.chunk().data(), action.chunk().size(), 0)) { + // Force a reset after parse error. + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + } + break; + + case xml_lpm_fuzzer::Action::kLastChunk: + Parse(parser, action.last_chunk().data(), action.last_chunk().size(), 1); + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + break; + + case xml_lpm_fuzzer::Action::kReset: + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + break; + + case xml_lpm_fuzzer::Action::kExternalEntity: + g_external_entity = action.external_entity().data(); + g_external_entity_size = action.external_entity().size(); + break; + + default: + break; + } + } + + XML_ParserFree(parser); +} diff --git a/contrib/expat/fuzz/xml_lpm_fuzzer.proto b/contrib/expat/fuzz/xml_lpm_fuzzer.proto new file mode 100644 index 000000000000..ddc4e958b919 --- /dev/null +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.proto @@ -0,0 +1,58 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2022 Mark Brand + Copyright (c) 2025 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +syntax = "proto2"; +package xml_lpm_fuzzer; + +enum Encoding { + UTF8 = 0; + UTF16 = 1; + ISO88591 = 2; + ASCII = 3; + UNKNOWN = 4; + NONE = 5; +} + +message Action { + oneof action { + string chunk = 1; + string last_chunk = 2; + bool reset = 3; + string external_entity = 4; + } +} + +message Testcase { + required Encoding encoding = 1; + repeated Action actions = 2; + repeated int32 fail_allocations = 3; +} diff --git a/contrib/expat/fuzz/xml_parse_fuzzer.c b/contrib/expat/fuzz/xml_parse_fuzzer.c index a7e8414ce355..6a1affe2b1f6 100644 --- a/contrib/expat/fuzz/xml_parse_fuzzer.c +++ b/contrib/expat/fuzz/xml_parse_fuzzer.c @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c b/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c index 0327aa9f952e..cfc4af202851 100644 --- a/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c +++ b/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/contrib/expat/lib/expat.h b/contrib/expat/lib/expat.h index 523b37d8d578..610e1ddc0e94 100644 *** 2251 LINES SKIPPED *** From nobody Sat Apr 5 03:19:42 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZV11C10hBz5ssg9; Sat, 05 Apr 2025 03:19: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 4ZV11C0Y4Dz3LqH; Sat, 05 Apr 2025 03:19:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743823183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvEB8FdrliFExvM0a9h/+HILk1m0xpW6dZVlLcWh3sE=; b=PhyVXO9x4Y6+dk1WYxpcHmlxcP2doNYidaGmogNz4YIDQwykyxWUBhdTc9RegLkr+oGMDD rdOpYWQVXZAfXdMXk6CC7u0noij4sZ2xmj8ntKaep9Z7Hvn0+52GwOH+DwfMWkO6LH8/4D MpSMMWs7bOiC3XHPuDpITxZ+23LaiDkUkrCX2K+uuYV11Fv2MtOO89mH5YQf6Valoqth+C uLbMnMN13njj+ZuSgBYYYJ3yAaWK4eAMIUl0QZWxygc/afEb1NFiDjcLLJE9XNY7LmtxUh BbeKe0Bu2kpEnpDPCM0yCmNLn2/DyqXjc+m6qqeCM3EAE83AweuUve/0Im6knQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743823183; a=rsa-sha256; cv=none; b=HBHWIdW46E2XD0DVvNDC1+8am4n7IXqCbB5U42Io08Ysn9aYCLZyntJNXrjMPFnpJbX+fK aZVqpm0gcCJvxRRHuchZxqRV2Pg5z/6N1EVUbUBrJo2hc9T+P7Hhod2TI8y5H0EXK2yO1X PAuf8ArNrlsgvo/XyL/3IBd4C+lN94MjrwOf5znaYrrFOhxYD0TEJ8q9SzE8P5fhFKxTkm 4kuigSoZW2QDudO4z4szFgD9Tqh6mgQvhrNwOPFLyV3k9T7fsVtsfQswKMpOKA7oBNK0U8 yavRPXg6YC30PvJCWCvty4C7utAnglFSLUAPID+wtrpwAIl4BmXKVIr1+NGcSQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743823183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jvEB8FdrliFExvM0a9h/+HILk1m0xpW6dZVlLcWh3sE=; b=ZvHnIxVV6Uj8BMlm7t6t5hjmV8N7+2d98l5cs7ahK6ElogSVw63kSDlai1S8Q1iRqGZL+S lwuxU+q6Ki9NbN3zT0Qq+sQ99hZpots0naMYsav7EX29txNdYjZE7llTWATcPaVQGCRYNf gi/j5pcD9PQA3iFSGjPd1JAFhV2agC5kOXwWr/izQznyMuG3pK+9mbCA6frkYHXoJU4z1r JIlTzp86h8gUlAXK8Dg8OFcymy+NvSKX+DGpioInz6ZFOIeJId44PaxYeEOS78WfFzx0WF XxOQUPQB+lV/h5esd9zgVabRpb2dUsRp9TR50aiWKzY/iDAYWKi9WN02cp1oNQ== 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 4ZV11B73sSz1DDs; Sat, 05 Apr 2025 03:19: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 5353JgPW095526; Sat, 5 Apr 2025 03:19:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5353Jgi6095523; Sat, 5 Apr 2025 03:19:42 GMT (envelope-from git) Date: Sat, 5 Apr 2025 03:19:42 GMT Message-Id: <202504050319.5353Jgi6095523@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 41b768ae1970 - stable/13 - contrib/expat: import expat 2.7.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 41b768ae1970ed484abaaea401453c3902df93c2 Auto-Submitted: auto-generated The branch stable/13 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=41b768ae1970ed484abaaea401453c3902df93c2 commit 41b768ae1970ed484abaaea401453c3902df93c2 Author: Philip Paeps AuthorDate: 2025-04-02 08:56:02 +0000 Commit: Philip Paeps CommitDate: 2025-04-05 03:19:08 +0000 contrib/expat: import expat 2.7.1 Changes: https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes https://github.com/libexpat/libexpat/blob/R_2_7_0/expat/Changes Security: CVE-2024-8176 (cherry picked from commit fe9278888fd4414abe2d922e469cf608005f4c65) --- contrib/expat/COPYING | 2 +- contrib/expat/Changes | 123 +++++- contrib/expat/Makefile.am | 4 +- contrib/expat/Makefile.in | 4 +- contrib/expat/README.md | 18 +- contrib/expat/configure.ac | 4 +- contrib/expat/doc/reference.html | 9 +- contrib/expat/doc/xmlwf.1 | 2 +- contrib/expat/doc/xmlwf.xml | 4 +- contrib/expat/fuzz/xml_lpm_fuzzer.cpp | 464 ++++++++++++++++++++++ contrib/expat/fuzz/xml_lpm_fuzzer.proto | 58 +++ contrib/expat/fuzz/xml_parse_fuzzer.c | 2 +- contrib/expat/fuzz/xml_parsebuffer_fuzzer.c | 2 +- contrib/expat/lib/expat.h | 6 +- contrib/expat/lib/internal.h | 5 +- contrib/expat/lib/xmlparse.c | 586 ++++++++++++++++++++-------- contrib/expat/tests/acc_tests.c | 5 +- contrib/expat/tests/alloc_tests.c | 27 ++ contrib/expat/tests/basic_tests.c | 331 +++++++++++++++- contrib/expat/tests/benchmark/benchmark.c | 57 ++- contrib/expat/tests/common.c | 33 +- contrib/expat/tests/common.h | 4 +- contrib/expat/tests/handlers.c | 23 ++ contrib/expat/tests/handlers.h | 9 + contrib/expat/tests/minicheck.h | 6 +- contrib/expat/tests/misc_tests.c | 247 ++++++++++-- contrib/expat/tests/xmltest.sh | 5 +- contrib/expat/xmlwf/readfilemap.c | 3 +- 28 files changed, 1779 insertions(+), 264 deletions(-) diff --git a/contrib/expat/COPYING b/contrib/expat/COPYING index ce9e5939291e..c6d184a8aae8 100644 --- a/contrib/expat/COPYING +++ b/contrib/expat/COPYING @@ -1,5 +1,5 @@ Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper -Copyright (c) 2001-2022 Expat maintainers +Copyright (c) 2001-2025 Expat maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/contrib/expat/Changes b/contrib/expat/Changes index aa19f70ae219..9d6c64b6a460 100644 --- a/contrib/expat/Changes +++ b/contrib/expat/Changes @@ -11,16 +11,23 @@ !! The following topics need *additional skilled C developers* to progress !! !! in a timely manner or at all (loosely ordered by descending priority): !! !! !! -!! - fixing a complex non-public security issue, !! !! - teaming up on researching and fixing future security reports and !! !! ClusterFuzz findings with few-days-max response times in communication !! !! in order to (1) have a sound fix ready before the end of a 90 days !! !! grace period and (2) in a sustainable manner, !! +!! - helping CPython Expat bindings with supporting Expat's billion laughs !! +!! attack protection API (https://github.com/python/cpython/issues/90949): !! +!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! +!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! +!! - helping Perl's XML::Parser Expat bindings with supporting Expat's !! +!! security API (https://github.com/cpan-authors/XML-Parser/issues/102): !! +!! - XML_SetBillionLaughsAttackProtectionActivationThreshold !! +!! - XML_SetBillionLaughsAttackProtectionMaximumAmplification !! +!! - XML_SetReparseDeferralEnabled !! !! - implementing and auto-testing XML 1.0r5 support !! !! (needs discussion before pull requests), !! !! - smart ideas on fixing the Autotools CMake files generation issue !! !! without breaking CI (needs discussion before pull requests), !! -!! - the Windows binaries topic (needs requirements engineering first), !! !! - pushing migration from `int` to `size_t` further !! !! including edge-cases test coverage (needs discussion before anything). !! !! !! @@ -30,6 +37,116 @@ !! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Release 2.7.1 Thu March 27 2025 + Bug fixes: + #980 #989 Restore event pointer behavior from Expat 2.6.4 + (that the fix to CVE-2024-8176 changed in 2.7.0); + affected API functions are: + - XML_GetCurrentByteCount + - XML_GetCurrentByteIndex + - XML_GetCurrentColumnNumber + - XML_GetCurrentLineNumber + - XML_GetInputContext + + Other changes: + #976 #977 Autotools: Integrate files "fuzz/xml_lpm_fuzzer.{cpp,proto}" + with Automake that were missing from 2.7.0 release tarballs + #983 #984 Fix printf format specifiers for 32bit Emscripten + #992 docs: Promote OpenSSF Best Practices self-certification + #978 tests/benchmark: Resolve mistaken double close + #986 Address compiler warnings + #990 #993 Version info bumped from 11:1:10 (libexpat*.so.1.10.1) + to 11:2:10 (libexpat*.so.1.10.2); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #982 CI: Start running Perl XML::Parser integration tests + #987 CI: Enforce Clang Static Analyzer clean code + #991 CI: Re-enable warning clang-analyzer-valist.Uninitialized + for clang-tidy + #981 CI: Cover compilation with musl + #983 #984 CI: Cover compilation with 32bit Emscripten + #976 #977 CI: Protect against fuzzer files missing from future + release archives + + Special thanks to: + Berkay Eren Ürün + Matthew Fernandez + and + Perl XML::Parser + +Release 2.7.0 Thu March 13 2025 + Security fixes: + #893 #973 CVE-2024-8176 -- Fix crash from chaining a large number + of entities caused by stack overflow by resolving use of + recursion, for all three uses of entities: + - general entities in character data ("&g1;") + - general entities in attribute values ("") + - parameter entities ("%p1;") + Known impact is (reliable and easy) denial of service: + CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:H/RL:O/RC:C + (Base Score: 7.5, Temporal Score: 7.2) + Please note that a layer of compression around XML can + significantly reduce the minimum attack payload size. + + Other changes: + #935 #937 Autotools: Make generated CMake files look for + libexpat.@SO_MAJOR@.dylib on macOS + #925 Autotools: Sync CMake templates with CMake 3.29 + #945 #962 #966 CMake: Drop support for CMake <3.13 + #942 CMake: Small fuzzing related improvements + #921 docs: Add missing documentation of error code + XML_ERROR_NOT_STARTED that was introduced with 2.6.4 + #941 docs: Document need for C++11 compiler for use from C++ + #959 tests/benchmark: Fix a (harmless) TOCTTOU + #944 Windows: Fix installer target location of file xmlwf.xml + for CMake + #953 Windows: Address warning -Wunknown-warning-option + about -Wno-pedantic-ms-format from LLVM MinGW + #971 Address Cppcheck warnings + #969 #970 Mass-migrate links from http:// to https:// + #947 #958 .. + #974 #975 Document changes since the previous release + #974 #975 Version info bumped from 11:0:10 (libexpat*.so.1.10.0) + to 11:1:10 (libexpat*.so.1.10.1); see https://verbump.de/ + for what these numbers do + + Infrastructure: + #926 tests: Increase robustness + #927 #932 .. + #930 #933 tests: Increase test coverage + #617 #950 .. + #951 #952 .. + #954 #955 .. Fuzzing: Add new fuzzer "xml_lpm_fuzzer" based on + #961 Google's libprotobuf-mutator ("LPM") + #957 Fuzzing|CI: Start producing fuzzing code coverage reports + #936 CI: Pass -q -q for LCOV >=2.1 in coverage.sh + #942 CI: Small fuzzing related improvements + #139 #203 .. + #791 #946 CI: Make GitHub Actions build using MSVC on Windows and + produce 32bit and 64bit Windows binaries + #956 CI: Get off of about-to-be-removed Ubuntu 20.04 + #960 #964 CI: Start uploading to Coverity Scan for static analysis + #972 CI: Stop loading DTD from the internet to address flaky CI + #971 CI: Adapt to breaking changes in Cppcheck + + Special thanks to: + Alexander Gieringer + Berkay Eren Ürün + Hanno Böck + Jann Horn + Mark Brand + Sebastian Andrzej Siewior + Snild Dolkow + Thomas Pröll + Tomas Korbar + valord577 + and + Google Project Zero + Linutronix + Red Hat + Siemens + Release 2.6.4 Wed November 6 2024 Security fixes: #915 CVE-2024-50602 -- Fix crash within function XML_ResumeParser @@ -46,6 +163,8 @@ Release 2.6.4 Wed November 6 2024 #904 tests: Resolve duplicate handler #317 #918 tests: Improve tests on doctype closing (ex CVE-2019-15903) #914 Fix signedness of format strings + #915 For use from C++, expat.h started requiring C++11 due to + use of C99 features #919 #920 Version info bumped from 10:3:9 (libexpat*.so.1.9.3) to 11:0:10 (libexpat*.so.1.10.0); see https://verbump.de/ for what these numbers do diff --git a/contrib/expat/Makefile.am b/contrib/expat/Makefile.am index 7d8e17c2cf86..c20531a8d6c6 100644 --- a/contrib/expat/Makefile.am +++ b/contrib/expat/Makefile.am @@ -6,7 +6,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2023 Sebastian Pipping +# Copyright (c) 2017-2025 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -96,6 +96,8 @@ EXTRA_DIST = \ conftools/expat.m4 \ conftools/get-version.sh \ \ + fuzz/xml_lpm_fuzzer.cpp \ + fuzz/xml_lpm_fuzzer.proto \ fuzz/xml_parsebuffer_fuzzer.c \ fuzz/xml_parse_fuzzer.c \ \ diff --git a/contrib/expat/Makefile.in b/contrib/expat/Makefile.in index c0fcb5dd05d1..069ec4047eea 100644 --- a/contrib/expat/Makefile.in +++ b/contrib/expat/Makefile.in @@ -22,7 +22,7 @@ # \___/_/\_\ .__/ \__,_|\__| # |_| XML parser # -# Copyright (c) 2017-2023 Sebastian Pipping +# Copyright (c) 2017-2025 Sebastian Pipping # Copyright (c) 2018 KangLin # Copyright (c) 2022 Johnny Jazeix # Copyright (c) 2023 Sony Corporation / Snild Dolkow @@ -494,6 +494,8 @@ EXTRA_DIST = \ conftools/expat.m4 \ conftools/get-version.sh \ \ + fuzz/xml_lpm_fuzzer.cpp \ + fuzz/xml_lpm_fuzzer.proto \ fuzz/xml_parsebuffer_fuzzer.c \ fuzz/xml_parse_fuzzer.c \ \ diff --git a/contrib/expat/README.md b/contrib/expat/README.md index 23d26dad2b92..77c6bf27d307 100644 --- a/contrib/expat/README.md +++ b/contrib/expat/README.md @@ -3,6 +3,7 @@ [![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) [![Downloads SourceForge](https://img.shields.io/sourceforge/dt/expat?label=Downloads%20SourceForge)](https://sourceforge.net/projects/expat/files/) [![Downloads GitHub](https://img.shields.io/github/downloads/libexpat/libexpat/total?label=Downloads%20GitHub)](https://github.com/libexpat/libexpat/releases) +[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10205/badge)](https://www.bestpractices.dev/projects/10205) > [!CAUTION] > @@ -11,7 +12,7 @@ > at the top of the `Changes` file. -# Expat, Release 2.6.4 +# Expat, Release 2.7.1 This is Expat, a C99 library for parsing [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by @@ -22,9 +23,9 @@ are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind of structures for which you may register handlers. -Expat supports the following compilers: +Expat supports the following C99 compilers: -- GNU GCC >=4.5 +- GNU GCC >=4.5 (for use from C) or GNU GCC >=4.8.1 (for use from C++) - LLVM Clang >=3.5 - Microsoft Visual Studio >=16.0/2019 (rolling `${today} minus 5 years`) @@ -52,7 +53,7 @@ This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake Notice the *uppercase* `EXPAT` in the following example: ```cmake -cmake_minimum_required(VERSION 3.0) # or 3.10, see below +cmake_minimum_required(VERSION 3.10) project(hello VERSION 1.0.0) @@ -62,12 +63,7 @@ add_executable(hello hello.c ) -# a) for CMake >=3.10 (see CMake's FindEXPAT docs) target_link_libraries(hello PUBLIC EXPAT::EXPAT) - -# b) for CMake >=3.0 -target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS}) -target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES}) ``` ### b) `find_package` with Config Mode @@ -85,7 +81,7 @@ or Notice the *lowercase* `expat` in the following example: ```cmake -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.10) project(hello VERSION 1.0.0) @@ -295,7 +291,7 @@ EXPAT_ENABLE_INSTALL:BOOL=ON // Use /MT flag (static CRT) when compiling in MSVC EXPAT_MSVC_STATIC_CRT:BOOL=OFF -// Build fuzzers via ossfuzz for the expat library +// Build fuzzers via OSS-Fuzz for the expat library EXPAT_OSSFUZZ_BUILD:BOOL=OFF // Build a shared expat library diff --git a/contrib/expat/configure.ac b/contrib/expat/configure.ac index fffcd125e9c4..0c88b8867019 100644 --- a/contrib/expat/configure.ac +++ b/contrib/expat/configure.ac @@ -11,7 +11,7 @@ dnl Copyright (c) 2000 Clark Cooper dnl Copyright (c) 2000-2005 Fred L. Drake, Jr. dnl Copyright (c) 2001-2003 Greg Stein dnl Copyright (c) 2006-2012 Karl Waclawek -dnl Copyright (c) 2016-2024 Sebastian Pipping +dnl Copyright (c) 2016-2025 Sebastian Pipping dnl Copyright (c) 2017 S. P. Zeidler dnl Copyright (c) 2017 Stephen Groat dnl Copyright (c) 2017-2020 Joe Orton @@ -85,7 +85,7 @@ dnl If the API changes incompatibly set LIBAGE back to 0 dnl LIBCURRENT=11 # sync -LIBREVISION=0 # with +LIBREVISION=2 # with LIBAGE=10 # CMakeLists.txt! AC_CONFIG_HEADERS([expat_config.h]) diff --git a/contrib/expat/doc/reference.html b/contrib/expat/doc/reference.html index c2ae9bb71431..2b3bd39580a9 100644 --- a/contrib/expat/doc/reference.html +++ b/contrib/expat/doc/reference.html @@ -14,7 +14,7 @@ Copyright (c) 2000 Clark Cooper Copyright (c) 2000-2004 Fred L. Drake, Jr. Copyright (c) 2002-2012 Karl Waclawek - Copyright (c) 2017-2024 Sebastian Pipping + Copyright (c) 2017-2025 Sebastian Pipping Copyright (c) 2017 Jakub Wilk Copyright (c) 2021 Tomas Korbar Copyright (c) 2021 Nicolas Cavallari @@ -52,7 +52,7 @@

The Expat XML Parser - Release 2.6.4 + Release 2.7.1

@@ -1267,6 +1267,11 @@ call-backs, except when parsing an external parameter entity and XML_STATUS_ERROR otherwise. The possible error codes are:

+
XML_ERROR_NOT_STARTED
+
+ when stopping or suspending a parser before it has started, + added in Expat 2.6.4. +
XML_ERROR_SUSPENDED
when suspending an already suspended parser.
XML_ERROR_FINISHED
diff --git a/contrib/expat/doc/xmlwf.1 b/contrib/expat/doc/xmlwf.1 index 61b302581ce9..76aa7e30d074 100644 --- a/contrib/expat/doc/xmlwf.1 +++ b/contrib/expat/doc/xmlwf.1 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH XMLWF 1 "November 6, 2024" "" "" +.TH XMLWF 1 "March 27, 2025" "" "" .SH NAME xmlwf \- Determines if an XML document is well-formed .SH SYNOPSIS diff --git a/contrib/expat/doc/xmlwf.xml b/contrib/expat/doc/xmlwf.xml index cf6d984af463..17e9cf51c191 100644 --- a/contrib/expat/doc/xmlwf.xml +++ b/contrib/expat/doc/xmlwf.xml @@ -9,7 +9,7 @@ Copyright (c) 2001 Scott Bronson Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2009 Karl Waclawek - Copyright (c) 2016-2024 Sebastian Pipping + Copyright (c) 2016-2025 Sebastian Pipping Copyright (c) 2016 Ardo van Rangelrooij Copyright (c) 2017 Rhodri James Copyright (c) 2020 Joe Orton @@ -21,7 +21,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ Scott"> Bronson"> - November 6, 2024"> + March 27, 2025"> 1"> bronson@rinspin.com"> diff --git a/contrib/expat/fuzz/xml_lpm_fuzzer.cpp b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp new file mode 100644 index 000000000000..f52ea7b21e40 --- /dev/null +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.cpp @@ -0,0 +1,464 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2022 Mark Brand + Copyright (c) 2025 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#if defined(NDEBUG) +# undef NDEBUG // because checks below rely on assert(...) +#endif + +#include +#include +#include + +#include "expat.h" +#include "xml_lpm_fuzzer.pb.h" +#include "src/libfuzzer/libfuzzer_macro.h" + +static const char *g_encoding = nullptr; +static const char *g_external_entity = nullptr; +static size_t g_external_entity_size = 0; + +void +SetEncoding(const xml_lpm_fuzzer::Encoding &e) { + switch (e) { + case xml_lpm_fuzzer::Encoding::UTF8: + g_encoding = "UTF-8"; + break; + + case xml_lpm_fuzzer::Encoding::UTF16: + g_encoding = "UTF-16"; + break; + + case xml_lpm_fuzzer::Encoding::ISO88591: + g_encoding = "ISO-8859-1"; + break; + + case xml_lpm_fuzzer::Encoding::ASCII: + g_encoding = "US-ASCII"; + break; + + case xml_lpm_fuzzer::Encoding::NONE: + g_encoding = NULL; + break; + + default: + g_encoding = "UNKNOWN"; + break; + } +} + +static int g_allocation_count = 0; +static std::vector g_fail_allocations = {}; + +void * +MallocHook(size_t size) { + g_allocation_count += 1; + for (auto index : g_fail_allocations) { + if (index == g_allocation_count) { + return NULL; + } + } + return malloc(size); +} + +void * +ReallocHook(void *ptr, size_t size) { + g_allocation_count += 1; + for (auto index : g_fail_allocations) { + if (index == g_allocation_count) { + return NULL; + } + } + return realloc(ptr, size); +} + +void +FreeHook(void *ptr) { + free(ptr); +} + +XML_Memory_Handling_Suite memory_handling_suite + = {MallocHook, ReallocHook, FreeHook}; + +void InitializeParser(XML_Parser parser); + +// We want a parse function that supports resumption, so that we can cover the +// suspend/resume code. +enum XML_Status +Parse(XML_Parser parser, const char *input, int input_len, int is_final) { + enum XML_Status status = XML_Parse(parser, input, input_len, is_final); + while (status == XML_STATUS_SUSPENDED) { + status = XML_ResumeParser(parser); + } + return status; +} + +// When the fuzzer is compiled with instrumentation such as ASan, then the +// accesses in TouchString will fault if they access invalid memory (ie. detect +// either a use-after-free or buffer-overflow). By calling TouchString in each +// of the callbacks, we can check that the arguments meet the API specifications +// in terms of length/null-termination. no_optimize is used to ensure that the +// compiler has to emit actual memory reads, instead of removing them. +static volatile size_t no_optimize = 0; +static void +TouchString(const XML_Char *ptr, int len = -1) { + if (! ptr) { + return; + } + + if (len == -1) { + for (XML_Char value = *ptr++; value; value = *ptr++) { + no_optimize += value; + } + } else { + for (int i = 0; i < len; ++i) { + no_optimize += ptr[i]; + } + } +} + +static void +TouchNodeAndRecurse(XML_Content *content) { + switch (content->type) { + case XML_CTYPE_EMPTY: + case XML_CTYPE_ANY: + assert(content->quant == XML_CQUANT_NONE); + assert(content->name == NULL); + assert(content->numchildren == 0); + assert(content->children == NULL); + break; + + case XML_CTYPE_MIXED: + assert(content->quant == XML_CQUANT_NONE + || content->quant == XML_CQUANT_REP); + assert(content->name == NULL); + for (unsigned int i = 0; i < content->numchildren; ++i) { + assert(content->children[i].type == XML_CTYPE_NAME); + assert(content->children[i].quant == XML_CQUANT_NONE); + assert(content->children[i].numchildren == 0); + assert(content->children[i].children == NULL); + TouchString(content->children[i].name); + } + break; + + case XML_CTYPE_NAME: + assert((content->quant == XML_CQUANT_NONE) + || (content->quant == XML_CQUANT_OPT) + || (content->quant == XML_CQUANT_REP) + || (content->quant == XML_CQUANT_PLUS)); + assert(content->numchildren == 0); + assert(content->children == NULL); + TouchString(content->name); + break; + + case XML_CTYPE_CHOICE: + case XML_CTYPE_SEQ: + assert((content->quant == XML_CQUANT_NONE) + || (content->quant == XML_CQUANT_OPT) + || (content->quant == XML_CQUANT_REP) + || (content->quant == XML_CQUANT_PLUS)); + assert(content->name == NULL); + for (unsigned int i = 0; i < content->numchildren; ++i) { + TouchNodeAndRecurse(&content->children[i]); + } + break; + + default: + assert(false); + } +} + +static void XMLCALL +ElementDeclHandler(void *userData, const XML_Char *name, XML_Content *model) { + TouchString(name); + TouchNodeAndRecurse(model); + XML_FreeContentModel((XML_Parser)userData, model); +} + +static void XMLCALL +AttlistDeclHandler(void *userData, const XML_Char *elname, + const XML_Char *attname, const XML_Char *atttype, + const XML_Char *dflt, int isrequired) { + (void)userData; + TouchString(elname); + TouchString(attname); + TouchString(atttype); + TouchString(dflt); + (void)isrequired; +} + +static void XMLCALL +XmlDeclHandler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + (void)userData; + TouchString(version); + TouchString(encoding); + (void)standalone; +} + +static void XMLCALL +StartElementHandler(void *userData, const XML_Char *name, + const XML_Char **atts) { + (void)userData; + TouchString(name); + for (size_t i = 0; atts[i] != NULL; ++i) { + TouchString(atts[i]); + } +} + +static void XMLCALL +EndElementHandler(void *userData, const XML_Char *name) { + (void)userData; + TouchString(name); +} + +static void XMLCALL +CharacterDataHandler(void *userData, const XML_Char *s, int len) { + (void)userData; + TouchString(s, len); +} + +static void XMLCALL +ProcessingInstructionHandler(void *userData, const XML_Char *target, + const XML_Char *data) { + (void)userData; + TouchString(target); + TouchString(data); +} + +static void XMLCALL +CommentHandler(void *userData, const XML_Char *data) { + TouchString(data); + // Use the comment handler to trigger parser suspend, so that we can get + // coverage of that code. + XML_StopParser((XML_Parser)userData, XML_TRUE); +} + +static void XMLCALL +StartCdataSectionHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +EndCdataSectionHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +DefaultHandler(void *userData, const XML_Char *s, int len) { + (void)userData; + TouchString(s, len); +} + +static void XMLCALL +StartDoctypeDeclHandler(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *pubid, + int has_internal_subset) { + (void)userData; + TouchString(doctypeName); + TouchString(sysid); + TouchString(pubid); + (void)has_internal_subset; +} + +static void XMLCALL +EndDoctypeDeclHandler(void *userData) { + (void)userData; +} + +static void XMLCALL +EntityDeclHandler(void *userData, const XML_Char *entityName, + int is_parameter_entity, const XML_Char *value, + int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + (void)userData; + TouchString(entityName); + (void)is_parameter_entity; + TouchString(value, value_length); + TouchString(base); + TouchString(systemId); + TouchString(publicId); + TouchString(notationName); +} + +static void XMLCALL +NotationDeclHandler(void *userData, const XML_Char *notationName, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + (void)userData; + TouchString(notationName); + TouchString(base); + TouchString(systemId); + TouchString(publicId); +} + +static void XMLCALL +StartNamespaceDeclHandler(void *userData, const XML_Char *prefix, + const XML_Char *uri) { + (void)userData; + TouchString(prefix); + TouchString(uri); +} + +static void XMLCALL +EndNamespaceDeclHandler(void *userData, const XML_Char *prefix) { + (void)userData; + TouchString(prefix); +} + +static int XMLCALL +NotStandaloneHandler(void *userData) { + (void)userData; + return XML_STATUS_OK; +} + +static int XMLCALL +ExternalEntityRefHandler(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + int rc = XML_STATUS_ERROR; + TouchString(context); + TouchString(base); + TouchString(systemId); + TouchString(publicId); + + if (g_external_entity) { + XML_Parser ext_parser + = XML_ExternalEntityParserCreate(parser, context, g_encoding); + rc = Parse(ext_parser, g_external_entity, g_external_entity_size, 1); + XML_ParserFree(ext_parser); + } + + return rc; +} + +static void XMLCALL +SkippedEntityHandler(void *userData, const XML_Char *entityName, + int is_parameter_entity) { + (void)userData; + TouchString(entityName); + (void)is_parameter_entity; +} + +static int XMLCALL +UnknownEncodingHandler(void *encodingHandlerData, const XML_Char *name, + XML_Encoding *info) { + (void)encodingHandlerData; + TouchString(name); + (void)info; + return XML_STATUS_ERROR; +} + +void +InitializeParser(XML_Parser parser) { + XML_SetUserData(parser, (void *)parser); + XML_SetHashSalt(parser, 0x41414141); + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + + XML_SetElementDeclHandler(parser, ElementDeclHandler); + XML_SetAttlistDeclHandler(parser, AttlistDeclHandler); + XML_SetXmlDeclHandler(parser, XmlDeclHandler); + XML_SetElementHandler(parser, StartElementHandler, EndElementHandler); + XML_SetCharacterDataHandler(parser, CharacterDataHandler); + XML_SetProcessingInstructionHandler(parser, ProcessingInstructionHandler); + XML_SetCommentHandler(parser, CommentHandler); + XML_SetCdataSectionHandler(parser, StartCdataSectionHandler, + EndCdataSectionHandler); + // XML_SetDefaultHandler disables entity expansion + XML_SetDefaultHandlerExpand(parser, DefaultHandler); + XML_SetDoctypeDeclHandler(parser, StartDoctypeDeclHandler, + EndDoctypeDeclHandler); + // Note: This is mutually exclusive with XML_SetUnparsedEntityDeclHandler, + // and there isn't any significant code change between the two. + XML_SetEntityDeclHandler(parser, EntityDeclHandler); + XML_SetNotationDeclHandler(parser, NotationDeclHandler); + XML_SetNamespaceDeclHandler(parser, StartNamespaceDeclHandler, + EndNamespaceDeclHandler); + XML_SetNotStandaloneHandler(parser, NotStandaloneHandler); + XML_SetExternalEntityRefHandler(parser, ExternalEntityRefHandler); + XML_SetSkippedEntityHandler(parser, SkippedEntityHandler); + XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, (void *)parser); +} + +DEFINE_TEXT_PROTO_FUZZER(const xml_lpm_fuzzer::Testcase &testcase) { + g_external_entity = nullptr; + + if (! testcase.actions_size()) { + return; + } + + g_allocation_count = 0; + g_fail_allocations.clear(); + for (int i = 0; i < testcase.fail_allocations_size(); ++i) { + g_fail_allocations.push_back(testcase.fail_allocations(i)); + } + + SetEncoding(testcase.encoding()); + XML_Parser parser + = XML_ParserCreate_MM(g_encoding, &memory_handling_suite, "|"); + InitializeParser(parser); + + for (int i = 0; i < testcase.actions_size(); ++i) { + const auto &action = testcase.actions(i); + switch (action.action_case()) { + case xml_lpm_fuzzer::Action::kChunk: + if (XML_STATUS_ERROR + == Parse(parser, action.chunk().data(), action.chunk().size(), 0)) { + // Force a reset after parse error. + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + } + break; + + case xml_lpm_fuzzer::Action::kLastChunk: + Parse(parser, action.last_chunk().data(), action.last_chunk().size(), 1); + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + break; + + case xml_lpm_fuzzer::Action::kReset: + XML_ParserReset(parser, g_encoding); + InitializeParser(parser); + break; + + case xml_lpm_fuzzer::Action::kExternalEntity: + g_external_entity = action.external_entity().data(); + g_external_entity_size = action.external_entity().size(); + break; + + default: + break; + } + } + + XML_ParserFree(parser); +} diff --git a/contrib/expat/fuzz/xml_lpm_fuzzer.proto b/contrib/expat/fuzz/xml_lpm_fuzzer.proto new file mode 100644 index 000000000000..ddc4e958b919 --- /dev/null +++ b/contrib/expat/fuzz/xml_lpm_fuzzer.proto @@ -0,0 +1,58 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 2022 Mark Brand + Copyright (c) 2025 Sebastian Pipping + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +syntax = "proto2"; +package xml_lpm_fuzzer; + +enum Encoding { + UTF8 = 0; + UTF16 = 1; + ISO88591 = 2; + ASCII = 3; + UNKNOWN = 4; + NONE = 5; +} + +message Action { + oneof action { + string chunk = 1; + string last_chunk = 2; + bool reset = 3; + string external_entity = 4; + } +} + +message Testcase { + required Encoding encoding = 1; + repeated Action actions = 2; + repeated int32 fail_allocations = 3; +} diff --git a/contrib/expat/fuzz/xml_parse_fuzzer.c b/contrib/expat/fuzz/xml_parse_fuzzer.c index a7e8414ce355..6a1affe2b1f6 100644 --- a/contrib/expat/fuzz/xml_parse_fuzzer.c +++ b/contrib/expat/fuzz/xml_parse_fuzzer.c @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c b/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c index 0327aa9f952e..cfc4af202851 100644 --- a/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c +++ b/contrib/expat/fuzz/xml_parsebuffer_fuzzer.c @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/contrib/expat/lib/expat.h b/contrib/expat/lib/expat.h index 523b37d8d578..610e1ddc0e94 100644 *** 2251 LINES SKIPPED *** From nobody Sat Apr 5 03:44:11 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZV1YS2jLrz5sv75; Sat, 05 Apr 2025 03:44: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 4ZV1YS0TdNz3RrP; Sat, 05 Apr 2025 03:44:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743824652; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oR9sFHZqVu+qh8UrJ1ggILwrYtLSneMrhgOws3fVsXM=; b=EKeKVRWKSE+Po06u1vS3T5RXoMqrlQWsSRIKbHvv9i8ojdG3sh4TCaZx5M6JpiEAOMEq9x Mv7DEEV1GXXER0MH+Bin2qFxi9JdS/BjUNRxnAsk10E4klo4KMF4l/wqpCap+ZO/Zw0U9K 8LdG0lCagdZ7exVB2usF9dUkSkVPAyUiqTWYDG7EE7ZEgD/rGjtDfPMHqJSYmTLqpmmeol vc8zySwA3VxRmHctXyj4zwz8+t1BOkHntyRgdF5N9COmgph9wh/5FXohQYJx16skdwL1Ch WDpzt02JrqHJkFCtIupUKQMBkW6na11ftI7E3e/2Uhmu4Eb6v5Yw273t+PswEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743824652; a=rsa-sha256; cv=none; b=rt1ztNi/d9YB6EFpvqr4ssyW0vUkUoX07Q4JtnLRvxDweKhq+tce3j+bEEKKoyJEmS26D8 YUiNzj/xxXWUWK/OauRyMeezIup6ae3NacfBh5ggwZJIUdBPt9AL17q02G21LR/yV67e+g Ru/BJ0uW4vl00K14M4IonHav3j68T08DaDE7UaFOI+h+Kseln2pW8VNCZ5qFnaR9X84s0A uE+nw0FIvyPOYGtdS/GEigYrKV9IzNk4LSiOjsUxNoDa7Sa+fOzrhyXwsVntP+2IP0PxLa ++PPjBsmQIngdDlSPdoOIQC7ByIkblIQE4xiAklbaXJ4c2jMcr9yCDjhxx09KQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743824652; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oR9sFHZqVu+qh8UrJ1ggILwrYtLSneMrhgOws3fVsXM=; b=CqO4dNITmU4RwPCEmCXECLdHJkre2nI/7V5fE5OCkKLQLRPPdZCCE4pUkFyXb22fSpcTOS /18QwD0mp2GdfZMSXSNjWv1MXhu0mBiwisiWUBQ1LaSbzsnH42zoqvYzw44NiMBtIzP8sq XwUr7cXIm1vX6DbYNTiEK/s20U3XYFn0gyePJtFSnaqrOygDr+nozNTIhZ+BLDhVl35od5 xSd95I66ySZ0NwgKQ+7UsgQM/BsE3Uun3w5A4P4ZZgUk4RBiHT/RnhhRp3FxvtA35vegCI NdjDJI2ah/3gDhM5ycPT43QkBcoQ1CFHpxNIYansICuiAWhn9mnHNH28bn5vRg== 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 4ZV1YS03sPz1DJx; Sat, 05 Apr 2025 03:44: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 5353iBaV048522; Sat, 5 Apr 2025 03:44:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5353iB4g048519; Sat, 5 Apr 2025 03:44:11 GMT (envelope-from git) Date: Sat, 5 Apr 2025 03:44:11 GMT Message-Id: <202504050344.5353iB4g048519@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 6e510d8fbaf8 - stable/14 - ixgbe: fix mailbox ack handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6e510d8fbaf8d91da235fe28250cd48124edda9f Auto-Submitted: auto-generated The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=6e510d8fbaf8d91da235fe28250cd48124edda9f commit 6e510d8fbaf8d91da235fe28250cd48124edda9f Author: Norbert Ciosek AuthorDate: 2025-03-29 00:02:37 +0000 Commit: Kevin Bowling CommitDate: 2025-04-05 03:43:39 +0000 ixgbe: fix mailbox ack handling Check if CTS bit is set in the mailbox message before waiting for ACK. Otherwise ACK will never be received causing the function to timeout. Add a note for ixgbe_write_mbx that it should be called while holding a lock. Fixes: 6d243d2 ("net/ixgbe/base: introduce new mailbox API") Cc: stable@dpdk.org Signed-off-by: Norbert Ciosek Signed-off-by: Anatoly Burakov Acked-by: Bruce Richardson Obtained from: DPDK (1f119e4) (cherry picked from commit 1580f8d9c1740e0c54554e6c185573d34f2dcf76) --- sys/dev/ixgbe/ixgbe_mbx.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sys/dev/ixgbe/ixgbe_mbx.c b/sys/dev/ixgbe/ixgbe_mbx.c index 0b866e7a39af..7f58a9202c9e 100644 --- a/sys/dev/ixgbe/ixgbe_mbx.c +++ b/sys/dev/ixgbe/ixgbe_mbx.c @@ -112,6 +112,9 @@ s32 ixgbe_poll_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) * * returns SUCCESS if it successfully copied message into the buffer and * received an ACK to that message within specified period + * + * Note that the caller to this function must lock before calling, since + * multiple threads can destroy each other messages. **/ s32 ixgbe_write_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) { @@ -866,6 +869,11 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_id) while (countdown--) { /* Reserve mailbox for PF use */ pf_mailbox = IXGBE_READ_REG(hw, IXGBE_PFMAILBOX(vf_id)); + + /* Check if other thread holds the PF lock already */ + if (pf_mailbox & IXGBE_PFMAILBOX_PFU) + goto retry; + pf_mailbox |= IXGBE_PFMAILBOX_PFU; IXGBE_WRITE_REG(hw, IXGBE_PFMAILBOX(vf_id), pf_mailbox); @@ -876,6 +884,7 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_id) break; } + retry: /* Wait a bit before trying again */ usec_delay(mbx->usec_delay); } @@ -978,13 +987,14 @@ static s32 ixgbe_write_mbx_pf(struct ixgbe_hw *hw, u32 *msg, u16 size, for (i = 0; i < size; i++) IXGBE_WRITE_REG_ARRAY(hw, IXGBE_PFMBMEM(vf_id), i, msg[i]); - /* Interrupt VF to tell it a message has been sent */ + /* interrupt VF to tell it a message has been sent */ pf_mailbox = IXGBE_READ_REG(hw, IXGBE_PFMAILBOX(vf_id)); pf_mailbox |= IXGBE_PFMAILBOX_STS; IXGBE_WRITE_REG(hw, IXGBE_PFMAILBOX(vf_id), pf_mailbox); /* if msg sent wait until we receive an ack */ - ixgbe_poll_for_ack(hw, vf_id); + if (msg[0] & IXGBE_VT_MSGTYPE_CTS) + ixgbe_poll_for_ack(hw, vf_id); /* update stats */ hw->mbx.stats.msgs_tx++; From nobody Sat Apr 5 03:44:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZV1ZK4Bk1z5sv8t; Sat, 05 Apr 2025 03: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 4ZV1ZK3VFdz3Rqm; Sat, 05 Apr 2025 03: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=1743824697; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J2sm8vLVlH0l5kMRzevnBi9MNWbRjL3tsoVK2v3hyvA=; b=Q+7r8Lg6t8boWU+eudb2BYQYc4x/1tzXwQZ/c5sDu7NYy1KQV3i8tooLFKFtKf55c8FWki llM7w35UpO2lb/7a37alm3SM99kuiuBeFKTt+VpotHiwA62f7T50jCN6zBvHzj2OQgdIzB L0SmPQwc/FO/1DvP+ZK8n2pLlKCZUrw8O1M48xz3I9/eLqNvMUEHyLqMyKHjnkZNXXtCgw Uzh8LpD2yXQntPVpCNDavg1FIaCe2gHcMlhoot000+UrIY/hTnE3+/O3CJk/atxB5jV/Zb s/hYsYkmtvcMCrNXuDPyNew1okKQWNIhgEYI3dgfsvZBkMQjjNieDFVJPCKx1g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743824697; a=rsa-sha256; cv=none; b=X1wc7sVwIFA1WeDXupiyRs+kWuOSA0HBM6/DSekVx0LbV1gpYBmG9PV+mG9G22i++nD3TF rYFqbWmOslFM1Osily/hSCgfksDldsTH/SiLWfb1CWUvRpvkblD7QQB++wy7gkuXWXLMVK wxJdrH9k6L2yD7IStMX0GUMeMRxfSemf9HA27ubxPSGqtggFirX3Lywf6i+BbguVOuHI8x PLpJ9/diOEr9u6TiPETmwQvmnEGsO2pCBHJnARwpgubA++XG/X8tEthcILZtJrh2Fixo47 UlVUHNEqDRSgAbGQirk0NT0U1L/RdK5zueupzfJmdB0P5HZQwqdW2BqKbeXDdg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743824697; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J2sm8vLVlH0l5kMRzevnBi9MNWbRjL3tsoVK2v3hyvA=; b=haEbAFZ12ScWhmlQSG4nn0SbmT0PEY2Bz5So9vt2GuMtrjomvet+Z/mtddxAaWvJ6n61Vj 6kRer+whTcyOIeuxnacYU2qOHC9be820PlJ82jVan0a10a4bi4jPpZOMSCaoXHBBC8eFl9 NhWtVCNSCyafQUzJBmD7keD1itf1MCQBbvmtEUVOVeE5Nc5qOWd7Q7C/2MrYvh0Vet9tFT guYWYE0sJzKbUaixG7kkEgz+YfOfOgqvK8V0RgzSjcRBO2rYnvZ7QGlcalpQ3EDLpxc40u cceGFPLl+lWvsqp1Ss28dJUgkgPsV502Zd8xMJzY+yt/6KK/zpHEazbRox2Gng== 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 4ZV1ZK352gz1Dq7; Sat, 05 Apr 2025 03: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 5353ivmq048847; Sat, 5 Apr 2025 03: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 5353ivPm048844; Sat, 5 Apr 2025 03:44:57 GMT (envelope-from git) Date: Sat, 5 Apr 2025 03:44:57 GMT Message-Id: <202504050344.5353ivPm048844@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: a8431b47adae - stable/13 - ixgbe: fix mailbox ack handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a8431b47adae8f8b731206dc38d82b2245ad245e Auto-Submitted: auto-generated The branch stable/13 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=a8431b47adae8f8b731206dc38d82b2245ad245e commit a8431b47adae8f8b731206dc38d82b2245ad245e Author: Norbert Ciosek AuthorDate: 2025-03-29 00:02:37 +0000 Commit: Kevin Bowling CommitDate: 2025-04-05 03:44:37 +0000 ixgbe: fix mailbox ack handling Check if CTS bit is set in the mailbox message before waiting for ACK. Otherwise ACK will never be received causing the function to timeout. Add a note for ixgbe_write_mbx that it should be called while holding a lock. Fixes: 6d243d2 ("net/ixgbe/base: introduce new mailbox API") Cc: stable@dpdk.org Signed-off-by: Norbert Ciosek Signed-off-by: Anatoly Burakov Acked-by: Bruce Richardson Obtained from: DPDK (1f119e4) (cherry picked from commit 1580f8d9c1740e0c54554e6c185573d34f2dcf76) --- sys/dev/ixgbe/ixgbe_mbx.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sys/dev/ixgbe/ixgbe_mbx.c b/sys/dev/ixgbe/ixgbe_mbx.c index 0b866e7a39af..7f58a9202c9e 100644 --- a/sys/dev/ixgbe/ixgbe_mbx.c +++ b/sys/dev/ixgbe/ixgbe_mbx.c @@ -112,6 +112,9 @@ s32 ixgbe_poll_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) * * returns SUCCESS if it successfully copied message into the buffer and * received an ACK to that message within specified period + * + * Note that the caller to this function must lock before calling, since + * multiple threads can destroy each other messages. **/ s32 ixgbe_write_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) { @@ -866,6 +869,11 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_id) while (countdown--) { /* Reserve mailbox for PF use */ pf_mailbox = IXGBE_READ_REG(hw, IXGBE_PFMAILBOX(vf_id)); + + /* Check if other thread holds the PF lock already */ + if (pf_mailbox & IXGBE_PFMAILBOX_PFU) + goto retry; + pf_mailbox |= IXGBE_PFMAILBOX_PFU; IXGBE_WRITE_REG(hw, IXGBE_PFMAILBOX(vf_id), pf_mailbox); @@ -876,6 +884,7 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_id) break; } + retry: /* Wait a bit before trying again */ usec_delay(mbx->usec_delay); } @@ -978,13 +987,14 @@ static s32 ixgbe_write_mbx_pf(struct ixgbe_hw *hw, u32 *msg, u16 size, for (i = 0; i < size; i++) IXGBE_WRITE_REG_ARRAY(hw, IXGBE_PFMBMEM(vf_id), i, msg[i]); - /* Interrupt VF to tell it a message has been sent */ + /* interrupt VF to tell it a message has been sent */ pf_mailbox = IXGBE_READ_REG(hw, IXGBE_PFMAILBOX(vf_id)); pf_mailbox |= IXGBE_PFMAILBOX_STS; IXGBE_WRITE_REG(hw, IXGBE_PFMAILBOX(vf_id), pf_mailbox); /* if msg sent wait until we receive an ack */ - ixgbe_poll_for_ack(hw, vf_id); + if (msg[0] & IXGBE_VT_MSGTYPE_CTS) + ixgbe_poll_for_ack(hw, vf_id); /* update stats */ hw->mbx.stats.msgs_tx++; From nobody Sat Apr 5 16:30:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVLYn5mLWz5sRF9; Sat, 05 Apr 2025 16:30: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 4ZVLYn0085z3GSH; Sat, 05 Apr 2025 16:30:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4ef+zbdNbqYHZjUyxM3lWivdwiXM9IIqcMJ5x5/HCIc=; b=ohfoy1wEJJUEisXkJ3nR7XHU5ACjRCLqdJ/KPbCcAX8RCvfyDgY6QJl444TC52TzFWFb7e nhHfy4i5Mj6td0Sgu9Eanv3Zfxe86SbYi3COro9jwNl8Tgvs2AIy0GD5mHR8jqM5lSzOos jSvxqXIiRYaJKJAgHoyV3GZNV15veyqtkoGZT0qN67w6zZK9ZCdvw7EcPiAM1UEL/Sc57t 5jdeKDLN2iG2cTcJ2RmSo59cJGhqm13uVWRvv9zbe9sQ6vgJK6gvvdSKapPuWlqzgWQgmP q8sohtZ6juijT3dxohRZiCanJcCv5xKbWyKAUeRJ+bebwCYx6PvyGzexuf7XbQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743870637; a=rsa-sha256; cv=none; b=hncKvu6N9KOywmJrNYjMGbCi/7ieJiJ5T2s/FwU8wJJ0MAhRWr+Cdaq4DFzwr0WAQAdo9i 0t/e246AmeGKxwtNCUYHferC1YA9vj1GIqCILnneRPPSYeDRNMCtX2XR6OahZaAtMze5r8 2H3FLS7VITo88rns2NUR6wZfYYYgzdsoJ++U2OFDXIwMc/MvDXzrnXaSaMnDLhzUsI0lVV 2zyvn0g5LEis/G0u7pFKTLLRJEfnOV9RjLCu+QDpZ8fpn/3EMHEfhZhLiOvFGInkxQW9g1 TV54GO/prKai2cXTiOo3cOPLf6GAR6QeEUUFhI2Grm1vq2G72vPETPXlFzJ0CA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870637; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4ef+zbdNbqYHZjUyxM3lWivdwiXM9IIqcMJ5x5/HCIc=; b=ao1M0+En0kZ5v+eTb4TEkmtl79bn2OEd/o3fObPdDbe8+HIr70AboQqk4PwrompCAnrXB+ WA6pNXRU6nTMczRB/CPNfYNmplAcnwby6yim5354zA+4CQVrLXJA9iL52dn9rp//DZQ7Fs rRGxkD3a1s5G1iDzjb+Ep+S0dkUiQkuYMDsmywDvYvAi7Nt9hfSlx681XzVxrJ6DfwA7e4 MwlVjxNey9DCEE+HD06RAMZx4BSiVRt9eqyRD/MatVnX3sRZXY4Anr7dfNL1iRIUVEH75x roJ4pVtTu9A00LB4MNAsL4F8vVdb5zYAvUbSifsaJojrfrowZuS8rCLLFAT1og== 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 4ZVLYm6hsRz7XP; Sat, 05 Apr 2025 16:30: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 535GUa90077880; Sat, 5 Apr 2025 16:30:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535GUaaM077877; Sat, 5 Apr 2025 16:30:36 GMT (envelope-from git) Date: Sat, 5 Apr 2025 16:30:36 GMT Message-Id: <202504051630.535GUaaM077877@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: d35c4cfad580 - main - sysctl: Panic on OID reuse List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d35c4cfad5800b15ab730af5246df0366f2be558 Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d35c4cfad5800b15ab730af5246df0366f2be558 commit d35c4cfad5800b15ab730af5246df0366f2be558 Author: Mark Johnston AuthorDate: 2025-04-05 16:22:20 +0000 Commit: Mark Johnston CommitDate: 2025-04-05 16:22:20 +0000 sysctl: Panic on OID reuse In CheriBSD we had a conflict in the KERN_PROC OID space and didn't notice for some time. Let's panic instead to make such conflicts easier to detect. Note that this doesn't affect conflicts arising from name collisions in OID_AUTO sysctls, which happen sometimes due to driver bugs. Reviewed by: brooks, kib, jhb MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D49351 --- sys/kern/kern_sysctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 8cf8e7b19c89..46226cc31980 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -516,7 +516,7 @@ sysctl_register_oid(struct sysctl_oid *oidp) /* check for non-auto OID number collision */ if (oidp->oid_number >= 0 && oidp->oid_number < CTL_AUTO_START && oid_number >= CTL_AUTO_START) { - printf("sysctl: OID number(%d) is already in use for '%s'\n", + panic("sysctl: OID number(%d) is already in use for '%s'\n", oidp->oid_number, oidp->oid_name); } /* update the OID number, if any */ From nobody Sat Apr 5 16:30:37 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVLYp33wzz5sRBd; Sat, 05 Apr 2025 16:30: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 4ZVLYp0rfMz3GVR; Sat, 05 Apr 2025 16:30:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wJm8LvtfE6vgpLMyqIBhBZCjFHZDoDhpngEdgHyzfVc=; b=Neb1xQh6fe3mUuP4jQvPk4J4xi/ok6iwjAazK0r6dyCEERaV3xZewnPzGXUtbMuC01Mvts 7WGpmhYsUWhlCRhnl3WwpzBxTaTM0KUwF1cAqGWgvXXyIPpps6JyA6EfPtYSJvZ9JxiuyP vKR2MG9aPw3IG2uDWy8EHywInHRiIwa2XUlzRYoeQNhX68io5NWeVHBI5LfAQPkwz0yF8n sIRXhjGXE7Q9bwDfV7FDW6SgJ2Cd2L69baZnl93tvd6eq3iWF3C9QMX+j7Rza3CK0FnqxC uAJEVcLX+FyQc28vIUfPeSCrtpz3HIAhpEIG7B4kDwQz9Rnnzkb3ThMscg26aA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743870638; a=rsa-sha256; cv=none; b=WpLN4ANlTdHe0SxolhLLdHQ/pawUe9WjLHxnHiKjUby8kRmVnBntzNeO7fUE0EjDqEyZLW YJsQdiPwvWGWNiPbNdkp60Xe6LE6Maa2jRisPuzlnPN0HJsM65nO4boeQhYPEnmHWUescs uMBmL0TAaoMl2gQD6ZYygGzqwLewbWrfyi8gNCfkbpd21FA7soXy1AY9IB3PfWcwJxnn8b ZK5210tBAvUzyFs3EGJUH/h2rq/tHugDvAvNQKv8TzZQWTZwi/iGTcbGeZI4YteyTvHjIF ouTZK+LU2Tm6DCA1nhNkoqd9LoIyyqo2eXnT8IpbJ0PmnS6ITrcJ6SfA1YRfaA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743870638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wJm8LvtfE6vgpLMyqIBhBZCjFHZDoDhpngEdgHyzfVc=; b=lbC4l0ecoj8x3KzQQCm19bP4p1FXLeCywCT48Ww4CKpYleVcXHaWVSLiZqFDKjedwOcBS4 1WlcSDhR+IQA0qZV640PsrkxZLcttFgA5NzgT984HVU5MiQfMZd8xyPD8Z1EOi8W9QD43/ 9JVblEzd8ROMrfysW9ImK/MTS9eICrlUONkFGq4dGLk4rSAi+KNDCYZW3rFoxMx2aNAF41 DKJPDxIdQlS4X5KnsDxHAZxUAGPufxYEoJeUeRHC9KI5yqA9Q/4AXQK6Ajnn6omJ9IZ9zc aY2uzE8JV8vbXqv000kF1fWb6mTukz7rJjkfoLNL9Vl3LfXYB8U+Ik4rmuRQ2w== 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 4ZVLYp09bvz7rt; Sat, 05 Apr 2025 16:30: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 535GUbQB077924; Sat, 5 Apr 2025 16:30:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535GUbDN077921; Sat, 5 Apr 2025 16:30:37 GMT (envelope-from git) Date: Sat, 5 Apr 2025 16:30:37 GMT Message-Id: <202504051630.535GUbDN077921@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: c5773d366ecc - main - ktr: Make debug.ktr.verbose available whenever KTR is configured List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c5773d366ecc5271b9bd6e5506c00fb3520f19ae Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c5773d366ecc5271b9bd6e5506c00fb3520f19ae commit c5773d366ecc5271b9bd6e5506c00fb3520f19ae Author: Mark Johnston AuthorDate: 2025-04-05 16:23:51 +0000 Commit: Mark Johnston CommitDate: 2025-04-05 16:29:44 +0000 ktr: Make debug.ktr.verbose available whenever KTR is configured This is more useful and matches the documentation. While here, make it settable as a tunable and add a sysctl description. PR: 139425 MFC after: 2 weeks --- sys/kern/kern_ktr.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c index e862816c4613..cbd32d13248a 100644 --- a/sys/kern/kern_ktr.c +++ b/sys/kern/kern_ktr.c @@ -251,9 +251,12 @@ SYSCTL_PROC(_debug_ktr, OID_AUTO, entries, #ifdef KTR_VERBOSE int ktr_verbose = KTR_VERBOSE; -TUNABLE_INT("debug.ktr.verbose", &ktr_verbose); -SYSCTL_INT(_debug_ktr, OID_AUTO, verbose, CTLFLAG_RW, &ktr_verbose, 0, ""); +#else +int ktr_verbose = 0; #endif +TUNABLE_INT("debug.ktr.verbose", &ktr_verbose); +SYSCTL_INT(_debug_ktr, OID_AUTO, verbose, CTLFLAG_RWTUN, &ktr_verbose, 0, + "Print extra info when logging to the console"); #ifdef KTR_ALQ struct alq *ktr_alq; @@ -375,7 +378,6 @@ ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, file += 3; entry->ktr_file = file; entry->ktr_line = line; -#ifdef KTR_VERBOSE if (ktr_verbose) { #ifdef SMP printf("cpu%d ", cpu); @@ -387,7 +389,6 @@ ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, printf(format, arg1, arg2, arg3, arg4, arg5, arg6); printf("\n"); } -#endif entry->ktr_desc = format; entry->ktr_parms[0] = arg1; entry->ktr_parms[1] = arg2; From nobody Sat Apr 5 21:20:12 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVSzw3PQXz5sLKV; Sat, 05 Apr 2025 21:20: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 4ZVSzw36LSz3HSj; Sat, 05 Apr 2025 21:20:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743888012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yLdm+xclIvxhQ/pHeYS+nI7V0ez2gMwO0EHQfuTI/aI=; b=n+pYxcHnuCudwfLRMI7VCprZ+AdOeFFHipGeYHxEAGh+bxW53w8AELO5PHSFJ4Jtw2+aBr r3SOgiUEnAKyw6ljSJHZ0vZPPs7a1G09cuov6us5HbTwOE0ITbcBGhFAunrQkEGdI5K+6Y m2KjXCQNHQdhs6Gp/Yr49XuFWZgjzBi9dtdH9mCp37DEj7DOQFLMTF/LcV275lC8Qxk9I5 Y0u6iAmDxni0N9gM127dACQ/R8flSUP0bygYKzYWJmSbqRClXUuLxBJ+TsmMfWMLnnQxBz L/VvkhwBtYjuZC9FZ0liDBk62VFLUBYZlurvLEL5ybHwC0/pdHd7bCckZCGcIQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743888012; a=rsa-sha256; cv=none; b=DwY/a++zdn0PZ6/Rb4X5cJ88rsX5HnGcE2PibuFlHLi6cNXGAbOIAJYyoH5LHSJfedFaMp f2+90GoN4U3xejsSoL2dU2Uqa4xB1Pltegr9p+o4RX0hIoByH1oa2dyS7EIklR6BFmqAq6 46xAu6+/FnmaeSirXGAVgGy66tqZG0bTd0AYSnY/GwsahLNm42g6UYaHDjyUuBRJPRjAUZ aMluClfATv3tBzcPnluDO1KJRfirxbCHkEQzbvGSx6WoT0ZiuT5dsTcHDmsTEVtPmylbpP BCDgTjE2JPNWpkQyKocmVV8HK/42+kr3A8GWWQhdqT9GV7kERjIoZcChkhRROQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743888012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yLdm+xclIvxhQ/pHeYS+nI7V0ez2gMwO0EHQfuTI/aI=; b=MhK0BldVGLsCq/i8Vl6PrSnsG6DsFwOofaTBw+xvEAEfnIsAQFA01DjancIiNR0G9/JL0a SIq+r/sRO6W7cZ+XSRSgdF/QcC33yylzY15clNtVo4159JC7muv7Ytz2HSt8EeK2Xdck8P Q8mgIAVA0NPzXh0ssVF/a1O49XAwNOOv0TDUh82pa06jQZGTrkPRq7Mx1cnOKwgIRDOT+i Jp+FNxqT5rcdV4F6z823vT34IxT27q1zTIoxG01HY2Ma+XYnBJhG/uukwkUc0eYAPH6xOL weiOWHpIkuEk+t3OFuLP2QeRbRyozVvEetjsTLuTfeXeLO5cg/MbMVgcCX/AKA== 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 4ZVSzw2PJLzZ1C; Sat, 05 Apr 2025 21:20: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 535LKC7T016173; Sat, 5 Apr 2025 21:20:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 535LKCpL016160; Sat, 5 Apr 2025 21:20:12 GMT (envelope-from git) Date: Sat, 5 Apr 2025 21:20:12 GMT Message-Id: <202504052120.535LKCpL016160@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Silvers Subject: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: chs X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1ac6ea8a0251243d34f0ede2315b8f2b4393080d Auto-Submitted: auto-generated The branch main has been updated by chs: URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b4393080d commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d Author: Chuck Silvers AuthorDate: 2025-04-05 21:18:35 +0000 Commit: Chuck Silvers CommitDate: 2025-04-05 21:19:57 +0000 kerberos5, libcom_err, others: append to LDFLAGS instead of replacing Reviewed by: imp, emaste Differential Revision: https://reviews.freebsd.org/D49548 --- kerberos5/lib/libasn1/Makefile | 2 +- kerberos5/lib/libgssapi_krb5/Makefile | 2 +- kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- kerberos5/lib/libgssapi_spnego/Makefile | 2 +- kerberos5/lib/libhdb/Makefile | 2 +- kerberos5/lib/libheimbase/Makefile | 2 +- kerberos5/lib/libheimntlm/Makefile | 2 +- kerberos5/lib/libhx509/Makefile | 2 +- kerberos5/lib/libkadm5clnt/Makefile | 2 +- kerberos5/lib/libkadm5srv/Makefile | 2 +- kerberos5/lib/libkafs5/Makefile | 2 +- kerberos5/lib/libkdc/Makefile | 2 +- kerberos5/lib/libkrb5/Makefile | 2 +- kerberos5/lib/libwind/Makefile | 2 +- kerberos5/libexec/digest-service/Makefile | 2 +- kerberos5/libexec/hprop/Makefile | 2 +- kerberos5/libexec/hpropd/Makefile | 2 +- kerberos5/libexec/ipropd-master/Makefile | 2 +- kerberos5/libexec/ipropd-slave/Makefile | 2 +- kerberos5/libexec/kadmind/Makefile | 2 +- kerberos5/libexec/kcm/Makefile | 2 +- kerberos5/libexec/kdc/Makefile | 2 +- kerberos5/libexec/kpasswdd/Makefile | 2 +- kerberos5/usr.bin/kadmin/Makefile | 2 +- kerberos5/usr.bin/kpasswd/Makefile | 2 +- kerberos5/usr.sbin/iprop-log/Makefile | 2 +- kerberos5/usr.sbin/kstash/Makefile | 2 +- lib/libcom_err/Makefile | 2 +- tools/regression/tls/ttls3/Makefile | 2 +- tools/tools/net80211/w00t/Makefile.inc | 2 +- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/kerberos5/lib/libasn1/Makefile b/kerberos5/lib/libasn1/Makefile index 58fde4ded382..0398ed185481 100644 --- a/kerberos5/lib/libasn1/Makefile +++ b/kerberos5/lib/libasn1/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= asn1 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined INCS= asn1_err.h asn1-common.h heim_asn1.h der.h der-protos.h der-private.h LIBADD= com_err roken VERSION_MAP= ${.CURDIR}/version.map diff --git a/kerberos5/lib/libgssapi_krb5/Makefile b/kerberos5/lib/libgssapi_krb5/Makefile index 630cb11ad6ca..6f74f6516c4e 100644 --- a/kerberos5/lib/libgssapi_krb5/Makefile +++ b/kerberos5/lib/libgssapi_krb5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_krb5 -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= gssapi krb5 crypto roken asn1 com_err SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libgssapi_ntlm/Makefile b/kerberos5/lib/libgssapi_ntlm/Makefile index 8698c5c2e3e1..51da17339620 100644 --- a/kerberos5/lib/libgssapi_ntlm/Makefile +++ b/kerberos5/lib/libgssapi_ntlm/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_ntlm -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= crypto gssapi krb5 heimntlm roken SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libgssapi_spnego/Makefile b/kerberos5/lib/libgssapi_spnego/Makefile index 421c3fecce7c..2cf73285cd37 100644 --- a/kerberos5/lib/libgssapi_spnego/Makefile +++ b/kerberos5/lib/libgssapi_spnego/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= gssapi_spnego -LDFLAGS= -Wl,-Bsymbolic -Wl,--no-undefined +LDFLAGS+= -Wl,-Bsymbolic -Wl,--no-undefined LIBADD= gssapi heimbase asn1 roken SHLIB_MAJOR= 10 diff --git a/kerberos5/lib/libhdb/Makefile b/kerberos5/lib/libhdb/Makefile index be18779a047e..04e3a4739ef9 100644 --- a/kerberos5/lib/libhdb/Makefile +++ b/kerberos5/lib/libhdb/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= hdb -LDFLAGS= -Wl,--no-undefined ${LDAPLDFLAGS} +LDFLAGS+= -Wl,--no-undefined ${LDAPLDFLAGS} VERSION_MAP= ${KRB5DIR}/lib/hdb/version-script.map LIBADD= asn1 com_err krb5 roken sqlite3 LDADD= ${LDAPLDADD} diff --git a/kerberos5/lib/libheimbase/Makefile b/kerberos5/lib/libheimbase/Makefile index e3cb2fc6c770..9870fe1d6204 100644 --- a/kerberos5/lib/libheimbase/Makefile +++ b/kerberos5/lib/libheimbase/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= heimbase -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= pthread VERSION_MAP= ${KRB5DIR}/base/version-script.map diff --git a/kerberos5/lib/libheimntlm/Makefile b/kerberos5/lib/libheimntlm/Makefile index f68a3d498d20..cc32e4c5e509 100644 --- a/kerberos5/lib/libheimntlm/Makefile +++ b/kerberos5/lib/libheimntlm/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= heimntlm -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= crypto com_err krb5 roken SRCS= ntlm.c ntlm_err.c ntlm_err.h INCS= heimntlm.h heimntlm-protos.h ntlm_err.h diff --git a/kerberos5/lib/libhx509/Makefile b/kerberos5/lib/libhx509/Makefile index 0e82a79d9a8a..7713b4897170 100644 --- a/kerberos5/lib/libhx509/Makefile +++ b/kerberos5/lib/libhx509/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= hx509 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/hx509/version-script.map LIBADD= asn1 com_err crypto roken wind diff --git a/kerberos5/lib/libkadm5clnt/Makefile b/kerberos5/lib/libkadm5clnt/Makefile index dee95b0c8b4b..182d60c9843c 100644 --- a/kerberos5/lib/libkadm5clnt/Makefile +++ b/kerberos5/lib/libkadm5clnt/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kadm5clnt -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= com_err krb5 roken INCS= admin.h \ diff --git a/kerberos5/lib/libkadm5srv/Makefile b/kerberos5/lib/libkadm5srv/Makefile index 9905668c529a..05006288220c 100644 --- a/kerberos5/lib/libkadm5srv/Makefile +++ b/kerberos5/lib/libkadm5srv/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kadm5srv -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= com_err hdb krb5 roken VERSION_MAP= ${KRB5DIR}/lib/kadm5/version-script.map MAN= kadm5_pwcheck.3 diff --git a/kerberos5/lib/libkafs5/Makefile b/kerberos5/lib/libkafs5/Makefile index ba83533bd84e..91e06d5d777a 100644 --- a/kerberos5/lib/libkafs5/Makefile +++ b/kerberos5/lib/libkafs5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kafs5 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined LIBADD= asn1 krb5 roken INCS= kafs.h MAN= kafs5.3 diff --git a/kerberos5/lib/libkdc/Makefile b/kerberos5/lib/libkdc/Makefile index 58355fd6d810..72bd7d183a29 100644 --- a/kerberos5/lib/libkdc/Makefile +++ b/kerberos5/lib/libkdc/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= kdc -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/kdc/version-script.map LIBADD= roken hdb hx509 krb5 heimntlm asn1 crypto diff --git a/kerberos5/lib/libkrb5/Makefile b/kerberos5/lib/libkrb5/Makefile index edc14556dc59..d377446cd437 100644 --- a/kerberos5/lib/libkrb5/Makefile +++ b/kerberos5/lib/libkrb5/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= krb5 -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/krb5/version-script.map LIBADD= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc diff --git a/kerberos5/lib/libwind/Makefile b/kerberos5/lib/libwind/Makefile index 2ce6947dce7d..b57d62dc830f 100644 --- a/kerberos5/lib/libwind/Makefile +++ b/kerberos5/lib/libwind/Makefile @@ -1,7 +1,7 @@ PACKAGE= kerberos-lib LIB= wind -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${KRB5DIR}/lib/wind/version-script.map LIBADD= com_err roken diff --git a/kerberos5/libexec/digest-service/Makefile b/kerberos5/libexec/digest-service/Makefile index 521e3b294709..0996f8704d16 100644 --- a/kerberos5/libexec/digest-service/Makefile +++ b/kerberos5/libexec/digest-service/Makefile @@ -10,7 +10,7 @@ CFLAGS+= -I${KRB5DIR}/kdc \ -I${KRB5DIR}/lib/roken \ -I${SRCTOP}/contrib/com_err LIBADD= hdb kdc heimipcs krb5 roken asn1 crypto vers heimntlm -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/hprop/Makefile b/kerberos5/libexec/hprop/Makefile index 96ac9205d040..b52ccc89e1ce 100644 --- a/kerberos5/libexec/hprop/Makefile +++ b/kerberos5/libexec/hprop/Makefile @@ -14,7 +14,7 @@ CFLAGS+=-I${.OBJDIR:H:H}/lib/libkrb5 LIBADD= hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/hpropd/Makefile b/kerberos5/libexec/hpropd/Makefile index 20619c070aa8..9e2039c67a63 100644 --- a/kerberos5/libexec/hpropd/Makefile +++ b/kerberos5/libexec/hpropd/Makefile @@ -7,7 +7,7 @@ CFLAGS+=-I${KRB5DIR}/lib/roken -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 \ LIBADD= hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/ipropd-master/Makefile b/kerberos5/libexec/ipropd-master/Makefile index 640de69120a1..ee8e2146a716 100644 --- a/kerberos5/libexec/ipropd-master/Makefile +++ b/kerberos5/libexec/ipropd-master/Makefile @@ -8,7 +8,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/ipropd-slave/Makefile b/kerberos5/libexec/ipropd-slave/Makefile index 748183eb09b9..6738181a6455 100644 --- a/kerberos5/libexec/ipropd-slave/Makefile +++ b/kerberos5/libexec/ipropd-slave/Makefile @@ -8,7 +8,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kadmind/Makefile b/kerberos5/libexec/kadmind/Makefile index b228b653b021..6ffe59d6e2cf 100644 --- a/kerberos5/libexec/kadmind/Makefile +++ b/kerberos5/libexec/kadmind/Makefile @@ -12,7 +12,7 @@ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5srv gssapi hdb krb5 roken vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kcm/Makefile b/kerberos5/libexec/kcm/Makefile index f62e39a920f4..fda4b8e367b0 100644 --- a/kerberos5/libexec/kcm/Makefile +++ b/kerberos5/libexec/kcm/Makefile @@ -24,7 +24,7 @@ CFLAGS+="-DKRB5_DEPRECATED_FUNCTION(X)=" LIBADD= krb5 roken heimntlm heimipcs crypto DPADD= ${LDAPDPADD} LDADD= ${LIBVERS} ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kdc/Makefile b/kerberos5/libexec/kdc/Makefile index 587f850d5953..6c8f91af2631 100644 --- a/kerberos5/libexec/kdc/Makefile +++ b/kerberos5/libexec/kdc/Makefile @@ -11,7 +11,7 @@ SRCS= config.c \ CFLAGS+=-I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/roken \ -I${KRB5DIR}/kdc -I${SRCTOP}/contrib/com_err ${LDAPCFLAGS} LIBADD= kdc hdb krb5 roken crypt vers -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/libexec/kpasswdd/Makefile b/kerberos5/libexec/kpasswdd/Makefile index 8b09c0eea5cc..8fb8a7eb0a50 100644 --- a/kerberos5/libexec/kpasswdd/Makefile +++ b/kerberos5/libexec/kpasswdd/Makefile @@ -6,7 +6,7 @@ CFLAGS+=-I${KRB5DIR}/lib/roken -I${KRB5DIR}/lib/libhdb ${LDAPCFLAGS} LIBADD= kadm5srv hdb krb5 roken vers asn1 DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/usr.bin/kadmin/Makefile b/kerberos5/usr.bin/kadmin/Makefile index 3ff90ff1e1d9..62aca1b81a83 100644 --- a/kerberos5/usr.bin/kadmin/Makefile +++ b/kerberos5/usr.bin/kadmin/Makefile @@ -29,7 +29,7 @@ CFLAGS+=-I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/roken \ LIBADD= kadm5clnt kadm5srv hdb krb5 roken vers sl asn1 crypto edit DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} CLEANFILES= kadmin-commands.h kadmin-commands.c diff --git a/kerberos5/usr.bin/kpasswd/Makefile b/kerberos5/usr.bin/kpasswd/Makefile index d8da1baadf39..659067f7ad12 100644 --- a/kerberos5/usr.bin/kpasswd/Makefile +++ b/kerberos5/usr.bin/kpasswd/Makefile @@ -3,7 +3,7 @@ PACKAGE= kerberos PROG= kpasswd CFLAGS+=-I${KRB5DIR}/lib/roken LIBADD= hdb krb5 roken vers crypto -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/kerberos5/usr.sbin/iprop-log/Makefile b/kerberos5/usr.sbin/iprop-log/Makefile index e4e7964cd009..511b46a48b8c 100644 --- a/kerberos5/usr.sbin/iprop-log/Makefile +++ b/kerberos5/usr.sbin/iprop-log/Makefile @@ -9,7 +9,7 @@ CFLAGS+= -I${KRB5DIR}/lib/kadm5 \ -I${KRB5DIR}/lib/sl \ -I. LIBADD= kadm5srv hdb krb5 roken edit sl vers -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} CLEANFILES= iprop-commands.h iprop-commands.c diff --git a/kerberos5/usr.sbin/kstash/Makefile b/kerberos5/usr.sbin/kstash/Makefile index f2e2ce691cac..62ff9c70b05f 100644 --- a/kerberos5/usr.sbin/kstash/Makefile +++ b/kerberos5/usr.sbin/kstash/Makefile @@ -7,7 +7,7 @@ CFLAGS+=-I${KRB5DIR}/lib/asn1 -I${KRB5DIR}/lib/krb5 -I${KRB5DIR}/lib/roken \ LIBADD= hdb krb5 crypto vers DPADD= ${LDAPDPADD} LDADD= ${LDAPLDADD} -LDFLAGS=${LDAPLDFLAGS} +LDFLAGS+=${LDAPLDFLAGS} .include diff --git a/lib/libcom_err/Makefile b/lib/libcom_err/Makefile index 2bfd26bae968..f070fd534469 100644 --- a/lib/libcom_err/Makefile +++ b/lib/libcom_err/Makefile @@ -7,7 +7,7 @@ MAN= com_err.3 COM_ERRDIR= ${SRCTOP}/contrib/com_err CFLAGS+= -I${COM_ERRDIR} -LDFLAGS= -Wl,--no-undefined +LDFLAGS+= -Wl,--no-undefined VERSION_MAP= ${COM_ERRDIR}/version-script.map .include diff --git a/tools/regression/tls/ttls3/Makefile b/tools/regression/tls/ttls3/Makefile index ef00223e4c25..03413ea8e1d6 100644 --- a/tools/regression/tls/ttls3/Makefile +++ b/tools/regression/tls/ttls3/Makefile @@ -1,6 +1,6 @@ all: ttls3 -LDFLAGS=-shared -Bsymbolic --allow-shlib-undefined +LDFLAGS+=-shared -Bsymbolic --allow-shlib-undefined CFLAGS+= -lpthread CFLAGS+= -Wl,--rpath=${.OBJDIR} diff --git a/tools/tools/net80211/w00t/Makefile.inc b/tools/tools/net80211/w00t/Makefile.inc index 69c06542d367..fcde408757e6 100644 --- a/tools/tools/net80211/w00t/Makefile.inc +++ b/tools/tools/net80211/w00t/Makefile.inc @@ -1,7 +1,7 @@ W00T= ../libw00t # NB: we get crc32 from -lz DPADD= ${W00T}/libw00t.a -LDFLAGS= -L${W00T} +LDFLAGS+= -L${W00T} LDADD= -lw00t LIBADD+= crypto z From nobody Sun Apr 6 00:28:27 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY973VcSz5sbXj; Sun, 06 Apr 2025 00:28: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 4ZVY9731f6z3wtF; Sun, 06 Apr 2025 00:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899307; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NHsfVxMve0BDlaxkeNUfjbSvNLIFMIZY0qWdBI3tMmU=; b=mejdGPHY7SCtQbkcgOfthQu+R+UJ3SRSE22JVSbWSK0LO2BElDmARjD68HPFb9dk1lmA4l 6MfDCQ+7s8NgzKYfmxHUzz24Ep7xML2VxnFGq0SiYWPmEXihHkVqrqyk4o5GxTqiXuCAbJ VBoPaV5pL1k23LzAljFTDcJ1TWmLDobcGP85vRSaf+1/q3JKmhdJAxt+qQffAsKkYez4Ub bkuYu0piVQYrRTZOoH+jDjmIbrKPUoLRd/c/uR8aJzUz/Cxt5CMGzNwzg0Iq+wezyrZ54N f39gL7vYJ5t4NMR+8XQTY5yKgJp6MtZAZYkYrwqe3stTVBjCJp8P48FbEJaCVg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899307; a=rsa-sha256; cv=none; b=bXgHrCFW9QSGXVEuSm5b/6PKlN5hH6u8aCfQi2PGHgkbWT+7qa1dWbK08qfTb+n2Puo8W5 BykS0K7JNUti7UUGuZ+yZ0BTLWznr5g2P/OtLdWzwQFlGVeGL1ytzcwAqOtAsWnhHxPNoh ihq8Xr8asgyDdPZvHCy/MafYPuPTAIrq3PXGDeeqQVDVktky5egUZl/NAsM68RjaqA+Muh V14JPdyNqA/pl3YAKn0V71P67AlIqVjzq3eidUq8qmyzhIK+jTBamUo/KGXpzy8T7X4rB2 iSgepVJ3GJcIgfrmMkQqqb+fHSvqhFcoykUCPUpUz0t4fH6yUqHxCS8+ZUVUtg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899307; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NHsfVxMve0BDlaxkeNUfjbSvNLIFMIZY0qWdBI3tMmU=; b=CvC3ZY0GdOu0MGXon4z8BXoYNWuFXzXebWMuH6iWEPssNXhn8vGMku6thPQmlFRDLLG9ws SKKsSVoEoxpEy8oSr4RCsRjUYO29krl3m0fZyHfSJaVWSaFpe1grvm1EYfDiKcidswP1iE RWGw9jjT/ChTpM9WHAL9LF8bPga6x0EVlFEJsAcHkpe4AOhcjbXISCH9x4Qa8h3oOiH7KQ prayriPHYX0du4cESNVHPNxXOErXqfiDmT35Y12aRyDEgJyLHlC/MaY0k0ZMk8FE2gqZTG c7kherYWQwCTGYeVJRnXrYBaS/ixb8L45AEADmVpc6ERsn3ElXdn+q22EhYQGA== 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 4ZVY972XXjzdjh; Sun, 06 Apr 2025 00:28: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 5360SRAT065676; Sun, 6 Apr 2025 00:28:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360SRP2065673; Sun, 6 Apr 2025 00:28:27 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:27 GMT Message-Id: <202504060028.5360SRP2065673@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: e4c0d796141b - stable/14 - sound: Fix vchanrate and vchanformat List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e4c0d796141b6611780fdff3063f744bbd49b282 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=e4c0d796141b6611780fdff3063f744bbd49b282 commit e4c0d796141b6611780fdff3063f744bbd49b282 Author: Christos Margiolis AuthorDate: 2025-03-30 17:45:34 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:14 +0000 sound: Fix vchanrate and vchanformat Make vchanrate and vchanformat reflect the primary channel's software buffer's rate and format respectively. Fix previous inconsistencies. Get rid of the initializations in vchan_create() and move them to chn_init(). Without the feeder_rate_round check in sysctl_dev_pcm_vchanrate(), we can set the software rate to anything between feeder_rate_min and feeder_rate_max. If we keep the check, however, the rate is limited to whatever the driver's min/max is, which can be a problem if, for example, the driver supports only a single rate, in which case we won't be able to set anything other than the driver rate. Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D48961 (cherry picked from commit e372211be5c56e218e974a4478be9aa80bfca064) --- sys/dev/sound/pcm/channel.c | 12 +++++-- sys/dev/sound/pcm/vchan.c | 82 ++------------------------------------------- 2 files changed, 13 insertions(+), 81 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 287e2f07d8a1..4a96505ada66 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -1176,7 +1176,7 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, struct feeder_class *fc; struct snd_dbuf *b, *bs; char buf[CHN_NAMELEN]; - int err, i, direction; + int err, i, direction, *vchanrate, *vchanformat; PCM_BUSYASSERT(d); PCM_LOCKASSERT(d); @@ -1189,6 +1189,8 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, if (dir == PCMDIR_PLAY_VIRTUAL) d->pvchancount++; direction = PCMDIR_PLAY; + vchanrate = &d->pvchanrate; + vchanformat = &d->pvchanformat; break; case PCMDIR_REC: d->reccount++; @@ -1197,6 +1199,8 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, if (dir == PCMDIR_REC_VIRTUAL) d->rvchancount++; direction = PCMDIR_REC; + vchanrate = &d->rvchanrate; + vchanformat = &d->rvchanformat; break; default: device_printf(d->dev, @@ -1301,8 +1305,12 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls, PCM_LOCK(d); CHN_INSERT_SORT_ASCEND(d, c, channels.pcm); - if ((c->flags & CHN_F_VIRTUAL) == 0) + if ((c->flags & CHN_F_VIRTUAL) == 0) { CHN_INSERT_SORT_ASCEND(d, c, channels.pcm.primary); + /* Initialize the *vchanrate/vchanformat parameters. */ + *vchanrate = sndbuf_getspd(c->bufsoft); + *vchanformat = sndbuf_getfmt(c->bufsoft); + } return (c); diff --git a/sys/dev/sound/pcm/vchan.c b/sys/dev/sound/pcm/vchan.c index 7064f1e51125..1f184f21807e 100644 --- a/sys/dev/sound/pcm/vchan.c +++ b/sys/dev/sound/pcm/vchan.c @@ -405,7 +405,6 @@ sysctl_dev_pcm_vchanrate(SYSCTL_HANDLER_ARGS) { struct snddev_info *d; struct pcm_channel *c, *ch; - struct pcmchan_caps *caps; int *vchanrate, direction, ret, newspd, restart; d = devclass_get_softc(pcm_devclass, VCHAN_SYSCTL_UNIT(oidp->oid_arg1)); @@ -467,13 +466,6 @@ sysctl_dev_pcm_vchanrate(SYSCTL_HANDLER_ARGS) } else restart = 0; - if (feeder_rate_round) { - caps = chn_getcaps(c); - RANGE(newspd, caps->minspeed, caps->maxspeed); - newspd = CHANNEL_SETSPEED(c->methods, - c->devinfo, newspd); - } - ret = chn_reset(c, c->format, newspd); if (ret == 0) { if (restart != 0) { @@ -488,7 +480,7 @@ sysctl_dev_pcm_vchanrate(SYSCTL_HANDLER_ARGS) } } } - *vchanrate = c->speed; + *vchanrate = sndbuf_getspd(c->bufsoft); CHN_UNLOCK(c); } @@ -583,7 +575,7 @@ sysctl_dev_pcm_vchanformat(SYSCTL_HANDLER_ARGS) } } } - *vchanformat = c->format; + *vchanformat = sndbuf_getfmt(c->bufsoft); CHN_UNLOCK(c); } @@ -607,11 +599,9 @@ vchan_create(struct pcm_channel *parent, struct pcm_channel **child) struct pcm_channel *ch; struct pcmchan_caps *parent_caps; uint32_t vchanfmt, vchanspd; - int ret, direction, r; - bool save; + int ret, direction; ret = 0; - save = false; d = parent->parentsnddev; PCM_BUSYASSERT(d); @@ -659,75 +649,9 @@ vchan_create(struct pcm_channel *parent, struct pcm_channel **child) goto fail; } - if (vchanfmt == 0) { - const char *vfmt; - - CHN_UNLOCK(parent); - r = resource_string_value(device_get_name(parent->dev), - device_get_unit(parent->dev), VCHAN_FMT_HINT(direction), - &vfmt); - CHN_LOCK(parent); - if (r != 0) - vfmt = NULL; - if (vfmt != NULL) { - vchanfmt = snd_str2afmt(vfmt); - if (vchanfmt != 0 && !(vchanfmt & AFMT_VCHAN)) - vchanfmt = 0; - } - if (vchanfmt == 0) - vchanfmt = VCHAN_DEFAULT_FORMAT; - save = true; - } - - if (vchanspd == 0) { - /* - * This is very sad. Few soundcards advertised as being - * able to do (insanely) higher/lower speed, but in - * reality, they simply can't. At least, we give user chance - * to set sane value via kernel hints or sysctl. - */ - CHN_UNLOCK(parent); - r = resource_int_value(device_get_name(parent->dev), - device_get_unit(parent->dev), VCHAN_SPD_HINT(direction), - &vchanspd); - CHN_LOCK(parent); - if (r != 0) { - /* No saved value, no hint, NOTHING. */ - vchanspd = VCHAN_DEFAULT_RATE; - RANGE(vchanspd, parent_caps->minspeed, - parent_caps->maxspeed); - } - save = true; - } - - /* - * Limit the speed between feeder_rate_min <-> feeder_rate_max. - */ - RANGE(vchanspd, feeder_rate_min, feeder_rate_max); - - if (feeder_rate_round) { - RANGE(vchanspd, parent_caps->minspeed, - parent_caps->maxspeed); - vchanspd = CHANNEL_SETSPEED(parent->methods, - parent->devinfo, vchanspd); - } - if ((ret = chn_reset(parent, vchanfmt, vchanspd)) != 0) goto fail; - if (save) { - /* - * Save new value. - */ - if (direction == PCMDIR_PLAY_VIRTUAL) { - d->pvchanformat = parent->format; - d->pvchanrate = parent->speed; - } else { - d->rvchanformat = parent->format; - d->rvchanrate = parent->speed; - } - } - /* * If the parent channel supports digital format, * enable passthrough mode. From nobody Sun Apr 6 00:28:28 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY986bf9z5sbPv; Sun, 06 Apr 2025 00:28: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 4ZVY983jfNz3wtG; Sun, 06 Apr 2025 00:28:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GtD4PHDjlQE+K0R7a98uHyddVJPqrhAgsA3CXQlVC9A=; b=gJvKvnqBqHuWvX/F1IS1VR0SuaxdRvup7OIERJniMrrIX6dDi5A/lA9Lmb36aD/yOq0f0V 65G1blc8Zn/FHMiTku6SxuUrIpsXyaYGO+tNBcFXXxMfREb4J86z/F+wVFMET+//vwVlmP Lz8R8kw5L5OdlKg/AUOhhcqpJdugOTUq2X4IETiovQj21Zo8OYlwC8gnKI7C8Av9/eLg4O ts3Kk/ih1TOuYcy+49Y/LydIKHl7u5Yw7JZzyxA6KZkCBOJChRfVTeYZESy5+nXiisMYpF m+pSgPEcQ5DhXERUPBPYVpmLz5NEWll9b8UBPx5cojrEVLICEh7B1/JxEB+z0A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899308; a=rsa-sha256; cv=none; b=xCuK0c/v5h62433yJL6wAqcgmLogPjnemV1/2F/x39LvddgxIb3x4uznjmizQtoZnbaIAO n8KFQsQviyZarNoL//CqJ4XNsh2aN2XxpbaiWRfHWO2gg6Lls6sUuANobAlXsgl+nPUu5G eWtm9BMxcxX81NN9dsKInEvfBaRGjecOuk1538v3GefVAawBYx18evjbYvHD2nkV0vLVqM 0aaiIreORCWdpyWz7zhEyKD5qtaYwFFGm9f/+KlLlV1TWzWi0Ue8sPEpvY732ErDqoxmqQ sDWNTRE8knWqC3qFHbX5PShN/rAdWnSJllRU3ZKLYbwvOYpHR45H285JH7aCeg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899308; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GtD4PHDjlQE+K0R7a98uHyddVJPqrhAgsA3CXQlVC9A=; b=x2GNWUV4K5ur0UIDHMXk4Gou0QH8UJ4wcJdHR1KOZQfw3WiHce39EwCxrwityhNE7MwB6L P5JKeq2vx28qrVlKuw4yUk2afkAs1qdZecuE4REPpondAeXmK6fSjDMVfHVBYv6aPl+QOB EqGDQPLEXTRNP4KsBM91TYm63pHdExLo3iDySFPCl6B+DGIIZqgfnvw6E/meVtu7W5ndHt gnPx2gE23iRXJj3s8HpoTMPVEtxxvAZALIvzTYpBs1V+V/1CFoeQJyyeSuNewh7IOq26jB Ysapx0KgeNlbEhiIo4w/5jsZG5F+LsxotwCDabeiR9ZxSXsz11y7EevpvPqFSg== 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 4ZVY983FVdzfDS; Sun, 06 Apr 2025 00:28: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 5360SSYS065709; Sun, 6 Apr 2025 00:28:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360SSWR065706; Sun, 6 Apr 2025 00:28:28 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:28 GMT Message-Id: <202504060028.5360SSWR065706@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 1728d26682c6 - stable/14 - sound: Implement AFMT_FLOAT support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1728d26682c65cb878971f55b4e87e24d0050524 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=1728d26682c65cb878971f55b4e87e24d0050524 commit 1728d26682c65cb878971f55b4e87e24d0050524 Author: Christos Margiolis AuthorDate: 2025-03-30 17:45:38 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:14 +0000 sound: Implement AFMT_FLOAT support Even though the OSS manual [1] advises against using AFMT_FLOAT, there are applications that expect the sound driver to support it, and might not work properly without it. This patch adds AFMT_F32_LE|BE (as well as AFMT_FLOAT for OSS compatibility) in sys/soundcard.h and implements AFMT_F32_LE|BE <-> AFMT_S32_LE|BE conversion functions. As a result, applications can write/read floats to/from sound(4), but internally, because sound(4) works with integers, we convert floating point samples to integer ones, before doing any processing. The reason for encoding/decoding IEEE754s manually, instead of using fpu_kern(9), is that fpu_kern(9) is not supported by all architectures, and also introduces significant overhead. The IEEE754 encoding/decoding implementation has been written by Ariff Abdullah [2]. [1] http://manuals.opensound.com/developer/AFMT_FLOAT.html [2] https://people.freebsd.org/~ariff/utils/ieee754.c PR: 157050, 184380, 264973, 280612, 281390 Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D47638 (cherry picked from commit e1bbaa71d62c8681a576f9f5bedf475c7541bd35) --- sys/dev/sound/pcm/channel.c | 4 +++ sys/dev/sound/pcm/feeder_chain.c | 2 ++ sys/dev/sound/pcm/feeder_rate.c | 4 +++ sys/dev/sound/pcm/feeder_volume.c | 2 ++ sys/dev/sound/pcm/pcm.h | 67 +++++++++++++++++++++++++++++++++++++-- sys/dev/sound/pcm/sound.h | 13 +++++--- sys/sys/soundcard.h | 8 +++++ tests/sys/sound/pcm_read_write.c | 6 ++++ 8 files changed, 98 insertions(+), 8 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 4a96505ada66..3aa7cf219d81 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -977,9 +977,13 @@ static const struct { #if BYTE_ORDER == LITTLE_ENDIAN { "s32le", "s32", "32", AFMT_S32_LE }, { "s32be", NULL, NULL, AFMT_S32_BE }, + { "f32le", "f32", NULL, AFMT_F32_LE }, + { "f32be", NULL, NULL, AFMT_F32_BE }, #else { "s32le", NULL, NULL, AFMT_S32_LE }, { "s32be", "s32", "32", AFMT_S32_BE }, + { "f32le", NULL, NULL, AFMT_F32_LE }, + { "f32be", "f32", NULL, AFMT_F32_BE }, #endif { "u32le", NULL, NULL, AFMT_U32_LE }, { "u32be", NULL, NULL, AFMT_U32_BE }, diff --git a/sys/dev/sound/pcm/feeder_chain.c b/sys/dev/sound/pcm/feeder_chain.c index 1c4ddca6cdd5..56de32441de7 100644 --- a/sys/dev/sound/pcm/feeder_chain.c +++ b/sys/dev/sound/pcm/feeder_chain.c @@ -102,6 +102,7 @@ static uint32_t feeder_chain_formats_multi[] = { AFMT_S16_LE, AFMT_S16_BE, AFMT_U16_LE, AFMT_U16_BE, AFMT_S24_LE, AFMT_S24_BE, AFMT_U24_LE, AFMT_U24_BE, AFMT_S32_LE, AFMT_S32_BE, AFMT_U32_LE, AFMT_U32_BE, + AFMT_F32_LE, AFMT_F32_BE, 0 }; @@ -111,6 +112,7 @@ static uint32_t feeder_chain_formats_fullmulti[] = { AFMT_S16_LE, AFMT_S16_BE, AFMT_U16_LE, AFMT_U16_BE, AFMT_S24_LE, AFMT_S24_BE, AFMT_U24_LE, AFMT_U24_BE, AFMT_S32_LE, AFMT_S32_BE, AFMT_U32_LE, AFMT_U32_BE, + AFMT_F32_LE, AFMT_F32_BE, 0 }; diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 1610211ff5f5..9ea454cdee1e 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -639,6 +639,8 @@ Z_DECLARE(U, 32, LE) Z_DECLARE(U, 16, BE) Z_DECLARE(U, 24, BE) Z_DECLARE(U, 32, BE) +Z_DECLARE(F, 32, LE) +Z_DECLARE(F, 32, BE) #endif enum { @@ -687,6 +689,8 @@ static const struct { Z_RESAMPLER_ENTRY(U, 16, BE), Z_RESAMPLER_ENTRY(U, 24, BE), Z_RESAMPLER_ENTRY(U, 32, BE), + Z_RESAMPLER_ENTRY(F, 32, LE), + Z_RESAMPLER_ENTRY(F, 32, BE), #endif }; diff --git a/sys/dev/sound/pcm/feeder_volume.c b/sys/dev/sound/pcm/feeder_volume.c index f72c6aa7ef4f..2d35bb56ef8f 100644 --- a/sys/dev/sound/pcm/feeder_volume.c +++ b/sys/dev/sound/pcm/feeder_volume.c @@ -93,6 +93,8 @@ FEEDVOLUME_DECLARE(U, 32, LE) FEEDVOLUME_DECLARE(U, 16, BE) FEEDVOLUME_DECLARE(U, 24, BE) FEEDVOLUME_DECLARE(U, 32, BE) +FEEDVOLUME_DECLARE(F, 32, LE) +FEEDVOLUME_DECLARE(F, 32, BE) #endif struct feed_volume_info { diff --git a/sys/dev/sound/pcm/pcm.h b/sys/dev/sound/pcm/pcm.h index 1de686b04097..7d0a8f0f431b 100644 --- a/sys/dev/sound/pcm/pcm.h +++ b/sys/dev/sound/pcm/pcm.h @@ -128,7 +128,8 @@ static const struct { static __always_inline __unused intpcm_t pcm_sample_read(const uint8_t *src, uint32_t fmt) { - intpcm_t v; + intpcm_t v, e, m; + bool s; fmt = AFMT_ENCODING(fmt); @@ -190,6 +191,34 @@ pcm_sample_read(const uint8_t *src, uint32_t fmt) v = INTPCM_T(src[3] | src[2] << 8 | src[1] << 16 | (int8_t)(src[0] ^ 0x80) << 24); break; + case AFMT_F32_LE: /* FALLTHROUGH */ + case AFMT_F32_BE: + if (fmt == AFMT_F32_LE) { + v = INTPCM_T(src[0] | src[1] << 8 | src[2] << 16 | + (int8_t)src[3] << 24); + } else { + v = INTPCM_T(src[3] | src[2] << 8 | src[1] << 16 | + (int8_t)src[0] << 24); + } + e = (v >> 23) & 0xff; + /* NaN, +/- Inf or too small */ + if (e == 0xff || e < 96) { + v = INTPCM_T(0); + break; + } + s = v & 0x80000000U; + if (e > 126) { + v = INTPCM_T((s == 0) ? PCM_S32_MAX : PCM_S32_MIN); + break; + } + m = 0x800000 | (v & 0x7fffff); + e += 8 - 127; + if (e < 0) + m >>= -e; + else + m <<= e; + v = INTPCM_T((s == 0) ? m : -m); + break; default: v = 0; printf("%s(): unknown format: 0x%08x\n", __func__, fmt); @@ -241,8 +270,38 @@ pcm_sample_read_calc(const uint8_t *src, uint32_t fmt) static __always_inline __unused void pcm_sample_write(uint8_t *dst, intpcm_t v, uint32_t fmt) { + intpcm_t r, e; + fmt = AFMT_ENCODING(fmt); + if (fmt & (AFMT_F32_LE | AFMT_F32_BE)) { + if (v == 0) + r = 0; + else if (v == PCM_S32_MAX) + r = 0x3f800000; + else if (v == PCM_S32_MIN) + r = 0x80000000U | 0x3f800000; + else { + r = 0; + if (v < 0) { + r |= 0x80000000U; + v = -v; + } + e = 127 - 8; + while ((v & 0x7f000000) != 0) { + v >>= 1; + e++; + } + while ((v & 0x7f800000) == 0) { + v <<= 1; + e--; + } + r |= (e & 0xff) << 23; + r |= v & 0x7fffff; + } + v = r; + } + switch (fmt) { case AFMT_AC3: *(int16_t *)dst = 0; @@ -295,13 +354,15 @@ pcm_sample_write(uint8_t *dst, intpcm_t v, uint32_t fmt) dst[1] = v >> 8; dst[0] = (v >> 16) ^ 0x80; break; - case AFMT_S32_LE: + case AFMT_S32_LE: /* FALLTHROUGH */ + case AFMT_F32_LE: dst[0] = v; dst[1] = v >> 8; dst[2] = v >> 16; dst[3] = v >> 24; break; - case AFMT_S32_BE: + case AFMT_S32_BE: /* FALLTHROUGH */ + case AFMT_F32_BE: dst[3] = v; dst[2] = v >> 8; dst[1] = v >> 16; diff --git a/sys/dev/sound/pcm/sound.h b/sys/dev/sound/pcm/sound.h index 74c710f6f843..f7411ee096c9 100644 --- a/sys/dev/sound/pcm/sound.h +++ b/sys/dev/sound/pcm/sound.h @@ -451,15 +451,17 @@ int sound_oss_card_info(oss_card_info *); #endif /* _KERNEL */ /* make figuring out what a format is easier. got AFMT_STEREO already */ -#define AFMT_32BIT (AFMT_S32_LE | AFMT_S32_BE | AFMT_U32_LE | AFMT_U32_BE) +#define AFMT_32BIT (AFMT_S32_LE | AFMT_S32_BE | AFMT_U32_LE | AFMT_U32_BE | \ + AFMT_F32_LE | AFMT_F32_BE) #define AFMT_24BIT (AFMT_S24_LE | AFMT_S24_BE | AFMT_U24_LE | AFMT_U24_BE) #define AFMT_16BIT (AFMT_S16_LE | AFMT_S16_BE | AFMT_U16_LE | AFMT_U16_BE) #define AFMT_G711 (AFMT_MU_LAW | AFMT_A_LAW) #define AFMT_8BIT (AFMT_G711 | AFMT_U8 | AFMT_S8) -#define AFMT_SIGNED (AFMT_S32_LE | AFMT_S32_BE | AFMT_S24_LE | AFMT_S24_BE | \ +#define AFMT_SIGNED (AFMT_S32_LE | AFMT_S32_BE | AFMT_F32_LE | AFMT_F32_BE | \ + AFMT_S24_LE | AFMT_S24_BE | \ AFMT_S16_LE | AFMT_S16_BE | AFMT_S8) -#define AFMT_BIGENDIAN (AFMT_S32_BE | AFMT_U32_BE | AFMT_S24_BE | AFMT_U24_BE | \ - AFMT_S16_BE | AFMT_U16_BE) +#define AFMT_BIGENDIAN (AFMT_S32_BE | AFMT_U32_BE | AFMT_F32_BE | \ + AFMT_S24_BE | AFMT_U24_BE | AFMT_S16_BE | AFMT_U16_BE) #define AFMT_CONVERTIBLE (AFMT_8BIT | AFMT_16BIT | AFMT_24BIT | \ AFMT_32BIT) @@ -509,7 +511,8 @@ int sound_oss_card_info(oss_card_info *); #define AFMT_U8_NE AFMT_U8 #define AFMT_S8_NE AFMT_S8 -#define AFMT_SIGNED_NE (AFMT_S8_NE | AFMT_S16_NE | AFMT_S24_NE | AFMT_S32_NE) +#define AFMT_SIGNED_NE (AFMT_S8_NE | AFMT_S16_NE | AFMT_S24_NE | \ + AFMT_S32_NE | AFMT_F32_NE) #define AFMT_NE (AFMT_SIGNED_NE | AFMT_U8_NE | AFMT_U16_NE | \ AFMT_U24_NE | AFMT_U32_NE) diff --git a/sys/sys/soundcard.h b/sys/sys/soundcard.h index b5434b930215..a0342ebf58f0 100644 --- a/sys/sys/soundcard.h +++ b/sys/sys/soundcard.h @@ -184,6 +184,8 @@ struct snd_size { #define AFMT_S24_BE 0x00020000 /* Big endian signed 24-bit */ #define AFMT_U24_LE 0x00040000 /* Little endian unsigned 24-bit */ #define AFMT_U24_BE 0x00080000 /* Big endian unsigned 24-bit */ +#define AFMT_F32_LE 0x10000000 /* Little endian 32-bit floating point */ +#define AFMT_F32_BE 0x20000000 /* Big endian 32-bit floating point */ /* Machine dependent AFMT_* definitions. */ #if BYTE_ORDER == LITTLE_ENDIAN @@ -199,6 +201,8 @@ struct snd_size { #define AFMT_U16_OE AFMT_U16_BE #define AFMT_U24_OE AFMT_U24_BE #define AFMT_U32_OE AFMT_U32_BE +#define AFMT_F32_NE AFMT_F32_LE +#define AFMT_F32_OE AFMT_F32_BE #else #define AFMT_S16_OE AFMT_S16_LE #define AFMT_S24_OE AFMT_S24_LE @@ -212,8 +216,12 @@ struct snd_size { #define AFMT_U16_NE AFMT_U16_BE #define AFMT_U24_NE AFMT_U24_BE #define AFMT_U32_NE AFMT_U32_BE +#define AFMT_F32_NE AFMT_F32_BE +#define AFMT_F32_OE AFMT_F32_LE #endif +#define AFMT_FLOAT AFMT_F32_NE /* compatibility alias */ + #define AFMT_STEREO 0x10000000 /* can do/want stereo */ /* diff --git a/tests/sys/sound/pcm_read_write.c b/tests/sys/sound/pcm_read_write.c index 2aba19840735..a77b953a78a0 100644 --- a/tests/sys/sound/pcm_read_write.c +++ b/tests/sys/sound/pcm_read_write.c @@ -70,6 +70,12 @@ static struct afmt_test_data { {"u32be_1", {0x01, 0x02, 0x03, 0x04}, 4, AFMT_U32_BE, 0x81020304}, {"u32be_2", {0x81, 0x82, 0x83, 0x84}, 4, AFMT_U32_BE, 0x01828384}, + /* 32 bit floating point sample formats. */ + {"f32le_1", {0x00, 0x00, 0x00, 0x3f}, 4, AFMT_F32_LE, 0x40000000}, + {"f32le_2", {0x00, 0x00, 0x00, 0xbf}, 4, AFMT_F32_LE, 0xc0000000}, + {"f32be_1", {0x3f, 0x00, 0x00, 0x00}, 4, AFMT_F32_BE, 0x40000000}, + {"f32be_2", {0xbf, 0x00, 0x00, 0x00}, 4, AFMT_F32_BE, 0xc0000000}, + /* u-law and A-law sample formats. */ {"mulaw_1", {0x01, 0x00, 0x00, 0x00}, 1, AFMT_MU_LAW, 0xffffff87}, {"mulaw_2", {0x81, 0x00, 0x00, 0x00}, 1, AFMT_MU_LAW, 0x00000079}, From nobody Sun Apr 6 00:28:29 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY995mN3z5sb5h; Sun, 06 Apr 2025 00:28: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 4ZVY994gT6z3wyH; Sun, 06 Apr 2025 00:28:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899309; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I61PMHjgfICBbehnfcotA+UPPaTJjubaMCNxBA3+7eo=; b=yMNh+nuC2OLp8dDGaOqyNrh0+I/sOd08FOL9nrmybcLqUOr+5SIc7VhjA9E4i9Alh6GWF5 tHfugfIOVi/4++DIxCjx1JHg9YMH/IAGD/0YxikLNra/wdUff0uf25/l5WEBHQ3dKQT1Gb 1URt1gXromz6ccQI8fHd0uPNOQYHNZxZ+/BxCXDXqTqMCG4Yk+nvbONhjMOUB673a2OvTe 2XX46HUawQ1VmTxIU9oCgsR2ncFR4TyY7qf4PjuyrhHgjjT9yX0EsP65zRmwz9TsR3U0Ne f5JAqh6bhoeMJ2z/4bKIbLJ5VeFZBglgo8+H6yULwdymI8LB2yfqGtXCElOBlA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899309; a=rsa-sha256; cv=none; b=s2Cwhg8YKg0DeD/4K+mTWNy7NDenvWjT/3v3XfmxXcXWoDujzHCaSb0tSRM3yvfYiDFWkQ dqihN1pwZFA9FBnzsu7dFt834b10kt0LPWwJgu9G8apT8KJrM3ir1dp3eiA2YuLphUDJWF hCZTnWy875fWDQeHyDKdEA0JoZ8HJiuVBwe/NKVkOn3xu/U+Vcemyhx826KxkhMO4SdYye 4FB7hpUJGOIOaHqSFKYvEilOJFSVBs1Mb0AvjeznUlwVkpM14m7kbM2aYYEHwcHc/D5mri bTYshXxk37P4j7H50tpgK8UekRJaLtfJGQi4BNwqd+kChBnz36SJcw2IykGfsA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899309; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=I61PMHjgfICBbehnfcotA+UPPaTJjubaMCNxBA3+7eo=; b=nfh5qbG4rHzkHAmluslZ7WkGeNJ17NTx52Qegr3TwesSwZRN+NLBP63nNRJEdRQR4zerue Y8I7h/Xri1ecO3/OZZ1HX5KjH5DRHafYnV7RSnHm9CfFsQe6a4A56bVZtErZ9wJejW8Adm 14yw4Hmiyams0IxqaVvPT1qDZM0pbX5DNxOUlGPjSkj6lveyRnSaY9nN3k1qRgzNgXd4AX DaBWHz9+xVu26euCSzAX5gXEs2nOtvlKhJYm0/h6BkPpFB9YrGoZkrJwg/skjjg53hKFTB IilvJKR9JE9/BI/NEjohSMN+f4APXx9uAJrjDl44QnsTf3k3ryPBCL5ewWPUcA== 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 4ZVY994FsBzdjj; Sun, 06 Apr 2025 00:28: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 5360STlK065742; Sun, 6 Apr 2025 00:28:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360ST0Q065739; Sun, 6 Apr 2025 00:28:29 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:29 GMT Message-Id: <202504060028.5360ST0Q065739@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 1890f0b0df24 - stable/14 - beep(1): Use AFMT_FLOAT List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 1890f0b0df244fd36c511303e2068d5c6f3aa174 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=1890f0b0df244fd36c511303e2068d5c6f3aa174 commit 1890f0b0df244fd36c511303e2068d5c6f3aa174 Author: Christos Margiolis AuthorDate: 2025-03-30 17:45:48 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:14 +0000 beep(1): Use AFMT_FLOAT AFMT_FLOAT is supported by sound(4) as of FILLME, so use it here, since the whole program works with floats already. Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D47639 (cherry picked from commit 1166cfd96f3403edb082387fbc3a4d4aa249bce8) --- usr.bin/beep/beep.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/usr.bin/beep/beep.c b/usr.bin/beep/beep.c index 2696bacfacf4..0bdfe2cf97a7 100644 --- a/usr.bin/beep/beep.c +++ b/usr.bin/beep/beep.c @@ -152,7 +152,7 @@ usage(void) int main(int argc, char **argv) { - int32_t *buffer; + float *buffer; size_t slope; size_t size; size_t off; @@ -208,9 +208,9 @@ main(int argc, char **argv) if (ioctl(f, SOUND_PCM_WRITE_CHANNELS, &c) != 0) errx(1, "ioctl SOUND_PCM_WRITE_CHANNELS(1) failed"); - c = AFMT_S32_NE; + c = AFMT_FLOAT; if (ioctl(f, SNDCTL_DSP_SETFMT, &c) != 0) - errx(1, "ioctl SNDCTL_DSP_SETFMT(AFMT_S32_NE) failed"); + errx(1, "ioctl SNDCTL_DSP_SETFMT(AFMT_FLOAT) failed"); if (ioctl(f, SNDCTL_DSP_SPEED, &sample_rate) != 0) errx(1, "ioctl SNDCTL_DSP_SPEED(%d) failed", sample_rate); @@ -251,7 +251,7 @@ main(int argc, char **argv) else if (off > (size - slope)) sample = sample * (size - off - 1) / (float)slope; - buffer[off] = sample * 0x7fffff00; + buffer[off] = sample; } if (write(f, buffer, size * sizeof(buffer[0])) != From nobody Sun Apr 6 00:28:30 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY9C6P0rz5sbWD; Sun, 06 Apr 2025 00:28:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZVY9B64fZz3x1Q; Sun, 06 Apr 2025 00:28:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899310; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DNx99tiukrRafhirG+sBeuxPsze1jdofW08Doume1XE=; b=GfrXr17qhmPr+PtxGW45jkek8yIaROfGVmWswpANQ/gqAKGKGKZp3W7DdPyea8qj3R1vLf 4fuopLETVMeVaAD0gpwmIn9FpiSe56dbT/WxvzKdywH9gtudEb0ov2hSmqFUfK+WqAm/JZ xJUmtffUXpkz/mPTRU6SwUYcYc5mI+lAIh4v8tNRCXJfZ4BAVkfMKw1GAXkkZWYsnFDsvQ RakUAE1b4SBmPBPUctPem3xTv6aUjxzRBfTr+6Q4wwP9H8w1zcpETje0HqcAnjWOS1bal9 8Hf8/KmqqXJ6/3vQ1uLZue++7aauONyWtBSxKIfs/iW+fdClhhUdQGVi12eOQg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899310; a=rsa-sha256; cv=none; b=ipHTOykEkxuRi1eEbyC2AKmhyFgqq5oXgiiceD+704v3/+xmjwCAAhATMcH4yvETeUZQnq YSuu7KzKNnoa7VbK3xybDTjtQOVa1M4P7ReNIYn1PEaVFT5wo21COkJNGVQnKD0VVaelav Y2U32FP1jKYWDYEfTyaHYXVBYuUFQSDo0LngYmprBZa+pBn4MVDxgpnbtI5BKXPmXTIiFg FXEYdMkKn9Lw1crnr1rFaEuQzNhivQ7T09tds2QGFieEfQ1QowH48l+y6O7ByDfgeEFjxz /UMcPGORgQkBFgbnPT2vM5ELDoqgZBfkKH2yOPrFoI4JBdszW8A9fe0M36xn+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899310; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DNx99tiukrRafhirG+sBeuxPsze1jdofW08Doume1XE=; b=GbowQi3CaE2vqrDI2JkAQeZXcmrpYc0ZqDLKWchIEutQkm7gs6OrVsiXtIPcAFjl6vD4AO iXwoVk2jKk4FftZ5e35ARmByTz25/AWPD19cLWb8Sl1zbO0SmJg0jcey2wP/jznouJq8um RVa1RdigDqJQzQf+hTgOH7Ee0yDKXLM0heKHQKLb86FnMba6hPZzyleO51dvBMdMUu+2qs gR4kYf6wmCvkWeBFbL0oKXK93y0NxLJriwLej9bGLcjsbSnTiAnQYQqcoYJChFymCKailg RGIc6KF6UR1ogsYK8qK563ULrcLs3ycmPPwh/uJGvSYDRXUYA0HFtF72qnTtzw== 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 4ZVY9B4x8NzfXJ; Sun, 06 Apr 2025 00:28: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 5360SUL4065778; Sun, 6 Apr 2025 00:28:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360SUtk065775; Sun, 6 Apr 2025 00:28:30 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:30 GMT Message-Id: <202504060028.5360SUtk065775@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 831c30f09ea8 - stable/14 - sound: Improve afmt_tab List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 831c30f09ea8a38d6b8b45d3e24b72cc2075086c Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=831c30f09ea8a38d6b8b45d3e24b72cc2075086c commit 831c30f09ea8a38d6b8b45d3e24b72cc2075086c Author: Christos Margiolis AuthorDate: 2025-03-30 17:45:53 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:14 +0000 sound: Improve afmt_tab Reduce ifdefs, and add aliases for the unsigned formats. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: dev_submerge.ch Differential Revision: https://reviews.freebsd.org/D48009 (cherry picked from commit a4aff024fd53a38ba08bbf5309589e1865ffe024) --- sys/dev/sound/pcm/channel.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 3aa7cf219d81..31a56a8b82e2 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -961,33 +961,38 @@ static const struct { { "mulaw", NULL, NULL, AFMT_MU_LAW }, { "u8", "8", NULL, AFMT_U8 }, { "s8", NULL, NULL, AFMT_S8 }, + { "ac3", NULL, NULL, AFMT_AC3 }, #if BYTE_ORDER == LITTLE_ENDIAN { "s16le", "s16", "16", AFMT_S16_LE }, { "s16be", NULL, NULL, AFMT_S16_BE }, -#else - { "s16le", NULL, NULL, AFMT_S16_LE }, - { "s16be", "s16", "16", AFMT_S16_BE }, -#endif - { "u16le", NULL, NULL, AFMT_U16_LE }, - { "u16be", NULL, NULL, AFMT_U16_BE }, - { "s24le", NULL, NULL, AFMT_S24_LE }, + { "s24le", "s24", "24", AFMT_S24_LE }, { "s24be", NULL, NULL, AFMT_S24_BE }, - { "u24le", NULL, NULL, AFMT_U24_LE }, - { "u24be", NULL, NULL, AFMT_U24_BE }, -#if BYTE_ORDER == LITTLE_ENDIAN { "s32le", "s32", "32", AFMT_S32_LE }, { "s32be", NULL, NULL, AFMT_S32_BE }, { "f32le", "f32", NULL, AFMT_F32_LE }, { "f32be", NULL, NULL, AFMT_F32_BE }, + { "u16le", "u16", NULL, AFMT_U16_LE }, + { "u16be", NULL, NULL, AFMT_U16_BE }, + { "u24le", "u24", NULL, AFMT_U24_LE }, + { "u24be", NULL, NULL, AFMT_U24_BE }, + { "u32le", "u32", NULL, AFMT_U32_LE }, + { "u32be", NULL, NULL, AFMT_U32_BE }, #else + { "s16le", NULL, NULL, AFMT_S16_LE }, + { "s16be", "s16", "16", AFMT_S16_BE }, + { "s24le", NULL, NULL, AFMT_S24_LE }, + { "s24be", "s24", "24", AFMT_S24_BE }, { "s32le", NULL, NULL, AFMT_S32_LE }, { "s32be", "s32", "32", AFMT_S32_BE }, { "f32le", NULL, NULL, AFMT_F32_LE }, { "f32be", "f32", NULL, AFMT_F32_BE }, -#endif + { "u16le", NULL, NULL, AFMT_U16_LE }, + { "u16be", "u16", NULL, AFMT_U16_BE }, + { "u24le", NULL, NULL, AFMT_U24_LE }, + { "u24be", "u24", NULL, AFMT_U24_BE }, { "u32le", NULL, NULL, AFMT_U32_LE }, - { "u32be", NULL, NULL, AFMT_U32_BE }, - { "ac3", NULL, NULL, AFMT_AC3 }, + { "u32be", "u32", NULL, AFMT_U32_BE }, +#endif { NULL, NULL, NULL, 0 } }; From nobody Sun Apr 6 00:28:32 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY9F4swfz5sbSL; Sun, 06 Apr 2025 00:28: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 4ZVY9F0XTyz3xC3; Sun, 06 Apr 2025 00:28:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899313; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tqueHYdWUYiJQkHAF7W4HQdsC3HUwMTHFg7L132QwJA=; b=XjFHSjXhA287ksSUj1qYeIH5b3c81mwiPqOeoisXj8uOaLRciqPf8sPLc1RBCM1B/EWZdq 6QJ7tb8mE2zlP/66IDKRIkMzN9Gw1Jvy1yHfeRS+tAfPb2DzRSdC7mWnoqIHX/o0Xu53TR pEOebuf9ar738jcCzBfDetJfWYcLAvvQvSMfWnKk9M95UGFyR03Q8IyjbPTayj7UeKqzia XIeOwLQ8oOS2kT+wxV4YnqVXhX02oInKCPBtKebXWd1RX0U8RWzrys18JOf27P/xFH77cq K/JQRtM97wBOOZtYRZQxPv59zqXxi6tAOrbYfj1moHVeEyIZ9iTeEv0M6RAbzQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899313; a=rsa-sha256; cv=none; b=HxfPS2acywGEPla0gNwnpPaOV/UJE28VyCfwGyGJZApVVUwUInWbheW0UAuXm87UG25kN8 0GPxdUF/6U3XyYrXFvwv7oJi+hHmExSDZAZMSBgHnubbG/RlZ9ry0qgKmItn2z3/sriZ9Y Cv5NwMCIc0KsIAne1lKj9pArup1tiuRAGYvF5//Pc88f4ZzzlQ6PW5GjoNT/Tx1eK762vz mV+Zvpu606zh4zNAHEXeTmmNt33BnfoPWK4DsQuGLVmA+CvTg3Yyh+FlQTgFZYwl2FW1m3 Nz+wwpAHwn/RmiIdSBL1JdS4z7Ee3/V+Rbla4rWbrG0BY08FxutnIjHZG6CdFg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899313; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tqueHYdWUYiJQkHAF7W4HQdsC3HUwMTHFg7L132QwJA=; b=aDpCzdJyGW90OckVLmHzfCJa2SU1kR3dgvD8+I9VYxbUjg9jE7WiA5vuCC8Xtntbj1dxJJ c2kKtdwJbtpoUtN+x4BnPP0djrCBb2XNC8UVt6P7IRV9OYRQv1pZvgRfX4Po9Ia8HF5GRI RjGyqZOHw7p9z595YsDDh43QsIMgUcHGlgvF2u6E7/eWJYSCA9cED7u9q0v+3RLBTl/Sd9 7dD1hF5umy9wn/mMOC7TbQC6qZLcqmLkhG4MDhAwyIFUiOPvTjvl1vvrt6KfIgg4kfKkae KPwp6bsKjtRszSuNSf6ruSiwJWbrdG4LzQfblUTYho5NkkGu862DJcVp78b3+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 4ZVY9F049rzfjv; Sun, 06 Apr 2025 00:28: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 5360SWl1065853; Sun, 6 Apr 2025 00:28:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360SWUN065850; Sun, 6 Apr 2025 00:28:32 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:32 GMT Message-Id: <202504060028.5360SWUN065850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 8c991c4b0695 - stable/14 - sound: Fix regression in pcm/feeder_mixer.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8c991c4b06954371886413d7a4eb2f0569721857 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=8c991c4b06954371886413d7a4eb2f0569721857 commit 8c991c4b06954371886413d7a4eb2f0569721857 Author: Christos Margiolis AuthorDate: 2025-03-30 21:27:09 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:15 +0000 sound: Fix regression in pcm/feeder_mixer.c This call was meant to be the default case in the first place, but somehow missed this. Reported by: glebius Fixes: 4021fa32d92d ("sound: Simplify pcm/feeder_mixer.c") MFC after: 1 week Sponsored by: The FreeBSD Foundation (cherry picked from commit b6420b5ea5bcdeb859a2b3357e5dbaafe7aaff88) --- sys/dev/sound/pcm/feeder_mixer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/dev/sound/pcm/feeder_mixer.c b/sys/dev/sound/pcm/feeder_mixer.c index 1d3b7e31d055..b6b81ad9a51c 100644 --- a/sys/dev/sound/pcm/feeder_mixer.c +++ b/sys/dev/sound/pcm/feeder_mixer.c @@ -337,9 +337,11 @@ feed_mixer_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, feed_mixer_apply(tmp, b, cnt, AFMT_S32_NE); break; + default: + feed_mixer_apply(tmp, b, cnt, + info->format); + break; } - feed_mixer_apply(tmp, b, cnt, - info->format); if (cnt > rcnt) rcnt = cnt; } From nobody Sun Apr 6 00:28:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVY9D5Qrqz5sbQ1; Sun, 06 Apr 2025 00:28: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 4ZVY9C6rWGz3wyZ; Sun, 06 Apr 2025 00:28:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VRFmRgPUaDungoFUmODB2SvKhQ1plrH+P9C7W240hyg=; b=npg2Zqh+qOd+AW0wmDa6rmABbpk+vlVSP36hZbwJ+P1GyqOCQIIq402gQLMGz1wdPKYwXt idtmGG7uIyXRuPEhfT2HlIbrB75bIWJ5HveSkGCxxN7t6sybLmdvGRYsvbJyByUIsi9xnd JtIfZ8REG2efmzyAQEeuK24ntkK7v+O2rZO9I3HbWJVX7+qGhfyJ5Lsd7KhPzN7cBdm65/ Jomy45epH074riPj8vJBk9mXZfrGzdv0E+w/HJLUpTG20m9zyyNexvjH1yp3AQOd/918je CCDuKHQAaZ/btnpxIMc9BY1bSGHXa97oBs/UK9Z26WCFTA4HJzLlLcypeW2hHg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743899312; a=rsa-sha256; cv=none; b=rCQbXT5ndCAJFIcSLihHj181ZG+HDvY5T/Ug45fSK9UFOhK6mKXfdzm5em1JOluSl5N1ao Dqi9Y4GAdNDts/Xe7itSZAn3HQH9R5LifN0y8Nva1+PU6I6N+WgWVig00zE+Op2jlkNW9t F9LjRjzd5FaaZpDiLlPTlwhIeKyomAsnpFg4dAV+F7AeuHRpB5wB2de/9CCUjBFSTCU6wc H6DrWdn/sHpXPamu3cliqbDDKug0CQEZsHeGQAsC1xphTM+Q9jLL7XMvOgHSmRe9ceZMYr ECrIKi629w80LNJNoGNmuVE/BPWDjC1Z5RpUsduLnTSWDoketJEKnQMB0gz9rQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743899312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=VRFmRgPUaDungoFUmODB2SvKhQ1plrH+P9C7W240hyg=; b=Sg75rSKAfqM5t17zkYub9bFhdIGJuFClvRR7vMJeFJEYR0D/LVtycRrKJPtBhCujtjCsh3 CW056nFkNnHO8D0uNqJVLEc8tzkuxfRy25kPMsfKR0PBq1OAH/ARJRkp+7sVRKP2bvqHPT iPiJdvH6u0ZqTNFvv//p0gUlmXuxSbjeY9SQgdmKF9Kwv/6upfJRZwOl3JVIIV88ry6hCk ikx5HJaHkcXKEGJs6oeY9nm52p4Lpaui7FCbMmpfkIej6IvWXMxe2M1BU2WYOy0Q8jH3Qw DZu2x6Mq7RxxDtPvMrV+4rQD+9QZGpOwAiiNdKTb6hYd/39gUsNB9/NAkZbh9g== 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 4ZVY9C6GmLzfHJ; Sun, 06 Apr 2025 00:28:31 +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 5360SVSR065812; Sun, 6 Apr 2025 00:28:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5360SV0l065809; Sun, 6 Apr 2025 00:28:31 GMT (envelope-from git) Date: Sun, 6 Apr 2025 00:28:31 GMT Message-Id: <202504060028.5360SV0l065809@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Christos Margiolis Subject: git: 2254bef61b7c - stable/14 - sound: Use bus_topo_lock() where appropriate List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2254bef61b7c36f2d0ab2fc62d1a28ef131102d9 Auto-Submitted: auto-generated The branch stable/14 has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=2254bef61b7c36f2d0ab2fc62d1a28ef131102d9 commit 2254bef61b7c36f2d0ab2fc62d1a28ef131102d9 Author: Christos Margiolis AuthorDate: 2025-03-30 17:46:14 +0000 Commit: Christos Margiolis CommitDate: 2025-04-06 00:28:14 +0000 sound: Use bus_topo_lock() where appropriate Lock around uses of devclass_*() and replace leftover CTLFLAG_NEEDGIANTs with CTLFLAG_MPSAFE. Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: imp, jhb Differential Revision: https://reviews.freebsd.org/D46700 (cherry picked from commit 35400672df83e337f8792df1972a15003b603930) --- sys/dev/sound/pcm/channel.c | 6 ++++-- sys/dev/sound/pcm/dsp.c | 6 ++++++ sys/dev/sound/pcm/feeder_rate.c | 4 +++- sys/dev/sound/pcm/mixer.c | 5 +++++ sys/dev/sound/pcm/sound.c | 19 +++++++++++++++++-- sys/dev/sound/pcm/vchan.c | 28 +++++++++++++++++++++++----- 6 files changed, 58 insertions(+), 10 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 31a56a8b82e2..4d13f20a5262 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -132,6 +132,7 @@ chn_vpc_proc(int reset, int db) struct pcm_channel *c; int i; + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); @@ -150,6 +151,7 @@ chn_vpc_proc(int reset, int db) PCM_RELEASE(d); PCM_UNLOCK(d); } + bus_topo_unlock(); } static int @@ -170,7 +172,7 @@ sysctl_hw_snd_vpc_0db(SYSCTL_HANDLER_ARGS) return (0); } SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_0db, - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, 0, sizeof(int), + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, 0, sizeof(int), sysctl_hw_snd_vpc_0db, "I", "0db relative level"); @@ -190,7 +192,7 @@ sysctl_hw_snd_vpc_reset(SYSCTL_HANDLER_ARGS) return (0); } SYSCTL_PROC(_hw_snd, OID_AUTO, vpc_reset, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, 0, sizeof(int), + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, sizeof(int), sysctl_hw_snd_vpc_reset, "I", "reset volume on all channels"); diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c index 422c64c1b880..c5caeea8a002 100644 --- a/sys/dev/sound/pcm/dsp.c +++ b/sys/dev/sound/pcm/dsp.c @@ -2016,6 +2016,7 @@ dsp_oss_audioinfo(struct cdev *i_dev, oss_audioinfo *ai, bool ex) if (ai->dev == -1 && i_dev->si_devsw != &dsp_cdevsw) return (EINVAL); + bus_topo_lock(); for (unit = 0; pcm_devclass != NULL && unit < devclass_get_maxunit(pcm_devclass); unit++) { d = devclass_get_softc(pcm_devclass, unit); @@ -2023,6 +2024,7 @@ dsp_oss_audioinfo(struct cdev *i_dev, oss_audioinfo *ai, bool ex) if ((ai->dev == -1 && unit == snd_unit) || ai->dev == unit) { dsp_oss_audioinfo_unavail(ai, unit); + bus_topo_unlock(); return (0); } else { d = NULL; @@ -2041,6 +2043,7 @@ dsp_oss_audioinfo(struct cdev *i_dev, oss_audioinfo *ai, bool ex) d = NULL; } } + bus_topo_unlock(); /* Exhausted the search -- nothing is locked, so return. */ if (d == NULL) @@ -2197,6 +2200,7 @@ dsp_oss_engineinfo(struct cdev *i_dev, oss_audioinfo *ai) * Search for the requested audio device (channel). Start by * iterating over pcm devices. */ + bus_topo_lock(); for (unit = 0; pcm_devclass != NULL && unit < devclass_get_maxunit(pcm_devclass); unit++) { d = devclass_get_softc(pcm_devclass, unit); @@ -2346,9 +2350,11 @@ dsp_oss_engineinfo(struct cdev *i_dev, oss_audioinfo *ai) CHN_UNLOCK(ch); PCM_UNLOCK(d); + bus_topo_unlock(); return (0); } + bus_topo_unlock(); /* Exhausted the search -- nothing is locked, so return. */ return (EINVAL); diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index 9ea454cdee1e..9c29142b9d6b 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -258,6 +258,7 @@ sysctl_hw_snd_feeder_rate_quality(SYSCTL_HANDLER_ARGS) * set resampler quality if and only if it is exist as * part of feeder chains and the channel is idle. */ + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); @@ -279,11 +280,12 @@ sysctl_hw_snd_feeder_rate_quality(SYSCTL_HANDLER_ARGS) PCM_RELEASE(d); PCM_UNLOCK(d); } + bus_topo_unlock(); return (0); } SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_quality, - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, 0, sizeof(int), + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, 0, sizeof(int), sysctl_hw_snd_feeder_rate_quality, "I", "sample rate converter quality ("__XSTRING(Z_QUALITY_MIN)"=low .. " __XSTRING(Z_QUALITY_MAX)"=high)"); diff --git a/sys/dev/sound/pcm/mixer.c b/sys/dev/sound/pcm/mixer.c index 7bd0a2e14c46..092af3298f0e 100644 --- a/sys/dev/sound/pcm/mixer.c +++ b/sys/dev/sound/pcm/mixer.c @@ -1444,12 +1444,14 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi) * There's a 1:1 relationship between mixers and PCM devices, so * begin by iterating over PCM devices and search for our mixer. */ + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); if (!PCM_REGISTERED(d)) { if ((mi->dev == -1 && i == snd_unit) || mi->dev == i) { mixer_oss_mixerinfo_unavail(mi, i); + bus_topo_unlock(); return (0); } else continue; @@ -1470,6 +1472,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi) if (d->mixer_dev->si_drv1 == NULL) { mixer_oss_mixerinfo_unavail(mi, i); PCM_UNLOCK(d); + bus_topo_unlock(); return (0); } @@ -1550,8 +1553,10 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi) PCM_UNLOCK(d); + bus_topo_unlock(); return (0); } + bus_topo_unlock(); return (EINVAL); } diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c index 99d8065c765d..794e1586b511 100644 --- a/sys/dev/sound/pcm/sound.c +++ b/sys/dev/sound/pcm/sound.c @@ -116,17 +116,21 @@ sysctl_hw_snd_default_unit(SYSCTL_HANDLER_ARGS) unit = snd_unit; error = sysctl_handle_int(oidp, &unit, 0, req); if (error == 0 && req->newptr != NULL) { + bus_topo_lock(); d = devclass_get_softc(pcm_devclass, unit); - if (!PCM_REGISTERED(d) || CHN_EMPTY(d, channels.pcm)) + if (!PCM_REGISTERED(d) || CHN_EMPTY(d, channels.pcm)) { + bus_topo_unlock(); return EINVAL; + } snd_unit = unit; snd_unit_auto = 0; + bus_topo_unlock(); } return (error); } /* XXX: do we need a way to let the user change the default unit? */ SYSCTL_PROC(_hw_snd, OID_AUTO, default_unit, - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_ANYBODY | CTLFLAG_NEEDGIANT, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_ANYBODY | CTLFLAG_MPSAFE, 0, sizeof(int), sysctl_hw_snd_default_unit, "I", "default sound device"); @@ -213,6 +217,7 @@ pcm_best_unit(int old) best = -1; bestprio = -100; + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); @@ -228,6 +233,8 @@ pcm_best_unit(int old) bestprio = prio; } } + bus_topo_unlock(); + return (best); } @@ -556,6 +563,7 @@ sound_oss_sysinfo(oss_sysinfo *si) j = 0; + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); @@ -582,6 +590,7 @@ sound_oss_sysinfo(oss_sysinfo *si) PCM_UNLOCK(d); } + bus_topo_unlock(); si->numsynths = 0; /* OSSv4 docs: this field is obsolete */ /** @@ -602,9 +611,11 @@ sound_oss_sysinfo(oss_sysinfo *si) * break if they try to loop through all mixers and some of them are * not available. */ + bus_topo_lock(); si->nummixers = devclass_get_maxunit(pcm_devclass); si->numcards = devclass_get_maxunit(pcm_devclass); si->numaudios = devclass_get_maxunit(pcm_devclass); + bus_topo_unlock(); /* OSSv4 docs: Intended only for test apps; API doesn't really have much of a concept of cards. Shouldn't be used by applications. */ @@ -630,6 +641,7 @@ sound_oss_card_info(oss_card_info *si) struct snddev_info *d; int i; + bus_topo_lock(); for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { d = devclass_get_softc(pcm_devclass, i); @@ -657,8 +669,11 @@ sound_oss_card_info(oss_card_info *si) PCM_UNLOCK(d); } + bus_topo_unlock(); return (0); } + bus_topo_unlock(); + return (ENXIO); } diff --git a/sys/dev/sound/pcm/vchan.c b/sys/dev/sound/pcm/vchan.c index 1f184f21807e..31a4f7db8d70 100644 --- a/sys/dev/sound/pcm/vchan.c +++ b/sys/dev/sound/pcm/vchan.c @@ -259,9 +259,13 @@ sysctl_dev_pcm_vchans(SYSCTL_HANDLER_ARGS) struct snddev_info *d; int err, enabled, flag; + bus_topo_lock(); d = devclass_get_softc(pcm_devclass, VCHAN_SYSCTL_UNIT(oidp->oid_arg1)); - if (!PCM_REGISTERED(d)) + if (!PCM_REGISTERED(d)) { + bus_topo_unlock(); return (EINVAL); + } + bus_topo_unlock(); PCM_LOCK(d); PCM_WAIT(d); @@ -317,9 +321,13 @@ sysctl_dev_pcm_vchanmode(SYSCTL_HANDLER_ARGS) int *vchanmode, direction, ret; char dtype[16]; + bus_topo_lock(); d = devclass_get_softc(pcm_devclass, VCHAN_SYSCTL_UNIT(oidp->oid_arg1)); - if (!PCM_REGISTERED(d)) + if (!PCM_REGISTERED(d)) { + bus_topo_unlock(); return (EINVAL); + } + bus_topo_unlock(); PCM_LOCK(d); PCM_WAIT(d); @@ -407,9 +415,13 @@ sysctl_dev_pcm_vchanrate(SYSCTL_HANDLER_ARGS) struct pcm_channel *c, *ch; int *vchanrate, direction, ret, newspd, restart; + bus_topo_lock(); d = devclass_get_softc(pcm_devclass, VCHAN_SYSCTL_UNIT(oidp->oid_arg1)); - if (!PCM_REGISTERED(d)) + if (!PCM_REGISTERED(d)) { + bus_topo_unlock(); return (EINVAL); + } + bus_topo_unlock(); PCM_LOCK(d); PCM_WAIT(d); @@ -499,9 +511,13 @@ sysctl_dev_pcm_vchanformat(SYSCTL_HANDLER_ARGS) int *vchanformat, direction, ret, restart; char fmtstr[AFMTSTR_LEN]; + bus_topo_lock(); d = devclass_get_softc(pcm_devclass, VCHAN_SYSCTL_UNIT(oidp->oid_arg1)); - if (!PCM_REGISTERED(d)) + if (!PCM_REGISTERED(d)) { + bus_topo_unlock(); return (EINVAL); + } + bus_topo_unlock(); PCM_LOCK(d); PCM_WAIT(d); @@ -749,6 +765,7 @@ sysctl_hw_snd_vchans_enable(SYSCTL_HANDLER_ARGS) if (error != 0 || req->newptr == NULL) return (error); + bus_topo_lock(); snd_vchans_enable = v >= 1; for (i = 0; pcm_devclass != NULL && @@ -766,11 +783,12 @@ sysctl_hw_snd_vchans_enable(SYSCTL_HANDLER_ARGS) d->flags &= ~(SD_F_PVCHANS | SD_F_RVCHANS); PCM_RELEASE_QUICK(d); } + bus_topo_unlock(); return (0); } SYSCTL_PROC(_hw_snd, OID_AUTO, vchans_enable, - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, 0, sizeof(int), + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, 0, sizeof(int), sysctl_hw_snd_vchans_enable, "I", "global virtual channel switch"); void From nobody Sun Apr 6 01:27:31 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVZTM5NTPz5sgC3; Sun, 06 Apr 2025 01:27:35 +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 4ZVZTM21Fcz3Dp2; Sun, 06 Apr 2025 01:27:35 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTPS id 0znWu8UCZ9JM21EnOutCt0; Sun, 06 Apr 2025 01:27:34 +0000 Received: from spqr.komquats.com ([70.66.136.217]) by cmsmtp with ESMTPSA id 1EnMujHkDJhBP1EnNunEaf; Sun, 06 Apr 2025 01:27:34 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=QY3Fvdbv c=1 sm=1 tr=0 ts=67f1d886 a=h7br+8Ma+Xn9xscxy5znUg==:117 a=h7br+8Ma+Xn9xscxy5znUg==:17 a=kj9zAlcOel0A:10 a=XR8D0OoHHMoA:10 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=YxBL1-UpAAAA:8 a=WPX5ioEIp-PHNTJl24EA: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 29167879; Sat, 05 Apr 2025 18:27:32 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id EB58124B; Sat, 05 Apr 2025 18:27:31 -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: Chuck Silvers cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing In-reply-to: <202504052120.535LKCpL016160@gitrepo.freebsd.org> References: <202504052120.535LKCpL016160@gitrepo.freebsd.org> Comments: In-reply-to Chuck Silvers message dated "Sat, 05 Apr 2025 21:20:12 +0000." List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 05 Apr 2025 18:27:31 -0700 Message-Id: <20250406012731.EB58124B@slippy.cwsent.com> X-CMAE-Envelope: MS4xfNfke9POf24cFBc0xIZNXUrBIMZMfayvbXry5FR9+f6VvW99dFsMClZVAUHOG73oiPxCz3HBTG1PMmTHMvfqH0O1GuvH9y8wsBBLbm4sVMdGFLG78VWk m8coRD4heqT9G9lcMLyB77wDkbnVTVdR3Bgvd3FayTNeLUPyFIYzLNBk21oQu42SQEfbZWqtZuQIffMMXhBuGGMc9QKKcxKV1I1Eu2r0htnZenxQkzuJp+5G ObzcNBl8d6ylHgzAp+2jux7+n0MqTVUdMMGGvw47UEvk5fEUcVFVajMrR0BsBo9DlpkFWEt6q5z8IDpO7OWiOV5TBoDxKVYhKSPWY1JZ3iY= 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] X-Rspamd-Queue-Id: 4ZVZTM21Fcz3Dp2 X-Spamd-Bar: ---- In message <202504052120.535LKCpL016160@gitrepo.freebsd.org>, Chuck Silvers wri tes: > The branch main has been updated by chs: > > URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b > 4393080d > > commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d > Author: Chuck Silvers > AuthorDate: 2025-04-05 21:18:35 +0000 > Commit: Chuck Silvers > CommitDate: 2025-04-05 21:19:57 +0000 > > kerberos5, libcom_err, others: append to LDFLAGS instead of replacing > > Reviewed by: imp, emaste > Differential Revision: https://reviews.freebsd.org/D49548 > --- > kerberos5/lib/libasn1/Makefile | 2 +- > kerberos5/lib/libgssapi_krb5/Makefile | 2 +- > kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- > kerberos5/lib/libgssapi_spnego/Makefile | 2 +- > kerberos5/lib/libhdb/Makefile | 2 +- > kerberos5/lib/libheimbase/Makefile | 2 +- > kerberos5/lib/libheimntlm/Makefile | 2 +- > kerberos5/lib/libhx509/Makefile | 2 +- > kerberos5/lib/libkadm5clnt/Makefile | 2 +- > kerberos5/lib/libkadm5srv/Makefile | 2 +- > kerberos5/lib/libkafs5/Makefile | 2 +- > kerberos5/lib/libkdc/Makefile | 2 +- > kerberos5/lib/libkrb5/Makefile | 2 +- > kerberos5/lib/libwind/Makefile | 2 +- > kerberos5/libexec/digest-service/Makefile | 2 +- > kerberos5/libexec/hprop/Makefile | 2 +- > kerberos5/libexec/hpropd/Makefile | 2 +- > kerberos5/libexec/ipropd-master/Makefile | 2 +- > kerberos5/libexec/ipropd-slave/Makefile | 2 +- > kerberos5/libexec/kadmind/Makefile | 2 +- > kerberos5/libexec/kcm/Makefile | 2 +- > kerberos5/libexec/kdc/Makefile | 2 +- > kerberos5/libexec/kpasswdd/Makefile | 2 +- > kerberos5/usr.bin/kadmin/Makefile | 2 +- > kerberos5/usr.bin/kpasswd/Makefile | 2 +- > kerberos5/usr.sbin/iprop-log/Makefile | 2 +- > kerberos5/usr.sbin/kstash/Makefile | 2 +- > lib/libcom_err/Makefile | 2 +- > tools/regression/tls/ttls3/Makefile | 2 +- > tools/tools/net80211/w00t/Makefile.inc | 2 +- > 30 files changed, 30 insertions(+), 30 deletions(-) > What was the reason for this? -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0 From nobody Sun Apr 6 01:37:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVZjT4QLRz5sgjM; Sun, 06 Apr 2025 01:38:05 +0000 (UTC) (envelope-from chuq@chuq.com) Received: from mail.vc.panix.com (mail.vc.panix.com [166.84.1.92]) (using TLSv1.3 with cipher TLS_AES_256_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 4ZVZjT2ZRxz3Gc4; Sun, 06 Apr 2025 01:38:05 +0000 (UTC) (envelope-from chuq@chuq.com) Authentication-Results: mx1.freebsd.org; none Received: from vc.chuq.com (vc.chuq.com [166.84.7.169]) by mail.vc.panix.com (Postfix) with ESMTPS id 4ZVZjM0ddsz4slP; Sat, 5 Apr 2025 21:37:59 -0400 (EDT) Received: from spathi.chuq.com (spathi.chuq.com [24.6.146.244]) by vc169.vc.panix.com (Postfix) with ESMTPS id 93E223B5D79; Sat, 05 Apr 2025 18:37:58 -0700 (PDT) (envelope-from chuq@chuq.com) Received: by spathi.chuq.com (Postfix, from userid 1022) id B25213CFFA25; Sat, 5 Apr 2025 18:37:57 -0700 (PDT) Date: Sat, 5 Apr 2025 18:37:57 -0700 From: Chuck Silvers To: Cy Schubert Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 1ac6ea8a0251 - main - kerberos5, libcom_err, others: append to LDFLAGS instead of replacing Message-ID: References: <202504052120.535LKCpL016160@gitrepo.freebsd.org> <20250406012731.EB58124B@slippy.cwsent.com> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250406012731.EB58124B@slippy.cwsent.com> 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:2033, ipnet:166.84.0.0/16, country:US] X-Rspamd-Queue-Id: 4ZVZjT2ZRxz3Gc4 X-Spamd-Bar: ---- On Sat, Apr 05, 2025 at 06:27:31PM -0700, Cy Schubert wrote: > In message <202504052120.535LKCpL016160@gitrepo.freebsd.org>, Chuck Silvers > wri > tes: > > The branch main has been updated by chs: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=1ac6ea8a0251243d34f0ede2315b8f2b > > 4393080d > > > > commit 1ac6ea8a0251243d34f0ede2315b8f2b4393080d > > Author: Chuck Silvers > > AuthorDate: 2025-04-05 21:18:35 +0000 > > Commit: Chuck Silvers > > CommitDate: 2025-04-05 21:19:57 +0000 > > > > kerberos5, libcom_err, others: append to LDFLAGS instead of replacing > > > > Reviewed by: imp, emaste > > Differential Revision: https://reviews.freebsd.org/D49548 > > --- > > kerberos5/lib/libasn1/Makefile | 2 +- > > kerberos5/lib/libgssapi_krb5/Makefile | 2 +- > > kerberos5/lib/libgssapi_ntlm/Makefile | 2 +- > > kerberos5/lib/libgssapi_spnego/Makefile | 2 +- > > kerberos5/lib/libhdb/Makefile | 2 +- > > kerberos5/lib/libheimbase/Makefile | 2 +- > > kerberos5/lib/libheimntlm/Makefile | 2 +- > > kerberos5/lib/libhx509/Makefile | 2 +- > > kerberos5/lib/libkadm5clnt/Makefile | 2 +- > > kerberos5/lib/libkadm5srv/Makefile | 2 +- > > kerberos5/lib/libkafs5/Makefile | 2 +- > > kerberos5/lib/libkdc/Makefile | 2 +- > > kerberos5/lib/libkrb5/Makefile | 2 +- > > kerberos5/lib/libwind/Makefile | 2 +- > > kerberos5/libexec/digest-service/Makefile | 2 +- > > kerberos5/libexec/hprop/Makefile | 2 +- > > kerberos5/libexec/hpropd/Makefile | 2 +- > > kerberos5/libexec/ipropd-master/Makefile | 2 +- > > kerberos5/libexec/ipropd-slave/Makefile | 2 +- > > kerberos5/libexec/kadmind/Makefile | 2 +- > > kerberos5/libexec/kcm/Makefile | 2 +- > > kerberos5/libexec/kdc/Makefile | 2 +- > > kerberos5/libexec/kpasswdd/Makefile | 2 +- > > kerberos5/usr.bin/kadmin/Makefile | 2 +- > > kerberos5/usr.bin/kpasswd/Makefile | 2 +- > > kerberos5/usr.sbin/iprop-log/Makefile | 2 +- > > kerberos5/usr.sbin/kstash/Makefile | 2 +- > > lib/libcom_err/Makefile | 2 +- > > tools/regression/tls/ttls3/Makefile | 2 +- > > tools/tools/net80211/w00t/Makefile.inc | 2 +- > > 30 files changed, 30 insertions(+), 30 deletions(-) > > > > What was the reason for this? this is so that things added to LDFLAGS by eg. /etc/make.conf or /etc/src.conf are not lost just because an individual makefile wants to add something to LDFLAGS as well. -Chuck From nobody Sun Apr 6 03:25:55 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVd5v5YlZz5spCf; Sun, 06 Apr 2025 03:25: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 4ZVd5v5J7Yz3ZRl; Sun, 06 Apr 2025 03:25:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jlmqNGnLRi5HewIUVuJSX33vuHC2zmoVFyl/zMs+BSI=; b=PUH30f/Aa5cdFXcPjLrr6g18K/gsGER1i80HxS61nI5BnvgEmS5zKPDY24LrsnlvcsHQFy he3Avo7tMNE+SaTKGxzPhIqMH9I+OlkOW04o8VFco6gMEQeTkhrcX6hSVoHfsaZQNfPzkk lAQSNujZyuKLYlwBYR0BgIu332oUJHrXURDAa1UcVKg2JvK342yMEHCtBZGMnfBByRUjw+ 1fhjAtFh4aEH9uwkpZIZdpVoSDlxYh2HyDGkfBrFF0XUoBt0PT3t5SjeVY/XCUN4Q6GCfh /P8GSpzcuXS1e6FSjnvWtLw4+49zHdFWK6GAZD4mXhq4Q//X4N0veXO0YQfNWA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743909955; a=rsa-sha256; cv=none; b=xwDqFBsAndSWGVksfZKOK6560nZ+SUCH+twQiXXwXyTVLpUHjMeTRtTguwoKTsChL9RD+1 ym+u3e+j8ljrTnSZHdWQ8OXyyf70nN2RV9ubOvXDFkm4ddD6VOjb9/dtjRTQAkGI4As7zE TB/iWNDkcFFEJQrTIDzxOHimtUCXCrr7OvhKmDsbr26ce1caMf7z4bdl2LJTb1D5MjWQgh 7d9dB+8+2s7rsBt5kKCjHJ3NzyKcNb7PkFH9Ac4Aslds4T8TQlXBWh6mb1RQ7wb4ou0JeX lf6AhEHVtTesht9zhY87F3UybKCl5hT/PWb6KpMEmrZouallhF0NaRjmwBuR0A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jlmqNGnLRi5HewIUVuJSX33vuHC2zmoVFyl/zMs+BSI=; b=gzbRWxCcQ9zFkL03Wb6A8OYo8JNxv/wrZJcCL9E1s/XEBgp9NUVIfa+++de7tGpexyrwku /ukteCiWIJc6fEeDAxW6/bB7bKKzsycR7TaIT5d4p93gmnDKMsmYv1RiAZ0FeS53sAMaWY ZTM29j/ZYT2JQWbu2qDiSCdagQLzc5SnTulCiAAyJDlmVct6Qh5S/k3aHPy/mh6uLaIsDu VEx1sh2bFUGT7x/VUCKOu4fMbigPvW5hADz3dnlBRb3IU2JpcH09PHe3yyUoJ5uC7xI+kH 1fuYTxbZK5AaykA/tzSCs7gVmubyFHnm4hrwib/8zrOSVi9Yvb0IupxaFtqFbA== 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 4ZVd5v4tcMzkws; Sun, 06 Apr 2025 03:25: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 5363Pt7x002076; Sun, 6 Apr 2025 03:25:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5363PtrF002073; Sun, 6 Apr 2025 03:25:55 GMT (envelope-from git) Date: Sun, 6 Apr 2025 03:25:55 GMT Message-Id: <202504060325.5363PtrF002073@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: 2eeb95ccf39a - main - bhyve: make most of the iommu_ops interfaces return error List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 commit 2eeb95ccf39ac5d79326c4482112b6b7dd5fc8b2 Author: Konstantin Belousov AuthorDate: 2023-12-19 15:41:32 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 03:25:38 +0000 bhyve: make most of the iommu_ops interfaces return error and change create_mapping()/remove_mapping() to allow shorten results. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49629 --- sys/amd64/vmm/amd/amdvi_hw.c | 39 +++++++------- sys/amd64/vmm/intel/vtd.c | 28 ++++++---- sys/amd64/vmm/io/iommu.c | 119 +++++++++++++++++++++++++------------------ sys/amd64/vmm/io/iommu.h | 26 +++++----- sys/amd64/vmm/io/ppt.c | 33 ++++++++---- sys/amd64/vmm/vmm.c | 22 ++++---- 6 files changed, 159 insertions(+), 108 deletions(-) diff --git a/sys/amd64/vmm/amd/amdvi_hw.c b/sys/amd64/vmm/amd/amdvi_hw.c index 87283325600c..831c31277570 100644 --- a/sys/amd64/vmm/amd/amdvi_hw.c +++ b/sys/amd64/vmm/amd/amdvi_hw.c @@ -1155,9 +1155,9 @@ amdvi_update_mapping(struct amdvi_domain *domain, vm_paddr_t gpa, return (mapped); } -static uint64_t +static int amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, - uint64_t len) + uint64_t len, uint64_t *res_len) { struct amdvi_domain *domain; @@ -1165,7 +1165,7 @@ amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, if (domain->id && !domain->ptp) { printf("ptp is NULL"); - return (-1); + return (EINVAL); } /* @@ -1173,13 +1173,14 @@ amdvi_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, * table set-up. */ if (domain->ptp) - return (amdvi_update_mapping(domain, gpa, hpa, len, true)); + *res_len = amdvi_update_mapping(domain, gpa, hpa, len, true); else - return (len); + *res_len = len; + return (0); } -static uint64_t -amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) +static int +amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len, uint64_t *res_len) { struct amdvi_domain *domain; @@ -1189,9 +1190,10 @@ amdvi_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) * table set-up. */ if (domain->ptp) - return (amdvi_update_mapping(domain, gpa, 0, len, false)); - return - (len); + *res_len = amdvi_update_mapping(domain, gpa, 0, len, false); + else + *res_len = len; + return (0); } static struct amdvi_softc * @@ -1268,8 +1270,8 @@ amdvi_inv_device(struct amdvi_softc *softc, uint16_t devid) amdvi_wait(softc); } -static void -amdvi_add_device(void *arg, uint16_t devid) +static int +amdvi_add_device(void *arg, device_t dev __unused, uint16_t devid) { struct amdvi_domain *domain; struct amdvi_softc *softc; @@ -1282,13 +1284,14 @@ amdvi_add_device(void *arg, uint16_t devid) #endif softc = amdvi_find_iommu(devid); if (softc == NULL) - return; + return (ENXIO); amdvi_set_dte(domain, softc, devid, true); amdvi_inv_device(softc, devid); + return (0); } -static void -amdvi_remove_device(void *arg, uint16_t devid) +static int +amdvi_remove_device(void *arg, device_t dev __unused, uint16_t devid) { struct amdvi_domain *domain; struct amdvi_softc *softc; @@ -1300,9 +1303,10 @@ amdvi_remove_device(void *arg, uint16_t devid) #endif softc = amdvi_find_iommu(devid); if (softc == NULL) - return; + return (ENXIO); amdvi_set_dte(domain, softc, devid, false); amdvi_inv_device(softc, devid); + return (0); } static void @@ -1357,7 +1361,7 @@ amdvi_disable(void) } } -static void +static int amdvi_invalidate_tlb(void *arg) { struct amdvi_domain *domain; @@ -1365,6 +1369,7 @@ amdvi_invalidate_tlb(void *arg) domain = (struct amdvi_domain *)arg; KASSERT(domain, ("domain is NULL")); amdvi_do_inv_domain(domain->id, false); + return (0); } const struct iommu_ops iommu_ops_amd = { diff --git a/sys/amd64/vmm/intel/vtd.c b/sys/amd64/vmm/intel/vtd.c index 72cedeca6ec1..b56541290a9d 100644 --- a/sys/amd64/vmm/intel/vtd.c +++ b/sys/amd64/vmm/intel/vtd.c @@ -431,8 +431,8 @@ vtd_disable(void) } } -static void -vtd_add_device(void *arg, uint16_t rid) +static int +vtd_add_device(void *arg, device_t dev __unused, uint16_t rid) { int idx; uint64_t *ctxp; @@ -475,10 +475,11 @@ vtd_add_device(void *arg, uint16_t rid) * 'Not Present' entries are not cached in either the Context Cache * or in the IOTLB, so there is no need to invalidate either of them. */ + return (0); } -static void -vtd_remove_device(void *arg, uint16_t rid) +static int +vtd_remove_device(void *arg, device_t dev __unused, uint16_t rid) { int i, idx; uint64_t *ctxp; @@ -506,6 +507,7 @@ vtd_remove_device(void *arg, uint16_t rid) vtd_ctx_global_invalidate(vtdmap); vtd_iotlb_global_invalidate(vtdmap); } + return (0); } #define CREATE_MAPPING 0 @@ -600,21 +602,24 @@ vtd_update_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len, return (1UL << ptpshift); } -static uint64_t -vtd_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len) +static int +vtd_create_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len, + uint64_t *res_len) { - return (vtd_update_mapping(arg, gpa, hpa, len, CREATE_MAPPING)); + *res_len = vtd_update_mapping(arg, gpa, hpa, len, CREATE_MAPPING); + return (0); } -static uint64_t -vtd_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len) +static int +vtd_remove_mapping(void *arg, vm_paddr_t gpa, uint64_t len, uint64_t *res_len) { - return (vtd_update_mapping(arg, gpa, 0, len, REMOVE_MAPPING)); + *res_len = vtd_update_mapping(arg, gpa, 0, len, REMOVE_MAPPING); + return (0); } -static void +static int vtd_invalidate_tlb(void *dom) { int i; @@ -628,6 +633,7 @@ vtd_invalidate_tlb(void *dom) vtdmap = vtdmaps[i]; vtd_iotlb_global_invalidate(vtdmap); } + return (0); } static void * diff --git a/sys/amd64/vmm/io/iommu.c b/sys/amd64/vmm/io/iommu.c index dc4a0de94bb6..bd86ac37a83e 100644 --- a/sys/amd64/vmm/io/iommu.c +++ b/sys/amd64/vmm/io/iommu.c @@ -58,6 +58,8 @@ static const struct iommu_ops *ops; static void *host_domain; static eventhandler_tag add_tag, delete_tag; +static void iommu_cleanup_int(bool iommu_disable); + static __inline int IOMMU_INIT(void) { @@ -92,48 +94,51 @@ IOMMU_DESTROY_DOMAIN(void *dom) (*ops->destroy_domain)(dom); } -static __inline uint64_t -IOMMU_CREATE_MAPPING(void *domain, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len) +static __inline int +IOMMU_CREATE_MAPPING(void *domain, vm_paddr_t gpa, vm_paddr_t hpa, + uint64_t len, uint64_t *res_len) { if (ops != NULL && iommu_avail) - return ((*ops->create_mapping)(domain, gpa, hpa, len)); - else - return (len); /* XXX */ + return ((*ops->create_mapping)(domain, gpa, hpa, len, res_len)); + return (EOPNOTSUPP); } static __inline uint64_t -IOMMU_REMOVE_MAPPING(void *domain, vm_paddr_t gpa, uint64_t len) +IOMMU_REMOVE_MAPPING(void *domain, vm_paddr_t gpa, uint64_t len, + uint64_t *res_len) { if (ops != NULL && iommu_avail) - return ((*ops->remove_mapping)(domain, gpa, len)); - else - return (len); /* XXX */ + return ((*ops->remove_mapping)(domain, gpa, len, res_len)); + return (EOPNOTSUPP); } -static __inline void -IOMMU_ADD_DEVICE(void *domain, uint16_t rid) +static __inline int +IOMMU_ADD_DEVICE(void *domain, device_t dev, uint16_t rid) { if (ops != NULL && iommu_avail) - (*ops->add_device)(domain, rid); + return ((*ops->add_device)(domain, dev, rid)); + return (EOPNOTSUPP); } -static __inline void -IOMMU_REMOVE_DEVICE(void *domain, uint16_t rid) +static __inline int +IOMMU_REMOVE_DEVICE(void *domain, device_t dev, uint16_t rid) { if (ops != NULL && iommu_avail) - (*ops->remove_device)(domain, rid); + return ((*ops->remove_device)(domain, dev, rid)); + return (EOPNOTSUPP); } -static __inline void +static __inline int IOMMU_INVALIDATE_TLB(void *domain) { if (ops != NULL && iommu_avail) - (*ops->invalidate_tlb)(domain); + return ((*ops->invalidate_tlb)(domain)); + return (0); } static __inline void @@ -157,14 +162,14 @@ iommu_pci_add(void *arg, device_t dev) { /* Add new devices to the host domain. */ - iommu_add_device(host_domain, pci_get_rid(dev)); + iommu_add_device(host_domain, dev, pci_get_rid(dev)); } static void iommu_pci_delete(void *arg, device_t dev) { - iommu_remove_device(host_domain, pci_get_rid(dev)); + iommu_remove_device(host_domain, dev, pci_get_rid(dev)); } static void @@ -230,17 +235,20 @@ iommu_init(void) * Everything else belongs to the host * domain. */ - iommu_add_device(host_domain, + error = iommu_add_device(host_domain, dev, pci_get_rid(dev)); + if (error != 0) { + iommu_cleanup_int(false); + return; + } } } } IOMMU_ENABLE(); - } -void -iommu_cleanup(void) +static void +iommu_cleanup_int(bool iommu_disable) { if (add_tag != NULL) { @@ -251,12 +259,19 @@ iommu_cleanup(void) EVENTHANDLER_DEREGISTER(pci_delete_device, delete_tag); delete_tag = NULL; } - IOMMU_DISABLE(); + if (iommu_disable) + IOMMU_DISABLE(); IOMMU_DESTROY_DOMAIN(host_domain); host_domain = NULL; IOMMU_CLEANUP(); } +void +iommu_cleanup(void) +{ + iommu_cleanup_int(true); +} + void * iommu_create_domain(vm_paddr_t maxaddr) { @@ -280,33 +295,39 @@ iommu_destroy_domain(void *dom) IOMMU_DESTROY_DOMAIN(dom); } -void +int iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, size_t len) { uint64_t mapped, remaining; - - remaining = len; - - while (remaining > 0) { - mapped = IOMMU_CREATE_MAPPING(dom, gpa, hpa, remaining); - gpa += mapped; - hpa += mapped; - remaining -= mapped; + int error; + + for (remaining = len; remaining > 0; gpa += mapped, hpa += mapped, + remaining -= mapped) { + error = IOMMU_CREATE_MAPPING(dom, gpa, hpa, remaining, + &mapped); + if (error != 0) { + /* XXXKIB rollback */ + return (error); + } } + return (0); } -void +int iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len) { uint64_t unmapped, remaining; - - remaining = len; - - while (remaining > 0) { - unmapped = IOMMU_REMOVE_MAPPING(dom, gpa, remaining); - gpa += unmapped; - remaining -= unmapped; + int error; + + for (remaining = len; remaining > 0; gpa += unmapped, + remaining -= unmapped) { + error = IOMMU_REMOVE_MAPPING(dom, gpa, remaining, &unmapped); + if (error != 0) { + /* XXXKIB ? */ + return (error); + } } + return (0); } void * @@ -316,23 +337,23 @@ iommu_host_domain(void) return (host_domain); } -void -iommu_add_device(void *dom, uint16_t rid) +int +iommu_add_device(void *dom, device_t dev, uint16_t rid) { - IOMMU_ADD_DEVICE(dom, rid); + return (IOMMU_ADD_DEVICE(dom, dev, rid)); } -void -iommu_remove_device(void *dom, uint16_t rid) +int +iommu_remove_device(void *dom, device_t dev, uint16_t rid) { - IOMMU_REMOVE_DEVICE(dom, rid); + return (IOMMU_REMOVE_DEVICE(dom, dev, rid)); } -void +int iommu_invalidate_tlb(void *domain) { - IOMMU_INVALIDATE_TLB(domain); + return (IOMMU_INVALIDATE_TLB(domain)); } diff --git a/sys/amd64/vmm/io/iommu.h b/sys/amd64/vmm/io/iommu.h index c2891b62b5f2..5294a9d92a6b 100644 --- a/sys/amd64/vmm/io/iommu.h +++ b/sys/amd64/vmm/io/iommu.h @@ -35,13 +35,13 @@ typedef void (*iommu_enable_func_t)(void); typedef void (*iommu_disable_func_t)(void); typedef void *(*iommu_create_domain_t)(vm_paddr_t maxaddr); typedef void (*iommu_destroy_domain_t)(void *domain); -typedef uint64_t (*iommu_create_mapping_t)(void *domain, vm_paddr_t gpa, - vm_paddr_t hpa, uint64_t len); -typedef uint64_t (*iommu_remove_mapping_t)(void *domain, vm_paddr_t gpa, - uint64_t len); -typedef void (*iommu_add_device_t)(void *domain, uint16_t rid); -typedef void (*iommu_remove_device_t)(void *dom, uint16_t rid); -typedef void (*iommu_invalidate_tlb_t)(void *dom); +typedef int (*iommu_create_mapping_t)(void *domain, vm_paddr_t gpa, + vm_paddr_t hpa, uint64_t len, uint64_t *res_len); +typedef int (*iommu_remove_mapping_t)(void *domain, vm_paddr_t gpa, + uint64_t len, uint64_t *res_len); +typedef int (*iommu_add_device_t)(void *domain, device_t dev, uint16_t rid); +typedef int (*iommu_remove_device_t)(void *dom, device_t dev, uint16_t rid); +typedef int (*iommu_invalidate_tlb_t)(void *dom); struct iommu_ops { iommu_init_func_t init; /* module wide */ @@ -65,10 +65,10 @@ void iommu_cleanup(void); void *iommu_host_domain(void); void *iommu_create_domain(vm_paddr_t maxaddr); void iommu_destroy_domain(void *dom); -void iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, - size_t len); -void iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len); -void iommu_add_device(void *dom, uint16_t rid); -void iommu_remove_device(void *dom, uint16_t rid); -void iommu_invalidate_tlb(void *domain); +int iommu_create_mapping(void *dom, vm_paddr_t gpa, vm_paddr_t hpa, + size_t len); +int iommu_remove_mapping(void *dom, vm_paddr_t gpa, size_t len); +int iommu_add_device(void *dom, device_t dev, uint16_t rid); +int iommu_remove_device(void *dom, device_t dev, uint16_t rid); +int iommu_invalidate_tlb(void *domain); #endif diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c index 3b043c64fbde..c3b2b57da988 100644 --- a/sys/amd64/vmm/io/ppt.c +++ b/sys/amd64/vmm/io/ppt.c @@ -151,14 +151,19 @@ static int ppt_attach(device_t dev) { struct pptdev *ppt; - uint16_t cmd; + uint16_t cmd, cmd1; + int error; ppt = device_get_softc(dev); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); + cmd1 = cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd &= ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); pci_write_config(dev, PCIR_COMMAND, cmd, 2); - iommu_remove_device(iommu_host_domain(), pci_get_rid(dev)); + error = iommu_remove_device(iommu_host_domain(), dev, pci_get_rid(dev)); + if (error != 0) { + pci_write_config(dev, PCIR_COMMAND, cmd1, 2); + return (error); + } num_pptdevs++; TAILQ_INSERT_TAIL(&pptdev_list, ppt, next); ppt->dev = dev; @@ -173,17 +178,23 @@ static int ppt_detach(device_t dev) { struct pptdev *ppt; + int error; ppt = device_get_softc(dev); if (ppt->vm != NULL) return (EBUSY); + if (iommu_host_domain() != NULL) { + error = iommu_add_device(iommu_host_domain(), dev, + pci_get_rid(dev)); + } else { + error = 0; + } + if (error != 0) + return (error); num_pptdevs--; TAILQ_REMOVE(&pptdev_list, ppt, next); - if (iommu_host_domain() != NULL) - iommu_add_device(iommu_host_domain(), pci_get_rid(dev)); - return (0); } @@ -410,8 +421,11 @@ ppt_assign_device(struct vm *vm, int bus, int slot, int func) pci_save_state(ppt->dev); ppt_pci_reset(ppt->dev); pci_restore_state(ppt->dev); + error = iommu_add_device(vm_iommu_domain(vm), ppt->dev, + pci_get_rid(ppt->dev)); + if (error != 0) + return (error); ppt->vm = vm; - iommu_add_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); cmd = pci_read_config(ppt->dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_BUSMASTEREN | ppt_bar_enables(ppt); pci_write_config(ppt->dev, PCIR_COMMAND, cmd, 2); @@ -438,9 +452,10 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, int func) ppt_unmap_all_mmio(vm, ppt); ppt_teardown_msi(ppt); ppt_teardown_msix(ppt); - iommu_remove_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); + error = iommu_remove_device(vm_iommu_domain(vm), ppt->dev, + pci_get_rid(ppt->dev)); ppt->vm = NULL; - return (0); + return (error); } int diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c index 1d410835be88..bd703f63b557 100644 --- a/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -745,12 +745,12 @@ vm_unmap_mmio(struct vm *vm, vm_paddr_t gpa, size_t len) return (0); } -static void +static int vm_iommu_map(struct vm *vm) { vm_paddr_t gpa, hpa; struct vm_mem_map *mm; - int i; + int error, i; sx_assert(&vm->mem.mem_segs_lock, SX_LOCKED); @@ -789,15 +789,16 @@ vm_iommu_map(struct vm *vm) } } - iommu_invalidate_tlb(iommu_host_domain()); + error = iommu_invalidate_tlb(iommu_host_domain()); + return (error); } -static void +static int vm_iommu_unmap(struct vm *vm) { vm_paddr_t gpa; struct vm_mem_map *mm; - int i; + int error, i; sx_assert(&vm->mem.mem_segs_lock, SX_LOCKED); @@ -826,7 +827,8 @@ vm_iommu_unmap(struct vm *vm) * Invalidate the cached translations associated with the domain * from which pages were removed. */ - iommu_invalidate_tlb(vm->iommu); + error = iommu_invalidate_tlb(vm->iommu); + return (error); } int @@ -839,9 +841,9 @@ vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func) return (error); if (ppt_assigned_devices(vm) == 0) - vm_iommu_unmap(vm); + error = vm_iommu_unmap(vm); - return (0); + return (error); } int @@ -858,10 +860,12 @@ vm_assign_pptdev(struct vm *vm, int bus, int slot, int func) vm->iommu = iommu_create_domain(maxaddr); if (vm->iommu == NULL) return (ENXIO); - vm_iommu_map(vm); } error = ppt_assign_device(vm, bus, slot, func); + if (error != 0) + return (error); + error = vm_iommu_map(vm); return (error); } From nobody Sun Apr 6 03:25:56 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZVd5x0J8hz5spFH; Sun, 06 Apr 2025 03:25: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 4ZVd5w5Z0Jz3ZML; Sun, 06 Apr 2025 03:25:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CU4BjYvHHc4WtTsUE35DlAUBHdCIyzWedAATG5JJYm0=; b=bGI+mvtq1flaKhwBxkPrp/8Jmwp7n6xIwMAHbcaGOQ7ZoHodHu5ewRBRXGwS2YhV0SIQ6J Je2Y99Aj3NuEtMpVbdi88isQ/tWetPTzTaj9HZWBSIwX+ri48U4115XJ3uuzMRKZEC50j0 zWAPg7QXc4CfPchKJ4yQ/R5HmJGrm/BQONubTCXDumr9i+JpQsfonw4OtykPt4CV2c6+jR EgZBrVwOUDqH126pePrX4lKGKB3/JE027HALsXGUmxJPSdVEovagY7RLD2v5axeMjB9rHg mv/iASKrCXxBWoFH1Wlt8ui4Q3fxhxr30+ILa7rDj7dJFTNtfZ8XpI9Kx8lmOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743909956; a=rsa-sha256; cv=none; b=A1Ia0F7gR1gNM/39bzXYpkEW2fzCyhIVxMPtH3W1OGBVtLEMW/WsHh2xsy0AVF4Xe1KPZ7 WpAGN2tuF60SaJJnzX1EzzYCw6gUOIYPuy3kyfCei6qCSoRX2ry6IfHs2ipLYF060ucEa6 xBVGzxnGeFW2Jvsdp4rEx0nqFMs3a/Rt2gAXoxaOQKw7wF3E9tJTq6fqX11/kEAE9bKuMA hPJO01YCzDPMIkL+ba8FaOcTdltomDZVz2NfOuDimm8rEYcq4/iNTCwCqP/tZIU8EOXvuF kOKxS5rldmFrqaL0g/p+SQWTHu5X0tXYZdWEvM5Nl9XLkWDAsR1JCNjKo+M59A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743909956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CU4BjYvHHc4WtTsUE35DlAUBHdCIyzWedAATG5JJYm0=; b=y0FVWlAG3yqMdPnOVSEKzlzV+JmyXidjTKejmxKVqw1B3ipXEdftegYCPdEAEZQNFCGeZq lOQu7acEe13WLlSa9gv8BxnMo7+AaZNcascLgRUmS25aucsqVKN/JiwgwQnbuZS45wpZ9Y jwTtZFs9vY3mCfW2u5iCF5gHL9/OsSF3r1spr7rGNeOD0POur7mdJL502gQSNDU7L3mmuY GtJg/5ygTurpcbRNeZhC0ErJ+BnGHJgrXQmlc7l5qNHW7pJqMYU1LFwMMz9XdakU2J6tZ/ f8aUpopq2ztkr2K/8NRjwN0qX4ie9b6WtCqd5uESlMtwYSiw6/jmPCrjABAjOw== 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 4ZVd5w59YMzlFl; Sun, 06 Apr 2025 03:25: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 5363PuGC002118; Sun, 6 Apr 2025 03:25:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5363Puv6002115; Sun, 6 Apr 2025 03:25:56 GMT (envelope-from git) Date: Sun, 6 Apr 2025 03:25:56 GMT Message-Id: <202504060325.5363Puv6002115@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: 297473069610 - main - bhyve IOMMU_REMOVE_DEVICE(): ignore iommu absence for sake of ppt_attach() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 29747306961017bb65324908d794b4f6bb08c1c8 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=29747306961017bb65324908d794b4f6bb08c1c8 commit 29747306961017bb65324908d794b4f6bb08c1c8 Author: Konstantin Belousov AuthorDate: 2023-12-19 16:05:16 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 03:25:38 +0000 bhyve IOMMU_REMOVE_DEVICE(): ignore iommu absence for sake of ppt_attach() Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49629 --- sys/amd64/vmm/io/iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/vmm/io/iommu.c b/sys/amd64/vmm/io/iommu.c index bd86ac37a83e..7167734c000b 100644 --- a/sys/amd64/vmm/io/iommu.c +++ b/sys/amd64/vmm/io/iommu.c @@ -129,7 +129,7 @@ IOMMU_REMOVE_DEVICE(void *domain, device_t dev, uint16_t rid) if (ops != NULL && iommu_avail) return ((*ops->remove_device)(domain, dev, rid)); - return (EOPNOTSUPP); + return (0); /* To allow ppt_attach() to succeed. */ } static __inline int From nobody Sun Apr 6 22:13:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW67K4ds7z5sZwL; Sun, 06 Apr 2025 22:13: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 4ZW67K3wVPz3Ckk; Sun, 06 Apr 2025 22:13:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743977629; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gFf7Odmf+5W7HpSplTNPYFnBKioGd441/dkOB8xU1fc=; b=tFfCZ7NDgnYJ1//q468euOEIdCR00bacEBXN2vJGOO7/fH9sPA4d8mlf9hSgwz3JSI69Lm ER6mSXiWOSljyQMfMYSkZDB9XzDxJNn3kC++ZXBbT48YXyARSyeNyujxBYAppbCADQ1uPY l4JNlAsEqu90CbcM/DWX2OTaICvJSC2Aa/hQJb8jt7kfPtbvd/l1XNmMHqGIeYgTiSV3X/ eJGP2SaiTGdTZmTnRZ27U7rE9bliQSdrx5kTcQ+c8fhGRZ9tOEDX+HtLxLYzwFhOht9uUC 1WRuWQIswtVShCePoKUKQGtBu9Rh22pfrEJl3+SAfFR3ZYKG+6iN1SwQwY+a1w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743977629; a=rsa-sha256; cv=none; b=Q+qlQeP1jg/Umu7GYkFArnJhqEnIiYrhQrHrClC65/v1xuYlUjjWVazfx7gXqSSztEwQFM sIjsfXLJoXjdZkRMqNjpwHPih+OvztOxtklGUGsQm2fC1ZZMeO8PXlsKLeXWHkgaeuyWTp U04iFHpDmiQXDnPo/zLdgIvU4KrMWqc0x1UvRYbg6n2coZxy+WTBmB51RMu4wsNK2lJ9tv 1HbjQaNOVq8dpebd4WRnug1ApQAPBQpXgJOOP+hmEKenaXEfZvdLbmxcfZU4XmRclRw0FM Y9D0q4OFPrWzAjQRsI7x5c/3xDcll4LqmJfEe4EL1LtuYlPZQPvuF7mgvP6JBQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743977629; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=gFf7Odmf+5W7HpSplTNPYFnBKioGd441/dkOB8xU1fc=; b=bFK7vjy+fCL6FjCxJXt6gJbIYZyOESLS0WzTQl51ddPCDVU0JvF8WQaPN4hRFqOrMifiNy RaS7Oz/WPbnSMk3CoT7Dhq0uCHvorg5Ww0tvo2YHjseJg+jgrX8mpOE9PppAsebQfTVgSa 0QL7L1g3bkzbr+p0UG4rO3HePVj03EEQex1ZAN6aPTbtZyjge7fkbIqNlP9ddPo1r/aP0m PR1kezzcbmyypESNMKT+JMYjDJJNbZUE/BOdpiPlfrEiWOHPPYvVOApZ1H+glDXdJMDK/s Di4tWSjlEWonfJIyAoO+P8nI7wdS4zsYr6hPS08a6w6O2LyKeiCFnvDiqJWuLg== 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 4ZW67K3WVwz4hF; Sun, 06 Apr 2025 22:13: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 536MDneT007119; Sun, 6 Apr 2025 22:13:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MDnTK007116; Sun, 6 Apr 2025 22:13:49 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:13:49 GMT Message-Id: <202504062213.536MDnTK007116@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: 8ef6d8ad1a61 - main - jails: delegate checking PRIV_PROC_MEM_WRITE to priv_check_cred() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c commit 8ef6d8ad1a61a17cdaed2f5666d5a6904fd0737c Author: Konstantin Belousov AuthorDate: 2025-04-06 16:57:01 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-06 22:13:30 +0000 jails: delegate checking PRIV_PROC_MEM_WRITE to priv_check_cred() PR: 285811 Fixes: 4a5fa1086184f7450f63d4a8e403b16f40a78fce Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49682 --- sys/kern/kern_jail.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 37c0bd49490f..5dd07fbf77d1 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -4017,6 +4017,11 @@ prison_priv_check(struct ucred *cred, int priv) case PRIV_PROC_SETLOGIN: case PRIV_PROC_SETRLIMIT: + /* + * Debuggers should work in jails. + */ + case PRIV_PROC_MEM_WRITE: + /* * System V and POSIX IPC privileges are granted in jail. */ From nobody Sun Apr 6 22:51:08 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yP2Yvsz5s8Sx; Sun, 06 Apr 2025 22:51: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 4ZW6yN597hz3KQD; Sun, 06 Apr 2025 22:51:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tlzc4EQLtEj+YDo3E3QY+1Ezj5q47gX0nW7OxAIFOXk=; b=pB4hf42SxtOiToE6hqB9qpd/zeNj1FKSjqKgnzZHg/l0hda4oynAp74Elrv1sDALxR2bgX Bye35arUWgOio1Q4rUX52QrK+mfME1QtJmw76YLq410f7UOrnoLkNwEg8LyxryPQ/kX9Ah f3KMyb2WvvfbsCU401VMqeEYRovA92kQYB4eoZp/0CXr1HsuJnhv8X4C+b0Mqrd5n+3rDe j3bSncyOXwr54MfvNnfAz7tP8DUGu4Dc+VItkzDNmHW2EmpvXnV3X3qW6cfblZ0In6kzVg 2qcpXNNvWiZ99qtYsmpE2AEZ8Z1wHs9WKpVLTYVvQzdP5CSoTVDuNIvN/YrpGQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979868; a=rsa-sha256; cv=none; b=FsCqYSNd9QzVAfRmAZNKEbCcz0QlRfDS6Y4gdBXbkU1qZYztY64k3iku6F6kDjmCkP+AJR JRmpTpDhGSwkcDt3Mqs+0xSYQIj+aeK3Q01oXMzSqSWf7qDLyVwY3jR09xfA07BuPms8iK 8LFNAkcTBxtwzY1QpruzY0CPdFpV89rs1go7pHjHbyEVtLulgXAb4Qo1OMStCPnCN/nV7y GOO//ZG2b5yvKlzdFEFI/0J2/c6C+i2fkFr/2WegSIG/kG92Lh1QfykBm7BwSn8eVOs5ky bxZZ7ttqeJhl/90RFwAokq71YyiU11rS25301ZfZ/HEx2y3M0Nv55n/3TUIW1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tlzc4EQLtEj+YDo3E3QY+1Ezj5q47gX0nW7OxAIFOXk=; b=YoC9t20xMgqyFoUIsrh5KOhYBdWEiRH1P5XrRpnmtRzS80Vr4OrYtlR+scn5YMnAW6EvR5 L3Z03O5SPnhrigSutMhnfISUBaUrCYi+AMJmgCYP4yvUnb5A+HFge5TWWyKhXlD/JYUaE6 aCFzIo4rNFqw1Xe4GaJhCnX6dGokdCSC1uVvp6VTH1ceRau11Rni5Y7lWkUOC6e7y3e/SV oau6n3dHbrP+vXN1FSFydDxWbPLuq5vhOkcWLWlYYWFYxg/p70RINnWAY7fMJeyW98xtj7 cP+wgNwsrJYzbDBmJ4FbrJ86O6zEY/vilXQpLXE1twdc05wDXTIH7RzasVqWUA== 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 4ZW6yN4Vqwz5WC; Sun, 06 Apr 2025 22:51: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 536Mp85C077022; Sun, 6 Apr 2025 22:51:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536Mp8pW077019; Sun, 6 Apr 2025 22:51:08 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:08 GMT Message-Id: <202504062251.536Mp8pW077019@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: e1a3b7ff9fe6 - stable/14 - pkill tests: Fix pkill usage in the pkill -x test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: e1a3b7ff9fe6152b4a112cc47c5155c4c9da9b74 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e1a3b7ff9fe6152b4a112cc47c5155c4c9da9b74 commit e1a3b7ff9fe6152b4a112cc47c5155c4c9da9b74 Author: Mark Johnston AuthorDate: 2025-03-15 11:12:45 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:03 +0000 pkill tests: Fix pkill usage in the pkill -x test The target process name(s) mark the beginning of the command's positional parameters, so the -P filter wasn't getting applied as intended. As a result, the second "pkill -x sleep -P $$" would kill all sleep(1) processes in the system, which can cause problems when running tests in parallel. MFC after: 2 weeks (cherry picked from commit 57b09e470dbd84d1491a8972cf504b25e788a6c3) --- bin/pkill/tests/pkill-x_test.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/pkill/tests/pkill-x_test.sh b/bin/pkill/tests/pkill-x_test.sh index 9247a85863c0..5fe751f9ec72 100644 --- a/bin/pkill/tests/pkill-x_test.sh +++ b/bin/pkill/tests/pkill-x_test.sh @@ -9,13 +9,13 @@ sleep=$(pwd)/sleep.txt ln -sf /bin/sleep $sleep $sleep 5 & sleep 0.3 -pkill -x slee -P $$ +pkill -P $$ -x slee if [ $? -ne 0 ]; then echo "ok 1 - $name" else echo "not ok 1 - $name" fi -pkill -x sleep -P $$ +pkill -P $$ -x sleep if [ $? -eq 0 ]; then echo "ok 2 - $name" else @@ -28,13 +28,13 @@ sleep=$(pwd)/sleep.txt ln -sf /bin/sleep $sleep $sleep 5 & sleep 0.3 -pkill -x -f "$sleep " -P $$ +pkill -P $$ -x -f "$sleep " if [ $? -ne 0 ]; then echo "ok 3 - $name" else echo "not ok 3 - $name" fi -pkill -x -f "$sleep 5" -P $$ +pkill -P $$ -x -f "$sleep 5" if [ $? -eq 0 ]; then echo "ok 4 - $name" else From nobody Sun Apr 6 22:51:07 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yN3l1hz5s8W2; Sun, 06 Apr 2025 22:51: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 4ZW6yM6Xxpz3KQB; Sun, 06 Apr 2025 22:51:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Hsb+Ce5v/FM4fH6L3Mh9gN2BG41JvsLG7pjgFVqIE+U=; b=RRAJVorrmeR7GP1eSN7TbjeJvLqdQ8uoUcb+lRWDxJfvn2Xh67IprHCafPlYjSigLgb3ai SDom6C197V0xePUYB4mF/3JNuHs/BnkYEicGq1QMiZZo+/0u7dBgwHdKaEGgDeS7TXOX1M Vgq6lGQT9e6SkHRL0cCQZ3zqdnk3m6jD1w6EsTKk+pvD1OczyCl1tk9yP17PV4Vxx641Te XU4B0byJiPTsNdAsqNK+Ry+FU+6CHAv9zrejxagzIF2O+p+XIv8QCGnaxUGS7AwwsUdW4r XDKtrvaki0/jOijuAhDHxwa10QRZOyUGYtqwX2INwTf6XYFRq5bhUeYiZc7Lhg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979868; a=rsa-sha256; cv=none; b=dmTnRnrMt2kdjZClYz5Uy3NAPNbxi7boPJCOn3odVsliA1bj9XqW2L3BHy/iNszc4N1OKt VKrozuRjPms/qxjbPzLF/w6C9HBQEPF7kpxN0TQNHc3jKKoAlAszJ/kvbGdZ0Sjr55bng8 5YY78zrbJWcpUR3BAqgk1ikoTdSs6eDJQhzD11yJwkvBXPDZtcLnIU4op87Ob2Sqdf88YO prbT47ICqqdC+GlHdVUxkPW0T1C4MaASQoY5+7scIt5gNWedn5GTB1e4S37Jay+KhrRfdT ttPat0hwHPIg6X3uCMmwELsHdF7eTHV/Pb+zN1YVJrnNeE4dJk8leWxu1bT9HA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Hsb+Ce5v/FM4fH6L3Mh9gN2BG41JvsLG7pjgFVqIE+U=; b=Su3jb7P9mlhtH+TiSxLpuuwufgEsFLOLtECNV67IERxGmKa25GRB2baXALTLZjSeiqdieB jP9tG+KT/e66em5viy0mf5CLtHFkhjYbK6aH7mt76j+ZZeMC66G6RCuLxU2wj/hsk812e1 1OEtbCXvdIrALHtJ7l8iwDBR0L5/SXFflFy3qFPusLKq88itf5O78kmrBthiJoivNgVgOr BlKRRcOoKNvPOsUuZ3K4wR3cFC93lvozVZ31I88zcfBUzkCc8VO1f9a0/IX1mFgXziux1k UdEvU+MeKkOWFCuquyMMC31EeIGNAZnOyjJW/RUFeMH6F9aYQCJJ8+n481O2uw== 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 4ZW6yM3Grvz524; Sun, 06 Apr 2025 22:51: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 536Mp79J076221; Sun, 6 Apr 2025 22:51:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536Mp7YZ076207; Sun, 6 Apr 2025 22:51:07 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:07 GMT Message-Id: <202504062251.536Mp7YZ076207@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 48fddba63787 - stable/14 - devfs: Return early from sysctl_devname() if no input is given List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 48fddba63787167f7cdc718d39c99efedb0790f4 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=48fddba63787167f7cdc718d39c99efedb0790f4 commit 48fddba63787167f7cdc718d39c99efedb0790f4 Author: Mark Johnston AuthorDate: 2025-03-20 01:34:10 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:03 +0000 devfs: Return early from sysctl_devname() if no input is given Otherwise we end up searching for a device using an uninitialized key, tripping up KMSAN. MFC after: 2 weeks (cherry picked from commit 48d6b52add36cc09e7fb1fbec44ab66c0742f320) --- sys/fs/devfs/devfs_devs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c index db879efe803a..c6dcd4fc7646 100644 --- a/sys/fs/devfs/devfs_devs.c +++ b/sys/fs/devfs/devfs_devs.c @@ -86,6 +86,9 @@ sysctl_devname(SYSCTL_HANDLER_ARGS) struct cdev_priv *cdp; struct cdev *dev; + if (req->newptr == NULL) + return (EINVAL); + #ifdef COMPAT_FREEBSD11 if (req->newlen == sizeof(ud_compat)) { error = SYSCTL_IN(req, &ud_compat, sizeof(ud_compat)); From nobody Sun Apr 6 22:51:09 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yQ2Pt1z5s8Rv; Sun, 06 Apr 2025 22:51: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 4ZW6yP66Smz3KSY; Sun, 06 Apr 2025 22:51:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979869; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O5Txn8gi+lTQedH2Ux/DtrpwyzhS+DoPEHeF9/hqXCM=; b=rH9nD04lly3NaeP8RClM8tZvUOiwAmQbxfQNOHfvppo9W+0fEnvY3S5wdw0wMybxszNFOa 6SEneoZf8zhw2w98f7MAePg6U1ku57iQPO5CDUK6pBNyoKJuqmZf0qIC2ny7BPlZt/fwgU +hW0K/FGJfquwJkHSwcJgUNWQbvD3TgRvhd7dQopguKbTO8Z1heyBfpdxP/LmzzBhb9zIA KM8TYlmeaRO+gyfXNaOS0o2esl2Vmh1cDd4tkg29/dqhgXUw32m1H+jwed2iejxXrA8YWz PjDHbjKghxtusIFo3CzVcXcvqN6qqegROuBG5QSSqP8c9CDontUb7bGDk2EKZw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979869; a=rsa-sha256; cv=none; b=KOvPHkVuFoATqB3f0zH7bYuWi1uE66rHWe5o/o9pNdPm6HemPgBq7ZLm8aZoTy5oWi0ALg EmXB5GxgwcTjV/galELa0YhcTsfkCAUojxhA1tfEC67bIr6kvdRkcY61S3mEdscj4w3dbB GFVyFMDt6ka49GZLtNrx7blkmJQRgaKF26Jp+NJrbHANK5NQr05H10yHlD2VkqXsOqqL90 h3mM8Sb+U0UkLRim1wRhCU7obYG0Moqw1JCz6XjGOALoC0rTkeRzNXIsmOFy7ybweWzvDJ 9IRwmHgdMSas3gr0Se7ez+Zl23MZb3hrEyvAPjmZ37zb8Luie55wtcddbIboeQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979869; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O5Txn8gi+lTQedH2Ux/DtrpwyzhS+DoPEHeF9/hqXCM=; b=Zswde0e5oBl7gBWu0DIPlHb8uXd7c7xUvS12JjWEigo3awO4bgZbuAsP/f6/d6T617XQk1 DJD7ZurZ9hncU7LmOlL8Uc051ISC5YqOOJ7vAjThEFZzhuPFYzZB0g9fZ+/41o67769S+U MHPMzca6TU2No26gA6KKk3eeQdKHw6N25LAQ7XltgGTBOnh+NO/FJMo5Fnu9OkRVfzp9lh 0L1FO3ZEmeW8Ewpm4MfAKEGUKMgm0pYRLfgEs3Y6/d5fZpUVwhPmKp+RdFQHWw6FYXbQuv rTRD3Ul8ers3IhSqf17/DJQotUgbxBjux1NuMnNJQroFsEPSEEr5w+OQolaf8A== 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 4ZW6yP5ThQz5Xt; Sun, 06 Apr 2025 22:51: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 536Mp9nc077054; Sun, 6 Apr 2025 22:51:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536Mp9cU077051; Sun, 6 Apr 2025 22:51:09 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:09 GMT Message-Id: <202504062251.536Mp9cU077051@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 014ce35640bf - stable/14 - vfs: Return early from sysctl_vfs_ctl() if no input was given List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 014ce35640bf1a00edf3f7163c3248bb484c29f2 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=014ce35640bf1a00edf3f7163c3248bb484c29f2 commit 014ce35640bf1a00edf3f7163c3248bb484c29f2 Author: Mark Johnston AuthorDate: 2025-03-20 01:34:18 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:03 +0000 vfs: Return early from sysctl_vfs_ctl() if no input was given Otherwise we end up searching for a mountpoint using an uninitialized key, and likely failing the version test. This violates KMSAN's invariants, so simply return immediately instead. MFC after: 2 weeks (cherry picked from commit d8703cd80247ca203b817305753bda2b7dbfb5ef) --- sys/kern/vfs_subr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 5a0a7f9161ed..6c116448a59a 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -6451,6 +6451,8 @@ sysctl_vfs_ctl(SYSCTL_HANDLER_ARGS) int error; struct mount *mp; + if (req->newptr == NULL) + return (EINVAL); error = SYSCTL_IN(req, &vc, sizeof(vc)); if (error) return (error); From nobody Sun Apr 6 22:51:10 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yR2HqHz5s83Y; Sun, 06 Apr 2025 22:51: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 4ZW6yQ6cW9z3KbV; Sun, 06 Apr 2025 22:51:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F97T+rs/L+EnZ2MHPb9qdCzZ8nJgrm1Xu/mOOL5h1Bk=; b=FRlIY8u7OOmUM99meT1H0dKLMDiBKsxhDngsbpLHlAa3uTw7KL0b/0mBJfGwRR7UMWTVKb xGOjCBOJCs6SqlMM5lAsS0Iwf1ExxCslqL0lWVEiX8XZEXJjWzqsYXEFccAhem5CXtY891 LY7HAeqpPGLeyE2+I8JO96pAKQzXjF6XMVLz8UgJ/kMfiV6j8rJCOtEQ76LfzZMTP/FOFA O8RaWnTUtBm21pmeKrwQpb1cZjy+i3GWTlz53/MFAev9CkFaS9G2d826SXYgq2kWD2mz9b uGjkhWjwbsUCHtpLbckWMByYdv/CQoDlXGFG6dje3v/2l+/+bGF1wJ+netOJ9w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979870; a=rsa-sha256; cv=none; b=Hs6Qv3wVNHTlIvVaRRfMRL5bC7Qui+xFy3MIb0wrfTmSdJ+NAhQUgECJ7UHxekhbrv3GfH u6EQbYUsc7TZaPshQkGBUe4YB/FeqQl1R/Kxs/ICLWYFeGvhAprmn/+a9gn3tbArb8ybVt 2Fm1jL7cPANvkdM2No56WrpfN9vMsx36GfeRQb8++Y4J5BstQkJTvUrcrn3Abcc1nUIdxT QrqFtWThXu2d5BO5InPiKQO3x29nh96LiaVE5TevmN1TkQjxgwnY6XW4ViJGGgnoeBC2+5 zROiVAWkzlYnrLZ7wJSvAZHDEzCCMwCowqZzpBx3Zke7MvNJGxnI6yo9ggE6gg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979870; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F97T+rs/L+EnZ2MHPb9qdCzZ8nJgrm1Xu/mOOL5h1Bk=; b=X8iA8R7EFvnLxPBwXwf7O1qsVXmUuPG8CZAN5PQFzO5+zSHH5vueOIqlOS1TsywmNiLz6b XUWYHgYg33mOFHDrYRbTraFST5RJuv4mZZ4n138dk5ppycHZzxB9pj09pkiCJUvN8Qslji jriJwJfyUZSjY7VUW3SR3+YUu7RDhImsvTjbnSrn74FoBqEsFmD1wioOLeO7XG6UX9P3Nb u9q5dKRYG896WpCZtZ2Jz4igMvoJYHVHvABkjnABqqUUmF5aCjgNgNZh6rviPvAayz/Ard uEC6x56d3TVmvXxa1DUEHrw9MkmKUcCVM2oYCiko1XqcN2l5uak7fwsOlpb6sQ== 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 4ZW6yQ6Cjxz50p; Sun, 06 Apr 2025 22:51: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 536MpA89077086; Sun, 6 Apr 2025 22:51:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpA12077083; Sun, 6 Apr 2025 22:51:10 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:10 GMT Message-Id: <202504062251.536MpA12077083@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 85ff908020d0 - stable/14 - netinet: Fix getcred sysctl handlers to do nothing if no input is given List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 85ff908020d0169f9415852c7b63a4f15cac1294 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=85ff908020d0169f9415852c7b63a4f15cac1294 commit 85ff908020d0169f9415852c7b63a4f15cac1294 Author: Mark Johnston AuthorDate: 2025-03-20 01:33:44 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:03 +0000 netinet: Fix getcred sysctl handlers to do nothing if no input is given These routines were all assuming that the sysctl handler has some new value, but this is not the case. SYSCTL_IN() returns 0 in this scenario, so they were all operating on an uninitialized address. This is mostly harmless, but trips KMSAN checks, so let's fix them. Reviewed by: zlei, rrs, glebius MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49348 (cherry picked from commit 3ff865c6a7948b2cfc01d7056c619145b696700a) --- sys/netinet/sctp_usrreq.c | 3 ++- sys/netinet/tcp_subr.c | 4 ++++ sys/netinet/udp_usrreq.c | 2 ++ sys/netinet6/sctp6_usrreq.c | 2 ++ sys/netinet6/udp6_usrreq.c | 2 ++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index 29d63f989e79..4c9239f84df8 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -361,8 +361,9 @@ sctp_getcred(SYSCTL_HANDLER_ARGS) /* FIX, for non-bsd is this right? */ vrf_id = SCTP_DEFAULT_VRFID; + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); - if (error) return (error); diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index d633bd660346..dcd947384d99 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2751,6 +2751,8 @@ tcp_getcred(SYSCTL_HANDLER_ARGS) struct inpcb *inp; int error; + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); if (error) return (error); @@ -2793,6 +2795,8 @@ tcp6_getcred(SYSCTL_HANDLER_ARGS) int mapped = 0; #endif + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); if (error) return (error); diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 178b5b431cf3..d65343fc9997 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -846,6 +846,8 @@ udp_getcred(SYSCTL_HANDLER_ARGS) struct inpcb *inp; int error; + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); if (error) return (error); diff --git a/sys/netinet6/sctp6_usrreq.c b/sys/netinet6/sctp6_usrreq.c index e38bf2b4ae6c..0d59209ceedd 100644 --- a/sys/netinet6/sctp6_usrreq.c +++ b/sys/netinet6/sctp6_usrreq.c @@ -375,6 +375,8 @@ sctp6_getcred(SYSCTL_HANDLER_ARGS) vrf_id = SCTP_DEFAULT_VRFID; + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); if (error) return (error); diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index a23bbabab236..8ab159b4e622 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -609,6 +609,8 @@ udp6_getcred(SYSCTL_HANDLER_ARGS) struct inpcb *inp; int error; + if (req->newptr == NULL) + return (EINVAL); error = priv_check(req->td, PRIV_NETINET_GETCRED); if (error) return (error); From nobody Sun Apr 6 22:51:11 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yS4q5tz5s8PX; Sun, 06 Apr 2025 22:51: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 4ZW6yS2x8qz3KKN; Sun, 06 Apr 2025 22:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979872; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O9o7Y++KGS6Fg9xEGyARmZkQZT53/a1igPZPYNM9BgI=; b=wu5uxmrZAodvpmozmQTEJq8QmrJE5ibkrJQ/bangJ8zTvjz0Ian3rDKPVBazfzLZHBrUaR 9isB/ysdELotb4sgacrCowLxkIZfZTHsdXvDn9jTw98kZ8x3Y2OQJGvrw0hzpcKh7//Dec RmmrZR/A19/7KykQ95pq7QTegFXWZKyPu1N+Sb0TyQK89GunWlDVaUECodCB1wRnTqJbpu ZRsv8kLDGXbFypF3dlrLfv0c/GWmPSufOdMCILlWMThFEm491zrC+P+xLV6UEVnOhga+su F1g5uSgCtYORwP6AMXNdZ8Zyzd68FtZ59NnJQAFkX63fkuMq+AkdAv6cTGcwXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979872; a=rsa-sha256; cv=none; b=sORpsmwYbxVp+sO3qPVefpG2DpqU1Ws2egEtjMZDBKdlLLqhpbfPDnHieovsH8SFcXrbx4 9GUSNmbxZ52drgQxtAmwuNMX96/6m3/YOCW9JTo8XiqDRzIHJ5z9McNs9ZESbw9HODEkk0 4thVkoiwr8UYqD3P0kXAwSs+LVvmByZCyRQLWdsd3y6wpr6JD1RRTJVM1BPhJDRId4sOOa IQY37S/U6rZX02xFzhWoEz9uLR7P0eYnWkyrLIAgrv6jVWoi7RhY2x6OHJF0m/qwZf4rmS 6inQzzkzqp+eLPqNhUL4bQWS73YFWtCoCGZOxdfOhCsxq2LsL8zeyE662KEOGQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979872; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=O9o7Y++KGS6Fg9xEGyARmZkQZT53/a1igPZPYNM9BgI=; b=nR7dm5TJHGjLOV7uhv2+5r7+06cQacjAZKKQOSweuZJ64vqI3i1acRk+F7n/VbtlcDvYIR cK1gHseLqtAOG71R4IvXfjAzyBZdNhw0bLpy6zluBpBBzbcECRGhPCQ9172bLiMWPIxwZn Qw/RPOQDeH5kdPOU1gNJQ/E3FtVtXANImCmeEo426Nx7Te0gS6jnXt2NQxR16LjssTgA6P zgQqXiNjqD6Etq8adX+2D1bxzA+kHb5GTQelqvlzwWfWluEJvlkR1A58vt1senNoMalTuD cESNHT0Fzf5DP6icsXDdWorPTNanVcC+huekqQ3N8GwAa3i9l8m3OjQLEgcFsQ== 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 4ZW6yS04mfz579; Sun, 06 Apr 2025 22:51: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 536MpBBZ077118; Sun, 6 Apr 2025 22:51:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpBtB077115; Sun, 6 Apr 2025 22:51:11 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:11 GMT Message-Id: <202504062251.536MpBtB077115@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 43a32f790bc5 - stable/14 - malloc: Fix DEBUG_REDZONE for contigmalloc() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 43a32f790bc5c79b1557a14f9540c8cc02ef5028 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=43a32f790bc5c79b1557a14f9540c8cc02ef5028 commit 43a32f790bc5c79b1557a14f9540c8cc02ef5028 Author: Mark Johnston AuthorDate: 2025-03-23 13:42:40 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:05 +0000 malloc: Fix DEBUG_REDZONE for contigmalloc() When free() was adapted to support allocations originating from contigmalloc(), redzone(9) support was not included. redzone(9) involves adjusting the pointer to freed memory before looking up the slab cookie, so it's not straightforward to make contigmalloc() opt out of redzone support. Thus, augment contigmalloc() to support redzone. Reported by: glebius Tested by: dhw MFC after: 2 weeks Fixes: 9e6544dd6e02 ("malloc(9): extend contigmalloc(9) by a "slab cookie"") (cherry picked from commit 74361d693aec892b01c1553bda7176f8d341b2ff) --- sys/kern/kern_malloc.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index 3fef90b5fa82..f31fc2a76a07 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -479,11 +479,18 @@ contigmalloc_size(uma_slab_t slab) } void * -contigmalloc(unsigned long size, struct malloc_type *type, int flags, +contigmalloc(unsigned long osize, struct malloc_type *type, int flags, vm_paddr_t low, vm_paddr_t high, unsigned long alignment, vm_paddr_t boundary) { void *ret; + unsigned long size; + +#ifdef DEBUG_REDZONE + size = redzone_size_ntor(osize); +#else + size = osize; +#endif ret = (void *)kmem_alloc_contig(size, flags, low, high, alignment, boundary, VM_MEMATTR_DEFAULT); @@ -491,16 +498,26 @@ contigmalloc(unsigned long size, struct malloc_type *type, int flags, /* Use low bits unused for slab pointers. */ vsetzoneslab((uintptr_t)ret, NULL, CONTIG_MALLOC_SLAB(size)); malloc_type_allocated(type, round_page(size)); +#ifdef DEBUG_REDZONE + ret = redzone_setup(ret, osize); +#endif } return (ret); } void * -contigmalloc_domainset(unsigned long size, struct malloc_type *type, +contigmalloc_domainset(unsigned long osize, struct malloc_type *type, struct domainset *ds, int flags, vm_paddr_t low, vm_paddr_t high, unsigned long alignment, vm_paddr_t boundary) { void *ret; + unsigned long size; + +#ifdef DEBUG_REDZONE + size = redzone_size_ntor(osize); +#else + size = osize; +#endif ret = (void *)kmem_alloc_contig_domainset(ds, size, flags, low, high, alignment, boundary, VM_MEMATTR_DEFAULT); @@ -508,6 +525,9 @@ contigmalloc_domainset(unsigned long size, struct malloc_type *type, /* Use low bits unused for slab pointers. */ vsetzoneslab((uintptr_t)ret, NULL, CONTIG_MALLOC_SLAB(size)); malloc_type_allocated(type, round_page(size)); +#ifdef DEBUG_REDZONE + ret = redzone_setup(ret, osize); +#endif } return (ret); } From nobody Sun Apr 6 22:51:15 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yX0xK7z5s8Wv; Sun, 06 Apr 2025 22:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZW6yW3QhBz3KWW; Sun, 06 Apr 2025 22:51:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979875; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PFHFfDvFhFAnL8CYTBgdP2cjKlzQzmSFG9kyOHsJ9Po=; b=xVl4Yl5ePITTqgohdLurZ9qg6McIpimv8oHMqWAa9kXfB3fepFS+fJBM1A7bDGjSIBV8Zq O9RMLtSe+mCYh+hfa0271zNryWe7qGFp5Tnbin0kdW3ge26W1ddNXrWK60I7UF88u6smMN h9mjc7+JIMY0cvSHvadxXl62mMKChWdQ3Qa1LFXNhmTl1aPrWJtOiAYhiIMgktiOZSJRWl AhtbCDgMw4udCaLigfSbQ33zqipWmgMWf3h67n1rq+S2Inz0llfQ5M5W2GKG6CgFMhxbWp wbu+f92JtsrIevQ/vPh22els2bhUV0icIcRCqdWmfkCswx58oEc8FB2xVTHQ3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979875; a=rsa-sha256; cv=none; b=agpyDRqUJB7rnblhNIYDsl6HovD2HU+pB6HwF4v1rwzP+dIKEKOLVwD/Vg9/K1wi6tBgw0 ZCI00rUKmgvcHvpi52Km/NI1ltgdpWd0tdTSLrOjTBxKaA0QgBgtvlyd/H6hDX36ysqJXC TmkosWRL/WgGygZO0O8rCgm92MGzxlL5VA49LCymEzVJuuG1buoPkrcPZXZ97mOfWuD9kZ raZcIU4NQyHrpiN5FgqgDVUz1S+UPKu2A2R6fYWZKeZ+Sn6cRTDVuXXfIKsaTUMC1M1Cw8 hHsv86ym3sNg8xC1mMapXEKAiPH81fQ+CaDVxh96UjUxZzoOWdKMXiuEJoY8/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979875; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PFHFfDvFhFAnL8CYTBgdP2cjKlzQzmSFG9kyOHsJ9Po=; b=J3y++PCPLrY4rOIKugaLCQLIxIpiZwvJZWITDGEfWP0ATDpoe94qldpYT/PQSAeP9Sylbt rWywCwZpw+UQmgxwaIXT6jpxTFJIbPPaxuBkcOyRM9ZwkrwQpMp6lPXUgOHsYkSKvwAOmw SJ7lY+qTXOsv6kF/PoR3/XHPLsTh8oY0Wh4CwfUc+tJro7WuqKGvSqvJgcrkhjtQubiOqA QyaNLpfg3YtgC/gH+oo7XHooHkfcOLUeuIEgZbbLzDy+t/fHtwHV3wFvTeMQgADTCjDM3H bRQGRAZQYT7lSR4duG7S+4tddmO7ewEE2/oVZc0HxnRbeqY0uPx6fRaK7So9KQ== 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 4ZW6yW2x5wz57C; Sun, 06 Apr 2025 22:51: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 536MpFAX077224; Sun, 6 Apr 2025 22:51:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpFJA077221; Sun, 6 Apr 2025 22:51:15 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:15 GMT Message-Id: <202504062251.536MpFJA077221@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 931dec404489 - stable/14 - mixer tests: Serialize List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 931dec40448913cb9e33d2abb6a8c70400e847f6 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=931dec40448913cb9e33d2abb6a8c70400e847f6 commit 931dec40448913cb9e33d2abb6a8c70400e847f6 Author: Mark Johnston AuthorDate: 2024-09-08 17:32:10 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 18:04:12 +0000 mixer tests: Serialize These tests modify attributes of a global mixer device, and aren't prepared to run in parallel. (cherry picked from commit c6b41ba65021eff2b1db9157f813666a3e0543a1) --- usr.sbin/mixer/tests/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usr.sbin/mixer/tests/Makefile b/usr.sbin/mixer/tests/Makefile index 9a5bb3a183ab..c8056169f9a4 100644 --- a/usr.sbin/mixer/tests/Makefile +++ b/usr.sbin/mixer/tests/Makefile @@ -1,3 +1,6 @@ ATF_TESTS_SH+= mixer_test +# mixer tests fiddle with a singleton dummy audio device. +TEST_METADATA.mixer_test= is_exclusive=true + .include From nobody Sun Apr 6 22:51:17 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yZ1nc0z5s8X0; Sun, 06 Apr 2025 22:51: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 4ZW6yY5jWFz3KT4; Sun, 06 Apr 2025 22:51:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979877; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ElnyeMBsa297FU/n2bKBrVIVp7UYqXu3HlJN5293GdM=; b=EGx1P6OIvwwWajd6mXxbxojiFUZig2CbYkdi3gGF6FzOjj8vW7RP4h1eOiAmsnTkcJ71+T KE9p8wNQfcIlqxbW9Wy3TLhnkh2ya+FRnkQFSUpOPANaUQjO/qrzuN3ArxJ6CaK6l5nc6M HXSNCzyKXyODvlMLLUxxqx+iNNFa5rWVP5JrP4g/UxAehRl10wfCTooUHwMLFhnE7d9dBi m8H8hfl3rYqqI1HNzn+YohMU9XX/MikKYBsYM98kMR2PYx8SqP0RTB7vvGatVNWSD2+oyF xhxcI10TZO50j67deh9wPKIfm9PuNW470tCIDWJ9ORTU30hO3lPYHHobFPoVAQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979877; a=rsa-sha256; cv=none; b=xTZ2g4v25/OMzoIoHggrVn1Wy7TKn+Q4Dk6ue0qNeU4rgN07UylGgqlU0J5dG1zd33sKpm S0RaGpLnF7wwE7kUGIRxg03eWUOOUxk7kGZqUDGsDKkT8xqvhaSGpHHD6ADTBK2r/B6K0f BRX9i7ep/LQUlacADZT+wFcpo1LNCLECxpE3dWJ3pKf3Ir/qV/Pxss7fAoGSC5tRcaSrtJ 5L/9C0KB7bqTnq1HC97PaWTRRzYUuSLXcjPvOwd2xqfms5NAaFJknxhXF1f3eDFP779J3Z MSgHjRfFre2xZpzGYWo+s07wfSON4vja4VP33AtpnWJbN7bE2eZsqv7hjbnB3A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979877; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ElnyeMBsa297FU/n2bKBrVIVp7UYqXu3HlJN5293GdM=; b=lgj8doD8kj+Zvo4a6nMaUs8HxIdcSAoAyq6TWNkb/0M4xRfrdFaX0EH3oMVpyyDCxdA+Jc 5920jEHiJz7TKa6t6LWSafUdgLXNbRBTqmoZjbfZ6FzFDZGXt0VxUaRzQPUFUpug8ocUvx m8mvk2YpVlu//T5oKahAdj85xgTgUD1qUEs+/5EtvRDZ1vQ8UNAWz/j6tgqbSP6FddppH7 aiersGRiRhGXvAd8Tq7wGDzTVZGh4+NX2tJcwPwURGEpcduewBrIBPnT70mI7VHO41Aon0 bverH+J9giCn/Go5yLLupEJAQQco3QYho9nt6MBJEvnUBzWVaP8qX4FA9vQxbw== 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 4ZW6yY4mTpz5lS; Sun, 06 Apr 2025 22:51: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 536MpHgl077288; Sun, 6 Apr 2025 22:51:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpHRn077285; Sun, 6 Apr 2025 22:51:17 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:17 GMT Message-Id: <202504062251.536MpHRn077285@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: ba224cec6796 - stable/14 - fibs tests: Fix test failures and simplify List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: ba224cec67961cedf7531bd6942a342db4a98b3c Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ba224cec67961cedf7531bd6942a342db4a98b3c commit ba224cec67961cedf7531bd6942a342db4a98b3c Author: Mark Johnston AuthorDate: 2025-01-21 21:44:25 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 18:08:18 +0000 fibs tests: Fix test failures and simplify The tests previously expected the invoker to pass a list of FIBs to use. However, they now run in separate VNET jails, so we can simply expand the FIB array as needed in each test. Modify each test to simply set net.fibs as needed and grab FIB numbers starting at 1. A number of tests were also broken by commit 9206c7996198 ("usr.bin/netstat: -n should not print symbolic names"), so fix those. Reviewed by: asomers Fixes: 9206c7996198 ("usr.bin/netstat: -n should not print symbolic names") MFC after: 2 weeks Sponsored by: Klara, Inc. Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D48585 (cherry picked from commit 81b076e43aa63ac255996093233ab3560a23977e) Note, the netstat-related changes described above are not merged. --- tests/sys/netinet/fibs_test.sh | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/tests/sys/netinet/fibs_test.sh b/tests/sys/netinet/fibs_test.sh index 5c1a918abb2c..b58a45b26f3e 100644 --- a/tests/sys/netinet/fibs_test.sh +++ b/tests/sys/netinet/fibs_test.sh @@ -30,9 +30,6 @@ # Authors: Alan Somers (Spectra Logic Corporation) # -# All of the tests in this file requires the test-suite config variable "fibs" -# to be defined to a space-delimited list of FIBs that may be used for testing. - # arpresolve should check the interface fib for routes to a target when # creating an ARP table entry. This is a regression for kern/167947, where # arpresolve only checked the default route. @@ -48,7 +45,6 @@ arpresolve_checks_interface_fib_head() { atf_set "descr" "arpresolve should check the interface fib, not the default fib, for routes" atf_set "require.user" "root" - atf_set "require.config" "fibs" atf_set "require.progs" "nping" } arpresolve_checks_interface_fib_body() @@ -100,7 +96,6 @@ loopback_and_network_routes_on_nondefault_fib_head() { atf_set "descr" "When creating and deleting loopback IPv4 routes, use the interface's fib" atf_set "require.user" "root" - atf_set "require.config" "fibs" } loopback_and_network_routes_on_nondefault_fib_body() @@ -157,7 +152,6 @@ loopback_and_network_routes_on_nondefault_fib_inet6_head() { atf_set "descr" "When creating and deleting loopback IPv6 routes, use the interface's fib" atf_set "require.user" "root" - atf_set "require.config" "fibs" } loopback_and_network_routes_on_nondefault_fib_inet6_body() @@ -216,7 +210,6 @@ default_route_with_multiple_fibs_on_same_subnet_head() { atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default IPv4 routes" atf_set "require.user" "root" - atf_set "require.config" "fibs" } default_route_with_multiple_fibs_on_same_subnet_body() @@ -263,7 +256,6 @@ default_route_with_multiple_fibs_on_same_subnet_inet6_head() { atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default IPv6 routes" atf_set "require.user" "root" - atf_set "require.config" "fibs" } default_route_with_multiple_fibs_on_same_subnet_inet6_body() @@ -315,7 +307,6 @@ same_ip_multiple_ifaces_fib0_head() { atf_set "descr" "Can remove an IPv4 alias from an interface when the same IPv4 is also assigned to another interface." atf_set "require.user" "root" - atf_set "require.config" "fibs" } same_ip_multiple_ifaces_fib0_body() { @@ -358,7 +349,6 @@ same_ip_multiple_ifaces_head() { atf_set "descr" "Can remove an IPv4 alias from an interface when the same address is also assigned to another interface, on non-default FIBs." atf_set "require.user" "root" - atf_set "require.config" "fibs" } same_ip_multiple_ifaces_body() { @@ -404,7 +394,6 @@ same_ip_multiple_ifaces_inet6_head() { atf_set "descr" "Can remove an IPv6 alias from an interface when the same address is also assigned to another interface, on non-default FIBs." atf_set "require.user" "root" - atf_set "require.config" "fibs" } same_ip_multiple_ifaces_inet6_body() { @@ -446,7 +435,7 @@ slaac_on_nondefault_fib6_head() { atf_set "descr" "SLAAC correctly installs routes on non-default FIBs" atf_set "require.user" "root" - atf_set "require.config" "fibs" "allow_sysctl_side_effects" + atf_set "require.config" "allow_sysctl_side_effects" } slaac_on_nondefault_fib6_body() { @@ -533,7 +522,6 @@ subnet_route_with_multiple_fibs_on_same_subnet_head() { atf_set "descr" "Multiple FIBs can have IPv4 subnet routes for the same subnet" atf_set "require.user" "root" - atf_set "require.config" "fibs" } subnet_route_with_multiple_fibs_on_same_subnet_body() @@ -570,7 +558,6 @@ subnet_route_with_multiple_fibs_on_same_subnet_inet6_head() { atf_set "descr" "Multiple FIBs can have IPv6 subnet routes for the same subnet" atf_set "require.user" "root" - atf_set "require.config" "fibs" } subnet_route_with_multiple_fibs_on_same_subnet_inet6_body() @@ -620,7 +607,6 @@ udp_dontroute_head() { atf_set "descr" "Source address selection for UDP packets with SO_DONTROUTE on non-default FIBs works" atf_set "require.user" "root" - atf_set "require.config" "fibs" } udp_dontroute_body() @@ -671,7 +657,6 @@ udp_dontroute6_head() { atf_set "descr" "Source address selection for UDP IPv6 packets with SO_DONTROUTE on non-default FIBs works" atf_set "require.user" "root" - atf_set "require.config" "fibs" } udp_dontroute6_body() @@ -748,15 +733,13 @@ get_fibs() { NUMFIBS=$1 net_fibs=`sysctl -n net.fibs` + if [ $net_fibs -lt $(($NUMFIBS + 1)) ]; then + atf_check -o ignore sysctl net.fibs=$(($NUMFIBS + 1)) + net_fibs=`sysctl -n net.fibs` + fi i=0 while [ $i -lt "$NUMFIBS" ]; do - fib=`atf_config_get "fibs" | \ - awk -v i=$(( i + 1 )) '{print $i}'` - echo "fib is ${fib}" - eval FIB${i}=${fib} - if [ "$fib" -ge "$net_fibs" ]; then - atf_skip "The ${i}th configured fib is ${fib}, which is not less than net.fibs, which is ${net_fibs}" - fi + eval FIB${i}=$(($i + 1)) i=$(( $i + 1 )) done } @@ -816,9 +799,7 @@ setup_iface() local ADDR=$4 local MASK=$5 local FLAGS=$6 - echo setfib ${FIB} \ - ifconfig $IFACE ${PROTO} ${ADDR}/${MASK} fib $FIB $FLAGS - setfib ${FIB} ifconfig $IFACE ${PROTO} ${ADDR}/${MASK} fib $FIB $FLAGS + atf_check setfib ${FIB} ifconfig $IFACE ${PROTO} ${ADDR}/${MASK} fib $FIB $FLAGS } # Create a tap(4) interface, configure it, and register it for cleanup. From nobody Sun Apr 6 22:51:16 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yY0Zhcz5s8cS; Sun, 06 Apr 2025 22:51:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZW6yX4BHKz3KHT; Sun, 06 Apr 2025 22:51:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979876; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=suKi5DFIkNQzWVGVdJ5EEZlXY0DpmmD+R+2PfwcekeM=; b=Fli09nkfmaKx4uQsK2pdWKan0HSaTCAfPw7zasBvkXFz2JmSyhNAI/k6O5WzJzbrEOixHM 4J0zokP3nFmo5gUZryR4tZJxp1yptrQOWYe4N0QJ2NEZ0lw2gZYJ//NgFTjPoRSKwwm2jd B5/FHZm4iyfREJ8fie8KLpFoQjpDrUTU055Sgxpi66DxTeCNHZHP8ftNXXeoGUZRoOCYSx NZCEuDHI2EvKz2zHDZ5lJKjXA5gZhSfLBzApmcDGPCK5zFrN3vDwew/6TnOuoTpF2ofmG3 Eb8Smenty43O4OWk9EffajW55Wjf4B1DFrFWbTxZ1cHoo+7CPN6xuGxFF8X0Gg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979876; a=rsa-sha256; cv=none; b=OF+tZ7mSHBc/5mQzMfryau/DMcHzhC27ec3Xh1UdtBNyPgmLNpOpAQI6wcPIrQobY9mC43 /blY5BTsY/jUakHIcM4SU5rbMSD7lHp0NV35D87zzkwP8F4/7pZyQUL63ey1zQ09OiMdAi A3PCHhzT+o8qqWwjn016EV9a8OUNJjBopz0GS2L7L4/t5lSmc7F4gFssUTmc0wpsb01Y+B razKZrJ57HwMuqwbbYe6bO+CeoSdG9NdKU6redbvrOpiusD9c56HocVg5YQalLdXcFjcKA fA9tKEA/Q4pu9lxv8jXiP9wywnHbFWY/wYN07tUtleUYYDe3ZpTB9E6h6+gXIw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979876; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=suKi5DFIkNQzWVGVdJ5EEZlXY0DpmmD+R+2PfwcekeM=; b=qBwBFftQZJjPSa7+9Yy3ANqexgEUqr62MKsPTZX75QJFUdGFNI6h1QNe0vFSEhUP0i+i8F EpDBZ1JGNzJxu7o3HMdR83ZJAVJJqt+PWR8Pzv7IC/7v6wItrq4xz3eoqRHx+OIaX0Ei8a +lywOoUoWtjGs6odVizy9Rg1ZBrbulaLyyx4E4ifDuJe7fHXV1JP7UPXFII9msTzDNHY38 JKbfFqt9bh/l2akLDW+N+Q6VfoPfsJw2ij04vAzxCkAu9IYGi+rtGYTSW2O4e6OgcAXjxN 6tQyKHgou52ABeD3sR1ZY0lo630dUyRCZuc67g4RROLguxdpJ/uA/SWCecSuFA== 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 4ZW6yX3p1Tz5lQ; Sun, 06 Apr 2025 22:51: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 536MpGP3077256; Sun, 6 Apr 2025 22:51:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpGlM077253; Sun, 6 Apr 2025 22:51:16 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:16 GMT Message-Id: <202504062251.536MpGlM077253@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 984e3d813e5f - stable/14 - netmap: fix unit tests List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 984e3d813e5f1d2a0938bdf5c03712de0ab1099b Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=984e3d813e5f1d2a0938bdf5c03712de0ab1099b commit 984e3d813e5f1d2a0938bdf5c03712de0ab1099b Author: Vincenzo Maffione AuthorDate: 2023-12-29 07:46:46 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 18:05:05 +0000 netmap: fix unit tests After ad874544d9f018bf8eef4053b5ca7b856c4674cb, interface name validation has been removed, resulting in two unit tests failures. Drop the failing tests since they no longer apply. Reported by: markj (cherry picked from commit ee5804da116f2107451c8b4376b69b3a64a630e8) --- tests/sys/netmap/ctrl-api-test.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/sys/netmap/ctrl-api-test.c b/tests/sys/netmap/ctrl-api-test.c index 9fc08d3082a4..8d33b4c58d2a 100644 --- a/tests/sys/netmap/ctrl-api-test.c +++ b/tests/sys/netmap/ctrl-api-test.c @@ -1803,7 +1803,6 @@ static struct nmreq_parse_test nmreq_parse_tests[] = { { "netmap:", "", NULL, EINVAL, 0, 0, 0 }, { "netmap:^", "", NULL, EINVAL, 0, 0, 0 }, { "netmap:{", "", NULL, EINVAL, 0, 0, 0 }, - { "netmap:vale0:0", NULL, NULL, EINVAL, 0, 0, 0 }, { "eth0", NULL, NULL, EINVAL, 0, 0, 0 }, { "vale0:0", "vale0:0", "", 0, NR_REG_ALL_NIC, 0, 0 }, { "vale:0", "vale:0", "", 0, NR_REG_ALL_NIC, 0, 0 }, @@ -1811,7 +1810,6 @@ static struct nmreq_parse_test nmreq_parse_tests[] = { { "valeXXX:YYY-4", "valeXXX:YYY", "", 0, NR_REG_ONE_NIC, 4, 0 }, { "netmapXXX:eth0", NULL, NULL, EINVAL, 0, 0, 0 }, { "netmap:14", "14", "", 0, NR_REG_ALL_NIC, 0, 0 }, - { "netmap:eth0&", NULL, NULL, EINVAL, 0, 0, 0 }, { "netmap:pipe{0", "pipe{0", "", 0, NR_REG_ALL_NIC, 0, 0 }, { "netmap:pipe{in", "pipe{in", "", 0, NR_REG_ALL_NIC, 0, 0 }, { "netmap:pipe{in-7", "pipe{in", "", 0, NR_REG_ONE_NIC, 7, 0 }, From nobody Sun Apr 6 22:51:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yT4jsrz5s8TB; Sun, 06 Apr 2025 22:51: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 4ZW6yT1sScz3KQK; Sun, 06 Apr 2025 22:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qK+DxFVKJjIlmNqZPF+yzhtN83Oj7S6fY1pvU1KzUKw=; b=vHn35lAbpTp1KIHe1gQ/3IYTUMcyrBs3j8L89iMc3l3bGXcsODym4Abka1BIqDaQxkt9Pq f2cTR68jDOVJrFc/Rl6v5O9SAZOU8a2ZCiOZ8mz4ZSlBLXoaSOWZ/tVRUg09zXSBfN4Ez7 ACOyxkkLAvyD0dH3UocvoRYfW27Ok+3Hpo+4hs0NAfJS48SDv+iFwlrPhB4Zq5XaPpaED2 E+lok68Se6VIncQov396uzObDVbZVVEw/O9o0azsPBwqiYB4M9oZBiHXZHv96dgOJ2QMSG xbDKK1YkzPF2kmOf6nNmt4jiguwGYfirKZ5uEJxCl1XNZ/7USeEvRMfVU8bilw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979873; a=rsa-sha256; cv=none; b=NXBLFTyLvYdJ+5/viubDfq1RBProhO9+5aZMDX+2815B18LdAkKvAYO7i+Pv1/n5u4oq8A RJMqvF6GC4xsMDQogdc+Tz29YkZ6+egXSEfL/dgej9+XLylreB0S0MnIfbA9dk+XNNF81U mxzXBiYlHvQ9mkc09vdISrHTIDNYjldxyBAacxXEy4pPWxsyK/bNtkewZeLRYaVIBdP/T5 v/11x1BLacS056f3JQvLVJq4R47nTF+SgcrdmnTcBVsTFWtchwMIM3rJNUIxyo4u3NPkFF OkW1CXpjNTWAbdIty9wpSvTva3IpTNF93K18psqJh8D+ZPSqSrElw5OC8O19aA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qK+DxFVKJjIlmNqZPF+yzhtN83Oj7S6fY1pvU1KzUKw=; b=bFrOTJDMBrakS2Bm4G0VUcjsGpdem0HBWdAnP3eAH9pwzdF4vZiGHTZeGY5wMu+Xdcvy6t +wT6pzOvfvVYJ1KPePwPF6Y1uJLOEfffBEn45mKLnlS+qFKHwzjH0MQpo/QCH/jmvyGgRa oumqEUtIeZfNb/EtwvZpf2swgKWni67AlXPUstBaWFknsOJ++dfgdPZD/BQU1ZkE1JQH/N urqQw9dQYvIONhi1AaHYqkIOo5AsTjOlp8pRFa4oZNk19GKhiIw2oXdpLoTD+ODIbLksaA qZXF4bK5r12hemsU7pCJBcO8DcrvF2TaEw5ald2iUkYRPYz8TD0kXU5KgKt7lw== 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 4ZW6yT1BJMz57B; Sun, 06 Apr 2025 22:51: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 536MpDUC077155; Sun, 6 Apr 2025 22:51:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpDJ4077151; Sun, 6 Apr 2025 22:51:13 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:13 GMT Message-Id: <202504062251.536MpDJ4077151@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 51489b9ced27 - stable/14 - ktrace: Use STAILQ_EMPTY_ATOMIC when checking for records in userret() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 51489b9ced27afdf9ea34edc65c8c31274ccc9c5 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=51489b9ced27afdf9ea34edc65c8c31274ccc9c5 commit 51489b9ced27afdf9ea34edc65c8c31274ccc9c5 Author: Mark Johnston AuthorDate: 2025-03-23 11:54:59 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:13 +0000 ktrace: Use STAILQ_EMPTY_ATOMIC when checking for records in userret() As in commit 36631977d8c9, this check is unlocked and may trigger spurious assertion failures. Use STAILQ_EMPTY_ATOMIC() here as well. Fix nearby whitespace. Reported by: syzkaller Reviewed by: olce Fixes: 34740937f7a4 ("queue: New debug macros for STAILQ") MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49441 (cherry picked from commit e9a846468acfbba35ca40b888670559aaff7228d) --- sys/sys/ktrace.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/sys/ktrace.h b/sys/sys/ktrace.h index 2618c7c719b3..b615d82d2198 100644 --- a/sys/sys/ktrace.h +++ b/sys/sys/ktrace.h @@ -89,10 +89,9 @@ struct ktr_header { * is the public interface. */ #define KTRCHECK(td, type) ((td)->td_proc->p_traceflag & (1 << type)) -#define KTRPOINT(td, type) (__predict_false(KTRCHECK((td), (type)))) -#define KTRCHECKDRAIN(td) (!(STAILQ_EMPTY(&(td)->td_proc->p_ktr))) +#define KTRPOINT(td, type) (__predict_false(KTRCHECK((td), (type)))) #define KTRUSERRET(td) do { \ - if (__predict_false(KTRCHECKDRAIN(td))) \ + if (__predict_false(!STAILQ_EMPTY_ATOMIC(&(td)->td_proc->p_ktr))) \ ktruserret(td); \ } while (0) From nobody Sun Apr 6 22:51:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZW6yW2vDKz5s8Wf; Sun, 06 Apr 2025 22:51: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 4ZW6yV2dh0z3KYK; Sun, 06 Apr 2025 22:51:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979874; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K93fPBxKmfwVro0pBs15X1wuYCZfPRjCA3IHJEPwSew=; b=ZUKxZsjpsk+IwUbNUHBUUErik/ErS8DJiJJDG7tL8Xyfa/vrgGDjg25vovjPSfMdIKNLqn oy18bwtoAW0u/NlyO24KTEmCnvmf9N8jxDFFOudpxUjzSEFe0VCgaDLh4nMCwePsCw9YDR fEFBZDypqmaxGYaeBMQzSae1SzH5lpjlHnb2UC5guOfk/UArJYAA2NvSUvmvZeJTrHHA1q U6QqmjSevg8lcTcBObt8t5HuVaLrOegIpkqgiG83N7DW6WMriZZRCnjNWt4Jk/KNy1XStS zAsO9IQJDEzMcIfYXmbS0p6B/PS9Rp0t5mB3V5JLPM4lBwpmZbkXJD0WOZxTmw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979874; a=rsa-sha256; cv=none; b=BwqNy07ecqPyxntHdM5y7xwmB0+M2mYJ6z4vqmvmFC0OtSJXICNeZLLDBtsuj/LUp+h8i2 n8pVkRqRqfktUg+jq0bkOy3aJprOWjfTXk/RNd828AbWJl5OsCVw9foNljHukpeWkXE4W5 UoWjjo3luQOS5feohBL+1PDgp9MR8dQq66a1gJXONEgnKL7BQJ4G98qgB1eNrEmoRLM7j8 tGKw79G3zKLPsWqSWU5+f1XXVbHn65KwBKmAv/DoRXH08e4DgvZtLnkRDPtrOeE4+1Mua+ CSmdo2hUYF6RCj9zAWoCVNW0T3Tb0AbLhgYbpcMIgqGx37xQHCOcWUkvNALstQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979874; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K93fPBxKmfwVro0pBs15X1wuYCZfPRjCA3IHJEPwSew=; b=Q1c8tJvTHcF/pMcPosBiSMuG86bMdIYhi1qsxGss5bKzZFuB24MKKiNPUVRtCLWqfAhnRD WBz4nBLQqr1oKgJtloO72OOlbVSBrBNKatGa3bVEvtF8APxZUWvwmGql3sWOyBmW4kHQSl 9/9A8/UAONJ9yM0d1urobA83jeA8TiSO8pDG2DcYCrUmtj34ucmzXlzFhgh5IibGoTCGDS UG7q+SxBmAY2/FC1IuPBi4PGWbOfU7ze5EZt44G/qhinQo+OseaOF3s375GENv7WE3srpl kOyvAe7f1jLbHBP+tl5100EBrrm52FDR573RyPXLGMeY42XQOMBCAMO/L0SW2w== 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 4ZW6yV1ys2z5kt; Sun, 06 Apr 2025 22:51: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 536MpEUa077192; Sun, 6 Apr 2025 22:51:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpE7B077189; Sun, 6 Apr 2025 22:51:14 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:14 GMT Message-Id: <202504062251.536MpE7B077189@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f2214e48d02c - stable/14 - socket: Fix a race in the SO_SPLICE state machine List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f2214e48d02c2a251f4aa9e95683d2f5e66337c7 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f2214e48d02c2a251f4aa9e95683d2f5e66337c7 commit f2214e48d02c2a251f4aa9e95683d2f5e66337c7 Author: Mark Johnston AuthorDate: 2025-03-23 11:55:56 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:20 +0000 socket: Fix a race in the SO_SPLICE state machine When so_splice() links two sockets together, it first attaches the splice control structure to the source socket; at that point, the splice is in the idle state. After that point, a socket wakeup will queue up work for a splice worker thread: in particular, so_splice_dispatch() only queues work if the splice is idle. Meanwhile, so_splice() continues initializing the splice, and finally calls so_splice_xfer() to transfer any already buffered data. This assumes that the splice is still idle, but that's not true if some async work was already dispatched. Solve the problem by introducing an initial "under construction" state for the splice control structure, such that wakeups won't queue any work until so_splice() has finished. While here, remove an outdated comment from the beginning of so_splice_xfer(). Reported by: syzkaller Reviewed by: gallatin Fixes: a1da7dc1cdad ("socket: Implement SO_SPLICE") MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D49437 (cherry picked from commit 574816356834cb99295b124be0ec34bd9e0b9c72) --- sys/kern/uipc_socket.c | 7 +------ sys/sys/socketvar.h | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 58e374d7aed2..7a4e3b1f2507 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -592,11 +592,6 @@ so_splice_xfer_data(struct socket *so_src, struct socket *so_dst, off_t max, /* * Transfer data from the source to the sink. - * - * If "direct" is true, the transfer is done in the context of whichever thread - * is operating on one of the socket buffers. We do not know which locks are - * held, so we can only trylock the socket buffers; if this fails, we fall back - * to the worker thread, which invokes this routine with "direct" set to false. */ static void so_splice_xfer(struct so_splice *sp) @@ -1617,7 +1612,7 @@ so_splice_alloc(off_t max) sp->wq_index = atomic_fetchadd_32(&splice_index, 1) % (mp_maxid + 1); } while (CPU_ABSENT(sp->wq_index)); - sp->state = SPLICE_IDLE; + sp->state = SPLICE_INIT; TIMEOUT_TASK_INIT(taskqueue_thread, &sp->timeout, 0, so_splice_timeout, sp); return (sp); diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index f7b23d239157..40fdd142525f 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -82,6 +82,7 @@ struct so_splice { struct mtx mtx; unsigned int wq_index; enum so_splice_state { + SPLICE_INIT, /* embryonic state, don't queue work yet */ SPLICE_IDLE, /* waiting for work to arrive */ SPLICE_QUEUED, /* a wakeup has queued some work */ SPLICE_RUNNING, /* currently transferring data */