summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2023-05-07 10:57:14 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2023-05-07 10:57:14 -0700
commit6f69c981811c8b019d7882839e31c34ea8330860 (patch)
tree819284601e1f68d3231baaad10b0f375b57d8a77
parent63342b1dd5f884d97b41b0cd04fae01a69e0a762 (diff)
parentb8969a1b69672b163d057e7745ebc915df689211 (diff)
Merge tag 'v6.4-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu: - A long-standing bug in crypto_engine - A buggy but harmless check in the sun8i-ss driver - A regression in the CRYPTO_USER interface * tag 'v6.4-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: api - Fix CRYPTO_USER checks for report function crypto: engine - fix crypto_queue backlog handling crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs()
-rw-r--r--crypto/acompress.c2
-rw-r--r--crypto/aead.c2
-rw-r--r--crypto/ahash.c2
-rw-r--r--crypto/akcipher.c2
-rw-r--r--crypto/algapi.c3
-rw-r--r--crypto/crypto_engine.c6
-rw-r--r--crypto/kpp.c2
-rw-r--r--crypto/rng.c2
-rw-r--r--crypto/scompress.c2
-rw-r--r--crypto/shash.c2
-rw-r--r--crypto/skcipher.c2
-rw-r--r--drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c2
12 files changed, 16 insertions, 13 deletions
diff --git a/crypto/acompress.c b/crypto/acompress.c
index 82a290df2822..1c682810a484 100644
--- a/crypto/acompress.c
+++ b/crypto/acompress.c
@@ -125,7 +125,7 @@ static const struct crypto_type crypto_acomp_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_acomp_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_acomp_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/aead.c b/crypto/aead.c
index ffc48a7dfb34..d5ba204ebdbf 100644
--- a/crypto/aead.c
+++ b/crypto/aead.c
@@ -242,7 +242,7 @@ static const struct crypto_type crypto_aead_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_aead_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_aead_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/ahash.c b/crypto/ahash.c
index b8a607928e72..324651040446 100644
--- a/crypto/ahash.c
+++ b/crypto/ahash.c
@@ -509,7 +509,7 @@ static const struct crypto_type crypto_ahash_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_ahash_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_ahash_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/akcipher.c b/crypto/akcipher.c
index 186e762b509a..7960ceb528c3 100644
--- a/crypto/akcipher.c
+++ b/crypto/akcipher.c
@@ -98,7 +98,7 @@ static const struct crypto_type crypto_akcipher_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_akcipher_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_akcipher_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/algapi.c b/crypto/algapi.c
index d7eb8f9e9883..5e7cd603d489 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -961,6 +961,9 @@ EXPORT_SYMBOL_GPL(crypto_enqueue_request);
void crypto_enqueue_request_head(struct crypto_queue *queue,
struct crypto_async_request *request)
{
+ if (unlikely(queue->qlen >= queue->max_qlen))
+ queue->backlog = queue->backlog->prev;
+
queue->qlen++;
list_add(&request->list, &queue->list);
}
diff --git a/crypto/crypto_engine.c b/crypto/crypto_engine.c
index 21f791615114..74fcc0897041 100644
--- a/crypto/crypto_engine.c
+++ b/crypto/crypto_engine.c
@@ -129,9 +129,6 @@ start_request:
if (!engine->retry_support)
engine->cur_req = async_req;
- if (backlog)
- crypto_request_complete(backlog, -EINPROGRESS);
-
if (engine->busy)
was_busy = true;
else
@@ -217,6 +214,9 @@ req_err_2:
crypto_request_complete(async_req, ret);
retry:
+ if (backlog)
+ crypto_request_complete(backlog, -EINPROGRESS);
+
/* If retry mechanism is supported, send new requests to engine */
if (engine->retry_support) {
spin_lock_irqsave(&engine->queue_lock, flags);
diff --git a/crypto/kpp.c b/crypto/kpp.c
index 74f2e8e918fa..33d44e59387f 100644
--- a/crypto/kpp.c
+++ b/crypto/kpp.c
@@ -96,7 +96,7 @@ static const struct crypto_type crypto_kpp_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_kpp_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_kpp_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/rng.c b/crypto/rng.c
index ffde0f64fb25..279dffdebf59 100644
--- a/crypto/rng.c
+++ b/crypto/rng.c
@@ -118,7 +118,7 @@ static const struct crypto_type crypto_rng_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_rng_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_rng_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/scompress.c b/crypto/scompress.c
index 24138b42a648..442a82c9de7d 100644
--- a/crypto/scompress.c
+++ b/crypto/scompress.c
@@ -240,7 +240,7 @@ static const struct crypto_type crypto_scomp_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_scomp_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_scomp_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/shash.c b/crypto/shash.c
index 5845b7d59b2f..717b42df3495 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -548,7 +548,7 @@ static const struct crypto_type crypto_shash_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_shash_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_shash_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/crypto/skcipher.c b/crypto/skcipher.c
index 6caca02d7e55..7b275716cf4e 100644
--- a/crypto/skcipher.c
+++ b/crypto/skcipher.c
@@ -776,7 +776,7 @@ static const struct crypto_type crypto_skcipher_type = {
#ifdef CONFIG_PROC_FS
.show = crypto_skcipher_show,
#endif
-#ifdef CONFIG_CRYPTO_USER
+#if IS_ENABLED(CONFIG_CRYPTO_USER)
.report = crypto_skcipher_report,
#endif
#ifdef CONFIG_CRYPTO_STATS
diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
index 83c6dfad77e1..16966cc94e24 100644
--- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
+++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
@@ -151,7 +151,7 @@ static int sun8i_ss_setup_ivs(struct skcipher_request *areq)
}
rctx->p_iv[i] = a;
/* we need to setup all others IVs only in the decrypt way */
- if (rctx->op_dir & SS_ENCRYPTION)
+ if (rctx->op_dir == SS_ENCRYPTION)
return 0;
todo = min(len, sg_dma_len(sg));
len -= todo;