Date: Tue, 26 Mar 2024 08:48:13 GMT From: Zhenlei Huang <zlei@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 39450eba8e6c - main - kern linker: Do not touch userrefs of the kernel file Message-ID: <202403260848.42Q8mD3M091358@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=39450eba8e6cd5b83def724481127b58ecc1fcc1 commit 39450eba8e6cd5b83def724481127b58ecc1fcc1 Author: Zhenlei Huang <zlei@FreeBSD.org> AuthorDate: 2024-03-26 08:47:02 +0000 Commit: Zhenlei Huang <zlei@FreeBSD.org> CommitDate: 2024-03-26 08:47:02 +0000 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 from d9ce8a41eac9 which incidentally increases `userrefs` of the kernel file. Reviewed by: dfr, dab, jhb Fixes: d9ce8a41eac9 kern_linker: Handle module-loading failures in preloaded .ko files MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D42530 --- sys/kern/kern_linker.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 325dffbfedee..9d3cb9b7bd63 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202403260848.42Q8mD3M091358>