diff options
author | Alejandro Colomar <alx.manpages@gmail.com> | 2020-11-28 13:39:46 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2021-01-28 13:20:18 +0100 |
commit | 1ce53e2c2ac069e7b3c400a427002a70deb4a916 (patch) | |
tree | f980a8c689030b609996f9362a3f93ea54ccebe4 /include/linux/syscalls.h | |
parent | 997acaf6b4b59c6a9c259740312a69ea549cc684 (diff) | |
download | lwn-1ce53e2c2ac069e7b3c400a427002a70deb4a916.tar.gz lwn-1ce53e2c2ac069e7b3c400a427002a70deb4a916.zip |
futex: Change utime parameter to be 'const ... *'
futex(2) says that 'utime' is a pointer to 'const'. The implementation
doesn't use 'const'; however, it _never_ modifies the contents of utime.
- futex() either uses 'utime' as a pointer to struct or as a 'u32'.
- In case it's used as a 'u32', it makes a copy of it, and of course it is
not dereferenced.
- In case it's used as a 'struct __kernel_timespec __user *', the pointer
is not dereferenced inside the futex() definition, and it is only passed
to a function: get_timespec64(), which accepts a 'const struct
__kernel_timespec __user *'.
[ tglx: Make the same change to the compat syscall and fixup the prototypes. ]
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20201128123945.4592-1-alx.manpages@gmail.com
Diffstat (limited to 'include/linux/syscalls.h')
-rw-r--r-- | include/linux/syscalls.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index f3929aff39cf..5cb74edd9a4f 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -583,11 +583,11 @@ asmlinkage long sys_unshare(unsigned long unshare_flags); /* kernel/futex.c */ asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val, - struct __kernel_timespec __user *utime, u32 __user *uaddr2, - u32 val3); + const struct __kernel_timespec __user *utime, + u32 __user *uaddr2, u32 val3); asmlinkage long sys_futex_time32(u32 __user *uaddr, int op, u32 val, - struct old_timespec32 __user *utime, u32 __user *uaddr2, - u32 val3); + const struct old_timespec32 __user *utime, + u32 __user *uaddr2, u32 val3); asmlinkage long sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr, size_t __user *len_ptr); |