Re: KCSAN: data-race in cgroup_rstat_flush_locked / cgroup_rstat_updated

From: Hao Sun
Date: Fri Sep 17 2021 - 21:27:41 EST


Hi Michal,

Michal Koutný <mkoutny@xxxxxxxx> 于2021年9月18日周六 上午12:41写道:
>
> Hello Hao.
>
> On Thu, Sep 16, 2021 at 09:53:55PM +0800, Hao Sun <sunhao.th@xxxxxxxxx> wrote:
> > KCSAN reported the following data race during the kernel booting when
> > using Healer to fuzz the latest Linux kernel.
> > [...]
> > cgroup_rstat_cpu_pop_updated kernel/cgroup/rstat.c:139 [inline]
> > [...]
> > cgroup_rstat_updated+0x53/0x1b0 kernel/cgroup/rstat.c:38
>
> FWIW, it's a "safe" race between updaters and flushers (possibly
> missing the latest update(s)). This is expected as explained in
> cgroup_rstat_updated() comment.
>

Would it be better to add a `data_race` macro to the corresponding
location so that the false report can be disabled?
See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/memory-model/Documentation/access-marking.txt#n58
for more details.
Currently, fuzzer can not test the kernel with KCSAN enabled for a
long time, because cgroups setup is the basic step before executing
any test case.

Regards
Hao