Skip to content

Commit fb0aa07

Browse files
Wen Gudavem330
authored andcommitted
net/smc: avoid overwriting when adjusting sock bufsizes
When copying smc settings to clcsock, avoid setting clcsock's sk_sndbuf to sysctl_tcp_wmem[1], since this may overwrite the value set by tcp_sndbuf_expand() in TCP connection establishment. And the other setting sk_{snd|rcv}buf to sysctl value in smc_adjust_sock_bufsizes() can also be omitted since the initialization of smc sock and clcsock has set sk_{snd|rcv}buf to smc.sysctl_{w|r}mem or ipv4_sysctl_tcp_{w|r}mem[1]. Fixes: 30c3c4a ("net/smc: Use correct buffer sizes when switching between TCP and SMC") Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Wen Gu <[email protected]> Reviewed-by: Wenjia Zhang <[email protected]> Reviewed-by: Gerd Bayer <[email protected]>, too. Signed-off-by: David S. Miller <[email protected]>
1 parent 8b0f741 commit fb0aa07

File tree

1 file changed

+2
-20
lines changed

1 file changed

+2
-20
lines changed

net/smc/af_smc.c

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -459,29 +459,11 @@ static int smc_bind(struct socket *sock, struct sockaddr *uaddr,
459459
static void smc_adjust_sock_bufsizes(struct sock *nsk, struct sock *osk,
460460
unsigned long mask)
461461
{
462-
struct net *nnet = sock_net(nsk);
463-
464462
nsk->sk_userlocks = osk->sk_userlocks;
465-
if (osk->sk_userlocks & SOCK_SNDBUF_LOCK) {
463+
if (osk->sk_userlocks & SOCK_SNDBUF_LOCK)
466464
nsk->sk_sndbuf = osk->sk_sndbuf;
467-
} else {
468-
if (mask == SK_FLAGS_SMC_TO_CLC)
469-
WRITE_ONCE(nsk->sk_sndbuf,
470-
READ_ONCE(nnet->ipv4.sysctl_tcp_wmem[1]));
471-
else
472-
WRITE_ONCE(nsk->sk_sndbuf,
473-
2 * READ_ONCE(nnet->smc.sysctl_wmem));
474-
}
475-
if (osk->sk_userlocks & SOCK_RCVBUF_LOCK) {
465+
if (osk->sk_userlocks & SOCK_RCVBUF_LOCK)
476466
nsk->sk_rcvbuf = osk->sk_rcvbuf;
477-
} else {
478-
if (mask == SK_FLAGS_SMC_TO_CLC)
479-
WRITE_ONCE(nsk->sk_rcvbuf,
480-
READ_ONCE(nnet->ipv4.sysctl_tcp_rmem[1]));
481-
else
482-
WRITE_ONCE(nsk->sk_rcvbuf,
483-
2 * READ_ONCE(nnet->smc.sysctl_rmem));
484-
}
485467
}
486468

487469
static void smc_copy_sock_settings(struct sock *nsk, struct sock *osk,

0 commit comments

Comments
 (0)