| From: Benjamin Poirier <bpoirier@suse.de> |
| Date: Fri, 6 Apr 2012 07:20:21 +0000 |
| Subject: ixgbe: add missing rtnl_lock in PM resume path |
| |
| commit 34948a947d1a576c10afee6d14792fd237549577 upstream. |
| |
| Upon resume from standby, ixgbe may trigger the ASSERT_RTNL() in |
| netif_set_real_num_tx_queues(). The call stack is: |
| netif_set_real_num_tx_queues |
| ixgbe_set_num_queues |
| ixgbe_init_interrupt_scheme |
| ixgbe_resume |
| |
| Signed-off-by: Benjamin Poirier <bpoirier@suse.de> |
| Tested-by: Stephen Ko <stephen.s.ko@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |
| +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |
| @@ -5418,7 +5418,9 @@ static int ixgbe_resume(struct pci_dev * |
| |
| pci_wake_from_d3(pdev, false); |
| |
| + rtnl_lock(); |
| err = ixgbe_init_interrupt_scheme(adapter); |
| + rtnl_unlock(); |
| if (err) { |
| e_dev_err("Cannot initialize interrupts for device\n"); |
| return err; |