diff options
Diffstat (limited to 'include/linux/kernel.h')
| -rw-r--r-- | include/linux/kernel.h | 39 | 
1 files changed, 39 insertions, 0 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index f37ba716ef8b..fb0e7329fee1 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -248,6 +248,37 @@ int __must_check kstrtos16(const char *s, unsigned int base, s16 *res);  int __must_check kstrtou8(const char *s, unsigned int base, u8 *res);  int __must_check kstrtos8(const char *s, unsigned int base, s8 *res); +int __must_check kstrtoull_from_user(const char __user *s, size_t count, unsigned int base, unsigned long long *res); +int __must_check kstrtoll_from_user(const char __user *s, size_t count, unsigned int base, long long *res); +int __must_check kstrtoul_from_user(const char __user *s, size_t count, unsigned int base, unsigned long *res); +int __must_check kstrtol_from_user(const char __user *s, size_t count, unsigned int base, long *res); +int __must_check kstrtouint_from_user(const char __user *s, size_t count, unsigned int base, unsigned int *res); +int __must_check kstrtoint_from_user(const char __user *s, size_t count, unsigned int base, int *res); +int __must_check kstrtou16_from_user(const char __user *s, size_t count, unsigned int base, u16 *res); +int __must_check kstrtos16_from_user(const char __user *s, size_t count, unsigned int base, s16 *res); +int __must_check kstrtou8_from_user(const char __user *s, size_t count, unsigned int base, u8 *res); +int __must_check kstrtos8_from_user(const char __user *s, size_t count, unsigned int base, s8 *res); + +static inline int __must_check kstrtou64_from_user(const char __user *s, size_t count, unsigned int base, u64 *res) +{ +	return kstrtoull_from_user(s, count, base, res); +} + +static inline int __must_check kstrtos64_from_user(const char __user *s, size_t count, unsigned int base, s64 *res) +{ +	return kstrtoll_from_user(s, count, base, res); +} + +static inline int __must_check kstrtou32_from_user(const char __user *s, size_t count, unsigned int base, u32 *res) +{ +	return kstrtouint_from_user(s, count, base, res); +} + +static inline int __must_check kstrtos32_from_user(const char __user *s, size_t count, unsigned int base, s32 *res) +{ +	return kstrtoint_from_user(s, count, base, res); +} +  extern unsigned long simple_strtoul(const char *,char **,unsigned int);  extern long simple_strtol(const char *,char **,unsigned int);  extern unsigned long long simple_strtoull(const char *,char **,unsigned int); @@ -638,6 +669,13 @@ struct sysinfo {  	char _f[20-2*sizeof(long)-sizeof(int)];	/* Padding: libc5 uses this.. */  }; +#ifdef __CHECKER__ +#define BUILD_BUG_ON_NOT_POWER_OF_2(n) +#define BUILD_BUG_ON_ZERO(e) +#define BUILD_BUG_ON_NULL(e) +#define BUILD_BUG_ON(condition) +#else /* __CHECKER__ */ +  /* Force a compilation error if a constant expression is not a power of 2 */  #define BUILD_BUG_ON_NOT_POWER_OF_2(n)			\  	BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) @@ -674,6 +712,7 @@ extern int __build_bug_on_failed;  		if (condition) __build_bug_on_failed = 1;	\  	} while(0)  #endif +#endif	/* __CHECKER__ */  /* Trap pasters of __FUNCTION__ at compile-time */  #define __FUNCTION__ (__func__)  | 
