From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 128D33A383A for ; Thu, 10 Sep 2026 04:08:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013332; cv=fail; b=WdYvh47R0YEJ4p8kT9UyOFoddeRbTUVDkPWE7gzxkg02wPt+M3Me0WK9mN2uPjzK+aqVAWKTnQO90pIeN1GM8U1TKRWJy98DZH2JlreawtZsIqDGb0kaGv5x8fappP+7BqfH+FSQz0kiZZhkq48cPUyzwteX7U068IgyNiL1IMg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013332; c=relaxed/simple; bh=XBvfjkGg3kgHVhc1/NMXR8r9SyEdBnoPQBHsV2KH6rk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JVqwPlvMx7DXsLRSGC3AjTDNL3LH1JrhpD8yJbhLWSl2hxToDISpQ5DEEHhIp3Fj/6BCWrlOOR33lG/UI4XnO4oPJWXdI6ggoEs2/wdfORJTPqodzTO78ADpJ8QIAgQf21Q8NlETNbseUfLLkdvNBR98dxed+fq18RT3X9s7wC0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=FiHgLS6w; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="FiHgLS6w" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e6Jlv04FzZTzEjdPBmNYbq1soYjKH0wJL+YVyhVTGjpmVKbcVQZi2xPQYA6PGayy1B7VoisJYjfiFrxU+KcoCqQMHwr4R4/QWliigfxrqMONDM8ff7LrfFUgd0XU9AH0gXKua7ESHEI27g2gKz39slGCagK6G0VTLq1Yv2Keb8GSpPl9EpOLlgZ73V4AI0pAg3/a/9WNxbfXai9dBpMaTuz+7xgXJTtVs/30iJeWE98xYxQLmxFQk+jB5vnOFGTvXF7sBJNPj1zq2fGndiNKL5N5MVM2xyrhGvgZKxKAZv+uRMrJmk9dQgHP6+9EaOFBJ+S45Ct9dZiQ31TBhxm0Ig== 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=8RHk5R62QE+4/QwGbD2BHOWIttvXhk2J3HHKo04pHFs=; b=rnqNCQHNpB0p4P7P4M+L29MrXrOmAbSCh5keUFPzsKXB/Lz1jX56pmuIDb88F2JiayH47zY5+cZv/cJuHQw0UFLV4UK0WFkgpwUkTxPISsknT8XI5GUQvisfB5HFPep/u5gcVnrSqR7TY4HlTB5gp2RzRmE/gZl1HsbRE9MkmdiaXJb7T5lfavotKVcFnUEOmC7xnDhgNUjmVfV3S2Ce0suQ82p9uIm6sAE68HNNuG+WkAyX5aBc+5FdKp2JsRetk/o/HUNW0bnu89E1NrLp+FBPe7rik+0Y26rE5TxaVpuE9+fJdhOHHeth1Zb3QFfDexomh+bx5TMkXeDrS1aP7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8RHk5R62QE+4/QwGbD2BHOWIttvXhk2J3HHKo04pHFs=; b=FiHgLS6watJFDv+MW8OuHO+jxlRBLxdfD5F0RcxstJ7isFUnRxM6Q1jkTc3vu0z/Z8sIX3dWajFXFJynm+E1jLMEYoznnJr0d2X2SSKwviJnYjpmKrOLzKU5K5Ug1nPz+Hb7j/fA8f9XhNN1Wy8ZwiNWdhURvedKVlGYHioobls= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:42 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:42 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 01/14] NTB: ntb_transport: Remove the device debugfs directory Date: Thu, 10 Sep 2026 13:08:23 +0900 Message-ID: <20260910040836.3792333-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0371.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::7) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: e64c6e77-df65-4975-8411-08df0ef13359 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: jLgpgW5Yb/XC9En9mZnhskjDgdcFtDv/SqeCypQI8TLDkcI/mbV0cF+ayJKlj0EFYzHYntp7nXK69rPTobDrAVi+/J1doEjDMSTKrVic3ziY60oUZ9yVSVMZmBm0aZYkAhNTTGmfvsv3kvzymvHRZkWpic/JYjVfD4T/oeQhjUS2Fq4lC+kom2Fb737a7IFFb7At4XxjGkBMhrTf5J1vU7lPDtRg2oI60JtlaGxeA7Z5XGi6OsJigbwG/uMlwnVmPVkNKDHrKVgl32lXk66kaGwHvGZO4Hk3yu21UW7ys0Q4XpM3N56v0O31zymwTa0dJKAn7vCGEo+Xy52VRP4ymInfDqk50JsCr748HIfN/tY3cTB4dznDI95VvkxnjjP2S9svwNJnjYYPam7UOe/CTrPJUUnCQwOp1Ry8JQ8YHIZJKUsCwKSDg5r2mHRCIraGaHoq4sW50UlUTWm/ONqITuNs3rWfOBxrrLvxhm/Jc+5Dd1JDWyMcEoj5J3BtgNpIrb1of6bRxioOX1/lMaKFVCI0Lvf7GpIGOvsweRxir9SQ4hERCh8CQY9wQ4wQpobNZF+KvmrsUphS/mKBLXeJBMHe91bYcFEWeLGHuPLZDMf3izC4ApzPbek+CMkxYNR40il8/XYKcJuG1i3ZT1O8w0TtQoI7xnCXCB60L+OOsoM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(5023799004)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QGK2VA1ZhddoHqDqY4VJjc7VRDHkHTZtsZXYy3jH2pM4CcND28i67FhyHDDA?= =?us-ascii?Q?MQ8hh8eNT0sEjSWsY8/RmkwJYdIftQES1FtFIj1wr8ByU/Bls9EFi1RXLy2k?= =?us-ascii?Q?OuHnMWO8/ToB1GtJh0qjjPdzpAGny8Gv3fw5dWEYoObiLTwhzMsNAiS67AnN?= =?us-ascii?Q?kgMkx/f2ulGAKKMD/+K41VmAf8Vjmmns/KROGis7DS0cNolr0SW0NFl3k1We?= =?us-ascii?Q?g35QGEqxBHVst6mx2LCu71XL4aXhSN8r8ZMrpCPGchLuNotfuxMdikWKNT72?= =?us-ascii?Q?3VTC4b0H4NWM32M0YwiPoHTEz6FdDqNfAglburTIFZoo7hwnjhn6Jfogj+U9?= =?us-ascii?Q?cdTw/J3AFJc8Hyo2Z4u2wPd6qHWYlK16g1oc1eqBj4dX57RLajPk5ST62wq+?= =?us-ascii?Q?0uGjB8ebbc1FlUdGAj6jGBwYjYj7ByK/9YjEBKuW2ih1xkJNO2h5dZbCguY0?= =?us-ascii?Q?4XyisO4RlUywPc4RG3SFrDM3u8CfgOm/yNl45CnEqC/Owb0TyDyQcWydTMx2?= =?us-ascii?Q?s9v4Eog7QK5W9xGyqIb0yH0Oin8/xgcqtS38vE5+UBp0Qp3J3kn+n5U/984i?= =?us-ascii?Q?+Pv/VBmRk4MXpfpCX+wGstCBBydta1NegZPFrNnJ+tyu3dB5tuwCzdJ0Z8s+?= =?us-ascii?Q?AxTbygYkjX7TtIYrtfEE+LWD2TAcUOn5txDwL07fqmDtJ73WGzeo9LZteJ47?= =?us-ascii?Q?27Pw+wt++25khieiNWkrSLVHoIL8C7rT7z9E/NW1ebiBatd74Xsduyb+LWLZ?= =?us-ascii?Q?qg2N+RNNDmah4J47b8xqQI4NmXJ25+tM8qIH8iBthodc6OndH5K1NwTgfk74?= =?us-ascii?Q?ZlmeYqniuUuQlStKZqWr8cBg+eaqXdrYNKbDGtGMSGsitNH0kLbTxjNnTkaD?= =?us-ascii?Q?7g+D5jGMkjq8INQt1XrZZFPTYZzE16m1lVuWuPMrCOFg7Au98yxPP+THQmpA?= =?us-ascii?Q?0apWYBKP/1SChUYmUB8f/fFtn3JPStV/q6KPye8kaM5ccRd+6NOsU3uTEmJx?= =?us-ascii?Q?Mx2DYZwHZFc1CpRs46KU3j33INaHbM87eFbDtDJZ84M+igcB36XBmxAZ/DHG?= =?us-ascii?Q?pKZ92RJzIWlODBODW8HPehAOQhd4sYvpKO/4nc4cGNatQoBV3YwCo6lSOxyr?= =?us-ascii?Q?ESA+Bpbu1EUilGcvi8QcCTRDmt0JJUQ4BFoqR2CLh1iVngUD7CIXb9xOB0vv?= =?us-ascii?Q?f82Ap/nBouoEPgPqTX54V9fYOCBZkyzoWHt9NFnmsYr9AzL+n7ZTVIeFfIk6?= =?us-ascii?Q?7Obg7I5Gxq2TpSHsbJRU2UAitC2q1AOBaRJ21Z2ENEDwSIsh2XNXCCl0ZOFx?= =?us-ascii?Q?K3JwbuCM31ZTx3SQdUmSW8u7RDp+TWQ5H9oPAM+phe76Br7kxK/AYxrR/XSe?= =?us-ascii?Q?xB/J3dCAfYVfS8B6Meb9A3ed7fe/n3Eh/1CaDd0kMBmGlDnuerHWM90kjWJy?= =?us-ascii?Q?tW1reE8km2WaY3bHsoNm4mQyD+h826I5+hdYEAGu9JhEEDcBtQaHKLwPc/3J?= =?us-ascii?Q?Wtt2E5szw0pUO4wcMCZx68kruJR9W15bHPmdsMStH0PngyYtvb/Cpc6s7SzR?= =?us-ascii?Q?QeNooicrupCsJTl5yzQyYW7BQFTsemKYzh9G0Xj+w4WTAMDTf3/lgc2Zv7jj?= =?us-ascii?Q?PkxIb/Kzga01PI+CJYx1tIOVqCWb09zdKlxwtzizWmMJeyLc0QL8Q6qOclNN?= =?us-ascii?Q?2zXyIfaQawN8jteNkRO9CNXpBC0kRmYLZPh3Ee6ITNcWZIm/yHu8xM4fiAPR?= =?us-ascii?Q?cgPqRK1V/1Yr9da1fW/Ujcd/TUrhqjpwdEltazyjYKWOOCCWtYmD?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e64c6e77-df65-4975-8411-08df0ef13359 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:42.2555 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2Jc03RO2nwfK4BWG06Tlf+4VEAF5SRNGhS7Svj/JpascGURxSdf9DNluicnXbie2GIV7gB6WO2F8bHylUehUwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_transport_free() removes QP debugfs directories but leaves the device directory. On rebind, debugfs_create_dir() fails with -EEXIST and QP statistics files are not recreated. Module unload masks this by removing the entire debugfs tree. To reproduce: # ls /sys/kernel/debug/ntb_transport/0001:10:00.0/ qp0 # echo 0001:10:00.0 > /sys/bus/ntb/drivers/ntb_transport/unbind # ls /sys/kernel/debug/ntb_transport/ 0001:10:00.0 <-- should not remain # echo 0001:10:00.0 > /sys/bus/ntb/drivers/ntb_transport/bind .. and then dmesg shows: debugfs: '0001:10:00.0' already exists in 'ntb_transport' # ls /sys/kernel/debug/ntb_transport/0001:10:00.0/ (nothing) <-- should be 'qp0' Remove the device debugfs tree on teardown and probe failure. Verified that unbind removes the directory and rebind recreates qp0. Fixes: c8650fd03d32 ("NTB: Fix transport stats for multiple devices") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Frank Li Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index f9caa1a653c5..3389d6ca9ebd 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1382,6 +1382,7 @@ static int ntb_transport_probe(struct ntb_client *sel= f, struct ntb_dev *ndev) err3: ntb_clear_ctx(ndev); err2: + debugfs_remove_recursive(nt->debugfs_node_dir); kfree(nt->qp_vec); err1: while (i--) { @@ -1401,6 +1402,8 @@ static void ntb_transport_free(struct ntb_client *sel= f, struct ntb_dev *ndev) u64 qp_bitmap_alloc; int i; =20 + debugfs_remove_recursive(nt->debugfs_node_dir); + ntb_transport_link_cleanup(nt); cancel_work_sync(&nt->link_cleanup); cancel_delayed_work_sync(&nt->link_work); @@ -1412,7 +1415,6 @@ static void ntb_transport_free(struct ntb_client *sel= f, struct ntb_dev *ndev) qp =3D &nt->qp_vec[i]; if (qp_bitmap_alloc & BIT_ULL(i)) ntb_transport_free_queue(qp); - debugfs_remove_recursive(qp->debugfs_dir); } =20 ntb_link_disable(ndev); --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 BB6E4385521 for ; Thu, 10 Sep 2026 04:08:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013330; cv=fail; b=HAA20IEwmZg+wPygaUnKaN+noDIRAp6mqrDlfUDl8LRyfGE7ndt4OoRKI8J8RVArrSnuDI/zF6YdghrANarHUQOjxaf9VK7EvCK5HeK+Vfo6UlMfzHpZ6zDO3O+ajFYqAThLDawUUHzePLoCxg43efn0k7XgCQx8pG8g+PzjSuc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013330; c=relaxed/simple; bh=HgTbdwNnt0dlN5O5w9Rc3Hjcg2H1GcsV0+cbOBnvj5w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Tu95SvC7so/1xB89tMDd+7dzKWEdqHGuen3myVXnOdetQ14UnOS3p5DzSNK+PBhNczIcLAYt+lRLoxFrY9GpACIXGxmo8RYtp3TDFdlIhW757Vfo8n7V2bec0tXtYllPhDWoavvDKYmVUjnjVHr+MVK3xjo/2FiKsolsJoHdONo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=mjOcxpvZ; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="mjOcxpvZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NH2pEgoUey9hHSchhpMbZdCGs5dCc6fIo4Ywo35Mim1pExoMOruRfCaDEX0j2j601ryO0536vgojeJodR4ytU76MMaJq5yJSGOzoS2eGYzbyMrJhMf3qvTONdgF0ZKoeHyEzDjhI7IodWEbyO7tQSmktOKSrD9muXDjW/ChQunqPsv8628gy2WiEj5jOsWaIK3B8Vm+I/RMG8usijAFQehiW4TaBP7lz7auVZr8A/h5O4xIa/lrRNRqDy6jHpGQuEG66R+0KpCUqiro1q5b9XPsNh1+f4lzMnmyA6ytO+P7i1JL8NwBcnL0O4qKd2qqJ6oAF5mDkA9CFnhKEsQys8A== 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=BLeJQA+Mx17INZy3AFPfCVPNKqYv+O0vm7zGyiv/OIM=; b=QQsgFQt3ozriSbLZmv+h4qNsespKr7ILeJaD+EZx0LMhItxFqRAbnMtV4ciJ/Uhh5epQ4in6LtRA7pnlhXpcW0pE+i6cACccK7lZYaMWxwY9YGrn9JygsrNCj3UEb4L+7CuHOnmdVH6+TCiWduvdRWxFgZkhdSjyIn62qo0XbmsGigOOE43uA21428t3ZAyU4LW3XK81QnyYeeKhI9g8TboGRD3nRf2eOr7t+ZOPfqrkCk9QyeWG7HJ0vqb7w/6Covz1a0cNpVlW1xsRmO4t3pD11fmKWtRSTjKb+S+nV5WKjlOev4LaW0YZ7UUJibRTSeCTx3O5h0EKVFtKFLTjJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BLeJQA+Mx17INZy3AFPfCVPNKqYv+O0vm7zGyiv/OIM=; b=mjOcxpvZPinGgWRGWsoHC1owjVW/FOH059XSo8+KGLx1Zf3zwMm8ujNtYp5miNsMeqebWzGAwyishhQM4Le5NAYpJgaZWFSuSdFwXHgAEY5BkXND6YPYVWXVgpavuV2HE41s3dXHgOG7dK113PgU0kgwIjM/GPjEdFuAl6+w6KM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:43 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:43 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 02/14] NTB: ntb_transport: Start TX offload thread after queue setup Date: Thu, 10 Sep 2026 13:08:24 +0900 Message-ID: <20260910040836.3792333-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0213.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c5::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 89ad3305-c0ff-42bf-aa16-08df0ef133ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: sgZLxTW454gWdyD3/8ZashMCZF2zB4hx6dJM/qSnVpnSpuY5fwzCm0zohrrD1xBoEKamwzLxnx1j8lcFKDYOXfADIe4JnsQN0ksx4RH0GbW/8qgXiff9JK8Nvd3xHr7zuGKdHBt9a8tnU6iz9KUxxRKJMDVLeGv6vF0EhIKEDPtjnxmhVqxPTnKq7AyyXmbHm1tBWb3gMU+Q6rEF5cxWHZl4kJqMZEh5x7qbaEDjmVD3w4abWyOPNtVYTpyHDATnc5SYmB/ppORHybdLzqzSF61JjcyjN4YYJ1jRlJXyt3EGZxzcAJZjQ1YJEsQ+BoS6wVVOkKoQUZI4XnzhO1wjWsN/EEwdolZc4YDodSSwvL+vSWunGe6KBzuVSPW3bjDwZcH2BiyqCtaB4rHRqVeqxRYlLL1K9Yio6lzzE4dhoMW8OKr6dx2XBoS2nfKUCcQvW6K7xDYtEBfUZNfh3lI5BSZ7yIoxqPT393QMqMEHYfuMteH4PkY+S9cnhH5C3GTvCxXzF0s8YKAsDSuycZ4oMmRk+r2xNSkXwNUeZ88g2rX6lK5nsQ9EL+OW8vBfXWw6CuToWpOVxKJ4IFRDlyQbx+oUtWb/UZChyVgzLF1XeCA5q7Qpjuh6+ijDLe/ytlBV X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tjp9OLdVKgtxY3JbY1OtuKo9/2zVSqt4Fa8facgZu76m+P1uDWej2KsLpBsS?= =?us-ascii?Q?+4xUhmEId/lbqb/lkXiCnmksC25qEdCDLRAF2pDJUqgjERk/7MuyFI6eWxyL?= =?us-ascii?Q?4n46rr27mGONxHsnZDMAs0J0yarADRpcDz3eMXvB3mPyj2zXZVZ8gtPO9/AV?= =?us-ascii?Q?4ctOYgm7qy/WwKt5c9gkevZAk9uw+mSNsQC+5TNBvrzDBIo9ZRe8l4++nCW0?= =?us-ascii?Q?0CzgVP5O7ldyczRjdKf4KQAF8FlGEKwLGuL72lyaTAW9rtM6Q5HLXx8OgAtf?= =?us-ascii?Q?R1rlzKL33xWsq8iu61NBxdtHlSn1Qsh7TrxslnKf0jNPLLIYG9a57NtM44sa?= =?us-ascii?Q?j0LeFpMrTBxn5s4bmXls7uw8ZoQWdJP7Jdax5eTS+Sl3p3kvWl4b6KSmRD2L?= =?us-ascii?Q?r7NWMmjJXAhlXq2tik2CoJpRPc+kRWJ9lvGWbxRcvXoYSBBsqnCKCT3oiI2X?= =?us-ascii?Q?iA6hgBRO7WdjRc6aHkC8lYl0rIXVbAsZybKK1YhUGt5bMPGsnOtE2/Gz5jcS?= =?us-ascii?Q?xrNXy1xmKKfIBqA4VCJ5oCgpr/Fx+LEbvaar87nzzaaRHJwgtDKgXD4noMAk?= =?us-ascii?Q?vs3vFspiCxQ+OwRdKqVLPG0BjIdrhhKROE3VUaAPJyX/3GP3eufkdB+bylgk?= =?us-ascii?Q?BvUE5Yh3DzKmXcHXf+CTT+klVhb5YqPDcs96S+yO2cTjbTix407l7XsgqE0/?= =?us-ascii?Q?Tb49SOi2n8+ElqHv/x7NYkRlLONKzC/2guX0LuDjsJZ2xGPbqyGeTcp9Cugq?= =?us-ascii?Q?JgWgDZUi8qw0sHa/Jr8mmh6W8+a4PjFvbn93fItpTCOFKgfVgx6b/6/ZpMfC?= =?us-ascii?Q?U5eA+n59ZIqShtIihDowyd0tZMobVr8EzQWzibRP1P6KB3mi+D0e0O+s0B04?= =?us-ascii?Q?ol8DS76/w5zpL3aip9e3SFwsi7QOaJJXE/CgoiSFKoc9X7bVwYhSnVua77wP?= =?us-ascii?Q?UdBZpQ5gDZGUaimzPYrY2tcBCupumbM7sVargjZuGl0Oq3tY5abgk3SwNPBY?= =?us-ascii?Q?jxts6+Z5ZX4Q1DDFAdCWBhdskGiefe6qlQunKL9Hzz8WWS4f6LhsftvhGY31?= =?us-ascii?Q?e6rxAexskmnacve/9NzR1/uBcTV0HlA6RIwnDac12dyywQrxla2LOqEJKakD?= =?us-ascii?Q?m/yE6RXfxGy72DirZjd3vjrrNcMCvqMGvffyRvR1OfOXgriAxgaFpCK49/tQ?= =?us-ascii?Q?8pWHUAQOsnDk+Ru5VuuDrIPIbQPpUvVk37UVr2ipUztaPSBH2VtlWJkMh8AY?= =?us-ascii?Q?SeF9HYkYoLD9OE/YbFoBIL5sUkByxTyCLt7z2c2hwAhvTCqHkjGMbSgGCUOz?= =?us-ascii?Q?4p2Uk8N/edh5a+K/BqDWvohW6QDcZq7mMbpa44BByZq0KwACegPcUgbHYEoO?= =?us-ascii?Q?1yZaY9IqfKkf4MNtgzrtiHfEe4j4GU81NFTKw0+k3EohuKcZE+NLelFYjYHM?= =?us-ascii?Q?yBFj0hIVQvVCUCW4aAYi4gmy5A4v5Cp3OLUoJrV/QP2zI8oR/gKRbDqCuxVG?= =?us-ascii?Q?ft5JwUfwH+HV720TYzd2kwbFd9rWpjkTyMg49MZgyi5FaaR8LY7GJKpRxBrv?= =?us-ascii?Q?BJvLWepFiiBk0EzbJlBO2QJ4b9pFafj4OqLFLchm1LTKABJMJLFwCd5Tgpg5?= =?us-ascii?Q?K/RdQqLwt4nsg9zkJjjiiM7S58KIEG91mdWaU3pU4MtIyM6oMqudn+1fD3Dj?= =?us-ascii?Q?UH3LCSu0L8N4pCsQVTkuKln3zu5VUej0DexObe7nCb66B8RkAwAz3z+igLqX?= =?us-ascii?Q?1WQD5w2XqSKp0fDDYAfNfE7TklZso7cxIa0VbQI08N+rKjSG+MV2?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 89ad3305-c0ff-42bf-aa16-08df0ef133ed X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:43.1928 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K573WVc1dv3drLngfXqjO4re+b20jvKSUrdxwe7v2oqdn5xvWnCd8ZjzvMNVRKUzXJE6VsN4FFgRRM4gJmZOew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_transport_create_queue() starts the per-QP TX offload thread before DMA mappings and queue entries are allocated. If later setup fails, the error path returns the QP to the free bitmap without stopping the thread. A retry can then reinitialize its waitqueue while the old thread is still waiting on it. Start the thread after queue setup. Fixes: 322617a06c97 ("NTB: ntb_transport: Add 'tx_memcpy_offload' module op= tion") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Frank Li Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. NOTE: Originally submitted as part of the direct TX/RX series v1: https://lore.kernel.org/r/20260810165136.2292436-4-den@valinux.co.jp/ drivers/ntb/ntb_transport.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 3389d6ca9ebd..55a20ae9a85e 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -2055,20 +2055,6 @@ ntb_transport_create_queue(void *data, struct device= *client_dev, qp->tx_handler =3D handlers->tx_handler; qp->event_handler =3D handlers->event_handler; =20 - init_waitqueue_head(&qp->tx_offload_wq); - if (tx_memcpy_offload) { - qp->tx_offload_thread =3D kthread_run(ntb_tx_memcpy_kthread, qp, - "ntb-txcpy/%s/%u", - pci_name(ndev->pdev), qp->qp_num); - if (IS_ERR(qp->tx_offload_thread)) { - dev_warn(&nt->ndev->dev, - "tx memcpy offload thread creation failed: %ld; falling back to inlin= e copy\n", - PTR_ERR(qp->tx_offload_thread)); - qp->tx_offload_thread =3D NULL; - } - } else - qp->tx_offload_thread =3D NULL; - dma_cap_zero(dma_mask); dma_cap_set(DMA_MEMCPY, dma_mask); =20 @@ -2129,6 +2115,20 @@ ntb_transport_create_queue(void *data, struct device= *client_dev, &qp->tx_free_q); } =20 + init_waitqueue_head(&qp->tx_offload_wq); + qp->tx_offload_thread =3D NULL; + if (tx_memcpy_offload) { + qp->tx_offload_thread =3D kthread_run(ntb_tx_memcpy_kthread, qp, + "ntb-txcpy/%s/%u", + pci_name(ndev->pdev), qp->qp_num); + if (IS_ERR(qp->tx_offload_thread)) { + dev_warn(&nt->ndev->dev, + "tx memcpy offload thread creation failed: %ld; falling back to inlin= e copy\n", + PTR_ERR(qp->tx_offload_thread)); + qp->tx_offload_thread =3D NULL; + } + } + ntb_db_clear(qp->ndev, qp_bit); ntb_db_clear_mask(qp->ndev, qp_bit); =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 7059A39A806 for ; Thu, 10 Sep 2026 04:08:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013332; cv=fail; b=CC3F0JeDX3p8KBH/y7TJPqz0b+uwa/W+6dt3GaBqMZ6oxpaEbuDf1fCsiy/6g2YmdrhpLBSLo1rYak9V6fyVEdSDFhJVWRcJh+7VvoW5s+3OZzPJ8Y7+9NcmJ0frzbP2MNsK0ngY89FX5xuul6lUCx/1kj5pnWwqA9xAKJ4q8lE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013332; c=relaxed/simple; bh=RzXYT7Tm5jkhpbuj4K1xLZdyMlay/fuRfot3HHojE5c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Upoc3v4Wbf7TTn94jlp9hLhTkBOoFLP2AM8Ew6vbDDBOzLuYGU3IBcVrJRL14M9T8TVZnikdy7K9mb+K34/jBLJWwxuOwUyzWE740pgqg13xy6hLu6Eiis8m6g6rkOmCEAma6tI9EdYfCkmuwsdPNg4WwQy6vneusaCAmGJJXec= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=uCDVn2KI; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="uCDVn2KI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W94K4guRBCK6Qn+26g4n9ORnlVpTl0kUG+L03eljAAHhieS0NHzMxBFNc06WbcErQp8Mn9ulWn89alRdX2ECwVPZ9GdSkIvWfh2I+Q2+RDNKupz3KOQEWTvMY6vbWxm2UiU4XLI1lwYMyBMP3Kko3ckBwuwvm++hzX/Dq/OFwuhngI8EzEeN3m5rnmc2F5MjTSNKOG0Fc4JMdZf5fBx26z48Vlm1ohUDVf5sulSLstuwZ+lCaxuPDbwbx+sRxX5DJPlzx1ZkZiZdLBtXk1KT5jwt3NDicMB8xpQkGGuisNI7PtC0gIrrJ0Cn9bpa5qWQfjdAoNjxtKizpWvo/uddGQ== 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=FZxc3mZECsQMBy+ni31RZczAtlGFD2lrYpBrKesT+PE=; b=BAKENnIMgzV08P4Wak31jjmzCQ/ytYu3XQ1jpy3R1QHNmu6Fpu7HIdEMDgWg4VUwPK+IvfeLnhdEwtq982Ew8CizaXr9yHE9j14OzVh0b8F6DbAYtmR1ikcbnBWCsnAPNQXIOUElY3t59hWFtVAXM0x1WncakYthtdBjGvUFT3A9zN7b5W2ZCPMWCYEbArdKSIEpY6Ao4l1ZJE+44E4U6XgLFLi0iMXAzXw0pdMaFstSqVkvhGEgFPi+nG5gQEaGVb+ZC2SEk9G/I6mH4BV58b92x5EINP45gPEwKJTxoeV+PKlr59AX4MU/TRtFtzxvhNSE1d5oqUo3+cD9n77SKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FZxc3mZECsQMBy+ni31RZczAtlGFD2lrYpBrKesT+PE=; b=uCDVn2KISy65j+qdf7wCYja+Br0C9O1R7J1+dAr5XzX38zlwrf7vCo1yPcKsEWx+wRhaEHeoImwe/Dz5Q9XBbKVFc2ovsiKONEfwXqWCZ056vg4dB3R/EeEkc4ZRT7aYsIg/pcZyKsg7T+5oiOztJRfDuIeovBFBL2Sb9AufvUs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:44 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:44 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 03/14] NTB: ntb_transport: Avoid deadlock when cancelling link work Date: Thu, 10 Sep 2026 13:08:25 +0900 Message-ID: <20260910040836.3792333-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6P301CA0032.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:3ba::12) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: c27a04a6-0d6c-41eb-0211-08df0ef13478 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: FXEwztRH5QLLKoPSz4gkOs+e65jfDnaI1nUJ971lsHuqk5bhDd8+x7b10cZYy72yMtzqh8PKU87oWemWbDQxFG91QJ2VGu5h2s6jFLrf7VfH6gdAjty/qG7JwJRFocJk+Jr9VucMDuUND95KXCcsP21iVVU0hJfUZ+XtGiPQkq8yOGgWMC8j4qmCqdqPJI+EFZ2ViZiafO5X9lpAdwCtVAWJFOS2uHxaiKDqcStAPRsjyc4e7DQxCbQskmDWJuZPd6sru58/SADt82fgG8Q0kkhHTlZ+3p6F8HaS4xYEu5zJ7IH0/iYh89y3ik9mPtrGibf09h6ijVYQxlxqeQ+ZXjVTx15cSYNyDaUnYGuqCczMp3ht1HHESu916IefZd/W1g+JaiM7rhqeFy7XPWy8/mj/pOmB4qEGIgnTgllLeJ0gl9Y8h6u2BrLhJYn/fG9VHZ7BNOumE5dj2T7czwQHQ4S6uYijKWyqzGIqI2uHJoVEndRpYeIi33/VVDiovDVg+Dwk9Ox/K5lFW8l6BxIuY74EwI9Ud2efaRWgnMKEUec0myt6MmLaxO95tWEgJkxT0TSPWQlsRK/EsFWH2yafzOuvNtyr1wG4CE7woq5zR/fpJiMuUGgGeenEKaEKLYpmZV6ua1t2nBlhTHnTFf4xWAoHxIuW7+x6VQGmNYfXtuo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OxFICZqa6DzTlIlZRbgBhppR712enAKb2x0OER6jCnGZM7AwWtcADBGivTGv?= =?us-ascii?Q?9giX7K6HuwKdyvdYZdvVz/e5e0//tGVyQzc9f6QLl38p20S2cFXi75Nz6Is/?= =?us-ascii?Q?X6gql2lBBZdq1TluQEJaRJKdwJ8wb+dVW9yQSDCbstrJvoV/wdMityXAyKh0?= =?us-ascii?Q?5vmppxOYFHbWEskRvAXF9k19CYFcMzR4pE3y5KDPVky1MIP2CKik48gaqOy9?= =?us-ascii?Q?6fM53kWQMp4cUBc45yfqeB0CLBp3ms6hxxTGMJYZNRwE6vnim/bnRJfXxuGB?= =?us-ascii?Q?liffu1KwKIxdfi06MgK+F5YBAL2AZYm/xfuM74JLbHHQlQrIBjfdZYMp4h4O?= =?us-ascii?Q?Eh/DBVQ06jMClXKXUc+X9XWaWEtcQpNgN+OJgI5ZwpOE8/arcnfJ27TpuSSd?= =?us-ascii?Q?R0wyv3FfKNe/Kc1T02qYjNfkK6T3b0qJk0oA4WxgUwJUVIbyVKofQEjramQI?= =?us-ascii?Q?NOFM0bOV6LE9D2n1ey8ZCnNqtARUuMykpUT4Dv4EavnT3mqryIbulrwdFhXe?= =?us-ascii?Q?1sRrNdvi+sEJ7TJ0Row9LrM/9AHeWcTXU1+N2QhArT5f5gSTt31geZD1PSpq?= =?us-ascii?Q?k2XezGMsl8orWrA/rIDh7W9X/QBD6ZXTmG+8riomp9jn/kF6z67a9MWj76F9?= =?us-ascii?Q?EtiMG30KwmtQv+YfQD1Ro6HrZjtv4VaOSc+5eN1ZFsyOEBAZiMs9lsS/ywbd?= =?us-ascii?Q?GboxlZnJ06urBdYtM8p67TzDegD/s0KJuxwTutMYQmNgrSGWz18X2p0BZ1iY?= =?us-ascii?Q?pNvbPUWJl4u2acCwYBe0xXl5Y2DHdHAMJ7SUp6n9LDz+G3tuT658oqZjsILk?= =?us-ascii?Q?5iDbOCAFkHsimiaMibMisfhVrjQn+W/Sd36NLpcw0TA2EVM/ZZSxcQCnz0TN?= =?us-ascii?Q?GEw+SJn+oLtvVmm9JqydWNClEDBaByPxJtPLLTNlJ1UuL5J8re5GPw7D4lPN?= =?us-ascii?Q?i0BcBFaNrEPoF33WXSS11FF/136M52K96jKF7AwWvDXlFVI3oIXEPeJD54lK?= =?us-ascii?Q?Le96ABLgLZoRxARhhJUdmkpjNPd8BVi6iyZTpLzWG0DtJld4UbbXFqRBLIdo?= =?us-ascii?Q?Ssz9P9SD0Me8nR2PezwLYKVmTwqH0bbTahqXkrzYK1WnKjLKa3rxrKXlP2pJ?= =?us-ascii?Q?u1mHzRsGJsL3yjP0sWRVWCwTq3UumcDboMP8lfL9msme+V+13YDjloSIWrJH?= =?us-ascii?Q?PlemQ60JuJdT3tQnuO7pJXszlcOiYbSeI4U7ufSA3lLW1FGLP5xVV0xVCTLq?= =?us-ascii?Q?/roQBkgVQff0f0W6KIjAPOfMvNOb/3nACzukhfOdiYxU3BhYHBiPznk2Vb/d?= =?us-ascii?Q?0kA8dxvuLN+ukKxBNjdYVgJfPVn6TyffY5rNMDSEDsg8aZLQbOZxSrpKfnFH?= =?us-ascii?Q?S7iz8xIdpS9xZVXF7Y95puxl5gEBR7rt9CM3//K2e2Zph2oJG0v8qM+PXrUr?= =?us-ascii?Q?801Fx0eQEagBG7KHeF2+axC9poMhic59dt1XwD2rp28mLnjL0pBpLswZJFKj?= =?us-ascii?Q?Z/drhcV4hJDhLZ6yHsBg9AZBwPAkvTQG0O6tjWCVLKtR5IfZ4d/eJ0mmDSlB?= =?us-ascii?Q?YbOCx/lPCQv1IO1DpT3uJwPRWpyZQgXx3NqPWgb6nU3v1upmD/mlJh3EUnr+?= =?us-ascii?Q?L6WL7hN8pFKB5u1lN0L1i2OPXRgsNSis2Hek11MF+jwc/SDH7ocNf2jyWNxN?= =?us-ascii?Q?bfS2Iww//FZXsXRy9p+5KnOgzZVtqpQuvFEIsaNcbl4JlHVY99lktXchrOLw?= =?us-ascii?Q?PMQireuJHfte5zRsap2HTwv/3OK8CRSn8pebgoJ6bC//gTeBNeyU?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c27a04a6-0d6c-41eb-0211-08df0ef13478 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:44.0929 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F4FlVvAgbkq/zmhD/xO+gGguKjx+ygkn/05yBpSD4ckYtIYTR0mAboKSMhf1C/3ehnBVBAzRrh5/GWB0kG+hxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" During initial link setup, ntb_transport_link_work() can retry with nt->link_is_up still false. A retry can block on link_event_lock while cleanup holds it and waits in cancel_delayed_work_sync(), leading to deadlock. Move the conditional cancellation outside link_event_lock, before QP cleanup. Keep QP cleanup and MW release under the lock so link work cannot restart QPs between them. Put the locking in ntb_transport_link_cleanup() to cover both worker and remove paths. Fixes: 3db835dd8f9a ("ntb: Add mutex to make link_event_callback executed l= inearly.") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 55a20ae9a85e..c77b173dca01 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -960,6 +960,15 @@ static void ntb_transport_link_cleanup(struct ntb_tran= sport_ctx *nt) struct ntb_transport_qp *qp; u64 qp_bitmap_alloc; unsigned int i, count; + bool cancel_link_work; + + scoped_guard(mutex, &nt->link_event_lock) + cancel_link_work =3D !nt->link_is_up; + + if (cancel_link_work) + cancel_delayed_work_sync(&nt->link_work); + + guard(mutex)(&nt->link_event_lock); =20 qp_bitmap_alloc =3D nt->qp_bitmap & ~nt->qp_bitmap_free; =20 @@ -972,9 +981,6 @@ static void ntb_transport_link_cleanup(struct ntb_trans= port_ctx *nt) cancel_delayed_work_sync(&qp->link_work); } =20 - if (!nt->link_is_up) - cancel_delayed_work_sync(&nt->link_work); - for (i =3D 0; i < nt->mw_count; i++) ntb_free_mw(nt, i); =20 @@ -992,7 +998,6 @@ static void ntb_transport_link_cleanup_work(struct work= _struct *work) struct ntb_transport_ctx *nt =3D container_of(work, struct ntb_transport_ctx, link_cleanup); =20 - guard(mutex)(&nt->link_event_lock); ntb_transport_link_cleanup(nt); } =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 5F3E63A4F4A for ; Thu, 10 Sep 2026 04:08:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013334; cv=fail; b=kk88F9YK6ziT5FG9BLC0ElQQkMp14aLTavZ6IjebX4QkOldh6TbnNOLFWbD2wDWXR8glK92mx2wvoqYHyiUGSJ5zrBmskyZkt4iHd7Lfdvr7i9NM16GNk2v5fZW/PKR8OHgIVKHdx6ywcKFYlfiLHQuIKVoIvx0VWK9HjPorySQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013334; c=relaxed/simple; bh=t7I8fVnpB5Wc0xlzCYA58hqpSkGrBihJSuIxLM9nCcM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i+NiLBzvr7AIqDlpA06cIzB+Sqv7l7kXpgOtRbMLd0F35ZPWAFe6/79BlygVNTwckxSZq/nc/l1HYtvGn1rdeOttkG01I+q8C397R28k+AN3IlyI4K0L12ZTc7iSPWY48HLUDImjqi/KbbQOaTG29OkgMlwMbNz8lLkfY90DEWA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=rQqTVU0H; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="rQqTVU0H" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BubfPSHOjKnRsTdXRGp3I+ykD0LmPV18mJAvwZOUZSGgykUuKnB1VwAAPRX1xRoCwaYjMcARs7lPYC7NX88DjsQFavTxumptfSNkW5Xa9MbWQCzJuMdN8amr5M+QPRlp3V+dRZz7Dc6mcmbsASUZbZDbVIMFH/a+yUWrPQ+YABo41LKeufkUlG1ZgGT0Jw4+kxijM58yoN5gdfl+JnA4zSpb8w5YWFMdVAv86xylvu+mlIM5NXR6EJ3LVxw2Ocp8rA4/fFAPkyrXAjjsZR8VKoefUW6gD9HNS0a3i2BXzaS8Ow4C1zvKEX1hiyYaXUqCB8XJ2OXFDtcIm3KLhJNmbQ== 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=YTfUZPGfiTJ+CcOybKp5r0lSkC7KQRZjUSlfLYpgGvk=; b=Dq+z8tAihz2y8986Bv9wrxAlgxEECjK3sbw55h1oJDL3XW5IjvJvhvCiB/y1N5L97QLGov280eJoDAriesQn2f8NSRj36rCP5L5IIiPPNFzuQtD1Dr8jQY6UnnRn9bix7SbUqXSiE/adWZ4SjMGP+IdbB5nmm/nreVpl2tHYn+YAoovMlYdAhCZLeqt6fm/JD3oKvkF6SxSsTCFlxqdrtzSoIeFotFPbQy8yMj1lkpcrlOFSOTDBDZgLHPdQfEDYRP6mBZxVETTzao/A7c94sn2HfwR+E/kwr4ED3L7RXJvY3rQzlSeXlA7Gon8h+L8j/4vLAEQPWtf/1mi2xDBX0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YTfUZPGfiTJ+CcOybKp5r0lSkC7KQRZjUSlfLYpgGvk=; b=rQqTVU0H6ijohbrKOFr0mDllpiDhEZhwXlbMhKTSuDPJu16wb6RGW2DbBEsOCaTtudrkdn8vs38dnUCaJgAxnQga/6CroeUPAZfcf6QOjk+h8EXcty/fXuWtwwJfBN0dQI+kmxPCUuzG7g3kwytTZGWyaFcDlbgffotGUPAmN7k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:45 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:45 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 04/14] NTB: ntb_transport: Publish link state after QP setup Date: Thu, 10 Sep 2026 13:08:26 +0900 Message-ID: <20260910040836.3792333-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0179.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::7) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: d9e478c4-1d3b-4bd4-639d-08df0ef134ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: 5kn9GivdlWKBXiumFRTgL55xPzAtW+Ge0J6vZep7PGfeGKVTHSFVlL0bOA3pl1SQ6Rm2eaMiFAUHTvt7v9O8BbiT7weqs+C/os2/8BYwc2FVe10dbkKzl7eA9Tfpw/IVHOo42R7XZLqUcslUIzqK47uNGX6njbBAwmYGphcRXXo2QusBE18lF6jiCrVWQg1TP6RdyWcuptFDnvfgW6Mm0EeJUFooRKrPImjfaDdSBSP2562ofbIMsr3rrjoh7a/lG5Guxt/zuZU4ycpnUmsudhAU7m93V1KxCSWbWzNVurLUt4A6Qi5/naIE1xmuVP8zV7LTx6E/tBXQp3dCdgVg2HoVe4m0GHDNQ8aMCTcMM8j7ALUk34c4NjSQyH2puwJsccFaVUnK0yn+IP2oS5LqR9KH+P7pFBe1jWPkJpABcLt3sOwHFSSGswHCO5EyQUqrmbB4XkO/OnVrqHkb7JtWB8qktje4XYo8hA3SlCR8LH+bIAgz0aFPYGho39S7eoxRQmURB9qrYoaw741ohejY2LNI0stpdvUA7irpEIriuXUuaU/l7HI0SAIDzN5FJY6HEjv1sFh9QeoDSQu7AhPOCz/AI8FaqvLUEG7seHZaWPWFP6ix6De2Y9nCc9uKdrz72X/mojWVMLeWmmXtIJMriMdZGIv7GEBpzwgHbWRtfCI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5WhcQXvhb0hcWgw5JMEHdn/nqgJrZrQJZF2MRwrSyRK4j8Prv3arDX4Z5+Cc?= =?us-ascii?Q?FVictRSz6cwiEEtokU/PbAmNE6Y+SK6ItD9ewmPX0tJjcmH5x9wbCah3vK0W?= =?us-ascii?Q?8kJ+hdCiD4Azv4nF4MU9O81wX+C2yVIiJmL8Cdscp4LJ0o5kFBnOBsx4UMcl?= =?us-ascii?Q?nVgv+huaiRq7BPA5C0t173EwX+YZNv73z8B06hAFAcnqo49LsQG2V2y8RR7D?= =?us-ascii?Q?C+ajXyUJN+zY550KWy6WZYMtjz/dzvL2oIGd6E/5tw+TX3x/igdCuIdJ/5Y8?= =?us-ascii?Q?vJoQARP6nD01H0c6DsgzuRLuPi2xhStI3uUTjg2g1XCFn/XSsPSchIEqYSJC?= =?us-ascii?Q?MlZvVaU79pHa887tRU3l1d3pjDZLvKkUm6Wg8b65Mwm08oY6iKy5dWKolQ5X?= =?us-ascii?Q?pXoTfmuZ5rDOxmS5lYjBIu8h+2e7FfQKmq66ZlSA4u40mzN36bP4yc1IdIz6?= =?us-ascii?Q?dEKY0F2dksSmcOQv1gNXG1LfjjqH/FEyouP5mF2MhEFIWSHqtz1YLXrEsMEX?= =?us-ascii?Q?NqYCiDH0+zvCrNYGRoWVk/pm7Gt6OM3RYeqqsrgVVeWe0YbGDsrW+Kd05sO3?= =?us-ascii?Q?cO7F5LWYxmGcjjgZkhg1+astp94EXokVrEwEJWK8pkZe0LDbGB/Lqx/YiD/H?= =?us-ascii?Q?h2yqo22aWL20nI3UeE6P/N7vk0haLuTYketHcNsallduE/wQdJQVR9OuzjzA?= =?us-ascii?Q?zRDaXQXSooDcttVAPUif9gpoHzVHKqULrxoAy7YGlSJrVYPnpV9Oc3zlwos+?= =?us-ascii?Q?qRh2gDnUIlNI7p2dItDpavQ1O4UMQT4eTUi84401PXVWfMhdV53SYXBZic6A?= =?us-ascii?Q?Z5I9hG/ArmnyRMg1pN+Cx5OsSPKngM3Kj5CwWf1s42+ezQij9y+RzQxLKi1q?= =?us-ascii?Q?a1JOtZm6xKuBy2la+vNpcnF4KNzxCMtmOxsI7mqFwb33p/T9XejV+QvpScfr?= =?us-ascii?Q?nO3+bSpZvQ8CJVrSG/qsAMfG5dWUYWZmSpDymOvbn2+XhzmoQcLxWRId1EBk?= =?us-ascii?Q?gm5KvIfJK2sfVdrFRcNMaXaQ+VtrGdYPaT9gnkefb1/w5q3zDoW6tc7wZ4pf?= =?us-ascii?Q?m/JOqvSe80dneUxS1Z+88JKSkahpcW+eYg6QV69Z9jmMAxwi6Ts9pgC2teI6?= =?us-ascii?Q?jV0mj17F0EzNZiyNLKRyexwsyTEKYQFt0IIqKq3nlpMRT3AY+1DbMLa/Ry85?= =?us-ascii?Q?y22r/ejHXNlZOBbCVFGu6GR2zduI7ZtS5qEh7Yy2AyP8wcgrqPpTjFxKSrC4?= =?us-ascii?Q?TA2HpxLWdqzyCKG6Y6FgyJFUMtpqtDmKtWJ9D/8HsJ0DVQ/cssREuNtCjqHr?= =?us-ascii?Q?laPix3jWX1rxt5htaAXLg1bvITv2OsTzRez5TS1WxVMs3Js9ATh77gv4kyph?= =?us-ascii?Q?ki9y7cpEzV4eLeWMzSDe6l66QN4eB5bFeM49dMCwjbxa3a95/8P8zvMuhkQo?= =?us-ascii?Q?CFUummPw5pnlaJeADh3NwambORwJjlzlXqjeNmPBa1XFI2KWKkep1PG3vSOE?= =?us-ascii?Q?RTTamFf0sjL+jSJvhlf4ihoBUrPhn7zsmu4pWA22NdoWdSrbeIG5dTX93o3m?= =?us-ascii?Q?US4xZ4Ljk7A295mUrMcYyNFNDZmOKU6x+ooxl7uMAWzEV70diJw2tAVqfiTo?= =?us-ascii?Q?Sgs1LrDSrlg93PSPjSbY9Y/oRaqI6MKjlscVsLeYyhMry9IHK6xHQzaAkEHx?= =?us-ascii?Q?+p1T8zmFrN7mcTx57gyaw6MvrXKaTmYCCOnC4SwZy0M77msuBV7ePga2OgXh?= =?us-ascii?Q?7tEvtved0+WZSSMLz49qRBl9zn28wa6pS5Papu2G6o5BzOckg1eU?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d9e478c4-1d3b-4bd4-639d-08df0ef134ff X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:44.9785 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3ZTcdc6VTjHs1YI8qQ8h2PFutXULvQ6L3B5jD963ZN4QfAH04JThu6KuJEgGpiEt2qlvDevFVcIGynS9wQzsPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_transport_link_work() marks the transport link up before setting up the QPs' MW and peer MSI state. A concurrent ntb_transport_link_up() can then queue QP link work, which may enable RX and notify the client before setup finishes. Publish link_is_up with a release store after setting up all QPs, and use acquire loads before queuing QP link work. Fixes: fce8a7bb5b4b ("PCI-Express Non-Transparent Bridge Support") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/anyKbq3mpLG4y7rb@SMW015318 Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Frank Li Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 40 +++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index c77b173dca01..75d4a2e021f4 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -922,6 +922,16 @@ static void ntb_qp_link_down_reset(struct ntb_transpor= t_qp *qp) qp->remote_rx_info->entry =3D qp->rx_max_entry - 1; } =20 +static void ntb_transport_schedule_qp_link(struct ntb_transport_qp *qp, + unsigned long delay) +{ + struct ntb_transport_ctx *nt =3D qp->transport; + + /* Pair with the link publication in ntb_transport_link_work(). */ + if (smp_load_acquire(&nt->link_is_up)) + schedule_delayed_work(&qp->link_work, delay); +} + static void ntb_qp_link_cleanup(struct ntb_transport_qp *qp) { struct ntb_transport_ctx *nt =3D qp->transport; @@ -941,13 +951,10 @@ static void ntb_qp_link_cleanup_work(struct work_stru= ct *work) struct ntb_transport_qp *qp =3D container_of(work, struct ntb_transport_qp, link_cleanup); - struct ntb_transport_ctx *nt =3D qp->transport; =20 ntb_qp_link_cleanup(qp); - - if (nt->link_is_up) - schedule_delayed_work(&qp->link_work, - msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT)); + ntb_transport_schedule_qp_link(qp, + msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT)); } =20 static void ntb_qp_link_down(struct ntb_transport_qp *qp) @@ -1089,16 +1096,19 @@ static void ntb_transport_link_work(struct work_str= uct *work) goto out1; } =20 - nt->link_is_up =3D true; - for (i =3D 0; i < nt->qp_count; i++) { - struct ntb_transport_qp *qp =3D &nt->qp_vec[i]; - ntb_transport_setup_qp_mw(nt, i); ntb_transport_setup_qp_peer_msi(nt, i); + } + + /* Publish the link only after every QP has been set up. */ + smp_store_release(&nt->link_is_up, true); + + for (i =3D 0; i < nt->qp_count; i++) { + struct ntb_transport_qp *qp =3D &nt->qp_vec[i]; =20 if (qp->client_ready) - schedule_delayed_work(&qp->link_work, 0); + ntb_transport_schedule_qp_link(qp, 0); } =20 return; @@ -1146,9 +1156,10 @@ static void ntb_qp_link_work(struct work_struct *wor= k) =20 if (qp->active) tasklet_schedule(&qp->rxc_db_work); - } else if (nt->link_is_up) - schedule_delayed_work(&qp->link_work, - msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT)); + } else { + ntb_transport_schedule_qp_link(qp, + msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT)); + } } =20 static int ntb_transport_init_queue(struct ntb_transport_ctx *nt, @@ -2392,8 +2403,7 @@ void ntb_transport_link_up(struct ntb_transport_qp *q= p) =20 qp->client_ready =3D true; =20 - if (qp->transport->link_is_up) - schedule_delayed_work(&qp->link_work, 0); + ntb_transport_schedule_qp_link(qp, 0); } EXPORT_SYMBOL_GPL(ntb_transport_link_up); =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 6FC0F3A7194 for ; Thu, 10 Sep 2026 04:08:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013334; cv=fail; b=qrEcFyrpoVak8iiuO7VvF5K1V7pHR/1qcGE77Di8XS+4WJR+YLFbzLviaRPke20dBbU9E+AzX1xb3zPvhI3PLSjlFiaxKXXDvJzcTCwWZj4QjKgcgSOxZRP9PasXtp51mXJD7hSLleW6xK8n7V0dj4UGUItLLlZgs3AQ4htKRFQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013334; c=relaxed/simple; bh=v3qp/mqOPYCmQvaedyJX4zFSPhVIEobdhzICJ1AY7k0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UJmwQ0TMrwF+kyTayjEExfgAii4mde+k1PACH4uTDdg0LJrs78ULC2mPlsL0Faef6a/7ZwbD7mGlgLnwvGkTpTS8UjyoE6DD/XyJccODQsQCdAWxHsm6/3qsdVNxDZoFIPnIRfVDR6bwc0YxLV9AJxWN9/Wk2umfsv2L9FV4lUU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=UZBdS7fV; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="UZBdS7fV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L9CUvVnVIRJmvjSykZh+JRTfwM9OoPkj54cY9Fi7HAmjvvIoqWTGKTq7ExtGsHM7zIrj/RvjWYL1k34mgYTFuU5Ydw8i7hspXjZZszjw7mKk4zrwsWEYukWReLQHPMVOlKgzhbkb71I/Pp2UHdjon7yEIa5vHBFEqOKMbCpisDXB39iDPmZmi2kB+3yroTub6LTr+sSKaeMfc75x0U5k7I4P5B5o+IEVz/f0HVDKPNrKEZlFx7GvyPkVjsUphENnMk9E1cCPNrgS52INoz0fqMpLxPHRxBSjjI3wNdVY4yOjHTviYgH8AcEPnZjysfvo9+MOfIDON77UITQpEvziOQ== 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=9gsrZJj3YR2T6+HU5SFiZDt0M9j4ep4XKONvoKnESPc=; b=ZRWlPDw4n+UuE3isWXfu0aCaOvWgONP9e9mHGw3HHLdF4MTclZxrVICxhOmj5t321uGtJE+sveHKnA89dNHbgXSMZA8MuDaYxkVNnF+5Fa6DzEE6AJH/Lwwx5M7QnwNCY8nRhO+V5OrAxWYAui+QKlD29D9GZYFEBDSgCVi7B8NVzfYAqtPGjhw/YlpiTkNM5Z2VawOuBKoghIaF8PrDB3wVTlqcJo7VYUetZBwhYqn9THxntDCXDsfwfHJs4jaVQQtcckf9js6Oq6Tx+Nq3EechA8VG+UE+kBHDN8tBgV4+vLdve5sBJihigbCbO9c35ao3nrKumKTcDeAmMLiAeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9gsrZJj3YR2T6+HU5SFiZDt0M9j4ep4XKONvoKnESPc=; b=UZBdS7fVTtABeMkPyzyexLp7qgIPABOvHamdsUK+2EyLrn6mymu30NFqaSmkWz6DojGYtRCjeHnMVpuAhbGJMBpnOtOdlKVIvbn4ybZBRFxv6VQQr9NGFetXKtXyD/vV08+o7jaRY/tZFJiAAW5cZfg8GimUjttQlLAPtMwpKaE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:45 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:45 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 05/14] NTB: ntb_transport: Avoid losing QP link-up requests Date: Thu, 10 Sep 2026 13:08:27 +0900 Message-ID: <20260910040836.3792333-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0027.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b0::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 04394cfa-ef7f-49e8-aa69-08df0ef1357c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: SbimbLzX2fwMun7btUfPRYzAFev2TWoIP0oxoX1yIZMzslUYvvowsnQ9zJLmgtTkQx1M3V37OQKF6+mY3s4W+gWCi6BirYH8+VHtCKWbZIVzJywoWB6nVkrnpHsP2JWj4duluU7BJRmwrR4030TcYoVGSHxit25p23rDFnDVcJWaod9f9UUqEMUicYvEqACCC52I6Uz0uDR6VkvHV/iYtuUh2hXjHLs/CwuvN1Lq03EnNYXZOFT5M8Qw7I0qfHm7DiHp8CYc0AMPP8bcsmmLG57++jQK8lOiZkdBwdGwcZy9+FBi7ZH5E4dhFYf0n0Odv17e13FAKQAxfT/bYFGhmb2Cy/1ehb6WU3c0sEnwuUj22J/HruHxhag4Ks/JFncpPRH1i44SlXrstlH6FGOjlKv5a/t3qZIzdL7r8AMeG18KkQ16gxkTEtltOdG6Exq2yOS1noIF3g67FdRG//IXAnSQJa4d8KWmXi+0ozXufCz5KT1fsan6YuEDwA7FC+MxIJpzikX60T5HU/s6J0FjskjEJ9a8IwnM+P5dunZmcLLx6lKquQCiEDwgFXHNxq/bzpZkXwG0dIWqdTV0zi3GLdby/7lhfQs+MZ3JQUsxjCQmxvKB1jsTYK1ZnsksIS9Z X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?i0mMVLF/NGJhW7Or9AkIQIcpq9QItjP8hnkPog7lc0XU7XHxuxC/598PEsTy?= =?us-ascii?Q?mdfog50X059H/fscb+LudICal5XEFkwfzbffw07t8M36WOroddVCcjgSi7kx?= =?us-ascii?Q?P67IAEzJsYsIrdNr2ianGVMVplFiIQP/33HhiGAfBLkxI5izYhK0t/lo1Qvq?= =?us-ascii?Q?PZtD3rzFSea1dIHD9kWyDqwSOv9M7SJcdbNayd3V9Jymb1gqwgnMWRoymT2h?= =?us-ascii?Q?C+Ffs4cZw5BeXa9vVgFesewd8Mt8YZ3I0Ad3nvH4SpwOpXwlkQTTwJqDQG5p?= =?us-ascii?Q?HiUMIszDQhqF8kUXqds8oIQagijNM49mpp2mbC1n57nbusRYu0UIC3kGAcd+?= =?us-ascii?Q?HBj9ErjixIaNpvuKZRQqjk603xvdnF/umi+S8cd1ffs49yW6MzTfPNtMW7/N?= =?us-ascii?Q?zH3ts6NqBLBeCEq03oaAqsTH+V58EJy4X89KolJpmNvHtIzqXaUqhF2r3hQZ?= =?us-ascii?Q?skuYPDBbg/5nMDix0vgjvTfC8g3brzzfwUBhciU4pFxmOgCmCQ5Hm7AMUeEQ?= =?us-ascii?Q?iUlUcKxE1rFZQdKZkdVUCk6TUjn2t6SF3cAyTQ/IgerEMVqKcwGHJBvqT6Sh?= =?us-ascii?Q?YJ83kbrGcGzkmU6H4r4las9MAOBWig71n0zxd469UKKovUlRKkJDFBpDUC8h?= =?us-ascii?Q?wQpK5ekPkBwCnSeq89ycIZp6ZiphjIBWBzkXvcubVVBzsKVpBwNLDQExs9qR?= =?us-ascii?Q?9mQrjmYxLr0yMXz2f3+DIsNdMn2IUBrypLoFa7brGRAM3w9ndkC9XTvMKA8T?= =?us-ascii?Q?+Tmkma9sQztToiSSfAiz+vxYyR5sfWBO+I1oKzyA3ojvl+G9TrhSVjBZ/w6b?= =?us-ascii?Q?LpKruJDW13nQJniUzQY12lo0xciv+IM1wRG0SpHYObS/Wx7m28LlOyPbZ+N8?= =?us-ascii?Q?UUnQ9LGUH/LM0LWy4SaKutdwC5+gJjyM1/kxaMEJr3BePP1qCuw0skAoQRac?= =?us-ascii?Q?UowXEOghnSAbHGge7qgnyaMS1HFXOu0ui1pPUmQlRYdw53LUnjriytk/NGTc?= =?us-ascii?Q?zyxkTwsgxVwYNcURcoRsO9sV1QtmxOX8TwWxC+0nJUjzBDHDwAMWDFNTIZaM?= =?us-ascii?Q?0BjJBkiVbq2Co4elzH9OlJduo0LrNd0yJvraCw1SV4i90hVu1IWXuKM6kC7n?= =?us-ascii?Q?RubsStXXhjvKt8Q79jEgtPPFe0oTY5kUtmH1z5DN8T4A6QbKPyVmQkggxhud?= =?us-ascii?Q?SdW60eQmyb5mVHvMnzkxpQI0eiEEqaOtb7JM0rl9JLdGxEk6oZsu3gQoSbP1?= =?us-ascii?Q?zBfr1xJciN93LxHrZm8qonkAyva0sWEkkDqOT5uiMqC8u5qc4meTZ70zldmQ?= =?us-ascii?Q?4s8bbC1bRvTWQc5Ts/9tq64EZlB7WnsP9REiQ8/vtG1Jknn/NzypqJJTAWHS?= =?us-ascii?Q?/VOQl2Ivpie/YJgqJlL5i5IqLhZpQNJr02T7Jke/fyfgdbA1xEFtQsLIwn1Q?= =?us-ascii?Q?mhricozxCoFP35StX/ZJpHtJ6OSpOshMBltAH5JIzaeupofrwj0Vu9ba9fxm?= =?us-ascii?Q?QH+6TLdufHwnsbA0J0PJVrdywo7dze9dYK9x3LVzxu4VmD2orJFro/sJRog+?= =?us-ascii?Q?ly0IHAQL2c5svvFKwWVWKzZRMgcuK6I22g1UWqchzdpwi8jUauol+Yb5yTgn?= =?us-ascii?Q?1dH3n/LF/zwaUJwq2ZC2RXdwYZq281l4WzVgulCwbJFyJEESNFcHDmBrcQOH?= =?us-ascii?Q?Q4q/qmBg5WoZQWWEnexwBIIuuHwd6kM5iKKXXwr6XRbwv03kbWjRhvd1xV/4?= =?us-ascii?Q?FxxE+lU1jgBoIS4T4D5l2D/u5CNOYCUJG6tyoal38ppkvzLCUXp+?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 04394cfa-ef7f-49e8-aa69-08df0ef1357c X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:45.8010 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9qNoZSaCH45xv1ftAPwT0w2j7Cb2M+LljXRyonsrGmQAPNBkgtajN/MZS3+OXgTgWD1EhIl8A23zcgORobX/Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_netdev_open() can call ntb_transport_link_up() while the transport worker is completing setup on another CPU. Concurrent transport setup and a client link-up request can both read the other's flag as false and leave QP link work unqueued. The QP then stays down until another link event or client link-up request. This is the store-buffering pattern described in tools/memory-model/Documentation/recipes.txt ("Store buffering"). Add a full barrier between the store and load on each side, and mark the client_ready accesses with READ_ONCE()/WRITE_ONCE(). Fixes: fce8a7bb5b4b ("PCI-Express Non-Transparent Bridge Support") Cc: stable@vger.kernel.org Reported-by: Sashiko Link: https://lore.kernel.org/r/20260907144701.702E41F00A3A@smtp.kernel.org/ Signed-off-by: Koichiro Den --- Changes in v2: - New patch (Sashiko) drivers/ntb/ntb_transport.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 75d4a2e021f4..1332d53bcfe7 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1104,10 +1104,16 @@ static void ntb_transport_link_work(struct work_str= uct *work) /* Publish the link only after every QP has been set up. */ smp_store_release(&nt->link_is_up, true); =20 + /* + * Prevent both sides from missing each other's flag. Pairs with + * the barrier in ntb_transport_link_up(). + */ + smp_mb(); + for (i =3D 0; i < nt->qp_count; i++) { struct ntb_transport_qp *qp =3D &nt->qp_vec[i]; =20 - if (qp->client_ready) + if (READ_ONCE(qp->client_ready)) ntb_transport_schedule_qp_link(qp, 0); } =20 @@ -2401,7 +2407,10 @@ void ntb_transport_link_up(struct ntb_transport_qp *= qp) if (!qp) return; =20 - qp->client_ready =3D true; + WRITE_ONCE(qp->client_ready, true); + + /* Pairs with the barrier in ntb_transport_link_work(). */ + smp_mb(); =20 ntb_transport_schedule_qp_link(qp, 0); } --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 BA4BF3AAF68 for ; Thu, 10 Sep 2026 04:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013336; cv=fail; b=EwWxpk78eo5uvKeDWafliz/4tSUnuCraiUsDf5K4/lN4Vcf1ZNfBlvVmZL7rgU6mtPylck2d82NXY6YE5JoxK2sG1+UKr4tGjegXRQXH/tcfQflOqFCYkAr57Qv/+dghsjig1Bqyfk+aLIun31csi/kqMCTCCwNuQDj1x0sMDec= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013336; c=relaxed/simple; bh=3/g7QbWKzN9ZL5C0n1ttalJPYoaxEdQqDRXvjBTT31c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XaieiVA1NYqTXPN7f45YUWSgf0Cc+dREKgHBWcRkyI4IYERXNX6nkAYq3QIcMqhZZzDwyiiwsXKBhsmhoWRkqGOm43X/KfDnJ09lTPQZBck8RQf514h3Y7sJPguWQs4gZFaY7wL8nw8AlDPOpzAG8RGkj2mWYwcAzb4f+1UTWmk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=Jza+QfGX; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="Jza+QfGX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=m2QeI7l4qZVxbbGXnlvDj6tQSQB89W4UozuZ4QQ7M5unHKk6C9y/YQzNHSU06i4vI838DXz5pVVfoDSEDBbnM30e2WOvB5ibwYOCITnlPa7nG18kNCeXYVGmljQddMy/pRNhmqGRis/CT3qMGn/Vg0Sm7nlXjW3j6MBUPFULJm/9ebYbKc0xgptyVc6iLbWhWA7r8T0b2zrgu42j8c679jaFRSmL+Y80MaBrd2y4/PvmryiJd7efWZE1Ga1TPyrY6jnyp/6YdIlfsFxdWIWZpZySvzB9V6t8yu2nFVQvn9I1Tbzs4Rq/5dZ3KrseMvzJsAe/V/mUNIJETdKgg52dcA== 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=ukZGEDDU2OKNJWTMb6q983Z20L0KPdk1Qz4SNs0VlAE=; b=eIo8YKIxPzUMfLClX+e//Q72gDupT7TkemjqnK+JaxZywlF30bTVex5E+aYqVN7ztFxz+65HGkCr638a7fd/yA2kqxo0bQMJaSwDeUmIXuwC07cXHsrVj5Bp5G2kICDWx4UYRg3YOYrw6WbvYkUkm0I3aLtt09onf/EYuuYVjbSMJKO/XfrpxuSJiGK1BpED4VbDNXJ5nCSS6YGBLYhIVfFbp2d/B6Zx/RauWxOM3F7qAAgX2GDc46QQ1p4jOVCprsmGWdb5X8z6PVPjtB/Mm6cJKlYGs7m3533VK0vY5wj5XBSQF4NjnAR+msiEV2ronOHS7ouWGCCuPQyVAQC9Bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ukZGEDDU2OKNJWTMb6q983Z20L0KPdk1Qz4SNs0VlAE=; b=Jza+QfGXNlZJWUb8TiBJJ9FtA40wIaofInZE9dbcyjGmdJlFUzykE/h3KKhPF/5VqYAuQ4AJFZ3s13BuR08y8oTBPI/exQHeUhNac8Fq/0Vhcs2lDKK28mUUoztEqws+TAxjSzhcKytAkTic0ED40ieX/W4bCtolkxZ13STrxFc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:46 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:46 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 06/14] NTB: ntb_transport: Clear link state before QP cleanup Date: Thu, 10 Sep 2026 13:08:28 +0900 Message-ID: <20260910040836.3792333-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0169.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::12) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 624d5799-1f70-4e31-c33d-08df0ef13603 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: fruvox53YNqLMkraBzEIB/JPwGKOJ4veTo32hdnfxbmXR7kwAjugOfGkA+syrir60v6cM4IbESetvZ0a8tLtgIO5mKHSpow8q6f6v578TXxAheROvyjLCx8B5h8tIclHpThBSXyXCGV6pnXUZ7jbp1QDJturAt6NETumNdMpNPU5c8v41/7jlLJxFvYnvUHTiDDU4SZnBg3MjrFhGjX1GrcByuHnFSrAOsaxkg0RO2xZVaPECSnhLTU+j0ss8IGNd9gB9C06hy997NFtZtCTB3vNHQ0ICJpEkJco6crWWP75Js+wM7n3MU32+FU9Zhbmc2ico9dV0nGpziKm/uWFTITX2GClbnbhKAGN/A6/SIAVN/7jdeW6MJRM8IosXIR2Ukid9l1fbT2lx+MsouZBiBr0hIaufg+tLGd9jZZF8LbTs9j3z5Si4ZS/ecPVZvy+9+z26X0RbC28riPrkiKRy7/MvX28oHi1h/XD7aoVkC/Ps0/rTXX+DVvQgpVUEfNi4ZwoukxULEeO0PVS/wCmwUC1RUvlLWOKCo0GuVhqGO4U6ZcB2Rm9UlTqgodsLez/YI53212kbp1um4kOCPAS+o1wJSjPuKB+Xll22pTWCr90Xnv1CjNXr6jKCohrSg4e X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0MgYGUcif2Y2xzzocTAaf4p2bgHczFa8d59X8InC6gaX2kg7pqx+L9XR/FpG?= =?us-ascii?Q?CMSvtfunqtpqNgHUM+bco/SXIgVsFVM3UHhA108serJhkTCE2gMQJhe8d0fn?= =?us-ascii?Q?55essPC9VTtZ3u/un3XcahPhuUNGUa9mRtiAyyxXXL/AF3egqQZ+E96YVXcN?= =?us-ascii?Q?FT1L+6PudRWZzxJbF8znMjubkk/AIYMsyZwuryd/B+eaWD83EZJY1gGPF/sR?= =?us-ascii?Q?+Cg1uHC5ALi6WLZrprEgwOrvxWDgc3ObX4ZMANpywx+Sz5oPc3y1godrOOWT?= =?us-ascii?Q?kiVeGiEk9ZBdK7PCQWyUbwcI5hbxeeh1NMKkS4Pa62Imwr8gB+8MYNyBF/hc?= =?us-ascii?Q?sFH9PnGdtmxIMZCE5XoEqDsybyXFRJHtCKPYgCr90brtrPdDvhc6G6J1pCup?= =?us-ascii?Q?Uzkg30WjuL90i5rhfYfSeTFgFcwe/KPP+DzLqT1h7gKMHWvieEmCgYnXZo8F?= =?us-ascii?Q?W6aO5q1q7CPjx8pCY3UPemsSwVZ0xcpXT5sUwTrS47Prjo9E4htn5DVkzVHz?= =?us-ascii?Q?ZEX0aCtbT2nAoj4lT0NZyjziwadDCmKyYlQjJ8JCxBFstzqYZC8QsiK/qJDV?= =?us-ascii?Q?478Cx2loaO896V4POClI7d1VVF9sjpH1mee9qwobY/LVHwuSlbkFimc7m1dm?= =?us-ascii?Q?/ycdBswBm8Jo5gkvxLzswfT758aiA0JYd4nKPegLDWOIGS04S4lmSZ+33qdB?= =?us-ascii?Q?8JZl7z2915XzhSFm0zQRM33u9bX92ISRPzA/9GP1hFK52BQI55Y9uuAfGbCM?= =?us-ascii?Q?eeKa/zmv0M8Xkh4dJXv/EwcAyN2Ed7ggh/jszKoHPFArt02Bai0XPViKUe5+?= =?us-ascii?Q?GBPfjENY36RUeHbn/RacAcZgOKOV5A2XwTP/6UFyP8gp2sKSJdPkIf1qvjcv?= =?us-ascii?Q?vciz3RUvEJM5NpikN7dxZuQk0/QvfxWnQYwLsbDV6HUeRHOXsAoeGZ2j3kRf?= =?us-ascii?Q?08DW7KCLGH10Fp14p20EdKZGf6bIxGcDHsGNabqfAuS4kIWOsBwj4yYOZpEx?= =?us-ascii?Q?epAJg96lZruVKWm+binL64jhqFUoqVhRZ/PnR5T2ITlfzK5i0G0KJUKl9U/M?= =?us-ascii?Q?LEQtxxiZCbuPNav1m41lO3eAH6EqETno/J9D3516ldn+TKtIjCDMjvrySdHy?= =?us-ascii?Q?y8TDwd6/y5zH7Ve/+VOArxAje43IbPmzU1W5lXO9aUC1R4A5mDelsq0XRQ+s?= =?us-ascii?Q?3KIFb4k3JiqcU9kK5k6h9p98mNcxEdEs1ulWE8TecMOYs2bBXl3kBEeX8a6W?= =?us-ascii?Q?KAhl3+QRWRPzNwjbSfte+I/860ktFsxwsOHQSPqWLwk9KZ4iOhyLoEvqhuBC?= =?us-ascii?Q?kcqdXP0BvV1LERO9z4JT7BH1rGiZ+Lp2I1dEkQjArNWkgkd1wSL/TyzzIwrP?= =?us-ascii?Q?dESpPttSrlSj2VqXgB+0jZb0pf+ixKZemQljHwZPZSu3XWplrsjNUtM0oqG5?= =?us-ascii?Q?YomKoczGe9FUinFCDeRHk1bmnLLJnyJJfRSMJgNmcMBQmBFyFW+Xy7NEU3Jv?= =?us-ascii?Q?Svd2hAQtNKUBMQ4tTetPp32Nea1NVLi1gOpCJ3gHiL+TqGkUd6F/ivRdhCoy?= =?us-ascii?Q?TUZM6+G0FdO9HEJ5sZ3PqMOH9ONr6fFWhUsSzlEjZ9Jzbtygs2Vge1/USgdi?= =?us-ascii?Q?e+TMyz6xGUra5asqR0AgWC+q01XEZUV123BqV3Q1Oaz4J8NgJncRDVyLAOAc?= =?us-ascii?Q?1OsRr+rMeH+1MhVAU8INXE1l3QK8nsAFqzkl1WCyCAWAXWaPTJIScqNadfcq?= =?us-ascii?Q?mRLws2CNVx7TKHkwQLY4UvSBzkT3lMUuBFpiMSM5YgndG09pJwmy?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 624d5799-1f70-4e31-c33d-08df0ef13603 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:46.6693 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RPmIHNin831l5MoL0PaDeAMY80GS+vwkgm459S5qI/Vch2bOGyFwxOfaqKHiABAdb1RP2mjl+A60VOn0bXp8fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" Cleanup leaves the transport link marked up after releasing its MWs. A subsequent client link-up request can therefore start QP link work before the transport has been set up again. Clear link_is_up before cancelling QP work and releasing the MWs. Have QP link work return if the transport went down after it was queued. Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. Note: this is a reworked version of my earlier, withdrawn patch: https://lore.kernel.org/r/20260717061223.2203863-1-den@valinux.co.jp/ drivers/ntb/ntb_transport.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 1332d53bcfe7..8dd1770aaaf1 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -977,6 +977,8 @@ static void ntb_transport_link_cleanup(struct ntb_trans= port_ctx *nt) =20 guard(mutex)(&nt->link_event_lock); =20 + WRITE_ONCE(nt->link_is_up, false); + qp_bitmap_alloc =3D nt->qp_bitmap & ~nt->qp_bitmap_free; =20 /* Pass along the info to any clients */ @@ -1142,7 +1144,9 @@ static void ntb_qp_link_work(struct work_struct *work) struct ntb_transport_ctx *nt =3D qp->transport; int val; =20 - WARN_ON(!nt->link_is_up); + /* Pair with the link publication in ntb_transport_link_work(). */ + if (!smp_load_acquire(&nt->link_is_up)) + return; =20 val =3D ntb_spad_read(nt->ndev, QP_LINKS); =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 2538C3AB285 for ; Thu, 10 Sep 2026 04:08:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013337; cv=fail; b=br8H8Nxfp+40g78eT8vyYR1mI0NwFNrgLYAU3XnMT7XKsMimnt1cCK0mw8ghkH6Lek4lw3gEvyDsmRjBsFtO5OMxYExRoMP9pPBbwgI4GJjksXY2DKat+gLCUaX2zolyRolUpPS3ANbVvzgHusaV8UxfNgDiJWldk/z6m6csiUA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013337; c=relaxed/simple; bh=0Ajt63zi7FTRzoIr+oiPGjKOfIodgEepuj8nIDWk04g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=h4ZqdaBrooDnzpBAOO3sBoo7nPWO08U2JK/sY2j3tNOquv+hG/tU/uL+4d81t28AhftrIgAmOsOtCHsR6plEPbT/M4UyRnOExsRAG24ZChLRL7ocKDTK2uGX3LSrBPkE8kmqY+hOIFuNsQaZ6sdBx9KV6YzhlZ2C4Eq0FJK67s0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=nvVwBlpu; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="nvVwBlpu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NA7zJSxZLDs5FdoEWyKONdfvVHWP+queTPIWnojc3rdKT7NyjHVWku0TbYq9PElSQNJVPFPr1xAjRuM5pFLJHKRIeMWjutBNBcEE7/bAtGrNi86TdWM/fkELH8rVwQchDkm4PR1nT6TYzERarjo0DC4m4HCbrGs3DfvCbNfwCJC6+hu/uB87K7tIFMVgvUTBzfZlvHHN1kWoWAzrE8ilBNWvM3FwiCiBsfJo27ZQS/IL5usZ1rV8m+CAVQDl77jeGYJkFI+jI5J+p/BF4Thm6TLTvWcrUrccwhfTVNFdfyfHdTN+s3tfaPNZjIdVd3y2OlQPG0Rl44JZfy1BNP4lkg== 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=J25PxL4F59fZZrsVfAmYoJUfQar6WJlEI5N1hvECO4A=; b=Cm2Ux16RZlNSvYXRlgFKNg9BfZI3p5nkuOcJFT1nmmiWKmjg/ZVxpkgMZ2NF66rcizpU8qZzetA7wbewv2Wje0Rw8XqH51ZXp3U2QKEJK8ePSgJnD1Fu3btXLwAH0xjomra/R+lGUQeYRa7k0NlHzrfnTw4bzD0Qf2mRH1redXOt4RrAyrvrItjDR2QQgcc9XX7FPWfdWu1TtsTgkN3y9VE8xBVE8b1b61qy1eCP0UVh6Vt89OGTG7chdD6C/kXCE2aLu0Gmvk6m1KVXBfXVD9ms7IBDJQq+o81SQT5EQxHS+NfDuKOKoGhq0nEdd0eWgJd/jXRF0jzd8hlHiDfnQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J25PxL4F59fZZrsVfAmYoJUfQar6WJlEI5N1hvECO4A=; b=nvVwBlpuOUfV6/VsHFTJTOL9QJPgkD7rPRyLLIFIsUCmIadhFfdlSNMcxpSpNXoLPY9pwCkjz6VFSgRXIb69uuuyCE80yR7K64CAP0Fyav5i1rn/F4O4P0ByIL0SkyiPQH6pBp91segjdylDEhTh9JUwaHTsLFIGmgvv+ptZDTY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:48 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:48 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 07/14] NTB: ntb_transport: Stop QP work before freeing a queue Date: Thu, 10 Sep 2026 13:08:29 +0900 Message-ID: <20260910040836.3792333-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0176.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::8) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: b7c74ba0-8714-4560-b8f3-08df0ef13683 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: hSJjE/OKD1y9z3CP3nJvWmCjbRlUTZcb8CDKzS9kXDWdAdFU9KZggcOFqr+mS1yCbLRVsLmQOT1obmgk9JTHEVShyGQ5wpKT8ACmp0lkzzcO0ZWXihbNw3GvZtCt40GMNtdYcPHPHY91BzuzsGZHmkRGykLe4zNOu5ILiuA73z1yH6aehLXsa8O9HsIV0Fmdzoki6WxauAZV5FKAS+DoOJjqgf7R7rbdw7xuEQHfRo2obXSkF4C2pZz+3TqsfzqMS9/q0UTxHXe4jhlIgceHh3SkeB8I1mVnFJWTeNwkbe0sli6HZi97Z+MdNCqWyHqvh628/d4rIpMy+4CsH6qbdawsDWn+482jQRwQ2sh4FCCoK65tvIUxLPJXKq9ucDZZ1xDLbwJcHJXhtXZ58wZokQAQizi1fiwvZZO70qgnbg/TTqXy/LTXizIdy1t93BsdtNeQNViB00FEJv5zVqliHIO+YRdDbZvPsOqHVNrcA0sYloJGyoeD/5Z0cocmDs+jLgxhY6D4RgD1i62lIT7i2nKXWNGaFXOEv5LYOLzdckTpV26m0IS12f+RYETU5FCrSbIOW37DpIeoQ6gbOV8+fLI4oWFCj/FDWeGJfpUd5xMRCC8RLJ4fY+BiJ13c5Qt0 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZohnPKpZ/uyoMg9U9KzVb52luetS8xXZ3fZgdvqjdw+9RGyaSxRxry68yFp1?= =?us-ascii?Q?DlUce17P2P9JWJUEkgmw48smc+Zu97ooKSPhLcsHagiA42MzzQ/T4Klfgbtx?= =?us-ascii?Q?0ymTQEokdHJ+P4cAUfwS3nsOeVQVkFi0YYgLrdn/iOUbRiAdK8bSyQMTnd4z?= =?us-ascii?Q?Unt6hfDO560ZNW/DgcWKhRA17tzVzWI0kxL/tGP162Hrh9p2Bjh1ML2JmPlh?= =?us-ascii?Q?O+zLk5+Tc/NDtsloM86eUQ9yCQDMHXTlMYxG0eiJrv7odya9YuW+tj50qAaD?= =?us-ascii?Q?Jw7/E3WD39pdcRIiN8aEhr6bCXFj7Ta/oa87wPrcb34BAGKMIRiKS2GMPrRV?= =?us-ascii?Q?qM4aLGtEuefUs9zUOdDxFX9P9hVTj6mtEQ+xYrMqpA1p5PO0OSgwSy6GZJnQ?= =?us-ascii?Q?TgLzds/57CmNkAfMInnuRBfQ99LLZus87KZU95V0HyXBtQES1r2xLuqtzvqw?= =?us-ascii?Q?/lCvOsniaqan2KzTSaRDS2l3VzvA7mT5/27OUamBh4FqU0a/gKokSGhoMcKO?= =?us-ascii?Q?SpfKNF2n74LerkuLQ+Dau2FateMgMa5msf3lf7x0o5F3u0/fN9iMaxXgcGAm?= =?us-ascii?Q?io5Wry7GV21lnbQqnwBXny2NZIcvg6jAaWKW/gOM0pmXEsuc2lQFSzFvine6?= =?us-ascii?Q?ul6MN3gDTTak9lAqNsL48cJ4FGs//bmU0Ke47EXAIufbW9gCwedNbyuil6gs?= =?us-ascii?Q?SrMkFrO4X1zL83tM2ZZm91w9yRyvsjGOnPphGXeLRcP4VEiZEwLKEfudAW49?= =?us-ascii?Q?W2qU4fIB1wQSAKZQQYgrhe9nMUGj+2a4Ieu7KcRCTIDB4ZhY9v0pnuCrREe2?= =?us-ascii?Q?s3IOQCD+052QNBekpV/3RKM1akFUf4HYyFoOB8WurNtydEzv1b8EnnAvL8mr?= =?us-ascii?Q?weTIM+nKw4XTqee0zlG5jUiKTqnEbN9lirVfO4xqV7I5lb148im1NqHxwIk0?= =?us-ascii?Q?+tFAD+auYpvU1u0v9LtNQlJDDT1ZtrN8fdlRYo2GHtql2cczQYpJ11g2C6Mm?= =?us-ascii?Q?rahQvDO59lPBSa7eoC6KXaL6PulygsbgrB6S02PMmN16Y4c39HUA699e7Ttj?= =?us-ascii?Q?+6j38d+Te/rSuaYdeuF4C/nAGLQawTvBi1f2TwjR7gYUObqPvufAYGp5jVK6?= =?us-ascii?Q?TFeshLYKHr4eeQu/XYs6Yj94WwTex/NgqTpjX3JZabNZw8peQQ7Oif/BAB27?= =?us-ascii?Q?Lqih5U39pvFI5SqoHy1eNvR8GYoGTB7wJ4mfNnSqhvATC72msmyND0gzM4BM?= =?us-ascii?Q?yLb+S9zAUyZC9sOuXUMYaxn9KGjCiM3SZZRXRa4/GWlRVUr3VeRD7NAWN2G7?= =?us-ascii?Q?eS0Sv54RTPIxc0fmd4YrhvB/+Id54lpbWVnpdfBKmdKYtM07C+R1F/a7nrO4?= =?us-ascii?Q?0l8m+Ap+a0LjS0jtAHtOi4eTlL+Xk+mfPJG2nr9uMuljR7vInRZ/lv3th1Vf?= =?us-ascii?Q?1seNVeOAhM328P+Teqjxw0qPojfPwSBcWm7VQoCY25bM15JebEMI1wQZGQbk?= =?us-ascii?Q?gdNXSnJCx0VunizO1K6lpUzbYGbfX0F5iFjmp74LR74OB3S1mkfzdp88uPhb?= =?us-ascii?Q?1QfIej+OAdWbOSnEX6SyL6l+LLPwooLHNRcrqtKlEI6GdR43EdmVarBEzZKL?= =?us-ascii?Q?lHd+Pj45dq8c0c+GzI0wZLC5tLW5/IlN1SIxINkU+R8kilaf8IPZCKX8pIAO?= =?us-ascii?Q?Gxm8rSkMthfVcs+dZSHdcYIalR5OkqrF+xcCmIGWoQinKCtsDTti53ZuFiNH?= =?us-ascii?Q?PnT50Jl4vHFafrU+BQT/bf5Dkau7Ncjx+vA0v0gG/94zU22x/Eln?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: b7c74ba0-8714-4560-b8f3-08df0ef13683 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:47.5062 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 22ewCWtMQl2kLmbvFFTbvkJOVRcArbLfaXbyVIp3Ffjax9nRopJzWU6ybTP8RNryrdvhHjLi6e/34v+irCt8PQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_transport_free_queue() cancels qp->link_work but not qp->link_cleanup. A peer link-down message can queue cleanup while ntb_netdev is freeing the QP. Cleanup can then requeue link work after the queue resources have been freed. Disable and wait for cleanup, then link work, before freeing resources. Unlike cancel, disable also prevents the RX tasklet and transport link setup from queuing more work. Enable the works only after queue creation succeeds. Clear client_ready first so RX completions and transport link setup see that the client is no longer ready. Clear link_is_up and active after the workers stop, since link work can set both back to true. Fixes: 7b4f2d3c3b82 ("NTB: No sleeping in interrupt context") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. Reworked from the corresponding patch in the direct TX/RX series v1: https://lore.kernel.org/r/20260810165136.2292436-5-den@valinux.co.jp/ drivers/ntb/ntb_transport.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 8dd1770aaaf1..e5599c7ca93f 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1242,6 +1242,8 @@ static int ntb_transport_init_queue(struct ntb_transp= ort_ctx *nt, =20 INIT_DELAYED_WORK(&qp->link_work, ntb_qp_link_work); INIT_WORK(&qp->link_cleanup, ntb_qp_link_cleanup_work); + disable_delayed_work(&qp->link_work); + disable_work(&qp->link_cleanup); =20 spin_lock_init(&qp->ntb_rx_q_lock); spin_lock_init(&qp->ntb_tx_free_q_lock); @@ -2155,6 +2157,9 @@ ntb_transport_create_queue(void *data, struct device = *client_dev, } } =20 + enable_work(&qp->link_cleanup); + enable_delayed_work(&qp->link_work); + ntb_db_clear(qp->ndev, qp_bit); ntb_db_clear_mask(qp->ndev, qp_bit); =20 @@ -2200,6 +2205,10 @@ void ntb_transport_free_queue(struct ntb_transport_q= p *qp) =20 pdev =3D qp->ndev->pdev; =20 + qp->client_ready =3D false; + disable_work_sync(&qp->link_cleanup); + disable_delayed_work_sync(&qp->link_work); + qp->link_is_up =3D false; qp->active =3D false; =20 if (qp->tx_offload_thread) { @@ -2247,8 +2256,6 @@ void ntb_transport_free_queue(struct ntb_transport_qp= *qp) ntb_db_set_mask(qp->ndev, qp_bit); tasklet_kill(&qp->rxc_db_work); =20 - cancel_delayed_work_sync(&qp->link_work); - qp->cb_data =3D NULL; qp->rx_handler =3D NULL; qp->tx_handler =3D NULL; --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 17B1F3ACEED for ; Thu, 10 Sep 2026 04:08:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013339; cv=fail; b=o+/CxNd3LYOENZQQfzLt2pp3Pckpd+fN1s9Dw9Jwoq1eXxFjhHeE4dKjGPVxUoMXjABfYPs9S+S2jmFf4jI0rDFuHJEucAkwSrxE+G++5ieZ5ipJWuhO8vVbC9kwJx9WUIAGzUI3a4UOmoikR2wg70PjjBm4MTGAOoVjJeWYhBE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013339; c=relaxed/simple; bh=LzZ/S6fr4pq6Vx0UFFs9OqTCzGf8Phd4I1o606otv9c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ma+kTOAfeMNLU5auOlMM1gKblkhZjtKFnvtbAj6nde9pg0JCzBZxOX1UN8R5mjmB305kPbJVqncaiFphHvVNFpTED9RfvrTf3mpeDlSoqB9ccDbdKbFss1dwB0zaaAMdq2a0OYP6aGPhp7BQRR/oDizeKN7miTf6EOwFMS0Rt9k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=UX5RiT9N; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="UX5RiT9N" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qbcam9GXvJTc3dspTZGkrF63RiDiGfkTxnq++Y7qfmcLENn/n9QefHAlXKJ8JykwRoy7BjVyfoZaD+wYWWYZVEdrCjHM+kJox479qC9lITHENmE19kM/5RclqDAIHIWSoXKKjH6GqIArEigpWxEf/Z62s8hDf66I6TxzSbSBHbhihxTFgk6GwU0ZHBJ0QE53/3DRVZ8GjVh8mAIHsTy4WHOSRo1R5zcF4gn32H7wJ4WomjMeYICmJTLL39e0DYCcHH7+tCKfi8Tm6WqGnWhIfJP0NGajTr0Hz5+0sYADAxAtcGrCfheiQoZ8zO94Mo510roTvILoiAG4IwQ/IpglAw== 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=q0lt+/dAMi/3+qZQpvfWj7KiwEM6ly8S8r1Gz1hTEr8=; b=iLsOV2+Bah+kY8hMO/iz7Ok8ebg6Ycfj3UsK+L7xY8/zOMTNx+CAbhDzqvk5OMS6jgagIGyeWzs7PrxaWbdVw2jR8LRLOw+KahoYc40G2ukE8hNlV1kPVl6ffmqltaJYXeIpUfHVr6Q+1hqiv9hDUvluwnVwMOQcI8uexuNiZy0hOaXIt0QGOSANwL/IgI0B17EieYcjY2LMKwrMymHPTtxnswyDnSvPQM2M1evy62WbjiacWNiuxyxxhP8f76pwThc1FI1E7YaSFoUDn92O5wwhG7o29xOggW+Tj+pbRj9L+iQMLApOUeh/cGHJtCCdie/cxZ4Y3r7A5Dp8SmQc1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q0lt+/dAMi/3+qZQpvfWj7KiwEM6ly8S8r1Gz1hTEr8=; b=UX5RiT9N8v4ZSPt+dfZyP6pCUopxoYJhuCJmBSyuu8LjDiNxYER96kEzyGk7XzrgsFGB9jp4vwZgo+Qd5ID/aSDx21ROQmfb1rPhTVfgGF+zMuKcg3Y8++vXM3G93/3aiK3Q8GccnuBatxfgYwEDeU0+93L9ch91583TLzJDyRs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:49 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:49 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 08/14] NTB: ntb_transport: Stop RX tasklet scheduling before freeing a queue Date: Thu, 10 Sep 2026 13:08:30 +0900 Message-ID: <20260910040836.3792333-9-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0178.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: b36fc92a-0afa-4d22-9b62-08df0ef13711 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: shZkw4clLpTRLjI7Yh0eMZ8O9lgCJnMtaXVoEeSTraVUKvHP9REb5IOYQ7IzW9gBHEskBsUEkna3smvPPYNRJ0ur4uMOrefJJrrpeeebHwsCHv4M9Owp7scCskGElVSIfv9xCM3cwLuyK1+hy/TPOvnX9K9Q7SzfcSuph8bmou6L9lcN/80LwEEqos8nKSc05QF/pO+8opB0LNLSz2HDF+8tkmSSBpySPyQqFlcvFXQWN6c3Xx8j36c+cVHH82IlKOg+qN+4uWoQrJmYbAldamEeJnwTxy2zxEt7zVZD5DtIQB6negtXIlFcTUyCpAzqi1JWW7ZeIAI3s1o8Wbjtv9NLltJV4i0q2VBxGqnx2xE9s7wFKJM/1FyYgsqq/aq/hYOf0lSXJvztB9P08+93JDtHPs3sy/JRTOJ3ql3nOitsZ4jITiIynlt5ELAZ5rTmZb8Z25TR7MJEdIPw65a91MEA+H9tox0fMe1PLCqlrhtTsDYG0hI0TCFw/roYZ7JemzqldXSmYmW4JgRgw84iVo9zFPUmjV8k0xYPhR2wwH82yJTZsCxMCjwc051EDbmS9zTgKuNMjrv0Hg1TXmfJCmVG8HZPUPp8bsQcMq1bWLajtDpXvYtHso1uhWZLzOMoJzLtpBPvHK7fVc6Rl3WfYued2PHbaLVBDfePZxQ/oJc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XN26zlKeR2mOf7iBTDv8JxkgRju3yJUZzl9CPo5aNC+EQQj3E+eXHHeXsp4s?= =?us-ascii?Q?5p4xpmfIpRaiUJCa+nPJmkGXH0jG0ZBhPfTQKKfuexyQ1hrLQd0k5noibkab?= =?us-ascii?Q?Z+LqCdmOw0MGXeIr1VxZVSJYRp9oCySPsVN4EVGj9N/yvbYNoirTTHlUZ8aF?= =?us-ascii?Q?t6IwDa/7s+Pu4MmxCUBvEQRGxuoJZMgysq5XndX30HtfVRnf5eOTCVeJpM0O?= =?us-ascii?Q?gp8LafErzMFE6HocKsdW9vZRjyRyyC9gOs5ILq7N/7EhdJM99mNr+LQ7278g?= =?us-ascii?Q?l8gib3z9XGAQ3xOKcgKOY0rzJ/qnm+jeOjFhG+ShrFuWRjsVuSaW0bmsoDjE?= =?us-ascii?Q?rH9rSZapxFbHPLO3MriQADCsw58OtpSA9gjCsLtFyghdh71bXxj0/GCFSEvF?= =?us-ascii?Q?YohVvkmEluW5yHbBALfNPyDMOc6NpMVM7OixketDzBtqMwmMNq1h/U+kztHI?= =?us-ascii?Q?o7OVRPMQiofFhpg2Ao+upKY4gm3Lu/x+DEVQVrkPOK1VS4VB8kAhRy2Wc6dM?= =?us-ascii?Q?45ZfmhQCH3HcXO8zU4OVj2HWHwxdLKhhFIAJCvt7xwuOt7r/4YyTVpnr3qXd?= =?us-ascii?Q?vuDIu5ZRf496MOiqtQ6U6VPjHrzWFyVIaOlGNrlI1mgyoaOLdYYL6AQZ5rLg?= =?us-ascii?Q?hy+uNxsxhkYF/zabTdWx/014Is+tXmUiPa/4vnlQEn7fua+7ZTzOLfzb1yOj?= =?us-ascii?Q?Fx6JzT2Y660Dq5lAOLDRgl7FfjRtfJfjhViM8Nz/QGxFG08rDA0PMDEqb6BA?= =?us-ascii?Q?cHdGL4u/8/JocJqRna0WWjGKwxWieub77lEhwmqgJqXp0lCxGB0ZJNXn/5v/?= =?us-ascii?Q?PXNIMdXlxtOmndHC8wyN/2w7rjOvoa38hWvV+7Up1Orl1p9MD2H1cqdKZUPh?= =?us-ascii?Q?QJGPd3gXOexPW9RVhBiha5UolXu8dBe5Ua68lzjjP/FRNMEIAfLEUS2yohVu?= =?us-ascii?Q?qtHMSCEC4NPfajR3rD7M2QUF9Ck8D/6p+XP6MWoKHXkA/icccJqn+PZqATcT?= =?us-ascii?Q?EAPELJftDqPpA3JV72Yy8cZxpj5CKqS5PB9vVxwd0YWFTIANkga20rn9yol5?= =?us-ascii?Q?04kH3JvB4iEN3bH3CqRMozNrkVXnrbD2uH/O7U1Q/5JQsYcNfGyqeP/dvSBI?= =?us-ascii?Q?fnz5isQWG2bUH8Bzimos3nBxe/Qjuz6ltaa0YVDAzdW+nv6iAgXRjGk3m1iU?= =?us-ascii?Q?V9NuMa1Xp73eYEdHDHrNiTpYwdbSoXRpuI5BPWkpcyIFq8w6GjJqyEO9Dc6O?= =?us-ascii?Q?5NDCHbQ5UIZRs06tLUI3GMoXZvMnS7yagvhajqRTzlKEWNYn8RtjC37UKCEH?= =?us-ascii?Q?Ato3yai2uEJidEbXJ1l9x7lhCUkGwPmcEg3/w97ZAViQ3UtmYwTvuKTfsTMy?= =?us-ascii?Q?DyHL09OlezVIT54tWLOlXS1it6uU8cCbWK9NTeszheIiY+YzCPN5qO9O+1Rz?= =?us-ascii?Q?AU+7kkxAQKq+tPP62BfDVylUv3crmeSSYyT3tlV2vGtA4sTzv0cS0cjWs8Vb?= =?us-ascii?Q?Xu+8ROzzG05TUO5AvYPzrE8jJhoC3xKXyFriu648UN/cj0YkrwgqtNRd32Wp?= =?us-ascii?Q?kpMxDyPEGFnpG/cgZSmPOXEVjpZNRKxgWcu+XkFM3WUXY2RwTLdD4nsloFAW?= =?us-ascii?Q?K0luv5mDnW7whDjnOlA22BC0DnO/xfVtkRv0DCRNc9L+wq+17WVs8MuldGV+?= =?us-ascii?Q?gsXKVyuzgEyy8Y/LlST44UBty4yCFn6NnPLJlDWZMXstR1w6Jrk32PdoBut4?= =?us-ascii?Q?IU8PT/tt8L7XR/TnaTAZ9Ekbz3U0JD+shJ+xstBWsY8vIZNtk4BS?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: b36fc92a-0afa-4d22-9b62-08df0ef13711 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:48.4574 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eaoZ2P51BZzW8pQLea2tp4kKkx5+fzZkquyXkAd0UGAC2RTn70n3HBgSczY3E+VgmvP5c5OPfVN/zmEPuBuVig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" A caller can read qp->active before teardown clears it, then schedule the RX tasklet after tasklet_kill() returns. The MSI handler does not check active at all. Teardown also releases DMA channels before draining the tasklet. Protect active updates and the check-and-schedule sequence with rx_sched_lock, including the MSI path. Clear active under the lock, then drain the tasklet before releasing DMA channels or queue entries. QP link work is already disabled, so it cannot reactivate RX. Use a separate lock to avoid contention with RX list operations. Fixes: e902133162af ("ntb: stop tasklet from spinning forever during shutdo= wn.") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 50 +++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index e5599c7ca93f..45d4365becac 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -179,6 +179,8 @@ struct ntb_transport_qp { unsigned int rx_max_frame; unsigned int rx_alloc_entry; dma_cookie_t last_cookie; + /* Protect active and RX tasklet scheduling. */ + spinlock_t rx_sched_lock; struct tasklet_struct rxc_db_work; =20 void (*event_handler)(void *data, int status); @@ -649,11 +651,26 @@ static int ntb_transport_setup_qp_mw(struct ntb_trans= port_ctx *nt, return 0; } =20 +static void ntb_transport_set_qp_active(struct ntb_transport_qp *qp, bool = active) +{ + guard(spinlock_irqsave)(&qp->rx_sched_lock); + + qp->active =3D active; +} + +static void ntb_transport_schedule_rxc(struct ntb_transport_qp *qp) +{ + guard(spinlock_irqsave)(&qp->rx_sched_lock); + + if (qp->active) + tasklet_schedule(&qp->rxc_db_work); +} + static irqreturn_t ntb_transport_isr(int irq, void *dev) { struct ntb_transport_qp *qp =3D dev; =20 - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); =20 return IRQ_HANDLED; } @@ -895,7 +912,7 @@ static int ntb_set_mw(struct ntb_transport_ctx *nt, int= num_mw, static void ntb_qp_link_context_reset(struct ntb_transport_qp *qp) { qp->link_is_up =3D false; - qp->active =3D false; + ntb_transport_set_qp_active(qp, false); =20 qp->tx_index =3D 0; qp->rx_index =3D 0; @@ -1159,13 +1176,12 @@ static void ntb_qp_link_work(struct work_struct *wo= rk) if (val & BIT(qp->qp_num)) { dev_info(&pdev->dev, "qp %d: Link Up\n", qp->qp_num); qp->link_is_up =3D true; - qp->active =3D true; + ntb_transport_set_qp_active(qp, true); =20 if (qp->event_handler) qp->event_handler(qp->cb_data, qp->link_is_up); =20 - if (qp->active) - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); } else { ntb_transport_schedule_qp_link(qp, msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT)); @@ -1193,6 +1209,7 @@ static int ntb_transport_init_queue(struct ntb_transp= ort_ctx *nt, qp->ndev =3D nt->ndev; qp->client_ready =3D false; qp->event_handler =3D NULL; + spin_lock_init(&qp->rx_sched_lock); ntb_qp_link_context_reset(qp); =20 if (mw_num < qp_count % mw_count) @@ -1729,8 +1746,7 @@ static void ntb_transport_rxc_db(unsigned long data) =20 if (i =3D=3D qp->rx_max_entry) { /* there is more work to do */ - if (qp->active) - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); } else if (ntb_db_read(qp->ndev) & BIT_ULL(qp->qp_num)) { /* the doorbell bit is set: clear it */ ntb_db_clear(qp->ndev, BIT_ULL(qp->qp_num)); @@ -1741,8 +1757,7 @@ static void ntb_transport_rxc_db(unsigned long data) * ntb_process_rxc and clearing the doorbell bit: * there might be some more work to do. */ - if (qp->active) - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); } } =20 @@ -2209,7 +2224,11 @@ void ntb_transport_free_queue(struct ntb_transport_q= p *qp) disable_work_sync(&qp->link_cleanup); disable_delayed_work_sync(&qp->link_work); qp->link_is_up =3D false; - qp->active =3D false; + ntb_transport_set_qp_active(qp, false); + + qp_bit =3D BIT_ULL(qp->qp_num); + ntb_db_set_mask(qp->ndev, qp_bit); + tasklet_kill(&qp->rxc_db_work); =20 if (qp->tx_offload_thread) { kthread_stop(qp->tx_offload_thread); @@ -2251,11 +2270,6 @@ void ntb_transport_free_queue(struct ntb_transport_q= p *qp) dma_release_channel(chan); } =20 - qp_bit =3D BIT_ULL(qp->qp_num); - - ntb_db_set_mask(qp->ndev, qp_bit); - tasklet_kill(&qp->rxc_db_work); - qp->cb_data =3D NULL; qp->rx_handler =3D NULL; qp->tx_handler =3D NULL; @@ -2350,8 +2364,7 @@ int ntb_transport_rx_enqueue(struct ntb_transport_qp = *qp, void *cb, void *data, =20 ntb_list_add(&qp->ntb_rx_q_lock, &entry->entry, &qp->rx_pend_q); =20 - if (qp->active) - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); =20 return 0; } @@ -2548,8 +2561,7 @@ static void ntb_transport_doorbell_callback(void *dat= a, int vector) qp_num =3D __ffs(db_bits); qp =3D &nt->qp_vec[qp_num]; =20 - if (qp->active) - tasklet_schedule(&qp->rxc_db_work); + ntb_transport_schedule_rxc(qp); =20 db_bits &=3D ~BIT_ULL(qp_num); } --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 A93B33AD529 for ; Thu, 10 Sep 2026 04:08:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013339; cv=fail; b=BYHjiTSuhZanItR6qX8udmygaMIdziMJo1SUAmtN+QEEaijEL3pdcbc0Ms9b0CZAq90QmsjFx9DN/GaJLEB4AWyFBAuXM2VODd/RtCT38AGmhMVUHp9VAB8j+wHrxi+cu0EFphg0EhewinvwFeQCJMhDedIoYEa4jnY6q9XAW9s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013339; c=relaxed/simple; bh=txEsxfr/bw2WMg6SVIq0hGS7XmX5nMdT6k7USiQ7HDo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=b4Jj1cqWe7uTiZN2hCm3lW3sBz+mKV2rtkYm3ckI1VjNse+VG2HocaqEezU72jxtxopuqGZQYw2C2oujq4UupZUn7jo5RvwthpzCPwRcFrNEZETzqrbL0rJ4bkzuIplmlqCzLm+1Td2NeE4w/LKPMyhcdxv/F2SyXl+GIbTlvgU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=khwtGeiU; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="khwtGeiU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pzmK+s9xLdveIddhoHWM6h/P+Z8Sa23l2OqC4k/hDadgfSvZ7ZBxvkCUOBU43yBfGzZ3+sbPiB+sKzYPVf2ljqtAGxGe5y/13nMknS67m3bEwRgyK6YCF3t9fgvEyZhXsxYqKNtjzK5KnTlzeDiSsp3z0n0rTWTrDvdwPrlbrrDsOaBqIWsWlIRSRNNsyP56OxqCPof2WOPRSStQUPjaAFXeCxa91EnaJ2NtggMwJ9vM+5LZDmvrtwrmd74FzIAJUjGhfQeFY90DzqR+xtRpDEsUAXEhDmEX5DEi56eharhWPJSNWeSP1XmjiHjrYJ46B2dXMoP+xU1fXJmz/7bdQQ== 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=5l7KKvjlh3g7joi+qBg5zwTfUubTqO0PhWxs6bzlJ5Q=; b=fEIq8n6WNVurBaol51e70USUtcHf91TO6vut9mqGHvWjft06S+LaaiyfEKQRukiP1JF8832RoK+DadGigAjbS2z1PSMrlP3MlcahUVlJy+i9/hkGcuj0iS2ItAol9Ym+FdVuY65RLG2NnIiY5wu/GfpMOsSGQCxYuDgSElmd01NCJa+00hpmIKpPDNxIh2vMDRtqBXjhhSHvKQIcQEAFt4vyqNCqdubbQaXHeRcbfyI01JHz+14n1pAtjPGKghR2A14Qhp3ra2h/P1J1JCXASE05iOlYcg2gkNxDuBUDAQne7GkMgbFFuVmZ80UnGr2BOLrOUwdzu/V+fxsr4SIElQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5l7KKvjlh3g7joi+qBg5zwTfUubTqO0PhWxs6bzlJ5Q=; b=khwtGeiU1PWsI9iCV5QldSeMLe0H8eA6h00fTNNsaYMkBfkr21GiGiYrgtoaS01NmF13ZVmpreuvsrJ1aWLHC9E0OD0cweMMy5h3G+nlVGie9xsYjOzLM+fnvKwGMz1nDRimj2ffP0BpL0SXbYzP+42I8N0fBTDONJou3K29IDQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:49 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:49 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 09/14] NTB: ntb_transport: Drain RX tasklets during link cleanup Date: Thu, 10 Sep 2026 13:08:31 +0900 Message-ID: <20260910040836.3792333-10-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0024.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b0::8) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 169a208a-b662-4d22-bc10-08df0ef1378a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: bkHAUKXhswQSn70cv93VU5vPsi5bPMpKvgSNdun0TeAmNjrLE/DCMws54LNXRDHN/eNEjRqIarqmz99G7ioBYis9Q4ERJ4rLMZVh5qOk/MpuQu43J30jdvLMXoAn3k32PNGgfAvwpAnx10GCfOTgCiUMw6XbXQ8tRsLqFXAN/jnWgr2zHplM3lWDHLZK/1aYLqN6XPC8da5TdWq6Qf7q0gDkVYPvJLrU1+iDpNs6Lx7dtCd1ytvbRmEBUfEuU8JVxDYX5q/yQ7PWfJVLu4l2stSYgDUVl6MpxtZaE0EozPJwUNK+zCU9FgaRsyiTKztuICO85sAp1HdnwPlTfKjxoEk7IzEo/am3w9ArQne/tdRqKZzbw1Lu/mde5kqf0XqDTW4x5HuPbTmwoM3PVVVYTHPhPJKeFmbqkZHCqg9a8FsOennMnZDNdFsLlg2cFdpbfN37cPSBJPd9nUbIvbKkHaSanMzhdXNL09MgT2amWgZtCN24dqHwflairN/0d2ai7ar3tvsb7ECmZJ9KTCqgzMqYOKFk6mF4XGJfowy6ymicnxe6Nzwq6qN95zmF9VrXyzDG+CMqH9GMrKoEa7vPTmIQlKj4SdxOMlvcER6aJF0QX2e6UtNSFqQVW8YhmhS4osd6tE4OYV0isP2jPYFosg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zLXfVSECZza9i73ydmpXdik1xwLwxh8nhQNp5lE65m20nu1DCr6OkHDYLb6Q?= =?us-ascii?Q?kGIpnKnr+06QrrqS80yXpZkjbABikQXzUZ6sH3K+yWmJKX/Sl1mnr9hmAqPW?= =?us-ascii?Q?PXKIUMjD4xGQrDBWuy1jyN0uNfTQ8rNlUfxPQFokP5a6zywGiv1ZaPH5s0cL?= =?us-ascii?Q?Ycd7OVoeKXlAHk0dCwmC2tu2RYj3vdtKlyQfCxurE1DvxD7LUShSIdeWogkg?= =?us-ascii?Q?R1bZnbB6k/kT43RgStv1kp7vVA0ZJT/DBiZ3s5i8rHL6jYhdAsSp2V20IpHa?= =?us-ascii?Q?vlf3mWEDjlhRBtm1J3kK8A0Q8gJ8tQMD1s6TmYczjO3knoJA8zSax9GBxEAG?= =?us-ascii?Q?DcjCHcLxeKx8LbnYjZTtC8mA4aPP7OQZQJu5fvW2NsBqWEdut0C5yHX1CFhY?= =?us-ascii?Q?BUYozJiCvHt9dxNKsUzhle680W56zlcdgffY5RIe1VYmqKybb3mB43WeOJUS?= =?us-ascii?Q?cavkt8U05O+JbgeIiAvz39cjcx3ctxGOkGH6qpaikUMBGUFt0uKmq8XP4EUM?= =?us-ascii?Q?LmQ8OOH540Zop0bJp08K89J3BpdK6GvyMIYYnyMOp+kVl4NjFQjTWeQ6dGjc?= =?us-ascii?Q?YxwSiw52h1aspPOTjxfvtalBjDVQ4uQ1EO4MbkY99FLmZ4mnjrJZIGlwUEji?= =?us-ascii?Q?Pfi6a6VZnfrBj70MfiHqERRGRNdGbzTMQofX6EPIBPoI38lOatrJtxHkqM7K?= =?us-ascii?Q?ZSOEyQ7N/hKNk+vHuU36hR+DR2fqi9lVxiF1yXZrzl9fzVgLYgWtG5Y81Cbu?= =?us-ascii?Q?r3Z9fKvbPC/fkgH7zPmgghVbIWhmh7ES102k0aVuCLIZGkl59WdN+27ZT0IG?= =?us-ascii?Q?Ajrpx+SBTtwGEgNLNLNimIHYjxxOtb4t6zBG+GSUFFmVWL7RSSgfIJLMhwqm?= =?us-ascii?Q?drh4tC9QrKRJoLZPLhvOnRUqsE+Kuv+1G/kUeD2eFAS66AnUnUSoosLHAQ6H?= =?us-ascii?Q?XIiJ5jOyhxC11RTfjnEy5UREZRGQZK9/+aMBUMDujPx3uvrZMZj1GQdVDENE?= =?us-ascii?Q?YjoFBwMJeJHG6EnGzuhE+rEcofdiS5Kheus/00RbqbsdUCHjFkSouO0ifte+?= =?us-ascii?Q?wzW0lzNIRHFU+9I6QWOAm8WotzEhakIwbjanqnnBZZnP64kzbeklYeSKJ9Qm?= =?us-ascii?Q?wkVYhqsgotTIqcVa9hgetKqhIE4i956tRA8/bpetjkZeIWX5zk6BLFCTkqHv?= =?us-ascii?Q?Te796XtkuCUOnZ4pr6RXeJp1G/CV/6vv206MUqLEY3lwaN/4gDKdKpuMBegn?= =?us-ascii?Q?ANGlMHG3DNYZzXTzmDhF4/nhslUgbs2W+rX8fJuyWy1gL/48clPYSXRoHSUG?= =?us-ascii?Q?20iNBET/l5vTj7WQM7m+9NRFqdSYI7xoU40HsVciqeHZb74O8GTKVgnGmZhC?= =?us-ascii?Q?eWer/IZTrBdQwRNdpP7AnR9yVAgszolHVcvA47BhTnbysYTmqvnyJLrqFTBU?= =?us-ascii?Q?0qsOq8lVgb6FvZT2KcMvDyZ51qV0nhgcS0weZ004/RrT/GmmW2tf+60aj339?= =?us-ascii?Q?Strgpsa4u1rG8vOAD/+8kXkJtld5/e/QJLM9Jbz6bilNt0ve7HgD016MIYyg?= =?us-ascii?Q?hSCBjH34ZzD0qhXxM5tsRxzahL1O47JP/PadiV0bzsA+idjXnzUb1/zB3YM8?= =?us-ascii?Q?rNojDOcs1aSEbeSx80NcdotvaLFXNpsEONHDq2G+sxAChfMI7NLx/qxiH8rJ?= =?us-ascii?Q?8LcZ63ZsayvyntPmYpNMVsUaOa+2x+pmKS/yY/ar9NmE3adq88/8Nma1VHkw?= =?us-ascii?Q?p+/OxnZfyKUYA0l2Ed4jOLwUCYCJM5lG7ninOFHnhzCC9FOQCvFj?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 169a208a-b662-4d22-bc10-08df0ef1378a X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:49.2499 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7iHOWzlO6QApZq0X3oQVLtLVzsnFRnuY1mZLVTTIpPyJr72r6kPU/UjT2WKWhCPDlBUWf7LWDWu0M8UyrH7cXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_qp_link_cleanup() cancels QP link work but does not wait for the RX tasklet. The tasklet can still be processing the ring while cleanup resets the QP, and transport link cleanup can free the MW before the tasklet finishes. Clear active under rx_sched_lock and drain the tasklet before resetting the QP. Temporarily disable QP link work so a concurrent client link-up request cannot reactivate RX during cleanup, then re-enable it for the existing link setup paths. This does not drain RX DMA transfers or their completion callbacks. Fixes: 9143595a7e05 ("NTB: ntb_transport: Free MWs in ntb_transport_link_cl= eanup()") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 45d4365becac..36797ea3ff45 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -956,11 +956,16 @@ static void ntb_qp_link_cleanup(struct ntb_transport_= qp *qp) =20 dev_info(&pdev->dev, "qp %d: Link Cleanup\n", qp->qp_num); =20 - cancel_delayed_work_sync(&qp->link_work); + disable_delayed_work_sync(&qp->link_work); + ntb_transport_set_qp_active(qp, false); + tasklet_kill(&qp->rxc_db_work); + ntb_qp_link_down_reset(qp); =20 if (qp->event_handler) qp->event_handler(qp->cb_data, qp->link_is_up); + + enable_delayed_work(&qp->link_work); } =20 static void ntb_qp_link_cleanup_work(struct work_struct *work) --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020090.outbound.protection.outlook.com [52.101.229.90]) (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 1C0A23AFCE2 for ; Thu, 10 Sep 2026 04:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013345; cv=fail; b=LVAuCrku5j4AUrDP15G7Q1ITu8lquxP9G+8UbHOibGANhRhdVOWGieFp69YXjNyH8kyBfqIAbOz3zYp5BnjEjWn2HMQMHbMi4cdQ0+vF24TF5TzbNpyvI2FqWapUumE5sP5XNdVqFfDKvviLPoRwtPDsWeaus1Pr3r+FAHJAfPw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013345; c=relaxed/simple; bh=MUzDHtqekLlOGoqVgkzcewaQS7TVo6UWRqGxcaU1nnE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PCxYDQPS1eMyy3+I+i1DZyOtQHDN4v8PXUUVByvM4Cv6lsP+ymAOGXTMT+xMF5crWUTHU2CkIfYQ0cMEa/GOTt2JWVh0IZpKbxQf63NLNYE8HqrCdaaN8Q3l9JzwHR1eiMYWgWHdHpJVDOi1Gf7Cm9VmDOSE5pZwSxrDiBK2NCc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=X64ZX1W9; arc=fail smtp.client-ip=52.101.229.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="X64ZX1W9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ss3WhHMeVXR5ohz4Oj91hLPp8lLVRrCuPyK5dTKgDZfAXqQW96hwyJPo/LQe2+G9pbnofyIu+MTulZUn4TEDZ5Vlwzk0OEBsATnK72YRXeguG20tB8bRN0nfuvIGTrMyBnLzrVJtZ6umhOidFIBw+tWVNj/n1oftEKIza47wfbEZ7LtDSs09qt7ZAdW5K1UxI1aGEnopEy5YpVhZIEz+hj0H3tdRvhqjE9k7gp3m0+0WOGHC4u9VpKW1SKcNXGRhRoB9LYppcYtLhXgX1Fbim0yF3NPj39DFuIL17+EaHOY6FYSqlGI3omwZ4EyBTBs7ZYZYv9lJWpGUu7GFbxhpmQ== 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=Bxt7HHRZbev5K9lihYJCgPk3oBnjQwM5KgQkpw+kJJ4=; b=mYeV3+AhFpKuIEy/ot0ktlU6QU7W6InUOAgZNYXKjpC1Ta2o+vl9TnbrkSkGjzi53DtCvXm3aBUoy51cYvxp85ck2+B7AaRaktTVoeOLEGqFA0g5bJ8l8sWQqm5JSQtEUBc8z1y37pyXa4vpP0weVn1DuaV1PtysQHAniUsmOs1JO59uYsdQam9c4PFVEIzgYCIHzkqfRW3aP5oBsuDTFjt3P/ka8aZmeWUjJ4d8+YdrAHVnw2uyy3nlouFZh1gAfmh1LP102u7NxiZrEt3oDCjPnWVWe49f/wkxHBp7i0m3f2hZsDsjq/8KoyKIJT1nTnnArh+/7ODI7dxRks7hLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Bxt7HHRZbev5K9lihYJCgPk3oBnjQwM5KgQkpw+kJJ4=; b=X64ZX1W9RdJK81ou7bWVj2K7FXRKQPNwwpBb+MtRJF/PBREYHWNQQt399klEu1hL+tDV90VeD2ypbL29A79HbTyJSzZAONqkPN7LnMY5EdC4IwITS3MpiIvV2UZb5sYjJt21YaagNQXwT5bELZsppEsiMSxvdxOH5/Rlks8iY2I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:50 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:50 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 10/14] NTB: ntb_transport: Wait for RX completions before resetting a QP Date: Thu, 10 Sep 2026 13:08:32 +0900 Message-ID: <20260910040836.3792333-11-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0172.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::10) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: c0ba899c-06b2-4739-7c21-08df0ef1381d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: 09OYzZmIpyCHTMpdQw72b8UREE1hk7dZTHTqei/7/AQcIs3HzcjrluyWsP8vxw5YrwqM2xORebfLQMUdPiEYYJ4iPmZYLCSQFPVZB0JXQ+J6RYoRoQ88t5oOZQ0ObD6z8tHM+1tu/rDATgy3Y7vXt1OD1vETS0a+cAoW9cBS72WdNE1r0jre+v64Us72/6lvqx8W1vgHYWxxT1mWyK/1ObZ8zSckvb2vCr56kDwXaoZEtCdLd6/CujTYuaI74EzvW5qGXd6fKabP6JDy+oG/03nxFU+s262G0oNx4I3qoVgV1HFe2vg2bJhRc/mlBkYbARJBxIy9jgRffm+Z1dqkm2KViDE4pSroLZqjg9h02SkyixRP0WdR8iHCi/zR6Z+DF0xG904Z6XJ0BTUxyWz2/m8yCjDosjw/qmX5lzgUNVAetckNwC7ESG1BB785BZzNtlHSFRdvrzo5+SXlLfQ7noNOkTtfd+Xh5yvj7gvssP1bZ1L4tqOy06X+ZjSh7L/9jRhXrLVtorsy21tycSH1lVYn/7Bh7k5ezcGpJOAKjBty3tXSHIOEm4MEp/ZJ2vtW2by+ja4jG4oNQwgqssQ6sFXtUbj9Iam8LK4EtDzHl6s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zXgLyuNtBZPKSH2KTpxQTjiSAq7da3duBz1hyY0S9a8+ij3j/6r0JOLvywve?= =?us-ascii?Q?623ze6ItX68zWrYHrhw2AhNhF87N82MyKkCi7wCFcy3o8GNKN2ADlkQ8+OKX?= =?us-ascii?Q?4rVSVoXcHNWqyKuGIs/ilq4/wtwIWN3FMa6ujsKVUdTVtyWSrgu+jiI4F2WY?= =?us-ascii?Q?eE6MDd/duiyzOaywTKX4ZrxzxTKufZjwGXxz04ttNFL4u/xZb67d1g7c1DVY?= =?us-ascii?Q?Wq3nPY2Myf5uFAofPb7vLuPfMNMv+WmKVG5+a6ktJn9i2Bn2aJK9ZG+wJo1+?= =?us-ascii?Q?bhMUOLmV0v2huqt9GAVQUia9R+4F48LYBdoP779XYphlYWIgXS27EuDhvfDu?= =?us-ascii?Q?iFyJUjwWrsdKfh0inlxy8aKlyLqZ93bDZK/+iw9L+au/bWNKPRM11P9cdEb+?= =?us-ascii?Q?rsckozO3z7HWXGItml9irawChsHT1jlhkvawBiitPqpcuDlrU4czGkypvhl2?= =?us-ascii?Q?tVFh/9cZ2/l9o2QsaydfzF6Q7wpDBhYvZomDjoMj85cN5qfxhFJi7jiGZHs6?= =?us-ascii?Q?5M9DjGWIgclPgFgHYgI+4ZsJRDGhGoZvLkzb1Qu9lASBWgdJ4xQ++jDP0z71?= =?us-ascii?Q?i6KimAbzvWEqYBVaBXyzkaaPQN6cn+8R3PXlK7AWyfBePXpsT8q4xZ6y/kFL?= =?us-ascii?Q?iL2Ds1DtDnrJY9OGiomYLEYGWD5ek66Mjjw3qGjtqhvk67VUIEZyeO9osrZU?= =?us-ascii?Q?yk/6Dm0DPEHIrbRIplkUtP0GBHkrFF8b6MkMm1D8vgmOT28cKXYqV5J8OzB1?= =?us-ascii?Q?nvKaLct7P+vVSAW++VG6k+EcTrmtOnJPRo3XU5l7XOv/VlwyKiZJO7X7VFVj?= =?us-ascii?Q?HNmVWtZHGCdyHsTscJ5Yp+yTzHYTplr2va1Rhe9gm9h9qPTM13b2GVVD+2zP?= =?us-ascii?Q?ewUfrS7Uf7t9IJdzYJeZ48Qpfa9DRgyOgfmCv5apMxGTwlcbG8uI0giWReZ9?= =?us-ascii?Q?2wifl4u8H/aqNqQykc3ptF2rkPn1KbROfvgNvx8eI2BTa5UDXIRbypd/v+CS?= =?us-ascii?Q?1HD4Wk2OQucnnWK47TXgplIxRdZfT5TJ/wdMw1oDx+V3f1I18sZQBK1/81U2?= =?us-ascii?Q?XLPhIftt1YH8OjN1CkyX8R4Ej+cKu7ug7Hgf1a6jb2gW/QgIUhyp6LHTKDrS?= =?us-ascii?Q?D7O4QmUVZ5R4XAYa12Mvc39ztdrotMto+kCp+C+tpw4GhKzNmv+Pf3+qMC3T?= =?us-ascii?Q?UY/9BKYccl7uNZRauB8Hd3J7KpDlupqgSI/numIdrkcSN7yqTc7wXy0+EgMo?= =?us-ascii?Q?PgNAsseGMIt0idUfHkxJTr2eEmRtDCay0/jHSGTXXHs1ZJy89ZvvKg/fVyqN?= =?us-ascii?Q?CIXpWCgUiqPbmgE3dSWzdq7MTh1GO/ghWe1TfEH8OlrKX4G2Jdt69XICIzIg?= =?us-ascii?Q?JSaN4rQ2xozvOUq/0dFbvF1cuJA91ozWiZKAn79jLOz8RROCkHv2xBwY2YlK?= =?us-ascii?Q?EsacRErbW3a2Ru5I/k22edAjYH+KksJB6go50ndc+F7qBXkR4LMLUa8dRRod?= =?us-ascii?Q?lz5lljrQaGiBj2y/3fPQ8ypCkZEEUmo4/bvpDgeD/O4+TXAQqwPX7hNdOhje?= =?us-ascii?Q?TBXgEk1oaSs023fRde3Q0svCmt9jkrx63PivxRCjG59z5qIUc3fv/YigTjLR?= =?us-ascii?Q?fIZGICF/pYjzLfFDC3xsZEJztjrgtTxW4QSCkh5cPYQEm0rUVKBxN7WPv74Y?= =?us-ascii?Q?7ojURc879v6i0AQ48W0UuNQMERB+IfM/Wmnv5t2/Zc0/Wh2mC9B5szOEgXEU?= =?us-ascii?Q?ZGKiGaTrbRMf2Zhnm+zyNq2HvbIXRZ3rhvbgyvYW4a50/JL90qUf?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c0ba899c-06b2-4739-7c21-08df0ef1381d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:50.2125 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: p9lJ+Rbp2f5KUwep7Gocgppm7ys3evisBMwA9jrVADGOGvFswa+LjHplHWaPVc4Kx0x3XBuxaPDdRchiTkiBLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" Transport link cleanup can free an MW still used by RX DMA or its completion path. QP-only cleanup retains the MW, but can restart RX on ring slots whose old completion callbacks have not yet cleared the headers. Wait for rx_post_q to empty before resetting the QP. ntb_complete_rxc() finishes its MW accesses before removing each entry under ntb_rx_q_lock, so cleanup can free the MW without racing with these RX accesses. Using dmaengine_terminate_sync() instead would not work with drivers such as IOAT that lack the required ops. Cookie-based waits would not work with DMA_COMPLETION_NO_ORDER either. DMA teardown in ntb_transport_free_queue() is unchanged. Fixes: 9143595a7e05 ("NTB: ntb_transport: Free MWs in ntb_transport_link_cl= eanup()") Cc: stable@vger.kernel.org Reported-by: Sashiko Link: https://lore.kernel.org/r/20260907144257.767281F00A3A@smtp.kernel.org/ Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - New patch (Sashiko). drivers/ntb/ntb_transport.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 36797ea3ff45..7ccba2c04f54 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -949,6 +949,13 @@ static void ntb_transport_schedule_qp_link(struct ntb_= transport_qp *qp, schedule_delayed_work(&qp->link_work, delay); } =20 +static bool ntb_transport_rx_idle(struct ntb_transport_qp *qp) +{ + guard(spinlock_irqsave)(&qp->ntb_rx_q_lock); + + return list_empty(&qp->rx_post_q); +} + static void ntb_qp_link_cleanup(struct ntb_transport_qp *qp) { struct ntb_transport_ctx *nt =3D qp->transport; @@ -959,6 +966,17 @@ static void ntb_qp_link_cleanup(struct ntb_transport_q= p *qp) disable_delayed_work_sync(&qp->link_work); ntb_transport_set_qp_active(qp, false); tasklet_kill(&qp->rxc_db_work); + /* + * Some DMA engines lack terminate/synchronize ops (e.g. IOAT), and + * DMA_COMPLETION_NO_ORDER rules out cookie-based waits. + * + * Waiting for rx_post_q to empty suffices: ntb_complete_rxc() finishes + * its MW accesses before removing each entry under ntb_rx_q_lock. + * qp->active is false and rxc_db_work is stopped, so no new RX DMA + * can be submitted. + */ + while (!ntb_transport_rx_idle(qp)) + fsleep(1000); =20 ntb_qp_link_down_reset(qp); =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 174AC3A5E89 for ; Thu, 10 Sep 2026 04:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013343; cv=fail; b=tS8arPJI9oaLUCG3CLvmZZ94bwG8vZ6GyGMjjbrIJI9k51gSgIpJbcf9dLDUUcCjGSOqzDkWUNdmFPElBp9KSoITg61BCpnfCJGOwuseHCQ2WAhbio+G2Yctf08RpwCeu/c4FPpgIUgzjCWACv6r7sQL4IQa8LvdgJLavPjk/k8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013343; c=relaxed/simple; bh=BQT4/IeSg28atVGD5gn7ZYLF/vshVxHSBoN9BWmk9ZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tdojoE5/Gplg5BE2RAVSmu4gpo2T0yHwUrBCqc0ceknELc4ELWPo6FLaso7RxlT4IQGefcIZF/HwopEQ1u8UrtZD9HCpHpDQ5GFBLJr9c9bRu5Z+LTPamNBh/Z+jheA0Ku1NVgta6Rs+k05oP/9BQjI01YzVUvciU5Q3q6x60R4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=lazeGhSy; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="lazeGhSy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W6hpewVlzEmuC4XwmGEVrP45KX0HOGSM+LGXsiNuX7bVl4L+ihvxTkfhJxXTJhPEWuvhCWtPd/9k3jcms5054iRljSqelBU6IfCPoJ9ifT3lIN+TGLDL7InHOuRaDS3kdHmYTZISfsvvYUXQkkcPVjYvjf9YFXDfNFziSp3g9SeDRDBUnsrnB5zbxLFiBQlekIAkzZM+en43sD0xFiEMWzt92GiJUy9bgG7n73vPyhvN+hTSv852K3X3/T5C1S8TFz20GMHPij3fVY3/R9Nl5wtuUcS7IUwC0fYBonAKU25PXNr7Y7ebWNmQ3iXjEuFdbx1uSxPy2EeTANZEb/3yDw== 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=udYWRA5Hy6rUy5vjeDMRq33/15VR+Q6fkmg4jbsTvOk=; b=tV2P+00vX9iWP0JqfmLaOSaeoK49N/XGd/sLE2R8bzHUHmuksH5Z2OHD75qUnzCLHiEds0KE6+zIKRpTSrXjgUUcvV6LetLNwbB6gurQRGrdoV/Wdfe4omihJByEJGZRH5NhNaNIoVB8gChqSM+qFl9j4d/F7gFnsNpGIaQ132ArriWKl8TwfEHVOMSK1tQhY93tjyzvkTDfPLwbrgszP98tCiBd5Yp+0QM4c0avYUdBkABss675lO7YPuoU973XbnQ1hX+ZY2oaURtObbIYUEABxaX59nCC7xTGvq++kVRcWsbdmc/FxaCF8xcYcpS8N61u6eu5VpT/EnZhliqgWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=udYWRA5Hy6rUy5vjeDMRq33/15VR+Q6fkmg4jbsTvOk=; b=lazeGhSyNFn/gtuwT9pCxIxK1kOkMXGkrQeRfavNI9z84HGJGlCPiYpwcamECEDTRFuGdhbPckCF7xOyZed8UVeJu3fXnjuvUQNqSQxdLYB1DJ9F/C6tUeojCPCeKEKarfeGgTFCxZOXCiCBseUroV0zj37hHwVzzp6c6qGYRgM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:51 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:51 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 11/14] NTB: ntb_transport: Prepare remote RX info accesses for MW teardown Date: Thu, 10 Sep 2026 13:08:33 +0900 Message-ID: <20260910040836.3792333-12-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0178.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c6::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 983169bc-9f7c-4a94-9b08-08df0ef138a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: lhTPriVTyQJRLQ7UB7k1/AZ/x7xqiHaXFJl/1XJkxRDY6g86q32F1Nd1geU3yjuI1PKSafagCuf9AoGFlIKaE/icMfhnJQRHXSCFaO427f/balwQW6vlJzA3tS89kyucIs6Bfugf8wNxtra3NlOUK+9+kFhQhU1fZ7te5ywN81v2Pv6VHeOFK2Tqc4Pwlc3F01QskT1le8O549nyWJVm7puPeS5S/sWQVn4Fbt1vNKdQPgN+xO5ZmJQIfwZwacwglhcoM/dtdRhOC7ENe5jczxahg56L9hwHfpnwCgcHux+E4JVzeAbmFz3Iyjizto+6KKOsTmimnEI2fEDit6lKtma2DIAfBTVgb2+0SoI0EH9ogGzM09y82Ac+qJ+dvChY0k2Vbg9uSb25m5mobRUY/UuYaiDw/WxcosrXxKaaM/xpfrq5AETwgSU3EtzVBi1kAxQ4Fs/X8mI68KY50vnabZDOlcTqKaHiSi6ToRRem6HEv3xmFovt5WFbOZgi1c3dvZRm5pgwqlv+CVspYt+Fv9kcdN7t6pdaQ707eYniGN3ryWVg4oyXKtgT3EnbJtoJuBZLeIjDyDXxNoIinrClNaRUQR4X7AVkIIX6r/ELDARiFqYb3EYXNLLvAIhD/eeAkLgReM/sWyaHnGLX+Ga9K9ris2zeR9N4i3z9fS5ZqRA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1ozaEcbTiHODgXJ0owOVN3eLNaImKIaGPDjZid6Lmy4evePxClyv7yT2yaIp?= =?us-ascii?Q?zrzGJUNQN6+KkVHISW8824dNnKVsFXsr1AE7jBwj6AIGZYK7S8pqhpxONJlQ?= =?us-ascii?Q?WZ5CuN6NDdTSx5SBY81w4+mGSkTHt7GINg95It3PeFMu961PrfQW2LZdpQty?= =?us-ascii?Q?CAcB/fuQ4p1ofz2YFu8xVk0lk0I9nEX3Kr+f/l7MvyejSv4nILpUOR3qAO3O?= =?us-ascii?Q?sLJioW3yNzUgQLfVIcpVbZA+F6qf3bYcDqOG0bjDK2w5hpTgT8Nj+aCjmJ2y?= =?us-ascii?Q?LTbNVjYxzbfHeUTF98vnfOUUo5aVgJ2l4w7NMexy5h0joT5qJvQcWxSO4noj?= =?us-ascii?Q?xlrfjDnqAwZRavA4lruvhC/WaFH3QnsgskOoZcgzgdkL3uS+rd4LM31slAPJ?= =?us-ascii?Q?diBOscn/zKcad7u4tUtx2IQ9MbjL171Khlb2rJmCmlNCZztQpdl6p2fhrHMm?= =?us-ascii?Q?BdK7xodMtOP6Cu14w45P/cMDzf8o6AyLnJkNnB9xEc/3qmndS2oRlwZ+Rn3f?= =?us-ascii?Q?CV9s0HFziacUZAUsscOdDXuuOrYnDiPqdKNa8XENdrCkRz6QBE1yl2fxhh9X?= =?us-ascii?Q?aAgTm6XQasAMuD0LYwPJr31+2nnXlzCcG+Mfl6155q71NOPUOM9pq+asUr05?= =?us-ascii?Q?fKbuuLW6HFa6iQYSWhlhb4X4G2N4kI9sMNQpS7mEmqVO071jAJee0kFPYvZ4?= =?us-ascii?Q?miC6XxBpEwnuplluA5sHZDtKzqyLbhc8Vmap3T/JE+3KHyoXzh/ZihGho8cv?= =?us-ascii?Q?kSzF4SVCrpynbvEtUfoBcnzkZxcZ30Zs7V0gtBhN+gj5eTnhRo6mpnuDCieH?= =?us-ascii?Q?ACZHsAX05R4UOee46NVrCJKlXPn9K+qNERUmfgraK42Sx5GMOchFZ2f/vkaX?= =?us-ascii?Q?FjCAJfnFNUc0YJZXO7qq75nSeY00UjXauVWqrMLaZ6lsCgnWTAvWmbCQfryF?= =?us-ascii?Q?U98Y0ayau+Q9zT1iZyA4j7+ZsCR1HLvvvrBN2vYua7gfGdePxUxgJN/wDngd?= =?us-ascii?Q?u9BEqZN5pFi/autCl6ZdkMHP36I5nl6Z7d30kj4fme1SxDmMFmvl1OI1nUs4?= =?us-ascii?Q?wsEU0gfDuQa/yObn/LKzW1+YWrlcP1AeiDOuWpkhRKebDD+tv0ydrL9gu+3T?= =?us-ascii?Q?b8e86btUKryaK4cZgZfeoBYGxrpX9COg7UaW3cKW6rHXjS8G436XHBM6Fn4W?= =?us-ascii?Q?vF0aWc1mKLpamp/plg5SSbeQ0u+Ji0bs0x94GSe9A0moqTHIVau8Tvfomx1g?= =?us-ascii?Q?tOjwH3FV/Vyli20eQVWgzMIZXjug6otaA/hcKLnfc9E5mJecI+5R+bcepNeG?= =?us-ascii?Q?fP/wB8CR9zf9zbvNWaxczryp4mDPunjjrbfH5D/00EDn9pVHdEhDyNPseFrt?= =?us-ascii?Q?UT1vOjpxQmQsRlTFVHmGv6Y0olTS+ZHc4/Il/qXuOrnrOrsMuX0MBZq36ZBV?= =?us-ascii?Q?cRJD6Ttslp3P7jyTC5svYXRf/l08q9eGkfhKg63kbt6busRrJrTkFXBm7kJu?= =?us-ascii?Q?juTha3NQe17eGRuWmmi6r4HGjl5T4IzFz/bBcNF5IWCYjctVEvmw3E+ZOL2O?= =?us-ascii?Q?vkQzxTcEBdpQniAp92uogbSBpXDVJApk/ZJAUU10H/E7+TyDf90gph/PgWWi?= =?us-ascii?Q?3Jhmlpu/HmQ64+hvLQRRq6ld7mYbtaborJ+UhexJtDrOfSrcUDFqRcY6lidj?= =?us-ascii?Q?2Msk+3p2Oce2qk3Y7L5/Cltr0coB592XuQypxcqXVTYw6Lj4mDHBgtZaseXf?= =?us-ascii?Q?nX2sFH+xLnjP5hlOZiF2PpdkspUB+gbNkBz9i0mSKS997hSvb8wE?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 983169bc-9f7c-4a94-9b08-08df0ef138a1 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:51.0941 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iu8VtnuQ6eIRwL021tVAGfRBQz6TRT8adNAngKL7KYa2paXlW249M6Q0pFsKJzm0RmWqRmoj4K8bIuFMmChUkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" The next patch clears remote_rx_info when freeing its MW. ntb_transport_tx_free_entry() and debugfs stats reads can run during link cleanup, so make them handle a NULL pointer. The pointer is accessed locklessly. Use READ_ONCE() and WRITE_ONCE() to prevent compiler-induced tearing, and retain the read value so the NULL check and dereference use the same pointer. Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 7ccba2c04f54..b949f36a4f2d 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -489,6 +489,7 @@ EXPORT_SYMBOL_GPL(ntb_transport_unregister_client); static int ntb_qp_debugfs_stats_show(struct seq_file *s, void *v) { struct ntb_transport_qp *qp =3D s->private; + struct ntb_rx_info *remote_rx_info; =20 if (!qp || !qp->link_is_up) return 0; @@ -516,7 +517,9 @@ static int ntb_qp_debugfs_stats_show(struct seq_file *s= , void *v) seq_printf(s, "tx_err_no_buf - %llu\n", qp->tx_err_no_buf); seq_printf(s, "tx_mw - \t0x%p\n", qp->tx_mw); seq_printf(s, "tx_index (H) - \t%u\n", qp->tx_index); - seq_printf(s, "RRI (T) - \t%u\n", qp->remote_rx_info->entry); + remote_rx_info =3D READ_ONCE(qp->remote_rx_info); + if (remote_rx_info) + seq_printf(s, "RRI (T) - \t%u\n", remote_rx_info->entry); seq_printf(s, "tx_max_entry - \t%u\n", qp->tx_max_entry); seq_printf(s, "free tx - \t%u\n", ntb_transport_tx_free_entry(qp)); seq_putc(s, '\n'); @@ -611,7 +614,7 @@ static int ntb_transport_setup_qp_mw(struct ntb_transpo= rt_ctx *nt, qp->rx_buff =3D mw->virt_addr + rx_size * (qp_num / mw_count); rx_size -=3D sizeof(struct ntb_rx_info); =20 - qp->remote_rx_info =3D qp->rx_buff + rx_size; + WRITE_ONCE(qp->remote_rx_info, qp->rx_buff + rx_size); =20 /* Due to housekeeping, there must be atleast 2 buffs */ qp->rx_max_frame =3D min(transport_mtu, rx_size / 2); @@ -934,9 +937,12 @@ static void ntb_qp_link_context_reset(struct ntb_trans= port_qp *qp) =20 static void ntb_qp_link_down_reset(struct ntb_transport_qp *qp) { + struct ntb_rx_info *remote_rx_info; + ntb_qp_link_context_reset(qp); - if (qp->remote_rx_info) - qp->remote_rx_info->entry =3D qp->rx_max_entry - 1; + remote_rx_info =3D READ_ONCE(qp->remote_rx_info); + if (remote_rx_info) + remote_rx_info->entry =3D qp->rx_max_entry - 1; } =20 static void ntb_transport_schedule_qp_link(struct ntb_transport_qp *qp, @@ -2558,8 +2564,14 @@ EXPORT_SYMBOL_GPL(ntb_transport_max_size); =20 unsigned int ntb_transport_tx_free_entry(struct ntb_transport_qp *qp) { + struct ntb_rx_info *remote_rx_info =3D READ_ONCE(qp->remote_rx_info); unsigned int head =3D qp->tx_index; - unsigned int tail =3D qp->remote_rx_info->entry; + unsigned int tail; + + if (!remote_rx_info) + return 0; + + tail =3D remote_rx_info->entry; =20 return tail >=3D head ? tail - head : qp->tx_max_entry + tail - head; } --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021134.outbound.protection.outlook.com [52.101.125.134]) (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 35D2F3A5989 for ; Thu, 10 Sep 2026 04:09:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013346; cv=fail; b=T4Q70ZDycV1ijHTf8/tT/PiKD1BEkuSwtDBg4EWl5KtYdMdkRKT1XGsdErJs7Dd2BOITuD4WD9OTAaXcsOnO5IggyMIXO7fSlDokxuqNlj7GWOHl36y5tfuon4peiT9IxS7/BVepAjGKtE6mVaNmtDKnKG3Gl7RkAmLtI2hGPEo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013346; c=relaxed/simple; bh=v/4Qvm0vEp+ycw8WXx1HxXq1/elGVraoldpT6PKIBRg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RmPcQDnSsuDUSPfcWHlexLl6tFvLrmcSChX62h0/T4WzJ43Q3WsaaTcmIlQXEY2nHHXOv9E9Q/juCnCHQ7Cr3aMY1dmQyUZBbXO8yJ8hlhhcgPQ7xxHjwAd/oqCdipCGx3ZFE7qEKF/fw4L4zxH5GLaBHMvaroU/IgPoby2R2og= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=JljDt+Qd; arc=fail smtp.client-ip=52.101.125.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="JljDt+Qd" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=isFNGKrvhoM3YU5Lk/MsaTjDYzzSJSJNz9CFfeIsoBi1u5RA7hsTw+IsfiE8VQuZP6Tz9i7bSJ8pk+7Ki/atVAh+h+xp0Q9DW5YAVHowj/3XW441QtMB+6JjJaJTP74JqibGWhWOIyRimnyPYuiIEmUkAzV3UDfgFfCcSt6M0SFs/zO5ynEFjQyuO5FlWtUnMa2cFzpL0OVUUzqxSSJFJeRY/sfejpAoYfxeuhEGvAJyYA3AY7Tg6+yWjuxHJ59GSOvq/MaPi+NlKtWehrXUOaDP0dUD0RZYYAPBGnc7tu5AFUw9V5RB2ZB2qJ0t0aZ+iZopDP4er9i28FRqjigR4A== 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=wUbW1OwyVicALEpXhVI28aUip4G/6mr0fnkbYpV0tDc=; b=daxIEb/c1pjLvK4oyDOkk6tEjJ9myn+tdvxDnfGFTCFObTnQp6rvqmUjPsjZyMqA+xHBo0sGd1X2znEGYdl0OTEEHz81whdJ/lL5PRBf7/rXC43rFvxYjkSOsg1tiA/wUsLJ/DV23/Nl7ZaMDGo56UPg8LgbNDs6ARZE7YTgMZXWE6VEoY4KajrunYY6GyQlpERcR1KEjMpcxOmVTheFwvfnhWqX3JwLRrbmMTpE+vcqRWq7gIleUbv9yIW8P2GI0H3Dq2UQGRgxEjbxovh9XhT1RZJFccuxPttMCXTIzlpNv7fcw1vburZJmBEoIQobjj+g/3Zb1LQ/PtHM72iM9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wUbW1OwyVicALEpXhVI28aUip4G/6mr0fnkbYpV0tDc=; b=JljDt+Qda6vG47QUwCbNqvvLO5w2ylRq3alTDsF3b4/0XCYfhhmrf1rlOpnGgXctb03/J/GU2xtmCLH9i0AcoIDMcVZyAnU1CIoKqcE644EZrA5Bxl5TcVhvpVpXMSMqn4vdYdMMqGh3sWFZKJgxaNZU7yeP21HKv3/zVXikGpM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by TYWP286MB2220.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 10 Sep 2026 04:08:52 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:52 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 12/14] NTB: ntb_transport: Clear QP pointers when freeing an MW Date: Thu, 10 Sep 2026 13:08:34 +0900 Message-ID: <20260910040836.3792333-13-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0011.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:26f::11) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|TYWP286MB2220:EE_ X-MS-Office365-Filtering-Correlation-Id: 468b60ba-4c69-43b0-5cbc-08df0ef1392d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|10070799003|6133799003|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: 9W9JWiAl/8LhtGX2ioPXIxXQAz44nWUWZAixTAhn2y3BBJfPNbw4lhdNTZFF1XnW7EEFakKUui7ZXUSST3GuNEwnDtnthKXaGpGnMJfhhOY+AImo3mR9nw9vJLgbdxL6j+Z4ZhKEzWW3yrMTeZcPw+PeeWYnVU1ymBhNNkwdYhzC8SUJMPp6dEeOpM/hXYnLK2/6h6u+HpvrFCHuze5WgMbPUFIKxfhQJH7j+rDdxxVftl+JgFNEe92nZcSHU7DCi1tXBYHIirj0tZu59fHJm8U24/C5STU8mOS4BhiljXD//IKmujW0qRDxq8gNFmF6YUIcWp1cwBeCIx0PWtkXIncgorAg+3x6cNvAomuVsl5Eqjrr0VrKS98aB9PQsHxJmkOS8/iTgodKOScuxkhtGyytkGDBigFEC3u86ZbsgJQmKjiwmSI4swXCExRJqPUMRfLdK5shesqw7YWuwwlzp3nCdp/zoCZs2WMnLOtkIJQlSDsic/7nArVnFix9uQS1Hd5rFaabzZaymPhy5gg04MTlZxy7SiQXrECywV+mz1DjTnL9ckTexrkgvNbQNCIMpxFC7yTriauMohEzMSSxJa8SLL3c6drf4l/wX+kesMF4DbafNOL2uSKemQDN3xeOncnSfDhhldnB8abDC2BojVZMzzU0I2f9dPSj8C9o1L8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(10070799003)(6133799003)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mWj55qmcUkyzEAKKowdi1+rUM7LLPiwL7EFO3hphiV8BAelH6PBJvWJO06y7?= =?us-ascii?Q?KMbRror6stBXeJy4FNrtjX5NSkzkgpEiqEQs+M648gOxixshKZd11hTnrDR6?= =?us-ascii?Q?7dbFjfEZCp2BHoRr/omhlgb/57dteugr3lNSL8sbRAFpcmHbcgoIIp57UWkK?= =?us-ascii?Q?BNzrA472J9npzL1krSuOmzOtTb+5lyTC3af3RvTjp85bbIUYdOZO61nY8eo/?= =?us-ascii?Q?a3t23eCDxlTTCxN6+073VEGFT67oVUPrtXRfMK1VQ44EUhRlsUctxu4EuB++?= =?us-ascii?Q?4qwzjY9Sx+G5TRpx9uNk/LrYvvDap9/N/RzrtgdKdZ0J/B6+RhviKzf5T0jD?= =?us-ascii?Q?ExV8ogUnITmUbX5ZAfDdrWvG077J0sXXNnvV1YuPyySvxpVfSCqAPVideYFX?= =?us-ascii?Q?ihdS4PxnSQZq2fGEacGAbkoQCDbucBacKQ8nTeyRiEH2Z87FEHssq+d0e8Or?= =?us-ascii?Q?rTDnTAIMzuYZqkp6Z0zZlypCyrPOBwtBXKnF2f35Uw1Bk+HxP6vcAkklSLlG?= =?us-ascii?Q?6BOVTmwW7R4xHg9saNnvTm4gpA+11LATVJoMV9nmdvb02ePGAvPsEYge9KmI?= =?us-ascii?Q?f3fxrAPOhee/mXkfGvFCb4sCh9h0etBKZS0JHRTp6TzwVIrGhKqcB8+WP6RY?= =?us-ascii?Q?tnV6E4rnmWCCDEIqP7BF+6C3Xmft4mPKw8bz6nlMmvS8QnwmFcRGM1dem0XX?= =?us-ascii?Q?1u7ZcamJG78hctYmbqnYQxOS1qgBUyJn7vA0L1BGokFbYWGl7uvaLlZJu1YT?= =?us-ascii?Q?fqV7DmCFP3jt1rUYmDKNwywF7MBUx2zlY7EvMDBvdFaDwnLUpBwESoB+9vAw?= =?us-ascii?Q?Y6c3/IZYDuWoVQPngA84+BNNVCD3UlD64Rrzr5xSJ8fmXtmYdfzCut36DuFE?= =?us-ascii?Q?ID+WTwEMbzc6+ZDAE5SfLBUH/XSo2rED7F3BhcY3KQHZlFveGN8SLhAaLaf8?= =?us-ascii?Q?kodBACrS2l1Ryqyko1M4nuq2l963mbAkmgT3WsSNgDfbgfwZGbJMMjJuIPbk?= =?us-ascii?Q?3OD+lHUKLTp2DH78QyDZ1jfXHZTqXU9ud5taYjFs7NKf7RVJsN/J3gsQimLR?= =?us-ascii?Q?AbBkOR505xeYMTgHfaANBAoaPbox7+0t+thCSRS/sv6NdjvK4tAJ068bwY+P?= =?us-ascii?Q?QAjDhsiylJ2MzzbmM86spcvwPizDBMjwnd0qGx5SYPJD0Xu98vpxIfbZpvL8?= =?us-ascii?Q?cx/Ja/EXumz8Vxu+erdFGYHL2eqzfU0G1aMBiucNpdJrkjqSbJ1YhYukV2ci?= =?us-ascii?Q?fdP8JaLrAN2iGVOCHJSe+qUO6vEdQvDB7JgaoU4dL00C7ggWHxveWSjJeV/R?= =?us-ascii?Q?VCYYiUxHcAj0oAaHlVHq6STqL7/fcOOgi2+/FhpDWyxmZGbpZrm79RQ/4Mpk?= =?us-ascii?Q?JTiTGVQ+MyJz4GkL3y8XxtrpPnRcpORl+CDPPWwyAHtbHikZG4WYpAFCQuBs?= =?us-ascii?Q?XvTRaLMgrJLd/SmaQxx4zj+YhFrVnJNwbMPH5oB1t6qAeQIh6obnmSErA7zn?= =?us-ascii?Q?MerY5k04SPjwh91OuW7lRemV3E9nSjsAfD/I5YxT7Lhm8HGT3gKbWmIPZW28?= =?us-ascii?Q?RuhqBovWuVDZVEpLmu065gj5xBmTCkeJx1Jpvx8AJHCug1ARnWYVcU6RnUDt?= =?us-ascii?Q?l/KdTuEAUqxS3FrBxxc63dCHZSUwt9j1EeEzQnR6goXggvThyyPyXXmGbA73?= =?us-ascii?Q?foG0vH4J9oJtK197BxeFomwI/Kc/oKGeHqnh5/uWKxf6H9WaKeHtMB1qJWup?= =?us-ascii?Q?QJWoGx/aTgjdnHUajqexIOpwidC0Zk7tqrF4lNJVg8TL7SwfFuyc?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 468b60ba-4c69-43b0-5cbc-08df0ef1392d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:51.9845 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ko4auTyGZsVCArYMNUjsKgDfMKp7/Gm0mr8qBR8PFllmNFcNPFCxFOQ4sB46YxFv7w+Uzhx1dmpYe7FoUILjJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2220 Content-Type: text/plain; charset="utf-8" ntb_transport_link_cleanup() frees MW buffers but leaves rx_buff and remote_rx_info pointing into them. With a QP still allocated, another link-down notification or transport unbind before MW setup runs again can make ntb_qp_link_down_reset() write to freed memory through remote_rx_info. Clear both pointers in ntb_free_mw() for all QPs using that MW, including those without a client. This also covers link-setup failures. How to reproduce: 1. Load ntb_transport and ntb_netdev on both sides and establish the transport/QP links once. Stop traffic, but leave ntb_netdev loaded on VHOST so its QPs remain allocated throughout the test. 2. On HOST, unload ntb_netdev and ntb_transport, leaving ntb_hw_epf bound: modprobe -r ntb_netdev ntb_transport Transport removal sends COMMAND_LINK_DOWN to VHOST. Wait for ntb_transport_link_cleanup_work() to return on VHOST, using a function-graph trace. The "Link Cleanup" message is printed before MW release and is not sufficient to establish completion. Do not bring the link back up before the next step. 3-(A). UAF via repeated link-down notification Use ntb_tool on HOST to send another link-down request: HOST# modprobe ntb_tool HOST# echo N > "/sys/kernel/debug/ntb_tool/$ntb_host_dev/link" =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BUG: KASAN: vmalloc-out-of-bounds in ntb_qp_link_down_reset+0x2c0.. ... Call trace: ... __asan_report_store4_noabort+0x1c/0x28 ntb_qp_link_down_reset+0x2c0/0x2e0 [ntb_transport] ntb_qp_link_cleanup+0xc4/0x148 [ntb_transport] ntb_transport_link_cleanup+0x314/0x350 [ntb_transport] ntb_transport_link_cleanup_work+0x2c/0x50 [ntb_transport] process_one_work+0x5b8/0x12f0 ... 3-(B). UAF via transport removal after link-down VHOST# echo "$ntb_vhost_dev" > \ /sys/bus/ntb/drivers/ntb_transport/unbind =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BUG: KASAN: vmalloc-out-of-bounds in ntb_qp_link_down_reset+0x2c0.. ... Call trace: ... __asan_report_store4_noabort+0x1c/0x28 ntb_qp_link_down_reset+0x2c0/0x2e0 [ntb_transport] ntb_qp_link_cleanup+0xc4/0x148 [ntb_transport] ntb_transport_link_cleanup+0x314/0x350 [ntb_transport] ntb_transport_free+0x68/0x588 [ntb_transport] ntb_remove+0x5c/0xa0 [ntb] Verified that neither test triggers a KASAN report with this patch. Fixes: cc79bd2738c2 ("ntb: Clean up tx tail index on link down") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. drivers/ntb/ntb_transport.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index b949f36a4f2d..096be87e5ede 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -781,10 +781,17 @@ static void ntb_free_mw(struct ntb_transport_ctx *nt,= int num_mw) { struct ntb_transport_mw *mw =3D &nt->mw_vec[num_mw]; struct device *dma_dev =3D ntb_get_dma_dev(nt->ndev); + unsigned int i; =20 if (!mw->virt_addr) return; =20 + /* Drop references from every QP using this MW. */ + for (i =3D num_mw; i < nt->qp_count; i +=3D nt->mw_count) { + nt->qp_vec[i].rx_buff =3D NULL; + WRITE_ONCE(nt->qp_vec[i].remote_rx_info, NULL); + } + ntb_mw_clear_trans(nt->ndev, PIDX, num_mw); dma_free_attrs(dma_dev, mw->alloc_size, mw->alloc_addr, mw->original_dma_addr, DMA_ATTR_FORCE_CONTIGUOUS); --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021138.outbound.protection.outlook.com [40.107.74.138]) (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 428CE3A0B2E for ; Thu, 10 Sep 2026 04:08:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013338; cv=fail; b=NOwO6vmabqGS26TM9xEoxQNboYfnH+GhdUjbe4NbAH1DVnl7JtWWtYBPGK6esE6uc3HBEpZH9jHEGpWNRnoWsvjk+vmgvLa2prBt1Y9q/UyWpvoN2kNeBr08/zI9RfC9e2HXGrjlPBEaRtaKH2XndEVsxWBnkEvG01VIlIvP3zU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013338; c=relaxed/simple; bh=ag+UFp4qL3urdzcCBDtXlUYKu+sgUscKGfQb6ntyXiM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z0U+PX/9NJxdGREIuFnvJOwijEZr+MyXpYkYRYsfInsu0tudBMo9TFa5euUNwsDFSZHdYw4tUOwNrWPgbNSf8uG2JVEHBvacWv6mV+/2CU3KbmxoZJT646YmJ0x3pTkG8tl22gyleTmlPkkZc31qdoKY07i2cyLj/Jk0pXbXMS0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=as2xmtLl; arc=fail smtp.client-ip=40.107.74.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="as2xmtLl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bLA94/p+XWUzZeyS5OfJ25+Pm21LN8OmcUBE5dwZDiMYvcL00ThsB93YGXoQCqfcq8Ty0G1bcLvwd1jxZomSFkJJf8ii8vH+cv682SH9vTIbZX56jcs/TooWljnjJmy7Q431Ndk6i0A6pzwBWAmdJIMRkZiO0SvMZMal2cXeQx8kpK5Z+KPrhn4uK6cEJkGHOoiQtDb6JN/8lj9G2DWSAxzzLDic1uvMsUC+FkrAFZx4wUbweTu1X4Db93I8g9s0V+zN+O/TGfydPCvcBcmYyDIxe60QTc2RTKVAQ9G9ayOz+aeSnUS71fThs9s4KOLMWFvFe3jcEI//pbn+/u/lKw== 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=q40TDwPskADVMGqF5DGVKB54SSs+Y/ny4cI9iUJE6YI=; b=ij3TeMVemLZkyCZwqL2EHP7/t50GBQJFGO6trzr75c2/t3JlW24WC3av6PUC8iYz7kQeiznmFVLXpOmNKr4WE0oaF4vphFqlz5gngpAZBdOgCZSiVq5lIAgIZcg2jeXkebt51vDrMFSj0M5cKJILPbpNVdFRIe64tnCMJk1GBI6MGCWmykCFx/9Dx6pSTD5TJS9GA7SugBNqRvvTWPZtEfL1Jh+qrkzgN8myjNEFOQjYZxi9XuTLhMIu57RZxtLdW/dmzeXoqgUZNHNU/I8hPZJKRyCPM9qkAdNfPfkOd0fuj6JJ7lze3O9GwWVGSfbTkvXUf+jaL9fv7UVADb/G9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q40TDwPskADVMGqF5DGVKB54SSs+Y/ny4cI9iUJE6YI=; b=as2xmtLldW+pQQ1l7nM2nufxlHSGsNOoesHjGo6gLmznWDpKjEhbUt4uES8NwFwARoMn0umRLu8+hQ5iz+ExVEjntl/X02fVCAoW886H/6sAGmprBv3pq1DFuoKQ6JkTFF9APbLLQPFAimnVkh1hyHzRmBzopvN4kGLBRmL0q6s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6619.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 04:08:52 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:52 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 13/14] NTB: ntb_transport: Abort link setup on QP MW allocation failure Date: Thu, 10 Sep 2026 13:08:35 +0900 Message-ID: <20260910040836.3792333-14-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0007.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:26f::6) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6619:EE_ X-MS-Office365-Filtering-Correlation-Id: b1ab0120-bbcb-4335-ed4a-08df0ef139a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|10070799003|366016|7416014|376014|18002099003|22082099003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: LoNMIEmaV1o45fFYNg/tO4Uf5BEWB+PWngg1Zee1okaWw9oXaF+FBz7UpxvjMkVfaKgFBtg+drvi2KIvLmjUiHC185rWSS6xVVpQ1UePTAu6jNsw0IceR48O1u1Oz2hP6DNu635Bp9SW34uQmDKP77DpcOa/Xp60xJa9qWiaK9y+d2tAX9cpVgTB4GFTvUYtS3ieuV9H7lPe30wyUesBicFC/3zfdUNktiJeHwk9ZqsM+WB/BqX5xq6TRbR9ZLrIh8DFimthv0zUVEGGW1AtmHJeFUyhFhDT5b9Zvq21Owfj2j6h9BZEJR59pBjZdckznuKJUv0p+jLvaEF0PB6KkLMbJUbMOBT4qV0eruV5ahjuGBALidpXDXDba+DHfBw8Pa1egFM4Rx0ptNWZ43ihwtBvhEm/6qaiJEzdc/VThD9PGI7OwbhXDSOUAOPEO29UUfYf1e0Af0UrjorHukqerlqFqY6qBjmV4EzztmypHZsOLv49BBtPu30dTlGQA8x627tghZg4ktU3Puh+GlJGY7fciUNSnIvspggzwnG3Tfz21kAsbCtKWzO9kSdaDLQub+haB66xjnIOpbYTts36aTXBKeggwXe7VtzOA7acfpQdBuTj7rXBFnrI2I/+UJ0L X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(10070799003)(366016)(7416014)(376014)(18002099003)(22082099003)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kArFqLREgEzW3hp987vIjlhJ2CcD9ZH8l6hYDXh6YxyXAwh8p8CVqIRAXgn5?= =?us-ascii?Q?UOs48TFM5XvceFVriCo4EAVGB14msN9Emy9YOnTuE04A0g2lRxLrsuewlS/8?= =?us-ascii?Q?sKW/dw1mEnf+pqeOKKWNKk146yBL2fyfuL9a4rMp+bJsB7g39+kFcVw1qNjs?= =?us-ascii?Q?F/f5FfJgXViRY6XOBBseDv5HyMjOwhw1NeTPl72Gvuc22ToO0yC+TjBFqhpf?= =?us-ascii?Q?+Uulu1uYc4Oa1yJe+fV9IM2oBUfV7mIHgVjwvr8nx2zFTHq8d4xPeSxn+q7V?= =?us-ascii?Q?czFym3w6Iiz+iazCtcI1Jsjb/SXcBwuAI02li77xopVESUck+5unJm0be1eM?= =?us-ascii?Q?+fovMo9p9A7JiJdW5RLrV5e5KHQQr9leWqLcV3b2jfG/e/fClZp8/nq77mVv?= =?us-ascii?Q?jT4SpdJDQ1FYpKvyuneERtNWLCvMbCJp5VjxVb2KPb089NeRC+cBJZfWf+Cx?= =?us-ascii?Q?6niA2d1o0L8TupAvHmb0BDerzqd46ieR821GPc7ZnIDkDQXOmB/Ohrxfxdoi?= =?us-ascii?Q?SarrxF+w9e058hP0GlP1L1OQb0uLCjX8ftk/q1b/21BitFmYCno4WnTmByPH?= =?us-ascii?Q?5Z4RJ7Jt4lyDkO1VzlXtbNgSTcr4zg+j3LHXBMcRL2Qs6yKN36bZvAjDkMtb?= =?us-ascii?Q?tPazf064DAXExRAZr8B7k3aa0cwIx9TJ3vfUdq5QHLRKpK9/6n53RQQH7eRE?= =?us-ascii?Q?QfMl6oG92SL9+vtPCYHRvKxBrqEwYJnm2dg4sHIP7eCZQ60LXupskxzwpBnk?= =?us-ascii?Q?2lC2zk5TM+3x4u3mCX7XM+z5lyr6YXeNCvE1yQv9RSYssqeD6Ur5EqL0JLDJ?= =?us-ascii?Q?D8CCatw39FNf7d/6gsPXvdhx0ltEy4bPNd56sr0tdynbVtyw02b8mLUsG4Dt?= =?us-ascii?Q?r2iYlIrk2eRXLni2XZg1AI41QiW5W9Dbt2FsR9uIekPn5yP+G+FoaIyiJ5D7?= =?us-ascii?Q?wLqKDUx4AQRtS/xYFellscgnDKYN2FkeMQS9blBzwwsdUayWrntx+E78pJb0?= =?us-ascii?Q?aFpYUThmjzestVrAcFAtHo3eRyBdjtDB52X+A7LQA9dUuYIIj34FCcnixDz8?= =?us-ascii?Q?ptJMx7URD5m+t8OgEuikDB5ubiRHjxQhxDR7xFOCQOUdMmO7YYLmcqGyf1qp?= =?us-ascii?Q?BL/iSEDiGMQ0FZBc5sTQoZIRWoOWYGSUkVH1mp7fZ8qcHPQ+fSGnvh7URgbI?= =?us-ascii?Q?e9sOQ1IQ/Tg6x8cKbZ81QUnYU89EQUxcX01A2yQo/gabTJoD/r/Ot8zFBsfu?= =?us-ascii?Q?OC6JPybdO2R4Gq6nwTH88y/rueHU5nmFd0RzPmvuRIMKbzkMZs5MmX8Z9Qal?= =?us-ascii?Q?4MBindf3LJU1t/ebSvAuHdhFk8FfmQUCuLkm61zU8JRf6YgOXFXIOc62YZkr?= =?us-ascii?Q?avd9PFePjyUTkgkh+HwXaIsyFVDHJAASZhTtn2fImbfrzYkCMX91MHw7sdJr?= =?us-ascii?Q?2d5+tBvd0Iko4ittMOaKIXukgh5dtKJbuEIsS/WdleCRPKghsXEhyar1/EDi?= =?us-ascii?Q?BuDh9/ISG6USH/Jsxe7YAo+CY1LKYJ7mF1M4PUZxpEOEKhSHF8oukf01TtJe?= =?us-ascii?Q?y7PFe45OT5P6SiNsbnf3VIqrBC/5NnZnXfhaLjR0eDN30mM8SK236bDEMyqZ?= =?us-ascii?Q?3QjShvZXmXw2RSLsqdevsUFxgYW1CRimJMkVUmzDehUZaNQaMxZybsI1v1Hx?= =?us-ascii?Q?GpudO8LYnFbMQs9LVDoc8MgWIfonSGQO2rUlyb8FvPGP3NWn62ePCKZHl8Bm?= =?us-ascii?Q?WnXCQZ2W6HcCibN6bfIJDBW1Lb1aSoufnM0LYHesITpXepuR3t1N?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: b1ab0120-bbcb-4335-ed4a-08df0ef139a9 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:52.7978 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8kSIMuRTpJAGM5+49DTi+0/XQ190xTIzO3pRUckR6TjBiUIhIZOUrVpbh0En3A02MzN8Pt/OuKJwZI1aBkDaag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6619 Content-Type: text/plain; charset="utf-8" ntb_transport_setup_qp_mw() can fail while growing a QP's RX entry pool, but the link worker ignores that error. The worker can consequently publish a QP whose memory-window state is only partly initialized. Abort on the first QP setup error and release the MWs through the existing error path instead of publishing the transport link. Fixes: a754a8fcaf38 ("NTB: allocate number transport entries depending on s= ize of ring size") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - No changes. Originally submitted as part of the direct TX/RX series v1: https://lore.kernel.org/r/20260810165136.2292436-2-den@valinux.co.jp/ drivers/ntb/ntb_transport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index 096be87e5ede..c1e3a077c45e 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1152,7 +1152,9 @@ static void ntb_transport_link_work(struct work_struc= t *work) } =20 for (i =3D 0; i < nt->qp_count; i++) { - ntb_transport_setup_qp_mw(nt, i); + rc =3D ntb_transport_setup_qp_mw(nt, i); + if (rc) + goto out1; ntb_transport_setup_qp_peer_msi(nt, i); } =20 --=20 2.51.0 From nobody Fri Sep 25 17:45:47 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021138.outbound.protection.outlook.com [40.107.74.138]) (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 F25F53AEF3F for ; Thu, 10 Sep 2026 04:08:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013341; cv=fail; b=SmEbMGufuA9at9polFdTOEEtd8n8IHSzrLwjn8tmAo/s3IeC57f907ZR2PDqDiRo0qqQR8AZea8c740ThfIdkEUKTOdD53gvgVabuWwe71Zdu3J8WvJfW1uBgVV30kj4WUgqCXc/gysPF/4Z8jZlLnqP/MOcUeM4VO45b3zh9fU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789013341; c=relaxed/simple; bh=+SNxzDvgqTSe2uUtf62AvEH3H2idtwSRRLFJZLMxZoE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cbaNPeoFXPRTa+7JETeD5v8EpFqNmfyh/LGmI9ltxnJM64UqciunM5YAzSa0WcrN/zMtra6mvTxr3wpBBiEsYd0KTrq9tzD71Jv5o7jj1VX23lnK2EDCygqjpK8EYQPpYKJavz7eRaFwJB6Naxrk5pTRRDr7QEf1VdrnNq0NBWs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=qcPbfNXo; arc=fail smtp.client-ip=40.107.74.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="qcPbfNXo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l4uSz/3Mf6kl/WkXqRtTiog0ZRrACtgQWvl51afXqaqNhb68T5X2ElLM36BpXqT64lwkWsYe+xjeMhgpMZtgBeiO4nA9hYxg6/zCQCiML8Nxg9c6kVuqQR0lh+76Vwa1K2DuBIAqWrynme4dBYrnr2EzA7tTOwRFlW3YQZaTZultH8Y9o8heVQbt5C7BS1e4yV3wEu8/kksMhY0jlojpivuR9JoeRNLGaarLyycDwjQpWimEfwvZ0jc2wSBqPh27jm2xHjyTfxxTpDV+G+PfMbQ9hvccqnnutFJOL1iAVVqMhiJHTN4JEKyiSc0T6d073MWQi5EoDYESRPlrvu9F5Q== 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=o/rRMJlP1sSkcj6d13cGOj728+KdjNney33StJuRPi8=; b=fSvAMtNyZZdgRgMMtgHOlkNpMaU3CqQc3ukCEgvDBGQ3I7uJngKm34U54ZfDT3Gkh8mSmw9ClywEGWb9kyowuvUgqd228l/xNgZWReLSACVZdO2fAZ3/QJqbF22tmrIesBZsWaYSuJlV+pZ6W+EDzpTsPhEBzKnxEvRfAgh7e9ymh7aLcMQ8XfvQt7AmHvb2PAJVe1YteXf9wNiYXWlNlEQ3vQvmMh2a7V8kxEE+1IQYQtQedlrpnCvIfaJkodXG7x9KfDsYDh1gbIb77majcv2sksULDs2dD8k6EvVqzL/sx5yPBx8e5xFhYGqf51W2uxJP7Eff/jkEUAj3yhSMeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o/rRMJlP1sSkcj6d13cGOj728+KdjNney33StJuRPi8=; b=qcPbfNXoVu0XyNjFZYu9Ki4gKgyJwUS+h+IfP+bTkQ6+HjWoTEJk8tCtIUlw/VeuOs1aXCWqdAdxCjafqzUgWg2QH8M4aPrO03Y1ELLLj6gkOPUsg62sbmKqrEkythsAWjW/ebfZMJFvlMkpSdmqMVszAhzVQWOjZEjp/rNj4SA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6619.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 04:08:53 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%4]) with mapi id 15.21.0406.007; Thu, 10 Sep 2026 04:08:53 +0000 From: Koichiro Den To: Jon Mason , Dave Jiang , Allen Hubbe Cc: Frank Li , Logan Gunthorpe , fuyuanli , Greg Kroah-Hartman , Nicholas Bellinger , Joey Zhang , ntb@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 14/14] NTB: ntb_transport: Remove clients before freeing transport resources Date: Thu, 10 Sep 2026 13:08:36 +0900 Message-ID: <20260910040836.3792333-15-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260910040836.3792333-1-den@valinux.co.jp> References: <20260910040836.3792333-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0031.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b2::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6619:EE_ X-MS-Office365-Filtering-Correlation-Id: 4eed8996-93c8-4ae5-ed61-08df0ef13a2d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|10070799003|366016|7416014|376014|18002099003|22082099003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: aXwqMp7ZevMWfSPyTDJitBX8LDbohc6kuVcSOUtO03I7aFcvA0ELC7/Y4TflsTsGsytoZWhbUMuEuFyNu6u8XNXG4fIoitHUaqSJawZlgHDy33qLEGUfbgrmOX2LrdMmJo+dsqCWFCbVW3XmW0sqHPiizZ7Oo8oZPwq1V5Y8Yr8H6q65jWdX6nURgXre18Zyh5TBGB9SIaNm8aGOTlQw2QbdidusMxAyYZBB3ATW/xLSzc7BHTiLUjw7cftSCetX6faZn6GS9FJLM+EGjK1yT1nXUYgNePE6efDxZGPFAqSA3GkZdkmJy3eo85p0RDneJ6vNpLyDsLY1YWJ9LE7SZ3EmTtts4BSvJqS7nuvQVRC1zZZAoOXwKzzqU5bbBUIQ9tqKg1cY4Y0wpAzHhOBZv30H1B5cd5jQ9IDfgNjqa8Uad8gtqOm3wS0LUonTHzXeBt0O+mzznTDscXmaGAh+3tQcSm8pBAkYrrM4zp67fOporZTPaqbMvQnfGXZU7lW7eeBmR2vwRku5WItgWs5S4Qy6qk8Obf/LW5NHHRnayWn+yPALjBmtWEqJ+wIjWohVIbc0QkGClEpgG2swATDGaQQNpaXmaPz0DYmVMIvFqZN8Ik9RRiqFQSsDVa5NqxdNaaAddELKjs+oXddd1WNFzZqPOO6/6lzD/8Z9Vu2poJY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(10070799003)(366016)(7416014)(376014)(18002099003)(22082099003)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9KZ7dA7qrHI1IA0AMPoOOsdd+5w1pP7cg2vFmToKxtXSbICz9xBa6ueo6bTq?= =?us-ascii?Q?xeqCkIkLfqqmW0MjiA2OOa2KskX3kWGDxC/xAwhh/umhOy5ansIufxC/0XXy?= =?us-ascii?Q?+0k4ce6pNXw44G4TpexJIzSP1Hkw8Nforu0A/J9MdqjY41dIwyvLP5V/3xaL?= =?us-ascii?Q?0NMdn6YNbYsYK5mE/6p63qPZ38CYYaw6+ddMAo6mGkwnVydQIHFfLM87xl7/?= =?us-ascii?Q?zZPl/nPf/eWBuIC4cqfxFkgd8boRtKhEeqfMOOIQiGNd5oXljJzp5IwF8xCm?= =?us-ascii?Q?6Qu6hIg8TAn9iSB79PhHUl5/4x3RSurdR5zPxhwEDKGQLGGk7WjE/q00lqLM?= =?us-ascii?Q?TzXH8IVcjJl/9gDwc73XipNDGEJ1yesH4bQz0goWzCONjegom3Pa/nl06Rtv?= =?us-ascii?Q?mozsf0Ym4D5f6sE5djTydyQUC6dRm1nFbT7lwV2Lpj1+lcZ8gEd7YlFZDp26?= =?us-ascii?Q?SYq2pCk1lXWF1bLPDv6+SJF7kcRk4BNDfsDZct+s3iaokw+LKpgPP+O8gShn?= =?us-ascii?Q?xF4EKcDXq1WxLckj7mABPc76ayBCiy+7DU3t4PVOaj474PggOW6LdExi8WQr?= =?us-ascii?Q?4niXmVswx12uohG57jMGzcx2lPo3Ff52qP540JWM2pfsHuQ5EVDtBckdBjKl?= =?us-ascii?Q?aX8q6ZgAR6YdqzNYPMzTOUtSYXACmv+3yLUwib1QJ7rrXxR4Z9of590mjLiJ?= =?us-ascii?Q?HaH9g2MwdZdMNUZilFDz7UFfHpTnueMjvWXTd2gZCFFUqyTXJ/ejfayv6mS5?= =?us-ascii?Q?nf7arCDIpgtc2FFZ7hQBV8S6B5UFS8BipfAbeO0JS717myLHFevpEP3/Kbr4?= =?us-ascii?Q?fRgSpMpmUnsGcYomELDfu7vsz081fXkJqxFFvadYD3dtHyQN5VGTTEYZfTs7?= =?us-ascii?Q?1q4EYUwoYPQJLnKTO6o2tOCyS4Fmb32yoEjZcXo7gtlvQ0woUgRtn9EL3y3M?= =?us-ascii?Q?hPsBaLur8LFLMRqkTiRlkl1Wh6o8xW3UkqOAp5OxpOg3N3CkYX8TzFj5TJ51?= =?us-ascii?Q?CuzYlIHjy8kHzbpYDEtWvacYwmW8dtArUvOUnoBaDKCh8MNmM7g2xpyvt1e7?= =?us-ascii?Q?lsGwdB9GjdGFkOzpDSV74XQ9I45PqcsQrMwK/M67RCCLJR23g0e8wPUDoqaE?= =?us-ascii?Q?qbH8stnOiWJrBm+XM3QIc4dS9xlZrShgR56jK1/3B2l+AT6Si0o89f1oCuy2?= =?us-ascii?Q?VOZwsMkA2DiqeuiNKgMO/YPXju5d4pFiHHxr1IiUC7lfBQp+BRohLNJazhvx?= =?us-ascii?Q?9CMVK+1XZRgiSl1g28CCRTeEE2ooCxEEdqkeSiktqql2bASbaymEyaYk7DFf?= =?us-ascii?Q?P4HkryqyBZ9jl0YPZxWzG7IpcmlYu02NB8m2aPRY8ffUvkhcAEvKdjmVB2jp?= =?us-ascii?Q?trJciXcAl8jZAxtIsNC0pvrWRQU7iXQlcrH2gDTTvvmN4Ba69N5k/OLZ0f8V?= =?us-ascii?Q?bnfyg3L7xbOeEFcCDWr6oPRXR+GHIvNknzj0fz1Tc6To1VxvcF7n1GH0DjWN?= =?us-ascii?Q?MDt76tvVmnUBYIQr2RxfukInykbin08OyDnfrgRaLtOVEASXblWCerjF895x?= =?us-ascii?Q?oaLrCXLMNB8YCQKHIAaSrW21RX/W5L3Q+kOV/jV4oextMVph9h02Y4oV9oRr?= =?us-ascii?Q?SEat3WKVlRWKe66y/Qzy+nHBNjcFEjY3Dq462+Btb4xcvcciHVFpR/QGc3F1?= =?us-ascii?Q?rJd95TsgR/YTjaIHLPgq0U/vpkIfwUpDNBvhJboqGcqgOpJ6YgiW5JcZmu9w?= =?us-ascii?Q?CoGL5cGvggXoRTcwlqlBIgJG0YNdGevCba+e/De5PUJncKbLYiF6?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4eed8996-93c8-4ae5-ed61-08df0ef13a2d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 04:08:53.6543 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sXvGeDau50lAqrLYj/QXcDhgPSzqODuT4XEXqkDB/Bs8HFHOUiPXynrnP8Ab3E40mCgQujHI/TJo21+PpstPSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6619 Content-Type: text/plain; charset="utf-8" Unbinding ntb_transport can call ntb_transport_free() while ntb_netdev is still bound. The transport frees MWs and QP resources before unregistering the clients, so the netdev's transmit path and timer can access freed memory. Its remove callback also calls ntb_transport_free_queue() on a QP whose resources have already been released. This teardown order is unsafe and somewhat unintuitive. The crash can be reproduced with an intensive TX load, during which you unbind the NTB device. The following is a KASAN report from my VHOST/HOST setup using vNTB. VHOST# sudo iperf3 -ub0 -c $HOST -l 100 -P 100 & VHOST# echo $VHOST_NTB_DEV > /sys/bus/ntb/drivers/ntb_transport/unbind =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BUG: KASAN: vmalloc-out-of-bounds in ntb_transport_tx_free_entry+0xf0 ... Call trace: ... __asan_report_load4_noabort+0x1c/0x30 ntb_transport_tx_free_entry+0xf0/0x130 [ntb_transport] ntb_netdev_tx_timer+0x78/0x260 [ntb_netdev] ... Disable and drain transport link work first, then unregister the clients so they stop using and release their QPs. After that, free any QPs left over before running transport link cleanup. Disabling the work keeps link events from restarting setup or cleanup during client removal. Fixes: fce8a7bb5b4b ("PCI-Express Non-Transparent Bridge Support") Cc: stable@vger.kernel.org Signed-off-by: Koichiro Den Reviewed-by: Dave Jiang Reviewed-by: Logan Gunthorpe --- Changes in v2: - New patch. drivers/ntb/ntb_transport.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c index c1e3a077c45e..f24555b38d1b 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1487,9 +1487,11 @@ static void ntb_transport_free(struct ntb_client *se= lf, struct ntb_dev *ndev) =20 debugfs_remove_recursive(nt->debugfs_node_dir); =20 - ntb_transport_link_cleanup(nt); - cancel_work_sync(&nt->link_cleanup); - cancel_delayed_work_sync(&nt->link_work); + /* Stop transport work before clients release their QPs. */ + disable_delayed_work_sync(&nt->link_work); + disable_work_sync(&nt->link_cleanup); + + ntb_bus_remove(nt); =20 qp_bitmap_alloc =3D nt->qp_bitmap & ~nt->qp_bitmap_free; =20 @@ -1500,11 +1502,10 @@ static void ntb_transport_free(struct ntb_client *s= elf, struct ntb_dev *ndev) ntb_transport_free_queue(qp); } =20 + ntb_transport_link_cleanup(nt); ntb_link_disable(ndev); ntb_clear_ctx(ndev); =20 - ntb_bus_remove(nt); - for (i =3D nt->mw_count; i--; ) { ntb_free_mw(nt, i); iounmap(nt->mw_vec[i].vbase); --=20 2.51.0