/* The 'mapping' part of i915_gem_object_pin_map() below */
 static void *i915_gem_object_map_page(struct drm_i915_gem_object *obj,
-               enum i915_map_type type)
+                                     enum i915_map_type type)
 {
        unsigned long n_pages = obj->base.size >> PAGE_SHIFT, i;
        struct page *stack[32], **pages = stack, *page;
                /* Too big for stack -- allocate temporary array instead */
                pages = kvmalloc_array(n_pages, sizeof(*pages), GFP_KERNEL);
                if (!pages)
-                       return NULL;
+                       return ERR_PTR(-ENOMEM);
        }
 
        i = 0;
 }
 
 static void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj,
-               enum i915_map_type type)
+                                    enum i915_map_type type)
 {
        resource_size_t iomap = obj->mm.region->iomap.base -
                obj->mm.region->region.start;
        void *vaddr;
 
        if (type != I915_MAP_WC)
-               return NULL;
+               return ERR_PTR(-ENODEV);
 
        if (n_pfn > ARRAY_SIZE(stack)) {
                /* Too big for stack -- allocate temporary array instead */
                pfns = kvmalloc_array(n_pfn, sizeof(*pfns), GFP_KERNEL);
                if (!pfns)
-                       return NULL;
+                       return ERR_PTR(-ENOMEM);
        }
 
        i = 0;
                        GEM_BUG_ON(i915_gem_object_has_pinned_pages(obj));
 
                        err = ____i915_gem_object_get_pages(obj);
-                       if (err)
-                               goto err_unlock;
+                       if (err) {
+                               ptr = ERR_PTR(err);
+                               goto out_unlock;
+                       }
 
                        smp_mb__before_atomic();
                }
        ptr = page_unpack_bits(obj->mm.mapping, &has_type);
        if (ptr && has_type != type) {
                if (pinned) {
-                       err = -EBUSY;
+                       ptr = ERR_PTR(-EBUSY);
                        goto err_unpin;
                }
 
        if (!ptr) {
                if (GEM_WARN_ON(type == I915_MAP_WC &&
                                !static_cpu_has(X86_FEATURE_PAT)))
-                       ptr = NULL;
+                       ptr = ERR_PTR(-ENODEV);
                else if (i915_gem_object_has_struct_page(obj))
                        ptr = i915_gem_object_map_page(obj, type);
                else
                        ptr = i915_gem_object_map_pfn(obj, type);
-               if (!ptr) {
-                       err = -ENOMEM;
+               if (IS_ERR(ptr))
                        goto err_unpin;
-               }
 
                obj->mm.mapping = page_pack_bits(ptr, type);
        }
 
 err_unpin:
        atomic_dec(&obj->mm.pages_pin_count);
-err_unlock:
-       ptr = ERR_PTR(err);
        goto out_unlock;
 }