• Home
  • Raw
  • Download

Lines Matching refs:ctx

121 static int padding_length(struct tls_sw_context_rx *ctx,  in padding_length()  argument
146 ctx->control = content_type; in padding_length()
156 struct tls_sw_context_rx *ctx; in tls_decrypt_done() local
166 ctx = tls_sw_ctx_rx(tls_ctx); in tls_decrypt_done()
171 ctx->async_wait.err = err; in tls_decrypt_done()
177 pad = padding_length(ctx, prot, skb); in tls_decrypt_done()
179 ctx->async_wait.err = pad; in tls_decrypt_done()
206 pending = atomic_dec_return(&ctx->decrypt_pending); in tls_decrypt_done()
208 if (!pending && READ_ONCE(ctx->async_notify)) in tls_decrypt_done()
209 complete(&ctx->async_wait.completion); in tls_decrypt_done()
223 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_do_decryption() local
226 aead_request_set_tfm(aead_req, ctx->aead_recv); in tls_do_decryption()
243 atomic_inc(&ctx->decrypt_pending); in tls_do_decryption()
247 crypto_req_done, &ctx->async_wait); in tls_do_decryption()
255 ret = crypto_wait_req(ret, &ctx->async_wait); in tls_do_decryption()
259 atomic_dec(&ctx->decrypt_pending); in tls_do_decryption()
268 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_trim_both_msgs() local
269 struct tls_rec *rec = ctx->open_rec; in tls_trim_both_msgs()
280 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_alloc_encrypted_msg() local
281 struct tls_rec *rec = ctx->open_rec; in tls_alloc_encrypted_msg()
291 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_clone_plaintext_msg() local
292 struct tls_rec *rec = ctx->open_rec; in tls_clone_plaintext_msg()
315 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_get_rec() local
320 mem_size = sizeof(struct tls_rec) + crypto_aead_reqsize(ctx->aead_send); in tls_get_rec()
353 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_free_open_rec() local
354 struct tls_rec *rec = ctx->open_rec; in tls_free_open_rec()
358 ctx->open_rec = NULL; in tls_free_open_rec()
365 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_tx_records() local
371 rec = list_first_entry(&ctx->tx_list, in tls_tx_records()
392 list_for_each_entry_safe(rec, tmp, &ctx->tx_list, list) { in tls_tx_records()
427 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_encrypt_done() local
447 ctx->async_wait.err = sk->sk_err; in tls_encrypt_done()
449 ctx->async_wait.err = err; in tls_encrypt_done()
461 first_rec = list_first_entry(&ctx->tx_list, in tls_encrypt_done()
467 pending = atomic_dec_return(&ctx->encrypt_pending); in tls_encrypt_done()
469 if (!pending && READ_ONCE(ctx->async_notify)) in tls_encrypt_done()
470 complete(&ctx->async_wait.completion); in tls_encrypt_done()
476 if (!test_and_set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask)) in tls_encrypt_done()
477 schedule_delayed_work(&ctx->tx_work.work, 1); in tls_encrypt_done()
482 struct tls_sw_context_tx *ctx, in tls_do_encryption() argument
487 struct tls_rec *rec = ctx->open_rec; in tls_do_encryption()
508 aead_request_set_tfm(aead_req, ctx->aead_send); in tls_do_encryption()
518 list_add_tail((struct list_head *)&rec->list, &ctx->tx_list); in tls_do_encryption()
519 atomic_inc(&ctx->encrypt_pending); in tls_do_encryption()
523 atomic_dec(&ctx->encrypt_pending); in tls_do_encryption()
536 ctx->open_rec = NULL; in tls_do_encryption()
664 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_push_record() local
665 struct tls_rec *rec = ctx->open_rec, *tmp = NULL; in tls_push_record()
755 rc = tls_do_encryption(sk, tls_ctx, ctx, req, in tls_push_record()
765 ctx->async_capable = 1; in tls_push_record()
772 ctx->open_rec = tmp; in tls_push_record()
783 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in bpf_exec_tx_verdict() local
861 bool reset_eval = !ctx->open_rec; in bpf_exec_tx_verdict()
863 rec = ctx->open_rec; in bpf_exec_tx_verdict()
887 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_push_pending_record() local
888 struct tls_rec *rec = ctx->open_rec; in tls_sw_push_pending_record()
909 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_sendmsg() local
910 bool async_capable = ctx->async_capable; in tls_sw_sendmsg()
947 if (ctx->open_rec) in tls_sw_sendmsg()
948 rec = ctx->open_rec; in tls_sw_sendmsg()
950 rec = ctx->open_rec = tls_get_rec(sk); in tls_sw_sendmsg()
1008 else if (ctx->open_rec && ret == -ENOSPC) in tls_sw_sendmsg()
1077 if (ctx->open_rec) in tls_sw_sendmsg()
1082 if (ctx->open_rec && msg_en->sg.size < required_size) in tls_sw_sendmsg()
1090 smp_store_mb(ctx->async_notify, true); in tls_sw_sendmsg()
1092 if (atomic_read(&ctx->encrypt_pending)) in tls_sw_sendmsg()
1093 crypto_wait_req(-EINPROGRESS, &ctx->async_wait); in tls_sw_sendmsg()
1095 reinit_completion(&ctx->async_wait.completion); in tls_sw_sendmsg()
1097 WRITE_ONCE(ctx->async_notify, false); in tls_sw_sendmsg()
1099 if (ctx->async_wait.err) { in tls_sw_sendmsg()
1100 ret = ctx->async_wait.err; in tls_sw_sendmsg()
1106 if (test_and_clear_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask)) { in tls_sw_sendmsg()
1107 cancel_delayed_work(&ctx->tx_work.work); in tls_sw_sendmsg()
1124 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_do_sendpage() local
1148 if (ctx->open_rec) in tls_sw_do_sendpage()
1149 rec = ctx->open_rec; in tls_sw_do_sendpage()
1151 rec = ctx->open_rec = tls_get_rec(sk); in tls_sw_do_sendpage()
1214 if (ctx->open_rec) in tls_sw_do_sendpage()
1219 if (ctx->open_rec) in tls_sw_do_sendpage()
1225 if (test_and_clear_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask)) { in tls_sw_do_sendpage()
1226 cancel_delayed_work(&ctx->tx_work.work); in tls_sw_do_sendpage()
1268 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_wait_data() local
1272 while (!(skb = ctx->recv_pkt) && sk_psock_queue_empty(psock)) { in tls_wait_data()
1292 ctx->recv_pkt != skb || in tls_wait_data()
1380 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in decrypt_internal() local
1414 aead_size = sizeof(*aead_req) + crypto_aead_reqsize(ctx->aead_recv); in decrypt_internal()
1417 mem_size = mem_size + crypto_aead_ivsize(ctx->aead_recv); in decrypt_internal()
1450 crypto_aead_ivsize(ctx->aead_recv)); in decrypt_internal()
1460 ctx->control, prot->version); in decrypt_internal()
1516 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in decrypt_skb_update() local
1521 if (!ctx->decrypted) { in decrypt_skb_update()
1529 if (!ctx->decrypted) { in decrypt_skb_update()
1543 pad = padding_length(ctx, prot, skb); in decrypt_skb_update()
1551 ctx->decrypted = true; in decrypt_skb_update()
1552 ctx->saved_data_ready(sk); in decrypt_skb_update()
1573 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_advance_skb() local
1587 ctx->recv_pkt = NULL; in tls_sw_advance_skb()
1588 __strp_unpause(&ctx->strp); in tls_sw_advance_skb()
1598 static int process_rx_list(struct tls_sw_context_rx *ctx, in process_rx_list() argument
1607 struct sk_buff *skb = skb_peek(&ctx->rx_list); in process_rx_list()
1631 skb = skb_peek_next(skb, &ctx->rx_list); in process_rx_list()
1688 next_skb = skb_peek_next(skb, &ctx->rx_list); in process_rx_list()
1691 skb_unlink(skb, &ctx->rx_list); in process_rx_list()
1710 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_recvmsg() local
1735 err = process_rx_list(ctx, msg, &control, &cmsg, 0, len, false, in tls_sw_recvmsg()
1751 while (len && (decrypted + copied < target || ctx->recv_pkt)) { in tls_sw_recvmsg()
1777 tlm->control = ctx->control; in tls_sw_recvmsg()
1785 ctx->control == TLS_RECORD_TYPE_DATA && in tls_sw_recvmsg()
1790 if (ctx->control == TLS_RECORD_TYPE_DATA) in tls_sw_recvmsg()
1791 async_capable = ctx->async_capable; in tls_sw_recvmsg()
1806 tlm->control = ctx->control; in tls_sw_recvmsg()
1867 skb_queue_tail(&ctx->rx_list, skb); in tls_sw_recvmsg()
1877 if (ctx->control != TLS_RECORD_TYPE_DATA) in tls_sw_recvmsg()
1887 smp_store_mb(ctx->async_notify, true); in tls_sw_recvmsg()
1888 if (atomic_read(&ctx->decrypt_pending)) { in tls_sw_recvmsg()
1889 err = crypto_wait_req(-EINPROGRESS, &ctx->async_wait); in tls_sw_recvmsg()
1898 reinit_completion(&ctx->async_wait.completion); in tls_sw_recvmsg()
1900 WRITE_ONCE(ctx->async_notify, false); in tls_sw_recvmsg()
1904 err = process_rx_list(ctx, msg, &control, &cmsg, copied, in tls_sw_recvmsg()
1907 err = process_rx_list(ctx, msg, &control, &cmsg, 0, in tls_sw_recvmsg()
1930 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_splice_read() local
1948 if (!ctx->decrypted) { in tls_sw_splice_read()
1952 if (ctx->control != TLS_RECORD_TYPE_DATA) { in tls_sw_splice_read()
1961 ctx->decrypted = true; in tls_sw_splice_read()
1981 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_stream_read() local
1991 return !ingress_empty || ctx->recv_pkt || in tls_sw_stream_read()
1992 !skb_queue_empty(&ctx->rx_list); in tls_sw_stream_read()
1998 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_read_size() local
2022 ctx->control = header[0]; in tls_read_size()
2060 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_queue() local
2062 ctx->decrypted = false; in tls_queue()
2064 ctx->recv_pkt = skb; in tls_queue()
2067 ctx->saved_data_ready(strp->sk); in tls_queue()
2073 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_data_ready() local
2076 strp_data_ready(&ctx->strp); in tls_data_ready()
2080 ctx->saved_data_ready(sk); in tls_data_ready()
2087 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_cancel_work_tx() local
2089 set_bit(BIT_TX_CLOSING, &ctx->tx_bitmask); in tls_sw_cancel_work_tx()
2090 set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask); in tls_sw_cancel_work_tx()
2091 cancel_delayed_work_sync(&ctx->tx_work.work); in tls_sw_cancel_work_tx()
2097 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_release_resources_tx() local
2101 smp_store_mb(ctx->async_notify, true); in tls_sw_release_resources_tx()
2102 if (atomic_read(&ctx->encrypt_pending)) in tls_sw_release_resources_tx()
2103 crypto_wait_req(-EINPROGRESS, &ctx->async_wait); in tls_sw_release_resources_tx()
2112 rec = list_first_entry(&ctx->tx_list, in tls_sw_release_resources_tx()
2119 list_for_each_entry_safe(rec, tmp, &ctx->tx_list, list) { in tls_sw_release_resources_tx()
2126 crypto_free_aead(ctx->aead_send); in tls_sw_release_resources_tx()
2132 struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); in tls_sw_free_ctx_tx() local
2134 kfree(ctx); in tls_sw_free_ctx_tx()
2140 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_release_resources_rx() local
2145 if (ctx->aead_recv) { in tls_sw_release_resources_rx()
2146 kfree_skb(ctx->recv_pkt); in tls_sw_release_resources_rx()
2147 ctx->recv_pkt = NULL; in tls_sw_release_resources_rx()
2148 skb_queue_purge(&ctx->rx_list); in tls_sw_release_resources_rx()
2149 crypto_free_aead(ctx->aead_recv); in tls_sw_release_resources_rx()
2150 strp_stop(&ctx->strp); in tls_sw_release_resources_rx()
2155 if (ctx->saved_data_ready) { in tls_sw_release_resources_rx()
2157 sk->sk_data_ready = ctx->saved_data_ready; in tls_sw_release_resources_rx()
2165 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_strparser_done() local
2167 strp_done(&ctx->strp); in tls_sw_strparser_done()
2172 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); in tls_sw_free_ctx_rx() local
2174 kfree(ctx); in tls_sw_free_ctx_rx()
2193 struct tls_sw_context_tx *ctx; in tx_work_handler() local
2198 ctx = tls_sw_ctx_tx(tls_ctx); in tx_work_handler()
2199 if (test_bit(BIT_TX_CLOSING, &ctx->tx_bitmask)) in tx_work_handler()
2202 if (!test_and_clear_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask)) in tx_work_handler()
2211 void tls_sw_write_space(struct sock *sk, struct tls_context *ctx) in tls_sw_write_space() argument
2213 struct tls_sw_context_tx *tx_ctx = tls_sw_ctx_tx(ctx); in tls_sw_write_space()
2233 int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx) in tls_set_sw_offload() argument
2252 if (!ctx) { in tls_set_sw_offload()
2258 if (!ctx->priv_ctx_tx) { in tls_set_sw_offload()
2264 ctx->priv_ctx_tx = sw_ctx_tx; in tls_set_sw_offload()
2267 (struct tls_sw_context_tx *)ctx->priv_ctx_tx; in tls_set_sw_offload()
2270 if (!ctx->priv_ctx_rx) { in tls_set_sw_offload()
2276 ctx->priv_ctx_rx = sw_ctx_rx; in tls_set_sw_offload()
2279 (struct tls_sw_context_rx *)ctx->priv_ctx_rx; in tls_set_sw_offload()
2285 crypto_info = &ctx->crypto_send.info; in tls_set_sw_offload()
2286 cctx = &ctx->tx; in tls_set_sw_offload()
2293 crypto_info = &ctx->crypto_recv.info; in tls_set_sw_offload()
2294 cctx = &ctx->rx; in tls_set_sw_offload()
2404 ctx->push_pending_record = tls_sw_push_pending_record; in tls_set_sw_offload()
2445 kfree(ctx->priv_ctx_tx); in tls_set_sw_offload()
2446 ctx->priv_ctx_tx = NULL; in tls_set_sw_offload()
2448 kfree(ctx->priv_ctx_rx); in tls_set_sw_offload()
2449 ctx->priv_ctx_rx = NULL; in tls_set_sw_offload()