Add another check to flag zero mac address while validating/parsing the flow arguments
Fixes: 74defda79 ("net/bnxt: allow only unicast MAC address filter creation") Reviewed-by: Venkat Duvvuru <venkatkumar.duvv...@broadcom.com> Signed-off-by: Somnath Kotur <somnath.ko...@broadcom.com> --- drivers/net/bnxt/bnxt_flow.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index 2bde6f7..cad232a 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -136,6 +136,7 @@ const struct rte_flow_item_tcp *tcp_spec, *tcp_mask; const struct rte_flow_item_udp *udp_spec, *udp_mask; const struct rte_flow_item_eth *eth_spec, *eth_mask; + const struct rte_ether_addr *dst, *src; const struct rte_flow_item_nvgre *nvgre_spec; const struct rte_flow_item_nvgre *nvgre_mask; const struct rte_flow_item_gre *gre_spec; @@ -226,12 +227,15 @@ } if (rte_is_broadcast_ether_addr(ð_mask->dst)) { - if (!rte_is_unicast_ether_addr(ð_spec->dst)) { + dst = ð_spec->dst; + if (!rte_is_valid_assigned_ether_addr(dst)) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "DMAC is invalid"); + PMD_DRV_LOG(ERR, + "DMAC is invalid!\n"); return -rte_errno; } rte_memcpy(filter->dst_macaddr, @@ -246,14 +250,16 @@ PMD_DRV_LOG(DEBUG, "Creating a priority flow\n"); } - if (rte_is_broadcast_ether_addr(ð_mask->src)) { - if (!rte_is_unicast_ether_addr(ð_spec->src)) { + src = ð_spec->src; + if (!rte_is_valid_assigned_ether_addr(src)) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "SMAC is invalid"); + PMD_DRV_LOG(ERR, + "SMAC is invalid!\n"); return -rte_errno; } rte_memcpy(filter->src_macaddr, -- 1.8.3.1