diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index e0c3deec59b..f494675471a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -1387,7 +1387,7 @@ rollback: | |||
| 1387 | for_each_net(net) { | 1387 | for_each_net(net) { |
| 1388 | for_each_netdev(net, dev) { | 1388 | for_each_netdev(net, dev) { |
| 1389 | if (dev == last) | 1389 | if (dev == last) |
| 1390 | break; | 1390 | goto outroll; |
| 1391 | 1391 | ||
| 1392 | if (dev->flags & IFF_UP) { | 1392 | if (dev->flags & IFF_UP) { |
| 1393 | nb->notifier_call(nb, NETDEV_GOING_DOWN, dev); | 1393 | nb->notifier_call(nb, NETDEV_GOING_DOWN, dev); |
| @@ -1398,6 +1398,7 @@ rollback: | |||
| 1398 | } | 1398 | } |
| 1399 | } | 1399 | } |
| 1400 | 1400 | ||
| 1401 | outroll: | ||
| 1401 | raw_notifier_chain_unregister(&netdev_chain, nb); | 1402 | raw_notifier_chain_unregister(&netdev_chain, nb); |
| 1402 | goto unlock; | 1403 | goto unlock; |
| 1403 | } | 1404 | } |
| @@ -4209,6 +4210,12 @@ static int dev_seq_open(struct inode *inode, struct file *file) | |||
| 4209 | sizeof(struct dev_iter_state)); | 4210 | sizeof(struct dev_iter_state)); |
| 4210 | } | 4211 | } |
| 4211 | 4212 | ||
| 4213 | int dev_seq_open_ops(struct inode *inode, struct file *file, | ||
| 4214 | const struct seq_operations *ops) | ||
| 4215 | { | ||
| 4216 | return seq_open_net(inode, file, ops, sizeof(struct dev_iter_state)); | ||
| 4217 | } | ||
| 4218 | |||
| 4212 | static const struct file_operations dev_seq_fops = { | 4219 | static const struct file_operations dev_seq_fops = { |
| 4213 | .owner = THIS_MODULE, | 4220 | .owner = THIS_MODULE, |
| 4214 | .open = dev_seq_open, | 4221 | .open = dev_seq_open, |
