From nobody Fri Aug 7 01:48:07 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hGRqr2B0fz6ndlC for ; Fri, 07 Aug 2026 01:48: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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hGRqq62MSz3p5s for ; Fri, 07 Aug 2026 01:48:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786067287; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jGvkgzknwBGFmSRNxEBhX6p8aVhhzKxYglpF5Zz8tWQ=; b=u7UCnacHbQV//+x40RFQBsTPLUjM3mhm0cldM38HZeXmK6yXZP+rgu5TNLnmWJOaTSljhm QZ+WylMX8XGsubgHUQ8UBNsFsuxip6x30hnSQHpaQkRVFW65KLkCcLh1pH7re0VEUnF71V hg5VK57fk+nZY9SU80gZaC7rs/S8nVTypgep6GynfFkSwk422/TqmsCBiIefZh2F1RnCSQ G+zOGroN7jOmiHeOpOf8NKY8Bkq1N7wvsR+EdYKalveMHHxy9b/McZ56ghk4qJIJu1OX/F VxizaVCY644sgMVMRVtojdkONXNAlLHVbh+ZD29u1anBQdaips1+BKaTeTyhSQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786067287; a=rsa-sha256; cv=none; b=UerYQm1Nbp8mt13uQ5fW6aX3zgssSLXdGsf2vmtnqh53ECi3XEOO9l4gMry7jqo1RKN5G7 5hJs96PzUqJR7MhIimWpewNYAcZxlCOqAcHNZmRTHTmFkOB7PqS1D1ELS4G81VCZrThp1P pXpYw1YgyO7jk4Yxkhv2x9zX6MMJDiyrRRpziIMyAurj2Il+21evS29UiKnoARmgrztUCR naaGVZTnlpEp2fx6gRPn3cs/84qEEpC+PDm1Uq5G5Mm9FM9Gxkj7WGG+cZKJOXJQ1Jexv7 CJkotnOYGdGVhDRdM6BWopxO3C7KN8Lpe9IQACfXgn3l63CLSZXv6wfPlnZSZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786067287; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jGvkgzknwBGFmSRNxEBhX6p8aVhhzKxYglpF5Zz8tWQ=; b=jh6RLi+bs/79U1bCrikFgr5scAyeJ3GH2g1nOjQE9T5I31WTTsX8qTPq9FZKpHe6pG4EOi HIgWYzMhjVNKKw1lTTKd2YPxD+57YZsod81iFGfnnRpBRJ/Z0q8v9dhPgArPae0p0pT5Rt uUiM/56G0b4+ZcSNRp+W3MzBq/ikxbPw9wKUzegZaMUEd1R6wymvs/aHNQw0f6E3RD1UXs 0sk9sjuNIoeBUWLe2ZlsZxn2euUcKP/C8tONiZ13+bXklkMq9jVO7Yhw8Zh11El82fooCx Tfg5mD1/5izqRA2tsBbRrdosk0rLy5Z+xDAyOGeXvAEstFNZpefe6ui+OYAJ0w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hGRqq4gzjzmt2 for ; Fri, 07 Aug 2026 01:48:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3af3f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 07 Aug 2026 01:48:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 70c07351df58 - stable/15 - rights(4): fix our representation of the unused bits List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 70c07351df58980e768abffd78dea01159391e26 Auto-Submitted: auto-generated Date: Fri, 07 Aug 2026 01:48:07 +0000 Message-Id: <6a753957.3af3f.66e4b643@gitrepo.freebsd.org> The branch stable/15 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=70c07351df58980e768abffd78dea01159391e26 commit 70c07351df58980e768abffd78dea01159391e26 Author: Kyle Evans AuthorDate: 2026-06-20 13:55:26 +0000 Commit: Kyle Evans CommitDate: 2026-08-06 23:34:51 +0000 rights(4): fix our representation of the unused bits The current format seems to be a little confusing, and the version of it for index 0 was broken by the below-referenced commit. Break our UNUSED macros out into one per unused bit to enumerate the entirety of the space and make it easier to claim an unused one. Fixes: b165e9e3ea4e327fc ("Add fchroot(2)") Reviewed by: oshogbo (previous version), kib, markj (cherry picked from commit 57fefbee1f959d0c65376dbdad309d01c182d710) --- sys/sys/capsicum.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/sys/sys/capsicum.h b/sys/sys/capsicum.h index 3847c4c73e75..9ef2f0d48d38 100644 --- a/sys/sys/capsicum.h +++ b/sys/sys/capsicum.h @@ -51,6 +51,13 @@ #define CAPRIGHT(idx, bit) ((1ULL << (57 + (idx))) | (bit)) +/* + * The top 7 bits are reserved in all indices. + * Index 0 - 2 bit array size + 5 bit array element + * Index N - 2 bits of 0 + 5 bit array element + */ +#define CAP_RESERVED 0xFE00000000000000ULL + /* * Possible rights on capabilities. * @@ -212,12 +219,23 @@ CAP_GETSOCKOPT | CAP_LISTEN | CAP_PEELOFF | CAP_RECV | CAP_SEND | \ CAP_SETSOCKOPT | CAP_SHUTDOWN) +#define CAP_UNUSED0_45 CAPRIGHT(0, 0x0000100000000000ULL) +#define CAP_UNUSED0_46 CAPRIGHT(0, 0x0000200000000000ULL) +#define CAP_UNUSED0_47 CAPRIGHT(0, 0x0000400000000000ULL) +#define CAP_UNUSED0_48 CAPRIGHT(0, 0x0000800000000000ULL) +#define CAP_UNUSED0_49 CAPRIGHT(0, 0x0001000000000000ULL) +#define CAP_UNUSED0_50 CAPRIGHT(0, 0x0002000000000000ULL) +#define CAP_UNUSED0_51 CAPRIGHT(0, 0x0004000000000000ULL) +#define CAP_UNUSED0_52 CAPRIGHT(0, 0x0008000000000000ULL) +#define CAP_UNUSED0_53 CAPRIGHT(0, 0x0010000000000000ULL) +#define CAP_UNUSED0_54 CAPRIGHT(0, 0x0020000000000000ULL) +#define CAP_UNUSED0_55 CAPRIGHT(0, 0x0040000000000000ULL) +#define CAP_UNUSED0_56 CAPRIGHT(0, 0x0080000000000000ULL) +#define CAP_UNUSED0_57 CAPRIGHT(0, 0x0100000000000000ULL) + /* All used bits for index 0. */ #define CAP_ALL0 CAPRIGHT(0, 0x00000FFFFFFFFFFFULL) -/* Available bits for index 0. */ -#define CAP_UNUSED0_57 CAPRIGHT(0, 0x0100000000000000ULL) - /* INDEX 1 */ /* Mandatory Access Control. */ @@ -283,14 +301,44 @@ #define CAP_INOTIFY_ADD CAPRIGHT(1, 0x0000000000200000ULL) #define CAP_INOTIFY_RM CAPRIGHT(1, 0x0000000000400000ULL) +#define CAP_UNUSED1_24 CAPRIGHT(1, 0x0000000000800000ULL) +#define CAP_UNUSED1_25 CAPRIGHT(1, 0x0000000001000000ULL) +#define CAP_UNUSED1_26 CAPRIGHT(1, 0x0000000002000000ULL) +#define CAP_UNUSED1_27 CAPRIGHT(1, 0x0000000004000000ULL) +#define CAP_UNUSED1_28 CAPRIGHT(1, 0x0000000008000000ULL) +#define CAP_UNUSED1_29 CAPRIGHT(1, 0x0000000010000000ULL) +#define CAP_UNUSED1_30 CAPRIGHT(1, 0x0000000020000000ULL) +#define CAP_UNUSED1_31 CAPRIGHT(1, 0x0000000040000000ULL) +#define CAP_UNUSED1_32 CAPRIGHT(1, 0x0000000080000000ULL) +#define CAP_UNUSED1_33 CAPRIGHT(1, 0x0000000100000000ULL) +#define CAP_UNUSED1_34 CAPRIGHT(1, 0x0000000200000000ULL) +#define CAP_UNUSED1_35 CAPRIGHT(1, 0x0000000400000000ULL) +#define CAP_UNUSED1_36 CAPRIGHT(1, 0x0000000800000000ULL) +#define CAP_UNUSED1_37 CAPRIGHT(1, 0x0000001000000000ULL) +#define CAP_UNUSED1_38 CAPRIGHT(1, 0x0000002000000000ULL) +#define CAP_UNUSED1_39 CAPRIGHT(1, 0x0000004000000000ULL) +#define CAP_UNUSED1_40 CAPRIGHT(1, 0x0000008000000000ULL) +#define CAP_UNUSED1_41 CAPRIGHT(1, 0x0000010000000000ULL) +#define CAP_UNUSED1_42 CAPRIGHT(1, 0x0000020000000000ULL) +#define CAP_UNUSED1_43 CAPRIGHT(1, 0x0000040000000000ULL) +#define CAP_UNUSED1_44 CAPRIGHT(1, 0x0000080000000000ULL) +#define CAP_UNUSED1_45 CAPRIGHT(1, 0x0000100000000000ULL) +#define CAP_UNUSED1_46 CAPRIGHT(1, 0x0000200000000000ULL) +#define CAP_UNUSED1_47 CAPRIGHT(1, 0x0000400000000000ULL) +#define CAP_UNUSED1_48 CAPRIGHT(1, 0x0000800000000000ULL) +#define CAP_UNUSED1_49 CAPRIGHT(1, 0x0001000000000000ULL) +#define CAP_UNUSED1_50 CAPRIGHT(1, 0x0002000000000000ULL) +#define CAP_UNUSED1_51 CAPRIGHT(1, 0x0004000000000000ULL) +#define CAP_UNUSED1_52 CAPRIGHT(1, 0x0008000000000000ULL) +#define CAP_UNUSED1_53 CAPRIGHT(1, 0x0010000000000000ULL) +#define CAP_UNUSED1_54 CAPRIGHT(1, 0x0020000000000000ULL) +#define CAP_UNUSED1_55 CAPRIGHT(1, 0x0040000000000000ULL) +#define CAP_UNUSED1_56 CAPRIGHT(1, 0x0080000000000000ULL) +#define CAP_UNUSED1_57 CAPRIGHT(1, 0x0100000000000000ULL) + /* All used bits for index 1. */ #define CAP_ALL1 CAPRIGHT(1, 0x00000000007FFFFFULL) -/* Available bits for index 1. */ -#define CAP_UNUSED1_22 CAPRIGHT(1, 0x0000000000800000ULL) -/* ... */ -#define CAP_UNUSED1_57 CAPRIGHT(1, 0x0100000000000000ULL) - /* Backward compatibility. */ #define CAP_POLL_EVENT CAP_EVENT