简单的内存malloc和免费的Linux内核的ip_output.c



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

代码非常简单。

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

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

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

谢谢

在黑暗中拍摄。不要使用 GFP_KERNEL 标志,您可能正在一些持有旋转锁或其他东西的关键代码中。试试GFP_ATOMIC。

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

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

最新更新