mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 33def8498f
			
		
	
	
		33def8498f
		
	
	
	
	
		
			
			Use a more generic form for __section that requires quotes to avoid
complications with clang and gcc differences.
Remove the quote operator # from compiler_attributes.h __section macro.
Convert all unquoted __section(foo) uses to quoted __section("foo").
Also convert __attribute__((section("foo"))) uses to __section("foo")
even if the __attribute__ has multiple list entry forms.
Conversion done using the script at:
    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl
Signed-off-by: Joe Perches <joe@perches.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@gooogle.com>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
	
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _ASM_GENERIC_ERROR_INJECTION_H
 | |
| #define _ASM_GENERIC_ERROR_INJECTION_H
 | |
| 
 | |
| #if defined(__KERNEL__) && !defined(__ASSEMBLY__)
 | |
| enum {
 | |
| 	EI_ETYPE_NONE,		/* Dummy value for undefined case */
 | |
| 	EI_ETYPE_NULL,		/* Return NULL if failure */
 | |
| 	EI_ETYPE_ERRNO,		/* Return -ERRNO if failure */
 | |
| 	EI_ETYPE_ERRNO_NULL,	/* Return -ERRNO or NULL if failure */
 | |
| 	EI_ETYPE_TRUE,		/* Return true if failure */
 | |
| };
 | |
| 
 | |
| struct error_injection_entry {
 | |
| 	unsigned long	addr;
 | |
| 	int		etype;
 | |
| };
 | |
| 
 | |
| struct pt_regs;
 | |
| 
 | |
| #ifdef CONFIG_FUNCTION_ERROR_INJECTION
 | |
| /*
 | |
|  * Whitelist ganerating macro. Specify functions which can be
 | |
|  * error-injectable using this macro.
 | |
|  */
 | |
| #define ALLOW_ERROR_INJECTION(fname, _etype)				\
 | |
| static struct error_injection_entry __used				\
 | |
| 	__section("_error_injection_whitelist")				\
 | |
| 	_eil_addr_##fname = {						\
 | |
| 		.addr = (unsigned long)fname,				\
 | |
| 		.etype = EI_ETYPE_##_etype,				\
 | |
| 	};
 | |
| 
 | |
| void override_function_with_return(struct pt_regs *regs);
 | |
| #else
 | |
| #define ALLOW_ERROR_INJECTION(fname, _etype)
 | |
| 
 | |
| static inline void override_function_with_return(struct pt_regs *regs) { }
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #endif /* _ASM_GENERIC_ERROR_INJECTION_H */
 |