HI Paolo,
Thank you for the review.
On 12/28/25 11:29 AM, Paolo Abeni wrote:
On 12/18/25 1:13 PM, [email protected] wrote:
From: Mohammad Heib <[email protected]>
The i40e driver calls udp_tunnel_get_rx_info() during i40e_open().
This is redundant because UDP tunnel RX offload state is preserved
across device down/up cycles. The udp_tunnel core handles
synchronization automatically when required.
Furthermore, recent changes in the udp_tunnel infrastructure require
querying RX info while holding the udp_tunnel lock. Calling it
directly from the ndo_open path violates this requirement,
triggering the following lockdep warning:
Call Trace:
<TASK>
? __udp_tunnel_nic_assert_locked+0x39/0x40 [udp_tunnel]
i40e_open+0x135/0x14f [i40e]
__dev_open+0x121/0x2e0
__dev_change_flags+0x227/0x270
dev_change_flags+0x3d/0xb0
devinet_ioctl+0x56f/0x860
sock_do_ioctl+0x7b/0x130
__x64_sys_ioctl+0x91/0xd0
do_syscall_64+0x90/0x170
...
</TASK>
Remove the redundant and unsafe call to udp_tunnel_get_rx_info() from
i40e_open() resolve the locking violation.
Fixes: 06a5f7f167c5 ("i40e: Move all UDP port notifiers to single function")
Signed-off-by: Mohammad Heib <[email protected]>
Reviewed-by: Aleksandr Loktionov <[email protected]>
@Tony: I assume you prefer to take this series into your tree first.
@Mohammad: I think we don't need to packport this path in old kernels; I
guess a better fixes tag should point to the recent udp_tunnel
infrastructure changes.
indeed we don't need this change in the old versions.
I updated the fixes tag to:
- Fixes: 1ead7501094c ("udp_tunnel: remove rtnl_lock dependency").
This better reflects the change that exposed the problem, even though
the fix itself is in the driver.
Thanks,
Paolo
Thanks,