内置的内核驱动程序需要kfree吗?

时间:2015-03-04 16:08:02

标签: memory-management linux-kernel driver

对于编译到Linux内核的设备驱动程序,是否应该使用相应的kfree()调用释放kmalloc的内存?

我说的是在初始化时分配的内存,而不是在驱动程序生命周期内连续分配的内存。我假设没有必要释放分配的内存,因为内置驱动程序的生命周期是内核的生命周期。是的,分配的内存是驱动程序操作所必需的,并且在驱动程序初始化后无法释放;即没有__init宏可能。

我没有明确地看到上述陈述,并且想确定。

1 个答案:

答案 0 :(得分:3)

这取决于。但是很少有模块(驱动程序)无法编译。而且这是一种很好的编程风格。

顺便说一下,您可以考虑使用设备管理的资源,例如通过devm_kzalloc分配的内存。它将负责探测阶段的已分配资源,并允许您在那里清理错误路径。