]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Dec 2012 20:35:19 +0000 (12:35 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Dec 2012 20:35:19 +0000 (12:35 -0800)
Pull crypto update from Herbert Xu:

 - Added aesni/avx/x86_64 implementations for camellia.

 - Optimised AVX code for cast5/serpent/twofish/cast6.

 - Fixed vmac bug with unaligned input.

 - Allow compression algorithms in FIPS mode.

 - Optimised crc32c implementation for Intel.

 - Misc fixes.

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (32 commits)
  crypto: caam - Updated SEC-4.0 device tree binding for ERA information.
  crypto: testmgr - remove superfluous initializers for xts(aes)
  crypto: testmgr - allow compression algs in fips mode
  crypto: testmgr - add larger crc32c test vector to test FPU path in crc32c_intel
  crypto: testmgr - clean alg_test_null entries in alg_test_descs[]
  crypto: testmgr - remove fips_allowed flag from camellia-aesni null-tests
  crypto: cast5/cast6 - move lookup tables to shared module
  padata: use __this_cpu_read per-cpu helper
  crypto: s5p-sss - Fix compilation error
  crypto: picoxcell - Add terminating entry for platform_device_id table
  crypto: omap-aes - select BLKCIPHER2
  crypto: camellia - add AES-NI/AVX/x86_64 assembler implementation of camellia cipher
  crypto: camellia-x86_64 - share common functions and move structures and function definitions to header file
  crypto: tcrypt - add async speed test for camellia cipher
  crypto: tegra-aes - fix error-valued pointer dereference
  crypto: tegra - fix missing unlock on error case
  crypto: cast5/avx - avoid using temporary stack buffers
  crypto: serpent/avx - avoid using temporary stack buffers
  crypto: twofish/avx - avoid using temporary stack buffers
  crypto: cast6/avx - avoid using temporary stack buffers
  ...

1  2 
drivers/crypto/Kconfig
drivers/crypto/tegra-aes.c

diff --combined drivers/crypto/Kconfig
index f6644f59fd9da1042cec58487791f689d7ed127a,ac7235ac43d251303e5b09989a20b7edbfe99189..87ec4d027c253714d19bf076e084711788ac9e13
@@@ -224,7 -224,7 +224,7 @@@ config CRYPTO_DEV_TALITO
  
  config CRYPTO_DEV_IXP4XX
        tristate "Driver for IXP4xx crypto hardware acceleration"
 -      depends on ARCH_IXP4XX
 +      depends on ARCH_IXP4XX && IXP4XX_QMGR && IXP4XX_NPE
        select CRYPTO_DES
        select CRYPTO_ALGAPI
        select CRYPTO_AUTHENC
@@@ -254,6 -254,7 +254,7 @@@ config CRYPTO_DEV_OMAP_AE
        tristate "Support for OMAP AES hw engine"
        depends on ARCH_OMAP2 || ARCH_OMAP3
        select CRYPTO_AES
+       select CRYPTO_BLKCIPHER2
        help
          OMAP processors have AES module accelerator. Select this if you
          want to use the OMAP module for AES algorithms.
index e69f3bc473bede522aa7c31ead313402d8e3640c,93059dc591aa40c1b219c73f71b72bc3a73f3c2d..eb32fd8cad147eacbaaf115516945736fa37ad7d
@@@ -41,6 -41,8 +41,6 @@@
  #include <linux/completion.h>
  #include <linux/workqueue.h>
  
 -#include <mach/clk.h>
 -
  #include <crypto/scatterwalk.h>
  #include <crypto/aes.h>
  #include <crypto/internal/rng.h>
@@@ -672,8 -674,10 +672,10 @@@ static int tegra_aes_get_random(struct 
        mutex_lock(&aes_lock);
  
        ret = clk_prepare_enable(dd->aes_clk);
-       if (ret)
+       if (ret) {
+               mutex_unlock(&aes_lock);
                return ret;
+       }
  
        ctx->dd = dd;
        dd->ctx = ctx;
@@@ -757,8 -761,10 +759,10 @@@ static int tegra_aes_rng_reset(struct c
        dd->flags = FLAGS_ENCRYPT | FLAGS_RNG;
  
        ret = clk_prepare_enable(dd->aes_clk);
-       if (ret)
+       if (ret) {
+               mutex_unlock(&aes_lock);
                return ret;
+       }
  
        aes_set_key(dd);
  
@@@ -1029,7 -1035,7 +1033,7 @@@ out
        if (dd->buf_out)
                dma_free_coherent(dev, AES_HW_DMA_BUFFER_SIZE_BYTES,
                        dd->buf_out, dd->dma_buf_out);
-       if (IS_ERR(dd->aes_clk))
+       if (!IS_ERR(dd->aes_clk))
                clk_put(dd->aes_clk);
        if (aes_wq)
                destroy_workqueue(aes_wq);