Kernel

解除安裝後核心模組中未釋放的記憶體會怎樣?

  • March 2, 2019

假設我在模組上呼叫kmalloc之前呼叫並且沒有釋放該記憶體rmmod,那麼該記憶體會發生什麼?它是記憶體洩漏並且在重新啟動之前完全無法使用,還是核心會自動釋放該記憶體?

謝謝

在明確完成之前,它不會被釋放。分配的記憶體kmalloc()需要使用kfree(). 那段記憶體會一直保留到系統啟動為止。

$$ … $$rmmod在模組上呼叫之前沒有釋放該記憶體$$ … $$

當你這樣做時rmmodmodule_exit()將在你可以釋放記憶體的地方執行,以防在解除安裝模組時必須釋放記憶體。例如。

x() {
z = kmalloc(...)
}
y() {
 kfree(z)
}
module_init(x)
module_exit(y)

引用自:https://unix.stackexchange.com/questions/490385