Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4ba9993 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'dev_get_by_index'



Ying Xue says:

====================
use appropriate APIs to get interfaces

Under rtnl_lock protection, we should use __dev_get_name/index()
rather than dev_get_name()/index() to find interface handlers
because the former interfaces can help us avoid to change interface
reference counter.

v2 changes:
 - Change return value of nl80211_set_wiphy() to 0 in patch #10
   by johannes's suggestion.
 - Add 'Acked-by' into several patches which were acknowledged by
   corresponding maintainers.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 85a5bac9 7f2b8562
Loading
Loading
Loading
Loading
+23 −26
Original line number Diff line number Diff line
@@ -3213,13 +3213,13 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
	if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
		return -EPERM;

	slave_dev = dev_get_by_name(net, ifr->ifr_slave);
	slave_dev = __dev_get_by_name(net, ifr->ifr_slave);

	pr_debug("slave_dev=%p:\n", slave_dev);

	if (!slave_dev)
		res = -ENODEV;
	else {
		return -ENODEV;

	pr_debug("slave_dev->name=%s:\n", slave_dev->name);
	switch (cmd) {
	case BOND_ENSLAVE_OLD:
@@ -3243,9 +3243,6 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
		res = -EOPNOTSUPP;
	}

		dev_put(slave_dev);
	}

	return res;
}

+42 −53
Original line number Diff line number Diff line
@@ -395,6 +395,7 @@ static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave)
		if (duplicate_slave)
			eql_kill_one_slave(queue, duplicate_slave);

		dev_hold(slave->dev);
		list_add(&slave->list, &queue->all_slaves);
		queue->num_slaves++;
		slave->dev->flags |= IFF_SLAVE;
@@ -413,20 +414,19 @@ static int eql_enslave(struct net_device *master_dev, slaving_request_t __user *
	if (copy_from_user(&srq, srqp, sizeof (slaving_request_t)))
		return -EFAULT;

	slave_dev  = dev_get_by_name(&init_net, srq.slave_name);
	if (slave_dev) {
	slave_dev = __dev_get_by_name(&init_net, srq.slave_name);
	if (!slave_dev)
		return -ENODEV;

	if ((master_dev->flags & IFF_UP) == IFF_UP) {
		/* slave is not a master & not already a slave: */
			if (!eql_is_master(slave_dev) &&
			    !eql_is_slave(slave_dev)) {
		if (!eql_is_master(slave_dev) && !eql_is_slave(slave_dev)) {
			slave_t *s = kmalloc(sizeof(*s), GFP_KERNEL);
			equalizer_t *eql = netdev_priv(master_dev);
			int ret;

				if (!s) {
					dev_put(slave_dev);
			if (!s)
				return -ENOMEM;
				}

			memset(s, 0, sizeof(*s));
			s->dev = slave_dev;
@@ -436,17 +436,14 @@ static int eql_enslave(struct net_device *master_dev, slaving_request_t __user *

			spin_lock_bh(&eql->queue.lock);
			ret = __eql_insert_slave(&eql->queue, s);
				if (ret) {
					dev_put(slave_dev);
			if (ret)
				kfree(s);
				}

			spin_unlock_bh(&eql->queue.lock);

			return ret;
		}
	}
		dev_put(slave_dev);
	}

	return -EINVAL;
}
@@ -461,24 +458,20 @@ static int eql_emancipate(struct net_device *master_dev, slaving_request_t __use
	if (copy_from_user(&srq, srqp, sizeof (slaving_request_t)))
		return -EFAULT;

	slave_dev = dev_get_by_name(&init_net, srq.slave_name);
	slave_dev = __dev_get_by_name(&init_net, srq.slave_name);
	if (!slave_dev)
		return -ENODEV;

	ret = -EINVAL;
	if (slave_dev) {
	spin_lock_bh(&eql->queue.lock);

	if (eql_is_slave(slave_dev)) {
			slave_t *slave = __eql_find_slave_dev(&eql->queue,
							      slave_dev);

		slave_t *slave = __eql_find_slave_dev(&eql->queue, slave_dev);
		if (slave) {
			eql_kill_one_slave(&eql->queue, slave);
			ret = 0;
		}
	}
		dev_put(slave_dev);

	spin_unlock_bh(&eql->queue.lock);
	}

	return ret;
}
@@ -494,7 +487,7 @@ static int eql_g_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
	if (copy_from_user(&sc, scp, sizeof (slave_config_t)))
		return -EFAULT;

	slave_dev = dev_get_by_name(&init_net, sc.slave_name);
	slave_dev = __dev_get_by_name(&init_net, sc.slave_name);
	if (!slave_dev)
		return -ENODEV;

@@ -510,8 +503,6 @@ static int eql_g_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
	}
	spin_unlock_bh(&eql->queue.lock);

	dev_put(slave_dev);

	if (!ret && copy_to_user(scp, &sc, sizeof (slave_config_t)))
		ret = -EFAULT;

@@ -529,7 +520,7 @@ static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
	if (copy_from_user(&sc, scp, sizeof (slave_config_t)))
		return -EFAULT;

	slave_dev = dev_get_by_name(&init_net, sc.slave_name);
	slave_dev = __dev_get_by_name(&init_net, sc.slave_name);
	if (!slave_dev)
		return -ENODEV;

@@ -548,8 +539,6 @@ static int eql_s_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
	}
	spin_unlock_bh(&eql->queue.lock);

	dev_put(slave_dev);

	return ret;
}

