Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp1947518ybh; Fri, 24 Jul 2020 00:01:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKfHLbNxZ60h6K3nulgFsqRWcJhcILfGXlo8VpvtiyUkgkZZqPqTUtI3zW1DFxmJVQGjMh X-Received: by 2002:aa7:d2d2:: with SMTP id k18mr7405921edr.16.1595574078337; Fri, 24 Jul 2020 00:01:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595574078; cv=none; d=google.com; s=arc-20160816; b=XPqljTieNYaHjPmuQ/zQPeTqosUuI1z5YWbKNsYp7pW8CHZsDLvd/9hxB70vuieFxa JZ5JV6DhirGTJKGeU3iMt1z0HrJQFuOQw8kFWP6h77AZfcJEq+qGwOUaalsWJBDN0tSW bQbIwCxb82SE+0oVUs0+Q/6yJjNujFXUE0w6v/QzTNkt4bPQ7h9m/gHykH8yZHrbwReL BJYHnH8Fmsyv4EvwoO/L7di4UJEpsZO7chwH38ZhX45hcNh0WVKtZmBMUrtL5NXuQBBq Qw5fCh0y/fEuPmCriacs2Wz4XDrsy9pKlMmiadrEFPMwEBWIGpqzNBINVTgnrikX8nlo 0IZQ== 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=5cayCuPk2wPjGrqLjRjs0da5Omg5sZGp1EbJR3QFOWA=; b=08GAwRBnmAbyMzfWKvKue25n5vC+1bVTfjxEKqqDhqrGlrG7fQyk4U4nweDJ3/oeH0 YcuPLwksdAmhMvOfIckaSoGawKRULPrNkTQsiEvx3VHrx/PoDVdxY4PQVFaUM6u86oIg Mg4pN8AaXvj/Lhcr8hJf/eWmmDp3R+b2pTamASd3MxzayB6oAIgu6twutmr24D+Jn54a W4YD4gWeZXCLyzkEk947xVMBF5Dd2bzZzujSUo9IM5ZW9AHlGbMHFstnFs9kFktU8xrK hng0HVYdELHva/Apqn+XVDFVA//MSi4GzDRJ6vMoBUCvK+eJzsOfRgtIJWOuqaG8dmQo aQoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=XgaUDS6l; 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 u17si5124edy.254.2020.07.24.00.00.55; Fri, 24 Jul 2020 00:01:18 -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=XgaUDS6l; 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 S1726976AbgGXHAe (ORCPT + 99 others); Fri, 24 Jul 2020 03:00:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726964AbgGXHAc (ORCPT ); Fri, 24 Jul 2020 03:00:32 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 685C8C0619E4 for ; Fri, 24 Jul 2020 00:00:32 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 7so7213723ybl.5 for ; Fri, 24 Jul 2020 00:00:32 -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=5cayCuPk2wPjGrqLjRjs0da5Omg5sZGp1EbJR3QFOWA=; b=XgaUDS6lp9nfPXqDpwi2F+CnJNkzEBfzakfczBxRxMHopo8/GKoQHgb1J4G2BLOPId Tj7TokenLtlE0yd10U3xLpw2pvexm+cQHg8qZDXd1Hds+R8Ya60ZJRzH+X1ph8/9V0NP gWGpMVej7a3D2OA5JAw31HMddDv9tUp2mmDz2ZVfGLMEWvFVPBmAWMbP2ZgSVe7ESAqV W8GVG/bfHd984S3my9TIYv7ONr7HbP4/d7XOruVcCrWouarTuQeqHybf1gWxg8jKLCOd 1XOxupusauqtoiWHSTZ/+XEgsRxcCjs9WGMhPi069xiPfUBLCQtcY6BeixmJGEmKEamC JG7g== 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=5cayCuPk2wPjGrqLjRjs0da5Omg5sZGp1EbJR3QFOWA=; b=ac+l+B0MT4P4zXWw36YBXZiOW2+Kddk1aP9IXgmzGYbeCFJ1xNdMRqgJgpgws2FVpI ViGfEKg+zjee77PhGDZHhEhaoMbXHO5YXOYKQ8LWzsd/y4zt3pUaUuhxunfNb9MrqOle ouO1DG1RYbHedCN1JEZL/NYQbkf8DQeYpz/ADipnLPGbf7/tUeXmqe+9vjGROz4SMYoy nsNFZvYFEbifSN3YMnnN59zNypP/PwXknhixp+dXbxX6u89v1PMOCZn8+AcwVUUvDhPp UYImAqwlFCcQ1x1jiyyR4wnqUB3hnIG/VyZp64Dl+k3E4iRfq4yjY5KV578lmRN6W51x SRrA== X-Gm-Message-State: AOAM531PsPttsvkt3zyMonShnb78HXWic/6B69kHTMNSBQOpCvZpn5mB DE5jbJZLkvcFgzhud0UGdMaD0qaJbg== X-Received: by 2002:a25:b68d:: with SMTP id s13mr13979168ybj.330.1595574031586; Fri, 24 Jul 2020 00:00:31 -0700 (PDT) Date: Fri, 24 Jul 2020 09:00:04 +0200 In-Reply-To: <20200724070008.1389205-1-elver@google.com> Message-Id: <20200724070008.1389205-5-elver@google.com> Mime-Version: 1.0 References: <20200724070008.1389205-1-elver@google.com> X-Mailer: git-send-email 2.28.0.rc0.142.g3c755180ce-goog Subject: [PATCH v2 4/8] kcsan: Add missing CONFIG_KCSAN_IGNORE_ATOMICS checks From: Marco Elver To: elver@google.com, paulmck@kernel.org Cc: will@kernel.org, peterz@infradead.org, arnd@arndb.de, mark.rutland@arm.com, dvyukov@google.com, glider@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org 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 Add missing CONFIG_KCSAN_IGNORE_ATOMICS checks for the builtin atomics instrumentation. Signed-off-by: Marco Elver --- v2: * Add {} for readability. Added to this series, as it would otherwise cause patch conflicts. --- kernel/kcsan/core.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/kernel/kcsan/core.c b/kernel/kcsan/core.c index 4633baebf84e..e43a55643e00 100644 --- a/kernel/kcsan/core.c +++ b/kernel/kcsan/core.c @@ -892,14 +892,19 @@ EXPORT_SYMBOL(__tsan_init); u##bits __tsan_atomic##bits##_load(const u##bits *ptr, int memorder); \ u##bits __tsan_atomic##bits##_load(const u##bits *ptr, int memorder) \ { \ - check_access(ptr, bits / BITS_PER_BYTE, KCSAN_ACCESS_ATOMIC); \ + if (!IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS)) { \ + check_access(ptr, bits / BITS_PER_BYTE, KCSAN_ACCESS_ATOMIC); \ + } \ return __atomic_load_n(ptr, memorder); \ } \ EXPORT_SYMBOL(__tsan_atomic##bits##_load); \ void __tsan_atomic##bits##_store(u##bits *ptr, u##bits v, int memorder); \ void __tsan_atomic##bits##_store(u##bits *ptr, u##bits v, int memorder) \ { \ - check_access(ptr, bits / BITS_PER_BYTE, KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC); \ + if (!IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS)) { \ + check_access(ptr, bits / BITS_PER_BYTE, \ + KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC); \ + } \ __atomic_store_n(ptr, v, memorder); \ } \ EXPORT_SYMBOL(__tsan_atomic##bits##_store) @@ -908,8 +913,11 @@ EXPORT_SYMBOL(__tsan_init); u##bits __tsan_atomic##bits##_##op(u##bits *ptr, u##bits v, int memorder); \ u##bits __tsan_atomic##bits##_##op(u##bits *ptr, u##bits v, int memorder) \ { \ - check_access(ptr, bits / BITS_PER_BYTE, \ - KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC); \ + if (!IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS)) { \ + check_access(ptr, bits / BITS_PER_BYTE, \ + KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | \ + KCSAN_ACCESS_ATOMIC); \ + } \ return __atomic_##op##suffix(ptr, v, memorder); \ } \ EXPORT_SYMBOL(__tsan_atomic##bits##_##op) @@ -937,8 +945,11 @@ EXPORT_SYMBOL(__tsan_init); int __tsan_atomic##bits##_compare_exchange_##strength(u##bits *ptr, u##bits *exp, \ u##bits val, int mo, int fail_mo) \ { \ - check_access(ptr, bits / BITS_PER_BYTE, \ - KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC); \ + if (!IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS)) { \ + check_access(ptr, bits / BITS_PER_BYTE, \ + KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | \ + KCSAN_ACCESS_ATOMIC); \ + } \ return __atomic_compare_exchange_n(ptr, exp, val, weak, mo, fail_mo); \ } \ EXPORT_SYMBOL(__tsan_atomic##bits##_compare_exchange_##strength) @@ -949,8 +960,11 @@ EXPORT_SYMBOL(__tsan_init); u##bits __tsan_atomic##bits##_compare_exchange_val(u##bits *ptr, u##bits exp, u##bits val, \ int mo, int fail_mo) \ { \ - check_access(ptr, bits / BITS_PER_BYTE, \ - KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC); \ + if (!IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS)) { \ + check_access(ptr, bits / BITS_PER_BYTE, \ + KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | \ + KCSAN_ACCESS_ATOMIC); \ + } \ __atomic_compare_exchange_n(ptr, &exp, val, 0, mo, fail_mo); \ return exp; \ } \ -- 2.28.0.rc0.142.g3c755180ce-goog