aboutsummaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorLawrence Brakmo <brakmo@fb.com>2017-11-11 01:19:55 -0500
committerDavid S. Miller <davem@davemloft.net>2017-11-11 01:52:41 -0500
commit03e982eed419da37e9cac1d759097dbe10447190 (patch)
tree8e5123160a50193d2b2c5c65fcd7178359353018 /samples
parente1853319fc4c7279a3561b1844af4a02487c93ef (diff)
bpf: Fix tcp_clamp_kern.c sample program
The program was returning -1 in some cases which is not allowed by the verifier any longer. Fixes: 390ee7e29fc8 ("bpf: enforce return code for cgroup-bpf programs") Signed-off-by: Lawrence Brakmo <brakmo@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'samples')
-rw-r--r--samples/bpf/tcp_clamp_kern.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/samples/bpf/tcp_clamp_kern.c b/samples/bpf/tcp_clamp_kern.c
index d68eadd9ca2d..f4225c9d2c0c 100644
--- a/samples/bpf/tcp_clamp_kern.c
+++ b/samples/bpf/tcp_clamp_kern.c
@@ -41,8 +41,10 @@ int bpf_clamp(struct bpf_sock_ops *skops)
41 /* For testing purposes, only execute rest of BPF program 41 /* For testing purposes, only execute rest of BPF program
42 * if neither port numberis 55601 42 * if neither port numberis 55601
43 */ 43 */
44 if (bpf_ntohl(skops->remote_port) != 55601 && skops->local_port != 55601) 44 if (bpf_ntohl(skops->remote_port) != 55601 && skops->local_port != 55601) {
45 return -1; 45 skops->reply = -1;
46 return 0;
47 }
46 48
47 op = (int) skops->op; 49 op = (int) skops->op;
48 50
@@ -66,9 +68,9 @@ int bpf_clamp(struct bpf_sock_ops *skops)
66 /* Set sndbuf and rcvbuf of active connections */ 68 /* Set sndbuf and rcvbuf of active connections */
67 rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF, 69 rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF,
68 &bufsize, sizeof(bufsize)); 70 &bufsize, sizeof(bufsize));
69 rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET, 71 rv += bpf_setsockopt(skops, SOL_SOCKET,
70 SO_RCVBUF, &bufsize, 72 SO_RCVBUF, &bufsize,
71 sizeof(bufsize)); 73 sizeof(bufsize));
72 break; 74 break;
73 case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB: 75 case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB:
74 rv = bpf_setsockopt(skops, SOL_TCP, 76 rv = bpf_setsockopt(skops, SOL_TCP,
@@ -80,12 +82,12 @@ int bpf_clamp(struct bpf_sock_ops *skops)
80 rv = bpf_setsockopt(skops, SOL_TCP, 82 rv = bpf_setsockopt(skops, SOL_TCP,
81 TCP_BPF_SNDCWND_CLAMP, 83 TCP_BPF_SNDCWND_CLAMP,
82 &clamp, sizeof(clamp)); 84 &clamp, sizeof(clamp));
83 rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET, 85 rv += bpf_setsockopt(skops, SOL_SOCKET,
84 SO_SNDBUF, &bufsize, 86 SO_SNDBUF, &bufsize,
85 sizeof(bufsize)); 87 sizeof(bufsize));
86 rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET, 88 rv += bpf_setsockopt(skops, SOL_SOCKET,
87 SO_RCVBUF, &bufsize, 89 SO_RCVBUF, &bufsize,
88 sizeof(bufsize)); 90 sizeof(bufsize));
89 break; 91 break;
90 default: 92 default:
91 rv = -1; 93 rv = -1;