diff --git a/linux/agpsupport.c b/linux/agpsupport.c index d60edc2e..e5793d81 100644 --- a/linux/agpsupport.c +++ b/linux/agpsupport.c @@ -255,6 +255,7 @@ int drm_agp_free(struct inode *inode, struct file *filp, unsigned int cmd, -EFAULT); if (!(entry = drm_agp_lookup_entry(dev, request.handle))) return -EINVAL; +#if 0 #if 0 if (entry->bound) drm_unbind_agp(entry->memory); #endif @@ -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;