aboutsummaryrefslogtreecommitdiffstats
path: root/net/tls/tls_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tls/tls_device.c')
-rw-r--r--net/tls/tls_device.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
index cc0256939eb6..96357060addc 100644
--- a/net/tls/tls_device.c
+++ b/net/tls/tls_device.c
@@ -628,14 +628,16 @@ static int tls_device_reencrypt(struct sock *sk, struct sk_buff *skb)
628 else 628 else
629 err = 0; 629 err = 0;
630 630
631 copy = min_t(int, skb_pagelen(skb) - offset, 631 if (skb_pagelen(skb) > offset) {
632 rxm->full_len - TLS_CIPHER_AES_GCM_128_TAG_SIZE); 632 copy = min_t(int, skb_pagelen(skb) - offset,
633 rxm->full_len - TLS_CIPHER_AES_GCM_128_TAG_SIZE);
633 634
634 if (skb->decrypted) 635 if (skb->decrypted)
635 skb_store_bits(skb, offset, buf, copy); 636 skb_store_bits(skb, offset, buf, copy);
636 637
637 offset += copy; 638 offset += copy;
638 buf += copy; 639 buf += copy;
640 }
639 641
640 skb_walk_frags(skb, skb_iter) { 642 skb_walk_frags(skb, skb_iter) {
641 copy = min_t(int, skb_iter->len, 643 copy = min_t(int, skb_iter->len,