hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/tls/tls_device_fallback.c
....@@ -73,7 +73,8 @@
7373 len -= TLS_CIPHER_AES_GCM_128_IV_SIZE;
7474
7575 tls_make_aad(aad, len - TLS_CIPHER_AES_GCM_128_TAG_SIZE,
76
- (char *)&rcd_sn, sizeof(rcd_sn), buf[0]);
76
+ (char *)&rcd_sn, sizeof(rcd_sn), buf[0],
77
+ TLS_1_2_VERSION);
7778
7879 memcpy(iv + TLS_CIPHER_AES_GCM_128_SALT_SIZE, buf + TLS_HEADER_SIZE,
7980 TLS_CIPHER_AES_GCM_128_IV_SIZE);
....@@ -243,7 +244,6 @@
243244 record = tls_get_record(ctx, tcp_seq, rcd_sn);
244245 if (!record) {
245246 spin_unlock_irqrestore(&ctx->lock, flags);
246
- WARN(1, "Record not found for seq %u\n", tcp_seq);
247247 return -EINVAL;
248248 }
249249
....@@ -273,7 +273,7 @@
273273
274274 __skb_frag_ref(frag);
275275 sg_set_page(sg_in + i, skb_frag_page(frag),
276
- skb_frag_size(frag), frag->page_offset);
276
+ skb_frag_size(frag), skb_frag_off(frag));
277277
278278 remaining -= skb_frag_size(frag);
279279
....@@ -412,7 +412,10 @@
412412 put_page(sg_page(&sg_in[--resync_sgs]));
413413 kfree(sg_in);
414414 free_orig:
415
- kfree_skb(skb);
415
+ if (nskb)
416
+ consume_skb(skb);
417
+ else
418
+ kfree_skb(skb);
416419 return nskb;
417420 }
418421
....@@ -427,6 +430,19 @@
427430 }
428431 EXPORT_SYMBOL_GPL(tls_validate_xmit_skb);
429432
433
+struct sk_buff *tls_validate_xmit_skb_sw(struct sock *sk,
434
+ struct net_device *dev,
435
+ struct sk_buff *skb)
436
+{
437
+ return tls_sw_fallback(sk, skb);
438
+}
439
+
440
+struct sk_buff *tls_encrypt_skb(struct sk_buff *skb)
441
+{
442
+ return tls_sw_fallback(skb->sk, skb);
443
+}
444
+EXPORT_SYMBOL_GPL(tls_encrypt_skb);
445
+
430446 int tls_sw_fallback_init(struct sock *sk,
431447 struct tls_offload_context_tx *offload_ctx,
432448 struct tls_crypto_info *crypto_info)