Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp572658ybk; Fri, 15 May 2020 08:06:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxbmsspBu9q3Cw3UFM5yDhJSNp8KBYKA2t8N8HjBTDuibiZF/cJvGM0+W3gjM6r0/FitGeI X-Received: by 2002:a05:6402:1847:: with SMTP id v7mr3072241edy.255.1589555174009; Fri, 15 May 2020 08:06:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589555173; cv=none; d=google.com; s=arc-20160816; b=dNeuZZYh/8/iaO+tB/Yjqt22isOS85NNpFMMzwlcociTS6DA5Yt5Bf2wDabYzzXtKl 0W0Qz+zzWVwYWI/dd8v8l8oxQeWmbeI+8oSU8FqPfnA2VgYtjLdq7lj7RkWvTDE9Yl0M V1JJ4Hq4NCg6zriGdJfHpay+YcGokVInTYVJvQnYmCe0HkndS1fg46XI+I/0joMWenPc zrLp+E4S4VW1NtPJ+ZxJ5hpA2zcbVOmQ/TNTGQHZmVBXgtk8maGfVYEs5rzDpB7iWUSQ iObSSUdxs6czqH0cmDb9zghOOqHdi77+5gke0NM1S0lHDUSBQANHOKFrH42dmMUSXRqN G48A== 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=2TmNDvsOz0JxdxozHkAyPP+/TkRXJhNAPV4NJ14stug=; b=QvIGijGi4Iysv07ljsnZoXS1wN18l9ZcNeIlqXcyP1fH83590SXALVQvDcFIQpQRBV OBrWrrcbhidhutFYEoAtQfU3xbHwThnDB1cizLmoMy+3wGa7B5aPSNW2axkXCkfWVSve V6Ky+u1JVEn9keZZaVs4L4+85Nh5MJjuUA5tx6MONdgBAPu/SY1WaLGgfL/R7Clzp4CL gxIoHe6FB/GP0pQbqjv7+MWsLFQZsa7NOs4/g341inJaavowP/HXb1++90EWRA5cZgxM HsgwFCsIM62cEzcfWNPvwCroYrWD7FNgxQyPufIYmPnD9AOvQl8VPcwWWmzWX6nt4SGP CviQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=CglnwgQ4; 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 cx8si1232571edb.196.2020.05.15.08.05.49; Fri, 15 May 2020 08:06:13 -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=CglnwgQ4; 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 S1726732AbgEOPD6 (ORCPT + 99 others); Fri, 15 May 2020 11:03:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726720AbgEOPD5 (ORCPT ); Fri, 15 May 2020 11:03:57 -0400 Received: from mail-qk1-x749.google.com (mail-qk1-x749.google.com [IPv6:2607:f8b0:4864:20::749]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16BF9C061A0C for ; Fri, 15 May 2020 08:03:56 -0700 (PDT) Received: by mail-qk1-x749.google.com with SMTP id y64so2478949qkc.19 for ; Fri, 15 May 2020 08:03:56 -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=2TmNDvsOz0JxdxozHkAyPP+/TkRXJhNAPV4NJ14stug=; b=CglnwgQ45owCXDfNuG5fpjwb5+KoGYU6CDA52vUXRG6CkcUgOjJKJVguB97fCv/dsm LED5jdoM7IIGL1wgRFIjDkO2zsjRjeCvo6LH4QSaLqjlrzuCiQcHOuxmQX7tkWRsblyP 0ZTyIIagaoFnUb3j40qvPkp4I3PvwzoKLLZyOzNN62xYP5a+kH2PcURIdJQqcSbTKf6M m9z9+zPbarvCZiUGPodVREh9XUxZVOLm6z8WB4Y7GMfye57lUH8GeAfT60Zvbt1M1tMn rC7dzWe9yVv+vUfEvn5iCR5UK/FTQdrtxm7ifa+ePoNtSFvN7d2VGLkxJD6KTUocOfZ+ 4n8A== 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=2TmNDvsOz0JxdxozHkAyPP+/TkRXJhNAPV4NJ14stug=; b=W/puGN1iBKTjkt6JSno0JHGAS7u1P53SMP3Oewinz8EemXP1u1OOLoR8Ayr6JiyGFw l1Uyptm4bRdMG9S8/j2JFfKSY7f4tsNWu39iVD0Z1uXhA0tNVXJPCOalFXsaC95LRtTh a8Fp1xyyK7HtckXQrdsrMgNn6YlXPFmQlhSH/d09IVUiozLjDgD6/tvcFdiRdZ3CF2x/ th8WVMnUkJj3cZLMFaHXR/it2/jDxRSMn2RB2PND3y44d75qJ94iQwXiPfQ9LfkIMyeb qpLIpQui0n/5OoXpP5igLpTtFPog3Yrksq/Lvck/Oc9I7WT41fFNvE+XL3zohQNqfdDG q4pw== X-Gm-Message-State: AOAM531l1xelPfSmCV0MjElaQonO/w04FdUKCGdxXX07S4c6crmUr4zj bqHLlxUoGmwaobyYfsaPASc6LT2+Bg== X-Received: by 2002:a05:6214:3f0:: with SMTP id cf16mr4050654qvb.4.1589555035266; Fri, 15 May 2020 08:03:55 -0700 (PDT) Date: Fri, 15 May 2020 17:03:32 +0200 In-Reply-To: <20200515150338.190344-1-elver@google.com> Message-Id: <20200515150338.190344-5-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 04/10] kcsan: Pass option tsan-instrument-read-before-write to Clang 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 Clang (unlike GCC) removes reads before writes with matching addresses in the same basic block. This is an optimization for TSAN, since writes will always cause conflict if the preceding read would have. However, for KCSAN we cannot rely on this option, because we apply several special rules to writes, in particular when the KCSAN_ASSUME_PLAIN_WRITES_ATOMIC option is selected. To avoid missing potential data races, pass the -tsan-instrument-read-before-write option to Clang if it is available [1]. [1] https://github.com/llvm/llvm-project/commit/151ed6aa38a3ec6c01973b35f684586b6e1c0f7e Signed-off-by: Marco Elver --- scripts/Makefile.kcsan | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/Makefile.kcsan b/scripts/Makefile.kcsan index c02662b30a7c..ea4a6301633e 100644 --- a/scripts/Makefile.kcsan +++ b/scripts/Makefile.kcsan @@ -13,6 +13,7 @@ endif # if the absence of some options still allows us to use KCSAN in most cases. CFLAGS_KCSAN := -fsanitize=thread \ $(call cc-option,$(call cc-param,tsan-instrument-func-entry-exit=0) -fno-optimize-sibling-calls) \ + $(call cc-option,$(call cc-param,tsan-instrument-read-before-write=1)) \ $(call cc-param,tsan-distinguish-volatile=1) endif # CONFIG_KCSAN -- 2.26.2.761.g0e0b3e54be-goog