Re: [PATCH v3] arm64: Enable KCSAN

From: Kefeng Wang
Date: Fri Dec 10 2021 - 01:58:37 EST



On 2021/12/3 18:41, Mark Rutland wrote:
On Fri, Dec 03, 2021 at 10:29:22AM +0800, Kefeng Wang wrote:
On 2021/12/2 22:44, Mark Rutland wrote:
On Thu, Dec 02, 2021 at 03:36:06PM +0100, Marco Elver wrote:
On Thu, 2 Dec 2021 at 15:23, Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> wrote:
This patch enables KCSAN for arm64, with updates to build rules
to not use KCSAN for several incompatible compilation units.

Resent GCC version(at least GCC10) made outline-atomics as the
s/Resent/Recent/

default option(unlike Clang), which will cause linker errors
for kernel/kcsan/core.o. Disables the out-of-line atomics by
no-outline-atomics to fix the linker errors.

Meanwhile, as Mark said[1], there is a specific issue on arm64
about ARM64_BTI with Clang 11 if KCSAN enabled, which is fixed
by Clang 12, add CLANG_VERSION check. And also some latent issues
are need to be fixed which isn't just a KCSAN problem, we make
the KCSAN depends on EXPERT for now.

Tested selftest and kcsan_test(built with GCC11 and Clang 13),
and all passed.

[1] https://lkml.org/lkml/2021/12/1/354
Please use lore/kernel.org permalinks. For this one it'd be:
https://lkml.kernel.org/r/YadiUPpJ0gADbiHQ@FVFF77S0Q05N

(But I think if this is the final version of the patch, hopefully a
maintainer can amend the commit message.)

Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx>
Acked-by: Marco Elver <elver@xxxxxxxxxx> # kernel/kcsan

is still valid, given nothing changed there. I leave the rest to Mark.
I want to do some compiler / config testing before I ack this (just to
make sure there isn't some latent issue I've forgotten about), but
otherwise I think this should be fine.

I'll try to have that done in the next few days.
I will wait for some time, thanks Marco/Mark.

Hi Mark,  I will send v4 to address the comments in v3, is there new update about this?


Any other review/testing would be appreciated!
As Nathan points, commit 8cdd23c23c3d ("arm64: Restrict ARM64_BTI_KERNEL

to clang 12.0.0 and newer"), so need to add Clang version check, which is v2
does.

is there some other requirement that we need this check, what's your option,
I'm not immediately aware of another reason, so I'm fine with not checking that
for KCSAN -- If I discover another reason I will let you know.

Ok, will drop the Clang version check in v4.

Thanks.


Thanks,
Mark.
.