• Z
    stmmac_pci: Fix underflow size in stmmac_rx · 0f296e78
    Zekun Shen 提交于
    This bug report came up when we were testing the device driver
    by fuzzing. It shows that buf1_len can get underflowed and be
    0xfffffffc (4294967292).
    
    This bug is triggerable with a compromised/malfunctioning device.
    We found the bug through QEMU emulation tested the patch with
    emulation. We did NOT test it on real hardware.
    
    Attached is the bug report by fuzzing.
    
    BUG: KASAN: use-after-free in stmmac_napi_poll_rx+0x1c08/0x36e0 [stmmac]
    Read of size 4294967292 at addr ffff888016358000 by task ksoftirqd/0/9
    
    CPU: 0 PID: 9 Comm: ksoftirqd/0 Tainted: G        W         5.6.0 #1
    Call Trace:
     dump_stack+0x76/0xa0
     print_address_description.constprop.0+0x16/0x200
     ? stmmac_napi_poll_rx+0x1c08/0x36e0 [stmmac]
     ? stmmac_napi_poll_rx+0x1c08/0x36e0 [stmmac]
     __kasan_report.cold+0x37/0x7c
     ? stmmac_napi_poll_rx+0x1c08/0x36e0 [stmmac]
     kasan_report+0xe/0x20
     check_memory_region+0x15a/0x1d0
     memcpy+0x20/0x50
     stmmac_napi_poll_rx+0x1c08/0x36e0 [stmmac]
     ? stmmac_suspend+0x850/0x850 [stmmac]
     ? __next_timer_interrupt+0xba/0xf0
     net_rx_action+0x363/0xbd0
     ? call_timer_fn+0x240/0x240
     ? __switch_to_asm+0x40/0x70
     ? napi_busy_loop+0x520/0x520
     ? __schedule+0x839/0x15a0
     __do_softirq+0x18c/0x634
     ? takeover_tasklets+0x5f0/0x5f0
     run_ksoftirqd+0x15/0x20
     smpboot_thread_fn+0x2f1/0x6b0
     ? smpboot_unregister_percpu_thread+0x160/0x160
     ? __kthread_parkme+0x80/0x100
     ? smpboot_unregister_percpu_thread+0x160/0x160
     kthread+0x2b5/0x3b0
     ? kthread_create_on_node+0xd0/0xd0
     ret_from_fork+0x22/0x40
    Reported-by: NBrendan Dolan-Gavitt <brendandg@nyu.edu>
    Signed-off-by: NZekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    0f296e78
stmmac_main.c 196.2 KB