Browse Source

drm: avoid kernel oops in some error paths calling drm_lastclose

Signed-off-by: Dave Airlie <airlied@linux.ie>
Thomas Hellstrom 19 years ago
parent
commit
0a0c721dc5
1 changed files with 6 additions and 4 deletions
  1. 6 4
      drivers/char/drm/drm_drv.c

+ 6 - 4
drivers/char/drm/drm_drv.c

@@ -155,10 +155,12 @@ int drm_lastclose(drm_device_t * dev)
 	del_timer(&dev->timer);
 
 	/* Clear pid list */
-	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 */