From owner-p4-projects@FreeBSD.ORG Sun Nov 16 04:00:57 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F92CEF7; Sun, 16 Nov 2014 04:00:57 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 30CC4EF5 for ; Sun, 16 Nov 2014 04:00:57 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 04712C7 for ; Sun, 16 Nov 2014 04:00:57 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.9/8.14.9) with ESMTP id sAG40un6016829 for ; Sun, 16 Nov 2014 04:00:56 GMT (envelope-from jmg@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.9/8.14.9/Submit) id sAG40uqU016826 for perforce@freebsd.org; Sun, 16 Nov 2014 04:00:56 GMT (envelope-from jmg@freebsd.org) Date: Sun, 16 Nov 2014 04:00:56 GMT Message-Id: <201411160400.sAG40uqU016826@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jmg@freebsd.org using -f From: John-Mark Gurney Subject: PERFORCE change 1202863 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.18-1 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Nov 2014 04:00:57 -0000 http://p4web.freebsd.org/@@1202863?ac=10 Change 1202863 by jmg@jmg_carbon2 on 2014/11/16 04:00:03 add a lock to protect aesni session state... This will need to be figured out how to handle this better for now.. but we can't share cpu context between sessions... I'm not really sure how the code on HEAD works w/o this without hitting the same issue... Sponsored by: FreeBSD Foundation Sponsored by: Netgate Affected files ... .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#14 edit .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.h#4 edit Differences ... ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#14 (text+ko) ==== @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -140,6 +141,7 @@ while ((ses = TAILQ_FIRST(&sc->sessions)) != NULL) { TAILQ_REMOVE(&sc->sessions, ses, next); fpu_kern_free_ctx(ses->fpu_ctx); + mtx_destroy(&ses->lck); free(ses, M_AESNI); } rw_wunlock(&sc->lock); @@ -213,6 +215,7 @@ rw_wunlock(&sc->lock); return (ENOMEM); } + mtx_init(&ses->lck, "aesni session", NULL, MTX_DEF); ses->id = sc->sid++; } else { TAILQ_REMOVE(&sc->sessions, ses, next); @@ -240,13 +243,16 @@ { struct fpu_kern_ctx *ctx; uint32_t sid; + struct mtx lck; sid = ses->id; + lck = ses->lck; TAILQ_REMOVE(&sc->sessions, ses, next); ctx = ses->fpu_ctx; - bzero(ses, sizeof(*ses)); + *ses = (struct aesni_session){}; ses->id = sid; ses->fpu_ctx = ctx; + ses->lck = lck; TAILQ_INSERT_HEAD(&sc->sessions, ses, next); } @@ -433,13 +439,17 @@ int error; td = curthread; + mtx_lock(&ses->lck); error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL | FPU_KERN_KTHR); - if (error != 0) + if (error != 0) { + mtx_unlock(&ses->lck); return (error); + } error = aesni_cipher_setup_common(ses, encini->cri_key, encini->cri_klen); fpu_kern_leave(td, ses->fpu_ctx); + mtx_unlock(&ses->lck); return (error); } @@ -478,6 +488,7 @@ } td = curthread; + mtx_lock(&ses->lck); error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL | FPU_KERN_KTHR); if (error != 0) @@ -585,6 +596,7 @@ out: fpu_kern_leave(td, ses->fpu_ctx); + mtx_unlock(&ses->lck); out1: if (allocated) { bzero(buf, enccrd->crd_len); ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.h#4 (text+ko) ==== @@ -66,6 +66,7 @@ uint32_t id; TAILQ_ENTRY(aesni_session) next; struct fpu_kern_ctx *fpu_ctx; + struct mtx lck; }; /* From owner-p4-projects@FreeBSD.ORG Sun Nov 16 05:40:46 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C1300E6B; Sun, 16 Nov 2014 05:40:46 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 83658E69 for ; Sun, 16 Nov 2014 05:40:46 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 70671B18 for ; Sun, 16 Nov 2014 05:40:46 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.9/8.14.9) with ESMTP id sAG5ek15043446 for ; Sun, 16 Nov 2014 05:40:46 GMT (envelope-from jmg@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.9/8.14.9/Submit) id sAG5ek3P043443 for perforce@freebsd.org; Sun, 16 Nov 2014 05:40:46 GMT (envelope-from jmg@freebsd.org) Date: Sun, 16 Nov 2014 05:40:46 GMT Message-Id: <201411160540.sAG5ek3P043443@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jmg@freebsd.org using -f From: John-Mark Gurney Subject: PERFORCE change 1202876 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.18-1 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Nov 2014 05:40:47 -0000 http://p4web.freebsd.org/@@1202876?ac=10 Change 1202876 by jmg@jmg_carbon2 on 2014/11/16 05:40:36 for some reason, when I access mbuf directly, things don't work... more investigation is needed... Simplify how IV's are calculated.. There needs to be more work in this area... Sponsored by: FreeBSD Foundation Sponsored by: Netgate Affected files ... .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#15 edit Differences ... ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#15 (text+ko) ==== @@ -382,6 +382,7 @@ uint8_t *addr; if (crp->crp_flags & CRYPTO_F_IMBUF) { + goto alloc; m = (struct mbuf *)crp->crp_buf; if (m->m_next != NULL) goto alloc; @@ -505,7 +506,7 @@ switch (enccrd->crd_alg) { case CRYPTO_AES_CBC: case CRYPTO_AES_ICM: - ivlen = 16; + ivlen = AES_BLOCK_LEN; break; case CRYPTO_AES_XTS: ivlen = 8; @@ -517,21 +518,13 @@ /* Setup ses->iv */ bzero(ses->iv, sizeof ses->iv); - if (encflag) { - if ((enccrd->crd_flags & CRD_F_IV_EXPLICIT) != 0) - bcopy(enccrd->crd_iv, ses->iv, ivlen); - else - arc4rand(ses->iv, ivlen, 0); - if ((enccrd->crd_flags & CRD_F_IV_PRESENT) == 0) - crypto_copyback(crp->crp_flags, crp->crp_buf, - enccrd->crd_inject, ivlen, ses->iv); - } else { - if ((enccrd->crd_flags & CRD_F_IV_EXPLICIT) != 0) - bcopy(enccrd->crd_iv, ses->iv, ivlen); - else - crypto_copydata(crp->crp_flags, crp->crp_buf, - enccrd->crd_inject, ivlen, ses->iv); - } + if ((enccrd->crd_flags & CRD_F_IV_EXPLICIT) != 0) + bcopy(enccrd->crd_iv, ses->iv, ivlen); + else if (encflag && ((enccrd->crd_flags & CRD_F_IV_PRESENT) != 0)) + arc4rand(ses->iv, ivlen, 0); + else + crypto_copydata(crp->crp_flags, crp->crp_buf, + enccrd->crd_inject, ivlen, ses->iv); if (authcrd != NULL && !encflag) crypto_copydata(crp->crp_flags, crp->crp_buf, From owner-p4-projects@FreeBSD.ORG Sun Nov 16 06:01:09 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 17B193B2; Sun, 16 Nov 2014 06:01:09 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CCAD43B0 for ; Sun, 16 Nov 2014 06:01:08 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B9E87CB6 for ; Sun, 16 Nov 2014 06:01:08 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.9/8.14.9) with ESMTP id sAG618dC048901 for ; Sun, 16 Nov 2014 06:01:08 GMT (envelope-from jmg@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.9/8.14.9/Submit) id sAG618Yp048898 for perforce@freebsd.org; Sun, 16 Nov 2014 06:01:08 GMT (envelope-from jmg@freebsd.org) Date: Sun, 16 Nov 2014 06:01:08 GMT Message-Id: <201411160601.sAG618Yp048898@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jmg@freebsd.org using -f From: John-Mark Gurney Subject: PERFORCE change 1202878 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.18-1 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Nov 2014 06:01:09 -0000 http://p4web.freebsd.org/@@1202878?ac=10 Change 1202878 by jmg@jmg_carbon2 on 2014/11/16 06:00:34 reenable avoid allocation of memory for single mbufs... I wasn't taking into account the crd_skip... All of these need to take this into account, so pull it out of the set of if statements.. Sponsored by: FreeBSD Foundation Sponsored by: Netgate Affected files ... .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#16 edit Differences ... ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#16 (text+ko) ==== @@ -382,7 +382,6 @@ uint8_t *addr; if (crp->crp_flags & CRYPTO_F_IMBUF) { - goto alloc; m = (struct mbuf *)crp->crp_buf; if (m->m_next != NULL) goto alloc; @@ -392,10 +391,11 @@ if (uio->uio_iovcnt != 1) goto alloc; iov = uio->uio_iov; - addr = (uint8_t *)iov->iov_base + enccrd->crd_skip; + addr = (uint8_t *)iov->iov_base; } else addr = (uint8_t *)crp->crp_buf; *allocated = 0; + addr += enccrd->crd_skip; return (addr); alloc: From owner-p4-projects@FreeBSD.ORG Wed Nov 19 01:09:01 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 68D12262; Wed, 19 Nov 2014 01:09:01 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0F61F260 for ; Wed, 19 Nov 2014 01:09:01 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E5CFDECD for ; Wed, 19 Nov 2014 01:09:00 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.9/8.14.9) with ESMTP id sAJ190jn087386 for ; Wed, 19 Nov 2014 01:09:00 GMT (envelope-from jmg@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.9/8.14.9/Submit) id sAJ1902f087383 for perforce@freebsd.org; Wed, 19 Nov 2014 01:09:00 GMT (envelope-from jmg@freebsd.org) Date: Wed, 19 Nov 2014 01:09:00 GMT Message-Id: <201411190109.sAJ1902f087383@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jmg@freebsd.org using -f From: John-Mark Gurney Subject: PERFORCE change 1202972 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.18-1 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Nov 2014 01:09:01 -0000 http://p4web.freebsd.org/@@1202972?ac=10 Change 1202972 by jmg@jmg_carbon2 on 2014/11/19 01:08:06 relocate all the test vectors to the soon to be commited nist-kat port... update runtests.sh so that it will skip the tests, but output a notice if the package is not installed... Sponsored by: FreeBSD Foundation Sponsored by: Netgate Affected files ... .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCGFSbox128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCGFSbox192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCGFSbox256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCKeySbox128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCKeySbox192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCKeySbox256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarKey128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarKey192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarKey256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarTxt128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarTxt192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/CBCVarTxt256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/HMAC.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/Makefile#4 edit .. //depot/projects/opencrypto/tests/sys/opencrypto/TCBCinvperm.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/TCBCpermop.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/TCBCsubtab.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/TCBCvarkey.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/TCBCvartext.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/XTSGenAES128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/XTSGenAES256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/cryptotest.py#4 edit .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmDecrypt128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmDecrypt192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmDecrypt256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmEncryptExtIV128.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmEncryptExtIV192.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/gcmEncryptExtIV256.rsp#2 delete .. //depot/projects/opencrypto/tests/sys/opencrypto/runtests.sh#3 edit Differences ... ==== //depot/projects/opencrypto/tests/sys/opencrypto/Makefile#4 (text+ko) ==== @@ -11,31 +11,4 @@ FILESDIR= ${TESTSDIR} FILES= ${PYMODULES} -FILES+= CBCGFSbox128.rsp -FILES+= CBCGFSbox192.rsp -FILES+= CBCGFSbox256.rsp -FILES+= CBCKeySbox128.rsp -FILES+= CBCKeySbox192.rsp -FILES+= CBCKeySbox256.rsp -FILES+= CBCVarKey128.rsp -FILES+= CBCVarKey192.rsp -FILES+= CBCVarKey256.rsp -FILES+= CBCVarTxt128.rsp -FILES+= CBCVarTxt192.rsp -FILES+= CBCVarTxt256.rsp -FILES+= HMAC.rsp -FILES+= TCBCinvperm.rsp -FILES+= TCBCpermop.rsp -FILES+= TCBCsubtab.rsp -FILES+= TCBCvarkey.rsp -FILES+= TCBCvartext.rsp -FILES+= XTSGenAES128.rsp -FILES+= XTSGenAES256.rsp -FILES+= gcmDecrypt128.rsp -FILES+= gcmDecrypt192.rsp -FILES+= gcmDecrypt256.rsp -FILES+= gcmEncryptExtIV128.rsp -FILES+= gcmEncryptExtIV192.rsp -FILES+= gcmEncryptExtIV256.rsp - .include ==== //depot/projects/opencrypto/tests/sys/opencrypto/cryptotest.py#4 (text+ko) ==== @@ -2,11 +2,17 @@ import cryptodev import itertools +import os import struct import unittest from cryptodev import * from glob import iglob +katdir = '/usr/local/share/nist-kat' + +def katg(base, glob): + return iglob(os.path.join(katdir, base, glob)) + aesmodules = [ 'cryptosoft0', 'aesni0', ] desmodules = [ 'cryptosoft0', ] shamodules = [ 'cryptosoft0', ] @@ -23,18 +29,18 @@ ############### @unittest.skipIf(cname not in aesmodules, 'skipping AES on %s' % `cname`) def test_xts(self): - for i in iglob('XTS*.rsp'): + for i in katg('XTSTestVectors/format tweak value input - data unit seq no', '*.rsp'): self.runXTS(i, cryptodev.CRYPTO_AES_XTS) def test_cbc(self): - for i in iglob('CBC[GKV]*.rsp'): + for i in katg('KAT_AES', 'CBC[GKV]*.rsp'): self.runCBC(i) def test_gcm(self): - for i in iglob('gcmEncrypt*'): + for i in katg('gcmtestvectors', 'gcmEncrypt*'): self.runGCM(i, 'ENCRYPT') - for i in iglob('gcmDecrypt*'): + for i in katg('gcmtestvectors', 'gcmDecrypt*'): self.runGCM(i, 'DECRYPT') _gmacsizes = { 32: cryptodev.CRYPTO_AES_256_NIST_GMAC, @@ -158,7 +164,7 @@ ############### @unittest.skipIf(cname not in desmodules, 'skipping DES on %s' % `cname`) def test_tdes(self): - for i in iglob('TCBC[a-z]*.rsp'): + for i in katg('KAT_TDES', 'TCBC[a-z]*.rsp'): self.runTDES(i) def runTDES(self, fname): @@ -200,7 +206,8 @@ # self.runSHA(i) def test_sha1hmac(self): - self.runSHA1HMAC('HMAC.rsp') + for i in katg('hmactestvectors', 'HMAC.rsp'): + self.runSHA1HMAC(i) def runSHA1HMAC(self, fname): for bogusmode, lines in cryptodev.KATParser(fname, ==== //depot/projects/opencrypto/tests/sys/opencrypto/runtests.sh#3 (text+ko) ==== @@ -2,6 +2,11 @@ set -e +if [ ! -d /usr/local/share/nist-kat ]; then + echo 'Skipping, nist-kat package not installed for test vectors.' + exit 0 +fi + if kldload aesni 2>/dev/null; then unloadaesni=1 fi @@ -14,8 +19,7 @@ oldcdas=$(sysctl -e kern.cryptodevallowsoft) sysctl kern.cryptodevallowsoft=1 -cd "$(dirname "$0")" -python cryptotest.py +python $(dirname $0)/cryptotest.py sysctl "$oldcdas" From owner-p4-projects@FreeBSD.ORG Wed Nov 19 01:10:02 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8845634D; Wed, 19 Nov 2014 01:10:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4B60434B for ; Wed, 19 Nov 2014 01:10:02 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1DF96ED5 for ; Wed, 19 Nov 2014 01:10:02 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.9/8.14.9) with ESMTP id sAJ1A1T3087532 for ; Wed, 19 Nov 2014 01:10:01 GMT (envelope-from jmg@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.9/8.14.9/Submit) id sAJ1A1jK087529 for perforce@freebsd.org; Wed, 19 Nov 2014 01:10:01 GMT (envelope-from jmg@freebsd.org) Date: Wed, 19 Nov 2014 01:10:01 GMT Message-Id: <201411190110.sAJ1A1jK087529@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jmg@freebsd.org using -f From: John-Mark Gurney Subject: PERFORCE change 1202973 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.18-1 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Nov 2014 01:10:02 -0000 http://p4web.freebsd.org/@@1202973?ac=10 Change 1202973 by jmg@jmg_carbon2 on 2014/11/19 01:09:42 drop the mtx lock.. We need to fix this another way, that is better... adding the lock makes geli slower, and people have already lived w/ a broken IPsec... It won't be much longer to a better fix is ready... They can wait for a bit longer.. Sponsored by: FreeBSD Foundation Sponsored by: Netgate Affected files ... .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#17 edit .. //depot/projects/opencrypto/sys/crypto/aesni/aesni.h#5 edit Differences ... ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.c#17 (text+ko) ==== @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -141,7 +140,6 @@ while ((ses = TAILQ_FIRST(&sc->sessions)) != NULL) { TAILQ_REMOVE(&sc->sessions, ses, next); fpu_kern_free_ctx(ses->fpu_ctx); - mtx_destroy(&ses->lck); free(ses, M_AESNI); } rw_wunlock(&sc->lock); @@ -215,7 +213,6 @@ rw_wunlock(&sc->lock); return (ENOMEM); } - mtx_init(&ses->lck, "aesni session", NULL, MTX_DEF); ses->id = sc->sid++; } else { TAILQ_REMOVE(&sc->sessions, ses, next); @@ -243,16 +240,13 @@ { struct fpu_kern_ctx *ctx; uint32_t sid; - struct mtx lck; sid = ses->id; - lck = ses->lck; TAILQ_REMOVE(&sc->sessions, ses, next); ctx = ses->fpu_ctx; *ses = (struct aesni_session){}; ses->id = sid; ses->fpu_ctx = ctx; - ses->lck = lck; TAILQ_INSERT_HEAD(&sc->sessions, ses, next); } @@ -440,17 +434,13 @@ int error; td = curthread; - mtx_lock(&ses->lck); error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL | FPU_KERN_KTHR); - if (error != 0) { - mtx_unlock(&ses->lck); + if (error != 0) return (error); - } error = aesni_cipher_setup_common(ses, encini->cri_key, encini->cri_klen); fpu_kern_leave(td, ses->fpu_ctx); - mtx_unlock(&ses->lck); return (error); } @@ -489,7 +479,6 @@ } td = curthread; - mtx_lock(&ses->lck); error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL | FPU_KERN_KTHR); if (error != 0) @@ -589,7 +578,6 @@ out: fpu_kern_leave(td, ses->fpu_ctx); - mtx_unlock(&ses->lck); out1: if (allocated) { bzero(buf, enccrd->crd_len); ==== //depot/projects/opencrypto/sys/crypto/aesni/aesni.h#5 (text+ko) ==== @@ -66,7 +66,6 @@ uint32_t id; TAILQ_ENTRY(aesni_session) next; struct fpu_kern_ctx *fpu_ctx; - struct mtx lck; }; /*