Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28190752 authored by Sowmini Varadhan's avatar Sowmini Varadhan Committed by David S. Miller
Browse files

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: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
Acked-by: default avatarWillem de Bruijn <willemb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ea8994cb
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -1049,18 +1049,21 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
		break;

	case SO_ZEROCOPY:
		if (sk->sk_family != PF_INET && sk->sk_family != PF_INET6)
			ret = -ENOTSUPP;
		else if (sk->sk_protocol != IPPROTO_TCP)
		if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6) {
			if (sk->sk_protocol != IPPROTO_TCP)
				ret = -ENOTSUPP;
			else if (sk->sk_state != TCP_CLOSE)
				ret = -EBUSY;
		else if (val < 0 || val > 1)
		} else if (sk->sk_family != PF_RDS) {
			ret = -ENOTSUPP;
		}
		if (!ret) {
			if (val < 0 || val > 1)
				ret = -EINVAL;
			else
				sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
			break;

		}
	default:
		ret = -ENOPROTOOPT;
		break;