Commit ae5d68be authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

Pull crypto fixes from Herbert Xu:
 "This fixes the following issues:

   - Missing ULL suffixes for 64-bit constants in sha3.
   - Two caam AEAD regressions.
   - Bogus setkey hooks in non-hmac caam hashes.
   - Missing kbuild dependency for powerpc crc32c"

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: caam - fix non-hmac hashes
  crypto: powerpc - CRYPT_CRC32C_VPMSUM should depend on ALTIVEC
  crypto: caam - defer aead_set_sh_desc in case of zero authsize
  crypto: caam - fix echainiv(authenc) encrypt shared descriptor
  crypto: sha3 - Add missing ULL suffixes for 64-bit constants
parents c39378fc a0118c8b
...@@ -439,7 +439,7 @@ config CRYPTO_CRC32C_INTEL ...@@ -439,7 +439,7 @@ config CRYPTO_CRC32C_INTEL
config CRYPT_CRC32C_VPMSUM config CRYPT_CRC32C_VPMSUM
tristate "CRC32c CRC algorithm (powerpc64)" tristate "CRC32c CRC algorithm (powerpc64)"
depends on PPC64 depends on PPC64 && ALTIVEC
select CRYPTO_HASH select CRYPTO_HASH
select CRC32 select CRC32
help help
......
...@@ -24,14 +24,14 @@ ...@@ -24,14 +24,14 @@
#define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y)))) #define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y))))
static const u64 keccakf_rndc[24] = { static const u64 keccakf_rndc[24] = {
0x0000000000000001, 0x0000000000008082, 0x800000000000808a, 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL,
0x8000000080008000, 0x000000000000808b, 0x0000000080000001, 0x8000000080008000ULL, 0x000000000000808bULL, 0x0000000080000001ULL,
0x8000000080008081, 0x8000000000008009, 0x000000000000008a, 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008aULL,
0x0000000000000088, 0x0000000080008009, 0x000000008000000a, 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000aULL,
0x000000008000808b, 0x800000000000008b, 0x8000000000008089, 0x000000008000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL,
0x8000000000008003, 0x8000000000008002, 0x8000000000000080, 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,
0x000000000000800a, 0x800000008000000a, 0x8000000080008081, 0x000000000000800aULL, 0x800000008000000aULL, 0x8000000080008081ULL,
0x8000000000008080, 0x0000000080000001, 0x8000000080008008 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL
}; };
static const int keccakf_rotc[24] = { static const int keccakf_rotc[24] = {
......
...@@ -441,6 +441,9 @@ static int aead_set_sh_desc(struct crypto_aead *aead) ...@@ -441,6 +441,9 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
OP_ALG_AAI_CTR_MOD128); OP_ALG_AAI_CTR_MOD128);
const bool is_rfc3686 = alg->caam.rfc3686; const bool is_rfc3686 = alg->caam.rfc3686;
if (!ctx->authsize)
return 0;
/* NULL encryption / decryption */ /* NULL encryption / decryption */
if (!ctx->enckeylen) if (!ctx->enckeylen)
return aead_null_set_sh_desc(aead); return aead_null_set_sh_desc(aead);
...@@ -614,7 +617,7 @@ static int aead_set_sh_desc(struct crypto_aead *aead) ...@@ -614,7 +617,7 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
keys_fit_inline = true; keys_fit_inline = true;
/* aead_givencrypt shared descriptor */ /* aead_givencrypt shared descriptor */
desc = ctx->sh_desc_givenc; desc = ctx->sh_desc_enc;
/* Note: Context registers are saved. */ /* Note: Context registers are saved. */
init_sh_desc_key_aead(desc, ctx, keys_fit_inline, is_rfc3686); init_sh_desc_key_aead(desc, ctx, keys_fit_inline, is_rfc3686);
...@@ -645,13 +648,13 @@ static int aead_set_sh_desc(struct crypto_aead *aead) ...@@ -645,13 +648,13 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
append_operation(desc, ctx->class2_alg_type | append_operation(desc, ctx->class2_alg_type |
OP_ALG_AS_INITFINAL | OP_ALG_ENCRYPT); OP_ALG_AS_INITFINAL | OP_ALG_ENCRYPT);
/* ivsize + cryptlen = seqoutlen - authsize */
append_math_sub_imm_u32(desc, REG3, SEQOUTLEN, IMM, ctx->authsize);
/* Read and write assoclen bytes */ /* Read and write assoclen bytes */
append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ); append_math_add(desc, VARSEQINLEN, ZERO, REG3, CAAM_CMD_SZ);
append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ); append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, CAAM_CMD_SZ);
/* ivsize + cryptlen = seqoutlen - authsize */
append_math_sub_imm_u32(desc, REG3, SEQOUTLEN, IMM, ctx->authsize);
/* Skip assoc data */ /* Skip assoc data */
append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF); append_seq_fifo_store(desc, 0, FIFOST_TYPE_SKIP | FIFOLDST_VLF);
...@@ -697,7 +700,7 @@ static int aead_set_sh_desc(struct crypto_aead *aead) ...@@ -697,7 +700,7 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc, ctx->sh_desc_enc_dma = dma_map_single(jrdev, desc,
desc_bytes(desc), desc_bytes(desc),
DMA_TO_DEVICE); DMA_TO_DEVICE);
if (dma_mapping_error(jrdev, ctx->sh_desc_givenc_dma)) { if (dma_mapping_error(jrdev, ctx->sh_desc_enc_dma)) {
dev_err(jrdev, "unable to map shared descriptor\n"); dev_err(jrdev, "unable to map shared descriptor\n");
return -ENOMEM; return -ENOMEM;
} }
......
...@@ -1898,6 +1898,7 @@ caam_hash_alloc(struct caam_hash_template *template, ...@@ -1898,6 +1898,7 @@ caam_hash_alloc(struct caam_hash_template *template,
template->name); template->name);
snprintf(alg->cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s", snprintf(alg->cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s",
template->driver_name); template->driver_name);
t_alg->ahash_alg.setkey = NULL;
} }
alg->cra_module = THIS_MODULE; alg->cra_module = THIS_MODULE;
alg->cra_init = caam_hash_cra_init; alg->cra_init = caam_hash_cra_init;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment