From: "Rénich Bon Ćirić" <renich@evalinux.com>
To: netdev@vger.kernel.org
Cc: "Joshua Washington" <joshwash@google.com>,
"Harshitha Ramamurthy" <hramamurthy@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"David S . Miller" <davem@davemloft.net>,
"Andrew Lunn" <andrew+netdev@lunn.ch>,
"Rénich Bon Ćirić" <renich@evalinux.com>,
"Przemek Kitszel" <przemyslaw.kitszel@intel.com>
Subject: [PATCH net v2] gve: use gve_schedule_reset() on AdminQ flow rule timeout
Date: Fri, 7 Aug 2026 18:21:36 -0600 [thread overview]
Message-ID: <20260808002136.2064827-1-renich@evalinux.com> (raw)
When an AdminQ command to configure a flow rule times out in
gve_adminq_configure_flow_rule(), the driver currently calls
gve_reset(priv, true) synchronously.
When flow rule configuration is invoked under netlink or ethtool
callbacks, gve_reset() attempts to acquire rtnl_lock while already
executing within an inner driver lock context. This violates the driver's
lock hierarchy and causes an AB-BA circular lock inversion deadlock.
Resolve this lock inversion by replacing synchronous gve_reset() with
gve_schedule_reset(). This defers reset execution safely to
gve_service_task out-of-band under the proper lock ordering.
Co-developed with Gemini AI (Google DeepMind) for root cause analysis
and patch formulation.
Fixes: 57718b60df9b ("gve: Add flow steering adminq commands")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Rénich Bon Ćirić <renich@evalinux.com>
---
v2: https://lore.kernel.org/netdev/20260806085112.385934-1-renich@woralelandia.com/
- Update Fixes tag to 57718b60df9b per Przemek Kitszel review.
- Add Reviewed-by tag from Przemek Kitszel.
- Remove misleading GitHub Issue #93 link (opened for CentOS Stream 10 NAPI bug).
- Add explicit AI co-development disclosure in commit body.
v1: https://lore.kernel.org/netdev/20260806085112.385934-1-renich@woralelandia.com/
drivers/net/ethernet/google/gve/gve_adminq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c
index 08587bf12345..2037b1767890 100644
--- a/drivers/net/ethernet/google/gve/gve_adminq.c
+++ b/drivers/net/ethernet/google/gve/gve_adminq.c
@@ -1322,7 +1322,7 @@ gve_adminq_configure_flow_rule(struct gve_priv *priv,
if (err == -ETIME) {
dev_err(&priv->pdev->dev, "Timeout to configure the flow rule, trigger reset");
- gve_reset(priv, true);
+ gve_schedule_reset(priv);
} else if (!err) {
priv->flow_rules_cache.rules_cache_synced = false;
}
--
2.45.2
reply other threads:[~2026-08-08 0:21 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260808002136.2064827-1-renich@evalinux.com \
--to=renich@evalinux.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hramamurthy@google.com \
--cc=joshwash@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.