From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_2 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 983E2C3F68F for ; Mon, 10 Feb 2020 20:28:54 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 50AD421569 for ; Mon, 10 Feb 2020 20:28:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=lca.pw header.i=@lca.pw header.b="Pa7Yy+L0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 50AD421569 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lca.pw Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C289D6B0164; Mon, 10 Feb 2020 15:28:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BD8936B0165; Mon, 10 Feb 2020 15:28:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA28D6B0166; Mon, 10 Feb 2020 15:28:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0029.hostedemail.com [216.40.44.29]) by kanga.kvack.org (Postfix) with ESMTP id 8F34B6B0164 for ; Mon, 10 Feb 2020 15:28:53 -0500 (EST) Received: from smtpin23.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 22088248D for ; Mon, 10 Feb 2020 20:28:53 +0000 (UTC) X-FDA: 76475356146.23.error58_4d7bfeb00484f X-HE-Tag: error58_4d7bfeb00484f X-Filterd-Recvd-Size: 4446 Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by imf07.hostedemail.com (Postfix) with ESMTP for ; Mon, 10 Feb 2020 20:28:52 +0000 (UTC) Received: by mail-qv1-f67.google.com with SMTP id z3so3867911qvn.0 for ; Mon, 10 Feb 2020 12:28:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lca.pw; s=google; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version:content-transfer-encoding; bh=cH1NZdrBoIjAY1XAC9d75vxrcvobYxggMgU+/9QfuUs=; b=Pa7Yy+L0thH8M5xaedZm9QMAkv3kj9blTWqJ1OMzSYrYHivdRyjtS89INBNzgRFNN2 Sm/sFzeV13gZnmTl5E4GYJNG6jj+dMo5KlGzMBQZByY7moeZDQbB4pSiBdG7qXYPKqdH X674SLKU3UIPzFy976hLebggwS//zTuOPDf9Ko6HnwwZk7Zw7OiX//I1za5VrF103lRj GqfLzZNvx9mx/m7aqqzoB98UlLrUGn/K7XZSugGhteXh1Rs36e2SrpIturrK5rR9xdpW MKe7q/4m617FydaIEUGemkorv9Pmgqbm70XpsbvGmcLUXTelV9wMO7UZlNIDAsfoSln1 ZV2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version:content-transfer-encoding; bh=cH1NZdrBoIjAY1XAC9d75vxrcvobYxggMgU+/9QfuUs=; b=tqpYpYUdt9wSTbbFEykvNMNANh48kPh3WYJN+/rgCkuMeMWElZMcCQqom6tpHOxbN9 9H7Y2qyF+XorNXAs62y9DxPUO5Gme/pR4GwBPpla/Q+leOsx9JYmM6nqDQbaAseTcylr PoXkix7dsRGGTmoEU//+XhVf0RFyxrwaQwlZWaSRsAAEevhRf5OmDzADdV7p4+fAJBtv Z4bwsLrwes7gRxvo7lNNz9bTEBl5ckmQD+9m4SjNiZ5ytkB82gc9zkrQX84XeMCDTi06 d+xvnjfxSG6n0CQp5X5nhCqF9b5N8qR5TCwAdzp03s42a6hm7I4t9U3+F07JUJHnPj+x 6ldA== X-Gm-Message-State: APjAAAXgC9dwpxxWwSz53AazPa6Qv40kOLTta65IVi/9cnICc6PZHe0Q 3Hs9ZcMpSsox8MwcaKNFutvH7A== X-Google-Smtp-Source: APXvYqywW+k/JZMKyfuID4VcPgq29DGzOE4AGMgy8OusuES1E5cDZl4CuoQgAGe/WJ7DEqTbd3/gVg== X-Received: by 2002:ad4:446b:: with SMTP id s11mr11575471qvt.148.1581366531833; Mon, 10 Feb 2020 12:28:51 -0800 (PST) Received: from dhcp-41-57.bos.redhat.com (nat-pool-bos-t.redhat.com. [66.187.233.206]) by smtp.gmail.com with ESMTPSA id x41sm790275qtj.52.2020.02.10.12.28.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Feb 2020 12:28:51 -0800 (PST) Message-ID: <1581366529.7365.49.camel@lca.pw> Subject: Re: [PATCH -next] mm/filemap: fix a data race in filemap_fault() From: Qian Cai To: Matthew Wilcox Cc: akpm@linux-foundation.org, elver@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Date: Mon, 10 Feb 2020 15:28:49 -0500 In-Reply-To: <20200210192155.GM8731@bombadil.infradead.org> References: <1581354029-20154-1-git-send-email-cai@lca.pw> <20200210172511.GL8731@bombadil.infradead.org> <1581362448.7365.38.camel@lca.pw> <20200210192155.GM8731@bombadil.infradead.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6 (3.22.6-10.el7) Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, 2020-02-10 at 11:21 -0800, Matthew Wilcox wrote: > On Mon, Feb 10, 2020 at 02:20:48PM -0500, Qian Cai wrote: > > On Mon, 2020-02-10 at 09:25 -0800, Matthew Wilcox wrote: > > > On Mon, Feb 10, 2020 at 12:00:29PM -0500, Qian Cai wrote: > > > > @@ -2622,7 +2622,7 @@ void filemap_map_pages(struct vm_fault *vmf= , > > > > if (page->index >=3D max_idx) > > > > goto unlock; > > > > =20 > > > > - if (file->f_ra.mmap_miss > 0) > > > > + if (data_race(file->f_ra.mmap_miss > 0)) > > > > file->f_ra.mmap_miss--; > > >=20 > > > How is this safe? Two threads can each see 1, and then both decrem= ent the > > > in-memory copy, causing it to end up at -1. > >=20 > > Well, I meant to say it is safe from *data* races rather than all oth= er races, > > but it is a good catch for the underflow cases and makes some sense t= o fix them > > together (so we don't need to touch the same lines over and over agai= n). >=20 > My point is that this is a legitimate warning from the sanitiser. > The point of your patches should not be to remove all the warnings! The KCSAN will assume the write is "atomic" if it is aligned and within w= ord- size which is the case for=C2=A0"ra->mmap_miss", so I somehow skip auditi= ng the locking around the concurrent writers, but I got your point. Next time, I= 'll spend a bit more time looking.