To axiomatically verify the transition of the Faulting Virtual Address (VA) from the CPU CR2 register into the Linux Kernel C logic.
We attempted to probe the raw hardware entry points but faced kernel security restrictions:
exc_page_fault (The Assembly Wrapper)
/sys/kernel/debug/kprobes/blacklist.int3 recursion risk).handle_page_fault (The Dispatcher)
/proc/kallsyms).do_user_addr_fault (The Kernel Entry)
/sys/kernel/debug/kprobes/blacklist.We identified lock_vma_under_rcu as the First Reachable Receiver.
mm/memory.c:5695mm (Arg 1, RDI): The address space.address (Arg 2, RSI): The faulting VA.This function represents the precise moment logic transitions from “I have an address” to “I am looking for the Memory Object (VMA)”.
mas_walk(&mas) (Line 5703).We wrote a dedicated driver (probe0_driver.c) to filter by PID and Address.
strcpy at Base + 0x100.863560x78d7ce7270000x78d7ce727100[18374.125551] PROBE_0_HIT: PID=86356 ADDR=0x78d7ce7271000x78d7ce727100 == Kernel 0x78d7ce7271000 bits.6.asm_exc_page_fault -> READs CR2 (Fault Address).exc_page_fault -> handle_page_fault (Inlined) -> do_user_addr_fault.do_user_addr_fault gets mm = current->mm.lock_vma_under_rcu(mm, address).Step 0 is Axiomatically Verified. We have proven that the address causing the crash in userspace is bit-exactly the same address arriving at the VMA lookup logic in the kernel.
TERMS INTRODUCED WITHOUT DERIVATION: None.