这样的泄漏对于肉眼来说似乎太微不足道了,我认为静态代码分析工具应该能够发现它们。
 Ex1:
 void foo(void) {
    u32 *ptr = kmalloc(512, GFP_KERNEL);
    ptr = (u32 *)0xffffffff;
    kfree(ptr);
 }我知道Coverity可以像下面这样发现漏洞,但对上面的一个不太确定:有谁能告诉我这是否会在Coverity或像Sparse这样的工具中被检测到
Ex2:
void foo(void) {
    kmalloc(512, GFP_KERNEL);
}
Ex3:
void foo(void) {
    void * ptr = kmalloc(512, GFP_KERNEL);
    if (true)
        return;
    kfree(ptr)
}发布于 2015-02-17 01:47:17
我不知道kmalloc (而且我没有一个带有Coverity许可证的Linux系统来测试它),但是Coverity可以很容易地用malloc检测到这种形式的泄漏。所以我怀疑kmalloc会给它带来麻烦。
如果它确实带来了麻烦,您可以随时提供kmalloc函数的用户模型,该模型只是对malloc函数进行包装,以便Coverity知道如何处理该函数。
https://stackoverflow.com/questions/28429786
复制相似问题