Loading crypto/algif_hash.c +15 −4 Original line number Diff line number Diff line Loading @@ -235,24 +235,31 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, struct alg_sock *ask = alg_sk(sk); struct hash_ctx *ctx = ask->private; struct ahash_request *req = &ctx->req; char state[HASH_MAX_STATESIZE]; struct crypto_ahash *tfm; struct sock *sk2; struct alg_sock *ask2; struct hash_ctx *ctx2; char *state; bool more; int err; tfm = crypto_ahash_reqtfm(req); state = kmalloc(crypto_ahash_statesize(tfm), GFP_KERNEL); err = -ENOMEM; if (!state) goto out; lock_sock(sk); more = ctx->more; err = more ? crypto_ahash_export(req, state) : 0; release_sock(sk); if (err) return err; goto out_free_state; err = af_alg_accept(ask->parent, newsock, kern); if (err) return err; goto out_free_state; sk2 = newsock->sk; ask2 = alg_sk(sk2); Loading @@ -260,7 +267,7 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, ctx2->more = more; if (!more) return err; goto out_free_state; err = crypto_ahash_import(&ctx2->req, state); if (err) { Loading @@ -268,6 +275,10 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, sock_put(sk2); } out_free_state: kfree_sensitive(state); out: return err; } Loading Loading
crypto/algif_hash.c +15 −4 Original line number Diff line number Diff line Loading @@ -235,24 +235,31 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, struct alg_sock *ask = alg_sk(sk); struct hash_ctx *ctx = ask->private; struct ahash_request *req = &ctx->req; char state[HASH_MAX_STATESIZE]; struct crypto_ahash *tfm; struct sock *sk2; struct alg_sock *ask2; struct hash_ctx *ctx2; char *state; bool more; int err; tfm = crypto_ahash_reqtfm(req); state = kmalloc(crypto_ahash_statesize(tfm), GFP_KERNEL); err = -ENOMEM; if (!state) goto out; lock_sock(sk); more = ctx->more; err = more ? crypto_ahash_export(req, state) : 0; release_sock(sk); if (err) return err; goto out_free_state; err = af_alg_accept(ask->parent, newsock, kern); if (err) return err; goto out_free_state; sk2 = newsock->sk; ask2 = alg_sk(sk2); Loading @@ -260,7 +267,7 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, ctx2->more = more; if (!more) return err; goto out_free_state; err = crypto_ahash_import(&ctx2->req, state); if (err) { Loading @@ -268,6 +275,10 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags, sock_put(sk2); } out_free_state: kfree_sensitive(state); out: return err; } Loading