Re: RCU vs data_race()

From: Peter Zijlstra
Date: Tue Jul 06 2021 - 06:33:11 EST


On Tue, Jul 06, 2021 at 10:44:46AM +0200, Marco Elver wrote:
> On Tue, 6 Jul 2021 at 10:00, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> [...]
> > In that case, would not an explicit: data_debug(addr) call (implemented
> > by KASAN/KCSAN/whoever), which would report whatever knowledge they have
> > about that address, be even more useful?
>
> KCSAN/KASAN report data-races/memory errors as soon as they encounter
> them, but before they do, cannot give you any more than that (metadata
> if it exists, but not sure it can be interpreted in any useful way
> before an error occurs).
>
> But maybe I misunderstood. Is data_debug() meant to not return
> anything and instead just be a "fake access"?

Mostly just print any meta data that you might have. Like who allocated
it, or which code touched it. I'm thinking KASAN/KCSAN need to keep
track of such stuff for when a violation is detected.

If I understand Paul right; and there's a fair chance I didn't; I tihnk
the issue is that when RCU finds a double call_rcu() (or some other
fail), it has very little clue how we got there, and any addition
information might be useful.