Skip to content
This repository was archived by the owner on Jun 1, 2022. It is now read-only.
Marco Elver edited this page Feb 19, 2020 · 50 revisions

Kernel Concurrency Sanitizer (KCSAN)

Kernel Concurrency Sanitizer (KCSAN) is a sampling watchpoint-based data race detector for the Linux kernel. More details can be found in Documentation.

There is one main branch related to KCSAN:

  • kcsan: This version is the current development branch, that is also deployed on syzbot (as long as KCSAN is not yet upstream).

The latest stable version of KCSAN can be found in the rcu tree, or also linux-next.

Testing & Fuzzing

Initially (Sep 2019) we have been running KCSAN via Syzkaller for several weeks, and have found numerous bugs (running for just 2 days found over 300 unique data races).

We now have a public Syzkaller instance. Bugs will slowly appear on the dashboard, currently after moderation only, to keep the volume of reported bugs manageable.

Note on Data Races

KCSAN detects data races according to the LKMM. Although some data races are due to logic bugs, or missed synchronization elsewhere, we expect a large number of data races to be due to concurrent plain accesses.

We want to point out that racing accesses that are not considered logic bugs ("benign"), are still data-races while not marked atomic (READ_ONCE, WRITE_ONCE, atomic_t, etc.) and behaviour may still be undefined -- this LWN article provides good background why such data races are problems, with some more info on our wiki page.

Upstream Fixes of Data Races found by KCSAN

This is a list of known upstream fixes due to data races found by KCSAN. Last updated: Feb 11, 2020.

Clone this wiki locally

⌂ 换网址