selftests/bpf: fix broken build
Recent merge of 'linux-kselftest-4.11-rc1' tree broke bpf test build. None of the tests were building and test_verifier.c had tons of compiler errors. Fix it and add #ifdef CAP_IS_SUPPORTED to support old versions of libcap. Tested on centos 6.8 and 7 Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Tested-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
79099aab38
Коммит
1da8ac7c49
|
@ -0,0 +1,18 @@
|
||||||
|
/* Copyright (c) 2016 Facebook
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of version 2 of the GNU General Public
|
||||||
|
* License as published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
#ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__
|
||||||
|
#define _UAPI__LINUX_BPF_PERF_EVENT_H__
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/ptrace.h>
|
||||||
|
|
||||||
|
struct bpf_perf_event_data {
|
||||||
|
struct pt_regs regs;
|
||||||
|
__u64 sample_period;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _UAPI__LINUX_BPF_PERF_EVENT_H__ */
|
|
@ -1,12 +1,14 @@
|
||||||
LIBDIR := ../../../lib
|
LIBDIR := ../../../lib
|
||||||
BPFOBJ := $(LIBDIR)/bpf/bpf.o
|
BPFOBJ := $(LIBDIR)/bpf/bpf.o
|
||||||
|
|
||||||
CFLAGS += -Wall -O2 -lcap -I../../../include/uapi -I$(LIBDIR)
|
CFLAGS += -Wall -O2 -lcap -I../../../include/uapi -I$(LIBDIR) $(BPFOBJ)
|
||||||
|
|
||||||
TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map
|
TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map
|
||||||
|
|
||||||
TEST_PROGS := test_kmod.sh
|
TEST_PROGS := test_kmod.sh
|
||||||
|
|
||||||
|
all: $(TEST_GEN_PROGS)
|
||||||
|
|
||||||
.PHONY: all clean force
|
.PHONY: all clean force
|
||||||
|
|
||||||
# force a rebuild of BPFOBJ when its dependencies are updated
|
# force a rebuild of BPFOBJ when its dependencies are updated
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
* License as published by the Free Software Foundation.
|
* License as published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <asm/types.h>
|
||||||
|
#include <linux/types.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -4583,10 +4585,12 @@ static bool is_admin(void)
|
||||||
cap_flag_value_t sysadmin = CAP_CLEAR;
|
cap_flag_value_t sysadmin = CAP_CLEAR;
|
||||||
const cap_value_t cap_val = CAP_SYS_ADMIN;
|
const cap_value_t cap_val = CAP_SYS_ADMIN;
|
||||||
|
|
||||||
|
#ifdef CAP_IS_SUPPORTED
|
||||||
if (!CAP_IS_SUPPORTED(CAP_SETFCAP)) {
|
if (!CAP_IS_SUPPORTED(CAP_SETFCAP)) {
|
||||||
perror("cap_get_flag");
|
perror("cap_get_flag");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
caps = cap_get_proc();
|
caps = cap_get_proc();
|
||||||
if (!caps) {
|
if (!caps) {
|
||||||
perror("cap_get_proc");
|
perror("cap_get_proc");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче