diff options
| -rw-r--r-- | include/net/tls.h | 10 | ||||
| -rw-r--r-- | net/tls/tls_device.c | 2 | ||||
| -rw-r--r-- | net/tls/tls_sw.c | 9 | 
3 files changed, 8 insertions, 13 deletions
| diff --git a/include/net/tls.h b/include/net/tls.h index a463a6074e5d..0a0072636009 100644 --- a/include/net/tls.h +++ b/include/net/tls.h @@ -446,19 +446,15 @@ static inline struct tls_context *tls_get_ctx(const struct sock *sk)  }  static inline void tls_advance_record_sn(struct sock *sk, -					 struct cipher_context *ctx, -					 int version) +					 struct tls_prot_info *prot, +					 struct cipher_context *ctx)  { -	struct tls_context *tls_ctx = tls_get_ctx(sk); -	struct tls_prot_info *prot = &tls_ctx->prot_info; -  	if (tls_bigint_increment(ctx->rec_seq, prot->rec_seq_size))  		tls_err_abort(sk, EBADMSG); -	if (version != TLS_1_3_VERSION) { +	if (prot->version != TLS_1_3_VERSION)  		tls_bigint_increment(ctx->iv + TLS_CIPHER_AES_GCM_128_SALT_SIZE,  				     prot->iv_size); -	}  }  static inline void tls_fill_prepend(struct tls_context *ctx, diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c index 8ffc8f95f55f..51e556e79371 100644 --- a/net/tls/tls_device.c +++ b/net/tls/tls_device.c @@ -264,7 +264,7 @@ static int tls_push_record(struct sock *sk,  	list_add_tail(&record->list, &offload_ctx->records_list);  	spin_unlock_irq(&offload_ctx->lock);  	offload_ctx->open_record = NULL; -	tls_advance_record_sn(sk, &ctx->tx, prot->version); +	tls_advance_record_sn(sk, prot, &ctx->tx);  	for (i = 0; i < record->num_frags; i++) {  		frag = &record->frags[i]; diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index f833407c789f..bef71e54fad0 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -534,7 +534,7 @@ static int tls_do_encryption(struct sock *sk,  	/* Unhook the record from context if encryption is not failure */  	ctx->open_rec = NULL; -	tls_advance_record_sn(sk, &tls_ctx->tx, prot->version); +	tls_advance_record_sn(sk, prot, &tls_ctx->tx);  	return rc;  } @@ -1486,7 +1486,6 @@ static int decrypt_skb_update(struct sock *sk, struct sk_buff *skb,  	struct tls_context *tls_ctx = tls_get_ctx(sk);  	struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);  	struct tls_prot_info *prot = &tls_ctx->prot_info; -	int version = prot->version;  	struct strp_msg *rxm = strp_msg(skb);  	int pad, err = 0; @@ -1504,8 +1503,8 @@ static int decrypt_skb_update(struct sock *sk, struct sk_buff *skb,  					       async);  			if (err < 0) {  				if (err == -EINPROGRESS) -					tls_advance_record_sn(sk, &tls_ctx->rx, -							      version); +					tls_advance_record_sn(sk, prot, +							      &tls_ctx->rx);  				return err;  			} @@ -1520,7 +1519,7 @@ static int decrypt_skb_update(struct sock *sk, struct sk_buff *skb,  		rxm->full_len -= pad;  		rxm->offset += prot->prepend_size;  		rxm->full_len -= prot->overhead_size; -		tls_advance_record_sn(sk, &tls_ctx->rx, version); +		tls_advance_record_sn(sk, prot, &tls_ctx->rx);  		ctx->decrypted = true;  		ctx->saved_data_ready(sk);  	} else { | 
