浏览代码

ixgbe: fix registration order of driver and DCA nofitication

ixgbe_notify_dca cannot be called before driver registration
because it expects driver's klist_devices to be allocated and
initialized. While on it make sure debugfs files are removed
when registration fails.

Cc: stable <stable@vger.kernel.org>
Signed-off-by: Jakub Kicinski <jakub.kicinski@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jakub Kicinski 12 年之前
父节点
当前提交
f01fc1a82c
共有 1 个文件被更改,包括 9 次插入2 次删除
  1. 9 2
      drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

+ 9 - 2
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

@@ -7922,12 +7922,19 @@ static int __init ixgbe_init_module(void)
 	ixgbe_dbg_init();
 	ixgbe_dbg_init();
 #endif /* CONFIG_DEBUG_FS */
 #endif /* CONFIG_DEBUG_FS */
 
 
+	ret = pci_register_driver(&ixgbe_driver);
+	if (ret) {
+#ifdef CONFIG_DEBUG_FS
+		ixgbe_dbg_exit();
+#endif /* CONFIG_DEBUG_FS */
+		return ret;
+	}
+
 #ifdef CONFIG_IXGBE_DCA
 #ifdef CONFIG_IXGBE_DCA
 	dca_register_notify(&dca_notifier);
 	dca_register_notify(&dca_notifier);
 #endif
 #endif
 
 
-	ret = pci_register_driver(&ixgbe_driver);
-	return ret;
+	return 0;
 }
 }
 
 
 module_init(ixgbe_init_module);
 module_init(ixgbe_init_module);