[PATCH 3/3] arm64: kasan: mte: remove redundant mte_report_once logic

Catalin Marinas catalin.marinas at arm.com
Tue Jul 27 11:54:18 PDT 2021


On Wed, Jul 14, 2021 at 03:38:43PM +0100, Mark Rutland wrote:
> We have special logic to suppress MTE tag check fault reporting, based
> on a global `mte_report_once` and `reported` variables. These can be
> used to suppress calling kasan_report() when taking a tag check fault,
> but do not prevent taking the fault in the first place, nor does they
> affect the way we disable tag checks upon taking a fault.
> 
> The core KASAN code already defaults to reporting a single fault, and
> has a `multi_shot` control to permit reporting multiple faults. The only
> place we transiently alter `mte_report_once` is in lib/test_kasan.c,
> where we also the `multi_shot` state as the same time. Thus
> `mte_report_once` and `reported` are redundant, and can be removed.
> 
> When a tag check fault is taken, tag checking will be disabled by
> `do_tag_recovery` and must be explicitly re-enabled if desired. The test
> code does this by calling kasan_enable_tagging_sync().
> 
> This patch removes the redundant mte_report_once() logic and associated
> variables.

The first "reported" variable was added to avoid calling kasan_report on
each CPU as we are lazily disabling tag checking when faults are
triggered. The subsequent mte_report_once() was added to avoid setting
"reported" during the kasan tests and missing the real faults later on.
I wasn't aware that kasan already has its own logic to prevent multiple
reports.

The kasan tests enable multi-shot first, so KASAN_BIT_REPORTED wouldn't
be set by report_enabled(). I think this patch makes sense.

Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>

(and I can queue them through the arm64 tree if I get the acks from the
kasan maintainers)

-- 
Catalin



More information about the linux-arm-kernel mailing list