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 104DFC7115B for ; Mon, 23 Jun 2025 22:38:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E8B76B00BF; Mon, 23 Jun 2025 18:38:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BFD86B00C1; Mon, 23 Jun 2025 18:38:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7D6526B00C3; Mon, 23 Jun 2025 18:38: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 6A1196B00BF for ; Mon, 23 Jun 2025 18:38:37 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id E5BCFBE7DC for ; Mon, 23 Jun 2025 22:38:36 +0000 (UTC) X-FDA: 83588131032.08.21466C4 Received: from mail-vk1-f181.google.com (mail-vk1-f181.google.com [209.85.221.181]) by imf15.hostedemail.com (Postfix) with ESMTP id 1585BA0002 for ; Mon, 23 Jun 2025 22:38:34 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="a8DS/YTk"; spf=pass (imf15.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.181 as permitted sender) smtp.mailfrom=21cnbao@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=1750718315; 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=zUmFnzXDP7js2cQnz6D7zC1wOg+JQ8RtXl7WzvdrZQY=; b=05xnonVZxcjI+kSo3d2s82e8CC37yAZw8K0aJKh26bP0z0gyOf+vclrDFCEwcECPhqwTnG 7cq04+c3nT1X3oLXJia5USi78TFd5wQVGC20BeFS6FcgD9trUBETLKAmSFaA4415dJzlFP U7USeY+XhS3ItpzwAFtNexnm0O51XJU= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="a8DS/YTk"; spf=pass (imf15.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.181 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750718315; a=rsa-sha256; cv=none; b=j7ydTx57cmfc/+EgaJTLkOcuv/bW80ehHwxU6Q1Bv8+FLF2PHP3OhPrEhjppC7lrXgIaXq JScIScvA1c8Fhe322hJNxA3BQDS07WAUjwBGSbD8jxQADEDz+pxeTMPZEJ8lSlxepvDrgl T/8iMipHO00P68azw4sqIMnTutMBJSM= Received: by mail-vk1-f181.google.com with SMTP id 71dfb90a1353d-5315ebfda19so1615033e0c.1 for ; Mon, 23 Jun 2025 15:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750718314; x=1751323114; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=zUmFnzXDP7js2cQnz6D7zC1wOg+JQ8RtXl7WzvdrZQY=; b=a8DS/YTkAXJ2lOq9cxEnK1g+y960WoG6533F9zgHi9wsJniebw/9WNt8icWMndFJp6 H+qw7nbVIAYs7dMjKfV0sRAUCTkxjdldxt/Gceyx/q5E9Afe9bqnnVxdf1RqM6WUD2vp ZipI+uAuBFqqXlXMdIlqbM6CSF02Z0mHmDLBMcx6aUeHYnHvDO4EGN4Xsq9D8BkU5FRI oibGAFD8cJ8rNoLC3gIj6t3lCu12GbUQjew4+/boX5DA7GYevNF3MQo7dKZXXcscBvGD nqeNgFoQlreXhfL3ssYfWTK483ZTWQJdNbYAtmG6BWcfotHMZiYv66mmLddPll+F1cOX hcSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750718314; x=1751323114; h=content-transfer-encoding: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=zUmFnzXDP7js2cQnz6D7zC1wOg+JQ8RtXl7WzvdrZQY=; b=rR6qJ2eMBkK+q+mbqr9II48NV01Wj4FJvlZox0UZjdFDP3j5XCsJ4S6cGcEOHL3eXD zKllXx4JgXuLlaBta0hFijNMq4VExUk06v7zkOvMt/37qO10vvLzHlnYt4+7rsetyp0l gT5cjm3YyXdATYhkKIot8nzb1EbaNW3fUV10GmdnE0B2sZGXJ3N3kTap2qDYS4Q9p4FK KQ46qo5mGGNh+Dw40WirLYJY9Mz4cztYeh2enHyYLTpnIk5ABzM8cWr2f4TiFeTJWs8Q 4LBi2sO+61YGay8EriDv9GzqM1vsBvZgggH5LiTdE1U6THc9ysMqmNvdFFdXEPqxHD/n fxzQ== X-Forwarded-Encrypted: i=1; AJvYcCVs/ggBWq/LhU6RGgkXk3x6fRbX7HiVeRgdsXIpKwICeaLD6rRiBGvYppAirlKEMVu/mAEvUiHp4A==@kvack.org X-Gm-Message-State: AOJu0YynuO1w/lB1HG+RFtIQhOILu/WKob9OPc6Ii6afMcMds0CDPw2O xsAZwLlvvu8euxlnA6FGN+EACFyWr0sonUOjgKWNkVS/Llii8xrPzodbvyACLmuEzv7KK51/cv0 0W7gwP3eKcGv/fg+s8oDUDJsZ5amtBjA= X-Gm-Gg: ASbGncsGok2CB3kV47BDNOMmeFj3oruSCXit6k0BmEFI7tygIqN1B5LCo8ubSIz04/w 7X7qihCkIMp7HvGMAUnVJAHUO9uu5wCuZ3UpiNKfJD1kaaynr5YxVa+wZV/uXXafZfacxCxGa5K hHahxADW5FGrR2ZGd/J0LZuAyNe7eoVuHP2/cYIY3fy9Esa1jCzsvD+g== X-Google-Smtp-Source: AGHT+IHvPO2odYXDcbGrmRrQwsjTPNW6KL0+Qay7/c/xzd5IHUaT+vnq0rnt8TtuEhBzEVEr6U166TfzKZkREWU0h6k= X-Received: by 2002:a05:6122:45a6:b0:531:394a:23f3 with SMTP id 71dfb90a1353d-531ad66f620mr7672624e0c.10.1750718313979; Mon, 23 Jun 2025 15:38:33 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 24 Jun 2025 10:38:22 +1200 X-Gm-Features: Ac12FXzdIftskFtIPtygI2TAglAR91VaK4vKBaOEPPzQ58F9Qihrk9zEDPb5w_g Message-ID: Subject: Re: [PATCH v2 1/5] mm/madvise: remove the visitor pattern and thread anon_vma state To: Lorenzo Stoakes Cc: Andrew Morton , David Hildenbrand , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Vlastimil Babka , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Lance Yang , SeongJae Park , Suren Baghdasaryan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1585BA0002 X-Stat-Signature: 7qjgfcoz3z75xihx457iz56ytpimd56u X-HE-Tag: 1750718314-490496 X-HE-Meta: U2FsdGVkX19D/LDCl9Lm48SPUQMS8DxN2wGSsN1H5eRJ+l+cBrOFfN2gHbboHNWxZ7InIHrQy/xXUNGHmxIH5C9E/KvBUo37JfIS5tyA5Nxefe2JAHrSQQO+WsN0Gn+9B9J1iErPALrGlwTvmtLSfOxB4yVLDkJtQVHgHZoZ+sP+T7NZadrT2UhzU9NLpmZTan/1eDVEEu/V4qhpLWa94IxKSogY6Nw0Yw9dmX8RRpeODLert8uXQawe6/MJYPD4vK5KUULBAt9ZL+cFUyduzVNIknTf9qJvggqy1npMt87zO4h7J1q5CutsUCco62JVuzJ5Vgy+8THDS/6S/BOeqxA/8Sz7qKxKLGrgTAZubdqRLULL7Pw34gPDVW8E2Bv/nSIh4dAGMMXHhKvVk6mqiElaJL35OVAlnqrNJc7pALpkDcJE55iTkp24usN8cWeCwYNJn2ZvsfIl21oy7ZThliYkpuzF6Y3QyNhCUCU/93jnbBPCCB0MXJyS+e13r4mErRFBJLFd20sQ7vfAOqN/Hzvm7JwCrs+/epIDHh06nO1TfqB65mg1QQ4z+XfZIFVAeRPH6j3hpwQvv/uRI5JLlFJDFt104xytlyVHQklQaRBTm+9+hMXAQySZYYVBPyn6eDPa2BQvh31TSZtIdvdhW1JOwX5kDc5PLmO3YYmtDpxPzPOUxMKGImIxcQER/+YQrQCjY+Nsa+UO30gzWIu2h4yBU+z8RrPe5fQPebdpHOSSVRLu8xtr2M8prh8/etRKgYqHOPd07/yjxyQV6hgwX6kUQL6kIA1dfER+lKk8QBUXpqdAY9WJeKYS/MEnt7W8WVQJv4ycsyEwgUsOvyzw+9Axxb0ss1doCcGmT7tc/+BzrT0AH2z7kFy/EeQCWNcugxQmeyceSsMj3KRquojKWdWGOiLYK/y/vsE/2QmP6APWSf/dDSkLeCD5UO5b1B1OXUd9LQOFm+mAQEleV0s oewKaOGr eyOHH1IqEh2qoyqccdyQJWDH+PrV2uJucwXx0rEXC6BEnBkE+VVc53FcymBzEvDktbIUihNfYMulKbbkeCW3hPQ4oIcOaRyRsTTmEc5ihfJDNPbuBGwhygjm3oK1ctqN/rIEUuv4iOk/LtTkrKCUgn1CvZn8OAvkizLiwm0q/niVk3Al3xhblX1vTtjc+bOX/qfWWLbJtj7m/zZM4S6HcDxWC8gU7TjKntKGikLj/gRcvEQ0TxzLLiO3/zcbc+KhR0TXHTzQYPGt7aqxjUIu6G3CHJYOmZOWuXlVik0bnyWP4ZZpAi9LMGEbNYQeKIXUJBMV7eZGPnuJIvSWi2GFCYptAi2LI675LJPGo66Uq527AUi1B6bZ75N3nDZb18OK/NmVt1qT7Gr9K41+IsF59/TSUTGu+oyCzlkJn 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: List-Subscribe: List-Unsubscribe: On Sat, Jun 21, 2025 at 3:33=E2=80=AFAM Lorenzo Stoakes wrote: > > Now we have the madvise_behavior helper struct we no longer need to mess > around with void* pointers in order to propagate anon_vma_name, and this > means we can get rid of the confusing and inconsistent visitor pattern > implementation in madvise_vma_anon_name(). > > This means we now have a single state object that threads through most of > madvise()'s logic and a single code path which executes the majority of > madvise() behaviour (we maintain separate logic for failure injection and > memory population for the time being). > > We are able to remove the visitor pattern by handling the anon_vma_name > setting logic via an internal madvise flag - __MADV_SET_ANON_VMA_NAME. Th= is > uses a negative value so it isn't reasonable that we will ever add this a= s > a UAPI flag. > > Additionally, the madvise_behavior_valid() check ensures that > user-specified behaviours are strictly only those we permit which, of > course, this flag will be excluded from. > > We are able to propagate the anon_vma_name object through use of the > madvise_behavior helper struct. > > Doing this results in a can_modify_vma_madv() check for anonymous VMA nam= e > changes, however this will cause no issues as this operation is not > prohibited. > > We can also then reuse more code and drop the redundant > madvise_vma_anon_name() function altogether. > > Additionally separate out behaviours that update VMAs from those that do > not. > > Signed-off-by: Lorenzo Stoakes LGTM, Reviewed-by: Barry Song > > /* We cannot provide prev in this lock mode. */ > - VM_WARN_ON_ONCE(arg->lock_mode =3D=3D MADVISE_VMA_READ_LOCK); > - anon_name =3D anon_vma_name(vma); > - anon_vma_name_get(anon_name); > + VM_WARN_ON_ONCE(madv_behavior->lock_mode =3D=3D MADVISE_MMAP_WRIT= E_LOCK); > + > + /* I=E2=80=99m wondering whether it would be more accurate to: VM_WARN_ON_ONCE(madv_behavior->lock_mode !=3D MADVISE_WRITE_LOCK); Thanks Barry