From nobody Fri Sep 25 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 1DBC839CD0F for ; Mon, 7 Sep 2026 14:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791088; cv=fail; b=VL6+FkRTR2Xn94WhIyY4K+JTJmi4BvtYjLzOmKiXfNqlY2wUVJXCjlcljTvNcBuW7PMzlWXFV1BsrvqkEVsvBJazZaZcjY0bdabLhmjtnfsBbXj8jtpVUkbf7DVROpf++L3emyABFeI8DXyUKlO2tmzpcbw2zAhDOpCNWzj4Lnw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791088; c=relaxed/simple; bh=a1yoYUjDU86ggTIZNRjqtMjm3gRqZ0MyyIVA6j5DDpg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cWYmm6Fb0pOMXi8pKo39uc9BvXuAqhrKuRSijbH4JVi5xU94/nX7GcYOl6g4JUC+NsXT9DeGSjGacVw9FQfieWkcxa1VoaSxEQlE7LvitaFo6PuvigE/1xFJikkxiGjwz79JHnMTVJRLQja6u95ocbO4wZfIE/R7176api9LrWg= 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=tvqA1GJU; arc=fail smtp.client-ip=52.101.125.126 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="tvqA1GJU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uacp1xiO1Qs4pWJSi+YNRau/eWL2pK1XKAjsZmMCE+hi80ta6KLBnMI+P2aN9G5xDt5HsZ5RQg4+zyU8nKOZfgV0Rng8i1ntOUSOPX9WDwAYIKykdleWy+V3i6G01ZXydaZ0gXoM2KF09zEudfqVeGCm+ieOp+TURe2m2PJ7ASKN5nHGDQfQpr7A9i70o6hPihxETwid0qqa5toRV97n7EVYc1QtYoiVHqwXIMO/9yNp1PiXTFmCpsGaN0admruCeQHf8HdnoLvPGdfrkEJRuNFp20IfY43tKi/53vCAb+yqA/OfhtVWWuatz3q6TNVb0PrVRgSHY9qmt/9VhOb+yA== 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=tWQyI3C8GWdLz3kHXqT7hPuKG0xH1fhOOA/oUwnsl/4=; b=dx0SDveWdP0gAr5F2rSfRXitf1hnllnoziADHJ9bnOPckODdFjb/M2rVUBoSArBWSCj4tot5SkilW2JxZusEDX1QdXIYmNOp4o9cJD7nnErzx5SMCVSs92YyeTTdl2aXe91Ef399SfxquJ8PS3ePG2lXALpyKeAmB2T+2aohAqWuNpTj5jtdXA4CMeyIZxb5TLXTRFxojh8SccGx+2L4vi05fmaXpyq5VNoRYpu5vas2zfwbPZCMT1jI0iyY0VCvb8yDebrqxFmrbRrZa+gkZQwotemkgUCo8n5ag36Rf5tyO/FxhC+Kl6JcjoVwIaUuZPTcxblRnUQrCryAG3Oy9Q== 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=tWQyI3C8GWdLz3kHXqT7hPuKG0xH1fhOOA/oUwnsl/4=; b=tvqA1GJUYat86x/Swj3jnkAt6hn74qc/keuWKlMZxvelQy6Sddb6QE+mRkvr9TbALHUxJ4DmDLUVsOumFshlMgUEShRc9iIORKEsKVW/RG6P/WXfGpPgBRv8BEthInILGj7G3HE4XXWy4R9AMQCHy7iQW7c/E4gl9ogszeMoUow= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 01/11] NTB: ntb_transport: Remove the device debugfs directory Date: Mon, 7 Sep 2026 23:24:19 +0900 Message-ID: <20260907142429.951930-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0122.jpnprd01.prod.outlook.com (2603:1096:400:26d::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: 690525d9-087d-4e68-b24b-08df0cebc2a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|5023799004|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: rZ2tjUvMCb1uLSUYxBV2MggNBScsG5FeUYwkfACKtelsCgmx+Om2XXwUvB7kiw4wX4SmdPO4aPRKv7NsXLEm09ddHTzIe580dR1ElzdN+Dxxjmq+8fVMPpvsnbJ1QttrOKjp8zjNvIEfOUF+Hz7JPs314o3wgG7RzHA50se+k+WMGq8lIOoDLWgN3MjwvE9N2o5xYefYlIgH1p4K+wZYzhw75DyXktrtoXr0ffbECK1+xFT4O+8atzY8XvFSulf65UYxItSLqXURt2m0c/IL0rIbbk94NzABkzyybDuEsl2qq1enfpSlzIwDqwKaIRhgSrlcZwqGkwFSWqUyi/MZRyiZX/Z3EHtntYWuO1eUsBPbnFX0JVAG3GXQydbU+CN1lme1/y9NZCLUUsKMUPyHffZtJMoD0ZKJm2Lx4tROmTQ9C+TYOdSkK9yJbD7KVNSj8ZbLn29irSGoTtrKOtMfiPaAkjmzjv8Rv5W36jq9XsCs0QhPHCn9a7ATTELyP4YitG6IODzcVYTFpc7NDOsnAeOKl3nfr0DgVlXzuXbTucSYmiNV6IDESNYTFhP6tIj6IoR2UBV4ne6S99EssBC5j46H9Zo0RxeHVdQw3eeBBnnyMJbbs3OqKxKo1pYxC466J2HlupFBTjzBn5iZSSQDIvGv3EO4It/C2y1gEkieRUY= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(5023799004)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8XrzE8vCEo4YFJwjDKkp1KauhDLwnVFaXTxx9san65wQhpGb/FhGJGuNl2eB?= =?us-ascii?Q?edbwYZ5cDXQGOFfpzaJBY244OM2HrqFh64i/UcjIxnKxMj/J+08YViHUmxJg?= =?us-ascii?Q?MNxATp3uJeo0PNEZBIfwodsBW6xd5m7635yUCKxpXpmDlzGJ8yuEabbk3ukg?= =?us-ascii?Q?20wlmX4Pg08jd7rZgjd4+8V/nYEtXwHqNW9HFa9kzGKdsc30LWTsTa1iQrl9?= =?us-ascii?Q?NQzup60ywKniOLmPQPnOmFjjlGeBt0SmPoD/8DSQLv34uXcj/fmgUzOto7go?= =?us-ascii?Q?nt02Ha9rq+pYDx5VYcCwi6eW0qfZ438CZv21RyyxaaW/5gHMRZXrjeqpZk4s?= =?us-ascii?Q?FBW3QQ1tIMebf2PBeARq8qmq5Eg0/deBUxaw3s69LZIyKG4+jH61DOGjW8Op?= =?us-ascii?Q?g3IggA3fA7qe0/a3uryZuJS0RJbzIFmqeV+PYNccXwKgJVu92EslU0Tsu/rW?= =?us-ascii?Q?ED0XARz54Qo9p9z0/Xyj5cxe2zuKWRAtpAYEABxhcetsGUJ0NjGCEDjfDXjp?= =?us-ascii?Q?hvoaNGJgSH5uxDurfSsiEu+AdwEU4mdYUD8KsXLupke94LL5lL2qSnx+yyPY?= =?us-ascii?Q?obvj48056qZNFovPWB/qj9gJo3kP1YKLEG/pV6YKWpdSuSnAPAR9q23Uhicl?= =?us-ascii?Q?SMGatVwristxpuhE32mA1aUFaQCI6mvofcisB14ywRqeG19OQakfW1tRPSGP?= =?us-ascii?Q?JXvUbYV5XHEtFWVGnGmntnztHkzbpaA+EDtppx+x/dTsZw43DS8FgYjVTUCo?= =?us-ascii?Q?F3zmVvLoR4j/paDL5s+PguT7QMqHZqo67Ra4md0HSzy/kjmBgup7dNdVZLO5?= =?us-ascii?Q?gK6haGW2Oy+SZMXmB5u6L8JUXk9bNPDrIdSVffPlwxRqOq7mRZIj+Pmcc8r/?= =?us-ascii?Q?vJ74M9sJAD9DFoO1L++2TW8qkuN/sJIZ9/kkhtWh+0/TL9cjVvt1NCIJpgrP?= =?us-ascii?Q?dOjHQL+BNKW6ffYBPa55EZ2wrSOFGkAb28mXAMHTrP3EvZOeDSqMoBauS5YL?= =?us-ascii?Q?4IzDj57Qo8k/6WVi5PFFroiR5P68avA2Nlbn/Sk0hoJBkFYMTcDAd1yz1nu1?= =?us-ascii?Q?xSoCX3u10+4+QoOnYfZAncJadRm8XAqimFxbDc6q20z2Kz3tLTULv/BxPY9l?= =?us-ascii?Q?TXj4z6LfTTM8QUWqdMlxjOt3tT6h1iNukSq+bbCI/gb11wuydF3nw4y7NXqW?= =?us-ascii?Q?WY8uh70o+gyrWUJzre//HcDjwspaJ2UFfijg4R55QIzOTubUfdAU/AsWsuPV?= =?us-ascii?Q?ZvXXpq/wyUIKRsu56YryiZ2ahMMLVmttmM6WYwU7vIbUgWvLKd9mubgVwKRC?= =?us-ascii?Q?N+QhE9WyLh9m6xfafytE5Ae4WjBVCYulogfsDhq2EgFlULIaDcmW/Mv1vsAk?= =?us-ascii?Q?A7p3m57NK6tGRb2MHWGV2wSTMnLt6G0DCDwMuyhmLkcbizxKpYshpVRlKr2l?= =?us-ascii?Q?LNYX1yhPEf4dO24hU1ZEa1q7tIcBeXw78k9rufMpB6N7aoNkUpd5w7vR8b6D?= =?us-ascii?Q?JJhRhdY+cd3klCdjpkJyijoVr6U78wzuV5bsgUZGyvspUy6VAj6DLy84OqvG?= =?us-ascii?Q?O0Rj9lKY268FBWHzZyJweDiPNYdBro7A76L1JitZhHsXgS4mFpYtx9ijvNTD?= =?us-ascii?Q?UkpvCNItgl4DDEGx/yDU0vIrLnT5kPNEriukWC/srVFr5E6LbQgD+xjzfZUM?= =?us-ascii?Q?+9SUs+OrIHUTwEH6Q83HGm0cwa5809qdc6bFxSFkKcU7TKSewZSke/CP3gQw?= =?us-ascii?Q?Z1j+tJ0h5Vwku9ngU/SdidWl5JFFt6YHM2q5zDV/uj8QAfAJPH1N?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 690525d9-087d-4e68-b24b-08df0cebc2a7 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:43.3037 (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: bLLB/uOSedKGT+lfn0yoHsDxPCe/NzpNfYQHAyyY9TYfsNmA3praB2s9tCqOeNpRdIXuJEgd1CDAZyEdEZuDrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 23:10:00 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021078.outbound.protection.outlook.com [40.107.74.78]) (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 9CBF93A1E80 for ; Mon, 7 Sep 2026 14:24:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791091; cv=fail; b=Mc2Z/yUo1o1IN7IrLrT44P9HpNAFcaag6W/qO0lHOeyYc5YaoQMjS58JhOOXKIbl/AYKySPnx8dqnYEUyP8t7B18F7srUy0Hor6WjHbkHeUhn8DsLstEkRaNtYs93kWdVhUbJHRUWVxu6FrD/VxJV/ScoZyPOKE76rea3HxON3Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791091; c=relaxed/simple; bh=YYPiuM6wE5imGU3zOdHkc9CVvczm8s1ghyZhCBHG3eU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lHZR87gFr+oq3o0FmIZ4f+wByq24iYL8CEnIcUEaxyQpQwYN6xKNwdrtSNMQR1uTfePP/M+Z4yy5UhEsmxRUefNvb+FYWLq1CEMEd6/+A+S2ybyPryzie8gyi6xeTokW3JyrsKxggBPPMifPP8FtkHTI1M0FvkwVTnWsR6avekk= 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=BunHc1QM; arc=fail smtp.client-ip=40.107.74.78 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="BunHc1QM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MqLERZ+/rgO8AfDLvetQbTE9AKFFQM8O9mAMA94Xl6TLDdRfd4ZCYRU5BZsBlLfEXI7R+5HcAb75+/rQenPfBk0pY3oEuZ8PbiZmXaEmZYuiWE6g8TWdSkPytDY0HLt0gUQ8VZQIQU9VrRW15kySq9kr9x3ajZunWRDahseBDRUhEFzur4wBDUGmh2jnJ+R5/B8pPGx4BqFPh1Pfohdut+kqyPRpT/iQwe69JXQ7XrKzL+703kK2OfglezQYQP1NgzEaSLbEBGI0RJ9YNcUza470XHh8LdcXSR9CwJ7M0qVgD9c7tSHrn479eSFtJleXYSpU5/HApsqtf7jo0+vjjQ== 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=EgIMboPI2PXczRCxr4VlFdjijVsjskPJirgV2I9loFQ=; b=Zoe6j18GivLrj8oFAMVQGqw2WM/FBMCpI6Sz0iwiw1qvzzIa8l63BzqL9ZT5OCXZ1rjtEKzeYxCCIfEFkK+cSa+JIYkFFn8YrwywPy7U+pD4vlpHuefuXaMtaYGxbl5ovNnoQVELbRS/PBL2dRfJzr23PxcBlB4uTuCByl29+F3AMEhG5N3DgR8NWf6L8ueGyRGjx+SnyBvjr5L2lnv+TFe8CXHH0JghFDzFFnZ7S7moLOsuhJvGLO5UEBprp2XQIX4w+kGRg1qrIAc9flFQCXjfnbUuh+Ygs65B4+yePjmdLNW/A+ixmUOxaZB1VwGWfdd9akAYN0YqlKi8UJAAug== 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=EgIMboPI2PXczRCxr4VlFdjijVsjskPJirgV2I9loFQ=; b=BunHc1QMSvzs5x1QD+VZeQO/LG1Xrdy9WQOeWBQNd2zfMD04DnxhM6YlQqPvXMzQOfLDeo18GVDKYDUAodZykE0EaZlNu2Pupms5rXL6iHHsN3iaQULVHCl9AgRAxmxNG9wJAbVeJouo3ALHaC8hjh8fqc9fbbilWfv8omajwrY= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 02/11] NTB: ntb_transport: Start TX offload thread after queue setup Date: Mon, 7 Sep 2026 23:24:20 +0900 Message-ID: <20260907142429.951930-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0312.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38b::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: c861c426-83ab-40b1-3da1-08df0cebc32b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: pQPsnqmIDPZrGrW3wo02yIITJyiorwboR6kxmocXsqGibXb0x+4nlLywjAzppkmvXfyTViBMbpgUiLHlHv5NGjqQ0Bjzcg03yWllj0uxUEJ7XFtQ3ZJTirER7xPOCX3YaWGnED+ipUenOQ9j1Cjh48WdjO9qZisGk3TowAqeH9qw1YrxqYRxK1UzwXsps5x5gE1hJi2y/5wf6bwxvZWdksxXK77S7X/RbwMXBvs/dU4eXYeIan5y6J4Gql7FSSehnE/LjS1i9nZmRB3O5f35VgLHGsdY+ngoRNePXwtfmfGFMBf6+VhEv70esUl66d9pZzmW24jnfHp9eiKoB7KCG027tjtxFjy6upcoDhYvupOietS8C5bwljj2fw1ZzfX9eGhNyOUYyvrKcpTsajjtcWWU4CGYmt5HLa797geicIEVJDt+meuLVLUIgid6EYj088RjezUlhbynSy12F9IgNcNydSF4xyPLGJgd86U70Fid0nFkQ7wf5X3qgL9ikwl/4LRxJQniWZtIDpRPR6TbgEtQVJMohUBvehCW913GUc7b5uogS9FJNoKxlh+c5yAULl6TKN/dC6d4Ly1GVd3w0QZojoLbajHJ/eLMPKuA5024ou0S/mv6ON/gKFSwthFZ 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?h7ciE/chcp/G9GsGGVcYHAsqcZ8Wj77+gcTSuoZvs1UgXPQk0xHZ5EK8SVwy?= =?us-ascii?Q?Y89fxwKzQM46V8bWPaSggmNiI0UWWh1H2f3bW48VwJ2TrpU6hpdgCu4fwtCI?= =?us-ascii?Q?UY12S5h+KItUrSAlv+EHNdFW4mTGahyJ5vDeS0nGt6En1CFumzrDV1Mwu3BJ?= =?us-ascii?Q?B8BBthpsa1K0f1S2MjPdEBjrwaPNGrneDQQA1XenvZc1B3IUq9W+mZTz2/W0?= =?us-ascii?Q?ItzqXb8XEQNpg1zEFO4Y+fDF2hEKgR00MGs1dteaaoQskEvAgIjmJE72NiI4?= =?us-ascii?Q?by2/fRfO92imZuEajfWvKUCB97MkyHvsaddM5nVGdHAqHSy/C95fzHTeuLQk?= =?us-ascii?Q?5+lnDAayMBs+Kqr/V7IyS5OTuxesno1kWFj4FzxrC+4trpwr7r/N1lGjLTD/?= =?us-ascii?Q?5UFt2r8tPXYiZLa+ty7PPoHNk7UGAegDzBi6vlwT4Y5wLQjSxY6irx8plz/Y?= =?us-ascii?Q?L41CJt72KtcDvhLxw84ZIM0BX5xpN7bv+ZB3SYft3Qc0A4njsiQcAW3HI3SR?= =?us-ascii?Q?CCZZRSG14BRO7cIQI9lP8+vbw8yzZAJBzlkO/hoZANHtYNRFEV80pbovbmGM?= =?us-ascii?Q?9/szreX36Tjx1uN97wzSFeEliOKajBvNSiB0oTfeE35MRLIbx7dnC4W0TEMZ?= =?us-ascii?Q?BPKeNPgjJR0eJVk3Dbsl51NfJHTaPkTt4IJWKjsXQLVbsgUpWsiFa0stmuKb?= =?us-ascii?Q?BypRp/nF0YfZTWp3fE0Yq1nSMjs86MJe0uylktBsZoc0LQgMSQxWU/mBQk2x?= =?us-ascii?Q?z7SZiYlIdWcyWxZ+Y2hh/slFWeDMmMo+fVPidTHw2m5UhPk64s9kptU6p60U?= =?us-ascii?Q?E8+ieH+mzZJsXld1zcxp1QDOzW7vBNVltcEAuleEvRWk+xpUMAFjOJRnFUPy?= =?us-ascii?Q?EoWCDj+pRK48TaQdnCn6hWqsJIZ2ddQDUCTipwFKUonvCXW02SyIZXXZBW+K?= =?us-ascii?Q?bwaGQrpYMgjrHOm9Xo/dyiyMRNW9uhxxereBNqWdB3Wr1XTZWxk6/mx81Ndn?= =?us-ascii?Q?ewXtriTSXqjFBtQ6BzWZCyjZul+C43aeiDKgo52N99cpY7mcT9OwvZVK7H/Q?= =?us-ascii?Q?bIsT1gSgbtUf6zwzcFbU20JTSQjZ5EgBpJZcF2vETXvhnNZw9LChX9nqGES0?= =?us-ascii?Q?7Ebx9LZJDc/i2/mc88PUO/A/zQptyEkKzOGTDHl+Ph5Es2gjXKO0SJJXFwmp?= =?us-ascii?Q?hNbz3uZ2sGD05szCphVzU2VDTASM5PGFTANERNSYM8wMJJMyj8d2hHKC1Sdn?= =?us-ascii?Q?QsWFOmhEzWzZoU//k6EgU3JgzXVLuxemiWeiomt15Aolm+dyjUQwBmLECuIw?= =?us-ascii?Q?E7nZjm+NDJezgEQlwQs+XUMNLb94ciFa+04WB0vIP8/DmHy9J01VHFGTABmw?= =?us-ascii?Q?Z5Xv7o4M1Yf+llKF4gJAc1Ag7mPoOeagjAkXVB4uKpWdxca6dC7CVHU86fPW?= =?us-ascii?Q?EfItyMuD1mPAAyvz2wTUxB/ueA7P/XIo6Jxo9Em7niebObF9HXR2Svi4peho?= =?us-ascii?Q?hby0noWTBig6xbpmD1V9p+oMOoGjmo/9NS4iwudHQHCHIiD5Z05w5gGs4ngP?= =?us-ascii?Q?CK5q9wsIObgpDZu0k21BLK1y35cO9BaPjWpm5JbOf8mYzQKrshoqmJjfzGxG?= =?us-ascii?Q?l2PpWU/gdbut4NAh9UXFJQIl9g+8+Xz6GGzZ9sQcRNR1aibL5dVOnICAs3yp?= =?us-ascii?Q?kKdBOJoiGkmyxnTzcS6k8OlW+ETs19krHlXGEBeIhZkeG11H78PDqHHgKn4P?= =?us-ascii?Q?kF+ba0VcQHcOXSNEz3ZM/exKPEMSR54GftTwKDovPGq9Oe3EJpuQ?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c861c426-83ab-40b1-3da1-08df0cebc32b X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:44.1598 (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: lTHuB6Jmns+xn4h/5oIKfEy/c69T7yZfjCJhNXpRaUA9gYzbb6GE86fhLbJU2HHktTUSAKFdOLue5qWXARmRSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 E038139D6FC for ; Mon, 7 Sep 2026 14:24:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791090; cv=fail; b=rStTnaZ6tTmn5k95i3yLC4HbX0uyksEkmO+DJZZS9chNZrBcc+qz0RF/PUHi6x3nmU9L7zPNWdFAYbLtOxht/z0nLfrwE1a1hR/1u+jakEx5zCKRucE3McywreSXzzxvYcD3tFLdJPC8HBGauy4UpujjemQmEiEfzC005zlSER0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791090; c=relaxed/simple; bh=MGBcmJ6NEEShRoTnE5/6IH46YOUyd2nN6tpQslZwB3A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lE/chfD2s6FsMcqZWBf3LXYD+kzOiaYhVvjq/bZlIRf3QQw6GlDK5t/pVbsxQhkzRWy8Mi0J+R+B/BSlpM4Cq8UlxYrwtBGuu1V+Wmv0j8r8wmLbYoPypv6ehHuElTNcPI/kBJTNGjjA3V6nP02sMahUtMg48FUKbjKSFkvy9Iw= 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=ELuxApS/; arc=fail smtp.client-ip=52.101.125.126 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="ELuxApS/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w1iIH8yV5Qnuj5aKziTI+enLxybT0IuIqL+xvaL7jL0w63dDfSQv2XGH5bqne4rVFUq3Qcdgkhb4xvs/fQmzzSI1+Hjbj/DbbqaAAYRuZp73pb1KVemYYPR+TRLc2z7kPzmheciwJrz1YrhowMOOsYvgTLjCtUFWxVACeVT2WH934qAti90+jg5K7eSCAdhc58hZIAkfPS64HH0gYvXFB05z/pQnx/PztQhelON8xIbakZDLSvcP8MOnk3AxFa4/EX1WXLrs5/egTYl4WRW9XnpeFLghfJ9irqisRudKTAG92AYPmaeTFH6RBSNXkW6pCrWWROHsvwV9DhinVb8iMQ== 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=8Xhdy3uLiXCT7kjNyObVHkE4aHOYBp8kcd89OEswlBI=; b=yKDvsHQb+00o4Hi+tlG6pzgtTFOToRDBV8QCM2wFwcKt1+Of6KJ4bsj6BZlds22E7iouZGgrq2hC0GbJw0WUGQO/hLVx36tuQsvcH203GXtvEQojkAnV6IwPVzyihvO5VMbpqVVtQmnS59c43nfsKKdd76y0kR7ESDGpH4FbA+iCgM5eJB+Xn4Yt04MBWsWJHVs3xP5vl0WUM43pU5KExiNAX1Pmp5YzunSmvP1ONqt9VTnS5NOaW4q9B9ZdiofAAS2IP+ubIPEv9WXXpJ08PYUEHse9NX4gDA31hRxxWOXzxen450HG7AghrU3XLTZ6eSRy/KY2Fp8Y7YiTw9XQcA== 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=8Xhdy3uLiXCT7kjNyObVHkE4aHOYBp8kcd89OEswlBI=; b=ELuxApS/Ksi7nNUt9L8GnKc5Og98tVTzy2qF4MgmlDI47BtaJXmfjpVQvyBnitFzCemGxfqoHKX+R3XX84ncFHQ2/dA9gXlvuLmECr5B1f/I4dfAddzNGtmRYC0/FTzEwqrMrbb++RzUvmx6+RAt3Cy9weJZnSnOGcoZeyTPTxQ= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 03/11] NTB: ntb_transport: Prepare remote RX info accesses for MW teardown Date: Mon, 7 Sep 2026 23:24:21 +0900 Message-ID: <20260907142429.951930-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0302.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38b::14) 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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: ae481a7f-2536-447b-0de7-08df0cebc398 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: TNYcw2hzheo1ds9ppffPR1rrPwaz4FUo7bmNGNiTnMT9tLztEJsy2h0dlWNf4UUAJ0nbCD9COSwercn5KLsWMZN8jpnR/SlWM8UXCTZycG8xh2ysMQfzIDvmKjbQL8iG2OMYY1wwbX0XzCkRf7eRrg47h0QKezi9SdoS6Sh7pl6TdOyH6mucJQBHX+dD0zXkcGkMU8wJz7N3eSsLJPH5F5T7B76iCsNGnRC05csg2IlklVUucu1QRGUYB0AnAuvsCGiY7tYEwnfriKqdmWhvpdfGOq5HU86aVWCizDfqaM2ZgODpLgcYgX+CKft4v/adXs+5AVJmVBu/sckr9LXcXqHD6tQVSXqcdoAhT4FbzJvP3+y0lftyoHpGeg7NEQa9SDSg5qNLI1JF3dLfoN2+/leeL0WX+6RowOamluBY07Y+BExQIx+4USWn5ThuvwjiypMhM3HDLyA/ngisr36Ny7tbPZozsQRkNhH7kKtWFd9n8K+F2T0lv21gXDPGTJqyYq/LeUaE7vrSGAk0+xBwJ3a35MhaHof1nCyNceqpM6+D8At2YYl2Rd84DHLm25lRdOrIzb58FwxE73ZJTpcbcT0JSwBxf5ApepDwL/FvbTzRbiVqjt5e2GUonfWLwfXDtUf9RE0gAEZxKRGn7dQwQfLYanb+M47V59OKViaUrSk= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7QruuEYhVr4is/2Q+Xk4JHTojH3Qu7gSUN2aPgZf29FscWfF2XkGv1G0XXxw?= =?us-ascii?Q?PnOfa9G1AY3CTcTl1ifWxO9SRFnR8dySSlP9FHGSWtvU24nCKgn6+4qRfbyl?= =?us-ascii?Q?Im4yzSAEUvQClLCTsemoQP6atdDNAx5t0DBwQEIVmJcFCd7IDy/qIQjMQTxh?= =?us-ascii?Q?v6JfnWoicbx0/6wcO4Tdt5o5orUSfwTiC1xFC9S05VdidzvQeKrLIKf6CTkM?= =?us-ascii?Q?ZOl32faJRD+5ZIu4yzvBp1d5pHDJDTBYGyhCvzkizw4CE2CngorUGD2jVeWx?= =?us-ascii?Q?Q7xFEne3qVtp+WoT9Y+tclw4opqi/kQU0ZQtQ//+Dz7IS2xDqRXC7dRNZQhR?= =?us-ascii?Q?ppLdVKkUtkuiP9pRhSPjSov8BappJ7A0rVNuNBOkeKrX+yKUJkaOx9brV2tF?= =?us-ascii?Q?f08EMHII4egJJkWxTuGcAN3ZI61Ve7QZM/ATlTMZDJeZ2c8qFAI5OBRhsPAu?= =?us-ascii?Q?XRBMno1DdT0xvXSSRXm37YYXxOQAP5NNLbocpizwyPAg1INAglOhQgAd9vT+?= =?us-ascii?Q?e9Xi9BjyFplILPPhgh5e6lFGFuW6t9z0nJJ39X4sSgS8yyw8EotR3/xBs8xv?= =?us-ascii?Q?R+CsNDI70GZs+GhVJNvRwCoY3jSO5X+Uorc4UcDNFTnp9fjCWu3iF4YXsErn?= =?us-ascii?Q?/7QmVg1FDwha4T7YKBPZiZgnblz9ndLd3ygtv78huPtJRG+ZUzKFfrESFk3/?= =?us-ascii?Q?11dQUZ6IzhC1s4J0+WD25ihb2mgT7tVU1NP06v9arPsRVOapUfc2ZdCeadTH?= =?us-ascii?Q?4eGq57y6nzMJK7AXWjVYogUVHqF0AmqZRz8TDgryqYFoN+dasJ0/tPkHdaqJ?= =?us-ascii?Q?ENSReIXssY1FILNIWe98v5KwXBrqf9iptoA8ITSOetttq7cI/UoQngEOpbdw?= =?us-ascii?Q?edkpyMduOZ1DZklnsqPNuVRDBDIKnXfHgddHrIeuIGZ5Q3FDZPxRBk5iSBfk?= =?us-ascii?Q?yelOHtZVXa24FcuwsWC8gZ/P6ZkYqEAT21DK0jx3600o+pMLHKxr7eqO6kEN?= =?us-ascii?Q?99sy9oKa2w1wMVlu4RbuJiNcr6STefkK2szJDBJucSWbhldom0ERtB0X+HRl?= =?us-ascii?Q?+rHbmF/YUV/MS8W7lpj/UvWw4wSyix+lgUPpsZkk/cQ+NKoESTFu/9yDlQrF?= =?us-ascii?Q?dID8FTB06ALpPDVBJMhXcfpbJg617uGTuNmIZYqmcTI5Fz08ToM8erZB9g/q?= =?us-ascii?Q?xF5bg0Mm7VBTdeWdlhGfpI6InDic8rQ2IHZ1SqPbty8oqq2Nxp6mfiA0Km/o?= =?us-ascii?Q?VmbBgbBuDJ5Hm2EUU3ivE6H9vBLl+yehcLkP0yVDHTlTPgMEldRYSsfC7LBQ?= =?us-ascii?Q?Wcz+HI8p4B9YB4GMAXSw+naJnu3zzgvURFlN6KvMYm/3dFLHWgUjzShW9qEy?= =?us-ascii?Q?yhM3k44K6RKQiPy+d94sSjZq+Pk3YEmLuFne+hlLCrDtApd9PqiGf3ufKyoy?= =?us-ascii?Q?lkY/WfX20bY9aVhaz5VjZTbZxP0hX6ycIQVtB3mRZs3qc8mNWAyzibDZk2dX?= =?us-ascii?Q?QlO1d748XCtbNbgHKzMNBQTnYD8J7rOfAQYbAuw4mWjgUhCrB6MN/ejIcusS?= =?us-ascii?Q?HGwFmynqKOmGlWkmsWo0/3S0Vf5lSNtcoX0L+K4uffACkHM1INFK1foT5bdp?= =?us-ascii?Q?PXEiXpzMvZOYW2zvfd6K6ji/Xms2aAzecguOr4dALr/7H+GrJSj3Pzvo7//z?= =?us-ascii?Q?7nUJyRIJthI6dCSnhuyI0Fg4mo+FYVJITet3+96jRUBwCR6Yz5rxtQQX7k6p?= =?us-ascii?Q?mvKBe1mTXXmowqnA9jLplse8THpnyTGz6u5HlSqxHr2wYerXnNu+?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: ae481a7f-2536-447b-0de7-08df0cebc398 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:44.8925 (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: tDpkj+e2UYzMvfaHAmIGMqN9orfxlYLWeZ8TAXo1XYwgWDhRmESr8XxwoMJQV2yKnlOKMT1rsLMeaZMQehlHRA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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. Signed-off-by: Koichiro Den --- 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 55a20ae9a85e..944d38c7efd3 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -487,6 +487,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; @@ -514,7 +515,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'); @@ -609,7 +612,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); @@ -917,9 +920,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_qp_link_cleanup(struct ntb_transport_qp *qp) @@ -2487,8 +2493,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 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 89EB63A48C8 for ; Mon, 7 Sep 2026 14:24:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791092; cv=fail; b=APGN0KNsMURWwnbDToiHrs8msqSWRire+Gie5FFbIjjCDvwjaiOBaXXT1P30MVAycIIIq0DDe69va6zguVn8h4o4hsviZJZkfae2WC1yW2+W96vWCk8Hq78DgxFow5m7Uw6vQ1Yba17jWkCI+CkOui+AXAcvxlg9cbk6yUEf1Yc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791092; c=relaxed/simple; bh=QRQuzHVbA2WiPk1hCL7dyD/tUDWq4gyP8+WFzOQC1jc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZidzBZ18JX65HBPOlKJ2647g4NA/u+Gr2a8eW2pJLwhpgfAEYKG2eba2whjRX9RMYQdszlsIiLK1Q96FEjyQB9NVR4Yw/avcDHqvOwCtFOV9+uWvm2nod5shR0slsV2TKOJzAogGLZA9bS5hafsuanWeIDfmL5dtshGaQo6p5Uc= 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=Gsi4JzTf; arc=fail smtp.client-ip=52.101.125.126 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="Gsi4JzTf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gf0AiJE1Z5UiNbM9J/SL6dszyRfGGayn3JiYJlSI4mlaFqli0gJjPPm1PtawX2hr81deAodpzUOfl05+1Jg2VrXUuXpYkKXPiKbgIDVOac89X2lgZBrFeidCMLU+YKQatIHjXeSpe2kaiJAN5uj4yUuG6NIVGdhJsaBjWQRt2Kw2j5Mv42hL6NZbDiqJWQm0IwTx/aKp1pWgT3iyUAcOIyEDMTxYpyRdXzOjt99MEBJ0gFjlNXPJErihK5yfnvp0j6wQYqdqIDI9C0hK3RHGOr7avw2zwEV60KH5EIXedIZlK1GiALupmP8phYqWaJXs+ZeUbzH49ukfYPjZ4dbQ/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qrv8QER681hTdSgJ8WwkcdpOlc8sRPqLG+iAjCqknmI=; b=t99j61bl5fycW2XxSndc1tAyNDkfM3QSitOT4eCW0UjQ3LDIEcETD2Y2oa870OHABMV+IBtuPywNeJFSMVJQmfu9A88WpLgqc2Zb1A/1/IqsWqVx9A2UGpUL04/f0GqBpDMBNCjBcQykw8SG1HODG4k4tbrAhAXIbu/NqHJJ98JgEFSXcX0CzeHixFyxVw+cwlCGQptfU6ZXXzo/LMCIB0O1OEjnwfMqTF//yH7uCJl1LP+sZA/OS9x65N84cksqIuuIrY+zs/Srgx+A8dTYQ/iw/b/SgXgfRi9MCjuDsP2Q2CjwJ4+dvKX/c6B+yc8eKsPmGDEG1LEF3IhMgQGQmQ== 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=qrv8QER681hTdSgJ8WwkcdpOlc8sRPqLG+iAjCqknmI=; b=Gsi4JzTfs0C8PxoJWWmyNG0WQy0/kjqB8GuceY/cf0cSB8yk8pBmxLpvr3C/R4K9W4HoQdu+ktlp5FD1URRO4/hSouKdYUOhIixUlNh/EuMklAVcUB9rP/YvchqM65MR06wJJp/dFBjFTpiW5Cs0D7FE0MJKTJOjFWKvRy9mFWw= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 04/11] NTB: ntb_transport: Clear QP pointers when freeing an MW Date: Mon, 7 Sep 2026 23:24:22 +0900 Message-ID: <20260907142429.951930-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0126.jpnprd01.prod.outlook.com (2603:1096:400:26d::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: c2d88e72-b4ff-4d8d-c672-08df0cebc416 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|6133799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: N9Fn7uHi0yQkJtIf1oRAfxWjEtYjbJF9FwvlVpZKUb43C1DOnIjick8kFIS6/lSxqo+93cOg3Zzd0gzgJQm8MpL5bzG/yQwOqIMzi1FgF4mHmJa8Cuikn6eYyFtqEQrChnE3ktxQ0Hf/sjlJzgATEtmXT4cDycJj9wdPzIWPDHzG6ZiQNgL37LKzpnYXbwiEdRuub7Q23iAp7evXeR5yffLIcXg9tg6pDbhFbta4j1A8sxstxJQG+8iLLGOj1TvocqLMnj4mei/+Wbcd3bUwhcJMEgWpzJfAZ4o816jiJjUZfNgfodi4WMrayGVeQyaiC40bzUifpvrpxJDPrSzomXL/wSexupA/IXVNYtMuvHbY4FvQh2s3d8ogqwHDLgTE/5UYd4M3kOicpb4wtDEkHzrjMKEqMLtLnbWo49EtqTlXr2COKtH25twZMIKbEE+yWKiwY9r7eYJ41EbXXzzCCb1q5iQeDq2mKsfDdLzdRiPKdExP9luojB35BmSsGsEZWOmH6EBuXBlcV0i+HisIa1I+Vuk2/e2NjzC6APhzSP9IZfA5/Nswbk79LlUBWbhfEBwQO7b7Voebv2Fy4dGcnX0gjIhEDi80amiysExF2BxidqqfKVJxeKeh6cw2SleGfsnKG0PQ7AfY7TbrAHm9eIqIbwyU+Ycj/l/e5zZMyuo= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(6133799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?02/nmzhh6s10bv69sMgbK2vf4RKQgY1V2Em6GvbjPFGf8YbJZMPKIWbuG1mB?= =?us-ascii?Q?jjKUN9nSgkJ0c/A7u1lEhOe1OlEshTxg0W4Kk7bWM6HdwUqYd2xLjFK6HWYi?= =?us-ascii?Q?i2WxaZRIxK63w3euw9DOAya4Y7x+EI1cZNJJEcl30854E4r2PxDf/EjNLdHk?= =?us-ascii?Q?6C1iiAZlVB7tp40j8fPSvQtMPYK0goBSTEtKE/KeP4OlGO4P72gUHqVxP0Su?= =?us-ascii?Q?LC/fITViq9AenDzUD7VVKFWMblkd4y/d2AVDwlAfn0BQbJor1/ydcZKolrci?= =?us-ascii?Q?D+UHQoFc361InyB2ircM1fvo8Xp57VRZ1LPUqapvdbrZ8ZVnNRdISExHFhLf?= =?us-ascii?Q?3ivzPfI7OMDCDwYmR/E+Ku3Hte+JrMPuFqjMdgT3jdTSIABDg0KTwfmmdG/v?= =?us-ascii?Q?Dud1HUwx7iazR1q5dXsfhM8bQSzgUoykVcNdFbii1Hzs8MemzHJVK0rGXl87?= =?us-ascii?Q?ou2dyqLNhlYIza2iReG/R/BePTURpeQlOexDzEAQ94Ez01yGonzjc26uicNv?= =?us-ascii?Q?V/kXdJEqQJMO3txp3OS6Wjjb/ULdCTgVMtCpSvBdlWhxPRwNSYBRFPTUOZMY?= =?us-ascii?Q?6d8wP+/Oc1c7vWNJk0m9W67WQuDPZpYa8gESPrJeZcHzBpqr9x9eisKMG943?= =?us-ascii?Q?oTvUuAkWI8EOOEz2UQiDlSmIeU4lAwC/w/7LKVHEaoWQZjkEePRM6day3doR?= =?us-ascii?Q?eEsfXG3KKsAB3WliXDzl8jgOAKMeMm3+klwvrUeZtirOanDuaGJyZ9GD94Zl?= =?us-ascii?Q?3nON/z90mCEyLrVjKPElGjoS2n5oSUZXzKNq3YHpKX3KhbJuiIbb5c8RtElz?= =?us-ascii?Q?Dpx4Ttkm13e6O5cNsDqIn2Lg4JCzyoRSX4hQqRHmj4KRv7ZNshFRIZYsC/sN?= =?us-ascii?Q?VN45nMtWeW69P+/1IoEdqQejTdLxlXmg79SFmFQzk6PRjxArNDxZ+e1rnmu8?= =?us-ascii?Q?L5966RvcjxU4qj9fZu8C/2UGeO8t/ai7tgvcFxwnUbCTsiFvTm2aAn0q6ZvV?= =?us-ascii?Q?oBWdbwG4Dc3cbEv8LmGZHGaNKYWiEdE2hHAXTO5qIzJnn5pcAzwD10J+joPP?= =?us-ascii?Q?yDxhI8tTNdXXstEiOr7pk2afhLA8Jyi4UuRFk+MzhTECKsM4DiC5r8DnsM0F?= =?us-ascii?Q?6ohE/y5UEjYZevoeVNb+qGXzepVOQ8YWkvJT1u12AKAku0mHdYHwaEupAwCA?= =?us-ascii?Q?Ou8Avxcc+oGi935UvW5gN6qRJxzaytOQ+FakhGVPjY4ULEBOAJepeGuzI5AK?= =?us-ascii?Q?u/xG3qyUQp+XyxJLBwAqWvU+qgz7qhd5XJLYOeYZRaKltTnDOP8P9P90/gLx?= =?us-ascii?Q?t+mA7Gpggn4+dIjW7QU1IC+vW4sEWM28gO43hgnJzPDCyzZQiZv0uAjl9NXb?= =?us-ascii?Q?6GASK7OmrnYL2XRc3ySsGhnQrN43cXHMm+ehnSoRE4Voccq21WrJEiFPkX2w?= =?us-ascii?Q?MTk+Aq9Gakr2u9Kfrl3HXhQM8X06yogwARkaxjitl7CQvUeMcv/6LTuU75MX?= =?us-ascii?Q?cpDZMIOeqTaPMSj20gk/u3apn95wI0YleNvlHBnxPeR/7+S4RufzvUXqPRQB?= =?us-ascii?Q?jA1hhj2v6cnENNvvHX0Qdgm1Bb6DEIJk+kZoOBncZo8IyPcg5oi2L2pEelPO?= =?us-ascii?Q?j2EOX8S8Nvp+eDTTbVTt9n+4nI0aMREr1rix05FX59iiGK6k8WhIXdWU7igl?= =?us-ascii?Q?xPq15cbjVDPj0wqCRraqrkREmvYvJwLIomfa7ida7YHRKhUQ8oPOBAaMjhrv?= =?us-ascii?Q?RJnfi5Sel4u9hYi12ERfZPd9RvtmtR8fO5uR7KujSgw50SPn0dXo?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c2d88e72-b4ff-4d8d-c672-08df0cebc416 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:45.7029 (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: mUvOKmaTQYw2ZZB7VFtzStCbHMwoOy0ckGanTMnp9tJXtLo6EiEyDHujfUFENIQu5A1jQGrdn4/vLaiwmECuxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 944d38c7efd3..763e4bb175a3 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -764,10 +764,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 23:10:00 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021078.outbound.protection.outlook.com [40.107.74.78]) (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 966D73A257E for ; Mon, 7 Sep 2026 14:24:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791093; cv=fail; b=D3AG/5F2Msl6wRSl6/Utgeh7D4NTsQp7sY9QZwvLSl76HuEdNvUmvujSPzr3HyvQZigbhe3pFwpx9BqpVcAgUGseWyGjjtZXgmO3YQktO1R2AR+2cyi15jtwzN7KNpcis7eRiAJOC6NcBPeHp7TLfM45ZOa350Ys73Iz6trpDWg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791093; c=relaxed/simple; bh=ayXdW4Tojsh4e/F0NbFE7nZ8ZtJRIvgqSQ8GBBTGbTk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fHzsyxMA0aOiTxwkfVyLan4cbqaNC330vZaiEd8pY2EqvNwzhxHM4CB5qOZexX0aruzImdFm/Mm3pOEiwR1efcu/W/d2mFo1Ka/ygEE0uue9A7hgMAtrRVCDsustQtww3AFbIkYARTresgm/m6UmcW35zvHFR6WSijP+Nx4UGgs= 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=AZOM8MDB; arc=fail smtp.client-ip=40.107.74.78 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="AZOM8MDB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wxN7FgD7C4N2V3THACj2nqxdW/BSdBeaSMaNx2Wjw1ztmPdjA9nGwJMUwWHsoR0/03r6/d/nFSFkOKGdwpS510yzAlsXXHAhrmIMofqcydelBH4eQGO9+Ka6ziVJ+LpgjJMBaBCl6xvLmaniEIh+pRHBZRlo0mc42a5kLzeu/ioCu/bK3/hoYbEsr2K2ZHdi5KqDnuwgOBGrOVXBcnjpLlxTjEDRKl3maVuAqDAdYE0SFGwbh27Opnh3fusl/r81xUZ1yjfSMeIHSgJiUrhryB88aIMytEjtQRZ2vzOs4m+Da8b2l6PTGb7Cpza1MZU0VKoUb7l5w0fBJLYCaO/FwA== 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=tX5ZeXG/2aZ16HjrvwqndfRSuPtc6MnXhz/QBMnQ5Do=; b=Tcz8hpVNAO6an2qykVpuW9x0eoYkd2jnslIKlcXY1CbEhMR8jzZrraEWbBUPsB3rpJkNH1E2kTNVSt8/tPRmwTDFeHbPb20C0wKDEC6FzCTfD+E6k0sCRpMOua9+aN0UEqA/4S1pEgm+CSPvi6a/AsqPAq8AcSqT2E/5pzVWJkRtB33on6YC7E6wrXfd+k66tFM9AzCPkjKWqrp1mHOifchh8b6JZM5CY0yBJc+DL3jkzkLH4QS2qqaRJB4GvsLMEQfKevG2Gu/89WjXVPDlyN2hNNKiqlrRGkMZVHe8x0A1eCSvlFAQBbwmQo5qmxPirihdgkQfA5lsZwKVYfgMkQ== 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=tX5ZeXG/2aZ16HjrvwqndfRSuPtc6MnXhz/QBMnQ5Do=; b=AZOM8MDB76iZeX9nlYKTdLusodwHYmdYHT2vtNSWmpVV/2ZCm2LQsxjwYx5bXTPhM099+gJkEBwSOvn1cUMIdXm8ZDnBRXWBErcxypRxeUFF+fF1dSLO6JJ0KOQcC0WAVKu9KzeSee7eghelxM4lL7WmOvpKEWp/IVHSS5toY5Y= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 05/11] NTB: ntb_transport: Avoid deadlock when cancelling link work Date: Mon, 7 Sep 2026 23:24:23 +0900 Message-ID: <20260907142429.951930-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0009.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:386::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: a2e4a043-309b-40ab-7b09-08df0cebc4ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|6133799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: TyFxCbw9T7ljl6xBqCosp165JwSlAHK4qc+D1pQaexXA198KUEF5S4co6Y52v7596fwxtRdFOysWOGokRgsB6lBCghrPJ9Sf2Q6Fq2rn1bqZ8fRfgrDqNy12V7A+IXjujlFaDJbLzBOw6t0cYK7BzPu1iPR7xP3Z8llOQihZ6F4EoyVa2mZK7sNwZXWg2gfORRc+VVyj+mJnN8I+SW2RzZcOKzfenXhE/QrrJDj7yWUeF0AkmHyFsSmcWCCAhUlwG+Km3lQiKRkOrjbdVB75VyRTchtZd7VZ0DpT9ZRVKxI2SP638HfQdU9+9oE8uNqh7v6agm3cKXU03SExWXCWktiB0OHOaYKbqozQjOREPBQ1suQsr8H+PvImK2JNMUtmlpCG7ikv+tKcx0fLRqcGknuZ/rOyteDXePxg+rl0pY61B+3jauvDnjQly8YVEn3w0m+GMZdoVxppHPz++XDBH38H2WdYIle7+9jp/3nIIGDLp+xmG5IgZIJL0mKZ5FZTgMpgMPlShUymtVQAo9LSMiNDwG60p4SLOTYXLnF0IQlTluZJWQvjpdAiv0XbCdIc+eJwpFrCrefCG1bfNkYAq3/41VColjw6plyuYwG2O4EXaBto05Dvg7PFcB2CZNbqSLXQLCu6/+f1JKumUhvyRZ+WqdUwullpmof+qHB/Oqc= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(6133799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2/8jSbe5yDybOaMtEisOWeJ6402evOHom7iaAjALfkY5qVcrAVxSgPTtcXGA?= =?us-ascii?Q?UrLc84305pLze6pXgtegSGzAJAlGRJbpGFDQxiHHPgeFur1ph5yTkMkHH+Z2?= =?us-ascii?Q?LrlolByOQSEdM2Y//z58Ccj2apUlC9YN6qVQq7Qir5Pzq6QYTlTs6CfctUv3?= =?us-ascii?Q?iUW4/XjcBBY7KkcV1qfaC+98ylFCDGeJ3lhIwQskUnHShqCqXmdvln6NCZGv?= =?us-ascii?Q?0f+r1pnSxq7JyQTM63JqgHWY0QOjKL0xHnJFjB3WOR9FNw3LbuY32YfZJxY3?= =?us-ascii?Q?lRahAyj/GWRilJl8mNt4bDRFyEMu5sB1jCb75HcTxVipJ82xeCfpSaByaGsq?= =?us-ascii?Q?LQ7yNsNNHmzmJrrApLOWz1v+9BTUt03iPnPd+DyzHSVJgMjPlVqfUVgVfHtf?= =?us-ascii?Q?LwK4xyHtUxmgb6YAYKx0QdvgqPtcU3EpBkwFKMPmXE2sQqhYFJ13DK22dQl+?= =?us-ascii?Q?OFrhhUKtfymvLeZER8ns/MoybzYD40rsgLYS2l1gEsorRFFv8NJtawypgs5w?= =?us-ascii?Q?gWTK3G1BRsltHICBHmufNlFUox8s8217w6i7q/FjW+Ss6VOOZIhcjn5UFAre?= =?us-ascii?Q?8r564izo21AVZ96g4VGhXsp7ZGAtwDGxMnQ70Th9XiSuEy7RlOBOI7PATGdJ?= =?us-ascii?Q?XFS+LTl03DxVTKy8RPwx7yY/Wz/gBl8Ok3fcF8BxdbQMzYhmWiRSp6TP5xlD?= =?us-ascii?Q?VUG/xoIpaD6V8H3RW+h9prDbjmwaQLv5gy5mL4UCCxDzWl2YAC9I13a9M2za?= =?us-ascii?Q?zV6+6tgeG1b31ih27zK24lilw8aGEoExZRVBLV/C1VDH8PNmg/OBxrdkjHdF?= =?us-ascii?Q?2+Se6lk/3AavszrEhH2Y12YbfChccXwXy8ljH7PoOwY9uacjlMdojinA1nkI?= =?us-ascii?Q?Imjx3M8X2xooRQ22EUyOO4qKgZ8oJJAHdRXzDtTRbOlXkeyVCWDo+wrv9xx1?= =?us-ascii?Q?ZWeDlly2rVwsM8lJuIHai8TOaea2032O6jFhXp0d70UvFUjRV13Y9bC1JUOu?= =?us-ascii?Q?XIDCYYUK56a6YkFnt7+iCpj5beGwfT+gOKJtIcpDVb4wEvsjGp1v6OHMNYX/?= =?us-ascii?Q?XTY79POkQbdRZCGjJ+WRt4hrFYoQNpdFN/IcOu2T46kFiPxv9NkTlhBwM1xD?= =?us-ascii?Q?Ek9Tz72O0rr8gJOFLTenwgOL1dDbXWGApH0r5DqSfpIZt1C1cqXjb7naKuof?= =?us-ascii?Q?FSjVUfVnMnSWYvu0uINuazlTk2il1tta1G07jJrqdM4b9KBXZFtGmILB0NMd?= =?us-ascii?Q?riFx3zq7CWJ0nMIAaACJx0JS1alah9MMX10SI8mQtNtiQXCyYP7F3z5+hu6L?= =?us-ascii?Q?J3LyPm/0fvjiU9/Df6vf/dMq6KnDRXeLyIgrOmN/T8vlfoGrr9H6TUW2SWpL?= =?us-ascii?Q?Ek6keKC5sFpnqBuwgoF49ZdR5UZMAYKwpKI/Y7pi+BdpFiUL82VCd6ZiJBqU?= =?us-ascii?Q?3J5uYdxtEGpIXl+bR5fCpjHSPM1Gm59YtWrzH+OAKxqNaWodeydO2x05orcv?= =?us-ascii?Q?NFeglbLAXJCYu2sTACg4Xd5sV35n8TzTXK5E7Xq6tcAkbSmmDN21WJaz4t4f?= =?us-ascii?Q?t8Z+mYS4mwhFI/RSPCRYT2qwa8sqJaQMLUcUNE2m8UKfKRtCmKMd+3SVcM3z?= =?us-ascii?Q?qWU2it/FAhlxlrIyY16MW2KJBTeYVU1qSrss5HOQ8zQ9sr8Q40fz6hlz9Exh?= =?us-ascii?Q?MWdtuhzvpAVJetko8CEV6N04wihE3vFnDxYYuovF3KQJus+r6pCCo1ng508d?= =?us-ascii?Q?MYV/A48iIMg1GMkON3Mr3D/5pQRJ+uo+K+AsnpvYloGy05BRK6du?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a2e4a043-309b-40ab-7b09-08df0cebc4ad X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:46.7008 (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: 1gpdVAzvQDiZq42fTZ7kDD9iV/9eRCid3jJvPVAscTWhlymHdBzLKIWsozbc7lkB3ccDrnTNoxo8orPqDvvlEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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.") Signed-off-by: Koichiro Den --- 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 763e4bb175a3..c8e7fc774b4f 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -973,6 +973,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 @@ -985,9 +994,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 @@ -1005,7 +1011,6 @@ static void ntb_transport_link_cleanup_work(struct wo= rk_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 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 612783A7F46 for ; Mon, 7 Sep 2026 14:24:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791094; cv=fail; b=ge5I8XeSrVbObANS48cqWuTisEtsQMrvPBFpRYoiZHjtJyRXnwtMDBwYVEUXVm1Zr/WwIXZAqZQRzh6NykpGFdGADWhSa2UgOuNLG+K78UY509GL50NvlydSqk4kS42gw2bpYY6kaZYlzj7Q6eZUmz1CvxZF5U1pi1hmC1i3LGM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791094; c=relaxed/simple; bh=T/3TDedQj68pvJBWIdROG2PlY7D0SJa0YVr5Y7uJvzI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=asqPs6UNZ2necSOUaJ4HmRKojVEr7tj76BWLGEQo2iSvDnTsELlYr4ezinIOXTr8AAUY/sG76ZXbwAkJJy58XCxlmxcYE/JE3KAMdk/Q1fZPAAYqTpx/zVx1SFgWcZRMvzzbgTv/m5co7Hha/PDCRtnUZX3uOO1Mm4tgIFeHU1Y= 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=PVR2Ae4m; arc=fail smtp.client-ip=52.101.125.126 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="PVR2Ae4m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LtZYjfjA/uYAyLpySv9R3oIPzuUv4c0qF7wYoBxRcRIX+j+quB47SdQRSY3XyFPpzCyjjG9TwZFXP0JJ4z3c712We7JeIcfj183VNzyXcW9kRpljB51r7DWkfjnat56243LKO1IXW/BO2v2GYp2Ly9A/ivW676siWKSVu/ucVRxc41LI5RyJW7uoqCK8ovbJIsToUL1U799+5Gh7vHL++5zuduXj2mT++cu+HD8c0Iznjrkme/Upl8/L7UJ8osz45g1ZH6AVgX9jox7yO4VGTppo82tc/jUWj63ffGFpqMshTKpdZyo1fZz59qZgC5p8+uLr3FJogQLuOaksbiINOg== 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=pnCPzDt7Egu0MfhRa0KD83GyM52Kj+hgoj8kQoDhNNw=; b=Or9MpTo76IrrTl7xFbcCFnymND3qLB3Kb1xa78qSJb9CbaZsJhjbOG1fCit92liSArTSUOp3JWtPqUN0DEAOIt69bMyLr63voJToAQX8Qki5sylYMtZU2kqWajWxkjNH9z67+I3QkBbIzJa3YHDbx4ydTTt499U4H92N9weywD0qsZT0DGPlbsZCJerFCr6Q6t8tIQ9Z0pdrFPRxJxwb4OSbtVThRr+S9eHIGNlIBMEp279CTaLjZwMifhhVg1ju1ZPHm0N0t0IYzA3gFVMOh8MpFNJ22rpwWIxxekihT7oBLmgGXFxBar4DUyrdpTpAO7WW3QUbRavZVrAdbJY3Xg== 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=pnCPzDt7Egu0MfhRa0KD83GyM52Kj+hgoj8kQoDhNNw=; b=PVR2Ae4mlAkWv3iPcII2MnVXTtUy8CsnnQ3B5l049+VOi/4htzdZhQhBSMKBG9+P+lSfgPm1/XsgexYM0xWsi5FLLYYQb0XoQWI9Vbe4LxI0G0Nx6G56TtSVLXmN4j9xs5f7t6AraSUUNbwqAd0KLzSUq0O7nuN8S9UYWHuX50Y= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24:47 +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.0382.014; Mon, 7 Sep 2026 14:24:47 +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 06/11] NTB: ntb_transport: Publish link state after QP setup Date: Mon, 7 Sep 2026 23:24:24 +0900 Message-ID: <20260907142429.951930-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0122.jpnprd01.prod.outlook.com (2603:1096:400:26d::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: e6585ac2-1c52-4566-a1be-08df0cebc51c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: j8HgbUxJ3tIxvTbyRvwP0BoJSvXEZpq9zRWq36m9L01MHJr1TXe9LlflKAg4O/U8hS2C+oxphaQaiVXdEpzSpTsw0689YAxpyaP58ZFxZQOH1H0n1t/Z18TE2JcRss9RtL2or9fFIWHrbFdn2jQhG1wNGDVLgJKENj+jvjxtlpGU1eH4sXDdC0pbfsSA3P7nOo5VzZikhbsFT+IGSPaau0pYHWeK0iXj+I3BZqHu3FlqEYj1fuY5aOXjI6NWK+W+e3eO269k50BYpHlswfKVn93hYLxIBItbqnPw7UMBH1NwmlFTtXIp0/GHxRAwtBuoaT1NpEpSXEIHgXvsNiYOnobnEdVhmaEGpD1tLEfDpA/FjBOz8c0p1c4OqeDlSVxtAN2ne9oa9k3acJvsm5nx5nryvR7Ez2o+A5tZQSu5C4Cp6BFKpcEOs96pg6HnvSVeZfcGvRZ5xD0UtvraeQGh089q8a3xxxH6BoZVdbg3cr2N45b4O6HktJypQnikd1NGrxTz5SXWQv7AGan/ee2rIfEFRKoy2lWU4PAvIjlHgoagmvCH2GHbUzU4h7JE45V6OL7FM3t7fr9NFnMTv7A1I2e3HxK5rCqGZb7jREvImUVdwseq9I9RN7/lowi0eSCJa0ucyzG/zyqvGnFrDgPTHsinEq8XzGh1IOZwo5JtfZI= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Q+f6HOou7MdcyMVTSV63mOku/KMFcT8HIGj5aM24ON9yxn09p3F+EN9s+cBx?= =?us-ascii?Q?OURi/PQQrRGFVPYJiw3ZIR86lkwtoz07WucCYEw2s3wz0B+y774rZwZcXuw+?= =?us-ascii?Q?3kKMMCAU1cPB1whMbpcYJp9vQHALiL1v3ARsWdqCGrLg3ReJHi5nHTjV247i?= =?us-ascii?Q?3SGApix6MGJnX0tMJL6YMsogzvlO6B8j5FUa66fpzOTd16B29L4csMz1Htm3?= =?us-ascii?Q?IhlYUBKlotw0qrghphMufQ3ZPZ/ti/lpMEkJprkjHkPlQC+91AfNadF2nzCh?= =?us-ascii?Q?I7c1E+vsfD2dV/WvRfUh2DI6vp1+Xi+gwZNdGgAM/PO8fBiy07PMjK0rRoaW?= =?us-ascii?Q?bfGoxxQv+Rp/5GUxy/TWqa9fxR+FdJUrm5lp0hmcYXirEscpqHOQf/Qrzn0c?= =?us-ascii?Q?jQJ6Hf8sfkD9xsjveiDqF+euenc2Hm5eRYTSalIfHFOQ1EYxuEqRwIc2MIL9?= =?us-ascii?Q?Qoq7X+bLCnN4VA1PSfBGFUqQGTAA/9dnjGea92bFfjjM2+VksXLwn7sf7nG8?= =?us-ascii?Q?/Q89pZ5qEC/r+yyox8ovTUmgK+seD6/6BwiQMs7T7Lu7n3/bGu6SMeoAJWno?= =?us-ascii?Q?seX6R6gBWskxnKMwnpvDsW0lMZf3EEBN7uufISA5H4BZlkFXFu4XndQjrmJo?= =?us-ascii?Q?01aLu/BwNKlJrwKBtH82xXuEuQ+VXvoqijqmHVEgd3hNxYcgeb9toqnAX4Vc?= =?us-ascii?Q?aOn5RrUpq71tGaEW0UezBqvP9BWZQXwFawzGNYr3KqUf/4ljVomactxreG8T?= =?us-ascii?Q?2vdMf8adw3fLPdrO6keAsBEJD7AevqIteREQhSqb1JATfTj6Y6bPnfJo5DfT?= =?us-ascii?Q?OgMtv7+XnEVpI3v0vxoYeumMSTg3SaUhTeYUT+XQGQNPBJVH8Pm+hChZYHRO?= =?us-ascii?Q?+0emssXTo/DJiR6khqjttEbIsMi8L1wzeNrO6rDz23uXPFymvuIF8viz2e6B?= =?us-ascii?Q?q4QIhh5PE40KvKyNgEKr+xnaOkghdNLkrfdcUuVnfsBdcz+n63S9LMHECvoS?= =?us-ascii?Q?mTdqlX8na63Pzm3CAxfMcnaqv43DkkvFIwjrYd/9R+FVrgs6YzcOKdQ/3jYr?= =?us-ascii?Q?bXggzYMztgPVUQawO9+PPmumztmCYu/pMK2g8DWcFnUn+IRZWn7wnqs67hiY?= =?us-ascii?Q?mzUGy++HFy6wB/racH9EIJ9ertyaDiodjIV84q7oLKd0zyHBRy/mRc9zogKA?= =?us-ascii?Q?kyzUDuGh2630nLnMcmMg8eaoNwyvStHJQQgcQx90gzlZh2ID6Uu16ZGMX4dO?= =?us-ascii?Q?dnyYxFfNaRX8jekJy/VFIUJlwbjWc4LSAYsmUzpVraQXPzbiN1ex+H3XMWzd?= =?us-ascii?Q?3xEXVBHP01TiBhIZJQtjm8JIj1APtl4PJ5MDUn4jq+4isLxsfN7qUtQuYm8a?= =?us-ascii?Q?nhXUe948u56nPsn+pGkxSB7qqgtcbnfFVm+acolzRmPKemCIJWf4dx/MiNb1?= =?us-ascii?Q?Z1NKyM5dhFKMW4wWbdw2YqWq9ecY2//nsutwlCJQszrKM9lts/UNEdo2LNDx?= =?us-ascii?Q?sJMwmYfgVzUBOjCmhSmvygAcJXr+L2AbxANEaXpUJ05iK6KR22TuwjVKAnB0?= =?us-ascii?Q?URI4iEMKV7hC7h8LYop7I8SrSXvWFCGh46kqc6X2OugkFLdp0B/IHk+Amr6y?= =?us-ascii?Q?XwRnVo/gMeU6Gp0VIUIuLnJ/AEM+ADbSj4d9Nm+TxSkgSm7VpmncKpES3Lsc?= =?us-ascii?Q?WTgqcqD/EglGTBzzpyDJj4DQCiaNI+3v23B2fc/z9Iu/cSucvvWvmZ9XgsdV?= =?us-ascii?Q?UKOC4dHoQ8f0Ze9f6QxT/eM1Wz/AAcN830qHmcBg60BDkwAIG/4H?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e6585ac2-1c52-4566-a1be-08df0cebc51c X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:47.4413 (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: yq9lKIqX5XuvVTiD3qSDi5Wpj2dbo3jchfCkGY/t7UvXEmNQaTpC9h60uyUY7e29DV+rgMeIrDCQv1A1XPYovg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Link: https://lore.kernel.org/r/anyKbq3mpLG4y7rb@SMW015318 Signed-off-by: Koichiro Den --- 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 c8e7fc774b4f..411017873a83 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -935,6 +935,16 @@ static void ntb_qp_link_down_reset(struct ntb_transpor= t_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; @@ -954,13 +964,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) @@ -1102,16 +1109,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; @@ -1159,9 +1169,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, @@ -2405,8 +2416,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 23:10:00 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021078.outbound.protection.outlook.com [40.107.74.78]) (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 4D7F739CD03 for ; Mon, 7 Sep 2026 14:24:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791094; cv=fail; b=UHuBHwn4EzlkWs3dzL9JqJ1Rfw7pKfknZ/9fP8DcC7Zk3FmMkqFgxa9iPYCjOBhg5oBf615UMiMEHzu8bTPYJglvEBy7oC0uVPz6hcdRRqoiwQTPB/5OEbQxZ8KFk8dBwZONB/g7EMWbz01++g6db8BkpTP3MSUuVFjgRnMtf1M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791094; c=relaxed/simple; bh=W+dPF7uVmeP/RTVLE3tpxqZQjEaSAF0uYIB3T2YNJXY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=VVybWx5yDeRtHUOIBKsXEJS4H7w/gijEXctdVpoOEjEUn0z+Ei5Ifh3uV4Qj+ud3ZWqMX0ACAk2Ec7x46Sv7biKZG8BjLLR6v5IJWIm7ZU3Nyqxea2EHCT8Me9S3dAs4RbbDOA6BQCkJD88nMIlmWF1aMnYlYtZ0AbLEvbOIGEU= 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=t5O2faNn; arc=fail smtp.client-ip=40.107.74.78 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="t5O2faNn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=njrAH0tjfp6ZxN7Kc7c5ppzGryaUDh/+nF0j9un20VrhJHulU9SsL8dMnh3W2Ynd0sdRJbvCHPxybMw13WyPgNWGQbDMFIOlqXfUcVxXdNU892SEFmOBF2K6lYReOFkqmT5zWRe7tmGKnjlwGTTwsKKsRBQngdlMsY6S2W07+1fgez/jyJNkwrFZrNJTmmhA4Jeq2it/MNWLJtrTTCEQ3Yw6l+4ckDCMGkt01MA7Oo0QA5KLs4CRVVn3tP/BfK30FeWIGXVDM7scZ8PiIGtw7CSIFqmI0D7lmWqj/XUTYs42kgIYxjmLDNFIItzyVwu/EcEAvvfhWb+c1g7nYbkzzA== 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=hPs/8mXqmZUROE3AO+YBQnuBjs3AqT34vklAaU4Rf6I=; b=NGu34OZYqcu1hPA6jfzMFIEpz+fGRgZztBamgOGPE9+Fzn41xiAwSTJ7YQ93/qKmrSnHuARyDzdOmfRp5+w62Baz/Esrixt75059NzWwqBmrRn/b6o7mi4XYkY6Xevjcs09HM1EhuLSlW8gk13AhQVQOC+gSwXF0b1NUS3HXLsg5Chc5CQWF61ISi6S/g3VjxPBqmHnGugSkxCB27R2UG/yDZK3oWfA2B3+yDV3V60qrQVA3CpwgeSZgIvzbfBZsrDvfGelLZFykCMStI1YYtIBqngVEu0tT6r02/IqYSQ5/su4l2FtJrkZezs0MsFa9iMxfeZnr2CzvYbield83CA== 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=hPs/8mXqmZUROE3AO+YBQnuBjs3AqT34vklAaU4Rf6I=; b=t5O2faNnqPGgGGQsEbbF837uToUW6JsL3zR5tA1pzzbCcEgEoE8X/puUjjfroUus16FEoy9qThXGfRc2EEoZ8jX8WYGjMbzKjExzo87XWhxncC3p6Bjc5lhLlmtCRzFmIV5jyW2aDduhs4bsrc/M0tAixKS+4+dUNeJm/kKnj8k= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 07/11] NTB: ntb_transport: Clear link state before QP cleanup Date: Mon, 7 Sep 2026 23:24:25 +0900 Message-ID: <20260907142429.951930-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0118.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:37c::14) 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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: 275f880f-78d9-4856-9c0c-08df0cebc5a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: yL0ppFsx/AvM+MqiGwqkiBKC0IC6Fk0xLw+QkHeSO3iZyC1l/VAA7eTpCNKNxhTjDXmvk6DYbcMPGODfm3hUwna65RlUr9EoJn8Bm2x12YIQEsntse7h9ysMQdaAVPVM2TJMN1LoLP9C7UDwTl/ukbwoVreeqsr161+8EvMxp3fnzvErSoH+Cl4y09Q2lJhHOMVab3bOSVe6OpMLyKJUMgxWTWyjAYHWAFpcQP+gx0ARycuxw12AAN8b7lVCW8VjzJqTJsGdflsQVlacC72m0nNgN340n+OgYmfi0sa5TyPVvS7AUME0OXhgUh0sLixX6kS83fS10vrgUz9TN+XEdD10Ti82w7gfUog5f+XMwpxWjheaGEocQJAbMFndSJhujC0HjoGAV2I39u/6N0edr1/GW5dD15Q+/qU5K2lcxQ/wjrhs7D118WZiyzoby46mnXf1PX0FhoWj2CduOXPPcnsoHAfuXASbAOMDroGT8zd+5XkGkgKa/NVsImP0mVsbofWyxKso84pW4H9iQ8mVfqCImX9TXNJY3+9NWgio3hIZuz0ZHDIxExFwtPlPg9GbiYllEQA5ZlOdJV4pRrsbI7ms4pdPiH7nHpPGeLD1mrnLuUhrotWWQLVXuDJ1gWXn 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5ps3+KHRgODuL7ylsejbOiS9WhuEXLrSbNAvQjUdmkr/u8xDpNMPsi2Yfm2a?= =?us-ascii?Q?25KnUB6vzTqcLjs9yielpCn1xo314vgW6jo9xWL2pmsosEnZAgemfCyXxTU/?= =?us-ascii?Q?JiyIB8wTNGAAdrUOazM2FHHgmMr9cvTOcJLmH2gYAO+9Q1ToaM0nlfAYJrxB?= =?us-ascii?Q?Jy2fUIyozVnQiA1kaJxGvG2VibEBNJEqB0G44BfmT3FgaN1k4WRPwS5uvq7m?= =?us-ascii?Q?8ORgeN5hICrPjwDyg6ViBXgVw/6FKChwJ6HIXhsmC3m6y2GNpykII3KyNgND?= =?us-ascii?Q?MgZN6goR4rhYBlbH2HnotICakiUBkY0jAfUbMuk0qTX2pZj5/LJYMglhvOjN?= =?us-ascii?Q?50GBItFcfT0g81uYPsbIbS5jXuAG9rN6fNwOAMeCq2Xrx6VEgI7TG1fPXcNH?= =?us-ascii?Q?E54W3SVe/5ZVFm6utm5J5ATyoDA0bzURdG9KpUr9ARoQYNyxHGYLfoF1byNq?= =?us-ascii?Q?W4czzVWtAT0Fo8sf7FnChjvGGVtRvI5eh5yrLOiR3GORmx+yoI9fK9muT2z3?= =?us-ascii?Q?TT7o7lMvhbjiQ2AV9tVvx6FLHJB3T9WowrUiGHfgSZ4LwQteOp/ezZE+LBdL?= =?us-ascii?Q?TX7cgBKG8NczeIPEy/0QedW0GrGKRh6YtrjhESnOjCV7w2+xHsTFfI8d8maM?= =?us-ascii?Q?VmFM3JwkMidftAks2V6JRFFVxH4xtZToxAXI1SP1kzilp4iLhCAYKgGgm+lO?= =?us-ascii?Q?sOp8KgqOYeVrDyX9+2wMM7WAfkOdDCaEBPCV3sRJdlXEYTyNfSi18VUGeZpE?= =?us-ascii?Q?7/4u82BvdHu1VlE6jsGQmHNNdqgNpgTjOICYsoa8f+SgBwji4IHVXBqO/GxR?= =?us-ascii?Q?uJ+MRAMs8sMMAl9cAbI2rJS6QqWa98IFiCryzXLd6iwOk7vgQsyBDRjF2f5e?= =?us-ascii?Q?SvJ726onpifv1sAfwvqOiTBVEdX9gelpqCoMGWD/OCVXqFHzrHd65wO5kgM2?= =?us-ascii?Q?bjnRlaeIsz0ITu2YmV2QCRirDtVH5Gyslymtip2rHihH6Gp3a0VXEFSdJL2B?= =?us-ascii?Q?C5vsgwpcxTiHoS1x6s+BTsvsGWxqpE5M53NAf1+ecelmK/SMA0ZRe2SOBEJv?= =?us-ascii?Q?bw0pwqiJqZh4jCmQl55JnTjwjUs+MGVhGL/N1RzeiuIg61ScBlbTmngcJigm?= =?us-ascii?Q?NT5OTiVRsZbDo6bQBFADkPZqEwioaOlktPbINHKKhaa4TzTLP9HXN7E+MyXO?= =?us-ascii?Q?sfzRwuntzkq1+zcNG0/3MRnB7wxAdr0Ai89G3c9IJXPWwb/mKO1wQlmJxFwu?= =?us-ascii?Q?Ckzhn1GlxVtn2ogxq67qWDROzuTaFfWHg+YIT2ehzIg29Emez/akmc8TLrqu?= =?us-ascii?Q?zWMyUEpJSAA7Aq833ag7VWGVR1JfWMQABTteiHBqf7/NHnkZNSJugTti+wjW?= =?us-ascii?Q?hHH3JKeCUYnF0nyYQcOb7egcqtZiKUbEsyoDryv7cfGLJOF4qz8d6O2qej0W?= =?us-ascii?Q?KiSKaJWjw145sQiVjBTHgtRKbLBPWF5b8Va+iQWLCim6H8bMb40OnON03Obe?= =?us-ascii?Q?Vd0hEpE6Oyv5ODhlrKwzChy6XcL2mDQDXIXX63k0NAbeU/h6FjY9TOsD6xiY?= =?us-ascii?Q?Oi9HMRO1MOQj+10WvqQ3tppkDMDk+6eXLSSwiVzVTgBHPH5AGeMr3GrW+zOL?= =?us-ascii?Q?JZ2ylgynFdxs1+oDR3GOC0AdwILod9uz3tHATt6C+dSvX9JA7nkWrYdsOhxo?= =?us-ascii?Q?0xRUgew8zlFEt9KxLTEVZzQIDhNSF9+y48Is7O8U6t5JRQ3ESiVwWrgHhofK?= =?us-ascii?Q?/Xvr/Ti9FwNuuWrlEWqRkf8xbw9NljNsUf/KunDkrPw2wLXCY5mj?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 275f880f-78d9-4856-9c0c-08df0cebc5a6 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:48.3348 (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: Fv2geB0VR0kYZatr3YL+iN07zzFQ6a8kTLJsMAZy6+uU51G7jCXdddiJHbbLmd2ekFaG3S2uog3xXVH2NbIDHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 411017873a83..4c0a29693ac2 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -990,6 +990,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 */ @@ -1149,7 +1151,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 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 5ED493AAF6D for ; Mon, 7 Sep 2026 14:24:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791096; cv=fail; b=u+2slai3dHaDf2DQcHbujTZX+2AkkWRHzDBsS7KXdZcnIQOoIftRKzqgWr0i7lGCGHS8r61kVrD4POS8qogWxagssfPq6G9aTJhZ7t4tMpyBa4enjwhCpo/GAmUKvD14zs9Vst/lVFIIpHJOoaybbVyJA25UJfr5vq7NEO/vzpY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791096; c=relaxed/simple; bh=rteN69/na48gvobvYR6JG4JP/cfsAZ5vsGfEFp4BIhU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PKuFBe4EsiEAIhL4nCpEJJt0jhF8xNjWgg8/QlHW5sIlf3pGmNgaY5KNsW5IsGKkIMNX3X1QM9/Fr42pGy8j95Nt9i4LA6Vng+6U+PoXxw+6VCaUYfRFgkTaecOwpGl/QikW0A+7Id54hkS9n8eHgtLu1ecm6EfjzMvU7EAVbp0= 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=uCQZ1GRL; arc=fail smtp.client-ip=52.101.125.126 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="uCQZ1GRL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vXjl+GVQHHxPv3DvrZePywQFwyCcKRYrXJrGz+0vNgNAs4FPEgxdJ0Ycvo+RuFzAL60VAV7JwhkJeaOrEs5PS8Pb/js7oixyawqOU8pyYWvQQi6ejyFcJE42rHt2hVQnl4jkLyQTbBJ/Jb6ycRDd96VhQQfGR1Wp2IpVeUV92g5En0n3OZHtULqSGt5o+y+uH+n/DAAfQpJx/UweBXZlGD9CTY30v4TS7RKYRYetKJ7UI5hiQgXQ4w25a6lwow/aMglV9PK+PHUmiya+esLrEGYEIxSzMiJq3yRnF/BIYF6+1/aHK0Z5qO++KEN8A9ZfCbIX6nDSgQ58axchq/r2SA== 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=bFCbc37vkSo9XzsBc9milbmcHC/JFoSvmB8DYekM9lQ=; b=Qoy07HC/lHWoZwnDBGdc7g9Oa0CMmTcpGmFxl/zV78FXZtaozabvtmat7Otmfi8QlT6zcTfxJEcNyFXTv6wmv+H9ZpT88xgHeaUCo+VNMZAsEIKrBJL+wnfEdUwqD+t8laz6RCYkg7e3i+j5sZV/2L7/cgxYR9K5/LxNMS+e1stFjkrB/LkJr+dQSUVuQwwnzE8JNI83OFEcOU7gtQ+6Ro7ZobE5uf7eBJeUescydwQnwjrlaNo5cx2e16wCx5rXWmnsRioFgLDWTz78o/oWeOtcGYVg5KioasCEDf3JUkE5uQFG+49WKW+uDfqAlPQwRSze1w5l7v4DXwcKqnNVcg== 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=bFCbc37vkSo9XzsBc9milbmcHC/JFoSvmB8DYekM9lQ=; b=uCQZ1GRLMdfsQ7beoLFT2EIBpwygHEV9AUtRK1T90ssfo0tXp0x4xy9H3lsYl8jrAMUHpLtjsGFJHR5ib3h1fx3IiJqQ2MpUj0oxsqKva6EsiSRP4Z7BGPYFORCQgBokJGIWdr1UO3UCMGtAjazPtTlADMBa9K/vpKqR7Oh4sas= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 08/11] NTB: ntb_transport: Abort link setup on QP MW allocation failure Date: Mon, 7 Sep 2026 23:24:26 +0900 Message-ID: <20260907142429.951930-9-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0312.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:38b::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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d46f959-fcf0-4058-8f17-08df0cebc628 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: QAZJvvfWORawlOdDob2nt/eixrfhWAWYAdKvcuoVHLQIT+1xVu2v1+qZDvxCaMY+pC/aIP+zZbnbe0w6U6tlIqktzABEqyFGnEOas8kHUO0yPGHbg7X5ZX85tMJrx7vyQ6CJ04dmRMbUeipPX9uXSqXAYQUYnk9FpACSFUDBKli8ycrohbDsb9xQebQDh7bzcc99mGoVXC6BGZ9RxMRIhCTHFmyfoS+Hlwm5XrzkjSw0q7Z6yJJrOVE9V6eFQicgQ3Dw3tZbZv11sictA6U9ffgMoUjgkYXALR/CpLobJGzchvp2b0kZqEjfGeOw/J534YmASyFRwcEJsf174EeVA9jLAA4xoN08WZYp2BOwXbVLoXedjQnflcqoleEr9YfwgzCjGuOWwZLE6vy52OY9MJ6xNfTpjPGv7XuTA3YLXbfdnYoUO2yLodRw3QnWjcFjzNL80q+hA0n/hgYcbXi6FnPEjEO1zx4TcPL6HC6NR7wtqbgKcZsGbsNqVsee8JjhQDfb8knFZHX0WpuZD4CsYolfJ1VUZqNduBP/Hixo0l5ph9qYZxk4Xqx8dWnKqw/JSDNHe5pXetGWcJ1Mb23LULjQhWBbHDP/hKLI4/iZrROFgxdU0lwY5eLgS4MEypSV 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Hzbkl3RVsfiNxeZpeHDzORr1Rjtt1NdZx87GirN/XPHV0TFhpM9lF/raYqVe?= =?us-ascii?Q?C9L54qjobzblK0RoVOFbK4BU2yrBOyl+P2jHNqw7rO+xD3lMI12HRHEK3OKJ?= =?us-ascii?Q?rnKUZiCjzwRnBhIefn4TamjKoVDt/j3p8HocCDmk5aRzbb18TL0HL83sPNpU?= =?us-ascii?Q?hgai5kijH3aUzdNsOtqmrEbRvYWvM7juc94zukko+JVkom00Qdp5Y6VyQlGS?= =?us-ascii?Q?Zcm1n1VnrWZh6FRcrSYk/7bZr20iUbOh31XPIgm8DHznPiVKJFix4HiRUskK?= =?us-ascii?Q?69K2e54la5qVnG+re6VoWctlJ9OuDTrPy0WivibyUaAqNLvRLiuzrZkwOKb5?= =?us-ascii?Q?suVNa+6X+ZJ5NjVkb21oEra3Q2VMUKUhL9WNQDfdy5aB4GiZ5pU6LmwEreY8?= =?us-ascii?Q?x/ABlUNNKP2MMvB0N7xLjA04ccIJYq7UVXrIcDQhp8mGvVh+FJc5JpzYu5Ma?= =?us-ascii?Q?ybnNZK31wNg9Wz9+x6mnVFoGlBh02+y3xUL/NzK3Aodbu6HHh4VsIAqrtYAo?= =?us-ascii?Q?vVU2DWKjyIYQAHQk2Pvuzb1OCZbYym3NJxExexdFGAU6mzbyERBM1Wio+p69?= =?us-ascii?Q?eeTU+HzUxolVTpUyFZvDrhOo8KooZI2SHeYMVAMPAvdGjTyGCM2R2A4vM32/?= =?us-ascii?Q?4tE15aSCSRCKpNb+RDXXoZognm82qfVx7ZUXxaYSfDr0sc1qjfTnAsovxLxO?= =?us-ascii?Q?3q5wodGaQRuU3a7+uQUZCF/j4EEPqWOjAqJ9hY7TLCsOAkYJKsrLpqrIbn1R?= =?us-ascii?Q?Eh3DJnCP5ioHqGyKbEt7jmrDNa0fYXy1K1+R0HrVXnbX4nlnjufIgXSlvaB9?= =?us-ascii?Q?eLH748Le28pFP7+FCgfQ44Zidv0iFBg3ZJfYIi91AaQf7biElvfenTWLyC5r?= =?us-ascii?Q?SyRXXbPsfh63zFMsz7bZYe4IhbimTJZ7HbssKUK7EByDctrc5CYM+5goLRVc?= =?us-ascii?Q?9OhFLpCYlNQ+LXw9xTPvBx6k8g5ifou5i38+r9axh4LIlqegHoDtD+kuir4b?= =?us-ascii?Q?MvFVV+e7421bz6AeF7Xpq1F2AhZjOC6OvNNNNjQl6sbEbcaQeafAXSnLQq9I?= =?us-ascii?Q?rQkL8jBpBCVW3QJcPyPRJ61LKR+ZbGsR+4A/PDW09V30SOZ2uaC9YX7tW+K3?= =?us-ascii?Q?v5s1rZ1N52TLjeAdDuMARhJ50zoKOXOOu5nqxZN/nGTfZyvvfR0rrUbUMK/D?= =?us-ascii?Q?IB03VEu7EkvY2XhC8FRStr+Dp6kU5sehsRdZRzWC9hY6sHam8q4CIvEN33he?= =?us-ascii?Q?uc65UN3cCVtKtskZ3/QXKkf2L7+1qR7XAOtcnsf/ktMr3eDBFHneD5K+yIRG?= =?us-ascii?Q?57aosqn0wnboN3PZVuO/c9dUuuCzRHy/i3M4aRtYWVTcPWY5KAUOBPGXord6?= =?us-ascii?Q?N5sTWnLHEG74ctvcbpkUYVL7qYIntATxjjg5XU6JTAxFWapI3MlNfcqns1Yo?= =?us-ascii?Q?IV9oRTi9h6Yg9a6dRCxHVWYQbqJdgr1uega/EnFUb9iKRKgkgvgFZQm6CJIw?= =?us-ascii?Q?+GhboEUHu/GUaKaypdJ+yoMDwkm8O23MpHIZJVk2eOEVHN+iq8ODEzg5PjqF?= =?us-ascii?Q?oDYgeFdjwknr2W7kxPLQ65EX9ltga0xFjJJXZuqkdntYtBDVIGmV7/gJ24aX?= =?us-ascii?Q?9275YZvYoYsoywp7XPguhM5tGIKYHmfLfrcnWvuVsuxxJaN4ginaEDkWLlem?= =?us-ascii?Q?ZYo5VyTkT64ffAfJpRPpIsy5aRgAroc8YKDNpAWiCpzo/n/YzKq3B3jgjKgF?= =?us-ascii?Q?lYinM6BQ4xB18E5qvi7LRJbUDxZ7mk1sTVc2HRScRHqNog/nihvy?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4d46f959-fcf0-4058-8f17-08df0cebc628 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:49.1798 (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: FaYzqLrQKfsY9UyXKR3+olnXt0HcOvVlwuqUdXTMomjdK1Mf+180Mu0B9OsBAM2RB/GtxCBr897NpBtR8xyd1Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 4c0a29693ac2..a902fce4ba60 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1112,7 +1112,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 23:10:00 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021078.outbound.protection.outlook.com [40.107.74.78]) (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 0250F3AB5DE for ; Mon, 7 Sep 2026 14:24:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791096; cv=fail; b=u5RWy8qUrkJR0S1XpGrqD9WjXhfaynWApx0NX3NNcPWPVJKm/uaocRDWQNfsjc1aVlcGFjvbh0BFWlM08BWJRQuQVjQLRQurTG0nODfReNtr2oPB2nW7zwwLvCBPk29+A4sabY2jffx77eWsIwlXAcBAhR9gYur7wbtVj39tQdY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791096; c=relaxed/simple; bh=z1Yuo4hcwNO2EsRlKnqmDipw3Nqy8qoJbltdQt1imDM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bFd1hnK7svFK8xSaT9T5Yd9BQQV+mmbIVdbDAJX7O5y1pgCf+mrwwJb7OYNMUcZ5dIcRAUhd5q/TUD9elCT2zhwBSJymLwidpTHSiVnhV4ba8bUHuhqtcZnon80Mu0jGpHTsCdHVaQ1Y2LZyDNaGDQ0JEhKf0MnXiaUlis3H3s8= 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=XLSd1MUk; arc=fail smtp.client-ip=40.107.74.78 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="XLSd1MUk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TVPRwriicbibNZp/vpOWD14yxFcUo33s3knmcoq0eqsy9v7QMowRhCT2+9ExBmrdHCA+M9Nax2mQtRfqXxu59RpVjl8NGxi3qSwLc6SImeALKec5VA55kC2kQLUZAh9Czvw+72t4xNZv111K/atjiptS3azBzZUumJNCAxoV+orfBqHsIl01RwVNu8mxKXizgHxrG5iNi0iit/MyLBVEys/EO24hnAca8sPHQgIiBHCcDOMszl2iXLhDzUN/MlGBVEHpplZAkUTBHEtSufZWaUvQ4SKm2GQNpRpFUe6+6QjMpA3arIo+Q2NEi16zAyPIfiPCe8IdKTj4FY5pMvCA3g== 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=YUYIWPWARrAc40wLbFNbctx0a31GeVXymBTzuXqumkw=; b=nqJQL7qCWKrPt/rIg4XBVLmxGgsly1+PBrwcOSQ41FweKjKlIPJzGAx2PTDvqPJ+EnpsmW7k8RMCEhmFSkfK231Egk6zSKjhwTdLzjXy4xPCPEGkCtus5UoapMyIjHVzN5tvTn/TKpuiC7kNek2CizX5tUlvusDfrVwv4SenSDhw01aZ/A1L9jc+NYIW3TX23+ZntTVbMLEdh05m7QTPQoBNi3pap/AOyvgmC/wwmmXRKRBlGnmTfskpR97/+m5MDZ4ZIw3S8nk7ohPMAsFcpX7ctxnO1bAeNcG3IDOOMQWi3L3qwous4nKFADcqArSsFkjwDiNigFIOMRp33KY4dg== 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=YUYIWPWARrAc40wLbFNbctx0a31GeVXymBTzuXqumkw=; b=XLSd1MUkXLleHVfMn0CE/nlBB0H0HdBPCtRg1XrGl6JesccljSQs9OKO6mh7jM7KLu8He+J6Dz7Pc7hjVg7QCuFIl43F2/0U0VPzficFLCB11GDy5Ev4Iy4eyf3dHTeA2J8WBLP/E1dv0PRjsceUUsI1CEI5CnZ2Zb+c5mFoBxc= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 09/11] NTB: ntb_transport: Stop QP work before freeing a queue Date: Mon, 7 Sep 2026 23:24:27 +0900 Message-ID: <20260907142429.951930-10-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0117.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::15) 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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d1a016d-7555-41dc-39be-08df0cebc69a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ME8G+uArudK+65Skj8aLOrBW3c8tmZmIrFYE4uJZvkiieyY9WRA0kbKH66MKFG5K81K+MFMOZ+wEjk8u6ehMqqDbKgPh5/V7qcWM8s6dlcZAI//rnF/sGBXeA3tKb8avtTArvBCRZnLVNko0WcapMd90tGpPNAyVTdFAfb6cH4bV8SAiFyARAJtxVSQHwWXZW7jpfrAbPls6P1LX5wqjytvyJ9MzC57Mnk13g1SdYlO8Hoq9UVieCZ+EEGekSAN1PO1HTVhZwPuKogHaHeKT2AyVYg1BQZAQ399zIUaI6s+luBgCqRRzWqSkT41RzE5KX8DVwM71iVq0K7IslqLgQkrD3sjRMsRE6f+WKFmIQVw9IusDf70iwOpSKonDFswXdIun5qcQglU004FLePLplS1NsHz8x0EMZvwUKf0l+h12KYWMOZGKxnSj5ckwr1gvuuShjrd6T8XdRCoon0khX1hhiQub2M2ntK+50vxd68w98oSRn7Wl9aeqJXoOTjY2mP4y5WecUaqKL9rnb5WIwT9KIH1ArI9rX0q592j3V60PfwV3riafznbenyoMhllBmDFSjK7sA7d6hDb7GSNXWAQUjllsCP4K2IEXnKoQecsaY8OOcial2W/el2jV+a8h 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NnrOXcBABh0+VnDllTmU0WMKvvbGNcGsPcHtPcAR1WuRh4ElhuLQvPE4xT7F?= =?us-ascii?Q?+gwtBAeGyJU3k/ahKI1RQIOZ7B6apdBCOZ2IDfSdTDRCLUIUZ72a71kS3MMh?= =?us-ascii?Q?O79GUcptT6YNhAmrJOoNRBfe/CT7Cv4saNOKyachCacHzfAjc1qO/8JnPCzN?= =?us-ascii?Q?+nF1+XdQzzFMFa2Qre9B7ljZ+QQy15+iFVFlrJ4fIF6U1M+pVX1vtDsI+3XS?= =?us-ascii?Q?tTnGk0Fg9kq6XiangsWibIuvFqY1Y9hQMXxlxH+32qrnNA1hu2a2yfIUEPQC?= =?us-ascii?Q?3hjDb6L7x0ExtrlDpL1Aud5tLtJ1vnP65JOFJpJ3vXKV2HFmVsxb0Ntc4K1T?= =?us-ascii?Q?Ihq/Tn/2bqWVM3P+kVcN0cCOm11Trf7j7Zk9cbM8iPjTsXwoIVAi9AtkXEvm?= =?us-ascii?Q?I/5TUiWy6t2O9iE+wtMM0uRzadMcw9TT8ZK++P68jUX9TM8T0uMIJF7+ibll?= =?us-ascii?Q?h6AV+WJ8571l6zIUBTeLqo/ikHv44P246RxHuaNAw/o7E/3cSh2cOPZ9Yfnw?= =?us-ascii?Q?vv7Cm3g6RzoeBi2wSHpw4CMamzEyh8FgdMXkXFZ5eoli1uovrC66rCdF3qeL?= =?us-ascii?Q?iOiT4NMsqRhbsP5SahPhnk1FcTtOP2bGtWZ1ydeEsX+bGfoBxyh6PhFdf7hw?= =?us-ascii?Q?mwKV9i3w1c3jn218o/13+LlammQZJUkrA5/LnoALEiihXk5gi4HjQpV8UfmZ?= =?us-ascii?Q?CIN2vunjAhNXBoDNFgS5k2bkrX1EVcDADoOgd4UUb5PiCA5NX6scVVjwPTLX?= =?us-ascii?Q?AMwFWL9OQVtNxehxrHDCyaa3w4wihDTQb0cguay5yGp9va8AWZF6PqeCJE4n?= =?us-ascii?Q?9QbiKXzfjHbsCfKTjGFWv4vp0aV4NOy6dZVPWG/aKy7lDHrGsLNDBVpKh7vg?= =?us-ascii?Q?fnOwkXsxzVKouCrSWMd6wtlmACmjhc98Pzoh9X6mtdboCBEBIvj/DkI+HSma?= =?us-ascii?Q?kTcCryBlk7R9s++Kt2Zrop9sa4GHMRFnZkO3SpFsPNqag4VBWG4KzYxoEIAt?= =?us-ascii?Q?pPxVK3h06SNa+J81QGXiwuEUaYzgYBF3Xls5yHvWjBBnIWxbMQ1w3LMS843w?= =?us-ascii?Q?5eMaALJhXLxh1V3dlVCHqz3PJCM0iY9PZdAsUj1q7/xx6Fub0i15tFeOUk4/?= =?us-ascii?Q?wRs7XYuUhsQso7nYYxX/hlTLMqCRaN6yobS9Ben1wBFhQ+EI9K1b8SMrw/2F?= =?us-ascii?Q?OsyvOaEZsZs1s6HKUGaZF0Ag2rKluat5ULmcrjyLjVsnGOAyZXv/68t1Aob6?= =?us-ascii?Q?ynSjkcX7oLnYE/s8ZaRlXSoKzzO8gMgTXLD5t/Ym6zE94Z9ja1PmlNqIR6yG?= =?us-ascii?Q?3mmPhwbOxFMfigfS0siXPNb6rFk+CX0xgbvK0K6TrWHSwCyPnFm73m775wPO?= =?us-ascii?Q?1RZ6NRMIgW/iRvpDfW2DgrgBhBUTF8sFYG9peoyTGGuXxZDFJbtfAnzHeHmE?= =?us-ascii?Q?/BuWOvpxOqwE2cGnB94J91UjQTIHWvj65XB2dHI3+8+wh6kOjWYumwhHjCQG?= =?us-ascii?Q?oKfJ9qK56Jmoxcfud3/vdGgYE3tQK5nDGRifb7YOpD9XWe+9AVpliB7/GkqN?= =?us-ascii?Q?5sFAFOoE9VL9jl4vxWJrYQw+Lddfw1WF4U8fHlQotFHxDgY5jcXh/99p/d4j?= =?us-ascii?Q?ZzV6aRLtI1PqP4hp2m4gYSSlQcdY+eUabkZmg2FOyPJVrcvaaV+hyo/NOrNr?= =?us-ascii?Q?2lYGAJwLAhNd+m0i189UMSmuyAHXDr4OQY6GEEjAsJ7p3bGLLErdrODhtVaz?= =?us-ascii?Q?wZMzbR/ioRY+nC1ZZXptt5M9hqmKAnkzgViA4Pt1ZMoLwr3NhtKy?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1d1a016d-7555-41dc-39be-08df0cebc69a X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:49.9231 (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: +IVeCtIQHOqrAchjaMpy3PzhwWwssuJ0JDWUY7HIOilptzkiReVMWLNdRdQAp468FuS9Nqp/HvUOVjkN9yXmoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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") Signed-off-by: Koichiro Den --- 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 a902fce4ba60..d009bb5bb54b 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -1251,6 +1251,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); @@ -2164,6 +2166,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 @@ -2209,6 +2214,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) { @@ -2256,8 +2265,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 23:10:00 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021126.outbound.protection.outlook.com [52.101.125.126]) (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 5B5493A3816 for ; Mon, 7 Sep 2026 14:24:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.126 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791098; cv=fail; b=gdLqifcg7K4/7FsPNn74JxVcoFwZMERIVGtRQwUgpSNBI3fT2OHWbpFo067Hv1zSyMyVoJeTlFTSNHlTf60hf++F58L4qU/dDkZ0YrJxCOJQ1hXyQR34BfY1VR2R/i/85EmQHCOw7l6PODfF8+P8ZEr761S5E3D+7lVhqZerwhg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791098; c=relaxed/simple; bh=ebUJiuE0G6fDfogqD2czJiibCMt4L3zpdqQw3S+jtXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sfecvruIChLBoM6YRfRQABQHZY9TIcdVm0QLsGxTGVtCrjSQJib9iHbdwX4Zp/EaBGFFPkwTUWbImfl6hRIxt5SNXNwdK1Od69GF8OkM+H72O5bnIpkTKeob41EHUxUjE0tupf2lh9Oz7sPw9pYq6b67Wp0R0/CK0WBg/kc6Z4o= 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=OxHqz+8x; arc=fail smtp.client-ip=52.101.125.126 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="OxHqz+8x" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GZf98EEKfk8YjZ6dQwDerEnFmdN7m8VfzojIww8BuN42zTm1wNHEkyecFpPn7wOuPluwx6Qo84qESEuZZ7Z5l+hxuAN/MxFb74eJ/MuT/Xjuk4SJan3uDioVR4iJz+C21ZGva2PpgO5ARiAoWcNaR9G8IfgTsmg/V4OgWDeaODvKG/n/E5tl7ZCei5mM+VSVQhrxTmM5m2k7G7WJTvw64ugAJ27ZYgCGhikQfGuKz2i/sjHQqkVoAztq8FU9ULU0RFToxmeK2twEDcbNnTmhHaf1RETS8ZWXvmnCDoEV1g3D5uHawgFPVo2QWDqSfDtNcWfXN93KnmGxaNeJFA4Azg== 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=YRzcxgeBKCZ+BU0SFpvkueLlAyjyr0o6iQpGgRVoZY4=; b=Zs82cV8HOEmwsy4Cz7UBKisCsLva1XGVhP5GfAcpCLeFhXE+iWIUwPvoD0PM7U+9qxLb4Sz06cgm0iL7hS61mRFcn2y8fT7MABIO/19uKALkxDzM9D8gqgf1oeoO19cvJWQf9SPmxg89JXi9/tedHcE+J/WK5IHunQumHVeGIsyjGzFV4kTLRf1cHnsKdLMbJjeUMTImZlf9hWLfFXKbOX7MOX4BdiprwiRtSnpzMgWvHeiPdj+b4CH8ZwgLFEHj8mZdS8W0o99dBd1Y7ZARAHzGYu80ldfVP/KeUhuVbZKDjDW+tYz+RvBrMAIpZq8vd4yoB/pDnGz7wDdmkTU1Bw== 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=YRzcxgeBKCZ+BU0SFpvkueLlAyjyr0o6iQpGgRVoZY4=; b=OxHqz+8xo2ZJLH0on9B1DGdkDKsy3hsjKM8X9uIUBEg+XEi9KdBz5Rz61dvFqEPrU325CRhQeCUM/9ZyvGCbhsLyW1640aWWoZx0miz17aoDArrNNqXRygvSh+xQQqMbTqIi/1VGqOVSCB01ekztWXL+laB5h9NESry4cRFDbGs= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 10/11] NTB: ntb_transport: Stop RX tasklet scheduling before freeing a queue Date: Mon, 7 Sep 2026 23:24:28 +0900 Message-ID: <20260907142429.951930-11-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0209.jpnprd01.prod.outlook.com (2603:1096:405:7a::14) 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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: c432c654-64a1-4a4d-7a4f-08df0cebc71a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: U/SUewK6E3m5BMXMuf5FJk81OA6M8FELXa6tQ6zN8SMIp8WMDlhn1YJ93vXAxLInLmRTgV2lb5D/WyRwU5UuKGHe1qIuj5onmaHGsF5yVeywVcF2mTwQbHpE2+++eRNEFQLI4nBvU6Kx9SlTGr+a6gcc7f7LgAoGcvWqj2CGjQ1smfQ2UZg/xuB4r4VmN69GO+nsJdnVFalWVmLz2WYc1B7Ii7DwsMy9DS6Z9pWGNyw9aoE6rVNba3Su9UoBVnJtrM3AfNBmaeL/I23Nur2JXjUe1ToHOqgKhH2d24m7rPZ2KGCANGptzgGpvUq+XvTPOdk1u97KeQXG8D/DFZSmJsxScA2d1haSeNBiXLNQp4liFEKVo81tgg3v/iwqJyLh1L8ZOIdFjhyp2zgfYlTSwE/OpuLZWxrk0faDY+YUxpeuoqD9v+V4y79RPory7CMCrT+QpeiBYXIP1xR4FIn0TEVTI7Ow17qyKEDOd1I+/mLfNPN9lenxXEfL/sfGFs53iLUUPtM9KVRMfLlt8Zn8nFnqwy1z8R9rZEIKoR7BuPD0BK/SiDIH36LnbzlHvx4+vqVqtscAU/aS/4tXobeXwYTSrDFFIhmWGN1WSV+lZuzyRL5F8lj1BFpQWlIvrl5XDHFAoQKQ4wXPPuxeYjPaTK7VzKzvqFsjUHP/kPSub9M= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YfjBxbrleO4BIsO4bYRy8Z0r2ecozPcBmIOKHJaanymUe8t0EBz3wmKQMwoy?= =?us-ascii?Q?vKYEi1f1SUZXW7oUN1r+RqlNXYfy0/DOqOwwprXN1tDB1sqIPxP5z2t/S8b7?= =?us-ascii?Q?fNImpwQXJnuZouiTnMpKxiuLIHFBDS3+/Q8Ai69QHMet4vi4B2cZtQ+H2V8u?= =?us-ascii?Q?g5qN33DRCwr7nVuiq2F2JY9MOOYva+tfpVSY35wBnz9EMUPDxPIDzBQF8IrQ?= =?us-ascii?Q?lAl09On45WkT2VrBZXwXkDp+BqgfkABZsemc6Zlgcz2Wchfy9t2XMx2a1K32?= =?us-ascii?Q?2ZaWWt02vvWNmwgh/vgcnh+keo0mLbSYPIRN1tXKuLBmKJo5qKDPPR7MzB4D?= =?us-ascii?Q?qhJs1HvrICcwzQk2oaqJ7dXhDdEeFWodwHRoqn2s8z70yfLvEq3Dc7//eI9h?= =?us-ascii?Q?giMQh1NqQrl+73CO3ODNXeH0RQYlpHZVmYW1VoLQXJdJqZMf4b0Hg7ylZiO0?= =?us-ascii?Q?x/HEuC1W0n7+MRj8OqUN2s0lOnfzWWX6NVIb9cubKHWDiBI32t/sMkbRc17E?= =?us-ascii?Q?YA5My+pQh85zrsjRTbyV7ZaFOB/s6aOpUNGTJHy514BBPevrFDdOKg8SEjsC?= =?us-ascii?Q?iIyUPE4F0N0vf5pQh0065P/iC5EwICLNEwpss4ZlBS86JdQqG6IibVGsSItF?= =?us-ascii?Q?gEhuiPY262W+J5X9Pri/5SLmWN72XaxOIpDMT7BA8kKtfiXeU9wFmE91PRN6?= =?us-ascii?Q?dTfHaNaS865UdewoziRXd3F7vN87JRPAYRPxV1Z/ijPGc620GkxRmRsz+jEZ?= =?us-ascii?Q?KBZ4rYRs98Kd2PKX0Ms6GYgbuSjcn2ehnBMGic63XrHLJeNhQQfzhwqOYScI?= =?us-ascii?Q?qXQ6//nQA0kJvSRwUeZl2sJYmNTSgw6U59LRs72EM0bcC5XaxGdf6zZ8ZCtv?= =?us-ascii?Q?K7kFJEDARW666yhf2ORK6YwGKAHfnXmIRbj76EF/I4lUAXr1ZRneX7csitEJ?= =?us-ascii?Q?XZr4btvx26rYDuIaQPt9+71n1ckzBeD2yDyGeknWhCj8YuoKQHmzIAhDqIvh?= =?us-ascii?Q?BxktShcPrcGZcpP1bgM74jHzXIyzqoyvAI/5f0W5ah+4L0L3qnikJw1FezOU?= =?us-ascii?Q?W7oFIlDllxUbE9kTd8vx/0BT9B2bDNnpPeF1gxIgnk/yyvsIJY2dv9vSfC9i?= =?us-ascii?Q?lP93qIQ558TLPsI2xbnPT8m2QImjiWehDZRzrnK434y8i7j+B0CfKjTAjEcs?= =?us-ascii?Q?PrGtVWx+ar73ov09XFhme9Wr2exHDu7G+dIfgG1rXsx2e3IRm384gB/sxEZU?= =?us-ascii?Q?SeuYS0ybPeMOkG5FiGQO9ApZ2lcJhE1mnzWBeVm1N77/VHv5egemAXEh0E+9?= =?us-ascii?Q?j8GAbudFCKUofjm8f53oN2f0/Ex1g17oE46gEcSVbA5PGQhSNH8zlJwNkZDs?= =?us-ascii?Q?dqhvgEwf6W+hvd/H/ORBJkqWhlVYNab8DVQ0E7uXqkxrvCH3MOQ/1qMGlxti?= =?us-ascii?Q?Msf8pSJFRTF2ZWJqcc0cLZBG7wLX2vrYKiYTl1yd4s1myTQgN/NKmXPvWmlv?= =?us-ascii?Q?Y9lH9HaXh01JOB1GAQHNxFdPomT+Cy2wHOe6cacGR8ZBw/bx7iG8G5WXhxue?= =?us-ascii?Q?TIY+IeDoNkBDX4Ivk9Zovwd66UydLKtuR3WX0qJXs3wn9t07Tk+j/siMEHi3?= =?us-ascii?Q?TGb6pUNQGNLZUed4fhybqoGPAo+0jDnOuSNaPLL1hfXJKTWQO4OhLN8PSzGO?= =?us-ascii?Q?DUaD0kwP1fCjwGB7BPI7F3PYZO505JJ5YNihhc5z10oBWdgf5XV+okfiiRW/?= =?us-ascii?Q?/seGEjW1KacdcQ9Ja8KHaWwl4NkZx+MU/sDUlTVWza3dWscTstg4?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c432c654-64a1-4a4d-7a4f-08df0cebc71a X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:50.7808 (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: 62zSTLwxSuvClwbJ+oD+QmbKp5hawb3niEtvj9VcamfG9JF1X1PGw7aBWRqOqlJ8SK961RlS5PNAJaF8RuBCdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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.") Signed-off-by: Koichiro Den --- 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 d009bb5bb54b..0257f3eeb5cd 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); @@ -652,11 +654,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; } @@ -905,7 +922,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; @@ -1168,13 +1185,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)); @@ -1202,6 +1218,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) @@ -1738,8 +1755,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)); @@ -1750,8 +1766,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 @@ -2218,7 +2233,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); @@ -2260,11 +2279,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; @@ -2359,8 +2373,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; } @@ -2560,8 +2573,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 23:10:00 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021078.outbound.protection.outlook.com [40.107.74.78]) (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 E75543B0AE1 for ; Mon, 7 Sep 2026 14:24:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791098; cv=fail; b=I7RNyYprhNiL2R+JyRBUi5lvREs+LIZLMHQ9jDcDP3Fe5zHsWBVGPRYYep0eGbMZ+OIWZkD5Evsm8KtsizpwkgifI3lNGIJ0bLmq3ZhaOCqRF0Ro3ZWEesaA+qG9GGVRl+0wlV3cjUnRAS497xEGsaMipqCK1US/WwYpZWm6duM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788791098; c=relaxed/simple; bh=wf3K02vyiTuyylRiruRHpeWK7ToLGR81bebNHzuU1n8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=doN60XpeC6aR3nV9Gl1Id6BflpdDPikslEy0FX7SrFvSdaoLaNC377Ki1p3IYhBpM/OtRiXf7PYlDgQDWKmvPwcfISKb38oYDP9YJAtiQpy+hy+36q87dvmrCP4IwChIgsA67/HZ2FZPF00rnO6B6Kyq8dag+AVC0d3kolOpsp0= 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=K123anGZ; arc=fail smtp.client-ip=40.107.74.78 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="K123anGZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OxaeGJWOzc9BKLHupFO5K2yhWYyzm31dBGK+B2IkRULPqoqafV2Lmm23hL5gtGSDov95RUaK8xXMq9992tPy+34Ebc9b/f9q/87UmDe4eBCOnQx7i2u65/WCtdROiTDP2b28dQBmgppxEahKYjhM3vsp3/ax8cNBQkHlLTIOYr/OqCa6/qPAtZ0BhoE3lt9dVLV8UwDOnuBvfkdfuz+4zFq6+C78r3JqKeqxI+sTWMifC7VJRGl5wMkR50ZfJuWAlsCIn4NHdBVWjG22zmiPsMOW2OGIMRHIVCtBO2G/QimkjgqIM/E70ScAtEganXEld9ajkXMannWxtTdm8oEf/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0aNK/7JostnaxSyB7krNk5CCG6ZL2TacRQf5nWjRzEs=; b=ybI1YFAVnOO/US774cPRleAGIL5HnPMOM9soxKLbTqBHhhc8o1FoDAVEshm4vxyZe6dJjySip8uXf7eDvi3Ituh+a10+PyZPWLm4H4L0lKH19cx6xoBhBeWaMpReKtUVyw4HDCpq74roAyH5LBhdrA4wxCDuxtMmVmBmHKnThR0pJzYY1bKl2NiYoMQmUrw0eE4evr50yphQQYUFL3q3SfWev7HRnQxoT31/1P6GKZAdZMLq/X3gk+mNzVyFnNmRPwBHSrHHsFiRL3CKZiXQC3uVERDZOW03dtNkeFVwgoQZSvme2N5V9p37bUuzzhaYNUQop9N+2ThlQRQ2YGuZDw== 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=0aNK/7JostnaxSyB7krNk5CCG6ZL2TacRQf5nWjRzEs=; b=K123anGZH2XCEvofh3lePwtfajsd4DfF/utPCFHq/2PUe7WD62EPaa+Nv+4CWXokHza8eVOMsU3B0OThvl/kH+z6dyoeQ0CSUY92sbQyC0fXRxKZ+zGOH0Zb3FBLU4Z8UimBRLifJxsXmOQioQKlJ0yRrPi5+x7NLyMyKJhacO8= 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 TY4P286MB7581.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:34e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.15; Mon, 7 Sep 2026 14:24: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.0382.014; Mon, 7 Sep 2026 14:24: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 11/11] NTB: ntb_transport: Drain RX tasklets during link cleanup Date: Mon, 7 Sep 2026 23:24:29 +0900 Message-ID: <20260907142429.951930-12-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260907142429.951930-1-den@valinux.co.jp> References: <20260907142429.951930-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0209.jpnprd01.prod.outlook.com (2603:1096:405:7a::14) 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_|TY4P286MB7581:EE_ X-MS-Office365-Filtering-Correlation-Id: d044cb7f-6ffe-4b35-bc6f-08df0cebc78b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|23010399003|10070799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: wa8DLEij/arfHwmijjWnJaKVM9Iq96QwjXZcUEc9FdP4y6mtleYzMT2DHlk0Q5kgb4CMzs1r6uqLDqlVDkimgkRQ3cIX7nOhB7119nqqcn5XKiW9Qlheo4JFJ5aNDY8IYyXeLJ0IIRi+B34QRBKY1jP6DK7j0DNeCAMs9JAjKyNXUcmX4TqZrOii1ong0dVrhXRyG/3u7m1uex6p94oCurx0WdQNCMSdztEmumo6hGgpMogDaAXyllqEgRUOWXYrs5J6WOE/nJNdBQ3J+qt3sdkgpTi3It7DYDoOOCyAIb+Oqz68FGRbWL1TiKeOg0UduiaTAifwZuSAVBLh/IYJPs9mpUG7w0sYRbN6qrRQVpCijpk31SU9fB1VvVaQ9I2OzwSO09tfhuwX138SOUN9H2ewFckSYIWBxYSH+QZVpVQ5NmP2/OCnZkLtcwK6TOrtG49+eYuCVwgjqIc/McfVf0w8D3oIPKDz7I+rswpqXZCRGK4GcQaxLxSxNIgIN9DJimSRD9AyJhKfJqYZ4BJMc5F/XwZrpBL+vnLpeZfEQNA9JA0waIlyZIGFiYv/ZSYwMKKXGUuJ3BxQDlxuTzGil890Maf8ZfSsF2aboGB/50Sx63+ovj7qA2Vbb+LkEmG1LspJ3NsW9DnKVPhaBnl936qcfX1TYunwsmosm0H+1IQ= 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)(1800799024)(366016)(7416014)(376014)(23010399003)(10070799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rYbD+pH/RHBF862PG+xliEgp9126t4HfEBXdRZHZfzV6z7/JXpWmMXTXgzTT?= =?us-ascii?Q?rNanOQQE2okze6bxSGtEt0C+eXIjxkGnaWWjIXY0HGvVA3eZobLbSUyY/W2P?= =?us-ascii?Q?3T5Ppz9B25t34Af5fxDFYdPelmLYiXTPJjy1tN3hrhuxXe6F1r1jhmrzzlkT?= =?us-ascii?Q?c6EsEqTLHL27lVd0qBJgYk9QhlvbLrlPm58qG2F4I0kKT8SmttkVJpS7nr0w?= =?us-ascii?Q?es1JG0A1Yf4cSwJN1LGouc3X/scbbcoyPpmNPUIHxbT+qm2QEOqN3NBwr5Lu?= =?us-ascii?Q?fjJXFPxge9sSdKxZFE46JgQXplr2W/aBHu2jFgkVYEzrzFH76/k1lRafx9JB?= =?us-ascii?Q?ilAQJdyXcCEz/oUrpGI69LzhkOC03j6JmOfqRd1rrmyZWe6Q7zYtTG5ifoyV?= =?us-ascii?Q?m6E98Q6thaoLbGXhJLB2GfANDCX/doL/7bOp8ax3VykbaDzbMrPIT8T8e7/t?= =?us-ascii?Q?fWZegy6MB++82PZg1l628sJiLG0flUa0kZFhla8NHqnIWhcjXbf21ivFhdGb?= =?us-ascii?Q?WySuzw7xZ1RM9YkhO5901yq52CYrFKzMT3zkSjgWWjCFGnSpU5o//rrpdHpR?= =?us-ascii?Q?+IV/nqC/xkzBprC5e+B+uvCrKiaAmLdKofX3C/378bAcZ+G74Nk9gy5fcxqa?= =?us-ascii?Q?eYEBsy2k/Q0JHZJYwY1WPEKqrea61faDdjK3d/3bszVA3LRWmag/2een+oYn?= =?us-ascii?Q?BfoqbE2fAvnClsvdQgaUfmrD+2VqOXT9FtJhJDuyCwFLKVtQ454IutUlNb79?= =?us-ascii?Q?B9R76+BVmmve8gO+GoAw+u/Ja/8V/7d0xjjSy47CzJVlOQ1QmUIYNMuhcPzG?= =?us-ascii?Q?LtCaVff6x85k4w9FPFtoXNGeeR3byPiQ+w/0/elAwKUB9X4QAughh2PDRfgx?= =?us-ascii?Q?Y6zDVSoD+aMriMJ14vJ8fHAaOgLxneS4OFPYypYPmDOZpARFsB4du43/HSqM?= =?us-ascii?Q?hr1lZmtNBLbTjPhU8DLSDWd0hTaLXdN8ivllYirHKG4gPHkx/L0qkC+K73+I?= =?us-ascii?Q?Gups8WCzCJslFxoVcFSqWfERlpNQ3jqwN8Mp1DWVfXqnYfZ2jp4PD2wcLfqi?= =?us-ascii?Q?54ixyq0wgGDyab4h2hu6Z4sBtNse+KsHhrK/kaRlIUpEHjFiJi6Bfals0YQn?= =?us-ascii?Q?E4gY8AwRgM9Kfb4+HKZ/DELlHiBptauG+n3/7+JyR7y5quW9vjCB9VGTaC7k?= =?us-ascii?Q?WjZih4dCjgDKF1QEOXnDve+E+RG3ufuS6FMTYz1JNaiWsAOWp1bXGiuWhV0V?= =?us-ascii?Q?tcPn+viOWYrST251BvD8V6euSnC8TmJBmRC2d6rTDwvvr3sYueVunWcxMF/W?= =?us-ascii?Q?ja4zj2KxNzCbBaG+4XWtyfhC/SzPIgrecLLScSHvbbif/d1RIccj9+ID3KcF?= =?us-ascii?Q?AzHIX3vzShQ7X96RBj4oVB9hEd/KqiNlGkD268JtobboJMJ2l2/XS/Mri8yc?= =?us-ascii?Q?Jw8/rh10kMBpJdausZlhtQPFz1jSKNsjr6OLKPujd56a7iSeD1m8GpwikluY?= =?us-ascii?Q?RqpGtB3//a2C4UVnaT75KMoqknKvrArsCIAnJwsSbb91TSEC14g77pYNMP9E?= =?us-ascii?Q?YiZyfeZEEJC3AGQFc0s+DSpfKTGCpL4KmaK2sJd9/Q4iMcizyXOjP+iLWDn5?= =?us-ascii?Q?Ge37W17rnoJUHupukbo3IWUJwDJ7kqFBWcEke2O9mKeAPkRQUq2He9S5r3lc?= =?us-ascii?Q?BpX4YwPamp7Cwt4UGJcwdZN1reaHM6QEKGnAYWrYd8kGQtCXNtCEL2cCfQf7?= =?us-ascii?Q?iTRMIIDFFQOiwvjh+l6GcobOMr8FjuabwqSqwcEGZ+vYS72u/lSE?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d044cb7f-6ffe-4b35-bc6f-08df0cebc78b X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2026 14:24:51.4996 (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: jkSiK4JZadDZTEhkXli3nQg7RZG4nfNXx+oiXucs/ag8w29acU9Rdf5xATtHFNTL1y7YI6ZqYkk6Fo9tD5VjjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB7581 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()") Signed-off-by: Koichiro Den --- 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 0257f3eeb5cd..dce7b1311406 100644 --- a/drivers/ntb/ntb_transport.c +++ b/drivers/ntb/ntb_transport.c @@ -969,11 +969,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