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

Commit 2ee89fb9 authored by Mickaël Salaün's avatar Mickaël Salaün Committed by David S. Miller
Browse files

bpf: Use bpf_load_program() from the library



Replace bpf_prog_load() with bpf_load_program() calls.

Signed-off-by: default avatarMickaël Salaün <mic@digikod.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d02d8986
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@
# endif
#endif

static __u64 ptr_to_u64(void *ptr)
static __u64 ptr_to_u64(const void *ptr)
{
	return (__u64) (unsigned long) ptr;
}
@@ -69,8 +69,8 @@ int bpf_create_map(enum bpf_map_type map_type, int key_size,
	return sys_bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
}

int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns,
		     size_t insns_cnt, char *license,
int bpf_load_program(enum bpf_prog_type type, const struct bpf_insn *insns,
		     size_t insns_cnt, const char *license,
		     __u32 kern_version, char *log_buf, size_t log_buf_sz)
{
	int fd;
+2 −2
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@ int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size,

/* Recommend log buffer size */
#define BPF_LOG_BUF_SIZE 65536
int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns,
		     size_t insns_cnt, char *license,
int bpf_load_program(enum bpf_prog_type type, const struct bpf_insn *insns,
		     size_t insns_cnt, const char *license,
		     __u32 kern_version, char *log_buf,
		     size_t log_buf_sz);

+3 −1
Original line number Diff line number Diff line
CFLAGS += -Wall -O2 -lcap -I../../../include/uapi
CFLAGS += -Wall -O2 -lcap -I../../../include/uapi -I../../../lib

test_objs = test_verifier test_tag test_maps test_lru_map test_lpm_map

@@ -7,6 +7,8 @@ TEST_FILES := $(test_objs)

all: $(test_objs)

$(test_objs): ../../../lib/bpf/bpf.o

include ../lib.mk

clean:
+0 −21
Original line number Diff line number Diff line
@@ -84,25 +84,4 @@ static inline int bpf_map_create(enum bpf_map_type type, uint32_t size_key,
	return bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
}

static inline int bpf_prog_load(enum bpf_prog_type type,
				const struct bpf_insn *insns, size_t size_insns,
				const char *license, char *log, size_t size_log)
{
	union bpf_attr attr = {};

	attr.prog_type = type;
	attr.insns = bpf_ptr_to_u64(insns);
	attr.insn_cnt = size_insns / sizeof(struct bpf_insn);
	attr.license = bpf_ptr_to_u64(license);

	if (size_log > 0) {
		attr.log_buf = bpf_ptr_to_u64(log);
		attr.log_size = size_log;
		attr.log_level = 1;
		log[0] = 0;
	}

	return bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
}

#endif /* __BPF_SYS__ */
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
#include <linux/bpf.h>
#include <linux/if_alg.h>

#include <bpf/bpf.h>

#include "../../../include/linux/filter.h"

#include "bpf_sys.h"
@@ -55,8 +57,8 @@ static int bpf_try_load_prog(int insns, int fd_map,
	int fd_prog;

	bpf_filler(insns, fd_map);
	fd_prog = bpf_prog_load(BPF_PROG_TYPE_SCHED_CLS, prog, insns *
				sizeof(struct bpf_insn), "", NULL, 0);
	fd_prog = bpf_load_program(BPF_PROG_TYPE_SCHED_CLS, prog, insns, "", 0,
				   NULL, 0);
	assert(fd_prog > 0);
	if (fd_map > 0)
		bpf_filler(insns, 0);
Loading