CC: kbuild-all(a)lists.01.org In-Reply-To: <9dbbf51e7f6868b3e9c8610a8d49b4493fb1b50f.1610381606.git.daniel@iogearbox.net> References: <9dbbf51e7f6868b3e9c8610a8d49b4493fb1b50f.1610381606.git.daniel@iogearbox.net> TO: Daniel Borkmann TO: ast(a)kernel.org CC: yhs(a)fb.com CC: bpf(a)vger.kernel.org CC: netdev(a)vger.kernel.org CC: Daniel Borkmann Hi Daniel, I love your patch! Perhaps something to improve: [auto build test WARNING on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Daniel-Borkmann/bpf-allow-to-retrieve-sol_socket-opts-from-sock_addr-progs/20210112-002246 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master :::::: branch date: 5 hours ago :::::: commit date: 5 hours ago compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot "cppcheck warnings: (new ones prefixed by >>)" net/core/filter.c:612:12: warning: Pointer addition with NULL pointer. [nullPointerArithmetic] new_insn += 3; ^ net/core/filter.c:560:43: note: Assignment 'first_insn=NULL', assigned value is 0 struct bpf_insn *new_insn, *first_insn = NULL; ^ net/core/filter.c:580:13: note: Assignment 'new_insn=first_insn', assigned value is 0 new_insn = first_insn; ^ net/core/filter.c:612:3: note: Compound assignment '+=', assigned value is 3 new_insn += 3; ^ net/core/filter.c:612:12: note: Null pointer addition new_insn += 3; ^ cppcheck possible warnings: (new ones prefixed by >>, may not real problems) net/core/filter.c:8419:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct __sk_buff, cb[0]) ... ^ net/core/filter.c:8544:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct __sk_buff, remote_ip6[0]) ... ^ net/core/filter.c:8564:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct __sk_buff, local_ip6[0]) ... ^ net/core/filter.c:9231:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct bpf_sock_ops, replylong[0]) ... ^ net/core/filter.c:9283:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct bpf_sock_ops, remote_ip6[0]) ... ^ net/core/filter.c:9304:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct bpf_sock_ops, local_ip6[0]) ... ^ net/core/filter.c:9591:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct sk_msg_md, remote_ip6[0]) ... ^ net/core/filter.c:9612:7: warning: Return value of function offsetof() is not used. [ignoredReturnValue] case offsetof(struct sk_msg_md, local_ip6[0]) ... ^ >> net/core/filter.c:4777:8: warning: Variable 'ret' is reassigned a value before the old one has been used. 'break;' missing? [redundantAssignInSwitch] ret = sock_bindtoindex(sk, ifindex, false); ^ net/core/filter.c:4764:9: note: Variable 'ret' is reassigned a value before the old one has been used. 'break;' missing? ret = -ENODEV; ^ net/core/filter.c:4777:8: note: Variable 'ret' is reassigned a value before the old one has been used. 'break;' missing? ret = sock_bindtoindex(sk, ifindex, false); ^ vim +4777 net/core/filter.c 6acc5c2910689fc6 Chenbo Feng 2017-03-22 4696 beecf11bc2188067 Stanislav Fomichev 2020-04-30 4697 static int _bpf_setsockopt(struct sock *sk, int level, int optname, 5cdc744caab7cb0d Neal Cardwell 2020-09-10 4698 char *optval, int optlen) 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4699 { 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4700 char devname[IFNAMSIZ]; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4701 int val, valbool; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4702 struct net *net; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4703 int ifindex; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4704 int ret = 0; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4705 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4706 if (!sk_fullsock(sk)) 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4707 return -EINVAL; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4708 beecf11bc2188067 Stanislav Fomichev 2020-04-30 4709 sock_owned_by_me(sk); beecf11bc2188067 Stanislav Fomichev 2020-04-30 4710 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4711 if (level == SOL_SOCKET) { 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4712 if (optlen != sizeof(int) && optname != SO_BINDTODEVICE) 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4713 return -EINVAL; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4714 val = *((int *)optval); f9bcf96837f158db Dmitry Yakunin 2020-06-20 4715 valbool = val ? 1 : 0; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4716 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4717 /* Only some socketops are supported */ 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4718 switch (optname) { 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4719 case SO_RCVBUF: c9e4576743eeda8d Yafang Shao 2019-01-23 4720 val = min_t(u32, val, sysctl_rmem_max); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4721 sk->sk_userlocks |= SOCK_RCVBUF_LOCK; ebb3b78db7bf8422 Eric Dumazet 2019-10-10 4722 WRITE_ONCE(sk->sk_rcvbuf, ebb3b78db7bf8422 Eric Dumazet 2019-10-10 4723 max_t(int, val * 2, SOCK_MIN_RCVBUF)); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4724 break; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4725 case SO_SNDBUF: c9e4576743eeda8d Yafang Shao 2019-01-23 4726 val = min_t(u32, val, sysctl_wmem_max); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4727 sk->sk_userlocks |= SOCK_SNDBUF_LOCK; e292f05e0df73f9f Eric Dumazet 2019-10-10 4728 WRITE_ONCE(sk->sk_sndbuf, e292f05e0df73f9f Eric Dumazet 2019-10-10 4729 max_t(int, val * 2, SOCK_MIN_SNDBUF)); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4730 break; 76a9ebe811fb3d06 Eric Dumazet 2018-10-15 4731 case SO_MAX_PACING_RATE: /* 32bit version */ e224c390a6259c52 Yuchung Cheng 2019-01-17 4732 if (val != ~0U) e224c390a6259c52 Yuchung Cheng 2019-01-17 4733 cmpxchg(&sk->sk_pacing_status, e224c390a6259c52 Yuchung Cheng 2019-01-17 4734 SK_PACING_NONE, e224c390a6259c52 Yuchung Cheng 2019-01-17 4735 SK_PACING_NEEDED); 700465fd338fe5df Ke Li 2020-10-22 4736 sk->sk_max_pacing_rate = (val == ~0U) ? 700465fd338fe5df Ke Li 2020-10-22 4737 ~0UL : (unsigned int)val; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4738 sk->sk_pacing_rate = min(sk->sk_pacing_rate, 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4739 sk->sk_max_pacing_rate); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4740 break; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4741 case SO_PRIORITY: 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4742 sk->sk_priority = val; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4743 break; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4744 case SO_RCVLOWAT: 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4745 if (val < 0) 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4746 val = INT_MAX; eac66402d1c342f0 Eric Dumazet 2019-10-09 4747 WRITE_ONCE(sk->sk_rcvlowat, val ? : 1); 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4748 break; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4749 case SO_MARK: f4924f24da8c7ef6 Peter Oskolkov 2019-01-16 4750 if (sk->sk_mark != val) { 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4751 sk->sk_mark = val; f4924f24da8c7ef6 Peter Oskolkov 2019-01-16 4752 sk_dst_reset(sk); f4924f24da8c7ef6 Peter Oskolkov 2019-01-16 4753 } 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4754 break; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4755 case SO_BINDTODEVICE: 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4756 optlen = min_t(long, optlen, IFNAMSIZ - 1); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4757 strncpy(devname, optval, optlen); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4758 devname[optlen] = 0; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4759 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4760 ifindex = 0; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4761 if (devname[0] != '\0') { 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4762 struct net_device *dev; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4763 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4764 ret = -ENODEV; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4765 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4766 net = sock_net(sk); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4767 dev = dev_get_by_name(net, devname); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4768 if (!dev) 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4769 break; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4770 ifindex = dev->ifindex; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4771 dev_put(dev); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4772 } 03f510703daae949 Daniel Borkmann 2021-01-11 4773 fallthrough; 03f510703daae949 Daniel Borkmann 2021-01-11 4774 case SO_BINDTOIFINDEX: 03f510703daae949 Daniel Borkmann 2021-01-11 4775 if (optname == SO_BINDTOIFINDEX) 03f510703daae949 Daniel Borkmann 2021-01-11 4776 ifindex = val; 70c58997c1e864c9 Ferenc Fejes 2020-05-30 @4777 ret = sock_bindtoindex(sk, ifindex, false); 70c58997c1e864c9 Ferenc Fejes 2020-05-30 4778 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4779 case SO_KEEPALIVE: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4780 if (sk->sk_prot->keepalive) f9bcf96837f158db Dmitry Yakunin 2020-06-20 4781 sk->sk_prot->keepalive(sk, valbool); f9bcf96837f158db Dmitry Yakunin 2020-06-20 4782 sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool); f9bcf96837f158db Dmitry Yakunin 2020-06-20 4783 break; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4784 default: 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4785 ret = -EINVAL; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4786 } a5192c52377e6d28 Lawrence Brakmo 2017-07-02 4787 #ifdef CONFIG_INET 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4788 } else if (level == SOL_IP) { 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4789 if (optlen != sizeof(int) || sk->sk_family != AF_INET) 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4790 return -EINVAL; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4791 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4792 val = *((int *)optval); 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4793 /* Only some options are supported */ 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4794 switch (optname) { 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4795 case IP_TOS: 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4796 if (val < -1 || val > 0xff) { 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4797 ret = -EINVAL; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4798 } else { 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4799 struct inet_sock *inet = inet_sk(sk); 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4800 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4801 if (val == -1) 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4802 val = 0; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4803 inet->tos = val; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4804 } 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4805 break; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4806 default: 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4807 ret = -EINVAL; 6f5c39fa5cd4a78c Nikita V. Shirokov 2018-03-26 4808 } 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4809 #if IS_ENABLED(CONFIG_IPV6) 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4810 } else if (level == SOL_IPV6) { 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4811 if (optlen != sizeof(int) || sk->sk_family != AF_INET6) 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4812 return -EINVAL; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4813 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4814 val = *((int *)optval); 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4815 /* Only some options are supported */ 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4816 switch (optname) { 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4817 case IPV6_TCLASS: 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4818 if (val < -1 || val > 0xff) { 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4819 ret = -EINVAL; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4820 } else { 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4821 struct ipv6_pinfo *np = inet6_sk(sk); 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4822 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4823 if (val == -1) 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4824 val = 0; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4825 np->tclass = val; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4826 } 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4827 break; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4828 default: 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4829 ret = -EINVAL; 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4830 } 6f9bd3d731aac0d2 Lawrence Brakmo 2018-01-25 4831 #endif 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4832 } else if (level == SOL_TCP && 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4833 sk->sk_prot->setsockopt == tcp_setsockopt) { 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4834 if (optname == TCP_CONGESTION) { 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4835 char name[TCP_CA_NAME_MAX]; 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4836 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4837 strncpy(name, optval, min_t(long, optlen, 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4838 TCP_CA_NAME_MAX-1)); 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4839 name[TCP_CA_NAME_MAX-1] = 0; 29a949325c6c90f1 Neal Cardwell 2020-09-10 4840 ret = tcp_set_congestion_control(sk, name, false, true); 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4841 } else { f9bcf96837f158db Dmitry Yakunin 2020-06-20 4842 struct inet_connection_sock *icsk = inet_csk(sk); fc7478103c84af43 Lawrence Brakmo 2017-06-30 4843 struct tcp_sock *tp = tcp_sk(sk); 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4844 unsigned long timeout; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4845 fc7478103c84af43 Lawrence Brakmo 2017-06-30 4846 if (optlen != sizeof(int)) fc7478103c84af43 Lawrence Brakmo 2017-06-30 4847 return -EINVAL; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4848 fc7478103c84af43 Lawrence Brakmo 2017-06-30 4849 val = *((int *)optval); fc7478103c84af43 Lawrence Brakmo 2017-06-30 4850 /* Only some options are supported */ fc7478103c84af43 Lawrence Brakmo 2017-06-30 4851 switch (optname) { fc7478103c84af43 Lawrence Brakmo 2017-06-30 4852 case TCP_BPF_IW: 31aa6503a15ba001 Yuchung Cheng 2019-01-08 4853 if (val <= 0 || tp->data_segs_out > tp->syn_data) 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4854 ret = -EINVAL; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4855 else fc7478103c84af43 Lawrence Brakmo 2017-06-30 4856 tp->snd_cwnd = val; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4857 break; 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4858 case TCP_BPF_SNDCWND_CLAMP: 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4859 if (val <= 0) { 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4860 ret = -EINVAL; 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4861 } else { 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4862 tp->snd_cwnd_clamp = val; 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4863 tp->snd_ssthresh = val; 13bf96411ad2bd16 Lawrence Brakmo 2017-06-30 4864 } 6d3f06a0042ebd59 Colin Ian King 2017-07-04 4865 break; 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4866 case TCP_BPF_DELACK_MAX: 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4867 timeout = usecs_to_jiffies(val); 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4868 if (timeout > TCP_DELACK_MAX || 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4869 timeout < TCP_TIMEOUT_MIN) 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4870 return -EINVAL; 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4871 inet_csk(sk)->icsk_delack_max = timeout; 2b8ee4f05d4f6a6c Martin KaFai Lau 2020-08-20 4872 break; ca584ba070864c60 Martin KaFai Lau 2020-08-20 4873 case TCP_BPF_RTO_MIN: ca584ba070864c60 Martin KaFai Lau 2020-08-20 4874 timeout = usecs_to_jiffies(val); ca584ba070864c60 Martin KaFai Lau 2020-08-20 4875 if (timeout > TCP_RTO_MIN || ca584ba070864c60 Martin KaFai Lau 2020-08-20 4876 timeout < TCP_TIMEOUT_MIN) ca584ba070864c60 Martin KaFai Lau 2020-08-20 4877 return -EINVAL; ca584ba070864c60 Martin KaFai Lau 2020-08-20 4878 inet_csk(sk)->icsk_rto_min = timeout; ca584ba070864c60 Martin KaFai Lau 2020-08-20 4879 break; 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4880 case TCP_SAVE_SYN: 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4881 if (val < 0 || val > 1) 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4882 ret = -EINVAL; 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4883 else 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4884 tp->save_syn = val; 1e215300f1384072 Nikita V. Shirokov 2018-08-30 4885 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4886 case TCP_KEEPIDLE: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4887 ret = tcp_sock_set_keepidle_locked(sk, val); f9bcf96837f158db Dmitry Yakunin 2020-06-20 4888 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4889 case TCP_KEEPINTVL: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4890 if (val < 1 || val > MAX_TCP_KEEPINTVL) f9bcf96837f158db Dmitry Yakunin 2020-06-20 4891 ret = -EINVAL; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4892 else f9bcf96837f158db Dmitry Yakunin 2020-06-20 4893 tp->keepalive_intvl = val * HZ; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4894 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4895 case TCP_KEEPCNT: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4896 if (val < 1 || val > MAX_TCP_KEEPCNT) f9bcf96837f158db Dmitry Yakunin 2020-06-20 4897 ret = -EINVAL; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4898 else f9bcf96837f158db Dmitry Yakunin 2020-06-20 4899 tp->keepalive_probes = val; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4900 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4901 case TCP_SYNCNT: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4902 if (val < 1 || val > MAX_TCP_SYNCNT) f9bcf96837f158db Dmitry Yakunin 2020-06-20 4903 ret = -EINVAL; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4904 else f9bcf96837f158db Dmitry Yakunin 2020-06-20 4905 icsk->icsk_syn_retries = val; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4906 break; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4907 case TCP_USER_TIMEOUT: f9bcf96837f158db Dmitry Yakunin 2020-06-20 4908 if (val < 0) f9bcf96837f158db Dmitry Yakunin 2020-06-20 4909 ret = -EINVAL; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4910 else f9bcf96837f158db Dmitry Yakunin 2020-06-20 4911 icsk->icsk_user_timeout = val; f9bcf96837f158db Dmitry Yakunin 2020-06-20 4912 break; eca43ee6c46db92d Nikita V. Shirokov 2020-10-09 4913 case TCP_NOTSENT_LOWAT: eca43ee6c46db92d Nikita V. Shirokov 2020-10-09 4914 tp->notsent_lowat = val; eca43ee6c46db92d Nikita V. Shirokov 2020-10-09 4915 sk->sk_write_space(sk); eca43ee6c46db92d Nikita V. Shirokov 2020-10-09 4916 break; cb81110997d1f509 Prankur gupta 2020-12-02 4917 case TCP_WINDOW_CLAMP: cb81110997d1f509 Prankur gupta 2020-12-02 4918 ret = tcp_set_window_clamp(sk, val); cb81110997d1f509 Prankur gupta 2020-12-02 4919 break; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4920 default: fc7478103c84af43 Lawrence Brakmo 2017-06-30 4921 ret = -EINVAL; fc7478103c84af43 Lawrence Brakmo 2017-06-30 4922 } 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4923 } 91b5b21c7c16899a Lawrence Brakmo 2017-06-30 4924 #endif 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4925 } else { 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4926 ret = -EINVAL; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4927 } 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4928 return ret; 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4929 } 8c4b4c7e9ff04479 Lawrence Brakmo 2017-06-30 4930 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org