From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011038.outbound.protection.outlook.com [40.93.194.38]) (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 65C301EB5C2 for ; Mon, 18 May 2026 23:39:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.38 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779147586; cv=fail; b=PY3CIrWcP8XK7gjL/lJgqdUmKhf0wfOcCQGcW5REvoFC+743AUjT5vHlpCVi7qEUElMsT9+j1YJPrFXVDma1BSk0G4mQYJNhQEAQxo0cjpeZ/thhNBMA4NnnOWVfazacyHwqdrebVEz9A38oEl8vR/30U+fT3/Hldmmf3ljMRWY= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779147586; c=relaxed/simple; bh=KBOdJRJxdT3tdjxSxefNfTO7yj9K84EHrWkWvN0scVQ=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=L7TzcgNqGIOQwKmTrFGO/PaONm52pQn8cW6jQk1BDiGfIS2R/HqHXAONdXB9bZFNrqOUIanJ7qy870mbKyPsysRylWXz2G9YATa5402BYPdNlHbPGwaVOIQQu7d+h638UJF1xTuT61kdL+b6YM+9Aldd5VATb6eaZ67jQjirpPc= 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=ZoCTjAEk; arc=fail smtp.client-ip=40.93.194.38 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="ZoCTjAEk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NHWwfKn8GNh3sbnhGaSxWyVwU71aT6Ky2D7HUsMeMkQF4AKG8y8l6tu3iqbEehVyhY+1BdC3wwEA9b4A+1qd15+02R1vQTCThrCL0RMvAUhDOczASCJHlWXk4L84dWkq4LNkCr4GSIoqitdhRXkg/95U3siAsrTqGttfajQBG3IHEz/a+GEbrLnKPJanwU4RdFGAqH7yDn2VMGTtjfHXBH1XLptO+f4hvgzm9tvr0k7XBgd4jpXSPh8J9oqMNNpc8ePgprQcOcLYQBqnFaHvxEieM/g5saDamFGG93YMPD7FxSrudqO/4h0iWmkALEfmUDNbY5xQVQIlncOS0OLHJw== 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=BwHagoP6VtPibnoQUnsi1hi3jFp54qzUJOTz+T+Flp4=; b=mkbVBbADZCAhOrAcplSNyF6f9O7BzQfQVpda/kpuRPHUAzDsWhepBzVhyMWeByG4IStjJsLtvk/TdQka9oY9mAwx0bisOlGEFIqKgnJxiv8u2ovop5jGdvwlZEdwtt7RwxHi2yrL/yPorCfjEi1AudeYTb2AhEUyCEvA6apyYluoYXWcNkNZgH6fW+l3cviP/BW9lYv/osPBQJHMRQdKIcy6IgF8ioqbysSBPEsfhKLHNnc5AFgx5e2b6sEDjkS63MIN2llr97hN/Nzc2WArmtN+3lCUzc2gAUiAjDrwbHWIkhCNdL03dPCcy+3NwUIgxrnexn7UVmO3dk0ta8sVPw== 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=BwHagoP6VtPibnoQUnsi1hi3jFp54qzUJOTz+T+Flp4=; b=ZoCTjAEk/Dr8xx8B9Euxx8OD2waMZwE+yL7i1A2kSD4LUvyAi5Ypf74sAjjUXRg8/qNhm3c+PQvptyCtlVb+t/zKqY9duIzkvHDdLqRAEBXerrNMsJdHDO55d1yU0bv7KnXELGgN9yaJlhe1ebg+sHmMSNmXTxpvOGIeErgC30ISoWVylyhiRR5DfrcsBTwskrPnKzDZOIY3ww2Scvdw4ospcdM4M0RDlkHJRfYONi9Qnx202A7ajVhz3T6dAyWhUmCuB3heRkJ/7RNfgMLzwfwE1HqePlcKY3bObxRsdNryKJu3VWyeJeq8FFeB0svyZlnnGf9kVBWNzEbJIfQg9Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) by PH7PR12MB5877.namprd12.prod.outlook.com (2603:10b6:510:1d5::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.25.21; Mon, 18 May 2026 23:39:39 +0000 Received: from DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::5807:8e24:69b0:f6c0]) by DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::5807:8e24:69b0:f6c0%4]) with mapi id 15.21.0025.020; Mon, 18 May 2026 23:39:39 +0000 Date: Tue, 19 May 2026 09:39:32 +1000 From: Alistair Popple To: liuqiangneo@163.com Cc: jgg@ziepe.ca, leon@kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Qiang Liu Subject: Re: [PATCH v2] lib/test_hmm: Check alloc_page_vma() return value Message-ID: References: <20260518031903.63455-1-liuqiangneo@163.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260518031903.63455-1-liuqiangneo@163.com> X-ClientProxiedBy: SY6PR01CA0076.ausprd01.prod.outlook.com (2603:10c6:10:110::9) To DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) 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: DS0PR12MB7726:EE_|PH7PR12MB5877:EE_ X-MS-Office365-Filtering-Correlation-Id: 4826e028-1bb3-4866-4195-08deb536ba07 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|56012099003|11063799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 47ed93DT1fxP6shAGLvx1OxVxNMIHHZdgG9dTUk2AAhkxKkbxiJrYtfDCS072/6V9CPK7BVRz7Khy3ynuyd6bMjVNzumzn07hMbeX98m90id2joG6gqikduUDUOf1SeuJe/cl+zZ0+9keH/RjGVZGYGf3wvOauqU9M1x3O0w2zSYNxu/li0owZCidWtSva3zuzf3J9+3qG7jmUpUSj0PBPRiB2PRqJyyZhlArIp+Lp8kuvmcaWa8rNDEY4cYOyBAiBUiIrwJTo0JfnYxQShm1VrVGgjXAn8I35mNWFmWY/ZR4B8VEIEeTkNdLk+w574kP0dSwzoB9UfomNF440UFlSR8Gk4ffDx+N2DA6anuKr1LuXdjTCfF/EiKySzhhVX8thbhqH/AVb4F08PnTgiFloUcKW2Huh/2sgCPyts9EJiYGecnWpKQXvp97+pGRI80F8fFjwkJO/kdg61aiMOQepK8S2gEcpY48p5QwBT71CgHXkG1mEHKDhVOA2HI4apQHh+cJbXchKlcF+bCOwWmBKv/FrdrMAAlLPU1XLREkp1kItYZwV9rpswrGmXPB9k6K1WlNSe8hBITUfq7TBBqY8mPgdm0TP3UNr4dYNi5xRuxGf9mRGeDXsGx5tj5600592YZ+YPd4SMwQt79xlEUI4spzkcSF1c50LglcbkHlqaGXHjURACNH9P8fz6C5eURw6ehOZzioj721CQe2YRRoQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR12MB7726.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(56012099003)(11063799003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MjRLEsnnigx5n7wKbrrd0YNFLnnwRyVKYYMsjyr8Dknm3qgehgrSkxyGSaxD?= =?us-ascii?Q?TxktklOrRVTWJXjE1FhNer2tAi9ER6Kupxm2e6ETKv2tFjKvqvlXMIJl7nR0?= =?us-ascii?Q?PSUlKmMOUwki87zSr2Vp2+dzkk/090vppL2H7Vn02oz3Jfx6awoXiQlV/g6p?= =?us-ascii?Q?ceOIRQfzlFkaERwqimfoj3X6OIkm00NSkf1FPO1bjWgb2qFoUB4D/9sLbzTG?= =?us-ascii?Q?6JQ4fRbbgkpJtznmZ0I6BaZ1zK3pGC0i/4nOfgL1r22yleEkT/ewl3k/CLM6?= =?us-ascii?Q?Sqn2R/RemJXt9RcJ6yRRuQIEiR78FBSJ2nRb6lUBKvc9W5PwOs2xUJYW3BLG?= =?us-ascii?Q?sGgvOSExkjsXgp0j75Q85n+D9Bay5TkYgZPekagWm5lu2FRn8r74hgC9pZWt?= =?us-ascii?Q?aHz7l0ZjdyOf9izhSa7MOV876oV+6NVj9R/A/ZIzuGZ2pOC3bDGWHaQyQZbq?= =?us-ascii?Q?UJHwWNlBakUBYjevlHlo0qDMFMqbNPPiCNsAithxkjyCdvnDTw11iK59nARI?= =?us-ascii?Q?E/xhCh6Ll8ugsUtLA1eUV8d5tC+2i3L4bGwA7jsLQ2o5NV/zKNjEeRha4Yuq?= =?us-ascii?Q?iGm22+t+75y0yoT7yFmTitCUUEvQ1UOijuWDrIpU3FzzGnLBHEnFh9iigGej?= =?us-ascii?Q?JRV7ZhLL4jQanoL00GmTHBTpzZGyYtEYXTNymWsif1ip/gGQODLwt8OJKOpJ?= =?us-ascii?Q?vANefKI4oGSJQ0thEvIBEWOTqjHYso6n/jnIKcr0vgbOaHeY7m3SWh80Halb?= =?us-ascii?Q?UJhIjhKpxMZqYjNzWrDSX2TCDd1WvFTD9OR7FQuWreln4wf46o0a7YLamNrb?= =?us-ascii?Q?1cjQzgj+Oux7pyJAXtZ71zxaVBy+uOWtTe9FkBOhewwxUD0ZRgEblVspVO8L?= =?us-ascii?Q?f4vXW5t2lCxiHBUvPqYjtWHvOxZSWw+Orqm+Fs3988hzuqW8epQmlwsGjh+E?= =?us-ascii?Q?dmGGAiqeAw0lwc2nXmxesVbKJ/tg1TojpXvusgBr/Xq9Ukh5btmHVR30G5Mf?= =?us-ascii?Q?6IyqBT2BR6/V1u6tfYUClyWurXXggUzUaKdyAIvdpwu4J3VZWL49IK6vz9kt?= =?us-ascii?Q?PqCu3EfgRPihON01JCxZx2d5fpNTvvPireef3lNVf8QKlflyMcUkRLnOHMGb?= =?us-ascii?Q?7oV8ZyS8pOOW/z76KE1bB+Iq9DWBxaaS34Aj+vFDYcc3YgDFvz9qH6v5+iLB?= =?us-ascii?Q?kQ1pPKBAEdao1pbV7izvIcs8o61wFjY5zmALMs1GZratBtMcJMxfSzspdXWd?= =?us-ascii?Q?yPst5HaMA1msb3S3JwZw4X1SdPqazl7d4d+Qknr9v/UFMKoePBPTrF07ox/Y?= =?us-ascii?Q?m/1cfupg7JjP2oRuvtEuF9+u7lc2yw6vKiQ3eTMwM1GN42/A3G65j3BIqBdj?= =?us-ascii?Q?fbEaHycKvn/KU5pQji6Z0xpHs0ATgyKMGo8hdwx7Ct6Kcg9Qoy+VNdTSBCHc?= =?us-ascii?Q?Yy5W+hXogQMVR+yH3Aw8MPRStmISr80TBH9OPcgDahl8phdx503k/LdV5fe+?= =?us-ascii?Q?fOtXK859KVN4yLgrDCqdEVtw5wjhTKyVIftb8TDyO6DqaCmlzuK3vuVy3nHv?= =?us-ascii?Q?WHZu5xkgSuH5t00aie4QwTlcpweWsY5rpKYZRPwQgoZA5ZjvIEfTD5UOHy6h?= =?us-ascii?Q?KFybGEVCw44hExE0E06Kb4tvj0GgSmyvMuTxp92Gwy8QbtwSKHJrier5N/UU?= =?us-ascii?Q?cHsTtJhrPaNLDpBWiXlfdJOV1m5xGaIEef+JF2/3BM1eGmWcVwWx83kOvFLX?= =?us-ascii?Q?5esVye1crw=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4826e028-1bb3-4866-4195-08deb536ba07 X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB7726.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2026 23:39:38.8994 (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: V10YH7SEMaT9vav2YEsR45Q8qQjVujky4kq4aM2oFLzdg39406sqfxiqiqnMf0Nc/en/XDe1JkOmvOf3FbkEfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5877 On 2026-05-18 at 13:19 +1000, liuqiangneo@163.com wrote... > From: Qiang Liu > > Return VM_FAULT_OOM if page allocation fails, which > avoids a NULL pointer dereference when calling lock_page(). > > Signed-off-by: Qiang Liu > --- > v2: > - Add unlock and free allocated pages before return. > - https://lore.kernel.org/all/20260514032345.32256-1-liuqiangneo@163.com/ > --- > lib/test_hmm.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/lib/test_hmm.c b/lib/test_hmm.c > index 213504915737..90aec4ca2e01 100644 > --- a/lib/test_hmm.c > +++ b/lib/test_hmm.c > @@ -1063,6 +1063,17 @@ static vm_fault_t dmirror_devmem_fault_alloc_and_copy(struct migrate_vma *args, > /* Try with smaller pages if large allocation fails */ > if (!dpage && order) { > dpage = alloc_page_vma(GFP_HIGHUSER_MOVABLE, args->vma, addr); > + if (!dpage) { > + /* Unlock and free pages already allocated. */ > + while (i > 0) { > + struct page *fpage; You will need to clear dst[i] as well to avoid subsequent calls to migrate_vma_pages/finalize() trying to continue with the migration. But then the whole error handling for this function already seems to be broken because not all callers do this :-) Looking at the two callers for this, one ignores the return code (dmirror_migrate_to_system) and the other (dmirror_devmem_fault) gets the error handling wrong because it skips calling migrate_vma_finalize() if dmirror_devmem_fault_alloc_and_copy() failed. What needs to happen is we propagate the error up to the test so the test fails, but we still need to call migrate_vma_finalize() to remove the migration entries created in the migrate_vma_setup() step. - Alistair > + fpage = migrate_pfn_to_page(dst[--i]); > + unlock_page(fpage); > + __free_page(fpage); > + } > + return VM_FAULT_OOM; > + } > lock_page(dpage); > dst[i] = migrate_pfn(page_to_pfn(dpage)); > dst_page = pfn_to_page(page_to_pfn(dpage)); > -- > 2.43.0 > >