diff --git a/net/core/dev.c b/net/core/dev.c
index 0891f499c1bb7cdb85490a681b21895f2206bcba..5156c0edebe8097403c6b78f711df5a373fd2e6d 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8758,6 +8758,8 @@ int register_netdevice(struct net_device *dev)
 	ret = notifier_to_errno(ret);
 	if (ret) {
 		rollback_registered(dev);
+		rcu_barrier();
+
 		dev->reg_state = NETREG_UNREGISTERED;
 	}
 	/*