]> git.baikalelectronics.ru Git - kernel.git/commit
net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup
authorJohn Keeping <john@metanate.com>
Tue, 14 Dec 2021 19:10:09 +0000 (19:10 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 16 Dec 2021 10:47:48 +0000 (10:47 +0000)
commit62598f4816dbc8e31716bb40772b902ed005acc7
treef51de4f51cd87cc6427a74929ae317298927e775
parent7fe2e4e5981966aee80387cda5473c9e9f80a510
net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup

KASAN reports an out-of-bounds read in rk_gmac_setup on the line:

while (ops->regs[i]) {

This happens for most platforms since the regs flexible array member is
empty, so the memory after the ops structure is being read here.  It
seems that mostly this happens to contain zero anyway, so we get lucky
and everything still works.

To avoid adding redundant data to nearly all the ops structures, add a
new flag to indicate whether the regs field is valid and avoid this loop
when it is not.

Fixes: f6cbed57c8dd ("net: stmmac: Add RK3566/RK3568 SoC support")
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c