When a user reuse map fd after creating a map manually and set the pin_path, then load the object via libbpf. bpf_object__create_maps() will skip pinning map if map fd exist. Fix it by add moving bpf creation to else condition and go on checking map pin_path after that. v2: a) close map fd if init map slots failed b) add bpf selftest for this scenario Hangbin Liu (3): libbpf: close map fd if init map slots failed libbpf: check if pin_path was set even map fd exist selftest/bpf: test pinning map with reused map fd tools/lib/bpf/libbpf.c | 80 +++++++++++-------- .../selftests/bpf/prog_tests/pinning.c | 46 ++++++++++- 2 files changed, 91 insertions(+), 35 deletions(-) -- 2.25.4