[PATCH kcsan 0/32] KCSAN commits for v5.7

From: Paul E. McKenney
Date: Mon Mar 09 2020 - 15:04:03 EST


Hello!

The patches in this series have already been posted, so this posting
is just to give a heads up as to which of them are likely to be part
of next week's KCSAN pull request. Unless otherwise noted, these are
courtesy of Marco Elver.

1. kcsan: Prefer __always_inline for fast-path.
2. kcsan: Show full access type in report.
3. kcsan: Rate-limit reporting per data races.
4. kcsan: Make KCSAN compatible with lockdep.
5. kcsan: Address missing case with KCSAN_REPORT_VALUE_CHANGE_ONLY.
6. include/linux: Add instrumented.h infrastructure.
7. asm-generic, atomic-instrumented: Use generic instrumented.h.
8. asm-generic, kcsan: Add KCSAN instrumentation for bitops.
9. iov_iter: Use generic instrumented.h.
10. copy_to_user, copy_from_user: Use generic instrumented.h.
11. kcsan: Add docbook header for data_race(), courtesy of yours truly.
12. kcsan: Add option to assume plain aligned writes up to word size
are atomic.
13. kcsan: Clarify Kconfig option.
14. kcsan: Cleanup of main KCSAN Kconfig option.
15. kcsan: Fix 0-sized checks.
16. kcsan: Introduce KCSAN_ACCESS_ASSERT access type.
17. kcsan: Introduce ASSERT_EXCLUSIVE_* macros.
18. kcsan: Add test to generate conflicts via debugfs.
19. kcsan: Expose core configuration parameters as module params.
20. kcsan: Fix misreporting if concurrent races on same address.
21. kcsan: Move interfaces that affects checks to kcsan-checks.h.
22. compiler.h, seqlock.h: Remove unnecessary kcsan.h includes.
23. kcsan: Introduce kcsan_value_change type.
24. kcsan: Add kcsan_set_access_mask() support.
25. kcsan: Introduce ASSERT_EXCLUSIVE_BITS(var, mask).
26. kcsan, trace: Make KCSAN compatible with tracing.
27. kcsan: Add option to allow watcher interruptions.
28. kcsan: Add option for verbose reporting.
29. kcsan: Add current->state to implicitly atomic.
30. kcsan: Fix a typo in a comment, courtesy of Qiujun Huang.
31. kcsan: Update Documentation/dev-tools/kcsan.rst.
32. kcsan: Update API documentation in kcsan-checks.h.

Thanx, Paul

------------------------------------------------------------------------

Documentation/dev-tools/kcsan.rst | 227 ++++++----
arch/x86/lib/Makefile | 5
include/asm-generic/atomic-instrumented.h | 395 ++++++++----------
include/asm-generic/bitops/instrumented-atomic.h | 14
include/asm-generic/bitops/instrumented-lock.h | 10
include/asm-generic/bitops/instrumented-non-atomic.h | 16
include/linux/compiler.h | 16
include/linux/instrumented.h | 109 +++++
include/linux/kcsan-checks.h | 284 ++++++++++---
include/linux/kcsan.h | 46 --
include/linux/seqlock.h | 2
include/linux/uaccess.h | 14
init/init_task.c | 1
kernel/kcsan/Makefile | 2
kernel/kcsan/atomic.h | 23 -
kernel/kcsan/core.c | 279 ++++++++----
kernel/kcsan/debugfs.c | 94 +++-
kernel/kcsan/encoding.h | 14
kernel/kcsan/kcsan.h | 36 +
kernel/kcsan/report.c | 414 ++++++++++++++++---
kernel/kcsan/test.c | 10
kernel/locking/Makefile | 3
kernel/trace/Makefile | 3
lib/Kconfig.kcsan | 114 ++++-
lib/iov_iter.c | 7
lib/usercopy.c | 7
scripts/atomic/gen-atomic-instrumented.sh | 19
27 files changed, 1517 insertions(+), 647 deletions(-)