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

标签 c linux kernel

我正在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/

相关文章:

c++ - seekg,大文件失败

linux - iperf 工具可以用于测量原始套接字的吞吐量吗?

android - Android 和未知重定位的 Hello world 内核模块 : 27 when insmod

linux - 线程安全的搜索和添加

c - "Pointer to Function"语法在 C 中如何工作?

c - C 中的结合性和优先级

c - SuperFastHash 对同一字符串返回不同的值

c - 在建立连接之前检索本地 IP

php - 上传文件功能在 Ubuntu 中不起作用

c++ - 如何使用 APM 从保护模式关机?