Skip to content

Commit 2819075

Browse files
sowminivdavem330
authored andcommitted
sock: permit SO_ZEROCOPY on PF_RDS socket
allow the application to set SO_ZEROCOPY on the underlying sk of a PF_RDS socket Signed-off-by: Sowmini Varadhan <[email protected]> Acked-by: Willem de Bruijn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ea8994c commit 2819075

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

net/core/sock.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,18 +1049,21 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
10491049
break;
10501050

10511051
case SO_ZEROCOPY:
1052-
if (sk->sk_family != PF_INET && sk->sk_family != PF_INET6)
1052+
if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6) {
1053+
if (sk->sk_protocol != IPPROTO_TCP)
1054+
ret = -ENOTSUPP;
1055+
else if (sk->sk_state != TCP_CLOSE)
1056+
ret = -EBUSY;
1057+
} else if (sk->sk_family != PF_RDS) {
10531058
ret = -ENOTSUPP;
1054-
else if (sk->sk_protocol != IPPROTO_TCP)
1055-
ret = -ENOTSUPP;
1056-
else if (sk->sk_state != TCP_CLOSE)
1057-
ret = -EBUSY;
1058-
else if (val < 0 || val > 1)
1059-
ret = -EINVAL;
1060-
else
1061-
sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
1062-
break;
1063-
1059+
}
1060+
if (!ret) {
1061+
if (val < 0 || val > 1)
1062+
ret = -EINVAL;
1063+
else
1064+
sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
1065+
break;
1066+
}
10641067
default:
10651068
ret = -ENOPROTOOPT;
10661069
break;

0 commit comments

Comments
 (0)