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 EC398C021AA for ; Thu, 20 Feb 2025 00:50:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 84E644401B2; Wed, 19 Feb 2025 19:50:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7FDEE4401AE; Wed, 19 Feb 2025 19:50:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 69EC24401B2; Wed, 19 Feb 2025 19:50:37 -0500 (EST) 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 4ADE74401AE for ; Wed, 19 Feb 2025 19:50:37 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 09C73A1293 for ; Thu, 20 Feb 2025 00:50:37 +0000 (UTC) X-FDA: 83138492514.08.C96CBA8 Received: from mail-ua1-f50.google.com (mail-ua1-f50.google.com [209.85.222.50]) by imf21.hostedemail.com (Postfix) with ESMTP id 2CDDF1C0006 for ; Thu, 20 Feb 2025 00:50:35 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ijAnpsmI; spf=pass (imf21.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.50 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=1740012635; 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=ViaHEAgtY0bIqqAVGwRfr/226V3ljcm3B1tMPGMv7p0=; b=Z63m/R+qQZZMpw+GHe8wdknr0hf9grAe6IyHVxDC4YHchMkBEj+ZLwbGJ8NmOT2w2IxJcZ LLq4AwxyijghjTXkPHb/anvaNDPDD7fFrOgGMbrGdKeSDpNGpCa+Froz2qtfHnBT7ittZ/ Zx6/R5NH9uaPIBpag3p8RjvbHfQ6KhM= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ijAnpsmI; spf=pass (imf21.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.50 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=1740012635; a=rsa-sha256; cv=none; b=ZX9kVaFOB0sLz5FVsWlluJBty86JK292/i3v5SYXXNdGHgCiZUg5zwotbCj+apyOuEGTqZ WXxEpHdC3LX/UQJIVlYKyT6lhEXHy4vgcR55uK3sLsKgBHh0CxOn2xgW1UqEmM8BEySU6Y +/t9Ms1l6eNdzgtQrrlesohdkywgeJQ= Received: by mail-ua1-f50.google.com with SMTP id a1e0cc1a2514c-86715793b1fso89632241.0 for ; Wed, 19 Feb 2025 16:50:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740012634; x=1740617434; 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=ViaHEAgtY0bIqqAVGwRfr/226V3ljcm3B1tMPGMv7p0=; b=ijAnpsmI24gnETDhQByHSzpuOa+VX4sjFj/qyQtkuZcrWrg2fJbBtm7U8arRbohofp rHmvyPwFgRoSaf0pKfuN2JoDEMrkK+QEgslDkFemGF2BqCSeV9hZeNvK53AoCp05HaZq oogDIBvom97YGWQ+EouHRZb/XrpJBiC1WLm+9kxXpv6RQQgHS1sOnRxMErYZnisp5moO t8rf/3BiDsO01Esa0nYfEgsMnPmGUzV6FmdVLf/Cz7cfA3AZoE1CHSh7Vuh9ykLi2Mew YfFJHFRv3Zn/39VFeVKLk/OJ1FeSwFJr26W09xksHJ9M8JGt4y7Tmx+uRC5qxLv5ND4i CNEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740012634; x=1740617434; 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=ViaHEAgtY0bIqqAVGwRfr/226V3ljcm3B1tMPGMv7p0=; b=al34rCbHBAD6jAjcCGgAfEKQJI6gdAesscsk0BLtIOyRbeZGa68tJwbGcTpFkaaV5B rP262Kf+IXYTLW+/6V4TAEmdz7mPhrbVMUqxa8zNyWz/1sU1xf1/ukVPaX2qFKf1D7Hk W7Boftstu14Rb+CalBngm9Nu6l3VR9qNs538Mq9/07ozl+2YcTuXdnrb+roHK9irQNbe DLBCinhjGlyGphWlNmXoAGrN8IbJTa+o9bK2XLgHsF3VT31dzE7OWTXejoJ1ZbIpy1XQ slFalgwbEKzQnpQ5No5cotfExpnAa1/y3oNj3aqP1PMOQsF+R0plhrqoBjA2u9AfqwTT nLBA== X-Gm-Message-State: AOJu0YxdxyaPZarWXKvl53YTco+nDbj/X10HTSKPUpJtvZd9cAFg0Dru UbnCg7TTv+Aj2oH2bdB+vxFjfUdYRWtVFHaToVh2AP3QoSRkGXBZUJmehgQs+vfgzcOEdreprDo qyiZCFb23ai3IP35gIalGtwmnbhr+RHxmYM4= X-Gm-Gg: ASbGncvEVoGFdBtpdaLg4N2/t02fcboNPyAKDRH9XEfv+CPWS9K4xf0qyDbqnJA3V4u aM9LSxMPr8G7iAt/EyeNfkyo1f90A2ixIQeLY1N3eqcpEdAcwgEvzuVJFxO0Be+ghwOFd7V5y X-Google-Smtp-Source: AGHT+IEM1XvrN3z5Q1qS0zcqv45QxoPXV/d5BCJrRf13CQ/gKhU/g7bHaQ+sEqAD7d3qkgaU4dxYyiCvboV8YS9kOTk= X-Received: by 2002:a05:6102:5e81:b0:4bb:edc9:f94b with SMTP id ada2fe7eead31-4bd3fc7a620mr12175703137.5.1740012634268; Wed, 19 Feb 2025 16:50:34 -0800 (PST) MIME-Version: 1.0 References: <20250219112519.92853-1-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Thu, 20 Feb 2025 13:50:23 +1300 X-Gm-Features: AWEUYZmP55ZAL8_aDG4KzX7jajVJSdQhQ0Of-FQ30wRO6SZTV4WNYl3ycgx8GJo Message-ID: Subject: Re: [PATCH RFC] mm: Fix kernel BUG when userfaultfd_move encounters swapcache To: Peter Xu Cc: linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, zhengtangquan@oppo.com, Barry Song , Andrea Arcangeli , Suren Baghdasaryan , Al Viro , Axel Rasmussen , Brian Geffon , Christian Brauner , David Hildenbrand , Hugh Dickins , Jann Horn , Kalesh Singh , "Liam R . Howlett" , Lokesh Gidra , Matthew Wilcox , Michal Hocko , Mike Rapoport , Nicolas Geoffray , Ryan Roberts , Shuah Khan , ZhangPeng Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 2CDDF1C0006 X-Stat-Signature: tcu3q63tuqdm14b65i1h7owhk6m1y9j9 X-HE-Tag: 1740012635-175527 X-HE-Meta: U2FsdGVkX19Enabpc5zpRrx30u+Wm1oghMnUlun4XwptN49YMHSxRK0nkkorpZiGOHF0xEE8A4Ub6JSWwu8bvjt/H1A2DYa/CQL7iw/cj7zaNizpasQYkfr+UVluOo2Re+LIJK7UOWXCf4l5TJsL0IK3OwYLIy6ok3kLIll8i5Hh2hg2zZW/KJCCxCgGJCEFXpQ1LrbMrXiu0KOQEdEjxof/QYAGstVn4cAkWJKtA8RR7BOtwAViKu2BsGdOCQxJweU0kEhEa6A0bw1vXI/VsbfcGYkhOvQRoaPnyWh57tgcwU8XbnmSBcGVdjd1XFTfrEsZcEMrKCAdcTtjGXihZgUedJ6QkeyTc43nNxkN+uXiLp4N+4Cxzvf8SjSWlVMTEBm7NsPCzbPDp+bQ1/AYpEOPnAL0ifH2DeW2T57tWTCSLwdZB4UUJhMblohautUryBIfxQZUOOxDr7LDkH0R/4OvKeQC0YNinoLFPUb186KyxtioF5S7tLs+EpH0/3z3QEmg3au2F/YKsVPP7skslrLW0cGHfESJOALNo15Ieo/laqsLlXQVqBcbwhvR2vsO+IjSdG4LOV6osIaPMc67YHoy3ASJOPJQCKw/irt2xUeha2Te5sSZNiuHkxLyjMlh4g5/y5hbhUt2kKs6qQqScK0Ib4iXL0JRn4YqQxhfqkHTFMRCyVtcH4mo65ITZRAbXuU2dQyx1sBvTs/rDB7rj04aKTJVEnxL7beJQQkg99VSokWKLsS7ixhnY37zxU+a4KNvvmXexW7FWYDqSA9CtMOjH4u9NZWITysXnvWa1gXTeImTzm1NxWHxCo5C9+YlUIXwBxE70g6QQb0ia9V5Ud/0Da/OJaxQ2GX82JnKs6u9B6alHiF7dxRt4jr1V6sYinLAzVHaTaE2VXty4fslLkTtuqqEQUmKjp2n4WF+q8ambiH0pvyBerNq+c+76jEwtk45pjnV/1URPj/PdH+ oa+myxDU pkX5jl5Ouw1fkDYZrFmc03EWVelpsQFYBEok5lAvQWrwWkm2tjh+K6RTUPrCsSug2iLFz/g1K3pWtqq7CiYcmCeLz5hcVeCHUvSxuHzM5WX5tiwIAUwpQ3t1lfZZEZkvx0UdkWSFPjWORWMevwZJETjKAH2N34FGmpa3g5vQ6J8fUtNnVMoC21p3tq5VEXo8i27yDmJK5HSKGIg1qiVrUnwGIGr7EdBXei5ZTlHHdMRjw+l0vH/peoquCBzyYva/fHXFugDYDGnGKjxdaIf6zQN5HAmdRHSg8dRRazkwMRUT8A6IEvSm9aAdGXq9q7YccgH1m0gSJmQi269q9ktDKH+nEXwtTMg2/IHrRPgxpHavF7uEwCFhsNj2DStA3BvGYnMjuFG/vBd6OQBg= 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 Thu, Feb 20, 2025 at 11:31=E2=80=AFAM Peter Xu wrote= : > > On Thu, Feb 20, 2025 at 12:25:19AM +1300, Barry Song wrote: > > @@ -1079,9 +1080,19 @@ static int move_swap_pte(struct mm_struct *mm, > > pmd_t *dst_pmd, pmd_t dst_pmdval, > > spinlock_t *dst_ptl, spinlock_t *src_ptl) > > { > > + struct folio *folio; > > + swp_entry_t entry; > > + > > if (!pte_swp_exclusive(orig_src_pte)) > > return -EBUSY; > > > > + entry =3D pte_to_swp_entry(orig_src_pte); > > + folio =3D filemap_get_folio(swap_address_space(entry), swap_cache= _index(entry)); > > [Besides what's being discussed elsewhere..] > > swap_cache_get_folio() says: > > * Caller must lock the swap device or hold a reference to keep it valid. > > Do we need get_swap_device() too here to avoid swapoff race? > Yep, thanks! Let me fix it in v2. > > + if (!IS_ERR(folio)) { > > + folio_put(folio); > > + return -EBUSY; > > + } > > + > > double_pt_lock(dst_ptl, src_ptl); > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_src= _pte, > > -- > > 2.39.3 (Apple Git-146) > > > > -- > Peter Xu > Thanks Barry