Martynas Pumputis wrote: > When loading a BPF program with a pinned map, the loader checks whether > the pinned map can be reused, i.e. their properties match. To derive > such of the pinned map, the loader invokes BPF_OBJ_GET_INFO_BY_FD and > then does the comparison. > > Unfortunately, on < 4.12 kernels the BPF_OBJ_GET_INFO_BY_FD is not > available, so loading the program fails with the following error: > > libbpf: failed to get map info for map FD 5: Invalid argument > libbpf: couldn't reuse pinned map at > '/sys/fs/bpf/tc/globals/cilium_call_policy': parameter > mismatch" > libbpf: map 'cilium_call_policy': error reusing pinned map > libbpf: map 'cilium_call_policy': failed to create: > Invalid argument(-22) > libbpf: failed to load object 'bpf_overlay.o' > > To fix this, fallback to derivation of the map properties via > /proc/$PID/fdinfo/$MAP_FD if BPF_OBJ_GET_INFO_BY_FD fails with EINVAL, > which can be used as an indicator that the kernel doesn't support > the latter. > > Signed-off-by: Martynas Pumputis <m@xxxxxxxxx> > --- LGTM. Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>