macsec: take rtnl lock before for_each_netdev
Fixes: c09440f7dc
("macsec: introduce IEEE 802.1AE driver")
Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
72f2a05b8f
commit
c10c63ea73
@ -2268,8 +2268,6 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
|
|||||||
if (!hdr)
|
if (!hdr)
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
|
|
||||||
rtnl_lock();
|
|
||||||
|
|
||||||
if (nla_put_u32(skb, MACSEC_ATTR_IFINDEX, dev->ifindex))
|
if (nla_put_u32(skb, MACSEC_ATTR_IFINDEX, dev->ifindex))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
@ -2429,14 +2427,11 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
|
|||||||
|
|
||||||
nla_nest_end(skb, rxsc_list);
|
nla_nest_end(skb, rxsc_list);
|
||||||
|
|
||||||
rtnl_unlock();
|
|
||||||
|
|
||||||
genlmsg_end(skb, hdr);
|
genlmsg_end(skb, hdr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
rtnl_unlock();
|
|
||||||
genlmsg_cancel(skb, hdr);
|
genlmsg_cancel(skb, hdr);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
@ -2450,6 +2445,7 @@ static int macsec_dump_txsc(struct sk_buff *skb, struct netlink_callback *cb)
|
|||||||
dev_idx = cb->args[0];
|
dev_idx = cb->args[0];
|
||||||
|
|
||||||
d = 0;
|
d = 0;
|
||||||
|
rtnl_lock();
|
||||||
for_each_netdev(net, dev) {
|
for_each_netdev(net, dev) {
|
||||||
struct macsec_secy *secy;
|
struct macsec_secy *secy;
|
||||||
|
|
||||||
@ -2467,6 +2463,7 @@ next:
|
|||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
rtnl_unlock();
|
||||||
cb->args[0] = d;
|
cb->args[0] = d;
|
||||||
return skb->len;
|
return skb->len;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user