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()
68 struct hash_ctx *ctx = ask->private; in hash_sendmsg() local
78 continuing = ctx->more; in hash_sendmsg()
82 hash_free_result(sk, ctx); in hash_sendmsg()
92 err = hash_alloc_result(sk, ctx); in hash_sendmsg()
95 ahash_request_set_crypt(&ctx->req, NULL, in hash_sendmsg()
96 ctx->result, 0); in hash_sendmsg()
97 err = crypto_wait_req(crypto_ahash_final(&ctx->req), in hash_sendmsg()
98 &ctx->wait); in hash_sendmsg()
106 ctx->sgl.sgt.sgl = ctx->sgl.sgl; in hash_sendmsg()
107 ctx->sgl.sgt.nents = 0; in hash_sendmsg()
108 ctx->sgl.sgt.orig_nents = 0; in hash_sendmsg()
115 sg_init_table(ctx->sgl.sgl, npages); in hash_sendmsg()
117 ctx->sgl.need_unpin = iov_iter_extract_will_pin(&msg->msg_iter); in hash_sendmsg()
120 &ctx->sgl.sgt, npages, 0); in hash_sendmsg()
124 sg_mark_end(ctx->sgl.sgt.sgl + ctx->sgl.sgt.nents - 1); in hash_sendmsg()
127 err = hash_alloc_result(sk, ctx); in hash_sendmsg()
132 ahash_request_set_crypt(&ctx->req, ctx->sgl.sgt.sgl, in hash_sendmsg()
133 ctx->result, len); in hash_sendmsg()
137 err = crypto_ahash_digest(&ctx->req); in hash_sendmsg()
141 crypto_ahash_init(&ctx->req), in hash_sendmsg()
142 &ctx->wait); in hash_sendmsg()
149 err = crypto_ahash_update(&ctx->req); in hash_sendmsg()
151 err = crypto_ahash_finup(&ctx->req); in hash_sendmsg()
155 err = crypto_wait_req(err, &ctx->wait); in hash_sendmsg()
160 af_alg_free_sg(&ctx->sgl); in hash_sendmsg()
164 ctx->more = msg->msg_flags & MSG_MORE; in hash_sendmsg()
172 af_alg_free_sg(&ctx->sgl); in hash_sendmsg()
174 hash_free_result(sk, ctx); in hash_sendmsg()
175 ctx->more = false; in hash_sendmsg()
184 struct hash_ctx *ctx = ask->private; in hash_recvmsg() local
185 unsigned ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req)); in hash_recvmsg()
195 result = ctx->result; in hash_recvmsg()
196 err = hash_alloc_result(sk, ctx); in hash_recvmsg()
200 ahash_request_set_crypt(&ctx->req, NULL, ctx->result, 0); in hash_recvmsg()
202 if (!result && !ctx->more) { in hash_recvmsg()
203 err = crypto_wait_req(crypto_ahash_init(&ctx->req), in hash_recvmsg()
204 &ctx->wait); in hash_recvmsg()
209 if (!result || ctx->more) { in hash_recvmsg()
210 ctx->more = false; in hash_recvmsg()
211 err = crypto_wait_req(crypto_ahash_final(&ctx->req), in hash_recvmsg()
212 &ctx->wait); in hash_recvmsg()
217 err = memcpy_to_msg(msg, ctx->result, len); in hash_recvmsg()
220 hash_free_result(sk, ctx); in hash_recvmsg()
231 struct hash_ctx *ctx = ask->private; in hash_accept() local
232 struct ahash_request *req = &ctx->req; in hash_accept()
248 more = ctx->more; in hash_accept()
401 struct hash_ctx *ctx = ask->private; in hash_sock_destruct() local
403 hash_free_result(sk, ctx); in hash_sock_destruct()
404 sock_kfree_s(sk, ctx, ctx->len); in hash_sock_destruct()
412 struct hash_ctx *ctx; in hash_accept_parent_nokey() local
413 unsigned int len = sizeof(*ctx) + crypto_ahash_reqsize(tfm); in hash_accept_parent_nokey()
415 ctx = sock_kmalloc(sk, len, GFP_KERNEL); in hash_accept_parent_nokey()
416 if (!ctx) in hash_accept_parent_nokey()
419 ctx->result = NULL; in hash_accept_parent_nokey()
420 ctx->len = len; in hash_accept_parent_nokey()
421 ctx->more = false; in hash_accept_parent_nokey()
422 crypto_init_wait(&ctx->wait); in hash_accept_parent_nokey()
424 ask->private = ctx; in hash_accept_parent_nokey()
426 ahash_request_set_tfm(&ctx->req, tfm); in hash_accept_parent_nokey()
427 ahash_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG, in hash_accept_parent_nokey()
428 crypto_req_done, &ctx->wait); in hash_accept_parent_nokey()