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 28D9FC02190 for ; Tue, 28 Jan 2025 18:04:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9E412280148; Tue, 28 Jan 2025 13:04:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 96B0828013F; Tue, 28 Jan 2025 13:04:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 796E4280148; Tue, 28 Jan 2025 13:04:31 -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 56C7C28013F for ; Tue, 28 Jan 2025 13:04:31 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id CB623140347 for ; Tue, 28 Jan 2025 18:04:30 +0000 (UTC) X-FDA: 83057635500.16.3DA3B59 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2054.outbound.protection.outlook.com [40.107.243.54]) by imf09.hostedemail.com (Postfix) with ESMTP id E8C64140022 for ; Tue, 28 Jan 2025 18:04:26 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=KTQzdenA; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of jgg@nvidia.com designates 40.107.243.54 as permitted sender) smtp.mailfrom=jgg@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738087467; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NbRuy+nAZwPDR5HZSRhzcGdaDU91LsX3SqpjU8Q1ZUA=; b=5AWPX/hDpYglMgp4sCFCX0rj9iWNUrpI+B/LiYNMwVdTKS6x7XeLkxYdC2gaL56d737tUq rc78efegCvbCS8tK9I/z1pJE2ucNGqkEcQbRjQSB0fDoyZjbeYsgJIQ9w1gN9eaUFtVLwV GS0LCYTjGdxF2NRIBHfGbLF0cNYV3xI= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1738087467; a=rsa-sha256; cv=pass; b=KIPh9LrOe15F7AXsdLgYvZlNdUasmNd9YGtRZuXAyeTI2LUu8mZ8BaqqoqXdNEjS8CyGaO Orfx3h3nDhb0GEO+GXUCJQM0uFBRwtdTDOamofa1xVOsXy9k0E19LlzP/piky7McT4t5OR 5g/6IXcPtboyMI7w7RMS4/10FI2lVPQ= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=KTQzdenA; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of jgg@nvidia.com designates 40.107.243.54 as permitted sender) smtp.mailfrom=jgg@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b+CITksKi1t8kPmyJVlyQHNu8GFOIFGMxK66/e+N6ZWkDJBc7APW8KbWKGhxNB3WZiHiOIJhY6sDztZvtN820RSD+/ONfAVSTelkhYn6777HIj3q+8y4KRXSDd2ZAXwOVi9DjSWs+RXf1JrbTRFFIMrzXGnLVaZageSrIuDQ+8MSmjTUyfg8cxd0yQy41id4u/gz0JcmcUNBOfe+a55x5s/Dl01XUXlGa1aH/PF2DEjWYOIG+j9j8JHB8L8DyuiWdBtPaLG0qaOH4+Vnj66dvGQDjXaqVVNl4Wa3lbaIF/szycWkdWaRJG9W9kcMjmXPhEzYPxvVFDyDPSVJNUCFdQ== 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=NbRuy+nAZwPDR5HZSRhzcGdaDU91LsX3SqpjU8Q1ZUA=; b=g9lFqEwTLHGFB2G+9UShNdCkbCk1ZpzvNHIIc6JbK8W6+dBX/V6ZFV6EqFHtVnoPvpFbmxVtQtRP8z6XmVc4IQimqdg26cgbgtCxJ7MALJw1CULjuHkaNj/W7eY7tSVsLrFjr2IGHjnDLolBFWE7u84iwptjamNUE+5+gvkx6DE+DlHNd0aJi+QM+3inbwFB8tEFJKf3ycXczVkSolc+SNAj4U8/3HIEjZTj7ah6F2UeKgraFPqHWgrET/X30orK+y2Y4d8nPWuOX4R+9LM49694H0D8La2/qpKA+73C/K0gKD/fEWocIggOVULek7pceJJ7NXUzHhZy7yJxuLowbg== 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=NbRuy+nAZwPDR5HZSRhzcGdaDU91LsX3SqpjU8Q1ZUA=; b=KTQzdenAxSNYSKkf6pBFqc+L+LfJXL68vmHK/ir/pjiViW5u+HgLDrHKqcoaASx1bC511fhSHmfeMqaHmVeakdmy/cSNd20a3vnd41LlAHwOSH3WfW9GmKB6+Ma6xnuXLwINVecKP7gJEqr4EG3lgYj0qDKWRUthn7CE4v3JnqKmaS8L6GloFzF9mrHJqZ+W0KgMHydZFiAh7J0SMShGB25+WXiZrE4f4iCatwpvN9rYCOuCKc4FWim7tR3DpuZ08GdJ3zVc4hnPynpWr2DGDcOcaYqwmthT94apaKlzFrjZm8FVqJ5xtUHal/xkJKz9/lL0nNaElbsAlCMZR8v77Q== Received: from CH3PR12MB8659.namprd12.prod.outlook.com (2603:10b6:610:17c::13) by CH3PR12MB9025.namprd12.prod.outlook.com (2603:10b6:610:129::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.23; Tue, 28 Jan 2025 18:04:24 +0000 Received: from CH3PR12MB8659.namprd12.prod.outlook.com ([fe80::6eb6:7d37:7b4b:1732]) by CH3PR12MB8659.namprd12.prod.outlook.com ([fe80::6eb6:7d37:7b4b:1732%5]) with mapi id 15.20.8377.021; Tue, 28 Jan 2025 18:04:23 +0000 Date: Tue, 28 Jan 2025 14:04:22 -0400 From: Jason Gunthorpe To: sooraj Cc: linux-mm@kvack.org Subject: Re: [PATCH] mm/hmm: Prevent infinite loop in hmm_range_fault during EBUSY retries Message-ID: <20250128180422.GA1862569@nvidia.com> References: <20250128063422.7604-1-sooraj20636@gmail.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250128063422.7604-1-sooraj20636@gmail.com> X-ClientProxiedBy: BN0PR04CA0186.namprd04.prod.outlook.com (2603:10b6:408:e9::11) To CH3PR12MB8659.namprd12.prod.outlook.com (2603:10b6:610:17c::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR12MB8659:EE_|CH3PR12MB9025:EE_ X-MS-Office365-Filtering-Correlation-Id: 300dc417-2a1f-4fcd-bada-08dd3fc631f3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3iEDbexi9CoOi6Inwcl2yabccrG2euVFiQ4PR09G0BuFUqLeI6cQYfFGTrf7?= =?us-ascii?Q?hJhgCtIGgbP6vfN7+3OhI1axkEol9AZlWeWs9D7WFbliSGSznYbiLQQBEuQ5?= =?us-ascii?Q?spV/XlVf8OVTJHKa+fRjuoIUN3x+SkZEwSPcWeI/1/7qJyjb54JAU/a/La7Z?= =?us-ascii?Q?1Px/s7zA8ttdWDbYw7dzVN+Mq5E0AOQdKCHFrCOJlP/dDrX5WyclXCfftYAr?= =?us-ascii?Q?Nf4ji+MkfHRWcYeEaiCnowZWdMeylDxYbuOWJdaLO2v8+9cPBzOOrJb4JBxD?= =?us-ascii?Q?jaX1pjkZ90xFffDNWfCC15jSJehXGWfx9Jd6FPls89kA/u4pdhLWzrc2YsUB?= =?us-ascii?Q?FbwtDV0WRv2I6ZgCQvc/DUzenTboVFxJ2k7R+JMOPa1nBM6LgMWiTcS3G0X8?= =?us-ascii?Q?MBX9lrZW+dISHFLneMOE7G1oX44zeDwsNOHLeEw43ScYwq+kHTkmL95BhXW+?= =?us-ascii?Q?KTZpEKgh/12tdi7Gn9PdC3JRYIb0zZ5qxKZufRsYemzgrBuEQIETZxumzcwR?= =?us-ascii?Q?DdR8rg81bLkWoz2gLFqTGU/72jx2JW6T0NssnDBZeH/pyaUVcwnnn5m3lDJK?= =?us-ascii?Q?3pYHsOZqnXE0nkQvSoM28zGLHm41gj4CsEK63vwVfw6/sTd/9pW7gA/ulyl/?= =?us-ascii?Q?pRD7rUOuH91XHeSCq/6ioAhi0qwwC9VrzU3lSTumrUGfqyxA6QrDaFOHtmAw?= =?us-ascii?Q?y9qhFCAirbRjSJr0EX8Z9TifBWg2DfMx0DiKcIOP00fnSOsdlUERwNF6jEF+?= =?us-ascii?Q?5aq5w8oe9N4rmX45pC0qSn86XQa9p+jBHk8G9wgzyGBlp1CEbfax72X9PpIR?= =?us-ascii?Q?ZpROkcB/nEFerb1W18wPwluckWJGeOOC36XZX9X9fht8xOIOGw8exlxtJost?= =?us-ascii?Q?soV+eXRZ4yNGH02eF5zR0M1eEE4jz3XGZjQ8ovsnpxbSbzKLm3GhgPlgNDGD?= =?us-ascii?Q?N97igPukbvHS+J63mQ5NCrygDFfPMiUxol4x0WuQ4/OFOhjq2Nyn1cu1iY+8?= =?us-ascii?Q?QUTolrMMrx/kk0rKrtYgYK53gaZME5BRtmhRIpMCLEguT3RD5sSj8/wCbEG0?= =?us-ascii?Q?UwdIZsUhKPQH4C+AMLiowIdZ2Fgqm0LVfY6LAVA1vsptGpSrAY7raLv7920F?= =?us-ascii?Q?j3xmu6Pa3PXauvX9VC4xhfmeqR+9ilAoFEvvmzLKZd6l+F4QjdGqUfbl/CD6?= =?us-ascii?Q?Scuwg4/4eY32CTHvkd/pr0ttZHHVbDZAHO0ngWR4VaAKn9C2T0kvDSZuJ8rI?= =?us-ascii?Q?kZT/85gflXXmp03KdlSwQGxzH/OE3fc1rbRC+EKCGJU2NAWBc1DKrQzXUrN5?= =?us-ascii?Q?OWq0nOSNMvMZMkmc5sVRao8zrF3CzhtgrlClA3oh5bw/anyUkjvhwpSeCvPo?= =?us-ascii?Q?mrlRCwC3DRgSRQNKffKFrvK6Qq5C?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR12MB8659.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jDyA0SWyr1ImYla1nlSAuSRrEwwicPASMH537AK05LXrGcmeXTgbc5NyKcj+?= =?us-ascii?Q?dWHRghJo2m/MC+iHPU5fQJ1rF9yMpsZC/lueNWq+Ybwj0hRTFC/JHFdv1yVU?= =?us-ascii?Q?/lXJRMc+MkpDJ6ZQSRZRei+PIeK29fyPklRoNzSMvZAZ57cPQ/yDg5cnWerb?= =?us-ascii?Q?krsQd4f4zHXXzfMn+VDqRpWcAptyETW6nK2PvI0eiciqzLf6aH3ri+Z6auQg?= =?us-ascii?Q?jozKf+zTl0jVmWZjn6NPB86SK3YS12TQ7BfsyA9THWqVH66WRzUFpPhwqIhV?= =?us-ascii?Q?rV6onijwbgUaSgm7ygU336OHraKdeBUVAaLxNpE4Y1Hac6M1jn0yEz7BtVoN?= =?us-ascii?Q?vqhO3DGFDH9UtXZQ2TQvYc6KBRjhLKa3MGlc96s5oSKijSkGTlFWR+lAyVPK?= =?us-ascii?Q?bY5rVnHGGeb2UTmo14KR05yjCyteTyvn3GAeg4cphvvCtK1XWR4tcbuawVV8?= =?us-ascii?Q?RgAENieRVSxsjryX2Kxrp/b2U6dQEGTxQcNanhZrmkVZWR/Zer5EXVDYuDpd?= =?us-ascii?Q?qkBnuvFDCTyUlKMCJWaxquhUnG6etkVnoeui97dH2Ssk2O57aL+/7qqdPXGZ?= =?us-ascii?Q?yq4MPUqlOOgKqLgTEEAtQ94o80aHtVk+QJGwDWsdMIzrKBIePLd1V+NThH9k?= =?us-ascii?Q?T2xE3Lglixa87SORwoGM6BnLGhDkYEKsf/bD7zbgG2HHBJmr+Dkjt08l5J2y?= =?us-ascii?Q?oDwOdstSGTsSL10oqBUoZXx18MevEc4FEUJHcorSYHebeR+bNW3CWrd2kMPq?= =?us-ascii?Q?w41eGnDRjaEKQazysTGU4gIUH05Eph5A8nmKXts2TR1L1mi5tEZrac8Dfhs3?= =?us-ascii?Q?h4rMFtaaK1Y98R/dgwlr+vYndbKvsyJkuhlCF5amHsrrToBlPAoOFNt8daaz?= =?us-ascii?Q?dEyhgYr252BUagZ4u4/nmbalA2Ye2pPytL4virve5iFXUCIB7+/4XaVJLfjo?= =?us-ascii?Q?lSSLipzrVVSY3/pSghGqgfALWReZ7Yt6IhEo3dTcFSKOS4KWmG0xf8aO2wQH?= =?us-ascii?Q?hjT8h09k+VMC+uCePkDaYl79zYzVgR+dccD35ayJQIwK0bNmcaVjlmN64g//?= =?us-ascii?Q?JS9tXjswK/XUWCywNecxF/ywX8MM13P3ZWN3l0HJ5IC/xnMPodm4x6zmzzWa?= =?us-ascii?Q?Ncl58JW3/Q1Il7PG7V2uAxdzJTwIi6H2lh4xXDX7xRWJr5JKSq5VWT5YebjY?= =?us-ascii?Q?K77j+9nc1UktKxI6VdqSUJTVIhVjUj+ZSTe7ywNR00EDAwYEhabYqEtDRXjd?= =?us-ascii?Q?YOklnp11ptxAHIGG8+euwDLiUFAqjRHsSOkOHfWwob9BwoIuYYK2Ckj9Khcs?= =?us-ascii?Q?KznH2MD3rPxPFpD2DJQF5aJR4WGB2jkSjEVCtir3LDyivexCEJ6nI3lcqwzf?= =?us-ascii?Q?EyJdJS+vYFvEXLkEKdDkuz3J7xCymzc4g4lNVuMVrq4i9K+QFHrMlbdSeMDK?= =?us-ascii?Q?wyrCFnH+sGuVmV3uDVojMuqxr0GaIP3Iya8fZdF4jyALQKXgAVbRX4tqSnmr?= =?us-ascii?Q?uaC9k9YTPUjIOD9t2kJ1dfb/RsnSHMMINIl5ZLsK8pIi7Apl/u6N4EZt6u5V?= =?us-ascii?Q?8bzEihkvDsR9svCiDS0=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 300dc417-2a1f-4fcd-bada-08dd3fc631f3 X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8659.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2025 18:04:23.4061 (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: pdrFREEo0FsLIuaCb6g1Svu3e9lAJIVku+izpz8MBNzvVlA+VPBbpPaAyW8pOhKd X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9025 X-Stat-Signature: gzmgb5byxi54f9ym5uxipcupxmdbdabo X-Rspamd-Queue-Id: E8C64140022 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738087466-946886 X-HE-Meta: U2FsdGVkX183Gm8rwsWXJZT+tDNWY/EiRu1yFMo/+zs3PlXxVnhnhEo7iBG3B+5dfVdOudEa+J+SlWO4J2TNtxquej2ZiIySyumqjsUnGiSdRMgWaCcM4jP+cZH9V2r03Bbww5xqLthPlMgrvJCq31yOIzYHYZ95GQkyx1+3w401YcJqyJRRxuhPrSL23a8zMrHXlKu+PUZUV9BUYJyWnUso4Mm7QwGStYsVldpDNjJlX75Y6xOoXi0kEyNMpeO0LeDNgH6G6Sho6ngOILPkWvVgYwrkU7K3K25bCCyqiun4Jz65G9EvY7uKXe4/RN8z/op8A6gISvnbwRTrdFatGgWaOgEumhu1Z0Ht/yQ0cg6taQo2knXn3HytdL5YfW7KNIXO8Aeyzxs73wVkiDBBsnxztduc2JXzPCi/badZKkiJl0uUhPEgpuxNsRI/dlk9X+gqyqwVQfrhfo12OIpdJrr/YlH5O3TchB61Q6r6rQuES1taFqAVr2AaispwfD1ws5xfgC4V7x6VVxFoMd8cmJA8PXZloXBZ+XbQlCW8hccFJv9XTQeaVM//FSZZIMpS7JtyOuePRddt/OtCBaUKv1aQnnhDui5j1UC4KEOXigMnzu+JKB5wed1ZnfyEugxJuHhAAqZmBkaCuBxl4ynGa2Itf+PjYanPJfg3UmZve8Q3bHbT51Bc8G4gfbn/Xg34wk3tzLd/jM02jKvrjU7JSFHkx+1iopcEJ4CnturZ3VpkviNW7rHL5f2Vw3LsADJXcT7e9OCoPPAAcAUA6lXNW3DlnVX3BrbBPKl+ZnHOxhG5gEDhTV5xKFpGczth9OlcOq7E032cLN67HCmOCENb68wnk8qeeAIy2ZiccUJmPH7HxiP/C1qkNr6Sf2SwQwuv1CwqcMiGSE6/0wOaUOzEDmaCHoIp4EbyBSBO8CncCg51TbW95INUSdN4Wtil3sdKpIqB+ukmybk3iEVhcsW gwLhJ1Xz QKEXjFKoWWCGMHNEKyQE3MEeLAaxNEQDR5YZdlVeH6b8KlH+pksCtI9mok+3evra3TT4IYXQ5a3Drf5p1GBu6FaZRFRl640te13AR2wh7940saBkbA0pAwVlqEicBznWWEqeQhTBRVU3GqkN6wArStfjPCYmHz5uX6MXQ8uNmmbZ5erON2odk6FYDGYWNMmzc1kyWQQWMjli58guAaYn27ANkRX0hMVI3IHknHWrttPdRVeeKEZEYh015TYBvt+/hlRNyXPkn52FeY34zrloxspSp8U3SehZ4xJUfWioUycCS4J8vsZzAQweyMXB6Z1CqJOiJS3eEr3Prl6mwiRO87b7NIJSe47s/uicNVpueF4sX7PlFA3GAyyZfQYCUll7flfBsvMKvYS8X3Uj0h73GpknbyA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 28, 2025 at 01:34:22AM -0500, sooraj wrote: > When hmm_vma_walk_test() skips a VMA (e.g., unsupported VM_IO/PFNMAP range), > it must update hmm_vma_walk->last to the end of the skipped VMA. Failing to > do so causes hmm_range_fault() to restart from the same address during > -EBUSY retries, reprocessing the skipped VMA indefinitely. This results in > an infinite loop if the VMA remains non-processable. This needs alot more explanation. The only place last is read is here: ret = walk_page_range(mm, hmm_vma_walk.last, range->end, &hmm_walk_ops, &hmm_vma_walk); /* * When -EBUSY is returned the loop restarts with * hmm_vma_walk.last set to an address that has not been stored * in pfns. All entries < last in the pfn array are set to their * output, and all >= are still at their input values. */ } while (ret == -EBUSY); The idea being that when a lower function returns -EBUSY last tells this loop where to restart the iteration. > @@ -547,6 +547,8 @@ static int hmm_vma_walk_test(unsigned long start, unsigned long end, > > hmm_pfns_fill(start, end, range, HMM_PFN_ERROR); > > + /* Update last to the end of the skipped VMA to prevent reprocessing */ > + hmm_vma_walk->last = end; This does not return EBUSY, so it does not need to set last. I just checked against and all the places that return EBUSY, do set last: static int hmm_vma_fault(unsigned long addr, unsigned long end, unsigned int required_fault, struct mm_walk *walk) { hmm_vma_walk->last = addr; .. return -EBUSY; static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr, unsigned long end, pmd_t *pmdp, pte_t *ptep, unsigned long *hmm_pfn) { ... hmm_vma_walk->last = addr; migration_entry_wait(walk->mm, pmdp, addr); return -EBUSY; static int hmm_vma_walk_pmd(pmd_t *pmdp, unsigned long start, unsigned long end, struct mm_walk *walk) { ... hmm_vma_walk->last = addr; pmd_migration_entry_wait(walk->mm, pmdp); return -EBUSY; } Thats it. If an -EBUSY case has been missed it should be fixed at the -EBUSY return point, anything else is wrong. If you are seeing an infinite loop that this actually fixes please explain in the commit message exactly how it arises, and where the -EBUSY came from to miss the last update. If there is a loop due to a missed -EBUSY, then this is not the correct way to fix it. Jason