svn commit: r214225 - head/sys/geom/eli

Pawel Jakub Dawidek pjd at FreeBSD.org
Fri Oct 22 22:13:12 UTC 2010


Author: pjd
Date: Fri Oct 22 22:13:11 2010
New Revision: 214225
URL: http://svn.freebsd.org/changeset/base/214225

Log:
  Move sc_akeyctx and sc_ivctx initialization to the g_eli_mkey_propagate()
  function which eliminates code duplication and will ensure proper order
  of operation.

Modified:
  head/sys/geom/eli/g_eli.c
  head/sys/geom/eli/g_eli_ctl.c
  head/sys/geom/eli/g_eli_key.c

Modified: head/sys/geom/eli/g_eli.c
==============================================================================
--- head/sys/geom/eli/g_eli.c	Fri Oct 22 21:38:56 2010	(r214224)
+++ head/sys/geom/eli/g_eli.c	Fri Oct 22 22:13:11 2010	(r214225)
@@ -817,30 +817,6 @@ g_eli_create(struct gctl_req *req, struc
 	 */
 	g_eli_mkey_propagate(sc, mkey);
 	sc->sc_ekeylen = md->md_keylen;
-	if (sc->sc_flags & G_ELI_FLAG_AUTH) {
-		/*
-		 * Precalculate SHA256 for HMAC key generation.
-		 * This is expensive operation and we can do it only once now or
-		 * for every access to sector, so now will be much better.
-		 */
-		SHA256_Init(&sc->sc_akeyctx);
-		SHA256_Update(&sc->sc_akeyctx, sc->sc_akey,
-		    sizeof(sc->sc_akey));
-	}
-	/*
-	 * Precalculate SHA256 for IV generation.
-	 * This is expensive operation and we can do it only once now or for
-	 * every access to sector, so now will be much better.
-	 */
-	switch (sc->sc_ealgo) {
-	case CRYPTO_AES_XTS:
-		break;
-	default:
-		SHA256_Init(&sc->sc_ivctx);
-		SHA256_Update(&sc->sc_ivctx, sc->sc_ivkey,
-		    sizeof(sc->sc_ivkey));
-		break;
-	}
 
 	LIST_INIT(&sc->sc_workers);
 

Modified: head/sys/geom/eli/g_eli_ctl.c
==============================================================================
--- head/sys/geom/eli/g_eli_ctl.c	Fri Oct 22 21:38:56 2010	(r214224)
+++ head/sys/geom/eli/g_eli_ctl.c	Fri Oct 22 22:13:11 2010	(r214225)
@@ -882,26 +882,10 @@ g_eli_ctl_resume(struct gctl_req *req, s
 	mtx_lock(&sc->sc_queue_mtx);
 	/* Restore sc_mkey, sc_ekeys, sc_akey and sc_ivkey. */
 	g_eli_mkey_propagate(sc, mkey);
-	bzero(mkey, sizeof(mkey));
-	bzero(&md, sizeof(md));
-	/* Restore sc_akeyctx. */
-	if (sc->sc_flags & G_ELI_FLAG_AUTH) {
-		SHA256_Init(&sc->sc_akeyctx);
-		SHA256_Update(&sc->sc_akeyctx, sc->sc_akey,
-		    sizeof(sc->sc_akey));
-	}
-	/* Restore sc_ivctx. */
-	switch (sc->sc_ealgo) {
-	case CRYPTO_AES_XTS:
-		break;
-	default:
-		SHA256_Init(&sc->sc_ivctx);
-		SHA256_Update(&sc->sc_ivctx, sc->sc_ivkey,
-		    sizeof(sc->sc_ivkey));
-		break;
-	}
 	sc->sc_flags &= ~G_ELI_FLAG_SUSPEND;
 	mtx_unlock(&sc->sc_queue_mtx);
+	bzero(mkey, sizeof(mkey));
+	bzero(&md, sizeof(md));
 	G_ELI_DEBUG(1, "Resumed %s.", pp->name);
 	wakeup(sc);
 }

Modified: head/sys/geom/eli/g_eli_key.c
==============================================================================
--- head/sys/geom/eli/g_eli_key.c	Fri Oct 22 21:38:56 2010	(r214224)
+++ head/sys/geom/eli/g_eli_key.c	Fri Oct 22 22:13:11 2010	(r214225)
@@ -264,5 +264,30 @@ g_eli_mkey_propagate(struct g_eli_softc 
 		/* Generate all encryption keys. */
 		g_eli_ekeys_generate(sc);
 	}
+
+	if (sc->sc_flags & G_ELI_FLAG_AUTH) {
+		/*
+		 * Precalculate SHA256 for HMAC key generation.
+		 * This is expensive operation and we can do it only once now or
+		 * for every access to sector, so now will be much better.
+		 */
+		SHA256_Init(&sc->sc_akeyctx);
+		SHA256_Update(&sc->sc_akeyctx, sc->sc_akey,
+		    sizeof(sc->sc_akey));
+	}
+	/*
+	 * Precalculate SHA256 for IV generation.
+	 * This is expensive operation and we can do it only once now or for
+	 * every access to sector, so now will be much better.
+	 */
+	switch (sc->sc_ealgo) {
+	case CRYPTO_AES_XTS:
+		break;
+	default:
+		SHA256_Init(&sc->sc_ivctx);
+		SHA256_Update(&sc->sc_ivctx, sc->sc_ivkey,
+		    sizeof(sc->sc_ivkey));
+		break;
+	}
 }
 #endif


More information about the svn-src-head mailing list