PERFORCE change 94326 for review

John Baldwin jhb at FreeBSD.org
Thu Mar 30 21:17:09 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=94326

Change 94326 by jhb at jhb_slimer on 2006/03/30 21:16:27

	More cleanups and fix kld_unlock in linker_file_lookup_set().

Affected files ...

.. //depot/projects/smpng/sys/kern/kern_linker.c#54 edit

Differences ...

==== //depot/projects/smpng/sys/kern/kern_linker.c#54 (text+ko) ====

@@ -639,7 +639,8 @@
 	if (!locked)
 		KLD_LOCK();
 	error = linker_lookup_set(file, name, firstp, lastp, countp);
-	KLD_UNLOCK();
+	if (!locked)
+		KLD_UNLOCK();
 	return (error);
 }
 
@@ -844,10 +845,8 @@
 
 	KLD_LOCK();
 	error = linker_load_module_internal(kldname, modname, NULL, NULL, &lf);
-	if (error) {
-		KLD_UNLOCK();
-		goto out;
-	}
+	if (error)
+		goto unlock;
 #ifdef HWPMC_HOOKS
 	pkm.pm_file = lf->filename;
 	pkm.pm_address = (uintptr_t) lf->address;
@@ -855,6 +854,7 @@
 #endif
 	lf->userrefs++;
 	td->td_retval[0] = lf->id;
+unlock:
 	KLD_UNLOCK();
 out:
 	free(pathname, M_TEMP);
@@ -961,9 +961,9 @@
 	filename = linker_basename(pathname);
 	KLD_LOCK();
 	lf = linker_find_file_by_name(filename);
-	if (lf) {
+	if (lf)
 		td->td_retval[0] = lf->id;
-	} else
+	else
 		error = ENOENT;
 	KLD_UNLOCK();
 out:
@@ -1116,12 +1116,9 @@
 	KLD_LOCK();
 	if (uap->fileid != 0) {
 		lf = linker_find_file_by_id(uap->fileid);
-		if (lf == NULL) {
+		if (lf == NULL)
 			error = ENOENT;
-			KLD_UNLOCK();
-			goto out;
-		}
-		if (LINKER_LOOKUP_SYMBOL(lf, symstr, &sym) == 0 &&
+		else if (LINKER_LOOKUP_SYMBOL(lf, symstr, &sym) == 0 &&
 		    LINKER_SYMBOL_VALUES(lf, sym, &symval) == 0) {
 			lookup.symvalue = (uintptr_t) symval.value;
 			lookup.symsize = symval.size;


More information about the p4-projects mailing list