info->fix.smem_start = 0;
        info->fix.smem_len = size;
 
+       bochs->fb.initialized = true;
        return 0;
 }
 
                gfb->obj = NULL;
        }
 
-       drm_fb_helper_fini(&bochs->fb.helper);
        drm_framebuffer_unregister_private(&gfb->base);
        drm_framebuffer_cleanup(&gfb->base);
 
        if (ret)
                goto fini;
 
-       bochs->fb.initialized = true;
        return 0;
 
 fini:
 
 void bochs_fbdev_fini(struct bochs_device *bochs)
 {
-       if (!bochs->fb.initialized)
-               return;
+       if (bochs->fb.initialized)
+               bochs_fbdev_destroy(bochs);
 
-       bochs_fbdev_destroy(bochs);
+       drm_fb_helper_fini(&bochs->fb.helper);
        bochs->fb.initialized = false;
 }