# DF-2062 — PoC evidence pack

**Finding:** dm_table_busy exports only SHARED; dm_table_load_ioctl races on inactive TAILQ
**Class:** Improper synchronization / list corruption (CWE-662)  |  **Impact ceiling:** panic  |  **Confidence:** likely

## Status

SOURCE-CONFIRMED. The defect is verified real by line-by-line tracing of the
audited `sys/` tree, but it is **HW/module-gated**: the audit guest lacks the
required hardware/module (device-mapper (dm) module loaded + a dm device present + operator-group access to /dev/mapper/control (0640 root:operator)), so it cannot be triggered at runtime
here. See `VERDICT.md` for the full mechanism and citations.

## How to reproduce (on a guest that HAS the hardware)

1. Ensure the gating precondition is met: device-mapper (dm) module loaded + a dm device present + operator-group access to /dev/mapper/control (0640 root:operator).
2. Apply `fix.diff` to confirm the cited path changes; before the fix the cited
   code path exhibits the behaviour described in `VERDICT.md`.
3. The original finding markdown describes the runtime trigger.

## Build validation (Phase 8)

`fix.diff` applies cleanly to pristine source. All nine findings' fixes were
built together; see `VERDICT.md` "Phase 8" and `fix_build.log`:

    make -j6 nativekernel KERNCONF=X86_64_GENERIC   # rc=0, -Werror, 0 warnings

## Files

- `VERDICT.md` — full narrative, mechanism, citations, fix-build result
- `fix.diff` — standalone `git apply`-able fix (authored post-verification)
- `fix_build.log` — full combined-fix kernel build output (rc=0, -Werror)
- `env.txt` — guest environment for this verification
- `manifest.json` — machine-readable catalog
