]> git.proxmox.com Git - mirror_ubuntu-jammy-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)
committerAndrea Righi <andrea.righi@canonical.com>
Tue, 4 Jan 2022 08:49:26 +0000 (09:49 +0100)
commit0ee4dba8da98820779e1391f4e174ddb4ba68691
tree356cbe9ec2d1c270d80c2e56f40fc8605f896964
parent72d6f02940dd6556c80002d064453d4714d0f865
net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup

BugLink: https://bugs.launchpad.net/bugs/1956302
[ Upstream commit 0546b224cc7717cc8a2db076b0bb069a9c430794 ]

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: 3bb3d6b1c195 ("net: stmmac: Add RK3566/RK3568 SoC support")
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c