From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH 2/4] xen: introduce grant_map_exists Date: Thu, 02 Oct 2014 11:45:14 +0100 Message-ID: <542D48DA020000780003BE36@mail.emea.novell.com> References: <1412244158-12124-2-git-send-email-stefano.stabellini@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XZdsq-0004CI-9D for xen-devel@lists.xenproject.org; Thu, 02 Oct 2014 10:45:16 +0000 In-Reply-To: <1412244158-12124-2-git-send-email-stefano.stabellini@eu.citrix.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: julien.grall@citrix.com, xen-devel , tim@xen.org, Ian.Campbell@citrix.com List-Id: xen-devel@lists.xenproject.org >>> On 02.10.14 at 12:02, wrote: > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -484,6 +484,38 @@ static int _set_status(unsigned gt_version, > return _set_status_v2(domid, readonly, mapflag, shah, act, status); > } > > +bool_t grant_map_exists(struct domain *ld, > + struct grant_table *rgt, > + unsigned long mfn) > +{ > + struct active_grant_entry *act; > + grant_ref_t ref; > + bool_t ret = 0; > + > + spin_lock(&rgt->lock); > + > + for ( ref = 0; ref != nr_grant_entries(rgt); ref++ ) > + { > + act = &active_entry(rgt, ref); > + > + if ( !act->pin ) > + continue; > + > + if ( act->domid != ld->domain_id ) > + continue; > + > + if ( act->frame != mfn ) > + continue; > + > + ret = 1; > + break; > + } > + > + spin_unlock(&rgt->lock); > + > + return ret; By the time you get here the information you return is stale. Is that not a problem for the caller? And if it's not, why would it check in the first place? Jan