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

Commit c4d33e24 authored by Takashi Iwai's avatar Takashi Iwai Committed by David S. Miller
Browse files

tun: Use static attribute groups for sysfs entries



Instead of manual calls of device_create_file() and
device_remove_files(), assign the static attribute groups to netdev
groups array.  This simplifies the code and avoids the possible
races.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7061b2bd
Loading
Loading
Loading
Loading
+12 −5
Original line number Original line Diff line number Diff line
@@ -1565,6 +1565,17 @@ static DEVICE_ATTR(tun_flags, 0444, tun_show_flags, NULL);
static DEVICE_ATTR(owner, 0444, tun_show_owner, NULL);
static DEVICE_ATTR(owner, 0444, tun_show_owner, NULL);
static DEVICE_ATTR(group, 0444, tun_show_group, NULL);
static DEVICE_ATTR(group, 0444, tun_show_group, NULL);


static struct attribute *tun_dev_attrs[] = {
	&dev_attr_tun_flags.attr,
	&dev_attr_owner.attr,
	&dev_attr_group.attr,
	NULL
};

static const struct attribute_group tun_attr_group = {
	.attrs = tun_dev_attrs
};

static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
{
{
	struct tun_struct *tun;
	struct tun_struct *tun;
@@ -1645,6 +1656,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
		dev_net_set(dev, net);
		dev_net_set(dev, net);
		dev->rtnl_link_ops = &tun_link_ops;
		dev->rtnl_link_ops = &tun_link_ops;
		dev->ifindex = tfile->ifindex;
		dev->ifindex = tfile->ifindex;
		dev->sysfs_groups[0] = &tun_attr_group;


		tun = netdev_priv(dev);
		tun = netdev_priv(dev);
		tun->dev = dev;
		tun->dev = dev;
@@ -1680,11 +1692,6 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
		err = register_netdevice(tun->dev);
		err = register_netdevice(tun->dev);
		if (err < 0)
		if (err < 0)
			goto err_detach;
			goto err_detach;

		if (device_create_file(&tun->dev->dev, &dev_attr_tun_flags) ||
		    device_create_file(&tun->dev->dev, &dev_attr_owner) ||
		    device_create_file(&tun->dev->dev, &dev_attr_group))
			pr_err("Failed to create tun sysfs files\n");
	}
	}


	netif_carrier_on(tun->dev);
	netif_carrier_on(tun->dev);