본문 바로가기

KDT-리눅스_커널(유익한 자료)

(4)
Exception: lr : rcu_do_batch+0x2dc at virtual address ffff0000312ebe00 from: https://lore.kernel.org/all/2aaa078a-100c-4974-be5b-b58a7f3a6dbb@kzalloc.com/ 콜 스택은 다음과 같습니다: [ 194.911744] Call trace: [ 194.911747] 0xffff0000312ebe00 (P) [ 194.911759] rcu_core+0x2a0/0x4e8 [ 194.911767] rcu_core_si+0x1c/0x30 [ 194.911773] handle_softirqs+0x1b4/0x588 [ 194.911782] run_ksoftirqd+0x5c/0xf8 [ 194.911787] smpboot_thread_fn+0x27c/0x490 [ 194.911794] kthread+0x2..
LK (Little kernel) source https://github.com/hyperion70/iq451_mt6589/tree/master/bootable/bootloader/lk/arch Little Kernel Boot Loader Overview LM80-P0436-1
[ARM64] lkdtm_user 테스트 결과 "exec_null" 소스 코드 void lkdtm_EXEC_NULL(void) { execute_location(NULL, CODE_AS_IS); } void trace_exec_null(void) { printf("trace exec null \n"); lkdtm_EXEC_NULL(); } 관련 로그 lkdtm_user-10616 [005] d..1 679.448094: signal_generate: sig=5 errno=0 code=196609 comm=lkdtm_user pid=10616 grp=0 res=0 lkdtm_user-10616 [005] d..1 679.448102: // 5) SIGTRAP => brk_handler+0xf8/0x158 => do_debug_exception+0xc8..
lkdtm_user 소스 코드 #include #include #include #include #include #include #include #define EXEC_SIZE 64 #define CODE_WRITE 1 #define CODE_AS_IS 0 typedef unsigned char u8; typedef unsigned int u32; static u8 data_area[EXEC_SIZE]; #define REC_STACK_SIZE (0x1000 / 8) #define REC_NUM_DEFAULT ((0x1000 / REC_STACK_SIZE) * 2) static int recur_count = REC_NUM_DEFAULT; static void do_nothing(void) { return; } void lkdtm_ro..