diff --git a/net/core/dev.c b/net/core/dev.c
index bcb05cb799c11ff4373ca112b3c3b62a46d55ad2..ec11d757c1fc2a87221afb50490eb1a8117aac66 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5954,7 +5954,10 @@ EXPORT_SYMBOL(free_netdev);
 void synchronize_net(void)
 {
 	might_sleep();
-	synchronize_rcu();
+	if (rtnl_is_locked())
+		synchronize_rcu_expedited();
+	else
+		synchronize_rcu();
 }
 EXPORT_SYMBOL(synchronize_net);