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

Commit 96e74088 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by David S. Miller
Browse files

net: The dev->get_stats pointer is not NULL nowadays.



And so does the pointer is returns, but sysfs and netlinks still 
check for both cases.

Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 34ac2573
Loading
Loading
Loading
Loading
+4 −5
Original line number Original line Diff line number Diff line
@@ -242,11 +242,11 @@ static ssize_t netstat_show(const struct device *d,
			offset % sizeof(unsigned long) != 0);
			offset % sizeof(unsigned long) != 0);


	read_lock(&dev_base_lock);
	read_lock(&dev_base_lock);
	if (dev_isalive(dev) && dev->get_stats &&
	if (dev_isalive(dev)) {
	    (stats = (*dev->get_stats)(dev)))
		stats = dev->get_stats(dev);
		ret = sprintf(buf, fmt_ulong,
		ret = sprintf(buf, fmt_ulong,
			      *(unsigned long *)(((u8 *) stats) + offset));
			      *(unsigned long *)(((u8 *) stats) + offset));

	}
	read_unlock(&dev_base_lock);
	read_unlock(&dev_base_lock);
	return ret;
	return ret;
}
}
@@ -457,7 +457,6 @@ int netdev_register_kobject(struct net_device *net)
	strlcpy(dev->bus_id, net->name, BUS_ID_SIZE);
	strlcpy(dev->bus_id, net->name, BUS_ID_SIZE);


#ifdef CONFIG_SYSFS
#ifdef CONFIG_SYSFS
	if (net->get_stats)
	*groups++ = &netstat_group;
	*groups++ = &netstat_group;


#ifdef CONFIG_WIRELESS_EXT
#ifdef CONFIG_WIRELESS_EXT
+8 −12
Original line number Original line Diff line number Diff line
@@ -606,6 +606,8 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
{
{
	struct ifinfomsg *ifm;
	struct ifinfomsg *ifm;
	struct nlmsghdr *nlh;
	struct nlmsghdr *nlh;
	struct net_device_stats *stats;
	struct nlattr *attr;


	nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags);
	nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags);
	if (nlh == NULL)
	if (nlh == NULL)
@@ -652,19 +654,13 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
		NLA_PUT(skb, IFLA_BROADCAST, dev->addr_len, dev->broadcast);
		NLA_PUT(skb, IFLA_BROADCAST, dev->addr_len, dev->broadcast);
	}
	}


	if (dev->get_stats) {
		struct net_device_stats *stats = dev->get_stats(dev);
		if (stats) {
			struct nlattr *attr;

	attr = nla_reserve(skb, IFLA_STATS,
	attr = nla_reserve(skb, IFLA_STATS,
			sizeof(struct rtnl_link_stats));
			sizeof(struct rtnl_link_stats));
	if (attr == NULL)
	if (attr == NULL)
		goto nla_put_failure;
		goto nla_put_failure;


	stats = dev->get_stats(dev);
	copy_rtnl_link_stats(nla_data(attr), stats);
	copy_rtnl_link_stats(nla_data(attr), stats);
		}
	}


	if (dev->rtnl_link_ops) {
	if (dev->rtnl_link_ops) {
		if (rtnl_link_fill(skb, dev) < 0)
		if (rtnl_link_fill(skb, dev) < 0)