Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4224454ybl; Tue, 21 Jan 2020 15:31:51 -0800 (PST) X-Google-Smtp-Source: APXvYqxEOVAv/uWW7dx4r5RQ4EcWMmcElesX+rwtPW80GJ/kvrCDWZiIOHQRRagchulGm92lL/2h X-Received: by 2002:a9d:4f0a:: with SMTP id d10mr5472605otl.85.1579649511782; Tue, 21 Jan 2020 15:31:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579649511; cv=none; d=google.com; s=arc-20160816; b=OkEXlthpsUkNPfPb/fQKiNJOU1cg3uwwAImcl+KSMVkiT3PkupNQ/Fce3gMwt+sjn1 nuOSIpP3C5Os1CDCFTzy/ZX6lu28HEiENkdOFvJ1oWcjt/o8350BPpk8PI6i/6bqEPOG FiXDIYD2e6AibfZqkrnGvfLbx4WfO6adoM45X83R68D+tOFz/OO+ymWbQaI3Ct2MCY5E FBHfLCenyv9e+QoIjBoXYCSPfpoer5Egz0DRFGMAIEj2wryP9ggjnJszAMivBFj6d3nq ZWSza++zfLus3YheoykvUxjxgklgVqst+vJ68ibxDiVtwq7Dfn0sbSEizg0gUxwgLOzI ISPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=LbcDS4EF+x2BxRF6rHqQUdAfV9I8sFLSrevUr/kKoHY=; b=G5ZJy1lvTn+wAFA2niG6lF2CgMCclI6dfC8vSQ0cxYO85F52YgFpptwmQVvVBDhMdb 8UOAyqfLPuw/0YvmnsM6M2iqwWzoTRpEJBuWWH8km9Ocb5Dh48Swrpr2uwIgjtWVkX6+ MhUnQyBtZlwDSWbdzM7M5PuguHaTXgNdtRsQ3P6N3uHHNYRKUyLRLzDze3g3DhJdJ0G8 NXEdkL2W/b2aGPYJcA/HAlstGTUt7Lk1UeCRc0ErRWNHuu57ljuVhJEzM0nU3OBeOjaE 7uDzZ7sXmLjgzqQvKDVFzLEomwwas2CxivdaI7p2oKjk8YjuPEa2kIMPsdwCLTGMmF4z osig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=VezdEsW+; 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 j13si20777046otq.146.2020.01.21.15.31.40; Tue, 21 Jan 2020 15:31:51 -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=VezdEsW+; 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 S1726780AbgAUXaW (ORCPT + 99 others); Tue, 21 Jan 2020 18:30:22 -0500 Received: from mail-ot1-f66.google.com ([209.85.210.66]:45431 "EHLO mail-ot1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725933AbgAUXaV (ORCPT ); Tue, 21 Jan 2020 18:30:21 -0500 Received: by mail-ot1-f66.google.com with SMTP id 59so4593753otp.12 for ; Tue, 21 Jan 2020 15:30:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LbcDS4EF+x2BxRF6rHqQUdAfV9I8sFLSrevUr/kKoHY=; b=VezdEsW+weQJiA5EQJtJ/SZWVJLa/h1gZXv8NILA9vvh4oIQus8WUfKfzbeUTCB/N0 fACCS7IoMBZWx5tjLN5JkuJHuUMyhOn7NEhx7iAJVvXr1bu0WLXdlg3RGNiqDaIBrQ9w pDSUt0vkGOSZ7Jkg7E/ga2pGHVb+tcmnh5TVc50ikmr+dKIGcDZgsSq9BXRIIcXKyOoO iOyc1tzF7S9gRz8Klf8A8YWjb4pcyNvG/tfmXQtOQyhWpPXxm9q1XANiix5yc6wVJZ6S nXyKPykdcyniJliL5z4X4amkm6i82P9HoiR2krL4Lqzq6OOHVMGf3pvvC6zUA7DbgvXt JXtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LbcDS4EF+x2BxRF6rHqQUdAfV9I8sFLSrevUr/kKoHY=; b=idg40J1ex/VYvBGuN8mE3mfHW+Y5DzsmptDVnmXz30FnNeg56svW3Vg70RHexLQC7u 4VAMaSVfb87blFmrbtBugV9AmteUsCjLTDDCsEyr/ZXgMa1tAQIokBrIheFyYYGKdqxq frPw7089new/IvEh4DF8iJrSRYfo8s4NPHqL3edzpu5+xrirDLhRvhqkDVANDjrCCVsL absRu2avNgTiGNnoEGyjs/31H8+vM7sM3plk/eq1rs+BSqYTCkGF2PZUXn9TZqaXq8Zb HQjxNsTFrq86mPkNbYL3KOY6NexjFAuA42e2qH+C7l97NrhgDtTSPozShjX50o4k3XBs SIvA== X-Gm-Message-State: APjAAAUL4yePBQkb+F2ksV/GNjjUKc68xJkwwSJqxA/sVpMR+1fWiMX3 iG00x6SHIfLEo4eu91MdOkRYK61A8GcFLF00eRHAaw== X-Received: by 2002:a05:6830:1d6a:: with SMTP id l10mr5525708oti.233.1579649420757; Tue, 21 Jan 2020 15:30:20 -0800 (PST) MIME-Version: 1.0 References: <20200121151503.2934-1-cai@lca.pw> <20200121152853.GI7808@zn.tnic> <44A4276D-5530-4DAA-8FC7-753D03ADD2F3@lca.pw> <20200121154528.GK7808@zn.tnic> <20200121221814.GQ7808@zn.tnic> In-Reply-To: <20200121221814.GQ7808@zn.tnic> From: Marco Elver Date: Wed, 22 Jan 2020 00:30:09 +0100 Message-ID: Subject: Re: [PATCH -next] x86/mm/pat: silence a data race in cpa_4k_install To: Borislav Petkov Cc: Qian Cai , Thomas Gleixner , Ingo Molnar , Dave Hansen , Andy Lutomirski , Peter Zijlstra , "the arch/x86 maintainers" , LKML 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 On Tue, 21 Jan 2020 at 23:18, Borislav Petkov wrote: > > On Tue, Jan 21, 2020 at 03:21:35PM -0500, Qian Cai wrote: > > Actually "__no_kcsan" does not work because I have > > Why, because KCSAN conflicts with inlining? I'm looking at the comment > over __no_kasan_or_inline. Rather a bug in GCC. AFAIK it is GCC <9 ignoring __attribute__((no_sanitize_*)) for functions that it decides to inline. Somewhere GCC loses the attribute when inlined, resulting in still emitting instrumentation calls. __no_kcsan_or_inline works around it by making such functions noinline. GCC also emits an error if you try to combine __always_inline and __attribute__((no_sanitize_*)). For these reasons we sadly need __no_kcsan_or_inline (similarly we need __no_kasan_or_inline for KASAN for the same reasons). I hope this will look a bit nicer once we move past GCC<9. > > CONFIG_OPTIMIZE_INLINING=y (GCC 8.3.1) here, so it has to be, > > > > diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c > > index 20823392f4f2..fabbf8a33b7f 100644 > > --- a/arch/x86/mm/pat/set_memory.c > > +++ b/arch/x86/mm/pat/set_memory.c > > @@ -126,7 +126,7 @@ static inline void cpa_inc_2m_checked(void) > > cpa_2m_checked++; > > } > > > > -static inline void cpa_inc_4k_install(void) > > +static inline void __no_kcsan_or_inline cpa_inc_4k_install(void) It should be 'static __no_kcsan_or_inline void cpa_inc_4k_install(void)', since __no_kcsan_or_inline provides __always_inline on non-KCSAN builds. Thanks, -- Marco > > { > > cpa_4k_install++; > > } > > > > Are you fine with it or data_race() looks better? > > This one looks marginally better because the annotation is still outside > of the function, so to speak. > > Btw, looking at the other "inc" CPA statistics functions there, does it > mean that for KCSAN they all need to be annotated now too? > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette