@@ -219,11 +219,7 @@ static int show_attached_bpf_progs(int cgroup_fd, enum bpf_attach_type type,
return 0;
for (iter = 0; iter < p.prog_cnt; iter++) {
- __u32 attach_flags;
-
- attach_flags = prog_attach_flags[iter] ?: p.attach_flags;
-
- switch (attach_flags) {
+ switch (prog_attach_flags[iter]) {
case BPF_F_ALLOW_MULTI:
attach_flags_str = "multi";
break;
@@ -234,7 +230,8 @@ static int show_attached_bpf_progs(int cgroup_fd, enum bpf_attach_type type,
attach_flags_str = "";
break;
default:
- snprintf(buf, sizeof(buf), "unknown(%x)", attach_flags);
+ snprintf(buf, sizeof(buf), "unknown(%x)",
+ prog_attach_flags[iter]);
attach_flags_str = buf;
}
When root-cgroup attach multi progs and sub-cgroup attach a override prog, bpftool will display incorrectly for the attach flags of the sub-cgroup’s effective progs: $ bpftool c t /sys/fs/cgroup effective CgroupPath ID AttachType AttachFlags Name /sys/fs/cgroup 6 sysctl multi sysctl_tcp_mem 13 sysctl multi sysctl_tcp_mem /sys/fs/cgroup/cg1 20 sysctl override sysctl_tcp_mem 6 sysctl override sysctl_tcp_mem 13 sysctl override sysctl_tcp_mem Attach flags is only valid for attached progs of this layer cgroup, but not for effective progs. Since prog_attach_flags array is already bypass the effective progs, so we can just use it. Signed-off-by: Pu Lehui <pulehui@huawei.com> --- tools/bpf/bpftool/cgroup.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)