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