int i;
 
        /* check if the format is supported at all */
-       info = __drm_format_info(r->pixel_format);
-       if (!info) {
+       if (!__drm_format_info(r->pixel_format)) {
                struct drm_format_name_buf format_name;
 
                DRM_DEBUG_KMS("bad framebuffer format %s\n",
                return -EINVAL;
        }
 
-       /* now let the driver pick its own format info */
-       info = drm_get_format_info(dev, r);
-
        if (r->width == 0) {
                DRM_DEBUG_KMS("bad framebuffer width %u\n", r->width);
                return -EINVAL;
                return -EINVAL;
        }
 
+       /* now let the driver pick its own format info */
+       info = drm_get_format_info(dev, r);
+
        for (i = 0; i < info->num_planes; i++) {
                unsigned int width = fb_plane_width(r->width, info, i);
                unsigned int height = fb_plane_height(r->height, info, i);