Re: [PATCH net v3] net: erspan: set lltx to avoid sch_direct_xmit deadlock

Ido Schimmel <[email protected]> Mon, 3 Aug 2026 18:11:46 +0300
Newsgroups org.kernel.vger.netdev,org.kernel.vger.linux-kernel
Message-ID <20260803151146.GA766007@shredder>
On Thu, Jul 30, 2026 at 04:22:38PM +0800, Yun Zhou wrote:
> erspan_xmit() re-enters the network stack via ip_tunnel_xmit(), causing
> nested acquisition of _xmit_lock on the underlay device while already
> holding the ERSPAN device's _xmit_lock. Both are ARPHRD_ETHER and share
> the same lockdep class, creating an ABBA deadlock:
> 
>   sch_direct_xmit [lock erspan] -> erspan_xmit -> ip_tunnel_xmit ->
>   ip_output -> __dev_queue_xmit -> sch_direct_xmit [lock underlay]

Sashiko complains that this is not accurate. Clarify that both the
overlay and underlay devices are of the same type (both erspan or both
ip6erspan). Not erspan and some Ethernet device in the underlay. See:

https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260730082238.676845-1-yun.zhou%40windriver.com

And:

https://lore.kernel.org/all/83360de7addb13a3b5f4d5e722148f248fdb2ae0.1784884817.git.pabeni@redhat.com/

> 
> Set dev->lltx = true so HARD_TX_LOCK() skips the spinlock for ERSPAN.
> This is safe as erspan_xmit() has no shared mutable state: o_seqno is
> atomic, stats use atomic_long_inc, and dst_cache is per-CPU. GRETAP,
> the sibling device with identical xmit structure, already sets lltx.

This is still not safe and in v2 I asked to wait for Eric's patch to be
accepted:

https://lore.kernel.org/netdev/20260720075352.GA2233846@shredder/

And it's still WIP:

https://lore.kernel.org/netdev/[email protected]/

> 
> Closes: https://syzkaller.appspot.com/bug?extid=9bda1b9fbb7fbdf9b62b
> Reported-by: [email protected]
> Fixes: 84e54fe0a5ea ("gre: introduce native tunnel support for ERSPAN")
> Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
> Cc: [email protected]
> Signed-off-by: Yun Zhou <[email protected]>
> ---
> v3:
>   - add fix for IPv6

The commit message doesn't mention the ip6erspan fix.