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

Commit 03e982ee authored by Lawrence Brakmo's avatar Lawrence Brakmo Committed by David S. Miller
Browse files

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: 390ee7e2 ("bpf: enforce return code for cgroup-bpf programs")
Signed-off-by: default avatarLawrence Brakmo <brakmo@fb.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e1853319
Loading
Loading
Loading
Loading
+13 −11
Original line number Original line Diff line number Diff line
@@ -41,8 +41,10 @@ int bpf_clamp(struct bpf_sock_ops *skops)
	/* For testing purposes, only execute rest of BPF program
	/* For testing purposes, only execute rest of BPF program
	 * if neither port numberis 55601
	 * if neither port numberis 55601
	 */
	 */
	if (bpf_ntohl(skops->remote_port) != 55601 && skops->local_port != 55601)
	if (bpf_ntohl(skops->remote_port) != 55601 && skops->local_port != 55601) {
		return -1;
		skops->reply = -1;
		return 0;
	}


	op = (int) skops->op;
	op = (int) skops->op;


@@ -66,7 +68,7 @@ int bpf_clamp(struct bpf_sock_ops *skops)
			/* Set sndbuf and rcvbuf of active connections */
			/* Set sndbuf and rcvbuf of active connections */
			rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF,
			rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF,
					    &bufsize, sizeof(bufsize));
					    &bufsize, sizeof(bufsize));
			rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET,
			rv += bpf_setsockopt(skops, SOL_SOCKET,
					     SO_RCVBUF, &bufsize,
					     SO_RCVBUF, &bufsize,
					     sizeof(bufsize));
					     sizeof(bufsize));
			break;
			break;
@@ -80,10 +82,10 @@ int bpf_clamp(struct bpf_sock_ops *skops)
			rv = bpf_setsockopt(skops, SOL_TCP,
			rv = bpf_setsockopt(skops, SOL_TCP,
					    TCP_BPF_SNDCWND_CLAMP,
					    TCP_BPF_SNDCWND_CLAMP,
					    &clamp, sizeof(clamp));
					    &clamp, sizeof(clamp));
			rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET,
			rv += bpf_setsockopt(skops, SOL_SOCKET,
					     SO_SNDBUF, &bufsize,
					     SO_SNDBUF, &bufsize,
					     sizeof(bufsize));
					     sizeof(bufsize));
			rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET,
			rv += bpf_setsockopt(skops, SOL_SOCKET,
					     SO_RCVBUF, &bufsize,
					     SO_RCVBUF, &bufsize,
					     sizeof(bufsize));
					     sizeof(bufsize));
			break;
			break;