diff options
Diffstat (limited to 'net/ethtool/ioctl.c')
| -rw-r--r-- | net/ethtool/ioctl.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 646b3e490c71..6bb778e10461 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -27,6 +27,7 @@  #include <linux/net.h>  #include <linux/pm_runtime.h>  #include <net/devlink.h> +#include <net/ipv6.h>  #include <net/xdp_sock_drv.h>  #include <net/flow_offload.h>  #include <linux/ethtool_netlink.h> @@ -573,8 +574,8 @@ static int ethtool_get_link_ksettings(struct net_device *dev,  static int ethtool_set_link_ksettings(struct net_device *dev,  				      void __user *useraddr)  { +	struct ethtool_link_ksettings link_ksettings = {};  	int err; -	struct ethtool_link_ksettings link_ksettings;  	ASSERT_RTNL(); @@ -3127,7 +3128,6 @@ struct ethtool_rx_flow_rule *  ethtool_rx_flow_rule_create(const struct ethtool_rx_flow_spec_input *input)  {  	const struct ethtool_rx_flow_spec *fs = input->fs; -	static struct in6_addr zero_addr = {};  	struct ethtool_rx_flow_match *match;  	struct ethtool_rx_flow_rule *flow;  	struct flow_action_entry *act; @@ -3233,20 +3233,20 @@ ethtool_rx_flow_rule_create(const struct ethtool_rx_flow_spec_input *input)  		v6_spec = &fs->h_u.tcp_ip6_spec;  		v6_m_spec = &fs->m_u.tcp_ip6_spec; -		if (memcmp(v6_m_spec->ip6src, &zero_addr, sizeof(zero_addr))) { +		if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6src)) {  			memcpy(&match->key.ipv6.src, v6_spec->ip6src,  			       sizeof(match->key.ipv6.src));  			memcpy(&match->mask.ipv6.src, v6_m_spec->ip6src,  			       sizeof(match->mask.ipv6.src));  		} -		if (memcmp(v6_m_spec->ip6dst, &zero_addr, sizeof(zero_addr))) { +		if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6dst)) {  			memcpy(&match->key.ipv6.dst, v6_spec->ip6dst,  			       sizeof(match->key.ipv6.dst));  			memcpy(&match->mask.ipv6.dst, v6_m_spec->ip6dst,  			       sizeof(match->mask.ipv6.dst));  		} -		if (memcmp(v6_m_spec->ip6src, &zero_addr, sizeof(zero_addr)) || -		    memcmp(v6_m_spec->ip6dst, &zero_addr, sizeof(zero_addr))) { +		if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6src) || +		    !ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6dst)) {  			match->dissector.used_keys |=  				BIT(FLOW_DISSECTOR_KEY_IPV6_ADDRS);  			match->dissector.offset[FLOW_DISSECTOR_KEY_IPV6_ADDRS] =  |