The nfp_net_flow_merge_ipv6() function contains two blocks: the first
iterates over ipv6->src_ipv6_mask, and the second over ipv6->src_ipv6.
However, in the first block, ipv6->src_ipv6 is passed as an argument
to sizeof() instead of ipv6->src_ipv6_mask.

Fixing this by replacing ipv6->src_ipv6 with ipv6->src_ipv6_mask.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 9f27cb8892 ("net/nfp: support IPv6 flow item")
Cc: [email protected]

Signed-off-by: Alexey Simakov <[email protected]>
Signed-off-by: Mark Bulatov <[email protected]>
---
 .mailmap                       | 1 +
 drivers/net/nfp/nfp_net_flow.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/.mailmap b/.mailmap
index 9db000bb6b..6177ca8b1e 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1057,6 +1057,7 @@ Mariusz Drost <[email protected]>
 Mark Asselstine <[email protected]>
 Mark Blasko <[email protected]>
 Mark Bloch <[email protected]> <[email protected]>
+Mark Bulatov <[email protected]>
 Mark Gillott <[email protected]>
 Mark Kavanagh <[email protected]>
 Mark Smith <[email protected]>
diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c
index 0e5003ebe3..80b4db1f4f 100644
--- a/drivers/net/nfp/nfp_net_flow.c
+++ b/drivers/net/nfp/nfp_net_flow.c
@@ -296,7 +296,7 @@ nfp_net_flow_merge_ipv6(struct rte_flow *nfp_flow,
        ipv6 = (struct nfp_net_cmsg_match_v6 *)nfp_flow->payload.match_data;
 
        ipv6->l4_protocol_mask = mask->hdr.proto;
-       for (i = 0; i < sizeof(ipv6->src_ipv6); i += 4) {
+       for (i = 0; i < sizeof(ipv6->src_ipv6_mask); i += 4) {
                ipv6->src_ipv6_mask[i] = mask->hdr.src_addr.a[i + 3];
                ipv6->src_ipv6_mask[i + 1] = mask->hdr.src_addr.a[i + 2];
                ipv6->src_ipv6_mask[i + 2] = mask->hdr.src_addr.a[i + 1];
-- 
2.39.5

Reply via email to