gpt4 book ai didi

c - sk_buff 结构函数和内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:34 27 4
gpt4 key购买 nike

我正在为 linux 内核开发一些网络驱动程序。它工作正常,但似乎存在内存泄漏。我认为我使用的两个功能是可疑的:

skb2 = skb_realloc_headroom(skb, size);

skb2 = skb_copy_expand(skb, skb_headroom(skb), size, GFP_ATOMIC);

我的问题是——这些函数是否将 skb 复制为 skb2,我是否可以安全地释放 skb?或者 skb2 只是扩展的 skb 而我不能释放它们?

最佳答案

第一个重新分配,释放原来的。第二个副本,让你释放两个。

了解这一点的最简单方法是查看现有驱动程序如何调用这些函数。所以查找skb_realloc_headroomskb_copy_expand在 Linux Cross Reference 上单击并查看一些驱动程序的源代码。

skb_realloc_headroom一般是这样调用的:

skb = skb_realloc_headroom(skb, size);
...
dev_kfree_skb(skb);

...而 skb_copy_expand 是这样调用的:

new_skb = skb_copy_expand(skb, skb_headroom(skb) + more_headroom,
skb_tailroom(skb), GFP_ATOMIC);
...
dev_kfree_skb(skb);
dev_kfree_skb(new_skb);

关于c - sk_buff 结构函数和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com