diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-12-02 09:33:25 -0800 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-12-02 09:33:25 -0800 |
commit | ef0902bd956672dc33d6f7dd7bcaff9f769ac5c3 (patch) | |
tree | 50a07d35f4a47620c4c611db434bf4fce05b9260 /crypto/algif_hash.c | |
parent | 82d748eb43a673a56b639efd4d698e1e95715d82 (diff) | |
parent | d3dd09594f91ee57e76cbc27023b214afa01a99a (diff) | |
download | linux-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 'crypto/algif_hash.c')
-rw-r--r-- | crypto/algif_hash.c | 12 |
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) { |