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 CBC4AC46CD2 for ; Tue, 2 Jan 2024 23:16:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E10B18D002C; Tue, 2 Jan 2024 18:16:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D98678D0006; Tue, 2 Jan 2024 18:16:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C3AFF8D002C; Tue, 2 Jan 2024 18:16:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id AD2838D0006 for ; Tue, 2 Jan 2024 18:16:36 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 772281A0105 for ; Tue, 2 Jan 2024 23:16:36 +0000 (UTC) X-FDA: 81635932392.08.3381719 Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174]) by imf29.hostedemail.com (Postfix) with ESMTP id B77F1120017 for ; Tue, 2 Jan 2024 23:16:34 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=D6WOeAW4; spf=pass (imf29.hostedemail.com: domain of surenb@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704237394; 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=W9VsReBQkICOIEczr/aBz2S0AWm3omPhTa+sgYDFysE=; b=H606QLbLuxjDQGw2Hn7IGa7eum+xVkn7FuiJqPtMQltcuDR6N01SU3yAmeVtr8FOV+Aqbl 3bJbM83HUlmYJdNaMvbRzQOjJl2RQrE/Z9oqErU9mDW19Ix2IapN7KKdY4TMnLq8GFQQ3a GeK5EvLlkQy0Jlss1lvaW83hbkg6UdI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704237394; a=rsa-sha256; cv=none; b=xTxxvanDgsGF5oyNhgruAim+bwjPQGIhhCFW8FPAMj1o2vLVY659QQRdClLZ1ld615Cc5O QByOQVQP1KCME7GoJGYYcNuZzabaX8TEO7caWKGn0jZAmtI3dkkzU2dM1+xAHrH+sTsj2z q8t26HKnxp/0XibLOt0vkWLc+/aE7rg= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=D6WOeAW4; spf=pass (imf29.hostedemail.com: domain of surenb@google.com designates 209.85.128.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-5f2aab1c0c5so11305787b3.0 for ; Tue, 02 Jan 2024 15:16:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704237394; x=1704842194; 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=W9VsReBQkICOIEczr/aBz2S0AWm3omPhTa+sgYDFysE=; b=D6WOeAW445S/M7rWE9yitLRt1xcakElUDU6gYvbTHxTi2ZScYDItfasu640DPOTIYr 5+69CMCCXTjpiexpoATyAhY4OitzNEAlzdSm/uuDqZi0VpxgVaMPBEL2kXNoaBYdIlYN pXxb7/31rCV8bFWd//2xg9itpMJdqiA8f91L3TCirE885blLPxeve+dp+vu0gqM7PPGG BwheCcuiMjxkTP2X3zYyJziTOrX8yiKAMGYDGYqph6iQctkkiVtDJGrua6ip+8pxn+ua LuL1seSzmiz671JQROUuBu4K1qrw2BBfqtPG6Ry4dElnFI6ARgXX6EqRZFF8Zjc3VJM5 WPsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704237394; x=1704842194; 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=W9VsReBQkICOIEczr/aBz2S0AWm3omPhTa+sgYDFysE=; b=j6Bp9ibgebTVrTAnCY0doDTQJOlafBYgooDgXPi2Gq2SrTnvB3FprRBtZZGiH3/Uox h9NMtmXI1IJi5HLqL2X6FH+vtelP82j4UKeADzfsNiTuHdG5z4/I0TkUz8U4ml7DrVLk pS3Lsp8VpFwiu8Uor6hTXxw4IOd55xp2UnNmD2M1DZhLgimreRLHihatqBwTdft+rOb4 1B/UrJ52w+VodTwwZkU9bPhAw0JFX+8XQZNyxfoifACHNCh3asor1k9gx76z3z0B0b8F d53rNaZmQjUhSdRENgNOR+LhPFQq+2aEuI9wDX1hFDTji4Qk4sUkruWDwEHC6c+T9Kah SuKg== X-Gm-Message-State: AOJu0YzWx2QfVgNdhsWgs7vxa62z02uXAxJuaHX+db1dZMBbxbJ+17Rr I9BphS8Gkczou8w/My5JeVdMtGuw6ZjuEm51eskdixiHBa56 X-Google-Smtp-Source: AGHT+IE8Ax7U2bqyqO1lsnqmhbIiZe0ibMeQxiHn/HbCQlPrEjVBV5+vDgfgYKVCj0YEiEECTa6N9nL3Qu/E0E5RKYw= X-Received: by 2002:a81:574d:0:b0:5d3:dacc:63bd with SMTP id l74-20020a81574d000000b005d3dacc63bdmr108135ywb.19.1704237393551; Tue, 02 Jan 2024 15:16:33 -0800 (PST) MIME-Version: 1.0 References: <20231230025607.2476912-1-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Tue, 2 Jan 2024 15:16:20 -0800 Message-ID: Subject: Re: [PATCH 1/1] userfaultfd: fix move_pages_pte() splitting folio under RCU read lock To: Peter Xu Cc: akpm@linux-foundation.org, viro@zeniv.linux.org.uk, brauner@kernel.org, shuah@kernel.org, aarcange@redhat.com, lokeshgidra@google.com, david@redhat.com, ryan.roberts@arm.com, hughd@google.com, mhocko@suse.com, axelrasmussen@google.com, rppt@kernel.org, willy@infradead.org, Liam.Howlett@oracle.com, jannh@google.com, zhangpeng362@huawei.com, bgeffon@google.com, kaleshsingh@google.com, ngeoffray@google.com, jdduke@google.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B77F1120017 X-Rspam-User: X-Stat-Signature: j9tbausgpirea1qd3daoxpy5thwniqqf X-Rspamd-Server: rspam03 X-HE-Tag: 1704237394-958807 X-HE-Meta: U2FsdGVkX19lmHpYww9ooCFoHnDF1BYBlak8u5s6MYkKni/V58jFTOkyh4MRngOcadDVKOU2c2togpYYmWmb9MeGrHQKJG5PXZF4z0YGQpbIPY6AnmhKZiaPUIugR561PyTXLaZsBoDmxQE7NplSDr/jxhKLviYKjKDBFGKn3H/AfQprZG9/I5f1wDAZz/9qQ8D7+5hMMJ+6G1ZZtqNrUuUlogz/Ee2fSfE09J5DicjTu8QxeG4S3cmQ8gbv2IoVQR7hb+Y2g/ugUcTRjzgwdeCd2g+71PgPUqcsEr0XXRESmEC5PzffCAn8Hj7cXlcDHPZDvmdmTE1Yh+zfrEXp0Dj4OKtPOReaBZImKQN9tFNi/R3emFBM9fGxD4Tu0oqv0zQcnXBvN6ltt3p2sKiCrstomAXZ9yoE7qEb2IkxrU4jmYnT+ILpv3P6ITZH7M45zxFM9aIW3JFT6F2xqRs9SjU6oAJCxHkQjtJ9NsGGeqgzinvgzknQMARUPW9jdhxGyDv8oDlVGaYQXsEcvrZUIw9ryZ732uix4Q4R7MvOksH9uVvA1RmDOFX8m826Ryq7kofVOBdYX7YPcV6l8FmlKUiG8ISnNnPWtugBIyxEogkWnjr+PHI8nO7lQmPn9sxzqwfKITnMipEPubX8mXxoS5w4NfQwD78cOFLihOU0PxE67aTQUIybWu7ur6vv7sKMCCY8NVxlZADNhETp3hsau/GMk6v4eCRwHQ3vTzEyLHcw982LUohViN7hbYkLWXGomz03g3XK9D4CYRfzkUQ9OEQfj632/OLq2Zqb1kyIbtrRG0kmTgXGOMdpMPsHUKloTruG0trZ5BdwTNKANR/wT6yV6a4kuOOUO4Vs+L5OaqjbOiob1EVUA9h7fONOkqFJDWi61qb8qgKKD7uQFRJSceXFITx3THMSRb4VqBypFyvd1FLnPW4VvE300WewtMuT4sv7MzcI/HImcOtwt3g 6Rt9mu2n xw+j05WsYIzDmV0HDClXU6T7RGN3qu6s6ElZzGaycN+qXhJXUnMZyH24otPGidq56GPGI4Tbe0FAf1zGlZnv6sLgBJZFDdk62cDhd+tYZcj0QRKj9JiWnor0cpxWT6CuIjph2CwHBONUY9FBCZdhLNC/pvqeBV6OdLWdUphy8Ni0JOqptin93XXZvQfaibJ+KyZwf2Fvc3XD4CQPM4LSTdgG8Q0mf/5wZMupwDFiDmlcKjKG0UN2n5Azix2tib1h2sgIo138uTB7trfNTsh37H3T9rmmJwCES9MxZ6I2SD+PPno6mGyE23rp5W8CnaZcreVga 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 Tue, Jan 2, 2024 at 8:58=E2=80=AFAM Suren Baghdasaryan wrote: > > On Tue, Jan 2, 2024 at 1:00=E2=80=AFAM Peter Xu wrote= : > > > > On Fri, Dec 29, 2023 at 06:56:07PM -0800, Suren Baghdasaryan wrote: > > > @@ -1078,9 +1078,14 @@ static int move_pages_pte(struct mm_struct *mm= , pmd_t *dst_pmd, pmd_t *src_pmd, > > > > > > /* at this point we have src_folio locked */ > > > if (folio_test_large(src_folio)) { > > > + /* split_folio() can block */ > > > + pte_unmap(&orig_src_pte); > > > + pte_unmap(&orig_dst_pte); > > > + src_pte =3D dst_pte =3D NULL; > > > err =3D split_folio(src_folio); > > > if (err) > > > goto out; > > > + goto retry; > > > } > > > > Do we also need to clear src_folio and src_folio_pte? If the folio is = a > > thp, I think it means it's pte mapped here. Then after the split we may > > want to fetch the small folio after the split, not the head one? > > I think we need to re-fetch the src_folio only if the src_addr falls > into a non-head page. Looking at the __split_huge_page(), the head > page is skipped in the last loop, so I think it should stay valid. > That said, maybe it's just an implementation detail of the > __split_huge_page() and I should not rely on that and refetch anyway? I'll post a v2 with this fix and re-fetching the folio unconditionally. We also don't need to reset src_folio_pte value because it's used only if src_folio is not NULL. Thanks for catching this, Peter! > > > > > -- > > Peter Xu > >