All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx@kernel.org>
To: linux-api@vger.kernel.org
Cc: linux-man@vger.kernel.org, libc-alpha@sourceware.org,
	 Alejandro Colomar <alx@kernel.org>
Subject: [PATCH v1 2/2] uapi/linux/prctl: Use the UL integer suffix for bit fields of width long
Date: Tue, 28 May 2024 13:48:10 +0200	[thread overview]
Message-ID: <20240528114750.106187-3-alx@kernel.org> (raw)
In-Reply-To: <20240528114750.106187-1-alx@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 7043 bytes --]

The prctl(2) wrapper provided by glibc uses a variadic argument list.
This means that the arguments *must* have the right type (and more
importantly, the right width).  To avoid the user having to cast these
constants, provide them with the appropriate width, that of a long.

These are bit fields, and bitwise operations are dangerous on signed
integers, so let's make sure they are unsigned.

Link: <https://inbox.sourceware.org/libc-alpha/x6r3yc6l34g4k5g3tm6ywecdqux54xlpid7bp2fa7hvm43luc7@6fjgaxgm5uyj/T/>
Cc: <linux-api@vger.kernel.org>
Cc: <linux-man@vger.kernel.org>
Cc: <libc-alpha@sourceware.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
 include/uapi/linux/prctl.h | 60 +++++++++++++++++++-------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h
index 60e14adb8d20..c016c316f3c5 100644
--- a/include/uapi/linux/prctl.h
+++ b/include/uapi/linux/prctl.h
@@ -33,12 +33,12 @@
 /* Get/set floating-point exception mode (if meaningful) */
 #define PR_GET_FPEXC	11
 #define PR_SET_FPEXC	12
-# define PR_FP_EXC_SW_ENABLE	0x80	/* Use FPEXC for FP exception enables */
-# define PR_FP_EXC_DIV		0x010000	/* floating point divide by zero */
-# define PR_FP_EXC_OVF		0x020000	/* floating point overflow */
-# define PR_FP_EXC_UND		0x040000	/* floating point underflow */
-# define PR_FP_EXC_RES		0x080000	/* floating point inexact result */
-# define PR_FP_EXC_INV		0x100000	/* floating point invalid operation */
+# define PR_FP_EXC_SW_ENABLE	0x80UL	/* Use FPEXC for FP exception enables */
+# define PR_FP_EXC_DIV		0x010000UL	/* floating point divide by zero */
+# define PR_FP_EXC_OVF		0x020000UL	/* floating point overflow */
+# define PR_FP_EXC_UND		0x040000UL	/* floating point underflow */
+# define PR_FP_EXC_RES		0x080000UL	/* floating point inexact result */
+# define PR_FP_EXC_INV		0x100000UL	/* floating point invalid operation */
 # define PR_FP_EXC_DISABLED	0L	/* FP exceptions disabled */
 # define PR_FP_EXC_NONRECOV	1L	/* async non-recoverable exc. mode */
 # define PR_FP_EXC_ASYNC	2L	/* async recoverable exception mode */
