kern linker: Do not touch userrefs of the kernel file
A nonzero `userrefs` of a linker file indicates that the file, either loaded from kldload(2) or preloaded, can be unloaded via kldunload(2). As for the kernel file, it can be unloaded by the loader but should not be after initialization. This change fixes regression fromd9ce8a41eawhich incidentally increases `userrefs` of the kernel file. Reviewed by: dfr, dab, jhb Fixes:d9ce8a41eakern_linker: Handle module-loading failures in preloaded .ko files MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D42530
This commit is contained in:
@@ -1862,6 +1862,9 @@ linker_preload_finish(void *arg)
|
||||
|
||||
sx_xlock(&kld_sx);
|
||||
TAILQ_FOREACH_SAFE(lf, &linker_files, link, nlf) {
|
||||
if (lf == linker_kernel_file)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* If all of the modules in this file failed to load, unload
|
||||
* the file and return an error of ENOEXEC. (Parity with
|
||||
|
||||
Reference in New Issue
Block a user