/* Ensure this is a supported device */
err = -EINVAL;
- if (!mpls_dev_get(dev))
+ if (!mpls_dev_get(net, dev))
goto errout_put;
if ((nh->nh_via_table == NEIGH_LINK_TABLE) &&
if (!dev)
goto errout;
- mdev = mpls_dev_get(dev);
+ mdev = mpls_dev_get(net, dev);
if (!mdev)
goto errout;
void *ptr)
{
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+ struct net *net = dev_net(dev);
struct mpls_dev *mdev;
unsigned int flags;
int err;
goto out;
}
- mdev = mpls_dev_get(dev);
+ mdev = mpls_dev_get(net, dev);
if (!mdev)
goto out;
if (err)
goto err;
- mdev = mpls_dev_get(dev);
+ mdev = mpls_dev_get(net, dev);
if (mdev) {
mpls_dev_sysctl_unregister(dev, mdev);
RCU_INIT_POINTER(dev->mpls_ptr, NULL);
}
break;
case NETDEV_CHANGENAME:
- mdev = mpls_dev_get(dev);
+ mdev = mpls_dev_get(net, dev);
if (mdev) {
mpls_dev_sysctl_unregister(dev, mdev);
err = mpls_dev_sysctl_register(dev, mdev);
return rcu_dereference(dev->mpls_ptr);
}
-static inline struct mpls_dev *mpls_dev_get(const struct net_device *dev)
+static inline struct mpls_dev *mpls_dev_get(const struct net *net,
+ const struct net_device *dev)
{
return rcu_dereference_rtnl(dev->mpls_ptr);
}