⬢ DragonFlyBSD Kernel Audit
DF-5619 / run.noinv_nullenter_survives.txt
← back to finding ↓ download raw
# observation: nullenter blob on the NON-INVARIANTS kernel (snapshot noinv-installed)
# kernel binary verified: `strings /boot/kernel/kernel | grep -c "enter is not set"` -> 0
# (KASSERT compiled out; kernel dated Jul  3 17:33)

$ sysctl hw.acpi.cpu0.cx_supported
hw.acpi.cpu0.cx_supported: C1/10
#  -> the _CST C2 SystemIO/addr0 state (trans_lat=10, index 0; label is i+1,
#     not the ACPI type) was ACCEPTED into the live idle table with
#     enter == NULL -- no KASSERT to stop it on this kernel.

$ sysctl hw.acpi.cpu0.cx_usage   (twice, 2s apart)
hw.acpi.cpu0.cx_usage: 0.00% last 1000000us
hw.acpi.cpu0.cx_usage: 0.00% last 1000000us
#  -> usage counters and cst_prev_sleep frozen at their initial values: the
#     idle loop had not completed a state-machine pass during the
#     observation window (guest reachable via ssh the whole time).  The
#     NULL `cx_next->enter(cx_next)` call (acpi_cpu_cstate.c:970) for this
#     shape is proven by code trace; the production-kernel PANIC for the
#     family is instead demonstrated unconditionally by the zerostate blob
#     (panic: C1 startup setup failed: 22 -- plain panic(), no INVARIANTS),
#     see run.noinv_zerostate_panic.log / run.attack_zerostate_panic.log.

$ dmesg | grep -a -c cpu_cst
6
# all six cpu_cst devices attached normally on the planted chain.