insn_aux->obj_new_size = ret_t->size;
                                insn_aux->kptr_struct_meta =
                                        btf_find_struct_meta(ret_btf, ret_btf_id);
-                       } else if (meta.func_id == special_kfunc_list[KF_bpf_obj_drop_impl]) {
-                               insn_aux->kptr_struct_meta =
-                                       btf_find_struct_meta(meta.arg_obj_drop.btf,
-                                                            meta.arg_obj_drop.btf_id);
                        } else if (meta.func_id == special_kfunc_list[KF_bpf_list_pop_front] ||
                                   meta.func_id == special_kfunc_list[KF_bpf_list_pop_back]) {
                                struct btf_field *field = meta.arg_list_head.field;
 
                if (reg_may_point_to_spin_lock(®s[BPF_REG_0]) && !regs[BPF_REG_0].id)
                        regs[BPF_REG_0].id = ++env->id_gen;
-       } /* else { add_kfunc_call() ensures it is btf_type_is_void(t) } */
+       } else if (btf_type_is_void(t)) {
+               if (meta.btf == btf_vmlinux && btf_id_set_contains(&special_kfunc_set, meta.func_id)) {
+                       if (meta.func_id == special_kfunc_list[KF_bpf_obj_drop_impl]) {
+                               insn_aux->kptr_struct_meta =
+                                       btf_find_struct_meta(meta.arg_obj_drop.btf,
+                                                            meta.arg_obj_drop.btf_id);
+                       }
+               }
+       }
 
        nargs = btf_type_vlen(meta.func_proto);
        args = (const struct btf_param *)(meta.func_proto + 1);