* [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
@ 2023-10-20 14:00 Sabrina Dubroca
2023-10-21 0:14 ` Jakub Kicinski
2023-10-23 17:20 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 5+ messages in thread
From: Sabrina Dubroca @ 2023-10-20 14:00 UTC (permalink / raw)
To: netdev
Cc: Sabrina Dubroca, David S. Miller, Boris Pismenny, Eric Dumazet,
Jakub Kicinski, John Fastabend, Paolo Abeni, Simon Horman,
Tariq Toukan
Prior to commit 1a074f7618e8 ("tls: also use init_prot_info in
tls_set_device_offload"), setting TLS_HW on TX didn't touch
prot->aad_size and prot->tail_size. They are set to 0 during context
allocation (tls_prot_info is embedded in tls_context, kzalloc'd by
tls_ctx_create).
When the RX key is configured, tls_set_sw_offload is called (for both
TLS_SW and TLS_HW). If the TX key is configured in TLS_HW mode after
the RX key has been installed, init_prot_info will now overwrite the
correct values of aad_size and tail_size, breaking SW decryption and
causing -EBADMSG errors to be returned to userspace.
Since TLS_HW doesn't use aad_size and tail_size at all (for TLS1.2,
tail_size is always 0, and aad_size is equal to TLS_HEADER_SIZE +
rec_seq_size), we can simply drop this hunk.
Fixes: 1a074f7618e8 ("tls: also use init_prot_info in tls_set_device_offload")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
---
Tariq, does that solve the problem you reported in
https://lore.kernel.org/netdev/3ace1e75-c0a5-4473-848d-91f9ac0a8f9c@gmail.com/
?
net/tls/tls.h | 3 +--
net/tls/tls_device.c | 2 +-
net/tls/tls_sw.c | 10 ++--------
3 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/net/tls/tls.h b/net/tls/tls.h
index 478b2c0060aa..762f424ff2d5 100644
--- a/net/tls/tls.h
+++ b/net/tls/tls.h
@@ -144,8 +144,7 @@ void tls_err_abort(struct sock *sk, int err);
int init_prot_info(struct tls_prot_info *prot,
const struct tls_crypto_info *crypto_info,
- const struct tls_cipher_desc *cipher_desc,
- int mode);
+ const struct tls_cipher_desc *cipher_desc);
int tls_set_sw_offload(struct sock *sk, int tx);
void tls_update_rx_zc_capable(struct tls_context *tls_ctx);
void tls_sw_strparser_arm(struct sock *sk, struct tls_context *ctx);
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
index f01543557a60..bf8ed36b1ad6 100644
--- a/net/tls/tls_device.c
+++ b/net/tls/tls_device.c
@@ -1099,7 +1099,7 @@ int tls_set_device_offload(struct sock *sk)
goto release_netdev;
}
- rc = init_prot_info(prot, crypto_info, cipher_desc, TLS_HW);
+ rc = init_prot_info(prot, crypto_info, cipher_desc);
if (rc)
goto release_netdev;
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 0f6da4ce3ed7..93747ba0d4f0 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -2622,8 +2622,7 @@ static struct tls_sw_context_rx *init_ctx_rx(struct tls_context *ctx)
int init_prot_info(struct tls_prot_info *prot,
const struct tls_crypto_info *crypto_info,
- const struct tls_cipher_desc *cipher_desc,
- int mode)
+ const struct tls_cipher_desc *cipher_desc)
{
u16 nonce_size = cipher_desc->nonce;
@@ -2636,11 +2635,6 @@ int init_prot_info(struct tls_prot_info *prot,
prot->tail_size = 0;
}
- if (mode == TLS_HW) {
- prot->aad_size = 0;
- prot->tail_size = 0;
- }
-
/* Sanity-check the sizes for stack allocations. */
if (nonce_size > TLS_MAX_IV_SIZE || prot->aad_size > TLS_MAX_AAD_SIZE)
return -EINVAL;
@@ -2700,7 +2694,7 @@ int tls_set_sw_offload(struct sock *sk, int tx)
goto free_priv;
}
- rc = init_prot_info(prot, crypto_info, cipher_desc, TLS_SW);
+ rc = init_prot_info(prot, crypto_info, cipher_desc);
if (rc)
goto free_priv;
--
2.42.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
2023-10-20 14:00 [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW Sabrina Dubroca
@ 2023-10-21 0:14 ` Jakub Kicinski
2023-10-22 12:02 ` Tariq Toukan
2023-10-23 17:20 ` patchwork-bot+netdevbpf
1 sibling, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2023-10-21 0:14 UTC (permalink / raw)
To: Sabrina Dubroca
Cc: netdev, David S. Miller, Boris Pismenny, Eric Dumazet,
John Fastabend, Paolo Abeni, Simon Horman, Tariq Toukan
On Fri, 20 Oct 2023 16:00:55 +0200 Sabrina Dubroca wrote:
> Prior to commit 1a074f7618e8 ("tls: also use init_prot_info in
> tls_set_device_offload"), setting TLS_HW on TX didn't touch
> prot->aad_size and prot->tail_size. They are set to 0 during context
> allocation (tls_prot_info is embedded in tls_context, kzalloc'd by
> tls_ctx_create).
>
> When the RX key is configured, tls_set_sw_offload is called (for both
> TLS_SW and TLS_HW). If the TX key is configured in TLS_HW mode after
> the RX key has been installed, init_prot_info will now overwrite the
> correct values of aad_size and tail_size, breaking SW decryption and
> causing -EBADMSG errors to be returned to userspace.
>
> Since TLS_HW doesn't use aad_size and tail_size at all (for TLS1.2,
> tail_size is always 0, and aad_size is equal to TLS_HEADER_SIZE +
> rec_seq_size), we can simply drop this hunk.
>
> Fixes: 1a074f7618e8 ("tls: also use init_prot_info in tls_set_device_offload")
> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
> ---
> Tariq, does that solve the problem you reported in
> https://lore.kernel.org/netdev/3ace1e75-c0a5-4473-848d-91f9ac0a8f9c@gmail.com/
> ?
In case Tariq replies before Monday and DaveM wants to take it, LGTM:
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
2023-10-21 0:14 ` Jakub Kicinski
@ 2023-10-22 12:02 ` Tariq Toukan
2023-10-22 14:07 ` Tariq Toukan
0 siblings, 1 reply; 5+ messages in thread
From: Tariq Toukan @ 2023-10-22 12:02 UTC (permalink / raw)
To: Jakub Kicinski, Sabrina Dubroca
Cc: netdev, David S. Miller, Boris Pismenny, Eric Dumazet,
John Fastabend, Paolo Abeni, Simon Horman, tariq Toukan
On 21/10/2023 3:14, Jakub Kicinski wrote:
> On Fri, 20 Oct 2023 16:00:55 +0200 Sabrina Dubroca wrote:
>> Prior to commit 1a074f7618e8 ("tls: also use init_prot_info in
>> tls_set_device_offload"), setting TLS_HW on TX didn't touch
>> prot->aad_size and prot->tail_size. They are set to 0 during context
>> allocation (tls_prot_info is embedded in tls_context, kzalloc'd by
>> tls_ctx_create).
>>
>> When the RX key is configured, tls_set_sw_offload is called (for both
>> TLS_SW and TLS_HW). If the TX key is configured in TLS_HW mode after
>> the RX key has been installed, init_prot_info will now overwrite the
>> correct values of aad_size and tail_size, breaking SW decryption and
>> causing -EBADMSG errors to be returned to userspace.
>>
>> Since TLS_HW doesn't use aad_size and tail_size at all (for TLS1.2,
>> tail_size is always 0, and aad_size is equal to TLS_HEADER_SIZE +
>> rec_seq_size), we can simply drop this hunk.
>>
>> Fixes: 1a074f7618e8 ("tls: also use init_prot_info in tls_set_device_offload")
>> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
>> ---
>> Tariq, does that solve the problem you reported in
>> https://lore.kernel.org/netdev/3ace1e75-c0a5-4473-848d-91f9ac0a8f9c@gmail.com/
>> ?
>
> In case Tariq replies before Monday and DaveM wants to take it, LGTM:
>
> Acked-by: Jakub Kicinski <kuba@kernel.org>
Hi,
We're testing this fix and will reply ASAP.
Regards,
Tariq
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
2023-10-22 12:02 ` Tariq Toukan
@ 2023-10-22 14:07 ` Tariq Toukan
0 siblings, 0 replies; 5+ messages in thread
From: Tariq Toukan @ 2023-10-22 14:07 UTC (permalink / raw)
To: Jakub Kicinski, Sabrina Dubroca
Cc: netdev, David S. Miller, Boris Pismenny, Eric Dumazet,
John Fastabend, Paolo Abeni, Simon Horman, tariq Toukan,
Ran Rozenstein
On 22/10/2023 15:02, Tariq Toukan wrote:
>
>
> On 21/10/2023 3:14, Jakub Kicinski wrote:
>> On Fri, 20 Oct 2023 16:00:55 +0200 Sabrina Dubroca wrote:
>>> Prior to commit 1a074f7618e8 ("tls: also use init_prot_info in
>>> tls_set_device_offload"), setting TLS_HW on TX didn't touch
>>> prot->aad_size and prot->tail_size. They are set to 0 during context
>>> allocation (tls_prot_info is embedded in tls_context, kzalloc'd by
>>> tls_ctx_create).
>>>
>>> When the RX key is configured, tls_set_sw_offload is called (for both
>>> TLS_SW and TLS_HW). If the TX key is configured in TLS_HW mode after
>>> the RX key has been installed, init_prot_info will now overwrite the
>>> correct values of aad_size and tail_size, breaking SW decryption and
>>> causing -EBADMSG errors to be returned to userspace.
>>>
>>> Since TLS_HW doesn't use aad_size and tail_size at all (for TLS1.2,
>>> tail_size is always 0, and aad_size is equal to TLS_HEADER_SIZE +
>>> rec_seq_size), we can simply drop this hunk.
>>>
>>> Fixes: 1a074f7618e8 ("tls: also use init_prot_info in
>>> tls_set_device_offload")
>>> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
>>> ---
>>> Tariq, does that solve the problem you reported in
>>> https://lore.kernel.org/netdev/3ace1e75-c0a5-4473-848d-91f9ac0a8f9c@gmail.com/
>>> ?
>>
>> In case Tariq replies before Monday and DaveM wants to take it, LGTM:
>>
>> Acked-by: Jakub Kicinski <kuba@kernel.org>
>
> Hi,
>
> We're testing this fix and will reply ASAP.
>
Test passes:
Tested-by: Ran Rozenstein <ranro@nvidia.com>
We suspect that it was not the only degradation introduced by this series.
We are going to run more comprehensive tests with the recent series and
this new fix. Of course we'll update about any remaining issues.
Tariq
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
2023-10-20 14:00 [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW Sabrina Dubroca
2023-10-21 0:14 ` Jakub Kicinski
@ 2023-10-23 17:20 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-10-23 17:20 UTC (permalink / raw)
To: Sabrina Dubroca
Cc: netdev, davem, borisp, edumazet, kuba, john.fastabend, pabeni,
horms, ttoukan.linux
Hello:
This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Fri, 20 Oct 2023 16:00:55 +0200 you wrote:
> Prior to commit 1a074f7618e8 ("tls: also use init_prot_info in
> tls_set_device_offload"), setting TLS_HW on TX didn't touch
> prot->aad_size and prot->tail_size. They are set to 0 during context
> allocation (tls_prot_info is embedded in tls_context, kzalloc'd by
> tls_ctx_create).
>
> When the RX key is configured, tls_set_sw_offload is called (for both
> TLS_SW and TLS_HW). If the TX key is configured in TLS_HW mode after
> the RX key has been installed, init_prot_info will now overwrite the
> correct values of aad_size and tail_size, breaking SW decryption and
> causing -EBADMSG errors to be returned to userspace.
>
> [...]
Here is the summary with links:
- [net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW
https://git.kernel.org/netdev/net-next/c/b7c4f5730a9f
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-10-23 17:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-20 14:00 [PATCH net-next] tls: don't reset prot->aad_size and prot->tail_size for TLS_HW Sabrina Dubroca
2023-10-21 0:14 ` Jakub Kicinski
2023-10-22 12:02 ` Tariq Toukan
2023-10-22 14:07 ` Tariq Toukan
2023-10-23 17:20 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).