09db792626
if_tun_mod, etc...) from crashing the system. These modules are useful, but because they don't yet have proper load()/unload() functions, they can lead to panics: if, for example, you load the if_ppp module, any user can panic the system by running modstat. You can also hang the system outright if you try to unload the PPP module too. Changes are as follows: - Save the name passed to us during the RESERVE stage for name matching (we can't load if_ppp_mod twice: we've have two ppp0's and two ppp1's, which is beyond strange). This makes the lkmexists() cheks somewhat redundant, but there's no way around it that I can see. - If we call the module entry point and find that we have no lkm_any structure in our 'private' section, create a fake one. This keeps modstat happy. We mark such modules as LM_UNKNOWN. - Don't allow LM_UNLOAD modules to be unloaded: it just ain't possible. (Unless someone wants to write a pppunattach() function. :( ) - In lkmunreserve(), mark private.lkm_any as NULL so we don't get confused later. I think this is bogus, but I can't prove it. XXX: the name matching used to keep the user from loading two instances of the same module can easily be defeated simply by changing the module name or, in the case of the oddball modules, simply by renaming the module files. I haven't found a nice simple way to tell one module from another. |
||
---|---|---|
.. | ||
alpha/include | ||
amd64 | ||
compile | ||
conf | ||
ddb | ||
dev | ||
fs | ||
gnu | ||
i386 | ||
isa | ||
isofs/cd9660 | ||
kern | ||
libkern | ||
miscfs | ||
modules | ||
msdosfs | ||
net | ||
netccitt | ||
netinet | ||
netiso | ||
netns | ||
nfs | ||
nfsclient | ||
nfsserver | ||
pci | ||
powerpc/include | ||
rpc | ||
scsi | ||
sys | ||
tools | ||
ufs | ||
vm | ||
Makefile |