Blame view
include/linux/kasan.h
3.01 KB
0b24becc8
|
1 2 3 4 5 6 7 |
#ifndef _LINUX_KASAN_H #define _LINUX_KASAN_H #include <linux/types.h> struct kmem_cache; struct page; |
a5af5aa8b
|
8 |
struct vm_struct; |
0b24becc8
|
9 10 11 12 |
#ifdef CONFIG_KASAN #define KASAN_SHADOW_SCALE_SHIFT 3 |
0b24becc8
|
13 14 |
#include <asm/kasan.h> |
69786cdb3
|
15 |
#include <asm/pgtable.h> |
0b24becc8
|
16 |
#include <linux/sched.h> |
69786cdb3
|
17 18 19 20 21 22 23 |
extern unsigned char kasan_zero_page[PAGE_SIZE]; extern pte_t kasan_zero_pte[PTRS_PER_PTE]; extern pmd_t kasan_zero_pmd[PTRS_PER_PMD]; extern pud_t kasan_zero_pud[PTRS_PER_PUD]; void kasan_populate_zero_shadow(const void *shadow_start, const void *shadow_end); |
0b24becc8
|
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
static inline void *kasan_mem_to_shadow(const void *addr) { return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET; } /* Enable reporting bugs after kasan_disable_current() */ static inline void kasan_enable_current(void) { current->kasan_depth++; } /* Disable reporting bugs for current task */ static inline void kasan_disable_current(void) { current->kasan_depth--; } void kasan_unpoison_shadow(const void *address, size_t size); |
b8c73fc24
|
43 44 |
void kasan_alloc_pages(struct page *page, unsigned int order); void kasan_free_pages(struct page *page, unsigned int order); |
0316bec22
|
45 46 47 48 49 50 |
void kasan_poison_slab(struct page *page); void kasan_unpoison_object_data(struct kmem_cache *cache, void *object); void kasan_poison_object_data(struct kmem_cache *cache, void *object); void kasan_kmalloc_large(const void *ptr, size_t size); void kasan_kfree_large(const void *ptr); |
923936157
|
51 |
void kasan_kfree(void *ptr); |
0316bec22
|
52 53 54 55 56 |
void kasan_kmalloc(struct kmem_cache *s, const void *object, size_t size); void kasan_krealloc(const void *object, size_t new_size); void kasan_slab_alloc(struct kmem_cache *s, void *object); void kasan_slab_free(struct kmem_cache *s, void *object); |
bebf56a1b
|
57 |
int kasan_module_alloc(void *addr, size_t size); |
a5af5aa8b
|
58 |
void kasan_free_shadow(const struct vm_struct *vm); |
bebf56a1b
|
59 |
|
0b24becc8
|
60 61 62 63 64 65 |
#else /* CONFIG_KASAN */ static inline void kasan_unpoison_shadow(const void *address, size_t size) {} static inline void kasan_enable_current(void) {} static inline void kasan_disable_current(void) {} |
b8c73fc24
|
66 67 |
static inline void kasan_alloc_pages(struct page *page, unsigned int order) {} static inline void kasan_free_pages(struct page *page, unsigned int order) {} |
0316bec22
|
68 69 70 71 72 73 74 75 |
static inline void kasan_poison_slab(struct page *page) {} static inline void kasan_unpoison_object_data(struct kmem_cache *cache, void *object) {} static inline void kasan_poison_object_data(struct kmem_cache *cache, void *object) {} static inline void kasan_kmalloc_large(void *ptr, size_t size) {} static inline void kasan_kfree_large(const void *ptr) {} |
923936157
|
76 |
static inline void kasan_kfree(void *ptr) {} |
0316bec22
|
77 78 79 80 81 82 |
static inline void kasan_kmalloc(struct kmem_cache *s, const void *object, size_t size) {} static inline void kasan_krealloc(const void *object, size_t new_size) {} static inline void kasan_slab_alloc(struct kmem_cache *s, void *object) {} static inline void kasan_slab_free(struct kmem_cache *s, void *object) {} |
bebf56a1b
|
83 |
static inline int kasan_module_alloc(void *addr, size_t size) { return 0; } |
a5af5aa8b
|
84 |
static inline void kasan_free_shadow(const struct vm_struct *vm) {} |
bebf56a1b
|
85 |
|
0b24becc8
|
86 87 88 |
#endif /* CONFIG_KASAN */ #endif /* LINUX_KASAN_H */ |