summaryrefslogtreecommitdiff
path: root/linux/agpsupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/agpsupport.c')
-rw-r--r--linux/agpsupport.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/linux/agpsupport.c b/linux/agpsupport.c
index d60edc2e..e5793d81 100644
--- a/linux/agpsupport.c
+++ b/linux/agpsupport.c
@@ -256,6 +256,7 @@ int drm_agp_free(struct inode *inode, struct file *filp, unsigned int cmd,
if (!(entry = drm_agp_lookup_entry(dev, request.handle)))
return -EINVAL;
#if 0
+#if 0
if (entry->bound) drm_unbind_agp(entry->memory);
#endif
if(entry->prev) entry->prev->next = entry->next;
@@ -264,6 +265,12 @@ int drm_agp_free(struct inode *inode, struct file *filp, unsigned int cmd,
(entry->prev == NULL)) {
dev->agp->memory = NULL;
}
+#else
+ if (entry->bound) drm_unbind_agp(entry->memory);
+ if (entry->prev) entry->prev->next = entry->next;
+ else dev->agp->memory = entry->next;
+ if (entry->next) entry->next->prev = entry->prev;
+#endif
drm_free_agp(entry->memory, entry->pages);
drm_free(entry, sizeof(*entry), DRM_MEM_AGPLISTS);
return 0;