Commit 790709f2 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

net: relax SO_TXTIME CAP_NET_ADMIN check

Now sch_fq has horizon feature, we want to allow QUIC/UDP applications
to use EDT model so that pacing can be offloaded to the kernel (sch_fq)
or the NIC.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Acked-by: default avatarWillem de Bruijn <willemb@google.com>
Acked-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 738fea32
...@@ -1152,23 +1152,31 @@ int sock_setsockopt(struct socket *sock, int level, int optname, ...@@ -1152,23 +1152,31 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
break; break;
case SO_TXTIME: case SO_TXTIME:
if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) { if (optlen != sizeof(struct sock_txtime)) {
ret = -EPERM;
} else if (optlen != sizeof(struct sock_txtime)) {
ret = -EINVAL; ret = -EINVAL;
break;
} else if (copy_from_user(&sk_txtime, optval, } else if (copy_from_user(&sk_txtime, optval,
sizeof(struct sock_txtime))) { sizeof(struct sock_txtime))) {
ret = -EFAULT; ret = -EFAULT;
break;
} else if (sk_txtime.flags & ~SOF_TXTIME_FLAGS_MASK) { } else if (sk_txtime.flags & ~SOF_TXTIME_FLAGS_MASK) {
ret = -EINVAL; ret = -EINVAL;
} else { break;
sock_valbool_flag(sk, SOCK_TXTIME, true); }
sk->sk_clockid = sk_txtime.clockid; /* CLOCK_MONOTONIC is only used by sch_fq, and this packet
sk->sk_txtime_deadline_mode = * scheduler has enough safe guards.
!!(sk_txtime.flags & SOF_TXTIME_DEADLINE_MODE); */
sk->sk_txtime_report_errors = if (sk_txtime.clockid != CLOCK_MONOTONIC &&
!!(sk_txtime.flags & SOF_TXTIME_REPORT_ERRORS); !ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) {
ret = -EPERM;
break;
} }
sock_valbool_flag(sk, SOCK_TXTIME, true);
sk->sk_clockid = sk_txtime.clockid;
sk->sk_txtime_deadline_mode =
!!(sk_txtime.flags & SOF_TXTIME_DEADLINE_MODE);
sk->sk_txtime_report_errors =
!!(sk_txtime.flags & SOF_TXTIME_REPORT_ERRORS);
break; break;
case SO_BINDTOIFINDEX: case SO_BINDTOIFINDEX:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment