On Tue, Jun 20, 2023 at 01:45PM +0200, Andrey Konovalov wrote: > On Tue, Jun 20, 2023 at 1:33 PM Marco Elver <elver@xxxxxxxxxx> wrote: > > > > > On a related note, it looks like we have a typo in KASAN > > > documentation: it states that asymm mode detects reads synchronously, > > > and writes - asynchronously. Should be the reverse. > > > > This says the documentation is correct, and it's actually called for > > writes: https://docs.kernel.org/arm64/memory-tagging-extension.html#tag-check-faults > > > > Who is right? > > Ah, right. I did a quick google to check when I was writing the > response and found this: https://lwn.net/Articles/882963/. But looks > like that cover letter is wrong and the documentation is right. I > wonder what the point of the asymmetric mode is then. Maybe not as strong, but asymm mode makes sense from a microarch point of view, where writes are always committed into a store buffer, but reads can only commit when the data (incl. tag) is available. > So the current code that you have should work perfectly. The only > change I'd like to see is in the documentation. Something like this (or more?) diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst index 7f37a46af574..3c58392d931e 100644 --- a/Documentation/dev-tools/kasan.rst +++ b/Documentation/dev-tools/kasan.rst @@ -135,6 +135,8 @@ disabling KASAN altogether or controlling its features: fault occurs, the information is stored in hardware (in the TFSR_EL1 register for arm64). The kernel periodically checks the hardware and only reports tag faults during these checks. + Note that ``kasan.fault=panic_on_write`` results in panic for all + asynchronously checked accesses. Asymmetric mode: a bad access is detected synchronously on reads and asynchronously on writes.