From b2f369e56e13dc135d57c53210ea7ab38b239e94 Mon Sep 17 00:00:00 2001 From: Marco Elver Date: Fri, 4 Oct 2019 13:43:02 +0200 Subject: executor, host, csource: Add support to enable KCSAN By default, the current KCSAN .config does not enable KCSAN during boot, since we encounter races during boot which would prevent syzkaller from ever executing. This adds support to detect if KCSAN is available, and enables it on the fuzzer host. --- executor/common.h | 3 +++ executor/common_linux.h | 8 ++++++++ executor/executor_linux.h | 1 + 3 files changed, 12 insertions(+) (limited to 'executor') diff --git a/executor/common.h b/executor/common.h index 1d0616d70..2671db7d7 100644 --- a/executor/common.h +++ b/executor/common.h @@ -704,6 +704,9 @@ int main(void) #if SYZ_FAULT_INJECTION setup_fault(); #endif +#if SYZ_ENABLE_KCSAN + setup_kcsan(); +#endif #if SYZ_HANDLE_SEGV install_segv_handler(); diff --git a/executor/common_linux.h b/executor/common_linux.h index 2d36b998e..13bc71011 100644 --- a/executor/common_linux.h +++ b/executor/common_linux.h @@ -2778,3 +2778,11 @@ static void setup_binfmt_misc() write_file("/proc/sys/fs/binfmt_misc/register", ":syz1:M:1:\x02::./file0:POC"); } #endif + +#if SYZ_EXECUTOR || SYZ_ENABLE_KCSAN +static void setup_kcsan() +{ + if (!write_file("/proc/kcsaninfo", "on")) + fail("failed to enable KCSAN"); +} +#endif diff --git a/executor/executor_linux.h b/executor/executor_linux.h index fdd274162..45a0bf8aa 100644 --- a/executor/executor_linux.h +++ b/executor/executor_linux.h @@ -181,4 +181,5 @@ static feature_t features[] = { {"leak", setup_leak}, {"fault", setup_fault}, {"binfmt_misc", setup_binfmt_misc}, + {"kcsan", setup_kcsan}, }; -- cgit mrf-deployment