DF-5779 / disasm.txt
Disassembly evidence โ shipped guest modules (kernel DragonFly 6.5-DEVELOPMENT
#0 Thu Jul 2 06:02:54 2026, X86_64_GENERIC; md5 of source files verified
identical to the audited tree).
(1) __drm_puts_seq_file in /boot/kernel/drm.ko โ the only in-tree route that
feeds a RUNTIME string into seq_puts() (sys/dev/drm/drm_print.c:128):
00000000000374f0 <__drm_puts_seq_file>:
374f0: 48 8b 47 10 mov 0x10(%rdi),%rax ; rax = p->arg = seq_file*
374f4: 48 89 f2 mov %rsi,%rdx ; <<< str -> %rdx
374f7: 48 8b 38 mov (%rax),%rdi ; arg1 = m->buf
374fa: 48 8b 70 08 mov 0x8(%rax),%rsi ; arg2 = m->size
374fe: 31 c0 xor %eax,%eax ; 0 vector regs
37500: e9 00 00 00 00 jmpq 37505 <...+0x15> ; tail-jmp ksnprintf
x86-64 SysV: ksnprintf(rdi=buf, rsi=size, rdx=fmt, ...). The caller's DATA
string is moved into %rdx โ the FORMAT parameter. Machine-code proof of the
contract divergence vs Linux seq_puts(m, str) which never interprets str.
Symbol table (drm.ko): U ksnprintf, U kvsnprintf, T __drm_puts_seq_file,
T seq_printf โ the shim is linked and callable; only the debugfs dispatch
that would instantiate struct seq_file is absent (CONFIG_DEBUG_FS unset).
(2) seq_printf in /boot/kernel/drm.ko (linux_printf.c:31-39) for reference โ
note ksnprintf reached with rdx=f(fmt) and a synthesized va_list; the
va_list-forwarding ABI question itself is known finding DF-2224 and is
NOT re-reported here.