.. | .. |
---|
2 | 2 | #ifndef _LINUX_KASAN_CHECKS_H |
---|
3 | 3 | #define _LINUX_KASAN_CHECKS_H |
---|
4 | 4 | |
---|
5 | | -#if defined(__SANITIZE_ADDRESS__) || defined(__KASAN_INTERNAL) |
---|
6 | | -void kasan_check_read(const volatile void *p, unsigned int size); |
---|
7 | | -void kasan_check_write(const volatile void *p, unsigned int size); |
---|
| 5 | +#include <linux/types.h> |
---|
| 6 | + |
---|
| 7 | +/* |
---|
| 8 | + * The annotations present in this file are only relevant for the software |
---|
| 9 | + * KASAN modes that rely on compiler instrumentation, and will be optimized |
---|
| 10 | + * away for the hardware tag-based KASAN mode. Use kasan_check_byte() instead. |
---|
| 11 | + */ |
---|
| 12 | + |
---|
| 13 | +/* |
---|
| 14 | + * __kasan_check_*: Always available when KASAN is enabled. This may be used |
---|
| 15 | + * even in compilation units that selectively disable KASAN, but must use KASAN |
---|
| 16 | + * to validate access to an address. Never use these in header files! |
---|
| 17 | + */ |
---|
| 18 | +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) |
---|
| 19 | +bool __kasan_check_read(const volatile void *p, unsigned int size); |
---|
| 20 | +bool __kasan_check_write(const volatile void *p, unsigned int size); |
---|
8 | 21 | #else |
---|
9 | | -static inline void kasan_check_read(const volatile void *p, unsigned int size) |
---|
10 | | -{ } |
---|
11 | | -static inline void kasan_check_write(const volatile void *p, unsigned int size) |
---|
12 | | -{ } |
---|
| 22 | +static inline bool __kasan_check_read(const volatile void *p, unsigned int size) |
---|
| 23 | +{ |
---|
| 24 | + return true; |
---|
| 25 | +} |
---|
| 26 | +static inline bool __kasan_check_write(const volatile void *p, unsigned int size) |
---|
| 27 | +{ |
---|
| 28 | + return true; |
---|
| 29 | +} |
---|
| 30 | +#endif |
---|
| 31 | + |
---|
| 32 | +/* |
---|
| 33 | + * kasan_check_*: Only available when the particular compilation unit has KASAN |
---|
| 34 | + * instrumentation enabled. May be used in header files. |
---|
| 35 | + */ |
---|
| 36 | +#ifdef __SANITIZE_ADDRESS__ |
---|
| 37 | +#define kasan_check_read __kasan_check_read |
---|
| 38 | +#define kasan_check_write __kasan_check_write |
---|
| 39 | +#else |
---|
| 40 | +static inline bool kasan_check_read(const volatile void *p, unsigned int size) |
---|
| 41 | +{ |
---|
| 42 | + return true; |
---|
| 43 | +} |
---|
| 44 | +static inline bool kasan_check_write(const volatile void *p, unsigned int size) |
---|
| 45 | +{ |
---|
| 46 | + return true; |
---|
| 47 | +} |
---|
13 | 48 | #endif |
---|
14 | 49 | |
---|
15 | 50 | #endif |
---|