언로드 후 커널 모듈의 해제되지 않은 메모리는 어떻게 되나요?

언로드 후 커널 모듈의 해제되지 않은 메모리는 어떻게 되나요?

모듈을 호출했지만 kmalloc모듈을 호출하기 전에 메모리를 해제하지 않았다고 가정하면 메모리는 어떻게 되나요? rmmod메모리가 누출되어 재부팅할 때까지 완전히 사용할 수 없습니까? 아니면 커널이 해당 메모리를 자동으로 해제합니까?

감사해요

답변1

명시적으로 완료될 때까지 릴리스되지 않습니다. 할당된 메모리를 kmalloc()해제해야 합니다 kfree(). 이 메모리는 시스템이 시작될 때까지 유지됩니다.

rmmod[...] 모듈을 호출하기 전에는 메모리가 해제되지 않습니다. [...]

rmmod이렇게 하면 module_exit()모듈이 언로드될 때 메모리를 해제해야 하는 경우를 대비해 메모리를 해제할 수 있는 위치에서 실행됩니다. 예를 들어.

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

관련 정보