在 linux 内核中,对 kfree 的调用会休眠吗?

Gab*_*abe 5 linux kernel memory-management spinlock

标题几乎就是问题...

我正在编写一些使用自旋锁来帮助列表管理的代码。关于自旋锁的文档非常清楚不调用任何会休眠的东西。我知道有一些方法可以分配“原子”内存,但我没有看到任何关于 kfree 或释放内存的信息。

直觉告诉我它不应该睡觉,但我还没有发现这是明确的。

小智 5

不,它从不睡觉。从任意上下文调用 kfree 是安全的。唯一的例外是 NMI oopser 和类似的 arch 代码。