我正在linux内核3.12中的ipv4堆栈的ip_output.c中的ip_queue_xmit方法中进行一个非常简单的操作。
代码非常简单。
char *p = kmalloc(48, GFP_KERNEL);
kfree(p);
每次调用此方法时都会调用此方法。
但结果是整个系统根本没有响应。这很简单,不确定我做错了什么。有人可以帮忙吗?
由于
答案 0 :(得分:2)
在黑暗中拍摄。不要使用GFP_KERNEL标志,你可能正处于一些关键代码的中间,持有自旋锁等等。试试GFP_ATOMIC。
你必须记住,在核心土地上,只有在适当的情况下你才能做很多事情。
此外,分配可能会失败。在使用之前检查指针或释放指针。