どもです。
uio->uio_offset との比較が怪しかったので、
procfs_docpuinfo() を真似て解決しました。

# ずれるだろうけど張っとく
% diff -u sys/miscfs/procfs/procfs_linux.c.bak sys/miscfs/procfs/procfs_linux.c
--- sys/miscfs/procfs/procfs_linux.c.bak Sat Oct 28 16:48:43 2006
+++ sys/miscfs/procfs/procfs_linux.c Sat Oct 28 18:21:38 2006
@@ -89,9 +89,11 @@
PGTOKB(uvmexp.swpages),
PGTOKB(uvmexp.swpages - uvmexp.swpginuse));

- if (len <= 0 || len >= sizeof buf ||
- len <= uio->uio_offset || uio->uio_resid == 0)
+ if (len <= 0 || len >= sizeof buf || uio->uio_resid == 0)
return EINVAL;
+
+ if (sizeof buf < uio->uio_offset)
+ return 0;

len -= uio->uio_offset;
cp = buf + uio->uio_offset;