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,

Reply via email to