linux kerenl modules 이 해제될 때, module 가지고 있던 메모리는 참조가 되나요?

trymp의 이미지

linux kernel 에서 module 을 사용해서 insmod(), rmmod() 할 수 있잖아요?

가령 test.ko 라는 모듈이 있을 때,

[ linux buildin kernel ]
char *g_ptr = NULL;
EXPORT_SYMBOL(g_ptr);

[ test.ko ]
extern char *g_ptr;
g_ptr = kmalloc(10);
memcpy(g_ptr, "ABCD", 5);

위와 같은 형태로 되었을 때, g_ptr 을 해제하지 않고 rmmod test.ko 가 되었을 때
나중에 커널이미지에서 g_ptr 을 참조하면 어떻게 되나요?
printk("%s \n", g_ptr);

을 하면 g_ptr 은 아직 유효한 메모리라서 "ABCD" 찍히나요?
아니면 잘못된 메모리 참조로 패닉이 나나요?

회원들의 조언 부탁드립니다.

jachin의 이미지

직접 실험해보실 수 있지 않나요?

커널 내에 Heap randomization이 기본기능으로 들어가 있다면 결과는 접근이 불가하다가 일반적인 OS의 정책입니다.