diff options
Diffstat (limited to 'tools/bpf/bpftool/prog.c')
| -rw-r--r-- | tools/bpf/bpftool/prog.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 7ec4f5671e7a..feb8e305804f 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -442,7 +442,7 @@ static void print_prog_header_json(struct bpf_prog_info *info, int fd)  		jsonw_uint_field(json_wtr, "recursion_misses", info->recursion_misses);  } -static void print_prog_json(struct bpf_prog_info *info, int fd) +static void print_prog_json(struct bpf_prog_info *info, int fd, bool orphaned)  {  	char *memlock; @@ -461,6 +461,7 @@ static void print_prog_json(struct bpf_prog_info *info, int fd)  		jsonw_uint_field(json_wtr, "uid", info->created_by_uid);  	} +	jsonw_bool_field(json_wtr, "orphaned", orphaned);  	jsonw_uint_field(json_wtr, "bytes_xlated", info->xlated_prog_len);  	if (info->jited_prog_len) { @@ -527,7 +528,7 @@ static void print_prog_header_plain(struct bpf_prog_info *info, int fd)  	printf("\n");  } -static void print_prog_plain(struct bpf_prog_info *info, int fd) +static void print_prog_plain(struct bpf_prog_info *info, int fd, bool orphaned)  {  	char *memlock; @@ -554,6 +555,9 @@ static void print_prog_plain(struct bpf_prog_info *info, int fd)  		printf("  memlock %sB", memlock);  	free(memlock); +	if (orphaned) +		printf("  orphaned"); +  	if (info->nr_map_ids)  		show_prog_maps(fd, info->nr_map_ids); @@ -581,15 +585,15 @@ static int show_prog(int fd)  	int err;  	err = bpf_prog_get_info_by_fd(fd, &info, &len); -	if (err) { +	if (err && err != -ENODEV) {  		p_err("can't get prog info: %s", strerror(errno));  		return -1;  	}  	if (json_output) -		print_prog_json(&info, fd); +		print_prog_json(&info, fd, err == -ENODEV);  	else -		print_prog_plain(&info, fd); +		print_prog_plain(&info, fd, err == -ENODEV);  	return 0;  } |