Avoid kernel oops in some error paths calling drm_lastclose().
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Mon, 14 Aug 2006 15:11:14 +0000 (17:11 +0200)
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>
Mon, 14 Aug 2006 15:11:14 +0000 (17:11 +0200)
linux-core/drm_drv.c

index 0281178..79209db 100644 (file)
@@ -163,11 +163,13 @@ int drm_lastclose(drm_device_t * dev)
                dev->unique_len = 0;
        }
 
-        list_for_each_entry_safe(pt, next, &dev->magicfree, head) {
-                list_del(&pt->head);
-                drm_ht_remove_item(&dev->magiclist, &pt->hash_item);
-                drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC);
-        }
+       if (dev->magicfree.next) {
+               list_for_each_entry_safe(pt, next, &dev->magicfree, head) {
+                       list_del(&pt->head);
+                       drm_ht_remove_item(&dev->magiclist, &pt->hash_item);
+                       drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC);
+               }
+       }
 
 
        /* Clear AGP information */