Re: [PATCH 5/6] crypto: skcipher - remove useless setting of type flags

2018-06-30 Thread Gilad Ben-Yossef
On Sun, Jul 1, 2018 at 1:16 AM, Eric Biggers  wrote:
> From: Eric Biggers 
>
> Some skcipher algorithms set .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER.  But
> this is redundant with the C structure type ('struct skcipher_alg'), and
> crypto_register_skcipher() already sets the type flag automatically,
> clearing any type flag that was already there.  Apparently the useless
> assignment has just been copy+pasted around.
>
> So, remove the useless assignment from all the skcipher algorithms.
>
> This patch shouldn't change any actual behavior.
>
> Signed-off-by: Eric Biggers 
> ---

>  drivers/crypto/ccree/cc_cipher.c   |  3 +--

Acked-by: Gilad Ben-Yossef 


Re: [PATCH 3/6] crypto: ahash - remove useless setting of cra_type

2018-06-30 Thread Gilad Ben-Yossef
On Sun, Jul 1, 2018 at 1:16 AM, Eric Biggers  wrote:
> From: Eric Biggers 
>
> Some ahash algorithms set .cra_type = _ahash_type.  But this is
> redundant with the C structure type ('struct ahash_alg'), and
> crypto_register_ahash() already sets the .cra_type automatically.
> Apparently the useless assignment has just been copy+pasted around.
>
> So, remove the useless assignment from all the ahash algorithms.
>
> This patch shouldn't change any actual behavior.
>
> Signed-off-by: Eric Biggers 
> ---

>  drivers/crypto/ccree/cc_hash.c | 1 -

Acked-by: Gilad Ben-Yossef 


Re: [PATCH 2/6] crypto: ahash - remove useless setting of type flags

2018-06-30 Thread Gilad Ben-Yossef
On Sun, Jul 1, 2018 at 1:16 AM, Eric Biggers  wrote:
> From: Eric Biggers 
>
> Many ahash algorithms set .cra_flags = CRYPTO_ALG_TYPE_AHASH.  But this
> is redundant with the C structure type ('struct ahash_alg'), and
> crypto_register_ahash() already sets the type flag automatically,
> clearing any type flag that was already there.  Apparently the useless
> assignment has just been copy+pasted around.
>
> So, remove the useless assignment from all the ahash algorithms.
>
> This patch shouldn't change any actual behavior.
>
> Signed-off-by: Eric Biggers 
> ---

>  drivers/crypto/ccree/cc_hash.c |  3 +-

Acked-by: Gilad Ben-Yossef 

-- 
Gilad Ben-Yossef
Chief Coffee Drinker

values of β will give rise to dom!
...


[PATCH 6/6] crypto: remove redundant type flags from tfm allocation

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Some crypto API users allocating a tfm with crypto_alloc_$FOO() are also
specifying the type flags for $FOO, e.g. crypto_alloc_shash() with
CRYPTO_ALG_TYPE_SHASH.  But, that's redundant since the crypto API will
override any specified type flag/mask with the correct ones.

So, remove the unneeded flags.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 Documentation/crypto/api-samples.rst | 2 +-
 drivers/crypto/atmel-sha.c   | 4 +---
 drivers/crypto/inside-secure/safexcel_hash.c | 3 +--
 drivers/crypto/marvell/hash.c| 3 +--
 drivers/crypto/qce/sha.c | 3 +--
 security/keys/dh.c   | 2 +-
 6 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/Documentation/crypto/api-samples.rst 
b/Documentation/crypto/api-samples.rst
index 006827e30d066..0f6ca8b7261e9 100644
--- a/Documentation/crypto/api-samples.rst
+++ b/Documentation/crypto/api-samples.rst
@@ -162,7 +162,7 @@ Code Example For Use of Operational State Memory With SHASH
 char *hash_alg_name = "sha1-padlock-nano";
 int ret;
 
-alg = crypto_alloc_shash(hash_alg_name, CRYPTO_ALG_TYPE_SHASH, 0);
+alg = crypto_alloc_shash(hash_alg_name, 0, 0);
 if (IS_ERR(alg)) {
 pr_info("can't alloc alg %s\n", hash_alg_name);
 return PTR_ERR(alg);
diff --git a/drivers/crypto/atmel-sha.c b/drivers/crypto/atmel-sha.c
index 4d43081120db1..8a19df2fba6a3 100644
--- a/drivers/crypto/atmel-sha.c
+++ b/drivers/crypto/atmel-sha.c
@@ -2316,9 +2316,7 @@ struct atmel_sha_authenc_ctx 
*atmel_sha_authenc_spawn(unsigned long mode)
goto error;
}
 
