리눅스 커널의 슬럽 관련 디버깅 피쳐를 켜 놓으면, struct track 구조체로 슬럽 오브젝트를 할당하거나 해제할 때의 콜 스택 정보를 저장합니다. 이를 처리하는 핵심 함수는 set_track() 함수인데, 이 함수에 마지막으로 전달되는 인자는 addr입니다. 다음은 set_track() 함수의 구현부인데, 볼드체로 표기된 부분을 봅시다. void set_track(struct kmem_cache *s, void *object, enum track_item alloc, unsigned long addr){ struct track *p = get_track(s, object, alloc); if (addr) {... p->addr = addr; p->cpu = smp_process
Continue reading ...