From: Ido Schimmel <idosch@nvidia.com>
To: Yun Zhou <yun.zhou@windriver.com>
Cc: dsahern@kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, horms@kernel.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] net: gre: fix lltx regression for GRE tunnels with SEQ/CSUM
Date: Mon, 13 Jul 2026 11:53:25 +0300 [thread overview]
Message-ID: <20260713085325.GA472073@shredder> (raw)
In-Reply-To: <20260709105243.864835-1-yun.zhou@windriver.com>
Patch prefix should be [PATCH net]:
https://docs.kernel.org/process/maintainer-netdev.html
On Thu, Jul 09, 2026 at 06:52:43PM +0800, Yun Zhou wrote:
> Before commit 00d066a4d4ed ("netdev_features: convert NETIF_F_LLTX to
> dev->lltx"), NETIF_F_LLTX was set unconditionally in __gre_tunnel_init()
> alongside GRE_FEATURES:
>
> dev->features |= GRE_FEATURES | NETIF_F_LLTX;
>
> When that commit converted NETIF_F_LLTX to the dev->lltx flag, it
> placed 'dev->lltx = true' after the SEQ/CSUM early returns instead
> of before them. This causes GRE/GRETAP tunnels with SEQ or CSUM+encap
> to lose lockless TX, reintroducing _xmit_lock acquisition around their
> ndo_start_xmit. Since GRE xmit re-enters the stack via
> ip_tunnel_xmit(), holding _xmit_lock risks ABBA deadlock with the
> underlay device.
>
> CPU0 CPU1
> ---- ----
> lock(&qdisc_xmit_lock_key#6);
> lock(&qdisc_xmit_lock_key#3);
> lock(&qdisc_xmit_lock_key#6);
> lock(&qdisc_xmit_lock_key#3);
>
> Fix by moving dev->lltx = true before the early returns, restoring
> the original unconditional behavior.
>
> Fixes: 00d066a4d4ed ("netdev_features: convert NETIF_F_LLTX to dev->lltx")
Both sashiko instances indicate that this commit introduced the same bug
in ip6gre_tnl_init_features(). Please perform the same fix there and
fold it into v2.
> Signed-off-by: Yun Zhou <yun.zhou@windriver.com>
> ---
> net/ipv4/ip_gre.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
> index 9fbff16cda1d..8c5ad8ec8d09 100644
> --- a/net/ipv4/ip_gre.c
> +++ b/net/ipv4/ip_gre.c
> @@ -1018,6 +1018,8 @@ static void __gre_tunnel_init(struct net_device *dev)
> dev->features |= GRE_FEATURES;
> dev->hw_features |= GRE_FEATURES;
>
> + dev->lltx = true;
> +
> /* TCP offload with GRE SEQ is not supported, nor can we support 2
> * levels of outer headers requiring an update.
> */
> @@ -1029,8 +1031,6 @@ static void __gre_tunnel_init(struct net_device *dev)
>
> dev->features |= NETIF_F_GSO_SOFTWARE;
> dev->hw_features |= NETIF_F_GSO_SOFTWARE;
> -
> - dev->lltx = true;
> }
>
> static int ipgre_tunnel_init(struct net_device *dev)
> --
> 2.43.0
>
next prev parent reply other threads:[~2026-07-13 8:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 10:52 [PATCH] net: gre: fix lltx regression for GRE tunnels with SEQ/CSUM Yun Zhou
2026-07-13 8:53 ` Ido Schimmel [this message]
2026-07-13 9:42 ` Zhou, Yun
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=20260713085325.GA472073@shredder \
--to=idosch@nvidia.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=yun.zhou@windriver.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.