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 3ECF1C02198 for ; Wed, 12 Feb 2025 15:30:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D45436B0083; Wed, 12 Feb 2025 10:30:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CF5926B0089; Wed, 12 Feb 2025 10:30:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B21B06B008A; Wed, 12 Feb 2025 10:30:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9103C6B0083 for ; Wed, 12 Feb 2025 10:30:37 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 491EF1A1FAE for ; Wed, 12 Feb 2025 15:30:37 +0000 (UTC) X-FDA: 83111679714.12.BFAE4F1 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2084.outbound.protection.outlook.com [40.107.243.84]) by imf28.hostedemail.com (Postfix) with ESMTP id 2B9F7C000B for ; Wed, 12 Feb 2025 15:30:33 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=M7r3YQ1v; spf=pass (imf28.hostedemail.com: domain of ziy@nvidia.com designates 40.107.243.84 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739374234; 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=+sZ5JOBP3Lh1Nhq7WACLDNXhzZXgRteZScnMrcyCvIo=; b=FpCUyBIreJiPZ18Gm+XXtvwT0803lM2fa5RFAkU1KVdiEPawk2K4HXlmRLOZEQWNjwsg5x gTXq6tr1CiA8s1cxZdn06XotzyK/LHhIusCOPiNpvGbGIxVxmFnWnper3MOrvKI+TQu3ye uM9kD1gvpvSluIF/JoyR2Cgt2wgLBkU= ARC-Authentication-Results: i=2; imf28.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=M7r3YQ1v; spf=pass (imf28.hostedemail.com: domain of ziy@nvidia.com designates 40.107.243.84 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739374234; a=rsa-sha256; cv=pass; b=3UbejnQPEGP5S3xs4eGIaZJq3NWMDG8pd9G7tRxYVnuQdt3b5k2ieSJU8gQPNOyMbELD5W B7dh/0sk9FXop9jQvm9HZX2jhRYTCDNuyoWTMUgel8xI/6xWy8QqhYqbuCZSfCuQ0b+1hf LKGAZBDdSylV9/UQoKQeztvv8H7XzB4= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TmCrkDMJKKma3Ap6n/+wkzOjOvAACMmNokwBLvDzJ5apyiwp1mZWwFluDaznuFW1++LW4wzylp3v4G/LIh/fwIYGlM9KVujC/tzr/f0m4DITaxL8qgl48//E9w0Vo5ZA5u9QccsFNaJ7RLT4wQLeSS3poJcB9DWYZUriCpDI336Cpy731RpIAQA7pYbg8QyspXKNPMKN/l4uKH6YF7uSjDJES0vZuKs0tfm0wNfoBdVHe7bNSB80VWL6EY5+YXx4F69pSSPaaN1xdSeOVoaGMduBPbuZ9k0GozY1+rijxOfSuXLpUVCTFtvHy7UEFUpBjYOcUZ86aXyY6dEbq6QvcA== 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=+sZ5JOBP3Lh1Nhq7WACLDNXhzZXgRteZScnMrcyCvIo=; b=HGe+T3UvkjR3wnwTyH/dLZOIETo7tM/og6+84WnGPeFpmxbQYaVAG4A2afFmYCQJv75kyqrHzQsDGhW+ZtUDzosAdVL8UTzAX8Pe7NHjy8tNSCCkBp+eM3YUXnACIEid8TGAcgXOrUCQ1eXjAdYoJWl9Dnt2pyrQ+4bhaXA13W5Rl3u0WUuYzYD3iHmj69UJ3fXQZFh99fZ9Au+1p1GjA6Sx5uZzMMFNeKTDDSv4+/c7iiD0Nx1lD5N7zSQZMe4w5uX17HvTxLskgKOuV7yZQD77V+T5KFzKclPN9eHFXq35ORcAIvnSc1HOby76exTUdwPlKv4Hb9dE8ZSU7HnQcw== 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=+sZ5JOBP3Lh1Nhq7WACLDNXhzZXgRteZScnMrcyCvIo=; b=M7r3YQ1vGcTlpo27uU/8g3NPqpMWLc25YkJs3IyN4lsbR/8wRQOEGYwwNcG5x7rrslOX7IxFvjR0WspDJRvATtprD8HrB3Rs0ZbK9v8txFZHGMz3A3+QhjdYAt3UmC+cT0LuqtW8hg6KxTy91joG/zLphL7Jd0ggLzuVZXZyqXbx7Ep2Eol2L75UiWLz/tw1aAaJPG9rA16SzwpLXYPas5lOA9Lk7Run8G6FQlTSmnZg6kh0Ozo7IZ5Vath5LhFrnKnZmdl+HjHLUAwFoHeHr9SHPRzTGOIZPGXJ7MDW7qrtjRUYfYRNuVrJro7wnvKpZsC6dKfbiDHjLQuvlfBFEA== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by PH7PR12MB7020.namprd12.prod.outlook.com (2603:10b6:510:1ba::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Wed, 12 Feb 2025 15:30:30 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.013; Wed, 12 Feb 2025 15:30:29 +0000 From: Zi Yan To: Dan Carpenter Cc: linux-mm@kvack.org Subject: Re: [bug report] mm/huge_memory: add two new (not yet used) functions for folio_split() Date: Wed, 12 Feb 2025 10:30:26 -0500 X-Mailer: MailMate (2.0r6222) Message-ID: In-Reply-To: <2afe3d59-aca5-40f7-82a3-a6d976fb0f4f@stanley.mountain> References: <2afe3d59-aca5-40f7-82a3-a6d976fb0f4f@stanley.mountain> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BYAPR05CA0069.namprd05.prod.outlook.com (2603:10b6:a03:74::46) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|PH7PR12MB7020:EE_ X-MS-Office365-Filtering-Correlation-Id: 00ca7846-3cdd-4dbb-7e76-08dd4b7a2e9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UEZqOGtFTWNmT2xpaWt0cTJyTVZaK0pBVmRid1piL2p4NzNYNXhGM05OTysv?= =?utf-8?B?ZEVQY0l0T2x3S2ZkSUxuT21HYlhUcFB3YndlYnE2ZHdGWldudmJDTmZUa0tO?= =?utf-8?B?WnZFa0JYU01pdVpuWm4ya2pnTVgxVWVxdVFPSmhFdDJLcEE2SzFaN3RCdGFE?= =?utf-8?B?T3FieW1lengvTzY0anpCTituNFZKRmJhdHlqeXhoM3ZmQmxMakVkdXJaZDR2?= =?utf-8?B?WXJTd0dLTEpKaHlWdjNYT0lQOCtBcHNUV1EyUU9UWDhwM0ZUVFU4SjdRMG5u?= =?utf-8?B?M0FuZW01L3JsVGJOQUR0ZEdZTHArRnlZdXp6OFBEMGdUMjd5QklNcVJKR2ky?= =?utf-8?B?NTBHanJPUEpzeUlOK2FaOFFDdXdrUHVFaUlSQmQrVmFJTy9aOC9JRXlEeFhs?= =?utf-8?B?RlI4THdEb2N0U3piUklaRmE4cy91RUc1aTRkZ1NIUFdkWU1rOWZJbU9xYjF2?= =?utf-8?B?V2pPaHlObzFPSGs0QUtuSklSNEtnakVXbTl1bjV0RlJ3TzZtNGdHZzYrbEFM?= =?utf-8?B?Y0JrYnhmVVd5WHZEck5kSy9qOTUyallCUU00UzhOcEQrQ1p0YmJSQjZWWGpM?= =?utf-8?B?M2JaSzhabnozTnFXb1RBdWZxcjhFOURDN2ZSaTFJVkhZOS9zVndKSzFxbmxr?= =?utf-8?B?V2RvZlFWNWVjbjlXcTN0R2lJMGFpeW5aL0VJWWh2VnZqci85eW1FU3RWRjBN?= =?utf-8?B?RjE3WTBwRTg0NnRFSEh2R0pzMFBuZFRNQUVLaGJIRzh0YnluRHVVcFZOb2pP?= =?utf-8?B?TjlOemlmU2pzR2ZmbjRwYnVUSGZZalNOekk2U2hzdU5kQmhWbEY4c0pwMVps?= =?utf-8?B?NXRMbVVNbFVHdjdxTzI3RkFzZnZRZ2ZzWFZvQkYvdzBJY1hXVjNNNHMzVGEv?= =?utf-8?B?VFBGU3JoRTlGK0dhbjJ1SWpyamh6NEQrYkloMXdkdGIyUUV1bVp3eENKemVZ?= =?utf-8?B?S2FCS3p5NjdqSU51MkhVbzZKR3ExdkQ1anNKQ0JKbmQyNVowTVZPWjRzOC90?= =?utf-8?B?Yy94akZ4SHZMODFpSEtaYXU4OXA4eFRWa3lEckhkZEg0cG1RSFAyLzNpYkNO?= =?utf-8?B?NFliTkR3ZldGWXhtSlNVVHAxV2lVU2czN1M0ZGZuOXJqUFlWZmJ1ekZmTWE5?= =?utf-8?B?amhTaHNPdE95YU5zVGZqdFk5dm5QMGIzRjAvemdwMy9PSGgrZzJNV0tRalZF?= =?utf-8?B?ZktvYVlIbU40VkNYenJJak5XMlpFTnRSZVN6S215OTJVWVRvQ2tkaEhmNytQ?= =?utf-8?B?Q1Q5cDVKZ3Fad1A5eFFpS2FRWUhHRWlZMnNua21qNTJwU25lOEJ2NTdHZHFH?= =?utf-8?B?OHQ5RThuV3VLVFVtU1JNUWRJOGtCd1FHTStHZ0ZKa1dWVFQrT0dBcVgwSzFF?= =?utf-8?B?Zm9MeERUVEZUdVE0M09tUEtXYzVPWi9UQmtIaVgxWVB1bzE4VmtXNHpXUlhz?= =?utf-8?B?WHdhVkxlL2c5ZjJJNHlERUI5Sm1aNmJsRVMvNzJrTklRdXNPc1RwQ3ZuTThS?= =?utf-8?B?MGNkcC9Wc3BVcGlENmNFeE80TG9vU0wyYVdsQWN4a0xvb3IwK0xoeHBmQlFI?= =?utf-8?B?K2NKcHNabDlUUkxxb0xRaU1aT3k0TFhveUZLYzNxWUxMQ0dtYmIxNjladmNi?= =?utf-8?B?MVR1S3FPSGk1VWx1Qk1ZNFBrOXFvZU53RFBkVHlBZUh4a0FWN1NPYUJWYnZi?= =?utf-8?B?cnh0SDBkVk1WUzcwNzloUmRQVk13cCtGUXFkeE1rNTZya3U5M3BRb25ybWYz?= =?utf-8?B?TkpCUVN4N294UTV1RytaMm9hTjhSWVNrVnl6Vm5uN0laZXQwb1Vzb0kraFN5?= =?utf-8?B?WUxybTQ2MXN0K0JzemdHNnBIbUZCS1diTmN3WUF5cnZPY3dSdW9vTjYveHlr?= =?utf-8?Q?4N4mOp5RcKqqN?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjRyYzBnYzBjNVJhL2JRM3B1QzJyWEFmSldjV25KRXJKengxTkJtb2dHWnBT?= =?utf-8?B?SnMyRWxyV0dKUDgrUG9GRGxyeWxEdVBiS1Avekc2N1hJbStxRjlPdndKdWlH?= =?utf-8?B?QVF5NWxTVlFPRFNYTXpuc09MWDBtNU56TDZDUCtFZEo4YXl2WExJRWxia24r?= =?utf-8?B?ZG5VS0ZNVXlHbm9tQWNxTGdZOWVsSzJoVUtLN2ExSkw4Sm9BNWllUXZOVkI3?= =?utf-8?B?UkIzSHdHaGlxTVZRYTYvRnU0Y0NsL1lmM25sNVVYcEVVS0pBQ3pzck1sdW5t?= =?utf-8?B?NTVkNTNHeWpxSTQrZDd3eVhzSjlpaVA2U1FOK0RpRWhSdklHZVc2MEhqSkFT?= =?utf-8?B?UWxwNFRYSjg3UzRJR0VraHJZaHF4VHJhcXB1emdqcXhRNVdMb2FnWWh4TG1M?= =?utf-8?B?ZUhWY2VSK3pJZ2hMcVZZSlpSR2pzOURRYVRYUkFDR3l5d1Nvall3TTY3TEky?= =?utf-8?B?aFF6NHhQaEFSbWQwOENPTFRpQnVCK2pBSXJxWGRrNW9vSzdjR0ZXVmNrUWp6?= =?utf-8?B?SkFBZ1RRSlVPdTloeElrV0Z6NGZGc3VuS3RLK0dIeWlEbFZoa3hMYUU0UTVF?= =?utf-8?B?Z21mNlJEcXBYc0pRR1p0V1lISE5pSmZoSDFIa0lPSEZmY0l1TXBwQjRxNzVQ?= =?utf-8?B?aHlwczlRTWs3YnZkME8rcWY1UGhPTEdaaDdVMnFDZzR0Ykt3K3JhYm9pUGR6?= =?utf-8?B?UGpOYzY4Y2lvVjJuVVlHY1o1RHV2am1LQm1FUzM4TC84amVTQk1PYkV1QWR1?= =?utf-8?B?a3dHY0VQWkRaTncxK3NITlYzOWVpQmlsbVJKTlM1WDNJV1pGS1lzdU4yVVM4?= =?utf-8?B?RHNLWVJ4ZzZJK2VaMjhLS3BJZExNVkxPWWF4eEhNTXJWNU9kRHNCYmJrQnVJ?= =?utf-8?B?L3RvaG1OT040UThLT1g3dlNJeHVhTC9TUE5ZT0hRMnUzalBXREVlb2dqZHcy?= =?utf-8?B?VkFCaDdTVkJJSWhIdlUyUGdLa1Q5bmtER1ZlUXh1d2lSWkM3Q1U1dGlhbzMv?= =?utf-8?B?cTFrczBOZjJkdStSRGZqY3NmNVJHeTJENFVtTTlMT3RNVW9sRktsZHZLMVFK?= =?utf-8?B?M1hPVDc4SnhnVW95dGl6dGFCWFg1WGlOT2FmUXI0ako4V1NEbk1SRjdsa0ps?= =?utf-8?B?RE9jYzN1VUFqbzdvN256clBqNTNUcVFocTdmblNOQmcrNXZWMTNvVXlJUlNR?= =?utf-8?B?a25MUm1vYUdEWWkrSDdHSXpmWlFxSG9wVHJRSzhRL1k1YzNwYWdkZDFwRWpB?= =?utf-8?B?UCsxN0hmRHVnSE1DM2FjUG1XNktQaFcxRDZaOHJhMHIvWTJpZHREUHRQbVdP?= =?utf-8?B?TlZPUzBKUVJQMkw1TG1Qd0ZuVjlNTExrMkh5clpJZUNobWhieXdKcloybUNJ?= =?utf-8?B?WW5lWThVQitBcDhUL3ZCTi8zZTBWY2FzNWJBZnVhTEpFTG5temZjVnFwYzBH?= =?utf-8?B?NzlMZkFuYWxCMnpRRG5HVHg3M01leStkbXZmdzJMb1c2cDlkSERCbGI1c1Vz?= =?utf-8?B?bG9ZVjlLY1VCa3BJUS9yMVkvY25kUThIYjBJR1A2V1g5dGNkZXR1bURzeGlF?= =?utf-8?B?bGdFcGs1UkM3Tms4TjRjMXFyWVF2OUlmdFJDeXNXRTIwdFVuUExTWUxVc3Fu?= =?utf-8?B?L0ZNZFlzL09UaEdjRnU1bE56Zzl5UzZGblRTYWRsVFVWUWZVVEd0dkljaTVW?= =?utf-8?B?Y3UzVG5MbUljd0g4bE1ZWjFtdzd4WmxmS2tFZkVXUHcvS2Y4TTlTbGdYeXA1?= =?utf-8?B?STNhUFYxNUpZeGMzUG5mdlZuWE9OVFp6WjNlRjl4VjFzaVdIUzVSa0NJVHh0?= =?utf-8?B?QnhxelZxZks2dk93Ym53U0hPdWFBNzJVZ2I1MC85M0x5eFZENElzbk5JeGlO?= =?utf-8?B?QWowakFmdVhJNFlYNW9ubkdIbURoR2JKUHF0QlB2WUFkR3ArNTc3RFQ4QUhq?= =?utf-8?B?RjVKN2tDb0wzdXlyNVJOTkRDNTVXNFZBdkV2YWFGVnZBeG1sSGpxL3FMOVpM?= =?utf-8?B?Wkc1VWNxbHoxeU9VeTE5WU9XYnhSWGtMbnFKRFFsb1BzN1hXMmtjYVBydkMy?= =?utf-8?B?bHV4YWpyYS8zekNzUHFCQlQ0YU0rV1ZYVXROMkRyTHo2SEF0ckVRSkh1OGgy?= =?utf-8?Q?zY2I=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00ca7846-3cdd-4dbb-7e76-08dd4b7a2e9f X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 15:30:29.7938 (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: KGyxORRZ3K8m+nNL9QuhLbYuOCLPIUomCmGHnJ3kjC385VA6TozgrqATQHfkqfDs X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7020 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 2B9F7C000B X-Stat-Signature: a1f1h547ky84mmcpafppxyqoxs5375ay X-HE-Tag: 1739374233-798323 X-HE-Meta: U2FsdGVkX186Mrc4wrpJGxIyzYP9b5/AuLVXZriBoQoNoQ1rA6squ7KeMPhGDnaa4Ciz3mRC28AO3aLjFua75jOJ/B78m4GBCo8PYNq4ipuid5NC15Q9+/qRNC0+WJu7TjQt8uBemjDC1pmICEkH8TtAOmgmpxInMi5fE//DYVULaQNy3b35eBcUeBwQ9YPzMqOGPA9RsMCGxA2s6w8kO3oMuObWNwOUGjJOz2PEtDIAXYvmX7Xkp9hGajbf6HwX9a9+b3Zh9tUPkFW4pEN7J2O5vecricUyJ64XKc0BiEIlAr4IMIS58zJKX7JgoDrXrkUv5oKVH9ywxv4d4dOg6WQ2CBttmkauyES+b3Auh+5Df+HddATGhF2yJ5fIwiNzs/59pFPHp74viDBJs6nJf0p6vHDtAw1+wzN6DSIuFEeDY+vCWjGGQwvG9vmfpzskNn34FS9Kaph9a4mkcvSWkB9LjhbaeKe+Rz5TlL1TPywpr6sA3aSDLuE++X04EcP7mV91dm2V4BHxDK3qpyE8nxLSF2RMXHd/EB3/doUlGhmc89GaIVKBVzzy+lBUUg9n1kpNhzXcOO6MDdosw1e4SgxfELkSQSlqlqsxJAvx33SPR8JNoQhaAE1MbJ1lyNkR60ZyO0x+QENLBaGYOvCsxWE+4go7XtChB0hzzmsvcJJnqemEM/uzJAG8nyloj7KMY/F43H5+Dpmcb9JUqinL5G8WTXu9aQkpTDKTHKyWLfSCkZW6CwtQ8bwAFZTrxj13dASp2j1ji6Dk3m/ol6ksfsvBAxz251r2T+UqLSELPWA6g+dQ6m5hunSflB/LY2doxApWQF40Uu1Rk/gnoQOUtg70WuHaN6npTHPgBk+AC1RNUhjXTAZz8jqQtpTWp8cBkSrwpfTwRX2VQYNke2DhZ1Ban3oR80Z2UtZ4b7acqL7T5aUkklVKecyoZNAE0+lhA/Y/jp8A7dKv7pZu9kz 0+qI/G54 XUMrSLNYB6D3iUfkKKdSBTULLXFXMxDkD5yq2H9vn5IaIIPezBXnMmEtu2DyFO/HDMLksmYfa1SgyTaRo46MBVTjjb2EnkE6Yeq9FnTkUJYCXbWI5+ps3k47f+75BAU+D0+nny510KoFBB0tdMELUVl3zZKZsQDd9O4n501JWuRhQzrcTtfZnUnAeq3Gei78uxypGlG4uSmIF2psIT6hz4lY+KrrpRNaFg1vnwGMJaBCK/649i1LvG4s+tEwwaHUDL9DU/Y3zpottDULaTN8iDvy33iqUz6f+kAO2BSnRgmznaG5/8lerXKzfIVqtSx3rEVdsiL5UQeTPgQ9mldiKfCub7y/ekmOUYsDVx84jqFV/WCpl+aznZzEE+F8iv/Zun61dVtI8FwSbDD70+FnTv+LSwQeT9OJqJ7n1JLD+7QRjqWU= 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: Hi Dan, Thanks for reporting, but based on __split_unmmaped_folio()’s call site, mapping cannot be NULL when it is dereferenced. Is there a proper way to tell Smatch that? VM_BUG_ON(folio_test_anon(folio) || !mapping) might help the first case, but not sure about the second one. Thanks. More comments below: On 12 Feb 2025, at 10:13, Dan Carpenter wrote: > Hello Zi Yan, > > Commit 1b7b0bed44e4 ("mm/huge_memory: add two new (not yet used) > functions for folio_split()") from Feb 4, 2025 (linux-next), leads to > the following Smatch static checker warning: > > mm/huge_memory.c:3611 __split_unmapped_folio() > error: we previously assumed 'mapping' could be null (see line 3512) > > mm/huge_memory.c > 3459 static int __split_unmapped_folio(struct folio *folio, int new_order, > 3460 struct page *page, struct list_head *list, pgoff_t end, > 3461 struct xa_state *xas, struct address_space *mapping, > 3462 bool uniform_split) > 3463 { > 3464 struct lruvec *lruvec; > 3465 struct address_space *swap_cache = NULL; > 3466 struct folio *origin_folio = folio; > 3467 struct folio *next_folio = folio_next(folio); > 3468 struct folio *new_folio; > 3469 struct folio *next; > 3470 int order = folio_order(folio); > 3471 int split_order; > 3472 int start_order = uniform_split ? new_order : order - 1; > 3473 int nr_dropped = 0; > 3474 int ret = 0; > 3475 bool stop_split = false; > 3476 > 3477 if (folio_test_anon(folio) && folio_test_swapcache(folio)) { > 3478 /* a swapcache folio can only be uniformly split to order-0 */ > 3479 if (!uniform_split || new_order != 0) > 3480 return -EINVAL; > 3481 > 3482 swap_cache = swap_address_space(folio->swap); > 3483 xa_lock(&swap_cache->i_pages); > 3484 } > 3485 > 3486 if (folio_test_anon(folio)) > 3487 mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1); > 3488 > 3489 /* lock lru list/PageCompound, ref frozen by page_ref_freeze */ > 3490 lruvec = folio_lruvec_lock(folio); > 3491 > 3492 folio_clear_has_hwpoisoned(folio); > 3493 > 3494 /* > 3495 * split to new_order one order at a time. For uniform split, > 3496 * folio is split to new_order directly. > 3497 */ > 3498 for (split_order = start_order; > 3499 split_order >= new_order && !stop_split; > 3500 split_order--) { > 3501 int old_order = folio_order(folio); > 3502 struct folio *release; > 3503 struct folio *end_folio = folio_next(folio); > 3504 int status; > 3505 > 3506 /* order-1 anonymous folio is not supported */ > 3507 if (folio_test_anon(folio) && split_order == 1) > 3508 continue; > 3509 if (uniform_split && split_order != new_order) > 3510 continue; > 3511 > 3512 if (mapping) { > ^^^^^^^ > Here we assume mapping can be NULL. > > 3513 /* > 3514 * uniform split has xas_split_alloc() called before > 3515 * irq is disabled, since xas_nomem() might not be > 3516 * able to allocate enough memory. > 3517 */ > 3518 if (uniform_split) > 3519 xas_split(xas, folio, old_order); > 3520 else { > 3521 xas_set_order(xas, folio->index, split_order); > 3522 xas_split_alloc(xas, folio, folio_order(folio), > 3523 GFP_NOWAIT); > 3524 if (xas_error(xas)) { > 3525 ret = xas_error(xas); > 3526 stop_split = true; > 3527 goto after_split; > 3528 } > 3529 xas_split(xas, folio, old_order); > 3530 } > 3531 } > 3532 > 3533 /* complete memcg works before add pages to LRU */ > 3534 split_page_memcg(&folio->page, old_order, split_order); > 3535 split_page_owner(&folio->page, old_order, split_order); > 3536 pgalloc_tag_split(folio, old_order, split_order); > 3537 > 3538 status = __split_folio_to_order(folio, split_order); > 3539 > 3540 if (status < 0) { > 3541 stop_split = true; > 3542 ret = -EINVAL; > 3543 } > 3544 > 3545 after_split: > 3546 /* > 3547 * Iterate through after-split folios and perform related > 3548 * operations. But in buddy allocator like split, the folio > 3549 * containing the specified page is skipped until its order > 3550 * is new_order, since the folio will be worked on in next > 3551 * iteration. > 3552 */ > 3553 for (release = folio, next = folio_next(folio); > 3554 release != end_folio; > 3555 release = next, next = folio_next(next)) { > 3556 /* > 3557 * for buddy allocator like split, the folio containing > 3558 * page will be split next and should not be released, > 3559 * until the folio's order is new_order or stop_split > 3560 * is set to true by the above xas_split() failure. > 3561 */ > 3562 if (release == page_folio(page)) { > 3563 folio = release; > 3564 if (split_order != new_order && !stop_split) > 3565 continue; > 3566 } > 3567 if (folio_test_anon(release)) { > 3568 mod_mthp_stat(folio_order(release), > 3569 MTHP_STAT_NR_ANON, 1); > 3570 } > 3571 > 3572 /* > 3573 * Unfreeze refcount first. Additional reference from > 3574 * page cache. > 3575 */ > 3576 folio_ref_unfreeze(release, > 3577 1 + ((!folio_test_anon(origin_folio) || > 3578 folio_test_swapcache(origin_folio)) ? > 3579 folio_nr_pages(release) : 0)); > 3580 > 3581 if (release != origin_folio) > 3582 lru_add_page_tail(origin_folio, &release->page, > 3583 lruvec, list); > 3584 > 3585 /* Some pages can be beyond EOF: drop them from page cache */ > 3586 if (release->index >= end) { > 3587 if (shmem_mapping(origin_folio->mapping)) > 3588 nr_dropped += folio_nr_pages(release); > 3589 else if (folio_test_clear_dirty(release)) > 3590 folio_account_cleaned(release, > 3591 inode_to_wb(origin_folio->mapping->host)); > 3592 __filemap_remove_folio(release, NULL); > 3593 folio_put(release); > 3594 } else if (!folio_test_anon(release)) { > 3595 __xa_store(&origin_folio->mapping->i_pages, > 3596 release->index, &release->page, 0); > 3597 } else if (swap_cache) { > 3598 __xa_store(&swap_cache->i_pages, > 3599 swap_cache_index(release->swap), > 3600 &release->page, 0); > 3601 } > 3602 } > 3603 } > 3604 > 3605 unlock_page_lruvec(lruvec); > 3606 > 3607 if (folio_test_anon(origin_folio)) { > 3608 if (folio_test_swapcache(origin_folio)) > 3609 xa_unlock(&swap_cache->i_pages); > 3610 } else > --> 3611 xa_unlock(&mapping->i_pages); > > Dereferenced without checking. Only __folio_split() calls __split_unmapped_folio() and __folio_split() makes sure mapping is not NULL when !folio_test_anon(origin_folio) and locks mapping to prevent it going away. So mapping is not NULL here. > > 3612 > 3613 /* Caller disabled irqs, so they are still disabled here */ > 3614 local_irq_enable(); > 3615 > 3616 if (nr_dropped) > 3617 shmem_uncharge(mapping->host, nr_dropped); > ^^^^^^^^^^^^^ > Here too. nr_dropped is initialized to 0 and can only be increased to non zero when mapping is not NULL (see line 3587). Best Regards, Yan, Zi