如何释放skb缓冲区而不释放它所指向的数据指针?

时间:2015-12-16 11:51:14

标签: c memory linux-kernel network-programming buffer

我有一种情况,我必须只释放skb结构本身而不是数据指针。我在我的驱动程序中重用数据指针。请注意,skb不是克隆版。

1 个答案:

答案 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 ...