Merge branch 'akpm' (patches from Andrew)
Merge more updates from Andrew Morton: "More mm/ work, plenty more to come Subsystems affected by this patch series: slub, memcg, gup, kasan, pagealloc, hugetlb, vmscan, tools, mempolicy, memblock, hugetlbfs, thp, mmap, kconfig" * akpm: (131 commits) arm64: mm: use ARCH_HAS_DEBUG_WX instead of arch defined x86: mm: use ARCH_HAS_DEBUG_WX instead of arch defined riscv: support DEBUG_WX mm: add DEBUG_WX support drivers/base/memory.c: cache memory blocks in xarray to accelerate lookup mm/thp: rename pmd_mknotpresent() as pmd_mkinvalid() powerpc/mm: drop platform defined pmd_mknotpresent() mm: thp: don't need to drain lru cache when splitting and mlocking THP hugetlbfs: get unmapped area below TASK_UNMAPPED_BASE for hugetlbfs sparc32: register memory occupied by kernel as memblock.memory include/linux/memblock.h: fix minor typo and unclear comment mm, mempolicy: fix up gup usage in lookup_node tools/vm/page_owner_sort.c: filter out unneeded line mm: swap: memcg: fix memcg stats for huge pages mm: swap: fix vmstats for huge pages mm: vmscan: limit the range of LRU type balancing mm: vmscan: reclaim writepage is IO cost mm: vmscan: determine anon/file pressure balance at the reclaim root mm: balance LRU lists based on relative thrashing mm: only count actual rotations as LRU reclaim cost ...
This commit is contained in:
@@ -23,6 +23,14 @@
|
||||
|
||||
#include <asm/page.h>
|
||||
|
||||
/*
|
||||
* We assign some test results to these globals to make sure the tests
|
||||
* are not eliminated as dead code.
|
||||
*/
|
||||
|
||||
int kasan_int_result;
|
||||
void *kasan_ptr_result;
|
||||
|
||||
/*
|
||||
* Note: test functions are marked noinline so that their names appear in
|
||||
* reports.
|
||||
@@ -622,7 +630,7 @@ static noinline void __init kasan_memchr(void)
|
||||
if (!ptr)
|
||||
return;
|
||||
|
||||
memchr(ptr, '1', size + 1);
|
||||
kasan_ptr_result = memchr(ptr, '1', size + 1);
|
||||
kfree(ptr);
|
||||
}
|
||||
|
||||
@@ -638,7 +646,7 @@ static noinline void __init kasan_memcmp(void)
|
||||
return;
|
||||
|
||||
memset(arr, 0, sizeof(arr));
|
||||
memcmp(ptr, arr, size+1);
|
||||
kasan_int_result = memcmp(ptr, arr, size + 1);
|
||||
kfree(ptr);
|
||||
}
|
||||
|
||||
@@ -661,22 +669,22 @@ static noinline void __init kasan_strings(void)
|
||||
* will likely point to zeroed byte.
|
||||
*/
|
||||
ptr += 16;
|
||||
strchr(ptr, '1');
|
||||
kasan_ptr_result = strchr(ptr, '1');
|
||||
|
||||
pr_info("use-after-free in strrchr\n");
|
||||
strrchr(ptr, '1');
|
||||
kasan_ptr_result = strrchr(ptr, '1');
|
||||
|
||||
pr_info("use-after-free in strcmp\n");
|
||||
strcmp(ptr, "2");
|
||||
kasan_int_result = strcmp(ptr, "2");
|
||||
|
||||
pr_info("use-after-free in strncmp\n");
|
||||
strncmp(ptr, "2", 1);
|
||||
kasan_int_result = strncmp(ptr, "2", 1);
|
||||
|
||||
pr_info("use-after-free in strlen\n");
|
||||
strlen(ptr);
|
||||
kasan_int_result = strlen(ptr);
|
||||
|
||||
pr_info("use-after-free in strnlen\n");
|
||||
strnlen(ptr, 1);
|
||||
kasan_int_result = strnlen(ptr, 1);
|
||||
}
|
||||
|
||||
static noinline void __init kasan_bitops(void)
|
||||
@@ -743,11 +751,12 @@ static noinline void __init kasan_bitops(void)
|
||||
__test_and_change_bit(BITS_PER_LONG + BITS_PER_BYTE, bits);
|
||||
|
||||
pr_info("out-of-bounds in test_bit\n");
|
||||
(void)test_bit(BITS_PER_LONG + BITS_PER_BYTE, bits);
|
||||
kasan_int_result = test_bit(BITS_PER_LONG + BITS_PER_BYTE, bits);
|
||||
|
||||
#if defined(clear_bit_unlock_is_negative_byte)
|
||||
pr_info("out-of-bounds in clear_bit_unlock_is_negative_byte\n");
|
||||
clear_bit_unlock_is_negative_byte(BITS_PER_LONG + BITS_PER_BYTE, bits);
|
||||
kasan_int_result = clear_bit_unlock_is_negative_byte(BITS_PER_LONG +
|
||||
BITS_PER_BYTE, bits);
|
||||
#endif
|
||||
kfree(bits);
|
||||
}
|
||||
|
Reference in New Issue
Block a user