linux/mm/kasan
Peter Collingbourne 0c24ee770c BACKPORT: FROMGIT: kasan: disable freed user page poisoning with HW tags
Poisoning freed pages protects against kernel use-after-free. The
likelihood of such a bug involving kernel pages is significantly higher
than that for user pages. At the same time, poisoning freed pages can
impose a significant performance cost, which cannot always be justified
for user pages given the lower probability of finding a bug. Therefore,
disable freed user page poisoning when using HW tags. We identify
"user" pages via the flag set GFP_HIGHUSER_MOVABLE, which indicates
a strong likelihood of not being directly accessible to the kernel.

Signed-off-by: Peter Collingbourne <pcc@google.com>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Link: https://linux-review.googlesource.com/id/I716846e2de8ef179f44e835770df7e6307be96c9
Link: https://lore.kernel.org/r/20210602235230.3928842-5-pcc@google.com
Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit c275c5c6d5
 https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/mte)
[pcc: adjust definition of new GFP flag for compatibility with GFP_CMA]
Change-Id: I716846e2de8ef179f44e835770df7e6307be96c9
Bug: 186816853
2021-06-17 14:39:37 -07:00
..
common.c FROMGIT: kasan: use separate (un)poison implementation for integrated init 2021-06-17 14:39:37 -07:00
generic.c FROMGIT: kasan: init memory in kasan_(un)poison for HW_TAGS 2021-03-24 15:09:16 -07:00
hw_tags.c BACKPORT: FROMGIT: kasan: disable freed user page poisoning with HW tags 2021-06-17 14:39:37 -07:00
init.c UPSTREAM: arm/kasan: fix the array size of kasan_early_shadow_pte[] 2021-03-05 19:32:48 +00:00
kasan.h UPSTREAM: kasan: fix kasan_byte_accessible() to be consistent with actual checks 2021-05-14 19:52:50 +00:00
Makefile UPSTREAM: kasan, arm64: implement HW_TAGS runtime 2021-01-19 21:47:30 -08:00
quarantine.c FROMGIT: kasan: prefix global functions with kasan_ 2021-02-07 13:41:41 -08:00
report_generic.c FROMGIT: mm/kasan: switch from strlcpy to strscpy 2021-03-24 15:09:15 -07:00
report_hw_tags.c FROMGIT: kasan: prefix global functions with kasan_ 2021-02-07 13:41:41 -08:00
report_sw_tags.c FROMGIT: kasan: prefix global functions with kasan_ 2021-02-07 13:41:41 -08:00
report.c FROMGIT: kasan: use dump_stack_lvl(KERN_ERR) to print stacks 2021-05-21 13:17:09 -07:00
shadow.c FROMGIT: kasan: init memory in kasan_(un)poison for HW_TAGS 2021-03-24 15:09:16 -07:00
sw_tags.c UPSTREAM: kasan: fix kasan_byte_accessible() to be consistent with actual checks 2021-05-14 19:52:50 +00:00