• Simon Guinot's avatar
    net: mvneta: fix refilling for Rx DMA buffers · a84e3289
    Simon Guinot authored
    With the actual code, if a memory allocation error happens while
    refilling a Rx descriptor, then the original Rx buffer is both passed
    to the networking stack (in a SKB) and let in the Rx ring. This leads
    to various kernel oops and crashes.
    
    As a fix, this patch moves Rx descriptor refilling ahead of building
    SKB with the associated Rx buffer. In case of a memory allocation
    failure, data is dropped and the original DMA buffer is put back into
    the Rx ring.
    Signed-off-by: default avatarSimon Guinot <simon.guinot@sequanux.org>
    Fixes: c5aff182 ("net: mvneta: driver for Marvell Armada 370/XP network unit")
    Cc: <stable@vger.kernel.org> # v3.8+
    Tested-by: default avatarYoann Sculo <yoann@sculo.fr>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a84e3289
mvneta.c 87.4 KB