cirrus: avoid crash if driver fails to load
authorDave Airlie <airlied@redhat.com>
Thu, 31 May 2012 12:53:56 +0000 (13:53 +0100)
committerDave Airlie <airlied@redhat.com>
Thu, 31 May 2012 12:53:56 +0000 (13:53 +0100)
If we haven't inited the mm code, don't try and tear it down.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/cirrus/cirrus_drv.h
drivers/gpu/drm/cirrus/cirrus_ttm.c

index 21bdfa8836f79e1da44efb3e09e3674b31aac661..64ea597cb6d390219abd198a086e131b08b6d54d 100644 (file)
@@ -145,7 +145,7 @@ struct cirrus_device {
                struct ttm_bo_device bdev;
                atomic_t validate_sequence;
        } ttm;
-
+       bool mm_inited;
 };
 
 
index 2ebcd11a5023089a3a7a8d890c08e3a673184860..50e170f879dece492968752212068ebec4ad14d3 100644 (file)
@@ -275,12 +275,17 @@ int cirrus_mm_init(struct cirrus_device *cirrus)
                                    pci_resource_len(dev->pdev, 0),
                                    DRM_MTRR_WC);
 
+       cirrus->mm_inited = true;
        return 0;
 }
 
 void cirrus_mm_fini(struct cirrus_device *cirrus)
 {
        struct drm_device *dev = cirrus->dev;
+
+       if (!cirrus->mm_inited)
+               return;
+
        ttm_bo_device_release(&cirrus->ttm.bdev);
 
        cirrus_ttm_global_release(cirrus);