Re: [PATCH net] gve: use gve_schedule_reset() on AdminQ flow rule timeout

Harshitha Ramamurthy <[email protected]>
Newsgroups gmane.linux.network
Message-ID <CAEAWyHe9FCTpu3qhrqjVP8chdMpekB_+1Th0jdZ6OeR1fb4Z2w@mail.gmail.com>
On Thu, Aug 6, 2026 at 1:51 AM Rénich Bon Ćirić <[email protected]> wrote:
>
> 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.
>
> Fixes: 8ffade77b633 ("gve: Flow steering trigger reset only for timeout error")
> Link: https://github.com/GoogleCloudPlatform/compute-virtual-ethernet-linux/issues/93

Hi Renich,

Did you encounter this issue on the upstream net kernel? Because the
Github issue you have linked is referencing the CentOS Stream 10
kernel version 6.12.0-248.el10.x86_64. We scanned our backend within
Google to see if this reset causing error is encountered on VMs and we
did not see such an occurrence, at least recently. If you ran into
this on a non-upstream kernel, would be great if you could provide
more information on the Github issue or file a support ticket so we
could look into it off the mailing list.

If you did hit this issue on an upstream kernel, could you also please
provide a splat here?

Thanks,
Harshitha

> Signed-off-by: Rénich Bon Ćirić <[email protected]>
> ---
>  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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.