diff mbox

[net-next,1/4] test_bpf: assign type to native eBPF test cases

Message ID 45cfb718190f86817a7662e58499a08f30521404.1438250937.git.daniel@iogearbox.net
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Daniel Borkmann July 30, 2015, 10:42 a.m. UTC
As JITs start to perform optimizations whether to clear A and X on eBPF
programs in the prologue, we should actually assign a program type to the
native eBPF test cases. It doesn't really matter which program type, as
these instructions don't go through the verifier, but it needs to be a
type != BPF_PROG_TYPE_UNSPEC. This reflects eBPF programs loaded via bpf(2)
system call (!= type unspec) vs. classic BPF to eBPF migrations (== type
unspec).

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
 lib/test_bpf.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Alexei Starovoitov July 30, 2015, 5:14 p.m. UTC | #1
On 7/30/15 3:42 AM, Daniel Borkmann wrote:
> As JITs start to perform optimizations whether to clear A and X on eBPF
> programs in the prologue, we should actually assign a program type to the
> native eBPF test cases. It doesn't really matter which program type, as
> these instructions don't go through the verifier, but it needs to be a
> type != BPF_PROG_TYPE_UNSPEC. This reflects eBPF programs loaded via bpf(2)
> system call (!= type unspec) vs. classic BPF to eBPF migrations (== type
> unspec).
>
> Signed-off-by: Daniel Borkmann<daniel@iogearbox.net>
> Cc: Michael Holzheu<holzheu@linux.vnet.ibm.com>

Acked-by: Alexei Starovoitov <ast@plumgrid.com>

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/test_bpf.c b/lib/test_bpf.c
index 8b5e66f..3afddf2 100644
--- a/lib/test_bpf.c
+++ b/lib/test_bpf.c
@@ -4613,6 +4613,8 @@  static struct bpf_prog *generate_filter(int which, int *err)
 		}
 
 		fp->len = flen;
+		/* Type doesn't really matter here as long as it's not unspec. */
+		fp->type = BPF_PROG_TYPE_SOCKET_FILTER;
 		memcpy(fp->insnsi, fptr, fp->len * sizeof(struct bpf_insn));
 
 		bpf_prog_select_runtime(fp);