A Bug in linker_reference_module() ?
John Baldwin
jhb at freebsd.org
Thu Sep 21 18:41:26 PDT 2006
On Thursday 21 September 2006 14:12, Intron is my alias on the Internet wrote:
> Please have a look at the function linker_reference_module() in
> /sys/kern/kern_linker.c of 7.0-CURRENT. If the module is loaded on demand,
> why not increase its reference counter after loading? In my opinion,
> linker_reference_module() behaves differently from linker_load_file().
This is because a new kld loaded via linker_load_module() starts off
with a refcount of 1. Thus, if you do:
linker_reference_module(...);
...
linker_release_module(...);
Then with the current code the release_module() call drops the reference
count to 0 and the module is unloaded. This is the desired operation for
reference_module/release_module. This model is commonly used in the kernel.
For example, when creating a credential, one just does 'crget()' and later
a 'crfree()' to free it instead of doing 'crget(); crhold()' to create one.
--
John Baldwin
More information about the freebsd-hackers
mailing list