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

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

bpf: Fix tcp_iw_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 2ff969fb
Loading
Loading
Loading
Loading
+8 −6
Original line number Original line Diff line number Diff line
@@ -42,8 +42,10 @@ int bpf_iw(struct bpf_sock_ops *skops)
	 * if neither port numberis 55601
	 * if neither port numberis 55601
	 */
	 */
	if (bpf_ntohl(skops->remote_port) != 55601 &&
	if (bpf_ntohl(skops->remote_port) != 55601 &&
	    skops->local_port != 55601)
	    skops->local_port != 55601) {
		return -1;
		skops->reply = -1;
		return 1;
	}


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


@@ -62,7 +64,7 @@ int bpf_iw(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, &bufsize,
		rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF, &bufsize,
				    sizeof(bufsize));
				    sizeof(bufsize));
		rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET, SO_RCVBUF,
		rv += bpf_setsockopt(skops, SOL_SOCKET, SO_RCVBUF,
				     &bufsize, sizeof(bufsize));
				     &bufsize, sizeof(bufsize));
		break;
		break;
	case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB:
	case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB:
@@ -73,7 +75,7 @@ int bpf_iw(struct bpf_sock_ops *skops)
		/* Set sndbuf and rcvbuf of passive connections */
		/* Set sndbuf and rcvbuf of passive connections */
		rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF, &bufsize,
		rv = bpf_setsockopt(skops, SOL_SOCKET, SO_SNDBUF, &bufsize,
				    sizeof(bufsize));
				    sizeof(bufsize));
		rv = rv*100 + bpf_setsockopt(skops, SOL_SOCKET, SO_RCVBUF,
		rv +=  bpf_setsockopt(skops, SOL_SOCKET, SO_RCVBUF,
				      &bufsize, sizeof(bufsize));
				      &bufsize, sizeof(bufsize));
		break;
		break;
	default:
	default: