net/tls: pass record number as a byte array
TLS offload code casts record number to a u64. The buffer should be aligned to 8 bytes, but its actually a __be64, and the rest of the TLS code treats it as big int. Make the offload callbacks take a byte array, drivers can make the choice to do the ugly cast if they want to. Prepare for copying the record number onto the stack by defining a constant for max size of the byte array. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
4967373959
commit
89fec474fa
@@ -2015,8 +2015,7 @@ static int tls_read_size(struct strparser *strp, struct sk_buff *skb)
|
||||
goto read_failure;
|
||||
}
|
||||
#ifdef CONFIG_TLS_DEVICE
|
||||
handle_device_resync(strp->sk, TCP_SKB_CB(skb)->seq + rxm->offset,
|
||||
*(u64*)tls_ctx->rx.rec_seq);
|
||||
handle_device_resync(strp->sk, TCP_SKB_CB(skb)->seq + rxm->offset);
|
||||
#endif
|
||||
return data_len + TLS_HEADER_SIZE;
|
||||
|
||||
@@ -2283,8 +2282,9 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
|
||||
goto free_priv;
|
||||
}
|
||||
|
||||
/* Sanity-check the IV size for stack allocations. */
|
||||
if (iv_size > MAX_IV_SIZE || nonce_size > MAX_IV_SIZE) {
|
||||
/* Sanity-check the sizes for stack allocations. */
|
||||
if (iv_size > MAX_IV_SIZE || nonce_size > MAX_IV_SIZE ||
|
||||
rec_seq_size > TLS_MAX_REC_SEQ_SIZE) {
|
||||
rc = -EINVAL;
|
||||
goto free_priv;
|
||||
}
|
||||
|
Reference in New Issue
Block a user