diff options
Diffstat (limited to 'net/core/rtnetlink.c')
| -rw-r--r-- | net/core/rtnetlink.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 1a2af24e9e3..f78d821bd93 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -579,7 +579,7 @@ static unsigned int rtnl_dev_combine_flags(const struct net_device *dev,  }  static void copy_rtnl_link_stats(struct rtnl_link_stats *a, -				 const struct net_device_stats *b) +				 const struct rtnl_link_stats64 *b)  {  	a->rx_packets = b->rx_packets;  	a->tx_packets = b->tx_packets; @@ -610,7 +610,7 @@ static void copy_rtnl_link_stats(struct rtnl_link_stats *a,  	a->tx_compressed = b->tx_compressed;  } -static void copy_rtnl_link_stats64(void *v, const struct net_device_stats *b) +static void copy_rtnl_link_stats64(void *v, const struct rtnl_link_stats64 *b)  {  	struct rtnl_link_stats64 a; @@ -686,7 +686,7 @@ static size_t rtnl_port_size(const struct net_device *dev)  		return port_self_size;  } -static inline size_t if_nlmsg_size(const struct net_device *dev) +static noinline size_t if_nlmsg_size(const struct net_device *dev)  {  	return NLMSG_ALIGN(sizeof(struct ifinfomsg))  	       + nla_total_size(IFNAMSIZ) /* IFLA_IFNAME */ @@ -791,7 +791,8 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,  {  	struct ifinfomsg *ifm;  	struct nlmsghdr *nlh; -	const struct net_device_stats *stats; +	struct rtnl_link_stats64 temp; +	const struct rtnl_link_stats64 *stats;  	struct nlattr *attr;  	nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags); @@ -847,7 +848,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,  	if (attr == NULL)  		goto nla_put_failure; -	stats = dev_get_stats(dev); +	stats = dev_get_stats(dev, &temp);  	copy_rtnl_link_stats(nla_data(attr), stats);  	attr = nla_reserve(skb, IFLA_STATS64,  |