ret = close(vmp->kvm_fd);
        TEST_ASSERT(!ret,  __KVM_SYSCALL_ERROR("close()", ret));
+
+       /* Free cached stats metadata and close FD */
+       if (vmp->stats_desc) {
+               free(vmp->stats_desc);
+               vmp->stats_desc = NULL;
+
+               ret = close(vmp->stats_fd);
+               TEST_ASSERT(!ret,  __KVM_SYSCALL_ERROR("close()", ret));
+       }
 }
 
 static void __vm_mem_region_delete(struct kvm_vm *vm,
        if (vmp == NULL)
                return;
 
-       /* Free cached stats metadata and close FD */
-       if (vmp->stats_desc) {
-               free(vmp->stats_desc);
-               close(vmp->stats_fd);
-       }
-
        /* Free userspace_mem_regions. */
        hash_for_each_safe(vmp->regions.slot_hash, ctr, node, region, slot_node)
                __vm_mem_region_delete(vmp, region);