diff options
author | mux <mux@FreeBSD.org> | 2002-08-02 20:56:07 +0000 |
---|---|---|
committer | mux <mux@FreeBSD.org> | 2002-08-02 20:56:07 +0000 |
commit | a7c11c91eb4e5af89d477fbb8bfd9b7a5d42eaa7 (patch) | |
tree | 97627424d15db9766ee1cd606cc49762644c096f /sys/kern | |
parent | 1bd16d78e2a55104eb99d69e442460fe637caab9 (diff) | |
download | FreeBSD-src-a7c11c91eb4e5af89d477fbb8bfd9b7a5d42eaa7.zip FreeBSD-src-a7c11c91eb4e5af89d477fbb8bfd9b7a5d42eaa7.tar.gz |
Make the consumers of the linker_load_file() function use
linker_load_module() instead.
This fixes a bug where the kernel was unable to properly locate and
load a kernel module in vfs_mount() (and probably in the netgraph
code as well since it was using the same function). This is because
the linker_load_file() does not properly search the module path.
Problem found by: peter
Reviewed by: peter
Thanks to: peter
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_linker.c | 7 | ||||
-rw-r--r-- | sys/kern/vfs_mount.c | 4 |
2 files changed, 4 insertions, 7 deletions
diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index f34205c..e30e52c 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -57,9 +57,6 @@ int kld_debug = 0; * *verinfo); */ static const char *linker_basename(const char *path); -static int linker_load_module(const char *kldname, const char *modname, - struct linker_file *parent, struct mod_depend *verinfo, - struct linker_file **lfpp); /* Metadata from the static kernel */ SET_DECLARE(modmetadata_set, struct mod_metadata); @@ -314,7 +311,7 @@ linker_init_kernel_modules(void) SYSINIT(linker_kernel, SI_SUB_KLD, SI_ORDER_ANY, linker_init_kernel_modules, 0) -int +static int linker_load_file(const char *filename, linker_file_t *result) { linker_class_t lc; @@ -1626,7 +1623,7 @@ linker_basename(const char *path) * Find a file which contains given module and load it, if "parent" is not * NULL, register a reference to it. */ -static int +int linker_load_module(const char *kldname, const char *modname, struct linker_file *parent, struct mod_depend *verinfo, struct linker_file **lfpp) diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index ae7f30c..3dd4b06 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -596,7 +596,7 @@ vfs_nmount(td, fsflags, fsoptions) vput(vp); goto bad; } - error = linker_load_file(fstype, &lf); + error = linker_load_module(NULL, fstype, NULL, NULL, &lf); if (error || lf == NULL) { vput(vp); if (lf == NULL) @@ -964,7 +964,7 @@ vfs_mount(td, fstype, fspath, fsflags, fsdata) vput(vp); return (error); } - error = linker_load_file(fstype, &lf); + error = linker_load_module(NULL, fstype, NULL, NULL, &lf); if (error || lf == NULL) { vput(vp); if (lf == NULL) |