• Marc Zyngier's avatar
    net: sun4i-emac: fix memory leak on bad packet · 2670cc69
    Marc Zyngier authored
    Upon reception of a new frame, the emac driver checks for a number
    of error conditions, and flag the packet as "bad" if any of these
    are present. It then allocates a skb unconditionally, but only uses
    it if the packet is "good". On the error path, the skb is just forgotten,
    and the system leaks memory.
    
    The piece of junk I have on my desk seems to encounter such error
    frequently enough so that the box goes OOM after a couple of days,
    which makes me grumpy.
    
    Fix this by moving the allocation on the "good_packet" path (and
    convert it to netdev_alloc_skb while we're at it).
    
    Tested on a random Allwinner A20 board.
    
    Cc: Stefan Roese <sr@denx.de>
    Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
    Cc: <stable@vger.kernel.org> # 3.11+
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Acked-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2670cc69
sun4i-emac.c 23.5 KB