@@ -188,8 +188,8 @@ struct prctl_mm_map {
 
 #define PR_SET_FP_MODE		45
 #define PR_GET_FP_MODE		46
-# define PR_FP_MODE_FR		(1 << 0)	/* 64b FP registers */
-# define PR_FP_MODE_FRE		(1 << 1)	/* 32b compatibility */
+# define PR_FP_MODE_FR		(1UL << 0)	/* 64b FP registers */
+# define PR_FP_MODE_FRE		(1UL << 1)	/* 32b compatibility */
 
 /* Control the ambient capability set */
 #define PR_CAP_AMBIENT			47
@@ -201,11 +201,11 @@ struct prctl_mm_map {
 /* arm64 Scalable Vector Extension controls */
 /* Flag values must be kept in sync with ptrace NT_ARM_SVE interface */
 #define PR_SVE_SET_VL			50	/* set task vector length */
-# define PR_SVE_SET_VL_ONEXEC		(1 << 18) /* defer effect until exec */
+# define PR_SVE_SET_VL_ONEXEC		(1UL << 18) /* defer effect until exec */
 #define PR_SVE_GET_VL			51	/* get task vector length */
 /* Bits common to PR_SVE_SET_VL and PR_SVE_GET_VL */
-# define PR_SVE_VL_LEN_MASK		0xffff
-# define PR_SVE_VL_INHERIT		(1 << 17) /* inherit across exec */
+# define PR_SVE_VL_LEN_MASK		0xffffUL
+# define PR_SVE_VL_INHERIT		(1UL << 17) /* inherit across exec */
 
 /* Per task speculation control */
 #define PR_GET_SPECULATION_CTRL		52
@@ -215,7 +215,7 @@ struct prctl_mm_map {
 # define PR_SPEC_INDIRECT_BRANCH	1L
 # define PR_SPEC_L1D_FLUSH		2L
 /* Return and control values for PR_SET/GET_SPECULATION_CTRL */
-# define PR_SPEC_NOT_AFFECTED		0
+# define PR_SPEC_NOT_AFFECTED		0UL
 # define PR_SPEC_PRCTL			(1UL << 0)
 # define PR_SPEC_ENABLE			(1UL << 1)
 # define PR_SPEC_DISABLE		(1UL << 2)
@@ -240,10 +240,10 @@ struct prctl_mm_map {
 # define PR_MTE_TCF_ASYNC		(1UL << 2)
 # define PR_MTE_TCF_MASK		(PR_MTE_TCF_SYNC | PR_MTE_TCF_ASYNC)
 /* MTE tag inclusion mask */
-# define PR_MTE_TAG_SHIFT		3
+# define PR_MTE_TAG_SHIFT		3UL
 # define PR_MTE_TAG_MASK		(0xffffUL << PR_MTE_TAG_SHIFT)
 /* Unused; kept only for source compatibility */
-# define PR_MTE_TCF_SHIFT		1
+# define PR_MTE_TCF_SHIFT		1UL
 
 /* Control reclaim behavior when allocating memory */
 #define PR_SET_IO_FLUSHER		57
@@ -275,11 +275,11 @@ struct prctl_mm_map {
 /* arm64 Scalable Matrix Extension controls */
 /* Flag values must be in sync with SVE versions */
 #define PR_SME_SET_VL			63	/* set task vector length */
-# define PR_SME_SET_VL_ONEXEC		(1 << 18) /* defer effect until exec */
+# define PR_SME_SET_VL_ONEXEC		(1UL << 18) /* defer effect until exec */
 #define PR_SME_GET_VL			64	/* get task vector length */
 /* Bits common to PR_SME_SET_VL and PR_SME_GET_VL */
-# define PR_SME_VL_LEN_MASK		0xffff
-# define PR_SME_VL_INHERIT		(1 << 17) /* inherit across exec */
+# define PR_SME_VL_LEN_MASK		0xffffUL
+# define PR_SME_VL_INHERIT		(1UL << 17) /* inherit across exec */
 
 /* Memory deny write / execute */
 #define PR_SET_MDWE			65
@@ -298,13 +298,13 @@ struct prctl_mm_map {
 
 #define PR_RISCV_V_SET_CONTROL		69
 #define PR_RISCV_V_GET_CONTROL		70
-# define PR_RISCV_V_VSTATE_CTRL_DEFAULT		0
-# define PR_RISCV_V_VSTATE_CTRL_OFF		1
-# define PR_RISCV_V_VSTATE_CTRL_ON		2
-# define PR_RISCV_V_VSTATE_CTRL_INHERIT		(1 << 4)
-# define PR_RISCV_V_VSTATE_CTRL_CUR_MASK	0x3
-# define PR_RISCV_V_VSTATE_CTRL_NEXT_MASK	0xc
-# define PR_RISCV_V_VSTATE_CTRL_MASK		0x1f
+# define PR_RISCV_V_VSTATE_CTRL_DEFAULT		0UL
+# define PR_RISCV_V_VSTATE_CTRL_OFF		1UL
+# define PR_RISCV_V_VSTATE_CTRL_ON		2UL
+# define PR_RISCV_V_VSTATE_CTRL_INHERIT		(1UL << 4)
+# define PR_RISCV_V_VSTATE_CTRL_CUR_MASK	0x3UL
+# define PR_RISCV_V_VSTATE_CTRL_NEXT_MASK	0xcUL
+# define PR_RISCV_V_VSTATE_CTRL_MASK		0x1fUL
 
 #define PR_RISCV_SET_ICACHE_FLUSH_CTX	71
 # define PR_RISCV_CTX_SW_FENCEI_ON	0L
@@ -321,11 +321,11 @@ struct prctl_mm_map {
 # define PR_PPC_DEXCR_SRAPD		2L /* Subroutine return address prediction disable */
 # define PR_PPC_DEXCR_NPHIE		3L /* Non-privileged hash instruction enable */
 /* Action to apply / return */
-# define PR_PPC_DEXCR_CTRL_EDITABLE	 0x1 /* Aspect can be modified with PR_PPC_SET_DEXCR */
-# define PR_PPC_DEXCR_CTRL_SET		 0x2 /* Set the aspect for this process */
-# define PR_PPC_DEXCR_CTRL_CLEAR	 0x4 /* Clear the aspect for this process */
-# define PR_PPC_DEXCR_CTRL_SET_ONEXEC	 0x8 /* Set the aspect on exec */
-# define PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC	0x10 /* Clear the aspect on exec */
-# define PR_PPC_DEXCR_CTRL_MASK		0x1f
+# define PR_PPC_DEXCR_CTRL_EDITABLE	 0x1UL /* Aspect can be modified with PR_PPC_SET_DEXCR */
+# define PR_PPC_DEXCR_CTRL_SET		 0x2UL /* Set the aspect for this process */
+# define PR_PPC_DEXCR_CTRL_CLEAR	 0x4UL /* Clear the aspect for this process */
+# define PR_PPC_DEXCR_CTRL_SET_ONEXEC	 0x8UL /* Set the aspect on exec */
+# define PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC	0x10UL /* Clear the aspect on exec */
+# define PR_PPC_DEXCR_CTRL_MASK		0x1fUL
 
 #endif /* _LINUX_PRCTL_H */
-- 
2.45.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2024-05-28 11:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-26 11:07 Sashimi of prctl(2) Alejandro Colomar
2024-05-26 11:27 ` Alejandro Colomar
2024-05-28  9:24   ` Correct way of calling prctl(2) (was: Sashimi of prctl(2)) Alejandro Colomar
2024-05-28  9:42     ` Alejandro Colomar
2024-05-28 11:48       ` [PATCH v1 0/2] uapi/linux/prctl: Use the L and UL integer suffixes for certain constants Alejandro Colomar
2024-05-28 11:48         ` [PATCH v1 1/2] uapi/linux/prctl: Use the L integer suffix for enumerations of width long Alejandro Colomar
2024-05-28 11:48         ` Alejandro Colomar [this message]
2024-06-12 12:02         ` [PATCH v1 0/2] uapi/linux/prctl: Use the L and UL integer suffixes for certain constants Alejandro Colomar
2024-05-28 15:20     ` Correct way of calling prctl(2) (was: Sashimi of prctl(2)) Xi Ruoyao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240528114750.106187-3-alx@kernel.org \
    --to=alx@kernel.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-man@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.