crypto: pcrypt: restore callback for non-parallel fallback
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 crypto: pcrypt: restore callback for non-parallel fallback
From: Ruijie Li <[email protected]>
pcrypt installs pcrypt_aead_done() on the child AEAD request before trying to submit it through padata. If padata_do_parallel() returns -EBUSY, pcrypt falls back to calling the child AEAD directly.
That fallback must not keep the padata completion callback. Otherwise an asynchronous completion runs pcrypt_aead_done() even though the request was never enrolled in padata.
Restore the original request callback and callback data before calling the child AEAD directly. This keeps the fallback path aligned with a direct AEAD request while leaving the parallel path unchanged.
--- crypto/pcrypt.c | 4 ++++ 1 file changed, 4 insertions(+)
crypto/pcrypt.c +4 -0
@@ -122,6 +122,8 @@ static int pcrypt_aead_encrypt(struct aead_request *req)return -EINPROGRESS ;if (err == -EBUSY ) {/* try non-parallel mode */ +aead_request_set_callback (creq, flags, req->base.complete, + req->base.data);return crypto_aead_encrypt (creq); }
@@ -173,6 +175,8 @@ static int pcrypt_aead_decrypt(struct aead_request *req)return -EINPROGRESS ;if (err == -EBUSY ) {/* try non-parallel mode */ +aead_request_set_callback (creq, flags, req->base.complete, + req->base.data);return crypto_aead_decrypt (creq); }
Signature · 1 line
2.47.3
Herbert Xu
maintainerQuoted 24 lines · Ren Wei
From: Ruijie Li <[email protected]>
pcrypt installs
pcrypt_aead_done()on the child AEAD request before trying to submit it through padata. Ifpadata_do_parallel()returns-EBUSY, pcrypt falls back to calling the child AEAD directly.That fallback must not keep the padata completion callback. Otherwise an asynchronous completion runs
pcrypt_aead_done()even though the request was never enrolled in padata.Restore the original request callback and callback data before calling the child AEAD directly. This keeps the fallback path aligned with a direct AEAD request while leaving the parallel path unchanged.
Fixes 662f2f13e66d ("crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY")Reported-by Yuan Tan <[email protected]>Reported-by Yifan Wu <[email protected]>Reported-by Juefei Pu <[email protected]>Reported-by Zhengchuan Liang <[email protected]>Reported-by Xin Liu <[email protected]>Assisted-by Codex:gpt-5.4Signed-off-by Ruijie Li <[email protected]>Signed-off-by Ren Wei <[email protected]>
Quoted 3 lines
--- crypto/pcrypt.c | 4 ++++ 1 file changed, 4 insertions(+)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt