* Elliot Berman <quic_eberman@xxxxxxxxxxx> [2024-02-22 15:16:35]: > Gunyah doesn't process the label and that makes it > possible for userspace to create multiple resources with the same label. I think that description conflicts with what is implemented in this patch? int gunyah_vm_add_resource_ticket(struct gunyah_vm *ghvm, struct gunyah_vm_resource_ticket *ticket) { mutex_lock(&ghvm->resources_lock); list_for_each_entry(iter, &ghvm->resource_tickets, vm_list) { if (iter->resource_type == ticket->resource_type && iter->label == ticket->label) { ret = -EEXIST; goto out; } } // > @@ -134,6 +246,25 @@ static int gunyah_vm_start(struct gunyah_vm *ghvm) > } > ghvm->vm_status = GUNYAH_RM_VM_STATUS_READY; > > + ret = gunyah_rm_get_hyp_resources(ghvm->rm, ghvm->vmid, &resources); > + if (ret) { > + dev_warn(ghvm->parent, > + "Failed to get hypervisor resources for VM: %d\n", > + ret); > + goto err; > + } Where do we free memory pointed by 'resources' ptr? > + > + for (i = 0, n = le32_to_cpu(resources->n_entries); i < n; i++) { > + ghrsc = gunyah_rm_alloc_resource(ghvm->rm, > + &resources->entries[i]); > + if (!ghrsc) { > + ret = -ENOMEM; > + goto err; > + } > + > + gunyah_vm_add_resource(ghvm, ghrsc); > + }