lkml.org 
[lkml]   [2021]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 101/121] tcp: correctly handle increased zerocopy args struct size
    Date
    From: Arjun Roy <arjunroy@google.com>

    [ Upstream commit e0fecb289ad3fd2245cdc50bf450b97fcca39884 ]

    A prior patch increased the size of struct tcp_zerocopy_receive
    but did not update do_tcp_getsockopt() handling to properly account
    for this.

    This patch simply reintroduces content erroneously cut from the
    referenced prior patch that handles the new struct size.

    Fixes: 18fb76ed5386 ("net-zerocopy: Copy straggler unaligned data for TCP Rx. zerocopy.")
    Signed-off-by: Arjun Roy <arjunroy@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/ipv4/tcp.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
    index bb16c88f58a3c..63c81af41b43e 100644
    --- a/net/ipv4/tcp.c
    +++ b/net/ipv4/tcp.c
    @@ -3931,7 +3931,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
    }
    #ifdef CONFIG_MMU
    case TCP_ZEROCOPY_RECEIVE: {
    - struct tcp_zerocopy_receive zc;
    + struct tcp_zerocopy_receive zc = {};
    int err;

    if (get_user(len, optlen))
    @@ -3949,7 +3949,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
    lock_sock(sk);
    err = tcp_zerocopy_receive(sk, &zc);
    release_sock(sk);
    - if (len == sizeof(zc))
    + if (len >= offsetofend(struct tcp_zerocopy_receive, err))
    goto zerocopy_rcv_sk_err;
    switch (len) {
    case offsetofend(struct tcp_zerocopy_receive, err):
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-29 19:37    [W:4.454 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site