summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2019-04-14 20:37:09 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2019-04-25 03:38:12 -0400
commit877b5691f27a1aec0d9b53095a323e45c30069e2 (patch)
tree59eba93e8d253fb0e12a0a2040de99e96e873933
parent75f2222832e0fecba7a45ca6ac07ea895ea1e046 (diff)
crypto: shash - remove shash_desc::flags
The flags field in 'struct shash_desc' never actually does anything. The only ostensibly supported flag is CRYPTO_TFM_REQ_MAY_SLEEP. However, no shash algorithm ever sleeps, making this flag a no-op. With this being the case, inevitably some users who can't sleep wrongly pass MAY_SLEEP. These would all need to be fixed if any shash algorithm actually started sleeping. For example, the shash_ahash_*() functions, which wrap a shash algorithm with the ahash API, pass through MAY_SLEEP from the ahash API to the shash API. However, the shash functions are called under kmap_atomic(), so actually they're assumed to never sleep. Even if it turns out that some users do need preemption points while hashing large buffers, we could easily provide a helper function crypto_shash_update_large() which divides the data into smaller chunks and calls crypto_shash_update() and cond_resched() for each chunk. It's not necessary to have a flag in 'struct shash_desc', nor is it necessary to make individual shash algorithms aware of this at all. Therefore, remove shash_desc::flags, and document that the crypto_shash_*() functions can be called from any context. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--Documentation/crypto/api-samples.rst1
-rw-r--r--arch/arm/crypto/ghash-ce-glue.c3
-rw-r--r--arch/x86/crypto/ghash-clmulni-intel_glue.c2
-rw-r--r--arch/x86/power/hibernate.c1
-rw-r--r--crypto/adiantum.c1
-rw-r--r--crypto/asymmetric_keys/pkcs7_verify.c1
-rw-r--r--crypto/asymmetric_keys/verify_pefile.c1
-rw-r--r--crypto/asymmetric_keys/x509_public_key.c1
-rw-r--r--crypto/cryptd.c3
-rw-r--r--crypto/drbg.c1
-rw-r--r--crypto/hmac.c11
-rw-r--r--crypto/shash.c4
-rw-r--r--crypto/testmgr.c2
-rw-r--r--drivers/block/drbd/drbd_receiver.c1
-rw-r--r--drivers/block/drbd/drbd_worker.c2
-rw-r--r--drivers/crypto/axis/artpec6_crypto.c2
-rw-r--r--drivers/crypto/bcm/cipher.c1
-rw-r--r--drivers/crypto/bcm/util.c1
-rw-r--r--drivers/crypto/ccp/ccp-crypto-sha.c2
-rw-r--r--drivers/crypto/chelsio/chcr_algo.c2
-rw-r--r--drivers/crypto/mediatek/mtk-sha.c3
-rw-r--r--drivers/crypto/n2_core.c2
-rw-r--r--drivers/crypto/omap-sham.c2
-rw-r--r--drivers/crypto/padlock-sha.c5
-rw-r--r--drivers/crypto/qat/qat_common/qat_algs.c1
-rw-r--r--drivers/crypto/s5p-sss.c1
-rw-r--r--drivers/crypto/vmx/ghash.c1
-rw-r--r--drivers/infiniband/sw/rxe/rxe.h1
-rw-r--r--drivers/md/dm-crypt.c3
-rw-r--r--drivers/md/dm-integrity.c2
-rw-r--r--drivers/net/ppp/ppp_mppe.c1
-rw-r--r--drivers/net/wireless/intersil/orinoco/mic.c1
-rw-r--r--drivers/nfc/s3fwrn5/firmware.c1
-rw-r--r--drivers/staging/ks7010/ks_hostif.c1
-rw-r--r--drivers/staging/rtl8192e/rtllib_crypt_tkip.c1
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c1
-rw-r--r--drivers/target/iscsi/iscsi_target_auth.c1
-rw-r--r--drivers/thunderbolt/domain.c1
-rw-r--r--fs/cifs/misc.c1
-rw-r--r--fs/crypto/keyinfo.c1
-rw-r--r--fs/ecryptfs/crypto.c1
-rw-r--r--fs/ecryptfs/keystore.c1
-rw-r--r--fs/ext4/ext4.h1
-rw-r--r--fs/f2fs/f2fs.h1
-rw-r--r--fs/nfsd/nfs4recover.c1
-rw-r--r--fs/ubifs/auth.c6
-rw-r--r--fs/ubifs/replay.c2
-rw-r--r--include/crypto/hash.h10
-rw-r--r--include/linux/jbd2.h1
-rw-r--r--kernel/kexec_file.c1
-rw-r--r--lib/crc-t10dif.c1
-rw-r--r--lib/digsig.c1
-rw-r--r--lib/libcrc32c.c1
-rw-r--r--net/bluetooth/amp.c1
-rw-r--r--net/bluetooth/smp.c1
-rw-r--r--net/sctp/auth.c1
-rw-r--r--net/sctp/sm_make_chunk.c2
-rw-r--r--net/sunrpc/auth_gss/gss_krb5_crypto.c2
-rw-r--r--net/sunrpc/auth_gss/gss_krb5_mech.c1
-rw-r--r--net/wireless/lib80211_crypt_tkip.c1
-rw-r--r--security/apparmor/crypto.c2
-rw-r--r--security/integrity/evm/evm_crypto.c1
-rw-r--r--security/integrity/ima/ima_crypto.c4
-rw-r--r--security/keys/dh.c1
-rw-r--r--security/keys/encrypted-keys/encrypted.c1
-rw-r--r--security/keys/trusted.c1
66 files changed, 8 insertions, 113 deletions
diff --git a/Documentation/crypto/api-samples.rst b/Documentation/crypto/api-samples.rst
index 0f6ca8b7261e..f14afaaf2f32 100644
--- a/Documentation/crypto/api-samples.rst
+++ b/Documentation/crypto/api-samples.rst
@@ -133,7 +133,6 @@ Code Example For Use of Operational State Memory With SHASH
133 if (!sdesc) 133 if (!sdesc)
134 return ERR_PTR(-ENOMEM); 134 return ERR_PTR(-ENOMEM);
135 sdesc->shash.tfm = alg; 135 sdesc->shash.tfm = alg;
136 sdesc->shash.flags = 0x0;
137 return sdesc; 136 return sdesc;
138 } 137 }
139 138
diff --git a/arch/arm/crypto/ghash-ce-glue.c b/arch/arm/crypto/ghash-ce-glue.c
index 60123e9ea9d8..39d1ccec1aab 100644
--- a/arch/arm/crypto/ghash-ce-glue.c
+++ b/arch/arm/crypto/ghash-ce-glue.c
@@ -186,7 +186,6 @@ static int ghash_async_init(struct ahash_request *req)
186 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm); 186 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm);
187 187
188 desc->tfm = child; 188 desc->tfm = child;
189 desc->flags = req->base.flags;
190 return crypto_shash_init(desc); 189 return crypto_shash_init(desc);
191} 190}
192 191
@@ -243,7 +242,6 @@ static int ghash_async_digest(struct ahash_request *req)
243 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm); 242 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm);
244 243
245 desc->tfm = child; 244 desc->tfm = child;
246 desc->flags = req->base.flags;
247 return shash_ahash_digest(req, desc); 245 return shash_ahash_digest(req, desc);
248 } 246 }
249} 247}
@@ -256,7 +254,6 @@ static int ghash_async_import(struct ahash_request *req, const void *in)
256 struct shash_desc *desc = cryptd_shash_desc(cryptd_req); 254 struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
257 255
258 desc->tfm = cryptd_ahash_child(ctx->cryptd_tfm); 256 desc->tfm = cryptd_ahash_child(ctx->cryptd_tfm);
259 desc->flags = req->base.flags;
260 257
261 return crypto_shash_import(desc, in); 258 return crypto_shash_import(desc, in);
262} 259}
diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c b/arch/x86/crypto/ghash-clmulni-intel_glue.c
index 4099a0ae17dd..e3f3e6fd9d65 100644
--- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
+++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
@@ -172,7 +172,6 @@ static int ghash_async_init(struct ahash_request *req)
172 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm); 172 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm);
173 173
174 desc->tfm = child; 174 desc->tfm = child;
175 desc->flags = req->base.flags;
176 return crypto_shash_init(desc); 175 return crypto_shash_init(desc);
177} 176}
178 177
@@ -252,7 +251,6 @@ static int ghash_async_digest(struct ahash_request *req)
252 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm); 251 struct crypto_shash *child = cryptd_ahash_child(cryptd_tfm);
253 252
254 desc->tfm = child; 253 desc->tfm = child;
255 desc->flags = req->base.flags;
256 return shash_ahash_digest(req, desc); 254 return shash_ahash_digest(req, desc);
257 } 255 }
258} 256}
diff --git a/arch/x86/power/hibernate.c b/arch/x86/power/hibernate.c
index bcddf09b5aa3..4845b8c7be7f 100644
--- a/arch/x86/power/hibernate.c
+++ b/arch/x86/power/hibernate.c
@@ -90,7 +90,6 @@ static int get_e820_md5(struct e820_table *table, void *buf)
90 } 90 }
91 91
92 desc->tfm = tfm; 92 desc->tfm = tfm;
93 desc->flags = 0;
94 93
95 size = offsetof(struct e820_table, entries) + 94 size = offsetof(struct e820_table, entries) +
96 sizeof(struct e820_entry) * table->nr_entries; 95 sizeof(struct e820_entry) * table->nr_entries;
diff --git a/crypto/adiantum.c b/crypto/adiantum.c
index e6de50f669aa..395a3ddd3707 100644
--- a/crypto/adiantum.c
+++ b/crypto/adiantum.c
@@ -265,7 +265,6 @@ static int adiantum_hash_message(struct skcipher_request *req,
265 int err; 265 int err;
266 266
267 hash_desc->tfm = tctx->hash; 267 hash_desc->tfm = tctx->hash;
268 hash_desc->flags = 0;
269 268
270 err = crypto_shash_init(hash_desc); 269 err = crypto_shash_init(hash_desc);
271 if (err) 270 if (err)
diff --git a/crypto/asymmetric_keys/pkcs7_verify.c b/crypto/asymmetric_keys/pkcs7_verify.c
index 97c77f66b20d..f7b0980bf02d 100644
--- a/crypto/asymmetric_keys/pkcs7_verify.c
+++ b/crypto/asymmetric_keys/pkcs7_verify.c
@@ -56,7 +56,6 @@ static int pkcs7_digest(struct pkcs7_message *pkcs7,
56 goto error_no_desc; 56 goto error_no_desc;
57 57
58 desc->tfm = tfm; 58 desc->tfm = tfm;
59 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
60 59
61 /* Digest the message [RFC2315 9.3] */ 60 /* Digest the message [RFC2315 9.3] */
62 ret = crypto_shash_digest(desc, pkcs7->data, pkcs7->data_len, 61 ret = crypto_shash_digest(desc, pkcs7->data, pkcs7->data_len,
diff --git a/crypto/asymmetric_keys/verify_pefile.c b/crypto/asymmetric_keys/verify_pefile.c
index d178650fd524..f8e4a932bcfb 100644
--- a/crypto/asymmetric_keys/verify_pefile.c
+++ b/crypto/asymmetric_keys/verify_pefile.c
@@ -354,7 +354,6 @@ static int pefile_digest_pe(const void *pebuf, unsigned int pelen,
354 goto error_no_desc; 354 goto error_no_desc;
355 355
356 desc->tfm = tfm; 356 desc->tfm = tfm;
357 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
358 ret = crypto_shash_init(desc); 357 ret = crypto_shash_init(desc);
359 if (ret < 0) 358 if (ret < 0)
360 goto error; 359 goto error;
diff --git a/crypto/asymmetric_keys/x509_public_key.c b/crypto/asymmetric_keys/x509_public_key.c
index 9338b4558cdc..bd96683d8cde 100644
--- a/crypto/asymmetric_keys/x509_public_key.c
+++ b/crypto/asymmetric_keys/x509_public_key.c
@@ -77,7 +77,6 @@ int x509_get_sig_params(struct x509_certificate *cert)
77 goto error; 77 goto error;
78 78
79 desc->tfm = tfm; 79 desc->tfm = tfm;
80 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
81 80
82 ret = crypto_shash_digest(desc, cert->tbs, cert->tbs_size, sig->digest); 81 ret = crypto_shash_digest(desc, cert->tbs, cert->tbs_size, sig->digest);
83 if (ret < 0) 82 if (ret < 0)
diff --git a/crypto/cryptd.c b/crypto/cryptd.c
index 42533cf80acc..b3bb99390ae7 100644
--- a/crypto/cryptd.c
+++ b/crypto/cryptd.c
@@ -545,7 +545,6 @@ static void cryptd_hash_init(struct crypto_async_request *req_async, int err)
545 goto out; 545 goto out;
546 546
547 desc->tfm = child; 547 desc->tfm = child;
548 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
549 548
550 err = crypto_shash_init(desc); 549 err = crypto_shash_init(desc);
551 550
@@ -637,7 +636,6 @@ static void cryptd_hash_digest(struct crypto_async_request *req_async, int err)
637 goto out; 636 goto out;
638 637
639 desc->tfm = child; 638 desc->tfm = child;
640 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
641 639
642 err = shash_ahash_digest(req, desc); 640 err = shash_ahash_digest(req, desc);
643 641
@@ -666,7 +664,6 @@ static int cryptd_hash_import(struct ahash_request *req, const void *in)
666 struct shash_desc *desc = cryptd_shash_desc(req); 664 struct shash_desc *desc = cryptd_shash_desc(req);
667 665
668 desc->tfm = ctx->child; 666 desc->tfm = ctx->child;
669 desc->flags = req->base.flags;
670 667
671 return crypto_shash_import(desc, in); 668 return crypto_shash_import(desc, in);
672} 669}
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 710b3046a4df..2a5b16bb000c 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1587,7 +1587,6 @@ static int drbg_init_hash_kernel(struct drbg_state *drbg)
1587 } 1587 }
1588 1588
1589 sdesc->shash.tfm = tfm; 1589 sdesc->shash.tfm = tfm;
1590 sdesc->shash.flags = 0;
1591 drbg->priv_data = sdesc; 1590 drbg->priv_data = sdesc;
1592 1591
1593 return crypto_shash_alignmask(tfm); 1592 return crypto_shash_alignmask(tfm);
diff --git a/crypto/hmac.c b/crypto/hmac.c
index 4ceb3f1f0eb8..a68c1266121f 100644
--- a/crypto/hmac.c
+++ b/crypto/hmac.c
@@ -57,8 +57,6 @@ static int hmac_setkey(struct crypto_shash *parent,
57 unsigned int i; 57 unsigned int i;
58 58
59 shash->tfm = hash; 59 shash->tfm = hash;
60 shash->flags = crypto_shash_get_flags(parent)
61 & CRYPTO_TFM_REQ_MAY_SLEEP;
62 60
63 if (keylen > bs) { 61 if (keylen > bs) {
64 int err; 62 int err;
@@ -91,8 +89,6 @@ static int hmac_export(struct shash_desc *pdesc, void *out)
91{ 89{
92 struct shash_desc *desc = shash_desc_ctx(pdesc); 90 struct shash_desc *desc = shash_desc_ctx(pdesc);
93 91
94 desc->flags = pdesc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
95
96 return crypto_shash_export(desc, out); 92 return crypto_shash_export(desc, out);
97} 93}
98 94
@@ -102,7 +98,6 @@ static int hmac_import(struct shash_desc *pdesc, const void *in)
102 struct hmac_ctx *ctx = hmac_ctx(pdesc->tfm); 98 struct hmac_ctx *ctx = hmac_ctx(pdesc->tfm);
103 99
104 desc->tfm = ctx->hash; 100 desc->tfm = ctx->hash;
105 desc->flags = pdesc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
106 101
107 return crypto_shash_import(desc, in); 102 return crypto_shash_import(desc, in);
108} 103}
@@ -117,8 +112,6 @@ static int hmac_update(struct shash_desc *pdesc,
117{ 112{
118 struct shash_desc *desc = shash_desc_ctx(pdesc); 113 struct shash_desc *desc = shash_desc_ctx(pdesc);
119 114
120 desc->flags = pdesc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
121
122 return crypto_shash_update(desc, data, nbytes); 115 return crypto_shash_update(desc, data, nbytes);
123} 116}
124 117
@@ -130,8 +123,6 @@ static int hmac_final(struct shash_desc *pdesc, u8 *out)
130 char *opad = crypto_shash_ctx_aligned(parent) + ss; 123 char *opad = crypto_shash_ctx_aligned(parent) + ss;
131 struct shash_desc *desc = shash_desc_ctx(pdesc); 124 struct shash_desc *desc = shash_desc_ctx(pdesc);
132 125
133 desc->flags = pdesc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
134
135 return crypto_shash_final(desc, out) ?: 126 return crypto_shash_final(desc, out) ?:
136 crypto_shash_import(desc, opad) ?: 127 crypto_shash_import(desc, opad) ?:
137 crypto_shash_finup(desc, out, ds, out); 128 crypto_shash_finup(desc, out, ds, out);
@@ -147,8 +138,6 @@ static int hmac_finup(struct shash_desc *pdesc, const u8 *data,
147 char *opad = crypto_shash_ctx_aligned(parent) + ss; 138 char *opad = crypto_shash_ctx_aligned(parent) + ss;
148 struct shash_desc *desc = shash_desc_ctx(pdesc); 139 struct shash_desc *desc = shash_desc_ctx(pdesc);
149 140
150 desc->flags = pdesc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
151
152 return crypto_shash_finup(desc, data, nbytes, out) ?: 141 return crypto_shash_finup(desc, data, nbytes, out) ?:
153 crypto_shash_import(desc, opad) ?: 142 crypto_shash_import(desc, opad) ?:
154 crypto_shash_finup(desc, out, ds, out); 143 crypto_shash_finup(desc, out, ds, out);
diff --git a/crypto/shash.c b/crypto/shash.c
index 599468478f7b..e55c1f558bc3 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -238,7 +238,6 @@ static int shash_async_init(struct ahash_request *req)
238 struct shash_desc *desc = ahash_request_ctx(req); 238 struct shash_desc *desc = ahash_request_ctx(req);
239 239
240 desc->tfm = *ctx; 240 desc->tfm = *ctx;
241 desc->flags = req->base.flags;
242 241
243 return crypto_shash_init(desc); 242 return crypto_shash_init(desc);
244} 243}
@@ -293,7 +292,6 @@ static int shash_async_finup(struct ahash_request *req)
293 struct shash_desc *desc = ahash_request_ctx(req); 292 struct shash_desc *desc = ahash_request_ctx(req);
294 293
295 desc->tfm = *ctx; 294 desc->tfm = *ctx;
296 desc->flags = req->base.flags;
297 295
298 return shash_ahash_finup(req, desc); 296 return shash_ahash_finup(req, desc);
299} 297}
@@ -328,7 +326,6 @@ static int shash_async_digest(struct ahash_request *req)
328 struct shash_desc *desc = ahash_request_ctx(req); 326 struct shash_desc *desc = ahash_request_ctx(req);
329 327
330 desc->tfm = *ctx; 328 desc->tfm = *ctx;
331 desc->flags = req->base.flags;
332 329
333 return shash_ahash_digest(req, desc); 330 return shash_ahash_digest(req, desc);
334} 331}
@@ -344,7 +341,6 @@ static int shash_async_import(struct ahash_request *req, const void *in)
344 struct shash_desc *desc = ahash_request_ctx(req); 341 struct shash_desc *desc = ahash_request_ctx(req);
345 342
346 desc->tfm = *ctx; 343 desc->tfm = *ctx;
347 desc->flags = req->base.flags;
348 344
349 return crypto_shash_import(desc, in); 345 return crypto_shash_import(desc, in);
350} 346}
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 87abfd1ce232..2bd89a65e9e7 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1328,7 +1328,6 @@ static void generate_random_hash_testvec(struct crypto_shash *tfm,
1328 1328
1329 /* Digest */ 1329 /* Digest */
1330 desc->tfm = tfm; 1330 desc->tfm = tfm;
1331 desc->flags = 0;
1332 vec->digest_error = crypto_shash_digest(desc, vec->plaintext, 1331 vec->digest_error = crypto_shash_digest(desc, vec->plaintext,
1333 vec->psize, (u8 *)vec->digest); 1332 vec->psize, (u8 *)vec->digest);
1334done: 1333done:
@@ -3027,7 +3026,6 @@ static int alg_test_crc32c(const struct alg_test_desc *desc,
3027 u32 *ctx = (u32 *)shash_desc_ctx(shash); 3026 u32 *ctx = (u32 *)shash_desc_ctx(shash);
3028 3027
3029 shash->tfm = tfm; 3028 shash->tfm = tfm;
3030 shash->flags = 0;
3031 3029
3032 *ctx = 420553207; 3030 *ctx = 420553207;
3033 err = crypto_shash_final(shash, (u8 *)&val); 3031 err = crypto_shash_final(shash, (u8 *)&val);
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index c7ad88d91a09..843a9b9b3d74 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -5443,7 +5443,6 @@ static int drbd_do_auth(struct drbd_connection *connection)
5443 rcu_read_unlock(); 5443 rcu_read_unlock();
5444 5444
5445 desc->tfm = connection->cram_hmac_tfm; 5445 desc->tfm = connection->cram_hmac_tfm;
5446 desc->flags = 0;
5447 5446
5448 rv = crypto_shash_setkey(connection->cram_hmac_tfm, (u8 *)secret, key_len); 5447 rv = crypto_shash_setkey(connection->cram_hmac_tfm, (u8 *)secret, key_len);
5449 if (rv) { 5448 if (rv) {
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 268ef0c5d4ab..6781bcf3ec26 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -304,7 +304,6 @@ void drbd_csum_ee(struct crypto_shash *tfm, struct drbd_peer_request *peer_req,
304 void *src; 304 void *src;
305 305
306 desc->tfm = tfm; 306 desc->tfm = tfm;
307 desc->flags = 0;
308 307
309 crypto_shash_init(desc); 308 crypto_shash_init(desc);
310 309
@@ -332,7 +331,6 @@ void drbd_csum_bio(struct crypto_shash *tfm, struct bio *bio, void *digest)
332 struct bvec_iter iter; 331 struct bvec_iter iter;
333 332
334 desc->tfm = tfm; 333 desc->tfm = tfm;
335 desc->flags = 0;
336 334
337 crypto_shash_init(desc); 335 crypto_shash_init(desc);
338 336
diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c
index 57e5dca3253f..d2fb72811442 100644
--- a/drivers/crypto/axis/artpec6_crypto.c
+++ b/drivers/crypto/axis/artpec6_crypto.c
@@ -2247,8 +2247,6 @@ artpec6_crypto_hash_set_key(struct crypto_ahash *tfm,
2247 SHASH_DESC_ON_STACK(hdesc, tfm_ctx->child_hash); 2247 SHASH_DESC_ON_STACK(hdesc, tfm_ctx->child_hash);
2248 2248
2249 hdesc->tfm = tfm_ctx->child_hash; 2249 hdesc->tfm = tfm_ctx->child_hash;
2250 hdesc->flags = crypto_ahash_get_flags(tfm) &
2251 CRYPTO_TFM_REQ_MAY_SLEEP;
2252 2250
2253 tfm_ctx->hmac_key_length = blocksize; 2251 tfm_ctx->hmac_key_length = blocksize;
2254 ret = crypto_shash_digest(hdesc, key, keylen, 2252 ret = crypto_shash_digest(hdesc, key, keylen,
diff --git a/drivers/crypto/bcm/cipher.c b/drivers/crypto/bcm/cipher.c
index 8862200d4a0b..25f8d3913ceb 100644
--- a/drivers/crypto/bcm/cipher.c
+++ b/drivers/crypto/bcm/cipher.c
@@ -2140,7 +2140,6 @@ static int ahash_init(struct ahash_request *req)
2140 goto err_hash; 2140 goto err_hash;
2141 } 2141 }
2142 ctx->shash->tfm = hash; 2142 ctx->shash->tfm = hash;
2143 ctx->shash->flags = 0;
2144 2143
2145 /* Set the key using data we already have from setkey */ 2144 /* Set the key using data we already have from setkey */
2146 if (ctx->authkeylen > 0) { 2145 if (ctx->authkeylen > 0) {
diff --git a/drivers/crypto/bcm/util.c b/drivers/crypto/bcm/util.c
index d8cda5fb75ad..91ec56399d84 100644
--- a/drivers/crypto/bcm/util.c
+++ b/drivers/crypto/bcm/util.c
@@ -242,7 +242,6 @@ int do_shash(unsigned char *name, unsigned char *result,
242 goto do_shash_err; 242 goto do_shash_err;
243 } 243 }
244 sdesc->shash.tfm = hash; 244 sdesc->shash.tfm = hash;
245 sdesc->shash.flags = 0x0;
246 245
247 if (key_len > 0) { 246 if (key_len > 0) {
248 rc = crypto_shash_setkey(hash, key, key_len); 247 rc = crypto_shash_setkey(hash, key, key_len);
diff --git a/drivers/crypto/ccp/ccp-crypto-sha.c b/drivers/crypto/ccp/ccp-crypto-sha.c
index 10a61cd54fce..3e10573f589e 100644
--- a/drivers/crypto/ccp/ccp-crypto-sha.c
+++ b/drivers/crypto/ccp/ccp-crypto-sha.c
@@ -293,8 +293,6 @@ static int ccp_sha_setkey(struct crypto_ahash *tfm, const u8 *key,
293 if (key_len > block_size) { 293 if (key_len > block_size) {
294 /* Must hash the input key */ 294 /* Must hash the input key */
295 sdesc->tfm = shash; 295 sdesc->tfm = shash;
296 sdesc->flags = crypto_ahash_get_flags(tfm) &
297 CRYPTO_TFM_REQ_MAY_SLEEP;
298 296
299 ret = crypto_shash_digest(sdesc, key, key_len, 297 ret = crypto_shash_digest(sdesc, key, key_len,
300 ctx->u.sha.key); 298 ctx->u.sha.key);
diff --git a/drivers/crypto/chelsio/chcr_algo.c b/drivers/crypto/chelsio/chcr_algo.c
index 8d8cf80b9294..8a76fce22943 100644
--- a/drivers/crypto/chelsio/chcr_algo.c
+++ b/drivers/crypto/chelsio/chcr_algo.c
@@ -2130,7 +2130,6 @@ static int chcr_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
2130 * ipad in hmacctx->ipad and opad in hmacctx->opad location 2130 * ipad in hmacctx->ipad and opad in hmacctx->opad location
2131 */ 2131 */
2132 shash->tfm = hmacctx->base_hash; 2132 shash->tfm = hmacctx->base_hash;
2133 shash->flags = crypto_shash_get_flags(hmacctx->base_hash);
2134 if (keylen > bs) { 2133 if (keylen > bs) {
2135 err = crypto_shash_digest(shash, key, keylen, 2134 err = crypto_shash_digest(shash, key, keylen,
2136 hmacctx->ipad); 2135 hmacctx->ipad);
@@ -3517,7 +3516,6 @@ static int chcr_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
3517 SHASH_DESC_ON_STACK(shash, base_hash); 3516 SHASH_DESC_ON_STACK(shash, base_hash);
3518 3517
3519 shash->tfm = base_hash; 3518 shash->tfm = base_hash;
3520 shash->flags = crypto_shash_get_flags(base_hash);
3521 bs = crypto_shash_blocksize(base_hash); 3519 bs = crypto_shash_blocksize(base_hash);
3522 align = KEYCTX_ALIGN_PAD(max_authsize); 3520 align = KEYCTX_ALIGN_PAD(max_authsize);
3523 o_ptr = actx->h_iopad + param.result_size + align; 3521 o_ptr = actx->h_iopad + param.result_size + align;
diff --git a/drivers/crypto/mediatek/mtk-sha.c b/drivers/crypto/mediatek/mtk-sha.c
index 5f4f845adbb8..a0806ba40c68 100644
--- a/drivers/crypto/mediatek/mtk-sha.c
+++ b/drivers/crypto/mediatek/mtk-sha.c
@@ -365,7 +365,6 @@ static int mtk_sha_finish_hmac(struct ahash_request *req)
365 SHASH_DESC_ON_STACK(shash, bctx->shash); 365 SHASH_DESC_ON_STACK(shash, bctx->shash);
366 366
367 shash->tfm = bctx->shash; 367 shash->tfm = bctx->shash;
368 shash->flags = 0; /* not CRYPTO_TFM_REQ_MAY_SLEEP */
369 368
370 return crypto_shash_init(shash) ?: 369 return crypto_shash_init(shash) ?:
371 crypto_shash_update(shash, bctx->opad, ctx->bs) ?: 370 crypto_shash_update(shash, bctx->opad, ctx->bs) ?:
@@ -810,8 +809,6 @@ static int mtk_sha_setkey(struct crypto_ahash *tfm, const u8 *key,
810 SHASH_DESC_ON_STACK(shash, bctx->shash); 809 SHASH_DESC_ON_STACK(shash, bctx->shash);
811 810
812 shash->tfm = bctx->shash; 811 shash->tfm = bctx->shash;
813 shash->flags = crypto_shash_get_flags(bctx->shash) &
814 CRYPTO_TFM_REQ_MAY_SLEEP;
815 812
816 if (keylen > bs) { 813 if (keylen > bs) {
817 err = crypto_shash_digest(shash, key, keylen, bctx->ipad); 814 err = crypto_shash_digest(shash, key, keylen, bctx->ipad);
diff --git a/drivers/crypto/n2_core.c b/drivers/crypto/n2_core.c
index df675aea58f6..0d5d3d8eb680 100644
--- a/drivers/crypto/n2_core.c
+++ b/drivers/crypto/n2_core.c
@@ -469,8 +469,6 @@ static int n2_hmac_async_setkey(struct crypto_ahash *tfm, const u8 *key,
469 return err; 469 return err;
470 470
471 shash->tfm = child_shash; 471 shash->tfm = child_shash;
472 shash->flags = crypto_ahash_get_flags(tfm) &
473 CRYPTO_TFM_REQ_MAY_SLEEP;
474 472
475 bs = crypto_shash_blocksize(child_shash); 473 bs = crypto_shash_blocksize(child_shash);
476 ds = crypto_shash_digestsize(child_shash); 474 ds = crypto_shash_digestsize(child_shash);
diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
index 0641185bd82f..51b20abac464 100644
--- a/drivers/crypto/omap-sham.c
+++ b/drivers/crypto/omap-sham.c
@@ -1055,7 +1055,6 @@ static int omap_sham_finish_hmac(struct ahash_request *req)
1055 SHASH_DESC_ON_STACK(shash, bctx->shash); 1055 SHASH_DESC_ON_STACK(shash, bctx->shash);
1056 1056
1057 shash->tfm = bctx->shash; 1057 shash->tfm = bctx->shash;
1058 shash->flags = 0; /* not CRYPTO_TFM_REQ_MAY_SLEEP */
1059 1058
1060 return crypto_shash_init(shash) ?: 1059 return crypto_shash_init(shash) ?:
1061 crypto_shash_update(shash, bctx->opad, bs) ?: 1060 crypto_shash_update(shash, bctx->opad, bs) ?:
@@ -1226,7 +1225,6 @@ static int omap_sham_shash_digest(struct crypto_shash *tfm, u32 flags,
1226 SHASH_DESC_ON_STACK(shash, tfm); 1225 SHASH_DESC_ON_STACK(shash, tfm);
1227 1226
1228 shash->tfm = tfm; 1227 shash->tfm = tfm;
1229 shash->flags = flags & CRYPTO_TFM_REQ_MAY_SLEEP;
1230 1228
1231 return crypto_shash_digest(shash, data, len, out); 1229 return crypto_shash_digest(shash, data, len, out);
1232} 1230}
diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
index 21e5cae0a1e0..e641481a3cd9 100644
--- a/drivers/crypto/padlock-sha.c
+++ b/drivers/crypto/padlock-sha.c
@@ -39,7 +39,6 @@ static int padlock_sha_init(struct shash_desc *desc)
39 struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm); 39 struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm);
40 40
41 dctx->fallback.tfm = ctx->fallback; 41 dctx->fallback.tfm = ctx->fallback;
42 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
43 return crypto_shash_init(&dctx->fallback); 42 return crypto_shash_init(&dctx->fallback);
44} 43}
45 44
@@ -48,7 +47,6 @@ static int padlock_sha_update(struct shash_desc *desc,
48{ 47{
49 struct padlock_sha_desc *dctx = shash_desc_ctx(desc); 48 struct padlock_sha_desc *dctx = shash_desc_ctx(desc);
50 49
51 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
52 return crypto_shash_update(&dctx->fallback, data, length); 50 return crypto_shash_update(&dctx->fallback, data, length);
53} 51}
54 52
@@ -65,7 +63,6 @@ static int padlock_sha_import(struct shash_desc *desc, const void *in)
65 struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm); 63 struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm);
66 64
67 dctx->fallback.tfm = ctx->fallback; 65 dctx->fallback.tfm = ctx->fallback;
68 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
69 return crypto_shash_import(&dctx->fallback, in); 66 return crypto_shash_import(&dctx->fallback, in);
70} 67}
71 68
@@ -91,7 +88,6 @@ static int padlock_sha1_finup(struct shash_desc *desc, const u8 *in,
91 unsigned int leftover; 88 unsigned int leftover;
92 int err; 89 int err;
93 90
94 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
95 err = crypto_shash_export(&dctx->fallback, &state); 91 err = crypto_shash_export(&dctx->fallback, &state);
96 if (err) 92 if (err)
97 goto out; 93 goto out;
@@ -153,7 +149,6 @@ static int padlock_sha256_finup(struct shash_desc *desc, const u8 *in,
153 unsigned int leftover; 149 unsigned int leftover;
154 int err; 150 int err;
155 151
156 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
157 err = crypto_shash_export(&dctx->fallback, &state); 152 err = crypto_shash_export(&dctx->fallback, &state);
158 if (err) 153 if (err)
159 goto out; 154 goto out;
diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c
index 975c75198f56..c8d401646902 100644
--- a/drivers/crypto/qat/qat_common/qat_algs.c
+++ b/drivers/crypto/qat/qat_common/qat_algs.c
@@ -164,7 +164,6 @@ static int qat_alg_do_precomputes(struct icp_qat_hw_auth_algo_blk *hash,
164 memset(ctx->ipad, 0, block_size); 164 memset(ctx->ipad, 0, block_size);
165 memset(ctx->opad, 0, block_size); 165 memset(ctx->opad, 0, block_size);
166 shash->tfm = ctx->hash_tfm; 166 shash->tfm = ctx->hash_tfm;
167 shash->flags = 0x0;
168 167
169 if (auth_keylen > block_size) { 168 if (auth_keylen > block_size) {
170 int ret = crypto_shash_digest(shash, auth_key, 169 int ret = crypto_shash_digest(shash, auth_key,
diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
index 1afdcb81d8ed..9ef25230c199 100644
--- a/drivers/crypto/s5p-sss.c
+++ b/drivers/crypto/s5p-sss.c
@@ -1534,7 +1534,6 @@ static int s5p_hash_shash_digest(struct crypto_shash *tfm, u32 flags,
1534 SHASH_DESC_ON_STACK(shash, tfm); 1534 SHASH_DESC_ON_STACK(shash, tfm);
1535 1535
1536 shash->tfm = tfm; 1536 shash->tfm = tfm;
1537 shash->flags = flags & ~CRYPTO_TFM_REQ_MAY_SLEEP;
1538 1537
1539 return crypto_shash_digest(shash, data, len, out); 1538 return crypto_shash_digest(shash, data, len, out);
1540} 1539}
diff --git a/drivers/crypto/vmx/ghash.c b/drivers/crypto/vmx/ghash.c
index 611ff591410e..b5a6883bb09e 100644
--- a/drivers/crypto/vmx/ghash.c
+++ b/drivers/crypto/vmx/ghash.c
@@ -101,7 +101,6 @@ static int p8_ghash_init(struct shash_desc *desc)
101 dctx->bytes = 0; 101 dctx->bytes = 0;
102 memset(dctx->shash, 0, GHASH_DIGEST_SIZE); 102 memset(dctx->shash, 0, GHASH_DIGEST_SIZE);
103 dctx->fallback_desc.tfm = ctx->fallback; 103 dctx->fallback_desc.tfm = ctx->fallback;
104 dctx->fallback_desc.flags = desc->flags;
105 return crypto_shash_init(&dctx->fallback_desc); 104 return crypto_shash_init(&dctx->fallback_desc);
106} 105}
107 106
diff --git a/drivers/infiniband/sw/rxe/rxe.h b/drivers/infiniband/sw/rxe/rxe.h
index 2e2dff478833..ecf6e659c0da 100644
--- a/drivers/infiniband/sw/rxe/rxe.h
+++ b/drivers/infiniband/sw/rxe/rxe.h
@@ -80,7 +80,6 @@ static inline u32 rxe_crc32(struct rxe_dev *rxe,
80 SHASH_DESC_ON_STACK(shash, rxe->tfm); 80 SHASH_DESC_ON_STACK(shash, rxe->tfm);
81 81
82 shash->tfm = rxe->tfm; 82 shash->tfm = rxe->tfm;
83 shash->flags = 0;
84 *(u32 *)shash_desc_ctx(shash) = crc; 83 *(u32 *)shash_desc_ctx(shash) = crc;
85 err = crypto_shash_update(shash, next, len); 84 err = crypto_shash_update(shash, next, len);
86 if (unlikely(err)) { 85 if (unlikely(err)) {
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index dd6565798778..9faed1c92b52 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -332,7 +332,6 @@ static int crypt_iv_essiv_init(struct crypt_config *cc)
332 int err; 332 int err;
333 333
334 desc->tfm = essiv->hash_tfm; 334 desc->tfm = essiv->hash_tfm;
335 desc->flags = 0;
336 335
337 err = crypto_shash_digest(desc, cc->key, cc->key_size, essiv->salt); 336 err = crypto_shash_digest(desc, cc->key, cc->key_size, essiv->salt);
338 shash_desc_zero(desc); 337 shash_desc_zero(desc);
@@ -606,7 +605,6 @@ static int crypt_iv_lmk_one(struct crypt_config *cc, u8 *iv,
606 int i, r; 605 int i, r;
607 606
608 desc->tfm = lmk->hash_tfm; 607 desc->tfm = lmk->hash_tfm;
609 desc->flags = 0;
610 608
611 r = crypto_shash_init(desc); 609 r = crypto_shash_init(desc);
612 if (r) 610 if (r)
@@ -768,7 +766,6 @@ static int crypt_iv_tcw_whitening(struct crypt_config *cc,
768 766
769 /* calculate crc32 for every 32bit part and xor it */ 767 /* calculate crc32 for every 32bit part and xor it */
770 desc->tfm = tcw->crc32_tfm; 768 desc->tfm = tcw->crc32_tfm;
771 desc->flags = 0;
772 for (i = 0; i < 4; i++) { 769 for (i = 0; i < 4; i++) {
773 r = crypto_shash_init(desc); 770 r = crypto_shash_init(desc);
774 if (r) 771 if (r)
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index d57d997a52c8..1366d886907c 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -532,7 +532,6 @@ static void section_mac(struct dm_integrity_c *ic, unsigned section, __u8 result
532 unsigned j, size; 532 unsigned j, size;
533 533
534 desc->tfm = ic->journal_mac; 534 desc->tfm = ic->journal_mac;
535 desc->flags = 0;
536 535
537 r = crypto_shash_init(desc); 536 r = crypto_shash_init(desc);
538 if (unlikely(r)) { 537 if (unlikely(r)) {
@@ -1278,7 +1277,6 @@ static void integrity_sector_checksum(struct dm_integrity_c *ic, sector_t sector
1278 unsigned digest_size; 1277 unsigned digest_size;
1279 1278
1280 req->tfm = ic->internal_hash; 1279 req->tfm = ic->internal_hash;
1281 req->flags = 0;
1282 1280
1283 r = crypto_shash_init(req); 1281 r = crypto_shash_init(req);
1284 if (unlikely(r < 0)) { 1282 if (unlikely(r < 0)) {
diff --git a/drivers/net/ppp/ppp_mppe.c b/drivers/net/ppp/ppp_mppe.c
index 7ccdc62c6052..ff61dd8748de 100644
--- a/drivers/net/ppp/ppp_mppe.c
+++ b/drivers/net/ppp/ppp_mppe.c
@@ -222,7 +222,6 @@ static void *mppe_alloc(unsigned char *options, int optlen)
222 goto out_free; 222 goto out_free;
223 } 223 }
224 state->sha1->tfm = shash; 224 state->sha1->tfm = shash;
225 state->sha1->flags = 0;
226 225
227 digestsize = crypto_shash_digestsize(shash); 226 digestsize = crypto_shash_digestsize(shash);
228 if (digestsize < MPPE_MAX_KEY_LEN) 227 if (digestsize < MPPE_MAX_KEY_LEN)
diff --git a/drivers/net/wireless/intersil/orinoco/mic.c b/drivers/net/wireless/intersil/orinoco/mic.c
index 67b0c05afbdb..a324bc4b7938 100644
--- a/drivers/net/wireless/intersil/orinoco/mic.c
+++ b/drivers/net/wireless/intersil/orinoco/mic.c
@@ -65,7 +65,6 @@ int orinoco_mic(struct crypto_shash *tfm_michael, u8 *key,
65 hdr[ETH_ALEN * 2 + 3] = 0; 65 hdr[ETH_ALEN * 2 + 3] = 0;
66 66
67 desc->tfm = tfm_michael; 67 desc->tfm = tfm_michael;
68 desc->flags = 0;
69 68
70 err = crypto_shash_setkey(tfm_michael, key, MIC_KEYLEN); 69 err = crypto_shash_setkey(tfm_michael, key, MIC_KEYLEN);
71 if (err) 70 if (err)
diff --git a/drivers/nfc/s3fwrn5/firmware.c b/drivers/nfc/s3fwrn5/firmware.c
index b7828fb252f2..b681073ae8ba 100644
--- a/drivers/nfc/s3fwrn5/firmware.c
+++ b/drivers/nfc/s3fwrn5/firmware.c
@@ -449,7 +449,6 @@ int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info)
449 SHASH_DESC_ON_STACK(desc, tfm); 449 SHASH_DESC_ON_STACK(desc, tfm);
450 450
451 desc->tfm = tfm; 451 desc->tfm = tfm;
452 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
453 452
454 ret = crypto_shash_digest(desc, fw->image, image_size, 453 ret = crypto_shash_digest(desc, fw->image, image_size,
455 hash_data); 454 hash_data);
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 06ebea0be118..122d4c0af363 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -219,7 +219,6 @@ michael_mic(u8 *key, u8 *data, unsigned int len, u8 priority, u8 *result)
219 } 219 }
220 220
221 desc->tfm = tfm; 221 desc->tfm = tfm;
222 desc->flags = 0;
223 222
224 ret = crypto_shash_init(desc); 223 ret = crypto_shash_init(desc);
225 if (ret < 0) 224 if (ret < 0)
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
index 55da8c9dfe50..a084e1501f9d 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
@@ -507,7 +507,6 @@ static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr,
507 int err; 507 int err;
508 508
509 desc->tfm = tfm_michael; 509 desc->tfm = tfm_michael;
510 desc->flags = 0;
511 510
512 if (crypto_shash_setkey(tfm_michael, key, 8)) 511 if (crypto_shash_setkey(tfm_michael, key, 8))
513 return -1; 512 return -1;
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c
index 829fa4bd253c..d67bb57994c4 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c
@@ -503,7 +503,6 @@ static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr,
503 int err; 503 int err;
504 504
505 desc->tfm = tfm_michael; 505 desc->tfm = tfm_michael;
506 desc->flags = 0;
507 506
508 if (crypto_shash_setkey(tfm_michael, key, 8)) 507 if (crypto_shash_setkey(tfm_michael, key, 8))
509 return -1; 508 return -1;
diff --git a/drivers/target/iscsi/iscsi_target_auth.c b/drivers/target/iscsi/iscsi_target_auth.c
index 4e680d753941..ca7d7e8aecc0 100644
--- a/drivers/target/iscsi/iscsi_target_auth.c
+++ b/drivers/target/iscsi/iscsi_target_auth.c
@@ -252,7 +252,6 @@ static int chap_server_compute_md5(
252 } 252 }
253 253
254 desc->tfm = tfm; 254 desc->tfm = tfm;
255 desc->flags = 0;
256 255
257 ret = crypto_shash_init(desc); 256 ret = crypto_shash_init(desc);
258 if (ret < 0) { 257 if (ret < 0) {
diff --git a/drivers/thunderbolt/domain.c b/drivers/thunderbolt/domain.c
index 7416bdbd8576..b7980c856898 100644
--- a/drivers/thunderbolt/domain.c
+++ b/drivers/thunderbolt/domain.c
@@ -678,7 +678,6 @@ int tb_domain_challenge_switch_key(struct tb *tb, struct tb_switch *sw)
678 } 678 }
679 679
680 shash->tfm = tfm; 680 shash->tfm = tfm;
681 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
682 681
683 memset(hmac, 0, sizeof(hmac)); 682 memset(hmac, 0, sizeof(hmac));
684 ret = crypto_shash_digest(shash, challenge, sizeof(hmac), hmac); 683 ret = crypto_shash_digest(shash, challenge, sizeof(hmac), hmac);
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index bee203055b30..1a6040998227 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -917,7 +917,6 @@ cifs_alloc_hash(const char *name,
917 } 917 }
918 918
919 (*sdesc)->shash.tfm = *shash; 919 (*sdesc)->shash.tfm = *shash;
920 (*sdesc)->shash.flags = 0x0;
921 return 0; 920 return 0;
922} 921}
923 922
diff --git a/fs/crypto/keyinfo.c b/fs/crypto/keyinfo.c
index 322ce9686bdb..2cb4956f8511 100644
--- a/fs/crypto/keyinfo.c
+++ b/fs/crypto/keyinfo.c
@@ -402,7 +402,6 @@ static int derive_essiv_salt(const u8 *key, int keysize, u8 *salt)
402 { 402 {
403 SHASH_DESC_ON_STACK(desc, tfm); 403 SHASH_DESC_ON_STACK(desc, tfm);
404 desc->tfm = tfm; 404 desc->tfm = tfm;
405 desc->flags = 0;
406 405
407 return crypto_shash_digest(desc, key, keysize, salt); 406 return crypto_shash_digest(desc, key, keysize, salt);
408 } 407 }
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index f664da55234e..491cf5baa8c2 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -68,7 +68,6 @@ static int ecryptfs_hash_digest(struct crypto_shash *tfm,
68 int err; 68 int err;
69 69
70 desc->tfm = tfm; 70 desc->tfm = tfm;
71 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
72 err = crypto_shash_digest(desc, src, len, dst); 71 err = crypto_shash_digest(desc, src, len, dst);
73 shash_desc_zero(desc); 72 shash_desc_zero(desc);
74 return err; 73 return err;
diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c
index e74fe84d0886..90fbac5d485b 100644
--- a/fs/ecryptfs/keystore.c
+++ b/fs/ecryptfs/keystore.c
@@ -769,7 +769,6 @@ ecryptfs_write_tag_70_packet(char *dest, size_t *remaining_bytes,
769 } 769 }
770 770
771 s->hash_desc->tfm = s->hash_tfm; 771 s->hash_desc->tfm = s->hash_tfm;
772 s->hash_desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
773 772
774 rc = crypto_shash_digest(s->hash_desc, 773 rc = crypto_shash_digest(s->hash_desc,
775 (u8 *)s->auth_tok->token.password.session_key_encryption_key, 774 (u8 *)s->auth_tok->token.password.session_key_encryption_key,
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 82ffdacdc7fa..0833b5fc0668 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2024,7 +2024,6 @@ static inline u32 ext4_chksum(struct ext4_sb_info *sbi, u32 crc,
2024 BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver)!=sizeof(desc.ctx)); 2024 BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver)!=sizeof(desc.ctx));
2025 2025
2026 desc.shash.tfm = sbi->s_chksum_driver; 2026 desc.shash.tfm = sbi->s_chksum_driver;
2027 desc.shash.flags = 0;
2028 *(u32 *)desc.ctx = crc; 2027 *(u32 *)desc.ctx = crc;
2029 2028
2030 BUG_ON(crypto_shash_update(&desc.shash, address, length)); 2029 BUG_ON(crypto_shash_update(&desc.shash, address, length));
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 87f75ebd2fd6..21b0ab6bd15a 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1422,7 +1422,6 @@ static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc,
1422 BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver) != sizeof(desc.ctx)); 1422 BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver) != sizeof(desc.ctx));
1423 1423
1424 desc.shash.tfm = sbi->s_chksum_driver; 1424 desc.shash.tfm = sbi->s_chksum_driver;
1425 desc.shash.flags = 0;
1426 *(u32 *)desc.ctx = crc; 1425 *(u32 *)desc.ctx = crc;
1427 1426
1428 err = crypto_shash_update(&desc.shash, address, length); 1427 err = crypto_shash_update(&desc.shash, address, length);
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
index 5188f9f70c78..8c8563441208 100644
--- a/fs/nfsd/nfs4recover.c
+++ b/fs/nfsd/nfs4recover.c
@@ -126,7 +126,6 @@ nfs4_make_rec_clidname(char *dname, const struct xdr_netobj *clname)
126 SHASH_DESC_ON_STACK(desc, tfm); 126 SHASH_DESC_ON_STACK(desc, tfm);
127 127
128 desc->tfm = tfm; 128 desc->tfm = tfm;
129 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
130 129
131 status = crypto_shash_digest(desc, clname->data, clname->len, 130 status = crypto_shash_digest(desc, clname->data, clname->len,
132 cksum.data); 131 cksum.data);
diff --git a/fs/ubifs/auth.c b/fs/ubifs/auth.c
index 5bf5fd08879e..b758004085c4 100644
--- a/fs/ubifs/auth.c
+++ b/fs/ubifs/auth.c
@@ -33,7 +33,6 @@ int __ubifs_node_calc_hash(const struct ubifs_info *c, const void *node,
33 int err; 33 int err;
34 34
35 shash->tfm = c->hash_tfm; 35 shash->tfm = c->hash_tfm;
36 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
37 36
38 err = crypto_shash_digest(shash, node, le32_to_cpu(ch->len), hash); 37 err = crypto_shash_digest(shash, node, le32_to_cpu(ch->len), hash);
39 if (err < 0) 38 if (err < 0)
@@ -56,7 +55,6 @@ static int ubifs_hash_calc_hmac(const struct ubifs_info *c, const u8 *hash,
56 int err; 55 int err;
57 56
58 shash->tfm = c->hmac_tfm; 57 shash->tfm = c->hmac_tfm;
59 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
60 58
61 err = crypto_shash_digest(shash, hash, c->hash_len, hmac); 59 err = crypto_shash_digest(shash, hash, c->hash_len, hmac);
62 if (err < 0) 60 if (err < 0)
@@ -88,7 +86,6 @@ int ubifs_prepare_auth_node(struct ubifs_info *c, void *node,
88 return -ENOMEM; 86 return -ENOMEM;
89 87
90 hash_desc->tfm = c->hash_tfm; 88 hash_desc->tfm = c->hash_tfm;
91 hash_desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
92 ubifs_shash_copy_state(c, inhash, hash_desc); 89 ubifs_shash_copy_state(c, inhash, hash_desc);
93 90
94 err = crypto_shash_final(hash_desc, hash); 91 err = crypto_shash_final(hash_desc, hash);
@@ -123,7 +120,6 @@ static struct shash_desc *ubifs_get_desc(const struct ubifs_info *c,
123 return ERR_PTR(-ENOMEM); 120 return ERR_PTR(-ENOMEM);
124 121
125 desc->tfm = tfm; 122 desc->tfm = tfm;
126 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
127 123
128 err = crypto_shash_init(desc); 124 err = crypto_shash_init(desc);
129 if (err) { 125 if (err) {
@@ -364,7 +360,6 @@ static int ubifs_node_calc_hmac(const struct ubifs_info *c, const void *node,
364 ubifs_assert(c, ofs_hmac + hmac_len < len); 360 ubifs_assert(c, ofs_hmac + hmac_len < len);
365 361
366 shash->tfm = c->hmac_tfm; 362 shash->tfm = c->hmac_tfm;
367 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
368 363
369 err = crypto_shash_init(shash); 364 err = crypto_shash_init(shash);
370 if (err) 365 if (err)
@@ -483,7 +478,6 @@ int ubifs_hmac_wkm(struct ubifs_info *c, u8 *hmac)
483 return 0; 478 return 0;
484 479
485 shash->tfm = c->hmac_tfm; 480 shash->tfm = c->hmac_tfm;
486 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
487 481
488 err = crypto_shash_init(shash); 482 err = crypto_shash_init(shash);
489 if (err) 483 if (err)
diff --git a/fs/ubifs/replay.c b/fs/ubifs/replay.c
index 0a0e65c07c6d..5c8a81a019a4 100644
--- a/fs/ubifs/replay.c
+++ b/fs/ubifs/replay.c
@@ -576,7 +576,6 @@ static int authenticate_sleb_hash(struct ubifs_info *c, struct shash_desc *log_h
576 SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm); 576 SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm);
577 577
578 hash_desc->tfm = c->hash_tfm; 578 hash_desc->tfm = c->hash_tfm;
579 hash_desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
580 579
581 ubifs_shash_copy_state(c, log_hash, hash_desc); 580 ubifs_shash_copy_state(c, log_hash, hash_desc);
582 return crypto_shash_final(hash_desc, hash); 581 return crypto_shash_final(hash_desc, hash);
@@ -587,7 +586,6 @@ static int authenticate_sleb_hmac(struct ubifs_info *c, u8 *hash, u8 *hmac)
587 SHASH_DESC_ON_STACK(hmac_desc, c->hmac_tfm); 586 SHASH_DESC_ON_STACK(hmac_desc, c->hmac_tfm);
588 587
589 hmac_desc->tfm = c->hmac_tfm; 588 hmac_desc->tfm = c->hmac_tfm;
590 hmac_desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
591 589
592 return crypto_shash_digest(hmac_desc, hash, c->hash_len, hmac); 590 return crypto_shash_digest(hmac_desc, hash, c->hash_len, hmac);
593} 591}
diff --git a/include/crypto/hash.h b/include/crypto/hash.h
index 3b31c1b349ae..d21bea2c4382 100644
--- a/include/crypto/hash.h
+++ b/include/crypto/hash.h
@@ -146,8 +146,6 @@ struct ahash_alg {
146 146
147struct shash_desc { 147struct shash_desc {
148 struct crypto_shash *tfm; 148 struct crypto_shash *tfm;
149 u32 flags;
150
151 void *__ctx[] CRYPTO_MINALIGN_ATTR; 149 void *__ctx[] CRYPTO_MINALIGN_ATTR;
152}; 150};
153 151
@@ -819,6 +817,7 @@ static inline void *shash_desc_ctx(struct shash_desc *desc)
819 * cipher handle must point to a keyed message digest cipher in order for this 817 * cipher handle must point to a keyed message digest cipher in order for this
820 * function to succeed. 818 * function to succeed.
821 * 819 *
820 * Context: Any context.
822 * Return: 0 if the setting of the key was successful; < 0 if an error occurred 821 * Return: 0 if the setting of the key was successful; < 0 if an error occurred
823 */ 822 */
824int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key, 823int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key,
@@ -835,6 +834,7 @@ int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key,
835 * crypto_shash_update and crypto_shash_final. The parameters have the same 834 * crypto_shash_update and crypto_shash_final. The parameters have the same
836 * meaning as discussed for those separate three functions. 835 * meaning as discussed for those separate three functions.
837 * 836 *
837 * Context: Any context.
838 * Return: 0 if the message digest creation was successful; < 0 if an error 838 * Return: 0 if the message digest creation was successful; < 0 if an error
839 * occurred 839 * occurred
840 */ 840 */
@@ -850,6 +850,7 @@ int crypto_shash_digest(struct shash_desc *desc, const u8 *data,
850 * caller-allocated output buffer out which must have sufficient size (e.g. by 850 * caller-allocated output buffer out which must have sufficient size (e.g. by
851 * calling crypto_shash_descsize). 851 * calling crypto_shash_descsize).
852 * 852 *
853 * Context: Any context.
853 * Return: 0 if the export creation was successful; < 0 if an error occurred 854 * Return: 0 if the export creation was successful; < 0 if an error occurred
854 */ 855 */
855static inline int crypto_shash_export(struct shash_desc *desc, void *out) 856static inline int crypto_shash_export(struct shash_desc *desc, void *out)
@@ -866,6 +867,7 @@ static inline int crypto_shash_export(struct shash_desc *desc, void *out)
866 * the input buffer. That buffer should have been generated with the 867 * the input buffer. That buffer should have been generated with the
867 * crypto_ahash_export function. 868 * crypto_ahash_export function.
868 * 869 *
870 * Context: Any context.
869 * Return: 0 if the import was successful; < 0 if an error occurred 871 * Return: 0 if the import was successful; < 0 if an error occurred
870 */ 872 */
871static inline int crypto_shash_import(struct shash_desc *desc, const void *in) 873static inline int crypto_shash_import(struct shash_desc *desc, const void *in)
@@ -886,6 +888,7 @@ static inline int crypto_shash_import(struct shash_desc *desc, const void *in)
886 * operational state handle. Any potentially existing state created by 888 * operational state handle. Any potentially existing state created by
887 * previous operations is discarded. 889 * previous operations is discarded.
888 * 890 *
891 * Context: Any context.
889 * Return: 0 if the message digest initialization was successful; < 0 if an 892 * Return: 0 if the message digest initialization was successful; < 0 if an
890 * error occurred 893 * error occurred
891 */ 894 */
@@ -907,6 +910,7 @@ static inline int crypto_shash_init(struct shash_desc *desc)
907 * 910 *
908 * Updates the message digest state of the operational state handle. 911 * Updates the message digest state of the operational state handle.
909 * 912 *
913 * Context: Any context.
910 * Return: 0 if the message digest update was successful; < 0 if an error 914 * Return: 0 if the message digest update was successful; < 0 if an error
911 * occurred 915 * occurred
912 */ 916 */
@@ -923,6 +927,7 @@ int crypto_shash_update(struct shash_desc *desc, const u8 *data,
923 * into the output buffer. The caller must ensure that the output buffer is 927 * into the output buffer. The caller must ensure that the output buffer is
924 * large enough by using crypto_shash_digestsize. 928 * large enough by using crypto_shash_digestsize.
925 * 929 *
930 * Context: Any context.
926 * Return: 0 if the message digest creation was successful; < 0 if an error 931 * Return: 0 if the message digest creation was successful; < 0 if an error
927 * occurred 932 * occurred
928 */ 933 */
@@ -939,6 +944,7 @@ int crypto_shash_final(struct shash_desc *desc, u8 *out);
939 * crypto_shash_update and crypto_shash_final. The parameters have the same 944 * crypto_shash_update and crypto_shash_final. The parameters have the same
940 * meaning as discussed for those separate functions. 945 * meaning as discussed for those separate functions.
941 * 946 *
947 * Context: Any context.
942 * Return: 0 if the message digest creation was successful; < 0 if an error 948 * Return: 0 if the message digest creation was successful; < 0 if an error
943 * occurred 949 * occurred
944 */ 950 */
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index 0f919d5fe84f..c2ffff5f9ae2 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -1606,7 +1606,6 @@ static inline u32 jbd2_chksum(journal_t *journal, u32 crc,
1606 JBD_MAX_CHECKSUM_SIZE); 1606 JBD_MAX_CHECKSUM_SIZE);
1607 1607
1608 desc.shash.tfm = journal->j_chksum_driver; 1608 desc.shash.tfm = journal->j_chksum_driver;
1609 desc.shash.flags = 0;
1610 *(u32 *)desc.ctx = crc; 1609 *(u32 *)desc.ctx = crc;
1611 1610
1612 err = crypto_shash_update(&desc.shash, address, length); 1611 err = crypto_shash_update(&desc.shash, address, length);
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
index f1d0e00a3971..f7fb8f6a688f 100644
--- a/kernel/kexec_file.c
+++ b/kernel/kexec_file.c
@@ -688,7 +688,6 @@ static int kexec_calculate_store_digests(struct kimage *image)
688 goto out_free_desc; 688 goto out_free_desc;
689 689
690 desc->tfm = tfm; 690 desc->tfm = tfm;
691 desc->flags = 0;
692 691
693 ret = crypto_shash_init(desc); 692 ret = crypto_shash_init(desc);
694 if (ret < 0) 693 if (ret < 0)
diff --git a/lib/crc-t10dif.c b/lib/crc-t10dif.c
index 4d0d47c1ffbd..e89ebfdbb0fc 100644
--- a/lib/crc-t10dif.c
+++ b/lib/crc-t10dif.c
@@ -69,7 +69,6 @@ __u16 crc_t10dif_update(__u16 crc, const unsigned char *buffer, size_t len)
69 69
70 rcu_read_lock(); 70 rcu_read_lock();
71 desc.shash.tfm = rcu_dereference(crct10dif_tfm); 71 desc.shash.tfm = rcu_dereference(crct10dif_tfm);
72 desc.shash.flags = 0;
73 *(__u16 *)desc.ctx = crc; 72 *(__u16 *)desc.ctx = crc;
74 73
75 err = crypto_shash_update(&desc.shash, buffer, len); 74 err = crypto_shash_update(&desc.shash, buffer, len);
diff --git a/lib/digsig.c b/lib/digsig.c
index 6ba6fcd92dd1..3b0a579bdcdf 100644
--- a/lib/digsig.c
+++ b/lib/digsig.c
@@ -240,7 +240,6 @@ int digsig_verify(struct key *keyring, const char *sig, int siglen,
240 goto err; 240 goto err;
241 241
242 desc->tfm = shash; 242 desc->tfm = shash;
243 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
244 243
245 crypto_shash_init(desc); 244 crypto_shash_init(desc);
246 crypto_shash_update(desc, data, datalen); 245 crypto_shash_update(desc, data, datalen);
diff --git a/lib/libcrc32c.c b/lib/libcrc32c.c
index f0a2934605bf..4e9829c4d64c 100644
--- a/lib/libcrc32c.c
+++ b/lib/libcrc32c.c
@@ -47,7 +47,6 @@ u32 crc32c(u32 crc, const void *address, unsigned int length)
47 int err; 47 int err;
48 48
49 shash->tfm = tfm; 49 shash->tfm = tfm;
50 shash->flags = 0;
51 *ctx = crc; 50 *ctx = crc;
52 51
53 err = crypto_shash_update(shash, address, length); 52 err = crypto_shash_update(shash, address, length);
diff --git a/net/bluetooth/amp.c b/net/bluetooth/amp.c
index 78bec8df8525..aaa39409eeb7 100644
--- a/net/bluetooth/amp.c
+++ b/net/bluetooth/amp.c
@@ -161,7 +161,6 @@ static int hmac_sha256(u8 *key, u8 ksize, char *plaintext, u8 psize, u8 *output)
161 } 161 }
162 162
163 shash->tfm = tfm; 163 shash->tfm = tfm;
164 shash->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
165 164
166 ret = crypto_shash_digest(shash, plaintext, psize, output); 165 ret = crypto_shash_digest(shash, plaintext, psize, output);
167 166
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 621146d04c03..e68c715f8d37 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -183,7 +183,6 @@ static int aes_cmac(struct crypto_shash *tfm, const u8 k[16], const u8 *m,
183 } 183 }
184 184
185 desc->tfm = tfm; 185 desc->tfm = tfm;
186 desc->flags = 0;
187 186
188 /* Swap key and message from LSB to MSB */ 187 /* Swap key and message from LSB to MSB */
189 swap_buf(k, tmp, 16); 188 swap_buf(k, tmp, 16);
diff --git a/net/sctp/auth.c b/net/sctp/auth.c
index 39d72e58b8e5..31569f4809f6 100644
--- a/net/sctp/auth.c
+++ b/net/sctp/auth.c
@@ -760,7 +760,6 @@ void sctp_auth_calculate_hmac(const struct sctp_association *asoc,
760 SHASH_DESC_ON_STACK(desc, tfm); 760 SHASH_DESC_ON_STACK(desc, tfm);
761 761
762 desc->tfm = tfm; 762 desc->tfm = tfm;
763 desc->flags = 0;
764 crypto_shash_digest(desc, (u8 *)auth, 763 crypto_shash_digest(desc, (u8 *)auth,
765 end - (unsigned char *)auth, digest); 764 end - (unsigned char *)auth, digest);
766 shash_desc_zero(desc); 765 shash_desc_zero(desc);
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index d05c57664e36..72e74503f9fc 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1684,7 +1684,6 @@ static struct sctp_cookie_param *sctp_pack_cookie(
1684 1684
1685 /* Sign the message. */ 1685 /* Sign the message. */
1686 desc->tfm = sctp_sk(ep->base.sk)->hmac; 1686 desc->tfm = sctp_sk(ep->base.sk)->hmac;
1687 desc->flags = 0;
1688 1687
1689 err = crypto_shash_setkey(desc->tfm, ep->secret_key, 1688 err = crypto_shash_setkey(desc->tfm, ep->secret_key,
1690 sizeof(ep->secret_key)) ?: 1689 sizeof(ep->secret_key)) ?:
@@ -1755,7 +1754,6 @@ struct sctp_association *sctp_unpack_cookie(
1755 int err; 1754 int err;
1756 1755
1757 desc->tfm = sctp_sk(ep->base.sk)->hmac; 1756 desc->tfm = sctp_sk(ep->base.sk)->hmac;
1758 desc->flags = 0;
1759 1757
1760 err = crypto_shash_setkey(desc->tfm, ep->secret_key, 1758 err = crypto_shash_setkey(desc->tfm, ep->secret_key,
1761 sizeof(ep->secret_key)) ?: 1759 sizeof(ep->secret_key)) ?:
diff --git a/net/sunrpc/auth_gss/gss_krb5_crypto.c b/net/sunrpc/auth_gss/gss_krb5_crypto.c
index 4f43383971ba..6f2d30d7b766 100644
--- a/net/sunrpc/auth_gss/gss_krb5_crypto.c
+++ b/net/sunrpc/auth_gss/gss_krb5_crypto.c
@@ -977,7 +977,6 @@ krb5_rc4_setup_seq_key(struct krb5_ctx *kctx,
977 } 977 }
978 978
979 desc->tfm = hmac; 979 desc->tfm = hmac;
980 desc->flags = 0;
981 980
982 /* Compute intermediate Kseq from session key */ 981 /* Compute intermediate Kseq from session key */
983 err = crypto_shash_setkey(hmac, kctx->Ksess, kctx->gk5e->keylength); 982 err = crypto_shash_setkey(hmac, kctx->Ksess, kctx->gk5e->keylength);
@@ -1045,7 +1044,6 @@ krb5_rc4_setup_enc_key(struct krb5_ctx *kctx,
1045 } 1044 }
1046 1045
1047 desc->tfm = hmac; 1046 desc->tfm = hmac;
1048 desc->flags = 0;
1049 1047
1050 /* Compute intermediate Kcrypt from session key */ 1048 /* Compute intermediate Kcrypt from session key */
1051 for (i = 0; i < kctx->gk5e->keylength; i++) 1049 for (i = 0; i < kctx->gk5e->keylength; i++)
diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
index 56cc85c5bc06..6e5d6d240215 100644
--- a/net/sunrpc/auth_gss/gss_krb5_mech.c
+++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
@@ -438,7 +438,6 @@ context_derive_keys_rc4(struct krb5_ctx *ctx)
438 } 438 }
439 439
440 desc->tfm = hmac; 440 desc->tfm = hmac;
441 desc->flags = 0;
442 441
443 err = crypto_shash_digest(desc, sigkeyconstant, slen, ctx->cksum); 442 err = crypto_shash_digest(desc, sigkeyconstant, slen, ctx->cksum);
444 kzfree(desc); 443 kzfree(desc);
diff --git a/net/wireless/lib80211_crypt_tkip.c b/net/wireless/lib80211_crypt_tkip.c
index 35f06563207d..11eaa5956f00 100644
--- a/net/wireless/lib80211_crypt_tkip.c
+++ b/net/wireless/lib80211_crypt_tkip.c
@@ -501,7 +501,6 @@ static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr,
501 } 501 }
502 502
503 desc->tfm = tfm_michael; 503 desc->tfm = tfm_michael;
504 desc->flags = 0;
505 504
506 if (crypto_shash_setkey(tfm_michael, key, 8)) 505 if (crypto_shash_setkey(tfm_michael, key, 8))
507 return -1; 506 return -1;
diff --git a/security/apparmor/crypto.c b/security/apparmor/crypto.c
index af03d98c7552..baba63bc66b1 100644
--- a/security/apparmor/crypto.c
+++ b/security/apparmor/crypto.c
@@ -43,7 +43,6 @@ char *aa_calc_hash(void *data, size_t len)
43 goto fail; 43 goto fail;
44 44
45 desc->tfm = apparmor_tfm; 45 desc->tfm = apparmor_tfm;
46 desc->flags = 0;
47 46
48 error = crypto_shash_init(desc); 47 error = crypto_shash_init(desc);
49 if (error) 48 if (error)
@@ -81,7 +80,6 @@ int aa_calc_profile_hash(struct aa_profile *profile, u32 version, void *start,
81 goto fail; 80 goto fail;
82 81
83 desc->tfm = apparmor_tfm; 82 desc->tfm = apparmor_tfm;
84 desc->flags = 0;
85 83
86 error = crypto_shash_init(desc); 84 error = crypto_shash_init(desc);
87 if (error) 85 if (error)
diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
index c37d08118af5..e11564eb645b 100644
--- a/security/integrity/evm/evm_crypto.c
+++ b/security/integrity/evm/evm_crypto.c
@@ -124,7 +124,6 @@ out:
124 return ERR_PTR(-ENOMEM); 124 return ERR_PTR(-ENOMEM);
125 125
126 desc->tfm = *tfm; 126 desc->tfm = *tfm;
127 desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
128 127
129 rc = crypto_shash_init(desc); 128 rc = crypto_shash_init(desc);
130 if (rc) { 129 if (rc) {
diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 16a4f45863b1..a32878e10ebc 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -333,7 +333,6 @@ static int ima_calc_file_hash_tfm(struct file *file,
333 SHASH_DESC_ON_STACK(shash, tfm); 333 SHASH_DESC_ON_STACK(shash, tfm);
334 334
335 shash->tfm = tfm; 335 shash->tfm = tfm;
336 shash->flags = 0;
337 336
338 hash->length = crypto_shash_digestsize(tfm); 337 hash->length = crypto_shash_digestsize(tfm);
339 338
@@ -469,7 +468,6 @@ static int ima_calc_field_array_hash_tfm(struct ima_field_data *field_data,
469 int rc, i; 468 int rc, i;
470 469
471 shash->tfm = tfm; 470 shash->tfm = tfm;
472 shash->flags = 0;
473 471
474 hash->length = crypto_shash_digestsize(tfm); 472 hash->length = crypto_shash_digestsize(tfm);
475 473
@@ -591,7 +589,6 @@ static int calc_buffer_shash_tfm(const void *buf, loff_t size,
591 int rc; 589 int rc;
592 590
593 shash->tfm = tfm; 591 shash->tfm = tfm;
594 shash->flags = 0;
595 592
596 hash->length = crypto_shash_digestsize(tfm); 593 hash->length = crypto_shash_digestsize(tfm);
597 594
@@ -664,7 +661,6 @@ static int __init ima_calc_boot_aggregate_tfm(char *digest,
664 SHASH_DESC_ON_STACK(shash, tfm); 661 SHASH_DESC_ON_STACK(shash, tfm);
665 662
666 shash->tfm = tfm; 663 shash->tfm = tfm;
667 shash->flags = 0;
668 664
669 rc = crypto_shash_init(shash); 665 rc = crypto_shash_init(shash);
670 if (rc != 0) 666 if (rc != 0)
diff --git a/security/keys/dh.c b/security/keys/dh.c
index 711e89d8c415..23f95dec771b 100644
--- a/security/keys/dh.c
+++ b/security/keys/dh.c
@@ -112,7 +112,6 @@ static int kdf_alloc(struct kdf_sdesc **sdesc_ret, char *hashname)
112 if (!sdesc) 112 if (!sdesc)
113 goto out_free_tfm; 113 goto out_free_tfm;
114 sdesc->shash.tfm = tfm; 114 sdesc->shash.tfm = tfm;
115 sdesc->shash.flags = 0x0;
116 115
117 *sdesc_ret = sdesc; 116 *sdesc_ret = sdesc;
118 117
diff --git a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c
index 347108f660a1..1b1456b21a93 100644
--- a/security/keys/encrypted-keys/encrypted.c
+++ b/security/keys/encrypted-keys/encrypted.c
@@ -333,7 +333,6 @@ static int calc_hash(struct crypto_shash *tfm, u8 *digest,
333 int err; 333 int err;
334 334
335 desc->tfm = tfm; 335 desc->tfm = tfm;
336 desc->flags = 0;
337 336
338 err = crypto_shash_digest(desc, buf, buflen, digest); 337 err = crypto_shash_digest(desc, buf, buflen, digest);
339 shash_desc_zero(desc); 338 shash_desc_zero(desc);
diff --git a/security/keys/trusted.c b/security/keys/trusted.c
index bcc9c6ead7fd..45ffd9e53937 100644
--- a/security/keys/trusted.c
+++ b/security/keys/trusted.c
@@ -55,7 +55,6 @@ static struct sdesc *init_sdesc(struct crypto_shash *alg)
55 if (!sdesc) 55 if (!sdesc)
56 return ERR_PTR(-ENOMEM); 56 return ERR_PTR(-ENOMEM);
57 sdesc->shash.tfm = alg; 57 sdesc->shash.tfm = alg;
58 sdesc->shash.flags = 0x0;
59 return sdesc; 58 return sdesc;
60} 59}
61 60