Lines Matching refs:ctx

32 static int hash_alloc_result(struct sock *sk, struct hash_ctx *ctx)
36 if (ctx->result)
39 ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req));
41 ctx->result = sock_kmalloc(sk, ds, GFP_KERNEL);
42 if (!ctx->result)
45 memset(ctx->result, 0, ds);
50 static void hash_free_result(struct sock *sk, struct hash_ctx *ctx)
54 if (!ctx->result)
57 ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req));
59 sock_kzfree_s(sk, ctx->result, ds);
60 ctx->result = NULL;
68 struct hash_ctx *ctx = ask->private;
78 continuing = ctx->more;
82 hash_free_result(sk, ctx);
92 err = hash_alloc_result(sk, ctx);
95 ahash_request_set_crypt(&ctx->req, NULL,
96 ctx->result, 0);
97 err = crypto_wait_req(crypto_ahash_final(&ctx->req),
98 &ctx->wait);
106 ctx->sgl.sgt.sgl = ctx->sgl.sgl;
107 ctx->sgl.sgt.nents = 0;
108 ctx->sgl.sgt.orig_nents = 0;
115 sg_init_table(ctx->sgl.sgl, npages);
117 ctx->sgl.need_unpin = iov_iter_extract_will_pin(&msg->msg_iter);
120 &ctx->sgl.sgt, npages, 0);
124 sg_mark_end(ctx->sgl.sgt.sgl + ctx->sgl.sgt.nents - 1);
127 err = hash_alloc_result(sk, ctx);
132 ahash_request_set_crypt(&ctx->req, ctx->sgl.sgt.sgl,
133 ctx->result, len);
137 err = crypto_ahash_digest(&ctx->req);
141 crypto_ahash_init(&ctx->req),
142 &ctx->wait);
149 err = crypto_ahash_update(&ctx->req);
151 err = crypto_ahash_finup(&ctx->req);
155 err = crypto_wait_req(err, &ctx->wait);
160 af_alg_free_sg(&ctx->sgl);
164 ctx->more = msg->msg_flags & MSG_MORE;
172 af_alg_free_sg(&ctx->sgl);
174 hash_free_result(sk, ctx);
175 ctx->more = false;
184 struct hash_ctx *ctx = ask->private;
185 unsigned ds = crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req));
195 result = ctx->result;
196 err = hash_alloc_result(sk, ctx);
200 ahash_request_set_crypt(&ctx->req, NULL, ctx->result, 0);
202 if (!result && !ctx->more) {
203 err = crypto_wait_req(crypto_ahash_init(&ctx->req),
204 &ctx->wait);
209 if (!result || ctx->more) {
210 ctx->more = false;
211 err = crypto_wait_req(crypto_ahash_final(&ctx->req),
212 &ctx->wait);
217 err = memcpy_to_msg(msg, ctx->result, len);
220 hash_free_result(sk, ctx);
231 struct hash_ctx *ctx = ask->private;
232 struct ahash_request *req = &ctx->req;
248 more = ctx->more;
405 struct hash_ctx *ctx = ask->private;
407 hash_free_result(sk, ctx);
408 sock_kfree_s(sk, ctx, ctx->len);
416 struct hash_ctx *ctx;
417 unsigned int len = sizeof(*ctx) + crypto_ahash_reqsize(tfm);
419 ctx = sock_kmalloc(sk, len, GFP_KERNEL);
420 if (!ctx)
423 ctx->result = NULL;
424 ctx->len = len;
425 ctx->more = false;
426 crypto_init_wait(&ctx->wait);
428 ask->private = ctx;
430 ahash_request_set_tfm(&ctx->req, tfm);
431 ahash_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG,
432 crypto_req_done, &ctx->wait);