obj->phys_addr = obj->linear->start;
                obj->dev_addr = obj->linear->start;
+               obj->mapped = true;
        }
 
        DRM_DEBUG_DRIVER("obj %p phys %#llx dev %#llx\n", obj,
                return NULL;
 
        drm_gem_private_object_init(dev, &obj->obj, size);
-       obj->dev_addr = DMA_ERROR_CODE;
 
        DRM_DEBUG_DRIVER("alloc private obj %p size %zu\n", obj, size);
 
                return NULL;
        }
 
-       obj->dev_addr = DMA_ERROR_CODE;
-
        mapping = obj->obj.filp->f_mapping;
        mapping_set_gfp_mask(mapping, GFP_HIGHUSER | __GFP_RECLAIMABLE);
 
                return -EINVAL;
        }
        dobj->dev_addr = sg_dma_address(dobj->sgt->sgl);
+       dobj->mapped = true;
        return 0;
 }
 
        void                    *addr;
        phys_addr_t             phys_addr;
        resource_size_t         dev_addr;
+       bool                    mapped;
        struct drm_mm_node      *linear;        /* for linear backed */
        struct page             *page;          /* for page backed */
        struct sg_table         *sgt;           /* for imported */