Dear Mohammad,

Thank you for your patch.

Am 18.12.25 um 13:13 schrieb [email protected]:
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]>
---
  drivers/net/ethernet/intel/i40e/i40e_main.c | 1 -
  1 file changed, 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c 
b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 50be0a60ae13..72358a34438b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -9029,7 +9029,6 @@ int i40e_open(struct net_device *netdev)
                                                       TCP_FLAG_FIN |
                                                       TCP_FLAG_CWR) >> 16);
        wr32(&pf->hw, I40E_GLLAN_TSOMSK_L, be32_to_cpu(TCP_FLAG_CWR) >> 16);
-       udp_tunnel_get_rx_info(netdev);
return 0;
  }

Reviewed-by: Paul Menzel <[email protected]>


Kind regards,

Paul

Reply via email to