|
@@ -522,11 +522,15 @@ static size_t rtnl_link_get_af_size(const struct net_device *dev,
|
|
|
static bool rtnl_have_link_slave_info(const struct net_device *dev)
|
|
|
{
|
|
|
struct net_device *master_dev;
|
|
|
+ bool ret = false;
|
|
|
|
|
|
- master_dev = netdev_master_upper_dev_get((struct net_device *) dev);
|
|
|
+ rcu_read_lock();
|
|
|
+
|
|
|
+ master_dev = netdev_master_upper_dev_get_rcu((struct net_device *)dev);
|
|
|
if (master_dev && master_dev->rtnl_link_ops)
|
|
|
- return true;
|
|
|
- return false;
|
|
|
+ ret = true;
|
|
|
+ rcu_read_unlock();
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int rtnl_link_slave_info_fill(struct sk_buff *skb,
|