Re: [PATCH] arm64: kcsan: Fix kcsan test_barrier fail and panic

From: Kefeng Wang
Date: Tue Apr 26 2022 - 11:39:51 EST



On 2022/4/26 20:42, Mark Rutland wrote:
Hi,

On Tue, Apr 26, 2022 at 08:17:00AM +0000, Kefeng Wang wrote:
As "kcsan: Support detecting a subset of missing memory barriers"
introduced KCSAN_STRICT which make kcsan detects more missing memory
barrier, but arm64 don't have KCSAN instrumentation for barriers, so
the new selftest test_barrier() will fail, then panic.

Let's prefix all barriers with __ on arm64, as asm-generic/barriers.h
defined the final instrumented version of these barriers, which will
fix the above issues.

Fixes: dd03762ab608 ("arm64: Enable KCSAN")
Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx>
I don't think the Fixes tag is necessary given this is a new feature
which depends upon EXPERT, and I'm worried it encourages backporting
this into a kernel where it would be broken, so I'd prefer we drop that
tag.

IIUC when we originially looked at this the instrumentation wasn't safe
and would violate noinstr requirements. Looking at linux/kcsan-checks.h,
the comments block for __KCSAN_BARRIER_TO_SIGNAL_FENCE() say that it
will respect __nokcsan, so it looks like that might be safe now.

It looks like that's the case as of commit:
bd3d5bd1a0ad3864 ("kcsan: Support WEAK_MEMORY with Clang where no objtool support exists")

... which requires clang 14.0.0+.

That looks to have gone in concurrently with dd03762ab608, but is
clearly a prerequisite, so as above I'd strongly prefer we drop the
Fixes tag.

Sure, the "kcsan: Support detecting a subset of missing memory barriers"[1] and

dd03762ab608 "arm64: Enable KCSAN" are both merged in v5.17.  I will drop the Fixes tag.

It would be good if we could note that explicitly in the commit message.
I will add some message into v2.

Have you eyeballed the generated assembly to verify that this works as
expected for __no_kcsan ?
Look good,  will recheck it.

Thanks,
Mark.
[1] https://patchwork.kernel.org/project/linux-mm/cover/20211130114433.2580590-1-elver@xxxxxxxxxx/