Skip to content

Commit 10995e3

Browse files
vladimirolteanLarisa Ileana Grigore
authored andcommitted
net: dsa: sja1105: fix kasan out-of-bounds warning in sja1105_table_delete_entry()
There are actually 2 problems: - deleting the last element doesn't require the memmove of elements [i + 1, end) over it. Actually, element i+1 is out of bounds. - The memmove itself should move size - i - 1 elements, because the last element is out of bounds. The out-of-bounds element still remains out of bounds after being accessed, so the problem is only that we touch it, not that it becomes in active use. But I suppose it can lead to issues if the out-of-bounds element is part of an unmapped page. Issue: ALBSP-454 Fixes: 6666ceb ("net: dsa: sja1105: Add support for VLAN operations") Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 2977ac2 commit 10995e3

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/net/dsa/sja1105/sja1105_static_config.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,8 +1921,10 @@ int sja1105_table_delete_entry(struct sja1105_table *table, int i)
19211921
if (i > table->entry_count)
19221922
return -ERANGE;
19231923

1924-
memmove(entries + i * entry_size, entries + (i + 1) * entry_size,
1925-
(table->entry_count - i) * entry_size);
1924+
if (i + 1 < table->entry_count) {
1925+
memmove(entries + i * entry_size, entries + (i + 1) * entry_size,
1926+
(table->entry_count - i - 1) * entry_size);
1927+
}
19261928

19271929
table->entry_count--;
19281930

0 commit comments

Comments
 (0)