]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drivers/video/xen-fbfront.c: add missing cleanup code
authorJulia Lawall <Julia.Lawall@lip6.fr>
Sun, 22 Apr 2012 09:57:40 +0000 (11:57 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 30 Apr 2012 15:15:15 +0000 (11:15 -0400)
The operations in the subsequent error-handling code appear to be also
useful here.

[upstream git commit c92c928b19bdc5da64d85fcc5bac95b5ab3a5743]
Acked-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
[v1: Collapse some of the error handling functions]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/video/xen-fbfront.c

index cb4529c40d742b93ebe7479b3688e43d4e249233..aa421605cf3a4385454320b2f161a49c02c13e22 100644 (file)
@@ -458,26 +458,31 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
        xenfb_init_shared_page(info, fb_info);
 
        ret = xenfb_connect_backend(dev, info);
-       if (ret < 0)
-               goto error;
+       if (ret < 0) {
+               xenbus_dev_fatal(dev, ret, "xenfb_connect_backend");
+               goto error_fb;
+       }
 
        ret = register_framebuffer(fb_info);
        if (ret) {
-               fb_deferred_io_cleanup(fb_info);
-               fb_dealloc_cmap(&fb_info->cmap);
-               framebuffer_release(fb_info);
                xenbus_dev_fatal(dev, ret, "register_framebuffer");
-               goto error;
+               goto error_fb;
        }
        info->fb_info = fb_info;
 
        xenfb_make_preferred_console();
        return 0;
 
- error_nomem:
-       ret = -ENOMEM;
-       xenbus_dev_fatal(dev, ret, "allocating device memory");
- error:
+error_fb:
+       fb_deferred_io_cleanup(fb_info);
+       fb_dealloc_cmap(&fb_info->cmap);
+       framebuffer_release(fb_info);
+error_nomem:
+       if (!ret) {
+               ret = -ENOMEM;
+               xenbus_dev_fatal(dev, ret, "allocating device memory");
+       }
+error:
        xenfb_remove(dev);
        return ret;
 }