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. Thanks, Paolo
