debug_ret(gen, "prog_load %s insn_cnt %d", attr.prog_name, attr.insn_cnt);
        /* successful or not, close btf module FDs used in extern ksyms and attach_btf_obj_fd */
        cleanup_relos(gen, insns_off);
-       if (gen->attach_kind)
+       if (gen->attach_kind) {
                emit_sys_close_blob(gen,
                                    attr_field(prog_load_attr, attach_btf_obj_fd));
+               gen->attach_kind = 0;
+       }
        emit_check_err(gen);
        /* remember prog_fd in the stack, if successful */
        emit(gen, BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_7,