Эх сурвалжийг харах

Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf

Daniel Borkmann says:

====================
pull-request: bpf 2017-12-28

The following pull-request contains BPF updates for your *net* tree.

The main changes are:

1) Two small fixes for bpftool. Fix otherwise broken output if any of
   the system calls failed when listing maps in json format and instead
   of bailing out, skip maps or progs that disappeared between fetching
   next id and getting an fd for that id, both from Jakub.

2) Small fix in BPF selftests to respect LLC passed from command line
   when testing for -mcpu=probe presence, from Quentin.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 7 жил өмнө
parent
commit
1528f6e276

+ 5 - 3
tools/bpf/bpftool/map.c

@@ -523,21 +523,23 @@ static int do_show(int argc, char **argv)
 				break;
 				break;
 			p_err("can't get next map: %s%s", strerror(errno),
 			p_err("can't get next map: %s%s", strerror(errno),
 			      errno == EINVAL ? " -- kernel too old?" : "");
 			      errno == EINVAL ? " -- kernel too old?" : "");
-			return -1;
+			break;
 		}
 		}
 
 
 		fd = bpf_map_get_fd_by_id(id);
 		fd = bpf_map_get_fd_by_id(id);
 		if (fd < 0) {
 		if (fd < 0) {
+			if (errno == ENOENT)
+				continue;
 			p_err("can't get map by id (%u): %s",
 			p_err("can't get map by id (%u): %s",
 			      id, strerror(errno));
 			      id, strerror(errno));
-			return -1;
+			break;
 		}
 		}
 
 
 		err = bpf_obj_get_info_by_fd(fd, &info, &len);
 		err = bpf_obj_get_info_by_fd(fd, &info, &len);
 		if (err) {
 		if (err) {
 			p_err("can't get map info: %s", strerror(errno));
 			p_err("can't get map info: %s", strerror(errno));
 			close(fd);
 			close(fd);
-			return -1;
+			break;
 		}
 		}
 
 
 		if (json_output)
 		if (json_output)

+ 2 - 0
tools/bpf/bpftool/prog.c

@@ -382,6 +382,8 @@ static int do_show(int argc, char **argv)
 
 
 		fd = bpf_prog_get_fd_by_id(id);
 		fd = bpf_prog_get_fd_by_id(id);
 		if (fd < 0) {
 		if (fd < 0) {
+			if (errno == ENOENT)
+				continue;
 			p_err("can't get prog by id (%u): %s",
 			p_err("can't get prog by id (%u): %s",
 			      id, strerror(errno));
 			      id, strerror(errno));
 			err = -1;
 			err = -1;

+ 1 - 1
tools/testing/selftests/bpf/Makefile

@@ -39,7 +39,7 @@ $(BPFOBJ): force
 CLANG ?= clang
 CLANG ?= clang
 LLC   ?= llc
 LLC   ?= llc
 
 
-PROBE := $(shell llc -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)
+PROBE := $(shell $(LLC) -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)
 
 
 # Let newer LLVM versions transparently probe the kernel for availability
 # Let newer LLVM versions transparently probe the kernel for availability
 # of full BPF instruction set.
 # of full BPF instruction set.