Skip to content

Commit 8552085

Browse files
haiyangzPaolo Abeni
authored andcommitted
hv_netvsc: Fix race of register_netdevice_notifier and VF register
If VF NIC is registered earlier, NETDEV_REGISTER event is replayed, but NETDEV_POST_INIT is not. Move register_netdevice_notifier() earlier, so the call back function is set before probing. Cc: [email protected] Fixes: e04e7a7 ("hv_netvsc: Fix a deadlock by getting rtnl lock earlier in netvsc_probe()") Reported-by: Dexuan Cui <[email protected]> Signed-off-by: Haiyang Zhang <[email protected]> Reviewed-by: Wojciech Drewek <[email protected]> Reviewed-by: Dexuan Cui <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent d30fb71 commit 8552085

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/net/hyperv/netvsc_drv.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2793,12 +2793,17 @@ static int __init netvsc_drv_init(void)
27932793
}
27942794
netvsc_ring_bytes = ring_size * PAGE_SIZE;
27952795

2796+
register_netdevice_notifier(&netvsc_netdev_notifier);
2797+
27962798
ret = vmbus_driver_register(&netvsc_drv);
27972799
if (ret)
2798-
return ret;
2800+
goto err_vmbus_reg;
27992801

2800-
register_netdevice_notifier(&netvsc_netdev_notifier);
28012802
return 0;
2803+
2804+
err_vmbus_reg:
2805+
unregister_netdevice_notifier(&netvsc_netdev_notifier);
2806+
return ret;
28022807
}
28032808

28042809
MODULE_LICENSE("GPL");

0 commit comments

Comments
 (0)