Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp572404ybk; Fri, 15 May 2020 08:05:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydj60373diB1aPnU8Jfy9+ejEap2YV9QfZemSlul0BqLxPC03fLAn9+/LGZ0uaUGqWRtlW X-Received: by 2002:aa7:c3d3:: with SMTP id l19mr3220880edr.14.1589555153321; Fri, 15 May 2020 08:05:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589555153; cv=none; d=google.com; s=arc-20160816; b=s3DoKYP2GnoFzjf1AGy44x8acaTDG7zAnOV6DFo7ZbKDPKVMQJIYO/BY4QkTdMvFP7 JlQYCo8dNGPSTELvdjfLb6roAHS9Rn/SKQXJ3C3L8mF1HCdFBt3CtMx48kNDF8WjMInz yXHaQNko2hTXKEA7hQNv1xZ6GWgvt5sL/gtImDdAbRfGdEQNCja1lKq6IpmMlHt7HW8+ x1ZNIrWXEa1qnF4WPbXO9GwJS34AZ3pS3zmdZG3PWHxEnmJ4virSabqpcs5yDavVTQHa 75tK6KpmOmyuAOZDUw/INVTIz3n2XAYIp6AIFf0yBCEKUXlgCzLKxkS50TyTGThjmTVM oUgw== 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:references :mime-version:message-id:in-reply-to:date:dkim-signature; bh=COp0SyeTFByf68VoAMfHccz/8jBHCco/jZeKm/gYFRA=; b=gW5CtLEr86eahFrNWgjPRqPW3dHisOL1w6Nnt+D1fSvDVshpkRaSp2qPLsI9x6SSvy EbUW49chsO3ocuGv8+wcqjRoG2WA2CvY+vRsjzv5bN3+uBFWrKv5eNYTVh1jYnN7RMuH P8fj9pn3/t9GWMcFAo38vKAKUzYZukpnexi7WAccZAF/nsORXG+8lxOJ/eUXn48dwVO4 tjdbJpzObhsA4H9wWIDqms5MYHSCa6NrrshjFIUJstgdqI5yVbb0QS4xXqfG65XFlh2q tamUz9i4O5xeBXVWs53zjaPt6D7a24JH4FOYbhcqvXRUsvNSLCq7jXZ97gZQCp3S88s3 O5cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nsQ711Ia; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id yd21si1281960ejb.330.2020.05.15.08.05.29; Fri, 15 May 2020 08:05:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nsQ711Ia; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S1726653AbgEOPDw (ORCPT + 99 others); Fri, 15 May 2020 11:03:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726563AbgEOPDv (ORCPT ); Fri, 15 May 2020 11:03:51 -0400 Received: from mail-qt1-x849.google.com (mail-qt1-x849.google.com [IPv6:2607:f8b0:4864:20::849]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E9C7C061A0C for ; Fri, 15 May 2020 08:03:51 -0700 (PDT) Received: by mail-qt1-x849.google.com with SMTP id h1so2733784qtu.13 for ; Fri, 15 May 2020 08:03:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=COp0SyeTFByf68VoAMfHccz/8jBHCco/jZeKm/gYFRA=; b=nsQ711Ia2jlbtHNCJmse6Fr9iDhQ1jzR6gifpl6SPj7zlIkXjg5ZokHRtBTlLNteyS ogTEDUdKLgbsG0UBr05OFrcOgE11hcyIgXDmt8iW3GhRoctOFonw+5TiSCqMvSrOiviU ZM3gPBFzkD6FX2E0qUwfUkPj7e+4KKRPbB1uuIz16ZszHzeWkCSsqYMXwdgBkp+YPZ/F NtS2gT1xQbNozbdupwdBcZSlYQuP9bJyl1Szu0iaI307UIadVFvd+tX7HyQjZSUeVF+0 YZg4tigw+DGbnOFNMgDCaRi7Nb1VZuFX1SbbhqbIi3dzid5HduSjHHQM43s3q+wx1Ezc 6WcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=COp0SyeTFByf68VoAMfHccz/8jBHCco/jZeKm/gYFRA=; b=oZlp8Erc4wZMqxnhuk8lAWZ3f1MERs6mdP90uEdGfsboHTeyvlBgDeLHzpGu8Nwsqk LVXNT3dl7NljDMUm3jkC+vPWaje5/Sh0UwXPg3BeJjPT9Dz4D9kprBy8m19wmVB0q+WS a6WA0ht1HQ83fl04RqyWAQWDQBFCKGcRK1OXEvp3hRk+9rOOzgKC7lGg1qUP5Ew9G8mQ QVq/yBZJfH9bbKnSQKmn2uczuNSNT0cef7kDxm8Guq9ZKqIiicRzp9l45BC5vdRcI+SZ gXGvcb8akMaU6Yu3aBsg4n1t2he2cVEGbdpZ2MHHFr4HfKypI0DFeU6Qsleq92nX5PxF npWQ== X-Gm-Message-State: AOAM532AVT6ftTlkToD/6/Dgu4uK9WfgkWi7+zHwMMLxqHJJXZOPuA2N j55+r65W/+UlonYaPCKanoW39E7SZg== X-Received: by 2002:a05:6214:3ee:: with SMTP id cf14mr4069665qvb.128.1589555030260; Fri, 15 May 2020 08:03:50 -0700 (PDT) Date: Fri, 15 May 2020 17:03:30 +0200 In-Reply-To: <20200515150338.190344-1-elver@google.com> Message-Id: <20200515150338.190344-3-elver@google.com> Mime-Version: 1.0 References: <20200515150338.190344-1-elver@google.com> X-Mailer: git-send-email 2.26.2.761.g0e0b3e54be-goog Subject: [PATCH -tip 02/10] kcsan: Avoid inserting __tsan_func_entry/exit if possible From: Marco Elver 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 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 To avoid inserting __tsan_func_{entry,exit}, add option if supported by compiler. Currently only Clang can be told to not emit calls to these functions. It is safe to not emit these, since KCSAN does not rely on them. Note that, if we disable __tsan_func_{entry,exit}(), we need to disable tail-call optimization in sanitized compilation units, as otherwise we may skip frames in the stack trace; in particular when the tail called function is one of the KCSAN's runtime functions, and a report is generated, might we miss the function where the actual access occurred. Since __tsan_func_{entry,exit}() insertion effectively disabled tail-call optimization, there should be no observable change. [This was caught and confirmed with kcsan-test & UNWINDER_ORC.] Signed-off-by: Marco Elver --- scripts/Makefile.kcsan | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/Makefile.kcsan b/scripts/Makefile.kcsan index caf1111a28ae..20337a7ecf54 100644 --- a/scripts/Makefile.kcsan +++ b/scripts/Makefile.kcsan @@ -1,6 +1,15 @@ # SPDX-License-Identifier: GPL-2.0 ifdef CONFIG_KCSAN -CFLAGS_KCSAN := -fsanitize=thread +# GCC and Clang accept backend options differently. Do not wrap in cc-option, +# because Clang accepts "--param" even if it is unused. +ifdef CONFIG_CC_IS_CLANG +cc-param = -mllvm -$(1) +else +cc-param = --param -$(1) +endif + +CFLAGS_KCSAN := -fsanitize=thread \ + $(call cc-option,$(call cc-param,tsan-instrument-func-entry-exit=0) -fno-optimize-sibling-calls) endif # CONFIG_KCSAN -- 2.26.2.761.g0e0b3e54be-goog