[PATCH net-next] net: prestera: acl: fix 'client_map' buff overflow

From: Volodymyr Mytnyk
Date: Fri Feb 18 2022 - 07:29:29 EST


From: Volodymyr Mytnyk <vmytnyk@xxxxxxxxxxx>

smatch warnings:
drivers/net/ethernet/marvell/prestera/prestera_acl.c:103
prestera_acl_chain_to_client() error: buffer overflow
'client_map' 3 <= 3

prestera_acl_chain_to_client(u32 chain_index, ...)
...
u32 client_map[] = {
PRESTERA_HW_COUNTER_CLIENT_LOOKUP_0,
PRESTERA_HW_COUNTER_CLIENT_LOOKUP_1,
PRESTERA_HW_COUNTER_CLIENT_LOOKUP_2
};
if (chain_index > ARRAY_SIZE(client_map))
...

Fixes: fa5d824ce5dd ("net: prestera: acl: add multi-chain support offload")
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Signed-off-by: Volodymyr Mytnyk <vmytnyk@xxxxxxxxxxx>
---
drivers/net/ethernet/marvell/prestera/prestera_acl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/prestera/prestera_acl.c b/drivers/net/ethernet/marvell/prestera/prestera_acl.c
index 06303e31b32a..e4af8a503277 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_acl.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_acl.c
@@ -97,7 +97,7 @@ int prestera_acl_chain_to_client(u32 chain_index, u32 *client)
PRESTERA_HW_COUNTER_CLIENT_LOOKUP_2
};

- if (chain_index > ARRAY_SIZE(client_map))
+ if (chain_index >= ARRAY_SIZE(client_map))
return -EINVAL;

*client = client_map[chain_index];
--
2.7.4