summaryrefslogtreecommitdiff
path: root/drivers/net/dsa/microchip
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2023-10-06 14:58:22 +0300
committerPaolo Abeni <pabeni@redhat.com>2023-10-10 12:12:01 +0300
commit59fe651753fb897ebe0ac91c19cf503e7a551632 (patch)
tree3b70005a3038b8d30c29084d1d1c9be4378f4f87 /drivers/net/dsa/microchip
parentc41a38ef3bf78a86f94c3f67a19368a98c10ee2c (diff)
downloadlinux-59fe651753fb897ebe0ac91c19cf503e7a551632.tar.xz
net: dsa: microchip: Fix uninitialized var in ksz9477_acl_move_entries()
Address an issue in ksz9477_acl_move_entries() where, in the scenario (src_idx == dst_idx), ksz9477_validate_and_get_src_count() returns 0, leading to usage of uninitialized src_count and dst_count variables, which causes undesired behavior as it attempts to move ACL entries around. Fixes: 002841be134e ("net: dsa: microchip: Add partial ACL support for ksz9477 switches") Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Suggested-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://lore.kernel.org/r/20231006115822.144152-1-o.rempel@pengutronix.de Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'drivers/net/dsa/microchip')
-rw-r--r--drivers/net/dsa/microchip/ksz9477_acl.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/dsa/microchip/ksz9477_acl.c b/drivers/net/dsa/microchip/ksz9477_acl.c
index 06d74c19eb94..7ba778df63ac 100644
--- a/drivers/net/dsa/microchip/ksz9477_acl.c
+++ b/drivers/net/dsa/microchip/ksz9477_acl.c
@@ -420,10 +420,6 @@ static int ksz9477_validate_and_get_src_count(struct ksz_device *dev, int port,
return -EINVAL;
}
- /* Nothing to do */
- if (src_idx == dst_idx)
- return 0;
-
/* Validate if the source entries are contiguous */
ret = ksz9477_acl_get_cont_entr(dev, port, src_idx);
if (ret < 0)
@@ -556,6 +552,10 @@ static int ksz9477_acl_move_entries(struct ksz_device *dev, int port,
struct ksz9477_acl_entries *acles = &acl->acles;
int src_count, ret, dst_count;
+ /* Nothing to do */
+ if (src_idx == dst_idx)
+ return 0;
+
ret = ksz9477_validate_and_get_src_count(dev, port, src_idx, dst_idx,
&src_count, &dst_count);
if (ret)