From: Florian Westphal Date: Fri, 6 Mar 2020 20:29:46 +0000 (+0100) Subject: mptcp: don't grow mptcp socket receive buffer when rcvbuf is locked X-Git-Tag: v5.7-rc1~146^2~215^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ec33916d47cbac546e0437b59e6ed779d3c31ac3;p=tomoyo%2Ftomoyo-test1.git mptcp: don't grow mptcp socket receive buffer when rcvbuf is locked The mptcp rcvbuf size is adjusted according to the subflow rcvbuf size. This should not be done if userspace did set a fixed value. Fixes: 600911ff5f72bae ("mptcp: add rmem queue accounting") Signed-off-by: Florian Westphal Signed-off-by: David S. Miller --- diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 4c075a9f7ed0..95007e433109 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -141,11 +141,13 @@ static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk, bool more_data_avail; struct tcp_sock *tp; bool done = false; - int rcvbuf; - rcvbuf = max(ssk->sk_rcvbuf, sk->sk_rcvbuf); - if (rcvbuf > sk->sk_rcvbuf) - sk->sk_rcvbuf = rcvbuf; + if (!(sk->sk_userlocks & SOCK_RCVBUF_LOCK)) { + int rcvbuf = max(ssk->sk_rcvbuf, sk->sk_rcvbuf); + + if (rcvbuf > sk->sk_rcvbuf) + sk->sk_rcvbuf = rcvbuf; + } tp = tcp_sk(ssk); do {