Commit 14ed029b authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski

net: add net device refcount tracker to dev_ifsioc()

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 5ae21950
...@@ -313,6 +313,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data, ...@@ -313,6 +313,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
int err; int err;
struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name); struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
const struct net_device_ops *ops; const struct net_device_ops *ops;
netdevice_tracker dev_tracker;
if (!dev) if (!dev)
return -ENODEV; return -ENODEV;
...@@ -381,10 +382,10 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data, ...@@ -381,10 +382,10 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
return -ENODEV; return -ENODEV;
if (!netif_is_bridge_master(dev)) if (!netif_is_bridge_master(dev))
return -EOPNOTSUPP; return -EOPNOTSUPP;
dev_hold(dev); dev_hold_track(dev, &dev_tracker, GFP_KERNEL);
rtnl_unlock(); rtnl_unlock();
err = br_ioctl_call(net, netdev_priv(dev), cmd, ifr, NULL); err = br_ioctl_call(net, netdev_priv(dev), cmd, ifr, NULL);
dev_put(dev); dev_put_track(dev, &dev_tracker);
rtnl_lock(); rtnl_lock();
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment