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 1E931C0015E for ; Fri, 28 Jul 2023 09:18:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A37A26B0078; Fri, 28 Jul 2023 05:18:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E5978D0003; Fri, 28 Jul 2023 05:18:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 886D16B007D; Fri, 28 Jul 2023 05:18:37 -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 7858B6B0078 for ; Fri, 28 Jul 2023 05:18:37 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 4260BA0632 for ; Fri, 28 Jul 2023 09:18:37 +0000 (UTC) X-FDA: 81060470274.08.51EAE2E Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf20.hostedemail.com (Postfix) with ESMTP id 57F6B1C0027 for ; Fri, 28 Jul 2023 09:18:35 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=M9AXIZhB; spf=pass (imf20.hostedemail.com: domain of nadav.amit@gmail.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=nadav.amit@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690535915; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=iFOZyw3a4L5HDpaA5qBNM92wxfMAQCZQe31PNW7OG8k=; b=oIdh+Fiddp+dFNmBdQX1L0lxh1UB88O/blf6d692u/83UbuuYNy3V4rGRb9aHPbyj/UV6I VVJ9B/uvf/V6fcg3sQiwm8xfA1yd+cUGA38tzUi4QG7LOhaAz5ZNlBnILmQGJZc62zwSJm fU3zjZy1aITqbAHVMYY3cmWzXBeCy2U= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690535915; a=rsa-sha256; cv=none; b=bakrZInF7c/wJTsyInC981peHzh3A/RSvVf0DyLPuMtENtRd/uY5HPjDRiUtql1h33yguC hiu2exl1QagC/dIeb3RPxVwaBu96hIwVflQ/N/GBFK5LuOiagg4X4r0UWFn8M8zsJ2K5Dw TAV0ONQPv1N72T19gAQa7GR9ECLvOtQ= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=M9AXIZhB; spf=pass (imf20.hostedemail.com: domain of nadav.amit@gmail.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=nadav.amit@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1bbc7b2133fso11936735ad.1 for ; Fri, 28 Jul 2023 02:18:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690535914; x=1691140714; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=iFOZyw3a4L5HDpaA5qBNM92wxfMAQCZQe31PNW7OG8k=; b=M9AXIZhBJnnJFIAmSai/pU6RNLtgItUBNQAsss/sK4l2Qb7wL7SATBVSQ8PXHeyAp6 5s+ZI8PnMXqAhLEaTu/GmO7rvl1BPGD2ndIzGmMfyqYew7ERn4mYFmMlMIaI8ey+/MRE GXh8XHATUadfihQJ2RXHtkZ4o0SXyzJNIq0V5H0AgE1kXziuLTd9C7J7Nl73VZalsYx8 YUHccYOKQEuq49MF55S6Kb892nlc916xQT/Td9hfbPl2Qto0DNz2dlhHB6OzCCzL03Bs CT7OFhuDrIqRWkBDiOq2KfRLJ27yyzSQPn6iBt32ArP327+ByI2lEPUKWmFQIZHeRDmL X3AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690535914; x=1691140714; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iFOZyw3a4L5HDpaA5qBNM92wxfMAQCZQe31PNW7OG8k=; b=UkLjqI0jcDop9cneL/2dYdIG+79ESp4+40zZI3LL0X1OHO2u83hyjMH/OYrVpJ/4kY FYhwhAYDunGW2qzL1Ru0yr1XAw9sQ/0sNfdGfHPGARiDFHcgp7TEWtMlYdDIXTrFORFu vrtrdr/EVmhJ23iwuLBlqCczOJE+CvN+2ENr+Fq3tf23Hy6Bx/y7iOicqzPx6zYavCly 3kbMAayn5DukvDlEHLCIidSXbPMdbrlSyD8XFTXtTPGPqwCQG1gh677pJYMrGD6UcHxP mhfWt1opRo6FLUkHpcVrkTdKStmhNCItOwYzwg2UswB9ypG3uR/W2wADXSlAPQxtF+tk t5rw== X-Gm-Message-State: ABy/qLaz6g+qMcZNt+nVIr22GWaFVczQZ5L4GJYbdWqC585oQVN+t1Xa zXKZfc0T72dTbyEJQxDN4Xk= X-Google-Smtp-Source: APBJJlE5RdvllvafPXrjpTA1Byjxa4qJYRrOHFSP9A+OKUt8z2E88KMZkT7kc+DDs/LkT6Og/TpUEg== X-Received: by 2002:a17:903:495:b0:1b7:f99f:63c9 with SMTP id jj21-20020a170903049500b001b7f99f63c9mr887490plb.67.1690535913905; Fri, 28 Jul 2023 02:18:33 -0700 (PDT) Received: from smtpclient.apple (c-73-162-233-46.hsd1.ca.comcast.net. [73.162.233.46]) by smtp.gmail.com with ESMTPSA id e21-20020a170902d39500b001b864add154sm3088956pld.154.2023.07.28.02.18.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Jul 2023 02:18:33 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.700.6\)) Subject: Re: [PATCH 0/2] fix vma->anon_vma check for per-VMA locking; fix anon_vma memory ordering From: Nadav Amit In-Reply-To: <2229115A-23F2-4B6B-800C-7182199DF79D@gmail.com> Date: Fri, 28 Jul 2023 02:18:20 -0700 Cc: Will Deacon , Jann Horn , "Paul E. McKenney" , Andrew Morton , Peter Zijlstra , Suren Baghdasaryan , Matthew Wilcox , Linux Kernel Mailing List , linux-mm , Alan Stern , Andrea Parri , Boqun Feng , Nicholas Piggin , David Howells , Jade Alglave , Luc Maranget , Akira Yokosawa , Daniel Lustig , Joel Fernandes Content-Transfer-Encoding: quoted-printable Message-Id: <802750CF-1C45-4F10-920A-CE7C55DBF3B2@gmail.com> References: <20230726214103.3261108-1-jannh@google.com> <31df93bd-4862-432c-8135-5595ffd2bd43@paulmck-laptop> <20230727145747.GB19940@willie-the-truck> <8EA729DD-F1CE-4C6F-A074-147A6A1BBCE0@gmail.com> <2229115A-23F2-4B6B-800C-7182199DF79D@gmail.com> To: Linus Torvalds X-Mailer: Apple Mail (2.3731.700.6) X-Rspamd-Queue-Id: 57F6B1C0027 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: qcpeqts66ik9ppht3qtg3qchw1bz4dn3 X-HE-Tag: 1690535915-327300 X-HE-Meta: U2FsdGVkX1/HmzHRK5LdgnNWQJZFkZ+p8M+DxyfAXlxb8yi/BJoDiAfagv8r7l7C4+O7Ua+TBGKTBsyeA/dc5rr5EON7wSkmQ88v/fo2ofYVgqCklMbZsyoovkJJQQC3HgXU42GDzVETNlmsCyggrNHlKuKMhXtp3VejSV9NQUL44yGLl0x4bl0/vwcqgJXNr3MOX7N+mJehKuNoj0LKkcneb1DrGVfrqWynk9SdyU30HmghwkLhQGa5hjR3ijntGLSDpkHJUpfiKrG4nCZaxpq1ICszO91gkfMQBmGVprI6/9tnmcQWE0kphqfLqwoBztnYP5O4+VLbgFYkZugIU1e+mnBEL5gThl/BeLLmu70WhRbpDcmFavo63XZpGRH7d2UnoA7Hzz7jFKZrY5bJXaFYrYdojYfzI/iaYlFS9RPzca7bXxDluilWaZUK4hv1kzkr63US3x1N1pYWCTVShABSVUYGyp2TLjudtVUdgDQmXSiHn3MkQfC4McgZR3kgE1b457v8dxZSt2RoUlKzV0D7XH/Qu1n6xmw1YJ76dl7lRs/xSb22mWVmq8S3GSXLQvC6T/HfvoryPQVLrT2TXlqDUib8CtfpiI59Bjck1q3/tfj77x1O0i8QsaY1MGz3uLOmEGU3OLYrzG8+4yxLYvWwUsPMaq5bSyOmQQDK6iMH2vqfSuGswdKx150n7cnzScn1Gs7frlBgR5YrunERhEeZpF9QugHd1UwEKBxnR+FBxbNXTOqVzBVpAiYpm/KNbFidfJQ+zjpnpLuIv1Xo0i9ws9XKbxcDyK6kQFC/L3E7CwwOXba62syJji332Na40SAD5QcMKEvRhOYwtwuDlJysrnfxWc+RoYneH3K8IdZag+C4CJW8ablGeZBiFkHcd/DXCj3KSO52Qu3N8t5+30QiRbfWgFwvQMd8/yIMfg1VPlezh04ErxvrFkdtTZfgjdfYpMY95kzexCFqGAg jaIGx+Yg MRse2zFh+P1UGMR3yGKPr54iorj/RSHE1BoPeUPmmoUh2vRtnvXJODAhgs7fpEAv27DJOK+kOPPgxOlEiTDwTP2WrXvWZ14ZGaSMtkDv38bn2R81QT7rVXzs2WAN5wi7VysnT9kyjxSRF38+0ndqEy2ZaCm5lIPXeTeDdfyCwdXkiODz1nCnRdN2EmR+tYd9pdvUhcfNlsOGfTcvXF/HqzQe8uF7qd33H7h8VjmDCzs/B7eJTQGiyvZTSeHBn4oFTyp3lfUX+ETxBBOnGVuUfXSoOACjjJr7RgRiB5r+DUVuu0Zxernkk+fJnpBQD49fu9RK3SJchLPslueWXaggL4YDkur60UZKipvyS/PrddHJUqaxC7grjuc7/LGMNguRqJ8kSAmSrvOplC6kDRiyrMZXEkao64h/wpKo16+k0OohCtRgW0oHMfQIDmL+X3DtzGnYqb3VFQiXRXwMfeRg8Ujeti2JlOmb7ieoW8kkcRspY92o8KWp4rP/0yjpJGv+SqTsvRMHvKhHor25dk3JJfn8paq551XZ9vu5I/gF9nFwyDDSiN9E4kM2MPv5+/BQ7r6/AcLHZKdeJ1gjWQXaXWMdT3bMR/fruZ1Xg8o6EqL50S6FgeQdWgAr2AYeAj1vx2WoYZRWOSiiqBcgWocptY24I1C1WmdiWZmPWZp83Ql1uv5GW1WgV4zXZFw== 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 Jul 27, 2023, at 1:11 PM, Nadav Amit wrote: >=20 >=20 >=20 >> On Jul 27, 2023, at 12:39 PM, Linus Torvalds = wrote: >>=20 >> On Thu, 27 Jul 2023 at 12:10, Nadav Amit = wrote: >>>=20 >>> Interesting. I wonder if you considered adding to READ_ONCE() = something >>> like: >>>=20 >>> asm volatile("" : "+g" (x) ); >>>=20 >>> So later loads (such as baz =3D *ptr) would reload the updated = value. >>=20 >> Not necessarily a bad idea. Although I suspect you'd want to add >> *two* of them - on either side - to make sure any previous loads >> wouldn't be moved around it either. >=20 > You are right, two are needed. >=20 > I=E2=80=99ll give it a shot and see if I see changes to the binary. Just for the record (so nobody will make my mistakes): I implemented it, but it works poorly. It appears to communicate the constraints but the generated code is much worse. The problem is that if the GCC inline asm decides to use a memory = operand (e.g. =E2=80=9C+m=E2=80=9D), it computes the address (uses LEA first = before the MOV) and allocates a register for the address. Using =E2=80=9C+g=E2=80=9D also = causes the compiler to allocate a register. -- >8 -- --- include/asm-generic/rwonce.h | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/include/asm-generic/rwonce.h b/include/asm-generic/rwonce.h index 8d0a6280e982..c6a2f8e3013c 100644 --- a/include/asm-generic/rwonce.h +++ b/include/asm-generic/rwonce.h @@ -44,10 +44,34 @@ #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) = *)&(x)) #endif =20 -#define READ_ONCE(x) = \ -({ = \ - compiletime_assert_rwonce_type(x); = \ - __READ_ONCE(x); = \ +#define as_scalar(x) = \ + __builtin_choose_expr(sizeof(x) =3D=3D sizeof(char), = \ + (__force char *)&(x), = \ + __builtin_choose_expr(sizeof(x) =3D=3D sizeof(short), = \ + (__force short *)&(x), = \ + __builtin_choose_expr(sizeof(x) =3D=3D sizeof(int), = \ + (__force int *)&(x), = \ + __builtin_choose_expr(sizeof(x) =3D=3D sizeof(long), = \ + (__force long *)&(x), = \ + __builtin_choose_expr(sizeof(x) =3D=3D sizeof(long long), = \ + (__force long long *)&(x), = \ + (void*)0))))) + +#define READ_ONCE(x) = \ +({ = \ + typeof(x) * px =3D &(x); = \ + union { = \ + typeof(x) __orig; = \ + typeof(*as_scalar(x)) __alias; = \ + } __u; = \ + = \ + compiletime_assert_rwonce_type(x); = \ + asm volatile ("" : = \ + "+g" (*(__force typeof(*as_scalar(x)) *)(px))); = \ + __u.__alias =3D __READ_ONCE(*as_scalar(*px)); = \ + asm volatile ("" : = \ + "+g" (*(__force typeof(*as_scalar(x)) *)(px))); = \ + __u.__orig; = \ }) =20 #define __WRITE_ONCE(x, val) = \ --=20 2.34.1