Skip to contentSkip to conversation

x86/uapi: fix SHADOW_STACK_SET_TOKEN type

PATCH In review Dmitry V. Levin 2 participants 3 messages Oct 22, 2023 – Oct 23, 2023

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 x86/uapi: fix SHADOW_STACK_SET_TOKEN type

Fix the type of SHADOW_STACK_SET_TOKEN to match the type of the corresponding "flags" argument of map_shadow_stack syscall which is of type "unsigned int".

Fixes c35559f94ebc3 ("x86/shstk: Introduce map_shadow_stack syscall")
---
 arch/x86/include/uapi/asm/mman.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/include/uapi/asm/mman.h +1 -1
index 46cdc941f958..8419e25bb617 100644
@@ -6,7 +6,7 @@
 #define MAP_ABOVE4G	0x80		/* only map above 4GB */
 
 /* Flags for map_shadow_stack(2) */
-#define SHADOW_STACK_SET_TOKEN	(1ULL << 0)	/* Set up a restore token in the shadow stack */
+#define SHADOW_STACK_SET_TOKEN	(1U << 0)	/* Set up a restore token in the shadow stack */
 
 #include <asm-generic/mman.h>
 
Signature · 1 line
ldv
#1 lore raw
Quoted 18 lines · Dmitry V. Levin

Fix the type of SHADOW_STACK_SET_TOKEN to match the type of the corresponding "flags" argument of map_shadow_stack syscall which is of type "unsigned int".

Fixes c35559f94ebc3 ("x86/shstk: Introduce map_shadow_stack

syscall")

---
 arch/x86/include/uapi/asm/mman.h | 2 +-

 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/include/uapi/asm/mman.h +0 -0
index 46cdc941f958..8419e25bb617 100644
@@ -6,7 +6,7 @@
  #define MAP_ABOVE4G    0x80            /* only map above 4GB */
Quoted 8 lines


 /* Flags for map_shadow_stack(2) */
-#define SHADOW_STACK_SET_TOKEN (1ULL << 0)     /* Set up a restore token in the shadow stack */
+#define SHADOW_STACK_SET_TOKEN (1U << 0)       /* Set up a restore token in the shadow stack */

 #include <asm-generic/mman.h>

Good point that they are mismatched. I don't remember why flags is not an unsigned long though. I wonder if we should quick change it to an unsigned long, if it's not too late. We probably won't run out of flags, but maybe some value could get stuffed in the upper bits or something someday.

#2 lore raw
Quoted 25 lines · Rick P
Quoted 24 lines · Dmitry V. Levin

Fix the type of SHADOW_STACK_SET_TOKEN to match the type of the corresponding "flags" argument of map_shadow_stack syscall which is of type "unsigned int".

Fixes c35559f94ebc3 ("x86/shstk: Introduce map_shadow_stack

syscall")

---
 arch/x86/include/uapi/asm/mman.h | 2 +-

 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/include/uapi/asm/mman.h +0 -0
index 46cdc941f958..8419e25bb617 100644
@@ -6,7 +6,7 @@
  #define MAP_ABOVE4G    0x80            /* only map above 4GB */


 /* Flags for map_shadow_stack(2) */
-#define SHADOW_STACK_SET_TOKEN (1ULL << 0)     /* Set up a restore token in the shadow stack */
+#define SHADOW_STACK_SET_TOKEN (1U << 0)       /* Set up a restore token in the shadow stack */

Quoted 8 lines
Quoted 2 lines


 #include <asm-generic/mman.h>

Good point that they are mismatched. I don't remember why flags is not an unsigned long though. I wonder if we should quick change it to an unsigned long, if it's not too late. We probably won't run out of flags, but maybe some value could get stuffed in the upper bits or something someday.

We usually don't use unsigned long for flags because we support 32-bit architectures.

Signature · 1 line
ldv