From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8981EFD9E30 for ; Fri, 27 Feb 2026 03:07:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CC9126B0088; Thu, 26 Feb 2026 22:07:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C893E6B0089; Thu, 26 Feb 2026 22:07:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B4AD06B008C; Thu, 26 Feb 2026 22:07:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 968F06B0088 for ; Thu, 26 Feb 2026 22:07:58 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 11A8D140493 for ; Fri, 27 Feb 2026 03:07:58 +0000 (UTC) X-FDA: 84488752236.18.91FB2EE Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf23.hostedemail.com (Postfix) with ESMTP id 7CEB4140004 for ; Fri, 27 Feb 2026 03:07:54 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=BY1nop6Z; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="HYk/ZMtR"; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf23.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1772161674; a=rsa-sha256; cv=pass; b=mareOnbpiw+XLGPrpmNxrcjpibvAEJEK9C9UHom6qcGnpIZ5zUHzBnhqWhi8lWrdzAO891 wWvVABqYMR7z4sjBeF5HIHatRBFtnbxjK8174z7qNbScWrPdC2KwcuC1+lUFTviUt7gp96 lFCLNqsuvGHVU1vJjB1IaNqBvyfzhKM= ARC-Authentication-Results: i=2; imf23.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=BY1nop6Z; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="HYk/ZMtR"; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf23.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1772161674; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YZmbpr/zczQv/qMD77EqHFB2rlL9r9Ug8jysY38aN2o=; b=cPtO5L1MaMuW0crvfTVxSZWtkOjpfAbbeVTtujuEpx4sCQe5P7DkbFmahZ5c+GyX9dWNyt dzuhJx2aJ6NWGCKeDDPhsLfFb7/7oLCFrvBYHFTZ4gRGXbWjHq6JK2cSDdy9guZJxvVKi7 Irdpq2eXrAzUCK5aBikq1Bk3wPcNYis= 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 61QL2ahD669812; Fri, 27 Feb 2026 03:07:47 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=YZmbpr/zczQv/qMD77EqHFB2rlL9r9Ug8jysY38aN2o=; b= BY1nop6ZF4oYLJHQjUk/6RocSRZyL53m1nd0nWnUwNDA8CEVespdDoMu1lWDZETl FeqWwE/jQYbe2QAaZXVJkK/3nTvn69PMObeSfolO3Ce8A8IGVGd3EauYGW54qR/d Jf3pQ0btFtK6aZBg1cB9Y/mmTo01mFUGtuBz3lg2bHX1GCbtsERrGDJWWDAigTSQ br+UtjC9BgkKWCXkOxbb388JlzlkNH0IV8GbX81ms5wDfo33i26sYccrUhHVFOUw pjcJ6JP3mJu9MFjvUhje5EuYNM+gw01Olb/W97UY09TKtQbwR1fFu5ONNPjbhQIS mIGvQexOu1mo+DA9HOhgWA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m81hc5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 27 Feb 2026 03:07:47 +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 61R0g1LS006268; Fri, 27 Feb 2026 03:07:46 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012059.outbound.protection.outlook.com [40.107.200.59]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35dj11a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 27 Feb 2026 03:07:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eUyRQXXej1SDzvgz0GlIGlpCYTt3EIyQY+EZHzZCs4+N+v5AeJMDgtcJbnOcbIKPc3hb0eJIwpx5C4saPSxEDXa16NSje0nAizYX39+uo+cynlb9ILZTaZwhf+jnPSHJJU1LuLwAQqrw85XPQhVPHdHOa8l2NgpqrCd6qaB02hUzGNr9JKGnTy7U/c1nJF9LWGILPI1Gl0dsTPKe+3buhvsAqvYWgIEGd2oxlKOUL1x/O0qacm2VTOmiGUtBzO0q+987rAPriMQx0c/HXT+laXF0/X2gvNwt4ukpwsiv5RVHWUq6ckKhIK117EWtmgOBGzIL74TLZl89IV3UJjgGSQ== 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=YZmbpr/zczQv/qMD77EqHFB2rlL9r9Ug8jysY38aN2o=; b=ac1eyEhaHePuQsHrv6wxuzNgW+3I5AT5e38RT9ieMbO6T2R7fDisLsb7AgZtAk/7sxc4gbeuz+N8Kx9I0WYI/92/I0rIkUkXt/0dEqIOk/oU37YavMMOBqwovTWpgx/KnLjr69Cfzyu6gLbWrl9WjCpmHB9T0JK6mttLRDv//5zpvnGn2D+2m5DG7KB3MDIf6HoMtSnL9b4khoauabcyDyeRf0X0+cZurT1enM/na6v6cg8NJRnIufEzYHFPuI/q7oBU2v/KxXHtktpZAm7sDvndj9aBTQFwJx3OPVdB2K5Uo9Q8QMuMm9OQBTMjRb6qQ6P69cQMjLPyhV3WN0dEPQ== 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=YZmbpr/zczQv/qMD77EqHFB2rlL9r9Ug8jysY38aN2o=; b=HYk/ZMtRymCjqBB7llsRvJvShUbZT3C0OiUa/HW7vOQWOvgGo5TPBgX77RJKjRljEtKfrjFd3BjmApfA+S1qfBmFF5doxMz2AOVUjXt9yA4L784DXxZ/H1IxZSiyl4Rz46nqyy1qSlHSduSDc0S4ef6ToU2zZRx2MAPgGLY3Cak= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by SA2PR10MB4537.namprd10.prod.outlook.com (2603:10b6:806:116::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Fri, 27 Feb 2026 03:07:43 +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.9654.014; Fri, 27 Feb 2026 03:07:42 +0000 From: Harry Yoo To: venkat88@linux.ibm.com Cc: akpm@linux-foundation.org, ast@kernel.org, cgroups@vger.kernel.org, cl@gentwo.org, hannes@cmpxchg.org, hao.li@linux.dev, harry.yoo@oracle.com, linux-mm@kvack.org, mhocko@kernel.org, muchun.song@linux.dev, rientjes@google.com, roman.gushchin@linux.dev, shakeel.butt@linux.dev, surenb@google.com, vbabka@suse.cz Subject: [PATCH] mm/slab: a debug patch to investigate the issue further Date: Fri, 27 Feb 2026 12:07:33 +0900 Message-ID: <20260227030733.9517-1-harry.yoo@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <84492f08-04c2-485c-9a18-cdafd5a9c3e5@linux.ibm.com> References: <84492f08-04c2-485c-9a18-cdafd5a9c3e5@linux.ibm.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SE2P216CA0184.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c5::11) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR10MB7329:EE_|SA2PR10MB4537:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a15545b-c56c-46fe-480f-08de75ad5f83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: 2iLyRGpKurtPYdMyGRP9hE+lhQ43J6Uf2NjA8DflQI4qI9kBopOL2dEbuLXBl2esIlRuct84l4fjpr368Zuoz+bI4c6vxqWP67TBIHvWcG6WUFROS7vfYuUuYM75JqJF6Qk1YkzUh5jKZxVy72Qa61LYFcGfRLWNvLMs5SRLAAjoiUgNbdwYgU4HS9q0EAL4R/XYk+l9B1KemOoTw4UPzeRoUwfqgcVfL5pssYaSZtRcaRitU55ACQs2EIj3HUB8IssYlsJsNRZnPpLa3SU9v1mq7iaYg3xMhO0sFRHdwpti02H/nY9w0Hw1IGlii89nqO2mm9AIFOV0Qo2+uzAMKNRgVRYh45JaUwPct9QmTnKpFZRcvAlgDt6SfGOROtreAE7hxIr+UYAHBHVSgPjdz4Hf1yc7UXyJTDvZwjOrdBH+5cQbVg8jW2iXJ9zWcnpIYRzxDgeHHA/zs3Qzyd68Yqz1jbiuTuzFoij0umiVNsKnghlILJd1VkEp2xxgh0xKr/UXCCpQmMcljIBywkMDbm6R2+OY3rLioz44qg7ptfZCo0L9ujhb2t+waoGA8N/EsdyNEXXJjLbufZecVm2uZWSwzZVM8QAzmE6kH1Lt5SeGiixtIQJHCoz1Op8FsM+laVVuiJUYyejGULkRR91iKCLAYVMvTx8/1pXhZZijn6HXdTlF0erOXt8i+jg90BWkhnHr4Fm3wr4t29CCEhhGKBz9kWU0SU/e7Yxtg4XJa7E= 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)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?igCQonxkKCF+nXYLT3uxgTPlHpku49VYTP5MMuYBqhdEcCvvXGFjEtkdhDl7?= =?us-ascii?Q?2WBtrTpUi5VUlszrWbXA8lrI2bCENI4Svvw9eB5afB5d9vLoPYnbZl2HjdnI?= =?us-ascii?Q?C7bgeCSsA6V0PfG6/X2KnBYXLlHPWFOLjBtZnfbWlQ/N+bK7f39CzYr1Ye2U?= =?us-ascii?Q?tMg6WDl54RMh4d0llg2rxjWT+hvVfLVa24GR4PBEded7qYVX/TCtjdVh9Ch0?= =?us-ascii?Q?ighCqZs+CvwO4mFHJMV7kYG6poksxTqWMsQoADsAo7oclklDujjMnh5pfOml?= =?us-ascii?Q?y32CWeiLgQjci2h8J3LVXqHsTI9tQ1aZmO7QtgQ2XozcdTsttpqLp3Wil7y9?= =?us-ascii?Q?xKhbcMZrYSYOdP/ZI6Zbi+zqbgypZiXiBPIBJUXz6NuvS9xczedI10ZRXNOZ?= =?us-ascii?Q?Lk6mLVniwJewo/gE/KXVdXZ/NlHDqEXJvXXQb+M7DpsaqWaDQ4+qhBYCqs+M?= =?us-ascii?Q?cGIa48uUMDSGGIw9Evrf0fFzjHdZr1Vdt+7V/FMzEBYWJMhyVAVzyu/IInRn?= =?us-ascii?Q?VqDTHh2giHTSLfs++dZAQ422eGhiqTm5XG2Hi0mARbNbuTpR+lF7wUgMFgPY?= =?us-ascii?Q?jhfEpOC318Plha2266z+LiRECX6plOurumRxMSzrLrQGJmN7qj5DMwCy19GZ?= =?us-ascii?Q?Jt1WXpNYhyEo754B8vHbjMsNM/obOZX81uR1PNENPojxaQ7X0k+RP8KjJ0Sp?= =?us-ascii?Q?SNP1mMSfu3iA9IAtOAbajBlBc1jctPtCKInMRI2RNR5WJe7xlY7SEr1OAlSL?= =?us-ascii?Q?kXOpUgTGBsjLnXFkI/ij5Pz75ZSgAAz4KtlWLYTt+6PvLIlLDvNNPrgJ8wnm?= =?us-ascii?Q?lNt2DJH1KlfjKFC43B/FEPwnLGSZ0bN9l5DRw45FivbGZmEYdQIGi6ObsfKs?= =?us-ascii?Q?Rt5qlW1HMtxslJSGo54YJl9eGesgaXitVVaJNZL21FKNPm2L6vuXluYAOrSo?= =?us-ascii?Q?p4En9hWSHyN4ipGIvOVtU86njaWL13e4ybQowOtRJfHuFFj4rfanf3/UExe9?= =?us-ascii?Q?yl2emTuyAFQW/x1zz+W1VHPEYF1dM+hgdncvpMm/n/iCokH8j2KhipiwlZM2?= =?us-ascii?Q?S3KLGLwdtBWtRlficZPehXOq1FO/7+RLAdTZD7fHjkpYvvnaO4kKfYQaMVNh?= =?us-ascii?Q?UpY9Q8AavfIUDfWE88DnIWeaZScFn8z06rHJmot7zatMFCpFPsF6u53DJDPS?= =?us-ascii?Q?XHYvUNV8TlM6pSCKP40OnJScd98E1ZFjFsUmezhJs24T6dGd16uN+viQYEF/?= =?us-ascii?Q?DcccUMOy6c96c8VaSC8N3cZu2vCOx3txhTNWFxz3W/+4aFTkguUm6ZNmyJTe?= =?us-ascii?Q?xs32CeAwCJCaF+YfBeG7B6PbrIZbgbOPvRKkO8t+OzYJW4kcPKrBxo8Vl87A?= =?us-ascii?Q?JBT+MgXa1GkdW4tOai3dL7tGoGZUrKlx4FFhx/08rg5TjnnCjZ29g/I7vdEl?= =?us-ascii?Q?5PJQDD2YA88v5nv36q6g17YsJaGm4DWTuKr6fa9Edpu9ui54C6DhLWVNebFk?= =?us-ascii?Q?23w7zvjq8nBEHX14bRKpzd0wwmQI4c/dbkokQybi9x7MTNKXkehtnrqrAAj7?= =?us-ascii?Q?8E+s+CwI3uX3CXeinizAHS+pN6Vz5Zo5IXUSWLTnXeRlhrKbuQmkLJZzcS8s?= =?us-ascii?Q?gHre8IFU2jssgqTlaoDMlcUhyTkjxFSxVmoRJLeqXOnYteUeQwvmCIkYFpLg?= =?us-ascii?Q?EfoD6sQGVF/3oBNbl9UXf6yYA2Z2IRl4x/nypliVMu6yW16A+m4KC3BPAIl+?= =?us-ascii?Q?WQhKDWg4BQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: LE/HYbtxHo7RYcW3ZM+aTCVS5ZDrxt+urB2unvPpZE1HcbLijDEuYOqS6gBEpKyOTEPeTXiFhAWjT8uKV3KvXUCdCs6CIEN/+cXVlGYosEYh7HZqDgj25HsdoUiLVxLY792QSXPW1sD8bnDixc8heFKBPQYrtAVSeqd7nisVmy5lkOBMjEPCVgMblhSMTSGNh7406vkpz98mDpuJfaad8smmf5CVyw8/oaNWDmfdB8fweS8vwhjZjuOKKte2PZm0L7VkdNLE8hGw+gowIToZYq1KJerfiQ8VSe3FMpXYngduuJ7nlAk/rXG5PFkE5MI0yAkaZ7H8E5VBMOtWCi7Jr+WYi0+6Mc/KXjcDGRTxtYBuigydSskN9jBaZc1TrKT17vH1X2z6qbqa32Oy+ltpeuOZGiTa2yqKfl2/Aie+2RwrS4P2SVVkK/P3eueJJsni6ES3Q9oDaq3V3hewNREHCrQRtTtKtefJPyN4jAersE2XNCfHc7HwAtRXF6uXqj2W2tDCKaDJvEDZY0QAkr0iSBazMbSUxx9U3O0++nQlQUHq5zKUXtoAlpWOvfqLMuOifIGTYLvgm6IEDbUU6T260tGlcGblSpkDWINpQk8Mb9Y= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a15545b-c56c-46fe-480f-08de75ad5f83 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2026 03:07:42.7703 (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: bZx7xY7SHvFkWEnoKm6WzSYOjLzH2LB1P/K04T7A7fhyDvHGL/wqNK4mtw5vgUKe4DC5OR6gUO/3Y8UvXb7wpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4537 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-26_04,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602270021 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=69a10a83 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=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=bFrn26Ckjei5HVmXeJEA:9 X-Proofpoint-GUID: U56YpuhBK3LtF7AcpehNn7wpNVLXjhJW X-Proofpoint-ORIG-GUID: U56YpuhBK3LtF7AcpehNn7wpNVLXjhJW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDAyMSBTYWx0ZWRfXxe0yg1qxmFtz rl6SWjix2NECbrQ/A1uiBJ+xOSxfQ7Dq7AuTkBw81n/lukhQy0hwsuwopERFV7+y20GpOqv/+1A VGMxo0KWw/E8zBjV704Obgis1B1E88tP0XhxHSpKglM+JjB0TB5fyo2OiSPi6qzhdNm1JcVXt+X Lr9SDEh8QYv5T45KYvVLItnYSuWzASquMtIKmYes5lajSuoiHeaDTW3LZVguht16MvgkZPqjjss ojpeGW2RG+UHegYg1Ops+EO/mXa0Q5rgfxPbrOSRRDfeRVSDAj7flUAu/BBafXv3Ws+D9PT5bQ4 dhRpe4bEpQ4ROZ6l+qTlWBaNe806GLaOi1Fpk0oGBmYiFreX8FYRXNfGFimkp8rhWQh6w2Xkx8R g7FIdep3udZVZrDJy09gHMzHlegKaDgDoPL5Y432GuW5OC+fmuooRuGXUUYsf33tnbJ03WMDIAJ N3PF7tCDdu5bjg6psQg== X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 7CEB4140004 X-Stat-Signature: zthnxicse9tzkef1jka1g6jncf8krdiu X-Rspam-User: X-HE-Tag: 1772161674-226297 X-HE-Meta: U2FsdGVkX187vSox/12YcHf8hH0hofrihosL9Cz0lC7F4qxMqdKyPooutqgyM91FnbyNbl1DdBpGKy0lzquHsUOlSQJZBm6ERxYXF1TZC1Phq3LD/ERa+3gwbyg/dMheDDxxJrEuYAWs2r9mvA6AlFxF+UkXoNU3HIUJVIUasAL9D+dJoTVcKyo2kU0ShPqaIv/GgKSVJJ1QCFoV9nd+I7Khi3y8rkJxTMqDhdMD9Zg8BNUQAWPkgGgFJXsvnDpEpbYNp0YIyLeguI0YGwQ8/fB48CaVzGw59Bz99HzZE0LpUqbtjP1kXW7Rptf4w1VRc8lFQMgBS18Tmqh/hwz0rUn5ApykU38XtFlmtfArmJvwiWT2Wl3F02KqT8v9h/i9ikDbhIYqM6njNDPA21RmYVEd91CXuEh7wuSutHOERUumKjoEDgC/j+BnEa8UernzctGN+oJvFQQ+z2MLW5jeUN9O9So7ytiZ2j1Glh4R/bKEtwx9Sn+UDfawUeyyz1+RYROXvAq1cR/c+ZLJ/46Nf63UQB0opvNNQYMOe5ABYZPdwmuL95knKFqj3gZd2MaDXNDVI6p8QTL5N1A1w8hs8XEOpHWBY+HmdNPF6fVtOAABBlWAaQvefV76Y6z3sJLyDsCwhPSE8VVtzU0GSAXXvvSsoxic25pvVcMCL3wv7b8Q6VhnbTyLkTcIlcvxtlm7qCV0HHAF6nxw/GTWbispBvZKTvu74K6UJ6/hHU64oovu+aljAkusWNjoku1EXakasYbz+prRNcVv/r0+B3vCPUOeoDh2Rc10RNT5sIGGLZduTXOJv22bwyWFBlG+cUCLXVhGzZoREaAOmySBjnsXXtXL3ukBLOOFJSKG7Re/LcwOffx3IplcqaPry+y1gn/CdP+M7yik0pjQ7W1sioBULvlXYkUzanB2k47ddkaUOCtmVBq9m/i1G+6cSeSUUmMtRJqk2vqZL8KqI2ISl17 FQzMOi2B xR1+BdxnsEOJYpCYdCKAyWvocrOD9L+lPQ1gi/3vbhgtn3D5d3D52Zyi8Y3oAYuqY1CjByFC5SuJ6Il39LJbI55PTqG4EQAsvmaCcxixI+/D9lMD6nWQIaP/ZaCMkTHpdCvW8SQxYm+qfFfl3wRL2kN3BwNcUHGAV82y2SAE4Bc1w1nH3uDj2FIJxv9WKZ4+GodePZeaT3TVfyDDYi0ihwWSP/n2DH/Q3M+At+2nRPk/xTiQ1jOLSusZmG7NnronnpMng+VqUALvyigi7k4HQyZp1a3cNS4typeUmssUo5QetpZPqge+MG4+8T0Mtz6tVzo8L274ZfIDo40x0UKHrJP/l2KtN+kruJ4roisdPT/39Ajb1+TylSeupMUc4xgpZK8dAR7BkdoeAcHOSs9BhiOuSI1+GZLIjepe6LGL625NY32+Ta/fh83kvWX9CINetxDf8oa60LlHnNe6uPlkIHCdnilZiEDXPoMvNu5pSkzZeL51DnPp4qqJLUY3V5qOL0s4B8zlPnuu44JvAjNBjLS3bzUOXqY0Wl/lBeXuK9+QpgRN0mzWSKyA7UaVZGdBiRhdO4g8g8WVHLm2ENM3h5R6k0+SLpq3auuCLw/WbSf7DfsqgYu9YRNPfNFYRZKb4gRWpR8+Mm81bGlo= Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Venkat, could you please help testing this patch and check if it hits any warning? It's based on v7.0-rc1 tag. This (hopefully) should give us more information that would help debugging the issue. 1. set stride early in alloc_slab_obj_exts_early() 2. move some obj_exts helpers to slab.h 3. in slab_obj_ext(), check three things: 3-1. is the obj_ext address is the right one for this object? 3-2. does the obj_ext address change after smp_rmb()? 3-3. does obj_ext->objcg change after smp_rmb()? No smp_wmb() is used, intentionally. It is expected that the issue will still reproduce. Signed-off-by: Harry Yoo --- mm/slab.h | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- mm/slub.c | 100 ++--------------------------------------- 2 files changed, 130 insertions(+), 101 deletions(-) diff --git a/mm/slab.h b/mm/slab.h index 71c7261bf822..d1e44cd01ea1 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -578,6 +578,101 @@ static inline unsigned short slab_get_stride(struct slab *slab) } #endif +#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 (s->flags & SLAB_NO_OBJ_EXT) + return false; + + 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 = s->size * slab->objects; + objext_offset = 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 = obj_exts_offset_in_slab(s, slab); + unsigned long objext_size = obj_exts_size_in_slab(slab); + + return objext_offset + objext_size <= slab_size(slab); +} + +static inline bool obj_exts_in_slab(struct kmem_cache *s, struct slab *slab) +{ + unsigned long obj_exts; + unsigned long start; + unsigned long end; + + obj_exts = slab_obj_exts(slab); + if (!obj_exts) + return false; + + start = (unsigned long)slab_address(slab); + end = start + slab_size(slab); + return (obj_exts >= 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 *slab) +{ + return false; +} + +#endif + /* * slab_obj_ext - get the pointer to the slab object extension metadata * associated with an object in a slab. @@ -592,13 +687,41 @@ static inline struct slabobj_ext *slab_obj_ext(struct slab *slab, unsigned long obj_exts, unsigned int index) { - struct slabobj_ext *obj_ext; + struct slabobj_ext *ext_before; + struct slabobj_ext *ext_after; + struct obj_cgroup *objcg_before; + struct obj_cgroup *objcg_after; VM_WARN_ON_ONCE(obj_exts != slab_obj_exts(slab)); - obj_ext = (struct slabobj_ext *)(obj_exts + - slab_get_stride(slab) * index); - return kasan_reset_tag(obj_ext); + ext_before = (struct slabobj_ext *)(obj_exts + + slab_get_stride(slab) * index); + objcg_before = ext_before->objcg; + // re-read things after rmb + smp_rmb(); + // is ext_before the right obj_ext for this object? + if (obj_exts_in_slab(slab->slab_cache, slab)) { + struct kmem_cache *s = slab->slab_cache; + + if (obj_exts_fit_within_slab_leftover(s, slab)) + WARN(ext_before != (struct slabobj_ext *)(obj_exts + sizeof(struct slabobj_ext) * index), + "obj_exts array in leftover"); + else + WARN(ext_before != (struct slabobj_ext *)(obj_exts + s->size * index), + "obj_ext in object"); + + } else { + WARN(ext_before != (struct slabobj_ext *)(obj_exts + sizeof(struct slabobj_ext) * index), + "obj_exts array allocated from slab"); + } + + ext_after = (struct slabobj_ext *)(obj_exts + + slab_get_stride(slab) * index); + objcg_after = ext_after->objcg; + + WARN(ext_before != ext_after, "obj_ext pointer has changed"); + WARN(objcg_before != objcg_after, "obj_ext->objcg has changed"); + return kasan_reset_tag(ext_before); } int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, diff --git a/mm/slub.c b/mm/slub.c index 862642c165ed..8eb64534370e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -757,101 +757,6 @@ static inline unsigned long get_orig_size(struct kmem_cache *s, void *object) return *(unsigned long *)p; } -#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 (s->flags & SLAB_NO_OBJ_EXT) - return false; - - 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 = s->size * slab->objects; - objext_offset = 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 = obj_exts_offset_in_slab(s, slab); - unsigned long objext_size = obj_exts_size_in_slab(slab); - - return objext_offset + objext_size <= slab_size(slab); -} - -static inline bool obj_exts_in_slab(struct kmem_cache *s, struct slab *slab) -{ - unsigned long obj_exts; - unsigned long start; - unsigned long end; - - obj_exts = slab_obj_exts(slab); - if (!obj_exts) - return false; - - start = (unsigned long)slab_address(slab); - end = start + slab_size(slab); - return (obj_exts >= 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 *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) { @@ -2196,7 +2101,6 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, retry: old_exts = READ_ONCE(slab->obj_exts); handle_failed_objexts_alloc(old_exts, vec, objects); - slab_set_stride(slab, sizeof(struct slabobj_ext)); if (new_slab) { /* @@ -2272,6 +2176,9 @@ static void alloc_slab_obj_exts_early(struct kmem_cache *s, struct slab *slab) void *addr; unsigned long obj_exts; + /* Initialize stride early to avoid memory ordering issues */ + slab_set_stride(slab, sizeof(struct slabobj_ext)); + if (!need_slab_obj_exts(s)) return; @@ -2288,7 +2195,6 @@ static void alloc_slab_obj_exts_early(struct kmem_cache *s, struct slab *slab) obj_exts |= MEMCG_DATA_OBJEXTS; #endif slab->obj_exts = obj_exts; - slab_set_stride(slab, sizeof(struct slabobj_ext)); } else if (s->flags & SLAB_OBJ_EXT_IN_OBJ) { unsigned int offset = obj_exts_offset_in_object(s); -- 2.43.0