From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011063.outbound.protection.outlook.com [40.107.208.63]) (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 07A0F3164BF; Fri, 21 Nov 2025 06:27:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.63 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763706482; cv=fail; b=IVRc03EUnQPJ62sIEriD5JH/prRfldt11sUi8FP3pTUvslLSIpUtxDS+Z6Sg/lW/v3BNXUOqonropEoxsH14HbTYB6IDUlkiM4R6uppCBufyhU2GAX+zKKZeQTrNekDQbQgftO6CeS3oWyAj1zzYfoLkDP3e+7SNy9pdknbSNVM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763706482; c=relaxed/simple; bh=bG+o1gQJdFUy2FuFlP96fLUeBqbPrmF9Bv2f4Zndauo=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=Ee4uGaxXG4zzto/rL/sSUNSsHssm/FU4TxdJTRvctC/cfU2Kku5dHglLHPqcMz3XdP6/cFpfbLcuGnOKvgopUHV7UYJcg9bxv2TX5NHIq8PWHyolrmH9mZ0Zq2KeJuVkfGqQb8MTyPsbLlVyGEJvKvZfEz5LEauCZBMcJXVBsUg= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=FLHVTHjO; arc=fail smtp.client-ip=40.107.208.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="FLHVTHjO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=meYAnC4QhHtyDWjVr9Ta65bi9PEpIRw14e15FiBtpqo9ujeFzErpFJRKcn8kvxSokeQJxTz9KpxkBunGbhWuHnc0jIXTf+9a+w4ji6jhvW+LV41iJHwSOtz7iWkbIrdldx0Sn134ld7pFDiv06nSi+TPb7XIulobtsZMLfF5fShrjPD2uO/XvTCCb2JdX9Me5ZzdGxN18SXruah4qJBoxQMgbDG/jL0m+9nusxY8z4rHD4mHgTexraRrMva9sBag9leL2cX9ax7DZqdcvbLNrDm5KVPZu+6lDXti5FUpKvB1GpPF4aG5jyrtg1cvX8dVMnXGJp8r0cB4lK2dWfMsrg== 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=ZJpzY+8p7e6mkQCSFD+RNf7gAUaeZITTk5gvlc/nyZM=; b=FYkj3IHgo+DPcY14EagEbfHVl/X4wbELyaOJqvF3a8VK3Zk1uZtegAodOrbU1tKSe8qmWx3gkpOo157YdjCvZnosObWSeJdonBcRDnlOcuGsgGYCDR7bkkUjC8iEkGuGQ2gseLGlXMmw1cMK9X8gRYDYQldzSlKGKG5COvpAFzmF9F1OIuS5w1AlZYbZY0SwYyT210GQVXdzWx58eSbFYvp2KafwiW+E84JzzFBZNAPxcuMi/6kab1xJP96z5M5GbFtgs9FZVG0X+KnCU8K9IehKj3ZvTdEQQwPKgmoqaoo6f+QVLwzA4zT+TaUNEjF0i4Fr0LI1VYbQqqfrcNvhyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZJpzY+8p7e6mkQCSFD+RNf7gAUaeZITTk5gvlc/nyZM=; b=FLHVTHjO1AMevOlC3OcgKRHNhanAzwWQji7HoBOMCv2VA3nC1V1+50OSs/nlXXWF6SyAaT/WsiBEq5eu2ihOYvGsqPmi4DRcQXVs2va2PVaTTVvdp77ESHaqm5t2kWi61CDh9o4k0IlQiyIF91CG5IGoQdHCLbArOav+0xs5pCk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from MW4PR12MB7465.namprd12.prod.outlook.com (2603:10b6:303:212::18) by CH3PR12MB9100.namprd12.prod.outlook.com (2603:10b6:610:1a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Fri, 21 Nov 2025 06:27:56 +0000 Received: from MW4PR12MB7465.namprd12.prod.outlook.com ([fe80::6b00:b9eb:486a:f10b]) by MW4PR12MB7465.namprd12.prod.outlook.com ([fe80::6b00:b9eb:486a:f10b%4]) with mapi id 15.20.9343.011; Fri, 21 Nov 2025 06:27:56 +0000 Message-ID: Date: Fri, 21 Nov 2025 11:57:47 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2 1/2] mm/khugepaged: do synchronous writeback for MADV_COLLAPSE To: Lance Yang Cc: Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Steven Rostedt , David Hildenbrand , Masami Hiramatsu , Mathieu Desnoyers , Zach O'Keefe , linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Branden Moore , Lorenzo Stoakes References: <20251120065043.41738-6-shivankg@amd.com> <20251120065043.41738-8-shivankg@amd.com> Content-Language: en-US From: "Garg, Shivank" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: PN4P287CA0119.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:2b0::9) To MW4PR12MB7465.namprd12.prod.outlook.com (2603:10b6:303:212::18) 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: MW4PR12MB7465:EE_|CH3PR12MB9100:EE_ X-MS-Office365-Filtering-Correlation-Id: 7da80a55-2c8b-45ba-78b0-08de28c71bcc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VzdkYWo4L2RDUnRnd2llQVY3ZkxtdEtURE5weGloZ1NIWUJVMlRrQjhjMzZP?= =?utf-8?B?VEFlQ09XaCtoNEY5MnlOSllpYVBKQ0lXREdpaXk3Zlp0b0ZwMkx6NitXRmk5?= =?utf-8?B?TWsvbytYV3ZYSmlPb25jaHNsTDRncjVPUGFmWmdvZ1I4TldvT1k0NG4vRzhN?= =?utf-8?B?TkxIWHVoVFBBNi9ReXA2dzBnanhKaXI0bkFocjlIelR5ZGY1dXJuYXJjR2RH?= =?utf-8?B?RjlFYWUzQ1VVcUNWcFQzN0F2VTlyWUdsdUdKUTFqTTdLc1FzbCtjLzVEZ21F?= =?utf-8?B?WC9aNENwV2djNU0xcGZLWkxEcHJpTUNwUHhWTkdKTC9WVmYzbGhTTGxwdU0x?= =?utf-8?B?Unh2SHk1UEtNZ2FHRkpRNHF0d0c1Wk1GcVFVRFVhTUI4WVdmQzBMQnpDamMy?= =?utf-8?B?MHFZa1hJeFRmRFNldEM1NzNKT01qdTlTWS9jU29lQUVUSFZNZE82azJDZXhO?= =?utf-8?B?d0dsdXdFdzYrR0F3R3Y2R2s5bUhPL3FJMm8xSHExMTV3cWJFL3RVUVljTGlH?= =?utf-8?B?ZlI0N0pwLzI1REV3VzN1bmRZSFR0azROTEpEL1NGc0J2TzVRaUZiaDVIOThY?= =?utf-8?B?aTZiVFNnSXdxSTZLV1R4akVHUUNpdXVrN3htYW40QWpEWDBWWG1yVnlTS0pI?= =?utf-8?B?MkFCaEdVV0o3MCtFakRacm8xSGIyc040MUxjNHcyZUFid1czeExCKzJQNWVI?= =?utf-8?B?SXZ3Y3hySng3NjVmaUIwWHJ6SjJzQU9sb3pzSW5ublhiQ3JxQzE3enQvWTBl?= =?utf-8?B?MVdEUXQ1OVl3a2JOZmtlN1BCbWp0R1o2VmxjK3VaaFJhUEoxc2VuSG5yTlRl?= =?utf-8?B?Y0plYTUwVDBIV2hIZTdYSmNKTEMxc2hpSEZVbVg0ZUdHemZ4YlFCeFRSNEYx?= =?utf-8?B?cEM2RzlyV003aGxVSXllVWhnNjNzK0RWOWk5d2xxU2h4NEJBVHFySVQ4VjhC?= =?utf-8?B?NzRCaEMxWHhaYW9RT0lPak93RWNjK2NSN1RTb3VrTHRKQXdDWUNWQjdzcG1F?= =?utf-8?B?SExtRSt3T0gzMTRtM2xReDAwcFlEUXBnVllYOU92TDc3TW8xc1ZlUXQ5NWUv?= =?utf-8?B?czlHZXV2dWlFWHRQb0pQUlBiWlovMlFleE1wR09PU3NXREdUNVJzenpUWjVy?= =?utf-8?B?VHc2eGpkVk1sNVErNXpWZkxEcEN5UU9PVUphY2s0T1IwVlVXQWhnYnU5MzJ6?= =?utf-8?B?YVArTlkrd0R6K3VGSUxmWmUvcnlQams4b1ZvTU5GSVBZdnRCemMvbzNTTWJq?= =?utf-8?B?cGFlL3E0UW5PVkhHYjkrbkRpeHlZdkZ3MStBZWhkdUhYaUlrcHJXTUt5QjYy?= =?utf-8?B?QUN4bVl4VGs2aHlpVVA5T2JGZW84UUlZRVZQejVKU2ZLVCtlNG1ZNHc2OTJK?= =?utf-8?B?eXF2SDRmSWh2UkFHQkNXaEE2akRGcnVOZkFtL2w0M2szb0d0a21wZmE5Y09u?= =?utf-8?B?RDZMY2lhdWhjQXkvRVhBcWFrVlNZcDBsTGREZTZRRDE3NFEyS0kzV1o3OEQ0?= =?utf-8?B?YW5NNUFtZVVCWTgzQllyVnNQTDdIRDFjMEdTSmY4UkFHRnoySzAvNXVmSyt5?= =?utf-8?B?Tm5YN3piOENCczBHdnl2b1JXaGY2Tng2RThLOHNybkRTNzVTcmlZS2FOem1S?= =?utf-8?B?M3Vac3ZBY0FkMDRaS1ZLT1BaZzlJS1ZuNUVOTUxKYzU5OVcyOXlNQWZxbUEw?= =?utf-8?B?ai9HdFdHWFJjclAyOGc3ajdvVXU3SlZXOUQwaXhtV0pScmFyWjlwQkVWRFpP?= =?utf-8?B?YXlmdU1XeUR5Tm80Y25NWThkYzJ2MzlUQTFZNzFqNDBGVGs0VGNGNkZYWFd6?= =?utf-8?B?a0VqOE15bk5PUTRSWW9reFdIOW5EdFlSQVFVRnhTYTNLekFzSHIzVVRYaVJa?= =?utf-8?B?YmM1NVJ2MXpNWXVjN2FrWUxZejNOd0R0SVFuNmg2YlUwY0RvMkgyTlZDMDN3?= =?utf-8?B?WTJmM0J3NmpBdFF3ZnlIaVhDS0poWHNvWHB0MlZhM1M0SGlpZ0xDeUhGMXg2?= =?utf-8?B?MTJmOWVTQldRPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7465.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eVplajUyMStyY0pweVd0bGxRMHJmcFlBa1U3RmxNTTY5T29ySVRTblJvd2hQ?= =?utf-8?B?K3FNMG8yZjIwMUFoT1JLaG5iV3FDRWpwR0ttWHBzUVhheE9kdG8yeXJCZEV0?= =?utf-8?B?a0dMenBrUVczUzN1dFgzUnVmV3dTRDZpWm5zL0pVWkRwVzJVZ21UT3J5Rmow?= =?utf-8?B?TXpNUm5TQUlLSXJBS3g4bzJQbURKdFg3UVc1NEt4WnFwTVNXVmlKNDFYRmEy?= =?utf-8?B?SFI0aU5BVytlOGVtaGVZUXRiVzVPakZTL25LK2dhOFhKUGdtZHFPK2ZUa1BJ?= =?utf-8?B?Y1NBbjFFYkxVUHFHcVFYNUZjMmxYOC83RzYxd3pIdmdHUDFGUHZTc0xXbmM2?= =?utf-8?B?cnFPdTdBaTFvYnZMN1VYeHBlYVFhZnFyWUNPeGE1d3FIbXYwTTlLb0hGVzNw?= =?utf-8?B?QWZWaTVuZnZsRTRQVjZuOWVWd0JGNE5XZEQ1QVNXSnhFeTJVWjJWa2dZUjZt?= =?utf-8?B?eGtXb3ZtVXdKZHdzTjBVZ05PTldNbHV0NkxIMW5QL0JtcHBqWmR6UmFzUm9U?= =?utf-8?B?aWZUQWd2SVZ1S05yalVra2tuNmpRalZvSUcwdjBvVHk0MDFrWVdqdU9LU2dz?= =?utf-8?B?bGJnWnEzVEF0YWI5blA1Tzl1VFRxdmNmV3JZc2EzemNHNWhaanFQazFOMURC?= =?utf-8?B?VHptbmZvdVc1VnNucXBkdmVQRUxCLzBkZzRwYVY0MHQ1WHBwU0JWcXl1L2R1?= =?utf-8?B?RjRtRU52TE5FNmJ6cE9xN2tlL3QzR0t1WGd0KzNScEF1T3pqN3ZDQjdlVEk0?= =?utf-8?B?N00yemVLN0dzbjdKVWtaMUk4K1o4WURPeENGek1mbDZKWUJtMXgzNHJhRk5q?= =?utf-8?B?Q25WLytEZE9yRFJTRExQMXNIWEJRVHRUUzB6TWs5Tll0VHhmLzVsV2VCeS9R?= =?utf-8?B?ZzVJRS9kR1VsMHNrVk5YOEJWaE5sVTJ1bzl3MzZGOVAzWkdoKzc2elRQTVR5?= =?utf-8?B?Q1BZYTUrVHFuZmdPblY0UDUyTURZT2RwdXFpSU9aMmEzZ0R0cUhWS1FSSHdh?= =?utf-8?B?dVNsWms3SEkrYW03MGo5VU9XZk9qVTFrY0xXbHlFOG92UWR0enJhSGJVYktQ?= =?utf-8?B?R3IvdzN4c29mWlVFbFVlcC9CUm5YRGVBdnJiUktIZGMrbE13ZE5kTlUyR25p?= =?utf-8?B?RGhRbzV5WmhWL3piS1d6NUdUMmdoVTZLNW9Vd1UvdDlVMXloWmR5bldSWEpQ?= =?utf-8?B?eCtzamhpVFQvTjlzMjhlYW9zY1Z2NENFYlZqeW92UzJLekpxMFJpTEFGaDVx?= =?utf-8?B?T28xckZCTjhsalp3YkFrMTFEaTVEZFpZYTJaSkVQOXI3MzhPZHI1emJvY1U4?= =?utf-8?B?OWppMVhnQTgxa3U3cXRIZFZMdFRGck9yRGwwVVN4WkVab3NjVlFZQlpKRGVk?= =?utf-8?B?YTc4bFZGY3Z6NmxZdXpTZlM3citLUXhtSFhMeEo5TUtjaFZhSnFkWUgyTjlL?= =?utf-8?B?d0xqSUpieXFQV0hmY2hXcXdhalZXRDZFek9ZNnBOVlZRTXBKaUczT2d2RUdk?= =?utf-8?B?TEFnZVgvck9Gcmt6dFNxaDE5ZXFYYjVaQUdLc3Y1RDBJdUlVVnBVRWpLRWN1?= =?utf-8?B?Y096Tlczd282R3pPU05BQXR0VmFLcU0xK1p6dEdjZ2M1L3lJckI2L1N0TFRN?= =?utf-8?B?UlVPK2hIRUZiOG9FUnQ2SlVBdGZab3ozSHB4VzNvMmN3TTEzbVh5SVZRc0Y2?= =?utf-8?B?VlRSQmpheTUrV25PU1ZwMm5lTW1kTFlyWFArVzd3RDd5TTR5UUV0WlZoRTM3?= =?utf-8?B?UHFmeDBLQWMwU1JWRGxXTnhhVXk3NGVXb0dibzdxOXRXTnllc3VxK1NyVHFj?= =?utf-8?B?VGtnY3U1RWFnL1RWU09hTG1BU2xkS3hFd2lDSklDamdPNTZHZndNZ1hkWmsz?= =?utf-8?B?RkVIM2xlWGVSbitGSnJhdDdUa1ROY0gvcG1EeXBzWEJibktvTHBsakZGdW5T?= =?utf-8?B?cGFVcU5JOElFdHBORWdRMURERGhjRVdScWhSanhrWVZVYk5UWWNCVzluU2E2?= =?utf-8?B?cTJmNEdMWWtVL1h6RHIxUXVTeUhGUnQ5eCtOMDVQZTNLYk5VNlhsZlliQmFE?= =?utf-8?B?TXBxejRDaHAwZGNTR2RzTkNFbjB3MnczVGdwaUhqZFRIRjRjaHE3c0REOXNO?= =?utf-8?Q?0oYU3XSL5BnapLPB9UvZBDQgk?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7da80a55-2c8b-45ba-78b0-08de28c71bcc X-MS-Exchange-CrossTenant-AuthSource: MW4PR12MB7465.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2025 06:27:56.6172 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2OX33vVWLHBVvVrnpEKwTHT39Je4U875UXbQ6n+WqV0fHkPxovJ+NJF3F1WrOlSpcsfZznuGGvdCjCt9wZPtbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9100 On 11/20/2025 6:31 PM, Lance Yang wrote: > > > On 2025/11/20 14:50, Shivank Garg wrote: >> When MADV_COLLAPSE is called on file-backed mappings (e.g., executable >> text sections), the pages may still be dirty from recent writes and >> cause collapse to fail with -EINVAL. This is particularly problematic >> for freshly copied executables on filesystems, where page cache folios >> remain dirty until background writeback completes. >> >> The current code in collapse_file() triggers async writeback via >> filemap_flush() and expects khugepaged to revisit the page later. >> However, MADV_COLLAPSE is a synchronous operation where userspace >> expects immediate results. >> >> Perform synchronous writeback in madvise_collapse() before attempting >> collapse to avoid failing on first attempt. > > Thanks! > >> >> Reported-by: Branden Moore >> Closes: https://lore.kernel.org/all/4e26fe5e-7374-467c-a333-9dd48f85d7cc@amd.com >> Fixes: 34488399fa08 ("mm/madvise: add file and shmem support to MADV_COLLAPSE") >> Suggested-by: David Hildenbrand >> Signed-off-by: Shivank Garg >> --- >>   mm/khugepaged.c | 26 ++++++++++++++++++++++++++ >>   1 file changed, 26 insertions(+) >> >> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >> index 97d1b2824386..066a332c76ad 100644 >> --- a/mm/khugepaged.c >> +++ b/mm/khugepaged.c >> @@ -22,6 +22,7 @@ >>   #include >>   #include >>   #include >> +#include >>     #include >>   #include "internal.h" >> @@ -2784,6 +2785,31 @@ int madvise_collapse(struct vm_area_struct *vma, unsigned long start, >>       hstart = (start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK; >>       hend = end & HPAGE_PMD_MASK; >>   +    /* >> +     * For file-backed VMAs, perform synchronous writeback to ensure >> +     * dirty folios are flushed before attempting collapse. This avoids >> +     * failing on the first attempt when freshly-written executable text >> +     * is still dirty in the page cache. >> +     */ >> +    if (!vma_is_anonymous(vma) && vma->vm_file) { >> +        struct address_space *mapping = vma->vm_file->f_mapping; >> + >> +        if (mapping_can_writeback(mapping)) { >> +            pgoff_t pgoff_start = linear_page_index(vma, hstart); >> +            pgoff_t pgoff_end = linear_page_index(vma, hend); >> +            loff_t lstart = (loff_t)pgoff_start << PAGE_SHIFT; >> +            loff_t lend = ((loff_t)pgoff_end << PAGE_SHIFT) - 1; > > It looks like we need to hold a reference to the file here before > dropping the mmap lock :) > >             file = get_file(vma->vm_file); > > Without it, the vma could be destroyed by a concurrent munmap() while > we are waiting in filemap_write_and_wait_range(), leading to a UAF > on mapping, IIUC ... Excellent catch! Thanks for saving me from this nasty bug. I'll be more careful on file ref handling in next version. Best Regards, Shivank > >> + >> +            mmap_read_unlock(mm); >> +            mmap_locked = false; >> + >> +            if (filemap_write_and_wait_range(mapping, lstart, lend)) { > > And drop the reference :) > >                 fput(file); > > >> +                last_fail = SCAN_FAIL; >> +                goto out_maybelock; >> +            } > > Same here :) > >             fput(file); > > >> +        } >> +    } >> + >>       for (addr = hstart; addr < hend; addr += HPAGE_PMD_SIZE) { >>           int result = SCAN_FAIL; >>   > > Cheers, > Lance