diff options
Diffstat (limited to 'net/tls/tls_device.c')
-rw-r--r-- | net/tls/tls_device.c | 14 |
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, |