From nobody Sat Jun 13 02:14:10 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CE0B837F8A3; Mon, 20 Apr 2026 12:47:43 +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=1776689265; cv=none; b=EeBHDxwE8jOrv8PcBBen+RcgNdhbz5KtO5KvPES/oP5A3Ub2f9UyPXLrBgNPm93A5I/WqZ+y/K4GhTN779Vl4He5k11+HNLRVI855wnHKNvUCrkxZLVLzB4EgrMhqHNnEKf+FepdRPY+wIu7Q15CEN0rNBzriimNqALHSSfxUxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776689265; c=relaxed/simple; bh=bvZfBidEQ5/CscPzRaY/LIy+hxk99bYXUJ9+3FRln4Q=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BUU0+6BHSEfFI+ep06sOEy7UKMVQFPoan8PiIp1DgCcM1SFg958LB6hnEYpVSYEAu2jCW+79wr6xlJotKnij+v43NMDWQBwCZ9feGzfLZlh3rCNPr85IvjJzc89WQADvDtWz4X73nmxFc9YguVrexclBc1kwZcbC83NmnvDJ8UQ= 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=FSczLDXw; 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="FSczLDXw" Received: by linux.microsoft.com (Postfix, from userid 1173) id 0ADA520B712D; Mon, 20 Apr 2026 05:47:44 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 0ADA520B712D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776689264; bh=2b+SdzBl2fLw0sHK6RRua/VTF4F59mZJmPHAHlWpzrI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=FSczLDXwZKDNkhf5RcN1NiC0mlJWATnL1Syqtnocn14ReFGU7ml6UNLtXQeh1M/b9 mlbFfbkcRuBYpoWcr8+EvDYHf8rjXKYGC/HslpAnXiz2L9ZK2CNvqc1gvowATk3Ohw vtT0XvKO+9RTA7zlqX7LhNRmi88Vm+VdA/M2sVbk= 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 v4 1/5] net: mana: Init link_change_work before potential error paths in probe Date: Mon, 20 Apr 2026 05:47:35 -0700 Message-ID: <20260420124741.1056179-2-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260420124741.1056179-1-ernis@linux.microsoft.com> References: <20260420124741.1056179-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,v4: * 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 Sat Jun 13 02:14:10 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 908C739BFEF; Mon, 20 Apr 2026 12:47:44 +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=1776689265; cv=none; b=UkRYvnoDZOKhroCub2VwRn/vGqK4wM7WQERStoa99Ytv3mzFlY+dWRR+m+1E4RpQab091Z3HXweyLNXWb7sXxrh3CV4w8wfQEaRFch7uecpdp6yahfixMd+h5s7Qf2dnDCO2dcpCKwaGs9rgZvdyOlnztaaOW/ULLhWUTAMUPwo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776689265; c=relaxed/simple; bh=BbHisHAiZPuS3BJCinTzaZM6Zj98oF1WDvTozelDMnY=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GbRu8n9Bt+CvXZZ/bfYTgH790RF+m+bY9RbuMKLxpDjNE5IzVwlkJKVNTGnoZfS1CnK90HRGvjpCCQsQdJAh4rnY8AmI/eC7RuVkd41emtwTmlRL0OB7H18wc+BtAE5dU8h1IuOq5Z/fAllsAagDNeHHBG/imUfeQuGhPShJdtA= 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=cRInjWEJ; 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="cRInjWEJ" Received: by linux.microsoft.com (Postfix, from userid 1173) id D8BCD20B7129; Mon, 20 Apr 2026 05:47:44 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com D8BCD20B7129 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776689264; bh=TO5DGqsb3Bk8K5yEpkaKIxhBRQ4TjEnpb6HMU0jAUb0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=cRInjWEJ11OIN8DMsVqyRgfsnwzgIkzdz2tF/2p4LxLeE4GLs6FXCfR8SQO50YNUq rEdJWcQeOuQxI7QpzmCthOBkHbVehcVHxs2KOipxJeb0ce9TTdhrL9J0p5TzkfWjnf IywwOkPq324CZZDHRRLf3dwFl0cfFAeYJ1HJDHpU= 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 v4 2/5] net: mana: Init gf_stats_work before potential error paths in probe Date: Mon, 20 Apr 2026 05:47:36 -0700 Message-ID: <20260420124741.1056179-3-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260420124741.1056179-1-ernis@linux.microsoft.com> References: <20260420124741.1056179-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,v4: * 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 Sat Jun 13 02:14:10 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 73AC339FCC5; Mon, 20 Apr 2026 12:47:45 +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=1776689266; cv=none; b=r7TBPplaG4usvtrdljn3iWEXTfsWWhVC+mRVvpPLGHQN7KeYFxMBCKUGALH1YWi7zbMxSon17l+FSImo0R8SwB0Oml3y0H1xXvISIVStuFqVSs7RqoXpnrqyJKUcM9AWSAdpwnD3Z9PwjM/LKYOsVULpA3DoRp7S0I5IZglr9R0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776689266; c=relaxed/simple; bh=P2kt/CKC5yu9pr1ZKCk7iyd6LOBo0Pl3p47ol6qO+8Q=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JILj1BV0NL1zi603m7jVDuSiCInX6ZVHgfrDiOI9rl/J1renL15XePDBnr0h0nlG6ZrkWHmLZp226s1I8jFXkzX57EMM5dUf6plqOjEnicur2S4DGfANJeBGz8uLzl6JawV/99RlzD6i1i1ZPTqK5U8sEIFFJ6cTRoI3fbtk9mo= 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=O0ywJ7ki; 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="O0ywJ7ki" Received: by linux.microsoft.com (Postfix, from userid 1173) id B0CCE20B7007; Mon, 20 Apr 2026 05:47:45 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B0CCE20B7007 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776689265; bh=0fhaBQOr7Jyp7EGbiMAXQbIjNs9S2T+A2SatmDBiXM4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=O0ywJ7kiaWWSceUWcpgi0YcNXs2/+f6MPJrwMURQCW3oDpCZCn35GJ8QzjDvxQhrq 2tF64+5G7M19glKp1OvBZU8p2seF/a95ctE9vvSPmaU2XkTVapch2nwEl45Aw081Jr dR5eygVyWL5MXf9BF/96P90H4iKa04pUbf25IZuY= 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 v4 3/5] net: mana: Guard mana_remove against double invocation Date: Mon, 20 Apr 2026 05:47:37 -0700 Message-ID: <20260420124741.1056179-4-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260420124741.1056179-1-ernis@linux.microsoft.com> References: <20260420124741.1056179-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: 635096a86edb ("net: mana: Support hibernation and kexec") Signed-off-by: Erni Sri Satya Vennela Reviewed-by: Simon Horman --- Changes in v4: * Update Fixes tag to 635096a86edb 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 Sat Jun 13 02:14:10 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 31A753A0E8D; Mon, 20 Apr 2026 12:47: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=1776689267; cv=none; b=U/x8E93+ArwLdm9z54/ylrSzuP7faughqJLMYsv80hBOR/+ml71qLB86U6hNnls5kzzQa2oVvV2tuGI08eXaYXpap9CW9ydRq5tQcD0DrCiu6fw6KYX35n1Na1G5f4KQ3ZbBNvIUgDKuFFmOL1WSFsO6CgFytVzUR0vG+rcSvwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776689267; c=relaxed/simple; bh=JoFyREzAfqWaZRB+hT/pnwcuUYGr++uNWRMaFBD91YM=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jeSW1DuLQvdDK2VkW6xLOnnHZZAavxnpGzd3KPMXr974vcAROHrPzfIHgG4NlaiBIv8ZcdixoGmTDHg0W2GgskPRr1XI3i2gBwG3Dts6koTgvfA8fCvfpeEfGv28zQOMg5mLpTo7f1xxqhbvIFNBFCHFXYDM+AEtGgOnIVQWOUQ= 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=W1mjUhKb; 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="W1mjUhKb" Received: by linux.microsoft.com (Postfix, from userid 1173) id 773B120B6F15; Mon, 20 Apr 2026 05:47:46 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 773B120B6F15 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776689266; bh=q77hvq8saWy7ehASOs50PUvy+3CKFGHadE9ZY8Tf360=; h=From:To:Subject:Date:In-Reply-To:References:From; b=W1mjUhKbSP08vqetXVc8wQVker8PbMgpZrdz4mT5pqbhOOXNeGJYVgq9rRNpF+aKR NVYJZhQJb0pTLx62QCFhcL09T3VOuKdfNI5/yyoHI5nfeE3onw3VjO7STWQWEx0ekA PuOzbD4IuAm9EcT7N5sI+Fj/dpDku+g5DpPWPUWM= 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 v4 4/5] net: mana: Don't overwrite port probe error with add_adev result Date: Mon, 20 Apr 2026 05:47:38 -0700 Message-ID: <20260420124741.1056179-5-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260420124741.1056179-1-ernis@linux.microsoft.com> References: <20260420124741.1056179-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: a69839d4327d ("net: mana: Add support for auxiliary device") Signed-off-by: Erni Sri Satya Vennela Reviewed-by: Simon Horman --- Changes in v4: * Update Fixes tag to a69839d4327d. 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 Sat Jun 13 02:14:10 2026 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 64BF33A16B3; Mon, 20 Apr 2026 12:47: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=1776689268; cv=none; b=A8WB+15A8R7DYOwhNhQSzAwtMpIkxqPVHFa9/aKKBVrdNjtoYi1EySiJdiauvfMlsUfwF3v8ycFUtLkPt2dqiIaLdtOtO9POaff+uLXoZp+sS6Xcwm/UD34Bj3JKexlYhs0cvELPM2/92WcAoTojXZ7N6pcKhqNtWKajvwqaMCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776689268; c=relaxed/simple; bh=Ni6vx9SF49yxYhP3LbrjHOLdZht5SxkCYU2TLmQY4dY=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DEB93FGZlmc6ki8FpeyLRWnHAnHmbjNTP96wkcN27/gfPWK4ZyoALzOWqHJYwPen572ZiOINoVOQMRb+KWxT89x+NMNZ/zJznIpNMIbuM7vFBYZUs2xWd7mCebvW0D0HqmtO8pf/5QzA0WWynXGz3XyxMmQO5OMNsJ5MspHlnAg= 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=I2ybQzdu; 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="I2ybQzdu" Received: by linux.microsoft.com (Postfix, from userid 1173) id B3E8720B6F21; Mon, 20 Apr 2026 05:47:47 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B3E8720B6F21 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1776689267; bh=BBxLSN6bc6KHGhDAGqcnT/zZk1brxAn7fdLjOWLSc1I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=I2ybQzdurCAAABChs9YkdF1xaaWxTFXL1ZHhf60lEPChHzRBk0Zdm3hKB8zA5B8ZK 5sN+G40Fw31HlcTeVi8Em1r3CqXT+Gytu/DSI7/g8Iykmh9/dW2QAz3oRyuk8IH4GA 7yLekABiJpIbs2Z/awB2/MlM/fZANy2W8tUeOO/E= 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 v4 5/5] net: mana: Fix EQ leak in mana_remove on NULL port Date: Mon, 20 Apr 2026 05:47:39 -0700 Message-ID: <20260420124741.1056179-6-ernis@linux.microsoft.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260420124741.1056179-1-ernis@linux.microsoft.com> References: <20260420124741.1056179-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 Reviewed-by: Simon Horman --- Changes in v4: * No change 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