mm: page_alloc: add kasan hooks on alloc and free paths
[cascardo/linux.git] / mm / kasan / report.c
index 5835d69..fab8e78 100644 (file)
@@ -54,6 +54,9 @@ static void print_error_description(struct kasan_access_info *info)
        shadow_val = *(u8 *)kasan_mem_to_shadow(info->first_bad_addr);
 
        switch (shadow_val) {
+       case KASAN_FREE_PAGE:
+               bug_type = "use after free";
+               break;
        case 0 ... KASAN_SHADOW_SCALE_SIZE - 1:
                bug_type = "out of bounds access";
                break;
@@ -69,6 +72,14 @@ static void print_error_description(struct kasan_access_info *info)
 
 static void print_address_description(struct kasan_access_info *info)
 {
+       const void *addr = info->access_addr;
+
+       if ((addr >= (void *)PAGE_OFFSET) &&
+               (addr < high_memory)) {
+               struct page *page = virt_to_head_page(addr);
+               dump_page(page, "kasan: bad access detected");
+       }
+
        dump_stack();
 }