net: prestera: acl: fix 'client_map' buff overflow
authorVolodymyr Mytnyk <vmytnyk@marvell.com>
Fri, 18 Feb 2022 12:29:11 +0000 (14:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 19 Feb 2022 18:56:50 +0000 (18:56 +0000)
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@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Volodymyr Mytnyk <vmytnyk@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/prestera/prestera_acl.c

index 06303e31b32aa510e08690b8470f205850ea573c..e4af8a5032777d80ef49d512a4fa276464288ea4 100644 (file)
@@ -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];