|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 12/13] x86: add iommu_ops to modify and flush IOMMU mappings
On Tue, Jul 17, 2018 at 02:38:15PM +0100, Paul Durrant wrote:
>
[...]
> +static int iommuop_map(struct xen_iommu_op_map *op)
> +{
> + struct domain *d, *currd = current->domain;
> + struct domain_iommu *iommu = dom_iommu(currd);
> + bool readonly = op->flags & XEN_IOMMUOP_map_readonly;
> + bfn_t bfn = _bfn(op->bfn);
> + struct page_info *page;
> + unsigned int prot;
> + int rc, ignore;
> +
> + if ( op->pad || (op->flags & ~XEN_IOMMUOP_map_readonly) )
> + return -EINVAL;
> +
> + if ( !iommu->iommu_op_ranges )
> + return -EOPNOTSUPP;
> +
> + /* Check whether the specified BFN falls in a reserved region */
> + if ( rangeset_contains_singleton(iommu->reserved_ranges, bfn_x(bfn)) )
> + return -EINVAL;
> +
> + d = rcu_lock_domain_by_any_id(op->domid);
I think this needs to be moved earlier before dereferencing assigning
iommu -- it depends on d being valid.
Same applies to the unmap function.
> +
> +static int iommuop_flush(void)
> +{
> + return !iommu_iotlb_flush_all(current->domain) ? 0 : -EIO;
I don't follow: why does this only flush current->domain? But
map/unmap use explicit argument to specify a domain?
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |