Convert "__auto_type" to "auto", defining a macro for "auto"
unless C23+ is in use. --- arch/nios2/include/asm/uaccess.h | 8 ++++---- arch/x86/include/asm/bug.h | 2 +- arch/x86/include/asm/string_64.h | 6 +++--- arch/x86/include/asm/uaccess_64.h | 2 +- fs/proc/inode.c | 19 +++++++++---------- include/linux/cleanup.h | 6 +++--- include/linux/compiler.h | 2 +- include/linux/compiler_types.h | 13 +++++++++++++ include/linux/minmax.h | 6 +++--- .../testing/selftests/bpf/prog_tests/socket_helpers.h | 9 +++++++-- tools/virtio/linux/compiler.h | 2 +- 11 files changed, 46 insertions(+), 29 deletions(-) -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEbQEHvGnuWidP2bYMLbPDMhtt34YFAmk4grQACgkQLbPDMhtt 34Z9zQ//VKM0xKkCGVPfRBbL33O+DIcDfZjk6jokAl47aKAwJxrSTfT+Hdnmwsnv i7gKwaioYxDjnZlsfCzDbwbHexPTMGjsjgRNmFK3uS1mv1AhTspV2Jjn9qiYzd5o N+Cvzv7eIr88ti1dKe+7MZBa9j37nsGKZDzT0M/GubBlzIgMzeCZ6xAxOOV/TmD9 sP17oU65MhczegpXH/fcxyK7atkvlWskPfc+50YB5T3C96hqzT0LDiU/vBSHIJ8z EyqSRYlt2To17BdcKQEKYcklduFZwJ/02UWDT4RYJRGBSkn6ohPJJwYsjI5Cvl5m 9yPRLLqW/LsA5O5CZ/mq/tM0xiDdm5dCTEEbiwk90Lg1XTVxmpbTbMjjN1MCAy+a HYjsq9nWkYl9xXVBHk7CqgAjITAV7Z4ZZN//JLrJleQsD794EP3vYBzEaa370deP L22lONVSjpPm6m+Rr1fjObRDFQxs4piobUavxIj2JKaF48G8mSA0uAOG0nBRQkR1 jOTsMhqH33z9XNxb52BlFdaVkQGkHNlLeONc/ivGiDMKox5oCb/gveKOQ+PXYnLN IRTllLqke0fuOQrgLa5lu135J6ZbPHDOgH+P19OwNrBQnOMQqzTr7DnENVoanIy7 ocVc6vS3OX4qhZ+7uVpHugbnSCWOoCzBgV4xcZrIdh4qpTKzM+g= =Cu2O -----END PGP SIGNATURE----- Merge tag 'auto-type-conversion-for-v6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-auto Pull __auto_type to auto conversion from Peter Anvin: "Convert '__auto_type' to 'auto', defining a macro for 'auto' unless C23+ is in use" * tag 'auto-type-conversion-for-v6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-auto: tools/virtio: replace "__auto_type" with "auto" selftests/bpf: replace "__auto_type" with "auto" arch/x86: replace "__auto_type" with "auto" arch/nios2: replace "__auto_type" and adjacent equivalent with "auto" fs/proc: replace "__auto_type" with "const auto" include/linux: change "__auto_type" to "auto" compiler_types.h: add "auto" as a macro for "__auto_type"master
commit
c752c21c90
|
|
@ -172,15 +172,15 @@ do { \
|
|||
|
||||
#define __put_user(x, ptr) \
|
||||
({ \
|
||||
__auto_type __pu_ptr = (ptr); \
|
||||
typeof(*__pu_ptr) __pu_val = (typeof(*__pu_ptr))(x); \
|
||||
auto __pu_ptr = (ptr); \
|
||||
auto __pu_val = (typeof(*__pu_ptr))(x); \
|
||||
__put_user_common(__pu_val, __pu_ptr); \
|
||||
})
|
||||
|
||||
#define put_user(x, ptr) \
|
||||
({ \
|
||||
__auto_type __pu_ptr = (ptr); \
|
||||
typeof(*__pu_ptr) __pu_val = (typeof(*__pu_ptr))(x); \
|
||||
auto __pu_ptr = (ptr); \
|
||||
auto __pu_val = (typeof(*__pu_ptr))(x); \
|
||||
access_ok(__pu_ptr, sizeof(*__pu_ptr)) ? \
|
||||
__put_user_common(__pu_val, __pu_ptr) : \
|
||||
-EFAULT; \
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ do { \
|
|||
|
||||
#define __WARN_FLAGS(cond_str, flags) \
|
||||
do { \
|
||||
__auto_type __flags = BUGFLAG_WARNING|(flags); \
|
||||
auto __flags = BUGFLAG_WARNING|(flags); \
|
||||
instrumentation_begin(); \
|
||||
_BUG_FLAGS(cond_str, ASM_UD2, __flags, ARCH_WARN_REACHABLE); \
|
||||
instrumentation_end(); \
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ KCFI_REFERENCE(__memset);
|
|||
#define __HAVE_ARCH_MEMSET16
|
||||
static inline void *memset16(uint16_t *s, uint16_t v, size_t n)
|
||||
{
|
||||
const __auto_type s0 = s;
|
||||
const auto s0 = s;
|
||||
asm volatile (
|
||||
"rep stosw"
|
||||
: "+D" (s), "+c" (n)
|
||||
|
|
@ -44,7 +44,7 @@ static inline void *memset16(uint16_t *s, uint16_t v, size_t n)
|
|||
#define __HAVE_ARCH_MEMSET32
|
||||
static inline void *memset32(uint32_t *s, uint32_t v, size_t n)
|
||||
{
|
||||
const __auto_type s0 = s;
|
||||
const auto s0 = s;
|
||||
asm volatile (
|
||||
"rep stosl"
|
||||
: "+D" (s), "+c" (n)
|
||||
|
|
@ -57,7 +57,7 @@ static inline void *memset32(uint32_t *s, uint32_t v, size_t n)
|
|||
#define __HAVE_ARCH_MEMSET64
|
||||
static inline void *memset64(uint64_t *s, uint64_t v, size_t n)
|
||||
{
|
||||
const __auto_type s0 = s;
|
||||
const auto s0 = s;
|
||||
asm volatile (
|
||||
"rep stosq"
|
||||
: "+D" (s), "+c" (n)
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static inline void __user *mask_user_address(const void __user *ptr)
|
|||
return ret;
|
||||
}
|
||||
#define masked_user_access_begin(x) ({ \
|
||||
__auto_type __masked_ptr = (x); \
|
||||
auto __masked_ptr = (x); \
|
||||
__masked_ptr = mask_user_address(__masked_ptr); \
|
||||
__uaccess_begin(); __masked_ptr; })
|
||||
|
||||
|
|
|
|||
|
|
@ -303,7 +303,7 @@ static ssize_t proc_reg_read_iter(struct kiocb *iocb, struct iov_iter *iter)
|
|||
|
||||
static ssize_t pde_read(struct proc_dir_entry *pde, struct file *file, char __user *buf, size_t count, loff_t *ppos)
|
||||
{
|
||||
__auto_type read = pde->proc_ops->proc_read;
|
||||
const auto read = pde->proc_ops->proc_read;
|
||||
if (read)
|
||||
return read(file, buf, count, ppos);
|
||||
return -EIO;
|
||||
|
|
@ -325,7 +325,7 @@ static ssize_t proc_reg_read(struct file *file, char __user *buf, size_t count,
|
|||
|
||||
static ssize_t pde_write(struct proc_dir_entry *pde, struct file *file, const char __user *buf, size_t count, loff_t *ppos)
|
||||
{
|
||||
__auto_type write = pde->proc_ops->proc_write;
|
||||
const auto write = pde->proc_ops->proc_write;
|
||||
if (write)
|
||||
return write(file, buf, count, ppos);
|
||||
return -EIO;
|
||||
|
|
@ -347,7 +347,7 @@ static ssize_t proc_reg_write(struct file *file, const char __user *buf, size_t
|
|||
|
||||
static __poll_t pde_poll(struct proc_dir_entry *pde, struct file *file, struct poll_table_struct *pts)
|
||||
{
|
||||
__auto_type poll = pde->proc_ops->proc_poll;
|
||||
const auto poll = pde->proc_ops->proc_poll;
|
||||
if (poll)
|
||||
return poll(file, pts);
|
||||
return DEFAULT_POLLMASK;
|
||||
|
|
@ -369,7 +369,7 @@ static __poll_t proc_reg_poll(struct file *file, struct poll_table_struct *pts)
|
|||
|
||||
static long pde_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
__auto_type ioctl = pde->proc_ops->proc_ioctl;
|
||||
const auto ioctl = pde->proc_ops->proc_ioctl;
|
||||
if (ioctl)
|
||||
return ioctl(file, cmd, arg);
|
||||
return -ENOTTY;
|
||||
|
|
@ -392,7 +392,7 @@ static long proc_reg_unlocked_ioctl(struct file *file, unsigned int cmd, unsigne
|
|||
#ifdef CONFIG_COMPAT
|
||||
static long pde_compat_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
__auto_type compat_ioctl = pde->proc_ops->proc_compat_ioctl;
|
||||
const auto compat_ioctl = pde->proc_ops->proc_compat_ioctl;
|
||||
if (compat_ioctl)
|
||||
return compat_ioctl(file, cmd, arg);
|
||||
return -ENOTTY;
|
||||
|
|
@ -414,7 +414,7 @@ static long proc_reg_compat_ioctl(struct file *file, unsigned int cmd, unsigned
|
|||
|
||||
static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
__auto_type mmap = pde->proc_ops->proc_mmap;
|
||||
const auto mmap = pde->proc_ops->proc_mmap;
|
||||
if (mmap)
|
||||
return mmap(file, vma);
|
||||
return -EIO;
|
||||
|
|
@ -497,7 +497,7 @@ static int proc_reg_open(struct inode *inode, struct file *file)
|
|||
if (!use_pde(pde))
|
||||
return -ENOENT;
|
||||
|
||||
__auto_type release = pde->proc_ops->proc_release;
|
||||
const auto release = pde->proc_ops->proc_release;
|
||||
if (release) {
|
||||
pdeo = kmem_cache_alloc(pde_opener_cache, GFP_KERNEL);
|
||||
if (!pdeo) {
|
||||
|
|
@ -534,10 +534,9 @@ static int proc_reg_release(struct inode *inode, struct file *file)
|
|||
struct pde_opener *pdeo;
|
||||
|
||||
if (pde_is_permanent(pde)) {
|
||||
__auto_type release = pde->proc_ops->proc_release;
|
||||
if (release) {
|
||||
const auto release = pde->proc_ops->proc_release;
|
||||
if (release)
|
||||
return release(inode, file);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -212,10 +212,10 @@
|
|||
|
||||
#define __free(_name) __cleanup(__free_##_name)
|
||||
|
||||
#define __get_and_null(p, nullvalue) \
|
||||
#define __get_and_null(p, nullvalue) \
|
||||
({ \
|
||||
__auto_type __ptr = &(p); \
|
||||
__auto_type __val = *__ptr; \
|
||||
auto __ptr = &(p); \
|
||||
auto __val = *__ptr; \
|
||||
*__ptr = nullvalue; \
|
||||
__val; \
|
||||
})
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
|
|||
#define data_race(expr) \
|
||||
({ \
|
||||
__kcsan_disable_current(); \
|
||||
__auto_type __v = (expr); \
|
||||
auto __v = (expr); \
|
||||
__kcsan_enable_current(); \
|
||||
__v; \
|
||||
})
|
||||
|
|
|
|||
|
|
@ -17,6 +17,19 @@
|
|||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/*
|
||||
* C23 introduces "auto" as a standard way to define type-inferred
|
||||
* variables, but "auto" has been a (useless) keyword even since K&R C,
|
||||
* so it has always been "namespace reserved."
|
||||
*
|
||||
* Until at some future time we require C23 support, we need the gcc
|
||||
* extension __auto_type, but there is no reason to put that elsewhere
|
||||
* in the source code.
|
||||
*/
|
||||
#if __STDC_VERSION__ < 202311L
|
||||
# define auto __auto_type
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Skipped when running bindgen due to a libclang issue;
|
||||
* see https://github.com/rust-lang/rust-bindgen/issues/2244.
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
__cmp_once_unique(op, type, x, y, __UNIQUE_ID(x_), __UNIQUE_ID(y_))
|
||||
|
||||
#define __careful_cmp_once(op, x, y, ux, uy) ({ \
|
||||
__auto_type ux = (x); __auto_type uy = (y); \
|
||||
auto ux = (x); auto uy = (y); \
|
||||
BUILD_BUG_ON_MSG(!__types_ok(ux, uy), \
|
||||
#op"("#x", "#y") signedness error"); \
|
||||
__cmp(op, ux, uy); })
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
__careful_cmp(max, (x) + 0u + 0ul + 0ull, (y) + 0u + 0ul + 0ull)
|
||||
|
||||
#define __careful_op3(op, x, y, z, ux, uy, uz) ({ \
|
||||
__auto_type ux = (x); __auto_type uy = (y);__auto_type uz = (z);\
|
||||
auto ux = (x); auto uy = (y); auto uz = (z); \
|
||||
BUILD_BUG_ON_MSG(!__types_ok3(ux, uy, uz), \
|
||||
#op"3("#x", "#y", "#z") signedness error"); \
|
||||
__cmp(op, ux, __cmp(op, uy, uz)); })
|
||||
|
|
@ -203,7 +203,7 @@
|
|||
* This macro checks @val/@lo/@hi to make sure they have compatible
|
||||
* signedness.
|
||||
*/
|
||||
#define clamp(val, lo, hi) __careful_clamp(__auto_type, val, lo, hi)
|
||||
#define clamp(val, lo, hi) __careful_clamp(auto, val, lo, hi)
|
||||
|
||||
/**
|
||||
* clamp_t - return a value clamped to a given range using a given type
|
||||
|
|
|
|||
|
|
@ -17,11 +17,16 @@
|
|||
#define VMADDR_CID_LOCAL 1
|
||||
#endif
|
||||
|
||||
/* include/linux/compiler_types.h */
|
||||
#if __STDC_VERSION__ < 202311L && !defined(auto)
|
||||
# define auto __auto_type
|
||||
#endif
|
||||
|
||||
/* include/linux/cleanup.h */
|
||||
#define __get_and_null(p, nullvalue) \
|
||||
({ \
|
||||
__auto_type __ptr = &(p); \
|
||||
__auto_type __val = *__ptr; \
|
||||
auto __ptr = &(p); \
|
||||
auto __val = *__ptr; \
|
||||
*__ptr = nullvalue; \
|
||||
__val; \
|
||||
})
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
#define data_race(expr) \
|
||||
({ \
|
||||
__auto_type __v = (expr); \
|
||||
auto __v = (expr); \
|
||||
__v; \
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue