]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
crypto: algif_hash - wait for crypto_ahash_init() to complete
authorWang, Rui Y <rui.y.wang@intel.com>
Wed, 27 Jan 2016 09:08:37 +0000 (17:08 +0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 26 May 2016 22:44:38 +0000 (15:44 -0700)
Orabug: 23330797

[ Upstream commit fe09786178f9df713a4b2dd6b93c0a722346bf5e ]

hash_sendmsg/sendpage() need to wait for the completion
of crypto_ahash_init() otherwise it can cause panic.

Cc: stable@vger.kernel.org
Signed-off-by: Rui Wang <rui.y.wang@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
(cherry picked from commit bd92b10c95b37a4d6c043ad76d51d13dee45c477)

Signed-off-by: Dan Duval <dan.duval@oracle.com>
crypto/algif_hash.c

index 7b5018b34c97ca7d80ff2709d75a21e28b2b1faa..d7a3435280d890591ab6c4f8b260beaf354359c1 100644 (file)
@@ -54,7 +54,8 @@ static int hash_sendmsg(struct socket *sock, struct msghdr *msg,
 
        lock_sock(sk);
        if (!ctx->more) {
-               err = crypto_ahash_init(&ctx->req);
+               err = af_alg_wait_for_completion(crypto_ahash_init(&ctx->req),
+                                               &ctx->completion);
                if (err)
                        goto unlock;
        }
@@ -125,6 +126,7 @@ static ssize_t hash_sendpage(struct socket *sock, struct page *page,
        } else {
                if (!ctx->more) {
                        err = crypto_ahash_init(&ctx->req);
+                       err = af_alg_wait_for_completion(err, &ctx->completion);
                        if (err)
                                goto unlock;
                }