Lines Matching refs:ctx
32 static int hash_alloc_result(struct sock *sk, struct hash_ctx *ctx) in hash_alloc_result() argument
36 if (ctx->result) in hash_alloc_result()
39 ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req)); in hash_alloc_result()
41 ctx->result = sock_kmalloc(sk, ds, GFP_KERNEL); in hash_alloc_result()
42 if (!ctx->result) in hash_alloc_result()
45 memset(ctx->result, 0, ds); in hash_alloc_result()
50 static void hash_free_result(struct sock *sk, struct hash_ctx *ctx) in hash_free_result() argument
54 if (!ctx->result) in hash_free_result()
57 ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req)); in hash_free_result()
59 sock_kzfree_s(sk, ctx->result, ds); in hash_free_result()
60 ctx->result = NULL; in hash_free_result()
69 struct hash_ctx *ctx = ask->private; in hash_sendmsg() local
77 if (!ctx->more) { in hash_sendmsg()
79 hash_free_result(sk, ctx); in hash_sendmsg()
81 err = crypto_wait_req(crypto_ahash_init(&ctx->req), &ctx->wait); in hash_sendmsg()
86 ctx->more = false; in hash_sendmsg()
94 len = af_alg_make_sg(&ctx->sgl, &msg->msg_iter, len); in hash_sendmsg()
100 ahash_request_set_crypt(&ctx->req, ctx->sgl.sg, NULL, len); in hash_sendmsg()
102 err = crypto_wait_req(crypto_ahash_update(&ctx->req), in hash_sendmsg()
103 &ctx->wait); in hash_sendmsg()
104 af_alg_free_sg(&ctx->sgl); in hash_sendmsg()
114 ctx->more = msg->msg_flags & MSG_MORE; in hash_sendmsg()
115 if (!ctx->more) { in hash_sendmsg()
116 err = hash_alloc_result(sk, ctx); in hash_sendmsg()
120 ahash_request_set_crypt(&ctx->req, NULL, ctx->result, 0); in hash_sendmsg()
121 err = crypto_wait_req(crypto_ahash_final(&ctx->req), in hash_sendmsg()
122 &ctx->wait); in hash_sendmsg()
136 struct hash_ctx *ctx = ask->private; in hash_sendpage() local
143 sg_init_table(ctx->sgl.sg, 1); in hash_sendpage()
144 sg_set_page(ctx->sgl.sg, page, size, offset); in hash_sendpage()
147 err = hash_alloc_result(sk, ctx); in hash_sendpage()
150 } else if (!ctx->more) in hash_sendpage()
151 hash_free_result(sk, ctx); in hash_sendpage()
153 ahash_request_set_crypt(&ctx->req, ctx->sgl.sg, ctx->result, size); in hash_sendpage()
156 if (ctx->more) in hash_sendpage()
157 err = crypto_ahash_finup(&ctx->req); in hash_sendpage()
159 err = crypto_ahash_digest(&ctx->req); in hash_sendpage()
161 if (!ctx->more) { in hash_sendpage()
162 err = crypto_ahash_init(&ctx->req); in hash_sendpage()
163 err = crypto_wait_req(err, &ctx->wait); in hash_sendpage()
168 err = crypto_ahash_update(&ctx->req); in hash_sendpage()
171 err = crypto_wait_req(err, &ctx->wait); in hash_sendpage()
175 ctx->more = flags & MSG_MORE; in hash_sendpage()
188 struct hash_ctx *ctx = ask->private; in hash_recvmsg() local
189 unsigned ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req)); in hash_recvmsg()
199 result = ctx->result; in hash_recvmsg()
200 err = hash_alloc_result(sk, ctx); in hash_recvmsg()
204 ahash_request_set_crypt(&ctx->req, NULL, ctx->result, 0); in hash_recvmsg()
206 if (!result && !ctx->more) { in hash_recvmsg()
207 err = crypto_wait_req(crypto_ahash_init(&ctx->req), in hash_recvmsg()
208 &ctx->wait); in hash_recvmsg()
213 if (!result || ctx->more) { in hash_recvmsg()
214 ctx->more = false; in hash_recvmsg()
215 err = crypto_wait_req(crypto_ahash_final(&ctx->req), in hash_recvmsg()
216 &ctx->wait); in hash_recvmsg()
221 err = memcpy_to_msg(msg, ctx->result, len); in hash_recvmsg()
224 hash_free_result(sk, ctx); in hash_recvmsg()
235 struct hash_ctx *ctx = ask->private; in hash_accept() local
236 struct ahash_request *req = &ctx->req; in hash_accept()
245 more = ctx->more; in hash_accept()
412 struct hash_ctx *ctx = ask->private; in hash_sock_destruct() local
414 hash_free_result(sk, ctx); in hash_sock_destruct()
415 sock_kfree_s(sk, ctx, ctx->len); in hash_sock_destruct()
423 struct hash_ctx *ctx; in hash_accept_parent_nokey() local
424 unsigned int len = sizeof(*ctx) + crypto_ahash_reqsize(tfm); in hash_accept_parent_nokey()
426 ctx = sock_kmalloc(sk, len, GFP_KERNEL); in hash_accept_parent_nokey()
427 if (!ctx) in hash_accept_parent_nokey()
430 ctx->result = NULL; in hash_accept_parent_nokey()
431 ctx->len = len; in hash_accept_parent_nokey()
432 ctx->more = false; in hash_accept_parent_nokey()
433 crypto_init_wait(&ctx->wait); in hash_accept_parent_nokey()
435 ask->private = ctx; in hash_accept_parent_nokey()
437 ahash_request_set_tfm(&ctx->req, tfm); in hash_accept_parent_nokey()
438 ahash_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG, in hash_accept_parent_nokey()
439 crypto_req_done, &ctx->wait); in hash_accept_parent_nokey()