mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
get rid of INT_LIMIT, use type_max() instead
INT_LIMIT() tries to do what type_max() does, except that type_max() doesn't rely upon undefined behaviour[*], might as well use type_max() instead. [*] if T is an N-bit signed integer type, the maximal value in T is pow(2, N - 1) - 1, all right, but naive expression for that value ends up with a couple of wraparounds and as usual for wraparounds in signed types, that's an undefined behaviour. type_max() takes care to avoid those... Caught-by: UBSAN Suggested-by: Eric Biggers <ebiggers@kernel.org> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> Reviewed-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -1131,9 +1131,8 @@ struct file_lock_context {
|
|||||||
|
|
||||||
/* The following constant reflects the upper bound of the file/locking space */
|
/* The following constant reflects the upper bound of the file/locking space */
|
||||||
#ifndef OFFSET_MAX
|
#ifndef OFFSET_MAX
|
||||||
#define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
|
#define OFFSET_MAX type_max(loff_t)
|
||||||
#define OFFSET_MAX INT_LIMIT(loff_t)
|
#define OFFT_OFFSET_MAX type_max(off_t)
|
||||||
#define OFFT_OFFSET_MAX INT_LIMIT(off_t)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void send_sigio(struct fown_struct *fown, int fd, int band);
|
extern void send_sigio(struct fown_struct *fown, int fd, int band);
|
||||||
|
|||||||
Reference in New Issue
Block a user