Re: [PATCH 1/4] s390/crypto: Replace cond_resched() with schedule()

From: Harald Freudenberger

Date: Tue Jul 28 2026 - 03:08:30 EST


On 2026-07-27 18:24, Heiko Carstens wrote:
The comment for all cond_resched() calls in crypto code says that the
process should be scheduled away to avoid instant re-invocation of a
callback. This is not what cond_resched() would do or did.

Replace cond_resched() with a call to schedule() which comes closer, but
it looks more like this code wants an msleep() call.

Note that with [1] cond_resched() is always compiled away and becomes a
no-op.

[1] commit 7dadeaa6e851 ("sched: Further restrict the preemption modes")

Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
---
arch/s390/crypto/paes_s390.c | 8 ++++----
arch/s390/crypto/phmac_s390.c | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/s390/crypto/paes_s390.c b/arch/s390/crypto/paes_s390.c
index 8cfe6166c193..d02de945f864 100644
--- a/arch/s390/crypto/paes_s390.c
+++ b/arch/s390/crypto/paes_s390.c
@@ -555,7 +555,7 @@ static int ecb_paes_do_one_request(struct
crypto_engine *engine, void *areq)
* To avoid immediately re-invocation of this callback,
* tell the scheduler to voluntarily give up the CPU here.
*/
- cond_resched();
+ schedule();
pr_debug("rescheduling request\n");
return -ENOSPC;
} else if (rc) {
@@ -821,7 +821,7 @@ static int cbc_paes_do_one_request(struct
crypto_engine *engine, void *areq)
* To avoid immediately re-invocation of this callback,
* tell the scheduler to voluntarily give up the CPU here.
*/
- cond_resched();
+ schedule();
pr_debug("rescheduling request\n");
return -ENOSPC;
} else if (rc) {
@@ -1129,7 +1129,7 @@ static int ctr_paes_do_one_request(struct
crypto_engine *engine, void *areq)
* To avoid immediately re-invocation of this callback,
* tell the scheduler to voluntarily give up the CPU here.
*/
- cond_resched();
+ schedule();
pr_debug("rescheduling request\n");
return -ENOSPC;
} else if (rc) {
@@ -1572,7 +1572,7 @@ static int xts_paes_do_one_request(struct
crypto_engine *engine, void *areq)
* To avoid immediately re-invocation of this callback,
* tell the scheduler to voluntarily give up the CPU here.
*/
- cond_resched();
+ schedule();
pr_debug("rescheduling request\n");
return -ENOSPC;
} else if (rc) {
diff --git a/arch/s390/crypto/phmac_s390.c b/arch/s390/crypto/phmac_s390.c
index 03ca33ffe6cc..bddfdcee6cb3 100644
--- a/arch/s390/crypto/phmac_s390.c
+++ b/arch/s390/crypto/phmac_s390.c
@@ -895,7 +895,7 @@ static int phmac_do_one_request(struct
crypto_engine *engine, void *areq)
* tell scheduler to voluntarily give up the CPU here.
*/
pr_debug("rescheduling request\n");
- cond_resched();
+ schedule();
return -ENOSPC;
} else if (rc) {
hwh_advance(hwh, rc);
@@ -916,7 +916,7 @@ static int phmac_do_one_request(struct
crypto_engine *engine, void *areq)
* tell scheduler to voluntarily give up the CPU here.
*/
pr_debug("rescheduling request\n");
- cond_resched();
+ schedule();
return -ENOSPC;
}
break;

Ok for me but we agreed to have all this code going via Herbert Xu.
So please address this patch to Herbert and the crypto mailing list.
And then I'll add my Reviewed-by.