cvs commit: src/lib/libc/sys kldstat.2 src/sbin/kldstat
kldstat.c src/sys/kern kern_linker.c src/sys/sys linker.h
rwatson at FreeBSD.org
Mon Oct 22 06:04:59 PDT 2007
On Mon, 22 Oct 2007, John Birrell wrote:
> jb 2007-10-22 04:12:57 UTC
> FreeBSD src repository
> Modified files:
> lib/libc/sys kldstat.2
> sbin/kldstat kldstat.c
> sys/kern kern_linker.c
> sys/sys linker.h
> Add the full module path name to the kld_file_stat structure
> for kldstat(2).
> This allows libdtrace to determine the exact file from which
> a kernel module was loaded without having to guess.
> The kldstat(2) API is versioned with the size of the
> kld_file_stat structure, so this change creates version 2.
> Add the pathname to the verbose output of kldstat(8) too.
When using this function, keep in mind that, as with all stored path strings
in the kernel, the string may become stale, be relative to a particular
process cwd, or a particular process root. Automated use of similarly stored
paths relating to mounted file systems are notoriously unreliable, especially
if chroot() is in use. This doesn't make stored paths unuseful, just requires
a little caution to make sure nothing relies on them working better than they
actually do work. You might want to add a note in the BUGS or IMPLEMENTATION
section to this extent. We had a rather nasty series of bugs in the user
mount tool for a while in which an incorrect assumption was made that the path
a file system was mounted as (and hence cached in the mount structure) would
remain valid at unmount time -- as a result, file systems couldn't be
unmounted from within chroots or if an intermediate directory in their path
had been renamed.
Robert N M Watson
University of Cambridge
More information about the cvs-src