From nobody Sun Feb 8 02:56:19 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 1E6483019DA; Tue, 13 Jan 2026 06:19:28 +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=1768285170; cv=fail; b=nZBpdEa+k6nr+5VAt1hKYluWozln9SyNbXTM5T43NAB4Z7yecvvO6lK7ymw4PyYlKErQGf2R82vc/4hdGM55txZNIyYfeOgWC7eraWGf26xy/5P9BEIY2AazVrHK5o1CfkzDu2L3keCAb1Pl8uUmULqgYpnqPWe5IpCB39PqUuo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285170; c=relaxed/simple; bh=VonhcYAulPsGRd1LvRxM55eZBhAjVHqy2y0MPOQL6rI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GRCrBzkGp52BAtaXmSKByXF6bYg1On+vAV+2NWW+Xtlw8NXpUTwCPS45PimBgr0ioGd2FCHsi/2XIyEcMcYcqNbn3XuZKzZobn89ufbld9+q4gR060XdGgQFxr55VtY6FYi+sU8sa9AdGf0r6v+3IgJtPyssYl3LicWyG/E8LDo= 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=mUu1B9U8; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=SFBbPq6S; 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="mUu1B9U8"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="SFBbPq6S" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1gJlA2753003; Tue, 13 Jan 2026 06:19:01 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=RaXjqdEOlr6cU1Lo/3JplSCJcMzjoI3JhB3kN3dF6mk=; b= mUu1B9U8r/h8s9lw2Pi797dmV83o49sN2lsxBPyVtfxjnCrrcqc0UCXFNlCD27n1 AeCIP27FmkjABkqKiqTqiB+twjvmBSALw9toXFucj0qaxQMztCeO8jiqsBUYWmKq XXeardELAtttXX8nQ+d1ePfP50VnDOAfvpp0X1bO/mshsb43g8q6O6IaxKpQzY9a O1lqx2uIJCLuoK9y/cJi7aDJ/7w6kdl6HP7hAbe43XA69ENyLYktTISW+VEpSBXe gIVIGBuVvCAaH7q4RskPCo3kwcNR/lum+90eeNIL0x7h4VZ/vsN2Unk00m0GaH9Q 7JpIF0CVnMduUaI6Gxqupg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkpwgjwn4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:01 +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 60D5ddRW040448; Tue, 13 Jan 2026 06:19:00 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012056.outbound.protection.outlook.com [40.107.209.56]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd7c3rmk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UxCyGO0WZZ+qcbrOTcqTSt3skozKympXAAMJpxpWykmcW5LIqT8NFz7lGBCy23A9VzExEHjEKG0QtbdNyWJg1tMfxLDApTeVqrZlhMq5XRDRK0y1WNC9Z9lOfEDWh43bPumup9lx8WPzbh+gvFyjXHYEQXvUxIGZozDx0iIIGMJtv9FWRiaKYt4kIhq9P5an9TcvTVgOMLDbDopTsk4FZBi55YTrnTuH4i1WhKExK2+wk6siENvXEPIBFDBMmW5z3DwksZTa2QVND/5KrmvG/rBAEEqy89PAf2Bjt95+caZyZ7IwHoKmQFd9ACNd/oKU2rzmCCxnlanqDqB4ft+c/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=RaXjqdEOlr6cU1Lo/3JplSCJcMzjoI3JhB3kN3dF6mk=; b=IOBMEgI0ylQMMdT7AgG3vUzgxWnT8fu8RbZKiClkotMGn4rcCL6Z6e+DOXeMKbLDtQp6WJdmLvI634K9w3sNhAI0wnTvNI6D3XP+xKtGRng4VvyLSk8244Irvjv+eKTmGdfo9dYSmdZU30Nqa2+W4+PCsGW65Io/UUPi33fRW3CmL4nZePWU3WnCpBcrwmQuLMgblW0oUODYfDplD/HkPUYHLMRY0C1rxNLwaxMYAR0GRWn3vk4afvpVzrTsOTNGXkQ/8tk2jqk+7ttDWHeL75J24yWT13unBjWifZq80V8TPWe+1mY/Br5lKBuNl/Agm+zWB8NsWuUbYBb4nEfXNw== 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=RaXjqdEOlr6cU1Lo/3JplSCJcMzjoI3JhB3kN3dF6mk=; b=SFBbPq6SFtwfQ3cq8IbhWer0YzRl2BWyQ1+JbLKtBhA/tNbdU1HUhuVedi6XwLb1HMvItidXdfwTKAk//WzppXKWb/F58eQ4nBmLYp5Xtb0vDecD+tZm1AJFlcFBcOAxXYh1UzaRMjKwTM6l0xyAkujG0D74sqtdwN5JxIzFwtE= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:18:56 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:18:56 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev, stable@vger.kernel.org Subject: [PATCH V6 1/9] mm/slab: use unsigned long for orig_size to ensure proper metadata align Date: Tue, 13 Jan 2026 15:18:37 +0900 Message-ID: <20260113061845.159790-2-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0028.KORP216.PROD.OUTLOOK.COM (2603:1096:101:114::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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 21c840b2-bdac-4394-a345-08de526ba1ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dfVfMfynWKUcnsM8t2b7ld8vqeTYz+o/nKX1PctoEEbbqg6E5aps83MHxotz?= =?us-ascii?Q?y9LucMCzmAcHpVf0pKHsgGopZhqeTwOuRl451k8iVElzU4imGbv8ULTbWLwC?= =?us-ascii?Q?K8fBUI9xOF7iHJP+lgruF3vKJhYLjZtWCAHb9qkuzRCiY/zWxrPDuLnvGmOb?= =?us-ascii?Q?rFg5nPez7BDdENaXhoS7qNCkCDHbUabBaRZpbVt0njOIm1+lLHhjtjdj0ItU?= =?us-ascii?Q?fUAspnM3X6St7eYq13tXVpEbWpwW86vtHr0bG/ir7HtxamZcHuuD7uQhHQpd?= =?us-ascii?Q?wqBBxdegLWnIrOD5cQgJI89AV1n5KVUXJsETVc/2/lDJRBRhtYPeVgPdmaBh?= =?us-ascii?Q?f+e4IuyWXemn+H1Hrl1aYG1C0BpQwUGY82ygbYODCjIZZ2PDLZHkK/sjTmWT?= =?us-ascii?Q?tk5ueydSqXe9CDZSFaMcJDp0mqQYio41Md4ea5dlFOcZynGy2BvyOifKUY76?= =?us-ascii?Q?rMlpiL2VBMUDPWWxkU3VLiA7Ifxf59G16YGaU4NjDef2dbXZmir1fEKvqFhu?= =?us-ascii?Q?18r4/b+HqwgSTGZ7zQamASqeMbBSI1kwEsrfgHjEZRexAkrhGRbg0nOQyR80?= =?us-ascii?Q?UQqJPZBiSQOy0H0uGlUfNPkW02Gqq/PvMvDkxcNWPVF5WWxQJOS0dupHGae2?= =?us-ascii?Q?LaXSjohxM3lYACmjqAR77HX/4kiwE5pmKTwM+bZ7uplNiNjYhaaFTd7rJcuE?= =?us-ascii?Q?tobfINOeMkL9mpQ85z/Cn7raro5q2pySbC/5LhVEKtVUamY/FANP+fO2Pm2/?= =?us-ascii?Q?1ycNYiG10NIKAzDm06jCpw7EufnlAJaarMovmwmpeui/9rS1t5NAvGY6opO9?= =?us-ascii?Q?M/gSGjzBv2SONYH8h+PcWpUqdCATFm3QJD80i2Om4AafBmFqW6Mt9/Vah2PX?= =?us-ascii?Q?hy6RLlhkYP+i7aCnKsAk46vMZHtd+0vYE7aZeImvUcn/EWSOWycjMoe0r5De?= =?us-ascii?Q?jikVbRCO5taIfn/pG4Q+6xsh8Gzn7MWmwrWwYVjXFJ0uq8B/9I5P0vzsTSh3?= =?us-ascii?Q?QcMcdL60zdUqQHUkyDYKurUufCWIaTipg1Lk4FggnHqwlSvaPv8wUPJXNwd3?= =?us-ascii?Q?5WSdKKhPBSxPyOcN1kCQHxNrRM4T+uUSSLuUD76ZnkDrvrpuCGCAH2mSFR0l?= =?us-ascii?Q?EoYeFkcWCk9Tf3+k02Q1Bx5BZoXQjLN5gM9yl3+frhQUajRrNoD0X4NjxqzR?= =?us-ascii?Q?LUUeoc009iWpEaEHfZaxkJANg8RRPO+D+1YTLTqY3LIFSzLHClDpJi4vZ+H0?= =?us-ascii?Q?zbhKJKqmH+ijFAxvqzt7DT4fv3uU/xcrlaE9bUsNAwblhmi92TBV+oZ1D57u?= =?us-ascii?Q?G9GpdDZ6iihoExiZ18JthEfJ2m5H28/8xC4c/2d1Fok3Mb+5s2lEqoKgdUCc?= =?us-ascii?Q?m01WIfA3jl3yHmgVpl0xgb08xb7tT9c5Fo+Um8lGWw7mzPqVTrICjxEWdRW0?= =?us-ascii?Q?LONp9c57LbfjCrGer1LM0+tlEkezERW59+7fjCbAFL64QWU11DQRFg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zB0CJsr5iGcbf3w2c4OXmuCeaFZYxJrZ1tuMhnnolIOMtU06SyW1hikVr5HQ?= =?us-ascii?Q?djeBteVqx8KxTQHzUzM9jp3m/r3d5qE+0fQueLOyRvQcuv/g3HaAWP6J5IA0?= =?us-ascii?Q?FE4it2ehkmH7Af+dkjl+jsbNYQBFUgnT9HiY5wAaZQOXI4sVLYRO8xzIrkt5?= =?us-ascii?Q?u7mzJ9/uanwYf+qAWIyGOyFbi7okjoeJMZRZ9QvKHA8sq8wnfcWAc9Cp52Tu?= =?us-ascii?Q?93e0AM5EkIxUtb5iaraKtnnXfSrTffGrAqcqUnj5s/WgefnpoLoW5y61wF+c?= =?us-ascii?Q?Y3DkuMFgABNlOQY1jnu6U5f8hvvvA2VJ7KKb8w22F15P/0tehQ9xPhfjD05l?= =?us-ascii?Q?5434nLEq2pkIHHVEgVJWcfUEIeraFUE0XU2I01WXEJhURoMuguOwYBvl27U4?= =?us-ascii?Q?l0sYTDSYtqDYXOkh6nkgIu1fWdGAZPDVr2Qd/2tArrdDG1RvtNN1ot9pE7KP?= =?us-ascii?Q?VAhJYxwFhuzel7jkwK08WVLStVTs3FQ8aR5OWfT+lLwGRCNlzZ69AC4rvyFE?= =?us-ascii?Q?Hn1nEqt0JmolusrLeYj5MnSCdD9QbPsNUWzAVpWfHrSFoDoC5sAUkuN4TkfI?= =?us-ascii?Q?O40NOAO/xWRA1Qx6SE8YJfdphAQa4df6q3SnLbbYwwFMJyWJ/iB2znGeAv19?= =?us-ascii?Q?YqgBzU2tiUqS6vL9j0BuE3+j6Cugzv9SN35nqpOWZiVvzVylRZCGEjOOwFf2?= =?us-ascii?Q?WeH3nHyVarjYSEqIMIxZEksrqD0nPyqf+/JqDFDsKysi6aEWQHukLTL2WHy6?= =?us-ascii?Q?UVTqE6h/JR0ZR3cVflqa9tn5CEpOLfAIJ2tVGTaE+1miydig/x6GmMx+OrE/?= =?us-ascii?Q?6ortx0DdufX2Rjn1izhob/CeKuLbXc+eQrbgln/JIw1xiD/M6+g+hIvqzBHJ?= =?us-ascii?Q?Gu3RhyCriZNLlBmZ9C1ZXba5ZE81lO1cLxEwL4b3aEGGY65Qujr7FrxNkUHr?= =?us-ascii?Q?EhAIlWJu2XJ2+6gsFkP+GaHXkRmphOL2W0U0mAxsmxZuSMYgAC38dWuXLFtP?= =?us-ascii?Q?lGrvqrPLoY5V45PTA4tW55/VSMKloDkdk3nmZf9JKMpIxrgGggTa1gndbfzV?= =?us-ascii?Q?7yza2RwSKV5JEDCXnLKKPysWRYBcti1jkSeNI2Ozsp1RfMcs58JaIf6rLwcz?= =?us-ascii?Q?9EXhGT3wZsUUswoMvWj5FGKHsd4cvs04/DgYb+rcy5tO3EQLDWeYXwCUfst4?= =?us-ascii?Q?UziJYQwNaNKaJm0oaRqXvIf1ES+7ureYhIRJoTpXVDlRAFIbe+vyvYjdQBhf?= =?us-ascii?Q?lFhCTxUUKkXg7jK56s9ifGECgjFIVPSKhAGaztYH3Izeir/pev/wzoYZjYir?= =?us-ascii?Q?RzDMKik9BTPWUJKlUEcVZfuKakVw/ZUbk8Z7fUfKTRX+MESTc29OiEjmow1r?= =?us-ascii?Q?2B0RvmgdhjkDLLFJzgnMJwMWphZ6693eCupWIkCPfibrGoR3/sZRETKO404a?= =?us-ascii?Q?PG92SoByu/IdeIXqPw4oyG/lOaNEGQS0PTHhbf1BqQxFb6DcUAye6N6hrSW2?= =?us-ascii?Q?tuZJWWDZ5780EKRxGXkwic8fGhxDii8qpj1/ld1z75+1a/aNMOGovTRRS3CF?= =?us-ascii?Q?/n4PgMze41ObmS0MPd2VO0jgj7oYkBfyAMAJdwssVUw+1aGJ93CyzxCIfyKW?= =?us-ascii?Q?bKsgYmb1H/8mHmkw0BzJ8ksZdRA48zQj34Ukp6NYJ4ojhF8iO/Xgr+QMjFFt?= =?us-ascii?Q?syF/nOVSkedMcUvPYoy49eOyUTn0LolBTCGpgQ/x9JPsdrON9Cu7Dh+taW8R?= =?us-ascii?Q?OlGZrN9fPQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 2tZaYLCuiFFyrSvQ4KrT6rdmHo2mKT2iZhr1pvREDu6ROCf8Ufc0GdAmCU3Kbu5hyjaxhb1xdSYBmX7HnZ4iEqHCHXz4QYA4vLy7Bhqz1H7MzQ6AOxSkKifA/1VneBzKLdmKmUFqvNTnJ7/51H0LN4JRTNyv1RQ+LngbwxlvAGYPM5hv2WdGBGCf6/PmQYDFJjyLs8IvDuW/ceI30xoV5aUZ+B6uMPcqRsaPRWrGm+MMS6LMSyO1NBmvpyYkNnws9JQP+YXvcBwtK+wZsslrIiYVGLHosZh8qr4bA2TsMAaF8fwNC9On78L4hjCuSxB1L3ePnAO/cCVEStO+IMYgFKN3im0R6AvXy6b50Zrh7qWG9MG5oBPgqS92dbw4NxWzPnS6hKDIcYmiQz2cMP7qPaDU791NrCN4cAj5WvLhnZoI8XsyfpPEYkvpEbP1ZNlXjL/wM/dI+soFaeKg451BgMld+i1zhWKzsszLaeKkqd3RqO2Xwo1I4jSPQ7MAq5r4wexp/JQjwpngDR9VScERcV/ewOsr+XOLmACxaUA4aDLhU1Q/g7dX40I1HnkuKtb+REVgRpNW5WbQtqK/IfvdIULwZsGOZUlkLSJpu9ioXTo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21c840b2-bdac-4394-a345-08de526ba1ae X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:18:56.3312 (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: /DvCOqlZPt5tKWTwmnueP7WqYL1d+F+iq+NSllO+GzI9bJ6PkWvUlzjMdWYr4HUkiFpyYjdnXpQ/C85vr6KSBg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-GUID: fL8HKPojHjGd8rlNA6rStAohEdNWiyev X-Proofpoint-ORIG-GUID: fL8HKPojHjGd8rlNA6rStAohEdNWiyev X-Authority-Analysis: v=2.4 cv=ZtLg6t7G c=1 sm=1 tr=0 ts=6965e3d5 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=yPCof4ZbAAAA:8 a=60bAUpEqyJ0hnt3RZ0MA:9 cc=ntf awl=host:13654 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX4/4xNp4AsQ0l wopvg9CpqxzPY0eVHPMTYSNRz4Lj8L+dP9NtLhf4PGBGuAsSBPOlOVUV1MwcRHkHBX9svTdO5I9 Zhuo711hkZ+HFhLRINOvuUp6ZZxpQqqMQ/oy4K0k7GppvwtVZX8aHuMjhsgDT19Wzo3twQqVRdZ SEq8TPzaloPBwSXF0koewu2/si085gcHMb8iorNCVce2bZK2i62mT15dgp8cqt+yR+S6NJSsyDT Jq/qBOoHdNGme2ouxXlOkevdpeYiTZKpnhgh0WZUYxtVOJQO9MSq7mf1DRFdF2dEvm6PitFTgWf qm4lr3vLonF2vv4vHXcl3v7M3TP35zrMa8Lih7Tbd40Kwi3P8nVRxJyO4SNOZSTBWPF3bG76upz jS6W0k73NjVjx+MJKUn4cnqHa2nqM1U4f+SmJUR3dEZ9oviI6ihelU6U5SXx5pqblVOZY9gfpgR JC0JHaFs4mD1uJWf0cfJGguvQ8/KQZkUGv7/S8S8= Content-Type: text/plain; charset="utf-8" When both KASAN and SLAB_STORE_USER are enabled, accesses to struct kasan_alloc_meta fields can be misaligned on 64-bit architectures. This occurs because orig_size is currently defined as unsigned int, which only guarantees 4-byte alignment. When struct kasan_alloc_meta is placed after orig_size, it may end up at a 4-byte boundary rather than the required 8-byte boundary on 64-bit systems. Note that 64-bit architectures without HAVE_EFFICIENT_UNALIGNED_ACCESS are assumed to require 64-bit accesses to be 64-bit aligned. See HAVE_64BIT_ALIGNED_ACCESS and commit adab66b71abf ("Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS"") for more details. Change orig_size from unsigned int to unsigned long to ensure proper alignment for any subsequent metadata. This should not waste additional memory because kmalloc objects are already aligned to at least ARCH_KMALLOC_MINALIGN. Closes: https://lore.kernel.org/all/aPrLF0OUK651M4dk@hyeyoo Suggested-by: Andrey Ryabinin Cc: stable@vger.kernel.org Fixes: 6edf2576a6cc ("mm/slub: enable debugging memory wasting of kmalloc") Signed-off-by: Harry Yoo --- mm/slub.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 64d71a728d3d..2494ca8080f5 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -857,7 +857,7 @@ static inline bool slab_update_freelist(struct kmem_cac= he *s, struct slab *slab, * request size in the meta data area, for better debug and sanity check. */ static inline void set_orig_size(struct kmem_cache *s, - void *object, unsigned int orig_size) + void *object, unsigned long orig_size) { void *p =3D kasan_reset_tag(object); =20 @@ -867,10 +867,10 @@ static inline void set_orig_size(struct kmem_cache *s, p +=3D get_info_end(s); p +=3D sizeof(struct track) * 2; =20 - *(unsigned int *)p =3D orig_size; + *(unsigned long *)p =3D orig_size; } =20 -static inline unsigned int get_orig_size(struct kmem_cache *s, void *objec= t) +static inline unsigned long get_orig_size(struct kmem_cache *s, void *obje= ct) { void *p =3D kasan_reset_tag(object); =20 @@ -883,7 +883,7 @@ static inline unsigned int get_orig_size(struct kmem_ca= che *s, void *object) p +=3D get_info_end(s); p +=3D sizeof(struct track) * 2; =20 - return *(unsigned int *)p; + return *(unsigned long *)p; } =20 #ifdef CONFIG_SLUB_DEBUG @@ -1198,7 +1198,7 @@ static void print_trailer(struct kmem_cache *s, struc= t slab *slab, u8 *p) off +=3D 2 * sizeof(struct track); =20 if (slub_debug_orig_size(s)) - off +=3D sizeof(unsigned int); + off +=3D sizeof(unsigned long); =20 off +=3D kasan_metadata_size(s, false); =20 @@ -1410,7 +1410,7 @@ static int check_pad_bytes(struct kmem_cache *s, stru= ct slab *slab, u8 *p) off +=3D 2 * sizeof(struct track); =20 if (s->flags & SLAB_KMALLOC) - off +=3D sizeof(unsigned int); + off +=3D sizeof(unsigned long); } =20 off +=3D kasan_metadata_size(s, false); @@ -7961,7 +7961,7 @@ static int calculate_sizes(struct kmem_cache_args *ar= gs, struct kmem_cache *s) =20 /* Save the original kmalloc request size */ if (flags & SLAB_KMALLOC) - size +=3D sizeof(unsigned int); + size +=3D sizeof(unsigned long); } #endif =20 --=20 2.43.0 From nobody Sun Feb 8 02:56:19 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 73A3A221FBB; Tue, 13 Jan 2026 06:19:27 +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=1768285168; cv=fail; b=vBvR2G2GFr5wsmPSX8U717JCDN8r+ib399WnI+C2iy53vWcusUk/F/lDaE5Lt0Gp4L2O+VRwHjKPO75mInS6TViu90KGJ+3jxSZgzSHiwd6Uw5CDovJHfdKG3HvCk3tZLJHXQ0SOlLCwZOy/5CHFP6vkGbE+lLt9d0gkRG98dv4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285168; c=relaxed/simple; bh=l0jntxLpK1YNGONAWknYGnFZdUpfWofrZCnI1To1Oco=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=e3BxqTKEJEpmTG0MUMEmSYQL4VoLE1F5BTNQwhYUmTznoItq4bGbPvTXON14roQrVP6QtOOScHjfMkpE1cfmpES+N5AfXxbZLQfBx1xG1lyP7HjVm2CCZxVSlY6G9iUjBb8mLufOgtRl6waaGfYO80qNjM7lGnxUHJQuptBaxes= 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=fOLg1z2T; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ahp/9C7b; 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="fOLg1z2T"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ahp/9C7b" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1givL2419474; Tue, 13 Jan 2026 06:19:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=gDZjN+uiTUde6t5FthEZlzYE8wBDPol0p9XPfjzNfo8=; b= fOLg1z2Tto4wj+P+gKJ0sVY+S5DuYfKDrAcGO8BTN/kWE1EPttNL0VW273FT2ue3 hAAJBfguZj1aKBHkO7+pfC968fmbvquIeR9wQ+XWFnVG29Y6LDmR5xNuY2GctN6e EJJsfmrwbLZE25frWqKO5vkOw51JIx5edoW/ctd8qVY3zvfpW7bACtAxpbFEOUgZ P06AC550JWkVTp0mXi+ttuS2wgl1pQUvqkNb0otSvB30s6Z1K9r68RXIdI2kEkqO MrleUjL5nRy7l46/Ua4EbsUMyS9FqEzG14flquQg8+2RxHM+kDiPCT3ZvbavBybL 5kxGN203XE823Ucbq4WOnA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkre3tw8y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:04 +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 60D5gonB004186; Tue, 13 Jan 2026 06:19:03 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012064.outbound.protection.outlook.com [40.107.209.64]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd7j4d9j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DK4Cez4CNkQI/SSsd10h9JnSqRQBsllb+rMguGWJRMVnxj5+4xW1f0cyULV+jpgAfA4ADHyBbwWKHEnmjguTlkh8z6piJ7UrmwShrH6cQgwyhhWjW3f5XOsnNS+gIbnu+Qb7WWeFHyWYUXOYI+Z7LX5w0Ve3vkwIkWzzLywuZwuRMulXfT1I91fwNChE1mkH+1g9Dcd9pDtKO0n+HySYxtjh3BdmoAoY3tN44jyHzj9FmKwIeO0ChswW9diXWT9TvPKace6dqlZ+fKeFdo+O9NPUCoYOjoNj3lbVhUBhCID/hOMxQWzPOTy06+FvQaF7S1cGSu/B772Pfp4yr4qbwg== 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=gDZjN+uiTUde6t5FthEZlzYE8wBDPol0p9XPfjzNfo8=; b=Gw/VPp3pESEil00ntduldcVkOn0LkwNXweqUkKkb8763wnR95Z0GEk3QPIIV+JaOZT6bnE5N8wm3RTihF1zIO29k0nF5wD/RjIMowppJY5UAHRMftNnq/s1E0ghpj3h3SApP2kwI6jm8mZUTiQ5C5h1EurqHoFDDWPgJBxtToapEEy87IRg6c1J3wkLljV+vR+JWHAwxhMGDstba6q8Jg9GONC8d4Nhg7WU/XxXkYHEFUH10zSF7m7LHujZGnoBQXq9ScqGBkd9YP0LmjPnAejcp4HdvuPo2bQbzkF8ixzHTsQCp+TULipA+8Xc9QlLiihN/sC2EXgsWQp27xNj67Q== 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=gDZjN+uiTUde6t5FthEZlzYE8wBDPol0p9XPfjzNfo8=; b=ahp/9C7bOmq2qSUPQzNfdLMg/8+XPT35ldtfPWXZ/AH9ye7oR2RMScwFxEDbfY1Origz4cRQoBkGDoW9WRrFnJVAfmQYBaPzzgudRQGlGeLkZ/bTmTDDA/ouMcxL5hYR5XNbQJwVNmLVSVLtrvomWLkjEA5xIjcx1CXBwV/1rBU= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:00 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:18:59 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 2/9] mm/slab: allow specifying free pointer offset when using constructor Date: Tue, 13 Jan 2026 15:18:38 +0900 Message-ID: <20260113061845.159790-3-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0020.KORP216.PROD.OUTLOOK.COM (2603:1096:101:114::11) 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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ea9436c-5be6-4c60-d995-08de526ba3be X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?BD9nSWprkFK7sO7tjIU6jRVgCP+2CNBSmwIqJ77ygalQKv6KUs5PUA/krrKb?= =?us-ascii?Q?ZgKA0ZK4uMFpZSiw1Vnupuo++VjXePV/xwmUEL9nHo5vIlGPvo9dQeoDQmZH?= =?us-ascii?Q?TETUQbPC/3qkVRnxD+n8C9KC+grdEOg9AZhNOSMO0Sa6dRPoiRpq3sBjBX8C?= =?us-ascii?Q?aRHsgoY/iZmR5iawnpnP7E5kuiAJp5TZQ8SZvWWVKIlxzdwm2mYL05i6ssDM?= =?us-ascii?Q?LznucH1LbYEmWt9REXJZMdN9k394H66fsC4fhCvdkDU5tqcntBN1jYNdSehd?= =?us-ascii?Q?DKI+JMmN3+yVEoo6R8EkxXDGsFJl28SxdLJwHPokqk4NAB1bK75iikSfTyqW?= =?us-ascii?Q?H/NZtFhtuFcbqL/nfpIUpHDl3/wUiHDYpFF0VyDwys/3Q/Wyl87eAFKnmHkd?= =?us-ascii?Q?V73wndMorx9SvV8duP+2ANWYCnngxQzkUL/Nri3GrTK3k22nxJ/jrtsmaIOg?= =?us-ascii?Q?7hLOiQvm9YgUSQ53tjfQaWMiQ0odLfzH4anFU/c4qQGTdLBxEJQp4DSJJf9z?= =?us-ascii?Q?/eS9qeUvEVaF5Aj8gVI+8xlgUrIZ1RnKA1HDLZ9hlnGTjnyCzjfCwEWb6X9t?= =?us-ascii?Q?dz09xlZWbUlImr5vRR5rujjdTHr4NBJiJigftkYNB+9oXHyBuBrQP1lNBAlM?= =?us-ascii?Q?vsfZMdqLo0R+l9emPN4M9P9Lr7sw0DPz2bxuPRXfx71HLVJcrWLLB0/GdLaM?= =?us-ascii?Q?x93IisxzWC7vl9U20uULH6+DVbq7erwOLttB1w2NKAIk+mHyLi4w6dIQV4JY?= =?us-ascii?Q?S7vWhry9pjkeQN+9QXq62egq7+1mQDVtPKLRE7x/QsGP7bdBgyFc9lFShsid?= =?us-ascii?Q?bQV0HKMPC1SlYHgTHjrvIPXCK1cDD6iImbrLp33WKgqlE6RJXUVWNQYAWUGl?= =?us-ascii?Q?2XpSm0P6pk0xT2EiRBB51LG3TBtVSfJF86jyb3r35UuZTxelMWCg/Xa1Qcwp?= =?us-ascii?Q?EA3PrFrywDn+SkqsSMP08TRb5pP2zRq1kGIR7nLBWFD/19UE7fSVJayjR9YZ?= =?us-ascii?Q?cfvQFVBAqqUTWi4OmyQ1PYDHMjY17Vt1UI8b8KNiJSHeZQMC7U4+tOcr1P2O?= =?us-ascii?Q?W63ThFCmxEamKxTJtLuvb/+pL422N+dTsVVVJQ4reKACNIy3OJavYrGviRxE?= =?us-ascii?Q?5O36/2swlUXVXPp0OTjgE7i4pGOAp51pz8ER2pGrdEVXkVAcVDoJIMs+yp0y?= =?us-ascii?Q?Ef++Tnvx+pwDKTpDqcwe/MWl0ZfwqBF6QrckSYnNrlC5CErsIR73qmUPXtRt?= =?us-ascii?Q?0x9vZUt3xAoTEVj9K8c2sfeTed6czb3at7WKWXoEjQvJJd7beChLx1VLACTX?= =?us-ascii?Q?3O8GahRyrjS2QSXAwkvBbfsh5FEwx5BLj7nsilPP7+SjyWLKihxF4sRNZPRK?= =?us-ascii?Q?DEHxjp5uIcjTQgR9/mIA73cD1rLPWhSqPUPSHZs78j0+THpEte3pxbjcZ6Qa?= =?us-ascii?Q?i/JR4dhpqAXBZWd4r5d8qptY+Pu9HMfT?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BgPL9ULggHb9bQSv/miaFfYk1JlwdwcrQSJgrpuyhK9GUNw3iUgwbaSkGuZr?= =?us-ascii?Q?1zEJdQ1Z4KST5NqnpfwBwv6iqnMoVcNV1iigzEtbzvD6d+cgNZq5i0NpHJ12?= =?us-ascii?Q?Z0D2KzCUAlpLapQtgTMhX9g/wDKxpzVNcRZvkCz2Dv0QYkkOPor+rJA6qkoV?= =?us-ascii?Q?TBmK1dqFUAdXt6iQ148FGMyOKPYft1WBErABt2VS0+MZcGbZcW+22Av1Q2e6?= =?us-ascii?Q?K975WOG0lUJYTOrizexJN4SRaDJhU0zHgapNHEOcBAd2bZGmGae6jliAeljx?= =?us-ascii?Q?0CBkJOZuAPOJigAj65Rv7DQVMDFhpd4IofiA0b26nDYbvNO6c2lu1UId00Ni?= =?us-ascii?Q?vEPcisLrVmMkvLeExk0rqMxgqXG5V4CQ0GbLmtFLnQEuAHiQlBflH/RX4V/Z?= =?us-ascii?Q?CzUg10xubcNLXL3CU/U0UIe9kaxF+mC5NoW+B2TDuj2uROhwAxkZgfw5Ocsx?= =?us-ascii?Q?gEzT/KtvSm0XjUiGEO8UUEi0nklQAqwIs81U9RGFn9q3pAcqNaFRcYBHNOSh?= =?us-ascii?Q?GvL54fqOh1qad4oBZFbN5dXKH7A97pzeNKfq3c/Af+EkpDq9RjX4zpr/BwES?= =?us-ascii?Q?CjPtMlmlS0B/2MZnkJHOEsv1GN7sGqq1K3VOSBufWqGMrb943kQCvxwHHzPL?= =?us-ascii?Q?ISFgyuXZ9SJ5G5JlMpW9lnos36BeJncVWSQYIyO2696D6KhSAp2CU4tfXZWD?= =?us-ascii?Q?X9sldkjoFELVgh9Pib/eI7gE/us0/RVxwccZIiOWdnSRDQu5x99XQ//kXlmN?= =?us-ascii?Q?WxV81JAiipXEVMaXMPCWdcgJkiI5ikON1G7DiKafrjv5HF2SC6aLTufSBncd?= =?us-ascii?Q?BTPA5wSGRWKUH+Od80ASM68rJpxO6CktGygdQOKldXAg5lNLqKfzfmorzouo?= =?us-ascii?Q?JSGqvw+NHX9gbhQ7oeKyI7z7yl3K/K6lG7Gk2qvsiTdBMV1W7dV6isPBfcHl?= =?us-ascii?Q?U9sQSF06LeN8Aa7HF7/MKmxTGYLX54Dcx4yxPav7BY8rLbnGZ7vz1HtEQsk4?= =?us-ascii?Q?lIYY8UXbT1bj9+p/MQbviXjLvAknq9KQX/2SL9yvTEsmBRPN7RDQEyYaBVUx?= =?us-ascii?Q?H+Zycwp+QIoRT0Nzb8GU4Zb5jFHT+WuRMOl19Rn8kcORmaZYp0DwJxQYspdA?= =?us-ascii?Q?VGoLJK5MBDtUkTG0c8GeMadiucWtC2CGqnX8TDotKY5QclsHZhDOSqLEaWTm?= =?us-ascii?Q?ZGEdKC3lTS1MC7KatxrmfqgViOyJF+OmiJgWXKbz3gqq4dhxBPk8/TRsuRpM?= =?us-ascii?Q?g7WPcGjud7VR2TvXbqHu4MHNX4+8lW/jrooz4SfAVERQ0rFIrUdrRjrGEfmm?= =?us-ascii?Q?QjmNndwgDqow+fa622LQ75ngX8N9cy/sBQBBONlH4OFTZTKxNgXGgVivuGD3?= =?us-ascii?Q?PhAsbFxn7s6asSj978BgfNSDd4jDlow5fhVvYNdOFIteU2HRxffltWVMIf3m?= =?us-ascii?Q?0LSNomA8yE6TEdXHs5puzRKFEWwmGQAQCyAt2ifoKISo/RBEphfyUqN6VddO?= =?us-ascii?Q?9UELGTGK6INUqBI82lBH/RpRotG5TDYw0Ew5dQRMTSASzug/+3R6ZVSO80Fp?= =?us-ascii?Q?38vgFYLp0mxeUMIHRN3PJrcn+8/zBzlaovDEywKHz/76ZvwC3E0hxbWRTBcb?= =?us-ascii?Q?qA83EV7FRmNs24eGwjfBrAvswqPnLcJcUgK/vIJOZcNlGKXQK0WQBu14Q8vg?= =?us-ascii?Q?+Yfy9LLOlcOadtXFtkCnuft7Kp5HvKeHAE8yk9oRDrAmJuezgBnlEA0tbsUz?= =?us-ascii?Q?SdLDKKYPPA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: i6314HVbS+LrjLLcWYuVllfe5beFFS2mEZk6TOetwFV+BFYUZ/CsaqK3DBG4lM3SwLk9b2ioguOya7gAgAapvJ0TnwF23f2eJVbKbi9gTuOQixdmWNMroLQNaoBIBxAWzWrmZpLgy5opDlPzvXxvMaoaa/yTSHExRpMgSI8L7P584BXkYISWhxsEiXFyMj1mxREfQi5R+LImA70zpX66eMlFYHUmy7TTVirhUDHr6ruTkjO3HxVtVd0JSfy21NhALq0m04WlmYLINfn436MzDUOPPoB37I/O0ivfwx21RVw0P0eDDfkV7mQJR2d8menXoGMSH0V2vBVuT6O3kc8RTM/31DyGTw8hxn2yLn4wobiV+XGy8QoLqbLpZ5xls2DHyJ6NOS/j07ZF+RG7E4lXKcYP+hHj1TBV453WDug4lzZtPiPnUEc7z8nUcAnlwGLyC30sp+HXiJHAxayWbE0/N4sjLC/ajNZjwRu+W0JHrU5n5zZ4n9BQgItw9s5SOLshCn7s9oGEPHw9UCRVdS5Us9NCN36NCO/4rcbYMdlEgsj0OwRIBYMEIlqJd0T296lqj31eTvETZ9b4ykCjijDy1VeXutS6+W1p+QSlribJ7eM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ea9436c-5be6-4c60-d995-08de526ba3be X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:18:59.7935 (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: qJzdjU+R6UT1YVk03pwtIMedl3UcZFQkRJAJIPaDEDinTvk9cmqK9wy7ZRw9udGm3vWEMVwoJeEy1FsPU2ea6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-ORIG-GUID: 17U4KNIquTwjws_Zqy1GOA9NfuQAG8tO X-Authority-Analysis: v=2.4 cv=YKOSCBGx c=1 sm=1 tr=0 ts=6965e3d8 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=GMHoajJQQyXWUxyK3F0A:9 cc=ntf awl=host:12110 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX/WBJ2sCO28xj jGkERUd1F+i4CyGtHoODdwONeLvpPC7RpQ+2c4TkkgBrQOkg9yLvGX3pV7mYOcT3Wi7hSfgfQO4 V+wtAOyBMf45MYZjfy504A7dVOomHFQayF8x+O4hhRrwpqdV49VCmoxms8zBolS3YntIIY6yYMq wDWxQKldauU8JoiUums69q2BOT301IjQzHm6FderRjhD8l1NqVzZT7r++ztsQ1YQ6VrpxBjpWJF VpW0UhOuiuTI+5FsjyFczVOGx1Ywb29tGDx6Td1Wz+3BE1ZTdKz62nhAPIUFqs1oBzGY55cewa1 +m2fXkdT0UdxZIL50HJIOFzzzsK3OkviBVMnt37ZNThfCToxEoRo/aAvx9L24Dbwe9PyEnKs0rO +3NlwtgfqUFnvrpuiP8ac9OksgpqX/4K8gRXcgk7fc4UiflnQQJsj8Xp7JQTXamIQlem+dNUuiD FvY/meKwFNxY+o1PXKLyeC+QA43zW58h1jvqjIOg= X-Proofpoint-GUID: 17U4KNIquTwjws_Zqy1GOA9NfuQAG8tO Content-Type: text/plain; charset="utf-8" When a slab cache has a constructor, the free pointer is placed after the object because certain fields must not be overwritten even after the object is freed. However, some fields that the constructor does not initialize can safely be overwritten after free. Allow specifying the free pointer offset within the object, reducing the overall object size when some fields can be reused for the free pointer. Adjust the document accordingly. Signed-off-by: Harry Yoo --- include/linux/slab.h | 30 ++++++++++++++++-------------- mm/slab_common.c | 2 +- mm/slub.c | 6 ++++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 2482992248dc..4554c04a9bd7 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -299,24 +299,26 @@ struct kmem_cache_args { unsigned int usersize; /** * @freeptr_offset: Custom offset for the free pointer - * in &SLAB_TYPESAFE_BY_RCU caches + * in caches with &SLAB_TYPESAFE_BY_RCU or @ctor * - * By default &SLAB_TYPESAFE_BY_RCU caches place the free pointer - * outside of the object. This might cause the object to grow in size. - * Cache creators that have a reason to avoid this can specify a custom - * free pointer offset in their struct where the free pointer will be - * placed. + * By default, &SLAB_TYPESAFE_BY_RCU and @ctor caches place the free + * pointer outside of the object. This might cause the object to grow + * in size. Cache creators that have a reason to avoid this can specify + * a custom free pointer offset in their data structure where the free + * pointer will be placed. * - * Note that placing the free pointer inside the object requires the - * caller to ensure that no fields are invalidated that are required to - * guard against object recycling (See &SLAB_TYPESAFE_BY_RCU for - * details). + * For caches with &SLAB_TYPESAFE_BY_RCU, the caller must ensure that + * the free pointer does not overlay fields required to guard against + * object recycling (See &SLAB_TYPESAFE_BY_RCU for details). * - * Using %0 as a value for @freeptr_offset is valid. If @freeptr_offset - * is specified, %use_freeptr_offset must be set %true. + * For caches with @ctor, the caller must ensure that the free pointer + * does not overlay fields initialized by the constructor. + * + * Currently, only caches with &SLAB_TYPESAFE_BY_RCU or @ctor + * may specify @freeptr_offset. * - * Note that @ctor currently isn't supported with custom free pointers - * as a @ctor requires an external free pointer. + * Using %0 as a value for @freeptr_offset is valid. If @freeptr_offset + * is specified, @use_freeptr_offset must be set %true. */ unsigned int freeptr_offset; /** diff --git a/mm/slab_common.c b/mm/slab_common.c index eed7ea556cb1..c4cf9ed2ec92 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -231,7 +231,7 @@ static struct kmem_cache *create_cache(const char *name, err =3D -EINVAL; if (args->use_freeptr_offset && (args->freeptr_offset >=3D object_size || - !(flags & SLAB_TYPESAFE_BY_RCU) || + (!(flags & SLAB_TYPESAFE_BY_RCU) && !args->ctor) || !IS_ALIGNED(args->freeptr_offset, __alignof__(freeptr_t)))) goto out; =20 diff --git a/mm/slub.c b/mm/slub.c index 2494ca8080f5..5f75e0d5cf16 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -7919,7 +7919,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)))) { /* @@ -7940,7 +7941,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 02:56:19 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 3F250366571; Tue, 13 Jan 2026 06:19:29 +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=1768285170; cv=fail; b=U1ldJrZ5GXrWp4daCfoBAXrQRkLjZAdQ8Xxr9lL5t6AbJ+HpUkTQRHY4LZ+8K7T1Kvya65a6rg+1esqcuBQYRqOYlothNkTN9v9xD4BMsL8PtByxBokMPxAhrqUIwEZMyaNXXG6FxFjw0qnEItGCbvhfoGSjF1TcK0Is9facoic= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285170; c=relaxed/simple; bh=p7+IrZuqyLslZsd4t7GDsjUJVmEghmKTEmrZt5+Z26g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=P8yV56lt4P3bmMYaZLoQPErjpbyCmpV4eaYe+6LScf/73zDTZQ/M7BB1mKUg8wXSDggw4LD+fvTmWjGjbndi60vkYg2TFcV/XlFOXLiNQw6pHiiQiAib6axBCcdEiksZ5UKpYSYnLKBc8t2KVhrlGxW9LKWmwwq+fq3SDE7BGWA= 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=kYuomkkT; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=X8MiVuvc; 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="kYuomkkT"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="X8MiVuvc" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1gSui2753123; Tue, 13 Jan 2026 06:19:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=aNCMD7XTyY+Ttx/OOdUNP0BUMAL+CtGKiph4AFz2DHk=; b= kYuomkkTRl+ZfXfUfOTB9KoF5wHlOo2dssJ6QPYE/+g1kKJVayo8XCFq56ld+Sif l9UWj/piXBPuRhYgV66vYe5YyUGA8s85eMlNodKo26L7L/8YwZPj4W+vZiXTB6+/ EQH26SLt1cS8dNL9b5q+gDWAUjjRbT5SObR6V71zShxfilNPp737ewTr2Ei3ohk4 b0ntgCBFoT3aI2MVaKnm04PTrtTy1MFPXMrQ7am0Vtx+Tshk+RBLo8dp8nwAFIpr 1L+IAOMNm2A6RRs6Lr6n/83uH8eBcBJaIUdwuI4oVfqODmZYK7AkEABR5M6LGkyE e4B7+aH1r7ibfV3gFj7Dqw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkpwgjwnb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:06 +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 60D6Ivcn003899; Tue, 13 Jan 2026 06:19:06 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010054.outbound.protection.outlook.com [52.101.201.54]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd78b1ev-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sP+1FtFdfK0NMLmTOIg7BzdYtHwOnC7Q7elntjbT/UwXekSjF1kY5VKVEzEK1Ui5On4/l009xfMkT8O6Ou9JKb10/oMCnf+6HIChb+jSICb0b/uWVIqnPbA//9+AapZsiQZ3EvqLqNqfBLkSscKaKHXTEmJFAzPDT3Uh6QPHO/wSXb2PWRWwQ8AQ4xN34LRXO3EaExKarG1ZjfPbaHVSSYboNdKMyst0a0ucHXNjaTSkOOHa+FmgRtmWBxlSH5WSt7x5BkOWudIxFIyWS/ZLzcZ+Fl55w2pdOWIDue3nOlF9vYSndRN7gvhU1h/JD8y8ZZ4NG26TCQttdYE+Nr0E7g== 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=aNCMD7XTyY+Ttx/OOdUNP0BUMAL+CtGKiph4AFz2DHk=; b=MErWAu2HR2/Ba/VJnWKzu0B3OTPfDxE6VOYsvHfCdPH+Ja2vznvqzz9E5Jrnh8XouB9I+oTKXltXh2DcnYVWnaXtDY8xylgrBhINT7+jMG23QSBZpPOKpnC9OC04J9a36zHPXXHZ2Vnrk7I2lHXHGiPt13Br5bTtHs8Yf08ISWg+yfRrTg6tDaDXruQU8w1DQQOhP/hfMHurPy4wBXBfE+I/vuuMaUBG61V1oZHyWU4Jad+bYS0sdkpg9XPD8MX9aAWVcwGD+TnAGDP9NT2Sg02vFEh+nCfpwldYIQAYj7MOUqVIYcMmqrXuSba18Acdsj4dz0rthqaBnvvOKZ1Bnw== 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=aNCMD7XTyY+Ttx/OOdUNP0BUMAL+CtGKiph4AFz2DHk=; b=X8MiVuvcMRDgmieZLijKHTLH2wGzHENwmp4RRB1wgSIrzFLECElDUhL9ruvFZww6pBTkRFDdMQroczkVMHXTgMAwnfjg5/M+QcI9xqOjzZw7Y97Q8UPyunAZsKov3PBLKM2rIFZ8l72AdNK2iK2Cce34uxSADyAPIHx+ewefjak= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:03 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:03 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 3/9] ext4: specify the free pointer offset for ext4_inode_cache Date: Tue, 13 Jan 2026 15:18:39 +0900 Message-ID: <20260113061845.159790-4-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0228.KORP216.PROD.OUTLOOK.COM (2603:1096:101:18::14) 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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 49cd9cf8-3e36-49c7-e658-08de526ba5e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?9SseDM8z3naYjuMkdigRrPPT1ZcNeRm1OVWt7JWhvdx9REA2WmxlTQVIiagU?= =?us-ascii?Q?0PzC1qkgwvXny3oxDixJ4d6B4WAf5MM7UWMAxEu9IY/mmMgRcRKzQdbkkHaV?= =?us-ascii?Q?cXXj6gC/GOzmAuJqjZtRzl9Nz7PlnekCgTxD8Kuppo5OmP7BuOluno5v2wYh?= =?us-ascii?Q?Zdct8b9kGZ1PopevdY7Bqs113tX7SQnSjLQDYWi4tGXfI+gI4NbplmZuC8Vr?= =?us-ascii?Q?8O/evpbIraizmhhBPrVOwYLHz0CxX8ooEmVjXRm69bS7q/0odwLGDD5lH23s?= =?us-ascii?Q?cvSTZVTcxKY/NDAhLxQL/9i9LxqDRXD/ffvJAq5WaaIOq7rznhVgqIoZ7/HU?= =?us-ascii?Q?Vd1DFvkM6qX8o1Lz6WVYP1c1YnzwYG8f/rZVVh9gtetHzrqGFo4g28UWMm83?= =?us-ascii?Q?sLWToYdLVG9cejXU3xI/wxNaFEHjqtoxdwKNDxevA8VCJUPMeLlmKw0h6CTX?= =?us-ascii?Q?ux4bjnhTcWXj9Q6HJGBTlojKHzGYUDTi/op9hUYtYD2p/TgSaqhGs+Vwldtm?= =?us-ascii?Q?H6CeUhfcn46PkMKS0OYawNNYTD6VopLJJ6rK0AC/IOyb92O3QaaKeg/qGVd0?= =?us-ascii?Q?fVHBM+rTa386MiqneTVbtE3s0pHHQ7hDjqyOxqN5jHZmokYWBLm6YMZ9yWfg?= =?us-ascii?Q?gk1ziwqI8LeXI2NNj1UDdVTbv2TSeVAwti4YVMnwrh/LWY238EI78zCRVtmU?= =?us-ascii?Q?CWOPGCCawG6XNZa2hK++k0KFMNHfqRrIT5IBrW3l2YEcQOk7tF+h986H+CHC?= =?us-ascii?Q?OsOeZZzglHLUNhwDPHVPOd0wk3AzJg4zvX0m6JsuLS3vPbI4I/vlwXPDhPqA?= =?us-ascii?Q?vm5ZpofNJI8EcEX8qeevpZYp5qPbaetLZUV5akKj0NMzKn0JIfG+8pqqJXUc?= =?us-ascii?Q?afk0pGnNKl3CI/6sbSF+qJR9vTFwGSNKIBkYm0q3kNhweJqzGSNVDj4NoCjt?= =?us-ascii?Q?GgKMVEQ2AnS+criAlPlqF+yliGguVV35x9n19/5/zNNcUD0ACZliwB23Cwzk?= =?us-ascii?Q?J4d8b2heYHtvkiORkaEmO4LpdzDFpCIRDPgMO5wI0MCLo+1vNyZq6rAapFTO?= =?us-ascii?Q?5bQCvJYslATo7b04mAGUvLL9ygTZGCN+h7x/EcjlKFlb1PSyJPVQ98fWTNFz?= =?us-ascii?Q?fsW4J1evAA0G+DPXMYvIlC2pGoN8CzbBYtbr8EwDp/UL+EOlkifm4xLhxRqL?= =?us-ascii?Q?76qYMxr6/MEhMFUasRMaOxaPkL7fhZv0boGzn3/5nl6zxnDSV2pGPs0AwlkK?= =?us-ascii?Q?siDiIP1igvP2wClvPKK4NXxe7yLRxIPzMQVDAd2kIL0CBwSYYWDAKS9zu4bQ?= =?us-ascii?Q?DlJ+PkESRErmFmzavB18W8SqCLOK5m5mFU5tC18ZzN8vD7+YZ7gqWUs9CMse?= =?us-ascii?Q?u6IY6jZTi8qiAKlxP397rWGKh8myKDuveFrCt0S8ZVLw8vMJN4kH0sle+ACc?= =?us-ascii?Q?HFtJfYt4PI2p8e/eQtHFTfvcRSVz3BvV?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JoZ6kv3ckXJSz/CrH/TYDGDSMiCf1zlS7IZi+Sas7BcNlvdpgPTCT3xtZo6g?= =?us-ascii?Q?EEALNppecS/E7joiwjsRVNciMaj/XQoGNufbKESYR63nANZ0F/E7UleEMLVL?= =?us-ascii?Q?HragTLroLHYMOnYnppqqS8tvcUCv3Dvv/lo3HuCo0pZdBqaENnoaxxSgftp/?= =?us-ascii?Q?J5ViaKhbBzDUg1vUM175AucGzAj1x/m8RXBAlDyNj1bp07/BNb0oi9+Yl3Um?= =?us-ascii?Q?TxWfy6Qx9MkJz0YR08inIpckGXDtc9KOIoIGngz8pUGgJaJsMMp8WQlOA82I?= =?us-ascii?Q?OUNnYLUY3xa86Q+cFYfQo8OaSQ0PD7yTzDuFXIV+i2c2spZucxJfM8HRAcVZ?= =?us-ascii?Q?lcWjydfU0fCDQGT/k22HYOEfuPLbligVXFjQGBU7QNs7iMR4zOsYeLEwrs7o?= =?us-ascii?Q?tzMbmyy3fcXmVECP2h3IZYOmzuoqpLtkP/Ep9+UbsOBS6yRlYg76ieg+2vD1?= =?us-ascii?Q?BB9JcRCfdzUX0ISFA8e0jiad5QwxCspfEUlOaKq+57DrXGzPdP2LwQ91rK1c?= =?us-ascii?Q?HOManL+inLsolLCIHwVHE1851ICWdFA2tVehWIVHVgh1S+Hb+sq6tSY6UocX?= =?us-ascii?Q?7rME1mC+wiRFbAPUsbCbcjYA3FPY4D/Bf639Lg+3nzu60oOtKaYGYZ9D/7cB?= =?us-ascii?Q?qp5yI3tn8+FkFXA0MdvIt+nuxpqP5RF0CZ4HsM4nIkKpQ2HbU1nxUDSPyPot?= =?us-ascii?Q?bbaqdBIw7VHxgbMi3Kl8PvLraIgw8Mnpd57tIbmjYiSPTQXtKXki/3ro3niU?= =?us-ascii?Q?zcIRvmIwBHXMMcW2OUy+BTnrhp1A6fcvj/6yW2hd15aDmba4miyVbVYPqNRl?= =?us-ascii?Q?RntGg50TPBwkWoPN4GIlXP7rI5iPNv3r5cg4DoXpCgKnx33cnI+x34xyLkM7?= =?us-ascii?Q?6PCuO01Wjl1vlJcoyrYc7yZf9emfnPK8yHf8hxIlDHA6pkhpZmQC3VUTNiTR?= =?us-ascii?Q?A/q1xjYmfYr6BYsq3MViE5I569cbWjnwX9LpJuidHQys9v8/4Tvyr5amEe6L?= =?us-ascii?Q?gbo36eKmg/6Te81q7DquXKGVFI+CPlzvKOaqDzdYuiC0xUXF7Zft0a/aX4Ab?= =?us-ascii?Q?FrYNchbYBKIAkp3yAVrDUsB3V1YwUFKlZ3bubGhUrhLjOU3s6dooN/3espLd?= =?us-ascii?Q?cwxR7pc6biDao6EhEcoYn2g/vgbNwr6bjipa2pxABFePXCkIfkwUYLwuwP53?= =?us-ascii?Q?I8UpQR+Nw5DIklZ/FJc5DxcxIgfN5MYIHwP8J9iHqiDzhX41lH07AGu2lz+U?= =?us-ascii?Q?jNyI3kz8mOpya0STTpuQ6kW9b/OnuAnrGtkXP6ICo02ECLWIr2yIDhfQe8sf?= =?us-ascii?Q?y5fizDHUvbdy9sO8Z+hQ8XWjUNEBQ5BLTG8OGJiIJebvy/w3rNEQrS88NhQk?= =?us-ascii?Q?ymoRzer5SmV3suT1zLjG5jbaWZYh809G5RxmhdwPo497LOsTXlso1lj9kAaD?= =?us-ascii?Q?PVtnsw08DTg4B2kMUUKVAHLpt390b9dvfP2OzGOAVLiL7SUQfiYFjcDc+AEF?= =?us-ascii?Q?tkfXg7LE3XOKItkTm0fkbgwAnEnmtFeqrbarwCX+RSG0BnEemQAt4MKhKhYD?= =?us-ascii?Q?Xf5+4CNqSK4czdMm4MRN7T/HTn5oxws00KjmWBLLptUZOangbSMwNfG8JzWp?= =?us-ascii?Q?jO5tAAo10dbW8jx4uMH11lJEkACmOWY87tcG9A3rTtZZG9hoOi2cO8lPU7l8?= =?us-ascii?Q?e2NbvwLfEDkwRwI4eSSgGFvKH9Nn4+zfr8WXSi8FnqRIabCbjmSNVI/KEZxT?= =?us-ascii?Q?Bz5xzckhHQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qV97jCMP05XWv6RPF4OFMzQiiPi+DWhqlhS3S2WimMxRMvCyoA2ghUl/3rrPU+9uHRhap5Jb233q2XtHLIuWN0NtwwsthttbHVXqbbPJCQbEV3ICNRO8YfCxsdHpNJnpsYmnyx0uG/gQPpEqPMxhb5T3ng2R8GFKrlS324lnu0q09T4LCRYrkslpNs+QkHqli4hveU0ynmEKjaO5v5UqRz4INa2le/CD+NY1V+f0008/RjLRSpmC0xdCkg8j1xdHExndgTSGQTglt08RPVbYPNrwbIOc7eU7ptgOoTvmotPVSQ8kiV1x/eOP1hx6OLVXDidwodxPnBT7ZOynDI6uwk0WS9SNwAN7bZl0wtfS4pRlMZH6tHEsGxs4jMogAXMU7YoyUpQa04Bl4G+ix4Y+cJKG68ybRMRyyZaOaTIVxlFvdjsIjTFrBxgXXB/1H5jgwowsrDr7Kmxee3BoMygxz5+LK6FCEWSxl5e5VMGlZvzNKGgJFGWdexp75qJIktX9QsOoWkYpNJy37t60VH1x4G/x6I1dXw6O9P+gXjMhbQfQBBECl4LMvoeKnnxt5C5VUbHnd0TFJD0/5AmjwcGcABjuy1jFSSpjmPOJiVeh+Y0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49cd9cf8-3e36-49c7-e658-08de526ba5e8 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:03.4260 (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: L9t3sICjm8KWESDdUvngUBQVYlF/motf9aq9lBYm4r2OOQdx+V6ae88gEbXVCXAXcmmZ8rpUohZSIbcLNgE8CQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-GUID: 4aZDj83vmfeDJZTrtogyiU6_e1umrXqT X-Proofpoint-ORIG-GUID: 4aZDj83vmfeDJZTrtogyiU6_e1umrXqT X-Authority-Analysis: v=2.4 cv=ZtLg6t7G c=1 sm=1 tr=0 ts=6965e3da 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=LnKeQQhI64-Y42c24gcA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX0ZxFgOix5guZ VGuj6NSY4oL0rSVtomY6nFCds6NnAEWKmenYeQX3c9naQ+QwxqcpeQVbRgDoydOm54f1CurW4/D EOqWSI7iBasFDFm0WCL/3ahxJ3ebpPwgvhqLf8Aoicz8JWU01Y3mLZP3nmW7ym61NB3FrEGShP0 egTniPgu9gNrPYAfI2hIbE+bfIa8oVLkQxlqFgk7bipWQl03OenQOeO+GX7NihvyZ3sCBrJ9PG8 CVIVM6lJW8kHqLN4nnH2aMq1YzrjccGH/ExDgd5PDvIJAcCNwT2BR5APFXKnrj6+0UY4FZ2vyQf qVoeyDVsdoGPvrPVg4MeEcQ9obzbAROPZtpve3SwVEzu2HZB35iOPtqifJHibodOiKOZPSMbRp1 +us/AEV6aY78uI19r5qLkreVjfkmp9s3pmukib9sz9TI4jEGu9Mg5FCzBvmEkXjmx9swtsdKcmb mf+KsM694eOFWEuHbnw== 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 prevent 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 | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 87205660c5d0..6f1c2c497871 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1491,12 +1491,19 @@ 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 { + .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 02:56:19 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 12418369235; Tue, 13 Jan 2026 06:19: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=1768285173; cv=fail; b=R1Eaw0X+yQuE/1kqiTIV57DSA9ZO846swmrwwGEJt50QMcqxGLdPcGqLiALzp0joE2SvXDuFeYw/+iU2Mx43NSkgvms7ubRl2dR/hX7ZUJnqJP3CxG1YqGWTbaWP3IqUlXE9lvntp49rQ2LWuLF9jkuSbrH5q4+2SCbJhhbr90w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285173; c=relaxed/simple; bh=9t+o8Fyj1lPxoWKZns1U2v1bKGkIedWQ0wVNXrnNLog=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Uxv6h+vCg6H9ww1fIDS7PV6AGi+uZpcyGr2TlHXy7b/brAmzni3n9pkweOoW57RF2ySnXKNRx4lWqgSC1ZOi3Ez4OhzXilA8O6NZ4W0zvI2yZF/45pIL+CM1c7YWWgpArBn55oH3GzSI5pGIWvLGfKWjR7R1j++H9jq4kUlYyEQ= 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=CagtPfzW; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=nD5d8SHa; 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="CagtPfzW"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="nD5d8SHa" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1gnSW2753576; Tue, 13 Jan 2026 06:19:10 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=nepYa/RVhpXFvZLEq40H3RuVXY9WRn5aouYwCmE7dto=; b= CagtPfzWx8/dcx+in4Sk5CLrjPAGJETTUqMLTAZJ13Ql6Ce2sfDisYUz2d7rUpZZ AiweAVzHQM2gs4gES1LE3GOtuc+8rqWwbt8toHg3xh1eWUGqpeSxYGsJ9/0yR/lI 5pPds5HfMqru/liY+tU+YiVGjtMdflmzLs2cEh9+Y+7h2kXQwnP2hjJOetRfAfHp LRkJ6SoRYvWsfKs/fwcpH6lpb9EIMjNPI+wGXOKS0zoCdahoWsdV7hR1HbOeO+NN PQZCr6a+s8ZCVMh93WMlyU3rJGT3YjlJ+MOYMczS39N3UwfjKqN0s8B2Ew1o/X8S vd5XdEiGduHUjO5dwB/uSw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkpwgjwne-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60D6EbRr005686; Tue, 13 Jan 2026 06:19:09 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012034.outbound.protection.outlook.com [40.107.209.34]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd783shb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Vj4m4U8zrvHqLTIElhToMtAXZu39jP8xaxeJhkMLTQZ7Z2mmXLlg6sguSpGV9Ek1+4Yo0kzVErlsa1UoUGpMZ76pkBJC0R4QfxA/qETRbimxFF/33bGQF8f5jR1EptZz8MU9XBycFbiL+b7g+N80yfk/3XGC+ZVn5Ckp9mupaFL9sg9+PykLRsJ40Pa8lvZJcOyCYpjY8tAs4l3tMp25IbQndT99B5DS4abbX5OLnM9OZpLcUpbygZAfx9+WR8bMd77uiNdCyTmyebLeXWTZyDs6gwgymHoOUtqwtGWmmgUnnEQQmMI9G4yh1CGVKJiceasIF24XxA2eun9UbDc3bg== 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=nepYa/RVhpXFvZLEq40H3RuVXY9WRn5aouYwCmE7dto=; b=Y3PrkQW7+09pscY8hpbKubbJ11nd28vz1mZSfQJlPEFSx+sm7mdHgjtlO6N32EVyZqJKaVXkERVDAjI+1U6WjoUk+R3KLJ2nBc9QYPPlqHQGFz7ERTfnWn9pLLfiZ0m2FO2YA/4U0n14v3cQ/yydzediR7GpeDEOqVs4OkhAzpSv6/LbYzQMzo6XLXNJaIKVrQF15RlQA3JgVHUGfwELk1JZfXxMnGHxI0kP/GnNRfTZnu+nK/9lq8mGvZteN7jfbgmrbT0SzV39H1jAMrrnIwjsoofuMSGb631ckCdjR75OwWC/6+dxecBEzabPG/gA+9gR4tphnwnDRrfLCppbbA== 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=nepYa/RVhpXFvZLEq40H3RuVXY9WRn5aouYwCmE7dto=; b=nD5d8SHaYkp+ATyPZ+JmB7rOMzEcp57E/B72dBnINRmustUkAfo5xUMkOAB6dR+aO2EX1lHGd0jfbsK2rdmrRYE/ArUDy40EhQmoB2a9XWU6n6nHDKgkrEYIslzf+u+Mf1swCxrhYdqy6YUSvGTOFmTXdDJNK56oACHRl8BOA4c= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:07 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:07 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 4/9] mm/slab: abstract slabobj_ext access via new slab_obj_ext() helper Date: Tue, 13 Jan 2026 15:18:40 +0900 Message-ID: <20260113061845.159790-5-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2PR03CA0011.apcprd03.prod.outlook.com (2603:1096:100:55::23) 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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: b8be667e-827e-4772-8e85-08de526ba813 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s+Ui6MK4w49uSp6JrTYujfaZBBJx1nH764JuixnMea7IIirArkHZ4u11NN6Z?= =?us-ascii?Q?Ea4T6FMZKVCVLxa8+6s9pZ3wIew1HDLesbBO7uT3u5ERKZVFFuLyN5yMHJR+?= =?us-ascii?Q?C5mEsDHB+Zl4vrgwjHJz4Tj/QIeVbAp2dN3JmcmxyC+lbrK3VfLkHi5lctLG?= =?us-ascii?Q?KcR2+r5BpRO7GL/qO8guW/gjC+iONMR4Ex2K+V1sOvGSInBGmqcrJ+Y0LPM2?= =?us-ascii?Q?/hB5y03HKvKK7BW1oIOnnofXAOmnb8sGNVE15n0zWdArwA/RZ/OvYG2A49t6?= =?us-ascii?Q?JyRj33QWQnV7qGvVtvDfOxY0D6YW8dfBK53kNbldhiP2Eyna3Ln0qHrOwDIa?= =?us-ascii?Q?I5+iBxkaF/gtFT/YxRqzgIchtUT8QazIZvNPrqU09QZ5fzBK/MGXxxjseX8M?= =?us-ascii?Q?rLHaKIvue0yJy5nYN2ofoy1vJx/TTWLZKKG6si3ibUj8o19AW+MP5uHLiLWf?= =?us-ascii?Q?LnlddAN45BNlIvqqUe+8BEkQiVu6A8/IkoSVKOaZ7TvfO2E5WQclGCm8eEjF?= =?us-ascii?Q?Bf9AWKXanLU+mu+758H2BtAWGDlHoL6okVmZtZgqoyzmpyz5MnFkFD2BmaGV?= =?us-ascii?Q?vFTqHtYkvmeidKZGnlmQiKmVpY2+49KtZE06mcbWc3NCdWVmZksJoPwrMGdL?= =?us-ascii?Q?hkKFXZDg1+ZDBiAvrVQ/HzkW9AqcqKXna8pxPPTUHFn5/ONsMcXL7KFuO2vs?= =?us-ascii?Q?SqrDHge6aP+IRuKAWtw/slfg3JjO7sIVgWZVYT15LjSW6+HBc9Y37n7nrwDm?= =?us-ascii?Q?pTlISo9DPDzQ6MwvhEXbUWVwlvgg8EsSt/9Z+2b/syPe48H81TzMUiE/02Gc?= =?us-ascii?Q?2ek9msoP0qXwrjbqf5OJ1fSSkYR/B+BrN6VEfueDLkoGzhQySPhIGNcuAHtY?= =?us-ascii?Q?LEubSg9KkSYpAwrDAxuN3sWDZPsIuiz3BbhEsJi/3FbLM/FuULArz238rHjs?= =?us-ascii?Q?n7SS7M3INvGyrPTIE4U/Do2HtV2gRnSwXOM2bO6yk6q9wC8i0967AHanzr2f?= =?us-ascii?Q?/GMhe5HLzoEwdWiXNji8m5t7EbMXfUkqO48CGS1ymyoD2W7n/DhAkT8KiHJp?= =?us-ascii?Q?s2wFIcVHogDYSHYFfqISJDdOpiEPoeJXT1WGce0IbRLCA3Tyg4H7Fp0SwaPi?= =?us-ascii?Q?PPJRccmLqbYGS6GaLc4i3yXpj+/ZzU1piRM6SetrCNo5dM9g8PcDvk64cdGB?= =?us-ascii?Q?/3leLwe/uwFPzAGumOXqPnOPBJ4NiabCQZTxXQORWbUa/+3WmaQWE283NxqP?= =?us-ascii?Q?Vficr9JhnOpjbrhznetCtEIUIm4YT909YQQMkTCk1NxHYjsHYlrIdzYxFQ73?= =?us-ascii?Q?AT4359pqhF/ZA786/U2qr1bDc66PO38EsYF78xYH5IkERRu5eF619IrOHM07?= =?us-ascii?Q?KdBACVwZIZ4QRGmYUDD0j+pzfpYf0CKv7XIQDr0u8RBqxi17S6wq2Ug3ma6F?= =?us-ascii?Q?kZQXxx/KLY5LmAbd9FoV+3yr4OKmz19S?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?90sj1KnkW7qnqkdhzuyJIC794MxQJp+skB3wl57eIbflveTDhKyzfbLTM2Ap?= =?us-ascii?Q?Wh07O/T2cswopMZu7oaSc0kkXvFUfBI/ZuKb0CGirJbtlPYLAiOOIuOvWPxZ?= =?us-ascii?Q?kc8tpBOFllTeTI1F8VQj010QG4GG1qFe0g7Srx2PXPzPNq9REa6xjlqOtRsK?= =?us-ascii?Q?pTiZE9lFmTwH9O62AVTxSIUmUsSPjFa/4TBQnxfkMWP1xZs+EqMoTRoxah04?= =?us-ascii?Q?r26tRXcUUqPlhuK1eCdikEyxKHj+2SNvRFZMyyUHXucI8EjCKLbnhvuPdgLN?= =?us-ascii?Q?dznFbeWRwGxCAkQbh0jcBTHQRU7SjilwIZex4aTrrQSSiiKJuh60wp2TL7mm?= =?us-ascii?Q?oxJ3u2rxheVzJGRwcurh3sWw2Er/d3OgfkmNMmhRuYU9j8D61dEx9iXrPBcp?= =?us-ascii?Q?z4cxaJTqbGeOt9r+3P0qRMFsmDgLLv8PAV9CS1pLnQoCvySJTu9m4LLo9MRW?= =?us-ascii?Q?EdGY8Qc7hjwzGkBxyW9rmb7I6XOfNdlIOSuCmABJ3QQVve7qEw9Ns6SXilLS?= =?us-ascii?Q?YGPnvyuL/fVhX29E4wB38RSzaxlPMssTVQfUBUqCdGeRquVKro+XH8KoQ0WD?= =?us-ascii?Q?jY2XmVjrqQIclaGlcg1tutavOotLMm3KKeXf17oBRRISUavdrM7xeFi4Vgbq?= =?us-ascii?Q?TsvMyHAIs3dDNidvWDblo4kIxOAoQ/6wyGjhNtsoO3n2mIgatmutNjk8zB6K?= =?us-ascii?Q?y8MtGnOWTWD0DNHBFC+B+xjsC5eqV1JXFcxJqtUxTF8trd3QPFaKtMvKosj9?= =?us-ascii?Q?YyWKQS3r/d16ekgOSKmnxMUbCnmVm8k/IjN3m5snujDi4otUd6ACRrUlBcys?= =?us-ascii?Q?ya59TCHOBj2VXEpUhiZWdRe/dkmhXlUhX9VIuiYdb50TWqAmCZAOJzA2Y03w?= =?us-ascii?Q?7qIIly/Uh1MoJV0hZUL8GbM5tmHTVnfmWYcPLq+g1DgNKBLdx9XpRnhyKddg?= =?us-ascii?Q?IwiYaC0KfoxUFbmsa0n7fcXcgpdDgkmSvJukMlWayr2XPHSIXAdHbM3XNlmN?= =?us-ascii?Q?n4bwJNInzVjTsfFKPCyp4CIu7hZ2uF3l3LsOK9CaTRuEtUVQW6wZBybKF98Z?= =?us-ascii?Q?W8B+0W5ZmPLbDFp5hV2Y8odYNv9PPFmpcuK0eVetEyB/xS1uxjsJ5yKGdR2z?= =?us-ascii?Q?aUxe88ifG0YximhHlK3urKykOgmsE4+e6FZDDZFxa96FJzMgb2A4AgGT+3CL?= =?us-ascii?Q?LlFXDjFouC49aYAM/X4E/Acl3VyyOpd7uaqHiLNjz5fu9EHru1OdUgeFF3C6?= =?us-ascii?Q?aU0lVVSR1WPhyIQVo7jyKKTKrI9zm8p+vZOVBZziq+i1AGQR5kiuGnyOkxVG?= =?us-ascii?Q?+99wZSR+7Kvv/kacUui2lK9iHL9RjCSTIRToub+3GXPs+REcMqApe3lmoqKl?= =?us-ascii?Q?KsXBbbX1pbAdqwzfImkJuiinzuJSsoujxMWPMgM/E501efBW0kAHUG8Uka/w?= =?us-ascii?Q?2eNR4o4qdWtD/QHR0teW6u2h9ioVsXQUCT4hE4+kRoVonHRgNDYyYLedyOWA?= =?us-ascii?Q?eu87y+azqMQ2nH6V0G3rVedZrGgFTP8zpwvQ57JybACRQL42v7YRtbQCRrcI?= =?us-ascii?Q?1nAUmSMoZdpCY8jeAZathXOjDiXC8cbz/qfkZFfu29ALoc0dPdyn7Np4bfwa?= =?us-ascii?Q?erTGnDMG1Ud3I+aGZxPnpZGJfNDWgTZ1BE/rdlk1dvKAmi24CV+y9FnBSzo3?= =?us-ascii?Q?/TMHZUzi6wYACJFlVNiEgOXg2CWKGs4gqChzmncREutFsSkiQjhWZxsKJ23J?= =?us-ascii?Q?98fvQDFZQw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: oBMaLw5ZVxRuUTEEoat9ZziLCEXhIVa2zrHfMfLciredMmZQldL2DYVL585QIJhDZkWTmnDWhpgyNHk/zip3X/1D5loRWsdHafXE3e2WAz8kmURXVSV9wLXo2iUSxoX7Q4bJ37wYIUGIA/uu9wUSZ0RhefCvSW4bBMnjHBkCEHzM0UYzufm0CK4jK5mxKVh26J9OqUN9aGqzMoTlEINu2NnNtKg8ZuL0MtWwawW+wZTWGMtcEnapBRdVFb4cv8ZF5LZQ1hMG1VrbsTtNcZdh2tIquTf0iXfJJGGztS2DyR86QLkYl1B71Zxmhez+HZBcwUf5hTyUtQP3mkbXw6lHfkJhBZRsYHyNXQRhF5hgQ2jdRojA/yHcu4Pog+I0PZaOv4jKgFUo5QAgUUb2MMUF4c4StNh+2IZLrP3qBMU3qeKBZ7Wd3Kksv0KpaY93764P4oNtsUcOHnv3KqQ4HZG3mTJoLSS+14mNDYXx48c3ZIck2OXY8z7idcu9pWHMiTk6/EAorBgf3CIOEN3mD21jODKoyqen7Z1cowzbbQ4uYVSkH0+FG3CuzM1xMouU4V38ORX0bOejwFyeU01Hu1fP6IVbBmlNGEPsaejgyUBuoMo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8be667e-827e-4772-8e85-08de526ba813 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:07.0632 (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: LhsvXNYgSvydXNKEsX5H4ESx2ARO9AMUVYr/L2j6UU7g7Uthm4P78c82xj5EdZ58PDG+g6zVc/HpVovlqQb//Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 mlxscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-GUID: RkV0KfRqG6a5kyejQEoOCC9KhTZjVx6G X-Proofpoint-ORIG-GUID: RkV0KfRqG6a5kyejQEoOCC9KhTZjVx6G X-Authority-Analysis: v=2.4 cv=ZtLg6t7G c=1 sm=1 tr=0 ts=6965e3de cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=ZR5oq3Xs8z6_6OyQXH4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX+dgdsrCcvTC3 afkAczwEgrrYpxmzSBiDXwlkq+YwqyouR4yCM242kELiIkuUFz+8TpuLUcjl8Rd7qCuNNlmx0Ue tNj820hDthE190f5G5HRJ+PIeWpohH8m2c6GXtd+SLVxDmnJ6+Iq0utDbD6tB9pBYIsGbq8OR7C yTQAi/xefASUqrbFhz2teni4Cm4h72Ra0c+R+KWZT8/LVGCx3Xm7JBkypLKSt89SvcNv40E1jV6 BloBU28bLHIdzpWe/5gLRoZlNdJdvI1IDE//P+OS9qfDIR/fisGJp/wOI5w9KfHNrsAaEj/bBVY 2EYIHhEhdk/ZKV0G5B1p0cSYD7Qk/iDFcK3pueUU+7JVImfZYf84ULE5JcgonN5x7UQUUF2Pz57 8JXhMeFeTgOYWFyKiQWaW9/YnckZfQR8+P8s10ZSu4GK43oyY5iYc6G+A6fRn23GfSnPPxnHQMy 0bbNnMXnq+mNZJcuL2g== 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 | 45 ++++++++++++++++++++++++++------------------- 3 files changed, 79 insertions(+), 32 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index be810c1fbfc3..fd9105a953b0 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2596,7 +2596,8 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct sl= ab *slab, void *p) * Memcg membership data for each individual object is saved in * slab->obj_exts. */ - struct slabobj_ext *obj_exts; + unsigned long obj_exts; + struct slabobj_ext *obj_ext; unsigned int off; =20 obj_exts =3D slab_obj_exts(slab); @@ -2604,8 +2605,9 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct sl= ab *slab, void *p) return NULL; =20 off =3D obj_to_index(slab->slab_cache, slab, p); - if (obj_exts[off].objcg) - return obj_cgroup_memcg(obj_exts[off].objcg); + obj_ext =3D slab_obj_ext(slab, obj_exts, off); + if (obj_ext->objcg) + return obj_cgroup_memcg(obj_ext->objcg); =20 return NULL; } @@ -3191,6 +3193,9 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache *= s, struct list_lru *lru, } =20 for (i =3D 0; i < size; i++) { + unsigned long obj_exts; + struct slabobj_ext *obj_ext; + slab =3D virt_to_slab(p[i]); =20 if (!slab_obj_exts(slab) && @@ -3213,29 +3218,33 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache= *s, struct list_lru *lru, slab_pgdat(slab), cache_vmstat_idx(s))) return false; =20 + obj_exts =3D slab_obj_exts(slab); off =3D obj_to_index(s, slab, p[i]); + obj_ext =3D slab_obj_ext(slab, obj_exts, off); obj_cgroup_get(objcg); - slab_obj_exts(slab)[off].objcg =3D objcg; + obj_ext->objcg =3D objcg; } =20 return true; } =20 void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, - void **p, int objects, struct slabobj_ext *obj_exts) + void **p, int objects, unsigned long obj_exts) { size_t obj_size =3D obj_full_size(s); =20 for (int i =3D 0; i < objects; i++) { struct obj_cgroup *objcg; + struct slabobj_ext *obj_ext; unsigned int off; =20 off =3D obj_to_index(s, slab, p[i]); - objcg =3D obj_exts[off].objcg; + obj_ext =3D slab_obj_ext(slab, obj_exts, off); + objcg =3D obj_ext->objcg; if (!objcg) continue; =20 - obj_exts[off].objcg =3D NULL; + obj_ext->objcg =3D NULL; refill_obj_stock(objcg, obj_size, true, -obj_size, slab_pgdat(slab), cache_vmstat_idx(s)); obj_cgroup_put(objcg); diff --git a/mm/slab.h b/mm/slab.h index e767aa7e91b0..dd23d861a8d1 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -509,10 +509,12 @@ static inline bool slab_in_kunit_test(void) { return = false; } * associated with a slab. * @slab: a pointer to the slab struct * - * Returns a pointer to the object extension vector associated with the sl= ab, - * or NULL if no such vector has been associated yet. + * Returns the address of the object extension vector associated with the = slab, + * or zero if no such vector has been associated yet. + * Do not dereference the return value directly; use slab_obj_ext() to acc= ess + * its elements. */ -static inline struct slabobj_ext *slab_obj_exts(struct slab *slab) +static inline unsigned long slab_obj_exts(struct slab *slab) { unsigned long obj_exts =3D READ_ONCE(slab->obj_exts); =20 @@ -525,7 +527,29 @@ 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(obj_exts !=3D slab_obj_exts(slab)); + + obj_ext =3D (struct slabobj_ext *)obj_exts; + return &obj_ext[index]; } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, @@ -533,7 +557,14 @@ 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 0; +} + +static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, + unsigned long obj_exts, + unsigned int index) { return NULL; } @@ -550,7 +581,7 @@ static inline enum node_stat_item cache_vmstat_idx(stru= ct kmem_cache *s) bool __memcg_slab_post_alloc_hook(struct kmem_cache *s, struct list_lru *l= ru, gfp_t flags, size_t size, void **p); void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, - void **p, int objects, struct slabobj_ext *obj_exts); + void **p, int objects, unsigned long obj_exts); #endif =20 void kvfree_rcu_cb(struct rcu_head *head); diff --git a/mm/slub.c b/mm/slub.c index 5f75e0d5cf16..7c855b84e9e2 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2058,7 +2058,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); @@ -2066,13 +2066,15 @@ static inline void mark_objexts_empty(struct slabob= j_ext *obj_exts) if (slab_exts) { unsigned int offs =3D obj_to_index(obj_exts_slab->slab_cache, obj_exts_slab, obj_exts); + struct slabobj_ext *ext =3D slab_obj_ext(obj_exts_slab, + slab_exts, offs); =20 - if (unlikely(is_codetag_empty(&slab_exts[offs].ref))) + if (unlikely(is_codetag_empty(ext->ref))) return; =20 /* codetag should be NULL here */ - WARN_ON(slab_exts[offs].ref.ct); - set_codetag_empty(&slab_exts[offs].ref); + WARN_ON(ext->ref.ct); + set_codetag_empty(&ext->ref); } } =20 @@ -2194,7 +2196,7 @@ static inline void free_slab_obj_exts(struct slab *sl= ab) { struct slabobj_ext *obj_exts; =20 - obj_exts =3D slab_obj_exts(slab); + obj_exts =3D (struct slabobj_ext *)slab_obj_exts(slab); if (!obj_exts) { /* * If obj_exts allocation failed, slab->obj_exts is set to @@ -2241,26 +2243,29 @@ static inline void free_slab_obj_exts(struct slab *= slab) #ifdef CONFIG_MEM_ALLOC_PROFILING =20 static inline struct slabobj_ext * -prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p) +prepare_slab_obj_ext_hook(struct kmem_cache *s, gfp_t flags, void *p) { struct slab *slab; + unsigned long obj_exts; =20 slab =3D virt_to_slab(p); - if (!slab_obj_exts(slab) && + obj_exts =3D slab_obj_exts(slab); + if (!obj_exts && alloc_slab_obj_exts(slab, s, flags, false)) { pr_warn_once("%s, %s: Failed to create slab extension vector!\n", __func__, s->name); return NULL; } =20 - return slab_obj_exts(slab) + obj_to_index(s, slab, p); + obj_exts =3D slab_obj_exts(slab); + return slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, p)); } =20 /* Should be called only if mem_alloc_profiling_enabled() */ static noinline void __alloc_tagging_slab_alloc_hook(struct kmem_cache *s, void *object, gfp_t = flags) { - struct slabobj_ext *obj_exts; + struct slabobj_ext *obj_ext; =20 if (!object) return; @@ -2271,14 +2276,14 @@ __alloc_tagging_slab_alloc_hook(struct kmem_cache *= s, void *object, gfp_t flags) if (flags & __GFP_NO_OBJ_EXT) return; =20 - obj_exts =3D prepare_slab_obj_exts_hook(s, flags, object); + obj_ext =3D prepare_slab_obj_ext_hook(s, flags, object); /* * Currently obj_exts is used only for allocation profiling. * If other users appear then mem_alloc_profiling_enabled() * check should be added before alloc_tag_add(). */ - if (likely(obj_exts)) - alloc_tag_add(&obj_exts->ref, current->alloc_tag, s->size); + if (likely(obj_ext)) + alloc_tag_add(&obj_ext->ref, current->alloc_tag, s->size); else alloc_tag_set_inaccurate(current->alloc_tag); } @@ -2295,8 +2300,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)) @@ -2309,7 +2314,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 @@ -2368,7 +2373,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; @@ -2383,7 +2388,8 @@ void memcg_slab_free_hook(struct kmem_cache *s, struc= t slab *slab, void **p, static __fastpath_inline bool memcg_slab_post_charge(void *p, gfp_t flags) { - struct slabobj_ext *slab_exts; + unsigned long obj_exts; + struct slabobj_ext *obj_ext; struct kmem_cache *s; struct page *page; struct slab *slab; @@ -2424,10 +2430,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 02:56:19 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 05C6C368292; Tue, 13 Jan 2026 06:19:38 +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=1768285185; cv=fail; b=VgQ5rVCQLWqYw2qaiqrBZyxwWX/EhKcTyKrip21WRn7t7UhRwQHLiMFW8oNvYBb5fj1EKy8wyCfmej9QVL2gteK4EMDS3bGEyOEEiKEn2UuOOIPOtROyFsX+qX8qjkZ+r1Er7kujdYkxr8VrHh0U4AJlbPxhwHGRbiD/e9jIENU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285185; c=relaxed/simple; bh=yuZ72/wMU1h+J/kNso4mVYb3q99qzq2iSHjqQ49K0+4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OtcUSnfG6ENYXkE625LuB5ya4WpZ24xjpfjdJ2JjmiKi2TiHG2/naFgYzpDHVVE9YV4gHSncf+K298bnzxlE+gODcIYu4J35NTWjrnExeqM8hSgSBwi4xeE9zg7FDQuBnu6UDyOD1yXPRGnxmUwXz9A1PCGYucYaiyJJKoLvDhE= 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=EqbG+z0P; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Jp8x7r9Q; 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="EqbG+z0P"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Jp8x7r9Q" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1gbdm2419350; Tue, 13 Jan 2026 06:19:16 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=0TQLgZ+xdU0Gd8si5tXHeI0rI5RRDjri3WTn3+981yo=; b= EqbG+z0P6+pd3BS0vuwC1o9LC03yaSfoIhglEik7BeIXgXSV/OUh4sHNa+yqTcUR qFOf7nMN1e/FA1rpZdZ7O5zvqQa5rDrJYXZjxaURXVYe+RmtuqCRfTaTKv/8EmVw cW/6m331mQ/FGYNl4YNApedtVVYMpX0ukjLtkxokbXW7z3DcZHCi4IvFcTuFOYV+ NBpxjbeqNVrD+ZS8qWMC7ZTp+FkQV9rnOYR48HtymXnJhZHBmFR/2wILzjXkkAdl AaCU4VHRcmXhYUtcN3ryFi2MmitgPUYXKLTw6Es5sgOKtXpR0gLqTsvzEOGo4Kf0 C56r8R55wJqXRdTGKTk4gA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkre3tw98-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:15 +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 60D4q0BW004104; Tue, 13 Jan 2026 06:19:14 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012048.outbound.protection.outlook.com [40.107.209.48]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd7j4dgp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xA2Q0gbrvgDJLDCcWpDKOFjzThYp2yYGYrmDWI5k03mHoz5vk8VmdfkUsxj0FqGjt0+BiwlkDPhgugdrsCzwt+LcCgBFGnuNsRT4cx/AYE92ZC3zECHZGFjrMzF1TAjS9GdMJDWuDuIJnsFQhDj0RFTEVhOOVI81ZnH038Nrq0HFDoyQmPYnE1/ctQhWGZY10TBxPujL+iIfM6zX2aCaXoqO7zl5GQBIfg2BS/Me9EjFxVL2a88JNc0Ew11yK7JG6Bvcs4FT/KOQDXMl4ZwDqWNefxLCkQYUv5u4B5SGpJNfx2Mqxc7T5G7b23quj+oWuSDepshwF1tJjTKQoUOFJA== 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=0TQLgZ+xdU0Gd8si5tXHeI0rI5RRDjri3WTn3+981yo=; b=qhr1xIi7gGjibQDSV7JvucwvU6NYG8LfbWyQRNQUVBFtM5NIxpBNbB1fvEvZoTNofIkQ7Ma7vH8udDHVrPA3+cEWah2b983PRVkjs1+Cs5wsi0EVMgulOclbV3G5iVUg3q2xLV1d1+nEhlKa4IifOKfQdhT9a+4gBYuBPEhMynHySmQPiN2EA+nnxLI/LBYC5tCg44lwYN7E+t5xLTvB3VDLZ3twxV5oAcYJUMZmmKKRzyTvcmge3BvCvWmxKnCmr1OQFPZ4sWEI0bl7z2tAAamAZ8VkQR6n/ghj6AkybuZF4mLLFUmGeAETDfrO9tZgbjfhJYwdayp1wRwWsEhHzQ== 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=0TQLgZ+xdU0Gd8si5tXHeI0rI5RRDjri3WTn3+981yo=; b=Jp8x7r9Q8MZU0/DtloGhNmqXLoRdhDNoixFnOXWQD+caq5e1KhM497VaMF7SkoEc2qwHNc/ZYR0vsBY39x1ZNkh8vub5SR9lZUFBGq4nmxjYG2g+WQ8Ixg9101pPj1LDDLJnD+VlOvXo8hMvFqi0VswCmUU1UA8PaUTMxz+w6qI= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:11 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:11 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 5/9] mm/slab: use stride to access slabobj_ext Date: Tue, 13 Jan 2026 15:18:41 +0900 Message-ID: <20260113061845.159790-6-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2PR03CA0002.apcprd03.prod.outlook.com (2603:1096:100:55::14) 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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 73b7d43f-2831-4cdd-bce4-08de526baa8a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?wFwSgiQ95iKp7wVfyxmJnYDuc7284hFrXahjXJC+quYs0nBnWIlFeNULw77Q?= =?us-ascii?Q?bINwTI5fzrgoAnG8GiCdcCwOlg4xXzWu4Uk6LBVh7qGLNA8k8MuPC+lEDS9e?= =?us-ascii?Q?oqz0DmHB+E42Ej+GOAV+XYu6NaI+fBHG8+7KS978/wRgJrEJCPFIkP7WOulj?= =?us-ascii?Q?ofgTv0qCd04tF81fesy82GmDq6aeIKjdJF6cl+Y11JnWTzrPGNJSogfa31uH?= =?us-ascii?Q?vuv/f874KJPimu0F9szuo/Nj5ULGdNXkDGCBZdcLzyYCq+sYRhiv0srh8CvG?= =?us-ascii?Q?3avS3ECT+plB93FrPe/MkjMD0HiLwnRnw6a7DrNpcNxNB8QDqI10iVxBzoCR?= =?us-ascii?Q?Ouw7jVLd07iD8h35C1TlamHRayS3P3vq90eCJtruxe3UcvCaifSs0RmgrmSw?= =?us-ascii?Q?SEOzXMAeqtkRX/9O7oVrlWXQ7wWELUp0nh04tV6CWiUKhM9DALcT2/ckl77A?= =?us-ascii?Q?6YOKDgfb1k2ZIDPUO3W4kjtF6sxYmVZypxekZ6bEPDvAgrBrkVMm1G8IEL/Z?= =?us-ascii?Q?TIoxMBdaUIQJnuBWuVkqLHYTvKAz/roUCnDEYT17ewSeHwAbW0L5Ce19ubEm?= =?us-ascii?Q?2YovbteGsacbDnRJ7aWdbYZmCeil3LLI4DJxAWivKjEWUq+PdAItiuH7EgKA?= =?us-ascii?Q?t+RCeaUU+BssP7WChYdiWTpeiAKldYdI21+4BTWCaKV7WwTbs6d2gLg2RqWU?= =?us-ascii?Q?FvMGxgFF1SQcrRKbFotZwLS+BO7fEJij/V+pzgaa+34wPIaGFT1rEWeLVBew?= =?us-ascii?Q?zVvkPxK/XH4GP+OdLapWM8JCxYhJNoK6qZ66dFUtNtfvWS1sa2zu0MEFx9yR?= =?us-ascii?Q?s4+V+EMTLTJs949g97HWVwKbwCrXjgYuEOZbDgoany7wNC9LpAuMvGPzaaYL?= =?us-ascii?Q?sqQZ4tNLOumv/US/qm4E97b2DzW4yeMgFSsU6oAQkSJVPnN5EdrRX464AZNa?= =?us-ascii?Q?wUuCaIYnpTsoz9M5ckhrajOGzlURnfx41jscIGDEOP9v8dbfpXtsloT7Gmt0?= =?us-ascii?Q?M+qndzDaCD1wj09iVFD48yXu6JJtavOp6J6sAHZPm/tAEyykqUVbSseQOFKO?= =?us-ascii?Q?N8bwyCOeMQhQzHZQcTDwxb8m5CAx9iFxxLZJjI/qdCmGmnk/YkigPkNYlgKJ?= =?us-ascii?Q?dqzLgnH+sXGtYL/HSXZBeR7w3kbDAgm9KL9JpvQU9039KOaSEM1Kcf3ft95U?= =?us-ascii?Q?HolJIZF1NjbK/G3rOx07XAewUUHYUxNPbeZzarMoQii0EYbqpx0gipgBwp22?= =?us-ascii?Q?QVneKNonPshYPeXCjjK3sFW16JJrx1q3IrOT25A9Kk8BXWOhirJFwmW0FIGV?= =?us-ascii?Q?rm6M+GRbCEA/eHbHQGUz/PakHTnQBYfRFknh/q3yzTeDDujFysbe8E4Ribee?= =?us-ascii?Q?OzWFJvYyXQo6WV9Exrwolk0CJtPlt+4OyOjJrks+xG5GbiflkBjwLQtFnlt5?= =?us-ascii?Q?EqbkV2YCc544rZnIEWJQKoD6xnOceOzB?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?56EhyyNp9oMiDcXjB7f4Q+m666gyHON/lYzmz8qCcmMxvrj6+7sOW35f/AyI?= =?us-ascii?Q?PdNYlhzOVBn3fDnb624TqCjL4H/55Ez8fhkbHfobg3bEOtyYFYJ0wAHiBfkD?= =?us-ascii?Q?n3XzkqmNLSBQ4CIXgI8vWkTPN4N3kIY2Kijqbf62VblAs7r3LW/ctvQjkw8F?= =?us-ascii?Q?PyivrN8U9L6r751vfJ4oN1aUHCcfYoEp7P06WEjfVUDJYwMQSbfp02Oth2vF?= =?us-ascii?Q?IvnCqlHCVbEuJ+dy+mb0D7rxUOdtD7NT7jvI+JlDf0ze1nhtqYUXir3vMyST?= =?us-ascii?Q?Ec8kEN/+WoYlvNz706lU6eRiACW8OLvK9hGeesdGU6qhIcqlZFKiqHUS7ty7?= =?us-ascii?Q?8yKTYzal2WuNkDMVgXFxEIAb9UsY7RL87+zFI8H4piDZLyehRhUbPGA1PeQN?= =?us-ascii?Q?BtmRAYnj2kw8CJAUcQb5z4rM3CAGHZzse4JGGmsqwNRHHWK+RMKfsMa+Wgti?= =?us-ascii?Q?+Gn02alSzncIYRXxK3XUfwpRu2GP6dYDU6SgJm4HVP2GLfBrLOTE0K6CwPfl?= =?us-ascii?Q?jXGu8aIcM1XeU8YX/kpbkZVw1tADKx3Nnlg6c3J+bVl8c/Rjx+lwY5Z9TYdM?= =?us-ascii?Q?LXKqR44sFLm6qcVCWjC8suW8NOy65ScNdkoKKQR+hnxItLVLF2iXCKjAQMQo?= =?us-ascii?Q?SQJuDcXpOr0Qg4NcRZX5uswD1WXPbQ1QfHO4OxItFtHj5+PtP44ELkPq3m1j?= =?us-ascii?Q?LjOkVkpbuYzCq2xNo6DAMT0sCPrIKjsvQjAZpm3FfqV7YnOjonWx5wAhIJQL?= =?us-ascii?Q?EHuT1+Czp110omfgX2+2Lssre5QgwGWD9vsbDLNiv1SnsjvKVz9WpfbBjxE1?= =?us-ascii?Q?npGfkVfoyxiK5JUrqOuC9oP7o5XF3XGgrmyAWlHffj2yr58OanpAQy6YNzU2?= =?us-ascii?Q?2YhuWn14gIZ27l9fVnDrv6hhcwfqMta9YA1WfM+HDo4eNlF8HHUn1iZXZMJE?= =?us-ascii?Q?BKx88oN3KB0ZpTdYWo1hV5TM+cR3Nl/gxdvYM5V2IVENg/Mzw7YbZZU/8OZs?= =?us-ascii?Q?ZIxlVtDlfGdXNLxgkf0xgCOXVV8KlPyqLPWpf8z5Em4wUBhhckcN9Xx/Qt8g?= =?us-ascii?Q?+Q/BPANFmXs2QChCCtnmQewrLtIX0NE/Pwy27oVK8EdJ0S5mrcX9j0xE8FBF?= =?us-ascii?Q?UD0nA03TiGhWNV26I14uckmHiowdq9nSjZwBQRchHRfTT45mC70InBF2rzpY?= =?us-ascii?Q?Hepi8DBGs9LuyWBItZCemPyiL/gadaB5FGvy2pPcFgVba02fqmJGxNjF8kgj?= =?us-ascii?Q?+rIO/vBRMAlYDTGL/Y9D3Y/+BZGWbko+sT+iVZPVZZbMV61rmkqMPSkNW2T1?= =?us-ascii?Q?kwifNrY5xRmKXHiEeE4wa09u9KpzUBC3Y6Iv9QaIdbQWSdZ8Xike8v3BgR2l?= =?us-ascii?Q?JH2XB8gSIFNNbHZ6pr/O2a2ihIzT1sVJnb6k6WvuzpsYUMFuccS1WVUOTffy?= =?us-ascii?Q?ttUuwwKZ0nLvVMC9y2B47UUlAIVj4+UoHmpSPQ7A5RRlJyvKvm55AVpM7WZg?= =?us-ascii?Q?OYy36gXGFgSsLR43jIE56Cpo1B084HqZk5Hw84dNCIx+KViIQrUW2CpXWqlT?= =?us-ascii?Q?DQWMHYGSI8y/SRPaywUnywWBcelU7r6cCQApcn1f9NIaL/B00kbE7h5VIk/J?= =?us-ascii?Q?5UXsxPxg8X0tFpaOlC2yfw1InxOhEXUfRklahfQbp5ynxJd4I+uNSulxQDzM?= =?us-ascii?Q?274dAZ+zHHEMJoxwLNoGdAojUr7zhxFf7b96+WJKkAp5+LZH4IKPyhcCul3Z?= =?us-ascii?Q?vBbOceFrsA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: W/6ceEszC3O9aMDmbd3kitvtkuZ+K3WwdB9xe9v494tR5EZH9gVKO5bp8Kql6bTZgmPyPiJQTzZInLnidRFUFgFP0U+Ir2KBoR2yB4zAbEii59m1K6z5YhtTKJP4HTnGTP4Tx6k8dKCWpxlyGh64ckWWLWLYItCFGsEyxbv8HvySIxgL3lHBzSSri0AFwXeEKgVYLTfBH8SFuk88TNljtpw/YX4HWCq41gJF8oBPmMyx5RRt2WDgQANDleakIR0hcKQ8SP8j5wNHlacnCPhEAVpFD4KeoUSmUOylT+7wkILJUAR9lfCUvtw3ET0iYC2o3BqNdVgILXV6ccPZFkbNoBgJ/5vrcSV+b+G848OXovnQL7qN4a0Rox9oBQtQTkHg4jJFph/kYclcLvSX+1PicIi04d0X61+4o4yCYuLOdIxP37bbHaimuUYvU278ZQ0eLwPThfVkowE/2931MkKBEIPMLifymeoaZtp8ON9Nzamr5iIRMJ2dbYpfR0lZy7sHJdnt4Gdx0GFa9w69PEajVuN9pMb5rLg+oHxEi2NI1k2sshzd4J9bj9o8eQmxyhRRTGks7DKx4BynMam6w6GYL7soM8RYYmfRrkCR5nQ/Kvo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73b7d43f-2831-4cdd-bce4-08de526baa8a X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:11.0403 (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: /DL+wcBeWr69RHYxuHeNXtX5C5VU2b2hE7Ijkj7pz6xU1yrWh2icmN6upcGLPeIZqe7XtXwdPqbkwnI0mUAteA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-ORIG-GUID: aQ6TfCPEYSj0SUKIVOQ2G2y0dWlgdvYG X-Authority-Analysis: v=2.4 cv=YKOSCBGx c=1 sm=1 tr=0 ts=6965e3e3 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=UZPuyEf3i8-D8iXyNNYA:9 cc=ntf awl=host:12110 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX8jZc++bDtx7U nMQM3htKe6PmvWfsCNqGbTVt3iZzKxUMrC5+EKFZwba7jgRcrJxqL2tfJtUBufNrMc2COzMoxFM SWR9ThvE7B1oDf9R6crxA3AKLnnQd8InaUhKiJWs1Ul+UcRqBQuPQJErVKUjf/E7Gjd9zV9L3u6 G+0+BbjrxilekBqoA0pObCumeVirmBp0fTCtxERklkoisaYwt9GHi+m6Jb2ckRVToMo/nhj861x rY9zCaFQ8nxxf5ieRQC6PViiwMJOUMMNu7VPGF5EBotUoztWhP+95SYuEagkByu5k0tUBjHKcmm oIe9WWCbOw+GkmcHm+lU7f55CPNDEfMLbObQ1vdnt91u8sJ51zSCHk7XrV0RG4FjjWKy3rd0e1S 0XXguRpoa4p0PoKs1fdzEYme5Ofrlz+cF9imP1gLmOwPGGBwtir7J9bN2bQhxED2QIHTIoWmu1z CxxycWXQOqPb6nvsotfyMoO50JE6Po56eM7/yQD0= X-Proofpoint-GUID: aQ6TfCPEYSj0SUKIVOQ2G2y0dWlgdvYG Content-Type: text/plain; charset="utf-8" Use a configurable stride value when accessing slab object extension metadata instead of assuming a fixed sizeof(struct slabobj_ext). Store stride value in free bits of slab->counters field. This allows for flexibility in cases where the extension is embedded within slab objects. Since these free bits exist only on 64-bit, any future optimizations that need to change stride value cannot be enabled on 32-bit architectures. Suggested-by: Vlastimil Babka Reviewed-by: Suren Baghdasaryan Signed-off-by: Harry Yoo --- mm/slab.h | 37 +++++++++++++++++++++++++++++++++---- mm/slub.c | 2 ++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/mm/slab.h b/mm/slab.h index dd23d861a8d1..ab7b3e386fbb 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -55,6 +55,14 @@ struct freelist_counters { * that the slab was corrupted */ unsigned frozen:1; +#ifdef CONFIG_64BIT + /* + * Some optimizations use free bits in 'counters' field + * to save memory. In case ->stride field is not available, + * such optimizations are disabled. + */ + unsigned short stride; +#endif }; }; }; @@ -531,6 +539,26 @@ static inline unsigned long slab_obj_exts(struct slab = *slab) return obj_exts & ~OBJEXTS_FLAGS_MASK; } =20 +#ifdef CONFIG_64BIT +static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) +{ + slab->stride =3D stride; +} +static inline unsigned short slab_get_stride(struct slab *slab) +{ + return slab->stride; +} +#else +static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) +{ + VM_WARN_ON_ONCE(stride !=3D sizeof(struct slabobj_ext)); +} +static inline unsigned short slab_get_stride(struct slab *slab) +{ + return sizeof(struct slabobj_ext); +} +#endif + /* * slab_obj_ext - get the pointer to the slab object extension metadata * associated with an object in a slab. @@ -544,12 +572,9 @@ 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(obj_exts !=3D slab_obj_exts(slab)); =20 - obj_ext =3D (struct slabobj_ext *)obj_exts; - return &obj_ext[index]; + return (struct slabobj_ext *)(obj_exts + slab_get_stride(slab) * index); } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, @@ -569,6 +594,10 @@ static inline struct slabobj_ext *slab_obj_ext(struct = slab *slab, return NULL; } =20 +static inline void slab_set_stride(struct slab *slab, unsigned int stride)= { } +static inline unsigned int slab_get_stride(struct slab *slab) { return 0; } + + #endif /* CONFIG_SLAB_OBJ_EXT */ =20 static inline enum node_stat_item cache_vmstat_idx(struct kmem_cache *s) diff --git a/mm/slub.c b/mm/slub.c index 7c855b84e9e2..41c541381627 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2163,6 +2163,8 @@ int alloc_slab_obj_exts(struct slab *slab, struct kme= m_cache *s, retry: old_exts =3D READ_ONCE(slab->obj_exts); handle_failed_objexts_alloc(old_exts, vec, objects); + slab_set_stride(slab, sizeof(struct slabobj_ext)); + if (new_slab) { /* * If the slab is brand new and nobody can yet access its --=20 2.43.0 From nobody Sun Feb 8 02:56:19 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 05BE7221FBB; Tue, 13 Jan 2026 06:19:38 +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=1768285187; cv=fail; b=UNrxPGGdqpwLgEv4tVdAAu0mYx9SvMIQsmnIZ1a+xT2g4cL/4UCml89c3jN9KB/9ooK19KhYYYMeY2Q8W1WWD8LKKAgw/3nmDzmEj/+G+guNC/VfCNeqDjTTJu9EXAFVyHVv1iYFgbd7lqBS3iv1k63fyR3zHLD7qEgLe+MQ5MQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285187; c=relaxed/simple; bh=sOONH03p/UGkiOpm7AP1MaU3wo/yixryQfg5IdPLQ54=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=g1VT2r7Y568jqx8CC9w03D2VQHm7f+YBv8YvBFjVUH7xpcsnlgmD02bcd95eMPUuFdExf1Xsaj8jLYAaY2rqrcXvSTza6XbhSYCyMtl3O40Q05UDi4lJEuIkLMWEJF7mnTb+X57+7qFlpdYHS52jfMZODAPg749nYkhA8ZiRpl4= 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=TSdyeJTq; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=fBpQirW+; 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="TSdyeJTq"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="fBpQirW+" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1h8O22420224; Tue, 13 Jan 2026 06:19:18 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=5PyV/eXNEuZviwCoCIAPLtnnrprGUCkq5WD1RXfup2w=; b= TSdyeJTqa7Erz3qVp226BVfDWsy9Y7gUHtgg8OSJb8FIyczVZn8odHT+HpngUOt4 WZvQ/8svd/+ehuwl+g90SNJ0abzlnXGQP1mfh19CTAT7mr3EQwZ0Uzo445S1iYMg 7Gte7gbOLy2Jnun4f7OnTxCzLam8LghzcJrgOhK2ybgv4J2dUocGscBfQcsLt0NA 9k7z7bxWTbm67yk04JTTojP3LOeKEGcLJCa4Y6CDctQOOa+/Sbo/UJKvRBjmnt7s blT87K26US2+RyDf/m0kDAWD6uTQ+7pkrzAv0gK158ZoKzQX4sqaDWkwjZvnjM+c ODpGV1+Td1tlihemFArCrA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkre3tw99-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:17 +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 60D67DKF004570; Tue, 13 Jan 2026 06:19:17 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012001.outbound.protection.outlook.com [40.107.209.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd78b1m2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MZ8Nfp9Mx5S/u4Kk3FiNNDfCcTogHReqYG/Gj4ajRrBl/sLnJlDwbLZuZOdoTnBNjGtdMLk0h7d6s2IFkOmWd4/e68fO8qjhrC2RhNg6FBCHNvXl7gMqEFQLWUzFGC0Xc3zfltWFanS34EMCEAKsjP8vbr1hh+KW7Lr6w65lAUfQiQUYoPpR2nKPFY81nt4cNK2Y4Wmg7eF+Td237tCkfL+AJMx9lJCD/pegRpUc9dulAIZLVaAT5HdhhXs9c+NS8wrxXYR+PgR9aOnieoTrO6B/Xa8BupLegJinKqqm+P94OJUGTjnkQh7Gu4ribq30qKY0hXS9R2I2AbP9t3p5LA== 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=5PyV/eXNEuZviwCoCIAPLtnnrprGUCkq5WD1RXfup2w=; b=MmqykWLlEAYifpEJnwiY7aknKjFRdp33mXPfXjXioow2YyPBNG5wJrJN0tMZC8mG3Yzd4xrinpg507rV/UzQ3cSf0Y4cd5Ja9hoU9qqVvegcNgAwqJE9s5y79X4Qg+H+2AiU2oTYy/HEk/Jd8dlXi0LuJG+jqEBt9JhCcXoDZmOcge7EGDrWRgQl/kkHhJxzqxkjuWNX6TWmGfaHD5I+3LzScopcgBWDaln76dINdhdZy0jUVtHVUIPcYkb/eIZ2yDaa1hfVti2Li3BJtA3VQnXK+Wl8o4HRQEfRvaOHIZKQEdN9SVVTtN++NW+mOTj7aEXpVJTywOY3ycHQcakojQ== 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=5PyV/eXNEuZviwCoCIAPLtnnrprGUCkq5WD1RXfup2w=; b=fBpQirW+qcfpSu1gG+ogJ6OIb7cLNKdzq109F9Dc2qSlIeeXTwaQgxUh8t3chMZC7Pn4tc+erqCiMx2EZBJeG4IzPY5mJH2JMXBaDtQyvOzObHWHAH+Vi36R34YfLe5FlIhSpAPjuNSSbQPWW2Hu1HlZgXD0+SC0AHJ+xLduTBE= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:14 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:14 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 6/9] mm/memcontrol,alloc_tag: handle slabobj_ext access under KASAN poison Date: Tue, 13 Jan 2026 15:18:42 +0900 Message-ID: <20260113061845.159790-7-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0203.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c3::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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 32d63e94-3ae0-4f63-c670-08de526bac82 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NzMcQoWd1RDqr9Q+SYJK5DQrFAagONSEFg1DvhY81hhrWj6T1xT7iOTx/97r?= =?us-ascii?Q?2Yp9WkJ1h6jmlIchH7Ubf2lLWZprnvhiZ5Pz4u8uCvf2LIkCA6EsOSZoD4tW?= =?us-ascii?Q?FwwHpCyQwv6Niy4fGoIuvop50/cu9IuhJ8aCP2XPocvwKU0atx6zpZwbDax5?= =?us-ascii?Q?yb2rfQr/WESLhVTOPA7xy8VbnoSvvZ2gxDw0ICs9ptDsCRZpwLjbPJZI7gpH?= =?us-ascii?Q?4LVfqaCnTIqcBvMxuVz4/T08LnPEIe/mBf19R1GDnHhlsg39HkeRBTRslPTQ?= =?us-ascii?Q?By+guCEqSizWrsolG7cmmZiV6xZVFW9XLldeRPBOFPZGwf5xUMHU15nOQgTl?= =?us-ascii?Q?apALeOcrig/Bnxk7nzpkW3D+t38evKZTmXlzOLeIQLjRI7WsIFNN77ABDrs+?= =?us-ascii?Q?7NkhJ3hCFm9v/fEtpdwoHEPvXuJHCeDIelAcLEEFhOXJuumSqYq+CRZ04kd8?= =?us-ascii?Q?gWxxcAo3dhpWepg5xnC3ZEXgBi/NwCnLsm9k2gHsYiCUqSSoJ4EmV/mQePPK?= =?us-ascii?Q?/7dB12vFvYr33HLUMxvKYCrCU8ZVeCbHeWuNhsy61VjFPdFZwC39zVO5hVpA?= =?us-ascii?Q?RvF3UwAXkLOPAOQrRkR28HqL3+Em4dRiITfm126WC52mvIL+wVFMMNV8dT67?= =?us-ascii?Q?0rkRRy2fdfOIoC6OyeTtbvZ0QillBnYKXPipqC6Vz3j0UpD3SGT60O+rdqeM?= =?us-ascii?Q?WORCySajmFx69URUiknZxsHsFANpX3TrLCdErfsnocU9hYVrfobI+ovnE2Ev?= =?us-ascii?Q?2zYgrK5ok283MheUGYe21fMYi5ZHH+8JsvSteJGgVJIV00E2//ageYRtiCgU?= =?us-ascii?Q?SA5S6ab36Sy1b7hEQx4B61xCxK+QRCxvyAOGf35mqjZtRK6iACu5CDuH53Qg?= =?us-ascii?Q?hSM1YF3ezwVC8yypWh0fzYyfA6eCr9D9UY8G92NhduJxgmuG456Ph1or2/9F?= =?us-ascii?Q?RJM8AKIEDah8kcZvDpfKmV+NlFPqJcAaYsZobtAoPiOHg1Y/oBAjsXAYu4jb?= =?us-ascii?Q?jNakucFHOmm2dHD7l1iFUJc3zEqXko1FlyY+p1EkJrh2fmbR8GpQKJiLt5t4?= =?us-ascii?Q?fW0SmDv52rk9nEadCVO2alCuRAjliHddVCCiRYBv+uiCVJSCVA/LQW5zZDIX?= =?us-ascii?Q?rXJMqbiwvIBH0j3QCxj6mIs0F4Q+T7e0ADy1b3xjPBYsGyIAg9n7GvlZoNsn?= =?us-ascii?Q?uF7FnPrDGgMrhvgiZDH9MF8hTv+/p9UtDOqfAEQgDqaLuaDFSeWUki76gEFD?= =?us-ascii?Q?RJsEvve/bWx6MitluJfXaULfMlup85/NSGtq2T4tAUSCxV0NA4hDuQ7LAsbI?= =?us-ascii?Q?YH+1wkQTMpVC+NzHwE9+lpbezIBpnMZQ/vbENlAyDu454tkLmUmU6Rte0IRo?= =?us-ascii?Q?muEZfrVuRh4aH3rUVVKn2bkRn/1l3BGfGh1mIYI9Q3KRThNlQPnQpCHxbhz0?= =?us-ascii?Q?Djbs1Uj8NXKmr2g7seu5QCqEwZq2984eIQzl2+dZbQfD7gT5XfjuRQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7xD3luccOl+FJ5TKS7Bzijg8G6kF4F7DlLkhql9vI7RlfKGWXZManrJTuejC?= =?us-ascii?Q?/tqPTE7qoe+fRV7j+SJDco80mH5ar6XCR9QyiOlfR4tRV108G6AJpVP//j8G?= =?us-ascii?Q?T9+ADHd47ht32AaxZTYPuLKnYnRqLDbFAITd2qCIlbS2WDbvxLJBMxKkzHEM?= =?us-ascii?Q?qX48WcsBPfz8SWeHHt/cIlZZ0Y8FNGjy2KkQfULrLWtUKjn0tGW9LcyzwqJB?= =?us-ascii?Q?KofiSUKD9F2tbLQef6iDyHvJHb2XFyPhyZI1Nm6VdDcVu/Yml3XPQzrDJb2F?= =?us-ascii?Q?VPElV/oiUGC2o3qHvvEsA3JZg3eTOPS5dtCXckk2516SrNyVITa/m0OMlVMV?= =?us-ascii?Q?2iOH+I/3xrXvFCaUS9bTx5xRV/BBnwYAYX87TIzwCeUn4onzeo3lcZj0Ygg6?= =?us-ascii?Q?1/ySL57qcYNsEWmvICoMDAKiLhVEVCAM1ZOdwgIJrwC9Her3q7mZfcHLIstV?= =?us-ascii?Q?swxA9A2d3b/g7P4LvfJaHIakTYCe0eytYIcsvA/E/255+krQjGL8KKdzLQlG?= =?us-ascii?Q?7DGeuIB8Oofj92hgzJ3KNdurBV8CxVWUT+RBmXJ8hRKCXHMKvPgI5Zzji/yj?= =?us-ascii?Q?tkMZPNRXbXdO8vn6gLsZaVbv02xN9tS7wYuiVXXzo/jgnbCUU2NjWfrRvMT9?= =?us-ascii?Q?ZEF6OHBNjjI6P2qTS4XU6kCsMwid5+IUSZQfwvrUkWz7ms3JJKGHdYj4ZqCW?= =?us-ascii?Q?XtD+/rgNYuKE4ocRwGlFQqFJzjr/72joUO3U5R8WfuTLZQgEpT8qDGePansJ?= =?us-ascii?Q?x+Ht298pezWMn9TXSpNCfz2DY46T2XCBnisF+d9d+sCNQNQMWL5dKFK4nxpP?= =?us-ascii?Q?XvIfgPOJDlJAVa0u2U+a5l0YNwAaGDtAaPG0pkNsEzs8oxr7aBx1eDq0IToM?= =?us-ascii?Q?78MNY16dIcWbqbgpRLDLAtCrxWoqVzRmLt1VHivvin03p6Twd8ziGdyHETo3?= =?us-ascii?Q?QWKjeT94SiEEZKJ5sQYp7LiLK+YMZAdg9QwhoYEo8Sfc2wWcXZCIPELzB492?= =?us-ascii?Q?TlDdjrcffJslUsddhqPog9uFN8J71CFImV+0l3zK4Q8j36JNOqBqXBF1UUNm?= =?us-ascii?Q?v8Lnx56JRgG9vgRgPiDG+qG5capjy5AUfJbOqtR95GBzhISxPGgw7BDoAq9Z?= =?us-ascii?Q?E8jr4+WN3dLFhIBe2HGV1aFOzpiyOP9gWHy83gjoqZ9jC71YZAsx3gsSD+X3?= =?us-ascii?Q?EpnsrdpaoTh65Z0lxueq6C9J1wmMvDy1LB6VXRd+DFgWAwaCTCGqXlnPbWkc?= =?us-ascii?Q?rMwD8R6eOBXfM8c7SA9MI3K+xzCfNg7RORZbJnESaZtpjbz/hxCMFHTgtGfe?= =?us-ascii?Q?rwfHAr1WKpzK5vxAkkaDULmV1DUIOqZmZTwYOV6hV8v5MnSKqOrglbQlEmjY?= =?us-ascii?Q?S/ADa+JMbN+E4znuztunJ1ZaOPnyVDW+l9Xlqt2LqZX7VhjXokydCmB9XkcR?= =?us-ascii?Q?ccqE2tT+8oooUdBkpLZ51m3UiG9A8z/PX+dh3L2dCJBW/xPMnq0htafK8MpA?= =?us-ascii?Q?emxrY7+Ky0/0Bu/6MdpJMrMZpP5Ow7TBHywU0VmTXZs8J52aBh1QATkxaMNk?= =?us-ascii?Q?O7K4a9za12hdN01Bx/gFfSCRE0hY7LPrOQU51xQYFauBeqP4P5Am6fM3ukGG?= =?us-ascii?Q?hnSnEFrR0TGQIQtw8NwSKnju65zSilkSdQHjjetrRDyb5J9q8uw8Ph5POqRu?= =?us-ascii?Q?+UgvXQEoElSgfVqqwUYZdX1Vp2pwoJ1UM9X9z525vL8kUdOi8jB99yUVvea5?= =?us-ascii?Q?i7ORG1fk8Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: VeLECKEchphXtluNKao80ZQQV+rRjX6ShnLsmjlqj5C2SraF583DXgE1ZVCyq+0yZePjMW1Ay/Tdtq9fGZm5t8utPwwj+in1VIIk2eg9qNc3bWDdQth0JaU9DTe5Y5fTa5fms1bSSsw8oQGD44LKnMCXUm2gg9pF+PzlyPAAuX/i0LBVwnvVSDOqFmzSY4WgnxrHbVdihdFo2gykdW/bdmpfetZjDhACFCscvmIsq3QUqqKmRE2yjrIIvZp8/vNa0P8hb+zYRJbu3bqJHBpXwkmy0owYVPObfhee//XrTNGhu2cJqycCwQQtETTo+2waRj4FC0DmzUXF0bSLSM1eUGC+VUnkao7GT+Eek1BhSEq75SSmmU93df8nU4olLr8TuBvTf2y1Cgvw2ZbgzSkHybxMUxohGy2x9AaPqBQ87rs9Tsr34HAJN4Vv7OW6y03DVUAC2p+0fwTIrD+p5zqdb4JJi8g20qSsGFfoGiQ5WTRsN8HAv+qXc04EDU24rSGmWEDmD8bFplXrHOpYFitsiQvq4nYlqnAXdalgZzd1635Tgz3WjMQQpMeKp6U2kQ4ZQj/egvx3dsKfp0sjKAYFQK2UdOlyNYX1sYT8NmSeFiM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32d63e94-3ae0-4f63-c670-08de526bac82 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:14.5177 (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: zjyh/jyq7+cYEps/MlcFqSVHmTq5MfyyOWC5tmKe7bE1uojoFgjEPmEtu2dO3n9TMiieTe7FHfkHE8rD+CB50A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-ORIG-GUID: EWa9P8Tny7-Y78ZJzNkVcddkryCrFmMb X-Authority-Analysis: v=2.4 cv=YKOSCBGx c=1 sm=1 tr=0 ts=6965e3e5 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=4y3Wp0Wu7Q92bxCIkH4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfXwEAvVmb+dqRb aWRAX1KrQmhRByW+webYiftrbUfysZZE01n7zYHn9Am7fP0r5k4JknM1UFTnSACALyCxUcPMxAY OtqQz/5bGK8N5cWU5NsObqr+fxBeKvIkEM53oz7naO5N/yR5rEWu7LesgOrY5W4q/2jBxFHGvkn 8dESvvNKpQLQcFGeTLtmq9x6fuxQ7veMrXahe27PXG8C4TGK0PI06XoRVPV2VbpOAeo5vBhtMNt j1uCnCK6gEgpjCJ3wnuCsF5RN03izJ2JeR2ZuyZHU1LbBlO0D2oWeGo19TvFmw4pQToHRdvQARU hIEQU61yJ4oebs/do7SWyarwzYhou17Bm1aa1PCGvXTk/YhubANAKRgLOTQoQyfnZ632++osOO7 DZMecXhSbD1VhgzR6IXHmRV8P6HIJLxdkDN3NHQ7dCrNBu56UeSaH80DCRiSB2TocV+NMbePVS7 O/w9NY8SAzjDcvrZdJw== X-Proofpoint-GUID: EWa9P8Tny7-Y78ZJzNkVcddkryCrFmMb Content-Type: text/plain; charset="utf-8" In the near future, slabobj_ext may reside outside the allocated slab object range within a slab, which could be reported as an out-of-bounds access by KASAN. As suggested by Andrey Konovalov [1], explicitly disable KASAN and KMSAN checks when accessing slabobj_ext within slab allocator, memory profiling, and memory cgroup code. While an alternative approach could be to unpoison slabobj_ext, out-of-bounds accesses outside the slab allocator are generally more common. Move metadata_access_enable()/disable() helpers to mm/slab.h so that it can be used outside mm/slub.c. However, as suggested by Suren Baghdasaryan [2], instead of calling them directly from mm code (which is more prone to errors), change users to access slabobj_ext via get/put APIs: - Users should call get_slab_obj_exts() to access slabobj_metadata and call put_slab_obj_exts() when it's done. - From now on, accessing it outside the section covered by get_slab_obj_exts() ~ put_slab_obj_exts() is illegal. This ensures that accesses to slabobj_ext metadata won't be reported as access violations. Call kasan_reset_tag() in slab_obj_ext() before returning the address to prevent SW or HW tag-based KASAN from reporting false positives. Suggested-by: Andrey Konovalov Suggested-by: Suren Baghdasaryan Link: https://lore.kernel.org/linux-mm/CA+fCnZezoWn40BaS3cgmCeLwjT+5AndzcQL= c=3DwH3BjMCu6_YCw@mail.gmail.com [1] Link: https://lore.kernel.org/linux-mm/CAJuCfpG=3DLb4WhYuPkSpdNO4Ehtjm1YcEE= K0OM=3D3g9i=3DLxmpHSQ@mail.gmail.com [2] Signed-off-by: Harry Yoo --- mm/memcontrol.c | 12 +++++++-- mm/slab.h | 54 +++++++++++++++++++++++++++++++++++--- mm/slub.c | 69 ++++++++++++++++++++++++------------------------- 3 files changed, 95 insertions(+), 40 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index fd9105a953b0..50ca00122571 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2604,10 +2604,16 @@ struct mem_cgroup *mem_cgroup_from_obj_slab(struct = slab *slab, void *p) if (!obj_exts) return NULL; =20 + get_slab_obj_exts(obj_exts); off =3D obj_to_index(slab->slab_cache, slab, p); obj_ext =3D slab_obj_ext(slab, obj_exts, off); - if (obj_ext->objcg) - return obj_cgroup_memcg(obj_ext->objcg); + if (obj_ext->objcg) { + struct obj_cgroup *objcg =3D obj_ext->objcg; + + put_slab_obj_exts(obj_exts); + return obj_cgroup_memcg(objcg); + } + put_slab_obj_exts(obj_exts); =20 return NULL; } @@ -3219,10 +3225,12 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache= *s, struct list_lru *lru, return false; =20 obj_exts =3D slab_obj_exts(slab); + get_slab_obj_exts(obj_exts); off =3D obj_to_index(s, slab, p[i]); obj_ext =3D slab_obj_ext(slab, obj_exts, off); obj_cgroup_get(objcg); obj_ext->objcg =3D objcg; + put_slab_obj_exts(obj_exts); } =20 return true; diff --git a/mm/slab.h b/mm/slab.h index ab7b3e386fbb..5176c762ec7c 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -510,6 +510,24 @@ bool slab_in_kunit_test(void); static inline bool slab_in_kunit_test(void) { return false; } #endif =20 +/* + * slub is about to manipulate internal object metadata. This memory lies + * outside the range of the allocated object, so accessing it would normal= ly + * be reported by kasan as a bounds error. metadata_access_enable() is us= ed + * to tell kasan that these accesses are OK. + */ +static inline void metadata_access_enable(void) +{ + kasan_disable_current(); + kmsan_disable_current(); +} + +static inline void metadata_access_disable(void) +{ + kmsan_enable_current(); + kasan_enable_current(); +} + #ifdef CONFIG_SLAB_OBJ_EXT =20 /* @@ -519,8 +537,22 @@ static inline bool slab_in_kunit_test(void) { return f= alse; } * * Returns the address of the object extension vector associated with the = slab, * or zero if no such vector has been associated yet. - * Do not dereference the return value directly; use slab_obj_ext() to acc= ess - * its elements. + * Do not dereference the return value directly; use get/put_slab_obj_exts= () + * pair and slab_obj_ext() to access individual elements. + * + * Example usage: + * + * obj_exts =3D slab_obj_exts(slab); + * if (obj_exts) { + * get_slab_obj_exts(obj_exts); + * obj_ext =3D slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, = obj)); + * // do something with obj_ext + * put_slab_obj_exts(obj_exts); + * } + * + * Note that the get/put semantics does not involve reference counting. + * Instead, it updates kasan/kmsan depth so that accesses to slabobj_ext + * won't be reported as access violations. */ static inline unsigned long slab_obj_exts(struct slab *slab) { @@ -539,6 +571,17 @@ static inline unsigned long slab_obj_exts(struct slab = *slab) return obj_exts & ~OBJEXTS_FLAGS_MASK; } =20 +static inline void get_slab_obj_exts(unsigned long obj_exts) +{ + VM_WARN_ON_ONCE(!obj_exts); + metadata_access_enable(); +} + +static inline void put_slab_obj_exts(unsigned long obj_exts) +{ + metadata_access_disable(); +} + #ifdef CONFIG_64BIT static inline void slab_set_stride(struct slab *slab, unsigned short strid= e) { @@ -567,14 +610,19 @@ static inline unsigned short slab_get_stride(struct s= lab *slab) * @index: an index of the object * * Returns a pointer to the object extension associated with the object. + * Must be called within a section covered by get/put_slab_obj_exts(). */ static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, unsigned long obj_exts, unsigned int index) { + struct slabobj_ext *obj_ext; + VM_WARN_ON_ONCE(obj_exts !=3D slab_obj_exts(slab)); =20 - return (struct slabobj_ext *)(obj_exts + slab_get_stride(slab) * index); + obj_ext =3D (struct slabobj_ext *)(obj_exts + + slab_get_stride(slab) * index); + return kasan_reset_tag(obj_ext); } =20 int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, diff --git a/mm/slub.c b/mm/slub.c index 41c541381627..14c58038a37e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -975,24 +975,6 @@ static slab_flags_t slub_debug; static const char *slub_debug_string __ro_after_init; static int disable_higher_order_debug; =20 -/* - * slub is about to manipulate internal object metadata. This memory lies - * outside the range of the allocated object, so accessing it would normal= ly - * be reported by kasan as a bounds error. metadata_access_enable() is us= ed - * to tell kasan that these accesses are OK. - */ -static inline void metadata_access_enable(void) -{ - kasan_disable_current(); - kmsan_disable_current(); -} - -static inline void metadata_access_disable(void) -{ - kmsan_enable_current(); - kasan_enable_current(); -} - /* * Object debugging */ @@ -2058,23 +2040,27 @@ static bool freelist_corrupted(struct kmem_cache *s= , struct slab *slab, =20 static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) { - unsigned long slab_exts; struct slab *obj_exts_slab; + unsigned long slab_exts; =20 obj_exts_slab =3D virt_to_slab(obj_exts); slab_exts =3D slab_obj_exts(obj_exts_slab); if (slab_exts) { + get_slab_obj_exts(slab_exts); unsigned int offs =3D obj_to_index(obj_exts_slab->slab_cache, obj_exts_slab, obj_exts); struct slabobj_ext *ext =3D slab_obj_ext(obj_exts_slab, slab_exts, offs); =20 - if (unlikely(is_codetag_empty(ext->ref))) + if (unlikely(is_codetag_empty(ext->ref))) { + put_slab_obj_exts(slab_exts); return; + } =20 /* codetag should be NULL here */ WARN_ON(ext->ref.ct); set_codetag_empty(&ext->ref); + put_slab_obj_exts(slab_exts); } } =20 @@ -2244,30 +2230,28 @@ static inline void free_slab_obj_exts(struct slab *= slab) =20 #ifdef CONFIG_MEM_ALLOC_PROFILING =20 -static inline struct slabobj_ext * -prepare_slab_obj_ext_hook(struct kmem_cache *s, gfp_t flags, void *p) +static inline unsigned long +prepare_slab_obj_exts_hook(struct kmem_cache *s, struct slab *slab, + gfp_t flags, void *p) { - struct slab *slab; - unsigned long obj_exts; - - slab =3D virt_to_slab(p); - obj_exts =3D slab_obj_exts(slab); - if (!obj_exts && + if (!slab_obj_exts(slab) && alloc_slab_obj_exts(slab, s, flags, false)) { pr_warn_once("%s, %s: Failed to create slab extension vector!\n", __func__, s->name); - return NULL; + return 0; } =20 - obj_exts =3D slab_obj_exts(slab); - return slab_obj_ext(slab, obj_exts, obj_to_index(s, slab, p)); + return slab_obj_exts(slab); } =20 + /* Should be called only if mem_alloc_profiling_enabled() */ static noinline void __alloc_tagging_slab_alloc_hook(struct kmem_cache *s, void *object, gfp_t = flags) { + unsigned long obj_exts; struct slabobj_ext *obj_ext; + struct slab *slab; =20 if (!object) return; @@ -2278,16 +2262,23 @@ __alloc_tagging_slab_alloc_hook(struct kmem_cache *= s, void *object, gfp_t flags) if (flags & __GFP_NO_OBJ_EXT) return; =20 - obj_ext =3D prepare_slab_obj_ext_hook(s, flags, object); + slab =3D virt_to_slab(object); + obj_exts =3D prepare_slab_obj_exts_hook(s, slab, flags, object); /* * Currently obj_exts is used only for allocation profiling. * If other users appear then mem_alloc_profiling_enabled() * check should be added before alloc_tag_add(). */ - if (likely(obj_ext)) + if (obj_exts) { + unsigned int obj_idx =3D obj_to_index(s, slab, object); + + get_slab_obj_exts(obj_exts); + obj_ext =3D slab_obj_ext(slab, obj_exts, obj_idx); alloc_tag_add(&obj_ext->ref, current->alloc_tag, s->size); - else + put_slab_obj_exts(obj_exts); + } else { alloc_tag_set_inaccurate(current->alloc_tag); + } } =20 static inline void @@ -2313,11 +2304,13 @@ __alloc_tagging_slab_free_hook(struct kmem_cache *s= , struct slab *slab, void **p if (!obj_exts) return; =20 + get_slab_obj_exts(obj_exts); for (i =3D 0; i < objects; i++) { unsigned int off =3D obj_to_index(s, slab, p[i]); =20 alloc_tag_sub(&slab_obj_ext(slab, obj_exts, off)->ref, s->size); } + put_slab_obj_exts(obj_exts); } =20 static inline void @@ -2384,7 +2377,9 @@ void memcg_slab_free_hook(struct kmem_cache *s, struc= t slab *slab, void **p, if (likely(!obj_exts)) return; =20 + get_slab_obj_exts(obj_exts); __memcg_slab_free_hook(s, slab, p, objects, obj_exts); + put_slab_obj_exts(obj_exts); } =20 static __fastpath_inline @@ -2434,10 +2429,14 @@ bool memcg_slab_post_charge(void *p, gfp_t flags) /* Ignore already charged objects. */ obj_exts =3D slab_obj_exts(slab); if (obj_exts) { + get_slab_obj_exts(obj_exts); off =3D obj_to_index(s, slab, p); obj_ext =3D slab_obj_ext(slab, obj_exts, off); - if (unlikely(obj_ext->objcg)) + if (unlikely(obj_ext->objcg)) { + put_slab_obj_exts(obj_exts); return true; + } + put_slab_obj_exts(obj_exts); } =20 return __memcg_slab_post_alloc_hook(s, NULL, flags, 1, &p); --=20 2.43.0 From nobody Sun Feb 8 02:56:19 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 99E03368295; Tue, 13 Jan 2026 06:19:46 +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=1768285197; cv=fail; b=K6f3UKDZHgEOEuV8lgvLaHchxMcJkUsPEJvATmgzxUym6cjYQtPteIM2rQB6dFWOnQkghSMBjtdUoUqD4He5619fiiOM1FNp05XYoUKG1/L+QME+ZKKQe/BJtjx/UQ6cHwJX6uh+9ST4+VPsmj4VsaiZHcSWzq/WaudvvvtOLcs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285197; c=relaxed/simple; bh=B5J+Kvw3uTSTkX7TBkjveYgVldrv53q2pVKZdKJNZww=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MuNhuVKIyApw1PFXJCfm4DmrGIfiSeuwqX8C3X6eDaaX9fpeZHuBVNTXao2MEJIMVYmPr97qfXEscW9gjybeR81l0iPgbVeuMCAZ0/FWW2zAUE03PLLIx+rcGAggA0m9sGh1kHeA6M49vqoTYjfgw17+5/tT5wxuW/TrHUye1dg= 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=ITM0xymN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Wd/V/wUG; 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="ITM0xymN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Wd/V/wUG" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1hHuT2677746; Tue, 13 Jan 2026 06:19:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=VSXF4WY+x3GbPBut42bRuKa7SMEue5CzGxaBtSfEHNo=; b= ITM0xymNN5b23hsidvC9Xy3rrw5850fqTZm+9ryQo4MRtcs2oKWZ/KwfcjJJNgdb 0ne4jDxzZIZQh//rPdeUPceLBIIaXk8M6EYBJmsIe26bpNK7gInnpjPmRlpo8/tn IB0EBPcTn3XniZB4z0Anu7Off8Zn7U+IQq54SOH6cStFktLxeFv178e4mQcon2zN FZDBw6QYtEABLeemAKqW8eVazaRU2004AQlao5zDL5qGkgt2RnsTxlnwW/Kh0OzI t7B5qiWqRLMq0wisQG4Wc1P37NONjLlOyTjT28h5ZykrivvUvwlj93HPccFCsAAJ SG5u6zrwFB0jxCo11B/Vdg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkrgntwc7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:21 +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 60D41IPR035319; Tue, 13 Jan 2026 06:19:21 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010020.outbound.protection.outlook.com [52.101.201.20]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd78brs7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=skgM7Limw7yB7nu0+bxV6k9gywSKU/9tBnmfi/ttV5juuvtg/ZOCQksv5YuELiKjdrXBsVRUda6r8ssIgjY8NCrUMJSOLXFIwLTKH/KNNxq42mDWFWlqIknEispgfb/Ft4H8iIRWAHUrQ4qzYgdAFnzl2uvaYTb5ZvKdFavbiLPP/sJEHI7/r6boEIhSoA9UmrQfLbHqM4fiVDNk/ZyV6DHajXZHgZrdKlD1n5vEaTCOe7gcpDZUSVGkWWANesFXzGmpDm0CVthzfrSXGRxNuPnawIHQcC1Gl/zZ5PMSirWyFn6Tuibjxmb6l03me4p8MkliejXOAugDrHmpFIbJbg== 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=VSXF4WY+x3GbPBut42bRuKa7SMEue5CzGxaBtSfEHNo=; b=jeccwCZ3sleqs0vyLLvxom2+vrTESJnudh2Z5kyJA6iO7KZCEDL1594xvTAIP/wMYxORngeCnyg9qifp3g3iZ6J8wLh3zNxjtfoRq5nb0Znc/qMcgznMhBGS51kbBKUcsaoAKG1/Oyo/OCHIu9oAsd60rZXyOTJ6cjlWPfLqjut7NycMro65CYKKYzzWxc1TC8BW7hyHrX6rxbjjG6SLBJfGQxj3/bjmtZFWhTOZ0j3gwMe2sVYpcAbOpExDOwsxmI24Vtbubfmg8rqK4VEOJkaQ49yW3ccr/SgOx82sGIEkm3nRw3kGlo2blpMwjLQvCkmIAqLN98cESvh+emtF1g== 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=VSXF4WY+x3GbPBut42bRuKa7SMEue5CzGxaBtSfEHNo=; b=Wd/V/wUGv/PwIZ8Uj8RgFBB4+vZcz8pFFdb4M+e26PHI59vLTHBUbEQgJX9kfna9RirUsaw6MEqd24COJT4x3vRb8HhCSJsBQZtY3r2I5zy1jW1p7BkTMMoYSpSgVvtW7K3w0z3G6S/nDpYLgpdtvef65F9f0JasEAxwuXzT9LA= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:18 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:18 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 7/9] mm/slab: save memory by allocating slabobj_ext array from leftover Date: Tue, 13 Jan 2026 15:18:43 +0900 Message-ID: <20260113061845.159790-8-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0048.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bd::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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: 68722a1b-a77b-4b6c-3d59-08de526baec6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?f5iYX0M+Q7q6F28dS8h8NfzKwpi7qUu7TVzy9ihfzUu+FItyJ3tGOVy+Qfyk?= =?us-ascii?Q?3PdM3vpU2w6M2z3X5LRgejDqxmyCfqDgkBQwo7S8zvCGxyDfwRrvOqmHdC0F?= =?us-ascii?Q?WMhEID/S+i1Tmq00bhVUIxWPFYPoAqBDcEhVgqbfXMoQEwKu1LIkbmzvNFJA?= =?us-ascii?Q?4l5pNFPY89PFNuZOHmxog3GrwLeDtoL3SGchaDyNn6fCCQoXlnQo9J6/myKC?= =?us-ascii?Q?LWzyvxQN4cjV57SILyKXUZVsUggfnvyNQciO4p1qgN6L1mOZ+dUXLNZp7ucK?= =?us-ascii?Q?Pm5OvmPlfv9PaUq3LQ6twB/6I5VcbMbbATnnz3ki7zrE/l1syEhH7WEZoWML?= =?us-ascii?Q?ISsZ+HeES33NDhn6sFOWhkFKOtexI4myEjfpCw+PC/1a4FzeQwsCCWedgU33?= =?us-ascii?Q?wCeN8gl42maNwgj6Sb1GhGExCjhE1bSsKq2o8CTIwbEIOmD+UdkvEsbIwfPZ?= =?us-ascii?Q?PQceXkB2XN/rl3Uvke0SRK7NOpCoTrr/uc68qhhUoVyySn+9iRdaL8972N0Z?= =?us-ascii?Q?rLl9yTOZ9QMmgniCeVvncvey9mTbE1e33kNVIsc8WNEMBI+Y3I5N2jctomb9?= =?us-ascii?Q?hpYBhSZzoTcv95BiDQJ0hBNfVX3pIdH33mN1fpfDJv/YW6nPIVJq7QlB7dyj?= =?us-ascii?Q?DeDYeWzgKEH9nv+I1CFCZrZv/OKOIx6mLa4GIvwPVPfZ0I78ld2dlB8+svpa?= =?us-ascii?Q?LqVgekkGODH91gyK+nIsD4NdpgS/sHOM8j9QNKq1jSaxFb2noxDHB5xw5q0f?= =?us-ascii?Q?VoY4C1GVmFWiYRYAWDlILQp1RwBrjYgOrUL9tapoLPcml7MTxIG6oigx+n6e?= =?us-ascii?Q?l7ZErBPO/PqIs68E23s5OS8Df1CDpJ88uQhFDEmHIdJ0ICC4VJpVohUdVLDY?= =?us-ascii?Q?Id4eYd5G82JANO9dlMgFusA6Hi3DW4pPj94/3Xv0zc2+97qA4qxeHsI9S/Qn?= =?us-ascii?Q?DPSjn/zdzUxaSkEyBNqTbtp4t7CHu/3rNgiJT4ojkyxbOpWeuaamc3haM2cX?= =?us-ascii?Q?jIt/L+YWDSDO9YQe0cBBmn5mHj5cpzFTdOMnA7TtLKu8JGmXa5nrOtE7rOmO?= =?us-ascii?Q?+PG4Vx8QKOE5mJKUCYp/+1/FNk+cSPnHus/b5Yw1FtrJErm59/fViODDK2lm?= =?us-ascii?Q?kozhtG7HL3YdsViz90A86GX1XhbeVf4e7yi4Fp4YZpCNKQQnnLdLREzQMgCW?= =?us-ascii?Q?rc0jzNIqB6YLbS7UsSYpUCA4jeqoBN3598tDYC5arx6uaERHS6qPffFU4OOp?= =?us-ascii?Q?JfTiTn4j834TLRKjEqNGUCHQ1AT4dJY2WdDaTiU4iwCc54sHn32Q3dFMgJKO?= =?us-ascii?Q?nefqixYhIrSdxUFOVETDoaaQLaYioXpJiFTR3FoFxyLvwMRZVemyaZ2Fbz/X?= =?us-ascii?Q?qQmozIMdRnY7bWAAs6wN+DPJ3NtBf3fxXUVvsbiSA189cFggR0WQjScBWKUC?= =?us-ascii?Q?lOdsRkwwql67FJcXQ+Kn907WBcMZ3Y57BEiCIyhERhtSRkKvACbsCg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wLIAX6hPENF8ywjjVXzsLILjoGvEMT15lHh4QfKA+jXkkPFscUaToXfvQGDi?= =?us-ascii?Q?LUyd3LrTF2f0dt7+bYM+gjCwTcyu7Xt2ao5bMu4UuA2avJTEoTfTfT5TvNbT?= =?us-ascii?Q?8f9fRzXtnkSsm+V57HlJ9wTsy9CfnzWPH/fQ5kfei5S8P4BVxE+/kUKeUGiy?= =?us-ascii?Q?n0E/PEW57ov1zmhI6KO0htSwOAmqUqE85IyfIqc9iKCsi4W9lDTfvfgJ2fT1?= =?us-ascii?Q?e5PDP90JlgKP8haha3o0NAEIdaoP24ErrL3AenBBj1Z/LwLEITSg1/DSJlQ0?= =?us-ascii?Q?EzHnrx3MxYMlwf5UQdg/xrvBzz7XSr3K9srG0kkVafgLX1c8Ko8W04KVOJ8/?= =?us-ascii?Q?khaNH6UQQIYloCqwps33sZuWFoTrTIvBNdEMDjMV1A6OMJuFUzwmRSmsR5or?= =?us-ascii?Q?0ONib9dormfrPuzuFJ4u+7pG7Q2yoWndGRhUAKrNaNThKxFZqiektCmR/qvF?= =?us-ascii?Q?6EeRcPuIjH+U8kYAQ8kQMdeN57aZ3cNwSh45aw0hxFmMWYARsyP4jcnCa0te?= =?us-ascii?Q?r/s1X85jDSbjq4BITMVXY0MBzEADqlpehzibUqaksKB3NRoQrhW4txtjBLnJ?= =?us-ascii?Q?wCmOwrO3l5RQJUS/C9CpSZx2uGSpwqEhc8ZmOyBXFhMdlZMr/KjF/F/UA7FV?= =?us-ascii?Q?/f/Zi3JNlytzy/HZ4eQCjk+KLpQCsvfaq/2I5mDxKeN+dAtKekoRW2x6QDjI?= =?us-ascii?Q?o7pgJ1rcSBUt3vXUk/yh5WYGuCAH4KTT2fucXRoctAHUh70iDtjQ5ussvFm5?= =?us-ascii?Q?N4E+3SVt7ZIqIURXrbJdtcsRwHQWPJPWz0s2Q2O0oUyqR0CKgc2ZBMzui1Wl?= =?us-ascii?Q?82fRM+P2lbrJYlJLSC7xrU+Xte7Jov9qV3VxD7e+gyMjAbK60jioogbdnKH6?= =?us-ascii?Q?/m19LNrYaNQ28njwR8WQoZF7JwsXhBbkTQKrk7tdieuBkYSnyxabxO20DtRB?= =?us-ascii?Q?HOle/bGeb7CIWqHEkL6+efgNq/wdW2+oxkob+2ReCX+C2V3DrKtgCjsJJkPV?= =?us-ascii?Q?tnW/h4p6nFVDZbhOlia/cvuWY/qsztq5GltETtA1G8FY/3BPMz0p0jJ66jd+?= =?us-ascii?Q?SdAiZe27OtF0NGTZGBQKEQsr94AgG/JfUIXo62akuCrGinH1L4fWNkJ476VA?= =?us-ascii?Q?Ms01LRrgHbl+fvrOj2bdQSG8c0Dnp5dl7TJ18vSbqzsEDgc6iMAH0sB0m7wF?= =?us-ascii?Q?cR9pvpq3HyaF+QIuVkBJjIGxBGMDvVDrs3+2nMxKwwi7CCKlordRXU1Yf6KN?= =?us-ascii?Q?6MHKM6PSKdv70OA9tFK7D3b8xSbxxn6cfi0kmTBOQDRTbFeyMryuDWIf4FBa?= =?us-ascii?Q?477Vl662s8cR6LPqfs8NBTMOE55jOwzz/mJ9a/Wha8OQ/+fVX0eMLAg+gBG9?= =?us-ascii?Q?6FukVldn0E8kr90TvUvOM7r1w6zP1mCAem3oKqdXdXAX5XlfqBd4b8ZpNFmm?= =?us-ascii?Q?qaHyB94QQEX1YnEMf7hk5IJmFTCij04k6RJXsbJhITki4PnvCfhxuez+5M+3?= =?us-ascii?Q?0kwtnwqEaXCg2mmh0nhK1ealJ7dqxcaQWjBu3Z/ICDr2UyZ/AQ0SoWiQrQkM?= =?us-ascii?Q?9blA0PebYipn0jRDQ44fjATagM+DytNs0xmbJ7YynW8DlMfe3HRSLqumW+Nw?= =?us-ascii?Q?LiwyLQv1DZc1EWDt4RVEO6bvTN9r+1A5yQgQLtyw2upHAgFizprYMbSKj0NL?= =?us-ascii?Q?wJl5Q9kMg0q+/f+4KV4wIbbMs0V00LyE1njIZ2ldzwPRnLzeZaxTLn5HF6mY?= =?us-ascii?Q?2cdWoS1k8Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lyY4oPrEq0nUSVv1Amq2A60xG13p12TFnkO0DMaax8kJXLQalBZE0rP3tIaPwm5Vw66xbt6q48vPaOUAQv9S1267bTGx8zIBAtBKwZ5B+mg3p6WjIH8nr1ryTiTAyY5LkI4uAdyTdfQzi+8PLI1EFcOL0XIFol1kU2hx1Wvy7IiMbL56NKYUsmE8R8Kkd8sGfwi5+Y/2t+SrB1nvW3zGNN3CxEGrHdG2KMjb973TrUjSo8Rk8662D5+9tqa+0hSkrz2o+gox9rWbE8QmWZwqcNg7nhH7gBUH0uqAGVMlODRtInhfbsKpDicj3zkUoZ9LpxfNB+pEGgm06X1Vk9LPrlbwx0RvHW7NTd7krvoCyIlH9r5/2MbPfRpjvrsAFDTd6rnl5fBuYcn52V1rpPnmIDLmYBM0UbTZSQWKY38fqvHmEzPYv6n+tNt8fYO4x8WySBvOZOCMpXU5JIQUxQlOOvnRCr65/EXhEC6g+HdS/I19v4jlGl/8vn1Gjwwjo+Hbfc//PJfY2sB/RJTqB6PhaJFmjIGreXvUyU9NKrUvA/PaP/j1CekNUmvBsZM7kb8HWebJkZujuyT7OV5FRY7fOcJMEQ8v/KTe35ZgL48L2hk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68722a1b-a77b-4b6c-3d59-08de526baec6 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:18.1501 (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: eCmvYXM7ZM2p4YXRJUi3kat8fktrGLhp/2PPY8DkEPABk0fAqGYEouUji0t3lpODF+Djf/0W01o9N2VuQUmzYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Authority-Analysis: v=2.4 cv=B/G0EetM c=1 sm=1 tr=0 ts=6965e3e9 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=ii5H1995EiaHVXO47u0A:9 X-Proofpoint-GUID: YMnwmAHO6ajR62Uj2oHz-PEQ2BX_Ca6t X-Proofpoint-ORIG-GUID: YMnwmAHO6ajR62Uj2oHz-PEQ2BX_Ca6t X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfXxHmmbLqZ+EYd 38XN6FiAIaCWEy2xTXdYNH44nM3C3SL3i2KtkJEggN+RiryDB4WjuXmGT7/jN1T3eFG7PBGqmEL DXYCuE9sVOuX6SVM48Rkxx1C5IO7YLtAyLDvKM0VoVgdTqYJcBeFu2H+i/Jit2o3nBCsS3iqhEp N0xJh/r269OoKT1zXE/eaxjjHLB+xlyrJdVuB3BFplwuaNYUChYnM1IJc97fO1cRkB9BQHyBnwO oB09h3ZBTmpoaXf/6QlClGAgbnPRni0ss6LS8bPPUquu9ltxFFgfmLEo3nLfh2QN5X+gUN6/p05 BPJsqyTr/au7DmjV27NzH8RI9w1a4IlB9WFWF5MYDWjvpzqXD7hXwMiZsectZtcskpzvKNaqicb 3oZRoJethxvnXU0hCQkLzledKvU7GTwN6TG4Cbv+EdGdY9kvyrQe2Gof3erlj9RICxoh5lGFf3h QLkOYKjyWZ/4R/0fRyg== 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 1136, with a preferred order of 3, 28 objects per slab, and 960 bytes of leftover space per slab. Since the size of the slabobj_ext array is only 224 bytes (w/o mem profiling) or 448 bytes (w/ mem profiling) per slab, the entire array fits within the leftover space. Allocate the slabobj_exts array from this unused space instead of using kcalloc() when it is large enough. The array is allocated from unused space only when creating new slabs, and it doesn't try to utilize unused space if alloc_slab_obj_exts() is called after slab creation because implementing lazy allocation involves more expensive synchronization. The implementation and evaluation of lazy allocation from unused space is left as future-work. As pointed by Vlastimil Babka [1], it could be beneficial when a slab cache without SLAB_ACCOUNT can be created, and some of the allocations from the cache use __GFP_ACCOUNT. For example, xarray does that. To avoid unnecessary overhead when MEMCG (with SLAB_ACCOUNT) and MEM_ALLOC_PROFILING are not used for the cache, allocate the slabobj_ext array only when either of them is enabled on slab allocation. [ MEMCG=3Dy, MEM_ALLOC_PROFILING=3Dn ] Before patch (creating ~2.64M directories on ext4): Slab: 4747880 kB SReclaimable: 4169652 kB SUnreclaim: 578228 kB After patch (creating ~2.64M directories on ext4): Slab: 4724020 kB SReclaimable: 4169188 kB SUnreclaim: 554832 kB (-22.84 MiB) Enjoy the memory savings! Link: https://lore.kernel.org/linux-mm/48029aab-20ea-4d90-bfd1-255592b2018e= @suse.cz [1] Signed-off-by: Harry Yoo --- mm/slub.c | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 149 insertions(+), 5 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 14c58038a37e..e4a4e01de42f 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -886,6 +886,97 @@ static inline unsigned long get_orig_size(struct kmem_= cache *s, void *object) return *(unsigned long *)p; } =20 +#ifdef CONFIG_SLAB_OBJ_EXT + +/* + * Check if memory cgroup or memory allocation profiling is enabled. + * If enabled, SLUB tries to reduce memory overhead of accounting + * slab objects. If neither is enabled when this function is called, + * the optimization is simply skipped to avoid affecting caches that do not + * need slabobj_ext metadata. + * + * However, this may disable optimization when memory cgroup or memory + * allocation profiling is used, but slabs are created too early + * even before those subsystems are initialized. + */ +static inline bool need_slab_obj_exts(struct kmem_cache *s) +{ + if (memcg_kmem_online() && (s->flags & SLAB_ACCOUNT)) + return true; + + if (mem_alloc_profiling_enabled()) + return true; + + return false; +} + +static inline unsigned int obj_exts_size_in_slab(struct slab *slab) +{ + return sizeof(struct slabobj_ext) * slab->objects; +} + +static inline unsigned long obj_exts_offset_in_slab(struct kmem_cache *s, + struct slab *slab) +{ + unsigned long objext_offset; + + objext_offset =3D s->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; + unsigned long start; + unsigned long end; + + obj_exts =3D slab_obj_exts(slab); + if (!obj_exts) + return false; + + start =3D (unsigned long)slab_address(slab); + end =3D start + slab_size(slab); + return (obj_exts >=3D start) && (obj_exts < end); +} +#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 /* @@ -1421,7 +1512,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 @@ -2195,6 +2294,11 @@ static inline void free_slab_obj_exts(struct slab *s= lab) return; } =20 + if (obj_exts_in_slab(slab->slab_cache, slab)) { + slab->obj_exts =3D 0; + return; + } + /* * obj_exts was created with __GFP_NO_OBJ_EXT flag, therefore its * corresponding extension will be NULL. alloc_tag_sub() will throw a @@ -2210,6 +2314,35 @@ static inline void free_slab_obj_exts(struct slab *s= lab) slab->obj_exts =3D 0; } =20 +/* + * Try to allocate slabobj_ext array from unused space. + * This function must be called on a freshly allocated slab to prevent + * concurrency problems. + */ +static void alloc_slab_obj_exts_early(struct kmem_cache *s, struct slab *s= lab) +{ + void *addr; + unsigned long obj_exts; + + if (!need_slab_obj_exts(s)) + return; + + if (obj_exts_fit_within_slab_leftover(s, slab)) { + addr =3D slab_address(slab) + obj_exts_offset_in_slab(s, slab); + addr =3D kasan_reset_tag(addr); + obj_exts =3D (unsigned long)addr; + + get_slab_obj_exts(obj_exts); + memset(addr, 0, obj_exts_size_in_slab(slab)); + put_slab_obj_exts(obj_exts); + + if (IS_ENABLED(CONFIG_MEMCG)) + obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab->obj_exts =3D obj_exts; + slab_set_stride(slab, sizeof(struct slabobj_ext)); + } +} + #else /* CONFIG_SLAB_OBJ_EXT */ =20 static inline void init_slab_obj_exts(struct slab *slab) @@ -2226,6 +2359,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 @@ -3222,7 +3360,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), @@ -3286,9 +3426,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 @@ -3297,6 +3434,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 02:56:19 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 661C228B4F0; Tue, 13 Jan 2026 06:19:52 +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=1768285197; cv=fail; b=gNruuZ9Ur2Pgs9X7dHIrXhQPJj8VzpqDHFetkzwayhZiurHmbZKfkjfcAT4mm1iW9cj0UAplcwtPBobeHPujX/7OHk6MAwHB9Fkd6SLdxeDTij4YjF/cAe1NtS4lYCizgbWpEaJNT+9lDZ8Rpjr0Nv/Vo+LpeXk/3EYggJgPj40= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285197; c=relaxed/simple; bh=htWTjVlKTRTeWPDqukVmZtjJgU9GByl8+dQuUD+R0lY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hWanHVuObYwidCdygVSriR2NQ2FjSL/U+ZMeFU1vBDN5bPxQ0xgqefVXDb1zijWk2/mgefvWGTScrr05erJMQ6tjms/dDc6IgsseqFYVba3OrSyza9qhWokhttVBZg/bl+0zK6ljYrREtEny+P7x/KnOzR7zg4g4/+eNmNpOWKs= 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=kD7JNVO6; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=UqIzZVP9; 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="kD7JNVO6"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="UqIzZVP9" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1hE2M2677475; Tue, 13 Jan 2026 06:19:25 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=xhfiwp+MrCpdoeTV5cOsFGGRbQPLILDsQ27JS/GQNYA=; b= kD7JNVO6yU+XEVaul0pfUPauAP7ZZYXv4i39xQZFl66LAcFpN9clfvkcEOdEAJD4 8S/P+SPIeJOEMtlHENRWE/HV17cApJgkcYeyD6IkEo5f2deQD6PfIM5CE6ZmXK2y Vv4RLy6/Vb62gYSIV8F4ZEhGohXG2yka2k0JKh5DKz5Et4xscSll1Gx3LeOGVIzk go6YAJsf4SZvjceWsnq0D05DJGtEaS6fuMNPPqh97g644m8XJBZLz6b6cvTrNYaf Wbv5FBvwJZwCy/tjvulSX6ksFXZvxs/4zcvo5osPdd542//UJtJfOTZl5EQ0ZTUw 2mHqJes1J3q/ChN6ClHmsQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkrgntwc8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:25 +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 60D5TI0C028706; Tue, 13 Jan 2026 06:19:25 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010060.outbound.protection.outlook.com [52.101.193.60]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd78b1qb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dKf3VbGQHqEj864mPvuN9UMzoNjNo0AwoVc/Dp1b/eo4w9dKhgRv1E3P1DG4AT36j3wopxl58Q9oK6rcqRSZBtbt2AA+AbFN69pIrNqTVNsUnkZD0e61L8BJ6IItvBh4GDqTuPtod6wvVDgLf92RtwIdstLKtC6AYEst1KN755IcSlM7CCAzTzFXJuSjMCITL8EUFr33s/+HuDM1vpzUGxweXaKL7/JpRxMV+OpM8x4DlsonQyvmPIq0qXnO70a6GQCMnxn2H/VojZwfvlxflgFqsa90FIa4iSPFN8NTOLx0D5OzqA6JH9Or0K8naEVtcsRmIOO7JJnIQudzz6akOA== 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=xhfiwp+MrCpdoeTV5cOsFGGRbQPLILDsQ27JS/GQNYA=; b=CGFszEdSIpW+F8C4xph+gws9hLBEggGmGCvuWtGFXBAAR8chSw6vgUbFJa31AcqUCNN2RoV6G86Z2ZuoPn1kyq09TZ7GoHCLBEf7lUnRyiKlWAKWmFciuwJ4WrNDysUSWMPwbLZRiVex8Gsw/RdQAhWx9WEIZYQl73P+aD6QveSLUrfbajFvrIA3VWsciYKqw4vO4PHvRtIlEFGX8jcFZW/klYxb7k6dFeDIiRwFVq0zZzoU9/LAV8gBYjRTSmc0wh302bqqG4/bnuFn6Hi53dl4NtoOjMPp0+xuCJ2r+AQT4IA3W2QKSdygF9tDXYVboHr6Ul3Qj7gggc57tEn83w== 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=xhfiwp+MrCpdoeTV5cOsFGGRbQPLILDsQ27JS/GQNYA=; b=UqIzZVP9jWQEi1BJ8ht91qAzjC/Qj97WLhuUhgj3Z+f/tKQw9x/VmiVpPKClRoYHn5rpvXfReXYVH2MffUltkb84WlQjOsg7ic0M4kkcn7NgIWB+SiyfchU3hkCiCgZzPCSsxEud1VmwK7p+v0zPwhVglwMsgi9KUFMp3OI4/cU= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:21 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:21 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 8/9] mm/slab: move [__]ksize and slab_ksize() to mm/slub.c Date: Tue, 13 Jan 2026 15:18:44 +0900 Message-ID: <20260113061845.159790-9-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0194.KORP216.PROD.OUTLOOK.COM (2603:1096:101:1a::19) 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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: d1481879-1309-4c2d-0e62-08de526bb0f1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LKUnHQ4GXQ2k69yrTgIrbcmDbAkAAcDuervXbVbvoK7pSI7yt2qJdU5Y6/Uh?= =?us-ascii?Q?u+Lx95C11otWOOMOIXQdNonZMQYLdCq6TmvvvyhbECF7HveizEVqQX7N9OUD?= =?us-ascii?Q?qulP+gT5mIRJ4x7BORgM0Fz76cuFf/Co8TYIHSu7fVWcup2eAGHWLzr3SJqN?= =?us-ascii?Q?xrPp6d3i3UN1VKg/nt+aZDVyK+JZM6c18cVj/XL2hELNJV8AAmjESmEsWxcA?= =?us-ascii?Q?cOetTnJmwG4wleXD64BbLN8NmrNa2LX5i/QUNp3ZCkU095+qrQh0jVAAMAJI?= =?us-ascii?Q?qUcAc9fbspIDQ9tzd7tkcmn2X1HgrAJUcgYpV021BHowEV2zPcb8LQqLHtrV?= =?us-ascii?Q?RMvBv4AgOIFHz9dp78TxPUMyLsvMgqEWKweeQlGNolSiszZOoUwjC2t1qpa1?= =?us-ascii?Q?67JTTg34b1MV2xeDsr4yFzSLT0Tq3geFDJNj+EdpYLdhOCj7pL5rHWH3MEtk?= =?us-ascii?Q?6XIiTAM73+u7SkJdurkDTxbdokXg8cMkmfi5pLa7CXZckCSHQSpUPG4ctt3N?= =?us-ascii?Q?acgey2RCZ/d34+AjmUXvmGx1RQ0aw3TaD5fV59i2qHNY1MUvvRRe03ztW7TG?= =?us-ascii?Q?N1NPLWhf0OOcQ11QyBW/h/1/Iu/xGrHvBJVPy4/K9uCR+27RuP3QHwTXEELD?= =?us-ascii?Q?d8gl7k7gP02kRqoPA8mTdJfin+YhF05KZCvq6pdV5bXa7XNxJYGygihtYYcz?= =?us-ascii?Q?HfIAdilKoA1WpUCCHNlwfKX3K7DfYJyzjC3QY51gvWMHYq4IWVD9fZr8XmO/?= =?us-ascii?Q?POiHXGtK3ARDTP2SocRi4zbdkZUaEvsCejy+t+afkUyI53l+hV/+iMn1Viiw?= =?us-ascii?Q?knIFr1CLLaSsZ3JMfiXnu89qBGmtTZNT4wjzdI2CnzZBMpbLDWIvKrmMuk/F?= =?us-ascii?Q?+/0L38spLmP0xgrCKKGZPeG68mmyLc1NPHxmncGjdQv2j7zIrYtmZJojNMaB?= =?us-ascii?Q?UROMhx+vEJP8WNRrWaZYwuZQ2Tm1Sz06UM7JvUg3K53xcGHwUWDmdVn3o7Ky?= =?us-ascii?Q?yy5Aagm1f8RIy2c2hwzBSfeN851BJiUi1PjIzBva2PhTcYjQD6KhB8V7j2OG?= =?us-ascii?Q?Vqo9oTWQQ/uXDI56Sdp4CMlXQ4knErBL6r2vSZLxBxqcEyMc4KniolwYA5Os?= =?us-ascii?Q?0n7swGhQ7kqrYI0KCfrxo0CN53/hmjiT+fha4UhMgamOoYP1mfC8cN1FjTAL?= =?us-ascii?Q?SZwoflnvLXUW4mwHc4Did68V6USK1HKP3vIo4xOkSW3m8COXErlQztUNDdQw?= =?us-ascii?Q?IUq6uqGqneHFVKQK3Guc4qp0xLdlnF9cGKobIcaP5LrHX6eO/9nRo9Ls1e0W?= =?us-ascii?Q?OhCf8uzJGKoWs0Lk1v6g7xD0YCo3lGnn0qq7ytRciDuVSCWgk2xOAIGdoNab?= =?us-ascii?Q?O2PSIQtfZb4QiJIlTxyXRUjPWWRTGwN0O5q5g8qqSEMIYN5dy9QefyBHK4ZY?= =?us-ascii?Q?UGpCky5NbPVSEq1l3bCjodjQNMwn7ktO?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o1UoNR+YrzfxHmqFJgsQFx9/1sRv1ShTxR4Cx9GtTSu9yT4w6vhd90qMkffT?= =?us-ascii?Q?xG59HgzAzFjKE9/Dam4/cL85+q/RygbDlSXkkVW8VD09P4/yAJ0nu7FUMvDE?= =?us-ascii?Q?04gA6WpCsdTRa5NPqPIc1slVNIkJQujuNkijc8bLazCSUlH32E0LX1a4GUIR?= =?us-ascii?Q?7Zvrm+JQpy+KurC9zv89bnqYs9iMfWbdTKXXD71OCu1MiW986F50rfJkGLon?= =?us-ascii?Q?LfHWAHbsd+FqWnARoCA6Z0opTsEUj+5HU5C4/i8Zr0h5oYb994S4uD2Y9GMy?= =?us-ascii?Q?61ggH3WBvwrVvvGHLY79jB15/lKMX94k0TPkMJAMLXCImNiYJoHy5zZ6DK3h?= =?us-ascii?Q?vHKuQbofj1LfenfL2nGVNL1OwxcnwKYb1cirlvDK+57tjzIIHp5+Ag6hBjqr?= =?us-ascii?Q?N9paZSNJ3LS0Xq/372hvGB81jrHRr8h2Y52ZK0/nRS7rKIAKEoUKtQXY0Fgr?= =?us-ascii?Q?Hb5hxM6/uiRlGkO9AK1gtQFEwTe2DW514iJqMTG0MHm7fNkVt7GRqBPnLlfa?= =?us-ascii?Q?kPyt6CQt1Dqm1GWiL0Kx6sMap99r8zFnitvwzSy0mdOSBDd10JiV+88RbsmY?= =?us-ascii?Q?LJ3MOKiXA60IR2HE2FOdxTQFBfTniLHhn7Xceci7/Gl5LpC3QpATdTpPckaO?= =?us-ascii?Q?0fX9xPhlzctMXDMasTDdp5+dczmNKPXxx/Ho8AOhhOJyZykGCY0NAl+rQk9m?= =?us-ascii?Q?kU81qm560gSb1JGdi646PkX2TcZfnE67orKZVuDZ6qsCdBxZfCgG5/KcdD29?= =?us-ascii?Q?nVJtk7zRK1WcfU1qFllEVEnVVmjFLqSzJyk7ewJ42J6NAFCPQaJifT9NCMjd?= =?us-ascii?Q?WtdLprqWzvUA9H68NISHx22j56DTLB4vePp71VO0Qg0SGnQ9Dsud9D0KM5Eh?= =?us-ascii?Q?M0+dnYBRKguigAmQ3hAHEJCTKlH803Md4q0S4Bp1N6Ufx7FgluWkSMtbRL2t?= =?us-ascii?Q?phfEglvo3JkjqK7U1fKWH+hB/hRlfRlAB7/Re+nhFaOhbq+jjMvlAqlYouTr?= =?us-ascii?Q?631/zbj8u6dHfVJJZp31Gtu7IB4dbzOq+3SAMbE6EyXxeES7IlAO1Y8N0wXn?= =?us-ascii?Q?pyAT8oPORK67sAVayH+DL+z65Pxl+6RZHuJ2fHkzUbHrtefG9wNBj+FL2PPX?= =?us-ascii?Q?NIoiyHRvkFAwJFEB4xMdqTO838ZkWOm68EaUE2k3SadKwgzfR0xxM+RLafAU?= =?us-ascii?Q?pOIJYb9z29/KfudiL2vVGHjLON5X7FsL+dmVEHAyl9iZxttLPzI/22Yrjq/N?= =?us-ascii?Q?lCf7ZR0QGodIj86ngX3slmSjT0cCPM054ppfHFvt9xOFyM4m3zUGeqvWH+l3?= =?us-ascii?Q?rom7EotAP8MdkSmnxxfBSFSOkHSYAfWNLo6YURUd0/23s6yaBbL+48BRWVCq?= =?us-ascii?Q?G6m++A6b8n7EVBgywFoJA0s0obKu4IP5gBijhe+oYRpkE5U9+byazYwuNCNj?= =?us-ascii?Q?v4cuCjax11WTxaGNLSwP4Y5RUEuy4jKZgyUEwuojyGeZMz2CDgCgdxXxzVwk?= =?us-ascii?Q?4YRXy+WanDQPbw5JnRn+4sIn/j0c1MaRdVGuh4ci26Ajy4bO188TuJZgjS0P?= =?us-ascii?Q?HVES2MRcJLYDtzxI21/2wOxC/ip/GdMmYiwnOHjCJJ2cNW3gO0DHdA/IwOXZ?= =?us-ascii?Q?zbohvB4OMhC+ejtnn35JVTBRCY5Qn8bXUg6HjuFZrgsg8eZLWayerwsEu+DZ?= =?us-ascii?Q?wJrYZ+LJCsCV+aiBUKaiiHEi7CJBWwNZy5e1mjtcEvc8AZErYqiUR9cy1FmA?= =?us-ascii?Q?t+JBAEyo7g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JdrAwxJ0sS3Hz7mYGPAM8E5SkSy+4DhQVWx+OGx7H06SJhYc4/ELhStw74Pg92xaI9ci5NNFioa2RW7hGkYId/LgakPVPB5vrT4q7o2xqIvX4WOf7s/JZP7AyHAChOScaCBLAL/4zn2mVgQpQfEL1l6YW1NPI9rZ3jJCHKjXiiw/2p3FBmu+u3RHi7wsUJWxy3ogL3kstsvXHM+0oAAiq35B3oBjbFXQyM76IzzjY1Q7wJoyV/kuUB06fT4nDZhZrXdV+9klXjSQeFX5udDHDQEYPkI7N9EXEqL8aiiPZlH99vETXdDvvpOYMED/pcVKJt66rbPn5qQF3ARVeoYQmkxSXddElcA+LVIScICIX6NmhifSvrzD7ihq7dWKVY29WuYzSSa+Z71D5LGVjOE5ZZ6futgQVyMVhE8poWdnzkQIUp4fS5zKQrBvSV6URMpLKeAH1bSnwlQgXUSStmTK3airbAQJWn59/o6bjzZxe3wfmen30myQiD0y3IOlUZ/uwiMokxgFMDmbBgQTYAp1NUrMBXjCj7F3fa1tnFPG3LilOczPB36WdmKXAFW/k+a6FFfUemRQZC86Li/jVI2zU6A8YXX60ajvaUunwjAsPsk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1481879-1309-4c2d-0e62-08de526bb0f1 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:21.7855 (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: A3qOgOoTVe10V2yV6yNQllTzxFIFRHsBasUxdZbES6A1zgn/r7YTwQqpuYtGbnaM+K2re6PCwkeu/Ce/85JnvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Authority-Analysis: v=2.4 cv=B/G0EetM c=1 sm=1 tr=0 ts=6965e3ed 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=YIe_a-Ur92Aa_-LeloIA:9 X-Proofpoint-GUID: wtu-u8L-TMgfCrO2I9K9uImY4SWPXJz0 X-Proofpoint-ORIG-GUID: wtu-u8L-TMgfCrO2I9K9uImY4SWPXJz0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfX/ah1nOYWnVs3 tdz1/RR3f7WKfhdwMwQSw8TAroHmeb0ONWsdaTHMvE/5tUFchJQauCtv/bPzJbrQt2R/kXCUhrM LAZia+t1jo8hiNnLFh8a6Ljt8bL2cg9T+2HTQRXR1zXxeAUpPM7V3Fu6wWUQfle7qw6/2SC1OF7 4dS1ElcBEDl06W1b1poyYBpxwcF7KNjAui/updkMC5qLVhplHKXQ8ID1mDu2KR/ia16YSqbtx+F uCviBgZD19uVO2F/jnHKXmmB+OMKajzD7xy8OUhHWDD9Ky6taDN7ITXK+LAL5SKMOEPpbvezNRD P/5xhk84pkLCm7pOh4QOQ+HA5sDpKZo1MOXH03lb/ZDN5aLQZb82ZuHA9xxpW39sYpUeTRrDio8 fCnQFvuYYxkDk1ia6RtK9GRAZ3dNPbAMypYIUXfxyn9pYAA7WREqra5NFmmF3YK7q2EJbzb90Sc aBXAewbYMiDfBAnqdug== Content-Type: text/plain; charset="utf-8" To access SLUB's internal implementation details beyond cache flags in ksize(), move __ksize(), ksize(), and slab_ksize() to mm/slub.c. Signed-off-by: Harry Yoo --- mm/slab.h | 25 -------------- mm/slab_common.c | 61 ---------------------------------- mm/slub.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 86 deletions(-) diff --git a/mm/slab.h b/mm/slab.h index 5176c762ec7c..957586d68b3c 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -665,31 +665,6 @@ void kvfree_rcu_cb(struct rcu_head *head); =20 size_t __ksize(const void *objp); =20 -static inline size_t slab_ksize(const struct kmem_cache *s) -{ -#ifdef CONFIG_SLUB_DEBUG - /* - * Debugging requires use of the padding between object - * and whatever may come after it. - */ - if (s->flags & (SLAB_RED_ZONE | SLAB_POISON)) - return s->object_size; -#endif - if (s->flags & SLAB_KASAN) - return s->object_size; - /* - * If we have the need to store the freelist pointer - * back there or track user information then we can - * only use the space before that information. - */ - if (s->flags & (SLAB_TYPESAFE_BY_RCU | SLAB_STORE_USER)) - return s->inuse; - /* - * Else we can use all the padding etc for the allocation - */ - return s->size; -} - static inline unsigned int large_kmalloc_order(const struct page *page) { return page[1].flags.f & 0xff; diff --git a/mm/slab_common.c b/mm/slab_common.c index c4cf9ed2ec92..aed91fd6fd10 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -983,43 +983,6 @@ void __init create_kmalloc_caches(void) 0, SLAB_NO_MERGE, NULL); } =20 -/** - * __ksize -- Report full size of underlying allocation - * @object: pointer to the object - * - * This should only be used internally to query the true size of allocatio= ns. - * It is not meant to be a way to discover the usable size of an allocation - * after the fact. Instead, use kmalloc_size_roundup(). Using memory beyond - * the originally requested allocation size may trigger KASAN, UBSAN_BOUND= S, - * and/or FORTIFY_SOURCE. - * - * Return: size of the actual memory used by @object in bytes - */ -size_t __ksize(const void *object) -{ - const struct page *page; - const struct slab *slab; - - if (unlikely(object =3D=3D ZERO_SIZE_PTR)) - return 0; - - page =3D virt_to_page(object); - - if (unlikely(PageLargeKmalloc(page))) - return large_kmalloc_size(page); - - slab =3D page_slab(page); - /* Delete this after we're sure there are no users */ - if (WARN_ON(!slab)) - return page_size(page); - -#ifdef CONFIG_SLUB_DEBUG - skip_orig_size_check(slab->slab_cache, object); -#endif - - return slab_ksize(slab->slab_cache); -} - gfp_t kmalloc_fix_flags(gfp_t flags) { gfp_t invalid_mask =3D flags & GFP_SLAB_BUG_MASK; @@ -1235,30 +1198,6 @@ void kfree_sensitive(const void *p) } EXPORT_SYMBOL(kfree_sensitive); =20 -size_t ksize(const void *objp) -{ - /* - * We need to first check that the pointer to the object is valid. - * The KASAN report printed from ksize() is more useful, then when - * it's printed later when the behaviour could be undefined due to - * a potential use-after-free or double-free. - * - * We use kasan_check_byte(), which is supported for the hardware - * tag-based KASAN mode, unlike kasan_check_read/write(). - * - * If the pointed to memory is invalid, we return 0 to avoid users of - * ksize() writing to and potentially corrupting the memory region. - * - * We want to perform the check before __ksize(), to avoid potentially - * crashing in __ksize() due to accessing invalid metadata. - */ - if (unlikely(ZERO_OR_NULL_PTR(objp)) || !kasan_check_byte(objp)) - return 0; - - return kfence_ksize(objp) ?: __ksize(objp); -} -EXPORT_SYMBOL(ksize); - #ifdef CONFIG_BPF_SYSCALL #include =20 diff --git a/mm/slub.c b/mm/slub.c index e4a4e01de42f..2b76f352c3b0 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -6948,6 +6948,92 @@ void kmem_cache_free(struct kmem_cache *s, void *x) } EXPORT_SYMBOL(kmem_cache_free); =20 +static inline size_t slab_ksize(const struct kmem_cache *s) +{ +#ifdef CONFIG_SLUB_DEBUG + /* + * Debugging requires use of the padding between object + * and whatever may come after it. + */ + if (s->flags & (SLAB_RED_ZONE | SLAB_POISON)) + return s->object_size; +#endif + if (s->flags & SLAB_KASAN) + return s->object_size; + /* + * If we have the need to store the freelist pointer + * back there or track user information then we can + * only use the space before that information. + */ + if (s->flags & (SLAB_TYPESAFE_BY_RCU | SLAB_STORE_USER)) + return s->inuse; + /* + * Else we can use all the padding etc for the allocation + */ + return s->size; +} + +/** + * __ksize -- Report full size of underlying allocation + * @object: pointer to the object + * + * This should only be used internally to query the true size of allocatio= ns. + * It is not meant to be a way to discover the usable size of an allocation + * after the fact. Instead, use kmalloc_size_roundup(). Using memory beyond + * the originally requested allocation size may trigger KASAN, UBSAN_BOUND= S, + * and/or FORTIFY_SOURCE. + * + * Return: size of the actual memory used by @object in bytes + */ +size_t __ksize(const void *object) +{ + const struct page *page; + const struct slab *slab; + + if (unlikely(object =3D=3D ZERO_SIZE_PTR)) + return 0; + + page =3D virt_to_page(object); + + if (unlikely(PageLargeKmalloc(page))) + return large_kmalloc_size(page); + + slab =3D page_slab(page); + /* Delete this after we're sure there are no users */ + if (WARN_ON(!slab)) + return page_size(page); + +#ifdef CONFIG_SLUB_DEBUG + skip_orig_size_check(slab->slab_cache, object); +#endif + + return slab_ksize(slab->slab_cache); +} + +size_t ksize(const void *objp) +{ + /* + * We need to first check that the pointer to the object is valid. + * The KASAN report printed from ksize() is more useful, then when + * it's printed later when the behaviour could be undefined due to + * a potential use-after-free or double-free. + * + * We use kasan_check_byte(), which is supported for the hardware + * tag-based KASAN mode, unlike kasan_check_read/write(). + * + * If the pointed to memory is invalid, we return 0 to avoid users of + * ksize() writing to and potentially corrupting the memory region. + * + * We want to perform the check before __ksize(), to avoid potentially + * crashing in __ksize() due to accessing invalid metadata. + */ + if (unlikely(ZERO_OR_NULL_PTR(objp)) || !kasan_check_byte(objp)) + return 0; + + return kfence_ksize(objp) ?: __ksize(objp); +} +EXPORT_SYMBOL(ksize); + static void free_large_kmalloc(struct page *page, void *object) { unsigned int order =3D compound_order(page); --=20 2.43.0 From nobody Sun Feb 8 02:56:19 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 AEE062F6925; Tue, 13 Jan 2026 06:19:50 +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=1768285197; cv=fail; b=UhK2aTu8AUd5ETfAZ7BFo1aDE8OwU86z7tsFiyRNrI8vsZPKoUYy5z625liaQk86JoamYC3K2wxFgirhVNDvVdjc7jRxSjK+7v+wIOih8lfE7DEzQhDd0Yvse9E4EzhQtGvtVmYyzzadoJnIrAYg+D3f1mZPOAGp04gKbtmFfeo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768285197; c=relaxed/simple; bh=1Y1wdttmg6i81kmQgc940m2Ppt83MuTkn3QwkUDjKf0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Xz87gFh73m2gkLdf1b7YBI3PLPCvbuSxDvQoj8LfQSKisi3vTbV9wRrfN76eJmS99HBzNox/WRFphwlcaEJ67Uj4Hzv0HW3HY4xwHimFZ33MSODzXkLjMMzegv44M9wJ+A852g4WMqisxmU/E3yxoXY/lqISXpnrl8y2RfFnZis= 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=ev6QoGID; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=lBTLScc6; 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="ev6QoGID"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="lBTLScc6" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60D1gvMR2396125; Tue, 13 Jan 2026 06:19:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=HnXsFNZToNoi09G/P8gJwQcmm/Lt+fUjFgTF/4/Lt5I=; b= ev6QoGIDB3YFErzeKcqsPvFAcclho5cifYMZ/QKhXInrKpAvUGELbbJ5j5c1RA12 KRR48B5p+nRhKfbyEXr21jqjqSFPgBjOMHeR3ZtJAX87SrSOw9QlHp1yPI8ekHfA RCl90Stz1WXS2AM1FY4p7E2XLANpjU7Bp1t6JkG9JU4J2nOhUq8gtQsLa90CRGxK Eb6t5HZzk3nf4N5d3v47sJfmbhA0+lW6kPOZ/hqassUxxxNJzA1OsHlBlX8/dvwX JoaoQjC8vKWP8goc13amC2S4f6p+2g2QKluyKfjmPpEeiMjwfkT18qDOV0/w0FTE z/CyePmEzE7m/5jEsVWn8g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bkqq52w8t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:30 +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 60D5bDQ1029103; Tue, 13 Jan 2026 06:19:28 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012061.outbound.protection.outlook.com [40.107.200.61]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4bkd7j3tew-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 13 Jan 2026 06:19:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tPOdHHV9Y4DZydHVRRzVDLZ5sy4LDmGkln1thPSMVPfJ2iloIavXg6Hr6qG+2pBqNxgVBizTmhMTsp+j13xsQDER8wlM9zx8oa6bFdyiMFhVmes8mGXK6eSxxklPEbp51cMYFmZwlzVBAjztMHYGiMZtZAThCH7iwR+QV0OHPHWfzDgr9u/2Yj+aE1wG1zDBxNMaeBw0PHWgB8hb1CK91MHZB6+WrwoxSHsab5C+XQ6yHu+Dhx6FOJbAlRRaz1gPV39GLK3ucH16Ntl1U1Z93ajByqv3k5Zc28LyqrauBW4LAhnL6yQMLZPhzdJ9bdYgAZ2H6o1jNXp9wWU2/zc9vg== 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=HnXsFNZToNoi09G/P8gJwQcmm/Lt+fUjFgTF/4/Lt5I=; b=CCEVMcQtissRRg6HYnpQMdVIWF0MQTe5Fq1Lhq6Av9EAi8Jh6yRh/uO2X/ndTQ8wKp47I/AXcLAHKZrgmN2TWVZklEmKSZTtAlHd9TPU7fRn6h1mYJsfd1SYruSbrQ82oz2Daoda/bOHB2lIAwOUTcM8RUdH1u/WZbaAKeAeYusWo3WlHR6KThM/p3Ck41zFhmqxyZWT0ysUj/yHjlIAC6kHHCubfE64DFIZtEhxClzlY5pSQmfI6HP6sUWXk8sxnlcfIWUMY6uGrfKrTZqR7axVRk6Z/cGORT9PzDxODSPzrjjU/WahzbYoxCuFoo6gXcV+tXxGH4mmv9PaAgdh7Q== 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=HnXsFNZToNoi09G/P8gJwQcmm/Lt+fUjFgTF/4/Lt5I=; b=lBTLScc6mYca5SJ0l8SpPVivGjuHsDzz9WeKD20wtH6E33ZckyWwILHdkeKGOpGs02LpJTyt07WUgz0CiwufPpisouxgKe3zLuO4vH9bQu1wrOPOt9sJmisXu1+vgB+sK2tBGavfBa7mYFDcPDu/14mZiGqFrxegaOnjY3aSEeE= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SN4PR10MB5622.namprd10.prod.outlook.com (2603:10b6:806:209::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.7; Tue, 13 Jan 2026 06:19:25 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::c2a4:fdda:f0c2:6f71%7]) with mapi id 15.20.9499.005; Tue, 13 Jan 2026 06:19:25 +0000 From: Harry Yoo To: akpm@linux-foundation.org, vbabka@suse.cz Cc: andreyknvl@gmail.com, cl@gentwo.org, dvyukov@google.com, glider@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, ryabinin.a.a@gmail.com, shakeel.butt@linux.dev, surenb@google.com, vincenzo.frascino@arm.com, yeoreum.yun@arm.com, harry.yoo@oracle.com, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, hao.li@linux.dev Subject: [PATCH V6 9/9] mm/slab: place slabobj_ext metadata in unused space within s->size Date: Tue, 13 Jan 2026 15:18:45 +0900 Message-ID: <20260113061845.159790-10-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260113061845.159790-1-harry.yoo@oracle.com> References: <20260113061845.159790-1-harry.yoo@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0125.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c7::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_|SN4PR10MB5622:EE_ X-MS-Office365-Filtering-Correlation-Id: e3a39aa6-21f3-4244-b2de-08de526bb2f1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GwnNwzMyiAiYzUbQ+3FlBMETR80IYOCwZHkT5jb0nr5YmLuU5r/tt2dUj++d?= =?us-ascii?Q?e8eRXL8nBiFRIHSLahgoBB1ma6lgRdPHu6UowjscVADGXYyupj2yM70iP5Qo?= =?us-ascii?Q?ST5wn40MMFH7Gac42DKW73rJLJrB+7a0t6dNcv6f5Y7N9KnGinFpjvWSZD0J?= =?us-ascii?Q?n/8SepaVjzEA0CsNuzlRj6wMJ23yblskWNEOTF3tmryO7GaHnEVvoQ7klbbs?= =?us-ascii?Q?YYXLVFnonDURjIabVrV2+pAS0ctgkbrs94wnRkD6juJsUH1gWIFoHPihGMFH?= =?us-ascii?Q?2xDtYPqKLaggkPv9I63S9YPHcTrf7srdJH1NVIVxy0E/J0YrJS7XwG3gMefO?= =?us-ascii?Q?WcyZ8LQeVQwNt1V80nUtHAIUKowmXZ7EM6IOtGBg5g1Bv/8IAUfjXHN7lZmG?= =?us-ascii?Q?6TFTUUBDwB+fE3A6+5bFJOrbTnzx0a/0I9151ChF+2OHDOyooT7Dz2+Vp3/Y?= =?us-ascii?Q?KYUASCa5dZDhZj00pLRC1o0tyqwKnH+SW6iZVplstTNNNqU3/hbmTKh9Ew55?= =?us-ascii?Q?OyWk2k+pYtPqcn+j0r63L7TcwpsjJNcdb3pBd5FQedcokDZ0aKngxNlWv1O2?= =?us-ascii?Q?3+AGx1Fp3n0CX4kkLsUA7+E5pXDSAetzgjQ8oqLAr/cFSl7wT0Bwdt+yXTMg?= =?us-ascii?Q?KxRpWMSH10HaHSgZcMFVnGIxnhqDTs44YcySTWh38NJCQc+ix1S7ntiKX9yL?= =?us-ascii?Q?U9LAYxUxW6jB03HQsze3xxKdfonk59xm/Hz6dhZh7S1qJwuZS9j+erfqNF/J?= =?us-ascii?Q?I51WpaObd1ZbbSxb5KK9e5vQ0Au94TGLoH4O6A6c45D1cuC+REaUFwYaORJb?= =?us-ascii?Q?XLYPALb/dyti72+E/zFVwg1I6d9hVnk5Kmzsg44zh/F3zsA2GLrCpAR6n0I/?= =?us-ascii?Q?kREHVl9+WtZYLPIzUVMj8CInhgIYLbe8bU4ilm6ofZCcqzNrJ+mS8zRfj0fd?= =?us-ascii?Q?jxBL92MItbsxcRx7njsC7jNDSvafEEgf08is4t+OhKsbccDvCOQ+GarakZYK?= =?us-ascii?Q?9KTUCmHWtb5jK3Dgp3mm/SWzLGK988O+PpY3nHqTixOgcl/Y+V/YApHuV0Ty?= =?us-ascii?Q?+AkXZtBAiplGQIXYJLTaA3clSnvQFxj7TxuCg8dZvGDZPfyCKfGVON14javM?= =?us-ascii?Q?HSCxNlUQJ/qBsrdV6yCUns3iKD+aY1hIxWh1UKxsmw8pq+WjRKIjxiSMIOeP?= =?us-ascii?Q?cc1sgesP8Wi4s1umru6kqlm2z7EwsGobYWlvC0QCAXrBWceL9JirRBbtpvIr?= =?us-ascii?Q?1FH/ObcYc10/XgBo/LQFt+ktTHphHTFEF1z+Q+a7kv89DrC/I9gITxnu4MZn?= =?us-ascii?Q?40wICT20pZJGuuTFg16srtJhDu6TB8jpg3Yaq57KCxYhWRDFMzN1YGfAy9dt?= =?us-ascii?Q?QQQsZE56CuCIcIFmU0RTbEmO7gZQKw4z9kmyBPbIm+/9+NVVX9f0izfs7Mlt?= =?us-ascii?Q?siJewAksS96QUIbXtAxr1h9iytBpkeAT?= 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)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MCKkpuWkxLHuXOB0dgz/7SgCRd2BukgSwq83Ro8KtIr0Zg08zbSpnDIGYHgE?= =?us-ascii?Q?OJFeT2SY6z/9IVzNlnakkw3EfF6xeLqMOa+SEcwwEWIjSBTDRNd0l8qhhkXW?= =?us-ascii?Q?L5ruz9cuFmEXeE5AZSBGsDOmK0fdk5oXrSuEZNEF07IPv820cEHJpxWpNiVX?= =?us-ascii?Q?9aYge3MAxYPwzftLC7nIYTd1pS+aKqysL5cUPMo98hOVAypjWiHzxmyzH+X7?= =?us-ascii?Q?ifXToUzi5tRPv8jOfxG+UTCqm35nzVqN2NlnijIEP1sQrYm78JGImFU0kjPW?= =?us-ascii?Q?7q6pwRJ145TCsNZSv/qDrTQn5bDN44EWQ63l1YetDg6+kj5g4p+zB31vpePP?= =?us-ascii?Q?NZfmCYwK9L0kEIgRWa5JZniEPKwhgY4rDqhlfsK8JCEEgUUom10+OkQubc7L?= =?us-ascii?Q?R1hqr+1q5oYVO1YiSGws+CFUPjeXGxFDq8o+2BswW67cPRTnFlBs8sdgP2M9?= =?us-ascii?Q?tHX0qp8lHFc+C1TXMvPGxrDBk+zdL8F2dsB2MS6QPrvd/BYtkcID3QL7Y00F?= =?us-ascii?Q?yJ3gZUZy2Yus88fET5bxD6ctT3Ua7u9/5rTj5SWBcphkhXSX/LJuXfEd4nf5?= =?us-ascii?Q?R3lYkzF3ZfqiGb0EmED8u9xDRDjS0UBpqX14J9Nag/VI+jLT/cFRSYVfUU/w?= =?us-ascii?Q?7bRZnuuMqMrPtnK/85WgqWyEnoog5NrJx2DuVzmhSI2JKoezxUJRuFqZGny5?= =?us-ascii?Q?X16ObeWjAe9d4ls9xa9JZjuxG9NsFqOW50CM4iEw/MAPjT88zw6+tvsUpIWc?= =?us-ascii?Q?f1OZfYzz89XczmUFLco2q8aIZlsVgDHxof5RjhJnj1M4oVAjylfU3pG5UxKo?= =?us-ascii?Q?Mn1OOCRRxM2SDi5crL6BZFi3gur5j/v4BB7ZSO1di56MLgpWDZve/uYa5VMY?= =?us-ascii?Q?MyDp2LP1OuxgOhGQKMjb7YAy9IRebcPaOIVheicPlG7OunsEZH9cVmKfe8H9?= =?us-ascii?Q?eqadVx93qfRj8RuVOK5WU71gJbLhRcAgUl9cY9Fn7NzgD7+lq5A/IsJlYswM?= =?us-ascii?Q?dyWruBPdzBknIkjD+zwf7aGMLu37m2doxDesoPoVTRsnj74TFu6nWC3cO00z?= =?us-ascii?Q?ZXBfChANhDXiWINXxwJ8+zB7J06RIaP/5HXrAdJYEiKTn5CwvQ0iZVZnVFEo?= =?us-ascii?Q?tzzmKbhqzXX24DF+ubjnKQ5LC34TFS1jX7aW1ncgx9BNrpp81XcHjDcpOVXf?= =?us-ascii?Q?FVAgBzLSMdFU1XxLUlFgqoU9DOn5jh7JMKmDdnWYenXf8wgyogyxFXabtB8S?= =?us-ascii?Q?FdMaqfssdocuSdeYeY9IgtmQTPLFdehDj4XnvKQhzAfAIvY7iP89jzfoEvVr?= =?us-ascii?Q?PZkFXVYb/FsdPzGEt9MaRoOVlXXQ5AZC1w9Lm8m+5lRISPfsdTsiGTNeaNpM?= =?us-ascii?Q?DykgXxFqp+qi7nCrNY5kRumJAccpO5D2xAr9wVBpucY67cNNTeYOzL933+qI?= =?us-ascii?Q?ARtPm3yR7W2M0B3bzMXblguEJQUxMsCstE96Q3R83nNgG/zknXId7Vjhv7Cj?= =?us-ascii?Q?SgEiLTIJUG1wg7AmKNtJPYBXGHHMTfaTk5w2FmIFZZUr98XvdRolRosoCOMg?= =?us-ascii?Q?7ZDq9tIudjV6eLlSkEY7bq0PyfbqU/7eZWFiplmzpkXvRYNqHs56wvclrfEZ?= =?us-ascii?Q?0wk3aUuxbSUntxeU4/BDBOLnWgXayyYeeWzUSgcckhvfQGQkANG2HWqpvEx8?= =?us-ascii?Q?lcagg3kcL10ohr9EsKzHKNbsTkX/PoHAEl0ry7zC682CHFA53iqLgD2uaRhW?= =?us-ascii?Q?xS1qdjEBcA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RkshYZtr3DzJ25rEYAJSjIWRQHtXX/QtZf7WouO557FglmAB72rmajU4NRSL5SAy5MIELbEa0rYFEoAULMlPZPEmKdX7s8l8nVu8yP81pRSDI6+cUSSb49SOKubhaWImveafrASrjJ9RjUqFjTWZFucmyLIEjZeZ2xsvfUQqQDAA+t2+yrhQxwqiK5scnS+Lys6+fPGMeiAppbmAraKDR4HZPepD4SCpbDOn8hhzkO31j0XzXBMttdGetqEFJsZH4G8qark8rCFv1tgCxJ55Egu/lEJ8W89ZAayaU/LrDWhic/ALsqtVILrSjcFMqcyYhNldUX4QH+9AXHE6plUHnJ41say0NAMCqi+rwqR8rrHzoQiA2tkpX+qfxqUxlSJQQ8xq5yZlNwa0qZF40V7RuZV0r4gWMHbosM7IjDS2TBb4PhzscLKYqTEOhwVCha+u/E8zilnIXhjRsFitQmVdHGx6o1obanlYJWrGJL2Db9+h2nX3iN2Jy2dCiJ+bAAkNFU/29nZYMK7Z4RrcoOgfgR6GpeZFoayNoTLRKsWusfNMhp/wtf7jYGgFJbMo32Ic83q7VLVBT+SNVKln6O6TV3X9fwlVdF4gJIhT77uEmTk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3a39aa6-21f3-4244-b2de-08de526bb2f1 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2026 06:19:25.1295 (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: wZyETy2r6vSO1CO0pUGM4gmVt3sV1W+vIty8gRgT3to87raJVSKRqg64Ok236Ejdu1ZiSINtmsuTUTCeTFTk5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5622 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_01,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 mlxscore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601130050 X-Proofpoint-ORIG-GUID: nRrzOP2sXJyRdH0rcLerh5l_KPSZGxdn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDA1MCBTYWx0ZWRfXwrdHoB+xGAuR FNlrYhUsOrjg/4b9L5YdyVhUBeldeyoFHotK/skA72gYpEUigvU2Sg2fk8njSKyif7U4Zrfbkz/ D8UsE6uXazQ3tUB3H3F3HjmorBpUyO7YnHaUm1mIVaqT2m35rtHUGKyzqnTOnTTgh/ofVi0itcp Tp0QpLlTrv1PUJyAPDLxI0F67waiehL4MrPn7p8qKuFeZQhnfIBcThJuk7f3f0FN3za70yHNpi/ 4bhvEG3jq8qpRv8xj5F36/9evEZj/qCg5JZHo5HC4ZkSBJ6IGfIlB7fl7MxkUC1DhcVYLfB/jPw forOF/WwDJR10nv3OoUlZtWTCHRqXpk6pQYdK0b5le/j06xrMm6A3iZf/FqxVvFj/01CmlkghTe OWh4Bp+NSvQ5oTXs1cZPxI6Byh7Lyq2uFsLt7zibyhw0Qv+Egb89i+7pKumpcrrjIQyJFhuhgPj XVr/XLau1PEPW6erLEEGmiBd64kt/cYIUaZ4tfc4= X-Authority-Analysis: v=2.4 cv=J9KnLQnS c=1 sm=1 tr=0 ts=6965e3f2 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=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=DIVfZmhqI3ZMOncJ1qUA:9 cc=ntf awl=host:12109 X-Proofpoint-GUID: nRrzOP2sXJyRdH0rcLerh5l_KPSZGxdn 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) + (slabobj_ext offset) - stride =3D s->size slab_obj_ext() doesn't need know where the metadata is stored, so this method works without adding extra overhead to slab_obj_ext(). A good example benefiting from this optimization is xfs_inode (object_size: 992, align: 64). To measure memory savings, 2 millions of files were created on XFS. [ MEMCG=3Dy, MEM_ALLOC_PROFILING=3Dn ] Before patch (creating ~2.64M directories on xfs): Slab: 5175976 kB SReclaimable: 3837524 kB SUnreclaim: 1338452 kB After patch (creating ~2.64M directories on xfs): Slab: 5152912 kB SReclaimable: 3838568 kB SUnreclaim: 1314344 kB (-23.54 MiB) Enjoy the memory savings! Suggested-by: Vlastimil Babka Signed-off-by: Harry Yoo --- include/linux/slab.h | 9 +++++ mm/slab_common.c | 6 ++- mm/slub.c | 89 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 93 insertions(+), 11 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 4554c04a9bd7..da512d9ab1a0 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -59,6 +59,9 @@ enum _slab_flag_bits { _SLAB_CMPXCHG_DOUBLE, #ifdef CONFIG_SLAB_OBJ_EXT _SLAB_NO_OBJ_EXT, +#endif +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) + _SLAB_OBJ_EXT_IN_OBJ, #endif _SLAB_FLAGS_LAST_BIT }; @@ -244,6 +247,12 @@ enum _slab_flag_bits { #define SLAB_NO_OBJ_EXT __SLAB_FLAG_UNUSED #endif =20 +#if defined(CONFIG_SLAB_OBJ_EXT) && defined(CONFIG_64BIT) +#define SLAB_OBJ_EXT_IN_OBJ __SLAB_FLAG_BIT(_SLAB_OBJ_EXT_IN_OBJ) +#else +#define SLAB_OBJ_EXT_IN_OBJ __SLAB_FLAG_UNUSED +#endif + /* * ZERO_SIZE_PTR will be returned for zero sized kmalloc requests. * diff --git a/mm/slab_common.c b/mm/slab_common.c index aed91fd6fd10..7418719b5ebf 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 2b76f352c3b0..ba15df4ca417 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -975,6 +975,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, struct slab *slab) +{ + return obj_exts_in_slab(s, slab) && + (slab_get_stride(slab) =3D=3D s->size); +} + +static unsigned int obj_exts_offset_in_object(struct kmem_cache *s) +{ + unsigned int offset =3D get_info_end(s); + + if (kmem_cache_debug_flags(s, SLAB_STORE_USER)) + offset +=3D sizeof(struct track) * 2; + + if (slub_debug_orig_size(s)) + offset +=3D sizeof(unsigned long); + + offset +=3D kasan_metadata_size(s, false); + + return offset; +} +#else +static inline bool obj_exts_in_object(struct kmem_cache *s, struct slab *s= lab) +{ + return false; +} + +static inline unsigned int obj_exts_offset_in_object(struct kmem_cache *s) +{ + return 0; +} #endif =20 #ifdef CONFIG_SLUB_DEBUG @@ -1275,6 +1309,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, slab)) + 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, @@ -1456,8 +1493,11 @@ check_bytes_and_report(struct kmem_cache *s, struct = slab *slab, * between metadata and the next object, independent of alignment. * - Filled with 0x5a (POISON_INUSE) when SLAB_POISON is set. * [Final alignment padding] - * - Any bytes added by ALIGN(size, s->align) to reach s->size. - * - Filled with 0x5a (POISON_INUSE) when SLAB_POISON is set. + * - Bytes added by ALIGN(size, s->align) to reach s->size. + * - When the padding is large enough, it can be used to store + * struct slabobj_ext for accounting metadata (obj_exts_in_object()). + * - The remaining bytes (if any) are filled with 0x5a (POISON_INUSE) + * when SLAB_POISON is set. * * Notes: * - Redzones are filled by init_object() with SLUB_RED_ACTIVE/INACTIVE. @@ -1488,6 +1528,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, slab)) + off +=3D sizeof(struct slabobj_ext); + if (size_from_object(s) =3D=3D off) return 1; =20 @@ -1513,7 +1556,7 @@ slab_pad_check(struct kmem_cache *s, struct slab *sla= b) length =3D slab_size(slab); end =3D start + length; =20 - if (obj_exts_in_slab(s, slab)) { + if (obj_exts_in_slab(s, slab) && !obj_exts_in_object(s, slab)) { remainder =3D length; remainder -=3D obj_exts_offset_in_slab(s, slab); remainder -=3D obj_exts_size_in_slab(slab); @@ -2340,6 +2383,23 @@ static void alloc_slab_obj_exts_early(struct kmem_ca= che *s, struct slab *slab) obj_exts |=3D MEMCG_DATA_OBJEXTS; slab->obj_exts =3D obj_exts; slab_set_stride(slab, sizeof(struct slabobj_ext)); + } else if (s->flags & SLAB_OBJ_EXT_IN_OBJ) { + unsigned int offset =3D obj_exts_offset_in_object(s); + + obj_exts =3D (unsigned long)slab_address(slab); + obj_exts +=3D s->red_left_pad; + obj_exts +=3D offset; + + get_slab_obj_exts(obj_exts); + for_each_object(addr, s, slab_address(slab), slab->objects) + memset(kasan_reset_tag(addr) + offset, 0, + sizeof(struct slabobj_ext)); + put_slab_obj_exts(obj_exts); + + if (IS_ENABLED(CONFIG_MEMCG)) + obj_exts |=3D MEMCG_DATA_OBJEXTS; + slab->obj_exts =3D obj_exts; + slab_set_stride(slab, s->size); } } =20 @@ -6948,8 +7008,10 @@ void kmem_cache_free(struct kmem_cache *s, void *x) } EXPORT_SYMBOL(kmem_cache_free); =20 -static inline size_t slab_ksize(const struct kmem_cache *s) +static inline size_t slab_ksize(struct slab *slab) { + struct kmem_cache *s =3D slab->slab_cache; + #ifdef CONFIG_SLUB_DEBUG /* * Debugging requires use of the padding between object @@ -6962,11 +7024,13 @@ static inline size_t slab_ksize(const struct kmem_c= ache *s) return s->object_size; /* * If we have the need to store the freelist pointer - * back there or track user information then we can + * or any other metadata back there then we can * only use the space before that information. */ if (s->flags & (SLAB_TYPESAFE_BY_RCU | SLAB_STORE_USER)) return s->inuse; + else if (obj_exts_in_object(s, slab)) + return s->inuse; /* * Else we can use all the padding etc for the allocation */ @@ -6987,8 +7051,8 @@ static inline size_t slab_ksize(const struct kmem_cac= he *s) */ size_t __ksize(const void *object) { - const struct page *page; - const struct slab *slab; + struct page *page; + struct slab *slab; =20 if (unlikely(object =3D=3D ZERO_SIZE_PTR)) return 0; @@ -7007,7 +7071,7 @@ size_t __ksize(const void *object) skip_orig_size_check(slab->slab_cache, object); #endif =20 - return slab_ksize(slab->slab_cache); + return slab_ksize(slab); } =20 size_t ksize(const void *objp) @@ -8119,6 +8183,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 /* @@ -8228,7 +8293,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