From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012004.outbound.protection.outlook.com [52.101.48.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E3202F1FD0 for ; Wed, 1 Jul 2026 17:02:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.4 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782925348; cv=fail; b=b2n0f+2DH7iUJKKkMtdqbdQp/fy3EVQLghoki2OwUIviP21nZOpazUo3EoBzAAAekH1Dx+M9b/vIAZ9ck2BSDJyXY3Q935H2ShefYPSdDEOUY1rdv9hf0GPamvAlAa4IC+B5vB9LqA1ZL37SPrMsi/2Bwea1pUqRPDoKut/9ZwM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782925348; c=relaxed/simple; bh=257Xxt9smvtrl79QNOGWZkNj4q6y0Kg1KJLs9D/GhYw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cs0tHYWLseauzhFLT+vmwg6/XOKDurFsrMFVC7Pi6b8+SzgkuBwgxg9BdE45qFM9rfP6LUuxq8MLAk5JeZsxN2b+PAzXf1cQW9lmHVsH/3qiX3E5AKJMiETEmZ3wgqwgz2hF5go6rg04BkOAuyz/cXxohYjGB519eMNie+jIkIQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=oUcOhQ/m; arc=fail smtp.client-ip=52.101.48.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="oUcOhQ/m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YL6qBXuPLCj+ro7omumsKkemGDAMHikO7WUk4N9T6f+I9yU7RmZFTZVpKY7O02wqYt+PA3BVceIVKs5n+BRBLdLilDCz60iibDBYoSh248S1iKqsdVjsyxvTCrXXfC4gyn5XJ6PrJ6Y0dvojFyEIZtbF6nbnHBy18+XhGuEVXOAJVEZlC0UjOq5ZVrhStGubyzD/1rgbQcrnCvLEZgieUp8o3q05K5WQ1sCRcQPVPc6rvMZMRwB4hcZV8c/ABV12YZkDubKNPLhdEWTSTb2EiLmXUudd0oNj1+VwZuj/8KRZCiObt30y6jVP72cq1TpcjSvNL8fvWJtICuimY3WA9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oVnBKJowPjp71E/JDMtS9AVKXxwYEIDe9pbguoW+1QA=; b=EnlAkqW1+jGSbsi+i9vaaVaMXPsjU77Bd+uQUDRudbfV+rKMRVZHUGaU+9IOM6ZAg2oW7PQYUC348ydi5JlRNpMwZMNBP9htlPXASMel0NVUA5jDdUL+Sxg6fkFOS4xZ09+/Yej5KpRzZZRNbb8gcHiKJUwmtg8oGZAnWDQW4T/eUZ2+DVXoXVZkgK8fGd2ae9MNrjEB+M/kmQxbqXwA6i5Q7v8VPSDfyo1f1sTkrJNwH8/dgVcH7syATlnj0qcKnyIX2m3HkZ57NXZYI+ArMPhv1p8cFSjKUz7C3/Eqs7QYl2Y4kVqtm1sbWnjSPIZEqZ1yY9liVKAHjzy7Zhwydw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oVnBKJowPjp71E/JDMtS9AVKXxwYEIDe9pbguoW+1QA=; b=oUcOhQ/mvJc/YBPv/4XJ2/PJ8q9S7cGPm5U+9AkUCjzLmOppbzAE1KZmruhHje05yfj4Fs3hno/Nk6z6umcGF1mKFPrep951IYQN5MPHLe8WzcvDpPl3fGkCY2P26nI6tB5dMxUxg1+G/LYgH488BIpq7YeIGJEI75P+zMp/H6x1DBRiO5fMmLNcC+DwEhRXVUuGeA6FfzvNTDMkQHY/RGEwsutfdpvZNTHulMtrQgzokekM0kt2ERVAt1EVIpqgv4BVrxsk5CdAchfa8iqsyI7tgfRqQ8jWUPecyT6yOLiVIVxTcWV7LwtrA5ku0E/QQqfWked5huy/b0Z60/Y06w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) by SA3PR12MB7999.namprd12.prod.outlook.com (2603:10b6:806:312::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.8; Wed, 1 Jul 2026 17:02:12 +0000 Received: from IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16]) by IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16%5]) with mapi id 15.21.0181.008; Wed, 1 Jul 2026 17:02:11 +0000 From: Zi Yan To: Usama Arif Cc: Andrew Morton , apopple@nvidia.com, byungchul@sk.com, david@kernel.org, gourry@gourry.net, joshua.hahnjy@gmail.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, matthew.brost@intel.com, rakie.kim@sk.com, ying.huang@linux.alibaba.com, shakeel.butt@linux.dev, hannes@cmpxchg.org, kernel-team@meta.com, sashiko-bot Subject: Re: [PATCH] mm/migrate_device: pin large folios before splitting Date: Wed, 01 Jul 2026 13:02:10 -0400 X-Mailer: MailMate (2.0r6290) Message-ID: <78C557ED-3CF3-4558-9BA4-C43B30E63F67@nvidia.com> In-Reply-To: <20260701140638.840773-1-usama.arif@linux.dev> References: <20260701140638.840773-1-usama.arif@linux.dev> Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN0PR04CA0006.namprd04.prod.outlook.com (2603:10b6:208:52d::23) To IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA0PR12MB8374:EE_|SA3PR12MB7999:EE_ X-MS-Office365-Filtering-Correlation-Id: 5244cd9b-6cf1-4a6b-f375-08ded7927e39 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|23010399003|1800799024|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: QN3waVmYev3aTaN7lIDal7gQesI5wti0SZ2GcN4X6qJl9btkYs68BnlbLtEUpzrT6vD2h5+y/EDbg4Iw+icZt517zMJATkBbOPV+uRhOmedmEs5pUeaKUrQbNMgoWrKppp6Gusy2kSY/6cg8e1tFLwfdkp6uN8B6ERRZeG6YnJwm/D/0fGsvEYnAT1ygBdletC8fdCw7MsMNMqj/7qlkAiad8Kgelyg6d//I1nHudq279KMI1WT9ut8059cEsylWfzgSQti+8MbXcWq8odCtv8Y1GirUtPXq9n9hs6ak9mcnqJ7fNKyikIukc9AWivdEWiyQ29KRUBz64HclekgVeXvwM9Fh19kUSKawJFN7p2P06MRAEV3JqGQWbW5l9sH4N5lLwWXQY5M5e2IS/gWLPSl4Uh/QGcr5kOX9h23IDe66qxVzabb4dJDakUyv0eUCyZxG1mrkKI65GorjwkCBfUSvx83HSSYmRrhgSb/hGwRpk2aEZyb4KKjLYvDeC3ose2kMOklQWU/G/58tWBjA/KKfe2hgscb+mnsPzn/eoRq1SBA6YtvHPx6KEsUaGx/AugbvcBjWIh2XcsfiTHW2E8qL8azs/1ZkeVA/rLt3TN9aPQbvg4/D0d1oHA1QZ7EPUoaYwDrIQCpGmiGEkhwiPDh5j/fwiHeUTjnr2/ddWAk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PR12MB8374.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(23010399003)(1800799024)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0YPzBn4H6WS6NxaozeqwFHEndKStp9V5G2qu3NlW79FtNsI4PPGVWe9TMUaF?= =?us-ascii?Q?hrCabX1QKoJKeayLPKXpjl0lzzsBNKn16uoOzfSbmv8BXHqKhRplY+29efKH?= =?us-ascii?Q?sLFcgC1m19vkn2gyyNoxlJje8x0os7ZuPsaz5MHObrw+jX3jmKjpcUhO3ZgP?= =?us-ascii?Q?A4HLjRE/9+a/OHnSF9AOb+yBo73IkJ0vyodMMhg+IVTn/xq/UTaTf/+R9STC?= =?us-ascii?Q?XtcXTEeWeF75BAhZwtLjhhjFyL6vcSsNhHnbXTZ0OjIkRdYzZOjwgXdZPyA2?= =?us-ascii?Q?h9bKMVNafH/CVprR91wAXLEph4yyf0uTwjyL38EpnEKpybCYcwP+7Y6uwmdl?= =?us-ascii?Q?9MiN8UsI22Aq9OA/37dgMmnqrBFhfBPIf/6RNepbnkHenfElpiNJ7zDFchSd?= =?us-ascii?Q?dHadeqDj3Y4aS15MppV2QQS7m2D0yQ7JI+hNLKt2zKmvltZjjZhN96N1wI8S?= =?us-ascii?Q?14SAMxPhO7wboOVasJcgW/mpNK1mC/YhhirGpAwizN87sFbpj34uM+uRr4h7?= =?us-ascii?Q?t8mBxcpjiF06jCj4SoBnJq0aApR/HjbyCm2fgqITWoI7hlC1bPScvhv2dwL9?= =?us-ascii?Q?v608XRKd9kKSqaP+3YgRgTB7X6e5MXkdq/yKDZ4qD5nX4K8xkUzz+yscaxL6?= =?us-ascii?Q?SZdSUDZKFSO5U+NyIatczq3S3FyH7it8GtUeNF1qIuqeBoPqVY/lx+DbuCh9?= =?us-ascii?Q?Svkp6q+uXlRLnDoJr5kuJpxkex7glKo1OUBSzLndBAwjytF6EJx2UgKQQCYW?= =?us-ascii?Q?YnwTMOvEHBSSE3oDtzT56sj0EuAOnMJ3h2s8XIEJyK0/rdIo/EXAVcAmFlIu?= =?us-ascii?Q?JfTibswiG5/0eXDBQ03F29u1vGuxLLW8BHRmvYNKmr8qjId28+CCAs33THtE?= =?us-ascii?Q?75fgrw6iOEdz2VSQH6ceEqKGRD123lyF3hLgrCoR+QmFbyxwqMZOJBbgYk0S?= =?us-ascii?Q?laC1cUpSRH5wQGNgMAE7zhMzy0DrTRl/V9D+Dsq61nuZlri7hJexJyxqb2Jl?= =?us-ascii?Q?ywAZ6+buuDNaEowkOL1HQ6X8XMnZ63vPpn+O34aLC+Rg8iAqBla/BbqCB4qA?= =?us-ascii?Q?UMrKG4/fcfGDEHxUDpZGnf/9q96vL/LLjCVBPv+LWL272MhhY93P//vMy43h?= =?us-ascii?Q?sWVi0ksTV2tYiko3W/08XqyuO1c8kINd2w+KEwMZyZ9Rn9GWj0mpBTm7CrIZ?= =?us-ascii?Q?hktr2c093nFkBVMnzENyPvjzMTaCRQNWletTPPbsiRR9uG+ZVt824hNayYLg?= =?us-ascii?Q?ABlJ4DPOysDBMXNsUXe/G98V69h2kjbK72/j0CpmtIXejtO7XIwiG4HSJSYt?= =?us-ascii?Q?g28ra4Jl8pW9q2kw25lQWZcqnXtr3uvU4HVaDHG0gFYlnrmy28Y8PfaEdoUf?= =?us-ascii?Q?pjsd7qNxxrPaPZkfjP65OIBs9bMkA85CNMPZgxcub7iezWkwT1NG0bNiNsxm?= =?us-ascii?Q?1u4xH6qOc1OrYNSOBx623Ryo4YBJ8hOnWNHfmBTqalekaM7FYOEiAYCH7NYb?= =?us-ascii?Q?h/fSGQWxCRtKuMMlK3zjuj99wcFkmZnMFxiXOteDOfyAG9qd1cXKvHzow1L7?= =?us-ascii?Q?8bGu3MISEysJd8DTotUM7qEq0zo5JbP6z2qPcWAa8vjO6vaJN9yB7wBGzYi0?= =?us-ascii?Q?EAq3c7/zKWBOMKTJhGoTeV0HrbaJPjsxXuM+sv/niiW1b1k6XJgqeOfIOOXf?= =?us-ascii?Q?If168l+vfyCjUQLn9o6c4EsS2eJDDgpB+GeS+11jL/SiRfPPBjwVkYdJn5Yr?= =?us-ascii?Q?Oq0H6GtHLQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5244cd9b-6cf1-4a6b-f375-08ded7927e39 X-MS-Exchange-CrossTenant-AuthSource: IA0PR12MB8374.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2026 17:02:11.7796 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: W9y8RTHlCSGir9/WnynHSlKOgAv43R+QY1+6njZMKmfnuBFpN/O5nczYMVDTWm2N X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7999 On 1 Jul 2026, at 10:06, Usama Arif wrote: > migrate_vma_collect_pmd() can detect a large folio while holding the PT= E > lock, then drop the PTE lock before calling migrate_vma_split_folio(). = The > split helper took its own reference, but only after the lock had alread= y > been dropped. > > One way to hit this is device migration over a range that contains a la= rge > folio. The walker reads the PTE while holding the PTE lock and derives = the > folio either from a present PTE via vm_normal_page(), or from a non-pre= sent > PTE that encodes a device-private softleaf entry. It then has to drop t= he > PTE lock because split_folio() can block. Before migrate_vma_split_foli= o() > gets a folio reference, concurrent reclaim, migration, or truncation ca= n > replace or clear the entry and drop the last reference to the folio. Th= e > split helper would then take a reference and lock on a stale folio poin= ter. > > Take a temporary reference before dropping the PTE lock and pass that > reference into migrate_vma_split_folio(). The helper consumes the > reference, so split_folio() still sees only the expected caller pin ins= tead > of an extra pin that could make the split fail. > > Reported-by: sashiko-bot > Link: https://sashiko.dev/#/patchset/20260630164143.1595669-1-usama.ari= f%40linux.dev > Fixes: 022a12deda53 ("mm/migrate_device: handle partially mapped folios= during collection") > Signed-off-by: Usama Arif > --- > mm/migrate_device.c | 21 ++++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > LGTM. Like David said, the comments might not be needed. Thanks. Reviewed-by: Zi Yan Best Regards, Yan, Zi