Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3802198ybl; Tue, 21 Jan 2020 07:17:54 -0800 (PST) X-Google-Smtp-Source: APXvYqye25/UwWE7bCeDqHgtn3780ypnHGPutH655p3RXhqxzA7x5VkGTOa0YLrkDH09Zc4fgiwy X-Received: by 2002:aca:a849:: with SMTP id r70mr3442921oie.28.1579619874091; Tue, 21 Jan 2020 07:17:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579619874; cv=none; d=google.com; s=arc-20160816; b=k+GCTePEFXmJzfVBxdar8ubf/I+SFvB+pvXPAZCe4MWAqHhWoknCmhoXIJP63Hdj7o 87AhR/fv+RyIhrYbugS4P1L7s0Nd8u0xOU7wKdUQpj6qlKqII9f0MGjWm++4VsUVv1jn vFPnZbBG6NzxbXUZObJCtIqMigCXM0f/cyWeBYiEt+/XRjCvkEU4lPMYVtSyjmqKb9OQ 22vHA0XMgiZUioHa+kZy4g0YKgoUZI15w5laU2nN5puOracc/jcquwAnwdksaQYNnzhS yfj/l+S0SdppBNg36G7t+eQFo5DK8UQUIjI5driwd1p3h5MVLHh/Q4Gy9c4Ffw5dr0wb 3uQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=iCABmZHVYBWeM3x/9LF0rRDKV5M0z2Qq/OvnHxMUOnc=; b=Fc6Cxat5ty9sHR1rsh1toUxTR6eJOC+RjmJKZby6U/AxJnKzuFX9EmsVkpiNBowHZd p4u/yFWr4udbDfW68T3FOlCzuKT75zk3VosElsEmw+LIkTPe7oxg7hmIeilUxDgVcA/L hFnDr/tecjrg6r50t/lTPRUebvGU4I6Ml7UPLo62lKz4Nq+03OQYKT9lM6dt2QVinJzM jX/No9cfAPBoFeCRtsb+7hDkrWv1o7ROP/3FElHlxWTBuhgw6zg2cin6svaMHIeTRmkr n+Fpc3FSYO1AypLYRzQzQtp4PYQCRbf6UAb+w8RKqJEZjkyeRW14mNdB0oPXgzPRnbQ8 GB7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lca.pw header.s=google header.b="A/HGba76"; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c19si24100959oto.129.2020.01.21.07.17.40; Tue, 21 Jan 2020 07:17:54 -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=@lca.pw header.s=google header.b="A/HGba76"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729137AbgAUPPS (ORCPT + 99 others); Tue, 21 Jan 2020 10:15:18 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:40570 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729017AbgAUPPR (ORCPT ); Tue, 21 Jan 2020 10:15:17 -0500 Received: by mail-qt1-f196.google.com with SMTP id v25so2852613qto.7 for ; Tue, 21 Jan 2020 07:15:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lca.pw; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=iCABmZHVYBWeM3x/9LF0rRDKV5M0z2Qq/OvnHxMUOnc=; b=A/HGba76wHkPknW1GKgRIqNBVwG5zyTkQH7PuT7hAi6eTUL7rOTdmDBsXcPF5O/OzP EiPoUNheQgsKjZVBcYicFr0kAXofexSOhcX0Tu/64ZPgy8cDPYo2bZrUH7UWMAB49bMk OA+TLw5gfgIIxRdG92zjXeIyZcYgMmfydJfpnVDQteKU/+G2LaIbila9XEouic0zuaTZ RacfXMp4ahEQWpRgnwlOlnmU/sdbU7LSbz5FY2vSEOPosFf9cAks4YiT08CKQ5E/RFoO IDmhl/zWZFEwt05D4qiQfPaJy7rfoUGhXPcyyLgpifx/bHP8ufd4/5bVNuTxn43KSfTc 6WNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=iCABmZHVYBWeM3x/9LF0rRDKV5M0z2Qq/OvnHxMUOnc=; b=OPYaRM0IHekTxEnZ2xh1faKrFR0vFuTsp3XX9U73dnm6VRx7IZ0WpMmRf4CGTuo5ad GPci+9OjEIlJopl8v9DDXEWH4oZXdGu/Opx0Tz7kd8DO9fiyJNPW1uhXCUvmpP2NFJKd d5h83W8a/nr7jV/QYSi1ZYc5eMFWvZ3FnlBN//ti5lQiWcBSP3ktSDIfiuvjZiN7JNSp kwbJ9yocjYRw4uO44SSqCxA/Vg5a4cagZwPqr6HknfoWijh3Z6+AI97ls+XsuFQsrbs1 HwKb3A+kZUhprN4ATvbpwzfFPB+PoG/BUu5MECTz+T+/Rr/wjB7Na+Ihpy3XwukPYLBb lidw== X-Gm-Message-State: APjAAAU7ZB9ilVaQIDkCHBgpqIZxIOdLdya5PcY6BktBbcLB2XWDwBqr t1jJJLKxF2/dGm9NG0m/eepjUA== X-Received: by 2002:aed:3ea7:: with SMTP id n36mr4962611qtf.258.1579619716573; Tue, 21 Jan 2020 07:15:16 -0800 (PST) Received: from ovpn-123-97.rdu2.redhat.com (pool-71-184-117-43.bstnma.fios.verizon.net. [71.184.117.43]) by smtp.gmail.com with ESMTPSA id x11sm17523438qkf.50.2020.01.21.07.15.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jan 2020 07:15:15 -0800 (PST) From: Qian Cai To: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de Cc: dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, elver@google.com, x86@kernel.org, linux-kernel@vger.kernel.org, Qian Cai Subject: [PATCH -next] x86/mm/pat: silence a data race in cpa_4k_install Date: Tue, 21 Jan 2020 10:15:03 -0500 Message-Id: <20200121151503.2934-1-cai@lca.pw> X-Mailer: git-send-email 2.21.0 (Apple Git-122.2) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Macro Elver mentioned, "Yes. I was finally able to reproduce this data race on linux-next (my system doesn't crash though, maybe not enough cores?). Here is a trace with line numbers: read to 0xffffffffaa59a000 of 8 bytes by interrupt on cpu 7: cpa_inc_4k_install arch/x86/mm/pat/set_memory.c:131 [inline] __change_page_attr+0x10cf/0x1840 arch/x86/mm/pat/set_memory.c:1514 __change_page_attr_set_clr+0xce/0x490 arch/x86/mm/pat/set_memory.c:1636 __set_pages_np+0xc4/0xf0 arch/x86/mm/pat/set_memory.c:2148 __kernel_map_pages+0xb0/0xc8 arch/x86/mm/pat/set_memory.c:2178 kernel_map_pages include/linux/mm.h:2719 [inline] write to 0xffffffffaa59a000 of 8 bytes by task 1 on cpu 6: cpa_inc_4k_install arch/x86/mm/pat/set_memory.c:131 [inline] __change_page_attr+0x10ea/0x1840 arch/x86/mm/pat/set_memory.c:1514 __change_page_attr_set_clr+0xce/0x490 arch/x86/mm/pat/set_memory.c:1636 __set_pages_p+0xc4/0xf0 arch/x86/mm/pat/set_memory.c:2129 __kernel_map_pages+0x2e/0xc8 arch/x86/mm/pat/set_memory.c:2176 kernel_map_pages include/linux/mm.h:2719 [inline] Both accesses are due to the same "cpa_4k_install++" in cpa_inc_4k_install. Now you can see that a data race here could be potentially undesirable: depending on compiler optimizations or how x86 executes a non-LOCK'd increment, you may lose increments, corrupt the counter, etc. Since this counter only seems to be used for printing some stats, this data race itself is unlikely to cause harm to the system though." This will generate a lot of noise on a debug kernel with debug_pagealloc with KCSAN enabled which could render the system unusable. Silence it by using the data_race() macro. Suggested-by: Macro Elver Signed-off-by: Qian Cai --- arch/x86/mm/pat/set_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c index 20823392f4f2..a5c35e57905e 100644 --- a/arch/x86/mm/pat/set_memory.c +++ b/arch/x86/mm/pat/set_memory.c @@ -128,7 +128,7 @@ static inline void cpa_inc_2m_checked(void) static inline void cpa_inc_4k_install(void) { - cpa_4k_install++; + data_race(cpa_4k_install++); } static inline void cpa_inc_lp_sameprot(int level) -- 2.21.0 (Apple Git-122.2)