From nobody Tue Jun 16 01:15:40 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 262A3281357; Wed, 15 Apr 2026 08:09:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240587; cv=none; b=M4LvX3ewEYx9zaARjnJS3LKROw86bBp2N/UfdqCBBqOixrVmhTJkJ7OuHnLfgQWzT09oQ21n67wfC3srmXU+iAluoAgK9YT6Md/TWGNj7/pzDHdqzf4GX4JzD8ERlE0NlwPW7Rg+qRjwI4rLCCYYuCJ+hEAa8DZVSR5hier2rC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240587; c=relaxed/simple; bh=ZhA9M77bYSyp++9kW5NFpO+iorbjw8MZjKC6BY6253c=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aair+vQvlaRDRobl4tb5mmjIRyA5CS+jmDGXxGhbk+6VwJSHzz6ZkJ1A3/xGVnGqQQVh3hfU/yEs19zVTUEINykRbLMNN5JHEAzD3uT/Nq5NkL+SekPi630/wGxhGw3qnAzSflWp3K4jwILTsw9Cu65zcudeAbBJlxd2EzuI5Ps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=U38i76rU; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="U38i76rU" Received: by linux.microsoft.com (Postfix, from userid 1173) id 240C620B712D; Wed, 15 Apr 2026 01:09:46 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 240C620B712D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776240586; bh=XhtpcIYIkBp3wS6dQeNciqwB7nL148jNLzyfe7009PM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=U38i76rUA6XArx2Mk/5C7aNO0q17m19nsPdsyrYT/MMcEd4Dhdhz+g1rsQjzG030G vkmENm/cyf04AB3VJ2Rom+OaOgNyNYDayqxTdq53cosjKCDqQjSdexRnPUoAzrXxTD lLHxDejG4Yr/OQX1nxj6CTzwv0f4XA0HPY5A8dKk= From: Erni Sri Satya Vennela To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, ernis@linux.microsoft.com, ssengar@linux.microsoft.com, dipayanroy@linux.microsoft.com, gargaditya@linux.microsoft.com, shirazsaleem@microsoft.com, kees@kernel.org, kotaranov@microsoft.com, leon@kernel.org, shacharr@microsoft.com, stephen@networkplumber.org, linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v3 1/5] net: mana: Init link_change_work before potential error paths in probe Date: Wed, 15 Apr 2026 01:09:37 -0700 Message-ID: <20260415080944.732901-2-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260415080944.732901-1-ernis@linux.microsoft.com> References: <20260415080944.732901-1-ernis@linux.microsoft.com> 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" Move INIT_WORK(link_change_work) to right after the mana_context allocation, before any error path that could reach mana_remove(). Previously, if mana_create_eq() or mana_query_device_cfg() failed, mana_probe() would jump to the error path which calls mana_remove(). mana_remove() unconditionally calls disable_work_sync(link_change_work), but the work struct had not been initialized yet. This can trigger CONFIG_DEBUG_OBJECTS_WORK enabled. Fixes: 54133f9b4b53 ("net: mana: Support HW link state events") Signed-off-by: Erni Sri Satya Vennela Reviewed-by: Simon Horman --- Changes in v3: * No change. Changes in v2: * Apply the patch in net instead of net-next. --- drivers/net/ethernet/microsoft/mana/mana_en.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/et= hernet/microsoft/mana/mana_en.c index 6302432b9bf6..e3e4b6de6668 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -3631,6 +3631,8 @@ int mana_probe(struct gdma_dev *gd, bool resuming) =20 ac->gdma_dev =3D gd; gd->driver_data =3D ac; + + INIT_WORK(&ac->link_change_work, mana_link_state_handle); } =20 err =3D mana_create_eq(ac); @@ -3648,8 +3650,6 @@ int mana_probe(struct gdma_dev *gd, bool resuming) =20 if (!resuming) { ac->num_ports =3D num_ports; - - INIT_WORK(&ac->link_change_work, mana_link_state_handle); } else { if (ac->num_ports !=3D num_ports) { dev_err(dev, "The number of vPorts changed: %d->%d\n", --=20 2.34.1 From nobody Tue Jun 16 01:15:40 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1C8B03CBE62; Wed, 15 Apr 2026 08:09:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240589; cv=none; b=iO7g9VXO2I8DoLsTNV+yanVqVVIDgOLxklUbJZQFYfAFKeGvVSpkRjORhYon+2FzvCJVnDYlZd5AOFxR+neOJiSgYD2hhQory+2TQLdl2Ali0pVPp6QJhWKTDFo5yWAj4wVOgPd1JlrjTr//sPe/9ohx3AV5ggQwasckYGjWFsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240589; c=relaxed/simple; bh=Mij9Sxr1Qy0J990aOwIvuoxCuElTG8l/S718L9p/6t4=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EXXEOPE1FEjzJylYZdKTnydHTmQJ0j9/KV4e55oyFzQ9fnxko/2DEURKECda7McFk5WgfvAshUXoCA60qP+4gjMkahASTIVmAxck+ByEuX1A1V9U7LKWkHLNOzT991xbt21wpX8n59k23IYwOF6p0D2kMIkAsKp1Jzp6Pu/vV3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=PJ3leQrk; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="PJ3leQrk" Received: by linux.microsoft.com (Postfix, from userid 1173) id CF35220B7129; Wed, 15 Apr 2026 01:09:46 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com CF35220B7129 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776240586; bh=SqpIT8gp/3a7HNlDMjOVhKOsjJhTqG0v0PlCBeVjbQA=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PJ3leQrklGFo1jyaygGICFfb4Vsdcjsa4eNwbEsmPPkifYcjj6s7ka2wCy2HxZ9iU q8u/Qm4rmPr1Mte3GTVDf7AnxU/UXC9Wxh+tv60m2woTf9r4gYwBmfdDzt5XfnzwNi EZcjaYhI1FRrXXVClnGMmN0oOZH9T5F+0LVfA4h0= From: Erni Sri Satya Vennela To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, ernis@linux.microsoft.com, ssengar@linux.microsoft.com, dipayanroy@linux.microsoft.com, gargaditya@linux.microsoft.com, shirazsaleem@microsoft.com, kees@kernel.org, kotaranov@microsoft.com, leon@kernel.org, shacharr@microsoft.com, stephen@networkplumber.org, linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v3 2/5] net: mana: Init gf_stats_work before potential error paths in probe Date: Wed, 15 Apr 2026 01:09:38 -0700 Message-ID: <20260415080944.732901-3-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260415080944.732901-1-ernis@linux.microsoft.com> References: <20260415080944.732901-1-ernis@linux.microsoft.com> 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" Move INIT_DELAYED_WORK(gf_stats_work) to before mana_create_eq(), while keeping schedule_delayed_work() at its original location. Previously, if any function between mana_create_eq() and the INIT_DELAYED_WORK call failed, mana_probe() would call mana_remove() which unconditionally calls cancel_delayed_work_sync(gf_stats_work) in __flush_work() or debug object warnings with CONFIG_DEBUG_OBJECTS_WORK enabled. Fixes: be4f1d67ec56 ("net: mana: Add standard counter rx_missed_errors") Signed-off-by: Erni Sri Satya Vennela Reviewed-by: Simon Horman --- Changes in v3: * No change Changes in v2: * Apply the patch in net instead of net-next. --- drivers/net/ethernet/microsoft/mana/mana_en.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/et= hernet/microsoft/mana/mana_en.c index e3e4b6de6668..468ed60a8a00 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -3635,6 +3635,8 @@ int mana_probe(struct gdma_dev *gd, bool resuming) INIT_WORK(&ac->link_change_work, mana_link_state_handle); } =20 + INIT_DELAYED_WORK(&ac->gf_stats_work, mana_gf_stats_work_handler); + err =3D mana_create_eq(ac); if (err) { dev_err(dev, "Failed to create EQs: %d\n", err); @@ -3709,7 +3711,6 @@ int mana_probe(struct gdma_dev *gd, bool resuming) =20 err =3D add_adev(gd, "eth"); =20 - INIT_DELAYED_WORK(&ac->gf_stats_work, mana_gf_stats_work_handler); schedule_delayed_work(&ac->gf_stats_work, MANA_GF_STATS_PERIOD); =20 out: --=20 2.34.1 From nobody Tue Jun 16 01:15:40 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7EE593CC9FD; Wed, 15 Apr 2026 08:09:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240590; cv=none; b=LLKphzvh5OE2sh+wh6QDSQ98+N21ScFv936JADlnV4LeQ/zyplKbB36EfBT9j2d4No32t8XsE1Lo0cQOiskdSdIMMJo0WigWSphd7nWliymszfO57VAt44+0WXt/QTTamq1Igpp3N0Pku31nHZSsdDkEGwo1wc6g2lnpjDN+KAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240590; c=relaxed/simple; bh=MCDfnbc2rfwekHxL8zm0sBnGyWdgeI7+CMo8UNBwB4w=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MqtD5PbO6n19V9uA8cSShtam/EGUqoQzhMXejtHOIHQbI8V4NKtZTz2VcuceRlyaR8hcbwwJrF7SUdTDnxWrOWwkKtMJl2Fvihl/lUDWvuGSp7pp2K0PoWaAh9pqGpUNk/GaSp7WaFJLncf3haokNfPTdDZoT1bF22NLyTqRDjY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=bdYK6bOb; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="bdYK6bOb" Received: by linux.microsoft.com (Postfix, from userid 1173) id 853F820B7128; Wed, 15 Apr 2026 01:09:47 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 853F820B7128 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776240587; bh=Gi9uAMZ3o8x3SKpfNIETP0JZnX/4FC7fDfxBAeXJbYg=; h=From:To:Subject:Date:In-Reply-To:References:From; b=bdYK6bObnsgQyqMxbEotSK1+qh6NctGGekCoFbhgij92CczSdQKGrEay8Vj05RWT/ OSOm/TeOWXUhJ5ZFSfBa1UGg/AJ/KSTutSHWE8DUo4Mprf+ILDuNFXFjV/XvyjPDso AOjMjlB39qkuUMR8e0Ylo3z80BcmN/89CptPYIGA= From: Erni Sri Satya Vennela To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, ernis@linux.microsoft.com, ssengar@linux.microsoft.com, dipayanroy@linux.microsoft.com, gargaditya@linux.microsoft.com, shirazsaleem@microsoft.com, kees@kernel.org, kotaranov@microsoft.com, leon@kernel.org, shacharr@microsoft.com, stephen@networkplumber.org, linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v3 3/5] net: mana: Guard mana_remove against double invocation Date: Wed, 15 Apr 2026 01:09:39 -0700 Message-ID: <20260415080944.732901-4-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260415080944.732901-1-ernis@linux.microsoft.com> References: <20260415080944.732901-1-ernis@linux.microsoft.com> 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" If PM resume fails (e.g., mana_attach() returns an error), mana_probe() calls mana_remove(), which tears down the device and sets gd->gdma_context =3D NULL and gd->driver_data =3D NULL. However, a failed resume callback does not automatically unbind the driver. When the device is eventually unbound, mana_remove() is invoked a second time. Without a NULL check, it dereferences gc->dev with gc =3D=3D NULL, causing a kernel panic. Add an early return if gdma_context or driver_data is NULL so the second invocation is harmless. Move the dev =3D gc->dev assignment after the guard so it cannot dereference NULL. Fixes: ca9c54d2d6a5 ("net: mana: Add a driver for Microsoft Azure Network A= dapter (MANA)") Signed-off-by: Erni Sri Satya Vennela --- Changes in v3: * Add this patch to the patchset --- drivers/net/ethernet/microsoft/mana/mana_en.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/et= hernet/microsoft/mana/mana_en.c index 468ed60a8a00..ce1b7ec46a27 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -3731,11 +3731,16 @@ void mana_remove(struct gdma_dev *gd, bool suspendi= ng) struct gdma_context *gc =3D gd->gdma_context; struct mana_context *ac =3D gd->driver_data; struct mana_port_context *apc; - struct device *dev =3D gc->dev; + struct device *dev; struct net_device *ndev; int err; int i; =20 + if (!gc || !ac) + return; + + dev =3D gc->dev; + disable_work_sync(&ac->link_change_work); cancel_delayed_work_sync(&ac->gf_stats_work); =20 --=20 2.34.1 From nobody Tue Jun 16 01:15:40 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 82F483CE4B3; Wed, 15 Apr 2026 08:09:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240591; cv=none; b=JNMzulSQR6RPkACxmFmJAK7uVdYhz2/rFQfTgv7GzFi5ZHw6jQY7YNs/AQRo8vt0Lxrmf1nEj6oex9Em6XK+WmX5EmK4s7F+cSoFBTOgxZq3UV6mN+Bo+2q4HD3erw2vtCbCAH+e3pXaCe3o/fQ827vKko6yfMnyXKr5tJeUog8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240591; c=relaxed/simple; bh=UJ1GEY5GoWkbM7DoTWg7Yau76nI63MmakyN1t3mDcNM=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AQ4VqWCJGGubpquzgmRlDAEVjtLXQdChbL2aBujc0Itr+YQinBo1x6gPBrTy71cDoor0U8t+PGIPo/xskciN8UGGac+a8sXjMiQqcF/lKDhuLGsbLhdslDOzHin2IRc6hjOJD+jxT9o1gVcsUOb8gsW/uEwrRYzuhm4SDd2oW7E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=TK6JQBVx; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="TK6JQBVx" Received: by linux.microsoft.com (Postfix, from userid 1173) id 764F420B7017; Wed, 15 Apr 2026 01:09:48 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 764F420B7017 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776240588; bh=U6Zg0MH0awSapYH4NtsgkQDL5z7isF9zF61w01KHq0c=; h=From:To:Subject:Date:In-Reply-To:References:From; b=TK6JQBVxzmuJvOQxRyeBxG0DJBcnHa7OSZReOmEZbg5aDFaK//vOUytkh/N6DQ5QL 6ozxhRB7234aXHxWPcSWiFUMS7VRRXJD/3fOEO5ZWGker9YnwI9yvs45XQkntgxPcr GhGhcs3nWH5HpfF67CfJTO8c18bJJ4/49vtSpf+s= From: Erni Sri Satya Vennela To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, ernis@linux.microsoft.com, ssengar@linux.microsoft.com, dipayanroy@linux.microsoft.com, gargaditya@linux.microsoft.com, shirazsaleem@microsoft.com, kees@kernel.org, kotaranov@microsoft.com, leon@kernel.org, shacharr@microsoft.com, stephen@networkplumber.org, linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v3 4/5] net: mana: Don't overwrite port probe error with add_adev result Date: Wed, 15 Apr 2026 01:09:40 -0700 Message-ID: <20260415080944.732901-5-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260415080944.732901-1-ernis@linux.microsoft.com> References: <20260415080944.732901-1-ernis@linux.microsoft.com> 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" In mana_probe(), if mana_probe_port() fails for any port, the error is stored in 'err' and the loop breaks. However, the subsequent unconditional 'err =3D add_adev(gd, "eth")' overwrites this error. If add_adev() succeeds, mana_probe() returns success despite ports being left in a partially initialized state (ac->ports[i] =3D=3D NULL). Only call add_adev() when there is no prior error, so the probe correctly fails and triggers mana_remove() cleanup. Fixes: ced82fce77e9 ("net: mana: Probe rdma device in mana driver") Signed-off-by: Erni Sri Satya Vennela --- Changes in v3: * Fix inaccurate comments. Changes in v2: * Apply the patch in net instead of net-next. --- drivers/net/ethernet/microsoft/mana/mana_en.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/et= hernet/microsoft/mana/mana_en.c index ce1b7ec46a27..39b18577fb51 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -3680,10 +3680,9 @@ int mana_probe(struct gdma_dev *gd, bool resuming) if (!resuming) { for (i =3D 0; i < ac->num_ports; i++) { err =3D mana_probe_port(ac, i, &ac->ports[i]); - /* we log the port for which the probe failed and stop - * probes for subsequent ports. - * Note that we keep running ports, for which the probes - * were successful, unless add_adev fails too + /* Log the port for which the probe failed, stop probing + * subsequent ports, and skip add_adev. + * mana_remove() will clean up already-probed ports. */ if (err) { dev_err(dev, "Probe Failed for port %d\n", i); @@ -3697,10 +3696,9 @@ int mana_probe(struct gdma_dev *gd, bool resuming) enable_work(&apc->queue_reset_work); err =3D mana_attach(ac->ports[i]); rtnl_unlock(); - /* we log the port for which the attach failed and stop - * attach for subsequent ports - * Note that we keep running ports, for which the attach - * were successful, unless add_adev fails too + /* Log the port for which the attach failed, stop + * attaching subsequent ports, and skip add_adev. + * mana_remove() will clean up already-attached ports. */ if (err) { dev_err(dev, "Attach Failed for port %d\n", i); @@ -3709,7 +3707,8 @@ int mana_probe(struct gdma_dev *gd, bool resuming) } } =20 - err =3D add_adev(gd, "eth"); + if (!err) + err =3D add_adev(gd, "eth"); =20 schedule_delayed_work(&ac->gf_stats_work, MANA_GF_STATS_PERIOD); =20 --=20 2.34.1 From nobody Tue Jun 16 01:15:40 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0F0E13CF05C; Wed, 15 Apr 2026 08:09:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.77.154.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240592; cv=none; b=Wp6td5/CuoxSvfxZuVytrGBzdEYjFhVK+3yTVyCPyy6LthhGvg8bo22XWKD8bHzcGWWmODd7VZSTVlXzhyCVA3qI15kDJ/R9eNvUd2VRCjmb2aBSUWEB6gB4dKiDPa4M0KKj01xSqbo4ScjHofm/55c8KJp8pbS7zxU7lU9k8ds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240592; c=relaxed/simple; bh=8BSfPnLTNKmDDD+jiRCjzhrMYEcYTYXgQmGHMnRY/Cc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PHszpYOMy7RamZdlHjlD+Ogc4Dqfr26P0JweBA/9Q6Mguqkh7Pw6bq+HLaiR9m8IwYdQTt7jiHvWf9u9v446DHdhOBGuzAx1dMhf3HCkejgdgfRZbXlrYsYzLGjBdRbXhKQ8Abemk8jW8ZdI4T8FHSfrXvd7bvap+R/AayQZ/dU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com; spf=pass smtp.mailfrom=linux.microsoft.com; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b=ejd1pE03; arc=none smtp.client-ip=13.77.154.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.microsoft.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="ejd1pE03" Received: by linux.microsoft.com (Postfix, from userid 1173) id C9F0320B6F01; Wed, 15 Apr 2026 01:09:49 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com C9F0320B6F01 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776240589; bh=0Nti++6BTAfNRiCVWfrJALlQGAky67KoDPRVitlg9Kc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ejd1pE03kn0z8nUqmQgartUx0Z4199igxuIywu3xtPdFbz3gmLQcSC0HbkC14osQe yhVx5FbhxE6SoDEyGyb3pKtikdkPLUeC9so2IWLmuBUhiE3zeYKZx39oLk5V2xY98K spCWh9+aadMsceG2/e2M6PEj4UaL59iqaF4Y/fkQ= From: Erni Sri Satya Vennela To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, ernis@linux.microsoft.com, ssengar@linux.microsoft.com, dipayanroy@linux.microsoft.com, gargaditya@linux.microsoft.com, shirazsaleem@microsoft.com, kees@kernel.org, kotaranov@microsoft.com, leon@kernel.org, shacharr@microsoft.com, stephen@networkplumber.org, linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net v3 5/5] net: mana: Fix EQ leak in mana_remove on NULL port Date: Wed, 15 Apr 2026 01:09:41 -0700 Message-ID: <20260415080944.732901-6-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260415080944.732901-1-ernis@linux.microsoft.com> References: <20260415080944.732901-1-ernis@linux.microsoft.com> 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" In mana_remove(), when a NULL port is encountered in the port iteration loop, 'goto out' skips the mana_destroy_eq(ac) call, leaking the event queues allocated earlier by mana_create_eq(). This can happen when mana_probe_port() fails for port 0, leaving ac->ports[0] as NULL. On driver unload or error cleanup, mana_remove() hits the NULL entry and jumps past mana_destroy_eq(). Change 'goto out' to 'break' so the for-loop exits normally and mana_destroy_eq() is always reached. Remove the now-unreferenced out: label. Fixes: 1e2d0824a9c3 ("net: mana: Add support for EQ sharing") Signed-off-by: Erni Sri Satya Vennela --- Changes in v3; * Update Fixes tag to appropriate commit id. Changes in v2: * Apply the patch in net instead of net-next. --- drivers/net/ethernet/microsoft/mana/mana_en.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/et= hernet/microsoft/mana/mana_en.c index 39b18577fb51..98e2fcc797ca 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -3752,7 +3752,7 @@ void mana_remove(struct gdma_dev *gd, bool suspending) if (!ndev) { if (i =3D=3D 0) dev_err(dev, "No net device to remove\n"); - goto out; + break; } =20 apc =3D netdev_priv(ndev); @@ -3783,7 +3783,7 @@ void mana_remove(struct gdma_dev *gd, bool suspending) } =20 mana_destroy_eq(ac); -out: + if (ac->per_port_queue_reset_wq) { destroy_workqueue(ac->per_port_queue_reset_wq); ac->per_port_queue_reset_wq =3D NULL; --=20 2.34.1