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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EF8EC0015E for ; Thu, 27 Jul 2023 18:03:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 27D6A6B0072; Thu, 27 Jul 2023 14:03:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 22CB16B0074; Thu, 27 Jul 2023 14:03:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F57E6B0075; Thu, 27 Jul 2023 14:03:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 0111D6B0072 for ; Thu, 27 Jul 2023 14:03:04 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C1C5D4064C for ; Thu, 27 Jul 2023 18:03:04 +0000 (UTC) X-FDA: 81058163088.10.7AC0E45 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by imf30.hostedemail.com (Postfix) with ESMTP id B0D11800EE for ; Thu, 27 Jul 2023 18:02:02 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b=AiHZUvdQ; dmarc=pass (policy=none) header.from=linuxfoundation.org; spf=pass (imf30.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.167.54 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690480926; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vgVYZd/78+/O2NatRupV28b+UFJ4EhyFHfWo2O8AZQc=; b=G6Ge0OqxWoS/TexCidr3mo2mjBVZjkC2b0Chy6ljQbnui8Ulul0aoztLKVjRdFOhu/NGLp bcCOLAPga6Z9o0aQobv41bFlVXI6dnE+2rVVQjgQ0ArZVtRnrZZHbJp1VH7296ok5OaFaL lb/3eUJdrr12rRDFJqYZsOHZuI2zOsA= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b=AiHZUvdQ; dmarc=pass (policy=none) header.from=linuxfoundation.org; spf=pass (imf30.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.167.54 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690480926; a=rsa-sha256; cv=none; b=1X0HZlEWosvWMvhWSdcJJ1udxJCLTb0//V9Exp1pBPfQ9F4BcS09fb81brIK6ztsJTpfo6 L7UiVGZ+TwPQB3vB3+LdxQC+uuVxR/H1JfF7Bw/yj3FUhe5/4Kfz/l1ux84al2gNfw8DoL yNCGDaREx4yfJxspUD1XPtpapWD3FAs= Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-4fe0fe622c3so2189686e87.2 for ; Thu, 27 Jul 2023 11:02:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1690480920; x=1691085720; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vgVYZd/78+/O2NatRupV28b+UFJ4EhyFHfWo2O8AZQc=; b=AiHZUvdQOk7zj2MbzvI2KgnOAoDIKWU0v+zB+/kEfK5poap/MC+gn9t9YS54WtEEF6 /LyvLhAhfgBC4w90Lwp4Jz91oWQxQAA0xeCpU/OK/r59KDNYSdj948gXXpdUOEFaD9tx cHFPGaZVSDyxlAWOXFvP+kn4b4C4Htle066RM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690480920; x=1691085720; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vgVYZd/78+/O2NatRupV28b+UFJ4EhyFHfWo2O8AZQc=; b=V88yQlDl+ytRtwSYybQl6cuHrzlcOv6aC2FK5SjLkAvM6EtVkRGoWztMKYkCXznlkO T7HEYqYCRtYazXpWd0UlHBvFVzkDRY+BXqmig3IXA+iUiOpSB8YlnRpGvDDi/Spa0Q5m npAQpdCEwXgSgQ9yNKyDonqtgwOw22upphvebbOPJYCaMrfFZ0QVaLuwHKffQNvFY2// UeLxu0WwaVCkmWC2yaGxOGo7jrnVBH80+RTTOxIMijia5h7xMXCE4d/6FzGnf6YFGVtI paaii0aWIp3IVO3ZGOc4r7MGL9zwyA0oboKjfJwWKCdgBVUG49Z78vyn2bTLJGT0aJ1S +gog== X-Gm-Message-State: ABy/qLaVdzBKbRWxPA2UfeoRpAvkZarmKwrAlMOfz0Q6CEuLsQAy4CP8 3BqyO+r2t3H4AY9LhFWarI21KvgNq2VMU8Y17CMen4+O X-Google-Smtp-Source: APBJJlFpbj6vE2qWJ72tZEm6d0xUEcC400ynR1VEodmbAtF8llIv/KNCJvWRhPQj0v+y4SdQ40Z4SQ== X-Received: by 2002:a05:6512:b0e:b0:4fe:d0f:1f1b with SMTP id w14-20020a0565120b0e00b004fe0d0f1f1bmr2439345lfu.65.1690480920203; Thu, 27 Jul 2023 11:02:00 -0700 (PDT) Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com. [209.85.167.48]) by smtp.gmail.com with ESMTPSA id q13-20020ac2514d000000b004fdfefdf4adsm414976lfd.214.2023.07.27.11.01.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 27 Jul 2023 11:01:57 -0700 (PDT) Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-4fcd615d7d6so2192037e87.3 for ; Thu, 27 Jul 2023 11:01:56 -0700 (PDT) X-Received: by 2002:ac2:4f15:0:b0:4fe:181f:2736 with SMTP id k21-20020ac24f15000000b004fe181f2736mr2122365lfr.33.1690480916074; Thu, 27 Jul 2023 11:01:56 -0700 (PDT) MIME-Version: 1.0 References: <20230726214103.3261108-1-jannh@google.com> <31df93bd-4862-432c-8135-5595ffd2bd43@paulmck-laptop> <20230727145747.GB19940@willie-the-truck> <13dc448b-712e-41ce-b74b-b95a55f3e740@rowland.harvard.edu> In-Reply-To: From: Linus Torvalds Date: Thu, 27 Jul 2023 11:01:39 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 0/2] fix vma->anon_vma check for per-VMA locking; fix anon_vma memory ordering To: Alan Stern Cc: Will Deacon , Jann Horn , paulmck@kernel.org, Andrew Morton , Peter Zijlstra , Suren Baghdasaryan , Matthew Wilcox , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrea Parri , Boqun Feng , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , Akira Yokosawa , Daniel Lustig , Joel Fernandes Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B0D11800EE X-Stat-Signature: r3uf4jbsickmkxckirstn7jrk15wzq4c X-HE-Tag: 1690480922-534780 X-HE-Meta: U2FsdGVkX1+lSZKELIL/Xyy80/3hSUJfSNU2E20d9OcgSTSmPOU0CmfwUYravDcr0MQun6uQVi7I7a90kTwkmOcZV0E49iAkI8u25eVFfwcUqIqtoN2CTdw3M0RuXmAAqFqmki8lC3JYknhXJGpDq8QSMzvk14BO+KeG0ie66NH+7yu27PypG+nZt7AgvQr9ciGh6kieOfussXaA4x7Vdp7gFJbPJDRJvW5Q/W5nERCvadynI5dpeFkTe2ld91DOZWf1eiDRaYiK2bFIbxcUvB1uZJw+5lCnT8bxE5mmHh7LXxeZcePWL0i32ZDuNuDGcpjhSfb1yD35Jo12cF9/ndDgalPGgQLb3Dzemozhr2E8VQomH9F+eFrRj5znWOdb5RyEnd0IDrogDlw9XlOmzvUXZJWcXvDFwDpGeQLNa0U0yYmXoFAlGSqu3pusoC92Qi7EtV7R1GTlddkpKR+YxwNT9iI7BIqTjKuPMmOuoaIwUc01lQcl6RQ6gT4uXbpLvMXjUR+dFvhfRWydcBuQrUrL2BLeVWq7mHYAfFtC/UXXhjIioFbNDtotIBiLnrIKgorMpivD+eL6+VIiAdMWRZAbyhjmhpsKaCdsdILew2eTsnQYB69AGmW1ypa+tJBK/GCDO5UhK7z2l/UzwKBarfYKDzNmgo8l7iVj2h8J0ZhUHj9jdaR3SCBnp0l0sNWu1KUm/WNW3Hp3TGH4NROfmglaCuCS8dvv0e/mFsggSsBPpmjNBKR8Le4POOODAYN3Cso7kh3VokZEAY0MfcSxfq2gVkSVm03fDm1aXZJa84ko7Ux/foe5H5G7O7KHq7c3BlWRW2Vv+dN4PRABpKdXrFbq7PIF4z6yiOQ0r1O7NDz4ITn3vebBhYCDZEkxNRJt28VYa3JB29ULmwoAsIKaJyPQMsDwEWXFUMjI3OOSFk6zT317OZ+yvcfu3J8oV37X+NWOiybUhdNN2eged8M fNhDWLM8 ZE77v3rXkDfkbsGeTzLWValkx1OHztRUzTpyCfe0ek0epKK4pqZhtkS24sYSkLY284fhZ7I3xweO8p7vadrX91WIWNdjz43r+AoF3DpfyQEJz9n3IVWzh4A8Xzx3MHPFe0sJVt1cFILesHS8i8j4Cch67IzSyiGQUEc57xjj3XqFdoXtevlPfNriQdBNQIzxi/rX6BvzMYb1YrP49KsCPjgD5pJgLocDlb6PkRyL/X9vmSl5aQO5tZkqtJD/Zgp7Lt755KXBZDItMq6mNZuO0mm2eTlMD8QrQSll8LecZqkOh9t/EZAuOT44fycDRNXZO7orI9wEkhgP3kc+9bEAf6jnzefY31Ki4hRXiXPkpj/fkfpk5J9kah/81WmPsY5EaF7URW6fB7K6H9OVR/G1rIDqs78nYpexHSNChIPYm4FPrPxAVTBflUo1QMen4pR57SX27 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, 27 Jul 2023 at 10:41, Alan Stern wrote: > > But in the presence of data races (as in the example that Will posted > earlier), all bets are off. So if you want to use a plain access rather > than READ_ONCE, you need to be certain that it won't race with anything. So in this case, the initial NULL check really is just checking for "has the smp_store_release() happened". The reason even tearing wouldn't matter is that seeing *any* value other than all-zeroes (aka NULL) is already sufficient information. Because once the smp_store_release() has been seen by this CPU, the data race no longer exists, and the value is stable. Which is why I argue that even without READ_ONCE() the code would *work* due to all the circumstances around it (one of them is that we just took a lock, after doing an optimistic check that really has no semantic effect at all except for the "don't even take the lock if it looks like things are going to fail"). But if we want to have the code be obvious, and not have to refer to those kinds of arguments, I think smp_load_acquire() is the only actual "obvious" thing to use. At that point it's no longer some chain of "because of X, Y and Z". Linus