From nobody Sat Sep 26 11:01:12 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010013.outbound.protection.outlook.com [40.93.198.13]) (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 CCCAA3876A7; Wed, 2 Sep 2026 05:39:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327544; cv=fail; b=U0FJ43Km34Jvcm1b8rnM4tpdefH7+PhV1iaEh8XMFm0zhuaxuiQtSnrxi5WGvxDJ+5L6tMy74dsir84YHGeNsRvBpQS2NH0iAJCUrjkujG6hogLmTXXQ0u+qkZ4+cs5mEV4knxR46X4aAM3hOhZ2+MoEwBslbc5tIokwZxCS1bU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327544; c=relaxed/simple; bh=MQEE6NIdNbheA+9RlvV08FXmBCzkus50NpmJNDfFaGE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SjUxqnJmmodSZQhB/0/IG/qX29pNkaNZz5jTZn529iPloRlAxj4ZMHYttxmhYmUZRQox2RyaxCKFGkr4SFCRW/DD7mIDZfnlduGuYsfSvxWbkSXoMCV1yFPFRN8g8a2s3fBoeQFqx3hiIKyZvzU1JxthtDiDFjqpg4v/jXeK/PM= 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=tWTpN/DJ; arc=fail smtp.client-ip=40.93.198.13 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="tWTpN/DJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S7PPfK33C/2pRKzqUMTzO5iMkv5OtjnRSSnkslKX4HPf4UlbgXBbDBHVSwkJhUasVHqGfCtQMURXiBsvbX5h+qVmPC3AzxiElFzUU9625v21+QkawuNZWQIarUvSQ2qLALcbFSMinXaRtARQB6Lb9sQVW/L0X59+agym0hyDha4FLnodM4wAC2/MmUv3oYSwtYTZntxPQ81W7dHkTRvrwaLWTSwXxmZ/TVtpUKPzlO5mj9e26l2TUHwFoZQ0LFuLR37iQBvpcL82uCjYghZ1tXkQnRijWtfS6JBD7mGIDKOD+CqsT+63XozU+2KLGAFsaYe4hKwDYvTc2l2fWjkpYQ== 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=ZUK1tn+P8QxiMCtqdzoHSMO1b36cWusTV90PUYxK2bo=; b=h/z0N/E41J7kwyVyGMExT1Y0mVNpcjv/pfBVBAqcoLS9t+WWZDQzrs0rx2W4cvidHGi4SX7BtOMfmUSngPc9aKQ5SDf53qJdDG0bDbz8oZpmNGwRmEfdrqFB9yYByKSJK+R+dUxEsxZc+HPUtRS2eQN6DoYrd+Wpp9rAs9hvla35tW1m4+IiKIaK3LlAX5XBXOF87XT9PNeQiAT+WuHd0eiJ2tmRVR+sYOLfYN8/xQGCtDB/Ims6m0KG7K82bzewbPUuIogJNG3s5ksQsfJgAeES1zPZMrKGQoi9xhgQwgB9YDKfEhXnJ+fwMdiEZeP9TLuK5Nyd3Y2LVDt5p7b4Eg== 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=ZUK1tn+P8QxiMCtqdzoHSMO1b36cWusTV90PUYxK2bo=; b=tWTpN/DJ1DR4pm+zIzQn1oE6RpPZn0IO7c8NdmrBvklJDFL/vK7pxnZx6iCsm+RX+OhhaDHajnkNxoNgYGt3fq+qT+j7rtnRvGIRO9HsWOrCY2X0EtAze8QRBzw8KksnWpUx0ThS3zQygNswKsAwohQmnCofyOwVwcJZ9J8GtDUyg+vcw4P2nD7i3C+CROzlRmE+h+3FVFVlG5WUW4nrnd1U3DRIppBUmxmjJN4SB7AWwPeHjaDDHnHPFUUiHI+wkyGGjqLzDrHhWiQenWUPChu0z4TVLw3m5CsLjpqCMa8bugPQvfIbvk/1ECGDWvaV7LNy6RWRezvwSpkLCy47ZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:38:58 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:38:57 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 1/7] cxl/features: Reject feature offset that overflows 16-bit field Date: Wed, 2 Sep 2026 13:38:33 +0800 Message-ID: <20260902053839.25595-2-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0056.apcprd02.prod.outlook.com (2603:1096:4:1f5::7) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 10629d2c-cff5-432a-12df-08df08b47ba9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: LHbrBY4R1AgOFd7vBiJi1MvBTeie6vpzdHOSH+hknLXukpjgONwKJiuPAeCZHitR+GBFlY9fUINDae6pZjn0GC5B6mJJNzDHhjgFkKOlz6aErl6qyYzqvNk9GcJo8Hzi69cNUUdflbl6sNQJ/XAsHkDGngdBNcI/z+xtBmCZxrjlav62qhuAMFHCFR9XwWsDn8MUYrt0Gw5U5P/W38Tj2Um9B8rZgbRQeuNrykTOyR0FhN0hAwgTXNnfU/EJaixur9USjgbNKUuvFw47kM3jQ2ZxJPu+eQdT3K3izhyuOb068HaFr3c+V37gGF4y1O78ukK2ZXwvjuYvYt5UcII9I06IsXUD5pLY5ZddjzlQ15AS5oROEikRTQMy3axeKSdcdZsT2oowkvs//5tUCt5YmTYn+gUujYR6+p45oAWpqt5Mc2ImdzUUVBxbFYO5IyTW8/cPfRNmkAIZnrPNpgV6d62g04v6ZxaA37LpljlinmEN3EwqRYxysGvn4yyO3P7YDi7IVfLeY9Lenuj9UAP7grFgz0KFzUELFbYQv/lGE84APzjj0DJ69FYFh4h9USRvfnb7tLtHBGdVoPV0DE6C5Ju4VWZwgFtEHsHP8HwrrymnyXQiCkO/t1OdZx3ZjUDZKE0xtOiV6Lf29WguzFnBDUrZbBL0goECUF7AsE0vZAU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?t1tRgSpcuT095aMT34iMC+KI2QbBqaJqKNbA+EA8PQ4MqI1aowCiQIVFRHxg?= =?us-ascii?Q?gcltNHJOz+dOklQt6NGLpxasgB0QUl2Rsm0Jejqo2DmMvxw7Gv2RrCh0bwfL?= =?us-ascii?Q?iTxEZU1Q0PGxqmftruvMGfc6hpyZdEqqNNW19k5khxsZ35qptWsqE/R3nIaN?= =?us-ascii?Q?1fhRMcsvg4Nfsdu74VnSQw0OAAesw8yVdEGD1t9TE7z1tLPcmfpZHDgaQKIU?= =?us-ascii?Q?nVjGjRQXMby9NmrT044kCbsLFDSc4ZJmcFGm+B2VRt0nO4Lzvl9Z69raTOov?= =?us-ascii?Q?+VsutTJJdcgH4lufeZnZGJR5nfNiuQd2rCPzcojNE+cCr1SCZC/PyKhh7xQi?= =?us-ascii?Q?FzkNpqVF4DEkVtnMZsV3cCgfFbA0D0d2shR3wgP+xJ8d0e9k6U4rmRXUtktc?= =?us-ascii?Q?fnbkcQ/WrAIfQ7w7LIrYNgWajnYmu++0vrNYMfylkFK0sR4RGjrz6L1DCI9y?= =?us-ascii?Q?BsYVC0ZC3UzQ1MLG0PHiSLlWvFang/cuEGBN/yUN3hZSprRCa4B977eqtSjx?= =?us-ascii?Q?RdxD2xvMzlnj9/EKZCnwFx7ENU2YCQMCFLZcJdIKlDF+EhLqTqPModG3H69e?= =?us-ascii?Q?c9xsi4bKTP3HLSc+giXWpC0dr/C7aBzjHRN+2jOCiu9x3GDwW+kwqWTIrAaI?= =?us-ascii?Q?aa37qCqi1mAeW6fiFW2C4HRNDEQeR/isvOkvp5cb8tKHpHOq/cQkTtLAsQGX?= =?us-ascii?Q?q0XpFMLCaPVMdhYM9TeB42F0F9bHdfTUogu2VE1nZTof8NiD3b/6m28NBop9?= =?us-ascii?Q?PZEuGw14Fm2sr/bveV1/qj8RjKQTy4SPnbcDSBiswBeD1jDZKj1+5SQfMFQA?= =?us-ascii?Q?yEGkEW43Hi/2PQjfOGMKcuZgu3ZenlqPzH2US6C2fA780SHAV76PolTfGIuw?= =?us-ascii?Q?IJufGvgE2xzR/j3TJAk2LRHMRGwes7ynwiS8H/Kwmz2S0lR/9jqW97fJ4UfC?= =?us-ascii?Q?cfGkMeNv1N+BalPBHD24+DV+Omq7lBqj3xurD2CA6dFdiF+piWwk8JmPmxVW?= =?us-ascii?Q?83OnLovDTQJyI4bjh59HKR+d5ZUl+wDskl264odD1l3pFYbst6rBQ3/pAZ9w?= =?us-ascii?Q?xOgpiiEpSMZmbeNUtZSdliAEs0RVJ4Fgl8yJaDj54liBj0IJDqB9CjPyaU8G?= =?us-ascii?Q?sYMD56gg5a00PkCS8Q6MKnkuyrfGEcZzMT8LQVyzjvkjIg062o0W4ouazpH5?= =?us-ascii?Q?cBcZ9CiqEdltMa2Y6nPKgkDj8IwHpSOuTMgmmjjolZQz4/1hFAC0SQD7giBN?= =?us-ascii?Q?z9KB9n69UYWdInA4Z2CWUbId5qHEGeMyMLluv9/hjbh8GLEuP1S4hWHHiXUQ?= =?us-ascii?Q?cBOtBUrMJTV6KpEZTIkre1OrcUMmA7WmoJGRBS4JRm6M7ZgT6qz10yWkaqZg?= =?us-ascii?Q?aNzGMjD+AStEAqcrvmItYxPun9jyFy1T7AIE0UjzW+G3VN3F7Tlr7JEZkkW1?= =?us-ascii?Q?0O1wqNrmgMijXwPal/bnVgGFKNkNyWg3mbM5miRThstCT0lS9uwlsr1ytkrr?= =?us-ascii?Q?kIHYco0E8ST51rxOJMvQegEYpKomry+hWpIxXxXgBEeiMUwGmiTx4MseBKM+?= =?us-ascii?Q?u+qdMYHeqkjAk9UEt6RK0n/eD5qx4VLQyx/c7I2634Cded/wn2E7Jd4yeYsz?= =?us-ascii?Q?yujZzdj3V08wPFbWcV1JW+Jufl1BGGas58yWcD0kaRcN53wDzFzfOKU+9I6m?= =?us-ascii?Q?2RqJ0bweInBrowZA9GNvsaQCOjfDq9M96KY5uNDcsmkkCDp7ZHoDbUq88OnV?= =?us-ascii?Q?3RQHIfrMHw=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10629d2c-cff5-432a-12df-08df08b47ba9 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:38:57.5716 (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: UXc6yDxLDcG2rekJrbKShmktOToBRWSij03zbdq1kn/Rj5aDo83p9PWDwGywYl/sKo+FthN4Ik3gpFjYIDlGAQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" cxl_get_feature() and cxl_set_feature() build each mailbox command's offset from the starting offset plus the amount of data already transferred, then store it in a 16-bit field. A user-controlled fwctl offset and transfer size can exceed the feature extent, allowing a later offset to be truncated by cpu_to_le16() and target the wrong feature data. Reject requests whose transfer size exceeds the remaining 16-bit feature range. Express the check as "size > U16_MAX - offset" so the validation itself cannot wrap on 32-bit systems. Change cxl_get_feature() to return ssize_t so invalid input and mailbox failures are reported as negative errno rather than being conflated with a zero-byte result. Update the EDAC callers to handle negative results. Keep fwctl behavior unchanged by translating helper failures to the same header-only RPC response carrying the CXL mailbox return code. Fixes: 5e5ac21f629d ("cxl/mbox: Add GET_FEATURE mailbox command") Fixes: 14d502cc2718 ("cxl/mbox: Add SET_FEATURE mailbox command") Reviewed-by: Dave Jiang Signed-off-by: Richard Cheng Reviewed-by: Alison Schofield --- drivers/cxl/core/core.h | 8 ++++---- drivers/cxl/core/edac.c | 20 +++++++++++++++----- drivers/cxl/core/features.c | 28 ++++++++++++++++++---------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/drivers/cxl/core/core.h b/drivers/cxl/core/core.h index 35eaf636adc9..bb380ec6daeb 100644 --- a/drivers/cxl/core/core.h +++ b/drivers/cxl/core/core.h @@ -217,10 +217,10 @@ int cxl_port_get_possible_dports(struct cxl_port *por= t); #ifdef CONFIG_CXL_FEATURES struct cxl_feat_entry * cxl_feature_info(struct cxl_features_state *cxlfs, const uuid_t *uuid); -size_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, const uuid_t *feat_uu= id, - enum cxl_get_feat_selection selection, - void *feat_out, size_t feat_out_size, u16 offset, - u16 *return_code); +ssize_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, const uuid_t *feat_u= uid, + enum cxl_get_feat_selection selection, + void *feat_out, size_t feat_out_size, u16 offset, + u16 *return_code); int cxl_set_feature(struct cxl_mailbox *cxl_mbox, const uuid_t *feat_uuid, u8 feat_version, const void *feat_data, size_t feat_data_size, u32 feat_flag, u16 offset, diff --git a/drivers/cxl/core/edac.c b/drivers/cxl/core/edac.c index b321971fef58..f1df4b5cfe5b 100644 --- a/drivers/cxl/core/edac.c +++ b/drivers/cxl/core/edac.c @@ -78,7 +78,7 @@ static int cxl_mem_scrub_get_attrbs(struct cxl_mailbox *c= xl_mbox, u8 *cap, u16 *cycle, u8 *flags, u8 *min_cycle) { size_t rd_data_size =3D sizeof(struct cxl_scrub_rd_attrbs); - size_t data_size; + ssize_t data_size; struct cxl_scrub_rd_attrbs *rd_attrbs __free(kfree) =3D kzalloc(rd_data_size, GFP_KERNEL); if (!rd_attrbs) @@ -87,6 +87,8 @@ static int cxl_mem_scrub_get_attrbs(struct cxl_mailbox *c= xl_mbox, u8 *cap, data_size =3D cxl_get_feature(cxl_mbox, &CXL_FEAT_PATROL_SCRUB_UUID, CXL_GET_FEAT_SEL_CURRENT_VALUE, rd_attrbs, rd_data_size, 0, NULL); + if (data_size < 0) + return data_size; if (!data_size) return -EIO; =20 @@ -551,7 +553,7 @@ static int cxl_mem_ecs_get_attrbs(struct device *dev, struct cxl_mailbox *cxl_mbox =3D &cxlmd->cxlds->cxl_mbox; struct cxl_ecs_fru_rd_attrbs *fru_rd_attrbs; size_t rd_data_size; - size_t data_size; + ssize_t data_size; =20 rd_data_size =3D cxl_ecs_ctx->get_feat_size; =20 @@ -563,6 +565,8 @@ static int cxl_mem_ecs_get_attrbs(struct device *dev, data_size =3D cxl_get_feature(cxl_mbox, &CXL_FEAT_ECS_UUID, CXL_GET_FEAT_SEL_CURRENT_VALUE, rd_attrbs, rd_data_size, 0, NULL); + if (data_size < 0) + return data_size; if (!data_size) return -EIO; =20 @@ -583,7 +587,7 @@ static int cxl_mem_ecs_set_attrbs(struct device *dev, struct cxl_ecs_fru_wr_attrbs *fru_wr_attrbs; size_t rd_data_size, wr_data_size; u16 num_media_frus, count; - size_t data_size; + ssize_t data_size; =20 num_media_frus =3D cxl_ecs_ctx->num_media_frus; rd_data_size =3D cxl_ecs_ctx->get_feat_size; @@ -596,6 +600,8 @@ static int cxl_mem_ecs_set_attrbs(struct device *dev, data_size =3D cxl_get_feature(cxl_mbox, &CXL_FEAT_ECS_UUID, CXL_GET_FEAT_SEL_CURRENT_VALUE, rd_attrbs, rd_data_size, 0, NULL); + if (data_size < 0) + return data_size; if (!data_size) return -EIO; =20 @@ -1264,7 +1270,7 @@ cxl_mem_sparing_get_attrbs(struct cxl_mem_sparing_con= text *cxl_sparing_ctx) struct cxl_memdev *cxlmd =3D cxl_sparing_ctx->cxlmd; struct cxl_mailbox *cxl_mbox =3D &cxlmd->cxlds->cxl_mbox; u16 restriction_flags; - size_t data_size; + ssize_t data_size; u16 return_code; struct cxl_memdev_sparing_rd_attrbs *rd_attrbs __free(kfree) =3D kzalloc(rd_data_size, GFP_KERNEL); @@ -1274,6 +1280,8 @@ cxl_mem_sparing_get_attrbs(struct cxl_mem_sparing_con= text *cxl_sparing_ctx) data_size =3D cxl_get_feature(cxl_mbox, &cxl_sparing_ctx->repair_uuid, CXL_GET_FEAT_SEL_CURRENT_VALUE, rd_attrbs, rd_data_size, 0, &return_code); + if (data_size < 0) + return data_size; if (!data_size) return -EIO; =20 @@ -1750,7 +1758,7 @@ static int cxl_mem_ppr_get_attrbs(struct cxl_ppr_cont= ext *cxl_ppr_ctx) struct cxl_memdev *cxlmd =3D cxl_ppr_ctx->cxlmd; struct cxl_mailbox *cxl_mbox =3D &cxlmd->cxlds->cxl_mbox; u16 restriction_flags; - size_t data_size; + ssize_t data_size; u16 return_code; =20 struct cxl_memdev_ppr_rd_attrbs *rd_attrbs __free(kfree) =3D @@ -1761,6 +1769,8 @@ static int cxl_mem_ppr_get_attrbs(struct cxl_ppr_cont= ext *cxl_ppr_ctx) data_size =3D cxl_get_feature(cxl_mbox, &cxl_ppr_ctx->repair_uuid, CXL_GET_FEAT_SEL_CURRENT_VALUE, rd_attrbs, rd_data_size, 0, &return_code); + if (data_size < 0) + return data_size; if (!data_size) return -EIO; =20 diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c index ba6d2a5acb74..8d44ce829497 100644 --- a/drivers/cxl/core/features.c +++ b/drivers/cxl/core/features.c @@ -220,10 +220,10 @@ int devm_cxl_setup_features(struct cxl_dev_state *cxl= ds) } EXPORT_SYMBOL_NS_GPL(devm_cxl_setup_features, "CXL"); =20 -size_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, const uuid_t *feat_uu= id, - enum cxl_get_feat_selection selection, - void *feat_out, size_t feat_out_size, u16 offset, - u16 *return_code) +ssize_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, const uuid_t *feat_u= uid, + enum cxl_get_feat_selection selection, + void *feat_out, size_t feat_out_size, u16 offset, + u16 *return_code) { size_t data_to_rd_size; struct cxl_mbox_get_feat_in pi; @@ -235,7 +235,10 @@ size_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, c= onst uuid_t *feat_uuid, *return_code =3D CXL_MBOX_CMD_RC_INPUT; =20 if (!feat_out || !feat_out_size) - return 0; + return -EINVAL; + + if (feat_out_size > U16_MAX - offset) + return -EINVAL; =20 uuid_copy(&pi.uuid, feat_uuid); pi.selection =3D selection; @@ -259,7 +262,7 @@ size_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, co= nst uuid_t *feat_uuid, if (rc < 0 || !mbox_cmd.size_out) { if (return_code) *return_code =3D mbox_cmd.return_code; - return 0; + return rc < 0 ? rc : -EIO; } data_rcvd_size +=3D mbox_cmd.size_out; } while (data_rcvd_size < feat_out_size); @@ -288,6 +291,9 @@ int cxl_set_feature(struct cxl_mailbox *cxl_mbox, if (return_code) *return_code =3D CXL_MBOX_CMD_RC_INPUT; =20 + if (feat_data_size > U16_MAX - offset) + return -EINVAL; + struct cxl_mbox_set_feat_in *pi __free(kfree) =3D kzalloc(cxl_mbox->payload_size, GFP_KERNEL); if (!pi) @@ -462,6 +468,7 @@ static void *cxlctl_get_feature(struct cxl_features_sta= te *cxlfs, const struct cxl_mbox_get_feat_in *feat_in; u16 offset, count, return_code; size_t out_size =3D *out_len; + ssize_t data_size; =20 if (rpc_in->op_size !=3D sizeof(*feat_in)) return ERR_PTR(-EINVAL); @@ -482,16 +489,17 @@ static void *cxlctl_get_feature(struct cxl_features_s= tate *cxlfs, if (!rpc_out) return ERR_PTR(-ENOMEM); =20 - out_size =3D cxl_get_feature(cxl_mbox, &feat_in->uuid, - feat_in->selection, rpc_out->payload, - count, offset, &return_code); + data_size =3D cxl_get_feature(cxl_mbox, &feat_in->uuid, + feat_in->selection, rpc_out->payload, + count, offset, &return_code); *out_len =3D sizeof(struct fwctl_rpc_cxl_out); - if (!out_size) { + if (data_size <=3D 0) { rpc_out->size =3D 0; rpc_out->retval =3D return_code; return no_free_ptr(rpc_out); } =20 + out_size =3D data_size; rpc_out->size =3D out_size; rpc_out->retval =3D CXL_MBOX_CMD_RC_SUCCESS; *out_len +=3D out_size; --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010047.outbound.protection.outlook.com [40.93.198.47]) (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 602E338643B; Wed, 2 Sep 2026 05:39:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327550; cv=fail; b=J7m24ULhbdzWXtb4Y/Ateew9hFPu1MLA/gRYfz30Uf+cNHc4xR+CS9Bcsz9r89eSWKK6ygAdf+dhdDKvRe90a8lDSi+rLV2/UisEPJ/m1sFQCmtz0rhqLo9iWqsDv89MZt1qkD3AUlNpMXfhZaAxrdlu2R04okhniPMzY/IvO4k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327550; c=relaxed/simple; bh=v6V+N0fmGA3zOXnutNojTTuEBsBbCOjFOATkAi8l+lg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=o9axi1L3zipEEeOnNMlgsXRVwQ2NLlcV655gjBTqEWnKttUpaqq2ClI5tUDRbqYkrcvM6v6irwgkT8o8Yj2NQjHnnoZNFk3HmTRgUKeyAsEhqLuMKoG4L17ayQK3RSH+rZ9pNzHjGgfLK0tCLoBCxvWLp9JPRawm4DedbReUexg= 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=PwSgw1we; arc=fail smtp.client-ip=40.93.198.47 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="PwSgw1we" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b0cO23hYrwZkjPg4VDC9hbBXUtr8VEJuqfPE0gR4gAlBytx+U3POQBJ8wKWqPr0yDIrJ9AR4oqIY+qIm6Dj7uQbDbIfO8p0jCT7RGQsaRcpTZ92BzPZfZjYC3HPVAheL0TaN58d7hrXnN/4J+8w5NgxL9I+Pc5FBHsf6y7xygX1EJ7cEyu5ZZMOY+fqMVHzuYxXOMEYo2X6ItjwEacFbYfWi44durEBaF95SpjJ+6CGzj6bV0YlIvnAMOQ5UNFqnMI/QjOkFnAbXLchu5ya8D1/G6pCM0YkeWgafNTkOo0UxJbwry1pfbI/7WhWc17zaYSSQh84Thi+c2oWfeVpp+g== 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=kYupqiA38ZwvDU+FaF3g29r6VTkwRS/ktrIVV8LWocg=; b=UAVXym/b4RR+HYFDGtHFDMacCDGs0w+4XzqP9dcY+nriq15jAxlfdIDKBggNVLNpq0i07IrS9RFFyDDECljnhKvnLvKyylJKs9MeKcwnM1y0nGpw9SwAJG+dBG2QXkki3zD452tf1LMaas/8b/nOhivO2lLE5tsXiIAXrSfOK1TK3IbEyjo/7OJgp0M2fT2DqvPn/7vVzaRDntMBe3yXAjjg7bKNSCfS82beMH7+txcmkiQz1LDUP2Wc1CD7E4Hto7twtqlWa3Wk2leJGO5TrnBnmK8xwRUBzSyLXBe42yqMJGlk8pPmJ3jVRS4eJxwZc6ECfwv5w6fq98QE/4VawA== 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=kYupqiA38ZwvDU+FaF3g29r6VTkwRS/ktrIVV8LWocg=; b=PwSgw1wet0cHhi1BdPV3a2Ns1wbgjoas1mb0H3y2IAppTlJsXezWMLW23LLnrMeASzg89BG2u5stfhOqJhVD5Zgf+fPOUdOfQD0KfyGNYKnU4pqtZ7NqXPfklC043E0lLDW5Dr7s9zCwX2HlsvUB80X9JDK183GE0uwD2KSDu+p0pBX86JaYz6wJRnkrj+jslHXW/0sq6Sk13sBLWAdD2di79UW+i1uVC+iCqvtqJGA4AOl4NE295IE0N3+/zc5lycGaCRVoDEQC0QYlbBcsNm8HTcEs54GTS65AIcf5FKVmAzzeFInmcY1MyI7ogfYZZU5A1IAIibkiNowgQ/c/ew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:05 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:05 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 2/7] cxl/region: Scan all partitions for unmapped poison Date: Wed, 2 Sep 2026 13:38:34 +0800 Message-ID: <20260902053839.25595-3-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR06CA0005.apcprd06.prod.outlook.com (2603:1096:4:186::12) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 03ee9e27-df9e-4a58-80fb-08df08b4806f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Rod20cNdzOE8jmK9514OCXDjndVmKe6plT2GRW7jl817u46oV7nP/dp06fy5OvZEAiUYs5ZzUjm0K/R2r5HWyNkUulIfBGLokVk3WjF2VHV5cySAH7TxlDea/x7wvgJZHuNdGGjqFMVmY9F5tYIcTQ02KB4YXRKNhU05B0j27oOw3jWx8MOTaU7m+AhGtsO6QE9kVC9jhHGg+pU4qwQSW+GI9FqTu1/M/xbcAqW1N8DpuVPdHmzr34Sv5EibMOcTXOloOq7n6bnygFtKMGpaZEEA1I067thXG9nu7KoJVnPHEMlhlDsXyBOaMF8ahcMcVSJ7KhbQ65m0knNIKZ2mGri19onAjiHwT03HlNNefhLBqDTFTjYxH2qMunvHneHhYGe8VOQQV/OKt+aeP5Uj/p9tqk9McnWzdcXjvF1iRTPnXXcoexY9zCNiFtgM9oKrLbYrC9tRXBNZVpPppxF6dr5Bplh/wKENHHZSBy6No+RskNvH1IvnzKBTMdYZRhs3h3m03f5GwmHc6ToMyJGTCmXC3t+RqUOGGtf/iObg3D130v+jCvMKwHk2/DclE5YFGhVmuo5Io0QBL1pX/B/e+DF79TYPykrVpWf+SGtDbJ8kuzn7PpNwCZNx1r0uL7XoO5ODy4SXPi6HUWMnVwOfQEmsQ4FMtNDSHsfhyMYWufc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xmZbBBgRpIywyG8Ao9tDRScBnvruOmpAHfAMUzo2ekiTTV3ZfaWxcQOkFqXO?= =?us-ascii?Q?sYvs/caeRd32prf0lHAQDk5li7qTHf0WyjfjP6i+ouUo+/12dcrTp66eIKHQ?= =?us-ascii?Q?SPO6H92nVQIJpJvvZ914oFTaoBi+ONQrw5NVPNZGzaKsDuG/JVrH4zvkWfzq?= =?us-ascii?Q?LNKFFZwyCXUn9JirqVGCtVvXubOn1xW79bPl8fTzqk7j88JKm3X5lOR2NRqi?= =?us-ascii?Q?NCFO+HVD5oRH0r/QSkIcds8UOhr/YcxRB1x+1wwC0xDtCkb23RhS/KqGxWSH?= =?us-ascii?Q?dA5NAUAB7EhjRcNmLIEG8jN9L02zFbzBiyBVEOaJNPcG7AD3LZtNHbF5baib?= =?us-ascii?Q?25j4giY850q/Fegw5hnqu6er+zT2rOkjzk5U8UCgf4P6eb4baGUMnKzOjEGh?= =?us-ascii?Q?hOAaq+m2simnb4DcviP8hNkdaRlJIHHAbc+dw0h1S9llgVqhWuKCINfqH7EV?= =?us-ascii?Q?7KvVVIOiq6eQOpQFB3YQ0AB7T/lmyey1fT/eLTtZOb+h2uv3KdOMydtjeBRi?= =?us-ascii?Q?WSEk4vf4zwS1NJkDGZlPoVFo8dkCFWSlNvH6XTEv1dtpYRSEh1VIHVHrNnr4?= =?us-ascii?Q?tngTHdB3iBjMev/erpXqF/b2OiXG5C8PRXCeJgYqD8pnH2r7lt56DFuL8T+P?= =?us-ascii?Q?2Ke9akG2GBTdEystfMDwSi9vKf8ll5ocpO7t4+8Qgyb41rijuS4mUzV6fnz/?= =?us-ascii?Q?Pv001NeyEJQrcwMUzFCpDHC8CqvUM7vUVi85N+lLxq+hr4oiXf9NRM23Dpsj?= =?us-ascii?Q?n+FlWHpCnqnz61oalhbS8coE3wF9VvFOhTGiRowbNqu8gow0OwAln8rRs4ad?= =?us-ascii?Q?/BcXdGl4b2sRaOxaxH4B0qjvK6T2Ng4sb94B1s9Er3FP4npk5o4ap1RuXyBg?= =?us-ascii?Q?hNkszoYM1vAi2uDLsfmH3ov79xbCGO3WDDKDgbfTRWWb/6IymHwNdE2zRDvq?= =?us-ascii?Q?trFWi2p0qe3jklgLMbMUMswj0aciJDznb/lDXGlYm6YaPucw/bcbx6/mnj5a?= =?us-ascii?Q?T33Ibiw0DsYFn+2EtJOrAOjxev/ph8gorVj6xlFtH+i62efPGdAJJ28Ayw5L?= =?us-ascii?Q?p7LaVzQ0lSJgbvIHS83qUu1miG+Oz5XNb+jYRItJKCSDFMCGh8rF7wEW/+14?= =?us-ascii?Q?b8wfo0ebQMoa26WQQe4whDzAW0su1i6urcmV3GQ3+pI48aEvPzCEU18pTNfc?= =?us-ascii?Q?fEeoTAQ9mKBI3ok69i0LukQ3iPIIIKbJKKKz1h+LZ8GWhH9hAoz7qZD29dp2?= =?us-ascii?Q?Gf5W5NpwjYft5LLDrgeDHB5mKHM5TCamBBDaZCqHVZrVWcfO5PcUOXYAdYj6?= =?us-ascii?Q?WTjHhNUXV3XGsRsiHCImu38A1Kewr2jdOCoORkHJZUvJh/fpnCAhtwvB+B/d?= =?us-ascii?Q?DsTRQj7AKwsSf2GVPsXFOxlBaokM22obxk5RfKVC46BzmUIPDqVQt88GM0Fi?= =?us-ascii?Q?vbCwon8kMTpS/GL9hCHn9OSo9uzCOT9tm3zuNgKlv9pc7fXJBrf3MqrsiIur?= =?us-ascii?Q?e2Wn750cBtuH5ssHVJCNwtDDEdfd7vgwLW52f81pFsPXp/MUPawCD0j0TYkB?= =?us-ascii?Q?gk9u+QxvPb05wA3tDwc6Ab5bvANipOL23vNs3l8vvDAJO2weJHQqhJAS0sFy?= =?us-ascii?Q?dZLjUT74AMq8qJ5HwhpYCyXipFPQ0y8peHxrDne9ll5BJjvHrboweLGBIFD7?= =?us-ascii?Q?KasjL5DSLAV2PB1/RWr1kO108lcqNE8Mg0in97aqLArmYge1Z3VTU6FLxumv?= =?us-ascii?Q?d4pqR//pVg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03ee9e27-df9e-4a58-80fb-08df08b4806f X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:05.4885 (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: +HBqtyNlxYgG+ZDsZxybKx8+V64JBv4GbsegwJvA2/0DpHglNgwtwg+3T7gCIH7KFFGGlIe9LaykQsDfquv6qg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" cxl_get_poison_unmapped() sweeps the unmapped tail of each partition from ctx->part onward. A fully-mapped partition has no unmapped tail, it's a normal per-partition state, but the loop treated it with break, aborting the whole sweep and silently skipping unmapped poison in all later partition. Use continue so a fully-mapped partition is skipped and later partitions are still scanned. Fixes: be5cbd0840275 ("cxl: Kill enum cxl_decoder_mode") Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Tested-by: Alison Schofield Signed-off-by: Richard Cheng Reviewed-by: Jonathan Cameron --- drivers/cxl/core/region.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 27e63e6dab7c..b03f30c04d35 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2928,7 +2928,7 @@ static int cxl_get_poison_unmapped(struct cxl_memdev = *cxlmd, offset =3D res->start; length =3D res->end - offset + 1; if (!length) - break; + continue; rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); if (rc =3D=3D -EFAULT && cxlds->part[i].mode =3D=3D CXL_PARTMODE_RAM) continue; --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) (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 8E03D3876A4; Wed, 2 Sep 2026 05:39:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327558; cv=fail; b=Szr/X4ijzhN8oQPUKVQk08qsf9WJSBEmb8pKV5EHdieJEs9oIaT1kyOoWHePVPZhI5AjGFLcVo/UOy2+UKEV5X7AKYXpcv8pGbTb1VUG0k8JgnBtYduCxGVUS7EYYi5lIS26bceupopnld7qoZwcQKHxgpIv5HHwuC4tFq84kqg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327558; c=relaxed/simple; bh=sD0SPOyJ7a+/6owIGb94284qqSPM4KFvnhqjCxspJrY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ckWD4RlHqMfA8/kKZpFVWVsrvlmDg0v0v3ONRsWW46Lu79GhP33H2ELiybjfQzx7xWWmVzjc0z5KJ3nJFCq2tO6yAmKVlMg70ZfxfUWvIdFILai88tUWTXc4eOffsZvq/CBr+ydmvggczlxn90qwSsmmvKwuy9r4vk7qsKD2q0o= 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=HAvnwoAU; arc=fail smtp.client-ip=52.101.56.5 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="HAvnwoAU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XixClZzMI+j+wxgTCDmjCSxlf/0lEgPZlHDivZLZkuln7m5c+IlgTnWZA8kGlObBPTdK8IW2wwnSXv5W2JeVJsz6daKCPgv079IPjLcROhdE2w0qtyLCfXg8wdbag2Q5ADcr71to4xH5bhWRRvldZrzlO+P5/qy4v1reVuJxuV8mPU7wdRyiUaGoEtH915E+AAp2nvaYrkUHBtx7WK9IQ040Agak7S+7yUqCaWN3kwUmYcyzFuwvLDopdJk9urCxH+im1XJl8jEl3bTWcpqUt64b8ZFLKBg+wfwlN1h8hF5Ss2BwoGG4T+LeGCo+g6VAgA/w310g5LOfNwMxzLKYXA== 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=wMeYI27txNQJphiE2SVYzPZJU0gJALqwTTkHKj2yH/8=; b=P+KbBceFUm6hT6BlxUkQWmBTDWQBAKWXA6iX58swmsIKVuaiyaPkOxfq9dzQIftLCGGRhdtxSoTqKg5ylSIXF7Fhymi7juqldk+YCcmg3iOpnRE0zBxEd4G5QeXAhSM1rLYioqCsulI5B0VLVVEDZKmr2N0+zUolAZRpEnHdsBGB+qM01/3Zg9MD+Ts9zL2IhPyTD2IxOd5kANOEcWnMveBAP+Xo/PR2F/YqkmVUfnQwxhrWRU+xTg+C244ifkYIXlA4czx+B76yzWabxzIn8NXx1U+pvmrhUrQe+p5tWn6c5rXD/YLqBPyl71wMjmnbDdvGwfRBrqqqIZDe1lm4yg== 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=wMeYI27txNQJphiE2SVYzPZJU0gJALqwTTkHKj2yH/8=; b=HAvnwoAUttHDwnwYgDLe3/xchy7XP2B3d8HUygQwVK2AnUjYyUIx8KDxxH6cmKKq3GvkSwlqSOhMtMM4dGSmCAOa/uB1I+ht2hCcsg+WjqknrhsnGalUEpD2/1UzxTzB1IUZ1jb2R1pQIL8C1VxG7PlUrE2ffmZN3JTO2XT0jwUu8P72PEeCJ4q+AMhfzdbN+bQ6meABZhC3P50NB2fRWwzVb3SHlJ/dTU06SQ+maRt2gOqdLma9TrWR2rnA0vY0zrKxYFjzEPB1UTVaGM+88JTN5OnK+lVMG2I9goGBfrHWgoCpK/lgDDjTPM/mwxqPKZhUZZCjkEUsbKtPqb3+FQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:12 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:12 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 3/7] cxl/region: Don't leak tolerated RAM -EFAULT from unmapped poison scan Date: Wed, 2 Sep 2026 13:38:35 +0800 Message-ID: <20260902053839.25595-4-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI3PR02CA0004.apcprd02.prod.outlook.com (2603:1096:4:295::17) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d94056f-bf43-4450-1aad-08df08b48469 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: JbN/O0DB3HyZNG8YvTQJQm2LlokxDaUoy7ujObRLnjhSnVJPBkVuCwa5k8AyQaMAXW9b9/3so8ZGVRNHBbTd/z2KX5mh1yrIBCqRexXY9QXoknthFPrdnJ6dgW6+K4WwskHMRhxBWCzal4G4F3L19A/5BX4Y/+qYIfQTeszVzg3HwsjGJ/Ggx4srVmTJMuTZ3ANpUbt8WBhGWZfO+exigbNb0QuaP4WVX/ZK6t8zFvjZkGySGxAamhGHe267vDyEe2RtuVgigQn6D4L3FOUkxMGwFfgXEgNm48cVPoynC2LLFSM+gWSauGTaVR0YtnlvuCflobNFDVIFMtDMpxuSN/i1AcdPg4hnxMQBXKI2cLUZv9PT50BLSBPAkeKltQb+YCBSeIKRAbbUCI/wSfVjanl3AIH5+UwrT0Tr+HLG+pWvo9uvVg6m7R8L7W+uE98kK/Q8ZWtDVGoEydaz4Kn7DwdyuLMBR8ef/iLYK5aA6fvIwQlUJXkvSUWEfSTNCz2Eh0C+84mI9cTXeyVUgkoYgx5c3A98gIBr9ih+1ZCde1+Az6sbHYWlUBH4gXH99IwNjhKtFLiSRAu9yoW2ZPO1ED8XV9Gm+0J3lPm0IJUbJ/oPehuj+m0Xu/1adaKbPr2WidrR3jJWHf+7VmavrbbUDE8jbkZ8pvOaNm9G8roq0QE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Smr/EI/Ks3go0FjWWuKCJkB1E/mkoj8ycO67N90Bm3EWfTnJt3ru6WKfJo5?= =?us-ascii?Q?S1r6iNHYBbteicegpn1P8DoqG58BeXLUsmZi+bQRAwmpt8UIse39nMR5Yneq?= =?us-ascii?Q?8XfRY9jl7luFKyWT2yfCf9rSjnR4wascG1ZTDHIDUPn+JlE3ktI81k2YJ1ps?= =?us-ascii?Q?K4EyAHZFKkqKee0fUfCac8dpwdYAvdQAmLm8EBrpGfS+CIhRfOjETLYtvT75?= =?us-ascii?Q?TKjGDbQJ3bxoAD9Tk19klyo/PeVLQ1o5taJbb5L6kTITRrT2WVMKndILcR/p?= =?us-ascii?Q?SZYMcFvKfcxS0SXNsmD771y0PEOa/QCm60I+7cGQLePSF5R72XDuDFVm7eCQ?= =?us-ascii?Q?yWDji1KlpLxrKIYQ5VejXxpzmZG1FBvMlfXXyipx5FgHE0nyKjkO9MmFqxct?= =?us-ascii?Q?q624G3faDedtYvbem6/xAp0yga6urrYwQuimj8Zq66vQTgMPDwbJqo2h16LV?= =?us-ascii?Q?NHWGvJaXdgDYl/Yc428I2lbVTW5OIufPG80cxcDxsk4oIXDBOfuSK0K/2toh?= =?us-ascii?Q?jOv5AlEBh1+3fOg5gJNDhfj/fCTQng26rAvf1ZnSZIAMhTWSKUgisVQns2VK?= =?us-ascii?Q?Y8PTRYnR83P0b6otGMKnK5HiGLAo3BUMR8YuD+hf30euY3Ixn6AEyqdKgmw0?= =?us-ascii?Q?oO9oqf6TXg/geKzQ+Oeyap013//V5xIkqR6FhcXb3E9CjBIVchvhA0F8gX+k?= =?us-ascii?Q?SNfOWeZTbcz7Y4TBnZAuj+e50He0v+SPly9cVTjS+IQoOXbz7V3qFYWSC1AB?= =?us-ascii?Q?Fd3rKBvpTtytp8BUkcNr0iWZF30nCBtu40LyNU0ePD7KH4R4cVBGOuxqUhLt?= =?us-ascii?Q?YvmNVyD9RLklfqo5e8XdC/bvbG+nfSDEXbIXUCpNzHf7E09cKngOnL0q4byI?= =?us-ascii?Q?s8S/O8RO87HNmeh6ljvx+nPYEd19jcg7DxHGAeElrhjyJqel1fT/GPCqSB8s?= =?us-ascii?Q?RTqBVt8IgWVTzLbfaS0eFHWarQy4Elkg5Qg415j0ddSBrGeoYe1JjEgw9NR6?= =?us-ascii?Q?qhFMZsxFNQ/rfsyu1lrPdTupoRAZ/F88Bpb0ByBtZWWFtlQIN47V0lNY3hQT?= =?us-ascii?Q?6ejMY4ydcX0XFz/+IMKuAp82pfyzHKpHyVum00gz3Kck7WxiuPgNMvZf2wEx?= =?us-ascii?Q?VEOSWJJRHbAfN7gIL0oiN+p46H9MZzN98I/OikkQMNzkgWgoKTnKheNPgjnt?= =?us-ascii?Q?0Pf920LUkdt0plaRfdCdQlyNksY+D4N2I5VUm2eXl1CJmamYSXj05KPNSewT?= =?us-ascii?Q?UA+zJPGb5LUxkb8nyjvp3jQI70ZBTxW9uAOHERuAXyIV5hdj1blbon6y+sTu?= =?us-ascii?Q?YSPig+LDjKkvx3W2/iSSV/OnLz8VCOkwvw07aMH5XS20lzYyZvvHo+velvQ9?= =?us-ascii?Q?I/S3B3ARCBKM/AER5ePt2nIhvJFBysYXnHdsD1KkOIwPBMg9vaRemvTdMEOn?= =?us-ascii?Q?n6+OfuJx/XeOrmKjngqjSqHoNMia7nFAKyDHBpemG4wyF1t4kqQPYUq9JQe5?= =?us-ascii?Q?MFf4P0eHOPflo29d0VQzy5whtlL65mdeSswqbJWlg3hbBCF2e9hy8YwzDENv?= =?us-ascii?Q?UMj8sp3VoF+W6kcGMrKxDM8Bga5kUkFNADtNT6XLubv4XP2mDyhcECALSm8N?= =?us-ascii?Q?osy8ujqSriphAyZLBuuQMkzxFawdP3Fg3KcmVQKNfro+PFvkraE+fO6u6E+4?= =?us-ascii?Q?cUCr/toD/ccQuwtblf79pXyUZVo54E0ulUuwGjdxpX+iqD6FRI44yw+xSc+R?= =?us-ascii?Q?vcQqyXo4aA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3d94056f-bf43-4450-1aad-08df08b48469 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:12.1682 (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: 67TgX4ZPHxFLCdJXCD2EMJC0S7Oc7kY+2l8kEErTEhhcSJ+qtuNjMWwkrW36w9lW7oUO4ZFZH4t9VcH+yS+svQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" cxl_get_poison_unmapped() tolerates the -EFAULT a RAM partition returns for Get Poison List by skipping that partition, but left rc holding the error. If the tolerated RAM fault was the last poison query before the loop ended, the function returned a spurious -EFAULT and the poison-list read failed even though enumeration succeeded. Reset rc to 0 when tolerating the fault, matching poison_by_decoder(). Fixes: be5cbd0840275 ("cxl: Kill enum cxl_decoder_mode") Reviewed-by: Dave Jiang Signed-off-by: Richard Cheng Reviewed-by: Alison Schofield --- drivers/cxl/core/region.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index b03f30c04d35..ddf12075b95c 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2930,8 +2930,10 @@ static int cxl_get_poison_unmapped(struct cxl_memdev= *cxlmd, if (!length) continue; rc =3D cxl_mem_get_poison(cxlmd, offset, length, NULL); - if (rc =3D=3D -EFAULT && cxlds->part[i].mode =3D=3D CXL_PARTMODE_RAM) + if (rc =3D=3D -EFAULT && cxlds->part[i].mode =3D=3D CXL_PARTMODE_RAM) { + rc =3D 0; continue; + } if (rc) break; } --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012053.outbound.protection.outlook.com [52.101.43.53]) (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 E07EB38643B; Wed, 2 Sep 2026 05:39:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327565; cv=fail; b=N8EAqdTWeSGYAa5NkLAfs9a7isLR/bjJ23FdQA+wDck7d9t4F7hgInjuqx1DaOvVNVbMdCvtj1On1dXq0WODPR3CAgqrVG6J3lVy9Tgwl5EjqlVoXIIjwKPI2lzGGZMiozedNqZHblF+xAfQGdwrKvZm74JnA9jdQgz4oVX0UCE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327565; c=relaxed/simple; bh=y0qVfNKazWpcwW7oLyLszshJo6GR9y7vR3mpasEiKZM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CZ3fkNXrtWBZCk8YdvZWZBAM7LFU0ZORpnDfP3yfg+xGJb+GhiTKYlibB7CrTS4VGrKGeUuyy/BIGflJzow0Eh6gEkGLDaPGUgNzZkxEbFovoXDndTUDCmlBOtfsKBeBH2d7KRIjCIHLE+UsMwMysEi6LtUiycFH42ZCFguRbEM= 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=G58iUJAr; arc=fail smtp.client-ip=52.101.43.53 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="G58iUJAr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NEAfMqNiKm5zgqMluFZL/5bQov3jTLmp5uES4jISvyccw4Y6yJNfn/1YL51Kbrxj6esnc55K6WCK1hpdGGVIkWdU5x7GvVc468CHssvk+qAaneO0QFm/TdLm0uS401wGY853NaBWVHc9fjizYp7Dwu7MUOU90FoVCK+bfRD7ln8MHjMqteS9M4jHHntW639+xab34Myx47sb9DZpJWRsKd3SUZIYi3HgVT1XcEHiLatMBwVp9EXMP96Zs0BCtHdKkc9O+RJx+TapiUgG0ZweH+TiUmoRw02tRPx3x43M90EJYEuk2f/Vd+M5nvZ7ZH7k9w36FkC7CfMvd9RewOVNUg== 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=mSMcd5whCAUogFHcoM2SQ8q+J9eMgMsy7CJMZ9Ri2+4=; b=HrxKCt6oZBUy/fgAeCxNmyC091E3Uu18e6APsbtzYihdjjIpqSQVRGchoEviZ82L7KABh3QUr6LJ9EY7vJwlOHRm11mIYjUYqH6uNTyFg8PbJBVGsirTw38oPiXV17nHsotAXg/CVbR29JRPf+mG/n39lLny+o9SypJ2T8AgC0wCrobC5mvIiO7tr7PR0GnFKGWsnNwCKGmJ1whMOpJ16EvQBbE2nXgp4KqYq4NlxFCpHpXGjgBTNyfEUU5o58D4qc27SGv9EJHr4jvbHocYPPzNnMzfsDi3yba5WZIHZPUN6K77X8BvvaiGqfbRyS23IM7KoxD64HWj5Np2t4TdNg== 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=mSMcd5whCAUogFHcoM2SQ8q+J9eMgMsy7CJMZ9Ri2+4=; b=G58iUJArZwRJjKqFmOm56JVaRmg7Gj1j2OmbLNtl15KUpzTmeXM8pQne287dSB28zhLrigk25337/Y3HOB0IhSeHHa8HPKzXrvcG1l4gDtr+3ucvXhlgkFIpngPQSzPnmsK7JxQcSz7gCsdpTo6RSwNQAreB2l/hTuBHngid1i6t085TbvknEMkdX8+JQvnQumY1JoOoLNqTZIViePUKQOhgjTNeaPMN0mqPsNioV/YHN6COTmXGUn+xlaNOEvqtmxSLsHN+lVimhOMgqDJNiAqTbFcClzAMLcqOJ0dixednJz7+HXv+UUbV/eJpIxGLcv2jEfDQ9+gcHMpmmPRS4g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:20 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:20 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 4/7] cxl/region: Start unmapped poison scan at the committed decoder boundary Date: Wed, 2 Sep 2026 13:38:36 +0800 Message-ID: <20260902053839.25595-5-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI3PR03CA0007.apcprd03.prod.outlook.com (2603:1096:4:297::18) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 2adedff2-8db5-49a6-ee7e-08df08b48915 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|5023799004|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ggT/38ihsbQqklX5M9xyLcBE5g0qLd3BWUsHSqJyitGeefpoD0wunWsUQADLz/atmxP+LFXoqH64VfQVbGMdVRg36CxLWwkZWucwCYuN3ze88105Fi/KTVtmQgs2F41uQS3a6/nO4s7xg2NpbUTF6J2gqHQ2vT0FvTUANgwFKVlIOByxUpwwzKbVHkf3Kl5QjeAjp6iYo77jno2TSAzWGhjzr53rnDL3/it4AkZX7pn8Z1maYnCR7Z21X6sNNpooNuMN3h6KC7RAyd5qCBj52EKfQPloYlM4LeN5ygHTyg6YYsbMgxIKy9BGVngLJ2bWGfFIcH01RRgVAuXCZVnT+OzOuyCw2rMseVKxGlFwWLFcKMaL6czcWJAjs2QJ9qtVezIlDZdrHIBTgjRFLMX1+bxH8/RpT9jdXXfskJup91BAWRFmdUqY4DhuuP6Sk1YqEhNvVoKnvEt0gBpucxqaLLd7mZ4havncY0h4Bscxsim+v/FKotxKxQe8RZTAvtLmwe1BvIvlsfSUTDuGRPS3gUlOvdsLj/PQoMwRHD0Ux23h9LEfEaawojI+A1k/SlFtMpLJR82wNUJRXajIdytsryG/cpk8lBlrJknhYkfX5Nm3/cVyodBT54VliiOKPqTfKHYxY8XN9MR+62Vi8IN1Q6P1GobibQB7xOasz4zE78c= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(5023799004)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4Dzh+L04UAqHwgowiImCZbFBL7qB7Jx/NZmqGsu7/Ou60jpN0rAU+m4jYXJQ?= =?us-ascii?Q?aaczNkzhfUacTb0+oMAsrYrA/Zaa7InlBmt3a4VRSHjwmU/wGAbvLY8XfTAh?= =?us-ascii?Q?YNxgXBx6dEo1wWaDcv3IRKREVEWngewUHEhLzVphM08HJ6pRZzbi4jzyiO+J?= =?us-ascii?Q?LOwxI0NEtNIh/cghIkixzrmCM1lzahr1v47nuvYEYPGdf8jXMm23UakD6i/t?= =?us-ascii?Q?HnKGLPO6mwNlEEp8JFkS40gad4v/4b08SyOlTJZnZqJt2AfaD5JntftvjzHi?= =?us-ascii?Q?Og5+dHB+nw6BdvzV2XP4jf6WeZi30LorfRXHco5r0pNmAAoWp0lJBDtdioK6?= =?us-ascii?Q?zQnDqBILABQm8G4v3szx64maitjVTW5VCGhVw9ivIA0Jyezq9/8JPB0EnGQN?= =?us-ascii?Q?DqLC3xc9PfzFUmDShH17pS4dO0J3vEu0ZW2bSgEUAbBDFv693WA+1AGkerYd?= =?us-ascii?Q?SXOb3YJ6nzzGTG6Q82aBI7x4ui6Z2E1Dh8mM1rinnMzK/+Ar5FljY2XnZY8e?= =?us-ascii?Q?lhiKGAK9EfPexPni3Xq2rjoo8D99qLVnCT2UD00E0PELQRBKRSZgSW9fk8NR?= =?us-ascii?Q?HNeUD7Pp3Jjyya0H+vsAt8UTxV85XeV6cn2bw+K7LMYFVSrGV6GFTDBsAtu6?= =?us-ascii?Q?s2WYtSNm4A6LI7ktAGSGdHud/1cgBiEghYz7HfdO+teWVXL2NBCWz1U9L4qP?= =?us-ascii?Q?19YVjPDl1UwZUCkQzKmngLACY5YZ7sTEkAKKqy2n/eCXr6/lcZyIROB1Uiew?= =?us-ascii?Q?Qa6MxVBUta9ubyV7hbnqkMvKy2hKpIsNua1LSAnwSZYJPeb1Ng7K0N3KMRQr?= =?us-ascii?Q?5s1Dqf0o238FBgrPq+jMAgu0f1+YRcogNSOwa+UoQV88t4lx2qyxuug099HH?= =?us-ascii?Q?GKLNaXbafcKUstMFZKBphK6VUdZrXbA/0CY9O2QGi7qnV6gKXLbulP/P7Lbr?= =?us-ascii?Q?GayqjTMrA9C3ZrxOL8hAlTxC4c9fBmucoPsPoElgZu++c4iWoTXa1vwv8TKo?= =?us-ascii?Q?QA/PDEfmNk7PhiSwiF/frgzoxh7wO5VkCRMDdeGL/G7gchfcTsNPwqfdQ8jS?= =?us-ascii?Q?DaNg/vbLxaxlgojTdfkuC05nUugTeBlYVGsWIMNNBL07de7juB+Y5oObzNAO?= =?us-ascii?Q?euSAEvl2oMyljT5/Wqw9Jm1fTc2taR2EFSM0vczYdOclawO/aZCJZkcG0bsZ?= =?us-ascii?Q?X9DFHtgmqF2XkjYG2OWstDJx/iKY/BrIp90OMD/sjdojRyYMlDzSRQN7D63e?= =?us-ascii?Q?Z8qQJEauqXX7xbhMqIh/e+ywowoZc2SFSHd4LYnLasFdE5Jlt5AHtCd7DQ9g?= =?us-ascii?Q?349ax7VfSiOLyqnrsjd/MxRmvjz2NMyX2+REa5RKjUcE8NGgYckVgp5AfWYC?= =?us-ascii?Q?vTcItz2NFixBtiHGnk4FDBV1Mki8H7Bzsh9aMIxdErgOWmFMPm1XF/lbcAQU?= =?us-ascii?Q?+YdYU3nWUllP86IIj+TPsf9v7t5R2vUDhgraUhVLb1+F4lxAIXbLZG4ZD8wY?= =?us-ascii?Q?kT88+8SAmKqJ/xX6Ocu42+U7LOi/k6Gci33o861e7CjURym5URVmcK8C8wE5?= =?us-ascii?Q?WH/9qDnp8EdRtj08JsQytOCanZw7rPLTsh5EW1esoPq/oI2kn49ZkWIPcoxU?= =?us-ascii?Q?dRsFlJNQHQosrZ8fzcdHdhuSbgiVjQxJByQhWqrCOhgTukl9dHLyhbw5ghB1?= =?us-ascii?Q?s2YZ3merMYSpw5RmgmY7gYrFX/a/WKCTopOmvYvax0iX2t4d4cNNY+pseQjl?= =?us-ascii?Q?8FT4YBSn2A=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2adedff2-8db5-49a6-ee7e-08df08b48915 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:20.0008 (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: T3+EqfNwYXvbxaDJVzVvXpZIRRo3GzfZLjHNuzcX7BghBr6+IzVUae/GhYvhNJ2imdgBB/CA5ZG0+sErH+uizQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" poison_by_decoder() stops at the last committed decoder and records the handoff in ctx->offset, but cxl_get_poison_unmapped() ignores it and starts after the highest DPA allocation instead. Allocation exist for uncommitted decoders too, so their DPA is skipped by both phases and poison there is never reported. Resume the scan at ctx->offset, and scan later partitions in full, restoring the pre-rewrite behavior. Fixes: be5cbd084027 ("cxl: Kill enum cxl_decoder_mode") Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Signed-off-by: Richard Cheng Reviewed-by: Jonathan Cameron --- drivers/cxl/core/region.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index ddf12075b95c..b7dc5d4988da 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2907,7 +2907,6 @@ static int cxl_get_poison_unmapped(struct cxl_memdev = *cxlmd, { struct cxl_dev_state *cxlds =3D cxlmd->cxlds; const struct resource *res; - struct resource *p, *last; u64 offset, length; int rc =3D 0; =20 @@ -2920,10 +2919,8 @@ static int cxl_get_poison_unmapped(struct cxl_memdev= *cxlmd, */ for (int i =3D ctx->part; i < cxlds->nr_partitions; i++) { res =3D &cxlds->part[i].res; - for (p =3D res->child, last =3D NULL; p; p =3D p->sibling) - last =3D p; - if (last) - offset =3D last->end + 1; + if (i =3D=3D ctx->part) + offset =3D ctx->offset; else offset =3D res->start; length =3D res->end - offset + 1; --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010027.outbound.protection.outlook.com [52.101.56.27]) (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 302A8388E64; Wed, 2 Sep 2026 05:39:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327574; cv=fail; b=YFdhUN3xT6oeRkp41hUEvZ/HYV/AgYgzBsG+bA4doDgxFB4xNSCVw0wdFELEMi/4duENAW2iWB1AFvHoiuzQ/Eu0puG3IY7ERJ2yFsdTcP/OID65VEwnr0r1xD9WPF4KtXknFgt2HnVRIhVzxD2KeeDtrTeG8nlkZLVmZn+4PCs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327574; c=relaxed/simple; bh=gVHhm+K9bqr0BfKSZielCZ6EYtR5pN5HgRYY1utyWCA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JcdU1K/sjjlrjBOLUJibpYpyMap96uLXAOCf9dnIQ/Koubjxy/HoaIIpPzeB84JiWlXAt86qtcyaT9OwmOetLSn5OplEkhoHmeaRsjw/p0G++d8aQtnp60Ld1dvINHNkzEpjufqfwEbUCgVk1hGfNg1CKfhYV6TCwHBrxrDHYao= 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=b08K4CSZ; arc=fail smtp.client-ip=52.101.56.27 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="b08K4CSZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PCte8PWlvskC5qoeRH8IH6933rliFUk7v/Mhw+YJMVwtzjsZBq0HP59quOy6+xtz+WGX3O5vGW7woYElAQp8eo3SnZLc1JbelwCEn1h5wdXBZ5ABi/Z4ck/1zU92p5ZTGLrPkO4zCA2AHNcndQ9p8zfmLsZy8vy27I6va3m1shRLqKZpyAQ5aCuGMDTXZkoAhZqC0I9qzyzVwvxtdcFA/o8pAVSdA2Y9UescrnMNnptcTqULBRFuB1DhDE3IbmdxwrFvwd8tRCvavlzzyApvmTk6uosQCWakDJDIo+tkZvsA93VdwdBif8JQnRMwKyus45OJgABRwyjg+sPB1WXdHQ== 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=gbyqPxrkXCIq55a+ykr/enupMWGNut1KsIfSmLHBcDI=; b=WyaQxbZ8zthY5yoF1cawtsfXYfp8ZReGQXNOSB8hl9o2dcJ7Vb6VeVULWNPqhhih8hdeBWMy8YXRsniwdi0KgMfMPRRzST9x02muK15Qkp8BaYpd/Vxs1jzXdEVpqj1GDnQwjHNzaUTvd8xnfFbqxVej64H7tErABmlKaeOv7hEkQrH/wcdKYo555dkCTYjdtQs7GK16ygyOovcuhcM3ELMRciuVKebSuK2MHFI6ML9tNAuEGGZAH5v+lDmFFLXozkOjA0KXZw3TlyKRNhetbCq4jSj19jgpBUNHmECHhvL+BNVcI4q6S9eJewv+Bd39bkHQh87QPj3yOeEFNAz2Ew== 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=gbyqPxrkXCIq55a+ykr/enupMWGNut1KsIfSmLHBcDI=; b=b08K4CSZePMxC+bbNFqbTTcnVrexj6Oh4OxTNv17O0kex36VUBZcu5mZYTev3EOS/MbstmK8PxcCl9qC68FSQU6H1cKYbFyAiXk6h2Zcht3zDVS8JnZaerKzhtcYwbS2wVM4PcRs9/VWDwXo5vsRQSgO5H1DLsfHEzPzAvC7ZF/q4bl/wU6XV2sUL1/C8N6jmxpO1KrwYqTt9kBE59WLHjUrVU1yZfedvTDeGC82K1D52avFh2TeZi76z0i7UkLN1ZLgox06e3p/rLMG8hGK25YiC8fsV2CW3sNpwvqDbORqLbdtpIOzE2Pn7+mun2bBE5DxJfUJIhEjSH7hT35jtg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:28 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:27 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 5/7] cxl/memdev: Don't overwrite the error from an earlier partition poison query Date: Wed, 2 Sep 2026 13:38:37 +0800 Message-ID: <20260902053839.25595-6-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0023.apcprd02.prod.outlook.com (2603:1096:4:1f4::19) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 55ecf3e4-5806-49f6-9efd-08df08b48d21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: T2mH04CoHBanjZDi5/OQXaymK34uyIpOPm6VsHxtSv+YusqINLWUYAJijQXD9iCXfiTTD3ppgC1kgpWuIq9ow5rXm7VJ74pO3BREdKnBTJUYMOnr9wS2mTdIpJdQcerzfZnaSP6EcXGZur8u9ZD5+IpPkO0ODckW0QtSn0YC7jKnlpgiotd3Vs0ugZJpZNGCM4jt9h0I0c0B0WVouRfUciM6/Chx3jmm7VciBAPaeJqWnlLGgMB5d5Rx5a9q8esifjkzbe2EbYcvYjMKzZ+9rrBHTSQ3LJSMhZwZWl0FVxr/Ihv/YS9iTl5IJ09/D+i03YR0mIIdRNQqlaBklxvKzmzgIrriukUfgDK1ZHYHMIa57wxf/deWAv9jpcCOmNIw84AicnDsKwarvmeg+195WsnsZn98ldnNjeYHPX8lV9xTEAfdtTMh2YUSAeTGxSuGeX6P+MKWU3gzWWnDr9Odu5ciE2lq9fnHl8Jkc2JnV+wromXWlw4d0LIyBB2sn6ooZM+FaJvNBnRY/AxnU0ngq4DDvMmJp3VKvxtku0LGyIhHeY1q+gwhBfgCKRhZqoXMYwEh3dK1B/nIcsF6+9eTkpy9Q6WCQiJjGWVPcgdIUsjoczdbNw1I5Ul03X5O955EZZcPBe/3f+yr31IDZ9sxgtxq25ZS2Qih35ZCp3g0cac= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FDJLj9K0LqX/RPF72fI7H7dCHPiYn3WFMtHlbN+Ric1kWzc/B1AFMTFZaPvc?= =?us-ascii?Q?ZVCLa5J6AxBb4wJ/uElcV17EW4EaGoloqv8XARdbpfv/lD/efG6wY95RpZJz?= =?us-ascii?Q?bfEc4ATodOFr6QqLcWYxdyDo/c483iSSlz3cs8o2oK5WbvZ7jvuidbVCp2GO?= =?us-ascii?Q?zuzmECMbO5YvhGL5xORt7f2z4UNjzLBBvWyiOM8AW9sR1xRWsdeAtdBba3Ra?= =?us-ascii?Q?UmLG5IhCab7cfEl7uCLpBUWGPaj6nEWfeyUXyrFL01lbMLu7B1wX9F8SSBEq?= =?us-ascii?Q?9aaKKJVzoK0diEXABUlauL6fR3SMgR6c226SV4SgIBzKJwM54KIoZpatNJna?= =?us-ascii?Q?K5Hn6+MfEpAQXQ32AOEfCPEd+ktRTyeN2pl7jwMpPICleGB/x3CGdKk8MFZ6?= =?us-ascii?Q?+9hK6zxlDSGkItuJdtmVr+GZzeyxxm1GX9UIxRV+W7iKwaYjGBw5ExN/n0YV?= =?us-ascii?Q?8gJRPGz1I5YxZ17KXnEgWk5ALzTD2h4WKz9i+oncn5pmmBYdq+NOO/a3nmGV?= =?us-ascii?Q?2Y8xLb0mnboIeV47S+vTPh9289I7Em3O2IDJC/6hwZBjFd5MF7y6kthD67t5?= =?us-ascii?Q?m/WZk1puG1Yg3JNpSUnupKkVb//xItGlj90/qj7u0nsfJV2uIKFz36nww4vS?= =?us-ascii?Q?OakP1KGY+2Tdqwqg9dMEZ59t5vCnHlDnBOkqi1maymgatgJxOYjae4HmGgct?= =?us-ascii?Q?9cfu3+RdrF7RkqO2Io6qdjPfW0Jtx0SEc2NoJTo8zSnDnz8jvhsJsPaP+zmK?= =?us-ascii?Q?ob+1333DKh8dq1OfCEpHsFQdnlx3GLLBswgo8+JIXrQJGAOfVTDqwm/gPBvj?= =?us-ascii?Q?eJp7QlcIjlwactvRZVPlbK3wsTHnc3GmRDccuLbz+rKVXFjO/NUvhKBz2vXm?= =?us-ascii?Q?yye6g7J0IEBGDhgH7vbnGuPh8iDaCk8Qt2YwVEuENSDjBQ3Q6qAfa+tFQ0K9?= =?us-ascii?Q?2lQRQcm/RNP0ET6mCBmVyO8bWpq31gojJR1ThdjmbBL+9RdIpRBPCCUOVF2C?= =?us-ascii?Q?7qsbV++uyZU/HtyKIxExnv9f+i4b4sZ72LwiA/OADlTtMt59HGwS0w1YLX7v?= =?us-ascii?Q?Aqk6d2ODO5VHCTQTTFO3k8ByMT5frKm1KSrH3AeUM5edD2j7QkeJwW6SmaWl?= =?us-ascii?Q?xDDZ4qwg6LBCyFnspac6ridTygjcy7rlJUNG3epruc/o8fZCAQ731vjIho5T?= =?us-ascii?Q?0D3jIPniyj3q6lCONluP4xgGoObkaB0AgZTsLRIG1i1lvT8bP7W4BG0D7T2c?= =?us-ascii?Q?YjJvIDkmdtYlg77t7eGLrIBCgashH0gTI+Ty4Bj9gxC9MHFsYM+TjTkVrnqD?= =?us-ascii?Q?fy+LleZWaloPBffikN0WtVCrsAStBlUeRhMOtgUaM93wDRhO8ocDiFWvyxJn?= =?us-ascii?Q?5VPChvXzm6HhdfI7YIgP0MT67b40IPhH3oHxNFxgMeqW9LWkRopg7enDGemO?= =?us-ascii?Q?yZ+DVa77+gJzpr/coXoYpm+rVynh4IwkW9LZYFpDTmSwnp1ZzWJxgKG95Uyw?= =?us-ascii?Q?1nxWbzCYVUkuTHkiMeCSx28eADg+nNdEiwTaXtWxn5bPy9palbG5dWhO9JCu?= =?us-ascii?Q?wCgE47GeX6et3Z97v+IKmhF/5ACa0lneXdM/pejeYaSNTAIC9gxBnVFvYZ4a?= =?us-ascii?Q?lB2oGY67UwDpXIMJ60+oW3wlEFYJqbE1QxH9AO08Nx4tfg+s0xnB105n2QX0?= =?us-ascii?Q?PMJkNxJDk8lAT2LWGlM7xPqVRZEO9jIxcSru7Hs8bBmXiCaN?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55ecf3e4-5806-49f6-9efd-08df08b48d21 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:26.9679 (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: /x0YTbxa6zSujfB3ooR5PD/YBtu8/UIelD69oE1Bdxrq5EQBK5DaSY9FmeXcd/czcAT/WesD7xf/sh76/ZVxYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" cxl_get_poison_by_memdev() queries Get Poison List per partition but never checks the result inside the loop, so a later partition's success overwrites an earlier partition's failure and the whole scan reports success while that partition's poison went unlisted. Before the loop conversion the PMEM query returned early on error. Stop the loop on any error not already tolerated as a RAM -EFAULT. Fixes: be5cbd084027 ("cxl: Kill enum cxl_decoder_mode") Reviewed-by: Dave Jiang Closes: https://sashiko.dev/#/patchset/20260708074228.43654-1-icheng@nvidia= .com?part=3D5 Signed-off-by: Richard Cheng Reviewed-by: Alison Schofield Reviewed-by: Jonathan Cameron --- drivers/cxl/core/memdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index b3419df586b9..e39b3d13fd56 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -231,6 +231,8 @@ static int cxl_get_poison_by_memdev(struct cxl_memdev *= cxlmd) */ if (rc =3D=3D -EFAULT && cxlds->part[i].mode =3D=3D CXL_PARTMODE_RAM) rc =3D 0; + if (rc) + break; } return rc; } --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010068.outbound.protection.outlook.com [52.101.56.68]) (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 BC400388382; Wed, 2 Sep 2026 05:39:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327586; cv=fail; b=f993NYiafiB9NKcva89vbuCLP1N7h0y5h1+ubcd/umVO3wYSZM8DNUpIOBK5VktRdoZvUdsl10pzQUPQozQmuzIssGAB7mDyAfQ2hpE7PCthc+xG4YaEKqVn031hgoAkUfreSddSZ4x4boHweBvnQNSUjrFN3Cjb8al05TylBCM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327586; c=relaxed/simple; bh=QFn0C9ecIygFtCskeh8GPRleJ/gXkBsR3NqjGNtHhMI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Twro8w9zR17KyoSapxzHdhLCjL7Vzw9mCN2idQlyxBnDzpkWvonmkb26idjZkNdpkxeH40fhv56asAJXaDjTtDjej45vJJtU5vGuI0OUDeK7jTFcbnDJkcGVoOt5UY0gJldDT3aYDCO+L2N7uyB/XpLXsy/hS6YPBzzQSDqDcUw= 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=naoBPMBh; arc=fail smtp.client-ip=52.101.56.68 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="naoBPMBh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=riSg+D5hmhBV172Ht1/MgzGP7GUdtsWXZNp4yEEqiH2dP+F9BKtBtZRHxV7vMEw1kYUXan4TG6OqRNyz1yYzFa0reHP8n5og728x2qsTClRmkgBhYJ2DU+3tVeOuStYXtZLViEzs0ni1ZvOlmBD6iOqPq9ill9xNfZM67B37HP8QT3rti/VLL4fFp5/sEN0EG1TDoWAGUbUtkuGCUhf2w0n9O0DIWipCBFKjpvV9U9A9qFR6flxFyTfjfnzhMcN8+x3MU51QgjH/OABf2/c9nNRtDBSW3b4OGCE+fpxHPieOdWKFfOc928lLiIJfVjdi+m9ChK6Bl1AC97MpJVduxg== 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=aff9KhG4BIxhV8dm4JC5lFltV769GZGyGALlPzgW7xk=; b=LAmPQ97DNUkj4Qv94KHKsDAQ65bCPNxAucgQiVU45eM05nWO6ZpfHrkn7bYMSSk5adP0dgMo7/wYUBQL1aN4G9i55kDFQWvJ7FIBGOhFn78mpqJT/r40ZFmckBMixQZWWZrCSWX34RFc38AES60X91IMYau21Uo8HOUz12jHc1/9MP1IygCuFXMO6IaQYoIoa9UueMm9qqqt0mRo1Qpkc6ir6+uo04lSp+fPRvEOAz1BGv+K9tqyycw4I5XmnaSlhUeVIm67Vm6j5FvyLKs9k5lwYQvo5vh3PHwdZX82hjBgIH8/yTnlEU1jXJxvW77Kk4lEjr46bU85+lO/CXlV9g== 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=aff9KhG4BIxhV8dm4JC5lFltV769GZGyGALlPzgW7xk=; b=naoBPMBhB/AEjg9K8SOLvvHdbZifdiJb4+w62bdSaAX+Of4O9L5E8lTjQSZq6VGTe1ZVP6Y1fAXLDoSANFktf6l8ZQ3SWsaSJeu9ML2EdiAHXjfFQfTiNFq6gmwUGCQac9zkJ99NyPKtTJdaWMJsdmweyieT9KAaq9XBm7bYO0JU/2Fg88tEX5XWfedLKy2hMmkzonQN0w2dntmDu0F3psfRYdR/0661PWPlJ36xet4woRFnqtxuMzsKIpJLYS4szJTi7TkkDSihelMt6PF2rWoY/p+0aGhye6gqVc1e2YZbzMI53Z+AfHkKGE2KrjOm5figI8kUOkSItKnBdKcVtg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:33 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:33 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 6/7] cxl/region: Reject poison scan for decoder without a partition Date: Wed, 2 Sep 2026 13:38:38 +0800 Message-ID: <20260902053839.25595-7-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0012.apcprd02.prod.outlook.com (2603:1096:4:194::7) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: 84974e61-32c5-4d27-e65b-08df08b490dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|6133799003|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: L+FdAvTbxcY0Mhf4Lxv/0vIjv7eud78rlXy9PL0ojDSPP/5V1hwSzyNhWf2Gtmwu2va2fTSnxz6qoNjK0zsJNpI4U7273LHA5AtWvzXAqrNwVC8YoEaknkFWwaxf2E2GMa1rHaFkBsIy4669H6SQ5DShflFEftY2pG+TlLVqyPqZAxNO2h/Xt5CPCPkzRCKw3qOTR5YCK5niq6D5W94dXdYO32Y3xLohMpfipoeiX0cxMLEs1VYvTUezBptvUk3U5YZeMxfHbTMLYUL5hHydHMKbSGN1U31vkStRpgrJ55zGQsvLSwHuELstr2EnMYCZvwWZnkRlWRDeGDRVzs2X1MeLNQxYHD1++g2rwKs10LVr/gSfqd1hJl+c3qWZDW6HjmvHRBXaNEDJIyUv/IM7vCNi+vAKbAkwWqRkQXK3VYsS2T17NcomNwXJ3gZrAr0MhL+VBl2qH6IWRZCG3LUGcWU5mydqi8tQGxbdr/pybIoUeVFQN2foXVRulfYSTxoIrwQGOvlM1+lFvhPSwe5Evhsz3Ta0CgDJVuqoc1lvPvs34SDZ1caLu4X/9yjQNcksucOdpHJi+cvNiEMJgf9ZsfcLqWVXwIscUJs2e2LdB5rAZyV6zubr1wS7gmf9TN+B5uTmQKx36IK+KlZSOgG5ZvRhxwvA5vUAIZrTqLxDyMw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(6133799003)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6Lm/+xkf8VOS29Nu5qZSNVcO0PLyw49A96nk1Qkk6FfA7YzPL+0bs971k66l?= =?us-ascii?Q?ABRvwTrngGERw56PnVmzuYwKkkbftnv5oExxU8BSPB+U6u9TFf7s6EzmHOAm?= =?us-ascii?Q?dpwHgnFavHN+qqJ3ZGU2IBR9pUfgbC0okvcuo1IOtcUUWiEhbHElFLHnnGG9?= =?us-ascii?Q?kJTpmwsMEvUv4B7kNbvrhX2raD7pwH+ynz90IkJeRRi5W38f34ap5h1UUQPA?= =?us-ascii?Q?l8ywpjZ8M1upgRr0uJ20EDaLfLWsr9Y+4LoMT4oNaMQcjJCTpmHntOjuRb4L?= =?us-ascii?Q?cZCNmtqnmb6m0V1e6ILir5IG0lH5QyYQLdmPCgwtYl+X083njhGN185YZRV3?= =?us-ascii?Q?jW4p/Z8P0q9zpcn+vnvOrlksVqu0jOuzGi+SvANozc1mmsNNBsgUffVPRLyr?= =?us-ascii?Q?0Wm5eL80MPgMoruERNZAhN9SnF7B9strtbHEZe85ECEG9iUApH+Y2ZeP/KNh?= =?us-ascii?Q?tYKOudTs9IGz29bBzyjYd4ETzmkIHeHTwvut9azbhj3At7uKhAV8Y9GoKgGo?= =?us-ascii?Q?E1ka8U8e+ucBtgbzvzmktVAu/t9zcX5ea0bUJyQsyr+sxCu6pHYD8jy6+Rdz?= =?us-ascii?Q?nbKlk60Q+fEM7Rp7ckj22iIBA4Gq9BNlfqKssnLgnGHwtMvv8dfdZ9+uXuXf?= =?us-ascii?Q?ElbzIofKgKY4nOWljoxeVJ4uFqtxqXmhLJjpgfj8bcpHgZi9T+2b8YMIxFCP?= =?us-ascii?Q?rb1ITG1mIeLRg3ZLvA2S4x5eazN3kis6H6S081vYq1b8ZmXMy7VEZ7gG4ruK?= =?us-ascii?Q?QDw3r6WMhVBQ9d6Td8w1Ljfvg0fh3yjtQmpmkyyslEKTNzW1CLisbQpscz/t?= =?us-ascii?Q?1jff5ETWwQy3jVK4rTehrwKffcn8HjCmiwjP6AWnsllr+qjbdn7YdsuP9qAk?= =?us-ascii?Q?vl9/9uquLhScPSXsRdCOBAoONzpwwn4vsAVE7kxRNSQZZ193A86+Es21ipm2?= =?us-ascii?Q?SMB0r0PVFCb1bE+Nkijt66uCUXWY/9nS1dq3F7fn3s/lmf7FkYlWHD/kvNK5?= =?us-ascii?Q?avKTbdLeP7t426LAT6EcRlTr+RYfHa8/B9LTxRk3Uh9NaK4ivbbC6WlkAint?= =?us-ascii?Q?mGtOkiqPHg8xM1Q5iQL80ZID3xC7Xdoz4qCBnmyGZ3otGRewYbdfU8zMNGgv?= =?us-ascii?Q?f+dRFs+lg4HJQphrc+3/f9LNwRxlHdtMLKpOeSR0JgdB03I48lCP2OsXhSUP?= =?us-ascii?Q?XbGQkQV8kYXW/vLRzQnWLBLHJFlOkQ8in7Wppx27p6Ic6HOoPm7EiFJxJtO/?= =?us-ascii?Q?1/5fLhIaFAEg4t0xkF66JQFC+G89mLhTpb1Fe1vBSPdNsAA0saaKAaaGdoUC?= =?us-ascii?Q?Ur96S8ExyNxDBrjAcKJJfuI6i4vG0Yw0zsW22466kCQkiExF90WCLjl+JPgr?= =?us-ascii?Q?I0ZJU/GSoZD6RdX2PYB3kKi5bJHmSLKA687X30r3HU8910n0j8+02SSMRPC7?= =?us-ascii?Q?sfXKSb3G42t5ySFxlcT9fDaHSPf9qtpMeOw0QOZUyIsK6O8aJFhGrgRUEY/5?= =?us-ascii?Q?RORgQhi1iQsoC148BKZ34SJ2Gb+XellOIG3n8PybBESZ2/spadP32SsnOuIY?= =?us-ascii?Q?wk5ITOg963GRorVs6EiLu6eQQD2/R69q735NlmCwsCXZo3dxto7gY6cjQhx5?= =?us-ascii?Q?3otlxrAU6ooYdJp9CGByWrazrlWinPCe+mGqHy+6+D8KSmf+0tf4CY8JxYtX?= =?us-ascii?Q?lfiQu0A7swBRz1a5MJXgy8Pq1vH+cDUQPBcSsBJf87tSNbtk?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84974e61-32c5-4d27-e65b-08df08b490dc X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:33.1710 (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: SsaJ3SperrqwPNDBseatqYKFKZYPJh/5kYMzkNF4DPT6ifwn4HQuUtEk4MBlNoqQL8zME5RSMO4oz9rirmQ56w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" __cxl_dpa_reserve() may leave cxled->part at -1 when a decoder's DPA range doesn't map to any reported partition, while still keeping dpa_res. poison_by_decoder() then indexes cxlds->part[-1], causing an out-of-bounds read when poison collection is triggered. Return -ENODEV before accessing the partition array when no partition was assigned. Fixes: be5cbd084027 ("cxl: Kill enum cxl_decoder_mode") Signed-off-by: Richard Cheng --- drivers/cxl/core/region.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index b7dc5d4988da..afe3fb57b7fe 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2954,6 +2954,8 @@ static int poison_by_decoder(struct device *dev, void= *arg) cxled =3D to_cxl_endpoint_decoder(dev); if (!cxled->dpa_res) return rc; + if (cxled->part < 0) + return -ENODEV; =20 cxlmd =3D cxled_to_memdev(cxled); cxlds =3D cxlmd->cxlds; --=20 2.53.0 From nobody Sat Sep 26 11:01:12 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010068.outbound.protection.outlook.com [52.101.56.68]) (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 78BBF388E64; Wed, 2 Sep 2026 05:39:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327588; cv=fail; b=Qurk9l4rrE1gQm0WZb+vt6V6YdyB/I37D+/FrIrbdlJGX1SqBWh9QUyH+CluJHwPDkmZ9wJ05WxzFzZaTcwPOrdeKIp/uUqMDcP4ZjzjYzcrzSKoysg1b/fj243AbaJZyaNaip7iDfVsPWYOY64yIrS579rYCEWxFiPkrafleHI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788327588; c=relaxed/simple; bh=3M5VehCKhJufdxSoI8My/oXlUB+GUKmWdEA/qHI8akA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XupisgKxExWFdFjOVWy0FCvw1EFouMIyy/TeCVL0hEBEsmOg41UDFOo2QZqb24RiUphIV2cm+wfYJQsyzGV+IwAuvlzBaHZgRxkYizWlJiVRINAIvenjRbK9Ud/dfw9bzB/llGtUeiVotYIGC3vhcpzbe3Er3eAhep4OlTiHBd8= 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=iuR1az0Y; arc=fail smtp.client-ip=52.101.56.68 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="iuR1az0Y" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lFL/9C/jt0S02aXMYhXeY7joeIkkxBFpFxJphRfOOdP/z0UuvwW1hMfpNgkYuAAoBRAdnaIxyK5UZeRT/7OHXcL3ofAZyJsKoAHgGGxRIo5u4D+vST3kl5WwMdJMUg5lO64samUtoWrmyEbtkobS8/pBw9KJq0/s82q5kn1NJ0J7QPg0kG718PoQK/P6EWg4Wq+hghHklt3b7Lx8ff91BWfD1XQwczhseWid5jE3hfVZwzP5fXQ7lWyh+0cC7sZmH/O7Ii92VH3tn11QhSzo7E5x0wVrkhDubb9cyCDMArUJLuLP+LZkPYSGlqhkDobhJttQ0MFZ+Rq6ihyMmKKv4A== 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=XWayRs9RCIQet9hDEJ593YX+0uEu85lDQTQjeC2wJws=; b=AXS5kXt2g992UL1/KQxlU8D0TlpQypguflEOoh3YgeLTJEn0VOZqi/1hzLCTFje4ppaJfpyz0+kJTg2EbchR0d070SjAZ74N76ff+AtN2K7alOM3bfZoReqhJyvIhvzfSZI8aHX5LNhXn2iK/JYZdoe8/Akbolf9VVgIH00JtfXTB4/QwuELDW4oKst5ArZIWOiI7o94Z6enUTlcIPqqaYiqnOf7TBNHw4X6O8mPEv+IIeyaexK/kPjWQg6vgmq9aGsdWj89jAPwbbTCxdDnTRxm1CY9MbE3zWLK4tyij2e6XWpPc0y9oZxf5q8eVT8wAge+7ZPHyOYVgMA8J8vcJA== 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=XWayRs9RCIQet9hDEJ593YX+0uEu85lDQTQjeC2wJws=; b=iuR1az0Y/ifO1v0ph3Dv8JRtmDdu2aijBHP3HpaLHKgerI279rFMRLHtWdqY9bovyjxVa6SHrGg5Zldp6oQ0qK2n3wI1MmaVFAomF4cL7lgvUxGW21tRYUyhfi7HofAF9toRCuaxXxdoc7fN/CnErHNL6iWZ8WV5TKvhLjyCdWXphoF33yW21dBvW7vvZ61xCpg/jyNv4M7NSV9bQmJz90tF/+LexN3PNIGpjXXoX9rVl9wGUfr2XbSUQdjTCbYAR46w09ghV4lIOeRAhNUR03aEaucyN/vSJTFp0yElUVUIFV2nuwbyb9366LgDnc+Av++QwTz+G4j0lUJNJGhmMA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) by CH3PR12MB8712.namprd12.prod.outlook.com (2603:10b6:610:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Wed, 2 Sep 2026 05:39:39 +0000 Received: from BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8]) by BL0PR12MB2370.namprd12.prod.outlook.com ([fe80::86cf:c3ec:2cf5:74c8%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 05:39:39 +0000 From: Richard Cheng To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com Cc: iweiny@kernel.org, ming.li@zohomail.com, gourry@gourry.net, rrichter@amd.com, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, kees@kernel.org, newtonl@nvidia.com, kristinc@nvidia.com, kaihengf@nvidia.com, kobak@nvidia.com, Richard Cheng Subject: [PATCH v7 7/7] cxl/fwctl: Propagate feature RPC delivery errors Date: Wed, 2 Sep 2026 13:38:39 +0800 Message-ID: <20260902053839.25595-8-icheng@nvidia.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260902053839.25595-1-icheng@nvidia.com> References: <20260902053839.25595-1-icheng@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI3PR03CA0009.apcprd03.prod.outlook.com (2603:1096:4:297::17) To BL0PR12MB2370.namprd12.prod.outlook.com (2603:10b6:207:47::27) 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: BL0PR12MB2370:EE_|CH3PR12MB8712:EE_ X-MS-Office365-Filtering-Correlation-Id: afca5250-15f4-48e7-cbd5-08df08b494a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|56012099006|11063799006|10067099003|3023799007|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 5yAbjUWG/zn8+t0bEGuw6wSS6EbzOS8BP6RW2swLye3DyvWXTd9saPvE80TkvArC6KLZeWSSV0Yyl8xAgsUimTm9krOpAmukxLWgZOVIbNu60o/2hg8Y2wXRoVH3gOtrmskxaxsgi462a97L8vrWCpnCzLYRtczVILN2VmRRo5IouuTUDGD21yBKAo1x/uAX75UTXbBGYy4nFNCcpbJAWFFzP8kml8IzM1mvcxUEbvimfckWYE7iiE7D52vDNYW7tPpOtal3VNGnjANJ0RD3WrtywRexqiJOlwMnjOK0afnYxbmcQhvSCnT7QZrB8hPz8yzx6TSyACaIIZWOzVTrgvu0h9q4mTkuEfOgFJFY83lkm+9P6XQs0HCEGH/2QDWYqzMAu9ZwjA/Hu2zXOhOe8qPxFG18hVlPrwZDo98NUHZC4WL7Ih5dMtWbjotPdxylf4iVnIiXqvBvt+PgcjfnIuhm3LDegoJD+W51Fd5fEbMzgfHxIv8LE8cD2ZNCJNwjp60y60+4SgtvZw/Xurd1+8qzLRmULL8+2bRgqckO4M2cuaukc96/E5Lr45+Sh6IjSH+UAmNstAGqYmNllfqtKHE/G6Egomc6re1EX90SwbcX42QprYOdwERnMXNt+HFbnxECi9Qo8cDQWn5HYBe/5FM8QZPBW3hbR5iR570KIKQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB2370.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(56012099006)(11063799006)(10067099003)(3023799007)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?j6Ax7CufXbp64fQYAIek8B4dnPD6d2qOc0MC4BEA78biNuT15ZL2KbW9LXMW?= =?us-ascii?Q?Y5fOgv0/dsaHFuG9/TXDMdVm5fKjYse8wVp3oI+VX+xuuDmVZ8N55CsNJupF?= =?us-ascii?Q?MEGT5ofnRzFjXsFccZ/6j9DsrNMwDvyTUmGMmmSAr/7UEYUihBc5r7V/v+Zz?= =?us-ascii?Q?DyAhkJ10ZZljlspF89bwQ5XPiH93Nr3NcNGDYeTVi7IrARsZVUGCtP70nsqC?= =?us-ascii?Q?GpMBP0RsPDsp/HDr0TgnEjLO/rZ5CGY4LZRQlXKF/3+e5yNi5zqPx5lQXUog?= =?us-ascii?Q?tjAdayaL25sLq0p/h1p7DTvWgP98Iu9iQP1AC7BywbtxrZoA6d82fUOGt0xm?= =?us-ascii?Q?WkN+bSG9sg5PkYWsnKowPR7TA4QcNt9FqgeeYQMq+b4hsTwShlRtadwqtURj?= =?us-ascii?Q?flD+2nbxfRkXh8qeBhOxjDgLGVCEzpDaD/RFirLS6xfJYTGAZopgnoUTh9/5?= =?us-ascii?Q?iy+e8dXsuJi5wFrTJ7Slgkd/i1ttnd0hXrfPyMyn0iJyihNMwmVT/KTFIfQq?= =?us-ascii?Q?vIf7PdWx9WTgBZJjCMK4zafF/lh8fd911+6N5AcLTlirgkAhSXDdzhQjzXHv?= =?us-ascii?Q?wXsC3/0Drx42jKvSWcYVA5WNwmgn0wlKnGX1x9MuhFlL4ArDnAxsEChLy4x0?= =?us-ascii?Q?cptS2h7tSyMEMxtbvWr8dBuT1EEQ4pc1P0dN2a5WxXIjqLzSnm+Ozi0/4b4S?= =?us-ascii?Q?LkfpeiBqnCmB1q8v6NPLFp5T1BoAeAs+/KRYstjHqQ3wYGcbBUBb0z6Wc3Ex?= =?us-ascii?Q?ykkAWKnXhoSO2+P0a+SEjmdq2fxPM3eXbpMw5XmmeErZ12JXLaDvHBAfWAWf?= =?us-ascii?Q?5SQsszF0tZzWSjaBwdzlL6CN1fSx8k+6ohlIjglwmPUr8IJmXWtBawJctJr4?= =?us-ascii?Q?tYL4eiI8HWN6nNYa/clx15IBmDiEa2XWy7XK9Et0VFpo2PLHIm2E6hDVfmek?= =?us-ascii?Q?RGFCXE7eM61vTVpW03GdU1D43/QP1M5aDNinA4x+tUfmm8GQoa8Fln9tkmk/?= =?us-ascii?Q?7HXv465rT2vC4eHykO2ns9fji7npu5GxOP2Bt9NiedyxAhI4vzDWNYWd9Oly?= =?us-ascii?Q?rsfXmZaUuCupOjpBYBN1l0GXJ9V02CeUGYNcG9+OdLf6KOWN0ydXBZPJ6sQy?= =?us-ascii?Q?fTNqLOsrkGFfmHGLBvYDnlwS1+rUs1q9rIxgIqRrKe0+d82ngR6TNZUCUZwN?= =?us-ascii?Q?DHAkLHN3WeR1PzD2nCX/rDLlbKfDn4pz2XyGtAcETIGCoNwaNNzd2vpxEMpu?= =?us-ascii?Q?QMV6h/SYudzyGcZ+4HAc3jxj62P48O9GwlCgxXDtlJTHQVu5o7bm0Q3k/0YJ?= =?us-ascii?Q?nx1Ic0ELinPpRHBzmtghynWF6Q7uE6GF1PGmT4M7Jwnb17pn8y5yT2vwsI9q?= =?us-ascii?Q?B9xp4f7jxoQYtkLM7cS6RU4EXGk/BNiUA7MFP+6hbCh6WVk58t9LLMH5VYXe?= =?us-ascii?Q?QOceJfMFw7qjiBfN55tNwdA8YlOKhBYV4XoWmullaWMIC/JtmW3gUiqxjOmk?= =?us-ascii?Q?CfKZoJs+424gcswEPjDQQ8AyyXLPZHABUlhwxdv99W+FXTjEVofddogg5ZVl?= =?us-ascii?Q?VXUuvgrJVTWQZ6VbWY/lYqEYYNEKQD82UZMUjRb2NeOPDclb54cZt9kwVw3Z?= =?us-ascii?Q?ZF+7yB2UlbyX0NHAaojidE79LXqXTW193WsfSBKJba4DW4xfxjEAvtD9vLQf?= =?us-ascii?Q?BJjukgvxTFKVq+Jfd6EZvpy/aR2uTdtfoZDKJ/jvuXzGtCys?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: afca5250-15f4-48e7-cbd5-08df08b494a4 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB2370.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 05:39:39.6981 (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: 4yJU+5Osqz7yulRvKreCs8dZogHkK72zkamt0Xhi9rSG5wr2xVpGgNz2wp6Bv14dAPVeK6YoYzFyEPqwGRwHFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8712 Content-Type: text/plain; charset="utf-8" FWCTL_RPC requires delivery failures to be returned as ioctl errors, while device errors are reported in the output. Get and Set Feature instead converted all failures into normal responses, sometimes with a SUCCESS device status. Initialize the return code to SUCCESS. When the helper fails without a device error code, return its errno. Continue reporting actual device errors through rpc_out->retval. CXL permits Get Feature to return a nonzero short payload when Offset + Count runs past the end of the Feature. cxl_internal_send_cmd() reports that response as -EIO, so preserve the returned bytes as a successful partial transfer. Fixed-format EDAC callers still require complete attribute structures, so reject partial payloads before consuming them. Map an unexpected zero-length result with a SUCCESS device status to -EIO. Fixes: 5908f3ed6dc2 ("cxl: Add support to handle user feature commands for = get feature") Fixes: eb5dfcb9e36d ("cxl: Add support to handle user feature commands for = set feature") Signed-off-by: Richard Cheng Reviewed-by: Alison Schofield --- drivers/cxl/core/edac.c | 10 +++++----- drivers/cxl/core/features.c | 28 +++++++++++++++++++--------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/cxl/core/edac.c b/drivers/cxl/core/edac.c index f1df4b5cfe5b..34b81e8dfbbb 100644 --- a/drivers/cxl/core/edac.c +++ b/drivers/cxl/core/edac.c @@ -89,7 +89,7 @@ static int cxl_mem_scrub_get_attrbs(struct cxl_mailbox *c= xl_mbox, u8 *cap, rd_data_size, 0, NULL); if (data_size < 0) return data_size; - if (!data_size) + if ((size_t)data_size !=3D rd_data_size) return -EIO; =20 *cap =3D rd_attrbs->scrub_cycle_cap; @@ -567,7 +567,7 @@ static int cxl_mem_ecs_get_attrbs(struct device *dev, rd_data_size, 0, NULL); if (data_size < 0) return data_size; - if (!data_size) + if ((size_t)data_size !=3D rd_data_size) return -EIO; =20 fru_rd_attrbs =3D rd_attrbs->fru_attrbs; @@ -602,7 +602,7 @@ static int cxl_mem_ecs_set_attrbs(struct device *dev, rd_data_size, 0, NULL); if (data_size < 0) return data_size; - if (!data_size) + if ((size_t)data_size !=3D rd_data_size) return -EIO; =20 struct cxl_ecs_wr_attrbs *wr_attrbs __free(kvfree) =3D @@ -1282,7 +1282,7 @@ cxl_mem_sparing_get_attrbs(struct cxl_mem_sparing_con= text *cxl_sparing_ctx) rd_data_size, 0, &return_code); if (data_size < 0) return data_size; - if (!data_size) + if ((size_t)data_size !=3D rd_data_size) return -EIO; =20 cxl_sparing_ctx->op_class =3D rd_attrbs->hdr.op_class; @@ -1771,7 +1771,7 @@ static int cxl_mem_ppr_get_attrbs(struct cxl_ppr_cont= ext *cxl_ppr_ctx) rd_data_size, 0, &return_code); if (data_size < 0) return data_size; - if (!data_size) + if ((size_t)data_size !=3D rd_data_size) return -EIO; =20 cxl_ppr_ctx->op_class =3D rd_attrbs->hdr.op_class; diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c index 8d44ce829497..95f47193fb61 100644 --- a/drivers/cxl/core/features.c +++ b/drivers/cxl/core/features.c @@ -232,7 +232,7 @@ ssize_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, c= onst uuid_t *feat_uuid, int rc; =20 if (return_code) - *return_code =3D CXL_MBOX_CMD_RC_INPUT; + *return_code =3D CXL_MBOX_CMD_RC_SUCCESS; =20 if (!feat_out || !feat_out_size) return -EINVAL; @@ -259,6 +259,17 @@ ssize_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, = const uuid_t *feat_uuid, .min_out =3D data_to_rd_size, }; rc =3D cxl_internal_send_cmd(cxl_mbox, &mbox_cmd); + /* + * Per CXL r4.0 8.2.10.6.2, when Offset + Count runs past the + * end of the Feature the device returns only the bytes up to + * the Feature size. cxl_internal_send_cmd() reports that as + * -EIO with a short payload, so stop and return what arrived. + */ + if (rc =3D=3D -EIO && mbox_cmd.size_out && + mbox_cmd.size_out < data_to_rd_size) { + data_rcvd_size +=3D mbox_cmd.size_out; + break; + } if (rc < 0 || !mbox_cmd.size_out) { if (return_code) *return_code =3D mbox_cmd.return_code; @@ -267,9 +278,6 @@ ssize_t cxl_get_feature(struct cxl_mailbox *cxl_mbox, c= onst uuid_t *feat_uuid, data_rcvd_size +=3D mbox_cmd.size_out; } while (data_rcvd_size < feat_out_size); =20 - if (return_code) - *return_code =3D CXL_MBOX_CMD_RC_SUCCESS; - return data_rcvd_size; } =20 @@ -289,7 +297,7 @@ int cxl_set_feature(struct cxl_mailbox *cxl_mbox, size_t hdr_size; =20 if (return_code) - *return_code =3D CXL_MBOX_CMD_RC_INPUT; + *return_code =3D CXL_MBOX_CMD_RC_SUCCESS; =20 if (feat_data_size > U16_MAX - offset) return -EINVAL; @@ -340,11 +348,8 @@ int cxl_set_feature(struct cxl_mailbox *cxl_mbox, } =20 data_sent_size +=3D data_in_size; - if (data_sent_size >=3D feat_data_size) { - if (return_code) - *return_code =3D CXL_MBOX_CMD_RC_SUCCESS; + if (data_sent_size >=3D feat_data_size) return 0; - } =20 if ((feat_data_size - data_sent_size) <=3D (cxl_mbox->payload_size - hdr= _size)) { data_in_size =3D feat_data_size - data_sent_size; @@ -492,6 +497,9 @@ static void *cxlctl_get_feature(struct cxl_features_sta= te *cxlfs, data_size =3D cxl_get_feature(cxl_mbox, &feat_in->uuid, feat_in->selection, rpc_out->payload, count, offset, &return_code); + if (data_size <=3D 0 && + return_code =3D=3D CXL_MBOX_CMD_RC_SUCCESS) + return ERR_PTR(data_size ?: -EIO); *out_len =3D sizeof(struct fwctl_rpc_cxl_out); if (data_size <=3D 0) { rpc_out->size =3D 0; @@ -544,6 +552,8 @@ static void *cxlctl_set_feature(struct cxl_features_sta= te *cxlfs, rc =3D cxl_set_feature(cxl_mbox, &feat_in->uuid, feat_in->version, feat_in->feat_data, data_size, flags, offset, &return_code); + if (rc && return_code =3D=3D CXL_MBOX_CMD_RC_SUCCESS) + return ERR_PTR(rc); *out_len =3D sizeof(*rpc_out); if (rc) { rpc_out->retval =3D return_code; --=20 2.53.0