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:
parent
0fa7fa98db
commit
748e2d9396
5 changed files with 12 additions and 19 deletions
|
@ -711,16 +711,15 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event,
|
|||
struct net *net = dev_net(dev);
|
||||
struct fib_rules_ops *ops;
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
switch (event) {
|
||||
case NETDEV_REGISTER:
|
||||
ASSERT_RTNL();
|
||||
list_for_each_entry(ops, &net->rules_ops, list)
|
||||
attach_rules(&ops->rules_list, dev);
|
||||
break;
|
||||
|
||||
case NETDEV_UNREGISTER:
|
||||
ASSERT_RTNL();
|
||||
list_for_each_entry(ops, &net->rules_ops, list)
|
||||
detach_rules(&ops->rules_list, dev);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue