OSDN Git Service

i915: check dummy page before freeing
authorHong Liu <hong.liu@intel.com>
Mon, 19 May 2008 09:06:40 +0000 (17:06 +0800)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 22 May 2008 17:35:55 +0000 (10:35 -0700)
The dummy read page will point to NULL if drm_bo_driver_init failed at
firstopen (modeset is not enabled), and will cause kernel oops at
subsequent drm_lastclose call, so be sure to check it.

linux-core/drm_bo.c

index 0470825..f2d3ceb 100644 (file)
@@ -2361,10 +2361,12 @@ int drm_bo_driver_finish(struct drm_device *dev)
        if (list_empty(&bm->unfenced))
                DRM_DEBUG("Unfenced list was clean\n");
 
+       if (bm->dummy_read_page) {
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15))
-       ClearPageReserved(bm->dummy_read_page);
+               ClearPageReserved(bm->dummy_read_page);
 #endif
-       __free_page(bm->dummy_read_page);
+               __free_page(bm->dummy_read_page);
+       }
 
 out:
        mutex_unlock(&dev->struct_mutex);