struct drm_device *dev = crtc->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-       struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+       struct drm_i915_gem_object *obj;
        int plane = intel_crtc->plane;
        unsigned long linear_offset;
        u32 dspcntr;
        u32 reg = DSPCNTR(plane);
        int pixel_size;
 
-       pixel_size = drm_format_plane_cpp(fb->pixel_format, 0);
-
        if (!intel_crtc->primary_enabled) {
                I915_WRITE(reg, 0);
                if (INTEL_INFO(dev)->gen >= 4)
                return;
        }
 
+       obj = intel_fb_obj(fb);
+       if (WARN_ON(obj == NULL))
+               return;
+
+       pixel_size = drm_format_plane_cpp(fb->pixel_format, 0);
+
        dspcntr = DISPPLANE_GAMMA_ENABLE;
 
        dspcntr |= DISPLAY_PLANE_ENABLE;
        struct drm_device *dev = crtc->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-       struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+       struct drm_i915_gem_object *obj;
        int plane = intel_crtc->plane;
        unsigned long linear_offset;
        u32 dspcntr;
        u32 reg = DSPCNTR(plane);
        int pixel_size;
 
-       pixel_size = drm_format_plane_cpp(fb->pixel_format, 0);
-
        if (!intel_crtc->primary_enabled) {
                I915_WRITE(reg, 0);
                I915_WRITE(DSPSURF(plane), 0);
                return;
        }
 
+       obj = intel_fb_obj(fb);
+       if (WARN_ON(obj == NULL))
+               return;
+
+       pixel_size = drm_format_plane_cpp(fb->pixel_format, 0);
+
        dspcntr = DISPPLANE_GAMMA_ENABLE;
 
        dspcntr |= DISPLAY_PLANE_ENABLE;