| From 662bb52f50bca16a74fe92b487a14d7dccb85e1a Mon Sep 17 00:00:00 2001 |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| Date: Thu, 2 Jul 2020 13:32:21 +1000 |
| Subject: [PATCH] crypto: af_alg - Fix regression on empty requests |
| |
| commit 662bb52f50bca16a74fe92b487a14d7dccb85e1a upstream. |
| |
| Some user-space programs rely on crypto requests that have no |
| control metadata. This broke when a check was added to require |
| the presence of control metadata with the ctx->init flag. |
| |
| This patch fixes the regression by setting ctx->init as long as |
| one sendmsg(2) has been made, with or without a control message. |
| |
| Reported-by: Sachin Sant <sachinp@linux.vnet.ibm.com> |
| Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org> |
| Fixes: f3c802a1f300 ("crypto: algif_aead - Only wake up when...") |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| |
| diff --git a/crypto/af_alg.c b/crypto/af_alg.c |
| index 9fcb91ea10c4..5882ed46f1ad 100644 |
| --- a/crypto/af_alg.c |
| +++ b/crypto/af_alg.c |
| @@ -851,6 +851,7 @@ int af_alg_sendmsg(struct socket *sock, struct msghdr *msg, size_t size, |
| err = -EINVAL; |
| goto unlock; |
| } |
| + ctx->init = true; |
| |
| if (init) { |
| ctx->enc = enc; |
| @@ -858,7 +859,6 @@ int af_alg_sendmsg(struct socket *sock, struct msghdr *msg, size_t size, |
| memcpy(ctx->iv, con.iv->iv, ivsize); |
| |
| ctx->aead_assoclen = con.aead_assoclen; |
| - ctx->init = true; |
| } |
| |
| while (size) { |
| -- |
| 2.27.0 |
| |