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 5219BC021AA for ; Wed, 19 Feb 2025 21:05:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF1F128026F; Wed, 19 Feb 2025 16:05:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BA13C28026E; Wed, 19 Feb 2025 16:05:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A694128026F; Wed, 19 Feb 2025 16:05:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 893E028026E for ; Wed, 19 Feb 2025 16:05:44 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 1ABDB46666 for ; Wed, 19 Feb 2025 21:05:44 +0000 (UTC) X-FDA: 83137925808.03.11D4BC8 Received: from mail-vk1-f182.google.com (mail-vk1-f182.google.com [209.85.221.182]) by imf03.hostedemail.com (Postfix) with ESMTP id 081AB20010 for ; Wed, 19 Feb 2025 21:05:41 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KcRJLx+p; spf=pass (imf03.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.182 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=1739999142; 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=ozKX8EB595dKWkVx/ZkqcwD0irC5HmAJEn7UpeXQpdo=; b=ao+bByA6XAtOW/xo0OT3R2fSNbMKRzsuTtxawwXYi5a3ZxvxaohFf7Xr4X5fE2b58ZV6ru eTFIaon1RSl7h+vb6ZuKANwCP8ffVd3wQEfIWX96U8DJsK0AY05Q0Uo0SJP5sM7+xhEuSW bCbv7FuqdSA6CxW/qEwF4fevsFymADk= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KcRJLx+p; spf=pass (imf03.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.182 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=1739999142; a=rsa-sha256; cv=none; b=tJwny8t71PSzVRDQH5/NaRKD/VcLNvh80lNMcFK14PhZG0wory2LF4UYfED77Tb6GkqJWe ECX0WuTdhddH12cQ/M7UnJy2iKrPJs8lxCiGN/BrjjiBxIrpLSTBhr1oHbMx69gTs/vaV0 JQIPLkAt+DDZV6Lsz8dfxCnbDHligsA= Received: by mail-vk1-f182.google.com with SMTP id 71dfb90a1353d-52099627b5aso175482e0c.1 for ; Wed, 19 Feb 2025 13:05:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739999141; x=1740603941; 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=ozKX8EB595dKWkVx/ZkqcwD0irC5HmAJEn7UpeXQpdo=; b=KcRJLx+pmo4+X2+3DIrMmoWK0bbApMhw+2lHVe0yaQ+/4czVm2ObsPDBSx0Y8yvTcF E2IKc4T1rZySOTmQ28Ql/zGT+ozyBs9CW77WXNg0z/qCJl7tVg+sqwGtF/WCkjlrTK6A ECs8BiJ0yv/msrfrB1Ain+YLjGuewfrMy/MwmeNFWfZ5nomen0Oy1IWWX/qApFaTxwYN 74j/ZnJtfutBCHY1T1aL5ORc8YBGodPYWAO5WDLkXpV5P1YI6OI0wwKwEEL5CK2pmRO2 jhbiSQiPV8Ho2CK0qy5hMhzMoStcbQ7P5GVIWSJAPY1SnfOWtd56WciFFYe8xegpcYyH /hbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739999141; x=1740603941; 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=ozKX8EB595dKWkVx/ZkqcwD0irC5HmAJEn7UpeXQpdo=; b=I45H4v0vEmTB/W4/XmyfTRWUpeFTLHZGynp45YXiVYc1DSXoDTG8HpkwZ1b+W4XjJ9 Gzco6pXLHfW07kUUVClDVpeTEqXrOkVQiF/LJFkuwnBx38B2Irlq/cpxgqrRUEf54SL/ PTat1klp171UmOFuOFw41PIlTHKz+2y6I2wDgafWd7uYSqVdWoNyXK4hiPR3VdDcAOKh Q/RLjgc7FKETTBgnuFdI9sHShypT2IsflwbUV8k3wqfFe7gDjn+Bmsl/eHdDcXk+XAeq 0oFosc3iaS9qne7xZNvzBIO64oT6G0tU/j00EvAeBF0BxDRXLBIg7SOkGBbH5muA7fVs +mqg== X-Forwarded-Encrypted: i=1; AJvYcCU0SAizMHROP//5d3Eh7TIcL+TUQVrLqNybI+0z9dI5G8W7tJ8A5UfXBS0u8rbT4zZ2qe0ujvUh/Q==@kvack.org X-Gm-Message-State: AOJu0YwzF2yTMgXVMoiOeLTbw5o+cTqkfP3splB0sFntFGjCyPPalV2N 9UN+3Y4dJIJFunaM0Ozv0km1yc4yra19oC34nNyuwoPhPiQ0WcUltdIQzZS3sZEBeczTn4XoWhk 3ZZ4WyeMrDKrqd1SsyE2bkQaIGGg= X-Gm-Gg: ASbGnctQQhzh0TFeTqw1I4sGBT+iFFWuleO2pE1HGG1GsmrII0V38+hF773BxKSPm5g FTqtQ0K2JrVSTRIYq7ZKfHCWM/+hjijeyEUqu3uVEl2P7eJotL3ZGDdCRN4hp+kt1aPWi89bN X-Google-Smtp-Source: AGHT+IGCD214O1Z2CAttBkQ7cpwBR6P2ls1wpoMRnm+e71A2GGx/72YrPtTouPG1GusemkVSbUBoq1j5AJR73SKr2iU= X-Received: by 2002:a05:6122:4694:b0:518:8753:34b0 with SMTP id 71dfb90a1353d-521dcdc478fmr451305e0c.4.1739999141143; Wed, 19 Feb 2025 13:05:41 -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 10:05:29 +1300 X-Gm-Features: AWEUYZlvbRw9NuFg1mjfhj_LuhQYh60Hg4fzYAQ4DfjWzpY3Gb3EqUjybcro_fs Message-ID: Subject: Re: [PATCH RFC] mm: Fix kernel BUG when userfaultfd_move encounters swapcache To: Matthew Wilcox Cc: Suren Baghdasaryan , Lokesh Gidra , linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, zhengtangquan@oppo.com, Barry Song , Andrea Arcangeli , Al Viro , Axel Rasmussen , Brian Geffon , Christian Brauner , David Hildenbrand , Hugh Dickins , Jann Horn , Kalesh Singh , "Liam R . Howlett" , Michal Hocko , Mike Rapoport , Nicolas Geoffray , Peter Xu , Ryan Roberts , Shuah Khan , ZhangPeng , Yu Zhao Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 081AB20010 X-Stat-Signature: hom5fid11jccs6t9h3nuo3eqeueu6uis X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1739999141-280133 X-HE-Meta: U2FsdGVkX1+8T7bMq6GHyhiusrLf6gbfF2l+8cqTrq77FINdSjLMjgboyIWrohNv9oBJ0o81M7L2aoHgJbtRKNhGT18XpPx/j/wQAFesCTwJAR4ZybgcOQDPXlq5gNlJmcDAAz22CbpZk+A0vucWUKi93v+kA5sal67CIRCr0a4JvA6AwuOaje1UXF/TyASUvi5ofAUboUwp2x2zwMdhX94GOTR1V1MlyNrYyaiUKk8BtfME9TyBVEphtUNbV6iu9j4JQ8lde6NtZVN6CSLpxqXglj1JzAuW4sZnO+e7Ut7nqUl0T5uB9+60DerWifmwLBhWlfxFc4LD2AM6nIvwPHoON4o3FiNzXCHoZPfS3BvWM0q+sTXjXm6V7H5obuz8XVLC5jcdU1vdaU4gUe2zU2s3hquOcAR/AQUJMmfIx2xCd91oFOzwIZ6PWeDMXOEu5bwrvpiV+wrlK6neBRXhhcyTsuU6ywTrVnV342l4YqVa/NZE342KYF+bhrC+ZlazSy/y/5YWu/FDgvqiesklBwflidZQ0qHAYdArO+sajFNMuJKSGEox6pj8FD3wh20zwjXKehIyfJlguLAu+526qDdVrBjwJDu0fz3aPXXrho70G9QMC7vBSJDfCaC+wJMrKS+24evGos0BKHyegJgW+0hevE7fGGVPpo8fK0qBK2P/l/aMirWWiL0PXnfvMfzjHWT0sqX6JYc1pUEVe1DicsDv/PXPXcBlDKovdH+pMouLFrAoJzuKEVMJ9BCME9iNPSPzI5AKm0bnbIal65aq9SufbmsKBc5NpPGzsbtdhnrRVsH5LaiIa6KdKivl4HNsqyRJZTjMtZ9t9IRvtZ+4BDxO3vfivjlkhCfevOoPP1Ot/cOsmbsXkkGolEzhWobyQrEWRieK0mJ89NifMCSuEsDWXaxrHetlJRdHAoCkN42fYHWWKTRVJTzw+ZrY5fqs4S/yezqeb6vTNpvIHTh 85Oy+puQ 8428YdObfm7jDQ7QmWxkGXg/QgI4L6k33UiJ60PR2XhMILpB018aPP1uH0/CDUxqliO86VUUmdGNoC0pOrL7ekXLz4hCYclDR/5n0s6Tpfovi+zkzPv+yHYX5qQv6ZbiJFOo9klpIoEAIWkEoNwzhrWuoSR9cKQ0IgJtC48FxKPNagYw10HFYBZvtlh6ZyiHck8SHI4wXiAGpQvlxnOZCN7OaHcnQkNpfTOFTXp1klj8aQS0r+UZ+vhmutdk7jVpUtKWni5yN3sbO+uIRvNHJXuPIvrm/2uHHCY9kJpxlsKrMGZK4NfFME89A9T6rn6WsLNOZ10nbiTIPZHClUpUdzloZcPlj1EBgLKrq4GtXmt9tS7IahE7KruaW7s07zujFHMwF+wfJSTWvisi77vLLamn7GY39lKUBerIS7wSTGGUAkic= 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 9:57=E2=80=AFAM Matthew Wilcox wrote: > > On Thu, Feb 20, 2025 at 09:37:50AM +1300, Barry Song wrote: > > > How complex would that be? Is it a matter of adding > > > folio_maybe_dma_pinned() checks, doing folio_move_anon_rmap() and > > > folio->index =3D linear_page_index like in move_present_pte() or > > > something more? > > > > My main concern is still with large folios that require a split_folio() > > during move_pages(), as the entire folio shares the same index and > > anon_vma. However, userfaultfd_move() moves pages individually, > > making a split necessary. > > > > However, in split_huge_page_to_list_to_order(), there is a: > > > > if (folio_test_writeback(folio)) > > return -EBUSY; > > > > This is likely true for swapcache, right? > > I don't see why? When they get moved to the swap cache, yes, they're > immediately written back, but after being swapped back in, they stay in > the swap cache, so they don't have to be moved back to the swap cache. > Right? I don=E2=80=99t quite understand your question. The issue we=E2=80=99re dis= cussing is that the folio is in swapcache. Right now, we=E2=80=99re encountering a ker= nel crash because we haven=E2=80=99t fixed the folio=E2=80=99s index. If we wan= t to address that, we need to perform a split_folio() for mTHP. Since we=E2=80=99re alre= ady dealing with swapcache, we=E2=80=99re likely in a situation where we=E2=80= =99re doing writeback (pageout), considering Android uses sync zram. So, if swapcache is true, writeback is probably true as well. The race occurs after we call add_to_swap(), try_to_unmap() and before we complete the writeback - page. (Swapcache will be cleared for the sync device once the writeback is finished.) Thanks Barry