From: Marco Elver <elver@google.com>
To: elver@google.com
Cc: akiyks@gmail.com, stern@rowland.harvard.edu, glider@google.com,
parri.andrea@gmail.com, andreyknvl@google.com, luto@kernel.org,
ard.biesheuvel@linaro.org, arnd@arndb.de, boqun.feng@gmail.com,
bp@alien8.de, dja@axtens.net, dlustig@nvidia.com,
dave.hansen@linux.intel.com, dhowells@redhat.com,
dvyukov@google.com, hpa@zytor.com, mingo@redhat.com,
j.alglave@ucl.ac.uk, joel@joelfernandes.org, corbet@lwn.net,
jpoimboe@redhat.com, luc.maranget@inria.fr, mark.rutland@arm.com,
npiggin@gmail.com, paulmck@linux.ibm.com, peterz@infradead.org,
tglx@linutronix.de, will@kernel.org, kasan-dev@googlegroups.com,
linux-arch@vger.kernel.org, linux-doc@vger.kernel.org,
linux-efi@vger.kernel.org, linux-kbuild@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org
Subject: [PATCH 0/8] Add Kernel Concurrency Sanitizer (KCSAN)
Date: Wed, 16 Oct 2019 10:39:51 +0200 [thread overview]
Message-ID: <20191016083959.186860-1-elver@google.com> (raw)
This is the patch-series for the Kernel Concurrency Sanitizer (KCSAN).
KCSAN is a sampling watchpoint-based data-race detector. More details
are included in Documentation/dev-tools/kcsan.rst. This patch-series
only enables KCSAN for x86, but we expect adding support for other
architectures is relatively straightforward (we are aware of
experimental ARM64 and POWER support).
To gather early feedback, we announced KCSAN back in September, and
have integrated the feedback where possible:
http://lkml.kernel.org/r/CANpmjNPJ_bHjfLZCAPV23AXFfiPiyXXqqu72n6TgWzb2Gnu1eA@mail.gmail.com
We want to point out and acknowledge the work surrounding the LKMM,
including several articles that motivate why data-races are dangerous
[1, 2], justifying a data-race detector such as KCSAN.
[1] https://lwn.net/Articles/793253/
[2] https://lwn.net/Articles/799218/
The current list of known upstream fixes for data-races found by KCSAN
can be found here:
https://github.com/google/ktsan/wiki/KCSAN#upstream-fixes-of-data-races-found-by-kcsan
Marco Elver (8):
kcsan: Add Kernel Concurrency Sanitizer infrastructure
objtool, kcsan: Add KCSAN runtime functions to whitelist
build, kcsan: Add KCSAN build exceptions
seqlock, kcsan: Add annotations for KCSAN
seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier
asm-generic, kcsan: Add KCSAN instrumentation for bitops
locking/atomics, kcsan: Add KCSAN instrumentation
x86, kcsan: Enable KCSAN for x86
Documentation/dev-tools/kcsan.rst | 202 ++++++++++
MAINTAINERS | 11 +
Makefile | 3 +-
arch/x86/Kconfig | 1 +
arch/x86/boot/Makefile | 1 +
arch/x86/boot/compressed/Makefile | 1 +
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/include/asm/bitops.h | 2 +-
arch/x86/kernel/Makefile | 6 +
arch/x86/kernel/cpu/Makefile | 3 +
arch/x86/lib/Makefile | 2 +
arch/x86/mm/Makefile | 3 +
arch/x86/purgatory/Makefile | 1 +
arch/x86/realmode/Makefile | 1 +
arch/x86/realmode/rm/Makefile | 1 +
drivers/firmware/efi/libstub/Makefile | 1 +
include/asm-generic/atomic-instrumented.h | 192 ++++++++-
include/asm-generic/bitops-instrumented.h | 18 +
include/linux/compiler-clang.h | 9 +
include/linux/compiler-gcc.h | 7 +
include/linux/compiler.h | 35 +-
include/linux/kcsan-checks.h | 116 ++++++
include/linux/kcsan.h | 85 ++++
include/linux/sched.h | 7 +
include/linux/seqlock.h | 51 ++-
init/init_task.c | 6 +
init/main.c | 2 +
kernel/Makefile | 6 +
kernel/kcsan/Makefile | 14 +
kernel/kcsan/atomic.c | 21 +
kernel/kcsan/core.c | 458 ++++++++++++++++++++++
kernel/kcsan/debugfs.c | 225 +++++++++++
kernel/kcsan/encoding.h | 94 +++++
kernel/kcsan/kcsan.c | 81 ++++
kernel/kcsan/kcsan.h | 140 +++++++
kernel/kcsan/report.c | 307 +++++++++++++++
kernel/kcsan/test.c | 117 ++++++
kernel/sched/Makefile | 6 +
lib/Kconfig.debug | 2 +
lib/Kconfig.kcsan | 88 +++++
lib/Makefile | 3 +
mm/Makefile | 8 +
scripts/Makefile.kcsan | 6 +
scripts/Makefile.lib | 10 +
scripts/atomic/gen-atomic-instrumented.sh | 9 +-
tools/objtool/check.c | 17 +
46 files changed, 2364 insertions(+), 16 deletions(-)
create mode 100644 Documentation/dev-tools/kcsan.rst
create mode 100644 include/linux/kcsan-checks.h
create mode 100644 include/linux/kcsan.h
create mode 100644 kernel/kcsan/Makefile
create mode 100644 kernel/kcsan/atomic.c
create mode 100644 kernel/kcsan/core.c
create mode 100644 kernel/kcsan/debugfs.c
create mode 100644 kernel/kcsan/encoding.h
create mode 100644 kernel/kcsan/kcsan.c
create mode 100644 kernel/kcsan/kcsan.h
create mode 100644 kernel/kcsan/report.c
create mode 100644 kernel/kcsan/test.c
create mode 100644 lib/Kconfig.kcsan
create mode 100644 scripts/Makefile.kcsan
--
2.23.0.700.g56cf767bdb-goog
next reply other threads:[~2019-10-16 8:41 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-16 8:39 Marco Elver [this message]
2019-10-16 8:39 ` [PATCH 0/8] Add Kernel Concurrency Sanitizer (KCSAN) Marco Elver
2019-10-16 8:39 ` [PATCH 1/8] kcsan: Add Kernel Concurrency Sanitizer infrastructure Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 9:42 ` Boqun Feng
2019-10-16 10:06 ` Marco Elver
2019-10-16 10:06 ` Marco Elver
2019-10-16 10:06 ` Marco Elver
2019-10-17 0:25 ` Boqun Feng
2019-10-17 0:25 ` Boqun Feng
2019-10-17 0:25 ` Boqun Feng
2019-10-16 11:49 ` Andrey Konovalov
2019-10-16 11:49 ` Andrey Konovalov
2019-10-16 11:49 ` Andrey Konovalov
2019-10-16 13:52 ` Marco Elver
2019-10-16 13:52 ` Marco Elver
2019-10-16 13:52 ` Marco Elver
2019-10-16 15:16 ` Mark Rutland
2019-10-16 15:53 ` Marco Elver
2019-10-16 15:53 ` Marco Elver
2019-10-16 15:53 ` Marco Elver
2019-10-16 18:43 ` Peter Zijlstra
2019-10-16 19:34 ` Marco Elver
2019-10-16 19:34 ` Marco Elver
2019-10-16 19:34 ` Marco Elver
2019-10-17 7:47 ` Peter Zijlstra
2019-10-17 7:47 ` Peter Zijlstra
2019-10-17 7:49 ` Marco Elver
2019-10-17 7:49 ` Marco Elver
2019-10-17 7:49 ` Marco Elver
2019-10-16 8:39 ` [PATCH 2/8] objtool, kcsan: Add KCSAN runtime functions to whitelist Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 8:39 ` [PATCH 3/8] build, kcsan: Add KCSAN build exceptions Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 8:39 ` [PATCH 4/8] seqlock, kcsan: Add annotations for KCSAN Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 8:39 ` [PATCH 5/8] seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 8:39 ` [PATCH 6/8] asm-generic, kcsan: Add KCSAN instrumentation for bitops Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 8:39 ` [PATCH 7/8] locking/atomics, kcsan: Add KCSAN instrumentation Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 11:18 ` Mark Rutland
2019-10-16 11:47 ` Marco Elver
2019-10-16 11:47 ` Marco Elver
2019-10-16 11:47 ` Marco Elver
2019-10-16 8:39 ` [PATCH 8/8] x86, kcsan: Enable KCSAN for x86 Marco Elver
2019-10-16 8:39 ` Marco Elver
2019-10-16 16:14 ` Dave Hansen
2019-10-16 17:04 ` Marco Elver
2019-10-16 17:04 ` Marco Elver
2019-10-16 17:04 ` Marco Elver
2019-10-17 14:15 ` [PATCH 0/8] Add Kernel Concurrency Sanitizer (KCSAN) Marco Elver
2019-10-17 14:15 ` Marco Elver
2019-10-17 14:15 ` Marco Elver
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=20191016083959.186860-1-elver@google.com \
--to=elver@google.com \
--cc=akiyks@gmail.com \
--cc=andreyknvl@google.com \
--cc=ard.biesheuvel@linaro.org \
--cc=arnd@arndb.de \
--cc=boqun.feng@gmail.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=dhowells@redhat.com \
--cc=dja@axtens.net \
--cc=dlustig@nvidia.com \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=hpa@zytor.com \
--cc=j.alglave@ucl.ac.uk \
--cc=joel@joelfernandes.org \
--cc=jpoimboe@redhat.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luc.maranget@inria.fr \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=npiggin@gmail.com \
--cc=parri.andrea@gmail.com \
--cc=paulmck@linux.ibm.com \
--cc=peterz@infradead.org \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
--cc=x86@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.