• Anjali Singhai's avatar
    i40e: Fix for recursive RTNL lock during PROMISC change · 30e2561b
    Anjali Singhai authored
    The sync_vsi_filters function can be called directly under RTNL
    or through the timer subtask without one. This was causing a deadlock.
    
    If sync_vsi_filters is called from a thread which held the lock,
    and in another thread the PROMISC setting got changed we would
    be executing the PROMISC change in the thread which already held
    the lock alongside the other filter update. The PROMISC change
    requires a reset if we are on a VEB, which requires it to be called
    under RTNL.
    
    Earlier the driver would call reset for PROMISC change without
    checking if we were already under RTNL and would try to grab it
    causing a deadlock. This patch changes the flow to see if we are
    already under RTNL before trying to grab it.
    Signed-off-by: default avatarAnjali Singhai Jain <anjali.singhai@intel.com>
    Signed-off-by: default avatarKiran Patil <kiran.patil@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    30e2561b
i40e_main.c 290 KB