Message ID | 20210218232504.2422834-8-anthony.l.nguyen@intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Intel Wired LAN Driver Updates 2021-02-18 | expand |
On Thu, 18 Feb 2021 15:25:03 -0800 Tony Nguyen wrote: > From: Mateusz Palczewski <mateusz.palczewski@intel.com> > > Fix insufficient distinction between IPv4 and IPv6 addresses > when creating a filter. > IPv4 and IPv6 are kept in the same memory area. If IPv6 is added, > then it's caught by IPv4 check, which leads to err -95. > > Fixes: 2f4b411a3d67("i40e: Enable cloud filters via tc-flower") Small issue with the fixes tag here - missing space after hash. Dave said he can't take any patches until Linus gets power back and pulls so since we're waiting perhaps you could fix and repost? The patches look good to me.
On Fri, 2021-02-19 at 09:31 -0800, Jakub Kicinski wrote: > On Thu, 18 Feb 2021 15:25:03 -0800 Tony Nguyen wrote: > > From: Mateusz Palczewski <mateusz.palczewski@intel.com> > > > > Fix insufficient distinction between IPv4 and IPv6 addresses > > when creating a filter. > > IPv4 and IPv6 are kept in the same memory area. If IPv6 is added, > > then it's caught by IPv4 check, which leads to err -95. > > > > Fixes: 2f4b411a3d67("i40e: Enable cloud filters via tc-flower") > > Small issue with the fixes tag here - missing space after hash. > > Dave said he can't take any patches until Linus gets power back and > pulls so since we're waiting perhaps you could fix and repost? > > The patches look good to me. Thanks for the review Jakub. Sure, I'll fix and repost. - Tony
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 2e22ab5a0f9a..3e4a4d6f0419 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -7731,7 +7731,8 @@ int i40e_add_del_cloud_filter_big_buf(struct i40e_vsi *vsi, return -EOPNOTSUPP; /* adding filter using src_port/src_ip is not supported at this stage */ - if (filter->src_port || filter->src_ipv4 || + if (filter->src_port || + (filter->src_ipv4 && filter->n_proto != ETH_P_IPV6) || !ipv6_addr_any(&filter->ip.v6.src_ip6)) return -EOPNOTSUPP; @@ -7760,7 +7761,7 @@ int i40e_add_del_cloud_filter_big_buf(struct i40e_vsi *vsi, cpu_to_le16(I40E_AQC_ADD_CLOUD_FILTER_MAC_VLAN_PORT); } - } else if (filter->dst_ipv4 || + } else if ((filter->dst_ipv4 && filter->n_proto != ETH_P_IPV6) || !ipv6_addr_any(&filter->ip.v6.dst_ip6)) { cld_filter.element.flags = cpu_to_le16(I40E_AQC_ADD_CLOUD_FILTER_IP_PORT);