Skip to content

Commit f0bc514

Browse files
Paolo Abenidavem330
authored andcommitted
mptcp: avoid additional indirection in sockopt
The mptcp sockopt infrastructure unneedly uses the first subflow socket struct in a few spots. We are going to remove such field soon, so use directly the first subflow sock instead. No functional changes intended. Signed-off-by: Paolo Abeni <[email protected]> Reviewed-by: Mat Martineau <[email protected]> Signed-off-by: Matthieu Baerts <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1f6610b commit f0bc514

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

net/mptcp/sockopt.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ static int mptcp_setsockopt_sol_socket(struct mptcp_sock *msk, int optname,
293293
{
294294
struct sock *sk = (struct sock *)msk;
295295
struct socket *ssock;
296+
struct sock *ssk;
296297
int ret;
297298

298299
switch (optname) {
@@ -307,16 +308,17 @@ static int mptcp_setsockopt_sol_socket(struct mptcp_sock *msk, int optname,
307308
return PTR_ERR(ssock);
308309
}
309310

310-
ret = sock_setsockopt(ssock, SOL_SOCKET, optname, optval, optlen);
311+
ssk = msk->first;
312+
ret = sk_setsockopt(ssk, SOL_SOCKET, optname, optval, optlen);
311313
if (ret == 0) {
312314
if (optname == SO_REUSEPORT)
313-
sk->sk_reuseport = ssock->sk->sk_reuseport;
315+
sk->sk_reuseport = ssk->sk_reuseport;
314316
else if (optname == SO_REUSEADDR)
315-
sk->sk_reuse = ssock->sk->sk_reuse;
317+
sk->sk_reuse = ssk->sk_reuse;
316318
else if (optname == SO_BINDTODEVICE)
317-
sk->sk_bound_dev_if = ssock->sk->sk_bound_dev_if;
319+
sk->sk_bound_dev_if = ssk->sk_bound_dev_if;
318320
else if (optname == SO_BINDTOIFINDEX)
319-
sk->sk_bound_dev_if = ssock->sk->sk_bound_dev_if;
321+
sk->sk_bound_dev_if = ssk->sk_bound_dev_if;
320322
}
321323
release_sock(sk);
322324
return ret;
@@ -391,6 +393,7 @@ static int mptcp_setsockopt_v6(struct mptcp_sock *msk, int optname,
391393
struct sock *sk = (struct sock *)msk;
392394
int ret = -EOPNOTSUPP;
393395
struct socket *ssock;
396+
struct sock *ssk;
394397

395398
switch (optname) {
396399
case IPV6_V6ONLY:
@@ -403,7 +406,8 @@ static int mptcp_setsockopt_v6(struct mptcp_sock *msk, int optname,
403406
return PTR_ERR(ssock);
404407
}
405408

406-
ret = tcp_setsockopt(ssock->sk, SOL_IPV6, optname, optval, optlen);
409+
ssk = msk->first;
410+
ret = tcp_setsockopt(ssk, SOL_IPV6, optname, optval, optlen);
407411
if (ret != 0) {
408412
release_sock(sk);
409413
return ret;
@@ -413,13 +417,13 @@ static int mptcp_setsockopt_v6(struct mptcp_sock *msk, int optname,
413417

414418
switch (optname) {
415419
case IPV6_V6ONLY:
416-
sk->sk_ipv6only = ssock->sk->sk_ipv6only;
420+
sk->sk_ipv6only = ssk->sk_ipv6only;
417421
break;
418422
case IPV6_TRANSPARENT:
419-
inet_sk(sk)->transparent = inet_sk(ssock->sk)->transparent;
423+
inet_sk(sk)->transparent = inet_sk(ssk)->transparent;
420424
break;
421425
case IPV6_FREEBIND:
422-
inet_sk(sk)->freebind = inet_sk(ssock->sk)->freebind;
426+
inet_sk(sk)->freebind = inet_sk(ssk)->freebind;
423427
break;
424428
}
425429

@@ -700,7 +704,7 @@ static int mptcp_setsockopt_sol_ip_set_transparent(struct mptcp_sock *msk, int o
700704
return PTR_ERR(ssock);
701705
}
702706

703-
issk = inet_sk(ssock->sk);
707+
issk = inet_sk(msk->first);
704708

705709
switch (optname) {
706710
case IP_FREEBIND:
@@ -865,8 +869,8 @@ static int mptcp_getsockopt_first_sf_only(struct mptcp_sock *msk, int level, int
865869
{
866870
struct sock *sk = (struct sock *)msk;
867871
struct socket *ssock;
868-
int ret;
869872
struct sock *ssk;
873+
int ret;
870874

871875
lock_sock(sk);
872876
ssk = msk->first;
@@ -881,7 +885,7 @@ static int mptcp_getsockopt_first_sf_only(struct mptcp_sock *msk, int level, int
881885
goto out;
882886
}
883887

884-
ret = tcp_getsockopt(ssock->sk, level, optname, optval, optlen);
888+
ret = tcp_getsockopt(ssk, level, optname, optval, optlen);
885889

886890
out:
887891
release_sock(sk);

0 commit comments

Comments
 (0)