cvs commit: src/lib/libc/sys kldstat.2 src/sbin/kldstat kldstat.c src/sys/kern kern_linker.c src/sys/sys linker.h

Robert Watson rwatson at
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
>  Log:
>  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
Computer Laboratory
University of Cambridge

More information about the cvs-src mailing list