From nobody Sun Feb 8 08:48:45 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 2A892314A7F; Mon, 22 Dec 2025 11:09:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401788; cv=fail; b=FGt9CQzsMTcvsHiqQoTIzWeHjys/KstbNjgnarnlpXAokszkrHX1LDjo1WsXdXKieMPesmHiInnvRgxu1QK0k/ozVEe/uOLiCVLYoFAZc0y+uNVqJEet0ZqmgzmOiaOH1Ztfv8PFAZ30S5aiU8z2ckn0+/emLtLKGQbDTfRVlPg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401788; c=relaxed/simple; bh=LlWUwy6VHw0xZilkI4/XLt7SY6jSX5eoVPqx+sqBwe8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JV0LcuzBHUpNxaudnBUMOAPwQoa5jPNypHQZ5ChShWpjWcFSQONdqj0AtoA4rG9GiK+uhEqToRJjpEUprA4eE23e/VhPPgIKiq/tecOzlDYGBGLQ5WqA7cyQRR2kfsErD2qF9d6E15YwD/bjS3Hel7qmNGz3n1Qxa3ANBwuPCsI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=fvCQIaDx; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=x585Jv4L; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fvCQIaDx"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="x585Jv4L" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMB6Nhe2055828; Mon, 22 Dec 2025 11:09:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=LutcvEd58bIa+FBZh8bC07A6Xg+DVVD42vxRy1H9Qzo=; b= fvCQIaDxvJs+cKBtgVTvjxZt4GpHkkHytam9ju7g9nZZaSFav7SGCxrFP8oPemVI woZwzI6SY1S7wMa7g/tmnEUJQUhOx1noHRF73ZD0ZeZ6KBfipnmZNGrDXWqeikeU cZXqTP/aHJMu3uhDIm9H+HfhY5HpE/EqkrkTD3hl9PWVfFMomggQKbi8Muq7BggN hjyB4rUrngDHAC5LhvHMZe8797DYWoDXQRkeEvAKRtYtFFQmTW1O1JMjBA61gHcx zqlYj2PkunLGW1L6NP75NPYmJNFoV3j/RRMfpHA1rQbwjFvt+iTN7+Vw6VKNw/Vr HFgzAwAh8o7cEof8fV9FZg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b74ttg0bg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:04 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BMALjuQ039962; Mon, 22 Dec 2025 11:09:03 GMT Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11012027.outbound.protection.outlook.com [52.101.53.27]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876nbq-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sldnBMOGUGn3VvPhh+ZLR1TikoiwXohxBJa8fgJLQCB8x/ZQRZW2dPe9Ykn8uW9Ul9ElrqO4hPNQaXN39X8F7yldTZYv5Y6GEiShh2hJ/0OOnqEUouKBueuyDUvWNg2QbaTf5YYDPdXRDKOO423u7m95T9uO2gDYfzPtAYT4vizDp6joGurbLqSiF1Dsm0m8exl2MzPCnXu7Pm0ueiS2vHiARx8zdIsvWRMV43xGS+OlLKPhkXrizo8mUNF80tMa3mmm98LmXhtdMg2IPy4deoQxeu607+v6uZ0PZ0H25USH/+sG2b3BQyFkV0Sm8QHc9APIC52KrC0xmmDSCfnVVQ== 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=LutcvEd58bIa+FBZh8bC07A6Xg+DVVD42vxRy1H9Qzo=; b=HJIjQatFyDv6Xjef7azDqTDXir2RCzRaFKhJkSpTDDgf+k2ABzl/6SSnRk9ZUgdtiilDR9WOCSpYBl8sYXn8kaF0huYb+L+zWgqnSHJWE52eQBeIKZXBrYuLCAtzNU6scQz5gHv6jSoDAxjaB7XK7oVGh6LNxzS2Q/uLRxb5ed0+O7LCWpsCN0yWesDNKraALIgXTF//BR/1+Gg6THESiDLOPt71nXJkvhs82+ni4ozNUh9tDFY2+Yhdf6F/Z29utnFBxztDkYNxfw5pft53kfXzezy+e8yPmicfxYM6QJGtg2uQZoMf+pS9/FYv3N466gyT/nd+MUNFX1KpEWS7iQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LutcvEd58bIa+FBZh8bC07A6Xg+DVVD42vxRy1H9Qzo=; b=x585Jv4LyPfmMWW28XWfbbjpUVkaABNUgLM8BhmNB+FFPx/eJuhXuhZfXFIZwQzA7WEyOh+Sz4FuHon7S1NibjDIl6YB1yR+K+a/yMCDVpfOQAAmeiD4G9bkg3l0kmvsuBBocMl6gLFKMjmP2ACdoLQ9rDVxJ0ffU7FGr4v4/nM= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:00 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:00 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev, stable@vger.kernel.org Subject: [PATCH V4 1/8] mm/slab: use unsigned long for orig_size to ensure proper metadata align Date: Mon, 22 Dec 2025 20:08:36 +0900 Message-ID: <20251222110843.980347-2-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0043.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bd::13) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b0ef00d-29a2-42ef-561a-08de414a824f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bdPDEVi7FYsreM0p9el21dswSl89tzWkB2ny5bYXFffYNvBoZrZ5yqnGakkh?= =?us-ascii?Q?J83+K5bily3qhd8E5+3QB1hHV+1E7V/7asRKLoxdQGia8xU30pOV/cjmVibe?= =?us-ascii?Q?feVTOOv2ki51v5DATGhIH3EzT9MlvE4qCX+gDqTWSvMSzBqFWn5QtCTPTbSa?= =?us-ascii?Q?/X9l5GJO/mcOW0PJUOF5htUDuxqyjJ5T2WdeG1ZX02TDpuBf7E647cnavamb?= =?us-ascii?Q?25MPVJh0lTrWazpK+6L4lx8Z6ig5uMW/6+xSs+0XxuVDQ37XX/NvxTEqy3Et?= =?us-ascii?Q?GM5LGIlZRDUlSnSI40w7AK/HCSgSrNIZ7QpFOgInZKyfOaDcQWuz+vRsU/iY?= =?us-ascii?Q?/3vI6azu1W9TFTrA2VEPJSu80z4e0odqKF0EpLjQuEjHQRfdq7T8+vfSvlLv?= =?us-ascii?Q?d8MfvgmBFyXuaP6rkEYs0cg32FlgIeqgvgppNO+lCb/wCMwO2Mpdg4hi7hyj?= =?us-ascii?Q?fcvUDIzTYO86y0xjz+BeAXdj4yIB6gEBGZbVjnSI32WXQNIfcIfiBdB5VN6/?= =?us-ascii?Q?Er82p2/qMct48cRHm2hlBVbBG972m4qRx/aBgErZbbUBtGVa6IxcocqHNk1s?= =?us-ascii?Q?yeHuxrcE7M0T6RIJzy/m/MVIhLwTvjOD2n7bMjcANxTS0ATrXx/oK11/iaOT?= =?us-ascii?Q?tTBD4QI8OK+ViEAzBzCoyjEb28I4Uron5qvrBfvp91riTQWL5o9nDs/JiZd7?= =?us-ascii?Q?X7xCnG7nc9PcYjnqCPj8viqtxDa2K2BLHKyakkcxPoDXAJAte0QDpFV5eIkS?= =?us-ascii?Q?ZVNmsoRpNN2bgjtUWn3DXSxP8kf+k/dBdec9JEZO0XA9/yeH/JDz7H1RyX40?= =?us-ascii?Q?MZmNvprFS/rptNpxT6Qj0DkOFMh29TyptScldTLEbJWWH6yhZ2A/VsHS1drS?= =?us-ascii?Q?k2ZjgUQ9SXJ/Jd/jPGyrjePCWNUFATofwI/xv8ujDLta84lP9lnydnBsuC61?= =?us-ascii?Q?G6tLtnnfxWGIaws8SXVGmjuBrkyVn5fkPrzD8ZPyiAhopDJIj+lv2BYJ5pop?= =?us-ascii?Q?PJldwp2FSN9GQab4yBBv1K/iPacrgP5mL7UcNXgMY/5xd0nf22TFbDyBXKps?= =?us-ascii?Q?0fn3syBGPKKV62pV4PuNrCn0Q0TKOWw9X1gPEot+dd+3rbEc5lUhj7HHjD9A?= =?us-ascii?Q?kOSXEDfdjX2xdEPH9ZWsfpHoT96usyhjcn4pl3+qLv3H9fz/tPw98pCh5+IL?= =?us-ascii?Q?8tfWAv5zvCPOhryVbJU43dBPC43ulj6H3aH1b67P76KVRu2BA9aGeg/Jg0+K?= =?us-ascii?Q?/1FJ9i+cvGzmiIahN+Ye0Hij5atc2aeWkR3/H+GrS4IQ3ZQvub2/wC10A3aS?= =?us-ascii?Q?drCYJtB7ninnfA5G+HrLmRG2iJKR7lO9oprgQGIceEBMu0ufd0kBsD4Ca874?= =?us-ascii?Q?36p+/ONb3CabQd1Um34g7AyEs/Kyzeq9BVQfCAMCZ8/sQb/FokFEngw8H7gT?= =?us-ascii?Q?xHEE4VfUksdFVKiqcoBQkzcS90fbkrAu?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FNcRERFWt5atM26m94ub6Y4PPT1VWpP0ihVX4gl42cHKcrME4AbM/28oib0s?= =?us-ascii?Q?HZ9w7phPyIiUqHyY+S0ol81bhyTiKYQFBEzY5UOt3bfjb9aOFlcbmjVDLXIt?= =?us-ascii?Q?MwlHUr+/rOwCpeN+hrzVHxyGMM1nRob5vGNJYTITA1QSNYYoS13xQKYJ2VzG?= =?us-ascii?Q?MJfdNzgVWnh4trr+4u2vBtr/wtp5iX8IY7S/3fuxV8aU7xFcKTXlS2evBmZw?= =?us-ascii?Q?U1rLxrZc+4z/WUKXyMaSvv7eMT90kFLXWcgtyxjObojkulTrtzXQqodm6yTt?= =?us-ascii?Q?CItOYRTSi5xzGbQlyj2xwhMuMgTqraD3KuDsv7bQTICwf3hQ3ewTZUpwbVNk?= =?us-ascii?Q?mSvbaCBj/mxohozb3sidiMT0+QQuQLZ+KYAoKkCSsF4psY3H5KDmaS1y4iWJ?= =?us-ascii?Q?aQTTYc93EGAMjyfLLuYMjzcGqrZXLZf4ZcEMYPuS7rnwd3dOuQDkztNxRjM9?= =?us-ascii?Q?EMvcAoRmTR6srOGdLjYWHBM0VEya7/mwc9XfvuPTzpyOQbZWdofXo1FrSNAu?= =?us-ascii?Q?6bY26nFXCrwWw/xwz2QBBfE5uO4fQlGDv3EAjj8vAC5lGjUTBnGWav+sc8YK?= =?us-ascii?Q?LKvDNAIz0KiS7CpFDB3Z31qSfnet24HFyqtYAKfV8ntdvl0NsJYyRWQi/bpM?= =?us-ascii?Q?1E4Qy+gn1y6y9gwrcxQuGmiM0VcshU9FWj9Qh2IqVfyjWoqVdIY3MAbGGnqx?= =?us-ascii?Q?m/rjfTmqyoN7+opHeVdGxmgPrgdaQqEhtKV+M+CmtMR+x1SYsO7I8maqBwuZ?= =?us-ascii?Q?cQTDXxGcGZuQ8nKR/c8qm9+vMPmTp3e9Qpo1teaP3Vf/rkvnC+xzVbYaiOoG?= =?us-ascii?Q?mgMwzhT5RE+koOLOMiBMB+a2WNokJv7yDu7fAaHgQc/h2KBPixq6MjsGE9it?= =?us-ascii?Q?FKT71yqZKJz/AMIJzGvVW433Go0E8bjBhVeaGkWqhrK+EozsmFMZV/Dz4peX?= =?us-ascii?Q?POb0rV07SpJ55buVWcg4ZYiBACpxkin5HU7acNM4rYMnImm94VK11ByywhCG?= =?us-ascii?Q?Nu0JAewQkYgGQeoJF+my5XNcEVwMx7RGXj18iHw1HCcvJOYQ+5eEknuKk/Oc?= =?us-ascii?Q?/vPX1tTxCX5nhRRk0d4nU1OP3NITP8M8aTT3iG6ljVFPOnIJnMuEu5wa4geE?= =?us-ascii?Q?3dnZBDtPSA4VSdRAqjQrBnxnysb9uSHfoPjIeBfpoIyIk0H3XiCgKTHECGnz?= =?us-ascii?Q?t2iFXC7H2NWhJ01OGQ0YxTlz2RPhsYpyg9Q5s4ZziMpGH2whn4s4uZTDy1GI?= =?us-ascii?Q?P3MucRsXrnU9Cv4H1JgKE9V9afFTcUa9bYDUlRX1uVjQe65JWxNfXVID49Bs?= =?us-ascii?Q?INEogxBPaZY3wWpA2Cx7kpfpcOmUiqPuen6xq9fejzOUCv3lS4v5DNX8fFpK?= =?us-ascii?Q?Ht/dF07PSYGdpIxUudm7TIiEnOM3WMU5EA2/JxKK0mfkzSK+87tYcIC628Ay?= =?us-ascii?Q?yRTWLFWn9uKsm4StZH7229PwSWavfoeo5N05Kf3WHOGqnUbyrQJVCUmr3BFq?= =?us-ascii?Q?NwP2whZLoyypa1FfzNaoHs9Dp2G696JAl6IPshVNtrRfSwZyJzvZZVixz+Ts?= =?us-ascii?Q?dZxn+cpG3VMOmzvWljRfVCT75Wc7PxICT2DAG7L145R0AMPtYTbr9hi1JJDM?= =?us-ascii?Q?t+Gq621cySZH+uxjJdXqDUsKRO/Srgay27b+5PsSB0vCKvos0crw/WsJKlt/?= =?us-ascii?Q?sQK1d79hkd3cYKpcV3ohLjXX+s3ZBjFit6JAgy0mu69DW1OChseI+LKf3mvM?= =?us-ascii?Q?wJVj+wW6Ow=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fjx+mBHX6dTw987m/XgU8YavroUxGzReoarXMjiB5pAv2hXRuWYZ/LSn74UXTfJ++gtvMZUh8/xMPhwZC9IxfNEM5uyQyDgtS7fTbZwLhb8u5PX3vE3lvsFyUPFfU8qKvLwptGANZcph6uOQMna3lwWOdl+6wreHIVQdVMGupG+mNDsOY/H5FxQo3kHlWIDTcZb735zx/M8hLTrLUL/m+pGslvw97K4gD4pUEMXhKYS8wecAQHL2LFUOt+lTdglVvz6lW0anstCfJ9zVMA/9m1k/QwZqCUazMfEpfbgisJcw0XugBwkG9GfvGljRpZuIUYl5g8ORxql1KLA4kSY/RW9ObvlyGi8LsYxINg/uSW5+Fl8WMys/VoRN+17F0fWnCtrDNIOvD0gJfmvuP9Z26IEEmkIGpRPc7lng7dCq7TDCiKjnLAOY4T6Q//emD2fs0VLZZGqDAL1GlJ1tTVcAlH9+HVNdplw0P7M1WL9/djHQMoSRAvyh5hgAA1xW6LWZTb7PiN0zO3OD3ZsGprTb/chbRpjObbRSYQU17vD4IQBad0KEPAZW7qwjZTXUEkRI+bbVMiZPQVar4g3qB6E/VMBH8GlbHy+Q9lGeLxV80R8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b0ef00d-29a2-42ef-561a-08de414a824f X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:00.3843 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: k0SCZoYlWNkC29GIKx/PKetnlsWHrjPq7WcqvrU7fWH/TORtBMSd0DN7Cod2wa3AxudzIdnLMioJzJ2EU1lSMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-ORIG-GUID: MeVxCst5-Ofv9Y3YRZ47abTnvo097w4i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfXyNp5OVblQPio 8qaAJHNy1RHp2x/h071YruOaxAAuD4i+GJ++qtYhUGEH3WJRHsFC1aziLLpyT7QfAL9GUZHSBfx ynevV2B9jZEVnTrZPkLphEgU82dR0GpBDw4zoTOOpBCETwt8MqtXUZa5BFGcymB81JpEA1VknFs b9wrpPUFL9b7yA7VKhyuZYFxGfvvhcu7oLr8+1LcF/YmU+jU+6OT1JoBYUuk5OOZUM48Eyapeyg MOSiPDYhqL1r2wpkyHo1q6Ewpj8lYRnsJD/GeObDIgqcbdc79TZc2DSv3le8xLal2jRK61VLnUD YHWFzho8oxq+JOWIwv0qXC5Ia94I2p720ziU/lcULPlpY8M+fFcdT46Fg6fR39aq/pijDXMQ1ar 4EL1Ow4AaanBBMwAampf+UxgFrOVyvnOYAbl4RzJjzNiGzIVBOHE+sHmhMSvQyGBwtwok/T9wgx dremAD7EK3KdC565d/w== X-Proofpoint-GUID: MeVxCst5-Ofv9Y3YRZ47abTnvo097w4i X-Authority-Analysis: v=2.4 cv=d8H4CBjE c=1 sm=1 tr=0 ts=694926d0 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=pGLkceISAAAA:8 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=60bAUpEqyJ0hnt3RZ0MA:9 Content-Type: text/plain; charset="utf-8" When both KASAN and SLAB_STORE_USER are enabled, accesses to struct kasan_alloc_meta fields can be misaligned on 64-bit architectures. This occurs because orig_size is currently defined as unsigned int, which only guarantees 4-byte alignment. When struct kasan_alloc_meta is placed after orig_size, it may end up at a 4-byte boundary rather than the required 8-byte boundary on 64-bit systems. Note that 64-bit architectures without HAVE_EFFICIENT_UNALIGNED_ACCESS are assumed to require 64-bit accesses to be 64-bit aligned. See HAVE_64BIT_ALIGNED_ACCESS and commit adab66b71abf ("Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS"") for more details. Change orig_size from unsigned int to unsigned long to ensure proper alignment for any subsequent metadata. This should not waste additional memory because kmalloc objects are already aligned to at least ARCH_KMALLOC_MINALIGN. Suggested-by: Andrey Ryabinin Cc: stable@vger.kernel.org Fixes: 6edf2576a6cc ("mm/slub: enable debugging memory wasting of kmalloc") Signed-off-by: Harry Yoo --- mm/slub.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index ad71f01571f0..1c747435a6ab 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -857,7 +857,7 @@ static inline bool slab_update_freelist(struct kmem_cac= he *s, struct slab *slab, * request size in the meta data area, for better debug and sanity check. */ static inline void set_orig_size(struct kmem_cache *s, - void *object, unsigned int orig_size) + void *object, unsigned long orig_size) { void *p =3D kasan_reset_tag(object); =20 @@ -867,10 +867,10 @@ static inline void set_orig_size(struct kmem_cache *s, p +=3D get_info_end(s); p +=3D sizeof(struct track) * 2; =20 - *(unsigned int *)p =3D orig_size; + *(unsigned long *)p =3D orig_size; } =20 -static inline unsigned int get_orig_size(struct kmem_cache *s, void *objec= t) +static inline unsigned long get_orig_size(struct kmem_cache *s, void *obje= ct) { void *p =3D kasan_reset_tag(object); =20 @@ -883,7 +883,7 @@ static inline unsigned int get_orig_size(struct kmem_ca= che *s, void *object) p +=3D get_info_end(s); p +=3D sizeof(struct track) * 2; =20 - return *(unsigned int *)p; + return *(unsigned long *)p; } =20 #ifdef CONFIG_SLUB_DEBUG @@ -1198,7 +1198,7 @@ static void print_trailer(struct kmem_cache *s, struc= t slab *slab, u8 *p) off +=3D 2 * sizeof(struct track); =20 if (slub_debug_orig_size(s)) - off +=3D sizeof(unsigned int); + off +=3D sizeof(unsigned long); =20 off +=3D kasan_metadata_size(s, false); =20 @@ -1394,7 +1394,7 @@ static int check_pad_bytes(struct kmem_cache *s, stru= ct slab *slab, u8 *p) off +=3D 2 * sizeof(struct track); =20 if (s->flags & SLAB_KMALLOC) - off +=3D sizeof(unsigned int); + off +=3D sizeof(unsigned long); } =20 off +=3D kasan_metadata_size(s, false); @@ -7949,7 +7949,7 @@ static int calculate_sizes(struct kmem_cache_args *ar= gs, struct kmem_cache *s) =20 /* Save the original kmalloc request size */ if (flags & SLAB_KMALLOC) - size +=3D sizeof(unsigned int); + size +=3D sizeof(unsigned long); } #endif =20 --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 78C4D314A7F; Mon, 22 Dec 2025 11:10:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401846; cv=fail; b=pHX/tN2vFjd7rzhiIf9Arz0kxHmtxEFDJo7ijhmqZwduO+0c8QvAd8taqKHClv6IeAha2xaFAw8xV7c/MxBNNcviDS8ilg9UQSJytQoFEsDiYlDJMQpSMMubt3/XoTcJaHhV/7607yWnDWHr/g4e5lz8rtFhXSWchr7qgCFZrU0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401846; c=relaxed/simple; bh=op4WBracsGJuEPD0pzkd1nH0iMYCIsp0rv+usq6ah2g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fyzvqfmY79SVmewG2tBZ5qRuGTai98z05yIpYQFkcypFRsNG8YzeVcWr8LH5cXv1q6GJWMbqJWuPhFJKIKvGhi59RcQNmjmmHj/28lqUv370RZGzF9mUKaKZoUISmMk96bwTLnv6kcX8jEvbR7RTLmZ7UtcOq7+yIBnEs9VZvoY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=MfRrwzW7; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=slCs6zR0; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="MfRrwzW7"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="slCs6zR0" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMAqmiJ2099142; Mon, 22 Dec 2025 11:09:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=srD6y+rkSUYdJ7X1QMK/Blcv7CsghWbxQOAv+AF1V18=; b= MfRrwzW7LUM9hOSL5FqdaYJoI5rlNCZBoOcSDf6Z68jthhdfG1ChgpGrZbe9ggss 4SWRKzyjBa41Lf6disfb2JnQL0c/n7H4ihgrXSis6xZGE6DwCfuf1CTmDaxp3vRs OH9Smp5c7SF8KJtk68syuRISfsxeKHqhoWVYWaUOo4U2/vuG/Xt61XlceSjTGiqn C8iG/cFgBu8VdLijw0HefMCD+/TzMf8IOhWkR79XIQBcwPloZfXIRRF6Oce7p5rW d605EG4hjnn3GiK+aReMVXwkvfNEGdN/nQfenrMj36fBAc73R3PjnXKE+E1Tm70x 6oG4CR0giSXMCLpRp8gbZA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b74mb00v7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:07 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9dLAD040041; Mon, 22 Dec 2025 11:09:06 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010008.outbound.protection.outlook.com [52.101.201.8]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876new-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kr4HbA5NVgQ6q6Rx1i1EV+J/iSdnuycTXb3b3nud11wIYIJ0YPDwmuU57TaoOIHEMjvNB0Htmdrp+AnliAhNo0IOLkV5htezTL4xv/Hf84U89YQ7oEVpNlO6JW0njX8tjUWwPU/cywN5xIb7UWx9hvik2yVAgIDVoAY6nnfKMFNtzZpP82NiGQQPw8pyGLWIZg5tE/hONIQ/wdppx2BiJZDcdUXOU9D+4sGS/68dJ5ru3TPJfeQBWjuf5aKZ3s5MGNFuYOO4UpnQ7vm/GU5P8qw9JDXnY77/jbQ+JP0STikqbTyHashTP8KTVn/SapXhnaJAUKlUmrx1ENXUXmVdtg== 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=srD6y+rkSUYdJ7X1QMK/Blcv7CsghWbxQOAv+AF1V18=; b=Nz16oRvP+mSOAcj45Fe9Z40uG9GhJqKJQrCdAb0q+8Al0q+F4EJYT2NXPyYgZo6j1yMhbUu0KB8DKcwdtnYsM96apjjRlb5/axRYKnwbkaPufVE401TnjYbTAVm9Lu1nWjHtXUsYw9uEosbxri4QDM+dfKyHGXZ6Bs8pp0pg2I+cePnRw4tISMQhm+TKDLMQ2eW9KtqeuDSpa1GWRk2NG5gKY+Kd42cKQr2tWLHT1cx9wCuDeRExVXvXiGK4ymOhzdJGvLjQMcRxB5fo2k/HY2yVL1i4zDzVNR09jTtXCwImLdWHqaI/LT5zgcpipTc74a4lIiXzSiXNYm+H3HU34g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=srD6y+rkSUYdJ7X1QMK/Blcv7CsghWbxQOAv+AF1V18=; b=slCs6zR0KX2FF3nyXwlcAJ9gliqRNgILHoCIAtc751yiaKXBe0AD+85Xvnj+ANohgSWkh+mam3jCU/1opcyvAVhliu6wUDZ2TVMUjRxexb804IJl+4PltNMTyBDCvNt4V6BfflPl2+40V2RVvCDQUrwF1gPCzf23xeIC8IU6c1I= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:04 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:04 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 2/8] mm/slab: allow specifying free pointer offset when using constructor Date: Mon, 22 Dec 2025 20:08:37 +0900 Message-ID: <20251222110843.980347-3-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0025.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b6::7) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: df774547-660e-43d5-bfb2-08de414a8487 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aYR063jl2mk9/c5elYFEs0SxcdLvyT3t0Ghb1VLSMT4ltGOv7QeLuagxUr7/?= =?us-ascii?Q?pFSiJum926s2ANc/FHTdzL6PnMdAkzuny25AETgWnO9z7DO4LGBR5HWNnSaq?= =?us-ascii?Q?VbT+JJ5vE5eHlQKJv7RixL3DuXhdV4yk2zmwLWRtDIKa/wSLfsGhHf/J7Iuk?= =?us-ascii?Q?CFb4X5duvBERLxeffnixFpcIoyKyqyAZtMDE5Gtzw/fiFN/tYeODbMJTFjV4?= =?us-ascii?Q?TGVNqVrrLc5q0e/x0VCLj45LVCLGGRpdGu8+53QSdnVKpj3OwdPxSmKy9EN4?= =?us-ascii?Q?GiwI7FiutwD6/LIJ5UEdlC9J5DMIzp4jrp6D//UuFjX56DtRVRJP4uWcGq4r?= =?us-ascii?Q?6yoVRfWj7sFWqTytOmIt2EFoqjvP1AEP9UVXWhAPxHaxfWdncq65EnoYOrzI?= =?us-ascii?Q?fDLVhJfPRp22M4BYbo0/MCRdZpXQhijvMgZXNhGg0lDpumRIMoX4cPv6AxAL?= =?us-ascii?Q?wSQ7ZXtGb+P9VhLgtuUVErzIczlq4gvtT3CH8Vb3yL5aC5Iew9OF46+yAaDB?= =?us-ascii?Q?BZ6jKah+XvL7dg8WVi73GRRGvW2iOSNHbt3+m34zxB53sk84zVeBCI42JznZ?= =?us-ascii?Q?kCNbtz80XqLcggNFn9PXogBUnMorlSdb0QY8k+NZ40ppzkZYsHM3xI6XxpXV?= =?us-ascii?Q?Qw4Fd9sWhIZE/3WE0++9ZuFDj47z0ul3KeMwDDvCPEHZxTY/O9b7DyBleD+y?= =?us-ascii?Q?0N6A/TpEDJr1vXGXUnJ0LTRbU10uiioV7fKZ0TWJqwhkeguzByJV0ZmLPzSj?= =?us-ascii?Q?1+3RkylEAQej2PXl7vdRE2mxY+c08fYzEgWKzZLQc84lY6Sccf+Zq8HgrXrg?= =?us-ascii?Q?Q0640ojHbyPYN/B0wA9cxjRrc+Yb8lTsIBnPRs/j/uGJP7jwjjKThlsmF4hd?= =?us-ascii?Q?Je/OWlvl3SNhxqaBQl6LvZB4lZ7B8sGaBhqjWcDAsmWaHhyxBcRphI7EzJcQ?= =?us-ascii?Q?wVzIBchfRgiUMTsSqbjyoYkU8vF5sEwoIOKqIxoVHZteK3p1OZwViuedpSau?= =?us-ascii?Q?MzeU5SjFzKzGd1dg8/TMJJSObI6+wjLnoz/Rqo2yqYSQGT+X6sCBmOwy3k1U?= =?us-ascii?Q?kVBW/Rxeq1GdLLQFPtWEWkTSwLP+zHsUFtvrIPVTyXqHrZoEjLCjN+Eyucww?= =?us-ascii?Q?20oS0QiK3AN/FHWD1FyhtYIOcYAYkkFoaVHAwN6Ya1UD9nsRibzJIqckBuiZ?= =?us-ascii?Q?JnVafqTIBFYPgQpyStKuXzQo+Oc+GnNsc5fSi9CxdZ3RYqmmHMg4uzqSmMHd?= =?us-ascii?Q?AXnc2tprlaMb3uBgyiBTUGOqpWhsCo3M9pzsy1MPDvsdgB3U1vwyAep8qdVx?= =?us-ascii?Q?VJXKd1fHqJGScIaXPk46TSJIzYBOUpW9b1WV249JZ6PCIxHwqcZuTa0n3+d7?= =?us-ascii?Q?60dWJIuje3zHNaM2KwYgoMrXyMiZy+hNqDrZsoeQvnwfaBt3NJuwfnlag+HK?= =?us-ascii?Q?H77xKUQFZfuMT84SQyhoMHo9A3D41YxA?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wsMg2sqLH7OTIX/wJ1hoVoUiHWD251ggaoQmhR4AHxrrPpPnujaXl9JQE16I?= =?us-ascii?Q?BcmxUnMlPB+woqDqxP4cEBEVaDGv6uUWk7jCw3qZALTLIgrbeFgd/HcGWIJt?= =?us-ascii?Q?rVaMMBZXR0/y8AzZ43csCMLTPvqR+59XVCaGImtQmtJY2IiNZWINZQTeso77?= =?us-ascii?Q?SISe0OKdlj8DkRYZr3MuJYuXGzIb/9OZfMV2sHfkIOFlQqe9kIRtQ9lFRso2?= =?us-ascii?Q?apxJEXeeNEN9XTUxwSlW93Hy/REL408Tzjj7ZBPp6pLX2QNt2ucEI7Ba1Gil?= =?us-ascii?Q?mpvlfNlbJPCWySg5VZOp6JgqsW2di4g16wj4kIVwiHBw696dxBlT2a7bsZsR?= =?us-ascii?Q?0c2o+kTlyQcA+wuwRaLw7gdSvsnrt0K6Jvy7cJ0FtwcxJXnmbeOHxa+NV0If?= =?us-ascii?Q?eI0W5tmDfkExzsH4tHBtmEP5dZycaupmIATeCSBIjJxZYdJQDx71NVy6usCA?= =?us-ascii?Q?cK/YmIv64Nf1SUbP6csmG6ivfFIapWqnjiTjVJM6r8BgG1p9bKnPT68oJ/KB?= =?us-ascii?Q?lnn7vrfe0Pd8vvhz1DTCP+3Gb3kAi7eQMUraoFUNONzPb3PEObwQ3ZXGUjbK?= =?us-ascii?Q?yNbqDgtIBnB4neVp0e38g0QzS4bwMDqDodVdcb/l7aUSMt9lVKOl+S8xPQXu?= =?us-ascii?Q?Gd2VKPoV1A+pXPco6XXJdRvtZzRmOaoxicyTwpPFp3xm3V2qgl5kCe5aO/+3?= =?us-ascii?Q?3nZhUmtgt7bJ0lVUdLnwP6UZDCh3BBSax8MSYQcENKb5qI5hHHhNf+ChDi5h?= =?us-ascii?Q?HRmnMhyagWS1aYv5T5RTRUGwikwI4VcLxYXKW1vl6fZkGOs0cSqKSkZJlT57?= =?us-ascii?Q?CWebjGV+uClCtMxRhjqY9l5Iaelz2hIQtCTbTUHJSpp5HEFT0L+Gg2FqP7Pc?= =?us-ascii?Q?Lmqwb3rDFc/2X7L+/0cgVeTK87SGwP3QwDl3vp0E7Q/zkoRl/+s1mBwIzl6K?= =?us-ascii?Q?UXDJuKap2sld8rxiNQXM923Q/xq/1t+HEDhZkuN8LuOXDlH2MVImjvv0ztf3?= =?us-ascii?Q?NMCVpMfWgivJVzooJOE69oqcYDeyzjiyq3izF2i+Rsd9HtCmihuRxTTHUCde?= =?us-ascii?Q?OOeeErD2wTXbBg/S8MA0dbuu5O1yWnCXmrNFK03MwNXC+pTTXjLdG6w5swTW?= =?us-ascii?Q?2qvEQmpshrvWjeKgVKdDB670Q/GuhI5sLhobV4iydfUQfTzGdwZ2hM3PTLby?= =?us-ascii?Q?RgzfhaKdMOM84b/A4J/1Sg0BQ5Yo8QY4hq0mgJfVTzhwgI2qD2YuIEveRsDa?= =?us-ascii?Q?vqAKkuAXG/e+AOor3aGOMyZ6C0awDuY9QF5f8WCZ8wOeWRfirDe+yeWRi1iC?= =?us-ascii?Q?C8AfikLrDOnyqsYfRUdE5/0fcX3C3pv1Vl8x+7IJvXEVYxisqqDQL2uwGeKV?= =?us-ascii?Q?N61b+RQfVN5PqgMMWQO3uiZOP/bzlbqB6c7/QRnu4QxDi29SpxTjluCz5Wxm?= =?us-ascii?Q?nsBqLa9j8kl4ZYpfpjNA/wYaIs3/HhN/1NI2CYZKI76MFZJTV1xAulLmXCt2?= =?us-ascii?Q?Upt7VAy4LvUCbJC4KM02khYGgCJ25kU7h/cLYEIqKdf/jVLKgiKUpk95vPS+?= =?us-ascii?Q?57vuQAQBwQiIp97JSaww9dN4zXcK+zN/h6uR0idlx4UPxU/PKEf7+uanx1n7?= =?us-ascii?Q?Qcey8mlY4m+Iq/4AjdHbkBg149JQHcPVNVPI2Qbbw+cDeAHfpRGB6ZEuhMWV?= =?us-ascii?Q?v/UV1vIrEhyAcKrp8wZ48mIyhP097MEk4mLb26JHHHhw3GTK9viuD8VLctoL?= =?us-ascii?Q?FKXE9o4fYQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: dDKSYFmmx7rvvRYvZLLOnRF1Xdj7ck4EgxC4GGC/aAap6y+mMNZJ0JpcFFo22w9LulBDwtGsEDysCuYJtTObMNM6SNcDG1QZ1xe+iDzunaqdVedvPV14WKMi94z4fue0q/9GBGRuKrHb3sTQ8o/vvWJk53z/Ey1xzwiUHPCpt3CHM/YsKAj/f/a3P7AceI1pVNT6w0P5Nl7CzwFTBJ4kJD6s2qkgC3lhgrB+y5/EmMnlI3JCEcHBexCHIXkNfrntDehOd3M6joodzedBP8neqY9jmVn0uE/mpNTIf9XFRGe8srmBSIxtcN+7652JOb0G86zcZqtklD/0KX9bOvScH8rmRKx30BzGk7CA8rcV9pva4t+gKRbaiEqKvZ6iJALDYy2sun9WWLeq+tS8CWATfYVMzxFQ/5kaHGEPi8avt/sZu891kuyGCMRvcXTvr2lyXW15P8BftVX10tOl2SlAXUbV1/0DX+3TewGmA94Fzav3r9x9dcM9lABybK402WfuMCb0fN9v0JH4oQK5JcWF/iqhvaeYfUY3P8HfyrqI9V/0s/68sC96kELHZg5hSva4eRWYndit+Vriv7uSC6FR06bd83Op9E8XxcEax73kh8s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: df774547-660e-43d5-bfb2-08de414a8487 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:04.1381 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IbSWJF811VPKmSTUBsJN/tR0Nx+XHX9UzYZXjIW35KQrm23C5f74XuK8AaZ+fNriQUTqb08cp/TVIGR3cC2o0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-GUID: -N-GWutV8nV9Bdrz8b7PXOVqTeXezIkp X-Proofpoint-ORIG-GUID: -N-GWutV8nV9Bdrz8b7PXOVqTeXezIkp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX5moGdtpgsElt UHW5FBxeQe8WdovtV6qTjewXzyU13sZ3KN8DnLR08jL6gMm5Uh/wgOQY2yeq53I/avSPV/y903R J+nALKAkGg21kZG+SJbMVgCVheUlB6kZ0P5TuUAs5WIr6ouAgOJbVqBsg9Z+UWl42vZaL6FZoFF BvDwQqmkU1uUplQiOfJ0b5GeeqQLoJleNaRiLttGaNbII0ajE001weg58hC7+xKxyesg44ffQUu oJyypP7uj5XPohMxe1ZMTZOsXjBmvNeY1FcgtH9KWih/wD0QG5Y9wAUA+cNNBnz8/2VlxAPkonA L8KDhXtE6cjrucc9NYdjpyBQx5nbLk7XsvwECrys71hkEWK+4ehoysGSxBlFJxKtW1yobPZwhdg zW1omgj2sJ42I/WMHWsd0G7MMN5WIZnkCoh8Ar2F6SnAcLUBlVO+RapqwrMEZxBelszzfDqxM/u eDvbtzNbBxEcl9O3GdQ== X-Authority-Analysis: v=2.4 cv=dIarWeZb c=1 sm=1 tr=0 ts=694926d3 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=GMHoajJQQyXWUxyK3F0A:9 Content-Type: text/plain; charset="utf-8" When a slab cache has a constructor, the free pointer is placed after the object because certain fields must not be overwritten even after the object is freed. However, some fields that the constructor does not initialize can safely be overwritten after free. Allow specifying the free pointer offset within the object, reducing the overall object size when some fields can be reused for the free pointer. Adjust the document accordingly. Signed-off-by: Harry Yoo --- include/linux/slab.h | 30 ++++++++++++++++-------------- mm/slab_common.c | 2 +- mm/slub.c | 6 ++++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 2482992248dc..4554c04a9bd7 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -299,24 +299,26 @@ struct kmem_cache_args { unsigned int usersize; /** * @freeptr_offset: Custom offset for the free pointer - * in &SLAB_TYPESAFE_BY_RCU caches + * in caches with &SLAB_TYPESAFE_BY_RCU or @ctor * - * By default &SLAB_TYPESAFE_BY_RCU caches place the free pointer - * outside of the object. This might cause the object to grow in size. - * Cache creators that have a reason to avoid this can specify a custom - * free pointer offset in their struct where the free pointer will be - * placed. + * By default, &SLAB_TYPESAFE_BY_RCU and @ctor caches place the free + * pointer outside of the object. This might cause the object to grow + * in size. Cache creators that have a reason to avoid this can specify + * a custom free pointer offset in their data structure where the free + * pointer will be placed. * - * Note that placing the free pointer inside the object requires the - * caller to ensure that no fields are invalidated that are required to - * guard against object recycling (See &SLAB_TYPESAFE_BY_RCU for - * details). + * For caches with &SLAB_TYPESAFE_BY_RCU, the caller must ensure that + * the free pointer does not overlay fields required to guard against + * object recycling (See &SLAB_TYPESAFE_BY_RCU for details). * - * Using %0 as a value for @freeptr_offset is valid. If @freeptr_offset - * is specified, %use_freeptr_offset must be set %true. + * For caches with @ctor, the caller must ensure that the free pointer + * does not overlay fields initialized by the constructor. + * + * Currently, only caches with &SLAB_TYPESAFE_BY_RCU or @ctor + * may specify @freeptr_offset. * - * Note that @ctor currently isn't supported with custom free pointers - * as a @ctor requires an external free pointer. + * Using %0 as a value for @freeptr_offset is valid. If @freeptr_offset + * is specified, @use_freeptr_offset must be set %true. */ unsigned int freeptr_offset; /** diff --git a/mm/slab_common.c b/mm/slab_common.c index eed7ea556cb1..c4cf9ed2ec92 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -231,7 +231,7 @@ static struct kmem_cache *create_cache(const char *name, err =3D -EINVAL; if (args->use_freeptr_offset && (args->freeptr_offset >=3D object_size || - !(flags & SLAB_TYPESAFE_BY_RCU) || + (!(flags & SLAB_TYPESAFE_BY_RCU) && !args->ctor) || !IS_ALIGNED(args->freeptr_offset, __alignof__(freeptr_t)))) goto out; =20 diff --git a/mm/slub.c b/mm/slub.c index 1c747435a6ab..0e32f6420a8a 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -7907,7 +7907,8 @@ static int calculate_sizes(struct kmem_cache_args *ar= gs, struct kmem_cache *s) s->inuse =3D size; =20 if (((flags & SLAB_TYPESAFE_BY_RCU) && !args->use_freeptr_offset) || - (flags & SLAB_POISON) || s->ctor || + (flags & SLAB_POISON) || + (s->ctor && !args->use_freeptr_offset) || ((flags & SLAB_RED_ZONE) && (s->object_size < sizeof(void *) || slub_debug_orig_size(s)))) { /* @@ -7928,7 +7929,8 @@ static int calculate_sizes(struct kmem_cache_args *ar= gs, struct kmem_cache *s) */ s->offset =3D size; size +=3D sizeof(void *); - } else if ((flags & SLAB_TYPESAFE_BY_RCU) && args->use_freeptr_offset) { + } else if (((flags & SLAB_TYPESAFE_BY_RCU) || s->ctor) && + args->use_freeptr_offset) { s->offset =3D args->freeptr_offset; } else { /* --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 54DDC13777E; Mon, 22 Dec 2025 11:09:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401781; cv=fail; b=l78LsDdTRhaEy1T6icdthFxqMZNtrCFweQp3X2zWyWUjboQNtHxHWf1OTtfB/dJf5oHNxqM+OGmQuSy6+m6fmzWCpjkTndqWU+35+T2WYAWF9LKHOR0mW+ts75YXatZb2ZPP5vEFBDoVAX/xY+buo9PRlWItgOwPmAjuVQpj6QA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401781; c=relaxed/simple; bh=WdiQQHYX9jlj+5jbO0jhAP1qqG90Ht99C96LNC5p7o0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rNLyRhTFFNZsblh6aOFFP+uKjOp3QqyyaaOx9/6INJVAy5GN0ZHyNdbxFGkN2QDFwHkEh3RvvsVhroI5KRT/ocSXcxsPcgE68nKd9sYCHYuF1VT3gLkZ23RzfG7ZEdXPqLFB/je57xwkjlkPOMUfG7ChJf5v8oUfh+aKgN8FApY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=ZuAaUSeH; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MxJ9Xbrx; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="ZuAaUSeH"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MxJ9Xbrx" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMB6emw2056286; Mon, 22 Dec 2025 11:09:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=nmT2/eimzYvizrkfiSI5RtuA0QTDsOCdCd0UhJgGl2M=; b= ZuAaUSeHQlWSm5KFR/hToHcnBGXIGTAWH1z7cpXKCjstfaRQYT5LWhpqnYNU6vwr BESPEScbPM6tJg+dGURe0S5DNjwbOh4QldnVc255CNUoBJ0EXrHKzqLUMbPeS9zo 26C6wT8YI74kOTJcQQyAvmI8z/9+X8W20ATd+lFgutKWC/y2x1y0w6WY5rEVO6E9 3hGCrCucimwyjReZ0CYPBynGewMvQoNxzqj/NPbU5SFkbs5+AhPHpxggcoGP/X5N Zf41XnUKKaqcIMF2oEMZkPfCyFMIuPvxpcXT4WPcgEGqRHZ3qSuyBRVso3GC+rE3 5T5um50bTJ5dyDOfkuSUuA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b74ttg0bn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:13 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BMA0Bkk002534; Mon, 22 Dec 2025 11:09:12 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010064.outbound.protection.outlook.com [52.101.201.64]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876mnm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VcWrDzljw6uMPui5vruHxOTQFbkpf3cx4Yt8jJbMeJFKrnnxpKFVXwNh/bF/kEXw28blrVlcbPIedrnRTFMrZ1SLzq3ckNDlyRV4atJSasvSAPmI2yjnRuvgKx/nJhm6uKN19Fg6+5Mp6qEIJOcUCEaJyYnXiNJb0qz0kjzBH4hwU8IBKEguBQ5rYZzjgfGi05OVW8OsKV2hRZUccNPzgSQUm0dYG13pxnFpYHJ0BwLB2NTAF3wZ6Rh3L+15orArJKQ0EzYN8xhL4GFwDL0BHnf8O6t9N63ZxZuiM4o/t0ShNi5oXDEt6XK7FqFOImXVaC4QpiAlGxCH6qAtCHlDfw== 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=nmT2/eimzYvizrkfiSI5RtuA0QTDsOCdCd0UhJgGl2M=; b=TkH1hakDCsAh9RfhQaDcrydL2sPWHN3MvXeueYpab+d/PheIx2uJNMXGrruRkSCeM+oMKlDTEdiAUz/TCOl/qNZCrjnZfpsXzE8u2wH877/iwElJQyVw+syDsRFaxwNzO2MJjU1Jc6/gwxMU6hcQoDh7dAwbdsr1okvbk6C5OWUKNLnvbYxc7HVeN5/kQhrm3tY8yuTZ3knX4J5sbjwdmj0UEIv1LD5A6oTGAdTns932RTKzBZyBX6Mse0zLH9Cg2L6iIMCxBFSqG699nwlsuHgio8NNECk59UpVGrKj4d0z6Sc70KMeHm4zStUf+YCGcH8tWcqmGjqfH1aneFeVRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nmT2/eimzYvizrkfiSI5RtuA0QTDsOCdCd0UhJgGl2M=; b=MxJ9XbrxIuDAoBjQKR3ZPKPfRpwrHwf+W07gJ3nu6iZ/wfSalb8zM7+xgahgyu82fUBcY4X9vCHs9f5SwZok/CgXzOa7LX9Emb6n+BBEw7kgXvrEy1cBngyK4GRcWyuiSPe6SYoqF9u30eqTkGKXw6PkmghNyQDDugr5kJPfiiY= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:08 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:08 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 3/8] ext4: specify the free pointer offset for ext4_inode_cache Date: Mon, 22 Dec 2025 20:08:38 +0900 Message-ID: <20251222110843.980347-4-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0147.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c8::7) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: a3fa5116-fa2b-42c7-8e69-08de414a86a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3ViaP8CAjojp8Uu9KvTvwzkWVvy0+h6ccdtKHIZE3MP7OVHZCq9nUk3dkOCu?= =?us-ascii?Q?FIhlpZWKG4/1f2uLptI7W91SFi9szTBgKLVTHzTjZYbK0/OD9xdPDi+OkLOP?= =?us-ascii?Q?h/7h9BeLbNEBInRfnkSYuOD48AkDj6HsQ8BONTpv2jxCW90J9KdjLE1Jv3sj?= =?us-ascii?Q?85ZCDiGXospgGORPPHNj8ju0NqbbL9/GKuhEZLlA/XbmgD7Qp7+5hVn9ExWU?= =?us-ascii?Q?zm/6uuohkBnEc0Q8OELVOE46wsP9DsRKWOKAUANKGPBBV7WnkDH1qlWcEaov?= =?us-ascii?Q?AI9j4zr96CrZLap59RsZzyL3KqqMUn1XZnUL5L56A18iYSBjxW0TxYuLfss8?= =?us-ascii?Q?bkxsWwKQokOHu4N1eZeXKTe8v46Km6kXSQBt14witiN7C5NSOMb8iKQG7Krd?= =?us-ascii?Q?Del3RiI0XTq3p5a6Gx4bQQBZt+aW3gV0+Mutj+T4GUfxK80OqE7dNqygizNv?= =?us-ascii?Q?ZdKZ3uAFMp8rQIiVTic2F6ShCVYj1op4Me/bGgVxW351n+izPPW5RA6pkNjH?= =?us-ascii?Q?QHGEKM9kk0MjMod1vASNmLAjsk3Ke3VINexyo7qvekKJGl6nQkORrFZ/KIay?= =?us-ascii?Q?Cya1TWe7lBOgk36V6vJhwqjNgAy4olluZ5tkGeRnBSA30/hCCGhmJT14Yvvq?= =?us-ascii?Q?qjIycd7g01yzeOuVuV4VIZhsDR9X11fE0AY/lVyFzlG8e4u5jQouvUrFaXVX?= =?us-ascii?Q?wHc6fdB9kgKhHOgu9oZ8Kx3RjhIH4qty3FuDZT+kc/nFNCW5PImzeyl6F6jP?= =?us-ascii?Q?cg/bciVwHJKl+50qIXcd4Hxlho/cync4E5QajWu1eofQdBF8u1gZWGXWjPyV?= =?us-ascii?Q?1mM4j2LoheuCmfNfPufC+8APbZe+ZIGctRwKm+L/p1h4fifDEWo6tiaLpnQ+?= =?us-ascii?Q?4a2hbAAE0IGMbkB+85/ldR2EdNmrKORV7RaTk5MxoXwF3PxCx3KcjLQVjX4d?= =?us-ascii?Q?iw2d9ONGUdS0HK+aEAcb0nZp0jlJUNBDjZUJPM+KWHKg2L8+MYMBJGNIiizb?= =?us-ascii?Q?FrAn+s5S5dg7E/yKyb9F+vvZcKZpi4q54DqZYrv216iu5ZWB0pzGq/x5YI4Q?= =?us-ascii?Q?/cbi+9R0TUSCG3Z4a/77saAykb0cUChnBxcmYriMWjhM31Xjcz/K6Ygjhe8C?= =?us-ascii?Q?A0iqyPUE7X391M60wIEIJI0CCC6eHpRtFD7Y2A5hJ5IEPpv32D+Q4PckecTp?= =?us-ascii?Q?lyDAiXNAV9KH/Js0bE5kqQkbqXlUFA2AeY6gS1+Cu/nfLlqD6QwjDik/fQKd?= =?us-ascii?Q?oLqhZBGGiWq1wEGqi8Fh6geYf5ezb4Hmz0ti0aliXsXtR4eSigDuyiGTJ3OE?= =?us-ascii?Q?czTXVLNg+KYE6BXTq+GvhHrNrezV9Wa9yFt1RB9xpV6Iep93SCABRh4ytYUX?= =?us-ascii?Q?xvYOQ06yzLTSS64+x+G5qOX0Q1qJuiHeYGHEtpXjGr384NY4N+juQmzpJ0Db?= =?us-ascii?Q?F+R+E+c5VgDKn9PF1uKKUQVEzfRmiRyq?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GFiVB3bKn+TrLP5W9+MHDhmlr3/ixjyt5hntHfsAJsLp7ONJ/qy5FEks+l+q?= =?us-ascii?Q?dxw0ckDl9qQWu8sBtOW4KxEfM3tMxoSLrpM+jkhNEnthaF0yQuGcPX9nwX6F?= =?us-ascii?Q?ZgqxQWEDW89DqB3t8vMqYztVkBqe+2unSVBaLGzZBVoQfA5rRHk4+AeinJQ5?= =?us-ascii?Q?Bh+ky1vwQ4cQjJ3t+kqWhXsN3HTVwU4tLSHOVxV2iBB3XvW49kw48g+xNBwf?= =?us-ascii?Q?j5V0UQr0h+3zlzBO6JtKN7ts6FkAUd8zz8qRKfEPz9sPCg7A4TKlsiN13skQ?= =?us-ascii?Q?tTcrjRkV/LX3ytuIzntzpg5E7bcUJtr9U2hXaGQg5MKixHRmhR1RbcNZNR45?= =?us-ascii?Q?AiderJNIauOryyVYOSxCtnczTfcLXkso2Dn/JZCY8PPt2dwUiRW3aaVeKcbM?= =?us-ascii?Q?BG7oJ6RGcskvHCGUKxcfram26fZ+ABN5WtTJqKs6C6LY3Xmo6pFRALjLF1VS?= =?us-ascii?Q?fRVR9vSFFmcFg5rUIh525OEw//aVhZRN9PFRtZqFse+n9iSov3dwrYJxUbBG?= =?us-ascii?Q?y9Ng9UG3wjtqvz0DhYWv1+2dOafIMrBnbI8+k8qUQeYqh4WDyNeArw1fjIht?= =?us-ascii?Q?TDcB8v0cB5GVkns6GIaROQOd+1k6KRBGK7llnjy/xiQFEoPJCq5MUNSCZFIV?= =?us-ascii?Q?ybhFg81gVfBlKonHGIE6DyOX4QQEQttKzimQ2jffRxTZ1IWZ6zG4Jk+HxtQg?= =?us-ascii?Q?MS53j3T7hnS2ZN8kB6qLRJe3FTcDC2on9R/FDjGHlCw0+c1UbDHe+WEu2VEW?= =?us-ascii?Q?FeQiHJAAAzubZ86uquez3S17ZJz+2+vdz0lxeO3D9PqoIG4GFP5rcvFs268q?= =?us-ascii?Q?COvPaE+9NlBLPi5h9vqQ/2feqS5MAUKQAv/EX7w23c7TJS7X7c4QU3hRM+2M?= =?us-ascii?Q?GyWR639XRosMWE95YAdF1JDsP5IL7cDW2CBR6lcBEp+y0QJZXCLQXHRAbNor?= =?us-ascii?Q?kdzG11pY+CP/xK2DX1JgcJ2pUzWMwmIkG55N1k5eLONU3eRdo9ztAXatuPMZ?= =?us-ascii?Q?XgkDV+2W+u2QcoJl+sOrA5MGGe3d7upIr9r7uaTWN6Fs2gyPGcHkX1ZD55e3?= =?us-ascii?Q?VBLwgKJJJzi1Ol0QnCE6iKqbdI+50i8lOTbx+G45riN9uh3aDTpX0sKDnlib?= =?us-ascii?Q?koEKfjIFkURk8c+8Zqq8f/46siFJ+nUI85WNrYQRq+XglZqO9ysVYBo/oZ4A?= =?us-ascii?Q?XrpdD3T630AtuoCWHn1HlGGUjwWQjUGmoeSHgniMBkHrE7SsRonDJq/Zev02?= =?us-ascii?Q?o1pQlmSir8q+tUTKCRxSSHiDeTHX6TIMIDdpm+c5njgRp+zQk2cxhqM7Y3gl?= =?us-ascii?Q?jmeVU6Y2ADXF1M+vyg7yTUcsuCoCf7+dT7+gb4TfMikDTWizzvWhyTGSMCw5?= =?us-ascii?Q?IdqmQAtHqpFPDBIsy5Vbea3OiYO4LvVy+ewLxvRfz6dyiOpjKvRUPOrcZu+I?= =?us-ascii?Q?K+ImWuyfbBKPgw3BeBDuAmj/XcAxai4xNepUtcdDl8ni0rc7BcQCT+LMW6DN?= =?us-ascii?Q?IZkAWrVGqDHwq9l6bY3QcDuORzFi4SG/1v5QWhY52GCLTUd9H8756S/y7SBq?= =?us-ascii?Q?DmjPe/K6MhqFh51co6MIkHB9TSMfEKjbM5ugJok1qBAfssak84nDlmFYuzBB?= =?us-ascii?Q?UC1IytlCeUhUhWlIVp5pX+traNP8qAR83z1AhD7NZysfaDql575zqxT+rWl3?= =?us-ascii?Q?NnY6egPdBZsLbb216uEB9b6lTQwlvD/6kCqbFDWvkTrEhIs8AE8JrjEYffVE?= =?us-ascii?Q?qSR+HRoMXA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jTYz/GDLk00D1L3SHXIka0KLNi7qxqlyUgn/YHdBeGgViJ4WM8Toks56KZ/nWdvXaT7QhTiRiWfNdcMSW/DB+1SikixPRI3J0kK3jJ7prNUxaKdapG0GeSpJyU/xkGAaU/c0zjnlN9fCB5Kl6VlbBUDTjV64bY6qr8M4OtzQrx+NTGNGoySMML5eRmMgXoYf8GKm7hn7ahvUAtExNAs6AMIFcaJw3dA+yKDdf2iCpYt7DzwDUJz5J5QU6WCNP9rBP38hF19t5hbnXxuKnXd8CNwCroyYl1Hn0z6Z4/Kwsjv2GHoGblm425DhdP59p6eDjddV08wsbQ6CNOPerHTJQFAeewq2ANPiAzcr9GcXvQ5AiYT7dZHymU7Y5ad07xJUP2V7VhMPER+no9lX/8FT9yaMI/hyZd9mC6Y2Mwf/O4X2EVkjMonrIL8sWUaQrlSRxordEdVinDreNWlIjIJUVTRFWLnUyXL0benw6ZGVH6EkwVWTdAlRQ/0ueFFqPz2YpnIuO3CuiBGWACNOoy1umoiZaj0rhInyFkPzMHqUAVVgLzOSWAY2MT3rgeHg6Yu9sDT2V/uYBkhNwVdXcOgX9fOuD363Zy/ImXEzg4VGEU8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3fa5116-fa2b-42c7-8e69-08de414a86a4 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:07.8996 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zQlgGY5NtZurz+Sabtluz56bZFyMq4ZemSoF/l0i60lA4iP9oZOdr62OWiG8npW1zBlRXkW0chjWER1PiQZM6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxlogscore=999 phishscore=0 adultscore=0 mlxscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-ORIG-GUID: slzLxv26FAulsVDPTvJcvufPZ34lp_-m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX5dQ7Joq7D4Qb 69uKwRZYiHApIcJ7kFSBKVp6e7d6jXkvrp74yqYtA56bQxBsaesirJvL/jS4AJ/uqsDHXjsJS3d EalWILmi8vHjmfSZs16EeoQDwejsU3Gucuq6PXibVIwrxAaIglBW+V04RqHHQQlTwAzJlM6Lv7s 7Bpkv06II9VrtpBPvkv8Vb8kfK8AcVMfvcht5EEUwVE2oBSzUO7eaUZ4MAN1sPqUdk3EHsr9gYx Z5dZzX354KCmxpGSxz3cJfQo6nubssjrrXwFHw7kwg84I3dC+/6+ftkSBSOckpKlwvFRgHao/gH D64RLs5THGQqfV9wheIpAthqJqqiupWTqz2xIiqGkokXGiLl7/lgSn8RtQ5/dmsWavt2oP9a97E PdG4aXCslKnS2N4dtq0Sy+ECIa+AywDS7NJnGzUFNiDE5SqK/7tnvbhjoCr/XER9mh0PKz2sYCN PHMERE3O+MtyLHWbj+w== X-Proofpoint-GUID: slzLxv26FAulsVDPTvJcvufPZ34lp_-m X-Authority-Analysis: v=2.4 cv=d8H4CBjE c=1 sm=1 tr=0 ts=694926d9 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=47mjobULUKt9l-LCgRsA:9 Content-Type: text/plain; charset="utf-8" Convert ext4_inode_cache to use the kmem_cache_args interface and specify a free pointer offset. Since ext4_inode_cache uses a constructor, the free pointer would be placed after the object to overwriting fields used by the constructor. However, some fields such as ->i_flags are not used by the constructor and can safely be repurposed for the free pointer. Specify the free pointer offset at i_flags to reduce the object size. Signed-off-by: Harry Yoo --- fs/ext4/super.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 87205660c5d0..42580643a466 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1491,12 +1491,20 @@ static void init_once(void *foo) =20 static int __init init_inodecache(void) { - ext4_inode_cachep =3D kmem_cache_create_usercopy("ext4_inode_cache", - sizeof(struct ext4_inode_info), 0, - SLAB_RECLAIM_ACCOUNT | SLAB_ACCOUNT, - offsetof(struct ext4_inode_info, i_data), - sizeof_field(struct ext4_inode_info, i_data), - init_once); + struct kmem_cache_args args =3D { + .align =3D 0, + .useroffset =3D offsetof(struct ext4_inode_info, i_data), + .usersize =3D sizeof_field(struct ext4_inode_info, i_data), + .use_freeptr_offset =3D true, + .freeptr_offset =3D offsetof(struct ext4_inode_info, i_flags), + .ctor =3D init_once, + }; + + ext4_inode_cachep =3D kmem_cache_create("ext4_inode_cache", + sizeof(struct ext4_inode_info), + &args, + SLAB_RECLAIM_ACCOUNT | SLAB_ACCOUNT); + if (ext4_inode_cachep =3D=3D NULL) return -ENOMEM; return 0; --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 39A4C13777E; Mon, 22 Dec 2025 11:10:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401805; cv=fail; b=QIZXjDUaGPOs0YGo0PFBkgt5CJghSpYMf6pBDnXqPchWuXNBVTSYKmwVFipt5v9UAiSahTQNB0jERYaRYIZfDqM9+kGgKcHXdZkxWTdnzHoVtP8gony1Z8ZVlla6Rh7OBHo1wOlit22ZHvYoCUv/ulQzMiogZRnq39zK8iQc2fM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401805; c=relaxed/simple; bh=jlj+RPj032T1qv1lutct2uFuYjEuo+PGjzQS6wjFu8s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=nhcXcG9ns7hWoOqYqZ1c+htaEQ3+WhMqh7gzgMHyYSgAMTvJXByBjbG2sqw0VJcocbE5Dk0Agko3yzxx2qBSSdvAIrrklGfMQ60zhKf47nP3k8skBFqVDKyYazxnPpPboveoGvb/RVayFoazOAPhULgGjtCOiTYAuefvu+eS47o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=btKtn2iX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dupeM1A0; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="btKtn2iX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dupeM1A0" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMA3JMM2073891; Mon, 22 Dec 2025 11:09:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=w1LTaVCtL9+obgq0UEnAkXhGb4zJzer0+Q4yFCr1zxE=; b= btKtn2iXpuG7i76dAtjPcvQatTbG4R6hTpWxIGjH2yQGKm6wTSAcIJJaKDIZnQJT tSMQuqmU18YjKlLzkgU6ak1Jmf2KDfgqGYjFm+5a3yepnilUKkeYyl1rKZaZ2PWC OAl3i6TUOP1zPXm/tcReiKKX/oaQDIaASzRhBnA/3LpRyTba4bZhycaFt8bIXQ3k GqV3TFUb/avaQVHZHe2ICQOwdZdlOIoDEdfOOujefXoI/MNRnz8AfCcterJUWgYb Y5TySc9khU9TwGaj0yPEpQ82VvnbEzT8V2Pblb1DzBFiJtN7tBghs22RHbGi/IwU DVjUl0jNhU5T/i8ZheAffg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b73vvg286-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:21 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9Vw5h032709; Mon, 22 Dec 2025 11:09:20 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013059.outbound.protection.outlook.com [40.93.196.59]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876hyd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KxNmhJd69mLqkvo+hM8o7H/rm1aaHQw3Ri0ymsDJ+98aLCXY3oW9yVV8F0zkYV1PZWivG5SCMH/GQh+OVTAMe47R1Xlk9yOojzrrFHizWcEFeVfcetKEWmRbqB153IseSAtQM1m2VrH9Dyky/dQxVPq+xZF2kWnsMJRfmug2kMyKOJUIf7FoLlbdXooOwr4G92fAkBx0HpRfahS/VKMJZSORft4cIxCeHQjDItJoQtHOu8my620w3BzcLK4GdtEqR/wJFvMR/4qkVXGra3dCS1eU0dqBScdh4G/oCsKus2RZ0/eP1grE7n4sWpzG5p2S/Ovxd8VWiSwYb6CVIEUF7A== 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=w1LTaVCtL9+obgq0UEnAkXhGb4zJzer0+Q4yFCr1zxE=; b=Ve3Uo4Regc798IF65g+PgMu5i3NQMJvsdSenCj+cC8JCAh15NTyinTeL/1UXL9K+1s68PxDtCNXm/st0ZT+J7/BuoPlOOshpPr5G/7C/U1j9ne31sKwXKBgWSR1w/+SQpYWZOshVQOpiNsMcWEaStO/+kxIIow7DbFlDSBA+hZNUO63oyYP3F8u1AXSm2mUd60Ki/DU0w7TPVvmygKLY998N9PH3DrxfPR0ckyYTcqsuECz18VKiTAnxAtACe6xtxNXgRZrgZ6psVfld16cyiOyb7GTeHMTCZ6kMNEbUE3e7zHShnXrWCctrjlBwcvbW3mzRXnNsUJvy2QyJscv7bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w1LTaVCtL9+obgq0UEnAkXhGb4zJzer0+Q4yFCr1zxE=; b=dupeM1A0yR3OVyDxhQ8yTLiIPMGsed6uPTMtCkNgJYIgeGVEpPMJFXJg7yXWVv6Skjp2aD/+2PbQRmnGT7ldPDKrJ8JqiGUV9/zYQaqrMM7JmIfrRGMS2Hni4PKBOAuK07Un2qtof3ReEHtBnmZfjnKLpL2jdN0h3AtYBEVicXM= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:11 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:11 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 4/8] mm/slab: abstract slabobj_ext access via new slab_obj_ext() helper Date: Mon, 22 Dec 2025 20:08:39 +0900 Message-ID: <20251222110843.980347-5-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0141.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c8::10) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: fa3ee74e-65c6-45be-9fd6-08de414a88bd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UgTLtjo/gdLOtK02b9gGzwv2g8m31H/NVSzucNg+laofgRXJ1EH8NFxySr1p?= =?us-ascii?Q?6SqO86ZdEoD6KW1OLQ+TCEq+4k1VKusbVN5jcqr0AZ63T9fp+SbVBPW6mSu9?= =?us-ascii?Q?zNB1YhEdLS5psZtsOMJJIneMOg4tTN0RB0ie5Y5qO/g+h/Vcbbjprz/xFahr?= =?us-ascii?Q?iStkCJ3zrYWqj10iNm2GRxipTiJ6yg+0oyYxHUUHh3O7jdFqjDII4+LIZC8e?= =?us-ascii?Q?9DehdmMsWAn4hdwguZ713bKD1hSgLs2XFlaR1gYKd5Rt1jixTp3NIYKJuLGr?= =?us-ascii?Q?a52olsrdSNMX+I+SjFk/njuNEK4n4nUunmYy3X7ZTu2FO3BVaLv0+fEYImto?= =?us-ascii?Q?0ZVFTdg2JkyVn0H3CI2lX32Z8zRvGVBEHtOKJ3oBJCbG+tZIVsuCxN5US/x2?= =?us-ascii?Q?QzEbqpYIcwph1ePgta3s/a8cTJ5zZ8ubi6mkqLZao8EH8t+VB4hw1YyACfNb?= =?us-ascii?Q?8lGLcU9Y1BPqUUgREHcdNvKjCexqPZ7MCOpn3jtmd3IY8OdaVhFjJG9nmge8?= =?us-ascii?Q?AM+jAgI+C+qCTNYfavrfWQfGdGBOveFFmdy0BClJnucBp9ejoTAyIMOUx0xh?= =?us-ascii?Q?u/tCakz9+1o0QNSTvxqN3Olo7NImz6qizjS9g5kj6+kTtpKWza+lbmRyJl3k?= =?us-ascii?Q?2HI01gWMitO+7CrGii+sEYAUXLq6lloWLfwKrIWag/FG9z4CpLzOjVXMZcPk?= =?us-ascii?Q?j0SP/vFf+3lXjp1/FhC0zdFNRo8khsWHRKGOC22TLL9mIK2YGzdggTefu3Q3?= =?us-ascii?Q?axMgJpPdD74PUSPa2PQTx3r7wOdW9i/m3hHV9FGuWQnszxTMl8BXjpBCXIL+?= =?us-ascii?Q?VoHE25yguaPLFH2C5//PQCgQEYGF8NB7rCGnFCyT3hwVsAr5FgXkvtbeQSqi?= =?us-ascii?Q?LIHAymBSJ6KhFn7OJ8VZFkRg9zvXKlQMFyog7EMlV+zLWI4xKeSLUe+jBsy8?= =?us-ascii?Q?oOBWHMcOhEZzCtxAxsScZKOJl3B/PpfHsZylzNsgQD+G8fJcyoAlg07cE8Xi?= =?us-ascii?Q?be/BbfvlQRPgmynPX/jU4u/B4DftUxMmO7NqlCGFuPUeR/MlVW4JIu5zKXGY?= =?us-ascii?Q?tCbKgnFWUArb9rSu3JLJ0PHN64DWeZfXWzXKtZ8ifZ+GhamR1dJTmvYjKG5w?= =?us-ascii?Q?Lt/3A3n1Ofup4d+q81Lf5iznDGpN9qPxemjflDbUccY6dfLknbtLP7w7qZuq?= =?us-ascii?Q?vObQxsQXabYKi7A7ii75a5KKTAhcTUDwV9zja58eAIwQJiNN+FKEOK5rdgMW?= =?us-ascii?Q?ZIYq7hUyu4+9YKBtuWep9Da1YaoRrmLGSxvkXMXEoEKViH4Yy3zJWmAE8T5J?= =?us-ascii?Q?UWLxa9zQNVcLah3NWAFz/TZQBhznnsMjH18BEFeG1J4oahyDyRat/RDaYTQs?= =?us-ascii?Q?Jo0t37/It91UGH+/9EbFS+/go8Ex4pH5Icnkk2rkmox7jHd/8a9Qc+XXs0Mx?= =?us-ascii?Q?UeuxRRm58vSGdE98YuVoz6fUvwp9gx+p?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+em4wA7QV/Yj7upH6nHAdlmyh0PCRxTsZtWNDKtbwYl3FR9SqNj2aMA4uaIv?= =?us-ascii?Q?/zl5f+GicORXqWwVk+dygkVb71Rl6mtEHISbWLGPYoMNDQ/ppXdbxrZdeDuw?= =?us-ascii?Q?WgY/+lL/tx3MpocSatrfEMtrJKtZU6KSnYYd+P6gdLDFtdYFdxoE1Bvig6rR?= =?us-ascii?Q?3Db7sVnBPbJuJEglOGP3zvpEaOPrGc7bGk06C7vVzBWlfQFzyNZjlTjbD6rh?= =?us-ascii?Q?ILIZm8M3l3IXg1+i/LCodQzn8rPaDyq9LeaP+4SOj3px6QqHdKZ5x1oAH0JN?= =?us-ascii?Q?LOMaipPhCWgPAW/0rUntsXzH7O3UAIM5x5McFg6fl1m8tKzxAj42xKmXFkIR?= =?us-ascii?Q?wmYA5+9Fa8TKJKnIvaiBVIbEZbq1Uj7cpbDuoYwZ/xzxMqE9KI9d3wawIs4h?= =?us-ascii?Q?K/4gyFxFnfBqx5qkSN/6kuECVnoPYfekyzinEi0PTwVvulzVzZ1zzwVAuJ03?= =?us-ascii?Q?rGNVhMzuzgIQdOlqYVtcARhppgvbJa5elD3fjo45q6ZkP52+L4rqCatO/MIg?= =?us-ascii?Q?klYSTF4bt2AzqcCA661zxLgy91DKoSTMLrBIdH9fjoXB2t2xVnUK+t2MxTco?= =?us-ascii?Q?HmvdRUGiP6QnzsW+7tbrd7x8cLu/LYl4VJ8QxMzur4FloMngpNLx1Lre5iEX?= =?us-ascii?Q?rDGBmBkpODl8cwyAFDqiQaPirL8Zndbmk0Nu2ZUvvGVgyUBhUNiMGOwZ/6EZ?= =?us-ascii?Q?pqPMgQokPDqTOkTEultKz+4l8OtZwrQoSrtcK0UCVOqOk7O+vb1ClboIYgTq?= =?us-ascii?Q?rxbdu+nF2RYKStajTBXHXTMfnLpoB6+ETkYQD3mCnKLcqDQoke8kRxu+5c0u?= =?us-ascii?Q?3PMAfhQQDiylVL4wKbuGE3ZMGP/9fOD14soF/pMoYnUkDSQWOysipHIVmCk5?= =?us-ascii?Q?RxQ/CzCosMJSlgCG4jy915kIsZ0+FJhKrH5Bg/tw32GUchHqz408tlzcRfYR?= =?us-ascii?Q?axzecKTTaYi6D/SAGkxGxSG0+7uljLI0TShA93WjGYFts/FcNSE5b3S+CWz1?= =?us-ascii?Q?HS/arixZPLU2DmJzFWURgT84/uM69ljqubUHz3gYRaYC+jU7dbqb6O5g7oKP?= =?us-ascii?Q?PCye92udeU7RzV0TWQ0Kkzjm77EBHjIS3Jzd4IFwFkyKf1ZD3Jqef7DM+ZW9?= =?us-ascii?Q?nERRMkdAuKPOG5g78ml9b5udkV6b83K2ioHz3NAWwi646vPeBFeC9QodhIII?= =?us-ascii?Q?8PGbMrstlwVlQNJ/IsbGgj/JR0jorjy2XF5hHPiKtbDEXZn+09on8A2/NBpC?= =?us-ascii?Q?yPCDdbbEIW9L0MHAil4smjNFNi0oNiYducyM0MIf+PEzYXRSHTkZDGKZjAdi?= =?us-ascii?Q?Uon3jhfBXemqnwlqVYnF1Pk6k04qjVouvn9zcWUd0sOW4D3bdL3vwiBdbK3x?= =?us-ascii?Q?TccF1JkRuGTqqO4Xrw6HRGBEGkKn3o4th0rBmFIzzzZ3+ulPZCemRCv4SZpa?= =?us-ascii?Q?6vgJn6ciwWknh/dGPFb8WJ57VlTUICHuXQkn/YSMzJVIHh4rdhoLl+7nZv1D?= =?us-ascii?Q?rEn7g8MfE+a8KAqvKzHIPtQKeqMa7PSXyRgUpAItJUpSNoJOAorqUGFuNvl3?= =?us-ascii?Q?JWYma4lj1+BLuRCpxEYFAZ6gWcAQgXX/B24VdIyGThXoz9Avyd20UkB6k9JF?= =?us-ascii?Q?WRdWep7iD/2l8B7cIEWwLELKZogfN1icDvvksyQR1g48rMpSdqosGFI2tZEB?= =?us-ascii?Q?/sGtlIG8iqLlxvQFL3ugfdnHCp1s8gRSvmK02GFmmQeviPzoPLr6pzcIdWSp?= =?us-ascii?Q?YVaaKtieBw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pNsavuIm3KLwrncmtUWbuSnVfgSoC0YPplIG5XFB8zPLGX++x/Wfz2XUQHKiY4xuxiJ4OIPGjZ6xLA9rrwqMNUJCQDW2Js0ZPy1oVCfKqUg5pf7IhMIlrJJEALEjkQIv1ugdDtwtHvJkhqFoxdxm+JqiXzBLckC7/iasBZ/LmLwimoh4Cijp47ptftyWe2xjG2982xvBneFGmRV/Bi+cheM4SfeISjUEwzXIMc0agkYF647VM/TTX/OguS5M2kKdSj8T0sNjjwhAmbbAziTyeFk2hLhU8PmJIS1gkfZ9q5KvWlByVa7D7H1NM4Z5IBfucD9/NuaM+DL+3bT7WbCoC1Yy/tZTK775BabJG0oRC+A4u+RaON/9qn/VHbVyNqDXno8bgUqBEzHcZTtNx/Nc6Yfr4uzFN6rpp/4tz0DB6/eq39EsH8NYJrtHu1eCiePu9k+n2Q44z3OsfJD78SBJiqfmWulFA/vFfg/UPo18RvEQ8ftcqmLOzjXiY5DK9D+w4jxYN55xyEh8LwDbbBUnMr5USWQ5bXXzUHHVPpC280UJSeeK1DUFjLqOXnzh2ahnYR5g/uB/CQdZC/bvqffAXFYodGCQbFxalUO3pGS96KI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa3ee74e-65c6-45be-9fd6-08de414a88bd X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:11.3436 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mGcnl1+/Blm15sDdwRr7ZFWjzng5J5RvU5hviXqg75p6TzpZ8icrX97SW/LIi8o3Ba5i8ZE8cejhF/cMEoDNsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Authority-Analysis: v=2.4 cv=VeX6/Vp9 c=1 sm=1 tr=0 ts=694926e1 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=hqUfzwhSJLVLa33He1QA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX/hDYOloRmF5v 650WTF5WbHzTTFnurGBV2hhIP4mokfPRRIvabXCtw6YBE5s7dmLSIvZto/zxDv36njXceiNm/Cb 2KFw67P1r/e8hciuvs9VTVxi95an/45NZE60q56PMhSIhGUo20kAQC9/OlMmRnBAYilhfPKfmVw wf4OJCrksbq5jANcF6ogVJNNx/1G4qxqzv55GG/BNgDyaCSERQ9yNsx2XrZug2q5TnKpZX01n9T j/nTYhNhzSbp1UoyZLPATmBJ5GQ6+Mca3NxyUZb06hz0RIC33obfn/oJredu2tSKnCCG4FglnuW 4nRixPBjv8M6FjIDW1K/iB2Ipx7NnQGHSmwkX/40hW9htnRKsUcdZSGkI2M+4YYs17QBdR1WOcl hj7/5XQtuXL2/eftrqvHjSmrOhLWrlZcLRZXSpiBw7OiSNsRbYzZz1GKMy0fD9sk2joTspLHmlf zEHdDFT8fgIUuVVYmRA== X-Proofpoint-GUID: aOTvmqkXcQnhHCfDvgnIL_De-boz4eor X-Proofpoint-ORIG-GUID: aOTvmqkXcQnhHCfDvgnIL_De-boz4eor Content-Type: text/plain; charset="utf-8" Currently, the slab allocator assumes that slab->obj_exts is a pointer to an array of struct slabobj_ext objects. However, to support storage methods where struct slabobj_ext is embedded within objects, the slab allocator should not make this assumption. Instead of directly dereferencing the slabobj_exts array, abstract access to struct slabobj_ext via helper functions. Introduce a new API slabobj_ext metadata access: slab_obj_ext(slab, obj_exts, index) - returns the pointer to struct slabobj_ext element at the given index. Directly dereferencing the return value of slab_obj_exts() is no longer allowed. Instead, slab_obj_ext() must always be used to access individual struct slabobj_ext objects. Convert all users to use these APIs. No functional changes intended. Signed-off-by: Harry Yoo --- mm/memcontrol.c | 23 +++++++++++++++------- mm/slab.h | 43 +++++++++++++++++++++++++++++++++++------ mm/slub.c | 51 ++++++++++++++++++++++++++++--------------------- 3 files changed, 82 insertions(+), 35 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index be810c1fbfc3..fd9105a953b0 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2596,7 +2596,8 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct sl= ab *slab, void *p) * Memcg membership data for each individual object is saved in * slab->obj_exts. */ - struct slabobj_ext *obj_exts; + unsigned long obj_exts; + struct slabobj_ext *obj_ext; unsigned int off; =20 obj_exts =3D slab_obj_exts(slab); @@ -2604,8 +2605,9 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct sl= ab *slab, void *p) return NULL; =20 off =3D obj_to_index(slab->slab_cache, slab, p); - if (obj_exts[off].objcg) - return obj_cgroup_memcg(obj_exts[off].objcg); + obj_ext =3D slab_obj_ext(slab, obj_exts, off); + if (obj_ext->objcg) + return obj_cgroup_memcg(obj_ext->objcg); =20 return NULL; } @@ -3191,6 +3193,9 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache *= s, struct list_lru *lru, } =20 for (i =3D 0; i < size; i++) { + unsigned long obj_exts; + struct slabobj_ext *obj_ext; + slab =3D virt_to_slab(p[i]); =20 if (!slab_obj_exts(slab) && @@ -3213,29 +3218,33 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache= *s, struct list_lru *lru, slab_pgdat(slab), cache_vmstat_idx(s))) return false; =20 + obj_exts =3D slab_obj_exts(slab); off =3D obj_to_index(s, slab, p[i]); + obj_ext =3D slab_obj_ext(slab, obj_exts, off); obj_cgroup_get(objcg); - slab_obj_exts(slab)[off].objcg =3D objcg; + obj_ext->objcg =3D objcg; } =20 return true; } =20 void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, - void **p, int objects, struct slabobj_ext *obj_exts) + void **p, int objects, unsigned long obj_exts) { size_t obj_size =3D obj_full_size(s); =20 for (int i =3D 0; i < objects; i++) { struct obj_cgroup *objcg; + struct slabobj_ext *obj_ext; unsigned int off; =20 off =3D obj_to_index(s, slab, p[i]); - objcg =3D obj_exts[off].objcg; + obj_ext =3D slab_obj_ext(slab, obj_exts, off); + objcg =3D obj_ext->objcg; if (!objcg) continue; =20 - obj_exts[off].objcg =3D NULL; + obj_ext->objcg =3D NULL; refill_obj_stock(objcg, obj_size, true, -obj_size, slab_pgdat(slab), cache_vmstat_idx(s)); obj_cgroup_put(objcg); diff --git a/mm/slab.h b/mm/slab.h index e767aa7e91b0..5c75ef3d1823 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -509,10 +509,12 @@ static inline bool slab_in_kunit_test(void) { return = false; } * associated with a slab. * @slab: a pointer to the slab struct * - * Returns a pointer to the object extension vector associated with the sl= ab, - * or NULL if no such vector has been associated yet. + * Returns the address of the object extension vector associated with the = slab, + * or zero if no such vector has been associated yet. + * Do not dereference the return value directly; use slab_obj_ext() to acc= ess + * its elements. */ -static inline struct slabobj_ext *slab_obj_exts(struct slab *slab) +static inline unsigned long slab_obj_exts(struct slab *slab) { unsigned long obj_exts =3D READ_ONCE(slab->obj_exts); =20 @@ -525,7 +527,30 @@ static inline struct slabobj_ext *slab_obj_exts(struct= slab *slab) obj_exts !=3D OBJEXTS_ALLOC_FAIL, slab_page(slab)); VM_BUG_ON_PAGE(obj_exts & MEMCG_DATA_KMEM, slab_page(slab)); #endif - return (struct slabobj_ext *)(obj_exts & ~OBJEXTS_FLAGS_MASK); + + return obj_exts & ~OBJEXTS_FLAGS_MASK; +} + +/* + * slab_obj_ext - get the pointer to the slab object extension metadata + * associated with an object in a slab. + * @slab: a pointer to the slab struct + * @obj_exts: a pointer to the object extension vector + * @index: an index of the object + * + * Returns a pointer to the object extension associated with the object. + */ +static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, + unsigned long obj_exts, + unsigned int index) +{ + struct slabobj_ext *obj_ext; + + VM_WARN_ON_ONCE(!slab_obj_exts(slab)); + VM_WARN_ON_ONCE(obj_exts !=3D slab_obj_exts(slab)); + + obj_ext =3D (struct slabobj_ext *)obj_exts; + return &obj_ext[index]; } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, @@ -533,7 +558,13 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem= _cache *s, =20 #else /* CONFIG_SLAB_OBJ_EXT */ =20 -static inline struct slabobj_ext *slab_obj_exts(struct slab *slab) +static inline unsigned long slab_obj_exts(struct slab *slab) +{ + return false; +} + +static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, + unsigned int index) { return NULL; } @@ -550,7 +581,7 @@ static inline enum node_stat_item cache_vmstat_idx(stru= ct kmem_cache *s) bool __memcg_slab_post_alloc_hook(struct kmem_cache *s, struct list_lru *l= ru, gfp_t flags, size_t size, void **p); void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, - void **p, int objects, struct slabobj_ext *obj_exts); + void **p, int objects, unsigned long obj_exts); #endif =20 void kvfree_rcu_cb(struct rcu_head *head); diff --git a/mm/slub.c b/mm/slub.c index 0e32f6420a8a..84bd4f23dc4a 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2042,7 +2042,7 @@ static bool freelist_corrupted(struct kmem_cache *s, = struct slab *slab, =20 static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) { - struct slabobj_ext *slab_exts; + unsigned long slab_exts; struct slab *obj_exts_slab; =20 obj_exts_slab =3D virt_to_slab(obj_exts); @@ -2050,13 +2050,15 @@ static inline void mark_objexts_empty(struct slabob= j_ext *obj_exts) if (slab_exts) { unsigned int offs =3D obj_to_index(obj_exts_slab->slab_cache, obj_exts_slab, obj_exts); + struct slabobj_ext *ext =3D slab_obj_ext(obj_exts_slab, + slab_exts, offs); =20 - if (unlikely(is_codetag_empty(&slab_exts[offs].ref))) + if (unlikely(is_codetag_empty(ext->ref))) return; =20 /* codetag should be NULL here */ - WARN_ON(slab_exts[offs].ref.ct); - set_codetag_empty(&slab_exts[offs].ref); + WARN_ON(ext->ref.ct); + set_codetag_empty(&ext->ref); } } =20 @@ -2176,7 +2178,7 @@ int alloc_slab_obj_exts(struct slab *slab, struct kme= m_cache *s, =20 static inline void free_slab_obj_exts(struct slab *slab) { - struct slabobj_ext *obj_exts; + unsigned long obj_exts; =20 obj_exts =3D slab_obj_exts(slab); if (!obj_exts) { @@ -2196,11 +2198,11 @@ static inline void free_slab_obj_exts(struct slab *= slab) * NULL, therefore replace NULL with CODETAG_EMPTY to indicate that * the extension for obj_exts is expected to be NULL. */ - mark_objexts_empty(obj_exts); + mark_objexts_empty((struct slabobj_ext *)obj_exts); if (unlikely(READ_ONCE(slab->obj_exts) & OBJEXTS_NOSPIN_ALLOC)) - kfree_nolock(obj_exts); + kfree_nolock((void *)obj_exts); else - kfree(obj_exts); + kfree((void *)obj_exts); slab->obj_exts =3D 0; } =20 @@ -2225,26 +2227,29 @@ static inline void free_slab_obj_exts(struct slab *= slab) #ifdef CONFIG_MEM_ALLOC_PROFILING =20 static inline struct slabobj_ext * -prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p) +prepare_slab_obj_ext_hook(struct kmem_cache *s, gfp_t flags, void *p) { struct slab *slab; + unsigned long obj_exts; =20 slab =3D virt_to_slab(p); - if (!slab_obj_exts(slab) && + obj_exts =3D slab_obj_exts(slab); + if (!obj_exts && alloc_slab_obj_exts(slab, s, flags, false)) { pr_warn_once("%s, %s: Failed to create slab extension vector!\n", __func__, s->name); return NULL; } =20 - return slab_obj_exts(slab) + obj_to_index(s, slab, p); + obj_exts =3D slab_obj_exts(slab); + return slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, p)); } =20 /* Should be called only if mem_alloc_profiling_enabled() */ static noinline void __alloc_tagging_slab_alloc_hook(struct kmem_cache *s, void *object, gfp_t = flags) { - struct slabobj_ext *obj_exts; + struct slabobj_ext *obj_ext; =20 if (!object) return; @@ -2255,14 +2260,14 @@ __alloc_tagging_slab_alloc_hook(struct kmem_cache *= s, void *object, gfp_t flags) if (flags & __GFP_NO_OBJ_EXT) return; =20 - obj_exts =3D prepare_slab_obj_exts_hook(s, flags, object); + obj_ext =3D prepare_slab_obj_ext_hook(s, flags, object); /* * Currently obj_exts is used only for allocation profiling. * If other users appear then mem_alloc_profiling_enabled() * check should be added before alloc_tag_add(). */ - if (likely(obj_exts)) - alloc_tag_add(&obj_exts->ref, current->alloc_tag, s->size); + if (likely(obj_ext)) + alloc_tag_add(&obj_ext->ref, current->alloc_tag, s->size); else alloc_tag_set_inaccurate(current->alloc_tag); } @@ -2279,8 +2284,8 @@ static noinline void __alloc_tagging_slab_free_hook(struct kmem_cache *s, struct slab *slab, vo= id **p, int objects) { - struct slabobj_ext *obj_exts; int i; + unsigned long obj_exts; =20 /* slab->obj_exts might not be NULL if it was created for MEMCG accountin= g. */ if (s->flags & (SLAB_NO_OBJ_EXT | SLAB_NOLEAKTRACE)) @@ -2293,7 +2298,7 @@ __alloc_tagging_slab_free_hook(struct kmem_cache *s, = struct slab *slab, void **p for (i =3D 0; i < objects; i++) { unsigned int off =3D obj_to_index(s, slab, p[i]); =20 - alloc_tag_sub(&obj_exts[off].ref, s->size); + alloc_tag_sub(&slab_obj_ext(slab, obj_exts, off)->ref, s->size); } } =20 @@ -2352,7 +2357,7 @@ static __fastpath_inline void memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, void **= p, int objects) { - struct slabobj_ext *obj_exts; + unsigned long obj_exts; =20 if (!memcg_kmem_online()) return; @@ -2367,7 +2372,8 @@ void memcg_slab_free_hook(struct kmem_cache *s, struc= t slab *slab, void **p, static __fastpath_inline bool memcg_slab_post_charge(void *p, gfp_t flags) { - struct slabobj_ext *slab_exts; + unsigned long obj_exts; + struct slabobj_ext *obj_ext; struct kmem_cache *s; struct page *page; struct slab *slab; @@ -2408,10 +2414,11 @@ bool memcg_slab_post_charge(void *p, gfp_t flags) return true; =20 /* Ignore already charged objects. */ - slab_exts =3D slab_obj_exts(slab); - if (slab_exts) { + obj_exts =3D slab_obj_exts(slab); + if (obj_exts) { off =3D obj_to_index(s, slab, p); - if (unlikely(slab_exts[off].objcg)) + obj_ext =3D slab_obj_ext(slab, obj_exts, off); + if (unlikely(obj_ext->objcg)) return true; } =20 --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 5D4C6315D20; Mon, 22 Dec 2025 11:10:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401813; cv=fail; b=cZlOlLhF2f1CoumWO2u6rPSsuCe+jISS0xW2i8TJZgoaBeuT+8uqPyDDh50AbBZfiXv2SDQ795C/DwSduKBSuaSVCY/LW3m4Y5Pn7I4235ADA1QTowuMUmXKfwwtDOQW7g1ONkCvoRBGQpvS/U6WFMS6FQjpM90IvbziPU5DksY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401813; c=relaxed/simple; bh=+H2aTY4s+m9ETj82ik+Nr2o1q992qRBX7UqdMI6TYEA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YWfeVwiXbbM+dClSy4R9D5X44oP2dYAzgki8UgECEgfvO6NvYe8o+cSQK0Oshb0zPwAnAN/ZTXbYsPi9dnTqhsynZUziOJB/ij5o0rf6fAq67qSZDUatXjcXJdlnv4aoAc10WaEhWDvj+qomqb0wi3eWSND70lpJec8D3j6jtn8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=rmldqctN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=rMoAMZVw; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="rmldqctN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="rMoAMZVw" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMAZWNP1909108; Mon, 22 Dec 2025 11:09:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=ylU8vG/Xihj44WDXsxfjDlYJGKf66p/JMT9HIB9fQs4=; b= rmldqctNnHmJGOzPGB87J4MzgFTjgR/pcwEVgMmrx7WoUYcnk8wK7n4DWEqd4Q9p IyZjczCMqvzWb3nIia4vugsTSliyHJHyNCNjWln6XngEl5OVBaoJtEYgPsdhIhcx LdQ7PYRHIjIL6fhXM6fyDj/8fjElOaq6pi9mfIUxzwyfxtKZLP6Y/5lGRDSVS0xr msgz6gRVfXCZ+GD6nTzxhErN81KDoXbgHnJzpuEZYBkE/Fq2QCk0pJGZxCbHXDB4 /j0PWmPEH5j868KkVCRw2wci3EFYU92eBPPAH39KEkxBKo254NDdr9u3ZtTNK7YE va62MzYUn9zmmi2Mr79C5g== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b74ccg16w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:21 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9Vw5i032709; Mon, 22 Dec 2025 11:09:21 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013059.outbound.protection.outlook.com [40.93.196.59]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876hyd-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z4TfhGDlNSxy9mAY5YNSZMwdmKcQ5BdGk8OjyqHf4xgK+zdPATeD14xbC3Wwiqa8iDyRDaMyhPqMioYOZU4PUpDlIkyqnKOrSAbexBnwts53w+nbBT4ftC0JzT7OCtJ0ksRz0Vg39aSSKoTds5sHF3FnDvczg5B1Lp1KBjanLmcXbTLg0IIyHNtN0XtFZrmVPLqJAAQ9jgmNCr4A5Mu0eyKT1A2/lT9dL9cZ4/hHIy5KiFTwWnIiIiR8/AMcOFL6AlEkvx0QTe5rUHpR6yjm2GanI7kdiIRpiaHomMYgvGnHWCJixp3/761DBGrQxCrXPWHacbZnUYnCZi0h2TyPMQ== 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=ylU8vG/Xihj44WDXsxfjDlYJGKf66p/JMT9HIB9fQs4=; b=EiGgpLKKVUbAiZU3u5gyIFbpb+8a8VfJcFHsa/jB3hdU6rUsta56cgrHPJ0TTGkamdyFHalfuI8iqZ4/HzfKXqotBABIey9tfW1hFVF3ZG1asecEXuxFYR394LaLBqCHGspIJaO47Hi+nLDqWk+2bJUE09IixlsqH/6WEunVFCUGlqM/ac9ZsOALk4F8YZGKU/MeisCfjW+irPm1YSICUEYNM1J+OOaIm6gEI1vbIeUyhn1mxoxmz+oE04TmY+eBZ94OJCsRIuaf71KyWrgBNHphS9sIbzwCq33JlI2gJbeH3nzu94d9Vyj1JVV480rSn9pq1SE8E1HVHRR9hLGF1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ylU8vG/Xihj44WDXsxfjDlYJGKf66p/JMT9HIB9fQs4=; b=rMoAMZVwxj3yAptIIH8uZp8Eh6o5IlMVSpPUpYnW4i1IBD/tJQI3HtkIEvJKwQVsRRa7tgkmgldQb9HEsZvR2LhS5HZ+0EYTTLRnw7cc6HD1HTXydg7siv/5FrLcXzGolfAoOjRvuzk+uXYhWYy/1DC5Pj0FOYWfqjIb89xnl7k= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:15 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:14 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 5/8] mm/slab: use stride to access slabobj_ext Date: Mon, 22 Dec 2025 20:08:40 +0900 Message-ID: <20251222110843.980347-6-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0134.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c7::6) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: 5794a51f-e06e-444b-ec97-08de414a8adf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gNVZPkY2sOS7omIBgWGhiwSLegYyrvw20w7nZWbWLwhDc0x4MYTbB6FTmfrr?= =?us-ascii?Q?RfvbVSfX3V+5O5U6RNmLGO/uA0AhiKShN6J1Y6daH85I6awmHoC5z1WgpMWF?= =?us-ascii?Q?iF912QetSv2Xy9LIDRP/IC78tYkDQKPrHdyOIhBwE88w9kkWzpUsleo/42QJ?= =?us-ascii?Q?9MWJaRTxPFVz/lIvw66zLwmv/wcf5l16Vn8HSOqFXTU9uZUog/5oVCgwfqUR?= =?us-ascii?Q?fblspzb4vbC9fIKHE30KncMrOEGD1rAm9VJ0e2u9bGv4cPtkZKz66DkauSRa?= =?us-ascii?Q?ntUXMqz99Ay5yeNRzV91mLDgyA5QMCjg4jWDEC9ctV4I1UWBIRlA2OyzvySh?= =?us-ascii?Q?+K73iAR/yV0rBh39Rf94uGO1qn7PEG1wTjd+o4HUnZ+NkhiKzpEY8r222ITb?= =?us-ascii?Q?uXXumKOhd/4m5fRbiXGZy2376HXJw7LOE3PZEDme/dQblEGMvbUh3ivkMpmD?= =?us-ascii?Q?r0P6+njAbLdpJKuLkLIBZ0l3GXRt5VB2jMfCYgt0Epg44R9yCjqm3I6eGeDA?= =?us-ascii?Q?JTfss0h0fCXk08pcj95AhFnBOPgz7ddmKRovXmG4RGbk742/DWcLKs1bC5nQ?= =?us-ascii?Q?A+QhadgA/KXVMzcWTuM6ZZwC5L6giNVMlsqdLdu8rt4BYdr0Yd2DHo6eS96D?= =?us-ascii?Q?am5k/abzn8avSnmxvqFBmeWeaRZneHM9A80QohPkh7Cm8D+BwJMKvyM6prp2?= =?us-ascii?Q?T1GOFISRGfCqaidKaPstEuYGhnD7uH9EEzSNBM+gQ11sYVjGMJO4AxrXWyZz?= =?us-ascii?Q?uLj6oVq9gATaAe2ibTYGCqmolyTpIk4t6gt2krmbGLa3d9g85gLUeVdFC/O9?= =?us-ascii?Q?ZbScF55R9WpWEu9BojuUcJw4ukdbRW7OkCXGMNlK1rHS2Wo7gwxZt6cDOjFH?= =?us-ascii?Q?S7mzVphhAU3FbRQbodppT5QplDdnffPMexHMk4HNnoJPO6Wawve+33ToXx4F?= =?us-ascii?Q?FecSyMD2v9XAhAsj2cXEE23LDhZMtlvU9T1b0GtJh2LQfe05HthPfnpaNR9I?= =?us-ascii?Q?Xh88Bv62mRiFaDXomgxRLBJMS6dxlyONA21r17TvIe0YqrVN03GT8/1feINy?= =?us-ascii?Q?JX5ONLDHs4JYfV3kzYQUWrW2LZIi4fS8QSv6u1B/R1KpOgmuac/NCCy83LUO?= =?us-ascii?Q?zKliHIPyM7z9CwNNkb9iZri9rybzl1CNjJq1VtFagxImDT3yZvABWAUpvGde?= =?us-ascii?Q?sZeuaKjJu6GjemzNUe+fu5Kpd8671QPfbqZrHt5s+EBcjrbAsM5rnfTm5Yc2?= =?us-ascii?Q?8s8yIRnca+Qh+7lUe0T1yRGxyxf7KjvMhx28JN8XBXVYmbUktu/S65IfYY8Q?= =?us-ascii?Q?7Sbtf0iulYeef8rw2Dz8PHlq5AZxs7OfSn1KmYkkARFnxgdYzfRLP2bWEDgM?= =?us-ascii?Q?kTE6nxCL2haAJzVzrgYE2h/PbA2gA9QKOD2t7jgU2fiEAk9ESHGKMbw8lQjW?= =?us-ascii?Q?fLt2fIShrvdkVVWZfX3KkHMZqAPSzaYf?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?09HSLfa6RXSL3WpKanP3XAIPykj4t507IYi55tWqIC9BcL9updPZr9SwZVg4?= =?us-ascii?Q?GMrHYlPLzjAqWgf7JzSiUh3yu8g2FCENi+1QUpJ592ElG2Er7ts8skQ0usts?= =?us-ascii?Q?nqhsM/jGfBW8l22YgN9sNpTonp/46VvfHaOdVH2tvDF3DBl8EEmj9IF6Og8u?= =?us-ascii?Q?yhJmxGO6l+8/RRsc6QC/6yS2gXfSbSG/2LGGDV2K5eZeI9VN61a6NdEBvqCI?= =?us-ascii?Q?8MQCn5v+WVaPo63bGXJ2tK5boDAjzsfPD7o4Z4TXR9IpQkMYtzwmVxMU/KJ1?= =?us-ascii?Q?5zJcF9+SgSW2h4KH244BCKxf9rsxWtkUOzxy8jIqafB3kObQRlJT/m5R486J?= =?us-ascii?Q?bJg83tVSwUQzmbu1b5KLtSaddtSZ6TfjdNi9LGN3Wbw9Ft8s9icveP5BnmCE?= =?us-ascii?Q?+vfx0tN1leXECpD8/x8FMsxRBpyDA3kFvD+f7xibF6/1Rd8hAvwcYsJEfooy?= =?us-ascii?Q?AhLJtbEw4VYU/3k/OYxd1oQ/qgExRVCFIcI1orAmeSg71d5e1qewuBl3dldq?= =?us-ascii?Q?7kdgFpmjl7z3Pj7g9KfJwETi5NI2RxPdxZjR7lwCQ5r5UDVXNrOSvNhUe0DG?= =?us-ascii?Q?Mx0wb8c9Zopw9Vbu+8bsaWkkbVRV3IvF8+WTphIVK0Ix49RXVvS5MoFRVgkz?= =?us-ascii?Q?r06pCburUbs0ZR5Uwl9lZQEcDj/HKfTxFtbhRiBsuPrPQ6fngaDChdVxRJeR?= =?us-ascii?Q?uF8gNe3lBW7Wv1BXlzDpiNNpVJ3Zkod1KEkO9I13iG1EjbNQqfOEdBV6UibZ?= =?us-ascii?Q?SH3PHq8ZhOKC/+wuFLEjGl8ANVlaWEWbYJPGPJpSL4I3iERheDf1Bd7H0RUg?= =?us-ascii?Q?4fIBG+gRFgXx1bKC+q8bK4N2zZAsqLqrCK43mAb5VJCGYBMrm2rH4ihIqJe9?= =?us-ascii?Q?TYZIOvmPEklJkVAckHoxPlZeTEasb/XK2NmrAyEP20KiteJDZN2YfBUSm0/m?= =?us-ascii?Q?ETwi+TZEGR0bXflFNzUJWv6wYHXqbVm8AOxhEe3FkjsDV+siDa52WJZDbPEr?= =?us-ascii?Q?LkcjNJ0AVq0gDMf0CLgNrlcK446HS/nIyoxyFSjZ6/jENNC+k4A0xImAAtSt?= =?us-ascii?Q?C36j1jLrNIKvxmX00/FY3bXNhW7Hl4pI506790LOfD1D9glsgkIwVWZhKsI7?= =?us-ascii?Q?c2qpJqO6AH05FsMGmyKL7vUC5TjTRuySq3fq6slEIxQSG3bZdNUNoFlgdSLA?= =?us-ascii?Q?pio3+yujczAYXBTPWNA6TcWlkyNGM91d7e+K5mu3DYwiqWwJpuNJCjVmlhs8?= =?us-ascii?Q?nhq6pEEJnqLWCmOt91QrjCqkTh3RJx12nJhyaU5rrLXgL0Y64rft4iY3w5m5?= =?us-ascii?Q?tmqa2gBue8gAiqKGXLOxhhb4qTAymUVtiZs8K5ZiX0rdPw9j5qRn63RYyUN4?= =?us-ascii?Q?QVxtTFxbhPP6Q8OeZFjECgpgmU/m8H+8MG1CLG/JCE89zWWd3TN2v3/frS/O?= =?us-ascii?Q?0rD1h1DatcysF3yLQXWvMymnBHYd0dN7vlzK2ma9heZTS4Z1Kgnqb/W/TpYC?= =?us-ascii?Q?eDDn+/lDh2XnGVofBO24PwkF2jCEafrFfhVoDikeE2IQ7mF5Zf/yRCfLB9rg?= =?us-ascii?Q?UGD3sVCf+ZNcY3Odu/NMscUDw6gRuIRW4qqF8cCtrm5DZU2hq6X+/KQTklIq?= =?us-ascii?Q?88BBlRHhCNUtMHRKOR3pO9gNvAhLPmqLYH805+tkcGZAEG0O4EEaiabb2ebI?= =?us-ascii?Q?4IqfBTx1iMgrkNNeErHiEFwZUMox/BXj14mIuQ3GXGZRLYZIOhEZeQYqcxAg?= =?us-ascii?Q?4tl0Prsjhg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: +EvX/BbuCZq1cTVv2gp9FbqwcjPoQN4G5aqE8z6yPq65fmKo08XEEq2Ek1AAx0iMyD1jr+fX+Um1SZOE3RyIUshWgW98acaHGcjlYdQX7nOUWeQQOL7BtIOX5wkpoTCTIRMO8JGUY2YUHICKZ2fQ7FiczUc2zyKryWWJKRnwqzhX4+HTKL2raJG6h83c5fnM8ajETPO4Lh6NK4LzMAYF6rX9E+1N/c9vJf9VmRJXxYDn9JHelFNosN4/9QgLQylY/iexPYZSWRRI58i2Th+J0pzx024FqErf210tnCzXvpFRjGZjz5BBbuz8KRgIuAp0iskD+u9RGx/iNAvuKiWXDbRhaNOiKit+PuXRCpKKyzABPc7QyoIVvCRmbsGEmSRNR+7mL9A0ren0w2QGQa/SzijilK9qqlPgPcicX4I4EfDmLEPE14lU/7ECizeS+n2cYACcJl/RdG4XyG4bPnjBUjV2PzC/1NkKXrcDa522lDueRxPVTX4VzY9cqYyiDqpVdShpJKL5Irsfdl3J1DwWxLky9zUUBnLtVBMgBtH4s+w1bkNlEhhjW8eCVbji+PUY9RqU9BSCNCIuMRznWQermliBMagA8S+aoX1gtArUOEs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5794a51f-e06e-444b-ec97-08de414a8adf X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:14.9019 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LOeUZoq+YcFmN/GyXcahLEofQ1y9y5pVjZORb2u+CmH50R5I3o8jyXwQcTNqffuIKLGmf34gTX/ziibriryGrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX7rWGFhpOQ0kN aM+cjgYmVvZAtfv7y7mOBrD+HhabU6lss6apFCJxa0r3P2pxi778smvvHjs4eHDPZSdBzFupkhz o9jfUx++Ir94vphGkhcT0jsUmyth/osixLG3DrMvK0wKH/STcABnPngbOmn4uf2brD02XJ1NxTR xaPXQ+BkrYkO8eyi/RMfLeqWFvPORCN2i+yKkiB76V/rzYbRxYynjdbvSxEQ2aC0rhbzROXclB5 r+t0NY71VH36ZQEuBGQZCu4DdhRTQMW9bcCxWnrnzOONN+KQn0c/+agBdRSAQBeVxEgrmlBnvEH 9kxXmSll7T8AhI3kLAsNK/Aztwd811dPERNHRh5Xj2SLPytofkNsw5yKmekHjDAVGr7zSOwurOm p+UYsx6ZOrhle4emdkqSDJmOIWluENwOqSR7WUoIEE1SQ11BUMVj6jZ8Rq/EmNvlhqhO2RUlEj6 jMGS9Sb2khKFqLKv46g== X-Authority-Analysis: v=2.4 cv=K8cv3iWI c=1 sm=1 tr=0 ts=694926e1 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=UZPuyEf3i8-D8iXyNNYA:9 X-Proofpoint-GUID: dnB10f9jvJ4GVfRrVLzz4bo_nT0L2nee X-Proofpoint-ORIG-GUID: dnB10f9jvJ4GVfRrVLzz4bo_nT0L2nee Content-Type: text/plain; charset="utf-8" Use a configurable stride value when accessing slab object extension metadata instead of assuming a fixed sizeof(struct slabobj_ext). Store stride value in free bits of slab->counters field. This allows for flexibility in cases where the extension is embedded within slab objects. Since these free bits exist only on 64-bit, any future optimizations that need to change stride value cannot be enabled on 32-bit architectures. Suggested-by: Vlastimil Babka Reviewed-by: Suren Baghdasaryan Signed-off-by: Harry Yoo --- mm/slab.h | 37 +++++++++++++++++++++++++++++++++---- mm/slub.c | 2 ++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/mm/slab.h b/mm/slab.h index 5c75ef3d1823..38967ec663d1 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -55,6 +55,14 @@ struct freelist_counters { * that the slab was corrupted */ unsigned frozen:1; +#ifdef CONFIG_64BIT + /* + * Some optimizations use free bits in 'counters' field + * to save memory. In case ->stride field is not available, + * such optimizations are disabled. + */ + unsigned short stride; +#endif }; }; }; @@ -531,6 +539,26 @@ static inline unsigned long slab_obj_exts(struct slab = *slab) return obj_exts & ~OBJEXTS_FLAGS_MASK; } =20 +#ifdef CONFIG_64BIT +static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) +{ + slab->stride =3D stride; +} +static inline unsigned short slab_get_stride(struct slab *slab) +{ + return slab->stride; +} +#else +static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) +{ + VM_WARN_ON_ONCE(stride !=3D sizeof(struct slabobj_ext)); +} +static inline unsigned short slab_get_stride(struct slab *slab) +{ + return sizeof(struct slabobj_ext); +} +#endif + /* * slab_obj_ext - get the pointer to the slab object extension metadata * associated with an object in a slab. @@ -544,13 +572,10 @@ static inline struct slabobj_ext *slab_obj_ext(struct= slab *slab, unsigned long obj_exts, unsigned int index) { - struct slabobj_ext *obj_ext; - VM_WARN_ON_ONCE(!slab_obj_exts(slab)); VM_WARN_ON_ONCE(obj_exts !=3D slab_obj_exts(slab)); =20 - obj_ext =3D (struct slabobj_ext *)obj_exts; - return &obj_ext[index]; + return (struct slabobj_ext *)(obj_exts + slab_get_stride(slab) * index); } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, @@ -569,6 +594,10 @@ static inline struct slabobj_ext *slab_obj_ext(struct = slab *slab, return NULL; } =20 +static inline void slab_set_stride(struct slab *slab, unsigned int stride)= { } +static inline unsigned int slab_get_stride(struct slab *slab) { return 0; } + + #endif /* CONFIG_SLAB_OBJ_EXT */ =20 static inline enum node_stat_item cache_vmstat_idx(struct kmem_cache *s) diff --git a/mm/slub.c b/mm/slub.c index 84bd4f23dc4a..8ac60a17d988 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2147,6 +2147,8 @@ int alloc_slab_obj_exts(struct slab *slab, struct kme= m_cache *s, retry: old_exts =3D READ_ONCE(slab->obj_exts); handle_failed_objexts_alloc(old_exts, vec, objects); + slab_set_stride(slab, sizeof(struct slabobj_ext)); + if (new_slab) { /* * If the slab is brand new and nobody can yet access its --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 6B5D93161A2; Mon, 22 Dec 2025 11:10:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401809; cv=fail; b=thRzsSeeOqX2fRS6VFeeMWC7gJAROlyHkXlgUWo2nrGb1ZkZQnb5TE+ektLGpgMekQXGGBd+Wbuoja2gBqrDDQJNimYG/xxrSJ2xPVLIxsm0/YeFUb25pznYMqhKumGIvdoZxaJFAbU7puY0TxR47thXb1fffVCOWKDglC60PbI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401809; c=relaxed/simple; bh=buxMDWtOovbagoJxjf1pQjpvHi3MB7//WJ/bSWxc+cU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WAxfRG6DZ9D4YycUw7q7REglqy2dNOxGw7QRfvmn3uKyiP5ycdofPC5y/hdavSaQV22wR5pHuSmrgfBgdyEpY57apdkqnpLJk6GBGs/9zzRT4OdFu9v/SpHJInEvAQJ0mPxh69WqV/9pjqmyNEhB0EyI1IpFFKOpLjxVIuTqDGQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=QfHOYwK6; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=O+CZiJu+; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="QfHOYwK6"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="O+CZiJu+" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BM7V05a2042999; Mon, 22 Dec 2025 11:09:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=TuA7txRy/WPDi4hJJCftPxPaqvSz9zuEFZXeuHlioAw=; b= QfHOYwK6G7kAA+ACLnUZIPS1oObbNozaf7D/M7rlPBHvVxeczLyJZHVtESFSpkUt NRFM0j1tU2h02dySQQ7zGz8jKv3+el80B6v4eYyrSLN10c75kmLNlPNlEBj9w6bR Bn1Hulu5kiNdE90yrXIQRIEhZSENPdBGGHJNKjUX2wJMm+T6BBA1zCLzd3sNdbra asqeoJX4XtRO0ACrs7hL3p6Rf+YbV/q9tIM1jRT7QIQAp0SAFFPPkEM9LFUa3l6L XnnDv95G8KvmbPVms1NVj6Ez9RAQNRCTXjz6Jc/zLXsxZ9qQq9VEMHe2rgDap0Ba w4J3slopo9apejN5aGF99A== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b71na084h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:22 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9Vw5j032709; Mon, 22 Dec 2025 11:09:21 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013059.outbound.protection.outlook.com [40.93.196.59]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876hyd-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WdrS9nQXAMXR4r3LDUGGWrFUCoqjSqNmmijbz14+cw7Q5ZhXiGhWBk/WvFezKgDALZ5EGEqXauxhWz5+0ReEKXC6yAZDV9oSMXZESJmQh/3pqQ1FqO92TF7ZWATX1d7utc7J8tLF9YQmIaZV0KyNpASVFXdEQp2jqnNXKNG+e2+hIYP1WTAroJTuwpOKyem8VqYLNTsZfQmjVSEbJ4LeVYZGddkWtqHoTg3fXbT68aYGxVJW04yrcx7Cv1dJZL2CWbUELY0vpHSZBsUa5IcaBow2VksX1mzcTeKDOoe3hBxnP0t2YXOjiFQra26cOeIMtqR217RYMrscXakBkLU1+A== 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=TuA7txRy/WPDi4hJJCftPxPaqvSz9zuEFZXeuHlioAw=; b=REoIylwjshaQc8yg8kCdwP7tnoo15Kkl7nqGeRyT1WpXVymnX00MjKxQmzRfdSl+G6WSnphZEc3Tl48P0aXMDM5JYNX9nKlK42LyMHroCPsHJ+gGjt9OH9pRTT4v1wCJlq0nb+ArrsuqcSXQsw+tu1Zs6nlQ1CBhTeem4v5L6SK09KDrXjq7jxUZHSneJGik4g2sYuZI5+vlvlon69883xVtPZvmlW7Vf4M1en7Vb2BK+9f/WaG4E/YKZxDqqLuRA6KaXxlX10pRB7br36A7ZKQjr7dmrdiK7zHaGjg7ESqDEV7ONc0O9QcmZJDoNAXXXMoPxfYrQ3oWpwHGwxQfkw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TuA7txRy/WPDi4hJJCftPxPaqvSz9zuEFZXeuHlioAw=; b=O+CZiJu+r1/OmR/TUJOnZqbRuY1v2fVH+AkXQ8YRviI0UGypp6nv0dXkz92NM/ygYNfgDr7w6SNgLLiKkE2tDh2P0aNFB+e2Xbj4wO1alrKuE/MLRo8LjouX49pOH4iv5sg0eaoax0JMHbZEQPGcy1uXcbkPouK39KLVya6ip98= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:18 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:18 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 6/8] mm/memcontrol,alloc_tag: handle slabobj_ext access under KASAN poison Date: Mon, 22 Dec 2025 20:08:41 +0900 Message-ID: <20251222110843.980347-7-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0036.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b5::9) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: e0ebc1e4-6ac7-40cb-b99f-08de414a8d0a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2D1O1onjCZ2eQ8R9D/PVUkmgn/SzqIx3gnuSjO2zQ8F/DWX7ydmSTJbp+FeP?= =?us-ascii?Q?ARv/mQZPvePzJV8/RCsUxaxZerdhssn75eSYRyZm8wkU2RsZB6QJTc2F8QOS?= =?us-ascii?Q?PSfvJ8d9ZbKMq3Qoc+y+VvH30hQF91pI1ejRBD2eNY2oZQ+CEajj046EBUmP?= =?us-ascii?Q?AtHpUPabqqGdu89tps28egYaTPHA+lWNf9wZLdmX5EdSGkVkSXApfJXyOJG3?= =?us-ascii?Q?WVvr4xOXwSLEFVMr2p+zvLhvQ0jneZ1WhpbFkCtHQf+mICFfg19I7JeCA1Fk?= =?us-ascii?Q?QYmgF/+v8Tji+qwcH9HyoFtOIXv9q/VONC4wxbjLT9U7ugBUHBAt8lVvzR4N?= =?us-ascii?Q?mFD2CDJNpnO9EqigNH3SFVSALmjqllCtl31iWVdUX8NRT36xk+gPcQNCVGyQ?= =?us-ascii?Q?LH0DMShm44M3oQLysnbMqZH+gHhsDHzkj8GnT/wxIBRx347lklwilDdg2Y8l?= =?us-ascii?Q?NUwnRIUtrFM5AIw4IpyPtlQZcdYr8vhdhNxR/Fw+a2eTocc9o3cVbogD4UKY?= =?us-ascii?Q?NIqlPaYPujNA4IkVteTZuTrSYV4GG+7KBNCVT1b6mZ5UX5p3MYP1hayDKGvQ?= =?us-ascii?Q?HLkwHgFy+TG4rPp4D6nJEPuezcOAVAxG5lY5WzjbWFnYvlZ1T8GAupMeB8qs?= =?us-ascii?Q?JPQ1Jze1e5tjnZ+oEdf3yMJTCKHpJ3OKQfw7ae4epYyvY/c1+d5fmxcThnFY?= =?us-ascii?Q?rzJqH7Ae7B92U9SGaehbQnwmjGfs5SQYaWi6o5IwpzoIyvj1fNAE4+22wvDw?= =?us-ascii?Q?0ffoJpLkZaE01euJ/1OuH8k61QKS6eqtWcWuiKJfTxBv2QxO4ccnGzM+co1p?= =?us-ascii?Q?hmvZVtZRDC+LmG9dFpb+ZrCwgk8ElxvwN5Yt8w8Xj6z5AVHe+nDZusKXRjtO?= =?us-ascii?Q?7ZRCgVr+bdsdepJVYPF7NhgOTL28Q6KUC19DIljdlNTkHUyl0eWBn+kPM5CG?= =?us-ascii?Q?/N7uzf/Xnv7ZKrylDltpZ+ZNRm9yjlYD1ieq7ydYzgQ6LA/DirrIwkKVRSlQ?= =?us-ascii?Q?QwrkK1hGgzoQYKR4TqqrqYl25jp/wceiLsfKrBqG/xYN5FY11K7Bcu1jdce4?= =?us-ascii?Q?2AxoQeNoQBxDcZ4UWZRqdjW/d2lH/PfRbg/CYsbWHEXOxdDI4vaedGvn9Srn?= =?us-ascii?Q?gKkEF2JFM3UbC1EBmtJW/RcXVJ2WXvzyd/mlm894gJtivd42qdz/hLykcvfP?= =?us-ascii?Q?SSbkvWxURso1y2vthYpZSluY3CiX1jISlmQs4eyj/32SrZKV8VW9lrPabCYH?= =?us-ascii?Q?K+vEdrpUEdXQaYOjIuTO0yPH9O3cedqn8TaHNox2o3dl3HJCjP+VWuiZjlKq?= =?us-ascii?Q?tF0oUl4+8p6tB15EB6zKcPpa3rwmGjtFb9ChfsYzXoULxILwhWNUw4rI8wv+?= =?us-ascii?Q?vas1JXlWZ6vLuSXlnkhLaY3cP4DEyYbKMvDjK5v19juA10ALPE7VS9fkaDJ7?= =?us-ascii?Q?b0IBE6wF84x6DBpSnNC7PL6GhHJIhcjusVp+n7if/3JO3zsBkOMMIA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kojxijP3IbxY6PZAi+LMizSr5qcnEMZok8QXkht+pspQwyiHB+X+xoCR8zGr?= =?us-ascii?Q?mrBb+UhE4PCM+Wrje+BPCvAsupPyuNBsaYDkFju7W6byzNKABt4Um5nhChzv?= =?us-ascii?Q?nYzrWpaIfrXA/COJr0MOKG/I3Fl8ugKQQ7yUvJPqWOEuQ+6q0KQLQNZQO675?= =?us-ascii?Q?3sTrMpFU1t9bJBG9BAKMvQnwgY/fDXoDjajhkMW3yfkh0F1ESGD05Zmelp/j?= =?us-ascii?Q?Jh7SRCm6uihsmnTAD2npghHk4hPZjdvJaxTElVo8PB6VB0MzJ1/s5xNlzLaz?= =?us-ascii?Q?w0afiXrswe/My8eca1Wr8A+rTZLKb/Sb+9B02ZXYf838P0QV74xtHo7DMd1+?= =?us-ascii?Q?AlSaCLbT5kIOykz+ZPnVtN8Wsya+ucPjbirLzX3kuqbc0Ch5SKJt/Ensebv8?= =?us-ascii?Q?d+hWFEWJwsBwP89YIEKHl2WV1sXra6EA0Mi6IlMb6JuExjVeHgdxNdjP2yGZ?= =?us-ascii?Q?cVHUuxo6wTC6MhjrHABcJgTJvB/yuh/OrQaz9FTHRC/kM32hu4oUiPjCiRLu?= =?us-ascii?Q?NeIVD6rw/fIGvi99m621OtyQ4PBtEsYJR7BQtLMoBjJ2fH82QHTpfHsRGxXz?= =?us-ascii?Q?93W2GYlMPaSuWg1Wf1yiQQ6zey4BTBs+71iFCp5eEK59qH0vRbzU4rxHzoW8?= =?us-ascii?Q?AqF+gaT0lxZ9/RcT9H2NipZ41Wx6wNyDVSds0a1upLzme5Utu3SqocMFXgKl?= =?us-ascii?Q?stbYR+XETniXC/WdPOdBRv3X37guQxzD29DQz7RONA3edKDQTkorXw3UD0bK?= =?us-ascii?Q?n+/28fPpnPBd+JO7aXhgNOaHbRLeQvFZTK8htIn8Bx2D+IBdiarhdVGMQEae?= =?us-ascii?Q?2+bFp8cEFQr86yvyGyfD2BMJkXm7TrFlDFhb34qTl49RBqdrwQ/jMGl+deGC?= =?us-ascii?Q?U/7oo7CgoKw3hyORY1mn0GcVyS4fbLVPbnOCDxkRTEeIn874FDwEVfVmEBRH?= =?us-ascii?Q?4vTZtJ9wewVy3ukpuYSks3XS/C7dawHY1PdAV1zndb5iifgttNiwpfQ7f4yM?= =?us-ascii?Q?iaH4qaxHjMW81MFsYtJ7Mh8ct2UU8P7ld/4bsQBfJRXWMeE2Oq6wcrZFOsce?= =?us-ascii?Q?VLGFvWIKWH70lBrdc27NACtfp2nWP+GfW/HeknmXNYQhDdUCLnd2mPGcH3fP?= =?us-ascii?Q?E8OWwUEShDsMpKa0bOw30+qyZNHdTA7TBG1Xq1oBKaH/z1dK+PaydMFbe0mp?= =?us-ascii?Q?zRzODg2fb40AIeImY1RgobIQa1cB3MtRV8t5lkzTDIMxe/MPIwmlV0H5WC4/?= =?us-ascii?Q?+mnDbFjsEqokiglUP4Z8Icw6PGvtuNdOw1tAgGoqMP0zFHnHa7idtZwDV5hE?= =?us-ascii?Q?sWs7+6by/R042ByCNp0MtMDsaJ2UUlazaekN9VxPs0JVIKNOZ3cpcenoMDcB?= =?us-ascii?Q?d8m+heRl1qmtm0XkVdh5km+vQ7qwWLHu8OYvWlve0r7vzDfOqXjqp6rY8j3N?= =?us-ascii?Q?z/krpCemEWoiXf8tK0trte+6EMmEVCXktdlAn3fYGNOiae59LWLIVkz6I3wN?= =?us-ascii?Q?l5OgbmyPe4X8gAzFjSLdEpRgIVWu/puZCm6p2lsaKWLE3kxhGQv74RqM7kUk?= =?us-ascii?Q?aykpp9gSJ7kfii5Ldpcn76Ovn4lXaxCLP2GB2qYhHSvxC07B8WRjYH6qVfJu?= =?us-ascii?Q?He4O5Kh+RLsHIyok8/o9zVc+S2t35ukK2PS67jz1wthoXJhl2e8Nhr3VjpXg?= =?us-ascii?Q?v+HipfGFeYft4Qq8bOpTK1K6BPyueXOR1npgkL5MnAEHaPcMskTfLZPNSRYD?= =?us-ascii?Q?yc0ZttIf6Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0aqw1+ClSNVluDMufCW3RMhASYXYwJ/0t/3KSmVLab1OuvldIpj5WhLtKRWz0Rb9tFPyIZ9Cfp0/HP0CtbGUfynhmtKsxJi1msa7H6+Ubj2fiM9Mm/hUmg8R5VdRVwrNCK1CZLf5lPxoPrp+PumnfX7o6jHPgQ8Sz7zpO6fjN0kSaY27vTqj+MHtO4GlGqBLePdcBdJKR/7svO0zb/qBK0gYuj0drckrsFM9ghzZlqKqeU5lI9V58ipnW9EzW08Cs7iKFqGVYy8HOiw1MdxG7U6ZB87/pusOhURHmxUPcNenkBYescNZaqFAwOfxYdAjFi5wouAAF+9Zb2QD13AiJUTN+p4vMp12TYQY5e/LPDenPiJc82T9uGq8sgcBrvLrbiFsjUtUJ5P3Zvsx9nFqcLfhLbC2ZB8H3b2Kgkh7Q61jO1YFINlEBPGpKYAw01QM04RQD/JYgC/fE37Zuy/OAa3HjHNaGaYGQ+i6SI6mWBxqduyD5ilrlHjx5Xt5R1Jkabh9Ka+PjrDUCFmuDvzn1UztNsbaO/wIH8SsrU8kSYAAkydpXF3BIZULqDkQH6kCFot+RqqkEXXppXTWwEWg2v6voSFz7M+MFIBfjESBJvE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0ebc1e4-6ac7-40cb-b99f-08de414a8d0a X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:18.4075 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /x84UC6UQd5fiGMuPozLalXj38cPHV9JOEoq4kN4YtAIicFsdFfbJUZH/R7mREQHF1TRfEfsI3FR+BAhruwqDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX0iqBalxmOBg1 szmZ1bP9EtQMTJr6mdnUkrict3LRCLOZ/pcDRF/GHIaDxF27ssDDEDifGsYysvMFxOx0rZ1ACoZ qijuttY/wzv3TCOOHPnwhzPFJXHssGOst/VC5rHplWzMXvCM3aK/1l9DHIL5KWEypFsR7Jj+T4n xYvcJmjCUEdfotSq/tJ19uqXOLeVE0e9BB/D6mY5aerI72GB3SzAAxNyEJq3cRpP5+V2DDE6aMz ZK6iEhWuT+DWYi40WRYsF8qR+Ya3uMVOa+cdhy6mw1IqrUwDTTrK3HnUjdNpQZQaO3Qludl4hXw 2oaSp+5w/R4GWmw6c80771mnrO8+1F3+NzBzcSUcWHPG9GS9SorORzY5gmDzZfQKwWd02scNCDu CcH8Xm2/ylsKGX5OcCGZPaVP9yQVUjsMqoLh2nJ3hFkVuOqGSnWffrP9B0aXCNj0YIoluRBIWu1 YRYwqR+TVnLve2DUf9A== X-Proofpoint-GUID: qBYy2Dp2gugU2FJ1lDv8HVwjUwttlpaz X-Proofpoint-ORIG-GUID: qBYy2Dp2gugU2FJ1lDv8HVwjUwttlpaz X-Authority-Analysis: v=2.4 cv=DMeCIiNb c=1 sm=1 tr=0 ts=694926e2 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=4y3Wp0Wu7Q92bxCIkH4A:9 Content-Type: text/plain; charset="utf-8" In the near future, slabobj_ext may reside outside the allocated slab object range within a slab, which could be reported as an out-of-bounds access by KASAN. As suggested by Andrey Konovalov [1], explicitly disable KASAN and KMSAN checks when accessing slabobj_ext within slab allocator, memory profiling, and memory cgroup code. While an alternative approach could be to unpoison slabobj_ext, out-of-bounds accesses outside the slab allocator are generally more common. Move metadata_access_enable()/disable() helpers to mm/slab.h so that it can be used outside mm/slub.c. However, as suggested by Suren Baghdasaryan [2], instead of calling them directly from mm code (which is more prone to errors), change users to access slabobj_ext via get/put APIs: - Users should call get_slab_obj_exts() to access slabobj_metadata. From now on, accessing it outside the section covered by get_slab_obj_exts() ~ put_slab_obj_exts() is illegal. This ensures that accesses to slabobj_ext metadata won't be reported as access violations. - If get_slab_obj_exts() returns zero, the caller should not call put_slab_obj_exts(). Otherwise it must be paired with put_slab_obj_exts(). Call kasan_reset_tag() in slab_obj_ext() before returning the address to prevent SW or HW tag-based KASAN from reporting false positives. Suggested-by: Andrey Konovalov Suggested-by: Suren Baghdasaryan Link: https://lore.kernel.org/linux-mm/CA+fCnZezoWn40BaS3cgmCeLwjT+5AndzcQL= c=3DwH3BjMCu6_YCw@mail.gmail.com [1] Link: https://lore.kernel.org/linux-mm/CAJuCfpG=3DLb4WhYuPkSpdNO4Ehtjm1YcEE= K0OM=3D3g9i=3DLxmpHSQ@mail.gmail.com [2] Signed-off-by: Harry Yoo --- mm/memcontrol.c | 12 +++++++-- mm/slab.h | 54 +++++++++++++++++++++++++++++++++++--- mm/slub.c | 69 ++++++++++++++++++++++++------------------------- 3 files changed, 95 insertions(+), 40 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index fd9105a953b0..50ca00122571 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2604,10 +2604,16 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct = slab *slab, void *p) if (!obj_exts) return NULL; =20 + get_slab_obj_exts(obj_exts); off =3D obj_to_index(slab->slab_cache, slab, p); obj_ext =3D slab_obj_ext(slab, obj_exts, off); - if (obj_ext->objcg) - return obj_cgroup_memcg(obj_ext->objcg); + if (obj_ext->objcg) { + struct obj_cgroup *objcg =3D obj_ext->objcg; + + put_slab_obj_exts(obj_exts); + return obj_cgroup_memcg(objcg); + } + put_slab_obj_exts(obj_exts); =20 return NULL; } @@ -3219,10 +3225,12 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache= *s, struct list_lru *lru, return false; =20 obj_exts =3D slab_obj_exts(slab); + get_slab_obj_exts(obj_exts); off =3D obj_to_index(s, slab, p[i]); obj_ext =3D slab_obj_ext(slab, obj_exts, off); obj_cgroup_get(objcg); obj_ext->objcg =3D objcg; + put_slab_obj_exts(obj_exts); } =20 return true; diff --git a/mm/slab.h b/mm/slab.h index 38967ec663d1..ba67d6059032 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -510,6 +510,24 @@ bool slab_in_kunit_test(void); static inline bool slab_in_kunit_test(void) { return false; } #endif =20 +/* + * slub is about to manipulate internal object metadata. This memory lies + * outside the range of the allocated object, so accessing it would normal= ly + * be reported by kasan as a bounds error. metadata_access_enable() is us= ed + * to tell kasan that these accesses are OK. + */ +static inline void metadata_access_enable(void) +{ + kasan_disable_current(); + kmsan_disable_current(); +} + +static inline void metadata_access_disable(void) +{ + kmsan_enable_current(); + kasan_enable_current(); +} + #ifdef CONFIG_SLAB_OBJ_EXT =20 /* @@ -519,8 +537,22 @@ static inline bool slab_in_kunit_test(void) { return f= alse; } * * Returns the address of the object extension vector associated with the = slab, * or zero if no such vector has been associated yet. - * Do not dereference the return value directly; use slab_obj_ext() to acc= ess - * its elements. + * Do not dereference the return value directly; use get/put_slab_obj_exts= () + * pair and slab_obj_ext() to access individual elements. + * + * Example usage: + * + * obj_exts =3D slab_obj_exts(slab); + * if (obj_exts) { + * get_slab_obj_exts(obj_exts); + * obj_ext =3D slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, = obj)); + * // do something with obj_ext + * put_slab_obj_exts(obj_exts); + * } + * + * Note that the get/put semantics does not involve reference counting. + * Instead, it updates kasan/kmsan depth so that accesses to slabobj_ext + * won't be reported as access violations. */ static inline unsigned long slab_obj_exts(struct slab *slab) { @@ -539,6 +571,17 @@ static inline unsigned long slab_obj_exts(struct slab = *slab) return obj_exts & ~OBJEXTS_FLAGS_MASK; } =20 +static inline void get_slab_obj_exts(unsigned long obj_exts) +{ + VM_WARN_ON_ONCE(!obj_exts); + metadata_access_enable(); +} + +static inline void put_slab_obj_exts(unsigned long obj_exts) +{ + metadata_access_disable(); +} + #ifdef CONFIG_64BIT static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) { @@ -567,15 +610,20 @@ static inline unsigned short slab_get_stride(struct s= lab *slab) * @index: an index of the object * * Returns a pointer to the object extension associated with the object. + * Must be called within a section covered by get/put_slab_obj_exts(). */ static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, unsigned long obj_exts, unsigned int index) { + struct slabobj_ext *obj_ext; + VM_WARN_ON_ONCE(!slab_obj_exts(slab)); VM_WARN_ON_ONCE(obj_exts !=3D slab_obj_exts(slab)); =20 - return (struct slabobj_ext *)(obj_exts + slab_get_stride(slab) * index); + obj_ext =3D (struct slabobj_ext *)(obj_exts + + slab_get_stride(slab) * index); + return kasan_reset_tag(obj_ext); } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, diff --git a/mm/slub.c b/mm/slub.c index 8ac60a17d988..39c381cc1b2c 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -975,24 +975,6 @@ static slab_flags_t slub_debug; static const char *slub_debug_string __ro_after_init; static int disable_higher_order_debug; =20 -/* - * slub is about to manipulate internal object metadata. This memory lies - * outside the range of the allocated object, so accessing it would normal= ly - * be reported by kasan as a bounds error. metadata_access_enable() is us= ed - * to tell kasan that these accesses are OK. - */ -static inline void metadata_access_enable(void) -{ - kasan_disable_current(); - kmsan_disable_current(); -} - -static inline void metadata_access_disable(void) -{ - kmsan_enable_current(); - kasan_enable_current(); -} - /* * Object debugging */ @@ -2042,23 +2024,27 @@ static bool freelist_corrupted(struct kmem_cache *s= , struct slab *slab, =20 static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) { - unsigned long slab_exts; struct slab *obj_exts_slab; + unsigned long slab_exts; =20 obj_exts_slab =3D virt_to_slab(obj_exts); slab_exts =3D slab_obj_exts(obj_exts_slab); if (slab_exts) { + get_slab_obj_exts(slab_exts); unsigned int offs =3D obj_to_index(obj_exts_slab->slab_cache, obj_exts_slab, obj_exts); struct slabobj_ext *ext =3D slab_obj_ext(obj_exts_slab, slab_exts, offs); =20 - if (unlikely(is_codetag_empty(ext->ref))) + if (unlikely(is_codetag_empty(ext->ref))) { + put_slab_obj_exts(slab_exts); return; + } =20 /* codetag should be NULL here */ WARN_ON(ext->ref.ct); set_codetag_empty(&ext->ref); + put_slab_obj_exts(slab_exts); } } =20 @@ -2228,30 +2214,28 @@ static inline void free_slab_obj_exts(struct slab *= slab) =20 #ifdef CONFIG_MEM_ALLOC_PROFILING =20 -static inline struct slabobj_ext * -prepare_slab_obj_ext_hook(struct kmem_cache *s, gfp_t flags, void *p) +static inline unsigned long +prepare_slab_obj_exts_hook(struct kmem_cache *s, struct slab *slab, + gfp_t flags, void *p) { - struct slab *slab; - unsigned long obj_exts; - - slab =3D virt_to_slab(p); - obj_exts =3D slab_obj_exts(slab); - if (!obj_exts && + if (!slab_obj_exts(slab) && alloc_slab_obj_exts(slab, s, flags, false)) { pr_warn_once("%s, %s: Failed to create slab extension vector!\n", __func__, s->name); - return NULL; + return 0; } =20 - obj_exts =3D slab_obj_exts(slab); - return slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, p)); + return slab_obj_exts(slab); } =20 + /* Should be called only if mem_alloc_profiling_enabled() */ static noinline void __alloc_tagging_slab_alloc_hook(struct kmem_cache *s, void *object, gfp_t = flags) { + unsigned long obj_exts; struct slabobj_ext *obj_ext; + struct slab *slab; =20 if (!object) return; @@ -2262,16 +2246,23 @@ __alloc_tagging_slab_alloc_hook(struct kmem_cache *= s, void *object, gfp_t flags) if (flags & __GFP_NO_OBJ_EXT) return; =20 - obj_ext =3D prepare_slab_obj_ext_hook(s, flags, object); + slab =3D virt_to_slab(object); + obj_exts =3D prepare_slab_obj_exts_hook(s, slab, flags, object); /* * Currently obj_exts is used only for allocation profiling. * If other users appear then mem_alloc_profiling_enabled() * check should be added before alloc_tag_add(). */ - if (likely(obj_ext)) + if (obj_exts) { + unsigned int obj_idx =3D obj_to_index(s, slab, object); + + get_slab_obj_exts(obj_exts); + obj_ext =3D slab_obj_ext(slab, obj_exts, obj_idx); alloc_tag_add(&obj_ext->ref, current->alloc_tag, s->size); - else + put_slab_obj_exts(obj_exts); + } else { alloc_tag_set_inaccurate(current->alloc_tag); + } } =20 static inline void @@ -2297,11 +2288,13 @@ __alloc_tagging_slab_free_hook(struct kmem_cache *s= , struct slab *slab, void **p if (!obj_exts) return; =20 + get_slab_obj_exts(obj_exts); for (i =3D 0; i < objects; i++) { unsigned int off =3D obj_to_index(s, slab, p[i]); =20 alloc_tag_sub(&slab_obj_ext(slab, obj_exts, off)->ref, s->size); } + put_slab_obj_exts(obj_exts); } =20 static inline void @@ -2368,7 +2361,9 @@ void memcg_slab_free_hook(struct kmem_cache *s, struc= t slab *slab, void **p, if (likely(!obj_exts)) return; =20 + get_slab_obj_exts(obj_exts); __memcg_slab_free_hook(s, slab, p, objects, obj_exts); + put_slab_obj_exts(obj_exts); } =20 static __fastpath_inline @@ -2418,10 +2413,14 @@ bool memcg_slab_post_charge(void *p, gfp_t flags) /* Ignore already charged objects. */ obj_exts =3D slab_obj_exts(slab); if (obj_exts) { + get_slab_obj_exts(obj_exts); off =3D obj_to_index(s, slab, p); obj_ext =3D slab_obj_ext(slab, obj_exts, off); - if (unlikely(obj_ext->objcg)) + if (unlikely(obj_ext->objcg)) { + put_slab_obj_exts(obj_exts); return true; + } + put_slab_obj_exts(obj_exts); } =20 return __memcg_slab_post_alloc_hook(s, NULL, flags, 1, &p); --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 39ABF30F52C; Mon, 22 Dec 2025 11:10:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401804; cv=fail; b=NgkRLOXxsPnxHPIfYVpuxonvXiUAiHGL0/4NxbecV3du59B0HRahpZHSF0iLfW8ulTtq/AyWON6h4HfR4a+t1Hl9vDj3Tpx3vv21XLVLSgLRbT+TOMQXFqiJ1X7NhofuBCDjhrShPapFNfOfKVWucHn5BWzv/mOiHu8f6rjwZeQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401804; c=relaxed/simple; bh=a4xKflMNrhe/H5hl4F3vsP3/XB90XoErqOBQp1Za5uE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=P9BV009MjuG3oWEhcBqJSA0hC/O58pf8DUsVs7GffT9RcIjwYY1zDGNTS6iLgFZw5DXUkF3QoQqYxcNjieUYZ6k4AiFShDH0uySNIBbcpWzyYeA5aSDKynyw/5/i/UxurauqjrO+FSVgd0dklgZ5NrV4TD6DWFh++eBErVgUzwE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=JR1dUPkg; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=cJqcJwf+; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="JR1dUPkg"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="cJqcJwf+" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMA38bI2073578; Mon, 22 Dec 2025 11:09:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=mhhdylc3s9FzOyPDoMxdrEKCzQknmYK+3fWjeEARqHE=; b= JR1dUPkg6TGnUy5nrYKGAIYgFsgGFHz1h/feRWVwRuZP3g3ww+I/K8hQj19UXzJP fDkmLEYKg+KE/tLTAKyBMrxcSBDe0MnA03fEl2Wry2eK6I4JNeJJbhE3gVczFHOv fR5W8acaRvC44/S1NxPKKOhD2kbo9f0QbjLtAosP8L1KV5slLTQxYEd46QWJIMFq N4dP02PXb3FVs1SvPgF1kkctHbNJpAEYiGqyKob8ajK3L5PJsROlWVohDcV/0pR/ DxLzAoVptjRGbbaacr9h2ozmWMYp/GjqZDBLENzdqRpPd0Fty1PHmx/fECjfvUSP x8nPCqKGTHqf6V+bssw/fQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b73vvg28a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9EWZR002438; Mon, 22 Dec 2025 11:09:25 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013056.outbound.protection.outlook.com [40.93.196.56]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876mug-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LLWQ0kYorx+aCRr9+9RdbIzQqecosolSrbxLwe9TfDyXAhMij4Y7sNS7AJ7vMR3Mz6WjqRt/crYN1RoVrvKtAUbi5+eMK/WDfNUJm06a9xx2O2seQtUBoFYypOsjMMh7WdTWm2MOCo2KGEu46CenXWMhhMruwLO8bRWPwT6duPaXM8xh6i3p/PmtfGZ5aXILSbj2l4788b4N/pGaeaIlcXbtOhW1mmvqo7b5YzUWW5tWJLDvW89DGo5XfaxYN4wdpDtU7OedpDgUUN3LxY3S8pSgyw4SVnxWUCU2eWtO3FZ7yaBxDXCxW3pNqJYJfoTo2jQifFgsEoOeIdE2v/hIrA== 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=mhhdylc3s9FzOyPDoMxdrEKCzQknmYK+3fWjeEARqHE=; b=Q2Y8rFFQOjMmQQhE/v62D72dXFwUayGA1fvMSI+E4jsPFR92/HmZRoZZ2txWLEU0lkwmetLuf/klnZaS6EJfM5ISVxVaaqqYg4xDPKeY4tlWziYgGmA5icbdHMRib2oTGjM2Xk6BhFXp7P6Mc26/MoQE9s7rm5J7pglFAL/twHXiURp2v2lGZD61ZHQc54BFKjxX8u7SLmVC46+NPGhpM5uLMh1FZw0DWzfeSwTMuD4J9aPnbHcSZcBj5pIJJ54JhUpmlAwKeXbr7yRUoVsBJ0QgWW7i1EZ0VYN5Tnxsi7o2NO6yZ1YNFiTxbYiv2alFYCthslpqyE6aDMpXG2X7Lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mhhdylc3s9FzOyPDoMxdrEKCzQknmYK+3fWjeEARqHE=; b=cJqcJwf+AJKfOft3hvYegDCcTT0KemoklICh7H6s3IOYBq0Z13lLSViOx0uOKeZLB5oi4lJX8yUwrw6/0odL6Vx6H4/aVQpxOONGxMkgNfRrs3hio1liCBvXVvg048yQa8EnXPq5AU1jsQIe4D5YcV3T4Yqw5gqNZ+ryByHTqaA= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:22 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:22 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 7/8] mm/slab: save memory by allocating slabobj_ext array from leftover Date: Mon, 22 Dec 2025 20:08:42 +0900 Message-ID: <20251222110843.980347-8-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0040.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b5::12) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: 8bc823a4-55b3-45fb-b08f-08de414a8f4f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LiM6gv1bfuhh7cBXUhQMDV0vGRNaJKRweVlEKiMO1EVylv0vkc3JmYLhOA8W?= =?us-ascii?Q?8knopwCRXqqw2xiFFuE8qZz/fduRF/hYKP6YZ5CObEexf/2EPcLBRPOHrt68?= =?us-ascii?Q?X9ydDHTSNygdsTaZoUTeGfIjToQDfPKmVixq2GzoFPISJpQxNyavpU5YQp1R?= =?us-ascii?Q?R8qiYpp/allDvwVtGIVONbCAxTk3nkKxWse3K1cKHkDe0C/sh9zXPdQOAFJM?= =?us-ascii?Q?GM05AHYdbfylrkmX7ETPaOXgiwSzZmXyle6OUegjOAGGWSgMRjLZ8qVgCXck?= =?us-ascii?Q?gkawpyYI7TPO9ZJ7m6UTeizb1uS+HsX0kq4b6FmgaXz2K+2GApHHMw+Dt6mB?= =?us-ascii?Q?7h84Io/qmi/qnwvMubs1xaZSOARCaQiSNJP/nDzo/K8OzNCBLDmPe8Y8bRGy?= =?us-ascii?Q?zQvlytrpGiMdppYwqn+5gSw1EIQrClFzeTT9U0lXzMBUmASjqUCM0Ht63Q+0?= =?us-ascii?Q?CI+XW6F4ODcs8OL8LNyJ8fJ/jAMJjtDBrzFJTR2lZ0IPECsc5SysPD0f3oZq?= =?us-ascii?Q?xi48TJRKrvjQZmNxsLzIt5LxDwAy0qjUcT1wvYMHJGzAqi2BsaON11NPDlqy?= =?us-ascii?Q?WQse76fgpo5eS4iVPKlhygm2wxxrDe8tuGaE1x5Wl7vzPv8OaYHM+lzcfuL2?= =?us-ascii?Q?2KFXeTR15+5ICwkpPvReyE/9rCKJaESpKQX9WuCcIKytH7teOoUz9sZq6Uk5?= =?us-ascii?Q?OSr2oX2/b+1zwbhRrPtuRi1x6Lpggn95KWi8woJOXXkoYoTZhsVgTYyaXhxq?= =?us-ascii?Q?OmV306oYOF9PMHGJ6b5HKeHjEm+Mx/8neWDSg6wTylshwkeWKUfOtQmWgEEd?= =?us-ascii?Q?rJABdoSXl5Zarx6YerDjpMSeIK3pFz2LxrjV6eGH11vN/b2PcWAHLsZjoV5u?= =?us-ascii?Q?OuM13nR/SakIGhSLgXzoX5/UBQFj9iRaSe/++/gZsUbBC9SNFgdsOi6qrRrz?= =?us-ascii?Q?YjSOS+rw7avCHpX3gb1R3kq3wXnS3l/R6JOFsIvUX8mITZBFsCNxgcBmnMSe?= =?us-ascii?Q?0U3GAM+L1eBuVlkGaXZ5QgkXayQ8aG1d8sIZYLWdre2aooWa33YIrSzRqn/A?= =?us-ascii?Q?UcgNMf96yHDG/Mmv6lu+Y0hVB++e9WW8byWVxoRd4YghKNmSSuUt4STQHsUM?= =?us-ascii?Q?8s5nNxMm5aYSzCT06m2YAWLnVQbC0J8em9TvvRKorl+tOAeZNB7WhYcfJNxf?= =?us-ascii?Q?NfmpxdYcmCwa8y6jqEoizsDFjCCPEe8YUbwH6H1tHc4/peakRjgud3tKNCzI?= =?us-ascii?Q?lCPvjl7AgL3NFq2zFvGXMWsQRCTuJVVTFXOnomMvQnnS0PKtPDk8VWKeRT3k?= =?us-ascii?Q?rituYsIr1krQLL7Rh6fjfBfj9DZ9iF8529ooEsXDEzx8wf3u31Cbp9A9LqGk?= =?us-ascii?Q?3VC3eHQS9R4XtqL9+e+D3n5XgNkWNO2EdM11FtNwwC7Uc3E4bma5Phosg3+W?= =?us-ascii?Q?lAqMXIgv5cy35mEm/QA/SHfjwdWdWcJVkWUAyMVnNCKnFkrxhd9yFg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?b6eWYd19FHLJWxUu6U5zE81eFP32QuyI+uxD0+paWTiGIDvnFggoZ6WtwDlZ?= =?us-ascii?Q?JgyJ3z7+E3ut3sIwp0HuCB3fNvzDmTqKwktphexEzB+IH6gBoItF4+DZ0vwG?= =?us-ascii?Q?GW25p9mlwAWKZAP2pouRX1PlFldzRLQAwou55hyU8tY4DW8Q2CgTesbKIAn1?= =?us-ascii?Q?0eLmiLEG7Jma/wnIKW4X7QCzN90RK7IVExht3WUk73GKEGz6K7Er/RoUCmgu?= =?us-ascii?Q?ydHDqXZ/yB5UnK1+skZMNoGaANtqcPshw2LsxUJhnEK6M6FpsqDUZv4TCh4w?= =?us-ascii?Q?2FdUxjBO6Umik5JYzn6Pl1kwlfOd+Qie2kX3gum0Tp+VKaoRFn9jlfU88OUn?= =?us-ascii?Q?a74tb4oPi/7jzkZ+o95ZPA2KqATrTEl6YfIdh02gsEH0D5fomaBsTkWoATTs?= =?us-ascii?Q?s609Z+mTfIHglx94rizDVY7RiDQm6WttDyznilGwbq8ejuL5R1T3wi9dTPzD?= =?us-ascii?Q?dHBxra30uDev1R1WxClBhCoKopMwKgKv2/0TYMXkx5MYWZS0DoS+j6ZZtrPt?= =?us-ascii?Q?vFy5HXU0PA+cPijgg8IZzlYIfRY+qNPtUuVTaKkiwsD4C6l5enIhUCE+E7Ge?= =?us-ascii?Q?acm/4HkycoeKFle0k9+4OatfxAXHiK5gOblbvfb8wUFgqUx9kTKlVSm1iGJJ?= =?us-ascii?Q?1aI85rs90lwYs8fku5ux9uYaXk5ujeKJp6JrP7LYsLUDFt/F7UIOKDJtaya5?= =?us-ascii?Q?HNWGQ79x9zfKM2JUaPi5+vNovqdMGA4hBJ77/w/eB5kXrsNiECqTp1Efj5/7?= =?us-ascii?Q?yn602wFty7vPIu08KzEFHEcZs4Gk1kFOk6bLz2yLdwaUlwt+w8qR5QTHxCuF?= =?us-ascii?Q?26XS8dq2e65ld7nB2jyyoXTYG+2j93YCp4dODkU6hlAP5oltc712PEG0UYUb?= =?us-ascii?Q?rAvBGgilocvnV6bc/ylMqslHosPbaK7msgblbh0wlHX+pXRCI/f/s8Ksq7xA?= =?us-ascii?Q?/9P3OU5tuEkpm1SYzOqUrilczHhzxc3U0vlQOrd22WQECcXmIJaHkiKHS+Qo?= =?us-ascii?Q?iQZUyh710Ej6CRgnOp02Cjj9Zv7dXdPNFuzAlk8iVoj2WG4wPh783FOUh5Q5?= =?us-ascii?Q?D6ADOITIaeff0t2rv1ZRiFPQnCmE+UfFPefRlHv7Tk7ICuGWKQJX+pJ0cYCd?= =?us-ascii?Q?ULKBY2nvGCKsol1JNeWpwy0wtd22f7oSyERLGInr4IUIUzVLeetP07qQ1Fy+?= =?us-ascii?Q?9QSYTAHrB4gDQEsZZFKISh1BYMyYtjaZA8/mIiQgEPjktZ03+/Vd0qZPP9HO?= =?us-ascii?Q?SD0VcOnGDuA2g/bPv6vM+ONsd4onA9JJqr5xZJxdsB4IFgTae2rHx+AiXNJU?= =?us-ascii?Q?k3ye5OFBx3bKMjh8a8SWDWGusp3ugLaA0RRQVAjt7wP65kVq0DHxlY6UN+LH?= =?us-ascii?Q?F1yk0KEJnqbomTpnHfrAiAXh8bUmFqq6qOSfG9pKZbUFEEnrS/YGHJ01CkuV?= =?us-ascii?Q?/PuODhveORnqPpw66dnCdyAFD2qZnHOmphALqA7D/IXE/lP8rxPDiG+EtZGt?= =?us-ascii?Q?xvw7wXdGSXiO3k5ibt/1FCySdpal9zImRCg9AEQeM5OOB0nAJR7PBKh1phWd?= =?us-ascii?Q?QlDWZ3JagZmkZg27QcCvfAye3TbPVHXkUZdqh6kdEkh4q1hK8bUTU6gpaxH5?= =?us-ascii?Q?RE1dv7wNMGXboOCCsnIuVhbIDh4ZaN406mm5gb3O/p4PKIrdM4Eqt1Z77BRY?= =?us-ascii?Q?1SexotCLmd2Tl9rpaA3OvnKLqUFbUeCN+/anDc05mD1IGZ2NB+pUXSmMP5v9?= =?us-ascii?Q?MObDzn+JXg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: U5EaG3dXjmmOZaNY23XB99VXxAf6tvqsKtKmBbqrd8nKFmm1q5JwF7Ijpy39xWuiSpkTkBRFZ3YmXAnRz13U7CkIB+er68IZaWlPLuAvQAIfVOXrzcXZYDRLnk5n23AXRtMk8tPupKuHwZ1CUdHGV2al5eB8WyiFa3AJ5vTdmDgk8Qy6qbRcHr8dbp74YUzgtjiXMV88OazmKjZPkr1Dz5+/HnCQJvVxSI9DD8zdyAQhAVXF639XJ8OQQRCuNO0momQqD4oCMALy9wdY470ComMXKOAyvmL0//y2h7GKj61qwp3QrIZ/N8x+AvIckCT2ItovfBh3BsJgFn65KdC33z2TmoE3Fm6TkNVjusSElQL2cDvOOcBvTM1rD0yfsbMuMWADtqIx/mV0u4C/biTKktBm0t/SpIus8kEKLC/FEEdQkABO0BcGgUidySvQgDzPwOE7l+yEuiVhM1FtrjbO0H+NmFnC0T/NEo9LgdDyktbW8t4Auu4qzoBymuYms2kczp48CPJgCZyIeilyo0QlV8LTY323uCE6+GWV+Aau/ZjbOotc9rbTZ4wTNS/EniYPDHqKwZZ1PrWgZukgB6OA1galhbI/FOMV6I92/b1hBKI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8bc823a4-55b3-45fb-b08f-08de414a8f4f X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:22.2227 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Sjl1h5BaT0eC2GZXtIgnAaU6TTc/XZy73YUkBNQSNkgEmDLQuhlID+jtzXR84B0D1Ae05E7H6XMn881bCUcDzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxlogscore=999 phishscore=0 adultscore=0 mlxscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Authority-Analysis: v=2.4 cv=VeX6/Vp9 c=1 sm=1 tr=0 ts=694926e6 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=JVGYsnW0c5-8z4_xaEwA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfXweYSQFAglIHp 5WvnmcqgFfjurw0ziCKKrRXwj6Rxz0uFp8x0UwAXUghxBSaqqh408gno1X6O6MY65SRWPY1cbsP SkCTkeoqFiPDbBsKuXRq+2kw9lGtC3XPOi17GOTFXMfBZ9wge4GjnlIErCDQSYtxNDJ1QIVUxys 5NS+zEwDJSBmA+YeRUAtiqxs1fTbglco6KuGfCTsq2JGY5zrr1x67a+Lyr7lo1Y3Q/3vG/OlFYG FNp4CUf0TqBPYPoou78bezdodMR8SeQxzB2pbxzCAwqg29wcQIltJog94imtFfQ5w6tN2UQxoV+ 0z4kIOc0Fm9o+6oY/OXXeZKMQ2DRJ1EHTZkBi5kehW6asT+Rmy/UjZvqsEiD84cfCGu3kO6ZkE9 3HFgilve+UjxV/agndG+fbOsODEzxIfY6ijkyKtE1b7E3OfssSPj1AHExg8ioIVcyY5i9QEiCbc p0QH6nR3tqgFCRlxe6w== X-Proofpoint-GUID: nmqiu84T9oz2fNjopSKsBAKgkRt6OgUi X-Proofpoint-ORIG-GUID: nmqiu84T9oz2fNjopSKsBAKgkRt6OgUi Content-Type: text/plain; charset="utf-8" The leftover space in a slab is always smaller than s->size, and kmem caches for large objects that are not power-of-two sizes tend to have a greater amount of leftover space per slab. In some cases, the leftover space is larger than the size of the slabobj_ext array for the slab. An excellent example of such a cache is ext4_inode_cache. On my system, the object size is 1144, with a preferred order of 3, 28 objects per slab, and 736 bytes of leftover space per slab. Since the size of the slabobj_ext array is only 224 bytes (w/o mem profiling) or 448 bytes (w/ mem profiling) per slab, the entire array fits within the leftover space. Allocate the slabobj_exts array from this unused space instead of using kcalloc() when it is large enough. The array is allocated from unused space only when creating new slabs, and it doesn't try to utilize unused space if alloc_slab_obj_exts() is called after slab creation because implementing lazy allocation involves more expensive synchronization. The implementation and evaluation of lazy allocation from unused space is left as future-work. As pointed by Vlastimil Babka [1], it could be beneficial when a slab cache without SLAB_ACCOUNT can be created, and some of the allocations from the cache use __GFP_ACCOUNT. For example, xarray does that. To avoid unnecessary overhead when MEMCG (with SLAB_ACCOUNT) and MEM_ALLOC_PROFILING are not used for the cache, allocate the slabobj_ext array only when either of them is enabled. [ MEMCG=3Dy, MEM_ALLOC_PROFILING=3Dn ] Before patch (creating ~2.64M directories on ext4): Slab: 4747880 kB SReclaimable: 4169652 kB SUnreclaim: 578228 kB After patch (creating ~2.64M directories on ext4): Slab: 4724020 kB SReclaimable: 4169188 kB SUnreclaim: 554832 kB (-22.84 MiB) Enjoy the memory savings! Link: https://lore.kernel.org/linux-mm/48029aab-20ea-4d90-bfd1-255592b2018e= @suse.cz [1] Signed-off-by: Harry Yoo --- mm/slub.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 151 insertions(+), 5 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 39c381cc1b2c..3fc3d2ca42e7 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -886,6 +886,99 @@ static inline unsigned long get_orig_size(struct kmem_= cache *s, void *object) return *(unsigned long *)p; } =20 +#ifdef CONFIG_SLAB_OBJ_EXT + +/* + * Check if memory cgroup or memory allocation profiling is enabled. + * If enabled, SLUB tries to reduce memory overhead of accounting + * slab objects. If neither is enabled when this function is called, + * the optimization is simply skipped to avoid affecting caches that do not + * need slabobj_ext metadata. + * + * However, this may disable optimization when memory cgroup or memory + * allocation profiling is used, but slabs are created too early + * even before those subsystems are initialized. + */ +static inline bool need_slab_obj_exts(struct kmem_cache *s) +{ + if (memcg_kmem_online() && (s->flags & SLAB_ACCOUNT)) + return true; + + if (mem_alloc_profiling_enabled()) + return true; + + return false; +} + +static inline unsigned int obj_exts_size_in_slab(struct slab *slab) +{ + return sizeof(struct slabobj_ext) * slab->objects; +} + +static inline unsigned long obj_exts_offset_in_slab(struct kmem_cache *s, + struct slab *slab) +{ + unsigned long objext_offset; + + objext_offset =3D s->red_left_pad + s->size * slab->objects; + objext_offset =3D ALIGN(objext_offset, sizeof(struct slabobj_ext)); + return objext_offset; +} + +static inline bool obj_exts_fit_within_slab_leftover(struct kmem_cache *s, + struct slab *slab) +{ + unsigned long objext_offset =3D obj_exts_offset_in_slab(s, slab); + unsigned long objext_size =3D obj_exts_size_in_slab(slab); + + return objext_offset + objext_size <=3D slab_size(slab); +} + +static inline bool obj_exts_in_slab(struct kmem_cache *s, struct slab *sla= b) +{ + unsigned long expected; + unsigned long obj_exts; + + obj_exts =3D slab_obj_exts(slab); + if (!obj_exts) + return false; + + if (!obj_exts_fit_within_slab_leftover(s, slab)) + return false; + + expected =3D (unsigned long)slab_address(slab); + expected +=3D obj_exts_offset_in_slab(s, slab); + return obj_exts =3D=3D expected; +} +#else +static inline bool need_slab_obj_exts(struct kmem_cache *s) +{ + return false; +} + +static inline unsigned int obj_exts_size_in_slab(struct slab *slab) +{ + return 0; +} + +static inline unsigned long obj_exts_offset_in_slab(struct kmem_cache *s, + struct slab *slab) +{ + return 0; +} + +static inline bool obj_exts_fit_within_slab_leftover(struct kmem_cache *s, + struct slab *slab) +{ + return false; +} + +static inline bool obj_exts_in_slab(struct kmem_cache *s, struct slab *sla= b) +{ + return false; +} +#endif + #ifdef CONFIG_SLUB_DEBUG =20 /* @@ -1405,7 +1498,15 @@ slab_pad_check(struct kmem_cache *s, struct slab *sl= ab) start =3D slab_address(slab); length =3D slab_size(slab); end =3D start + length; - remainder =3D length % s->size; + + if (obj_exts_in_slab(s, slab)) { + remainder =3D length; + remainder -=3D obj_exts_offset_in_slab(s, slab); + remainder -=3D obj_exts_size_in_slab(slab); + } else { + remainder =3D length % s->size; + } + if (!remainder) return; =20 @@ -2179,6 +2280,11 @@ static inline void free_slab_obj_exts(struct slab *s= lab) return; } =20 + if (obj_exts_in_slab(slab->slab_cache, slab)) { + slab->obj_exts =3D 0; + return; + } + /* * obj_exts was created with __GFP_NO_OBJ_EXT flag, therefore its * corresponding extension will be NULL. alloc_tag_sub() will throw a @@ -2194,6 +2300,35 @@ static inline void free_slab_obj_exts(struct slab *s= lab) slab->obj_exts =3D 0; } =20 +/* + * Try to allocate slabobj_ext array from unused space. + * This function must be called on a freshly allocated slab to prevent + * concurrency problems. + */ +static void alloc_slab_obj_exts_early(struct kmem_cache *s, struct slab *s= lab) +{ + void *addr; + unsigned long obj_exts; + + if (!need_slab_obj_exts(s)) + return; + + if (obj_exts_fit_within_slab_leftover(s, slab)) { + addr =3D slab_address(slab) + obj_exts_offset_in_slab(s, slab); + addr =3D kasan_reset_tag(addr); + obj_exts =3D (unsigned long)addr; + + get_slab_obj_exts(obj_exts); + memset(addr, 0, obj_exts_size_in_slab(slab)); + put_slab_obj_exts(obj_exts); + + if (IS_ENABLED(CONFIG_MEMCG)) + obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab->obj_exts =3D obj_exts; + slab_set_stride(slab, sizeof(struct slabobj_ext)); + } +} + #else /* CONFIG_SLAB_OBJ_EXT */ =20 static inline void init_slab_obj_exts(struct slab *slab) @@ -2210,6 +2345,11 @@ static inline void free_slab_obj_exts(struct slab *s= lab) { } =20 +static inline void alloc_slab_obj_exts_early(struct kmem_cache *s, + struct slab *slab) +{ +} + #endif /* CONFIG_SLAB_OBJ_EXT */ =20 #ifdef CONFIG_MEM_ALLOC_PROFILING @@ -3206,7 +3346,9 @@ static inline bool shuffle_freelist(struct kmem_cache= *s, struct slab *slab) static __always_inline void account_slab(struct slab *slab, int order, struct kmem_cache *s, gfp_t gfp) { - if (memcg_kmem_online() && (s->flags & SLAB_ACCOUNT)) + if (memcg_kmem_online() && + (s->flags & SLAB_ACCOUNT) && + !slab_obj_exts(slab)) alloc_slab_obj_exts(slab, s, gfp, true); =20 mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s), @@ -3270,9 +3412,6 @@ static struct slab *allocate_slab(struct kmem_cache *= s, gfp_t flags, int node) slab->objects =3D oo_objects(oo); slab->inuse =3D 0; slab->frozen =3D 0; - init_slab_obj_exts(slab); - - account_slab(slab, oo_order(oo), s, flags); =20 slab->slab_cache =3D s; =20 @@ -3281,6 +3420,13 @@ static struct slab *allocate_slab(struct kmem_cache = *s, gfp_t flags, int node) start =3D slab_address(slab); =20 setup_slab_debug(s, slab, start); + init_slab_obj_exts(slab); + /* + * Poison the slab before initializing the slabobj_ext array + * to prevent the array from being overwritten. + */ + alloc_slab_obj_exts_early(s, slab); + account_slab(slab, oo_order(oo), s, flags); =20 shuffle =3D shuffle_freelist(s, slab); =20 --=20 2.43.0 From nobody Sun Feb 8 08:48:45 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (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 6B722313E36; Mon, 22 Dec 2025 11:10:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401804; cv=fail; b=u8s0E2Mkxg2C8qiMizcuMtfW0nqz28xRtWG598lLO5BO5BBhsyqZdJVGSMf+29tY9U1Zl6WapvmdQQljXzVHcMroQ8qx7HDne4lWgFX71TMeayP3QSHGHyzU92CMwmVrlD4HgSlj6kWGRuIfYONuXXf1ba7iTWZv5gvGkCriev0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766401804; c=relaxed/simple; bh=tkM/g7JFfIXgGrgl7Q4jbMSyQuQOmKRObMQXO3gZx40=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cSJ2wQWDj41r8NSZK7ABzfYAHhaQ/wFMCheJhN6FYhpv9peJTtYtCJECOlRorNfEyJyC8o0oZYgiIOgbj3T97Y/Fp2FhNhIlZbaUelOSk3gHPWv+02GtMHTYVIT41U1IaQfQqN3r/gP89Sz9iAxb6UbJQqz9gnAmURASafD9p7I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Dv+4so48; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=VhX8tvfM; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Dv+4so48"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="VhX8tvfM" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BMB6OM82055836; Mon, 22 Dec 2025 11:09:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=ZgYDq55NddTdCoq575ubZpsBGuiiamuptc/Tq51krig=; b= Dv+4so48T2OZWNDd9Sn1DiCjdkw+REvpTSJO+dBsfMI3hS/djLCHP/Jvap0553RV NUP8H601T04JC/DMgIg6+kgbMpgX7nU+Lx2JwMrORw5SZBNr63Yc/H6FakXwWM4u 4+ML4cXPgeFLq0bkRqlLjnVHyDfMueD5hZC8Ym1aYkJQx0+uPoRY5+tWmWv/iXzC DiKPDV+HklTQQX3YLuTrQhAbVYs3n4egKcni4kaE8hHf5j12FCsoJOLZxOusToE4 I3xITkH3fqyqL3FrbHQXeTUTszyCfsQBIQhHGLENwoouDCd5+dituom1a9wCNm9T UQnGsDYaVkF9M5vEhoWeew== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4b74ttg0bw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:30 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5BM9mdIn032802; Mon, 22 Dec 2025 11:09:29 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013019.outbound.protection.outlook.com [40.93.196.19]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4b5j876j41-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Dec 2025 11:09:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qH33xRrlCqTi2wXA6b48YZXV0VcAdLwZsDzax8fYWnjjtQk03ZF05SPdASH4Y1kzlOWx/cyaYQBVH2+S62tymwhoYnuyfxim2IbYcBj1i7iJL8WsaYv5cj88CRbcIOo4QDkEyZFY7hadBS4JD8MnZ8mVyxgfK4ZqYw39yborAMyDU/DlI72Gcr5Ao3QwrihbnCSkuxv0LH+XaG4iRkxpkhhPpE2T7ezRO6ivWyFZHICrQZPlD48lSOUmwpQeFyWOUn/+KhSztiIXNA1NfkfuXhsG2pCRV9yhVY6lDDP1HW8si599whgou1d68H4nB1a7qFpMXu7D+NSMso2zj7O/Vg== 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=ZgYDq55NddTdCoq575ubZpsBGuiiamuptc/Tq51krig=; b=r+E12thPUoCvUNnG3cdMLm7Y34xRU5xMo05am6ReS569IamJzypSU97GoWrw1rh8kzdhubEX2Rpl8nyOc7Rw+mAsqZlbfyHhNCkPmKL5G5Cqe1rzSkiGBBVzP7Gy0UO/UV0ehP7pJEtwDsj8LYlM8N8I6iRANcTInDNx2liazUX9DVgudoTdxxSZECcYIOo7Rr4LwYxDenKEnwDIAxa+wsH7UMdGR7ZrGsyyirDqipBZ11mM9DwOAYcjE7CFqcL08U3Pw0AHJhHbZPkZGqjdY3O7UfV/+oWKVc+DuBOA3c8fb7CobCJNauly+jeVfSX9kTDLMLtYXnwcUWzdaGGXtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZgYDq55NddTdCoq575ubZpsBGuiiamuptc/Tq51krig=; b=VhX8tvfMRoru5J8MyGO9CWmyCAmClBz4r63XhSNNNgjc1YqRwEGBUNyfNJPhfsOqtLmqJV97WzzTjAcr67QGrfnkRAHlV/5cu5f9VFgiTEgqM7A2+glVjw1ltWYD04Wl7R6CIYUEsB2mlGaJAINFi7qCphO7XjMkRyFAlFw5HTM= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by PH0PR10MB4741.namprd10.prod.outlook.com (2603:10b6:510:3d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.9; Mon, 22 Dec 2025 11:09:26 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9434.009; Mon, 22 Dec 2025 11:09:26 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V4 8/8] mm/slab: place slabobj_ext metadata in unused space within s->size Date: Mon, 22 Dec 2025 20:08:43 +0900 Message-ID: <20251222110843.980347-9-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251222110843.980347-1-harry.yoo@oracle.com> References: <20251222110843.980347-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0092.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c2::9) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) 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: CH3PR10MB7329:EE_|PH0PR10MB4741:EE_ X-MS-Office365-Filtering-Correlation-Id: cfb6cd0b-841b-4723-7435-08de414a91b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?z8DmiA+rtG8LXtEvkOt8bXQ8z+sXSP4EKrgrndy5nu/RRZt0isV8JoXtj/Oo?= =?us-ascii?Q?PEk8SKXiBgKSfYAjqubUKYywzRU6rlBrrnhOQ49Q3GtgdvSGlYOIkoR/tz6t?= =?us-ascii?Q?BDf8dVt3B/THnd+4XM7Hi4n/fUzOZWYGOJHNM4uORsLBtyCXFizGLiA92H1Q?= =?us-ascii?Q?7c8Lw+ismeMFp/7DmyT2kKfwcledGcWY5Q4RN1VlfBuRAY5BOMMM3lUJ9SwV?= =?us-ascii?Q?Vn4e4Yk+Ln+gvi4Kri7pLKvTz4dqArjAUaixFwLijigrJIkJcpe8aD4b+Go8?= =?us-ascii?Q?BZM1RThZWudz0pgiS5xCpnw5eSBc2wjkDcdrlj5b12E6qZPHxVP1t/eVfXsq?= =?us-ascii?Q?J35ZRDzbNOCZX2jhEF+F1Jnuzp6eGYH58Iyptq6W18uc0yV15oqraMk/auqG?= =?us-ascii?Q?gaGoEBkzx+FUE17ztqvM+/3YA0Fju2DY+Azu38raMSs1SApHuNuJt27vV/vT?= =?us-ascii?Q?HPFLZXGGeWg+UoUQ41ItXQkUDa551WqrNHgT6d2vR2Mx7Nh3eAixpX7BTur8?= =?us-ascii?Q?3J0c34YUWxyMy470MTVso2EZ0AVtPqxqOHPiLLK0c0926f2lGM1wfP2hrP49?= =?us-ascii?Q?rCftNQwDzQvB3EWl8+gpnSwq5sFrA02WpXyIR4ViSfB0qKtAk2+DzmQLF3za?= =?us-ascii?Q?f6upyCbD8qrGE22Ak5BLQefugXNTRld0odVVeTDwtZFXnrLilUYretU4KgBB?= =?us-ascii?Q?Z+sXHMVEGCaB38wlV9SettlNIk+GYSE+pqc2q26Kmp1eKfHf94C9481NwNLe?= =?us-ascii?Q?gKG3XQ6DMReXR4b30km+CEGyYHNcHdLGGPE995T3OlVO1qOUWL0P00roI+UQ?= =?us-ascii?Q?SDXpoqtJnYgJQEUNsDwCjr+p6sSrmP5gU9o3SR9xak0+4qqZ8eAnpFfAeNM2?= =?us-ascii?Q?WX0LtXpxHm2i5gf3niT4n1BGA1u6FERTQ1PZwVmeIdK5R0ZC1m83Z7HZmU9I?= =?us-ascii?Q?nHCi1U/cSo3PXbFxTG1/ot77pyYOkAbRq18FdMt6bnJVP6O6azZClK+rTeNy?= =?us-ascii?Q?Dv+If4tHlvYlKuhAissTRoWaQtxtaDPbJcAdUUEekSu/1fJQk+VKKYGqWb+0?= =?us-ascii?Q?LhsofsSSlAH+SbIyezQa9LifkZ+ZCrrm75nZ0ILJ3No7QY5tHZmeQBoGFQH7?= =?us-ascii?Q?0PVZeTj52bmh5sOBVzwstF/n05oT1wFNkv/HA6iDjVJeJtL7VSNwSOFhGq9N?= =?us-ascii?Q?JjrievIKYhVgM/4K1dxe9JxFLtDRsuNwd1WiYyUhGHLACF6PssxOC+4i7k6g?= =?us-ascii?Q?jfxBOAjIMKZ+u9wE2p4mtEPIYGRaFUa/Ss3EIvf1pOJx1EpZsneNSNWy+vU5?= =?us-ascii?Q?7la0Pj7CLrGwmljkDnvxTCmLdv6ouaLRb99SkHmMIEY7SkC68x5G9J4bqXqz?= =?us-ascii?Q?znDJKT91csQjHov4rcs1f2OEJYQU97VMCbkvkl6opJvi3CFCypV7BcvWXVXg?= =?us-ascii?Q?yTcK/RisgfHbzpFYebAYn6LEHWE64UH0?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WY2Q0SSKDGVxn6VGatWwu9F+eqnRo9TZEwvFxr0cXXjxRTjsM332vGVG7RSF?= =?us-ascii?Q?pMOv9tnqj08OzQl+TfrcTxHRtsPt/jQhKRlI4INT2vmeUSHt5hwHOofOY5bS?= =?us-ascii?Q?gkMFUQAHWT6tf3hlMFqLiyiRrCpXTEPJ2pTsGymua0HVkwmfRGLkctsKsU0T?= =?us-ascii?Q?tVVzAmeHyK3to06Z4/wwjjUdtxi6TkZl3mjWS0G4zmWWr2MXfH+6t0W2bs7F?= =?us-ascii?Q?kKE9Gl8WrU4IWFPMX9WuxKMviZl5kEgYk5QnuTjiI2axkLWwo6iV50s0cl4h?= =?us-ascii?Q?TGBt9cWuNaMYFyWR5OpHwFc7GSLjYf0kdJVRR8k1qVWylD3Rvb2U8/Obu6iU?= =?us-ascii?Q?B+bLJZk08Dk9W54tdK9hREAV3iJBzVzhhOAq4cT72vDut9iLAJFhJPODwHDA?= =?us-ascii?Q?LsZoTR0vr6i8V82X3UA9OYeRyZOZZQsw/5Eips1HC+z1cZKkpGB67KUTGLsv?= =?us-ascii?Q?uSAMfA1mh/PVT31hw3UWIP4rmT8AFPAkvJY6u7c3I7sJ8LcAwoFKeX7NyXY4?= =?us-ascii?Q?2SvFK2ta9uQlJlH9+rdxfiwxQtdIo91AHRW9NbgqSBRLN4gKEcE76Lg7JKnM?= =?us-ascii?Q?vYkVv7QYFZR3sNcnlVlrtAfGgACRC9WwCgERO7UQQ4lQCZ1xjb+LYJct++mk?= =?us-ascii?Q?FN77iui1FiBgqCcPNUuXJejn997Sy3j60tk1Psh82Zr4HTeHmxh1cop8+jtA?= =?us-ascii?Q?DdeHilElpPXNUaNreEuvE9904GXU3HJ3CLdBH9eYVbTMQ2oDwdubfJGg+Cs+?= =?us-ascii?Q?RivH+HqZPTyLsgoc76/xfb5nC3bUPkzC+WlhFsi7b5H156aZCpcXLOIzm8WV?= =?us-ascii?Q?6VwBFKDv7xrZpTKuhwFIIohqo3EFAuEOTLEi0ZlqX1yZdG5rCtCwmaDWpRMj?= =?us-ascii?Q?u9tfE073X6ZmGj73zbJQU7M04pL4ASMxCkZOAlCR6EKP/670SYyNd19NwRbL?= =?us-ascii?Q?SK0z+0btdx2vSSric8M0URo9h3+k8OCLJdQ4vTMyjwfXQys1lz79y/ShshuQ?= =?us-ascii?Q?87OUkqi9nuWgVUZou1UeFlfJ2sErMerfZwp753J0TtVf5WHHkz6quOz8ARcn?= =?us-ascii?Q?cMiBV60jb6BNp5K2lDfkELh47ZNlZy7pLSUN0zqjaF9QjrPZADiBfdW6DXI6?= =?us-ascii?Q?pPrmQJvVtyzHU6o1csS87k3bCiA2t+HrPvVSLllNLOwSbbN40kfgil8xb/h6?= =?us-ascii?Q?papB1+w2fv5HuE1v9xNRp0z57ngw3YYoBIxOa4J9QOmtn8l+1+wG+/g0/MZU?= =?us-ascii?Q?7iB78kjMtNu0SKEVDGfJJm9yRaNpqowj1gFPJOQw09/WC56/jVpY11AqR7+T?= =?us-ascii?Q?2HxlN5Am8YmKpAkEDTcr2YEMnQoNE4rSQYPNo570TkWwTwsmKcxxKy4Zp1T7?= =?us-ascii?Q?zFfvqDB33DAw+lpoMQ1q8A37s4o8cqes7zUAwqFKBRHWHPz4IOzxAO1AN7PN?= =?us-ascii?Q?dRyk++OsAR7rp0gSwk9lBnF3qDBXCMGpwA6qz9nXV2ErY5gf717aIq3fhN7J?= =?us-ascii?Q?os5JKdzKp8WYpXTrHMu+gzMWeoFsFGlzuXUMaqe/PJIwkYZ6f/9kvUkB2Eic?= =?us-ascii?Q?LLNr0dexx55dir2W4g5VGVwsRXjiicJg4420ET8t0EmvnEiNtwrKwcQmj+j5?= =?us-ascii?Q?hla9/0HRU5m1dypRk/6msWRjTeYnyCdIaexUHyINna3ACiBqon6zY6S+UJ7/?= =?us-ascii?Q?o3TRykCfN1xmGXEZnqvQwpk9xrjXhdH3NpqBDDSiT8lOiBvR1p1MdEhfWDpF?= =?us-ascii?Q?tYgiBGE1vA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: CCz2H0edbkc5DP4qHMFx8qQLiSpJ8pr4BYxwz8jEfXnRIQdhRwCg71mF4Gl2GaRwTeAGSXxTzAznxgF6vq07iU/n9eQckyujbeJM4yNNEYoX6oZ/IVtlAKqj1y7vREjRC9POt6Do8V8bttz9TuOpplGToTTupA1G/UvguI3BQv6aLLHapxrkMV3XWm9crCAbROli4NnCXOhTz4AToVvUGx2PbodB37ZUTz7susgRbXs/tBOv58eEFLZpL8SBSU6dFh/pWxap0pZE8jhvg4qUlW0zibdTYX0e3uFLCrzLlR+Il6JFSXbDK8LeMdMMqjkP1l+IGxRnkaWGPy04RXJrvjmZLQy72dFsBBmXZWIm3T7O5jVwlZ9qU2saKPAH2lodlt5siGihoH6/JY4a4VavF5A2QoKkJn6sIMN5Plp6rSADnm0AzydMY1d5xsrFs3GvRavnx0xNumm9Sv1EN4hufnvyR+leDJypT6QyHBULx5M7O71BhVN7bU6Fim27b5Vr1VXPG8YZPuqkCYjhP93bqU6SHjJVMTGSw486DLbXQoz/ixwBHfbfy9vvaJBwGFWkOAfY3jbw7F1cZNQQMOxo/w5rIRJOYKwP/ClBdJ2IC3s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cfb6cd0b-841b-4723-7435-08de414a91b0 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Dec 2025 11:09:26.1735 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bFyQ6QLQpOO9Z2B3bH7lgOhmtKK8eiXPcCeKO8aDxN/lB+rJakZJcaamayPUmDeQfN2cjEQPb1eexiI8ELHRQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4741 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-21_05,2025-12-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2512220101 X-Proofpoint-ORIG-GUID: ai1fBMJ28Pei0_ko_T9-9rcDDmdtIkYy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIyMDEwMSBTYWx0ZWRfX7FVL+6Vvm+zO VSFjO59pcXi2YQEPSrTJFrnHdw1DM0U+JVmDoa5//YP5CZAnwUdH/ynraYjE1mQsfaFQp4lMB36 uDyEiKE2YnovLOwdFxPOjZIPoORVyKw42GLwcQq0jIreLywSYFEf8nc41y1R5r+E/MpdGEIY9Ij +6RBQ+6Mu8/tkHRlrHnfRq/7AySIlF3GBKJmu2c+jasYGlU9OzeovtOzI5YNHc9H8/zRimsE+N+ mS1YV26PuHHUCRl+5jJT6Yxx2mJ0d2U+WEzV+CmVw8kVaf+wvAaOx7Zvo/gYBpNWC5QT8oPlrcT WMGxh6Z3QDaN8SCt5Or5zH6oYNXZ2ApWYDMJTzFHTtfGfvsDVKX/R1XYDj3KupBf8OWyl43HyW0 cNORtj4DEvIWPP/fpmIusRbFdrP1l7YX3YIgV30+7oG9t+3AbekiVzUQ2eyyjFFwx4AxmZmEvJK E7JeXdJidJRHbAhv9sQ== X-Proofpoint-GUID: ai1fBMJ28Pei0_ko_T9-9rcDDmdtIkYy X-Authority-Analysis: v=2.4 cv=d8H4CBjE c=1 sm=1 tr=0 ts=694926ea cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=lMPLp5VHBhqu3uUK-QgA:9 Content-Type: text/plain; charset="utf-8" When a cache has high s->align value and s->object_size is not aligned to it, each object ends up with some unused space because of alignment. If this wasted space is big enough, we can use it to store the slabobj_ext metadata instead of wasting it. On my system, this happens with caches like kmem_cache, mm_struct, pid, task_struct, sighand_cache, xfs_inode, and others. To place the slabobj_ext metadata within each object, the existing slab_obj_ext() logic can still be used by setting: - slab->obj_exts =3D slab_address(slab) + s->red_left_zone + (slabobj_ext offset) - stride =3D s->size slab_obj_ext() doesn't need know where the metadata is stored, so this method works without adding extra overhead to slab_obj_ext(). A good example benefiting from this optimization is xfs_inode (object_size: 992, align: 64). To measure memory savings, 2 millions of files were created on XFS. [ MEMCG=3Dy, MEM_ALLOC_PROFILING=3Dn ] Before patch (creating ~2.64M directories on xfs): Slab: 5175976 kB SReclaimable: 3837524 kB SUnreclaim: 1338452 kB After patch (creating ~2.64M directories on xfs): Slab: 5152912 kB SReclaimable: 3838568 kB SUnreclaim: 1314344 kB (-23.54 MiB) Enjoy the memory savings! Suggested-by: Vlastimil Babka Signed-off-by: Harry Yoo --- include/linux/slab.h | 9 ++++++ mm/slab_common.c | 6 ++-- mm/slub.c | 73 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 83 insertions(+), 5 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 4554c04a9bd7..da512d9ab1a0 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -59,6 +59,9 @@ enum _slab_flag_bits { _SLAB_CMPXCHG_DOUBLE, #ifdef CONFIG_SLAB_OBJ_EXT _SLAB_NO_OBJ_EXT, +#endif +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) + _SLAB_OBJ_EXT_IN_OBJ, #endif _SLAB_FLAGS_LAST_BIT }; @@ -244,6 +247,12 @@ enum _slab_flag_bits { #define SLAB_NO_OBJ_EXT __SLAB_FLAG_UNUSED #endif =20 +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) +#define SLAB_OBJ_EXT_IN_OBJ __SLAB_FLAG_BIT(_SLAB_OBJ_EXT_IN_OBJ) +#else +#define SLAB_OBJ_EXT_IN_OBJ __SLAB_FLAG_UNUSED +#endif + /* * ZERO_SIZE_PTR will be returned for zero sized kmalloc requests. * diff --git a/mm/slab_common.c b/mm/slab_common.c index c4cf9ed2ec92..f0a6db20d7ea 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -43,11 +43,13 @@ DEFINE_MUTEX(slab_mutex); struct kmem_cache *kmem_cache; =20 /* - * Set of flags that will prevent slab merging + * Set of flags that will prevent slab merging. + * Any flag that adds per-object metadata should be included, + * since slab merging can update s->inuse that affects the metadata layout. */ #define SLAB_NEVER_MERGE (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \ SLAB_TRACE | SLAB_TYPESAFE_BY_RCU | SLAB_NOLEAKTRACE | \ - SLAB_FAILSLAB | SLAB_NO_MERGE) + SLAB_FAILSLAB | SLAB_NO_MERGE | SLAB_OBJ_EXT_IN_OBJ) =20 #define SLAB_MERGE_SAME (SLAB_RECLAIM_ACCOUNT | SLAB_CACHE_DMA | \ SLAB_CACHE_DMA32 | SLAB_ACCOUNT) diff --git a/mm/slub.c b/mm/slub.c index 3fc3d2ca42e7..78f0087c8e48 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -977,6 +977,39 @@ static inline bool obj_exts_in_slab(struct kmem_cache = *s, struct slab *slab) { return false; } + +#endif + +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) +static bool obj_exts_in_object(struct kmem_cache *s) +{ + return s->flags & SLAB_OBJ_EXT_IN_OBJ; +} + +static unsigned int obj_exts_offset_in_object(struct kmem_cache *s) +{ + unsigned int offset =3D get_info_end(s); + + if (kmem_cache_debug_flags(s, SLAB_STORE_USER)) + offset +=3D sizeof(struct track) * 2; + + if (slub_debug_orig_size(s)) + offset +=3D sizeof(unsigned long); + + offset +=3D kasan_metadata_size(s, false); + + return offset; +} +#else +static inline bool obj_exts_in_object(struct kmem_cache *s) +{ + return false; +} + +static inline unsigned int obj_exts_offset_in_object(struct kmem_cache *s) +{ + return 0; +} #endif =20 #ifdef CONFIG_SLUB_DEBUG @@ -1277,6 +1310,9 @@ static void print_trailer(struct kmem_cache *s, struc= t slab *slab, u8 *p) =20 off +=3D kasan_metadata_size(s, false); =20 + if (obj_exts_in_object(s)) + off +=3D sizeof(struct slabobj_ext); + if (off !=3D size_from_object(s)) /* Beginning of the filler is the free pointer */ print_section(KERN_ERR, "Padding ", p + off, @@ -1446,7 +1482,10 @@ check_bytes_and_report(struct kmem_cache *s, struct = slab *slab, * A. Free pointer (if we cannot overwrite object on free) * B. Tracking data for SLAB_STORE_USER * C. Original request size for kmalloc object (SLAB_STORE_USER enabled) - * D. Padding to reach required alignment boundary or at minimum + * D. KASAN alloc metadata (KASAN enabled) + * E. struct slabobj_ext to store accounting metadata + * (SLAB_OBJ_EXT_IN_OBJ enabled) + * F. Padding to reach required alignment boundary or at minimum * one word if debugging is on to be able to detect writes * before the word boundary. * @@ -1474,6 +1513,9 @@ static int check_pad_bytes(struct kmem_cache *s, stru= ct slab *slab, u8 *p) =20 off +=3D kasan_metadata_size(s, false); =20 + if (obj_exts_in_object(s)) + off +=3D sizeof(struct slabobj_ext); + if (size_from_object(s) =3D=3D off) return 1; =20 @@ -2280,7 +2322,8 @@ static inline void free_slab_obj_exts(struct slab *sl= ab) return; } =20 - if (obj_exts_in_slab(slab->slab_cache, slab)) { + if (obj_exts_in_slab(slab->slab_cache, slab) || + obj_exts_in_object(slab->slab_cache)) { slab->obj_exts =3D 0; return; } @@ -2326,6 +2369,23 @@ static void alloc_slab_obj_exts_early(struct kmem_ca= che *s, struct slab *slab) obj_exts |=3D MEMCG_DATA_OBJEXTS; slab->obj_exts =3D obj_exts; slab_set_stride(slab, sizeof(struct slabobj_ext)); + } else if (obj_exts_in_object(s)) { + unsigned int offset =3D obj_exts_offset_in_object(s); + + obj_exts =3D (unsigned long)slab_address(slab); + obj_exts +=3D s->red_left_pad; + obj_exts +=3D obj_exts_offset_in_object(s); + + get_slab_obj_exts(obj_exts); + for_each_object(addr, s, slab_address(slab), slab->objects) + memset(kasan_reset_tag(addr) + offset, 0, + sizeof(struct slabobj_ext)); + put_slab_obj_exts(obj_exts); + + if (IS_ENABLED(CONFIG_MEMCG)) + obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab->obj_exts =3D obj_exts; + slab_set_stride(slab, s->size); } } =20 @@ -8023,6 +8083,7 @@ static int calculate_sizes(struct kmem_cache_args *ar= gs, struct kmem_cache *s) { slab_flags_t flags =3D s->flags; unsigned int size =3D s->object_size; + unsigned int aligned_size; unsigned int order; =20 /* @@ -8132,7 +8193,13 @@ static int calculate_sizes(struct kmem_cache_args *a= rgs, struct kmem_cache *s) * offset 0. In order to align the objects we have to simply size * each object to conform to the alignment. */ - size =3D ALIGN(size, s->align); + aligned_size =3D ALIGN(size, s->align); +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) + if (aligned_size - size >=3D sizeof(struct slabobj_ext)) + s->flags |=3D SLAB_OBJ_EXT_IN_OBJ; +#endif + size =3D aligned_size; + s->size =3D size; s->reciprocal_size =3D reciprocal_value(size); order =3D calculate_order(size); --=20 2.43.0