Module Name:    src
Committed By:   christos
Date:           Sun Mar 10 04:25:06 UTC 2013

Modified Files:
        src/sys/kern: kern_module.c

Log Message:
more detailed/consistent error messages.


To generate a diff of this commit:
cvs rdiff -u -r1.89 -r1.90 src/sys/kern/kern_module.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/kern/kern_module.c
diff -u src/sys/kern/kern_module.c:1.89 src/sys/kern/kern_module.c:1.90
--- src/sys/kern/kern_module.c:1.89	Mon Mar  4 22:04:00 2013
+++ src/sys/kern/kern_module.c	Sat Mar  9 23:25:06 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_module.c,v 1.89 2013/03/05 03:04:00 christos Exp $	*/
+/*	$NetBSD: kern_module.c,v 1.90 2013/03/10 04:25:06 christos Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_module.c,v 1.89 2013/03/05 03:04:00 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_module.c,v 1.90 2013/03/10 04:25:06 christos Exp $");
 
 #define _MODULE_INTERNAL
 
@@ -773,7 +773,9 @@ module_do_builtin(const char *name, modu
 			if (buf[0] == '\0')
 				break;
 			if (mod->mod_nrequired == MAXMODDEPS - 1) {
-				module_error("too many required modules");
+				module_error("too many required modules "
+				    "%d >= %d", mod->mod_nrequired,
+				    MAXMODDEPS - 1);
 				return EINVAL;
 			}
 			error = module_do_builtin(buf, &mod2, NULL);
@@ -793,7 +795,7 @@ module_do_builtin(const char *name, modu
 	module_active = prev_active;
 	if (error != 0) {
 		module_error("builtin module `%s' "
-		    "failed to init", mi->mi_name);
+		    "failed to init, error %d", mi->mi_name, error);
 		return error;
 	}
 
@@ -843,7 +845,8 @@ module_do_load(const char *name, bool is
 	 * Avoid recursing too far.
 	 */
 	if (++depth > MODULE_MAX_DEPTH) {
-		module_error("recursion too deep");
+		module_error("recursion too deep for `%s' %d > %d", name,
+		    depth, MODULE_MAX_DEPTH);
 		depth--;
 		return EMLINK;
 	}
@@ -874,7 +877,7 @@ module_do_load(const char *name, bool is
 		    (flags & MODCTL_LOAD_FORCE) == 0) {
 			if (!autoload) {
 				module_error("use -f to reinstate "
-				    "builtin module \"%s\"", name);
+				    "builtin module `%s'", name);
 			}
 			depth--;
 			return EPERM;
