From nobody Sun Feb 8 06:56:12 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 57E213019CD; Mon, 27 Oct 2025 12:29:31 +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=1761568172; cv=fail; b=HTIv7XwisQZiBq2zKZ9kNT/fkOWYWiiv4n0c/yqfmQj6s2Z6Rde5V1wuwKg4SKyMqqKuVhx/yCU5vI3JQS61o3CMHldXTHz7fg43ozKtSBHDrgdCrzqCSHRJaM+UN22hvpY1ErptZfAEhAuJFjpSXw8eGH2lpwolKrL9CwUa+cs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568172; c=relaxed/simple; bh=X5VwdLPqLl1KEDwBDbSBIVSvAr0fNIOLoPegtgaY99g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QMJtDd7IZoT72WBAQVnV8AhzQXd2YuT+gILIozEsobwQF6H74D7E7UlUIgwD/6iTt27gvVq6wQxkAOjtevSXpwZxVGmeuMzwifxrqNZ+sZsfwriefQzcBpI4zHsY6dbrGdYUIiGBWoKZKx5iMscIPBVroSXqQdPLrwxtRdtnXMc= 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=SpdgK84Q; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=QthBmGjD; 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="SpdgK84Q"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="QthBmGjD" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCY9d018909; Mon, 27 Oct 2025 12:29:08 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=vYiQu729VWdgVPdwqe9GOhPcci/Po+8FXRfkTjo8K+Y=; b= SpdgK84Q0I6Vsh4r0sSFAd8FvxKRSFojuCgxdVkTXiCxXgZc9MMWlNw66s6onbb9 5OFNOnouEYFojXrXm/PELRhFSSI5riQ74PDWOeILGO+qFVhPWOv+5ZovGD8skNPD ymMaqd3L9SkVBHZmvvlDSWhYltrg4YONYpi5srzbx13rlmx0SqIhdu8cEK9IycRO PxcdVoap42JkTMZblOcWw9XuTQQcl0whdisPNwYbfo7QBPLSnYxH6D+S/X9gxTDP 64eCH4Kv2XTHxqbZTJMYs31A4t6DJKXWQtizWT3V6knhVURzupwjOjwqTgOViZKs w/ue8Kuf0/HVV2cR6AK9fg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a0n4ykbba-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:08 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RAYL9t035006; Mon, 27 Oct 2025 12:29:07 GMT Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010030.outbound.protection.outlook.com [52.101.46.30]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4a19pe4dk2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nVjL3Fo89N4U/Jywl6YERVo3h9wTLH5HRZ0m6gERfl0F31K2UR+FUIKxA8U16Fir8BUfAtdd/YIuEqTkWWtcoPYR0ficxWlHO64plOgw91x4kBdlCRo8yOfIIhHDcp2qcqFXIgk2o1baZD3gC43WEg7isX5pTvarmF3zVYzigtny/RXuqGdML3GQOHhKOwmogMK11Hnb3MwgeBJm9A1UgbTXJXgxyt1bCQInPtDf2uht0Y1WAnXs36kdhtxbgthq6dUHidvkL47muL9EsvMgQCsdlmiEic9y6taAZGGw7fuBWmZSabR+HT3GP5quRhjF9KsK7dEDRxWGJVouj1leGg== 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=vYiQu729VWdgVPdwqe9GOhPcci/Po+8FXRfkTjo8K+Y=; b=Aa3f9RWNhfnIweWKuBKyYP27rFZ+QBqCzuk3e6+u90IhPz30GO4rSNuB6JmHILmrFGqnxbfctvxwF6fKrQH7P3NKxHTd77kXTYcNbCx0nv1P0otmnj0pil3Z9GAGgFT/e5q3OxppdcpF+5sZE0vzPzWUTinC5bVy6jOXnTtAPm5q0HDm52+9Dr4EFjAaTt2Gf3NbqShEXuER6i4iCFKG3gs5PLA7/4QaJDqIdo17TTpsVlq+G+BY8ffZRvWbodOH990te7PY/fY+D+dR9M9YyiklCmuWqiQaj/q/R44DLuFTvM58jooBZy75rBOVizeSFLrAfkgsI7/jvuFTMKHaRA== 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=vYiQu729VWdgVPdwqe9GOhPcci/Po+8FXRfkTjo8K+Y=; b=QthBmGjDV5cO5QJxJdzz2fpa2FZ/Ahwvdkx2RTH2O136fJ3OGZHUbSe03ZIx0ponw2Ye82XNk/mpCBKyzTWlr1dBg4b/mX02D0C0wuThPSrftBlBGRihT/PPgtqdSL3L6R02iZmxUmnCDloDV3/c38hGvEkBZsck8Sa35rW9mK4= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:03 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:03 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 1/7] mm/slab: allow specifying freepointer offset when using constructor Date: Mon, 27 Oct 2025 21:28:41 +0900 Message-ID: <20251027122847.320924-2-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0162.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: 8dde2137-9397-4269-c973-08de155469ea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uH1ZSz5TBdBQBJVmN+kk6IJGB1Y1w9d+LabMcGvbX7N3KmCxCLnElWecwnCy?= =?us-ascii?Q?ztFvyS+vzikHUc5VaGD9RX65lhSfYIkcSe1Y+01jtDPlNJr9SMWqTl8lqnPt?= =?us-ascii?Q?oN62lnb6L3jDcHYAHyF4GkSHg1AgplET87BfWBC/GR2KZQWLhopc4x4OL2u3?= =?us-ascii?Q?kJF4GSfhTnbW4aee5GNs8kNdaQMT8M+J2+cxW6g4RrVbDrNywVFG0pVTM5LX?= =?us-ascii?Q?sirY7lwDF0ax+MD3i0kYdl9yRy+NTrhB0Zk8Qwgm/cfis8Za1+IQPzFQG846?= =?us-ascii?Q?kQiEN3JoGq7078KUlTZ8cgQuH42LrAvBlzKwAKXX/62DpEU+ph2SvUlRYRej?= =?us-ascii?Q?IrKO9Y4Tc9oZRcibveGMETYNcSkpGGoYgG/dF3AFYHWqL9AJo/aiGEjNvsn6?= =?us-ascii?Q?yiXxtd7WQgfO5j3M2IGpIqAJMPrt5VttOKmfO0o/GKevtIiPPvMeooP+97+9?= =?us-ascii?Q?yCM+zec9VSnfiiftku8kgXue+6GKLJj+0Pw2l9MO80OSScopGettMeYBg1Ri?= =?us-ascii?Q?d9qqmcWaCM+JkeBABnIuQvXyW44pzC+o8QqoboMbF743PYqvaN3RpvBDdk4C?= =?us-ascii?Q?P7+MNLJ6XmDQDADwa3J5VlNjSJdo5S8dhwcOes7HxKp1V/lU+GI3hpzu3+Pf?= =?us-ascii?Q?nTDVdKV7wgE8utkD/VmX3/QgXZjZclcQOr9LeqAoPdDjOaQbPxP8zkoIEDj3?= =?us-ascii?Q?ulFnhWeeJ/lz8hE3hqPf2NC19hZ8uveK+h66pj9xalJfGKAZt/DGf2oqTweF?= =?us-ascii?Q?qmPz0YI3n2Hr3KLcz1mR/tSekhsfG5+WHt2dBBGJV6+Vbc+cyZXZ0WhtSi9q?= =?us-ascii?Q?InNLMOTkEjBSps/bWnfOaPWkiUHtK+i6GsrMNNLbNKNZlE7QUGtBAQQijs3o?= =?us-ascii?Q?fwTQ+6/ZKoGC5YI1U/13f88182oDHXv8H9bmqqvdH09raodoiLus552IGuRV?= =?us-ascii?Q?R6sVVwJ/8b3URtKzaFvexO4yDa9WwlviLaLkUSFTXGFY65aW3+eGPoQ0tqyE?= =?us-ascii?Q?zODsNWS7qLMQMEJmH3h9j617+CbcBd4G0ghQWhfUoANTryfHF7fNcW/HnOMS?= =?us-ascii?Q?jKoAtkjiPJFwCC/ZZ9LCkGuDVhz85eRpESMfTlC7htoUIdRjgf64KLZfAeZj?= =?us-ascii?Q?MSv8Z7xUwuQmx3R9n9kgw12zZA3pDw2DLFuSn2MO892YYtbcVTfdNPyG36NM?= =?us-ascii?Q?159F36QFKPyAEMzMOfTxPMGZ2+Jrsd0On5klP5Ds4HEthhSpcIYL03aG2xeF?= =?us-ascii?Q?132Ps/et08jGRqQv2GAebmPKCYwm+iq7+CYrt3i4qjB4hq7yt5DIeF7HSkB1?= =?us-ascii?Q?mUzMaCX+mu9gb0vErxgZ/GlPeB37FS4dPDnBjSXz1MFoUUdh2rpyKjW0np/A?= =?us-ascii?Q?NeSuWf/0MQ1MnK8T9jvTQzecwRbgqYb95l04kVEr896m3qAkdG8NMru/ZAXN?= =?us-ascii?Q?PTNeZUPO9Z2WUwhh3wxL4Ll4c2QGOH43?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iKkuE5V39bYen0T9qKpG49W6RIiwQAT1Igt3sHQkcPqWnqgSyt4NVBdSjFpj?= =?us-ascii?Q?sYtfoEOyFeo/hi3ypN866KICLNn1IBtR2diH7JiM4YFalG8+do6BPuQzWU2w?= =?us-ascii?Q?SS0GrYRTPvflv2xQHOTASrfkR2KPrvUR8xpHh9NBgEC5+OCdSLLYx9gX3qvT?= =?us-ascii?Q?r0QpzE/OyX7UacJpw6sk0a5v/XYZ+IFR+tWvv5A0jsTxtYgZbqr4+GDGObAC?= =?us-ascii?Q?HPu6ZKWCmg6rbf2OAF+Q0dD7smAFdjPK07nS/bllqEWkTixH8PgKT1h1pq36?= =?us-ascii?Q?WtC6Fr+GJRXGKWJfIeCA+QQKn/jO1NDcUUz19iRc/7UeCoX0/ipRV7b8Q54E?= =?us-ascii?Q?gFXliHQroevfVXzngOKggxCqacLPnKCxTrUzb23CUbfDyHRu4jZm9qQdM7Hv?= =?us-ascii?Q?JG+MKSNeMhvgfUvjNMdeH/RJBFityQdwyV48T1GqGF/7w0IuQBaPTCXaUWrS?= =?us-ascii?Q?ppswD7GVLyIYn2JVhN7CUoTbzucA8bI8sd4q4E27ytSMyLjp7Ic7ZcSXjO+E?= =?us-ascii?Q?cfqe/a/nhIs/r9su8akKoWbytxyo9iEB8gQiopzMNkndM437/MtddP/n760l?= =?us-ascii?Q?lVjO+OW3dgDD1yMq8yMt7mc0cvLG8TCxZ2fuuC6n1je7R5b++Uq8qQde5R+F?= =?us-ascii?Q?hEGBWrLHDB6PaNhk6H1U4q0yzR/FLwgn5+iuzJOtlIa772FM1QhbCRg+uunX?= =?us-ascii?Q?cRSLLXR/d1EYCnwWs9BzKvXolrgWNS0xi12rEzUUbVXuyQl21YunjOr+NLIQ?= =?us-ascii?Q?Jx3rO7hrfanUknAyxUMiAzTSFjhw9OErNdpajHMHooZ1VgottNGKIfD2v1yf?= =?us-ascii?Q?C8CikWy0Wni5fS9fJQ1OxPLD4bDpnCYM91Cl+vC+4zJP3gesOAqfTVIYOtlA?= =?us-ascii?Q?KoiiQ/qL++p3vKgU2GhwjOhsH6pD1plYfxP+Hp7vN55hyGOiOXlzh9uJUKIb?= =?us-ascii?Q?q2RiBjTI4yefbStu9F3AUSNHy/ls2BY2XJzy+eVh2YR+qopfUbgaOP5oThIv?= =?us-ascii?Q?gfRFRCdfB5Ysw4VvqJzi+3Vf9JaK+EbdmAaO3E+hjlo31MN9BZ6BP0wgNoEg?= =?us-ascii?Q?y5tskTjHCOGPDXZWZokLHXjq13+yrsZrUAbDbDyQCKB4vKl/fyOrK9axQ62n?= =?us-ascii?Q?cXvqAWaPQMK+xXPq/xBLNFHf1CnAVzD5gP2vBg1h2de40jAi6wrZhvBYCz9R?= =?us-ascii?Q?OA3plfNRHjFd3UZKU+8gXyIerqB8O8j7T6ErDtYc5EVdWAqvSNLhjT2ZuCYN?= =?us-ascii?Q?YeUTREer1us00EZcqT91jn+PYQpp+q9MRfP3WLGyI1H7U/vsHsOSV+eBnIPB?= =?us-ascii?Q?FzpA3+clhBc3q0N0UZ5f4aULI2jlBFG9OwmId38xqMhJKG2oUyzxvOio6mcB?= =?us-ascii?Q?S2hzx7fYmsIZjK7+TCaVBS7cFZv6LslNpqPHKrJAM68MIpTG0Hf3lMo7BlSW?= =?us-ascii?Q?LYy+IpifM61iOmikhMCo1AkYbuZStEcKS5qsYahRLWFt8AYs4exHqv96m0gR?= =?us-ascii?Q?NJ7II0cTti0sH0B3dncfqvIjgOrfAL25VsBVF7mUWCTC4N1yM+yLlKLjbdnB?= =?us-ascii?Q?Y8IngbApQcNuU8K8oZrFURUN6lMPYHRZGR7fhzNf?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wjrGW7OyRZSChvK87/lwPz8sccbQIUDbQAx4Q/Elb1bsbWUI9XbTN87N2d0BmQAQonU2pZrCIgUxjBrE5Isjvo89vY219NUb/5fXos6IPOd6vDqwWZ2kWyshvp4CpHz+Lgq0wlRArw9OnmZLqjDM1uibsESv3T0MItVOffiIJKK2QVvnvePYyjfbC4QOpXQA6coMvSB+eXB2JoeD1BrJxIuPSIjaeSzXCyPE/Dm6IjjI6zBWXhYkOCErvDlzwNr1WefoxvP8pRx0h+MZ4pOwBkn/YwqTH5AgIcmu7yn3lGZWxMDS0DFR8pM1LVDF1CKmolqRWEZWS/13bVFebsLSGOvBzdp/l2zQq1tnwkrWJ/5+CLhTUeATeE8mNnEEIN24R6a2ddTqQRa+SaLjTl+H1AfZ7HqJqMyDUTm18LqvQkie/vCtzmVXWrq4N6qn7HTdvmLKnjH4YszBMtQ7AwKk10InWNMa8WrAyQiHhaEYzzMAJ4EtV5dW+I5MuRf1A2To2CVG3hw5S1cLX6mtMbd5UPsn2Dxv3ucQQXR/j5HfCM97OUHn8YR6b85Intd59p2Dmhz4zbvCAlrduyCXGrupcYGyyXsr0XhYfR8YlFx70Fs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8dde2137-9397-4269-c973-08de155469ea X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:03.6813 (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: CO6W1f8Tge28PMKA9Ng9rGFSm/OHLDHEMIMrTf9S8JnA1z4BuTHJooR0UoGXWS4DqPDSY+CXS9cXegBxSxw4Hg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI1MDAxMyBTYWx0ZWRfX5Sq94GolXK3q xDHW1cvAMm/N8xJLzrICXmh+x5t2AASn58shzxSE+5vITyrETSTisZBX9JKhG3fqC5ugZBJGM5Q fjT9pMmS54FFcvCuZf+7Sn6sMeW21k0gU+XaiFnS/mGbQnrVuO5PHQylsE0BsO75jkjxVcj3VHy UnTtOjOwQULcpET6Hh9O6oZp19LHekpsA+6jFMApeZPxKYQBTJ5Cj27xz8+LN/xOEBPBiyQ7AV/ TZBuq153PHVZ7gk91ZszaITRC0jBMOlggZzac6p4P8BPT9k64caZSRTKXNU/HmR5PDz7giPJr2s eKboyBeVt6wrLJVdflNfahft2Yu2O6oiX/yJraHU+XfBldHAA7QIpyU8hFQk/5sFuNumJr0Vv8Z od0kNjlqFm6tJmAezgg+W7RJmG10LrUwsHr5czy8XM8QNNgznoU= X-Authority-Analysis: v=2.4 cv=Z9vh3XRA c=1 sm=1 tr=0 ts=68ff6594 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=D2mUB9UZQcPxL8fauqAA:9 cc=ntf awl=host:12092 X-Proofpoint-ORIG-GUID: faqi5X-TH-ekahnfYM9OnNfT1A_94F5o X-Proofpoint-GUID: faqi5X-TH-ekahnfYM9OnNfT1A_94F5o 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 care can safely be overwritten. Allow specifying the free pointer offset within the object, reducing the overall object size when some fields can be reused for the free pointer. Signed-off-by: Harry Yoo --- mm/slab_common.c | 2 +- mm/slub.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index 932d13ada36c..2c2ed2452271 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 462a39d57b3a..64705cb3734f 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -7781,7 +7781,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)))) { /* @@ -7802,7 +7803,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 06:56:12 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 7521930F544; Mon, 27 Oct 2025 12:29:41 +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=1761568183; cv=fail; b=ZLeryIp1JjIDDyEeRHRf+UhxA5jqsZ6IoPMcZhjUnDREJFtw6goiclbWvV1pUId7gz2/W4SXljHxOWhN3igwpa/tOPp0GZvr1jUZY9NvVEPz3hUdb+AmfkSGQUlYh26A6jvjWfcQ3dlIDXbwRyw92n/sXkpPlOqiBSpRhjZKNoo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568183; c=relaxed/simple; bh=9t4QBN+QpeV/4+RfCsFB5tGWghzLGL1BFwO5oKPoi6s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gMHgSORn3r2KOenwGyG/YKeiW5sJh03CstDroD6fcG86dzWlfEsnkPORhtwRRa3nCxwI6sKK2heDveUTBJrL4T+NnKWeRqCAinnVJtb93KWqtGucQtiinutCixR/1FEo4eIMSg0nfcSeRBhrAKnl15aEzkQXNZi5Wi/eV/qkdno= 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=dtw/0vO6; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=obUS7uVk; 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="dtw/0vO6"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="obUS7uVk" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCQoU007390; Mon, 27 Oct 2025 12:29:12 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=V8+JeUiIuH7eVva3pOXFlGYID03SjbsKZEJTSX5UBm4=; b= dtw/0vO68Il0ORobZeObiHPDUh/1tpAai5hH6OfapnDJBytWMxy8zBfO3sTAlXMh sEaMG1vrMfEIEOXxXVtojR+xWq3KJU2wXis9TfrMhDcClknriXgkHU9AuIFXfzhD klmGPb6Y1p5ootAQrLktxJxMejEbGNgdFPkY8AnnEfhFRl4CVP0j/KLqqbbG5Uom s0ssytIzmZIa4InAro3X8y5qJZxzMGjGeBZ7Tg2+jWBnIwm8uPiU7G5ojdkWdz/4 eU3wv7CAqHT8RyK5qYl/3QgnIdcqd2nYPzB7mv2EkZXEeLu7reQqN1ZTHrng6Kah 2pi6WFQpCpuDtE/LkYzwTw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22uwgsgf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:11 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RARlEQ014984; Mon, 27 Oct 2025 12:29:11 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010070.outbound.protection.outlook.com [52.101.56.70]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n06r04f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ewPODe7cDMdgRQZ+2qvdWq6G4Go/oigEaJG635nzTbDslCeYKFOSH2Z/E3CHhKj7Yfsfu3R9MylpXtUtPMo0TPGhF+YkN/z/Qr4TxUpIJFMb+hCBSfwvyY9Wbk7q5zTz+O29irxAiVnNCs5Mq5BuTbMWfgMYizs9kIOmfukfNhRo/XKLn4uiXKM0lam5wJwXYC0TGS2VAxsQFKhh9kP3JfXWddVmGvKbIdZCFmRnH4nkViryMnCQi4wA+lFkWchvsS4W7YIgRMsmtGgm8pGnACxCChS8CJ8DNn9qps6w9LwdBbw5yjJYYQv/Gh2ILaKdsnZ6MOa87niv4yxSVlUsMg== 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=V8+JeUiIuH7eVva3pOXFlGYID03SjbsKZEJTSX5UBm4=; b=tQmIvoO1uVrRtrW41D5U/6p6Vpb62mP+i/ymoyQmFvhQsNvjbTQjLp43yXQj2me+nifLa6cYWBjA+veXrVAG5c+Je8WgqX5+cS8sIqFOUiMZFO9wMSmGObT7LDRe0lSApzI4zrVKvrzpNwqIpVlS8HUo8A6okiCHWEcN1PV9ml7j5PLO8g8PZPxChU/ME/CyUae9B+BTtH7OkY97Km7zwHrEiMwB8LXkg+ulf4+KMVtY/zE4N0RcV7zTE2A8dhqi7InMDjF8wqfbQgm2UU6lJQRNPouvog/lNmd03HdSOtSe2IgrRiGTg55CA1lT8vaiXfBx9JhyF/gm0A8LNS7lIA== 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=V8+JeUiIuH7eVva3pOXFlGYID03SjbsKZEJTSX5UBm4=; b=obUS7uVk3xHE02IsUVnrnRpOoElQ7h/czAbY1bmOlSwQ2rKs3HpAhng/ic7ZsAF9OubiXvxbovYlsIRMx8/VI8M5mMnnLfukLEGKK26E6KCMUoE9DvmdBfX28htcfcsx/Egb/L94MXTcjeZTW7h2jqAF2CCvN2AKnOlwr7NPSK4= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:07 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:07 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 2/7] ext4: specify the free pointer offset for ext4_inode_cache Date: Mon, 27 Oct 2025 21:28:42 +0900 Message-ID: <20251027122847.320924-3-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0113.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c9::17) 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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: b9d36135-5768-4e2d-5ab4-08de15546c2e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DLNCZsW5FqEpgr6JSSWxFYZk2S5RGT1QMffRmobWOgQdi92K3xwEVgT+zkQx?= =?us-ascii?Q?kQgAN8zT8x57N2i5yhDR8p53gVj8GFf7dC8N4hXTpsfzG2Z/Qi4G2/1EAsvp?= =?us-ascii?Q?4cHYCYmmPdFMuc1wQdtE82Fyx+NT9jnzpXy8GwaSS7qERQEPysHabhq+fbMm?= =?us-ascii?Q?jrciVA0eMWycN6SH6FOfbQ4EMbWjj8NOfkXKbNhLj7Dr6k4TN1CqiwpjfAOv?= =?us-ascii?Q?Jk7QoOdBVjLuXkF5dtwqxibgJLIMKfLI9Q1qRVWxSv1PPt25LaY2HpbpK+gT?= =?us-ascii?Q?hE/TnFLwR8+bzwD04bPkonplQK2ZSxxpfIN9915UUvbWY5Q5FjLyvcq/gtpx?= =?us-ascii?Q?pu3/keKFP2RvLXfpZnbHsrmWnKs9xUhYB/4WllRvSciqiEdXVyyes3m1jAKE?= =?us-ascii?Q?UUftXJZ11EkFxOJgAFa2oqj5CLc8DpW6MUWs3x2yC1mJmItkRN4h7rTm4Ltm?= =?us-ascii?Q?aXPfpqzGL8cs2p3xnBlTih+P+5+6ETutpxtIuRx5yE2UrSoOX+7NBJgd+OPG?= =?us-ascii?Q?cEQ/d9nSWmzra3mi5WBdx9Xa7BU32OwsigmGhoRNCVnz0D0eCJrz3TWNPFqT?= =?us-ascii?Q?kXJs3uIbEAsfZnjPV5FkM1Dfmqi1UxlhY54DZy+WHB13MTa6zWlgDoNq5+Li?= =?us-ascii?Q?2jo2+ByckKw7/6y79GztE04Kl42ZFrRN+QjvyJoNBL9bx+TaxnO3jdD6V7IO?= =?us-ascii?Q?NBBp4jPEWsbTKU3iUOMSJFqJ5+Bubqi83ysVPTimxUJNGzhPu63fku4942Ge?= =?us-ascii?Q?620eG4kat4ynklikbdX98CZ68ugmIWQCzlBQnZYrqAy56wJkrfgOU7hQlJbd?= =?us-ascii?Q?F8z+udxgTke//aJa5t/9+Ej8P1brVZfhiKKt9eWGwCF9YX2ojF4e0htSyuZJ?= =?us-ascii?Q?CeVLtS9spbgIhphOx+3gmgErHqtbO2oejbEM+Z4tjfJO58MWuxxLhXMUFtiS?= =?us-ascii?Q?bVG+wp4F8tBDsORj0PO+6xuNxna/wTRe15y/aByi/50TzUbXMSaqGJmgvqEV?= =?us-ascii?Q?rZ1h8hpB1RtmCYumKmgPIVqNA202kXM5howLUA51cyzFhjAdKzBD9HThy32A?= =?us-ascii?Q?5twL4+4TmU4iXsiCdIpygidUJHcmqoYlWIJ9GVbPVPO08f7HiWhMRmTyKHur?= =?us-ascii?Q?6FGdbwilitavmN9DlbuIeLeBMq37PFPuN88iwmEjDemAn7HK7ms+QSoHFuqP?= =?us-ascii?Q?zQ8CNzH5a2R+TOGFI4Ikk1lM0iwmo9eGNk6BvkVnb9b0Ht1WMqcr7PFvom/G?= =?us-ascii?Q?EE6KgOiTqDm7kGqbiio9RgaQpP+eBwjszcqp7X5mxe7bR3UDJVCAWRefLDFN?= =?us-ascii?Q?mOQQFwLm8lSOQCkvTr5RXPgmG4R1m8Fb/y0tqsuTcB47OpXESJFVodK0Fsta?= =?us-ascii?Q?YsRKH2ULw0DewhUS0wzPi8qJP647xvFJ3VJeZte1RSFsAye42+mGjAhBcKyD?= =?us-ascii?Q?ZvVsneWERkxdFQh1NDJVaVo2hF0Fqlfk?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3kZn30I9EsVETtqV3GaheZ9FlVQSU4mwa8mxXJuPGCuzOCjSRXNh3SyHg+Fz?= =?us-ascii?Q?QJeYWIAjBzHez6CzfB3Et/nSEw2YC/DpDvx214C/uoWD0wD+Eu2prnEFhydW?= =?us-ascii?Q?LH2dUUbdmvRiqWr2DPe9feA/40bv+UJQmOxr95lNbRYI1CY35rWZEnhLYhP/?= =?us-ascii?Q?xfvGEJWZw0t5HiZ1WDpT1t5SBYuWIwP+LCorD+EL1N/Qien0esM/6eIkvdXn?= =?us-ascii?Q?kgsid6xn1mRVuYcjH0H0pTFstcJufx+6ykfvCr7anjGbMdVaFIPFhABg7c0j?= =?us-ascii?Q?bteaBENgYlcm4xJl0F1Uc6GWWZCMUiC7O5YimhZxgsaxqJiPD79XdF+vJL8a?= =?us-ascii?Q?exhuHcwrcvIKMx2pE/CUhJydtA1MlxHZqI+A8Ic7eaKlL2Ra6Ot4OlD82xBY?= =?us-ascii?Q?BB05FntchNx+ZskxFdwIsdze6ae32ftfFSLNcg4rO6Wsk6vGjYvVuYBQ+LXx?= =?us-ascii?Q?NpScWUPeX3WIJchcwORpr7tE/0oaeSIVqprkCKv3v1dQYk2LnXsPrnvGwLs/?= =?us-ascii?Q?hhuXb5Mc2+AyeuZUhsfl1ZOmJ9FxyEn7GpWv0erGf7ATIzOtEd5JV273jiVP?= =?us-ascii?Q?HFmcQXTxZFEmEUYw0UsAOVqas00TbW9kD3+2v9RQo6BKHfrgOBcne+Dmc7eG?= =?us-ascii?Q?g2R91+SsnwfVn+cu2lneDsjTCXHtVMindLZnvFqmqGAHaRaiG4bAVuIwCPkf?= =?us-ascii?Q?NDagwGaB6g6LR+Wo7VRg2xRJ527MP8JnmH1iYdZc0q8H+aWa/0MAjAyRSRSt?= =?us-ascii?Q?28Tt6I2bDy0VOpOvGDXvwz5ccqfglcNFDka/nvqt//Vi1+SJ61WFWPT4iXHl?= =?us-ascii?Q?9DaCFm2n4O2zpnPv+BOpiOU+c1t5SZDCzIPCNBCIQJpHODw8HtB/sjCE7XJr?= =?us-ascii?Q?LNYolOLfioJn93HaYGEkG01Ked8KEYuBaJoHkUPZQC6NBoMYL+kDz1JDMORJ?= =?us-ascii?Q?zcxYiNcUxW5Zh/crUi44MqUJJEi2FDyMDBZZCN8F5bIogp7P7STobgQNgBDi?= =?us-ascii?Q?0sl95lv/XDNs7hXjNYJIBOsg6lZ3wK+aKhDDqOJaz/ilaI5oWpJwdYS+cS8y?= =?us-ascii?Q?ZdMUg6CzN84R3OqRRB5rV1Lq3JcoNnWKORDgRrzdRDM4US2sjnpKdcKoqsS9?= =?us-ascii?Q?5H3W7bMurd+jXbntYXY3kngTmymVLxpgBhI3KH7ATZGi99GtAL0RUdoq/8DK?= =?us-ascii?Q?E7k+FKAR+9IXnQWJpSSSfac7eLAXxPvyiIzvNvMLQ1AcJ0Gf8RLKB3H0/Vcu?= =?us-ascii?Q?0pLEhTgiREmraQ9jcm05yF5wnXFyBfAo9dy1Wq4eQNPry+Eq0ONCnhHR77zf?= =?us-ascii?Q?OFwpcyPaUR3zSsLFEcQ6ZJ5LMbdiYy2KD8kfkrffL2DbAfBz7Ri8CC7k/xQ2?= =?us-ascii?Q?yALAOUE8IHyFrvE2kFSZpssyShG+NPLBi7zdw543mqgjIYSdrj6BU4BR5/Zt?= =?us-ascii?Q?zvS+FzblmLIgpLgFcCYdwiTjN/TTLRyAmVFNgiGNY4gMDwupceQRAWmp1rHW?= =?us-ascii?Q?uBlm6teVSRSPFtWNGN38tJ4WKCvy8DsCnAidve11jOc8kDj0PZya/fTkFfl7?= =?us-ascii?Q?ZHPpGQinjUpzTsoWJLgmbQahqgxHPjubNrHnpN0p?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: q08HXxSRQyRsWcpHx5W3mLbaoiFvlkQ6PQG9pHPDJZ1gBsdEfSAle72IB2yqz/WXCP8TO4yDXJ/c9yUppMEWKn8733HPNmgYi2+m6Di3PrmcbIsbaC33Cbq2pu9OZYQIMvoY5kIsgyWaGdb450yv3zwxWSUgp19PRr/H/aAsmNaRjI5bH++DfrKVju5EJJ2Clo1LwtApZiGpUNrXt9fj7ZB6sFAZfCw4K7qDeSRvuq82+OD6ANefs0+o6lfMH9WW6tuGWp0lCq1Yg+qd1cjRyCbx+J1DMcQ25t4lLYA+cGKtvaGFf8TR/jwA5AI6D3Kqbk51cLD2nW9Di1AymVEDigojwG6IJ/Y5/xE9kdHTtRWeLGEZN4zriWHXr7evyQnhlExWU4lOSsyjTxgiByxPm6P/6dovw1djOcrFnUout1mV/cu4uQ+BMB2Hlonbogye2Pvs2Mj7sypYfK5aoCwQFowRnkVP2tpFBSnkHt6LTJuMgn8wJlXCPW4dGjfd7N54VxCIZPFiycHLHQLhTWpw/oC/pbIWbx0RAm9ixcmaZ/YE5rGvAYN78F+4qfOhyLivk/FxLxogv8xpCjq7KV9LbkQ8Vjpwkiv9thO8nsRiJbU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9d36135-5768-4e2d-5ab4-08de15546c2e X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:07.3383 (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: 6Ya0EsHMyhAFIxl5FIhwt0KZh+UTOGV0SwycZHjjkwdyEEISZYQUIsky8ggS7LuDCBU6iHE7615rvJg8EPT0Dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Proofpoint-GUID: zNLLkqpcGCMPihsqKgFqYOuVtBUhLQBB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MSBTYWx0ZWRfX70/uqpaUJ+gG nEMNbRoiaEDlKFnW1TJ4g3ZvUmfeA/bUL0uzzWps3WAvQPvtrW1M1FlSKhNpK61W79NbhqW81Gc XqHO0togO1FgFPFuRIBwHhii5EF92CMVeOZqExqWnyg7C7kjspH/v9sqoJRVGaxAP27T3NKro1n hyHF598VINqdAQpYywpEh77dBKyxcLPEy0MPrmVZXHj0sc8DHZfu5wNgyU9be48w39d0gW1aOkH 0XDdnBhGthyw/sqhOiHgGm1PX9KKzeJYyzKII5lPxaKEfV5jW2ZRZMdKjBtKAPeDPpm0QwVS4Ni 5myTi04zNdLkrmEOi4nw7/g19NasbwNcqUflr7qMU2a6YWXNp33d2KYtZkNVMOeH0lkI1jqm7SR LexYH73zmznFllry0XE2dM/mcnCIxZC2M8Ywq5av1SzmgrKjBNo= X-Proofpoint-ORIG-GUID: zNLLkqpcGCMPihsqKgFqYOuVtBUhLQBB X-Authority-Analysis: v=2.4 cv=Ae683nXG c=1 sm=1 tr=0 ts=68ff6597 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=JkBuEhRSSIryOgRXcmIA:9 cc=ntf awl=host:13624 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 699c15db28a8..2860e0ee913f 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1474,12 +1474,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 06:56:12 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 C9D923019CD; Mon, 27 Oct 2025 12:29:39 +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=1761568181; cv=fail; b=KQdN9XocFqq2RUgQ22AaFHSGuT4n/rBT+w/llLjhBD930VE4MPDZTlItDT1VjL1nUa7ZIrDUETlNGm7abn9Muvf/ktLa2Om326AZuZrfISrVsnD2MOxaK62C+kB3XNPF70JP1jAkgvHFbZF1ukgw2Kvt6i632Hq0Hdgn4MhLdrw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568181; c=relaxed/simple; bh=3YhIOkA1/Ov77PbhAEWTy4SXeqs2kNaqk+fFruNPnzE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gHK9ZoGTH0RxhgchlABDlznMrx0nZWkponmYPxn/lPB8gBShyR9WPQl+LBj0B3IJSGf2l0vMSfZDMR3G5Xms+Si1vy4H3wnhxMNCge7rIf/UGEhZtd4jKsNncYtrDsd8mSY/wBZYB5J33dK8+f32L4c/QRqdJcdX+Eu3/nai914= 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=kJb5QADi; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=GmSW692U; 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="kJb5QADi"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="GmSW692U" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCcwK023548; Mon, 27 Oct 2025 12:29:15 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=ShFw7sK6iFqIIMiPSnfrnksmNtLHDon6V+HRut7xZiU=; b= kJb5QADimI7nLjwz6fN8/W4+3pIuxuT03FjH1unqrvrcU7GI85X5sjnuGzPhipHg Z9zsxTXQcgRs5xkKzjRfovaGmfilhQiQr7fnBTmzyBDjccuMrbwluUUpSeBSOqfQ ZAviC+01RvMqUzZym+1hhAo1a3fbDEvBESpSazsiJiJKKIJ/FrwFlQQT/Xl/OPkA MViAzVKxVNuZBK0ixf2nYMxPMxOpaSj7FjQJzVpjD74YCDqULnBekHRKvC2d7whZ 0igUD503CJFXelax+fISv6okjagVMvuHvdjpa7JN4d152p5DPqT7TsaS9QYVCla4 YiCwv+YW/8DqOx7Nn3vIWw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a22x6rry4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:14 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 59RAj2Ak009057; Mon, 27 Oct 2025 12:29:14 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010060.outbound.protection.outlook.com [52.101.56.60]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n0dyk01-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mVb+zmUC+vDX2N5YgLjzhGATAQ05POw3xpXbirDDU6eAJYW3dY7ZPI1kfMvZaYQ6TD5K9jGgbi6Bj9ptb5swfMXIVTJkHnBjw1qtX3Vd91CJ+TMuRYMdx8WWI0ZsYolgM3ZDOH7u++poovUeSdH5yWiJnvVnthce3aFSRJBAFDUF2tiLUVrua4k4KVqfpdRp1mAIWZtsS27+gzhYQ1wbcMlgSmkKwgidvel2NI6ZcODpfhZ+Q8cQP77kn3yjHbtWxJt/b+4VKfyO/+nHwHyAb1XMhxbgngzsvNJUxwP0ibYjpAmu9nWqf+OYf6ZwCb3X7Ils89VeRDQ76c6b/VekNA== 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=ShFw7sK6iFqIIMiPSnfrnksmNtLHDon6V+HRut7xZiU=; b=Y8r7Z9EmOMPdj52xWr+awxAMurhs9LxVqSE8J0eCi4VD2ve8PbH1Br9+5HFbm/FdLrKggouC4j71GL0M+Gcrz8QvIv+bILct59AJF63yFlQbVJLLLx+VnGxISCfZjRLauM3HLOvJFuSOB54XJBDSq8S+mJToXOSvys4gCFtDu0g9EMl8av+ODYyUXkFZ1gh05JNgjVX/B9r8aiwTY+VgGlhBud44lSJLSOy9EszqV6toqCPTVLgCAW4JCc8wgnaMsolglXJ0COzmCqdfpZJAe7CbXMf1QgsFc272LQUakLrh8o0moqeRAyJDk23DrqEN6g37I6oErvtQq1wPRNf+Qg== 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=ShFw7sK6iFqIIMiPSnfrnksmNtLHDon6V+HRut7xZiU=; b=GmSW692UEZQcpl5TvAGlpoywCrYFLp63e0qNbN7XnSa7jTRFuIfe4yCY5vQPdHQG66t64Z4tz55+uYDdOzapOJf/xUSC3P45Ypwu4HrPw+yt5bZTbXQLNCYpQP1yPUGrj5/r8byemH1X3dki1fLT/ceVPeLYXlqSG7OLJTX+pYw= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:11 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:11 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 3/7] mm/slab: abstract slabobj_ext access via new slab_obj_ext() helper Date: Mon, 27 Oct 2025 21:28:43 +0900 Message-ID: <20251027122847.320924-4-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0072.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bc::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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: bfbde1da-548d-451f-b446-08de15546e7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Bo9zrB9GWPeOmHD+0K45CNVV4DP9ambZSHLyznn+7EbLZ/vyQJ8OASoYIe1r?= =?us-ascii?Q?dEsKtCiwoGCaDY3ugGBZ286fYD3/xJdphsnIH+SV42knD+D5GmIB+B7jZxhr?= =?us-ascii?Q?bK7eFg1paz5vACAbAuPbJnjTTdcDaoxJStUwFqqL7cGUbyfA/GYwCFbCUlJd?= =?us-ascii?Q?cSuJADwQvT+rcTv++wqVaPtdJ3FZGtbPHN6vSZrmkS/w0z5x2xy2BjLViYRd?= =?us-ascii?Q?xLzbRq8zpshVPLGZgewcmTru4NWMeoUXVwHPcyU99wfjoVtc2aoQhqZ+xrsk?= =?us-ascii?Q?Uyztd5NVpDecKCSoDedd7+knPqwHyl+Va1VcuHmnq7/Pps70GdBAOEa6KKxV?= =?us-ascii?Q?swbQGFlz8Wi7R4KBF0rgSTftLtHVPK3DFWyfPF32cS7ykYZOUqKwAmUmLimK?= =?us-ascii?Q?4767LfMjRjgcZomU/SedTri6X1Qs9an2BuhYTluD1pDAWDKih+xjshSmqBwk?= =?us-ascii?Q?BgRtRKF4q1/0H/IvJKInTIZf2jcF4akQV2Sw02uICYVr2km1wOnw2vkxXN/N?= =?us-ascii?Q?aq1L0LwYsYUQLEaZLg6pMhzJbpFFUI1mK5chUg28GBBMLjM9d8x12IviSofI?= =?us-ascii?Q?E04qe6dlAlPB094l704XV4iuuKO20oX90V0TfDFQyfvGwszmbXw7dF+mBCM8?= =?us-ascii?Q?x/I5tSLdvzPMxeS7JsLifEyLA68DMX4UfyScQA3z0er5Nl3VNW8a0VkoY0b8?= =?us-ascii?Q?nzc57/dQbrJJMP8m7IlyR27WFvJ1F9k+oRicHvUr7RHS9D+YJIZOQwu+HOUT?= =?us-ascii?Q?A9FdKW6ZiYECtJOo8jFMDwTGRcdKzJ4WAOkLCoRPIehM6R1GEyKMHBPl/tgc?= =?us-ascii?Q?8xDXlQXJmF/14DMkf5sbTvBSmynvUXrtw0T7ZYgO8ByVui/m4tvjBLlkxAEk?= =?us-ascii?Q?OW9HiUQHTSPRzJCNSzO+4lQF7uwAn9kvvyluWdjVArkF2i3teYdTjLJkvdQl?= =?us-ascii?Q?L4+d0gaFCUfdNbZJacba3zCKc+u7hpcYIxsEDgF7ypPd1lIsCxaEfZNaKV1n?= =?us-ascii?Q?tCnESR0ERYqNKYH50/d32l90rJrLK/suHBGlHrAwDuetCYrxXScgn8G6V1xC?= =?us-ascii?Q?Pxc2CrWdqwgkqavL353z4ftg72L9FLVQdJUS6VC0xuZkVltF+OK5lmxpkdun?= =?us-ascii?Q?LMH8yPuxm7RbdlH98NMFvDj5xtyS7oYsLifY4KcASfpJkEFjYYZ4WSgpdrU+?= =?us-ascii?Q?3MqLy61CuT46OLHPjjjM3iz3bv8UcHoCSFJlPTiqVNqi7+caKs2Heud1wQgy?= =?us-ascii?Q?hzyGGw4YuzepU9j53vfi5NWdD96fIWZ7CDkKaEojkRGslyL8KfAi+34+tOXg?= =?us-ascii?Q?JNJr+mGbU/1i8git5FEH/37s2lDrbuFuu+uZHEsBfXaneVLpxCtP0VZvciPU?= =?us-ascii?Q?w5bSODglhAj18MRp8wa+A01quV+GwBJ4pkM6+3iwlE3DHvjR5oWQNxkwbpfF?= =?us-ascii?Q?jhRQhsM5MKLRVWQajs465TFPYvCT+u9Z?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?u6eHLIhnAd8IkGiEZ3Xjlq7hQLql17rhsof1UePvwEsURbqo5+HWEv68O4bI?= =?us-ascii?Q?q0frMTcMVYGb/acnSHuiq67NGujDLsv5L/obhBQyU/FwAVVDtawQhn6N/I+w?= =?us-ascii?Q?c4Vxcifv29mxut90NdvXakjClI/KcVGpX/Z32bSB4P6gS05hU/gA+E74aDgq?= =?us-ascii?Q?LMOfnPs8K3354YV8JpuLJ/5AR4lvBV9LDHe6vt4mACE1V4P7jVQFHXS+bgcw?= =?us-ascii?Q?vYB28F0li+C2DdFbyY7YOFLNWhIUxJzC0WgBogBVqTKbAHqB/iZ4ErFeSPue?= =?us-ascii?Q?ix7Id/qK4bw5ogUy2GTUjkEskh7a2XOtb5cPQjk/UjeJaL0pYcSGzlTxzdsI?= =?us-ascii?Q?h63muN4EmJvsnFW3376x/b8DUlssErDc/t1OEU71fJy4EEkvO82kdUQPL/bH?= =?us-ascii?Q?IffIyuu5T1Olc3bF8Tz1eSAIrMEgLehvvwPXhrMc3njsuwEHLDMqLy9NmDR0?= =?us-ascii?Q?37bE/y0/MMRkNHvRuRLvLgQsjel70WNlXoLi+pnWWRLhRMqnLY+bTfg/e7E7?= =?us-ascii?Q?MNmdcn1Uft3xBEr55g7qzrM0vzWw5T6JujWeQ/nqPWIX9WVqVQ/TMHcKGd4p?= =?us-ascii?Q?sE/M1SvBIxjrzJ8hPGqDr2XnMLiBXg17LL+gvyEqyWMcdqfkrblMvHRpwJVO?= =?us-ascii?Q?BRgHnBwo5xbzly/m+Aa4+5brDDxS0FlQeE07cck56EOwGf4SNXBx2W3VW/7O?= =?us-ascii?Q?XyQzUeVig/GBdWctObW1VRbhzZdVnJVtaNkqGq8ZBGzp5YoN13R7ZHQYqVSt?= =?us-ascii?Q?TKbfirsp2MkxizvRdbK8Lwf5wK4Sn8uoT7Aa5mdxEslla/CynZ7iH1zMOQ/g?= =?us-ascii?Q?L2RGhobMZtlI+s3qkyCQWBne3d8EB/bSkJZF1kT3lMeM8p0EFdsvYAG3Z022?= =?us-ascii?Q?k7/IRPGwHvEgse9fpv2iyoj+mhFQZcUfb7KGo2o46J2Hx0dYAf28Y5SCg7zl?= =?us-ascii?Q?O4FzMxCn3JBzexgSVgN28dLo9YLb96oqFw2o41VY6LOCBKyYdUpQnURleIVx?= =?us-ascii?Q?xENkUP6ge3u6BeC8m2qWMKYUvT7zcBKx1xWklixnxccubpK+f39ki/SU3fGc?= =?us-ascii?Q?fQ+oLhxsQCAg/yRYryCT7m6KsC2ZFQbHlkqbRFpxU9abswMFl/dZaQWmg1iD?= =?us-ascii?Q?ZgYJ1EI0mIncy6D8Hih6JdwtIClrRiQeEcX5GkzlbqTOqggNOJZC8/RLEt0Q?= =?us-ascii?Q?dSVgqp1GcC7OWcFRaN3ndHzm2kA5afzelXBjCuJDnxRm6ZUtyDm2VbghmLiy?= =?us-ascii?Q?nFZs0Ti2JDhb+rmkhIO5uum8ref5Lg3pJ4rYHXRDwkTK22i1gKboeXQoBSGx?= =?us-ascii?Q?uTB5JfqYQLwIPo6XATjjY4icVu7YRWnFjky1g7Mv4MV/DL/xZUnYpTIfa7cX?= =?us-ascii?Q?CJVw8wN9sqa8ZVF1mlSjHwmxHdWrmWQ76ohq/ZU8063ajRQNm75Yuk5mxZeW?= =?us-ascii?Q?qb89BCcWYCD5pQ0t58V3hRf0OotIKkgRytiVDaPob3XETbjGE3tGJVkXfaUB?= =?us-ascii?Q?omSm1L3gjMXZ59neJJZ9F6PtZvvRSbEhKMwk+kCHg9wEN6CgaTnU1cJMGhKi?= =?us-ascii?Q?5LDLhZ7nKXst98UQvu8Gn9cVPPNTovI53eep/oQm?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: mHeZTuTTqDHiHdkwjTcmuiIKx1nYejzjaR0+GHqUKH+9bRrHkDTizlVHHdHQzV3dC8zyuRi1geAhK8h/zBifkbbbAIe+F324pbhCVpdRnSCjZMMrcEwuFceMrArkSP42onnF2i+cxDyk0jp78/00hQQ+iz/TzqG2Ukqiu6ULTCAcl6+CcSmZ5UN4ivnOy7HZ6qyRIuGIBTHNv6qiBJFDZMF1Utgc0i88gmT9deJpeDXhuulJsK1nhy4Y3hzZZBnwd42lpm6JHNYGBDMzphU0hIPHj5+kYZxR47rEw2e1DifdOmjo/+d5A8+sgqHBccnOwD2LN3fLPl9JNDYjDX1vsxlP/bAwtNZzG2zjY6Crxqyv4KIWMAWm7hDijIZWfK66U3Nw4u5C9RfNw68agmUZoDNv4M5YaeuGRRiiMOrvDDZSrcd64R1cvLFiuBf8itgFck2d0PT+NlJZh6lA2Y5Ejo93h3OyWxAJiQSf1gOLgWfD6OLtDlJhYdOq7HaFQYZ7rVQ99e0ZVUZfNvbjJcopNFH5g61wSzk6Bvg1sy8IhGfo1wh1HmMJzlNm/rMFIZQth0v9QKW8M+aAj0pmsnR2quyt5G6Y8zTFR41PiDTMeLk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfbde1da-548d-451f-b446-08de15546e7e X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:11.0509 (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: nntm5UAj66WWZWiIOSvlqlQ4fa7LHy3mn/G/VpCFmBP6HBA8h3GoZjtYxpHjZv6mmoLB9UUu69raa16nZUv40w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 adultscore=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MiBTYWx0ZWRfXwHDbay9/5ROo /AwpOUGKrYopa8f+Jau3ggkCYqTSQZocsDj+5Lkmj2Fk8RRxWQg2D0ETQw6O22GvNDeMonGUO3E ld0VdLTkMHwrydwqFIpf9UewR4RJB2NPMMYocyMps+qhrisnv/OUsf2+5jWU2G2ezmMNlG4Tzvi 19ylc6vD3xl6fY/9KeJw+zgF5yo5fURzR8FE8zKVuKzpwvc/E/+Fv5GzJFrHiEf1QGqd9V8MkKp x8okTWkfpzc24OVAuyKARcz6MzMAQ5b1522nNGyqPXPXXrpVzATP+L9NtGrhJg0/tNf2WQ3JJI/ Ts+wzVEBt8z6w0tX+f/xkouRW+LWuM3um2axARdCt7oNLqWa1jycCsFGYjScitGvXHyDEq8O9zt Gt0Q24oqBu+i/EA/H6zyaRwY+fde5zgbK1wFhJj+PSCwBYTBGvc= X-Proofpoint-GUID: rbfaOXgWpR_r-S3t5V5t3W2HPoFX5uiz X-Proofpoint-ORIG-GUID: rbfaOXgWpR_r-S3t5V5t3W2HPoFX5uiz X-Authority-Analysis: v=2.4 cv=dbiNHHXe c=1 sm=1 tr=0 ts=68ff659a b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=hqUfzwhSJLVLa33He1QA:9 cc=ntf awl=host:12091 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 | 50 ++++++++++++++++++++++++++++--------------------- 3 files changed, 82 insertions(+), 34 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 8dd7fbed5a94..2a9dc246e802 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2566,7 +2566,8 @@ struct mem_cgroup *mem_cgroup_from_obj_folio(struct f= olio *folio, void *p) * slab->obj_exts. */ if (folio_test_slab(folio)) { - struct slabobj_ext *obj_exts; + unsigned long obj_exts; + struct slabobj_ext *obj_ext; struct slab *slab; unsigned int off; =20 @@ -2576,8 +2577,9 @@ struct mem_cgroup *mem_cgroup_from_obj_folio(struct f= olio *folio, 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; } @@ -3168,6 +3170,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) && @@ -3190,29 +3195,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 d63cc9b5e313..df2c987d950d 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -528,10 +528,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 @@ -544,7 +546,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, @@ -552,7 +577,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; } @@ -569,7 +600,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 64705cb3734f..ae73403f8c29 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2031,7 +2031,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); @@ -2039,9 +2039,12 @@ static inline void mark_objexts_empty(struct slabobj= _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); + /* codetag should be NULL */ - 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 @@ -2159,7 +2162,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) @@ -2172,11 +2175,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 @@ -2201,9 +2204,10 @@ static inline void free_slab_obj_exts(struct slab *s= lab) #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 if (!p) return NULL; @@ -2215,30 +2219,32 @@ prepare_slab_obj_exts_hook(struct kmem_cache *s, gf= p_t flags, void *p) return NULL; =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 - 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); } =20 static inline void @@ -2253,8 +2259,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)) @@ -2267,7 +2273,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 @@ -2326,7 +2332,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; @@ -2341,7 +2347,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 folio *folio; struct slab *slab; @@ -2381,10 +2388,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 06:56:12 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 49A50301498; Mon, 27 Oct 2025 12:30:47 +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=1761568248; cv=fail; b=XU6sWa3YtvAP6NQZ6AQiRACXmFIFJETpGJ8KWFDwes8lRON9ccPZ/vYlvrbJuc5fFZbLqWEykXpfC8fTZq+tgvQdUFcHNWIAWLmNNgW1uFEsOefT7K61MApIjUy5LVzyy0jV3XqFPmeb0CTDKZZWKgUysCIcssFhPyTyxQZoi2M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568248; c=relaxed/simple; bh=tsV2VFKw2sueroXVohIgNTy0ySqOkjs/tDFjwIe9y24=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qZbkhjTFj16YvPMwuSpsXK45BuW6PYPT8CF1mlvjUQ186ohcxFAXBlrM22D//1Z0aeI+egnAH33avi/Eb5em4m1+u7OiQMqSNNV7H4A0wp+I3NRRqhJmdJyPqbQifM57FD+/9Z/YDSohp6baVu/9lXPdQnepCDD62uCnQD2EWI8= 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=kxmNXwYL; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=c/YLkJOh; 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="kxmNXwYL"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="c/YLkJOh" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCIla012178; Mon, 27 Oct 2025 12:29:20 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=0m1Cvx3v1Hk32sH4rLjJT2lNI6KmuM2zEMXCCY+qO4A=; b= kxmNXwYLReysKl2DaNB2RmFZbSDzVXZpQzNGkKT8qDIWvJ1S07HDLAXUg9EPT6Um z4QILTbdj0hEwMBG1+6O4Fh94REfe6Xa/t1U7xkVJ2chCNF1XD5xxC0ji5pcAYvo HkrqSIEbmXNBsGGkTUX84S0DJq1MK46dZVS40EeOQlEyCQLm207tewlF+IVHosvv FN36VBhmqOdxmZLKOza9GrShfsKU//+AEcAg4bxH1bK4hJkGUSi4yfSNcjRq3vCc z3rO8jYlQGdkOQUM5iV5/ToJYgFP75iqD9sCCxECTan4qyMM35IO7loola3SNH6z x7YVe27f1PVpk5NIZKKuvA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a232urrb2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:20 +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 59RAIonx039106; Mon, 27 Oct 2025 12:29:19 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010016.outbound.protection.outlook.com [52.101.201.16]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n06r3cs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mSI6iMjuLcdpXq6fdWzz0erVfUz2vVi+gGqI1mfpr8RLdOF0QGdjm/ceGeO9zTt2G7Tu/z8BckpNGjVfhtAl8aHIno/15dj2xMS7baT9m56RE66PhcnYmVBQjNCJIdPxDTuFrzOZfdVB/pR9E0i6E8/BNnwwfxo4K1rZazD6yFiskZZt7v1SAsuFTVPSLP52spealow81mUOyrZxH+pDui0/rlOBeuPHCOHqvg/qAjDwyuBSCRaS9umJfMVmrpBDlxIjzpGfQgtTNpZeGPP5rvOzMWcEBY2Ic44LI5Ow8BWoC5WuKfiou1GZOUTOK5VttzBQv1c7SF5vRhYGtDa9Iw== 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=0m1Cvx3v1Hk32sH4rLjJT2lNI6KmuM2zEMXCCY+qO4A=; b=E9Dl/3899Ti2wdnX/Onm+y+/mAQH0hD29FfUPQE4Z4O3IIo7qrtePMRa9S4tV7X5BLatNd0kx+jjgoupa5GqfuQVLeXhqZbjmsq4UJ2tytXdqriT8OZ/ejAVHd2QWd7uppiCIz8Xx0S5DjBo7uw8+M9CaU0Xbhykl6HX5OxsAcy6WBN69Ph9fgLQPtxF1xt7kLxRdQ+B0zEWtUzJAr0m1AZskbIA01cr1aCN12H2YgHvzK/KA5YxZwldqcUnhNM+OGm/4VULoDVNImclFjIny+SW5fOcCne/Zz+C1ZJj9TMdRiOsM1EM9jvn99eqAdmA5NrS9p01/5g3gEJVS41JLA== 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=0m1Cvx3v1Hk32sH4rLjJT2lNI6KmuM2zEMXCCY+qO4A=; b=c/YLkJOhOLo3k8vvwQOG5vbFJcUqdyEohng4N3hxTPBZKgjyW/SV7zfiP8Y7PiyTrb/v1Y0iFzwQrqPSxRdjmcGGBChXunq63P5f0zfUPipMosDUuayHujvRRrRhuVAwf0TKY6YRZZXfnHflDiGBi5LXaZd3AW6gqDQn0fP9hyE= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:15 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:15 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 4/7] mm/slab: use stride to access slabobj_ext Date: Mon, 27 Oct 2025 21:28:44 +0900 Message-ID: <20251027122847.320924-5-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0082.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bc::15) 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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: 22f0039b-2463-4198-c8d3-08de155470fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QSXVqZ8CRMb/UpzFwlHi5do2St/pDlIUirHQrPHH5Ft0qwSn3BalR3Hs3LaI?= =?us-ascii?Q?E3KPbJg5OgFnu9mhAVi1f90YKVLRE3NejOHMIePZvgUwLl9LlywcJ2mfBrGP?= =?us-ascii?Q?3Qp4jcWjkYpMvxwEyom+BVy4nXa/buva1eVBMbXYi3Wiw+4XfC0iNeA9Iep5?= =?us-ascii?Q?0axWFcWXlySi/5YSAUgLFImcGGc+/Od7eEIpgyFevk1GpUJPSMaVftMlQLxn?= =?us-ascii?Q?0i6HKdO/pAcitXmu3ubDtCbvVG4wVz28c382fLdBJIWGE3euh6W2fcrhLhRW?= =?us-ascii?Q?RHqdQyJZRs5E9t6s42UXF/gXZks/gBd5HHQJ7n24ssaZ6insykoI0JLZu5jM?= =?us-ascii?Q?naNEEx32N6FlFkHLuU/s7yCp5rr3lMS1USNzYo1Cu4ff0ukUvZxbwq2ToMPn?= =?us-ascii?Q?Q+B9nYrwe5bna1nlVJusW1jANAAmTYUIrPUeepvUsHcwwrdF48H4N+P+Gcm7?= =?us-ascii?Q?qWAqfxlAE/VyqhZIBZ5OfQfrX3TUhFN8QnLq9avsMst4Y2tOKMJ2E4vUKYlX?= =?us-ascii?Q?GQyEWfinUB0RZuitf/gDNsG4ftBUtilaZjivnkGIjk/UGe0tVk8JNbz/0g09?= =?us-ascii?Q?oTB92id9sK4Nk/9yaG6YNbZEGHX/ow5k6I03F7+wb+ry2yxOpJlHCxFGnDnA?= =?us-ascii?Q?vUFWvfUSyKwvUJpkbOSimK0ul3IohyuujI3OuRqOfXSLSULeUYU4GbxVdZek?= =?us-ascii?Q?kQVeaUc5MccXv7wKg1wgmGcc2wixYMF4nJ3cYN7VoSZwohvm9BXcfvzdI8nZ?= =?us-ascii?Q?7iRmY9xsXTzWlRjgXqYOO/4hSjSXoYNrZAfwyY1kpNRjy1F3p6ImhrEaZhWg?= =?us-ascii?Q?nfibQt5ZRyuz4IkChSijEiL2QaSmmC4ojKozpoIYBNEk6UMBrxMsCnfH7Top?= =?us-ascii?Q?O9LFXFbhkqJD+S4/Zeo15SCxAIHM3JuVS23MMJzbZTiGNYnIpmRuHUCmxJz5?= =?us-ascii?Q?YYatCh5dbADUmcwEm7i7Prq9AK0wZCtCshve8m3clraQrkZXOm1SdDOSJbmg?= =?us-ascii?Q?quHIY8KEV2/1M//2oPlRLK+gOqPLIwNmij+HVlwZkO/BMFThim7hl7nEPdoe?= =?us-ascii?Q?XejDRQDMHfIxKO0vfhz2CiDrmXlQnheCXJovd1/tyyXLole7wnEm5GdbtHbZ?= =?us-ascii?Q?tFGWbQ6jFKO88+3BC+cSy8MRL32sxgCR4KiLPj6x1VayemdKlnvgvshksZ32?= =?us-ascii?Q?IzzTJJzcSTABTS35VhxB4AMSh1ZSVeAx2+3BnsCdgfqVd8ELB/fVtZANZCqf?= =?us-ascii?Q?+ucyPmGKHV81CtkEHxJZKOBxDjmFcnZAzZNKIzbUFP9eswTtnZ4g2QrU8viB?= =?us-ascii?Q?uQ9vC9zYHXNRoUo+npwKOo4E8B78LZ24snBPobNGBlikD65ZXfNl6UkGFviW?= =?us-ascii?Q?ZyG5HqvtRIgGLTFRLMQRZ79zNWrkh4tx0DMR1NBz6sZv9gDeOauBO+uJCaaJ?= =?us-ascii?Q?iq4EBHYM6EqYR3SsBYxrncR9oOFs+yG2?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bcXU57DRcBt9MlSbyEaWRPE4u+Dc8pz1VuFs26SqV/+CljlYgJgkQqxQFyQD?= =?us-ascii?Q?UA8sMmdlgvPdtPFIM7U31rj7Ty1AldejX7zwBk8ksrDeJ9B36vQU7KHqF4eH?= =?us-ascii?Q?OXUtfH0lEuaU+ytTU8Z4AE9fDRZLTGNG/jeEEP+cgQP44NYc6nCyOqs5+o0I?= =?us-ascii?Q?mGp1eKaR1SGKch4tS0GOcOV+aZtK52w8zwREaEbvyK1pLbpJvhqFMoiEARK2?= =?us-ascii?Q?uLd8JpA0nDXHFnJ6YP7gzaaa410HN8YMF9Eq/fiRg3qZ9b2lYD+RKKcz1iVk?= =?us-ascii?Q?rHNODmXNnzJ+il73+P9d8DfSeFgKWIvqCNbz8ZNVWDoJL0S5JHm8X+ApP0MC?= =?us-ascii?Q?FpAeC6ckh+2sW70vFhCgBcaODzd0DGJku0HnyWJgMQxvqyet0xiQ6cWW4/xp?= =?us-ascii?Q?fWC/RKud6llhRV2hFEO3mF3kOCt0kxtYOAeA4EnF1NwQJCJ5NWwcfqAQvs/f?= =?us-ascii?Q?Dp352PNn3Y/bairbxG0NBE+oqqYSCrm5BtScs8QTlu9vqj7RnJv/vxp2RFXs?= =?us-ascii?Q?HsljVjR6UQs3hdVYWb/Is2PbFGbDbKUZIX30ZW1mhxRVIcyJXAJMHzp7MJ7S?= =?us-ascii?Q?jZ1+Tr+t8tl8bxt5mEuXge1gQB4ekrfphiDADH947ljpfHz36bXYSXEBpb0/?= =?us-ascii?Q?JKhQNU6T8KjZLw1ZL+Q+Wbm45TGpygEBEwvceLj4yqO1iUlqHe26TRWrB9oH?= =?us-ascii?Q?Gzq76OJQXheTM2fz6jO3+DPWAB+mrqTbEm9wSFV9S9MkOD2+DiI8lTJhGbjK?= =?us-ascii?Q?/ew4rTLBtdTbCKriX82tCglYJsmC/pyBQXMMZfn56s6TARlOznut3HitbOAM?= =?us-ascii?Q?6AY6uFtudOVlFEWa0nRB9c1Qbhc4XRjiFsB/OKWMaMqV3DwcFrAh4yk3KDQv?= =?us-ascii?Q?rtSkF/BELMJgZg1e7T/ZmZgG+yEa5H5SOWVhU4ATvU4jMMmTHJUx59KsUmgz?= =?us-ascii?Q?JJnwrmBoQdEqzXRdUIoqTGrtYZqaU5kbNzrdxupOoyFFgLqUQ+4L7VBfa8Ep?= =?us-ascii?Q?BOsR92qfcNTedz+yXQIkxBJ1No+/Odw6iRdXnZ9Mi3XjswUF+koEPqd5C5TH?= =?us-ascii?Q?fTzCszCR523O59+698iSiUZYqnmDE4Ih8rjpU2rqWrR7Kiw1/EOzG2kK/z+q?= =?us-ascii?Q?i/6wvQT/VAK+Xc1Y4UG0Wq1GYEBD8uxufpXIFSFsD4vCmAO5ouNYlsmFYWN0?= =?us-ascii?Q?Sl3j6a4kYISh/ieydT7LL6JvQkb+qqTUFUyuVp8cgZh5wOrpanhT+HmSm2Z+?= =?us-ascii?Q?MnwEA0OT19MyI17aR4H2gc2D+GrCnXmLQ8JfsSeJS6ft9/iSAxZEjQTBSYQx?= =?us-ascii?Q?gEl42X/Ou5eHDSZF4tW199POBxZsETJYL9wZGgX6lYJ2TOVIT033dpzPnkQ1?= =?us-ascii?Q?yejS4QZqhxHuZhe1lyP+Gwnlee2alAWmH2JZZknUWmjHkY7bU5b5hlZn9K1w?= =?us-ascii?Q?MyHD+BmWp91522+cfJdS7H4eW29/TWuBB+znMo2knv31XQUr3zddtxbbwHMX?= =?us-ascii?Q?eA//Wl4FznTHqS5IX/byhq+ieRAHoMH4ztW8m0l9lGizKsv6xMHSnaJmISbX?= =?us-ascii?Q?l3y9vGaVuWjpe7nfIlCT3jYQ3WE8krK5qzVgMJtw?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 2yJOaKi7FJHH+kZ3voW0rLIFqGJNcN1OP85w49RrX/yd9u6mLLwWbtaRkgXB8B4xxTbS5pV0D5DL/Qj5msePheJm+PYZNT1A+PM6W9nhHVOVukacnVv7cQas/BUatd3FN+Jc3WArLK9Fdb0iqxWc1vvR8M//dGKEaQPlDP2Gpg+nydRs1HblyWwauNOFaYlqvccHRhsX1EE61E70Sv97w0gtIi0gcqtu+qhX68Xvv/i0TM4DmKDvvQ7ml2MPsDtNUlOgAXHBmihZQ5oIuhk8M/8dYRQkXZVsLgDzDal2s5jN8TKeeIu1LPhpKzj6wP/cGi3mw8DHqxWGa0RpCDS42MYtHKRwTPYVgeUE9O3JzJogoYiA0IIZMbzqGcTCdttISDh17ON6QpAM1AcNlVUSj/rerflGDD1mmkdhNHea7/c3+MMJS2BNuY3dUHNGR0NOUpU5ig9XAZfDeVt3gfhViHzdgwjqpZWh5j/+8GCjx13JO0UYsnM97hxJiTFeEpPFFt53m6WjE8XLKyeeCeATObJIVK9A70U353XmDIEGtupcO5KJYVJgvEpG11WIkODnENyz7Mr/eymY/m8GbokMZ/DGoOXGGbg7r9niNqpmPIA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22f0039b-2463-4198-c8d3-08de155470fd X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:15.5462 (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: BfgBzvjUkI/mzPb6RtznjmVE1Ig6DgziW2BlZT+9npzrivn2ifLi2PXaTwMtdjENgHGCK6+hGYgtC1bbY8E0oA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=978 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1MiBTYWx0ZWRfXzsqjtt4Fvecv dygErwK6mfATQ92zVrAgZOYSilQzMoKA7Xf9RSoPjnl2fpzuPJUJ/LOiGzfTBHqDn//1ThFWc7a +8fka8fIt/DKdqwgyYlBj1qQ5JLjV+eO04fgGRGKn6ZDP5aMA+0OZvCgrODKfvv57LY5d3OIFt+ 7leyOpezA+Msq5Wwi5IzGRWqdqUOrF3t3PymqmlK4NKV0gNTU3gfxfAfcI8vtkXJ+PItFWkM/pd YenWNZSKgz607MQtz7uA1sivCYub1OsuPk9J3eQVXJ+Z9RZ3aiyr2yGRmjzAg3hq3SbddfLPHlz 1SsTvEd/r8DBeqdYnzo+k6dxxd6zJKEFubIH5ysgXZjjTFbn0skzOeSBvfCmI5GCijcKJ/3A+Ut nq6C7l1f2a9XdTs8ZJu5mcICnjVPqw== X-Proofpoint-GUID: oZLO7FiE94awXUaXFY8jmiF-BsOtTlh7 X-Proofpoint-ORIG-GUID: oZLO7FiE94awXUaXFY8jmiF-BsOtTlh7 X-Authority-Analysis: v=2.4 cv=abVsXBot c=1 sm=1 tr=0 ts=68ff65a0 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=k50sI94EmNSUYFzCiwMA:9 a=nl4s5V0KI7Kw-pW0DWrs:22 a=pHzHmUro8NiASowvMSCR:22 a=xoEH_sTeL_Rfw54TyV31:22 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 Signed-off-by: Harry Yoo Reviewed-by: Suren Baghdasaryan --- 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 df2c987d950d..22ee28cb55e1 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -83,6 +83,14 @@ struct slab { * 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 }; }; }; @@ -550,6 +558,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. @@ -563,13 +591,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, @@ -588,6 +613,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 ae73403f8c29..4383740a4d34 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2134,6 +2134,8 @@ int alloc_slab_obj_exts(struct slab *slab, struct kme= m_cache *s, #endif 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 06:56:12 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 CDF013112D3; Mon, 27 Oct 2025 12:29:45 +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=1761568187; cv=fail; b=GopSBHsK4x7JWJw5s0KECUjEDPqI3BAQsR/XTR501Ih0FqqZtf1P53Kk6oEYTTKr3Z84hDG9BlkkbRYSHUFBYslsK2XDrUqFHGk6GplHlD6up2NyakJeapkn/Ksx/vYL+Zn0Bp0c9riPBFcrh6MMI+BYjyggl+9bFjk+IzB7kag= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568187; c=relaxed/simple; bh=F/nU6nfOXNmcvV+/0237clLWHqAc3+iUQqTAg9xBMc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i9NOMDXa3VLc4v4Lr3ejySwKtV706NrXWeoSyq02QTLVqVjxm47EIKZyzcvSaL8BsJE9+HDGQnXhGwSkjiZvjBwt8RndxS8yzYFqSJF/uVq+P/DxEc3NWR8HGgckmWYS4WRzUFr035vudvOYQNzky7LdFMZm3Oa5VByol7wZ0N0= 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=d+7AHr3S; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=txqeZw3T; 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="d+7AHr3S"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="txqeZw3T" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCJgx014889; Mon, 27 Oct 2025 12:29: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=/+GYVzpkWTncbwZTqYSKMk5iKtZQhjZZqJtz3v+YmQs=; b= d+7AHr3SIH7TJJmqVVh2hr15ZrGbY5zlk/IhgcoO6w7ye3SMzDLkVQBI2bV3Al6z BBKtqBE20YEgDU+RAv52czIemnHFNez+mQl2rMx+dZfslcFeMDbECJa8PpqE++QB jO/NafII9jQSplj/g/BWPstRoUMOgWEeFnL+ge80bs6yalWI0ZunezYR4cWd1K5I R8nIbL0aTz+hXoLFgVmfSHoTTwlk9l9v92RVPDRap04j44TPprZ7+7GaCMQ71D3m uYMeejNQJo5JyDMWvCgzQ4IEjbPSF+p1YhohnccjWlFXR4wfczglz19LRXdgYxhI mLsfUSyV3ADuXgXVBl5IrA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a0q3s37rm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:23 +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 59RAowmv025109; Mon, 27 Oct 2025 12:29:22 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010021.outbound.protection.outlook.com [52.101.201.21]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n06yhuu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MTgIOx5pTagWf7r4AZVvIpL85b4Rh9e+eBvKICr2VIcjyrLTS9pFFgri+n4Bvb0OwVxLTzshVCGp5aq4doISvXFzry+3bYBZYxiORzQfkkanKX1Er68iP7pxj6LTuRJTX8WvZkbVnhJRfjZsfqRb7WzisfgUcEU4gMSHbFP11+9K/xncCDSzOcTz3g0AJf/rmaqtg6F+l7N7HAn14cVoC00k/XvSvuqQltZiqu5xwbo+s89AvKRT8wHPHPULihmLEq8T+KzfGssy4xLqy2YaRvVkkqouf/Z7a6JadRlk0+o2hNTq5ll5JErZOyjM0IuvACyNc9a4bEmi5KqB7coqmQ== 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=/+GYVzpkWTncbwZTqYSKMk5iKtZQhjZZqJtz3v+YmQs=; b=eQe10zH4xePBnD7Wwrg6St4Fy5fnI/JDy78OdOIP7z/y8Fua96t6oZeahhapvH7eGRF1+A3su7LIR7Il12tsUt9x1/Zj8d3AdaaUhx/EhBs4n7awAC5RrDygaVL1iOcf355PLZJuRlFPygDuOjTOpi+cfMdqvaQWCvQSTFTPKQNYaxVKswu1Aa9eB9wxxSaPJb2oEJHMDbMctMuFRTPpnVKZeHAKgsQy8VbFNz/GoFwlx+JODxJ/RUDQNsR4Q3Y9JeHYKsIzv8Cfoz3zvA9pYZIIY+jvWPDLi8L7QrEPKa0x05N5qSjCGwvmFgJLk95vg21BMMwsqlsrxJMgBi+CnQ== 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=/+GYVzpkWTncbwZTqYSKMk5iKtZQhjZZqJtz3v+YmQs=; b=txqeZw3TpyRVKCdhYdwZLWOq16oln6kPFdN7tDbxKU/7dFaD6wEOcsDixXH8w3vdik1F5DkXln+C8sMng1xEzOnFuREBRBVzLWToZVUnHncbAfcXcWrWcfa1Y0Qk8ISN4jO6aFHbRLj/vQj0KGSkjNkKz2e1Wpjel/4i7fjkW34= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:19 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:19 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 5/7] mm/memcontrol,alloc_tag: handle slabobj_ext access under KASAN poison Date: Mon, 27 Oct 2025 21:28:45 +0900 Message-ID: <20251027122847.320924-6-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0103.KORP216.PROD.OUTLOOK.COM (2603:1096:101:3::18) 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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: fb263cbf-b559-40e1-e641-08de1554736d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SLD3D1vH3FJ8EcbNa9epUf3QdomTVjbO/zrfO6Z3sN16whgxTzsxWEto/ld6?= =?us-ascii?Q?PMKy7+zLAVW1r2sJKGs9/Off0DSVvlLrhgalPLekQkcAWJSMRUJFrMWpPOvg?= =?us-ascii?Q?Q4t3jLos3/ARLOHx1GOUUrotxo6rXf4wtas1/d2CiMgZbHWDhclZ34HUVv5D?= =?us-ascii?Q?Cj90vqSHmiMPsiTKe72Nz9PdIHY8C16N2TgfdkUB3oj4ZIVKaqL+j6E8B20d?= =?us-ascii?Q?kc4xXiEiSM3Q/3NrD0BXCzXAxgBULdXtZO9l6mmgc+4lFp86BL8ije4XSVU2?= =?us-ascii?Q?jrhi6togKT/e75DzYKBtLHivTaAZz5uXGS71SIvq+UGhUb0A/TLqaHOq/71L?= =?us-ascii?Q?Va8sTcpuK01Ux5bFt4SO59KmqTEnsqrzcY8aV195voLnEeoAGISYUtuX+sqo?= =?us-ascii?Q?GeuTi7Sy8SHu5K4VcHJujh/gRWuM6ODq99LxhvDAT0eej54WjILWLYE5bFhg?= =?us-ascii?Q?dQRHGaCfCiZM/TEpO2rfo2f699pjV5IVNISCbantQ/slnrYqqyu1byovsGAX?= =?us-ascii?Q?cMdqIr9ZKmHSmEaLti4SQuZJ7ei0Yy7UrN+LKLL3uChTWOoE4HXpxNkw6Ifj?= =?us-ascii?Q?x7luVtZPvk/vsq8kVVR9PomMh7r84BhNThBm4vjOaMa4ZQA+C9OEPDfwsBWK?= =?us-ascii?Q?VEVz6vzh7KSRN9x+HOni2FEJRj67uHaoOuSUsfH9G+AhYdfSW/Do5gx1+nBJ?= =?us-ascii?Q?4KjM/bBnE9JivB9yn5HZ6KrKTXd7F7O/fr+JvcvvCvMlPFly4xOpycrMlUld?= =?us-ascii?Q?XNodhISPlpa4r4wXz5rf91wQUFFhQ9dpEGR1hiIpHwkaRiRHs5Eic0/4YR9N?= =?us-ascii?Q?RSiUBvaV8HJTj+oFJzFxhIt8Kq0QRO/zYdLFlEIXws+L1sWOhkjOTrAecOhY?= =?us-ascii?Q?9Vbx83CfO0xp6bonVMNtlzWlFP5uedfBknEDUdWMpMhbSCdlAikli5K2w8ft?= =?us-ascii?Q?JcMBbFDQMI+SKQ2EKaalF1OyLi17jcZB6JIZ0LLngZiweNwYPAx/grJrZUlO?= =?us-ascii?Q?3JyF1sL7ZV96dsGpwM9ss0HKAJlQNFbZOnRfR4vI/prq6QhDMv+GJgi8cT81?= =?us-ascii?Q?X0fz9AmmpKJlNkAXZ59bHawQJWHCvC8NhCz7e7tB/2g1KlWZjYdmMc5vip7M?= =?us-ascii?Q?9/2xDUxXPYith233CxiUljDv0IjGDsK90uiLT1gGNdyNjsB65gjLWWewCOUd?= =?us-ascii?Q?9V4k9x5+MJ1hj0cm+ABkaScQGWSdQfTMxqoK80VZBfppxX/XYZavTlUqLsBo?= =?us-ascii?Q?QZgC++NFacellGDFc0h625jCVT3hDfMceZy35OxCXQP+RcFgP9g+5Ws8vORj?= =?us-ascii?Q?Xg5jVkSlxgZZU1BePk9kO9G0lqRgmnRrVt4JzkHk6UaYMdQTAusLGW6pLliU?= =?us-ascii?Q?2KJzKMGpZb5j9KNh5tnkeB1VStxTGiHt6MwqflIm3dKE1B9KFgT8kLNhaWsD?= =?us-ascii?Q?muTkYf3Ey3QPp+GayTDM+kmb2bABhlY4?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BIF2XEUek5R2/qoZLLQbYlVYSLZf4/UAnqgE5xXMZffV0qUq+nvDKX3U9Wz2?= =?us-ascii?Q?3A2MoWoEl+qCvibrL+LFTgyeEPNztIfnrNnVyaeEEj7ZM9ed4rCNp4irBd1u?= =?us-ascii?Q?L20v8Ejls0kGT4f1itD+Uvza1PqVYrDyKLG5v4M/e2lzPVjCY+zey78xafQj?= =?us-ascii?Q?sqzrqB9gjnGL4CmZwS1WIj5s2iBkimInCUr2U2w1PebBQHx7fW99u5HEIwEJ?= =?us-ascii?Q?WbzroVHqQAz5tPW82iTuFZMbBeY5v5Y786w6uHrbBBoS08Did/pSgknWk588?= =?us-ascii?Q?InFVSgazj1kEnEk12xg4C+qxgf5Mw08tVjNZmXdG7JJ3MytMk7r4ydNmuyZM?= =?us-ascii?Q?Gg78qbBytn+lnyHeOxiV2U+Y+kv+2dfVysvu+xuUSxU1JJmwIhBgeNCFEnbg?= =?us-ascii?Q?2C+0UVkKueuNuNr4qQuL7imKitMkd9i0+MkgFs2WTeUSKEPjHTUmlzsu6fAz?= =?us-ascii?Q?wr704WEUwvxt2wNn7A4C4K0nmBGlWjvtfMjIa75IWOtIsTfJswzBrFu1+oDn?= =?us-ascii?Q?FVWz+i314S3+z06twgAzCOIgWs5ArK7t4UlERJ8fOTDMKdsPtibkvq8As1qO?= =?us-ascii?Q?zLWrXNIuIphIXuX5v4P1x/TxAABILoyGFaiyl3wJqMJT8LcJIowgQe3UHlbY?= =?us-ascii?Q?8tZN2veiwFkS8aOlBUvWWud6MFctik55SKqDfdmYi36XkDUvGadEmeV8hxiv?= =?us-ascii?Q?LHA19nzhcEVZIUrMEt1D1w013S9dPo1yR/hxPCMut65lfqcvVq61LoRxfkEe?= =?us-ascii?Q?k6kvJjyKCYyk3ioJeYTsE+H+4GRfJLa5a02PynEsbxN0O9p1fTdah9mH9+ww?= =?us-ascii?Q?AL799iyQMmaaQLe5Ib7O3UBaCA1of9WpleMMDy2WRSIwYWAAt2lX72y5y3SK?= =?us-ascii?Q?LkV5SsRraAxGLbjTUGC/7N41vsYyIc+eZTAnnCarfYhPbvMbqI+SmQDftKcM?= =?us-ascii?Q?aWgdw7F/o1ITr302R4+rxGm7I3SZl3q9wOyDssmKHK9zzHZ1be70KQEedwUJ?= =?us-ascii?Q?Vw03OgM5lRXNef/Ik8gt1J96crZySnVT5PfIqDe9Sj9li3EeBGt+mShBaFIO?= =?us-ascii?Q?YQa7ikPUVz6bVE/jtPGWwNZ6oJkbZDiS8Xqb/1jp9XVlFokx0V3itlf+A7Rg?= =?us-ascii?Q?xnJmVLc1FazsPUvLVmXfgMwXZDbtqIrYanWwd2QfAL91jMVVvZOD53XoNrnO?= =?us-ascii?Q?6W2unXukfVaGOxcDKhNWobTncOiMMBKwawbBrr+Y6U1HSIhzXIel48IOQ21p?= =?us-ascii?Q?0iMERmtveMRW2ZeBUpRDxbhdyRQQuWbUeZrfD8lWKIpomlxlNDBPtRi28UIJ?= =?us-ascii?Q?buXBzre2u/ruR8JP7NlwjXYBFq26fLWpHFoOM5ZzBCIS8imgCJil9Sb6CFZg?= =?us-ascii?Q?GflYMoyugFkWtfF0G/T3nGdZnbdAySrViyaBA0HLFb2Zr+rZfI0n0AuKaIrn?= =?us-ascii?Q?Nlr9dIC/+AKPTfV8iIp2XDJ9kqSgeBmW34VYRI8bMkBff2s8ykkPMRTwLuGu?= =?us-ascii?Q?SKs3sewu7Kqnbyo2DdVwu7obUF3oTnz+QRHVi0M2yREtpEOgE0/YIA5SQiB1?= =?us-ascii?Q?Ocl+mQ2PLmeetErWJyx8yY4dFvxvqvpfKWKWukAJ?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: XjMzPmZ8jv9D7XGHyk5z6SDwi2lK+TZiniUF8FF9CLIjvZG70rTInASPdzRYhV159EOy1v6Sw2HOheu46rxGG5OFjr9px5JhonWWu0ewIRl5/g7nKWrfrmDkXxFMlfRFEW6e2IaRaNPDS8yTYAHSLrhdFjM6auQUX2vYes6D3Jm3VQIFHLb2furirrxeCjgVfYKysmEYsZtXKg97FK+Y481V+M2+RyDPu6mR7SugLanEG3p/OThtD9RFoPikNDi7q/FzDBhW6GMJovODTgsBm6Qy63UAn0XDekQL4JokROoKv7/kShp6DphIuPXAvMLR4Ns3xj3IocrInrxXEr6QTP3DKLYkNhWvqLPNUisrjqLrVwwUim/r/Y2sNWtwiCCKeS2zZTas1TUegf61Z95g+kKH0hQ6PpW1MSR3flGYZiyoSEdqdCwAXef6W4yn3Wy4zGPVa9tbp2lW/InmaIXMKcv7WElTFjSQx0sNQ6H0YbQGI3IWxutcg9TxCO+vhp8rnWWCjumdohZVj1cJTTXS44C9/NPGi7Eybgk75ogOJo3RcIyrQyoPEIgYUQ4fSwJJkTnbKu5MTeq4ZUbPnAO3sG+UdfIdcSpWYZWnsdrVv8U= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb263cbf-b559-40e1-e641-08de1554736d X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:19.4271 (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: KxecLH+iYjyh4x8DWlLIaw74l8N40suYdhVJ2d6loH9zqcQvzArJT2FeBEkGWeLetg1qv7Nn728PSb4IbW8gVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Proofpoint-ORIG-GUID: hkK62jZd72RCfJGRsuJQeDe8SmeanE-E X-Proofpoint-GUID: hkK62jZd72RCfJGRsuJQeDe8SmeanE-E X-Authority-Analysis: v=2.4 cv=Q57fIo2a c=1 sm=1 tr=0 ts=68ff65a3 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=pGLkceISAAAA:8 a=yPCof4ZbAAAA:8 a=T5WUlLNADvwsp-5gFyEA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI1MDAzMSBTYWx0ZWRfX0YPqUPwVbZ1S Lrbt21nssJaTKeX2BBHovRtq33L+086APuHcUbdCjzL1AFWY6ZYKTvhFCc/Wawq7WdRA2+57xmQ qt8fbxUMiDMomfW92s3b7BZ0WgbVXWiEoqeU/ZF8j0QYXCcMyRtE3e+5U6orRsjxQA7BjHEAqFL OdjW6XhtEE+vVrMSUJT5f7i1t4bul7c2ncS92+/aURYcsE9BwodJJ8C/5pL5men+sJDIVm20Wk1 5hDd6bJuLy3Got6nKBda2rJuGrnzYEc+vIEVy+OthgwCPzCvmvrTWMtGCT6BCZfC6exngOjZpah sceK2onwd30LmVlYr0irtq8Ejk/k/EHkiHdO10gxAAGt6Bu0jJ7hkl+Y+VCNSKu5ylbehXLe3C6 tmPZV1hWK0nGi3VfqRD/H0TH0wZ0Tw== 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. To prevent false positives, explicitly disable KASAN and KMSAN checks when accessing slabobj_ext. 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. Wrap accesses to slabobj_ext metadata in memcg and alloc_tag code with these helpers. 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 Signed-off-by: Harry Yoo --- mm/memcontrol.c | 15 ++++++++++++--- mm/slab.h | 24 +++++++++++++++++++++++- mm/slub.c | 33 +++++++++++++-------------------- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 2a9dc246e802..38e6e9099ff5 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2570,17 +2570,22 @@ struct mem_cgroup *mem_cgroup_from_obj_folio(struct= folio *folio, void *p) struct slabobj_ext *obj_ext; struct slab *slab; unsigned int off; + struct mem_cgroup *memcg; =20 slab =3D folio_slab(folio); obj_exts =3D slab_obj_exts(slab); if (!obj_exts) return NULL; =20 + metadata_access_enable(); 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) { + memcg =3D obj_cgroup_memcg(obj_ext->objcg); + metadata_access_disable(); + return memcg; + } + metadata_access_disable(); return NULL; } =20 @@ -3197,9 +3202,11 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache = *s, struct list_lru *lru, =20 obj_exts =3D slab_obj_exts(slab); off =3D obj_to_index(s, slab, p[i]); + metadata_access_enable(); obj_ext =3D slab_obj_ext(slab, obj_exts, off); obj_cgroup_get(objcg); obj_ext->objcg =3D objcg; + metadata_access_disable(); } =20 return true; @@ -3210,6 +3217,7 @@ void __memcg_slab_free_hook(struct kmem_cache *s, str= uct slab *slab, { size_t obj_size =3D obj_full_size(s); =20 + metadata_access_enable(); for (int i =3D 0; i < objects; i++) { struct obj_cgroup *objcg; struct slabobj_ext *obj_ext; @@ -3226,6 +3234,7 @@ void __memcg_slab_free_hook(struct kmem_cache *s, str= uct slab *slab, slab_pgdat(slab), cache_vmstat_idx(s)); obj_cgroup_put(objcg); } + metadata_access_disable(); } =20 /* diff --git a/mm/slab.h b/mm/slab.h index 22ee28cb55e1..13f4ca65cb42 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -591,10 +591,14 @@ 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, @@ -625,6 +629,24 @@ static inline enum node_stat_item cache_vmstat_idx(str= uct kmem_cache *s) NR_SLAB_RECLAIMABLE_B : NR_SLAB_UNRECLAIMABLE_B; } =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_MEMCG bool __memcg_slab_post_alloc_hook(struct kmem_cache *s, struct list_lru *l= ru, gfp_t flags, size_t size, void **p); diff --git a/mm/slub.c b/mm/slub.c index 4383740a4d34..13acc9437ef5 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -973,24 +973,6 @@ static slab_flags_t slub_debug; static char *slub_debug_string; 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,9 +2024,11 @@ static inline void mark_objexts_empty(struct slabobj= _ext *obj_exts) struct slabobj_ext *ext =3D slab_obj_ext(obj_exts_slab, slab_exts, offs); =20 + metadata_access_enable(); /* codetag should be NULL */ WARN_ON(ext->ref.ct); set_codetag_empty(&ext->ref); + metadata_access_disable(); } } =20 @@ -2245,8 +2229,11 @@ __alloc_tagging_slab_alloc_hook(struct kmem_cache *s= , void *object, gfp_t flags) * If other users appear then mem_alloc_profiling_enabled() * check should be added before alloc_tag_add(). */ - if (likely(obj_ext)) + if (likely(obj_ext)) { + metadata_access_enable(); alloc_tag_add(&obj_ext->ref, current->alloc_tag, s->size); + metadata_access_disable(); + } } =20 static inline void @@ -2272,11 +2259,13 @@ __alloc_tagging_slab_free_hook(struct kmem_cache *s= , struct slab *slab, void **p if (!obj_exts) return; =20 + metadata_access_enable(); 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); } + metadata_access_disable(); } =20 static inline void @@ -2394,8 +2383,12 @@ bool memcg_slab_post_charge(void *p, gfp_t flags) if (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)) + metadata_access_enable(); + if (unlikely(obj_ext->objcg)) { + metadata_access_disable(); return true; + } + metadata_access_disable(); } =20 return __memcg_slab_post_alloc_hook(s, NULL, flags, 1, &p); --=20 2.43.0 From nobody Sun Feb 8 06:56:12 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 7F6CC30F806; Mon, 27 Oct 2025 12:29:54 +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=1761568196; cv=fail; b=uVXyYLdKs7DjCy/wD7EskA+GRCFh9Si4IzcfhHSZwgHsvpfsyPcPHAV+I6wq/CwZP2dFn8EmFqiEr1ajvjAz1Kaza8O5fSFN7WmIobBO5H7RokrgWjC2XpT0KfMWvxYmCFa86Fb5h2HkqF8k21WUFknq7JZlZGUBc6GowrcpvHM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568196; c=relaxed/simple; bh=TIXB8IW3nbswd0ioMoKX4Ro9eK9D46RnBc6GIFkoJyY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cc08DTgAPiOHvA7PrjgoPNFlVLwqHFLHGiiPDpLuduXVCbFmV01E9HeSZTZ0qDOqk7NQ6jl5yn2OBdBF478zPM/JiugpixLSHj2MXDmoHUB3X302xjRqDcnjWGFCHdLM2hToerp4vKNSy3cpkofukpfwsnie9xZ0r5TF74uv4k8= 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=ki0QQOHu; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=KNfYGjuC; 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="ki0QQOHu"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="KNfYGjuC" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCF29025450; Mon, 27 Oct 2025 12:29:31 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=QSXhpgRJowOq+kq57W/4A+rcpEOe5gphRdse+tFjt0U=; b= ki0QQOHuJ5HfVtEfQa6XA+F3y3aFN8dTRdlXMZ2lvrY83n8lxBNUdugFfozfKbph Yt5hSdIbVZoAfXYinKRjxyEginTGNpXyVwffoYhPY7Sa5d/Qq7rCozyDZ9/Bmqn/ ybaXUx7khpjL6u4fGw/jm76kXSkBwI3h0VMfZ0eSydt8yPMbW/vrAhvirIPtQEb5 xUX67epg/8ceXOUWncUgKeROunTJ/Eu2ugZWA0APEiONa1PIvqUxRN3Tl1OAqDWy zkKRw93w7y3XsQFjw3+kOgeUTLevAANDNkkwuYnEJ83iXs/sStG+p+4EJTm0DKdI 87EN/i13qYar94+INn4ipQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a2357gqtx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:30 +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 59RANtcu025102; Mon, 27 Oct 2025 12:29:30 GMT Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010010.outbound.protection.outlook.com [52.101.46.10]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n06yhy3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y1/IiLepWiVyqx90s1PtZVmu6g+Zl5oH2P7PnhlWXKSsT8fc/ZnTYNTeaIUlyV9GPcSwGOg9awWEgo+zb3vW5QjkxEFws4lTxERySkqKB2FVs+4YZLDW53Bla+Y5EDjVsU9jYtjzEs0E5H92zWMuDboTXfvicxmLs/lMfgBEeceyvreasammd0smEFkS8Ib3EQvvRzyz40EdIu5gIz4JPa7UT0QwX6LPgbPXg7zK3HKnvNNxvNF9t5RanAI+QsUehRbVKhAIso4Igb3PrrJyHmEc7xZ3+o3PvObM1iBxprWwz9Qy0XgohUiOljLCYd309nujoJLgWkIqr0vfsvuo/w== 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=QSXhpgRJowOq+kq57W/4A+rcpEOe5gphRdse+tFjt0U=; b=NzonkMuIDgNA2iwiUD5e8Af/fO1WtBUW3qBQujGzV3Q/D1siNCPNIRTvv8OjNRE6CKAukU7MJQv410TFDl1k6eOJXMXJCXky+0AM1huFKXPqFhGGiYZjxSXI5URwhkWDKgvUFdQPVkt6BimKsxh4YxWIVSuo7bNCWedSAH+ecqLaxoX2N2anBCCcX3Pf6R7G3SLVebiJrXEN+xqD15Uzuv12NmCeYcaX/USPYQ7Ei7thlBuJctPAcFQ2xgRoTBk1c7nfuvRLUHxOwKVKD2s12uDxr+ilLsUpr5+L2Ma1nuPQ2lonLpa7v2siqo1cXx+Qv9AanimmpbRsZtvlCRVlig== 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=QSXhpgRJowOq+kq57W/4A+rcpEOe5gphRdse+tFjt0U=; b=KNfYGjuCL8EjR4pW1uK9CnyqwtWxf7TxQKZCIGwoSSGlrOhTzQpxZxeEBltbyy0aHVjypoKE26qAw8sIJbrf9Yoq8VbxnrjUDnc6Mm8T93HH6sSMUiu4H0oapDiY2viUX7FxXRMUR3jg9OyHBJq06jMX4/70wxm8NE+9MLx1v5s= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:25 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:24 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 6/7] mm/slab: save memory by allocating slabobj_ext array from leftover Date: Mon, 27 Oct 2025 21:28:46 +0900 Message-ID: <20251027122847.320924-7-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0080.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bc::16) 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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: cc76ea0c-0dba-463f-798c-08de1554767b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VtcFAmguyuVwLohDnHmc0VW5m9kXbzbW8WIgTGVt0SloK+l5hZ4soIOybybM?= =?us-ascii?Q?TGcUb0AOXZj+f8y1xez6rOXRggT4Zg0QV79whc9eZV5vAf+BgQ46lJsgR8zb?= =?us-ascii?Q?nFL84U49hbsJuh7QUOd2d6AN2VzPLYj4KceF2F5LHj37JVpXpjoLy5eknkcd?= =?us-ascii?Q?w0Hw3LoIlOdUt9NsVMl7ZnHQw/Qxa+uGHgJT0q8LqrB6S8vGrJjCkxqPvXhm?= =?us-ascii?Q?666ampRV8w1/5j4JRXRKw0frOtd2mV/u6PgLxSimaOr5zNYE3rhtILz+e/80?= =?us-ascii?Q?DtVk+JnP2mHGhsdARxVxk10RgzSFKluwKW6Y6ABMY7q+UFfa36+OrCXmd5pu?= =?us-ascii?Q?ehiQSeyNV5KqwqdO0zltYp2XQMbCdNcUGcU86f+5nAEjhqEdu/fHGvkIiO5b?= =?us-ascii?Q?S02+Wv7ErcZPpsJojOxEqz5yZhzwDV7+fa0FTIioS4/ovCN97xt0mzuNIOuJ?= =?us-ascii?Q?jhpWsSmdf6pNhRp6KFN+3Uz+XhSSVuCN8ryRDVE2YNOVzE6OH7cJ7T0/eAvz?= =?us-ascii?Q?5NbRRIoMVTQWunstYR8KLEv4OM1mIsiKQe2ME/D/qis7tQhGkl0LZcn8yl3y?= =?us-ascii?Q?3Svsb9YQ8fy3xwCdjNBv5eZZHPgoieLWb0H3YE43V0fdF+jpkGq99jipumlL?= =?us-ascii?Q?iA5yx4DQ3Q1y15FU9xZna1NB5mVBNs2USR9L+cc50L+YW8K/YTJOORch3UoX?= =?us-ascii?Q?LFoaQc41tnUpbNCbKdqXPc/Mt5D8yMmEgA21bzQJ9j6af8QEi6Jlz8K8nHo5?= =?us-ascii?Q?RsdfeAuDUBs8WxRhIT60CWZxu3AU7gTkzxT7TdBwZgosd7ySq+s+7QlVQ0yf?= =?us-ascii?Q?rYdK2VsuThy3dbBE9A2CVcQvxar4qmiNiqZ1KRspU9KCaZyMzS8dLqOdM6MI?= =?us-ascii?Q?Q0+uAG26hBMceGFEHim+JQMcmXm8My9lyxoP/b0ykzxKgp1qzAQkmX3H3qYJ?= =?us-ascii?Q?P2Rz+dtKeSbdZQygjalC1CQkblIJufM4KuMiN2KVGJ76Ndd5BZCUWJ45+ifD?= =?us-ascii?Q?AwTA9Ip/1Us37s38rg51H2KgAJS7R+oYTkUon4pBtby+KWgEE1QmyspTIAia?= =?us-ascii?Q?AWJGU6k2BB9hCfcjYaoODXzTYEidke5/Sy346qmY/8Z1JiqrJtbqdAqdT4WV?= =?us-ascii?Q?3zYe/yXbg5mjbPNA3OVT48GOVd8TGB2GSR/7YcRHiKp7hipqK5a8MG0TUKoL?= =?us-ascii?Q?dALigctpHNVCtd80Yt21nPc9hMiXC4QuvIudVupmb5eGhBuw0NeIxsMonthj?= =?us-ascii?Q?FHXJSXZB4EwN3WDavSGh2IWj2i3689GjdT+yj12vnx9A3fUeEUfg3CgzQVWb?= =?us-ascii?Q?zUvzS0D7sFLjYtEGVU5B9FzMG/6T7+1rSzqCejn1J7HO9cEqb5Qko35hEBIG?= =?us-ascii?Q?G6uAlyic3TFkpuuzT8urO3VBDgeHreIyrX0t4F+GIZR6ZGWFc58RmQVsvjSm?= =?us-ascii?Q?pWCmyfyA1LzJd+lnLn0WIeaQ0U/wgJRr?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rs7D+k1aYntiEOmg8wwx95ic8yu3qQx91XIHnbsxOw+stUE5mrYmD1zTl04W?= =?us-ascii?Q?04xZ+sxhKAOPc54YT/rc9lP3TwM1p59CE7a29T6PUJp5+bHomI7GKYp5F5gh?= =?us-ascii?Q?kt04frtFmR5k+mvr9dPVv12AxzcDI2XrSz+9E4/rcWBb+JIPCH+Tj2B0srzG?= =?us-ascii?Q?dyGSdveDd6HiJffNAL/msOsqlBzKs9wa07IGKwjnX+e8R9mk/vgBGmqS6h5N?= =?us-ascii?Q?0sDjLr1x1j3qduNqJMCLzopmXunzC8/BS2AvNQKD2/Nx1RPUhNfuRlGepIcl?= =?us-ascii?Q?YhHycpjQ7JlwJAYUDSdiwF7RwAt8UxjpiH63AOQfhuU1eR96xCDZ2FfRYO0u?= =?us-ascii?Q?m5bu6zIWeYMzVMHDIhAOUStryl9CrwKsbRkdjhtepqR7KfCKidvj5T94BZRm?= =?us-ascii?Q?k7iXi49xmdP7KlK1UYrhJC7RhpQsbifc1xmURDmB5Gks68TUtWNcJKLXPTbD?= =?us-ascii?Q?mawyJKwLej51c8Ezg7I0YYiiLr+eymPVP2/rOGAzABTMBD2Ht88tdQ8kPthI?= =?us-ascii?Q?b6+9WVose4X1ojLKO+E4fbMBR0LSqDV6T11IPmHd7itJc/gGI2bL09wEt/Db?= =?us-ascii?Q?fZuDLaHnTbNJkj3cMDgX4te7+8RT7HqmQ9wAYVXtr5tr7jEbBCeeUQB/70ys?= =?us-ascii?Q?lw4Trc02OtHFvNuv+4B8el6261bLqMMaD77GVU/QjOvu0h8aXYOH5Ex5zjpE?= =?us-ascii?Q?hjugfCYYvU5bdQj8/1jqubIvcBegHEBGVYf93/y84MGsR0rUZAi2qhZ80/sQ?= =?us-ascii?Q?SVGwVy9uizOvscbt8bHFQFcnAU92kXSayLT2lSrbrTpPEiQEPjGSlPJrLHbs?= =?us-ascii?Q?LcvNOuP3Yjn0UaGPAHWtRMPTfLAKB48D01FyZEvgnh2ZbuU2sNfleRa3qDy4?= =?us-ascii?Q?6egij3p0C/yWST88axOSuOXT4gHQzfafaQnLXgezbSYjYkvtkIR/Jxv/Q+tn?= =?us-ascii?Q?gqH9KdJykPfleR/9NGO8T06JQTu9TnkMGG0yiMKVVgMoWoTJjxM9rNz5vXVi?= =?us-ascii?Q?Eqo3ljPj1SzJusj1JmuLkKjBFjUIJYcSBN/tMmM7qnwCnTi93wIF2JqoalAd?= =?us-ascii?Q?tAgDYB0vltxnIegHF9SPq29W3nSNgDQkWZCgt7VWOti8/Mhq50vNXUk+4DAi?= =?us-ascii?Q?65S1lGFz63dYSuFXquILKkdCkTI0hDLB+rI3iUTNQ8PgTaBsUtq5mCxzn2cz?= =?us-ascii?Q?IrwPxG4Bmsy86Ed8LXIAuZ//fn7atsTdqAlKhSqL3T7Mf7oJevfTPiiuJh1G?= =?us-ascii?Q?yqy+vvAf4eHRMzHAdX5eH9ns8Lx6fnjuK4Z7EJ3ekGzaiAO78NjEYunGFpsG?= =?us-ascii?Q?0+i97zzJy5tdyALUkbEqkmfoGppnUeBEl2Ff908ZUokqG+IFKy68S6OkdTGX?= =?us-ascii?Q?LpTIiGaQZRVmWvVsgumqDmEdzyn6LnDFpVGgY0NrwuaM4XxrdKJjfMb7MDNw?= =?us-ascii?Q?08NFHc5ctcj6itImOKSoBZmKifpFMy3TaPVbloh6x5p0Bd9jDXorchpLjX/g?= =?us-ascii?Q?ouw8dy+IjnFqu225gHhQN1ATwbLi3zZZjQ7MVuUIOdKPKbqnP+ff9uShuc+2?= =?us-ascii?Q?raDTMHd4ETTH9Y7NhFBa5MdPq+6Qs4G7iWp7WBTy?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Uvb8GVrTNECRDxgFQWyhOXyTvlFHa787IYqR0OKLwmYO6EVxuQGGOBMrbaqnagNXbC70c1Wgz5xfb6wLzUKvJKIdF0lbWHM2LEGFw4z5F1/taI1865VFx8REHyiGXy0vfN8nh01ZjmBkeY/4F4wRgrNtDATIz3vnXmMF2MHcBQRI0sgwI9rSx9l+ScslnTxsEHmIFIqpcPROnOFARJFU2svrpkOCFXTzHDOr6XD3rvk4HDu4NnDe9AA9hTA13IXU+Po9xB4HH+ATSbSQ/qtd/VnlIHdnxJ1UqUuUVb94T1HAz6rUBejSjmw0ucRlaAXxvlIAuGuDAD+05kv0XW5gkJRgM6ZwSR8HRxmqjA34UCypZ9zFIaZQ7aRMdaMVHNVufjzr5SFFUi0Q2OGHILM1hZ29vLm5zdIjRUzwpNGLhHaGBG2veVhirS+49pCKuhbUIlIO3v+PQu7soy80Ow/MBra4fz3z2aoQJRThy/Lc/6SdRUyo9nYWeJkZdRTQEv1TtGtBtJ8y3Zh4RCq51PF2MfMtvPzdAy/QHZr7ObiUWbQrQOl38AhIGU4lK1Zlv3OAofgxG05Eegh+Ei7pkAIvYSVJ72HhyZ7jSTbLR8rHW1o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc76ea0c-0dba-463f-798c-08de1554767b X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:24.6461 (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: gZFDcyH4BSX+SsWXcO2sr8TxOdZHUTVz/Hdo+/E+7RS6eRylahiolbNNMv22P35L36xmMrn1bWFu5233DWaBLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Authority-Analysis: v=2.4 cv=Bt2QAIX5 c=1 sm=1 tr=0 ts=68ff65aa 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=yeldhbV0fVjYLvCz6hIA:9 X-Proofpoint-GUID: IDU4WYRmjPbzQselmlGSfWLIpBu7ndbU X-Proofpoint-ORIG-GUID: IDU4WYRmjPbzQselmlGSfWLIpBu7ndbU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1NCBTYWx0ZWRfXxKeejNVcmN2L yVzo+XVg3UEv9dxYSfPMUwSmOttoMktXl7L1SKU+uOTeNMDF0ymZk4sTz2OBWECHkkj3EJa5r/M bq1q6lniEL5aPdNI5P7Ei/E2kyy50GOmowL9RyLuYwovLQHXVmKPubJuutJaOSzf/Dl2TRD81t0 bFUWa8pnY8pQYBbriOJC8fOHzvCEF+kcCnesq4qxadbOEfIYt1AA/9R0Txiqj2pMlzx80lpgcoF Zx8m+G8eshQvFPrF+I43ixQqWphZuMZWX43xjSYimGzDrrE/ev3raO33njIOGcbSxdag6kEeaTz LEFSt4QCUGqx3mWc0+7GkUjSK2dFmfD9tCml/Z+0oto9rwUAQYzTkKxb3JQiGiso6IHPVhTAuh5 itIIct/CxheON1P+F2d+Dbk8hEfEmA== 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 always allocated when creating new slabs, because implementing lazy allocation correctly is difficult without expensive synchronization. To avoid unnecessary overhead when MEMCG (with SLAB_ACCOUNT) and MEM_ALLOC_PROFILING are not used for the cache, only allocate the slabobj_ext array only when either of them are enabled when slabs are created. [ MEMCG=3Dy, MEM_ALLOC_PROFILING=3Dn ] Before patch (creating 2M directories on ext4): Slab: 3575348 kB SReclaimable: 3137804 kB SUnreclaim: 437544 kB After patch (creating 2M directories on ext4): Slab: 3558236 kB SReclaimable: 3139268 kB SUnreclaim: 418968 kB (-18.14 MiB) Enjoy the memory savings! Signed-off-by: Harry Yoo --- mm/slub.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 142 insertions(+), 5 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 13acc9437ef5..8101df5fdccf 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -884,6 +884,94 @@ static inline unsigned int get_orig_size(struct kmem_c= ache *s, void *object) return *(unsigned int *)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 (!mem_cgroup_disabled() && (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 obj_exts; + + if (!obj_exts_fit_within_slab_leftover(s, slab)) + return false; + + obj_exts =3D (unsigned long)slab_address(slab); + obj_exts +=3D obj_exts_offset_in_slab(s, slab); + return obj_exts =3D=3D slab_obj_exts(slab); +} +#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 /* @@ -1404,7 +1492,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 @@ -2154,6 +2250,11 @@ static inline void free_slab_obj_exts(struct slab *s= lab) if (!obj_exts) 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 @@ -2169,6 +2270,31 @@ 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; + + if (!need_slab_obj_exts(s)) + return; + + metadata_access_enable(); + 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); + memset(addr, 0, obj_exts_size_in_slab(slab)); + slab->obj_exts =3D (unsigned long)addr; + if (IS_ENABLED(CONFIG_MEMCG)) + slab->obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab_set_stride(slab, sizeof(struct slabobj_ext)); + } + metadata_access_disable(); +} + #else /* CONFIG_SLAB_OBJ_EXT */ =20 static inline void init_slab_obj_exts(struct slab *slab) @@ -2185,6 +2311,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 @@ -3155,7 +3286,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), @@ -3219,9 +3352,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 @@ -3230,6 +3360,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 06:56:12 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 92A1430F809; Mon, 27 Oct 2025 12:29:55 +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=1761568197; cv=fail; b=ue/L9IUegjJiUoCzMpDtisp8vLIsGxm//gpWj//qcVWQMSbsTe0VdIDQA6Ki/TCoweEY4U5NgbsaHeKUj24O13gyj132FRdPvjAK4UU44ktSm3n1VXHpsoVX8bKp9Q3XCHDd86jiUEWmEIAdGVtnlBgn4rzNQkvJyTIbupLzWFQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761568197; c=relaxed/simple; bh=cWhBigUGi51VYxI8EG1hXn4eiBQAfq7V5NwwkpLfD0E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dSVxUoKKZN9Y7OshTPUoKkXFDxdArkcina0w/QAOx5qXJLEbS7bGbLD5zUPe4ET+9XwF0ArOxcHgrt/P+lR9xZpN8FkNfguT08rbsapHiTNNZ1kZRDxwilj1K1QRzQkzOuee/cdW1oabtOPxyR8UpRH8RDDh2SE4XhQca8B/xaM= 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=fQIyQZXi; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=vu0HrVDT; 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="fQIyQZXi"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="vu0HrVDT" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59RCCF2A025450; Mon, 27 Oct 2025 12:29:32 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=OCnSbpueq86EyFBib8Sfh3mYyHoSwkFd/H3zAcIB+2A=; b= fQIyQZXiHx2pNAS0inLnOiDwjH0CIslpMCPGVwFhG4ffInGW9WeNmTTQUnU/MTPk WlrandUva+CHrBqmR+Aq8cwkUdsq0pdi/mnraGYZsX0FyOCUSCRhMMGa2PVQtAyN Nc2AhMvw6C0nxZ0fzBJ3fPvoEvc58FY6c/P5ZTkVvQ6DFM0OmHCGNmv+m/no04FV hUKYozjvD5mph6NiZPH9eo0UYsAAomqy9IUppLnZCxJhNzrG1lzv78Ki5iHHArIY kLIY7V7+ZfKlq13gsXpmxKaBwbvQfcjC4ZxtOsDwP+mc/f4wi1ciTc9sHaSxUdcV G02ofNllB8xMmdEZJOxHJg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4a2357gqu1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:32 +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 59RAFv7S037500; Mon, 27 Oct 2025 12:29:31 GMT Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010039.outbound.protection.outlook.com [52.101.46.39]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4a0n06r3gr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Oct 2025 12:29:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cCLK/iZqJGKKcMevO3Rxl34m9A7MlS9NmivmFnN+xtNME3CheeNEmXfSoOk0hrRajOTQjm78S+ZAYjWHPhq+lNnyVnC4/XTONm0BIM0SRyjHZkjJ42BL2f1rQXXC/DIgwg3/hstNX4mEzAiVby99THOqF31qHVN6o3hExvlw86Up5FXw6HtR6/zVm7CDV2esM0CkvjtLmq+IIRWcuoga0uaSCdB/ZEbcjB5zzgxk5vcP+4U6UtG0h56TUxRy9Y+vrB04D0F9+WCsqAjKmIwQtU94B75lBlzZuJ5gmp7DORgIiAil6KGtElJDwQaKih+KfGlSsgOzlMduuDrFXmXe4A== 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=OCnSbpueq86EyFBib8Sfh3mYyHoSwkFd/H3zAcIB+2A=; b=gbFQaijTDCh+PvislYkP8axfKDR9jgbf9JLQXZ+wdX4jetabYBiWtPXdqSiHVyUqKSX1c7UDhZIIDh2tzhoSGxwzujMSPY2Hhoqu1ZsYEEa95o9YLbJoS8jOxXXwv+mOvg0uVzWxOrgyCYvkLo2TUNXmYKAiRzdSDW1yiI01XEHWmRL/DgZz8FIGVtkqVXUASL6W1KxhhB9m8HMogDjjB3J1HbXf3ZDCKJ6g06PzPhCqaiBWcb7Fl4C0sG3ef1F+Xbx4C0nbI32V0qC75YQZY38d2I5fPnv9ddTagdlnJs4cssSY7InTHdTrU0B4Q/IP9BLLczAoe/k/ynAwTqzumA== 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=OCnSbpueq86EyFBib8Sfh3mYyHoSwkFd/H3zAcIB+2A=; b=vu0HrVDT87uGVJMj/X+oDshuUMCcrU8ii+HenP+qeggq9icjzDFcwN2VWRyyb6H/ieVG5PdbU92ia+uNdCWkpVJ79pIivYza0fYrzSSjAxGuc86qfMkrg8P5AY/90MBtpyD7V7Ay5AK4d2CUVfaFi33gd2MkY69Fon9Z44N5x5k= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by MW4PR10MB6371.namprd10.prod.outlook.com (2603:10b6:303:1ea::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Mon, 27 Oct 2025 12:29:28 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%5]) with mapi id 15.20.9253.017; Mon, 27 Oct 2025 12:29:28 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@linux.com, 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 Subject: [RFC PATCH V3 7/7] mm/slab: place slabobj_ext metadata in unused space within s->size Date: Mon, 27 Oct 2025 21:28:47 +0900 Message-ID: <20251027122847.320924-8-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251027122847.320924-1-harry.yoo@oracle.com> References: <20251027122847.320924-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0035.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b5::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_|MW4PR10MB6371:EE_ X-MS-Office365-Filtering-Correlation-Id: 474b6480-dc1a-44ab-af8a-08de155478e7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OCoLXcHxyqe+A/9yRDmVl2IUsdWuLGtNkOyD7ydxAIYB3JO4qznk257bUUaq?= =?us-ascii?Q?sQdRytB5b+R33eLbdnjc/wt2UmvC6HMG8Zv9WV4hCKq75aOBD4Y+ub5bSGJR?= =?us-ascii?Q?L7ImiROEPY//z8ZAkgXTU3U6IN5sVxab0D+L92QOOvAxYIDSQu8sL3ZWu9rw?= =?us-ascii?Q?L8tpl25Qg7LpeneyfEwRKKY4NQMMnRJZ4Svhp2RRvvo0LNrGl6yc1EJ4Ql/6?= =?us-ascii?Q?6eqE/VX8vzEGN546fiM3c4f1kva2Hf8uOgr80GZz2uqWXrgkaGAaDb2MBLCM?= =?us-ascii?Q?U5N+YihQ7IBsy66WpEAxNf8vF6o0DWFPq6Y17OtMFHYVhx0FDdnhYbbQ1jaT?= =?us-ascii?Q?VEl4/y+3KjtWtI4eeWXG/LiZIeXkJsd8egwbtEqAO0C4r3SSEFM9wgkfvoUt?= =?us-ascii?Q?U2lfROmxjyuG9IoYYSPm2kdxTeyFkZ7sXLozf9CsRtQKbljN4sLRoJM0J9EK?= =?us-ascii?Q?CCqkjJS2xhj3oyQAuGRgOjx3NB2LTF14unJlqw9mzRd3CBBv3f9ujzCbpUov?= =?us-ascii?Q?e9C2LSBO7ALgVUspbDuYmbGilLqtl7qPJ8Go/+XuOh22thKezG8Bdqj3AGgQ?= =?us-ascii?Q?FnXta4trKRPUz7PkH/OmSseItpJwlkiljfZI9v08KH9/mxYM2f2KDnnqJbIw?= =?us-ascii?Q?kPy8eOlpjC6AtzRTMwKAQglhyK16eFvNbki5GNboQ3TwpiiWf67DKyCklSVM?= =?us-ascii?Q?m1mg5vvKkLlU+9CnAV8cv+SSaWN6IJfgNeW+NTwaHQ+nzXJOXkyVEdqd2qJa?= =?us-ascii?Q?uiAz3sfK77k2upgjeHrWx3+I0G51qfyo2umqgZhMMS362nMmwRH8rbCneeqN?= =?us-ascii?Q?L3ti5+bs9Qo07tBjLGstrJOdUC2EG1/vOY92WMGBdIRgT00V6hrl9bNy5J4E?= =?us-ascii?Q?dVFIGLfZ/hX/dJAd5qhKmTlBP6reoFtUBn9ZJhv5/6dyJR//zbeBowH4LY+4?= =?us-ascii?Q?0Oc+FJbEbAZeiooWducheOX46j0DhgKG1BadBXnAXPI5asxaxWDCQnOw8EjJ?= =?us-ascii?Q?kXYoXqJDFTny5kN5s2FJ0usrieWUeOS/6yf/9/r6uofYxpWU5rkwVVgu6zEM?= =?us-ascii?Q?IJSM2n41eFke/bZ+346MGjbUzn2/uV2iuhklSM/qbrHv0XYjAvg/MdmZZ/o2?= =?us-ascii?Q?D/xaO+qsEe0GxibSJHgUv0pAEQezjK0j6dvSpboRAh8Vvz8RqSYF4cLJy6QN?= =?us-ascii?Q?N+SNEdHld3AkZZIRfLZcd6697fwgIO0jlvoAkU3ktBxHBledGeSNIqH08i6B?= =?us-ascii?Q?WiuX5+/bjJlJQbLCoykVmkHn5E7ROfpnNNuOfKvlyEkNCHxH7W+K/yy6aEsH?= =?us-ascii?Q?iOQIbybTCVRuZx40R09b+5OoVTXNrzSeuTT3mf8bBb9lvhdCip67K+KSC+wo?= =?us-ascii?Q?8nPO+MuFkI+H01xjsfvcw23Q2yqFwrrXco1nyiV5fyhyN1AOsXWJW9a1o22N?= =?us-ascii?Q?8K69Et+85iNYBg7NQM6DzRCGUQkzM+W7?= 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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CRQCkn29iVVWCOnasDFjW1t1MFz1eNid621ijWYBI9wF+eKQlaysBrSDFb4h?= =?us-ascii?Q?OITI2eeMXGQQGxwMslAdeCdIqtX4N13e/rmwSJt6BJgD58moQNKPavJwZ7zg?= =?us-ascii?Q?AP4X2itKud5fyx0z3ZEYnniym5qCZ7Wy/7eqiNaP1yooxH4WQopzqYo9+wHU?= =?us-ascii?Q?4qfsXUSv4yFnmic5vEHemfmccLNLx/IG5/zYy7M6R/PM68eax4EoHPP2nqla?= =?us-ascii?Q?5t6YzI4Esmo9ynOV01m0Mb+IaAfnRatFleXMr+Fn45WaAonuZTCZHfe2GK0g?= =?us-ascii?Q?G831BNZDokGe0gjGMZjzcMhe9mMSd3thMX7cOG7RSn2V4oAgZedJ/ByBatHz?= =?us-ascii?Q?3KSA7o/UmAeWHp/CHsJ/abLhjrx3rhtA6ogZLw08X0tnfvNvu02Po9XiXibV?= =?us-ascii?Q?JtV2HUBcihTJXIXDCycIvjgJJ/1bvtQpiYa3TlOz8CXTJgma0RqeyasygERB?= =?us-ascii?Q?y62GaWpl+e3TqO+jJLsuJ9OV6Jp51tiDKXPPslT+jU9XCcQYaWAb/JRSSVqv?= =?us-ascii?Q?rWgvXWNwDp+Ske4lS3R9M5vvM79A245WJ1YqkGd1+Lxd1R0v/T46hs6WGfyl?= =?us-ascii?Q?jGRkYYiz8pes8+1yHtBx6nhrinike5/NKI0bLa/thQRAiAXb/dwK2wePdFFf?= =?us-ascii?Q?oycG7eLlBlF59HBZpV4jls8AGdct+L3jGVDE0VIY0m5zSZE5u3eX4igAWjPF?= =?us-ascii?Q?m92zycmuHXIxctmD7eGZQl1LY7ckQj1ts2uuhk5lxExU8dRh3IvQg6Y3Kuh6?= =?us-ascii?Q?bwMXWbaaLyYbFAL9udnVpuzLfeQvRj81HRnq0nc0ZxgWghpfK7S5mm3VVLRX?= =?us-ascii?Q?mWyUVXGa3U8wBjiSo/o83Pz21Ooqc4IDWehIiewHTFtOHgsXwkA2HTk39Ur8?= =?us-ascii?Q?EH15Dx6hySPc7ykoPl4n6NZh2MyopSEiBJbCj2Df0P1j6CuP2GDK3PtfZpbe?= =?us-ascii?Q?CMnOL0d/s1otgnoKIklRoXZmEOi+Y54MA5cDJkFoPa+YjOeAOAZnKJWhfRCU?= =?us-ascii?Q?hr1u34qgl26ZyP+x8yYYnGBHPSbqWeMtgpMhsXZ50LEOoWLxDqknwaNdDHRV?= =?us-ascii?Q?z71v3+1u2blwQjkTI/gGGgDG06aytCj7lkKW2o5bnLvwmoP/l8FNly4AgpML?= =?us-ascii?Q?UOQeNUJoef2BhoSVEZNHWJY51wKrqE46sFAw4jKapXVsBhwqx9mXtBByVJG0?= =?us-ascii?Q?CDN2R8cGO2+OEjYcfPG/26rM7S2udPGBRQrUN7s6lZLVUe9f6rL+lgIH+hc6?= =?us-ascii?Q?EW6DCTtPIszG9Kms4nmCgO6XMBrCDXbFQmIKdmBAAZriSKL8m5X8CIb1qTQI?= =?us-ascii?Q?P5M1jglDFEa8u+zzzLtugu+BONcgXSEsFDwHwGSOu/R6Ju7VHtfIy5FIXn52?= =?us-ascii?Q?u9GiZYhmqWYChXiK2XOKtzag3HCYILn2VdEycGGd8B+cHYhiT9Q/7wD4SE2y?= =?us-ascii?Q?pD6VUCLhsi7Xhs1R7C6LA39mve/ufoLfLIlhQy81VXZFPAZdlf36DnnCeUmG?= =?us-ascii?Q?tRtJpYumUOSq2O4nSEbLEKx2l7XTmbRZ0a14D1EoxhIUMAwov18VJdnoTMX1?= =?us-ascii?Q?73xiVf660hIXwApV5UMmV273S/BkV/obDe30B4Tr?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6JXCwwp1DuC+Zg8GdwfWX8+EEy3JlhrsmyudiLtGtQZ9dWnxDN+FiRG04+hgZSTUgMsl/p9PivsjXOir2twF6MCqy/6gAJT+Gk0vW7+TedynRG2ISYRw/F0Ozwsm27+xRxBGjpNGVeWCEBMZyno8RrEqtqqqOGR1H+aszKrQ0ufsDsjRVgkFQCsyoiuvRo6EO/HuxJphKSphyZtfFPrU9avNIazwDperZQACznu24kkHLciVYpJutzP5T7baK95uA27vR/54Uy72z6psU9hd4no6Yzhhh1Fh/zNnOj8fxDTtZNw/opfAG34B9UW0H/myvu33DpKG/rlaEEDRcoLTSbOZEXzL7fvY1+BfGPWnMXhIXUZ73RmuSOm8fJ4eyUV7a4leRBzf4FFRuJReYe1Pn3DcSpFa+sKwLkkpODH/Ynsb3zPfHIQvej+wcM17KGqtZc8Wcvc71EW+Qv9ec7unXLNoHByV6GmA69xfajxUqghjMRBDNbHYmitimBJt6AJFtKVd2/t/5y49M7xUlfHLk6CkhXynRB2om94EIvYJ6ijU5Jvf+Z58mylw41fP1BgPC+5ZKA4Afyt5CjWtGqNyf0O8BXC8oefk17KTaVCqhHY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 474b6480-dc1a-44ab-af8a-08de155478e7 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2025 12:29:28.4923 (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: Tl3B4zwyd/VeTkFo7l77+INZrAawOPin6gst3k3n3Dwcsri5cFwp1VZ0O9W8/BoVfIN7g3apZkCqqJlqEBxenA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6371 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-27_05,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510020000 definitions=main-2510270116 X-Authority-Analysis: v=2.4 cv=Bt2QAIX5 c=1 sm=1 tr=0 ts=68ff65ac 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=x6icFKpwvdMA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=lMPLp5VHBhqu3uUK-QgA:9 a=nl4s5V0KI7Kw-pW0DWrs:22 a=pHzHmUro8NiASowvMSCR:22 a=xoEH_sTeL_Rfw54TyV31:22 X-Proofpoint-GUID: _MpkR_wMsOCvJfOp8slzsnKAFG7w_WeT X-Proofpoint-ORIG-GUID: _MpkR_wMsOCvJfOp8slzsnKAFG7w_WeT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDI3MDA1NCBTYWx0ZWRfX4smUFQ6sEgns 6rzoSOqIjoqbIJSoC1RzRcdKQwGXXlgdV+fsWmBnhHnDsk2XP2aOyC+bva0U+wSoPTDx7/cmJEr elVBm7gEZ4hHldCw7Eb73W3uCNnkWAiZjXP7+W/IcSto5cJtmO2MRVsxCDs/ColjeR2YoiBZyJA mSYaAu4Cb+kTOPUJrEwuzEJPSiFP6lBPPIX+iSNLq7c27lMoLTEO9nDQynn+ySdbV2gB7W4Xf/2 xu4i0QQqoSMjdNgm9OJZSPGEjng9qK247lIdTU72UxEC66ZAr4hEvWMAKJ/Qc8VAconS3mmSon1 9+3LQQftpS4SB+yrvOjbwn/IekLcsNgXLHrQ/q/UR4RoH//IYS/aA2kVRJDczyoabM4Rc1WLw5T 3tvGlumUtaA+gngRid57X6GJdfHsSA== 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 2M directories on xfs): Slab: 6693844 kB SReclaimable: 6016332 kB SUnreclaim: 677512 kB After patch (creating 2M directories on xfs): Slab: 6697572 kB SReclaimable: 6034744 kB SUnreclaim: 662828 kB (-14.3 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 | 72 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 561597dd2164..fd09674cc117 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 2c2ed2452271..bfe2f498e622 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 8101df5fdccf..7de6e8f8f8c2 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -970,6 +970,40 @@ 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 ALIGN(sizeof(unsigned int), + __alignof__(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 @@ -1270,6 +1304,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, @@ -1439,7 +1476,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. * @@ -1468,6 +1508,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 @@ -2250,7 +2293,8 @@ static inline void free_slab_obj_exts(struct slab *sl= ab) if (!obj_exts) 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; } @@ -2291,6 +2335,21 @@ static void alloc_slab_obj_exts_early(struct kmem_ca= che *s, struct slab *slab) if (IS_ENABLED(CONFIG_MEMCG)) slab->obj_exts |=3D MEMCG_DATA_OBJEXTS; 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); + + slab->obj_exts =3D (unsigned long)slab_address(slab); + slab->obj_exts +=3D s->red_left_pad; + slab->obj_exts +=3D obj_exts_offset_in_object(s); + if (IS_ENABLED(CONFIG_MEMCG)) + slab->obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab_set_stride(slab, s->size); + + for_each_object(addr, s, slab_address(slab), slab->objects) { + kasan_unpoison_range(addr + offset, + sizeof(struct slabobj_ext)); + memset(addr + offset, 0, sizeof(struct slabobj_ext)); + } } metadata_access_disable(); } @@ -7883,6 +7942,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 /* @@ -7997,7 +8057,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