aeedebff69
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: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> |
||
---|---|---|
.. | ||
6lowpan | ||
core.c | ||
core.h | ||
header_ops.c | ||
ieee802154.h | ||
Kconfig | ||
Makefile | ||
netlink.c | ||
nl-mac.c | ||
nl-phy.c | ||
nl802154.c | ||
nl802154.h | ||
nl_policy.c | ||
rdev-ops.h | ||
socket.c | ||
sysfs.c | ||
sysfs.h | ||
trace.c | ||
trace.h |