Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp2183605ybv; Fri, 14 Feb 2020 13:11:28 -0800 (PST) X-Google-Smtp-Source: APXvYqzr6PbqASUPdChEvZq+Pd+rfxr6UpykhotcAhpgrw/BTUz0eM6EQqJ8P+PHQgamPw35IlJG X-Received: by 2002:a05:6830:22e2:: with SMTP id t2mr3902451otc.129.1581714688360; Fri, 14 Feb 2020 13:11:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581714688; cv=none; d=google.com; s=arc-20160816; b=AUfGKiFwF5F6SPk15XylglgccNR27NA8WqLKeZXIRdaIp26/c/wBv0pgzQ/cv+FIeD dN9OUE2fpxMtd70HhZEjHYBKBaN5TaKPQV17BRdMIDP3b0Eovfm/fC/82PO5zaf2fDRB B7gcCpOdgWNbp8IJsxvxkDekExvovz2b5HMhi+jNuUF8DTlPSsLwsbz7iqwFhUp0aZp/ gXmuX6CNmUDMo9Mj3B90l5ieRndvFe0NG78StcoDESBjq2QT9HyyKXwLcGWNyiaIhn0k cdy6YWJEZ3KOUDJyupj2Ej53MTmth3ZPr3LH1ppJviebyljO8ldqTQTAxGu6YEiI2p2B CQRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=Ufl0bc7Q05nhLG68rp3n5GYIY7pKcd3WxY8W5KB8D0U=; b=aX4Gxrs9rxiaiomOAgphSUcm1A+zmZjDtt4H5m+ZDxz4HIhzQzcIpabAX0c1WYlWi4 p4LNf8fMzl+Oohs3AA+gqPISrVGe9/uJ2EEZ5Y+7aXgYjapUduqbvZMep8HoKcBYUjHT vuvrIYOaQw1+5FCoBKiIVbjwhkjJ8Sb4QH5lkfovsUxqEptRJF8lOdH0CDYG3QOdhM6T DmVloEcXD0BFP8Q8NYJRkOzALGKeUxJbthUjgy74ywFLxXBKizRuXKOdIoJ8Q1HFgAVV YP451TZRadIhOmCfBsNfjlHK8taTJgeGoVLXRYY9cMo7LkxCzY1po4lZPW7zDJyXUKTj pJzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="Ja3/jRqi"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d26si3346975otc.6.2020.02.14.13.11.15; Fri, 14 Feb 2020 13:11:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="Ja3/jRqi"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730359AbgBNVKn (ORCPT + 99 others); Fri, 14 Feb 2020 16:10:43 -0500 Received: from mail-wm1-f74.google.com ([209.85.128.74]:54319 "EHLO mail-wm1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726191AbgBNVKn (ORCPT ); Fri, 14 Feb 2020 16:10:43 -0500 Received: by mail-wm1-f74.google.com with SMTP id u11so4126769wmb.4 for ; Fri, 14 Feb 2020 13:10:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=Ufl0bc7Q05nhLG68rp3n5GYIY7pKcd3WxY8W5KB8D0U=; b=Ja3/jRqi3H8SbY4iZzkqwIaoa89gOiMULArohdIbSDwZQCNiQ5ZsZC5+VWmkL88sdZ PWQwwY42FWNbo68AHnxmzlxYhD/8iR1XgpwHrHTEhJircE764r0Yipvy09RpPVGMJh2B DI8Gbt5OSm6H6Say7XBwPahD4g7KLrCmRvo7t++Wn2PM8oD+W1Gnl6qqSUZuOWhVuV1f HeYesHmDWR2XR+sINWSDYbhpE+PFGllJxwiuAM1fmA9cnt4rM+zK4HvAba4KKUBe3m2I ASKvdWZmItNpmOybiWtaBygVvpSf7ANeIujV8IR840oYxUPPgAeRFQ1pk44EMHMhbG6b 5xRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=Ufl0bc7Q05nhLG68rp3n5GYIY7pKcd3WxY8W5KB8D0U=; b=ICO9PU/5XkMQcRZLc0FB079Rw6RzJXxsrilIOf23K/w34CxVWOZvckezlJU7zn6abq +sG60Ux2mRNGt3kRgZwkTstbaML57CYNRWhW/yV7bXoRSkAWfS9EcS5xxU2MPxdEqZ6e ac/oCfjorzfLF11L+Q1Js7QLTqiKFMJL2b3hsFbi1yQSTkBHj6KrLbz14LN2XXBTUy8A WqAZHSAS0L4DO0ResDkRaWeVW4Y3i0oKGkPIDMaX+penfYzXeL45vfXHK2ZO+wZ8sVmA 3CivSKWBKhGv/19gMzNCpowtvhNY1zjlM9wOnlb8ezq05qzidQMspdUu9WqduOBMOSKT Kqig== X-Gm-Message-State: APjAAAV7ndlZBHRoJZCIu0/14eKP+D34sFhD4boXtSEXaa8t5pE6Oslk 9oPoT0y8R3ENaD+ERy13tVTnAWQY9g== X-Received: by 2002:a5d:5485:: with SMTP id h5mr1534876wrv.346.1581714641597; Fri, 14 Feb 2020 13:10:41 -0800 (PST) Date: Fri, 14 Feb 2020 22:10:35 +0100 Message-Id: <20200214211035.209972-1-elver@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.25.0.265.gbab2e86ba0-goog Subject: [PATCH v2] kcsan, trace: Make KCSAN compatible with tracing From: Marco Elver To: elver@google.com Cc: paulmck@kernel.org, andreyknvl@google.com, glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, rostedt@goodmis.org, mingo@redhat.com, x86@kernel.org, Qian Cai Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Previously the system would lock up if ftrace was enabled together with KCSAN. This is due to recursion on reporting if the tracer code is instrumented with KCSAN. To avoid this for all types of tracing, disable KCSAN instrumentation for all of kernel/trace. Furthermore, since KCSAN relies on udelay() to introduce delay, we have to disable ftrace for udelay() (currently done for x86) in case KCSAN is used together with lockdep and ftrace. The reason is that it may corrupt lockdep IRQ flags tracing state due to a peculiar case of recursion (details in Makefile comment). Signed-off-by: Marco Elver Reported-by: Qian Cai Cc: Paul E. McKenney Cc: Steven Rostedt --- v2: * Fix KCSAN+lockdep+ftrace compatibility. --- arch/x86/lib/Makefile | 5 +++++ kernel/kcsan/Makefile | 2 ++ kernel/trace/Makefile | 3 +++ 3 files changed, 10 insertions(+) diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile index 432a077056775..6110bce7237bd 100644 --- a/arch/x86/lib/Makefile +++ b/arch/x86/lib/Makefile @@ -8,6 +8,11 @@ KCOV_INSTRUMENT_delay.o := n # KCSAN uses udelay for introducing watchpoint delay; avoid recursion. KCSAN_SANITIZE_delay.o := n +ifdef CONFIG_KCSAN +# In case KCSAN+lockdep+ftrace are enabled, disable ftrace for delay.o to avoid +# lockdep -> [other libs] -> KCSAN -> udelay -> ftrace -> lockdep recursion. +CFLAGS_REMOVE_delay.o = $(CC_FLAGS_FTRACE) +endif # Early boot use of cmdline; don't instrument it ifdef CONFIG_AMD_MEM_ENCRYPT diff --git a/kernel/kcsan/Makefile b/kernel/kcsan/Makefile index df6b7799e4927..d4999b38d1be5 100644 --- a/kernel/kcsan/Makefile +++ b/kernel/kcsan/Makefile @@ -4,6 +4,8 @@ KCOV_INSTRUMENT := n UBSAN_SANITIZE := n CFLAGS_REMOVE_core.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_debugfs.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE) CFLAGS_core.o := $(call cc-option,-fno-conserve-stack,) \ $(call cc-option,-fno-stack-protector,) diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile index f9dcd19165fa2..6b601d88bf71e 100644 --- a/kernel/trace/Makefile +++ b/kernel/trace/Makefile @@ -6,6 +6,9 @@ ifdef CONFIG_FUNCTION_TRACER ORIG_CFLAGS := $(KBUILD_CFLAGS) KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS)) +# Avoid recursion due to instrumentation. +KCSAN_SANITIZE := n + ifdef CONFIG_FTRACE_SELFTEST # selftest needs instrumentation CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE) -- 2.25.0.265.gbab2e86ba0-goog