From a3d0544135a44cbbcffb7cf29d3c4e4fd399def5 Mon Sep 17 00:00:00 2001 From: jdp Date: Wed, 19 Oct 2005 20:40:30 +0000 Subject: Fix a bug in the kernel module runtime linker that made it impossible to unload the usb.ko module after boot if it was originally preloaded from "/boot/loader.conf". When processing preloaded modules, the linker erroneously added self-dependencies the each module's reference count. That prevented usb.ko's reference count from ever going to 0, so it could not be unloaded. Sponsored by Isilon Systems. Reviewed by: pjd, peter MFC after: 1 week --- sys/kern/kern_linker.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'sys') diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index ac33ef0..ca05cc0 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -1337,6 +1337,9 @@ restart: modname = mp->md_cval; verinfo = mp->md_data; mod = modlist_lookup2(modname, verinfo); + /* Don't count self-dependencies */ + if (lf == mod->container) + continue; mod->container->refs++; error = linker_file_add_dependency(lf, mod->container); -- cgit v1.1