• Alexander Aring's avatar
    ieee802154: 6lowpan: fix memory leak · aeedebff
    Alexander Aring authored
    Looking at current situation of memory management in 6lowpan receive
    function I detected some invalid handling. After calling
    lowpan_invoke_rx_handlers we will do a kfree_skb and then NET_RX_DROP on
    error handling. We don't do this before, also on
    skb_share_check/skb_unshare which might manipulate the reference
    counters.
    
    After running some 'grep -r "dev_add_pack" net/' to look how others
    packet-layer receive callbacks works I detected that every subsystem do
    a kfree_skb, then NET_RX_DROP without calling skb functions which
    might manipulate the skb reference counters. This is the reason why we
    should do the same here like all others subsystems. I didn't find any
    documentation how the packet-layer receive callbacks handle NET_RX_DROP
    return values either.
    
    This patch will add a kfree_skb, then NET_RX_DROP handling for the
    "trivial checks", in case of skb_share_check/skb_unshare the kfree_skb
    call will be done inside these functions.
    Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    aeedebff
rx.c 7.5 KB