OBJECT
Posts
6 posts[Kernel] 슬랩 페이지(slab page)가 관리하는 슬랩 오브젝트 갯수
슬랩 페이지 디스크립터가 관리하는 슬랩 오브젝트의 실제 메모리 덤프를 어떻게 접근할까요? 예를 들어 현재 페이지 디스크립터 주소가 0xEC778540 이라고 가정하겠습니다.그리고 각 멤버는 다음과 같구요. 눈으로 잠깐 봐도 kmalloc-64 타입의 슬랩 페이지임을 알 수 있겠죠. (struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 0x80, (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 0xC518EC00, (void *) freelist = 0xC518E
[Kernel] slab object 자료구조 - 페이지, 슬랩 캐시
이번 시간에는 코어 덤프에서 페이지 디스크립터와 슬랩 오브젝트 자료구조를 알아 봅니다. 우선 다음과 같은 페이지 디스크립터가 있습니다.(struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 128 = 0x80, //<<--[1] (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 3306744832 = 0xC518EC00, (void *) freelist = 0xC518EC00, //<<--[2] (bool) pfmemalloc = FALSE, (unsign
[0410] Slab Memory Corruption Case Study#3 - 디버깅
난이도: 최하 커널 로그를 보니 Binder:1887_12란 프로세스가 7676767e 란 가상 주소를 처리 못해 데이터 어보트가 발생했습니다.[ 970.135274 / 04-07 17:58:32.685][7] Unable to handle kernel paging request at virtual address 7676767e[ 970.135315 / 04-07 17:58:32.685][7] pgd = d549c000[ 970.135339 / 04-07 17:58:32.685][0] [7676767e] *pgd=91d26831, *pte=00000000, *ppte=00000000[ 970.135392 / 04-07 17:58:32.685][7] Internal error: Oops: 17 [#
[0410] Slab Memory Corruption Case Study#2 - 디버깅
난이도: 하 이제 커널 로그부터 볼게요. 이전과 비슷한 패턴인데 약간 다른 것 같네요.1 [ 2551.510956 / 04-07 15:43:12.844][3] =============================================================================2 [ 2551.510994 / 04-07 15:43:12.844][3] BUG kmalloc-256 (Tainted: G W ): Invalid object pointer 0xe216ce103 [ 2551.511015 / 04-07 15:43:12.844][3] -----------------------------------------------------------------------


