• Jia-Ju Bai's avatar
    net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() · 0020f5c8
    Jia-Ju Bai authored
    The driver may sleep with holding a spinlock.
    The function call paths (from bottom to top) in Linux-4.17 are:
    
    [FUNC] usleep_range
    drivers/net/ethernet/socionext/sni_ave.c, 892:
    	usleep_range in ave_rxfifo_reset
    drivers/net/ethernet/socionext/sni_ave.c, 932:
    	ave_rxfifo_reset in ave_irq_handler
    
    [FUNC] usleep_range
    drivers/net/ethernet/socionext/sni_ave.c, 888:
    	usleep_range in ave_rxfifo_reset
    drivers/net/ethernet/socionext/sni_ave.c, 932:
    	ave_rxfifo_reset in ave_irq_handler
    
    To fix these bugs, usleep_range() is replaced with udelay().
    
    These bugs are found by my static analysis tool DSAC.
    Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0020f5c8
sni_ave.c 47.2 KB