summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1998-11-10 09:12:40 +0000
committerpeter <peter@FreeBSD.org>1998-11-10 09:12:40 +0000
commit3c11b5a490e59eb97da47c39d0909f25d0609c10 (patch)
treebc6bd72ca8930d2e9163bdccb29847d8f4437cb3 /sys
parent2dc70fe9f6998c540b9d03f18a04649e88760ad3 (diff)
downloadFreeBSD-src-3c11b5a490e59eb97da47c39d0909f25d0609c10.zip
FreeBSD-src-3c11b5a490e59eb97da47c39d0909f25d0609c10.tar.gz
Register and unregister vnodeops the new way rather than leaking on
unload.
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_lkm.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c
index 5882ba9..494345e 100644
--- a/sys/kern/kern_lkm.c
+++ b/sys/kern/kern_lkm.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_lkm.c,v 1.57 1998/10/16 03:55:00 peter Exp $
+ * $Id: kern_lkm.c,v 1.58 1998/10/25 17:44:51 phk Exp $
*/
#include "opt_devfs.h"
@@ -648,17 +648,8 @@ _lkm_vfs(lkmtp, cmd)
vfsp->vfc_next = vfc;
vfc->vfc_next = NULL;
- /* like in vfs_op_init */
- for(i = 0; args->lkm_vnodeops->ls_items[i]; i++) {
- struct vnodeopv_desc *opv = (struct vnodeopv_desc *)
- args->lkm_vnodeops->ls_items[i];
- *(opv->opv_desc_vector_p) = NULL;
- }
- for(i = 0; args->lkm_vnodeops->ls_items[i]; i++) {
- struct vnodeopv_desc *opv = (struct vnodeopv_desc *)
- args->lkm_vnodeops->ls_items[i];
- vfs_opv_init(opv);
- }
+ for(i = 0; args->lkm_vnodeops->ls_items[i]; i++)
+ vfs_add_vnodeops((void*)args->lkm_vnodeops->ls_items[i]);
/*
* Call init function for this VFS...
@@ -694,6 +685,9 @@ _lkm_vfs(lkmtp, cmd)
prev_vfsp->vfc_next = vfsp->vfc_next;
+ for(i = 0; args->lkm_vnodeops->ls_items[i]; i++)
+ vfs_rm_vnodeops((void*)args->lkm_vnodeops->ls_items[i]);
+
if (vfsp->vfc_vfsops->vfs_oid != NULL) {
l = &sysctl__vfs;
for (i = l->ls_length,
OpenPOWER on IntegriCloud