On Mon, 2016-04-18 at 21:19 +0200, Hannes Frederic Sowa wrote: > vxlan_get_rx_port requires rtnl_lock to be held. > > Cc: Jeff Kirsher <jeffrey.t.kirs...@intel.com> > Cc: Jesse Brandeburg <jesse.brandeb...@intel.com> > Cc: Shannon Nelson <shannon.nel...@intel.com> > Cc: Carolyn Wyborny <carolyn.wybo...@intel.com> > Cc: Don Skidmore <donald.c.skidm...@intel.com> > Cc: Bruce Allan <bruce.w.al...@intel.com> > Cc: John Ronciak <john.ronc...@intel.com> > Cc: Mitch Williams <mitch.a.willi...@intel.com> > Signed-off-by: Hannes Frederic Sowa <han...@stressinduktion.org> > --- > drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > index 2976df77bf14f5..b2f2cf40f06a87 100644 > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > @@ -7192,10 +7192,12 @@ static void ixgbe_service_task(struct work_struct > *work) > return; > } > #ifdef CONFIG_IXGBE_VXLAN > + rtnl_lock(); > if (adapter->flags2 & IXGBE_FLAG2_VXLAN_REREG_NEEDED) { > adapter->flags2 &= ~IXGBE_FLAG2_VXLAN_REREG_NEEDED; > vxlan_get_rx_port(adapter->netdev); > } > + rtnl_unlock(); > #endif /* CONFIG_IXGBE_VXLAN */ > ixgbe_reset_subtask(adapter); > ixgbe_phy_interrupt_subtask(adapter);
Although there might be a deadlock with a concurrent cancel_work_sync(&adapter->service_task); from ixgbe_remove()