Adding gpl_compatible flag to struct bpf_prog_info so it can be dumped via bpf_prog_get_info_by_fd and displayed via bpftool progs dump. Alexei noticed 4-byte hole in struct bpf_prog_info, so we put the u32 flags field in there, and we can keep adding bit fields in there without breaking user space.
Unified · Split
| @@ -1060,6 +1060,7 @@ struct bpf_prog_info { · 1059 unmodified lines | ||
| 1060 | 1060 | __aligned_u64 map_ids; |
| 1061 | 1061 | char name[BPF_OBJ_NAME_LEN]; |
| 1062 | 1062 | __u32 ifindex; |
| 1063 | + __u32 gpl_compatible:1; | |
| 1063 | 1064 | __u64 netns_dev; |
| 1064 | 1065 | __u64 netns_ino; |
| 1065 | 1066 | } __attribute__((aligned(8))); |
| @@ -1914,6 +1914,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, · 1913 unmodified lines | ||
| 1914 | 1914 | info.load_time = prog->aux->load_time; |
| 1915 | 1915 | info.created_by_uid = from_kuid_munged(current_user_ns(), |
| 1916 | 1916 | prog->aux->user->uid); |
| 1917 | + info.gpl_compatible = prog->gpl_compatible; | |
| 1917 | 1918 | |
| 1918 | 1919 | memcpy(info.tag, prog->tag, sizeof(prog->tag)); |
| 1919 | 1920 | memcpy(info.name, prog->aux->name, sizeof(prog->aux->name)); |