lkml.org 
[lkml]   [2019]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 045/220] selftests/tls: Fix recv(MSG_PEEK) & splice() test cases
    Date
    From: Vakul Garg <vakul.garg@nxp.com>

    [ Upstream commit 0ed3015c9964dab7a1693b3e40650f329c16691e ]

    TLS test cases splice_from_pipe, send_and_splice &
    recv_peek_multiple_records expect to receive a given nummber of bytes
    and then compare them against the number of bytes which were sent.
    Therefore, system call recv() must not return before receiving the
    requested number of bytes, otherwise the subsequent memcmp() fails.
    This patch passes MSG_WAITALL flag to recv() so that it does not return
    prematurely before requested number of bytes are copied to receive
    buffer.

    Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/net/tls.c | 20 ++++++++++----------
    1 file changed, 10 insertions(+), 10 deletions(-)

    diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c
    index 8fdfeafaf8c00..7549d39ccafff 100644
    --- a/tools/testing/selftests/net/tls.c
    +++ b/tools/testing/selftests/net/tls.c
    @@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)
    ASSERT_GE(pipe(p), 0);
    EXPECT_GE(write(p[1], mem_send, send_len), 0);
    EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0);
    - EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
    + EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
    EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
    }

    @@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)

    ASSERT_GE(pipe(p), 0);
    EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2);
    - EXPECT_NE(recv(self->cfd, buf, send_len2, 0), -1);
    + EXPECT_EQ(recv(self->cfd, buf, send_len2, MSG_WAITALL), send_len2);
    EXPECT_EQ(memcmp(test_str, buf, send_len2), 0);

    EXPECT_GE(write(p[1], mem_send, send_len), send_len);
    EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len);

    - EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0);
    + EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);
    EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);
    }

    @@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)
    len = strlen(test_str_second) + 1;
    EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);

    - len = sizeof(buf);
    + len = strlen(test_str_first);
    memset(buf, 0, len);
    - EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
    + EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);

    /* MSG_PEEK can only peek into the current record. */
    - len = strlen(test_str_first) + 1;
    + len = strlen(test_str_first);
    EXPECT_EQ(memcmp(test_str_first, buf, len), 0);

    - len = sizeof(buf);
    + len = strlen(test_str) + 1;
    memset(buf, 0, len);
    - EXPECT_NE(recv(self->cfd, buf, len, 0), -1);
    + EXPECT_EQ(recv(self->cfd, buf, len, MSG_WAITALL), len);

    /* Non-MSG_PEEK will advance strparser (and therefore record)
    * however.
    @@ -543,9 +543,9 @@ TEST_F(tls, recv_peek_multiple_records)
    len = strlen(test_str_second) + 1;
    EXPECT_EQ(send(self->fd, test_str_second, len, 0), len);

    - len = sizeof(buf);
    + len = strlen(test_str) + 1;
    memset(buf, 0, len);
    - EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1);
    + EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);

    len = strlen(test_str) + 1;
    EXPECT_EQ(memcmp(test_str, buf, len), 0);
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-11-22 11:57    [W:4.610 / U:0.660 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site