我有一种情况,我必须只释放skb
结构本身而不是数据指针。我在我的驱动程序中重用数据指针。请注意,skb
不是克隆版。
答案 0 :(得分:0)
skb->cloned = 1;
atomic_inc(&(skb_shinfo(skb)->dataref));
give_skb_to_function_that_might_free_it(skb);
现在kfree_skb
和朋友会认为另一个套接字缓冲区对数据有引用,只释放struct sk_buff
。不要忘记稍后自己释放数据!
编辑:或者,在SKB skb->head = NULL
内设置.destructor
...