* [PATCH net 1/2] selftests: tls: clean up uninitialized warnings
@ 2021-06-18 20:25 Jakub Kicinski
2021-06-18 20:25 ` [PATCH net 2/2] selftests: tls: fix chacha+bidir tests Jakub Kicinski
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jakub Kicinski @ 2021-06-18 20:25 UTC (permalink / raw
To: davem; +Cc: netdev, linux-kselftest, shuah, vfedorenko, Jakub Kicinski
A bunch of tests uses uninitialized stack memory as random
data to send. This is harmless but generates compiler warnings.
Explicitly init the buffers with random data.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/net/tls.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
index 426d07875a48..58fea6eb588d 100644
--- a/tools/testing/selftests/net/tls.c
+++ b/tools/testing/selftests/net/tls.c
@@ -25,6 +25,18 @@
#define TLS_PAYLOAD_MAX_LEN 16384
#define SOL_TLS 282
+static void memrnd(void *s, size_t n)
+{
+ int *dword = s;
+ char *byte;
+
+ for (; n >= 4; n -= 4)
+ *dword++ = rand();
+ byte = (void *)dword;
+ while (n--)
+ *byte++ = rand();
+}
+
FIXTURE(tls_basic)
{
int fd, cfd;
@@ -308,6 +320,8 @@ TEST_F(tls, recv_max)
char recv_mem[TLS_PAYLOAD_MAX_LEN];
char buf[TLS_PAYLOAD_MAX_LEN];
+ memrnd(buf, sizeof(buf));
+
EXPECT_GE(send(self->fd, buf, send_len, 0), 0);
EXPECT_NE(recv(self->cfd, recv_mem, send_len, 0), -1);
EXPECT_EQ(memcmp(buf, recv_mem, send_len), 0);
@@ -588,6 +602,8 @@ TEST_F(tls, recvmsg_single_max)
struct iovec vec;
struct msghdr hdr;
+ memrnd(send_mem, sizeof(send_mem));
+
EXPECT_EQ(send(self->fd, send_mem, send_len, 0), send_len);
vec.iov_base = (char *)recv_mem;
vec.iov_len = TLS_PAYLOAD_MAX_LEN;
@@ -610,6 +626,8 @@ TEST_F(tls, recvmsg_multiple)
struct msghdr hdr;
int i;
+ memrnd(buf, sizeof(buf));
+
EXPECT_EQ(send(self->fd, buf, send_len, 0), send_len);
for (i = 0; i < msg_iovlen; i++) {
iov_base[i] = (char *)malloc(iov_len);
@@ -634,6 +652,8 @@ TEST_F(tls, single_send_multiple_recv)
char send_mem[TLS_PAYLOAD_MAX_LEN * 2];
char recv_mem[TLS_PAYLOAD_MAX_LEN * 2];
+ memrnd(send_mem, sizeof(send_mem));
+
EXPECT_GE(send(self->fd, send_mem, total_len, 0), 0);
memset(recv_mem, 0, total_len);
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 2/2] selftests: tls: fix chacha+bidir tests
2021-06-18 20:25 [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Jakub Kicinski
@ 2021-06-18 20:25 ` Jakub Kicinski
2021-06-18 22:03 ` Vadim Fedorenko
2021-06-18 22:02 ` [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Vadim Fedorenko
2021-06-21 19:20 ` patchwork-bot+netdevbpf
2 siblings, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2021-06-18 20:25 UTC (permalink / raw
To: davem; +Cc: netdev, linux-kselftest, shuah, vfedorenko, Jakub Kicinski
ChaCha support did not adjust the bidirectional test.
We need to set up KTLS in reverse direction correctly,
otherwise these two cases will fail:
tls.12_chacha.bidir
tls.13_chacha.bidir
Fixes: 4f336e88a870 ("selftests/tls: add CHACHA20-POLY1305 to tls selftests")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/net/tls.c | 67 ++++++++++++++++++-------------
1 file changed, 39 insertions(+), 28 deletions(-)
diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
index 58fea6eb588d..112d41d01b12 100644
--- a/tools/testing/selftests/net/tls.c
+++ b/tools/testing/selftests/net/tls.c
@@ -25,6 +25,35 @@
#define TLS_PAYLOAD_MAX_LEN 16384
#define SOL_TLS 282
+struct tls_crypto_info_keys {
+ union {
+ struct tls12_crypto_info_aes_gcm_128 aes128;
+ struct tls12_crypto_info_chacha20_poly1305 chacha20;
+ };
+ size_t len;
+};
+
+static void tls_crypto_info_init(uint16_t tls_version, uint16_t cipher_type,
+ struct tls_crypto_info_keys *tls12)
+{
+ memset(tls12, 0, sizeof(*tls12));
+
+ switch (cipher_type) {
+ case TLS_CIPHER_CHACHA20_POLY1305:
+ tls12->len = sizeof(struct tls12_crypto_info_chacha20_poly1305);
+ tls12->chacha20.info.version = tls_version;
+ tls12->chacha20.info.cipher_type = cipher_type;
+ break;
+ case TLS_CIPHER_AES_GCM_128:
+ tls12->len = sizeof(struct tls12_crypto_info_aes_gcm_128);
+ tls12->aes128.info.version = tls_version;
+ tls12->aes128.info.cipher_type = cipher_type;
+ break;
+ default:
+ break;
+ }
+}
+
static void memrnd(void *s, size_t n)
{
int *dword = s;
@@ -145,33 +174,16 @@ FIXTURE_VARIANT_ADD(tls, 13_chacha)
FIXTURE_SETUP(tls)
{
- union {
- struct tls12_crypto_info_aes_gcm_128 aes128;
- struct tls12_crypto_info_chacha20_poly1305 chacha20;
- } tls12;
+ struct tls_crypto_info_keys tls12;
struct sockaddr_in addr;
socklen_t len;
int sfd, ret;
- size_t tls12_sz;
self->notls = false;
len = sizeof(addr);
- memset(&tls12, 0, sizeof(tls12));
- switch (variant->cipher_type) {
- case TLS_CIPHER_CHACHA20_POLY1305:
- tls12_sz = sizeof(struct tls12_crypto_info_chacha20_poly1305);
- tls12.chacha20.info.version = variant->tls_version;
- tls12.chacha20.info.cipher_type = variant->cipher_type;
- break;
- case TLS_CIPHER_AES_GCM_128:
- tls12_sz = sizeof(struct tls12_crypto_info_aes_gcm_128);
- tls12.aes128.info.version = variant->tls_version;
- tls12.aes128.info.cipher_type = variant->cipher_type;
- break;
- default:
- tls12_sz = 0;
- }
+ tls_crypto_info_init(variant->tls_version, variant->cipher_type,
+ &tls12);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
@@ -199,7 +211,7 @@ FIXTURE_SETUP(tls)
if (!self->notls) {
ret = setsockopt(self->fd, SOL_TLS, TLS_TX, &tls12,
- tls12_sz);
+ tls12.len);
ASSERT_EQ(ret, 0);
}
@@ -212,7 +224,7 @@ FIXTURE_SETUP(tls)
ASSERT_EQ(ret, 0);
ret = setsockopt(self->cfd, SOL_TLS, TLS_RX, &tls12,
- tls12_sz);
+ tls12.len);
ASSERT_EQ(ret, 0);
}
@@ -854,18 +866,17 @@ TEST_F(tls, bidir)
int ret;
if (!self->notls) {
- struct tls12_crypto_info_aes_gcm_128 tls12;
+ struct tls_crypto_info_keys tls12;
- memset(&tls12, 0, sizeof(tls12));
- tls12.info.version = variant->tls_version;
- tls12.info.cipher_type = TLS_CIPHER_AES_GCM_128;
+ tls_crypto_info_init(variant->tls_version, variant->cipher_type,
+ &tls12);
ret = setsockopt(self->fd, SOL_TLS, TLS_RX, &tls12,
- sizeof(tls12));
+ tls12.len);
ASSERT_EQ(ret, 0);
ret = setsockopt(self->cfd, SOL_TLS, TLS_TX, &tls12,
- sizeof(tls12));
+ tls12.len);
ASSERT_EQ(ret, 0);
}
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 2/2] selftests: tls: fix chacha+bidir tests
2021-06-18 20:25 ` [PATCH net 2/2] selftests: tls: fix chacha+bidir tests Jakub Kicinski
@ 2021-06-18 22:03 ` Vadim Fedorenko
0 siblings, 0 replies; 5+ messages in thread
From: Vadim Fedorenko @ 2021-06-18 22:03 UTC (permalink / raw
To: Jakub Kicinski, davem; +Cc: netdev, linux-kselftest, shuah
On 18.06.2021 21:25, Jakub Kicinski wrote:
> ChaCha support did not adjust the bidirectional test.
> We need to set up KTLS in reverse direction correctly,
> otherwise these two cases will fail:
>
> tls.12_chacha.bidir
> tls.13_chacha.bidir
>
> Fixes: 4f336e88a870 ("selftests/tls: add CHACHA20-POLY1305 to tls selftests")
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> tools/testing/selftests/net/tls.c | 67 ++++++++++++++++++-------------
> 1 file changed, 39 insertions(+), 28 deletions(-)
>
> diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
> index 58fea6eb588d..112d41d01b12 100644
> --- a/tools/testing/selftests/net/tls.c
> +++ b/tools/testing/selftests/net/tls.c
> @@ -25,6 +25,35 @@
> #define TLS_PAYLOAD_MAX_LEN 16384
> #define SOL_TLS 282
>
> +struct tls_crypto_info_keys {
> + union {
> + struct tls12_crypto_info_aes_gcm_128 aes128;
> + struct tls12_crypto_info_chacha20_poly1305 chacha20;
> + };
> + size_t len;
> +};
> +
> +static void tls_crypto_info_init(uint16_t tls_version, uint16_t cipher_type,
> + struct tls_crypto_info_keys *tls12)
> +{
> + memset(tls12, 0, sizeof(*tls12));
> +
> + switch (cipher_type) {
> + case TLS_CIPHER_CHACHA20_POLY1305:
> + tls12->len = sizeof(struct tls12_crypto_info_chacha20_poly1305);
> + tls12->chacha20.info.version = tls_version;
> + tls12->chacha20.info.cipher_type = cipher_type;
> + break;
> + case TLS_CIPHER_AES_GCM_128:
> + tls12->len = sizeof(struct tls12_crypto_info_aes_gcm_128);
> + tls12->aes128.info.version = tls_version;
> + tls12->aes128.info.cipher_type = cipher_type;
> + break;
> + default:
> + break;
> + }
> +}
> +
> static void memrnd(void *s, size_t n)
> {
> int *dword = s;
> @@ -145,33 +174,16 @@ FIXTURE_VARIANT_ADD(tls, 13_chacha)
>
> FIXTURE_SETUP(tls)
> {
> - union {
> - struct tls12_crypto_info_aes_gcm_128 aes128;
> - struct tls12_crypto_info_chacha20_poly1305 chacha20;
> - } tls12;
> + struct tls_crypto_info_keys tls12;
> struct sockaddr_in addr;
> socklen_t len;
> int sfd, ret;
> - size_t tls12_sz;
>
> self->notls = false;
> len = sizeof(addr);
>
> - memset(&tls12, 0, sizeof(tls12));
> - switch (variant->cipher_type) {
> - case TLS_CIPHER_CHACHA20_POLY1305:
> - tls12_sz = sizeof(struct tls12_crypto_info_chacha20_poly1305);
> - tls12.chacha20.info.version = variant->tls_version;
> - tls12.chacha20.info.cipher_type = variant->cipher_type;
> - break;
> - case TLS_CIPHER_AES_GCM_128:
> - tls12_sz = sizeof(struct tls12_crypto_info_aes_gcm_128);
> - tls12.aes128.info.version = variant->tls_version;
> - tls12.aes128.info.cipher_type = variant->cipher_type;
> - break;
> - default:
> - tls12_sz = 0;
> - }
> + tls_crypto_info_init(variant->tls_version, variant->cipher_type,
> + &tls12);
>
> addr.sin_family = AF_INET;
> addr.sin_addr.s_addr = htonl(INADDR_ANY);
> @@ -199,7 +211,7 @@ FIXTURE_SETUP(tls)
>
> if (!self->notls) {
> ret = setsockopt(self->fd, SOL_TLS, TLS_TX, &tls12,
> - tls12_sz);
> + tls12.len);
> ASSERT_EQ(ret, 0);
> }
>
> @@ -212,7 +224,7 @@ FIXTURE_SETUP(tls)
> ASSERT_EQ(ret, 0);
>
> ret = setsockopt(self->cfd, SOL_TLS, TLS_RX, &tls12,
> - tls12_sz);
> + tls12.len);
> ASSERT_EQ(ret, 0);
> }
>
> @@ -854,18 +866,17 @@ TEST_F(tls, bidir)
> int ret;
>
> if (!self->notls) {
> - struct tls12_crypto_info_aes_gcm_128 tls12;
> + struct tls_crypto_info_keys tls12;
>
> - memset(&tls12, 0, sizeof(tls12));
> - tls12.info.version = variant->tls_version;
> - tls12.info.cipher_type = TLS_CIPHER_AES_GCM_128;
> + tls_crypto_info_init(variant->tls_version, variant->cipher_type,
> + &tls12);
>
> ret = setsockopt(self->fd, SOL_TLS, TLS_RX, &tls12,
> - sizeof(tls12));
> + tls12.len);
> ASSERT_EQ(ret, 0);
>
> ret = setsockopt(self->cfd, SOL_TLS, TLS_TX, &tls12,
> - sizeof(tls12));
> + tls12.len);
> ASSERT_EQ(ret, 0);
> }
>
>
Acked-by: Vadim Fedorenko <vfedorenko@novek.ru>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net 1/2] selftests: tls: clean up uninitialized warnings
2021-06-18 20:25 [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Jakub Kicinski
2021-06-18 20:25 ` [PATCH net 2/2] selftests: tls: fix chacha+bidir tests Jakub Kicinski
@ 2021-06-18 22:02 ` Vadim Fedorenko
2021-06-21 19:20 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 5+ messages in thread
From: Vadim Fedorenko @ 2021-06-18 22:02 UTC (permalink / raw
To: Jakub Kicinski, davem; +Cc: netdev, linux-kselftest, shuah
On 18.06.2021 21:25, Jakub Kicinski wrote:
> A bunch of tests uses uninitialized stack memory as random
> data to send. This is harmless but generates compiler warnings.
> Explicitly init the buffers with random data.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> tools/testing/selftests/net/tls.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
> index 426d07875a48..58fea6eb588d 100644
> --- a/tools/testing/selftests/net/tls.c
> +++ b/tools/testing/selftests/net/tls.c
> @@ -25,6 +25,18 @@
> #define TLS_PAYLOAD_MAX_LEN 16384
> #define SOL_TLS 282
>
> +static void memrnd(void *s, size_t n)
> +{
> + int *dword = s;
> + char *byte;
> +
> + for (; n >= 4; n -= 4)
> + *dword++ = rand();
> + byte = (void *)dword;
> + while (n--)
> + *byte++ = rand();
> +}
> +
> FIXTURE(tls_basic)
> {
> int fd, cfd;
> @@ -308,6 +320,8 @@ TEST_F(tls, recv_max)
> char recv_mem[TLS_PAYLOAD_MAX_LEN];
> char buf[TLS_PAYLOAD_MAX_LEN];
>
> + memrnd(buf, sizeof(buf));
> +
> EXPECT_GE(send(self->fd, buf, send_len, 0), 0);
> EXPECT_NE(recv(self->cfd, recv_mem, send_len, 0), -1);
> EXPECT_EQ(memcmp(buf, recv_mem, send_len), 0);
> @@ -588,6 +602,8 @@ TEST_F(tls, recvmsg_single_max)
> struct iovec vec;
> struct msghdr hdr;
>
> + memrnd(send_mem, sizeof(send_mem));
> +
> EXPECT_EQ(send(self->fd, send_mem, send_len, 0), send_len);
> vec.iov_base = (char *)recv_mem;
> vec.iov_len = TLS_PAYLOAD_MAX_LEN;
> @@ -610,6 +626,8 @@ TEST_F(tls, recvmsg_multiple)
> struct msghdr hdr;
> int i;
>
> + memrnd(buf, sizeof(buf));
> +
> EXPECT_EQ(send(self->fd, buf, send_len, 0), send_len);
> for (i = 0; i < msg_iovlen; i++) {
> iov_base[i] = (char *)malloc(iov_len);
> @@ -634,6 +652,8 @@ TEST_F(tls, single_send_multiple_recv)
> char send_mem[TLS_PAYLOAD_MAX_LEN * 2];
> char recv_mem[TLS_PAYLOAD_MAX_LEN * 2];
>
> + memrnd(send_mem, sizeof(send_mem));
> +
> EXPECT_GE(send(self->fd, send_mem, total_len, 0), 0);
> memset(recv_mem, 0, total_len);
>
>
Acked-by: Vadim Fedorenko <vfedorenko@novek.ru>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net 1/2] selftests: tls: clean up uninitialized warnings
2021-06-18 20:25 [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Jakub Kicinski
2021-06-18 20:25 ` [PATCH net 2/2] selftests: tls: fix chacha+bidir tests Jakub Kicinski
2021-06-18 22:02 ` [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Vadim Fedorenko
@ 2021-06-21 19:20 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-06-21 19:20 UTC (permalink / raw
To: Jakub Kicinski; +Cc: davem, netdev, linux-kselftest, shuah, vfedorenko
Hello:
This series was applied to netdev/net-next.git (refs/heads/master):
On Fri, 18 Jun 2021 13:25:03 -0700 you wrote:
> A bunch of tests uses uninitialized stack memory as random
> data to send. This is harmless but generates compiler warnings.
> Explicitly init the buffers with random data.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> tools/testing/selftests/net/tls.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
Here is the summary with links:
- [net,1/2] selftests: tls: clean up uninitialized warnings
https://git.kernel.org/netdev/net-next/c/baa00119d69e
- [net,2/2] selftests: tls: fix chacha+bidir tests
https://git.kernel.org/netdev/net-next/c/291c53e4dacd
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:[~2021-06-21 19:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-18 20:25 [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Jakub Kicinski
2021-06-18 20:25 ` [PATCH net 2/2] selftests: tls: fix chacha+bidir tests Jakub Kicinski
2021-06-18 22:03 ` Vadim Fedorenko
2021-06-18 22:02 ` [PATCH net 1/2] selftests: tls: clean up uninitialized warnings Vadim Fedorenko
2021-06-21 19: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 read-only IMAP folder(s) and NNTP newsgroup(s).