DF-5579 / manifest.json
{ "finding_id": "DF-5579", "title": "vkernel64 kvm_access_check() /dev/kmem validator faults on ungrown KVA: pmap_kextract()'s vtopde() assert() SIGABRTs the whole vkernel from inside the residency check (DF-5358 pc64 twin)", "verdict": "reproduced", "impact": "panic", "reproduce": { "build": "guest# cc -static -O2 -o /root/vkmem vkmem.c && sh build_image.sh && (cd /usr/src && make -j6 nativekernel KERNCONF=VKERNEL64 # needs DF-5474 SYSTEM_LD defsym workaround)", "run": "guest# sysctl vm.vkernel_enable=1; mkdir -p /var/vkernel; sh run.sh # boots kernel.debug -m 512m -r /vkroot.img -n 1, runs control then trigger", "expected": "baseline: control pread at 512GB+1MB -> EFAULT + SURVIVED; trigger pread at 512GB+400GB -> 'Assertion failed: (x != NULL), function vtopde, file .../pmap.c, line 357' -> vkernel DEAD. fixed kernel: trigger -> EFAULT + SURVIVED, VKDONE reached, ALIVE; text control (image shortcut 0x454780) returns the same 8 kernel-text bytes in both." }, "kernel_refs": [ "sys/platform/vkernel64/x86_64/vm_machdep.c:310", "sys/platform/vkernel64/x86_64/vm_machdep.c:322", "sys/platform/vkernel64/platform/pmap.c:732", "sys/platform/vkernel64/platform/pmap.c:357", "sys/platform/vkernel64/platform/pmap.c:273", "sys/platform/vkernel64/platform/pmap.c:1563", "sys/platform/vkernel64/include/vmparam.h:80", "sys/platform/vkernel64/platform/init.c:609", "sys/kern/kern_memio.c:285", "sys/platform/vkernel64/x86_64/exception.c:226" ], "artifacts": [ "README.md", "VERDICT.md", "vkmem.c", "build.sh", "build_image.sh", "run.sh", "run_ctl.sh", "run_fixed.sh", "vkbuild.log", "vkfixbuild.log", "run.log", "run.baseline.log", "run.ctl.log", "run.fixed.log", "panic.txt", "env.txt", "fix.diff", "manifest.json", "verdict.json" ] } |