diff options
| -rw-r--r-- | net/core/rtnetlink.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 2c49355d16c2..25b4b5d23485 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
| @@ -1300,7 +1300,6 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) | |||
| 1300 | s_h = cb->args[0]; | 1300 | s_h = cb->args[0]; |
| 1301 | s_idx = cb->args[1]; | 1301 | s_idx = cb->args[1]; |
| 1302 | 1302 | ||
| 1303 | rcu_read_lock(); | ||
| 1304 | cb->seq = net->dev_base_seq; | 1303 | cb->seq = net->dev_base_seq; |
| 1305 | 1304 | ||
| 1306 | /* A hack to preserve kernel<->userspace interface. | 1305 | /* A hack to preserve kernel<->userspace interface. |
| @@ -1322,7 +1321,7 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb) | |||
| 1322 | for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { | 1321 | for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) { |
| 1323 | idx = 0; | 1322 | idx = 0; |
| 1324 | head = &net->dev_index_head[h]; | 1323 | head = &net->dev_index_head[h]; |
| 1325 | hlist_for_each_entry_rcu(dev, head, index_hlist) { | 1324 | hlist_for_each_entry(dev, head, index_hlist) { |
| 1326 | if (idx < s_idx) | 1325 | if (idx < s_idx) |
| 1327 | goto cont; | 1326 | goto cont; |
| 1328 | err = rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK, | 1327 | err = rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK, |
| @@ -1344,7 +1343,6 @@ cont: | |||
| 1344 | } | 1343 | } |
| 1345 | } | 1344 | } |
| 1346 | out: | 1345 | out: |
| 1347 | rcu_read_unlock(); | ||
| 1348 | cb->args[1] = idx; | 1346 | cb->args[1] = idx; |
| 1349 | cb->args[0] = h; | 1347 | cb->args[0] = h; |
| 1350 | 1348 | ||
