dfd402a4c4
Kernel Concurrency Sanitizer (KCSAN) is a dynamic data-race detector for kernel space. KCSAN is a sampling watchpoint-based data-race detector. See the included Documentation/dev-tools/kcsan.rst for more details. This patch adds basic infrastructure, but does not yet enable KCSAN for any architecture. Signed-off-by: Marco Elver <elver@google.com> Acked-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
28 lines
890 B
C
28 lines
890 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _KERNEL_KCSAN_ATOMIC_H
|
|
#define _KERNEL_KCSAN_ATOMIC_H
|
|
|
|
#include <linux/jiffies.h>
|
|
|
|
/*
|
|
* Helper that returns true if access to ptr should be considered as an atomic
|
|
* access, even though it is not explicitly atomic.
|
|
*
|
|
* List all volatile globals that have been observed in races, to suppress
|
|
* data race reports between accesses to these variables.
|
|
*
|
|
* For now, we assume that volatile accesses of globals are as strong as atomic
|
|
* accesses (READ_ONCE, WRITE_ONCE cast to volatile). The situation is still not
|
|
* entirely clear, as on some architectures (Alpha) READ_ONCE/WRITE_ONCE do more
|
|
* than cast to volatile. Eventually, we hope to be able to remove this
|
|
* function.
|
|
*/
|
|
static inline bool kcsan_is_atomic(const volatile void *ptr)
|
|
{
|
|
/* only jiffies for now */
|
|
return ptr == &jiffies;
|
|
}
|
|
|
|
#endif /* _KERNEL_KCSAN_ATOMIC_H */
|