[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] minios: free fbfront resources on error/shutdown
Doesn't apply to xen-unstable tip c/s 17616. -- Keir On 12/5/08 11:11, "Samuel Thibault" <samuel.thibault@xxxxxxxxxxxxx> wrote: > minios: free fbfront resources on error/shutdown > > Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx> > > diff -r b0d7780794eb extras/mini-os/fbfront.c > --- a/extras/mini-os/fbfront.c Thu May 08 13:40:40 2008 +0100 > +++ b/extras/mini-os/fbfront.c Mon May 12 12:10:30 2008 +0200 > @@ -47,6 +47,20 @@ > files[fd].read = 1; > #endif > wake_up(&kbdfront_queue); > +} > + > +static void free_kbdfront(struct kbdfront_dev *dev) > +{ > + mask_evtchn(dev->evtchn); > + > + free(dev->backend); > + > + free_page(dev->page); > + > + unbind_evtchn(dev->evtchn); > + > + free(dev->nodename); > + free(dev); > } > > struct kbdfront_dev *init_kbdfront(char *nodename, int abs_pointer) > @@ -122,7 +136,7 @@ > > abort_transaction: > xenbus_transaction_end(xbt, 1, &retry); > - return NULL; > + goto error; > > done: > > @@ -130,7 +144,7 @@ > msg = xenbus_read(XBT_NIL, path, &dev->backend); > if (msg) { > printk("Error %s when reading the backend path %s\n", msg, path); > - return NULL; > + goto error; > } > > printk("backend at %s\n", dev->backend); > @@ -153,6 +167,9 @@ > printk("************************** KBDFRONT\n"); > > return dev; > +error: > + free_kbdfront(dev); > + return NULL; > } > > int kbdfront_receive(struct kbdfront_dev *dev, union xenkbd_in_event *buf, > int n) > @@ -208,12 +225,7 @@ > > xenbus_unwatch_path(XBT_NIL, path); > > - unbind_evtchn(dev->evtchn); > - > - free_pages(dev->page,0); > - free(nodename); > - free(dev->backend); > - free(dev); > + free_kbdfront(dev); > } > > #ifdef HAVE_LIBC > @@ -260,6 +272,20 @@ > void fbfront_handler(evtchn_port_t port, struct pt_regs *regs, void *data) > { > wake_up(&fbfront_queue); > +} > + > +static void free_fbfront(struct fbfront_dev *dev) > +{ > + mask_evtchn(dev->evtchn); > + > + free(dev->backend); > + > + free_page(dev->page); > + > + unbind_evtchn(dev->evtchn); > + > + free(dev->nodename); > + free(dev); > } > > struct fbfront_dev *init_fbfront(char *nodename, unsigned long *mfns, int > width, int height, int depth, int stride, int n) > @@ -357,7 +383,7 @@ > > abort_transaction: > xenbus_transaction_end(xbt, 1, &retry); > - return NULL; > + goto error; > > done: > > @@ -365,7 +391,7 @@ > msg = xenbus_read(XBT_NIL, path, &dev->backend); > if (msg) { > printk("Error %s when reading the backend path %s\n", msg, path); > - return NULL; > + goto error; > } > > printk("backend at %s\n", dev->backend); > @@ -391,6 +417,10 @@ > printk("************************** FBFRONT\n"); > > return dev; > + > +error: > + free_fbfront(dev); > + return NULL; > } > > static void fbfront_out_event(struct fbfront_dev *dev, union xenfb_out_event > *event) > @@ -477,7 +507,7 @@ > > unbind_evtchn(dev->evtchn); > > - free_pages(dev->page,0); > + free_page(dev->page); > free(nodename); > free(dev->backend); > free(dev); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |