我正在Linux内核3.12中的ipv4堆栈的ip_output.c中的ip_queue_xmit方法中进行一个非常简单的操作。
代码非常简单。
char *p = kmalloc(48, GFP_KERNEL);
kfree(p);
每次调用此方法时都会调用该方法。
但结果是整个系统根本没有响应。这是一个非常简单的问题,不知道我做错了什么。有人可以帮忙吗?
谢谢
最佳答案
在黑暗中拍摄。不要使用 GFP_KERNEL 标志,您可能正处于某些持有自旋锁或其他东西的关键代码中间。尝试 GFP_ATOMIC。
你必须记住,在内核土地上,有很多事情你只能在正确的情况下才能做。
此外,分配可能会失败。在使用或释放指针之前检查它。
关于c - Linux内核的ip_output.c中的简单内存malloc和free,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794246/