mirror of https://github.com/OpenIPC/firmware.git
85 lines
3.2 KiB
Diff
85 lines
3.2 KiB
Diff
diff -drupN a/mm/kasan/kasan.h b/mm/kasan/kasan.h
|
|
--- a/mm/kasan/kasan.h 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/mm/kasan/kasan.h 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -23,6 +23,14 @@
|
|
#define KASAN_STACK_PARTIAL 0xF4
|
|
#define KASAN_USE_AFTER_SCOPE 0xF8
|
|
|
|
+/*
|
|
+ * alloca redzone shadow values
|
|
+ */
|
|
+#define KASAN_ALLOCA_LEFT 0xCA
|
|
+#define KASAN_ALLOCA_RIGHT 0xCB
|
|
+
|
|
+#define KASAN_ALLOCA_REDZONE_SIZE 32
|
|
+
|
|
/* Don't break randconfig/all*config builds */
|
|
#ifndef KASAN_ABI_VERSION
|
|
#define KASAN_ABI_VERSION 1
|
|
@@ -96,15 +104,10 @@ static inline const void *kasan_shadow_t
|
|
<< KASAN_SHADOW_SCALE_SHIFT);
|
|
}
|
|
|
|
-static inline bool kasan_report_enabled(void)
|
|
-{
|
|
- return !current->kasan_depth;
|
|
-}
|
|
-
|
|
void kasan_report(unsigned long addr, size_t size,
|
|
bool is_write, unsigned long ip);
|
|
void kasan_report_double_free(struct kmem_cache *cache, void *object,
|
|
- s8 shadow);
|
|
+ void *ip);
|
|
|
|
#if defined(CONFIG_SLAB) || defined(CONFIG_SLUB)
|
|
void quarantine_put(struct kasan_free_meta *info, struct kmem_cache *cache);
|
|
@@ -117,4 +120,48 @@ static inline void quarantine_reduce(voi
|
|
static inline void quarantine_remove_cache(struct kmem_cache *cache) { }
|
|
#endif
|
|
|
|
+/*
|
|
+ * Exported functions for interfaces called from assembly or from generated
|
|
+ * code. Declarations here to avoid warning about missing declarations.
|
|
+ */
|
|
+asmlinkage void kasan_unpoison_task_stack_below(const void *watermark);
|
|
+void __asan_register_globals(struct kasan_global *globals, size_t size);
|
|
+void __asan_unregister_globals(struct kasan_global *globals, size_t size);
|
|
+void __asan_loadN(unsigned long addr, size_t size);
|
|
+void __asan_storeN(unsigned long addr, size_t size);
|
|
+void __asan_handle_no_return(void);
|
|
+void __asan_poison_stack_memory(const void *addr, size_t size);
|
|
+void __asan_unpoison_stack_memory(const void *addr, size_t size);
|
|
+void __asan_alloca_poison(unsigned long addr, size_t size);
|
|
+void __asan_allocas_unpoison(const void *stack_top, const void *stack_bottom);
|
|
+
|
|
+void __asan_load1(unsigned long addr);
|
|
+void __asan_store1(unsigned long addr);
|
|
+void __asan_load2(unsigned long addr);
|
|
+void __asan_store2(unsigned long addr);
|
|
+void __asan_load4(unsigned long addr);
|
|
+void __asan_store4(unsigned long addr);
|
|
+void __asan_load8(unsigned long addr);
|
|
+void __asan_store8(unsigned long addr);
|
|
+void __asan_load16(unsigned long addr);
|
|
+void __asan_store16(unsigned long addr);
|
|
+
|
|
+void __asan_load1_noabort(unsigned long addr);
|
|
+void __asan_store1_noabort(unsigned long addr);
|
|
+void __asan_load2_noabort(unsigned long addr);
|
|
+void __asan_store2_noabort(unsigned long addr);
|
|
+void __asan_load4_noabort(unsigned long addr);
|
|
+void __asan_store4_noabort(unsigned long addr);
|
|
+void __asan_load8_noabort(unsigned long addr);
|
|
+void __asan_store8_noabort(unsigned long addr);
|
|
+void __asan_load16_noabort(unsigned long addr);
|
|
+void __asan_store16_noabort(unsigned long addr);
|
|
+
|
|
+void __asan_set_shadow_00(const void *addr, size_t size);
|
|
+void __asan_set_shadow_f1(const void *addr, size_t size);
|
|
+void __asan_set_shadow_f2(const void *addr, size_t size);
|
|
+void __asan_set_shadow_f3(const void *addr, size_t size);
|
|
+void __asan_set_shadow_f5(const void *addr, size_t size);
|
|
+void __asan_set_shadow_f8(const void *addr, size_t size);
|
|
+
|
|
#endif
|