-   tfm = crypto_alloc_ahash(name,
-CRYPTO_ALG_TYPE_AHASH,
-CRYPTO_ALG_TYPE_AHASH_MASK);
+   tfm = crypto_alloc_ahash(name, 0, 0);
if (IS_ERR(tfm)) {
err = PTR_ERR(tfm);
goto error;
diff --git a/drivers/crypto/inside-secure/safexcel_hash.c 
b/drivers/crypto/inside-secure/safexcel_hash.c
index 188ba0734337a..2ebf8ff710813 100644
--- a/drivers/crypto/inside-secure/safexcel_hash.c
+++ b/drivers/crypto/inside-secure/safexcel_hash.c
@@ -949,8 +949,7 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, 
unsigned int keylen,
u8 *ipad, *opad;
int ret;
 
-   tfm = crypto_alloc_ahash(alg, CRYPTO_ALG_TYPE_AHASH,
-CRYPTO_ALG_TYPE_AHASH_MASK);
+   tfm = crypto_alloc_ahash(alg, 0, 0);
if (IS_ERR(tfm))
return PTR_ERR(tfm);
 
diff --git a/drivers/crypto/marvell/hash.c b/drivers/crypto/marvell/hash.c
index e34d80b6b7e58..99ff54cc8a15e 100644
--- a/drivers/crypto/marvell/hash.c
+++ b/drivers/crypto/marvell/hash.c
@@ -1183,8 +1183,7 @@ static int mv_cesa_ahmac_setkey(const char *hash_alg_name,
u8 *opad;
int ret;
 
-   tfm = crypto_alloc_ahash(hash_alg_name, CRYPTO_ALG_TYPE_AHASH,
-CRYPTO_ALG_TYPE_AHASH_MASK);
+   tfm = crypto_alloc_ahash(hash_alg_name, 0, 0);
if (IS_ERR(tfm))
return PTR_ERR(tfm);
 
diff --git a/drivers/crypto/qce/sha.c b/drivers/crypto/qce/sha.c
index 53227d70d3970..d8a5db11b7ea1 100644
--- a/drivers/crypto/qce/sha.c
+++ b/drivers/crypto/qce/sha.c
@@ -378,8 +378,7 @@ static int qce_ahash_hmac_setkey(struct crypto_ahash *tfm, 
const u8 *key,
else
return -EINVAL;
 
-   ahash_tfm = crypto_alloc_ahash(alg_name, CRYPTO_ALG_TYPE_AHASH,
-  CRYPTO_ALG_TYPE_AHASH_MASK);
+   ahash_tfm = crypto_alloc_ahash(alg_name, 0, 0);
if (IS_ERR(ahash_tfm))
return PTR_ERR(ahash_tfm);
 
diff --git a/security/keys/dh.c b/security/keys/dh.c
index b203f7758f976..711e89d8c4153 100644
--- a/security/keys/dh.c
+++ b/security/keys/dh.c
@@ -317,7 +317,7 @@ long __keyctl_dh_compute(struct keyctl_dh_params __user 
*params,
if (ret)
goto out3;
 
-   tfm = crypto_alloc_kpp("dh", CRYPTO_ALG_TYPE_KPP, 0);
+   tfm = crypto_alloc_kpp("dh", 0, 0);
if (IS_ERR(tfm)) {
ret = PTR_ERR(tfm);
goto out3;
-- 
2.18.0



[PATCH 1/6] crypto: shash - remove useless setting of type flags

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Many shash algorithms set .cra_flags = CRYPTO_ALG_TYPE_SHASH.  But this
is redundant with the C structure type ('struct shash_alg'), and
crypto_register_shash() already sets the type flag automatically,
clearing any type flag that was already there.  Apparently the useless
assignment has just been copy+pasted around.

So, remove the useless assignment from all the shash algorithms.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 arch/arm/crypto/ghash-ce-glue.c| 2 +-
 arch/arm/crypto/sha1-ce-glue.c | 1 -
 arch/arm/crypto/sha1_glue.c| 1 -
 arch/arm/crypto/sha1_neon_glue.c   | 1 -
 arch/arm/crypto/sha2-ce-glue.c | 2 --
 arch/arm/crypto/sha256_glue.c  | 2 --
 arch/arm/crypto/sha256_neon_glue.c | 2 --
 arch/arm/crypto/sha512-glue.c  | 2 --
 arch/arm/crypto/sha512-neon-glue.c | 2 --
 arch/arm64/crypto/aes-glue.c   | 3 ---
 arch/arm64/crypto/ghash-ce-glue.c  | 1 -
 arch/arm64/crypto/sha1-ce-glue.c   | 1 -
 arch/arm64/crypto/sha2-ce-glue.c   | 2 --
 arch/arm64/crypto/sha256-glue.c| 4 
 arch/arm64/crypto/sha3-ce-glue.c   | 4 
 arch/arm64/crypto/sha512-ce-glue.c | 2 --
 arch/arm64/crypto/sha512-glue.c| 2 --
 arch/arm64/crypto/sm3-ce-glue.c| 1 -
 arch/mips/cavium-octeon/crypto/octeon-md5.c| 1 -
 arch/mips/cavium-octeon/crypto/octeon-sha1.c   | 1 -
 arch/mips/cavium-octeon/crypto/octeon-sha256.c | 2 --
 arch/mips/cavium-octeon/crypto/octeon-sha512.c | 2 --
 arch/powerpc/crypto/md5-glue.c | 1 -
 arch/powerpc/crypto/sha1-spe-glue.c| 1 -
 arch/powerpc/crypto/sha1.c | 1 -
 arch/powerpc/crypto/sha256-spe-glue.c  | 2 --
 arch/s390/crypto/ghash_s390.c  | 1 -
 arch/s390/crypto/sha1_s390.c   | 1 -
 arch/s390/crypto/sha256_s390.c | 2 --
 arch/s390/crypto/sha512_s390.c | 2 --
 arch/sparc/crypto/md5_glue.c   | 1 -
 arch/sparc/crypto/sha1_glue.c  | 1 -
 arch/sparc/crypto/sha256_glue.c| 2 --
 arch/sparc/crypto/sha512_glue.c| 2 --
 arch/x86/crypto/ghash-clmulni-intel_glue.c | 3 +--
 arch/x86/crypto/poly1305_glue.c| 1 -
 arch/x86/crypto/sha1_ssse3_glue.c  | 4 
 arch/x86/crypto/sha256_ssse3_glue.c| 8 
 arch/x86/crypto/sha512_ssse3_glue.c| 6 --
 crypto/crypto_null.c   | 1 -
 crypto/ghash-generic.c | 1 -
 crypto/md4.c   | 1 -
 crypto/md5.c   | 1 -
 crypto/poly1305_generic.c  | 1 -
 crypto/rmd128.c| 1 -
 crypto/rmd160.c| 1 -
 crypto/rmd256.c| 1 -
 crypto/rmd320.c| 1 -
 crypto/sha1_generic.c  | 1 -
 crypto/sha256_generic.c| 2 --
 crypto/sha3_generic.c  | 4 
 crypto/sha512_generic.c| 2 --
 crypto/sm3_generic.c   | 1 -
 crypto/tgr192.c| 3 ---
 crypto/wp512.c | 3 ---
 drivers/crypto/nx/nx-aes-xcbc.c| 1 -
 drivers/crypto/nx/nx-sha256.c  | 1 -
 drivers/crypto/nx/nx-sha512.c  | 1 -
 drivers/crypto/padlock-sha.c   | 8 ++--
 drivers/crypto/vmx/ghash.c | 2 +-
 drivers/staging/skein/skein_generic.c  | 3 ---
 61 files changed, 5 insertions(+), 116 deletions(-)

diff --git a/arch/arm/crypto/ghash-ce-glue.c b/arch/arm/crypto/ghash-ce-glue.c
index d9bb52cae2ac9..f93c0761929d5 100644
--- a/arch/arm/crypto/ghash-ce-glue.c
+++ b/arch/arm/crypto/ghash-ce-glue.c
@@ -152,7 +152,7 @@ static struct shash_alg ghash_alg = {
.cra_name   = "__ghash",
.cra_driver_name = "__driver-ghash-ce",
.cra_priority   = 0,
-   .cra_flags  = CRYPTO_ALG_TYPE_SHASH | CRYPTO_ALG_INTERNAL,
+   .cra_flags  = CRYPTO_ALG_INTERNAL,
.cra_blocksize  = GHASH_BLOCK_SIZE,
.cra_ctxsize= sizeof(struct ghash_key),
.cra_module = THIS_MODULE,
diff --git a/arch/arm/crypto/sha1-ce-glue.c b/arch/arm/crypto/sha1-ce-glue.c
index 555f72b5e659b..b732522e20f80 100644
--- a/arch/arm/crypto/sha1-ce-glue.c
+++ b/arch/arm/crypto/sha1-ce-glue.c
@@ -75,7 +75,6 @@ static struct shash_alg alg = {
.cra_name   = "sha1",
.cra_driver_name= "sha1-ce",
.cra_priority   = 200,
-   

[PATCH 2/6] crypto: ahash - remove useless setting of type flags

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Many ahash algorithms set .cra_flags = CRYPTO_ALG_TYPE_AHASH.  But this
is redundant with the C structure type ('struct ahash_alg'), and
crypto_register_ahash() already sets the type flag automatically,
clearing any type flag that was already there.  Apparently the useless
assignment has just been copy+pasted around.

So, remove the useless assignment from all the ahash algorithms.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 arch/arm/crypto/ghash-ce-glue.c|  2 +-
 arch/x86/crypto/ghash-clmulni-intel_glue.c |  2 +-
 arch/x86/crypto/sha1-mb/sha1_mb.c  |  7 ++---
 arch/x86/crypto/sha256-mb/sha256_mb.c  |  8 ++---
 arch/x86/crypto/sha512-mb/sha512_mb.c  |  8 ++---
 drivers/crypto/axis/artpec6_crypto.c   | 14 -
 drivers/crypto/bcm/cipher.c|  5 ++-
 drivers/crypto/caam/caamhash.c |  2 +-
 drivers/crypto/ccp/ccp-crypto-aes-cmac.c   |  2 +-
 drivers/crypto/ccp/ccp-crypto-sha.c|  2 +-
 drivers/crypto/ccree/cc_hash.c |  3 +-
 drivers/crypto/chelsio/chcr_algo.c |  3 +-
 drivers/crypto/n2_core.c   |  3 +-
 drivers/crypto/omap-sham.c | 36 --
 drivers/crypto/s5p-sss.c   |  9 ++
 drivers/crypto/sahara.c|  6 ++--
 drivers/crypto/stm32/stm32-hash.c  | 24 +--
 drivers/crypto/sunxi-ss/sun4i-ss-core.c|  2 --
 drivers/crypto/talitos.c   | 36 --
 drivers/crypto/ux500/hash/hash_core.c  | 12 +++-
 20 files changed, 67 insertions(+), 119 deletions(-)

diff --git a/arch/arm/crypto/ghash-ce-glue.c b/arch/arm/crypto/ghash-ce-glue.c
index f93c0761929d5..124fee03246e2 100644
--- a/arch/arm/crypto/ghash-ce-glue.c
+++ b/arch/arm/crypto/ghash-ce-glue.c
@@ -308,7 +308,7 @@ static struct ahash_alg ghash_async_alg = {
.cra_name   = "ghash",
.cra_driver_name = "ghash-ce",
.cra_priority   = 300,
-   .cra_flags  = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_ASYNC,
+   .cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = GHASH_BLOCK_SIZE,
.cra_type   = _ahash_type,
.cra_ctxsize= sizeof(struct ghash_async_ctx),
diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c 
b/arch/x86/crypto/ghash-clmulni-intel_glue.c
index b1430e92e6382..a3de43b5e20a0 100644
--- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
+++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
@@ -314,7 +314,7 @@ static struct ahash_alg ghash_async_alg = {
.cra_driver_name= "ghash-clmulni",
.cra_priority   = 400,
.cra_ctxsize= sizeof(struct 
ghash_async_ctx),
-   .cra_flags  = CRYPTO_ALG_TYPE_AHASH | 
CRYPTO_ALG_ASYNC,
+   .cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = GHASH_BLOCK_SIZE,
.cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
diff --git a/arch/x86/crypto/sha1-mb/sha1_mb.c 
b/arch/x86/crypto/sha1-mb/sha1_mb.c
index 4b2430274935b..f7929ba6cfb43 100644
--- a/arch/x86/crypto/sha1-mb/sha1_mb.c
+++ b/arch/x86/crypto/sha1-mb/sha1_mb.c
@@ -746,9 +746,8 @@ static struct ahash_alg sha1_mb_areq_alg = {
 * algo may not have completed before hashing thread
 * sleep
 */
-   .cra_flags  = CRYPTO_ALG_TYPE_AHASH |
-   CRYPTO_ALG_ASYNC |
-   CRYPTO_ALG_INTERNAL,
+   .cra_flags  = CRYPTO_ALG_ASYNC |
+ CRYPTO_ALG_INTERNAL,
.cra_blocksize  = SHA1_BLOCK_SIZE,
.cra_module = THIS_MODULE,
.cra_list   = LIST_HEAD_INIT
@@ -879,7 +878,7 @@ static struct ahash_alg sha1_mb_async_alg = {
 * priority at runtime using NETLINK_CRYPTO.
 */
.cra_priority   = 50,
-   .cra_flags  = CRYPTO_ALG_TYPE_AHASH | 
CRYPTO_ALG_ASYNC,
+   .cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = SHA1_BLOCK_SIZE,
.cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
diff --git a/arch/x86/crypto/sha256-mb/sha256_mb.c 
b/arch/x86/crypto/sha256-mb/sha256_mb.c
index 4c07f6c12c37b..59a47048920ab 100644
--- a/arch/x86/crypto/sha256-mb/sha256_mb.c
+++ b/arch/x86/crypto/sha256-mb/sha256_mb.c
@@ -745,9 +745,8 @@ static struct ahash_alg sha256_mb_areq_alg = {
 

[PATCH 3/6] crypto: ahash - remove useless setting of cra_type

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Some ahash algorithms set .cra_type = _ahash_type.  But this is
redundant with the C structure type ('struct ahash_alg'), and
crypto_register_ahash() already sets the .cra_type automatically.
Apparently the useless assignment has just been copy+pasted around.

So, remove the useless assignment from all the ahash algorithms.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 arch/arm/crypto/ghash-ce-glue.c| 1 -
 arch/x86/crypto/ghash-clmulni-intel_glue.c | 1 -
 arch/x86/crypto/sha1-mb/sha1_mb.c  | 1 -
 arch/x86/crypto/sha256-mb/sha256_mb.c  | 1 -
 arch/x86/crypto/sha512-mb/sha512_mb.c  | 1 -
 drivers/crypto/bcm/cipher.c| 1 -
 drivers/crypto/caam/caamhash.c | 1 -
 drivers/crypto/ccp/ccp-crypto-aes-cmac.c   | 1 -
 drivers/crypto/ccp/ccp-crypto-sha.c| 1 -
 drivers/crypto/ccree/cc_hash.c | 1 -
 drivers/crypto/chelsio/chcr_algo.c | 1 -
 drivers/crypto/sunxi-ss/sun4i-ss-core.c| 2 --
 drivers/crypto/talitos.c   | 1 -
 drivers/crypto/ux500/hash/hash_core.c  | 3 ---
 14 files changed, 17 deletions(-)

diff --git a/arch/arm/crypto/ghash-ce-glue.c b/arch/arm/crypto/ghash-ce-glue.c
index 124fee03246e2..8930fc4e7c228 100644
--- a/arch/arm/crypto/ghash-ce-glue.c
+++ b/arch/arm/crypto/ghash-ce-glue.c
@@ -310,7 +310,6 @@ static struct ahash_alg ghash_async_alg = {
.cra_priority   = 300,
.cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = GHASH_BLOCK_SIZE,
-   .cra_type   = _ahash_type,
.cra_ctxsize= sizeof(struct ghash_async_ctx),
.cra_module = THIS_MODULE,
.cra_init   = ghash_async_init_tfm,
diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c 
b/arch/x86/crypto/ghash-clmulni-intel_glue.c
index a3de43b5e20a0..3582ae885ee11 100644
--- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
+++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
@@ -316,7 +316,6 @@ static struct ahash_alg ghash_async_alg = {
.cra_ctxsize= sizeof(struct 
ghash_async_ctx),
.cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = GHASH_BLOCK_SIZE,
-   .cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
.cra_init   = ghash_async_init_tfm,
.cra_exit   = ghash_async_exit_tfm,
diff --git a/arch/x86/crypto/sha1-mb/sha1_mb.c 
b/arch/x86/crypto/sha1-mb/sha1_mb.c
index f7929ba6cfb43..b93805664c1dd 100644
--- a/arch/x86/crypto/sha1-mb/sha1_mb.c
+++ b/arch/x86/crypto/sha1-mb/sha1_mb.c
@@ -880,7 +880,6 @@ static struct ahash_alg sha1_mb_async_alg = {
.cra_priority   = 50,
.cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = SHA1_BLOCK_SIZE,
-   .cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
.cra_list   = 
LIST_HEAD_INIT(sha1_mb_async_alg.halg.base.cra_list),
.cra_init   = sha1_mb_async_init_tfm,
diff --git a/arch/x86/crypto/sha256-mb/sha256_mb.c 
b/arch/x86/crypto/sha256-mb/sha256_mb.c
index 59a47048920ab..97c5fc43e115d 100644
--- a/arch/x86/crypto/sha256-mb/sha256_mb.c
+++ b/arch/x86/crypto/sha256-mb/sha256_mb.c
@@ -879,7 +879,6 @@ static struct ahash_alg sha256_mb_async_alg = {
.cra_priority   = 50,
.cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = SHA256_BLOCK_SIZE,
-   .cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
.cra_list   = LIST_HEAD_INIT
(sha256_mb_async_alg.halg.base.cra_list),
diff --git a/arch/x86/crypto/sha512-mb/sha512_mb.c 
b/arch/x86/crypto/sha512-mb/sha512_mb.c
index d3a758ac3ade0..26b85678012d0 100644
--- a/arch/x86/crypto/sha512-mb/sha512_mb.c
+++ b/arch/x86/crypto/sha512-mb/sha512_mb.c
@@ -913,7 +913,6 @@ static struct ahash_alg sha512_mb_async_alg = {
.cra_priority   = 50,
.cra_flags  = CRYPTO_ALG_ASYNC,
.cra_blocksize  = SHA512_BLOCK_SIZE,
-   .cra_type   = _ahash_type,
.cra_module = THIS_MODULE,
.cra_list   = LIST_HEAD_INIT
(sha512_mb_async_alg.halg.base.cra_list),
diff --git a/drivers/crypto/bcm/cipher.c b/drivers/crypto/bcm/cipher.c
index 2f85a989c4761..4e2babd6b89d7 100644
--- a/drivers/crypto/bcm/cipher.c
+++ 

[PATCH 0/6] crypto: remove redundant type specifications

2018-06-30 Thread Eric Biggers
Originally, algorithms had to declare their type in .cra_flags as a
CRYPTO_ALG_TYPE_* value.  Some types of algorithms such as "cipher"
still have to do this.  But now most algorithm types use different
top-level C data structures, and different registration and allocation
functions.  And for these, the core crypto API automatically sets the
.cra_flags type as well as .cra_type, mainly for its own use (users
shouldn't care about these).

Yet, many algorithms are still explicitly setting their .cra_flags type
and sometimes even .cra_type, which is confusing as this actually does
nothing.  Apparently, people are just copy-and-pasting this from
existing code without understanding it.

Therefore, this patchset removes the useless initializations, as well as
useless type flags passed to the strongly-typed tfm allocators.

This doesn't change any actual behavior, AFAIK.

For now I didn't bother with 'blkcipher' and 'ablkcipher' algorithms,
since those should eventually be migrated to 'skcipher' anyway.

Eric Biggers (6):
  crypto: shash - remove useless setting of type flags
  crypto: ahash - remove useless setting of type flags
  crypto: ahash - remove useless setting of cra_type
  crypto: aead - remove useless setting of type flags
  crypto: skcipher - remove useless setting of type flags
  crypto: remove redundant type flags from tfm allocation

 Documentation/crypto/api-samples.rst  |  2 +-
 arch/arm/crypto/ghash-ce-glue.c   |  5 +--
 arch/arm/crypto/sha1-ce-glue.c|  1 -
 arch/arm/crypto/sha1_glue.c   |  1 -
 arch/arm/crypto/sha1_neon_glue.c  |  1 -
 arch/arm/crypto/sha2-ce-glue.c|  2 -
 arch/arm/crypto/sha256_glue.c |  2 -
 arch/arm/crypto/sha256_neon_glue.c|  2 -
 arch/arm/crypto/sha512-glue.c |  2 -
 arch/arm/crypto/sha512-neon-glue.c|  2 -
 arch/arm64/crypto/aes-glue.c  |  3 --
 arch/arm64/crypto/ghash-ce-glue.c |  1 -
 arch/arm64/crypto/sha1-ce-glue.c  |  1 -
 arch/arm64/crypto/sha2-ce-glue.c  |  2 -
 arch/arm64/crypto/sha256-glue.c   |  4 --
 arch/arm64/crypto/sha3-ce-glue.c  |  4 --
 arch/arm64/crypto/sha512-ce-glue.c|  2 -
 arch/arm64/crypto/sha512-glue.c   |  2 -
 arch/arm64/crypto/sm3-ce-glue.c   |  1 -
 arch/mips/cavium-octeon/crypto/octeon-md5.c   |  1 -
 arch/mips/cavium-octeon/crypto/octeon-sha1.c  |  1 -
 .../mips/cavium-octeon/crypto/octeon-sha256.c |  2 -
 .../mips/cavium-octeon/crypto/octeon-sha512.c |  2 -
 arch/powerpc/crypto/md5-glue.c|  1 -
 arch/powerpc/crypto/sha1-spe-glue.c   |  1 -
 arch/powerpc/crypto/sha1.c|  1 -
 arch/powerpc/crypto/sha256-spe-glue.c |  2 -
 arch/s390/crypto/aes_s390.c   |  1 -
 arch/s390/crypto/ghash_s390.c |  1 -
 arch/s390/crypto/sha1_s390.c  |  1 -
 arch/s390/crypto/sha256_s390.c|  2 -
 arch/s390/crypto/sha512_s390.c|  2 -
 arch/sparc/crypto/md5_glue.c  |  1 -
 arch/sparc/crypto/sha1_glue.c |  1 -
 arch/sparc/crypto/sha256_glue.c   |  2 -
 arch/sparc/crypto/sha512_glue.c   |  2 -
 arch/x86/crypto/ghash-clmulni-intel_glue.c|  6 +--
 arch/x86/crypto/poly1305_glue.c   |  1 -
 arch/x86/crypto/sha1-mb/sha1_mb.c |  8 ++--
 arch/x86/crypto/sha1_ssse3_glue.c |  4 --
 arch/x86/crypto/sha256-mb/sha256_mb.c |  9 ++---
 arch/x86/crypto/sha256_ssse3_glue.c   |  8 
 arch/x86/crypto/sha512-mb/sha512_mb.c |  9 ++---
 arch/x86/crypto/sha512_ssse3_glue.c   |  6 ---
 crypto/aegis128.c |  1 -
 crypto/aegis128l.c|  1 -
 crypto/aegis256.c |  1 -
 crypto/crypto_null.c  |  1 -
 crypto/ghash-generic.c|  1 -
 crypto/md4.c  |  1 -
 crypto/md5.c  |  1 -
 crypto/morus1280.c|  1 -
 crypto/morus640.c |  1 -
 crypto/poly1305_generic.c |  1 -
 crypto/rmd128.c   |  1 -
 crypto/rmd160.c   |  1 -
 crypto/rmd256.c   |  1 -
 crypto/rmd320.c   |  1 -
 crypto/sha1_generic.c |  1 -
 crypto/sha256_generic.c   |  2 -
 crypto/sha3_generic.c |  4 --
 crypto/sha512_generic.c   |  2 -
 crypto/sm3_generic.c  |  1 -
 crypto/tgr192.c   |  3 --
 crypto/wp512.c|  3 --
 drivers/crypto/amcc/crypto4xx_core.c  | 18 +++--
 drivers/crypto/atmel-sha.c   

[PATCH 5/6] crypto: skcipher - remove useless setting of type flags

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Some skcipher algorithms set .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER.  But
this is redundant with the C structure type ('struct skcipher_alg'), and
crypto_register_skcipher() already sets the type flag automatically,
clearing any type flag that was already there.  Apparently the useless
assignment has just been copy+pasted around.

So, remove the useless assignment from all the skcipher algorithms.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 drivers/crypto/amcc/crypto4xx_core.c   | 18 ++
 drivers/crypto/axis/artpec6_crypto.c   | 12 
 drivers/crypto/ccree/cc_cipher.c   |  3 +--
 drivers/crypto/inside-secure/safexcel_cipher.c |  4 ++--
 drivers/crypto/sunxi-ss/sun4i-ss-core.c| 16 +---
 5 files changed, 18 insertions(+), 35 deletions(-)

diff --git a/drivers/crypto/amcc/crypto4xx_core.c 
b/drivers/crypto/amcc/crypto4xx_core.c
index 05981ccd9901a..6eaec9ba0f68b 100644
--- a/drivers/crypto/amcc/crypto4xx_core.c
+++ b/drivers/crypto/amcc/crypto4xx_core.c
@@ -1132,8 +1132,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "cbc(aes)",
.cra_driver_name = "cbc-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
@@ -1153,8 +1152,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "cfb(aes)",
.cra_driver_name = "cfb-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
@@ -1174,8 +1172,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "ctr(aes)",
.cra_driver_name = "ctr-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_NEED_FALLBACK |
+   .cra_flags = CRYPTO_ALG_NEED_FALLBACK |
CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
@@ -1196,8 +1193,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "rfc3686(ctr(aes))",
.cra_driver_name = "rfc3686-ctr-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
@@ -1217,8 +1213,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "ecb(aes)",
.cra_driver_name = "ecb-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
@@ -1237,8 +1232,7 @@ static struct crypto4xx_alg_common crypto4xx_alg[] = {
.cra_name = "ofb(aes)",
.cra_driver_name = "ofb-aes-ppc4xx",
.cra_priority = CRYPTO4XX_CRYPTO_PRIORITY,
-   .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER |
-   CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto4xx_ctx),
diff --git a/drivers/crypto/axis/artpec6_crypto.c 
b/drivers/crypto/axis/artpec6_crypto.c
index 59392178d8bc6..7f07a5085e9bd 100644
--- a/drivers/crypto/axis/artpec6_crypto.c
+++ b/drivers/crypto/axis/artpec6_crypto.c

[PATCH 4/6] crypto: aead - remove useless setting of type flags

2018-06-30 Thread Eric Biggers
From: Eric Biggers 

Some aead algorithms set .cra_flags = CRYPTO_ALG_TYPE_AEAD.  But this is
redundant with the C structure type ('struct aead_alg'), and
crypto_register_aead() already sets the type flag automatically,
clearing any type flag that was already there.  Apparently the useless
assignment has just been copy+pasted around.

So, remove the useless assignment from all the aead algorithms.

This patch shouldn't change any actual behavior.

Signed-off-by: Eric Biggers 
---
 arch/s390/crypto/aes_s390.c|  1 -
 crypto/aegis128.c  |  1 -
 crypto/aegis128l.c |  1 -
 crypto/aegis256.c  |  1 -
 crypto/morus1280.c |  1 -
 crypto/morus640.c  |  1 -
 drivers/crypto/axis/artpec6_crypto.c   |  2 +-
 drivers/crypto/bcm/cipher.c|  2 +-
 drivers/crypto/chelsio/chcr_algo.c |  3 +--
 drivers/crypto/inside-secure/safexcel_cipher.c | 10 +-
 10 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c
index ad47abd086308..c54cb26eb7f50 100644
--- a/arch/s390/crypto/aes_s390.c
+++ b/arch/s390/crypto/aes_s390.c
@@ -1035,7 +1035,6 @@ static struct aead_alg gcm_aes_aead = {
.chunksize  = AES_BLOCK_SIZE,
 
.base   = {
-   .cra_flags  = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize  = 1,
.cra_ctxsize= sizeof(struct s390_aes_ctx),
.cra_priority   = 900,
diff --git a/crypto/aegis128.c b/crypto/aegis128.c
index 38271303ce16c..c22f4414856d9 100644
--- a/crypto/aegis128.c
+++ b/crypto/aegis128.c
@@ -429,7 +429,6 @@ static struct aead_alg crypto_aegis128_alg = {
.chunksize = AEGIS_BLOCK_SIZE,
 
.base = {
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct aegis_ctx),
.cra_alignmask = 0,
diff --git a/crypto/aegis128l.c b/crypto/aegis128l.c
index 64dc2654b863e..b6fb21ebdc3e8 100644
--- a/crypto/aegis128l.c
+++ b/crypto/aegis128l.c
@@ -493,7 +493,6 @@ static struct aead_alg crypto_aegis128l_alg = {
.chunksize = AEGIS128L_CHUNK_SIZE,
 
.base = {
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct aegis_ctx),
.cra_alignmask = 0,
diff --git a/crypto/aegis256.c b/crypto/aegis256.c
index a489d741d33ad..11f0f8ec9c7c2 100644
--- a/crypto/aegis256.c
+++ b/crypto/aegis256.c
@@ -444,7 +444,6 @@ static struct aead_alg crypto_aegis256_alg = {
.chunksize = AEGIS_BLOCK_SIZE,
 
.base = {
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct aegis_ctx),
.cra_alignmask = 0,
diff --git a/crypto/morus1280.c b/crypto/morus1280.c
index 6180b2557836a..d057cf5ac4a8b 100644
--- a/crypto/morus1280.c
+++ b/crypto/morus1280.c
@@ -514,7 +514,6 @@ static struct aead_alg crypto_morus1280_alg = {
.chunksize = MORUS1280_BLOCK_SIZE,
 
.base = {
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct morus1280_ctx),
.cra_alignmask = 0,
diff --git a/crypto/morus640.c b/crypto/morus640.c
index 5eede3749e646..1ca76e54281bf 100644
--- a/crypto/morus640.c
+++ b/crypto/morus640.c
@@ -511,7 +511,6 @@ static struct aead_alg crypto_morus640_alg = {
.chunksize = MORUS640_BLOCK_SIZE,
 
.base = {
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct morus640_ctx),
.cra_alignmask = 0,
diff --git a/drivers/crypto/axis/artpec6_crypto.c 
b/drivers/crypto/axis/artpec6_crypto.c
index 049af6de3cb69..59392178d8bc6 100644
--- a/drivers/crypto/axis/artpec6_crypto.c
+++ b/drivers/crypto/axis/artpec6_crypto.c
@@ -2964,7 +2964,7 @@ static struct aead_alg aead_algos[] = {
.cra_name = "gcm(aes)",
.cra_driver_name = "artpec-gcm-aes",
.cra_priority = 300,
-   .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC |
+   .cra_flags = CRYPTO_ALG_ASYNC |
 CRYPTO_ALG_KERN_DRIVER_ONLY,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct artpec6_cryptotfm_context),
diff --git a/drivers/crypto/bcm/cipher.c b/drivers/crypto/bcm/cipher.c
index 4e2babd6b89d7..2d1f1db9f8074 100644
--- a/drivers/crypto/bcm/cipher.c
+++ b/drivers/crypto/bcm/cipher.c
@@ -4689,7 +4689,7 @@ static int spu_register_aead(struct iproc_alg_s 
*driver_alg)
aead->base.cra_ctxsize = sizeof(struct