From: Linus Lüssing linus.luessing@c0d3.blue Date: Tue, 14 Apr 2015 08:37:42 +0200
+int skb_checksum_trimmed(struct sk_buff *skb, unsigned int transport_len,
__sum16(*skb_check_func)(struct sk_buff *skb),
struct sk_buff **skb_trimmed)
+{
This is a really terrible interface.
It is designed in such a way that it is completely ambiguous who is resonsible for managing the lifetimes of 'skb' and 'skb_trimmed'.
I would suggest changing this such that:
1) If you clone successfully, 'skb' is released.
2) whatever SKB ends up being used is returned as an error pointer.
3) The caller is responsible for freeing or grabbing a reference to the skb returned.
Also, this is taking too long to finalize and we are past the openning of the merge window so you will have to submit a fixed up version when the net-next tree opens up for submissions as it is very strongly closed right now.
Thanks.