| From 6b8059e46fa93131757315f3388792408c7de8e1 Mon Sep 17 00:00:00 2001 |
| From: Andy Lutomirski <luto@kernel.org> |
| Date: Wed, 3 Jul 2019 13:34:05 -0700 |
| Subject: [PATCH] x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long |
| |
| commit 45e29d119e9923ff14dfb840e3482bef1667bbfb upstream. |
| |
| Currently, it's an int. This is bizarre. Fortunately, the code using it |
| still works: ~__X32_SYSCALL_BIT is also int, so, if nr is unsigned long, |
| then C kindly sign-extends the ~__X32_SYSCALL_BIT part, and it actually |
| results in the desired value. |
| |
| This is far more subtle than it deserves to be. Syscall numbers are, for |
| all practical purposes, unsigned long, so make __X32_SYSCALL_BIT be |
| unsigned long. |
| |
| Signed-off-by: Andy Lutomirski <luto@kernel.org> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Link: https://lkml.kernel.org/r/99b0d83ad891c67105470a1a6b63243fd63a5061.1562185330.git.luto@kernel.org |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/include/uapi/asm/unistd.h b/arch/x86/include/uapi/asm/unistd.h |
| index 30d7d04d72d6..196fdd02b8b1 100644 |
| --- a/arch/x86/include/uapi/asm/unistd.h |
| +++ b/arch/x86/include/uapi/asm/unistd.h |
| @@ -3,7 +3,7 @@ |
| #define _UAPI_ASM_X86_UNISTD_H |
| |
| /* x32 syscall flag bit */ |
| -#define __X32_SYSCALL_BIT 0x40000000 |
| +#define __X32_SYSCALL_BIT 0x40000000UL |
| |
| #ifndef __KERNEL__ |
| # ifdef __i386__ |
| -- |
| 2.7.4 |
| |