• Marc Zyngier's avatar
    net: sun4i-emac: fix memory leak on bad packet · 8556e3af
    Marc Zyngier authored
    commit 2670cc69 upstream.
    
    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>
    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>
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    8556e3af
sun4i-emac.c 23.1 KB