linux/mm/kasan
Andrey Konovalov 2813b9c029 kasan, mm, arm64: tag non slab memory allocated via pagealloc
Tag-based KASAN doesn't check memory accesses through pointers tagged with
0xff.  When page_address is used to get pointer to memory that corresponds
to some page, the tag of the resulting pointer gets set to 0xff, even
though the allocated memory might have been tagged differently.

For slab pages it's impossible to recover the correct tag to return from
page_address, since the page might contain multiple slab objects tagged
with different values, and we can't know in advance which one of them is
going to get accessed.  For non slab pages however, we can recover the tag
in page_address, since the whole page was marked with the same tag.

This patch adds tagging to non slab memory allocated with pagealloc.  To
set the tag of the pointer returned from page_address, the tag gets stored
to page->flags when the memory gets allocated.

Link: http://lkml.kernel.org/r/d758ddcef46a5abc9970182b9137e2fbee202a2c.1544099024.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-12-28 12:11:44 -08:00
..
common.c kasan, mm, arm64: tag non slab memory allocated via pagealloc 2018-12-28 12:11:44 -08:00
generic_report.c kasan: add bug reporting routines for tag-based mode 2018-12-28 12:11:44 -08:00
generic.c kasan: add CONFIG_KASAN_GENERIC and CONFIG_KASAN_SW_TAGS 2018-12-28 12:11:43 -08:00
init.c kasan: rename kasan_zero_page to kasan_early_shadow_page 2018-12-28 12:11:43 -08:00
kasan.h kasan: add hooks implementation for tag-based mode 2018-12-28 12:11:44 -08:00
Makefile kasan: split out generic_report.c from report.c 2018-12-28 12:11:43 -08:00
quarantine.c mm/kasan/quarantine.c: make quarantine_lock a raw_spinlock_t 2018-10-26 16:38:15 -07:00
report.c kasan: add bug reporting routines for tag-based mode 2018-12-28 12:11:44 -08:00
tags_report.c kasan: add bug reporting routines for tag-based mode 2018-12-28 12:11:44 -08:00
tags.c kasan: add hooks implementation for tag-based mode 2018-12-28 12:11:44 -08:00