+1 −2
Original line number Diff line number Diff line
@@ -741,10 +741,9 @@ static int vxlan_fdb_parse(struct nlattr *tb[], struct vxlan_dev *vxlan,
		if (nla_len(tb[NDA_IFINDEX]) != sizeof(u32))
			return -EINVAL;
		*ifindex = nla_get_u32(tb[NDA_IFINDEX]);
		tdev = dev_get_by_index(net, *ifindex);
		tdev = __dev_get_by_index(net, *ifindex);
		if (!tdev)
			return -EADDRNOTAVAIL;
		dev_put(tdev);
	} else {
		*ifindex = 0;
	}
+7 −8
Original line number Diff line number Diff line
@@ -770,9 +770,9 @@ do_del_chan (struct net_device *musycc_dev, void *data)
    if (cp.channum > 999)
        return -EINVAL;
    snprintf (buf, sizeof(buf), CHANNAME "%d", cp.channum);
    if (!(dev = dev_get_by_name (&init_net, buf)))
        return -ENOENT;
    dev_put (dev);
	dev = __dev_get_by_name(&init_net, buf);
	if (!dev)
		return -ENODEV;
    ret = do_deluser (dev, 1);
    if (ret)
        return ret;
@@ -792,7 +792,8 @@ do_reset (struct net_device *musycc_dev, void *data)
        char        buf[sizeof (CHANNAME) + 3];

        sprintf (buf, CHANNAME "%d", i);
        if (!(ndev = dev_get_by_name(&init_net, buf)))
	ndev = __dev_get_by_name(&init_net, buf);
	if (!ndev)
		continue;
        priv = dev_to_hdlc (ndev)->priv;

@@ -800,11 +801,9 @@ do_reset (struct net_device *musycc_dev, void *data)
            (unsigned long) (netdev_priv(musycc_dev)))
        {
            ndev->flags &= ~IFF_UP;
            dev_put (ndev);
            netif_stop_queue (ndev);
            do_deluser (ndev, 1);
        } else
            dev_put (ndev);
	}
    }
    return 0;
}
+1 −3
Original line number Diff line number Diff line
@@ -87,15 +87,13 @@ static bool batadv_is_on_batman_iface(const struct net_device *net_dev)
		return false;

	/* recurse over the parent device */
	parent_dev = dev_get_by_index(&init_net, net_dev->iflink);
	parent_dev = __dev_get_by_index(&init_net, net_dev->iflink);
	/* if we got a NULL parent_dev there is something broken.. */
	if (WARN(!parent_dev, "Cannot find parent device"))
		return false;

	ret = batadv_is_on_batman_iface(parent_dev);

	if (parent_dev)
		dev_put(parent_dev);
	return ret;
}

Loading