• Camel Guo's avatar
    net: stmmac: dump gmac4 DMA registers correctly · 7af037c3
    Camel Guo authored
    Unlike gmac100, gmac1000, gmac4 has 27 DMA registers and they are
    located at DMA_CHAN_BASE_ADDR (0x1100). In order for ethtool to dump
    gmac4 DMA registers correctly, this commit checks if a net_device has
    gmac4 and uses different logic to dump its DMA registers.
    
    This fixes the following KASAN warning, which can normally be triggered
    by a command similar like "ethtool -d eth0":
    
    BUG: KASAN: vmalloc-out-of-bounds in dwmac4_dump_dma_regs+0x6d4/0xb30
    Write of size 4 at addr ffffffc010177100 by task ethtool/1839
     kasan_report+0x200/0x21c
     __asan_report_store4_noabort+0x34/0x60
     dwmac4_dump_dma_regs+0x6d4/0xb30
     stmmac_ethtool_gregs+0x110/0x204
     ethtool_get_regs+0x200/0x4b0
     dev_ethtool+0x1dac/0x3800
     dev_ioctl+0x7c0/0xb50
     sock_ioctl+0x298/0x6c4
     ...
    
    Fixes: fbf68229
    
     ("net: stmmac: unify registers dumps methods")
    Signed-off-by: default avatarCamel Guo <camelg@axis.com>
    Link: https://lore.kernel.org/r/20220131083841.3346801-1-camel.guo@axis.com
    
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7af037c3
dwmac_dma.h 6.58 KB