lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 228/351] SUNRPC: prevent port reuse on transports which dont request it.
    Date
    From: NeilBrown <neilb@suse.de>

    [ Upstream commit bc1c56e9bbe92766d017efb5f0a0c71f80da5570 ]

    If an RPC client is created without RPC_CLNT_CREATE_REUSEPORT, it should
    not reuse the source port when a TCP connection is re-established.
    This is currently implemented by preventing the source port being
    recorded after a successful connection (the call to xs_set_srcport()).

    However the source port is also recorded after a successful bind in xs_bind().
    This may not be needed at all and certainly is not wanted when
    RPC_CLNT_CREATE_REUSEPORT wasn't requested.

    So avoid that assignment when xprt.reuseport is not set.

    With this change, NFSv4.1 and later mounts use a different port number on
    each connection. This is helpful with some firewalls which don't cope
    well with port reuse.

    Signed-off-by: NeilBrown <neilb@suse.de>
    Fixes: e6237b6feb37 ("NFSv4.1: Don't rebind to the same source port when reconnecting to the server")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/sunrpc/xprtsock.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
    index 316d04945587..3228b7a1836a 100644
    --- a/net/sunrpc/xprtsock.c
    +++ b/net/sunrpc/xprtsock.c
    @@ -1689,7 +1689,8 @@ static int xs_bind(struct sock_xprt *transport, struct socket *sock)
    err = kernel_bind(sock, (struct sockaddr *)&myaddr,
    transport->xprt.addrlen);
    if (err == 0) {
    - transport->srcport = port;
    + if (transport->xprt.reuseport)
    + transport->srcport = port;
    break;
    }
    last = port;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-19 19:49    [W:4.114 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site