Module Name:    src
Committed By:   pgoyette
Date:           Sat Aug 21 13:19:41 UTC 2010

Modified Files:
        src/sys/dev/dm: dm_target.c
        src/sys/kern: kern_exec.c kern_syscall.c sys_module.c sys_sig.c tty.c
            uipc_accf.c vfs_syscalls.c
        src/sys/miscfs/specfs: spec_vnops.c
        src/sys/net: if_ppp.c

Log Message:
Update the rest of the kernel to conform to the module subsystem's new
locking protocol.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/dm/dm_target.c
cvs rdiff -u -r1.299 -r1.300 src/sys/kern/kern_exec.c
cvs rdiff -u -r1.4 -r1.5 src/sys/kern/kern_syscall.c
cvs rdiff -u -r1.11 -r1.12 src/sys/kern/sys_module.c src/sys/kern/uipc_accf.c
cvs rdiff -u -r1.28 -r1.29 src/sys/kern/sys_sig.c
cvs rdiff -u -r1.237 -r1.238 src/sys/kern/tty.c
cvs rdiff -u -r1.407 -r1.408 src/sys/kern/vfs_syscalls.c
cvs rdiff -u -r1.130 -r1.131 src/sys/miscfs/specfs/spec_vnops.c
cvs rdiff -u -r1.131 -r1.132 src/sys/net/if_ppp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/dm/dm_target.c
diff -u src/sys/dev/dm/dm_target.c:1.13 src/sys/dev/dm/dm_target.c:1.14
--- src/sys/dev/dm/dm_target.c:1.13	Tue May 18 15:10:41 2010
+++ src/sys/dev/dm/dm_target.c	Sat Aug 21 13:19:41 2010
@@ -1,4 +1,4 @@
-/*        $NetBSD: dm_target.c,v 1.13 2010/05/18 15:10:41 haad Exp $      */
+/*        $NetBSD: dm_target.c,v 1.14 2010/08/21 13:19:41 pgoyette Exp $      */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -83,9 +83,7 @@
 		gen = module_gen;
 
 		/* Try to autoload target module */
-		mutex_enter(&module_lock);
 		(void) module_autoload(name, MODULE_CLASS_MISC);
-		mutex_exit(&module_lock);
 	} while (gen != module_gen);
 
 	mutex_enter(&dm_target_mutex);

Index: src/sys/kern/kern_exec.c
diff -u src/sys/kern/kern_exec.c:1.299 src/sys/kern/kern_exec.c:1.300
--- src/sys/kern/kern_exec.c:1.299	Wed Jul  7 01:30:37 2010
+++ src/sys/kern/kern_exec.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_exec.c,v 1.299 2010/07/07 01:30:37 chs Exp $	*/
+/*	$NetBSD: kern_exec.c,v 1.300 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.299 2010/07/07 01:30:37 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.300 2010/08/21 13:19:39 pgoyette Exp $");
 
 #include "opt_ktrace.h"
 #include "opt_modular.h"
@@ -500,17 +500,13 @@
 	char const * const *list;
 	int i;
 
-	mutex_enter(&module_lock);
 	list = (nexecs == 0 ? native : compat);
 	for (i = 0; list[i] != NULL; i++) {
 		if (module_autoload(list[i], MODULE_CLASS_MISC) != 0) {
 		    	continue;
 		}
-		mutex_exit(&module_lock);
 	   	yield();
-		mutex_enter(&module_lock);
 	}
-	mutex_exit(&module_lock);
 #endif
 }
 

Index: src/sys/kern/kern_syscall.c
diff -u src/sys/kern/kern_syscall.c:1.4 src/sys/kern/kern_syscall.c:1.5
--- src/sys/kern/kern_syscall.c:1.4	Thu Apr 15 20:46:08 2010
+++ src/sys/kern/kern_syscall.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_syscall.c,v 1.4 2010/04/15 20:46:08 pooka Exp $	*/
+/*	$NetBSD: kern_syscall.c,v 1.5 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_syscall.c,v 1.4 2010/04/15 20:46:08 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_syscall.c,v 1.5 2010/08/21 13:19:39 pgoyette Exp $");
 
 #include "opt_modular.h"
 
@@ -45,6 +45,7 @@
 #include <sys/syscall.h>
 #include <sys/syscallargs.h>
 #include <sys/syscallvar.h>
+#include <sys/systm.h>
 #include <sys/xcall.h>
 
 int
@@ -199,13 +200,13 @@
 
 	/*
 	 * Restart the syscall if we interrupted a module unload that
-	 * failed.  Acquiring module_lock delays us until any unload
+	 * failed.  Acquiring kernconfig_lock delays us until any unload
 	 * has been completed or rolled back.
 	 */
-	mutex_enter(&module_lock);
+	kernconfig_lock();
 	sy = l->l_sysent;
 	if (sy->sy_call != sys_nomodule) {
-		mutex_exit(&module_lock);
+		kernconfig_unlock();
 		return ERESTART;
 	}
 	/*
@@ -224,11 +225,11 @@
 			    sy->sy_call == sys_nomodule) {
 			    	break;
 			}
-			mutex_exit(&module_lock);
+			kernconfig_unlock();
 			return ERESTART;
 		}
 	}
-	mutex_exit(&module_lock);
+	kernconfig_unlock();
 #endif	/* MODULAR */
 
 	return sys_nosys(l, v, retval);
