mirror_ubuntu-kernels/drivers/net/ethernet/marvell
Yevhen Orlov 2efc2256fe net: marvell: prestera: fix incorrect structure access
In line:
	upper = info->upper_dev;
We access upper_dev field, which is related only for particular events
(e.g. event == NETDEV_CHANGEUPPER). So, this line cause invalid memory
access for another events,
when ptr is not netdev_notifier_changeupper_info.

The KASAN logs are as follows:

[   30.123165] BUG: KASAN: stack-out-of-bounds in prestera_netdev_port_event.constprop.0+0x68/0x538 [prestera]
[   30.133336] Read of size 8 at addr ffff80000cf772b0 by task udevd/778
[   30.139866]
[   30.141398] CPU: 0 PID: 778 Comm: udevd Not tainted 5.16.0-rc3 #6
[   30.147588] Hardware name: DNI AmazonGo1 A7040 board (DT)
[   30.153056] Call trace:
[   30.155547]  dump_backtrace+0x0/0x2c0
[   30.159320]  show_stack+0x18/0x30
[   30.162729]  dump_stack_lvl+0x68/0x84
[   30.166491]  print_address_description.constprop.0+0x74/0x2b8
[   30.172346]  kasan_report+0x1e8/0x250
[   30.176102]  __asan_load8+0x98/0xe0
[   30.179682]  prestera_netdev_port_event.constprop.0+0x68/0x538 [prestera]
[   30.186847]  prestera_netdev_event_handler+0x1b4/0x1c0 [prestera]
[   30.193313]  raw_notifier_call_chain+0x74/0xa0
[   30.197860]  call_netdevice_notifiers_info+0x68/0xc0
[   30.202924]  register_netdevice+0x3cc/0x760
[   30.207190]  register_netdev+0x24/0x50
[   30.211015]  prestera_device_register+0x8a0/0xba0 [prestera]

Fixes: 3d5048cc54 ("net: marvell: prestera: move netdev topology validation to prestera_main")
Signed-off-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
Link: https://lore.kernel.org/r/20211216171714.11341-1-yevhen.orlov@plvision.eu
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-12-17 19:19:09 -08:00
..
mvpp2 net: mvpp2: fix XDP rx queues registering 2021-12-08 18:29:37 -08:00
octeontx2 Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf 2021-12-08 16:06:44 -08:00
prestera net: marvell: prestera: fix incorrect structure access 2021-12-17 19:19:09 -08:00
Kconfig net: marvell: Remove reference to CONFIG_MV64X60 2021-03-18 14:19:39 -07:00
Makefile net: marvell: prestera: Add driver for Prestera family ASIC devices 2020-09-17 16:35:46 -07:00
mv643xx_eth.c ethernet: mv643xx: use eth_hw_addr_set() 2021-10-19 12:41:47 +01:00
mvmdio.c net: mvmdio: fix compilation warning 2021-11-16 18:55:17 -08:00
mvneta_bm.c net: mvneta: use devm_platform_ioremap_resource() to simplify code 2019-08-21 13:52:33 -07:00
mvneta_bm.h net: mvneta: make stub functions static inline 2019-10-25 16:21:48 -07:00
mvneta.c net: mvneta: drop use of phylink_helper_basex_speed() 2021-10-27 14:50:11 +01:00
pxa168_eth.c net: convert users of bitmap_foo() to linkmode_foo() 2021-10-24 13:58:52 +01:00
skge.c ethernet: sky2/skge: use eth_hw_addr_set() 2021-10-19 12:41:47 +01:00
skge.h net: marvell: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
sky2.c sky2: Remove redundant assignment and parentheses 2021-10-28 14:39:06 +01:00
sky2.h net: marvell: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00