• Lennert Buytenhek's avatar
    mv643xx_eth: fix NULL pointer dereference in rxq_process() · 9e1f3772
    Lennert Buytenhek authored
    When we are low on memory, the assumption that every descriptor in the
    receive ring will have an skbuff associated with it does not hold.
    
    rxq_process() was assuming that if the receive descriptor it is working
    on is not owned by the hardware, it can safely be processed and handed
    to the networking stack.  But a descriptor in the receive ring not being
    owned by the hardware can also happen when we are low on memory and did
    not manage to refill the receive ring fully.
    
    This patch changes rxq_process()'s bailout condition from "the first
    receive descriptor to be processed is owned by the hardware" to "the
    first receive descriptor to be processed is owned by the hardware OR
    the number of valid receive descriptors in the ring is zero".
    Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
    9e1f3772
mv643xx_eth.c 64.5 KB