From nobody Wed Jun 17 07:36:45 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3D7B36F42B for ; Mon, 27 Apr 2026 09:22:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777281749; cv=none; b=V9F7ME9vjddcYMT63mTkExK/Uji/6X4vkQqQ0QFjafYC6I5VWGoNctqx/rx7c1QcOisIqKd1EAl+551WxR9wdZ/Io60JyRItz3VXY7x+O4+mV6NPTWxXQ1JPmREdYEaQrz6VsOBk2DBfPNBwibgABfpNtBQR5mpyXbMlwW+QCyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777281749; c=relaxed/simple; bh=BSb64EzeNe+LAdM46kkrVWOCt/FZCzWzgFhyw7921go=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=pOx46GdMnXfWjA1YHPOr8/sV1MQxNCRC1dxTbLWXsmgQ0avsR0AZvz2OVbuRfPuwpHQCgdzdXh4cFgILKWvLabGgcO2w0vb5f/XEfJqNWXn/o/A2sDf9SnK+kCZWXeErebYoK/Cp+TN+SHjz9mpSyHLbPUvZDTNz5ca695q/JtI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kXOm7Twv; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kXOm7Twv" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-82f69a286dbso7504901b3a.2 for ; Mon, 27 Apr 2026 02:22:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777281747; x=1777886547; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=wFZBmc0iscSfAT4VB9ZbI38DRL/+YXPqj1yfGMlW+m4=; b=kXOm7TwvUgOcQHjq2B2ixLP51P7p0GEoG9nOepzjYAMPKFTaXJpLBWPVjoOdaabd4D Qjt+W/K38lTf+9UpFJFrN5SMxAs+wMCg9mkJLKBvVJGoXQPWEkHU8FwqM9/A4TpUxYhT n3aUD5XZq9GnfbP7Gxu1unzqm86jaiJhdHYK5YBYqekZMY8WUEtO0B9H5hA0Ojm/9jzl 8pEnXm4+HKCK/u4jf8tUAMNFtFUJ9lE46aKP0hl1SWBvpzBKhbyBwU1lV+1d/wyyzKyd VNPvC4LGxgpU+qzB/GQFLZEBybyDAD50vE7T7/akSCWj4b86rQDtEaC/dKuiWmg1hrwc Eahg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777281747; x=1777886547; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wFZBmc0iscSfAT4VB9ZbI38DRL/+YXPqj1yfGMlW+m4=; b=mhK2s3zcDXj6Ama8co8cBIxOGJCpp1Rl+oGDR3NL6c+dAVFdjgkz0QzRyrGTiHr7JA 79/0OOZgXgwwxRzCrltCUo+CfvMfhz2WOTfG6LQ7EKTQu/LgtStcMxGAJNPalKirHRKK qTTDM/IWMFO0GKlxqWZft1/Vd71OejzoiM4q4AyiV94wksKnwGLlTBR+wUE4D83QN20i 2bunCWXlQhu0lcGl50lrIR+UBNtDgjyi13Yb8iFv/GsUmtKnYUv6ljIj0ZQAGFuVDtDT mxszrim39yx/wzHgNUn2yAuC2LCRpO8Gd7JRd8NebZz/s6LvHCxQY9v4gWQljymMW+JG Tplg== X-Forwarded-Encrypted: i=1; AFNElJ/PRs3kZKUnXDMP/MI44qW5A0TysustRsgqdqZZw7BqYLmvWayZgaIeVALaTn13fzJ5B9fXg+61+vE0scE=@vger.kernel.org X-Gm-Message-State: AOJu0YztgUSYFGwW1FpbXmvbr5Y8KYo0C8+CZA5paO0SUbhBj83cxq6S YcjC7uy1JgFp3b1iCL2Awl7o7lOQOZj566jpCQ88q9ynN8VsQFIs29Y= X-Gm-Gg: AeBDiesscp6MHf4iFL1CSTwP/MRenDQk3HbaeUn3HSr6whtk5IA7rBqXDfbgFXTHuPf p2YLYThEb3o8B3f5YkuxJCwMAXEDEw2d++teXiIiVOXkPCSK6bBJ74lqCxX3KOJC1h1K9M7v2/r o1UN/xcQWvEVr8k7UIMupkPv+FpYULWKdDT8z61lzN7a3J6mFjR6EDRTUPMXsFo/CFA3JFnFTOy 0rKT9AIe7oTAZnr29jkHJHR72jtiA9wZCMJ+1MxQtPQbeupg+axwT4mELH9pQtqEFeeaD+ORGKu 9NAUvI10fl9K3TjczAJxbPFBJKc/TMiQIIRq3EiNHXFzhyWHNnCG8ACJvWoOvLUc8FiVos+c4JR +lwEP+PtY7g/atHrz1aS1CauAsB/uPUHZz3mty/nwQyLxmhPFcb63Z/ybq0j4JAdYVUvcYsf3mK BrnbLeqLhBa5Gfar8XAZLXwdhv8LOgDonuX5l1lN3+z8hhNu6yzQhotynY7DpbHbJxfBdmq+pjW k/JJ/JBm/6UwV8r1cB/cOTSWYsacukhejeQWWtZAvjJV1Q= X-Received: by 2002:a05:6a00:4094:b0:82a:955:50d3 with SMTP id d2e1a72fcca58-82f8c937b36mr43641207b3a.45.1777281747016; Mon, 27 Apr 2026 02:22:27 -0700 (PDT) Received: from localhost.localdomain ([1.226.165.54]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9fbb85sm36364449b3a.22.2026.04.27.02.22.24 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 27 Apr 2026 02:22:26 -0700 (PDT) From: "=?UTF-8?q?=EB=B0=95=EB=AA=85=ED=9B=88?=" X-Google-Original-From: =?UTF-8?q?=EB=B0=95=EB=AA=85=ED=9B=88?= To: Saurav Kashyap , Javed Hasan , GR-QLogic-Storage-Upstream@marvell.com Cc: Myeonghun Pak , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Ijae Kim Subject: [PATCH] scsi: qedf: Free exchange manager on probe failure Date: Mon, 27 Apr 2026 18:22:14 +0900 Message-ID: <20260427092220.58365-1-pakmyeonghun@bagmyeonghun-ui-MacBookPro.local> X-Mailer: git-send-email 2.47.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Myeonghun Pak qedf_lport_setup() allocates a libfc exchange manager that is normally released from qedf_remove(). If probe fails after the lport setup has completed, the driver core does not call .remove(), so the exchange manager and lport stats are left allocated. Release the lport resources from the probe error path and also drop the exchange manager if stats allocation fails inside qedf_lport_setup(). Fixes: 61d8658b4a43 ("scsi: qedf: Add QLogic FastLinQ offload FCoE driver f= ramework.") Cc: stable@vger.kernel.org Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak --- drivers/scsi/qedf/qedf_main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index da429b3a42..499d42e46c 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c @@ -1765,8 +1765,10 @@ static int qedf_lport_setup(struct qedf_ctx *qedf) fc_exch_mgr_alloc(lport, FC_CLASS_3, FCOE_PARAMS_NUM_TASKS, 0xfffe, NULL); =20 - if (fc_lport_init_stats(lport)) + if (fc_lport_init_stats(lport)) { + fc_exch_mgr_free(lport); return -ENOMEM; + } =20 /* Finish lport config */ fc_lport_config(lport); @@ -3306,6 +3308,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mod= e) struct qed_slowpath_params slowpath_params; struct qed_probe_params qed_params; u16 retry_cnt =3D 10; + bool lport_setup =3D false; =20 /* * When doing error recovery we didn't reap the lport so don't try @@ -3625,6 +3628,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mod= e) "qedf_lport_setup failed.\n"); goto err7; } + lport_setup =3D true; } =20 qedf->timer_work_queue =3D alloc_workqueue("qedf_%u_timer", @@ -3704,6 +3708,10 @@ static int __qedf_probe(struct pci_dev *pdev, int mo= de) destroy_workqueue(qedf->ll2_recv_wq); fc_remove_host(qedf->lport->host); scsi_remove_host(qedf->lport->host); + if (lport_setup) { + fc_exch_mgr_free(qedf->lport); + fc_lport_free_stats(qedf->lport); + } #ifdef CONFIG_DEBUG_FS qedf_dbg_host_exit(&(qedf->dbg_ctx)); #endif --=20 2.50.1