linux – 释放克隆skb(使用skb_clone)将释放原始skb?教程
我想在一个以上的队列中排队一个skb buff.所以我想到了使用克隆选项.
现在我的问题是,如果我在克隆的skb上执行kfree\_skb,它会释放原始的skb,还是只删除一个引用?
谢谢!
解决方法:
kfree_skb()
将使用克隆的skbuff做正确的事情,即释放skbuff结构本身但不释放数据,如果它仍被其他skbuff引用.
这是在skb_release_data()
完成的,它检查skbuff是否不是克隆,或者这是否是对skb->数据的最后一次引用(以环形方式完成以支持无头skbuff,其中包含对skb的有效负载部分的引用 – >数据(skb-> dataref的高16位),除了对整个skb->数据的通常引用之外).