From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012035.outbound.protection.outlook.com [40.107.200.35]) (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 0C57C3168EE for ; Thu, 25 Jun 2026 18:26:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.35 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782412018; cv=fail; b=heU1Ev/T3xBAZaKm1B4N9tL7N9Ie/pAk8fWlw6OaMGizwwGXrVI9mUwX+UrQALBtOTGhWVg3fGtbffkz/jQDRY16cE1Z3ZkxmPb4+HlK3EcINwkiqNuTu1L0JsBK4yvPzitDGfuwDTOFo3WdvFNBTHCU2WsphWKvb/GbAeARnbs= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782412018; c=relaxed/simple; bh=r2gDaG/chwfjcIogyAt9dDr67mV16ypAHCEDbal2fiI=; h=Content-Type:Date:Message-Id:Cc:To:From:Subject:References: In-Reply-To:MIME-Version; b=LkOlJzT0ZwlTcbC823yHQ221HXFvyaZtho5J8R5/kefBl2zL6qPHDYNpJaJJIm2B9aixC305uxm2E7LoTSNmsPfl6zGD7Qtk6xepbsZL1AWxqpN4Dk1pv2Kh4ZmJkEoT/hH5/+KOdoYNsbntcStrTzdiFyHP04EcM9zHwCEL4fI= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=fi4qdJmH; arc=fail smtp.client-ip=40.107.200.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="fi4qdJmH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=agW43CtSoV5hQnFe1QXxYt55424I20MfjLZN4DoSlUb0ixC1EUbb+bdYg+Wni26sxDB1xKAzOfweAh37yp73gWtWgIqz+/CBL1HNbMZDMqqbKW/TMByLuPribYOZBKfPWHuVUtyCRoPyjKwSUc5Pm4gJHITzaoQEOelRrC/RncAnUqG9r9qdaEN6M4mgS1B1ADKXl/MGkbrK3w1gMob+Wmyu+MBVxmNNaUQc8oaPNc7EQpQGuBepqymcTeUIafz+sxTHrAciiQT0HxTdNQbqtJ5jQbd+MHAxWvOAs5s1w5zTg5aOTktdZNK9Ec9nwsiCUg6zZPLxlkm7inIffAdQ9A== 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=fuwztvLU5nGoOhyPcQkOeYY+w2ohT/S4bIN2BafKmIs=; b=Fnz+svWzhRkmALahteIXE+lnaQ0wPeNlydeWxNndpgE6p3dQoIN5BgG1i2C0Au/C2Lkwe2BHA2E2AyQHfTp6b8OcX1HAGsYute6a6dOQnpoQapthbA+FHMYr9/M/iZZIYt9u8et/safmNChOd75OIVhilOCSkg44h1QklP8HC1xADFcR6rNdvVsTX0ufls1311S/DzvS/9rLX0STZsAs2NTIJqzzz8SqYWFNJg3aKmB6oR83Y2llTHInIuGVw8XfuL6D6pa/Baa7ayQgsYSqMmt2qKLuxAUl1Ku1xFWSWvxzGoJF0PKgSww5hrNKFL4Ds3aoazDWWPWc7wOZFlWtAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fuwztvLU5nGoOhyPcQkOeYY+w2ohT/S4bIN2BafKmIs=; b=fi4qdJmHEeQcHahIcFj+wzLiZ0M5z4Mmr1C6mIJpr8bOpgUs/zptK8saagOwwvmci/5jKm4pNBNPDCLZrE3oWIXACSTnaw43eUsNyW7I5qjpcJ9TjTMNm8OVb4skfJr7K0WW6rNp5Pw4fW0tcKyAVTVYEfVyc3GZX1jPMRShhtE7li3sMAkzi98vvu7ysLPJ/lfIjVpYGd6skMeo4ftjU2ZCpNTPiz4Bwbb0LzM43Rs8TAmYGtgpJNxmLf/72n56+7tFsbSraKdkWzVHDNpddIodlmBeYU8gA6tzo8EDC8IzTSSovtNvth0OaFBdBNcBRrit5chXYyFcLvLJwVuLZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) by MN6PR12MB8541.namprd12.prod.outlook.com (2603:10b6:208:47a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.17; Thu, 25 Jun 2026 18:26:52 +0000 Received: from IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16]) by IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16%5]) with mapi id 15.21.0159.016; Thu, 25 Jun 2026 18:26:52 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Thu, 25 Jun 2026 14:26:51 -0400 Message-Id: Cc: , , , , , To: "Zhen Ni" , , From: "Zi Yan" Subject: Re: [PATCH v11 1/4] mm/page_owner: add print_mode filter X-Mailer: aerc 0.21.0 References: <20260625043101.338794-1-zhen.ni@easystack.cn> <20260625043101.338794-2-zhen.ni@easystack.cn> In-Reply-To: <20260625043101.338794-2-zhen.ni@easystack.cn> X-ClientProxiedBy: CH2PR18CA0029.namprd18.prod.outlook.com (2603:10b6:610:4f::39) To IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) 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: IA0PR12MB8374:EE_|MN6PR12MB8541:EE_ X-MS-Office365-Filtering-Correlation-Id: ba2a5f1f-5a9d-4c43-325c-08ded2e75459 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|6133799003|56012099006|11063799006|4143699003|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: fay/kAIWHcjvTkPhNA2SO178EWIkK5PajDpwAHA4or8WQcz83sW48wn6yPS8IJU0dXzr0hQArHwc0ssL2O2JplUe5/QokAo10gCWqdGHVzLYkGjfLw9/e4xmsnmSrWc4RjLVgD/h9aapI4/tudphG6LZAUmwmxALdjCHw544z8LmdztsCeFSp5rkkA08+RK2NuVBcUNbPscd/YxpsaS+QyQf3FrdsQIplceiS27CmBmD0qswzG2fCAUxNLBVXjvaWbYhYlFs0G5vyUI47HPe3BW8lCkQreghcY3aPhBRcGKpFavSPfvYhEqrHZMuIL+Mb564lKjI1OtAVIpEnJQxsv2t23SMtI/xCuDBXujLHlZjjGldv4mqQ+TtyMjCHpajcyKCb0RZSPM3xXQ23256lFoZnLoBC+Bi+9YhBt7Gyeyyoj2hSGFSeAlNkpQ0XOa3CkyvOTdH/FIz7cHu4K4LYgttHkoGHe2FlscA53LE3/51G8rrUI4VktdMtSUakVkYVh9bEF5wLm+oRO93U3MIneuIaPVONdaTIKe2tYGRHFVwYOktlJkIZCUSGoEOrassQjzj0UiqHSpcTEoKHx+oi6MNngTsQIu+NQd8MiUV4jKYtdJ71KCLcWC5Vh0NxZEDpUH4fx8VVOMFEO8oOQAHpwCn4I835IeOHaInLWzNxjM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PR12MB8374.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(6133799003)(56012099006)(11063799006)(4143699003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bWtWYzF6UzdPc3dVQ2g2Yy8yWEF0N215bDBwbUxYMTdpUHBJcHRqam1jOFA3?= =?utf-8?B?RGoyYTJmcUd5MjdBTi83YTJTSWhSdUNsY3kyUmhjR0lteHZBK2txMTNXRklw?= =?utf-8?B?amswK1c2UHlNRG1FbGVQNnJHVXVJUExNeEJ3SDErZFUzWjFiWEVueVNBbW9W?= =?utf-8?B?STdQMUwyU2twOFNjcjc1RUNNZTU1eXFtUis3T2Rady9Wd3NLYm1ZL1BiOTBR?= =?utf-8?B?MHdSeE9PNmh4bXdFalhrZEgrZmpjTU9sbDdnald3QjNuMDZnV3VhYldBK1Ns?= =?utf-8?B?aVpjUHpjMXZUMEMrZUNLWW9RYUpreW0rdGp5QW53ZGJCd0ZQQ3p3U3F1N2RO?= =?utf-8?B?VHY4Qm1CNzBQUkx6M1R3ZnRjVjBxZVgxU0s3RDI5TCt3NzFlQ3lwS0hSeHh3?= =?utf-8?B?Q0VaM2JxbWN3RjQzSHdiRFVYYkZlcUxyblRwTnRMeVcrR1Q4Q2Z6UitXUnd1?= =?utf-8?B?ZGZWdm1QNEdvUnFNMzc4NHp3d2s4aW9KVUovWGZvbDJmR3pnR0g1U1RVNy9x?= =?utf-8?B?STkwR0pqUzB3dXdFSzZpSFowUHk2R2drY3I0U01kcGdwb2UyL3lvbHplN3pD?= =?utf-8?B?TnpsR2MrRjZZK2JDSjBrYVZ5b0JPUmJkQnRzQTd1VDlnZmtLSGw1cUZpaVlo?= =?utf-8?B?WWhNVGZXSjhISytyRnduZXpyUXlMOGJQNjB4QUpra09BSWpSVDdiMzZhQTNE?= =?utf-8?B?ZER0dWUweHVhVXgwZDIzeW5hZ0hlaDhZaWk1NXhWRmE2V3ptSGNLZTJ3c0RE?= =?utf-8?B?V29BbzJsalcxZm00TTcrRzh3NExaMDc5cXVSS1U2OTZTb21JMVp2WXRYWHZk?= =?utf-8?B?b0hzblN3TUlPUzVWUHJ6bzFCQ0VjZEZiSC9aNFE2UHRSSWQ2SnMrTE9uc0p0?= =?utf-8?B?cmx1VE8wQ3lWQ0lyNGhudVkzbHZFNDA4Um5uZTFHanROa2srVDBodmRrcmUx?= =?utf-8?B?MHFnRWRwWDkvb01KWnVGT0RUNE9NYitpQytiS2JMWTVNK0RDcXF5bWdCWDlS?= =?utf-8?B?M00xVnc3VklDK2l0bEt6NXN3cldGRThrRXdaSkdaU0J2dEdESXZXTXZkTzV0?= =?utf-8?B?WnBCUWYyNm9UZ28wa3RkTC9TUUUxTXExNm8vZlJlUFJ0OStxV3dCQWVpQkYw?= =?utf-8?B?QXh1cUtvcWRHWmhYalRjaGRaWGVlclRXNUtqRVBTZGdvbDhVK2xML3QvK1Nr?= =?utf-8?B?eW4wNnZ2ZGRRZkx2Ryszb2pIZDZNNm9Eb3pGSU04S2lKNk5WYjQrSEQ1SjlW?= =?utf-8?B?M0x1RmFHZnUrMTR3RkhiQ0dNUURmYS83Z0VNNDlsaExZUDI4cHd4eXRsTUEw?= =?utf-8?B?SFRTcmltZis5VXd1RysyaGJvOGszRUx5WU94bE5SMUlONng3TXJlWm00VWI0?= =?utf-8?B?bU1iL3JPdEZMdXVHemYzdnIrcEkveG02azRveFZoQXFOVkNDT1BBYnJjQ0kv?= =?utf-8?B?V2I5bmVwZi90aHAwcFFudk1xUGgvK3hHK0ZIUlEwU0NuSU8xdmxsRmZPSG9I?= =?utf-8?B?cHdMM0dmcVhMeXlXUFFwckxlaSs0RmJGa2FCY2lHMDVPbXBkb2hjK2dvdHhB?= =?utf-8?B?NVBlejhNcFVvQmRtd0R0cG1nZkhISTZTeEtWZFVJSmFaUWozVjA3VXJVQ1lI?= =?utf-8?B?d1JlZ2t4MUZoOFVlR1ZiSEhrN2xtNVIzSEZSdFlaUjJNaGE2Y0U5a0hGV0Y0?= =?utf-8?B?WjFzSThIbTB2SCs0UlNhRjU2OHFWS2VwL1oxczk1dFBKdEVSOHhPSGxqSjhR?= =?utf-8?B?OEtHZWJ6Qmt1WDNLVnlJM0t5Y0VyeVc2S283OWprSlBIVFNXb2tTUzE1TWNH?= =?utf-8?B?ZHNjUjJsZzZtUlRYTW5Zb1dIM2ErRUJpNVdEVHlOUERPc25tNE9jWStUNER1?= =?utf-8?B?M1lyNlFWeWh0ekdmdDZ2ZzZ4YWFObkk5QWc5Q1VPbXlFYmhFdklQOTRPY2x1?= =?utf-8?B?Q3dLVC9jc3M0K1hzejNKZFNhSjJsenF4K0d6Q213ZG1XQkptZHA5SkFvc0NQ?= =?utf-8?B?U1ZIYkNJc3dPZCsvM0JGSXN0cjRNL3BNc0lxaTREMTJpTEJqUXYvZ3N1dXBJ?= =?utf-8?B?WFFhVDBFYVFqOCt6R2twRk1yTFFZSzVMSjBmNUZEYzZQRG10SVBsSnk2WS9v?= =?utf-8?B?RkVrQTZvdW9OMzRybHJLWUlTTVF3cHVwMkpIVW1xa0ppalgzZ0FaZzdWSnZj?= =?utf-8?B?aEFMeWNTSDNkVnZDS2hMY2NlR0xSTnRNeGEyRHVBbW5jblJmRWJ4bVhWZ1Bp?= =?utf-8?B?NWxOSFkwZmEvellkYlNUUGhiRHBwL09JV2FYSWxUOVpMTENxMGNFMkRRc0N1?= =?utf-8?Q?fHvBB611lEq8R+81+/?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba2a5f1f-5a9d-4c43-325c-08ded2e75459 X-MS-Exchange-CrossTenant-AuthSource: IA0PR12MB8374.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2026 18:26:52.8899 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l9HjUTm3iBTfaDxYcWFI8g279D0ICKXWAPw40aKFpXlH9bVq8K8ARV4qFEI/aDER X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8541 On Thu Jun 25, 2026 at 12:30 AM EDT, Zhen Ni wrote: > Add a print_mode filter to page_owner that allows users to choose between > printing stack traces, stack handles, or both, providing flexibility for > different debugging and analysis scenarios. > > The filter provides three modes via page_owner: > - Writing "mode=3Dstack" prints stack traces for each page (default) > - Writing "mode=3Dhandle" prints only the handle number > - Writing "mode=3Dstack_handle" prints both stack traces and handles > > The default stack mode maintains backward compatibility with existing > usage, displaying complete stack traces for each page allocation. > > The handle mode dramatically reduces log size and improves performance by > showing only the handle number instead of the full stack trace. Testing > shows handle mode reduces output size by ~66% (84MB vs 244MB) and > improves read performance by ~4.4x compared to full stack output. The > mapping from handles to actual stack traces can be obtained via the > show_stacks_handles interface. > > The stack_handle mode prints both stack traces and handles, making it > easier to identify pages with the same allocation pattern by comparing > handle numbers instead of comparing large stack traces. > > Example usage: > # Using the page_owner_filter tool (recommended) > ./page_owner_filter -m stack # Print only stack traces (defaul= t) > ./page_owner_filter -m handle # Print only handles > ./page_owner_filter -m stack_handle # Print both stack and handles > > Sample output (handle mode): > Page allocated via order 0, migratetype Unmovable, gfp_mask 0x1100ca, > pid 1, tgid 1 (systemd), ts 123456789 ns > PFN 0x1000 type Unmovable Block 1 type Unmovable > Flags 0x3fffe800000084(referenced|lru|active|private|node=3D0|zone=3D1) > handle: 17432583 > ... > > This implementation uses per-file-descriptor filter state stored in > file->private_data, allowing each opener to have independent filter > configuration. > > Signed-off-by: Zhen Ni > --- > Changes in v11: > - No changes > > Changes in v10: > - No changes > > Changes in v9: > - Add spinlock_t lock to struct page_owner_filter_state for concurrent ac= cess protection > > Changes in v8: > - Fix buffer overflow by adding bounds check between stack_depot_snprint(= ) and scnprintf() > - Fix unsafe string handling: use memdup_user_nul() instead of kmalloc_ob= js + strncpy_from_user() > - Fix strsep() memory corruption by saving original pointer before strsep= () call > - Change format specifier from %d to %u for depot_stack_handle_t > > Changes in v7: > - per-file-descriptor implementation > > Changes in v6: > - Remove unnecessary braces in if/else statement (coding style) > - Use stack array (char kbuf[33]) instead of kmalloc for input buffer > > Changes in v5: > - No code changes > > Changes in v4: > - Change from numeric (0/1) to string-based interface ("full_stack"/"stac= k_handle") > - Merge infrastructure patch into this patch > > Changes in v3: > - No code changes > > Changes in v2: > - Renamed from 'compact mode' to 'print_mode' for better clarity > - Use enum values (0=3Dfull_stack, 1=3Dstack_handle) instead of boolean > - Update debugfs filename from 'compact' to 'print_mode' > > v10: https://lore.kernel.org/linux-mm/20260618035750.3724613-2-zhen.ni@ea= systack.cn/ > v9: https://lore.kernel.org/linux-mm/20260525081652.2210206-2-zhen.ni@eas= ystack.cn/ > v8: https://lore.kernel.org/linux-mm/20260520075641.1931080-2-zhen.ni@eas= ystack.cn/ > v7: https://lore.kernel.org/linux-mm/20260515091942.1535677-2-zhen.ni@eas= ystack.cn/ > v6: https://lore.kernel.org/linux-mm/20260511033017.747781-2-zhen.ni@easy= stack.cn/ > v5: https://lore.kernel.org/linux-mm/20260507064643.179187-2-zhen.ni@easy= stack.cn/ > v4: https://lore.kernel.org/linux-mm/20260430163247.13628-2-zhen.ni@easys= tack.cn/ > v3: https://lore.kernel.org/linux-mm/20260428071112.1420380-2-zhen.ni@eas= ystack.cn/ > https://lore.kernel.org/linux-mm/20260428071112.1420380-3-zhen.ni@eas= ystack.cn/ > v2: https://lore.kernel.org/linux-mm/20260419155540.376847-2-zhen.ni@easy= stack.cn/ > https://lore.kernel.org/linux-mm/20260419155540.376847-3-zhen.ni@easy= stack.cn/ > v1: https://lore.kernel.org/linux-mm/20260417154638.22370-2-zhen.ni@easys= tack.cn/ > https://lore.kernel.org/linux-mm/20260417154638.22370-3-zhen.ni@easys= tack.cn/ > --- > mm/page_owner.c | 129 +++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 123 insertions(+), 6 deletions(-) > > +static ssize_t page_owner_write(struct file *file, > + const char __user *buf, > + size_t count, loff_t *ppos) > +{ > + char *kbuf; > + char *orig; > + char *token; > + int ret; > + size_t max_input_len; This can be const size_t max_input_len =3D 32 with the comment above it. > + struct page_owner_filter_state *state =3D file->private_data; > + enum page_owner_print_mode new_print_mode; > + unsigned long flags; > + > + /* > + * Maximum input length for filter commands: > + * 32: print_mode command max length is 17 ("mode=3Dstack_handle"). > + */ > + max_input_len =3D 32; > + Otherwise, LGTM. Acked-by: Zi Yan --=20 Best Regards, Yan, Zi