All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Elver <elver@google.com>
To: elver@google.com
Cc: paulmck@kernel.org, dvyukov@google.com, glider@google.com,
	andreyknvl@google.com, kasan-dev@googlegroups.com,
	linux-kernel@vger.kernel.org, tglx@linutronix.de,
	mingo@kernel.org, peterz@infradead.org, will@kernel.org,
	clang-built-linux@googlegroups.com, bp@alien8.de
Subject: [PATCH -tip v3 00/11] Fix KCSAN for new ONCE (require Clang 11)
Date: Thu, 21 May 2020 16:20:36 +0200	[thread overview]
Message-ID: <20200521142047.169334-1-elver@google.com> (raw)

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

v3:
* data_race() fix for 'const' non-scalar expressions.
* Add a missing commit message.
* Add Will's Acked-by.

v2: https://lkml.kernel.org/r/20200521110854.114437-1-elver@google.com
* Remove unnecessary kcsan_check_atomic in ONCE.
* Simplify __READ_ONCE_SCALAR and remove __WRITE_ONCE_SCALAR. This
  effectively restores Will Deacon's pre-KCSAN version:
  https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/tree/include/linux/compiler.h?h=rwonce/cleanup#n202
* Introduce patch making data_race() a single statement expression in
  response to apparent issues that compilers are having with nested
  statement expressions.

Arnd Bergmann (1):
  ubsan, kcsan: don't combine sanitizer with kcov on clang

Marco Elver (10):
  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() and unnecessary checks
  data_race: Avoid nested statement expression
  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          | 54 ++++---------------------------
 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, 127 insertions(+), 57 deletions(-)

-- 
2.26.2.761.g0e0b3e54be-goog


             reply	other threads:[~2020-05-21 14:22 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-21 14:20 Marco Elver [this message]
2020-05-21 14:20 ` [PATCH -tip v3 01/11] ubsan, kcsan: don't combine sanitizer with kcov on clang Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 02/11] kcsan: Avoid inserting __tsan_func_entry/exit if possible Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 03/11] kcsan: Support distinguishing volatile accesses Marco Elver
2020-05-22 10:26   ` Borislav Petkov
2020-05-22 10:34     ` Marco Elver
2020-05-22 10:47       ` Borislav Petkov
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 04/11] kcsan: Pass option tsan-instrument-read-before-write to Clang Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 05/11] kcsan: Remove 'noinline' from __no_kcsan_or_inline Marco Elver
2020-05-29 17:07   ` Peter Zijlstra
2020-05-29 18:36     ` Marco Elver
2020-05-29 18:59       ` Peter Zijlstra
2020-05-21 14:20 ` [PATCH -tip v3 06/11] kcsan: Restrict supported compilers Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 07/11] kcsan: Update Documentation to change " Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 08/11] READ_ONCE, WRITE_ONCE: Remove data_race() and unnecessary checks Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] compiler.h: Remove data_race() and unnecessary checks from {READ,WRITE}_ONCE() tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 09/11] data_race: Avoid nested statement expression Marco Elver
2020-05-21 20:21   ` Nick Desaulniers
2020-05-26 10:42     ` Arnd Bergmann
2020-05-26 12:02       ` Will Deacon
2020-05-26 12:19         ` Arnd Bergmann
2020-05-26 13:12           ` Marco Elver
2020-05-26 17:33             ` Marco Elver
2020-05-26 19:00               ` Arnd Bergmann
2020-05-26 23:10                 ` Arnd Bergmann
2020-05-27  7:22                   ` Will Deacon
2020-05-27  7:44                     ` Marco Elver
2020-05-27  9:26                       ` Arnd Bergmann
2020-05-28 12:53                         ` Stephen Rothwell
2020-05-26 21:36               ` Peter Zijlstra
2020-05-21 14:20 ` [PATCH -tip v3 10/11] compiler.h: Move function attributes to compiler_types.h Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-21 14:20 ` [PATCH -tip v3 11/11] compiler_types.h, kasan: Use __SANITIZE_ADDRESS__ instead of CONFIG_KASAN to decide inlining Marco Elver
2020-05-22 16:08   ` [tip: locking/kcsan] " tip-bot2 for Marco Elver
2020-05-22 11:35 ` [PATCH -tip v3 00/11] Fix KCSAN for new ONCE (require Clang 11) Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200521142047.169334-1-elver@google.com \
    --to=elver@google.com \
    --cc=andreyknvl@google.com \
    --cc=bp@alien8.de \
    --cc=clang-built-linux@googlegroups.com \
    --cc=dvyukov@google.com \
    --cc=glider@google.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.