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+0x2ac/0x318
[ 194.911802] ret_from_fork+0x10/0x20
rcu_core+0x2a0 주소를 보니, 아래와 같은 심벌을 확인할 수 있습니다.

x27 레지스터에 저장된 주소인 0xffff0000312ebe00 로 브랜치를 하는 코드를 실행하다가 익셉션이 유발됐군요.
조금 더 구체적으로 확인하면,
rhp->func에 0xffff0000312ebe00 주소가 저장되어 있어서 익셉션이 유발됐습니다.
https://elixir.bootlin.com/linux/v6.15-rc4/source/kernel/rcu/tree.c
static void rcu_do_batch(struct rcu_data *rdp)
{
long bl;
long count = 0;
[...]
for (; rhp; rhp = rcu_cblist_dequeue(&rcl)) {
rcu_callback_t f;
count++;
debug_rcu_head_unqueue(rhp);
rcu_lock_acquire(&rcu_callback_map);
trace_rcu_invoke_callback(rcu_state.name, rhp);
f = rhp->func;
debug_rcu_head_callback(rhp);
WRITE_ONCE(rhp->func, (rcu_callback_t)0L);
f(rhp); //<<--
'KDT-리눅스_커널(유익한 자료) > 덤프 분석' 카테고리의 다른 글
| [ARM64] lkdtm_user 테스트 결과 (0) | 2023.06.09 |
|---|---|
| lkdtm_user 소스 코드 (0) | 2023.06.09 |