OSDN Git Service

net: add net device refcount tracker to dev_ifsioc()
authorEric Dumazet <edumazet@google.com>
Sun, 5 Dec 2021 04:22:01 +0000 (20:22 -0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 7 Dec 2021 00:05:10 +0000 (16:05 -0800)
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dev_ioctl.c

index cbab5fe..1d309a6 100644 (file)
@@ -313,6 +313,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
        int err;
        struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
        const struct net_device_ops *ops;
+       netdevice_tracker dev_tracker;
 
        if (!dev)
                return -ENODEV;
@@ -381,10 +382,10 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
                        return -ENODEV;
                if (!netif_is_bridge_master(dev))
                        return -EOPNOTSUPP;
-               dev_hold(dev);
+               dev_hold_track(dev, &dev_tracker, GFP_KERNEL);
                rtnl_unlock();
                err = br_ioctl_call(net, netdev_priv(dev), cmd, ifr, NULL);
-               dev_put(dev);
+               dev_put_track(dev, &dev_tracker);
                rtnl_lock();
                return err;