From: sashiko-bot@kernel.org
To: "Harald Freudenberger" <freude@linux.ibm.com>
Cc: "Heiko Carstens" <hca@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
linux-s390@vger.kernel.org, "Vasily Gorbik" <gor@linux.ibm.com>
Subject: Re: [PATCH v6 3/9] s390/crypto: Fix use of mutex in atomic context in PAES
Date: Fri, 21 Aug 2026 08:56:35 +0000 [thread overview]
Message-ID: <20260821085635.D6BC61F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260821084648.23222-4-freude@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] The `aes_s390.c` module contains the exact same locking bug in atomic context that this patch fixes in `paes_s390.c`. The `ctr_aes_crypt()` function uses `mutex_trylock(&ctrblk_lock)` and subsequently calls `mutex_unlock(&ctrblk_lock)`. As the patch's commit message notes, mutexes are not safe to use in atomic or interrupt context. Synchronous skcipher algorithms like `ctr-aes-s390` can be invoked directly from `softirq` context (e.g., by the IPsec stack). Calling `mutex_unlock()` in `softirq` is a strict violation of kernel locking rules.
--
--- Patch [3]: [PATCH v6 3/9] s390/crypto: Fix use of mutex in atomic context in PAES ---
commit 425e8f1d3532a176433992d286f917e0fd14ff9e
Author: Harald Freudenberger <freude@linux.ibm.com>
s390/crypto: Fix use of mutex in atomic context in PAES
This commit fixes a locking issue in the PAES CTR implementation where a
mutex was used in atomic or interrupt context. It replaces the mutex with
a binary semaphore which is safe to use in such environments.
> diff --git a/arch/s390/crypto/paes_s390.c b/arch/s390/crypto/paes_s390.c
> --- a/arch/s390/crypto/paes_s390.c
> +++ b/arch/s390/crypto/paes_s390.c
[ ... ]
> @@ -45,7 +45,7 @@ module_param_named(clrkey, pkey_clrkey_allowed, bool, 0444);
> MODULE_PARM_DESC(clrkey, "Allow clear key material (default N)");
>
> static u8 *ctrblk;
> -static DEFINE_MUTEX(ctrblk_lock);
> +static DEFINE_SEMAPHORE(ctrblk_sem, 1);
[Severity: High]
This isn't a bug introduced by this patch, but arch/s390/crypto/aes_s390.c
appears to have the exact same bug that this patch is fixing here.
Looking at ctr_aes_crypt() in aes_s390.c:
locked = mutex_trylock(&ctrblk_lock);
ret = skcipher_walk_virt(&walk, req, false);
while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) {
...
}
if (locked)
mutex_unlock(&ctrblk_lock);
Since synchronous skcipher algorithms like ctr-aes-s390 can be invoked from
softirq context (such as by the IPsec stack), would calling mutex_unlock()
here trigger a lockdep splat or crash, especially on PREEMPT_RT where
mutex_unlock() must be called from process context?
Does aes_s390.c also need to be converted to use a binary semaphore?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260821084648.23222-1-freude@linux.ibm.com?part=3
next prev parent reply other threads:[~2026-08-21 8:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 8:46 [PATCH v6 0/9] Fixes and rework for paes_s390 and phmac_s390 Harald Freudenberger
2026-08-21 8:46 ` [PATCH v6 1/9] s390/crypto: Fix return code handling at skcipher_walk_done in PAES algorithms Harald Freudenberger
2026-08-21 8:57 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 2/9] s390/crypto: Fix missing scrub of temp buffers with PAES algorithm Harald Freudenberger
2026-08-21 8:58 ` sashiko-bot
2026-08-21 9:04 ` Harald Freudenberger
2026-08-21 8:46 ` [PATCH v6 3/9] s390/crypto: Fix use of mutex in atomic context in PAES Harald Freudenberger
2026-08-21 8:56 ` sashiko-bot [this message]
2026-08-21 9:01 ` Harald Freudenberger
2026-08-21 8:46 ` [PATCH v6 4/9] s390/crypto: Fix missing cra_flags in paes_s390 Harald Freudenberger
2026-08-21 8:52 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 5/9] s390/crypto: Fix handling of EBUSY in PAES when req is pushed to crypto engine Harald Freudenberger
2026-08-21 10:08 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 6/9] s390/crypto: Fix handling of EBUSY in PHMAC " Harald Freudenberger
2026-08-21 9:00 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 7/9] s390/crypto: Fix wrong return code to engine in asynch callbacks Harald Freudenberger
2026-08-21 8:54 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 8/9] s390/crypto: Map EBUSY to EIO when key conversion fails repeatedly Harald Freudenberger
2026-08-21 8:59 ` sashiko-bot
2026-08-21 8:46 ` [PATCH v6 9/9] s390/crypto: Enable CONTEXT_ANALYSIS Harald Freudenberger
2026-08-21 8:55 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260821085635.D6BC61F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.