WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: [Xense-devel] [XSM:ACM][PATCH] nulldereference bug f

To: "Coker, George" <gscoker@xxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Re: [Xense-devel] [XSM:ACM][PATCH] nulldereference bug fix
From: Stefan Berger <stefanb@xxxxxxxxxx>
Date: Thu, 27 Sep 2007 16:12:48 -0400
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, xense-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 27 Sep 2007 13:13:42 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1190921714.3729.87.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx

"Coker, George" <gscoker@xxxxxxxxxxxxxx> wrote on 09/27/2007 03:35:14 PM:

> This patch is correct for XSM.  The patch creates clean
> acm_domain_create and acm_domain_destroy operations.
>
> In 15661 the logic under which acm_domain_destroy is called is slightly
> different than under XSM.  In 15661, acm_domain_destroy is called only
> if the mask INIT_acm is set.  INIT_acm is set only on successful return
> from acm_domain_create.  When acm_domain_create fails, the mask is not
> set and acm_domain_destroy is not called.  I do not know if this
> resulted in a leak in 15661 due to incomplete cleanup.


So the roll-back call that was necessary before is not necessary anymore?

static inline int acm_domain_create(struct domain *d, ssidref_t ssidref)
{
   void *subject_ssid = current->domain->ssid;
   domid_t domid = d->domain_id;
   int rc;

   read_lock(&acm_bin_pol_rwlock);
   /*
      To be called when a domain is created; returns '0' if the
      domain is allowed to be created, != '0' if not.
    */
   rc = acm_init_domain_ssid(d, ssidref);
   if (rc != ACM_OK)
       goto error_out;

   if ((acm_primary_ops->domain_create != NULL) &&
       acm_primary_ops->domain_create(subject_ssid, ssidref, domid)) {
       rc = ACM_ACCESS_DENIED;
   } else if ((acm_secondary_ops->domain_create != NULL) &&
               acm_secondary_ops->domain_create(subject_ssid, ssidref,
                                                domid)) {
       /* roll-back primary */
       if (acm_primary_ops->domain_destroy != NULL)
           acm_primary_ops->domain_destroy(d->ssid, d);
       rc = ACM_ACCESS_DENIED;
   }

   if ( rc == ACM_OK )
   {
       acm_domain_ssid_onto_list(d->ssid);
   } else {
       acm_free_domain_ssid(d->ssid);
   }

error_out:
   read_unlock(&acm_bin_pol_rwlock);
   return rc;
}



The acm_primary_ops->domain_create() establishes state (see chwall_domain_create() in acm_chinesewall_hooks.c ) that if the secondary operation fails needs to be undone. That's what the acm_primary_ops->domain_destroy() did, but you intend to remove it?! I have my doubts that this is correct.

Which NULL pointer is the code running into and where?

   Stefan


>
> George
>
>
> On Thu, 2007-09-27 at 14:35 -0400, Stefan Berger wrote:
> >
> > xense-devel-bounces@xxxxxxxxxxxxxxxxxxx wrote on 09/27/2007 12:43:35
> > PM:
> >
> > > The attached patch fixes a null dereference bug in XSM:ACM.
> >
> > As I read this in response to recent error reports - I wonder why CS
> > 15661 does not expose this error whereas afterwards this error occurs.
> > Are you sure this is the right solution? Was something changed in this
> > area of the code between 'before XSM' and afterwards?
> >
> >    Stefan
> >
> >
> >
> > >
> > > Signed-off-by: George Coker <gscoker@xxxxxxxxxxxxxx>
> > > [attachment "acm-xsm-null_bug-092707-xen-unstable-15880.diff"
> > > deleted by Stefan Berger/Watson/IBM]
> > > _______________________________________________
> > > Xense-devel mailing list
> > > Xense-devel@xxxxxxxxxxxxxxxxxxx
> > > http://lists.xensource.com/xense-devel
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> --
> George S. Coker, II <gscoker@xxxxxxxxxxxxxx> 443-479-6944
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel