PERFORCE change 111105 for review

Sam Leffler sam at FreeBSD.org
Mon Dec 4 20:38:55 PST 2006


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

Change 111105 by sam at sam_ebb on 2006/12/05 04:37:53

	factor driver cleanup code into driver_finis

Affected files ...

.. //depot/projects/crypto/sys/opencrypto/crypto.c#3 edit

Differences ...

==== //depot/projects/crypto/sys/opencrypto/crypto.c#3 (text+ko) ====

@@ -676,6 +676,27 @@
 	return err;
 }
 
+static void
+driver_finis(struct cryptocap *cap)
+{
+	u_int32_t ses, kops;
+
+	CRYPTO_DRIVER_ASSERT();
+
+	ses = cap->cc_sessions;
+	kops = cap->cc_koperations;
+	bzero(cap, sizeof(*cap));
+	if (ses != 0 || kops != 0) {
+		/*
+		 * If there are pending sessions,
+		 * just mark as invalid.
+		 */
+		cap->cc_flags |= CRYPTOCAP_F_CLEANUP;
+		cap->cc_sessions = ses;
+		cap->cc_koperations = kops;
+	}
+}
+
 /*
  * Unregister a crypto driver. If there are pending sessions using it,
  * leave enough information around so that subsequent calls using those
@@ -686,7 +707,6 @@
 crypto_unregister(u_int32_t driverid, int alg)
 {
 	struct cryptocap *cap;
-	u_int32_t ses, kops;
 	int i, err;
 
 	CRYPTO_DRIVER_LOCK();
@@ -703,20 +723,8 @@
 			if (cap->cc_alg[i] != 0)
 				break;
 
-		if (i == CRYPTO_ALGORITHM_MAX + 1) {
-			ses = cap->cc_sessions;
-			kops = cap->cc_koperations;
-			bzero(cap, sizeof(*cap));
-			if (ses != 0 || kops != 0) {
-				/*
-				 * If there are pending sessions,
-				 * just mark as invalid.
-				 */
-				cap->cc_flags |= CRYPTOCAP_F_CLEANUP;
-				cap->cc_sessions = ses;
-				cap->cc_koperations = kops;
-			}
-		}
+		if (i == CRYPTO_ALGORITHM_MAX + 1)
+			driver_finis(cap);
 		err = 0;
 	} else
 		err = EINVAL;
@@ -736,28 +744,13 @@
 crypto_unregister_all(u_int32_t driverid)
 {
 	struct cryptocap *cap;
-	u_int32_t ses, kops;
-	int i, err;
+	int err;
 
 	CRYPTO_DRIVER_LOCK();
 
 	cap = crypto_checkdriver(driverid);
 	if (cap != NULL) {
-		for (i = CRYPTO_ALGORITHM_MIN; i <= CRYPTO_ALGORITHM_MAX; i++) {
-			cap->cc_alg[i] = 0;
-			cap->cc_max_op_len[i] = 0;
-		}
-		ses = cap->cc_sessions;
-		kops = cap->cc_koperations;
-		bzero(cap, sizeof(*cap));
-		if (ses != 0 || kops != 0) {
-			/*
-			 * If there are pending sessions, just mark as invalid.
-			 */
-			cap->cc_flags |= CRYPTOCAP_F_CLEANUP;
-			cap->cc_sessions = ses;
-			cap->cc_koperations = kops;
-		}
+		driver_finis(cap);
 		err = 0;
 	} else
 		err = EINVAL;


More information about the p4-projects mailing list