You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
net: reinstate rtnl in call_netdevice_notifiers()
Eric Biederman pointed out that not holding RTNL while calling
call_netdevice_notifiers() was racy.
This patch is a direct transcription his feedback
against commit 0115e8e30d (net: remove delay at device dismantle)
Thanks Eric !
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Mahesh Bandewar <maheshb@google.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Gao feng <gaofeng@cn.fujitsu.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
0fa7fa98db
commit
748e2d9396
@@ -1050,9 +1050,6 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
if (event == NETDEV_UNREGISTER_FINAL)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
in_dev = __in_dev_get_rtnl(dev);
|
||||
|
||||
switch (event) {
|
||||
@@ -1064,14 +1061,14 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
|
||||
fib_sync_up(dev);
|
||||
#endif
|
||||
atomic_inc(&net->ipv4.dev_addr_genid);
|
||||
rt_cache_flush(dev_net(dev), -1);
|
||||
rt_cache_flush(net, -1);
|
||||
break;
|
||||
case NETDEV_DOWN:
|
||||
fib_disable_ip(dev, 0, 0);
|
||||
break;
|
||||
case NETDEV_CHANGEMTU:
|
||||
case NETDEV_CHANGE:
|
||||
rt_cache_flush(dev_net(dev), 0);
|
||||
rt_cache_flush(net, 0);
|
||||
break;
|
||||
}
|
||||
return NOTIFY_DONE;
|
||||
|
||||
Reference in New Issue
Block a user