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] [PATCH][NET] front: cleanup some error paths

To: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH][NET] front: cleanup some error paths
From: Chris Wright <chrisw@xxxxxxxxxxxx>
Date: Fri, 9 Jun 2006 09:05:04 -0700
Cc: Chris Wright <chrisw@xxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 09 Jun 2006 09:02:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <137939ce8f1a8dcc1d7283d9b86fa76f@xxxxxxxxxxxx>
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>
References: <20060608192238.GV29676@xxxxxxxxxxxxxxxxx> <137939ce8f1a8dcc1d7283d9b86fa76f@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
* Keir Fraser (Keir.Fraser@xxxxxxxxxxxx) wrote:
> 
> On 8 Jun 2006, at 20:22, Chris Wright wrote:
> 
> >There's a small leak on a couple error paths in setup_device().
> >While there rearrange the ring setup order slightly to simplify error
> >path since netif_free() will cleanup once ring_ref is valid.  And use
> >get_zeroed_page() instead of __get_free_page()/memset().  Handle error 
> >if
> >bind_evtchn_to_irqhandler() fails, as bad info->irq value is likely to
> >cause oops later.  In create_device(), gnttab_free_grant_references()
> >is accidentally called twice on tx_head during cleanup from failed
> >gnttab_alloc_grant_references() on rx_head, which could corrupt
> >gnttab_free_count.
> 
> Applied, but I don't think it's a complete fix. For example, shouldn't 
> txs/rxs be freed if bind_evtchn_to_irqhandler() fails? There should 
> probably be more test-and-free cases on the fail path.

They are.  netif_free() handles it.  Just not until the ring_ref is
valid (in netif_free()->netif_disconnect_backend()->end_acess()).

Alternative is smth like this (psuedo-patch):

end_access(int ref, void *page)
{
        if (ref != GRANT_INVALID_REF)
                gnttab_end_foreign_access(ref, 0, (unsigned long)page);
+       else
+               if (page)
+                       free_page((unsigned long)page);
}

But that seems a bit obtuse to me and possibly error prone, which is
why I chose the method in the patch.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>