]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - mm/kasan/kasan.h
Merge branch 'getname2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[mirror_ubuntu-artful-kernel.git] / mm / kasan / kasan.h
index 1fcc1d81a9cf5a6cf40a71f225fe0f631795dfb7..4986b0acab212e5780bb8e0547f4b53a51aac1a4 100644 (file)
@@ -11,6 +11,7 @@
 #define KASAN_PAGE_REDZONE      0xFE  /* redzone for kmalloc_large allocations */
 #define KASAN_KMALLOC_REDZONE   0xFC  /* redzone inside slub object */
 #define KASAN_KMALLOC_FREE      0xFB  /* object was freed (kmem_cache_free/kfree) */
+#define KASAN_GLOBAL_REDZONE    0xFA  /* redzone for global variable */
 
 /*
  * Stack redzone shadow values
 #define KASAN_STACK_RIGHT       0xF3
 #define KASAN_STACK_PARTIAL     0xF4
 
+/* Don't break randconfig/all*config builds */
+#ifndef KASAN_ABI_VERSION
+#define KASAN_ABI_VERSION 1
+#endif
 
 struct kasan_access_info {
        const void *access_addr;
@@ -30,6 +35,26 @@ struct kasan_access_info {
        unsigned long ip;
 };
 
+/* The layout of struct dictated by compiler */
+struct kasan_source_location {
+       const char *filename;
+       int line_no;
+       int column_no;
+};
+
+/* The layout of struct dictated by compiler */
+struct kasan_global {
+       const void *beg;                /* Address of the beginning of the global variable. */
+       size_t size;                    /* Size of the global variable. */
+       size_t size_with_redzone;       /* Size of the variable + size of the red zone. 32 bytes aligned */
+       const void *name;
+       const void *module_name;        /* Name of the module where the global variable is declared. */
+       unsigned long has_dynamic_init; /* This needed for C++ */
+#if KASAN_ABI_VERSION >= 4
+       struct kasan_source_location *location;
+#endif
+};
+
 void kasan_report_error(struct kasan_access_info *info);
 void kasan_report_user_access(struct kasan_access_info *info);