> -----Original Message-----
> From: Wei Liu [mailto:wei.l...@citrix.com]
> Sent: 23 July 2018 14:35
> To: Paul Durrant <paul.durr...@citrix.com>
> Cc: xen-devel@lists.xenproject.org; Jan Beulich <jbeul...@suse.com>;
> Andrew Cooper <andrew.coop...@citrix.com>; George Dunlap
> <george.dun...@citrix.com>; Ian Jackson <ian.jack...@citrix.com>; Julien
> Grall <julien.gr...@arm.com>; Konrad Rzeszutek Wilk
> <konrad.w...@oracle.com>; Stefano Stabellini <sstabell...@kernel.org>; Tim
> (Xen.org) <t...@xen.org>; Wei Liu <wei.l...@citrix.com>
> Subject: Re: [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.
> 

Are you referring to the dom_iommu() macro? The code is uninterested in the 
IOMMU mappings of the target domain, only the current, so I can't see a problem 
here. Am I missing something?

> > +
> > +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?
> 

Because the page may come from another domain but the IOMMU mappings are only 
ever for the local domain.

  Paul

> Wei.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to