Hi, Eric Dumazet <eduma...@google.com> writes:
> 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: Eric Dumazet <eduma...@google.com> > Cc: Willem de Bruijn <will...@google.com> > --- > net/core/sock.c | 28 ++++++++++++++++++---------- > 1 file changed, 18 insertions(+), 10 deletions(-) > > diff --git a/net/core/sock.c b/net/core/sock.c > index > b714162213aeae98bfee24d8b457547fe7abab4f..fd85e651ce284b6987f0e8fae94f76ec2c432899 > 100644 > --- a/net/core/sock.c > +++ b/net/core/sock.c > @@ -1152,23 +1152,31 @@ int sock_setsockopt(struct socket *sock, int level, > int optname, > break; > > case SO_TXTIME: > - if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) { > - ret = -EPERM; > - } else if (optlen != sizeof(struct sock_txtime)) { > + if (optlen != sizeof(struct sock_txtime)) { > ret = -EINVAL; > + break; > } else if (copy_from_user(&sk_txtime, optval, > sizeof(struct sock_txtime))) { > ret = -EFAULT; > + break; > } else if (sk_txtime.flags & ~SOF_TXTIME_FLAGS_MASK) { > ret = -EINVAL; > - } else { > - 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; > } > + /* CLOCK_MONOTONIC is only used by sch_fq, and this packet > + * scheduler has enough safe guards. > + */ > + if (sk_txtime.clockid != CLOCK_MONOTONIC && > + !ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) { > + ret = -EPERM; > + break; > + } I was a bit worried until I saw the check above. Acked-by: Vinicius Costa Gomes <vinicius.go...@intel.com> > + 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; > > case SO_BINDTOIFINDEX: > -- > 2.26.2.526.g744177e7f7-goog > -- Vinicius