@@ -922,8 +925,8 @@ module_do_load(const char *name, bool is
 		error = module_load_vfs_vec(name, flags, autoload, mod,
 					    &filedict);
 		if (error != 0) {
-			module_error("vfs load failed %d for `%s'", error,
-			    name);
+			module_error("vfs load failed for `%s', error %d",
+			    name, error);
 			kmem_free(mod, sizeof(*mod));
 			depth--;
 			return error;
@@ -932,8 +935,8 @@ module_do_load(const char *name, bool is
 
 		error = module_fetch_info(mod);
 		if (error != 0) {
-			module_error("cannot fetch module info for `%s'",
-			    name);
+			module_error("cannot fetch info for `%s', error %d",
+			    name, error);
 			goto fail;
 		}
 	}
@@ -944,7 +947,8 @@ module_do_load(const char *name, bool is
 	mi = mod->mod_info;
 	if (strlen(mi->mi_name) >= MAXMODNAME) {
 		error = EINVAL;
-		module_error("module name `%s' too long", mi->mi_name);
+		module_error("module name `%s' longer than %d", mi->mi_name,
+		    MAXMODNAME);
 		goto fail;
 	}
 	if (!module_compatible(mi->mi_version, __NetBSD_Version__)) {
@@ -1020,8 +1024,9 @@ module_do_load(const char *name, bool is
 			len = p - s + 1;
 			if (len >= MAXMODNAME) {
 				error = EINVAL;
-				module_error("required module name `%s'"
-				    " too long", mi->mi_required);
+				module_error("required module name `%s' "
+				    "longer than %d", mi->mi_required,
+				    MAXMODNAME);
 				goto fail;
 			}
 			strlcpy(buf, s, len);
@@ -1029,8 +1034,9 @@ module_do_load(const char *name, bool is
 				break;
 			if (mod->mod_nrequired == MAXMODDEPS - 1) {
 				error = EINVAL;
-				module_error("too many required modules (%d)",
-				    mod->mod_nrequired);
+				module_error("too many required modules "
+				    "%d >= %d", mod->mod_nrequired,
+				    MAXMODDEPS - 1);
 				goto fail;
 			}
 			if (strcmp(buf, mi->mi_name) == 0) {
@@ -1042,8 +1048,8 @@ module_do_load(const char *name, bool is
 			error = module_do_load(buf, true, flags, NULL,
 			    &mod2, MODULE_CLASS_ANY, true);
 			if (error != 0) {
-				module_error("recursive load failed for `%s'",
-				    mi->mi_name);
+				module_error("recursive load failed for `%s', "
+				    "error %d", mi->mi_name, error);
 				goto fail;
 			}
 			mod->mod_required[mod->mod_nrequired++] = mod2;
@@ -1057,13 +1063,14 @@ module_do_load(const char *name, bool is
 	error = kobj_affix(mod->mod_kobj, mi->mi_name);
 	if (error != 0) {
 		/* Cannot touch 'mi' as the module is now gone. */
-		module_error("unable to affix module `%s'", name);
+		module_error("unable to affix module `%s', error %d", name,
+		    error);
 		goto fail2;
 	}
 
 	if (filedict) {
 		if (!module_merge_dicts(filedict, props)) {
-			module_error("module properties failed");
+			module_error("module properties failed for %s", name);
 			error = EINVAL;
 			goto fail;
 		}
@@ -1077,8 +1084,8 @@ module_do_load(const char *name, bool is
 		filedict = NULL;
 	}
 	if (error != 0) {
-		module_error("modcmd function returned error %d for `%s'",
-		    error, mi->mi_name);
+		module_error("modcmd function failed for `%s', error %d",
+		    mi->mi_name, error);
 		goto fail;
 	}
 
@@ -1201,14 +1208,16 @@ module_prime(const char *name, void *bas
 	error = kobj_load_mem(&mod->mod_kobj, name, base, size);
 	if (error != 0) {
 		kmem_free(mod, sizeof(*mod));
-		module_error("unable to load object pushed by boot loader");
+		module_error("unable to load `%s' pushed by boot loader, "
+		    "error %d", name, error);
 		return error;
 	}
 	error = module_fetch_info(mod);
 	if (error != 0) {
 		kobj_unload(mod->mod_kobj);
 		kmem_free(mod, sizeof(*mod));
-		module_error("unable to load object pushed by boot loader");
+		module_error("unable to load `%s' pushed by boot loader, "
+		    "error %d", name, error);
 		return error;
 	}
 
@@ -1235,11 +1244,13 @@ module_fetch_info(module_t *mod)
 	error = kobj_find_section(mod->mod_kobj, "link_set_modules",
 	    &addr, &size);
 	if (error != 0) {
-		module_error("`link_set_modules' section not present");
+		module_error("`link_set_modules' section not present, "
+		    "error %d", error);
 		return error;
 	}
 	if (size != sizeof(modinfo_t **)) {
-		module_error("`link_set_modules' section wrong size");
+		module_error("`link_set_modules' section wrong size %zu != %zu",
+		    size, sizeof(modinfo_t **));
 		return ENOEXEC;
 	}
 	mod->mod_info = *(modinfo_t **)addr;

Reply via email to