简单的内存malloc和linux内核的ip_output.c中的free

时间:2013-12-27 03:17:47

标签: c linux kernel

我正在linux内核3.12中的ipv4堆栈的ip_output.c中的ip_queue_xmit方法中进行一个非常简单的操作。

代码非常简单。

char *p = kmalloc(48, GFP_KERNEL);
kfree(p);

每次调用此方法时都会调用此方法。

但结果是整个系统根本没有响应。这很简单,不确定我做错了什么。有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:2)

在黑暗中拍摄。不要使用GFP_KERNEL标志,你可能正处于一些关键代码的中间,持有自旋锁等等。试试GFP_ATOMIC。

你必须记住,在核心土地上,只有在适当的情况下你才能做很多事情。

此外,分配可能会失败。在使用之前检查指针或释放指针。