summaryrefslogtreecommitdiff
path: root/crypto/algif_hash.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2015-12-02 09:33:25 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2015-12-02 09:33:25 -0800
commitef0902bd956672dc33d6f7dd7bcaff9f769ac5c3 (patch)
tree50a07d35f4a47620c4c611db434bf4fce05b9260 /crypto/algif_hash.c
parent82d748eb43a673a56b639efd4d698e1e95715d82 (diff)
parentd3dd09594f91ee57e76cbc27023b214afa01a99a (diff)
downloadlinux-crypto-ef0902bd956672dc33d6f7dd7bcaff9f769ac5c3.tar.gz
linux-crypto-ef0902bd956672dc33d6f7dd7bcaff9f769ac5c3.zip
Merge tag 'v4.4-rc3' into next
Merge with Linux 4.4-rc3 to bring in helpers for multiu-driver modules.
Diffstat (limited to '')
-rw-r--r--crypto/algif_hash.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/algif_hash.c b/crypto/algif_hash.c
index 1396ad07..b4c24fe3 100644
--- a/crypto/algif_hash.c
+++ b/crypto/algif_hash.c
@@ -181,9 +181,14 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags)
struct sock *sk2;
struct alg_sock *ask2;
struct hash_ctx *ctx2;
+ bool more;
int err;
- err = crypto_ahash_export(req, state);
+ lock_sock(sk);
+ more = ctx->more;
+ err = more ? crypto_ahash_export(req, state) : 0;
+ release_sock(sk);
+
if (err)
return err;
@@ -194,7 +199,10 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags)
sk2 = newsock->sk;
ask2 = alg_sk(sk2);
ctx2 = ask2->private;
- ctx2->more = 1;
+ ctx2->more = more;
+
+ if (!more)
+ return err;
err = crypto_ahash_import(&ctx2->req, state);
if (err) {