@@ -240,7 +241,7 @@
 	struct sysent *sy;
 	int i;
 
-	KASSERT(mutex_owned(&module_lock));
+	KASSERT(kernconfig_is_held());
 
 	if (em == NULL) {
 		em = &emul_netbsd;
@@ -277,7 +278,7 @@
 	lwp_t *l;
 	int i;
 
-	KASSERT(mutex_owned(&module_lock));
+	KASSERT(kernconfig_is_held());
 
 	if (em == NULL) {
 		em = &emul_netbsd;
@@ -320,7 +321,7 @@
 		/*
 		 * We lose: one or more calls are still in use.  Put back
 		 * the old entrypoints and act like nothing happened.
-		 * When we drop module_lock, any system calls held in
+		 * When we drop kernconfig_lock, any system calls held in
 		 * sys_nomodule() will be restarted.
 		 */
 		for (i = 0; sp[i].sp_call != NULL; i++) {

Index: src/sys/kern/sys_module.c
diff -u src/sys/kern/sys_module.c:1.11 src/sys/kern/sys_module.c:1.12
--- src/sys/kern/sys_module.c:1.11	Fri Mar  5 18:35:01 2010
+++ src/sys/kern/sys_module.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_module.c,v 1.11 2010/03/05 18:35:01 pooka Exp $	*/
+/*	$NetBSD: sys_module.c,v 1.12 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_module.c,v 1.11 2010/03/05 18:35:01 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_module.c,v 1.12 2010/08/21 13:19:39 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -144,11 +144,11 @@
 		if (error != 0) {
 			break;
 		}
-		mutex_enter(&module_lock);
+		kernconfig_lock();
 		mslen = (module_count+module_builtinlist+1) * sizeof(modstat_t);
 		mso = kmem_zalloc(mslen, KM_SLEEP);
 		if (mso == NULL) {
-			mutex_exit(&module_lock);
+			kernconfig_unlock();
 			return ENOMEM;
 		}
 		ms = mso;
@@ -187,7 +187,7 @@
 			ms->ms_source = mod->mod_source;
 			ms++;
 		}
-		mutex_exit(&module_lock);
+		kernconfig_unlock();
 		error = copyout(mso, iov.iov_base,
 		    min(mslen - sizeof(modstat_t), iov.iov_len));
 		kmem_free(mso, mslen);
Index: src/sys/kern/uipc_accf.c
diff -u src/sys/kern/uipc_accf.c:1.11 src/sys/kern/uipc_accf.c:1.12
--- src/sys/kern/uipc_accf.c:1.11	Sat Mar 13 23:03:39 2010
+++ src/sys/kern/uipc_accf.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_accf.c,v 1.11 2010/03/13 23:03:39 christos Exp $	*/
+/*	$NetBSD: uipc_accf.c,v 1.12 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_accf.c,v 1.11 2010/03/13 23:03:39 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_accf.c,v 1.12 2010/08/21 13:19:39 pgoyette Exp $");
 
 #define ACCEPT_FILTER_MOD
 
@@ -167,10 +167,8 @@
 		/* Try to autoload a module to satisfy the request. */
 		strcpy(buf, "accf_");
 		strlcat(buf, name, sizeof(buf));
-		mutex_enter(&module_lock);
 		gen = module_gen;
 		(void)module_autoload(buf, MODULE_CLASS_ANY);
-		mutex_exit(&module_lock);
 	} while (gen != module_gen);
 
 	return p;

Index: src/sys/kern/sys_sig.c
diff -u src/sys/kern/sys_sig.c:1.28 src/sys/kern/sys_sig.c:1.29
--- src/sys/kern/sys_sig.c:1.28	Thu Jul  1 02:38:31 2010
+++ src/sys/kern/sys_sig.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_sig.c,v 1.28 2010/07/01 02:38:31 rmind Exp $	*/
+/*	$NetBSD: sys_sig.c,v 1.29 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_sig.c,v 1.28 2010/07/01 02:38:31 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_sig.c,v 1.29 2010/08/21 13:19:39 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -347,13 +347,13 @@
 	 *
 	 * If version < 2, we try to autoload the compat module.  Note
 	 * that we interlock with the unload check in compat_modcmd()
-	 * using module_lock.  If the autoload fails, we don't try it
+	 * using kernconfig_lock.  If the autoload fails, we don't try it
 	 * again for this process.
 	 */
 	if (nsa != NULL) {
 		if (__predict_false(vers < 2) &&
 		    (p->p_lflag & PL_SIGCOMPAT) == 0) {
-			mutex_enter(&module_lock);
+			kernconfig_lock();
 			if (sendsig_sigcontext_vec == NULL) {
 				(void)module_autoload("compat",
 				    MODULE_CLASS_ANY);
@@ -374,7 +374,7 @@
 			 */
 			p->p_lflag |= PL_SIGCOMPAT;
 			mutex_exit(proc_lock);
-			mutex_exit(&module_lock);
+			kernconfig_unlock();
 		}
 
 		switch (vers) {

Index: src/sys/kern/tty.c
diff -u src/sys/kern/tty.c:1.237 src/sys/kern/tty.c:1.238
--- src/sys/kern/tty.c:1.237	Thu Jul  1 02:38:31 2010
+++ src/sys/kern/tty.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.237 2010/07/01 02:38:31 rmind Exp $	*/
+/*	$NetBSD: tty.c,v 1.238 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.237 2010/07/01 02:38:31 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.238 2010/08/21 13:19:39 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1264,13 +1264,10 @@
 				break;
 			}
 			rw_exit(&ttcompat_lock);
-			mutex_enter(&module_lock);
 			(void)module_autoload("compat", MODULE_CLASS_ANY);
 			if (ttcompatvec == NULL) {
-				mutex_exit(&module_lock);
 				return EPASSTHROUGH;
 			}
-			mutex_exit(&module_lock);
 		}
 		error = (*ttcompatvec)(tp, cmd, data, flag, l);
 		rw_exit(&ttcompat_lock);

Index: src/sys/kern/vfs_syscalls.c
diff -u src/sys/kern/vfs_syscalls.c:1.407 src/sys/kern/vfs_syscalls.c:1.408
--- src/sys/kern/vfs_syscalls.c:1.407	Wed Jun 30 15:44:54 2010
+++ src/sys/kern/vfs_syscalls.c	Sat Aug 21 13:19:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_syscalls.c,v 1.407 2010/06/30 15:44:54 pooka Exp $	*/
+/*	$NetBSD: vfs_syscalls.c,v 1.408 2010/08/21 13:19:39 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.407 2010/06/30 15:44:54 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.408 2010/08/21 13:19:39 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_fileassoc.h"
@@ -278,9 +278,7 @@
 		return 0;
 
 	/* If we can autoload a vfs module, try again */
-	mutex_enter(&module_lock);
 	(void)module_autoload(fstypename, MODULE_CLASS_VFS);
-	mutex_exit(&module_lock);
 
 	if ((*vfsops = vfs_getopsbyname(fstypename)) != NULL)
 		return 0;

Index: src/sys/miscfs/specfs/spec_vnops.c
diff -u src/sys/miscfs/specfs/spec_vnops.c:1.130 src/sys/miscfs/specfs/spec_vnops.c:1.131
--- src/sys/miscfs/specfs/spec_vnops.c:1.130	Thu Jun 24 13:03:17 2010
+++ src/sys/miscfs/specfs/spec_vnops.c	Sat Aug 21 13:19:40 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: spec_vnops.c,v 1.130 2010/06/24 13:03:17 hannken Exp $	*/
+/*	$NetBSD: spec_vnops.c,v 1.131 2010/08/21 13:19:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.130 2010/06/24 13:03:17 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.131 2010/08/21 13:19:40 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -459,9 +459,7 @@
 				break;
 			
 			/* Try to autoload device module */
-			mutex_enter(&module_lock);
 			(void) module_autoload(name, MODULE_CLASS_DRIVER);
-			mutex_exit(&module_lock);
 		} while (gen != module_gen);
 
 		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
@@ -512,9 +510,7 @@
 			VOP_UNLOCK(vp);
 
                         /* Try to autoload device module */
-			mutex_enter(&module_lock);
 			(void) module_autoload(name, MODULE_CLASS_DRIVER);
-			mutex_exit(&module_lock);
 			
 			vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 		} while (gen != module_gen);

Index: src/sys/net/if_ppp.c
diff -u src/sys/net/if_ppp.c:1.131 src/sys/net/if_ppp.c:1.132
--- src/sys/net/if_ppp.c:1.131	Mon Apr  5 07:22:23 2010
+++ src/sys/net/if_ppp.c	Sat Aug 21 13:19:40 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ppp.c,v 1.131 2010/04/05 07:22:23 joerg Exp $	*/
+/*	$NetBSD: if_ppp.c,v 1.132 2010/08/21 13:19:40 pgoyette Exp $	*/
 /*	Id: if_ppp.c,v 1.6 1997/03/04 03:33:00 paulus Exp 	*/
 
 /*
@@ -102,7 +102,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.131 2010/04/05 07:22:23 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.132 2010/08/21 13:19:40 pgoyette Exp $");
 
 #include "ppp.h"
 
@@ -1820,7 +1820,7 @@
 	if (cp != NULL)
 		return cp;
 
-	mutex_enter(&module_lock);
+	kernconfig_lock();
 	mutex_enter(&ppp_compressors_mtx);
 	cp = ppp_get_compressor_noload(ci, true);
 	mutex_exit(&ppp_compressors_mtx);
@@ -1838,7 +1838,7 @@
 			}
 		}
 	}
-	mutex_exit(&module_lock);
+	kernconfig_unlock();
 
 	return cp;
 }

Reply via email to