[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200515150338.190344-1-elver@google.com>
Date: Fri, 15 May 2020 17:03:28 +0200
From: Marco Elver <elver@...gle.com>
To: elver@...gle.com
Cc: paulmck@...nel.org, dvyukov@...gle.com, glider@...gle.com,
andreyknvl@...gle.com, kasan-dev@...glegroups.com,
linux-kernel@...r.kernel.org, tglx@...utronix.de, mingo@...nel.org,
peterz@...radead.org, will@...nel.org,
clang-built-linux@...glegroups.com
Subject: [PATCH -tip 00/10] Fix KCSAN for new ONCE (require Clang 11)
This patch series is the conclusion to [1], where we determined that due
to various interactions with no_sanitize attributes and the new
{READ,WRITE}_ONCE(), KCSAN will require Clang 11 or later. Other
sanitizers are largely untouched, and only KCSAN now has a hard
dependency on Clang 11. To test, a recent Clang development version will
suffice [2]. While a little inconvenient for now, it is hoped that in
future we may be able to fix GCC and re-enable GCC support.
The patch "kcsan: Restrict supported compilers" contains a detailed list
of requirements that led to this decision.
Most of the patches are related to KCSAN, however, the first patch also
includes an UBSAN related fix and is a dependency for the remaining
ones. The last 2 patches clean up the attributes by moving them to the
right place, and fix KASAN's way of defining __no_kasan_or_inline,
making it consistent with KCSAN.
The series has been tested by running kcsan-test several times and
completed successfully.
[1] https://lkml.kernel.org/r/CANpmjNOGFqhtDa9wWpXs2kztQsSozbwsuMO5BqqW0c0g0zGfSA@mail.gmail.com
[2] https://github.com/llvm/llvm-project
Arnd Bergmann (1):
ubsan, kcsan: don't combine sanitizer with kcov on clang
Marco Elver (9):
kcsan: Avoid inserting __tsan_func_entry/exit if possible
kcsan: Support distinguishing volatile accesses
kcsan: Pass option tsan-instrument-read-before-write to Clang
kcsan: Remove 'noinline' from __no_kcsan_or_inline
kcsan: Restrict supported compilers
kcsan: Update Documentation to change supported compilers
READ_ONCE, WRITE_ONCE: Remove data_race() wrapping
compiler.h: Move function attributes to compiler_types.h
compiler_types.h, kasan: Use __SANITIZE_ADDRESS__ instead of
CONFIG_KASAN to decide inlining
Documentation/dev-tools/kcsan.rst | 9 +------
include/linux/compiler.h | 35 ++-----------------------
include/linux/compiler_types.h | 32 +++++++++++++++++++++++
kernel/kcsan/core.c | 43 +++++++++++++++++++++++++++++++
lib/Kconfig.kcsan | 20 +++++++++++++-
lib/Kconfig.ubsan | 11 ++++++++
scripts/Makefile.kcsan | 15 ++++++++++-
7 files changed, 122 insertions(+), 43 deletions(-)
--
2.26.2.761.g0e0b3e54be-goog
Powered by blists - more mailing lists