cregit-Linux how code gets into the kernel

Release 4.14 include/linux/kasan.h

Directory: include/linux
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KASAN_H

#define _LINUX_KASAN_H

#include <linux/types.h>

struct kmem_cache;
struct page;
struct vm_struct;
struct task_struct;

#ifdef CONFIG_KASAN


#define KASAN_SHADOW_SCALE_SHIFT 3

#include <asm/kasan.h>
#include <asm/pgtable.h>

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];
extern p4d_t kasan_zero_p4d[PTRS_PER_P4D];

void kasan_populate_zero_shadow(const void *shadow_start,
				const void *shadow_end);


static inline void *kasan_mem_to_shadow(const void *addr) { return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET; }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin30100.00%1100.00%
Total30100.00%1100.00%

/* Enable reporting bugs after kasan_disable_current() */ extern void kasan_enable_current(void); /* Disable reporting bugs for current task */ extern void kasan_disable_current(void); void kasan_unpoison_shadow(const void *address, size_t size); void kasan_unpoison_task_stack(struct task_struct *task); void kasan_unpoison_stack_above_sp_to(const void *watermark); void kasan_alloc_pages(struct page *page, unsigned int order); void kasan_free_pages(struct page *page, unsigned int order); void kasan_cache_create(struct kmem_cache *cache, size_t *size, unsigned long *flags); void kasan_cache_shrink(struct kmem_cache *cache); void kasan_cache_shutdown(struct kmem_cache *cache); 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_init_slab_obj(struct kmem_cache *cache, const void *object); void kasan_kmalloc_large(const void *ptr, size_t size, gfp_t flags); void kasan_kfree_large(const void *ptr); void kasan_poison_kfree(void *ptr); void kasan_kmalloc(struct kmem_cache *s, const void *object, size_t size, gfp_t flags); void kasan_krealloc(const void *object, size_t new_size, gfp_t flags); void kasan_slab_alloc(struct kmem_cache *s, void *object, gfp_t flags); bool kasan_slab_free(struct kmem_cache *s, void *object); struct kasan_cache { int alloc_meta_offset; int free_meta_offset; }; int kasan_module_alloc(void *addr, size_t size); void kasan_free_shadow(const struct vm_struct *vm); size_t ksize(const void *);
static inline void kasan_unpoison_slab(const void *ptr) { ksize(ptr); }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin17100.00%1100.00%
Total17100.00%1100.00%

size_t kasan_metadata_size(struct kmem_cache *cache); bool kasan_save_enable_multi_shot(void); void kasan_restore_multi_shot(bool enabled); #else /* CONFIG_KASAN */
static inline void kasan_unpoison_shadow(const void *address, size_t size) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin14100.00%1100.00%
Total14100.00%1100.00%


static inline void kasan_unpoison_task_stack(struct task_struct *task) {}

Contributors

PersonTokensPropCommitsCommitProp
Mark Rutland11100.00%1100.00%
Total11100.00%1100.00%


static inline void kasan_unpoison_stack_above_sp_to(const void *watermark) {}

Contributors

PersonTokensPropCommitsCommitProp
Dmitriy Vyukov11100.00%1100.00%
Total11100.00%1100.00%


static inline void kasan_enable_current(void) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin8100.00%1100.00%
Total8100.00%1100.00%


static inline void kasan_disable_current(void) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin8100.00%1100.00%
Total8100.00%1100.00%


static inline void kasan_alloc_pages(struct page *page, unsigned int order) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin15100.00%1100.00%
Total15100.00%1100.00%


static inline void kasan_free_pages(struct page *page, unsigned int order) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin15100.00%1100.00%
Total15100.00%1100.00%


static inline void kasan_cache_create(struct kmem_cache *cache, size_t *size, unsigned long *flags) {}

Contributors

PersonTokensPropCommitsCommitProp
Alexander Potapenko20100.00%1100.00%
Total20100.00%1100.00%


static inline void kasan_cache_shrink(struct kmem_cache *cache) {}

Contributors

PersonTokensPropCommitsCommitProp
Alexander Potapenko11100.00%1100.00%
Total11100.00%1100.00%


static inline void kasan_cache_shutdown(struct kmem_cache *cache) {}

Contributors

PersonTokensPropCommitsCommitProp
Alexander Potapenko1090.91%150.00%
Greg Thelen19.09%150.00%
Total11100.00%2100.00%


static inline void kasan_poison_slab(struct page *page) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin11100.00%1100.00%
Total11100.00%1100.00%


static inline void kasan_unpoison_object_data(struct kmem_cache *cache, void *object) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin15100.00%1100.00%
Total15100.00%1100.00%


static inline void kasan_poison_object_data(struct kmem_cache *cache, void *object) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin15100.00%1100.00%
Total15100.00%1100.00%


static inline void kasan_init_slab_obj(struct kmem_cache *cache, const void *object) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin16100.00%1100.00%
Total16100.00%1100.00%


static inline void kasan_kmalloc_large(void *ptr, size_t size, gfp_t flags) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin1381.25%150.00%
Alexander Potapenko318.75%150.00%
Total16100.00%2100.00%


static inline void kasan_kfree_large(const void *ptr) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin11100.00%1100.00%
Total11100.00%1100.00%


static inline void kasan_poison_kfree(void *ptr) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin10100.00%2100.00%
Total10100.00%2100.00%


static inline void kasan_kmalloc(struct kmem_cache *s, const void *object, size_t size, gfp_t flags) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin1986.36%150.00%
Alexander Potapenko313.64%150.00%
Total22100.00%2100.00%


static inline void kasan_krealloc(const void *object, size_t new_size, gfp_t flags) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin1482.35%150.00%
Alexander Potapenko317.65%150.00%
Total17100.00%2100.00%


static inline void kasan_slab_alloc(struct kmem_cache *s, void *object, gfp_t flags) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin1583.33%150.00%
Alexander Potapenko316.67%150.00%
Total18100.00%2100.00%


static inline bool kasan_slab_free(struct kmem_cache *s, void *object) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin1368.42%150.00%
Alexander Potapenko631.58%150.00%
Total19100.00%2100.00%


static inline int kasan_module_alloc(void *addr, size_t size) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin17100.00%1100.00%
Total17100.00%1100.00%


static inline void kasan_free_shadow(const struct vm_struct *vm) {}

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin12100.00%2100.00%
Total12100.00%2100.00%


static inline void kasan_unpoison_slab(const void *ptr) { }

Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin11100.00%1100.00%
Total11100.00%1100.00%


static inline size_t kasan_metadata_size(struct kmem_cache *cache) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Alexander Potapenko15100.00%1100.00%
Total15100.00%1100.00%

#endif /* CONFIG_KASAN */ #endif /* LINUX_KASAN_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Andrey Ryabinin59373.66%942.86%
Alexander Potapenko14217.64%419.05%
Mark Rutland334.10%29.52%
Dmitriy Vyukov202.48%14.76%
Kirill A. Shutemov70.87%14.76%
Ingo Molnar40.50%14.76%
Masami Hiramatsu30.37%14.76%
Greg Thelen20.25%14.76%
Greg Kroah-Hartman10.12%14.76%
Total805100.00%21100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.