mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	vdso: Address variable shadowing in macros
Compiling the kernel with gcc12.3 W=2 results in shadowing warnings:
warning: declaration of '__pptr' shadows a previous local [-Wshadow]
  const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr);
note: in definition of macro '__put_unaligned_t'
  __pptr->x = (val);
note: in expansion of macro '__get_unaligned_t'
  __put_unaligned_t(type, __get_unaligned_t(type, src), dst);
__get_unaligned_t() and __put_unaligned_t() use a local variable named
'__pptr', which can lead to variable shadowing when these macros are used in
the same scope. This results in a -Wshadow warning during compilation.
To address this issue, rename the local variables within the macros to
ensure uniqueness.
Signed-off-by: Peng Jiang <jiang.peng9@zte.com.cn>
Signed-off-by: Shao Mingyin <shao.mingyin@zte.com.cn>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250324191230477zpGtgIRSH4mEHdtxGtgx9@zte.com.cn
			
			
This commit is contained in:
		
							parent
							
								
									92e250c624
								
							
						
					
					
						commit
						acea994327
					
				
					 1 changed files with 6 additions and 6 deletions
				
			
		| 
						 | 
					@ -2,14 +2,14 @@
 | 
				
			||||||
#ifndef __VDSO_UNALIGNED_H
 | 
					#ifndef __VDSO_UNALIGNED_H
 | 
				
			||||||
#define __VDSO_UNALIGNED_H
 | 
					#define __VDSO_UNALIGNED_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __get_unaligned_t(type, ptr) ({						\
 | 
					#define __get_unaligned_t(type, ptr) ({							\
 | 
				
			||||||
	const struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr);	\
 | 
						const struct { type x; } __packed * __get_pptr = (typeof(__get_pptr))(ptr);	\
 | 
				
			||||||
	__pptr->x;								\
 | 
						__get_pptr->x;									\
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __put_unaligned_t(type, val, ptr) do {					\
 | 
					#define __put_unaligned_t(type, val, ptr) do {						\
 | 
				
			||||||
	struct { type x; } __packed *__pptr = (typeof(__pptr))(ptr);		\
 | 
						struct { type x; } __packed * __put_pptr = (typeof(__put_pptr))(ptr);		\
 | 
				
			||||||
	__pptr->x = (val);							\
 | 
						__put_pptr->x = (val);								\
 | 
				
			||||||
} while (0)
 | 
					} while (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __VDSO_UNALIGNED_H */
 | 
					#endif /* __VDSO_UNALIGNED_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue