1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_KASAN_CHECKS_H 3 #define _LINUX_KASAN_CHECKS_H 4 5 #include <linux/types.h> 6 7 /* 8 * __kasan_check_*: Always available when KASAN is enabled. This may be used 9 * even in compilation units that selectively disable KASAN, but must use KASAN 10 * to validate access to an address. Never use these in header files! 11 */ 12 #ifdef CONFIG_KASAN 13 bool __kasan_check_read(const volatile void *p, unsigned int size); 14 bool __kasan_check_write(const volatile void *p, unsigned int size); 15 #else 16 static inline bool __kasan_check_read(const volatile void *p, unsigned int size) 17 { 18 return true; 19 } 20 static inline bool __kasan_check_write(const volatile void *p, unsigned int size) 21 { 22 return true; 23 } 24 #endif 25 26 /* 27 * kasan_check_*: Only available when the particular compilation unit has KASAN 28 * instrumentation enabled. May be used in header files. 29 */ 30 #ifdef __SANITIZE_ADDRESS__ 31 #define kasan_check_read __kasan_check_read 32 #define kasan_check_write __kasan_check_write 33 #else 34 static inline bool kasan_check_read(const volatile void *p, unsigned int size) 35 { 36 return true; 37 } 38 static inline bool kasan_check_write(const volatile void *p, unsigned int size) 39 { 40 return true; 41 } 42 #endif 43 44 #endif 45